Browse code

added appinfo/signature.json CHANGELOG.txt phone/index.html phone/scripts/app.js phone/css/ctxSip.css js/launchphone.js

DoubleBastionAdmin authored on 09/01/2024 22:37:41
Showing 7 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1,57 @@
1
+======= CHANGELOG =======
2
+
3
+Versions:
4
+
5
+== 1.0.0 - 2022-1-27 ==
6
+* Initial release.
7
+
8
+== 1.0.1 - 2022-3-3 ==
9
+* Added screenshot image and made minor text changes.
10
+
11
+== 1.0.2 - 2022-3-4 ==
12
+* Changed screenshot image.
13
+
14
+== 1.0.3 - 2022-3-30 ==
15
+* Changed presentation text.
16
+
17
+== 1.0.4 - 2022-4-19 ==
18
+* Changed the URL of the pop-up window, to make it work when Nextcloud is served on a subdirectory.
19
+* Changed image displayed on initial screen.
20
+* Changed presentation text.
21
+
22
+== 1.0.5 - 2022-5-9 ==
23
+* Changed syntax of SQL queries and encryption function.
24
+* Modified pop-up window URL.
25
+
26
+== 1.0.6 - 2022-8-20 ==
27
+* Changed presentation text.
28
+
29
+== 1.0.7 - 2022-9-22 ==
30
+* Fixed error when not entering a STUN server on the Settings page.
31
+* Changed presentation text.
32
+
33
+== 1.0.8 - 2022-10-27 ==
34
+* Changed CSS settings to match the modifications introduced in Nextcloud 25.
35
+* Modified presentation text.
36
+
37
+== 1.0.9 - 2022-12-3 ==
38
+* Minor changes to certain SQL queries and minor css change.
39
+
40
+== 1.1.0 - 2023-5-31 ==
41
+* Made app available for Nextcloud 26.
42
+
43
+== 1.1.1 - 2023-10-30 ==
44
+* Marked the app as compatible with Nextcloud 27.
45
+
46
+== 1.1.2 - 2024-1-8 ==
47
+* Added the debug logging checkbox, the 'Available phone number(s)' 
48
+  field and the 'Default phone number for outgoing calls' field, on the settings page.
49
+* Added the 'From' drop-down list on the phone window, to allow the user to choose
50
+  the phone number to call from.
51
+* Added the 'fonts' directory and stored the 'Open Sans' and 'Inter' fonts inside it.
52
+* Made small CSS changes and edited app presentation text.
53
+* Marked the app as compatible with Nextcloud 28.
54
+
55
+== 1.1.3 - 2024-1-10 ==
56
+* Fixed 'Double click to call' bug.
57
+* Made minor CSS changes.
0 58
new file mode 100644
... ...
@@ -0,0 +1,90 @@
1
+<?xml version="1.0"?>
2
+<info xmlns:xsi= "http://www.w3.org/2001/XMLSchema-instance"
3
+      xsi:noNamespaceSchemaLocation="https://apps.nextcloud.com/schema/apps/info.xsd">
4
+    <id>sip_trip_phone</id>
5
+    <name>SIP Trip Phone</name>
6
+    <summary>Browser softphone</summary>
7
+    <description><![CDATA[
8
+A browser phone that can be connected to SIP providers via Asterisk or directly. It can be used in conjunction 
9
+with Asterisk, to benefit from the control, autonomy and advanced PBX features offered by Asterisk, or without 
10
+Asterisk, if it's connected directly to the SIP provider. For calls to and from regular phone numbers, a SIP 
11
+provider like Telnyx or Localphone is needed and a real phone number acquired from that provider. If Asterisk is 
12
+used, it's recommended to be Asterisk version 18.0.0 LTS and it has to be installed on a VPS or dedicated server, 
13
+as explained in the 'Admin documentation' linked on this page. The web server has to be configured to allow access 
14
+to a specific directory and to proxy WebSocket traffic to a specific URL, as explained in the 'Admin documentation'. 
15
+Not all SIP providers allow connections from external Asterisk servers or direct connections from web applications 
16
+that use SIP over WebSocket, like SIP Trip Phone. Thus, you can connect this application to Telnyx, Localphone, 
17
+Twilio, Flowroute, Vonage, etc. via an Asterisk server, but if you want to connect it directly to the SIP provider, 
18
+from the 5 mentioned providers, only Telnyx will work, because the others don't allow direct connections from web 
19
+applications using SIP over WebSocket.
20
+SIP Trip Phone is based on the ctxSip phone.
21
+
22
+### Features:
23
+
24
+* 📞 SIP Trip Phone allows making and receiving calls to/from any mobile or landline phone at lower rates than with regular phones. It is known that VoIP phone calls are up to 70% cheaper than regular phone calls. International VoIP phone calls can cost even 90% less than regular phone calls.
25
+
26
+* 🌐 You can acquire phone numbers in countries of your choice and make cheap international phone calls to receivers in those countries. When calling you back on those numbers, the receivers will pay as for local calls.
27
+
28
+* 🆓 If Asterisk is used, you can make free calls over the Internet between extensions configured on the underlying Asterisk server.
29
+
30
+* ☎️ SIP Trip Phone logs recent phone calls and their duration and allows holding, muting and transferring phone calls.
31
+
32
+* 📑 When using Asterisk, SIP Trip Phone allows choosing any available phone number as the 'From' number for outgoing calls.
33
+
34
+* 🚩 Incoming calls are signaled by on-screen notifications.
35
+
36
+* 📃 Once you open SIP Trip Phone, you can use it even if you are logged out of Nextcloud.
37
+
38
+* 💻 If Asterisk is used, on the underlying Asterisk server you can implement an IVR (Interactive Voice Response or 'voice menu') and many advanced PBX features such as voicemail, queue management, music on hold, number blacklisting, call recording, audio conference calls, etc.
39
+
40
+* 💰 The only ongoing cost is about $1 per month (depending on the country) for a phone number. No contracts.
41
+
42
+* 💸 Low per minute prices: if Asterisk is used, you can make calls within the US starting from $0.0050 per minute and receive calls with $0.0075 per minute or less (Telnyx), or $0.0060 per minute for outgoing calls and $0 for incoming calls (Localphone). If SIP Trip Phone is connected directly to Telnyx, you can make and receive phone calls with $0.0020 per minute in the US.
43
+
44
+We have no affiliation with Telnyx, Localphone, Twilio, Flowroute or Vonage.
45
+
46
+### Documentation
47
+
48
+* [Admin documentation](https://www.doublebastion.com/install-nextcloud/#install-sip-trip-phone)
49
+
50
+### Donations
51
+
52
+* 🎁 [Donate](https://www.doublebastion.com/donations/)
53
+
54
+    ]]></description>
55
+    <version>1.1.3</version>
56
+    <licence>AGPL</licence>
57
+    <author homepage="https://www.doublebastion.com">Double Bastion LLC</author>
58
+    <namespace>SIPTripPhone</namespace>
59
+	<documentation>
60
+		<admin>https://www.doublebastion.com/install-nextcloud/#install-sip-trip-phone</admin>
61
+	</documentation>
62
+    <category>office</category>
63
+    <category>organization</category>
64
+
65
+    <website>https://www.doublebastion.com/sip-trip-phone/</website>
66
+    <bugs>https://git.doublebastion.com/sip-trip-phone/issues/develop</bugs>
67
+    <repository>https://git.doublebastion.com/sip-trip-phone/develop/</repository>
68
+
69
+    <screenshot>https://git.doublebastion.com/sip-trip-phone/raw/develop/img/sip_trip_phone_keypad.png</screenshot>
70
+    <screenshot>https://git.doublebastion.com/sip-trip-phone/raw/develop/img/sip_trip_phone_making_calls.png</screenshot>
71
+    <screenshot>https://git.doublebastion.com/sip-trip-phone/raw/develop/img/sip_trip_phone_holding.png</screenshot>
72
+
73
+    <dependencies>
74
+            <nextcloud min-version="26" max-version="28" />
75
+    </dependencies>
76
+
77
+    <navigations>
78
+        <navigation>
79
+            <name>SIP Trip Phone</name>
80
+            <route>sip_trip_phone.page.index</route>
81
+            <order>101</order>
82
+            <icon>sip_trip_phone.svg</icon>
83
+        </navigation>
84
+    </navigations>
85
+
86
+    <settings>
87
+            <personal>OCA\SIPTripPhone\Settings\Personal</personal>
88
+            <personal-section>OCA\SIPTripPhone\Settings\PersonalSection</personal-section>
89
+    </settings>
90
+</info>
0 91
new file mode 100644
... ...
@@ -0,0 +1,418 @@
1
+{
2
+    "hashes": {
3
+        "CHANGELOG.txt": "75246899df69baf2e3d3df991735b92af71f9b4603a970857d8dc21cb71ea2eff68a8348342d4044701c27001a4e697be7883d917e51ad64df8bee0d795bb488",
4
+        "COPYING.txt": "a0a86214ea153fb07ff35ceec0848dd1703eae22de036a825efc8394e50f65e3044832f3b49cf7e45a39edc470bdf738abc36a3a78ca7df3a6e73c14eaef94a8",
5
+        "Contributors.txt": "8ab4ea9b8c38e4d115af6ca08e8e27592198b763982bd166b67f38ee0b9f2b7e093cd58ce0927ae38ee3bc015b129add2ffeb3967288c804da493241bc67ba9b",
6
+        "README.md": "ac1d715d0ea3fb8f65e5eff948cef2e727ca283c03ac7763c143eb898e78b63a6a3bb49f86e95dbc578bf7da6f40030702e62dcd565efe28b81727be3d732abd",
7
+        "appinfo\/info.xml": "3a9d986e79a099fb5e0c8a02761efaa06a582e1303c488ca990fb8c90450cba32fc1321db8186547df3c5bda60885da8512f0ae22e88d5cb8a4f75cf70f04a47",
8
+        "appinfo\/routes.php": "8dae8f6d5e152b052b28459a7c33fc31b4a6f4981af58028032630500c9d4d2bd31271de1627cae6f17eee827905ce33e7e2a95ea96b335b2324c838ed1a2286",
9
+        "css\/style.css": "ca2da1bd8adc863ed1300e4ef42f9892c5ab795d3c39d751fb1b1d7a4b1c5456b22a8efe53fffda3e6aaba9c5007e1627364003ece75f61e5e9b484b125af20e",
10
+        "fonts\/Apache_License_v2.0_Open_Sans.txt": "fdae7ed259455ca9fa45939e7f25cbb4de29831cda16d9151de25a5f6e9d9be43b053f4fd3b896026239fca77abce04f543d591c501ecf4ce18c854bc0a51660",
11
+        "fonts\/Inter-Bold.woff": "f34ed611dc0ba6e7c0bf7242bad7c02e09f208bfbdd21d6649ebf9b41bc06696d8856707851944786c80c718df455e619caab170c70bfe97ba2043d651d4532e",
12
+        "fonts\/Inter-Bold.woff2": "736b4aaf8a2de0c17fbd5396a338577227326f078ee0646072d851d328b58a8058989af8735ac073f935b05f291d9310797d95c963e5e3ff0ea61a87f21c9da5",
13
+        "fonts\/Inter-BoldItalic.woff": "619e398d37249fae96ba0deb06fcf5dab215ba888740024287e2c8f1278b33273124cd5b9ea8f7525a17657566b72a1661b688ca670bc068ca6ddf466b7e7ffe",
14
+        "fonts\/Inter-BoldItalic.woff2": "a24bdb558a9b26fbe7631d6cf90b8db8f5f0164c3c814a2971fb7d45e807b0856454893bbd0d5bd0d9f060689f2be5f5bb1b69e4bdea0293d1122e13ad28e96f",
15
+        "fonts\/Inter-ExtraBold.woff": "d527e43747abed5a13d49a70c8db7ef39aab35ab0accfe1e3f6e037f685e08d2e5f7552b40c75d4faecc0e7e1227e97c563af093afefb57f2b6be9c783a85b0e",
16
+        "fonts\/Inter-ExtraBold.woff2": "20a22b0255b2bdc8f30ca7d59f20b3e2dfcbeaa39f035ccbeff40b57ad77d616dee1c41eebe30e1fab53fbb7ab4cc9f842cd13539ef34a680f6dd43441a3f2f6",
17
+        "fonts\/Inter-ExtraBoldItalic.woff": "6fc1da8183d8b131d670ff5a89593967e4666436b37fcf08c4d99d8532654558f281bb8c20c92be8c5e3d6b34e05c7aad182f4c9a413f8bb1c11ef600b3c524b",
18
+        "fonts\/Inter-ExtraBoldItalic.woff2": "3a8c4a113a4308ac9a57e7ad75060e0f08a1dd8638c29c1190f86929363b755ed2de66e4c11d3164a0a1fb1e6e35865bf786a295d3e0ad561c4a94cc8cbec6db",
19
+        "fonts\/Inter-Italic.woff": "72defeb5040f6375683dba41d4ce43654fdbae4f64aea88b01feb023b3e894c278c8a8c7e5583b6d83d980495ca0d5afa5ec7e1bfcc731be08d3dbe1b8b3f348",
20
+        "fonts\/Inter-Italic.woff2": "b128da83c81fe4a28026dc0a2a75c7920f37d4e04d6d6bde4e60b3a9527dbff04ff0ebc8b300874db9bd90036a41a52f4c9d82eb2f78fb8e99a35bb04defa1c2",
21
+        "fonts\/Inter-Medium.woff": "1f7c25aeb1ed534a106254fdba6bf59dfa03542f813489dca31fe067e2a22ab9549babb48af4cd465ab3ef0ef2f4b0f46532efcc8aae8942ad2cf98d0a5a4a3f",
22
+        "fonts\/Inter-Medium.woff2": "ce94d1a0cea81d42546ebc0247403b02c6fae24d3afba618cf658436734557a8b2b8ebed54319a9f66b233bd224da3685f848470866de63a144c8c28070491d4",
23
+        "fonts\/Inter-MediumItalic.woff": "7b7bef9c7a7717c6d52d619059e5ec258b537f538ada38325c2c7bfa4968ff53109bc9ee17a57819ef37d0a145a973f4a7c8e4d8d09e71d3faa4d0fe14cbf487",
24
+        "fonts\/Inter-MediumItalic.woff2": "4a2c5dc8c2ece82489e63b16cd8b1536b8f5502cf8f93307b0c71c6d54594a28ec2a80b8e58dfbbcc1d38a51aa8dd6d6fa025aed2cdc1429a462745a2bf2d414",
25
+        "fonts\/Inter-Regular.woff": "e37409956d19653617af32af2f99f4038c815a3664f2dcb2fef5e6a1a7345c78aaac3badc2ae499b1423514076ad676ab4bd5d936ef9d159899a6f668d991e4c",
26
+        "fonts\/Inter-Regular.woff2": "731924aedf31d6ef8fcd57a3b74182331ec7ba743d64033d8912d350ba98fd5b1942decaa4268f4dc925be2ed711c71a77200b2497bec10cae499b452fb27138",
27
+        "fonts\/Inter-SemiBold.woff": "684602b1f45bf7a9ca5ea6b1aca2cc2046e07ac79eb63b920099463f25866f50cca77ca253f16078d3a6e781ca23b964a69c87389621fa101d5cfffdb292d132",
28
+        "fonts\/Inter-SemiBold.woff2": "12b7680eccc54f56f800ac3ea4eff0490f515911d0fc83f99f62fa0f72d848155c8a7186918301a372d0fd0238d8093109c7b9b3c05168058e3cb47b1f7216ae",
29
+        "fonts\/Inter-SemiBoldItalic.woff": "9623d9c91148b651b7d4a642751e4f9eaeda68b6f4c33355d0173e303252039b3bcd301556a1d8451ffbd36d7996c1e8fc5ca1276884636cf57468e38c9e442a",
30
+        "fonts\/Inter-SemiBoldItalic.woff2": "97b7d8ab268ebcbc00876bd69ca9cc7cf2ae9ba5a6a30c13e3412e41a88f1f5ed758a6d9abbab3a14359943a003b14307cbc379bb11505c014b002322fd53c6e",
31
+        "fonts\/SIL_Open_Font_License_v1.1_Inter.txt": "073e141d4e45a3adfd2cb569db6a4fd217b1721dd6aeab8159e36940b984df5ebdc345deb0eb6be65367f943e516a12dff41eb1238a322d248ca3478c50ef9b6",
32
+        "fonts\/opensans-bold.woff": "d094832745611e047ffa87fdb21bac41befabdb07aecade483d4dc5a5b97bad00f1d4a5dca2a615789cd494791f0ab4209be537eb4b1bc7cbee7c42eb5e201dc",
33
+        "fonts\/opensans-bold.woff2": "096abb618c9ce1a534f0198aeea53c6d1138000f98b883131ab49ee48b80b483af635f0196ac40a1c1bde679f63b3c3b907b8f9b0102a752862d623dd22393a5",
34
+        "fonts\/opensans-bolditalic.woff": "c80f105a10d37c812f5d1b29445cd21cbc95594f71d9c5fc1b3aeeb9985c5465ba017654f1453baefdc56cc27aa325b586d77323012073eb713ab8f88f08dab4",
35
+        "fonts\/opensans-bolditalic.woff2": "38b99ebf320264d74a456fe590fc610580b003bc77a39d97ff42dec41353a8f908d6f680b4777cdb34ed544d9b4ed20dce8c418317de1d721e25ab670f49fc1d",
36
+        "fonts\/opensans-extrabold.woff": "6636a395ba345853ada2237b8e1f81c52e54bfb65559cbcb8de143cac00232f20cf34c764c9c4d4b80e82dae79cba3064ebdf22999cce8839df2d5709ee64092",
37
+        "fonts\/opensans-extrabold.woff2": "758c90eb07c6db7e78cb703ea285f82b443ca2cfab792328a3f8c14acc1f932ae79ec2987b8b94bf19b3cc16fae31c76f3164c9437a2591283fb1592e40ec33d",
38
+        "fonts\/opensans-extrabolditalic.woff": "ab1966f1ab3bb436e489c2d6ee562cf22d05b6b8c9bbca17e903518311aa45659efc329255e08ab597e2b8effe3bda602a7fb56b7d0c1d872b69337537d49dff",
39
+        "fonts\/opensans-extrabolditalic.woff2": "2132d6309969f868521f2d788b991bc9bcf3239f1768db9a2b90faf8838c35efea85225b24db256f54c86d0a7915ecd50a7f5348e6ab040e0f172ba7510598cd",
40
+        "fonts\/opensans-italic.woff": "a9751e7ac7a3c3d9f739d1fe00730a545b68e4a6473beafee8edf583f175b34fd5e0b60a14ec3707c8691fdbebea17e191c51707f50a21281e76be46f55a1140",
41
+        "fonts\/opensans-italic.woff2": "7a80c01d34562e2fe248a71078ffa9413c04c9c320d27acb0bce96cc295101eb9e80a25e97dab3e67c184c40937862be820581441aa4100bd512a26ef2d523cf",
42
+        "fonts\/opensans-light.woff": "cca2c5d207e0935c1848e22965972cb6feea39aa93b1b546051cfabe5ab16e909934d007a7ccd174eda1e7671d838f477890dedcb93d68ba722eda39a16d0bb8",
43
+        "fonts\/opensans-light.woff2": "cdc332de1b13eb0f05cc9dd1ebc905fa5ce948eab71e2fdb1bc538ad54a0de980bf83352090becd650af9c101ec9a6898d2e4798e4fb777e41c20fae85fd568b",
44
+        "fonts\/opensans-lightitalic.woff": "26e7759869088d8abba380f0bb22bbb9fdf0a985c0999519390cbd85099e3f48864d866f4639a8ff1992e7c81c755b0bbf66f525d4d38a929067886e9b54eb88",
45
+        "fonts\/opensans-lightitalic.woff2": "b7f80b69abeca9d0369f5d46da192e98a6329cf1f948c897fb7130e0d815f73e293c37f0e6d0047273fe3f13a19e648d1bd06cfa2fac2142ec38ac244e7f0940",
46
+        "fonts\/opensans-regular.woff": "3a526ba177f8f16ad95941c185411f350fab7e5202b9f56ea9c5f972c62912781d66da10e278e065cc6748a4bc9ab9182d68b27eaf380131c602195148e4b8b4",
47
+        "fonts\/opensans-regular.woff2": "66b3e915b891f7b37b441ee18e40f01274fe19f2515470760e503f428fc1c524ccfbe832191978c2c5f6bc4b7ef46937e4f77f5457b6efbf878c97c054cb45f2",
48
+        "fonts\/opensans-semibold.woff": "173f703ab767d0fcff014dac2fa3dcac787ffd0eb39f0c532b6679935c0105daacfa6a32bca97de13e420e10194b701ad2487bfd35d28807563ebf0b16d0ca35",
49
+        "fonts\/opensans-semibold.woff2": "75068ba76befc2356fe83b198bf6da70e177e53cc3128af09d0d9f69dfe538013f2828b2363c6f533fcaca4d4b2a5ec5159b5eb6f288504ac73d33ac5d1d2c4d",
50
+        "fonts\/opensans-semibolditalic.woff": "9e1e965095991d4a12a0658fa22a116b043ce20fd5f73bb9655d870ae49c46170cec52827510be323332b535002eb96445f79c3d1e4dd0550ff622fda0465f1d",
51
+        "fonts\/opensans-semibolditalic.woff2": "d7e43f05802e26f4cb80ab6a492b01c398c5b41168c7f61356ca3ffc5f4fccabae5ba332956f0aecad69ccabb6b7526efbc0395552cc5d68e47bec00bc660ad7",
52
+        "img\/app-dark.svg": "e56b38a7738e4a6f8700be79918e732dacbd00a027bb9c4d4dea132731d5a7011951423861486d55b01b4b153d7b72d83028dbd1aef5645091e270d3c6418781",
53
+        "img\/app.svg": "b280f77152cd2cbfdb075d0550aeeebb9df34b8fe9e4fa371f7d42bf53fea7afb24da9e5112c7e3b3c9ef868ad361b5456b57979825c332f66434e46acfeebbd",
54
+        "img\/sip_trip_phone-dark.svg": "e56b38a7738e4a6f8700be79918e732dacbd00a027bb9c4d4dea132731d5a7011951423861486d55b01b4b153d7b72d83028dbd1aef5645091e270d3c6418781",
55
+        "img\/sip_trip_phone.svg": "b280f77152cd2cbfdb075d0550aeeebb9df34b8fe9e4fa371f7d42bf53fea7afb24da9e5112c7e3b3c9ef868ad361b5456b57979825c332f66434e46acfeebbd",
56
+        "img\/sip_trip_phone_calling.png": "982286e21f6c8645bf4b2f492509b80b169c1a499b6b45c9d652a70443e4b6d40f622d15df4f119b6583e474c76adb3d3fa5ed582db76c6e4885548e97c72700",
57
+        "img\/sip_trip_phone_dialpad.png": "17e342ef7ed3baf181191c4ab8d3eeb76a29d8f107ace3358dfe63d4fa546a042017dcb51ee1eaf220967a1951c4ca19e66b840d9c85b68e49ef55fde4ea6c33",
58
+        "img\/sip_trip_phone_grey.svg": "5524c9e00c015d023d7a9d8f3427eddb5d94b88551d140528487eea84c6c62b905ce12b53824397f878d214e6911c7fea8ebbc4bff64ef275d443239e70b2767",
59
+        "img\/sip_trip_phone_hold.png": "5da0e2dd8a9e7b3282f1bbbec5d0d922fe266f78bca26a2185430c0db540bbf64a3865bb73b081affcb54f3b8ac1f12ac152c9c824f88cd7327af6ffde5f2d09",
60
+        "img\/sip_trip_phone_holding.png": "27814b9ba86f0609ca0d5eb43e40c709ccfe87811dc7848306c2d56a3aef001aca9b36ab50e85f6706961db2b4c339c17a7d526b5004398fac49b98550a8f34c",
61
+        "img\/sip_trip_phone_initial_screen.png": "b91d7bbbb049934069603fb5d53332f3e38f3ab10bd104dc2ef4271c07d21d4094fa86c9c0e7732288814e654783fe2bcfb53710707c5073b52a4b5c3aa52733",
62
+        "img\/sip_trip_phone_keypad.png": "8dd5ee8c1c15e0f06257e6ae9019c1e260a254f7287b7377ca49909a69c2b06dba87acb10de7f7a487364b59d0aa5a50e67737da90326bd64863546d16d3d3df",
63
+        "img\/sip_trip_phone_logo.png": "3309a656543c4fcec77de1356c88f834cc244d423767c5ebe2f8b90b27b738bc426f3cc0e9141220e37c51e4a15791743539b694ce6826b97ee929b8d8e9a098",
64
+        "img\/sip_trip_phone_making_calls.png": "c564e4dd1d8e11579081fae42cad3ac0d94d95e8c28c484e04fb4d4c44ec2810ea7fadc403371e8809d7c219343757787a6fcc4bc50892191fa86a1505e9a0ae",
65
+        "js\/launchphone.js": "b142f1f86fa0196480b9907f07a3f8b786a3b61293d111bc0d1b6fe6f37abe217fe88b2076326f048915c30cc55293f75cc5ce34ffa55ab6b15690530fdd8ff1",
66
+        "js\/settings.js": "263f0b86f8170cb07b0439a9e5a21a562bab81c83cb31572bf92528c113771938aab06c063f5d12cd64105a998d06daa276220510a4a1d6f15ca9971e1f60fe7",
67
+        "l10n\/en_GB.js": "928d01c11d7ea9d191e83b4d1797fa6c9076d3e7ea8444c324a7c903b36db3ba132a088519d82dbdb002e8e6f0dabe4c7d0bf02a7a5ce175d95fbf8cc5626f13",
68
+        "l10n\/en_GB.json": "a5b2e75415de54aa6da74ef78232bbce9d3027d79e7286ce00596bd22fa8ec25b44b0df12e8e34f68aceb592237e4aea84a81db6cd74df9719f249dfb9534d69",
69
+        "l10n\/en_US.js": "928d01c11d7ea9d191e83b4d1797fa6c9076d3e7ea8444c324a7c903b36db3ba132a088519d82dbdb002e8e6f0dabe4c7d0bf02a7a5ce175d95fbf8cc5626f13",
70
+        "l10n\/en_US.json": "a5b2e75415de54aa6da74ef78232bbce9d3027d79e7286ce00596bd22fa8ec25b44b0df12e8e34f68aceb592237e4aea84a81db6cd74df9719f249dfb9534d69",
71
+        "lib\/AppConfig.php": "e0279b17c389a2ba883c07800f43326efc427d96dd6d4e123e14b0bcd4dd4dcc521af3c2fa1673c7fe68ee915a34222dead68f266ca34db1c864216c24134c39",
72
+        "lib\/AppInfo\/Application.php": "a80c8968ac1af43642ca5131a3119be96fc85f222094f8b8ec638f752b5db75296472a71ffba716eabbb9bb2a0054fd984ff1ae53cc72ba0761ecb64eb8f84cf",
73
+        "lib\/Controller\/PageController.php": "0d32eed8d4cf98d33a7501a5aa7cb8a5921d3a8a98bed952ed9c18d26b154286de383a6d447d998be985848d9fbdc10fdaecb30dd01e3ecd463e75291a5f9418",
74
+        "lib\/Controller\/SphoneController.php": "eba1663a36c493db1abb99084dec80773f907f474ff12f4dc330b2f3374567617d7367c71b6f8b7a2d0f1e8f8d22977cbeb8fe06576a6831ef1a2825d6347776",
75
+        "lib\/Migration\/Version100Date20211106173528.php": "2d81e8fd03611db1017c08d90325a680928cfd367701e479d8c765b8967645cf9ae27725f657d655615f5a878307edb87b3d2a0bb460161e14de85d498798ce8",
76
+        "lib\/Migration\/Version112Date20240108213517.php": "6a535855e4eeeaa63b62ec1b97d9484f727c0aa08f16a4eb65888f0d133d93498e20adc4d1942572924d553af425a8632a94bbde8d3101a28b07c9301d6b43ba",
77
+        "lib\/Service\/SphoneService.php": "872446a48ba6d64c7e85d2bca63ec764691c1cf081b1db0f2741c38ef30975dafb11ede10dcb106fc77e27709b35847ac26bb2defa36a00741826ede1787fe95",
78
+        "lib\/Settings\/Personal.php": "d031350a9e5c1b0e78fff57b672304660485b9b307c28eb8a2dc7a3782c6329cb3fc659041d331b97711485a92d10bd99d739a17eaec088f7837d2be786500a6",
79
+        "lib\/Settings\/PersonalSection.php": "b2104766a5df419eed6811630c2d2de6b817f4b0ca77b5ca018344901cb8db0cefc8c78d4f45b14f4b5129aa986ae583b69c78d50cd91f8502508dd8724d3edb",
80
+        "phone\/css\/bootstrap.min.css": "b82d1fb15e8eec863133d7491103e86bb1cb67442509bd141f2c2730dc237c351d3a10bd4e9633ea208c39a98b6a508769c7c448aed809bee43a83e10361c402",
81
+        "phone\/css\/ctxSip.css": "b5c955062156650d4b919afefda0b9aff36a8b27247a441011ba9bcbb16fdcd17cf8c98f872598d5dcef8aca7034d8e1361bb26934c0cf0fe4156049af4b0a21",
82
+        "phone\/css\/ctxSip.less": "9b53e079978d5a672827cadd1b1f9ca63c69af22a77e52fb12318cf445a96ac2f537c797f64f4d2bfd673bd4c1b15d22de9e9ee226add5ca443db36a6fc24905",
83
+        "phone\/css\/font-awesome-4.7.0\/.gitignore": "c3621f6be50311134e6d7a1d34a9638f747f4074c48527dc7975957d6c87b9cb36b64bf8385fb1a59b52a281f1e72ac3f1c268dba6d09ac951e0f4618bded3d8",
84
+        "phone\/css\/font-awesome-4.7.0\/.npmignore": "6de3301556255638c616eab313a3d8ee5c704b1aa5b57a5d85e5723cb3b810a1ebcc148c33dde5c4989a691f18f8a2ace97c40df2e9c4306b840a4823587ee2e",
85
+        "phone\/css\/font-awesome-4.7.0\/CONTRIBUTING.md": "4576f4a2b8070a422891412d123025245fc3ae5511de09e153a1924aafa5d8d8de65fc530db79426055e21996ee9ef1bef22a192f46cca3bb94894d0d54d6ecf",
86
+        "phone\/css\/font-awesome-4.7.0\/Gemfile": "2add4715a7f520d0bbce11062202f6d1072efe569207c801f9ded213e8d3b2d0f879071c39aa117839e5e3a73780b1081e18dbec2ac79b6b4756deb4a8a4186a",
87
+        "phone\/css\/font-awesome-4.7.0\/Gemfile.lock": "1daf45ff9728c007cec63dbafeafc394322273e3620f911769b230de8408b71838429c86f45324885db7029cb4661a5dd6057e3e6961a98ee08d87e7601b85ab",
88
+        "phone\/css\/font-awesome-4.7.0\/HELP-US-OUT.txt": "f0ebc1e7ec38a8cd333b34e2deebb416ffab31f3cd707f27e310beff328e5e05962a023da606c62559c8b606f7138b90896ee304fd45e86afdd2910ac8cdda57",
89
+        "phone\/css\/font-awesome-4.7.0\/LICENSE": "1a7a0986aaed249087bd3a01cbda0361cddecd4ac0e4da9d7095f6193b4dccc559d570789b0a4ca2606f2ef137f2c4174cef735a8535371ce7e3a55625dfa801",
90
+        "phone\/css\/font-awesome-4.7.0\/README.md": "34655fd4be9d98ed1d419c98372cbfa58684382fda11936fbda3f6b39894cbe9fe429b6ec3346315cca309c2d07648064d0554d1e241c6ef9df57e6fcf758ca1",
91
+        "phone\/css\/font-awesome-4.7.0\/_config.yml": "883821543b8f3d2ea37e88186afe841c085fedb3b7ccaea49757af224b0dac02ac9eb5b8d7ce1648cb57fff434936313315c308ba624941f5f5c0b1fce083d64",
92
+        "phone\/css\/font-awesome-4.7.0\/bower.json": "5407ebc1f339b0ccc665e1fe5edc8c92bce01fcd0f5c3be302f407bec80a315a0612ffb2b71a93bd0e19a1fc1eb34095a02bf0aec659b08411fcffa3d289b7e2",
93
+        "phone\/css\/font-awesome-4.7.0\/component.json": "12fcbaa3f72f707f433aaa532774497453d447e3402f4afb1c27e8ea9b3cf98108229292af312aa434722e9b50b2da115b2392b82f41b19144d6dd2ea183d659",
94
+        "phone\/css\/font-awesome-4.7.0\/composer.json": "566b0aa11e55c98698c1f23b92bd05cd583c5448a3c4a33582f05a19325e26b91f82138822d0ea2b1397491add3e4b79d2682acc7dad6beab24fd1621c3d27fb",
95
+        "phone\/css\/font-awesome-4.7.0\/css\/font-awesome.css": "e40f27c1d30e5ab4b3db47c3b2373381489d50147c9623d853e5b299364fd65998f46e8e73b1e566fd79e97aa7b20354cd3c8c79f15372c147fed9c913ffb106",
96
+        "phone\/css\/font-awesome-4.7.0\/css\/font-awesome.css.map": "fc6df90f77e3ab265e3f19c2d6ccc27c49d5ab94cb956a2de3e16edfb3f59a3e1f9df3182474925704412ea056bc0acfd70f8f599c9fabefb48b43355a1e29cc",
97
+        "phone\/css\/font-awesome-4.7.0\/css\/font-awesome.min.css": "49f4e24e55fa924faa8ad7debe5ffb2e26d439e25696df6b6f20e7f766b50ea58ec3dbd61b6305a1acacd2c80e6e659accee4140f885b9c9e71008e9001fbf4b",
98
+        "phone\/css\/font-awesome-4.7.0\/fonts\/FontAwesome.otf": "a3acaaac3a9861ac7a4ba23e52b9115d39b674cb685b45454fb4b80329a4f7370b5ea7dd8b41d630798f8a54082b62411fd63332752296dbf5f2b3b96abb8874",
99
+        "phone\/css\/font-awesome-4.7.0\/fonts\/fontawesome-webfont.eot": "c160d3d77e67eff986043461693b2a831e1175f579490d7f0b411005ea81bd4f5850ff534f6721b727c002973f3f9027ea960fac4317d37db1d4cb53ec9d343a",
100
+        "phone\/css\/font-awesome-4.7.0\/fonts\/fontawesome-webfont.svg": "4f575d52331de91a2e32cc3408dd0eaf0cf25b7244d34b226314e3647e85ce284f86e3b7238c6c8b9022dc4e2787bf51620849290cdcd5d4c4bc905f289d2156",
101
+        "phone\/css\/font-awesome-4.7.0\/fonts\/fontawesome-webfont.ttf": "9ffb91e68c975172848b4bba25284678cc2c6eb4fb2d42000aa871c36656c4cebc28bf83c94df9afdfbf2407c01fe6b554c660b9b5c11af27c35acadfe6136ac",
102
+        "phone\/css\/font-awesome-4.7.0\/fonts\/fontawesome-webfont.woff": "9c776dea55a01fd854ea23b3463d9ac716077d406ecbe8ed0c9b6120ff7e60357f0521ab3e3bf9d4e17ca2c44a5d63ee58a4e7a37a3d3f26415a98d11c99e04f",
103
+        "phone\/css\/font-awesome-4.7.0\/fonts\/fontawesome-webfont.woff2": "838fefdbc14901f41edf995a78fdac55764cd4912ccb734b8bea4909194582904d8f2afdf2b6c428667912ce4d65681a1044d045d1bc6de2b14113f0315fc892",
104
+        "phone\/css\/font-awesome-4.7.0\/less\/animated.less": "285de8b339ae691c8c95230462b8760949850ecbd1a4f8b98b0f85347f1187ca7727507a50ba7ee362b57b1ccc94efe57fa99bb501bbea93561ca3104f73084c",
105
+        "phone\/css\/font-awesome-4.7.0\/less\/bordered-pulled.less": "666a33697b525aa25d773c94360b96dd6ff833dedf99178af931b040aa93239c5814bfdd433a841d77c2a3addcc444d7ec95c83073b9d30e48ed5fff4e82a111",
106
+        "phone\/css\/font-awesome-4.7.0\/less\/core.less": "88b310200bdd13129f343e8f9b581e3a376fd5aec4c7a604815101774d31ca3fb469d345321aee80303842309b10273885195545f69fb81ea13215e751ef5187",
107
+        "phone\/css\/font-awesome-4.7.0\/less\/fixed-width.less": "b7bf0de65815043012e95e8b1bac895e85c9a07c047c99ba4f5c132a00ace5aeb3e838f2aac26d8451b38d193fde8199c45d58a2a79931e5bdbda47f15c8822d",
108
+        "phone\/css\/font-awesome-4.7.0\/less\/font-awesome.less": "f5cf809023468a015234142efd754543054f9fabcf06ecb58db792537b8526c5d73098cb059e6e37ddf295895e92ace9005e9c4e5eaab19d33f06ac478c69acf",
109
+        "phone\/css\/font-awesome-4.7.0\/less\/icons.less": "8735bbdc8c7c9d082c2a1f261c74bed575fa096ba8775ad48ada6894f03a8319414db099395e80f16f6e89d802c988c1a2bbf73252c65acb040c35d40b9ed0f5",
110
+        "phone\/css\/font-awesome-4.7.0\/less\/larger.less": "5ba01d3b3c917dfcc0bf20a283397e677d420addb83c74d29f81d77658105c8d9e48784d2e8f5214919877141056a74f06d3081fa291269f92c4506ac089a745",
111
+        "phone\/css\/font-awesome-4.7.0\/less\/list.less": "a13c48c3ab87469b5e720287f5f1720f0588bb45a0700968879cbba7ba008d070cdcd69b41d374cb504311c0a20bc4e727872855ae5e90fc76b1589104acc07f",
112
+        "phone\/css\/font-awesome-4.7.0\/less\/mixins.less": "9fba58dc30953169340a57fcda1b3dcccbe69cb9ee5ad3e29e53719fb185f4b49f9571be248675d5cf5d82f86482086df022283b31b1766090f9954755f7a47f",
113
+        "phone\/css\/font-awesome-4.7.0\/less\/path.less": "2214dadd8025d0da912ee4e0366a25b6d521f61ad04cd61c0b13140a9465d7711db8a80e3c83bc5410624eeef8bb2dbd1aba48cc3fa39b75d5eb5e91afbb7ba7",
114
+        "phone\/css\/font-awesome-4.7.0\/less\/rotated-flipped.less": "a906cde529bac0abc118201866c6e81ceed53ea5859795ebe87e52e1d04f1c32b0ae1dc2a9297e2d6a2cc44a7bbfcdccd01ead571198027430b98190ce5efa67",
115
+        "phone\/css\/font-awesome-4.7.0\/less\/screen-reader.less": "7d5c0d28b78b9c24b6af0181f8bf72d1b7bf20c45edbf1594da8b4c8391dd24920b9d0ad186ada7217755cbbabb9bf6ea52acd8ed39f7c9abf4659339eb70504",
116
+        "phone\/css\/font-awesome-4.7.0\/less\/stacked.less": "0f07e1507d430c8ade9cbf2460c8148d69fdce6b5b7c659247953e0e0235c5128cec1cd1a329790b9bfa42967cbafd36776d81f6e4ff80520149f8ff4a6ba629",
117
+        "phone\/css\/font-awesome-4.7.0\/less\/variables.less": "1691b468571a87081a892621941b3f0f954a3c5a4c588811b329e092bae28a8946f4e0ed5c440c7bd4248d3aa31c3be26867d28771703cbca41cedf5f3f3fc72",
118
+        "phone\/css\/font-awesome-4.7.0\/package.json": "e66e530ac7b2d050bf954b40ea6af7c20296e7613dae6028c76a12dc6e0ddc92cc89dc565ccfac27d529c7c4f2aa938b52cf3c7a5ca04c86ab6c52fcb9d9c2e3",
119
+        "phone\/css\/font-awesome-4.7.0\/scss\/_animated.scss": "5d8be64ce5136d02dcc2dc38341491c2cafca5633a8bbcf6bc6931da2ec95e2e29ffddd8a058842da4764620824914f7c7c7048a6c9e54d3e97bd7ab995834f5",
120
+        "phone\/css\/font-awesome-4.7.0\/scss\/_bordered-pulled.scss": "01095953afd37d399f8715168a67a2e60c23623f3ead4eb4360f8800e30cb9572ee5d90b48ab4d0e07271f75b11da2d4a4cc39115a872e2f001000cfb46a8bea",
121
+        "phone\/css\/font-awesome-4.7.0\/scss\/_core.scss": "78b807ddc8ac17eebfd4f59eb923a7f8bac8e7b76bc83985d593382b1964f1d98539af83c95c4aaf99e3e492304e08d452980879213fc13d9b9f69539f1f74c6",
122
+        "phone\/css\/font-awesome-4.7.0\/scss\/_fixed-width.scss": "27392694f9bd1a671cd21517721a86c24725c51fcad4acaf09cb75a9e36bea34176af900c82e061eb0ee6b60a1bd0d9e99213119c5175c2f48b6800258ba840d",
123
+        "phone\/css\/font-awesome-4.7.0\/scss\/_icons.scss": "b7f5aa12eb8cab73fd506d499f9c871b54d5939058b9ac27b858499f051d9af74a6374b2bc32eb2aecc169f9c2332cb2abd6b56b150d864df1d19ae153f16301",
124
+        "phone\/css\/font-awesome-4.7.0\/scss\/_larger.scss": "ed6e63e7cdc9bae34810146c3dfd52b912f7b20219555994249f6f3dbd528673af58b69deecd9819f28f71713076c6694f6db0e31148e8e726f714312f404a73",
125
+        "phone\/css\/font-awesome-4.7.0\/scss\/_list.scss": "d8b110a513c41ba8a00620143aa01b2bca59f21306b64e96cb82e4739ea88beddc0d3ba2679f277a34c89fa5cfa3d4b0f8ac5b16d9beccccae36b2f8450ef75b",
126
+        "phone\/css\/font-awesome-4.7.0\/scss\/_mixins.scss": "da84a310d9322e8a4b5e0c739e93a5c66418930930eed7e4a14351b61aa6073465302552642c75553819fe2ea7903ece21b20494761a94daada05bd6fb2e48fe",
127
+        "phone\/css\/font-awesome-4.7.0\/scss\/_path.scss": "9eaa7d29bb402c790bf1ad40ee849e26743d198bff3cfce0182c2320afd9d47f4377b2bfb147999a057604dcfed33e408065577a516be0f3623fc0df75120912",
128
+        "phone\/css\/font-awesome-4.7.0\/scss\/_rotated-flipped.scss": "89a2a4009628540c88c9375c7f04bade6bb9b901575c12fe22d0031c10011f4c5c3b7834d4caf6b1cfb84501a5a77d5c4e6cebc9a8ff92c8bc6c82ec6bfed40f",
129
+        "phone\/css\/font-awesome-4.7.0\/scss\/_screen-reader.scss": "5e3c8df5f64a9ddd9c7dad6f939156090e832a43c4352f7f470169ba22133267931f53100da2a4f4ec5e5528734c5d60c42ebc64fae6a5ee1dbc2e920dc343c9",
130
+        "phone\/css\/font-awesome-4.7.0\/scss\/_stacked.scss": "25492b5ff68a6d2c8f9ddcebbea75b1f14a7f47d599bea5d75e1f5fabdb5e3d43147e6df2c435c7ea639c094811872e53941ccb79f204026b6fe2cae172df7ac",
131
+        "phone\/css\/font-awesome-4.7.0\/scss\/_variables.scss": "77079c62eb1459ecc6e763e863f02f5faf9289b333cb43b2402bbf822837dba4d6af22d97fcdac68e252cba9758a91386483733ccf690c3d4eb5f1d109794f29",
132
+        "phone\/css\/font-awesome-4.7.0\/scss\/font-awesome.scss": "e5cd637954db11cc3e86af92ec127847c7476c22dd1e165c56a2816733368f02edff7fb54679ca77574f8fd86778528b6ff51ae0a39701e09b310a84b877580a",
133
+        "phone\/css\/font-awesome-4.7.0\/src\/CNAME": "060fe8853f4156b0fc81b945c6a3c98f0259e9a32adf02967a1c03e76bfd3bbb918364d208a411ab86299fc0719034750956f8fcc98286bcc3cdcb65314474a8",
134
+        "phone\/css\/font-awesome-4.7.0\/src\/Makefile": "88682614a1f8b34219819161e3fe03f8ee575afc05d0a883ab78cd8a772a7e6fbdc13ba4e4bb4a9d2f98e32772ddd2958e072b817e9ba195ee66c68087225eba",
135
+        "phone\/css\/font-awesome-4.7.0\/src\/README.md-nobuild": "05eade6bc17a7ab940d65e656c1f4d88656e15137ce90a64b3220c1b74cac41d27cd1764c63a6bcd5d8c43a17aced01d782ff4b714f559d18378c78a518182aa",
136
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/accessibility\/accessibility-facdn.html": "feff45586c2e4dec12c1d766b7a8cc815174a56b37567da96d62c04e15c072c902c70713b6f06fce9cc1eb2b4bf0fe44f2dd7b3b630e6cb3006e98e819cd54e2",
137
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/accessibility\/accessibility-manual.html": "c521d6c66a661530f5368c9cd7d191caa9cb791060f678cd44b79201196ce86827babc366e28a5cb311d9ec8929354354da0f3a04d3ac9e370441933bf57615b",
138
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/accessibility\/background.html": "12ef24dab463fd60c8dba5799f069785be108dd5666bccc3ad551af680d7ed3f1ba5c87feb0a10e52efc415ac5cd9fc89bd314f26552e844b2441a61b6ab2de6",
139
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/accessibility\/cta-cdn-ally.html": "d2cb6cec928638e10ad2aa93b7ea55b2184b9504edcca4e87ab20ebdca610a6edc45ee2360abdfb25956df207949cfd94d78206fb5eeba39c2d8fd9d1410952b",
140
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/accessibility\/other.html": "b6ea9fd4eb72fe8b20f18449ca22c65eb72399c8b5c956b598401d95086a37e885883064a06e58a35f2fbb69a296c069f8ab2d3b033e2148e4663cf08542184f",
141
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/ads\/carbon.html": "d6336f7613a75db891904471980c15e3b6d81ad014e13d6317eca29c7b5103166385e8959d3702e747ff83560e97920801d6a246772c617abc7811086a283aa2",
142
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/brand-adblock-warning.html": "5477ecda666bdd618d7e68af4539187ee932dd29418699c0c0e69548b47d20ea98d289a9e3b691696891caa1a9095ab8252ed11425964d8db9df34641d44d62c",
143
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/brand-license.html": "739eb68b48f8d4f555e02f7ef9ab1801aebf6cfad50325d20c63c9068dfca73d0dd27eb6ec4f4e96cb5224da8d8b8fceda4df088411d1022cdbde272e3ae03ff",
144
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/code\/core.less": "4452c88a8b284dd090873896e0b46b86846f2a23dfc90fe69ae561404bc1417e085c6546ae99827196feaec49bfda147f2810359a1b692071ed2db64eb1561c6",
145
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/code\/core.scss": "125638298cf58ddec200c8c58466fb568fcf76e3255f64737b59f9aab1ffc1c64a5f52082d3de4f80e88d25f3e34472107aa66c4bbd55e823df465db7e768ac4",
146
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/code\/license.css": "4a92760c82226b27a683a3860fcddda105d657ed7282221e5008bd8e80b299cbee5387e45e86e18988291870f1ea980ff5733cf36676bf46fd633f92ddf6e638",
147
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/community\/getting-support.html": "fd3d2680d3ad916cedf632dcd2da0addd756fe939dd400c67168090dd6aa97ed067fd3ba4d4ab8919507a45040ff0a93899617542184691b812a899c84123b6a",
148
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/community\/project-milestones.html": "5ba81ec08a037967dbb218e04057f1cc9b03fd79d02b3baae67a07dda595727b8409749340949b4001409543a8fa184603eb788417353b22d8cfb24eb014b01a",
149
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/community\/reporting-bugs.html": "f6582dee7f90225b0047b480dfaa35362477740b29215366227f27d53ed2c43005c4d2b60dabec41b33a482d516f5a23c2b229408fc21b97063db704d96ad098",
150
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/community\/requesting-new-icons.html": "479e29dd3f3dd17083e8ac7320c1a3de111d69cc1db7f618c0003a494b89d0e744c718f70cdd41300a165bc5e0fb6b9758e8fd82564ae47406e6cd104d9b9b04",
151
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/community\/submitting-pull-requests.html": "d62ea8e1f09ef35627c9d4d0498ff514fb1c88ca4215ab72194fcc3a90aa7a4ada5d202399de9aca41f01a20e9dd674c254797f94a6a3b8380b2df1af463d9f5",
152
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/examples\/accessible.html": "26fcba6f7236ecb034ed5575f02e7e7872878abee5d51444d06e8d976a80faaf017e9bd4aa43f2bc314759e5564c3030ee655ff8062d8aa551ec57060aae6cff",
153
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/examples\/animated.html": "8d8c90d6dea5ac1e869fc1f6234db28f6aefc7b489f774ef8abe64bedd7e82c5ed6efec2d4a85b9ac0152f50273695a2f8688aab3d904a130f001d2ba1704a21",
154
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/examples\/basic.html": "f5ab39675edf6375e893509f3cdc6721c50cc721229d2cd0bcb2437eddc644e02b9d1e714dc1c2d34e6675501e3c7b0469e454455d40c5a8e7aa1e83ae54d873",
155
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/examples\/bootstrap.html": "611cb46b313ed9d3412cfe9279981937a6695268392a88cca6e4252fb84b7f9c63e244d70b650abc8e73fd4648254e04995a79c9f68a695e7b8373bdd2ea6786",
156
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/examples\/bordered-pulled.html": "d97b2d4ca375122587565da7ad6a89cc761c1a01648140f6b003903280af01dd29ef23ea565849a62d892b9dd547a517a8028e2cd63a25fde89417b4476a049f",
157
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/examples\/custom.html": "09e01e23c1941ffe88d5c047285621f41452ce960686f00b3415ffff482d41748f6729f734a44639acfb0e1a6f47bf6931e707cde1cbb059de6b9c4c8e0cecda",
158
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/examples\/fixed-width.html": "fdc321a99a9570b65f3330f1e743e2a5a24f07d8759f45b811b00d2765aa7626e8c48fc316b5c040a4d847469c13873981d1098a378123632d288c787c9d74f1",
159
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/examples\/larger.html": "d9d38540bed78cc038323acd638d96c764cb18765ce328f4fcea4282cf432013e7a15482a56db3be50a9a1150743d078d891fd01cc5945d48952547974338af5",
160
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/examples\/list.html": "43ac890e702de4ee53d71a3f4ed18b66b5633e15ed8ece1f4039d1c3377a1d391051fb00b037f2e4a1f1c757d6cf615f069efe615b88aac1be4ee923b8b1d425",
161
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/examples\/rotated-flipped.html": "9c4eb8ca3cdb2309f87ee0366a75631a6a311700091f4c8189d74bbc4a33e3003635ebccc8c9aaf0d0960284c088f490e61c2a51e79cfbac4a72cc2609f90880",
162
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/examples\/stacked.html": "9bce1d2abd759645aac7c2f0fd54e55a34a2668882e337d89c8ee0bdea14bf790c0c03adc7f6ecc6d8e1cf13deabb8f9c90f0cbe4d44a867fae42f72d5a83711",
163
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/footer.html": "00b38469e9dfbc25d4905c9e71965064f1dd11d868bf0983de1614f870309e2313fea222e4ed4206a71c07924cc45bf28f8c0fd6428d331a58df566cd6988b54",
164
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/icons\/accessibility.html": "9b99cab0babf09aa30dd81d6bd675e43b7e8cba79e785d0dca3b7529dae910c2a96eb2c37a97e98610e2d9c5c2bcd84f85cdcf6ec22b72a81fa377edd529ca41",
165
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/icons\/brand.html": "fdcf75c126f165963c273c164f14cb933760ed977d1b734e4843d4299ced9dff545bce672409818ab2dc8391fffee391e17d1a56c80d52b39bb92df8679139db",
166
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/icons\/chart.html": "5d11f2d8367ee116fd85495a80a918d0bff70f641dfc4d7e6fed17e7e15496c04079bc8753b092fc3b50a19b5eff67c2790f7be8f49228a729bf4eddcfc892a1",
167
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/icons\/currency.html": "66b4d159ad39c6c0a96ccddccfec84e1b12f654e5880464042378f3439ce8df3257a33ee1df55252fc214428b52685a425ba91792c52f28984436912bea6ad21",
168
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/icons\/directional.html": "281f9c2e899998fee66e3d5aa1481451d23a2c2964e962506b04190cb84acdcf5e12e55d7a02e0a59793fbfdb78a5bd95203ac560441867ea49ae26c971d4060",
169
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/icons\/file-type.html": "9db9fd23e94d311b5d6b9258b5efea167037f6fd9ae54c57e8cc6505cd92bb14edded5dfe614dd27327200832268d56084f3060e18f29066bf99c141ef20c109",
170
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/icons\/form-control.html": "4a14aa9f08004d97cd7ef070c0e0423734bf71d1607bcd9d27f66f148876a3eeb355966e78207dad0e3da8ac1589df4bc6e1c6da661c2d1ae9c85d34fc77b254",
171
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/icons\/gender.html": "76950be4360b1eb448c6a41cf6adf739f74b3c60254b3264356e3b71bcaf791dc048915adf8e1730b819316fdb5cf934446a121d5d5461a743e03b7e54103586",
172
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/icons\/hand.html": "2ffce735b462f5b5c117c639f22be1a83de099589ffaf378355c448cb748d9a051280524c30224f7796bd317b74f201451765c5b37125440dc4db6aed420d8c6",
173
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/icons\/medical.html": "171a709bfe146dd5ca49647b9acf81ebcf62ef0a27d6e1aa8859c3a00b25f05b867712df7bba53e2e87e33b46dbc0eae107b2e1f3de4eb5b82d7e8fc8443d818",
174
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/icons\/new.html": "7d292287112e46c450034b08d51f4c1435782331e6049ec2fb5579ed9c56ccd6ed4c06b9f33b503a1d5e09160bc4c766df53eef6c1c0f90f95f2e7deefc9a628",
175
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/icons\/payment.html": "d8169b40692ac8fa117ce16eb7f1f6bb1b6f39eeac5a4f6c1aefad2b5278f1cdaf773907ada1bc87953fac97b9874511eb1d163462491c95eb9dbbb7a27e113d",
176
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/icons\/spinner.html": "2049127b24cc76076489d861ebad12207abf87c7b015ddadca72e66ae11a28068bd0d1cc9d28b245f236cbd72e0def6e90486cc1fd14c61442c57052a97cc956",
177
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/icons\/text-editor.html": "d4a659a0d14329a5a21c2369c3d3bb3bed12c88b19b18aaaabc61c095245885ecd39db439d454de3b4f15e3ad4764b909e240e38df28ee3eb25fa92240bd8038",
178
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/icons\/transportation.html": "4eb63448d28f9f6e13c3bfdadbec3b30f6985b17e3831d48e0ad15b3b1a6c41bb547bdb009b741d149f857cc191dae8f382b550aa6c8b8bad0a3c5088ba2581e",
179
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/icons\/video-player.html": "4f3aa37ee53df679d1baaf01d803bbe1346313ff5c6d2932a34993afa0294f23b9b29cb8a3876bd94e7be14469b6f3f04d52393260b32e790ffce2ae38de3a41",
180
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/icons\/web-application.html": "c430a80b58d49eefecf12236366f629d3091ba3d558a510d68a7ff7d5e4eb2d55d55c7fd781ec0e14422c7ae16775c6c90ef18f7059991b2285aa94e6630dddd",
181
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/jumbotron-carousel.html": "a9af25e69e6e61a582917c86e34728a8205fce95f94e4ff9fca4a27af05b68750609b2a4e13fa8f728b71bdead30c182055f2a1d329e6cd679d6110fe674e7b3",
182
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/jumbotron.html": "a9663212f87ba8e79d819fb4f896d0a8f53ab8ce57958a7c20e9587d03fdf499878f0121b7125a0bea012d21966bffd8cba3b0dd80ea4872bc590ee8aff9f5a9",
183
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/modals\/download.html": "df2bc4bffe3ee6f3286b7925594b23bee5775cd933b5b102328676b0d9a0e052387aca2d9495f7748bc2a7b626d5e5c08ffa338c2d5766620e0631fd202572a7",
184
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/modals\/fa5.html": "cd55e54afc79886bcc57f7cbaf0f100fcc41c26bb6a8a9c8a072ebec5d0c4c8feec90ea6e0e615e2fc6fc046c3b0dbdbfe66b31d3f9e1e08783e72e81b8c637d",
185
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/navbar.html": "9e8779299c2d4d95380ad8fa355ba826043009d1a4cdb735e376cdf38afb89c553a9c436680b717c312a4cc0e25a6f9cceb9034c6a97495943788ffcba92633a",
186
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/new-features.html": "b4c23f579f8fc506c8f6848a609c1a0c1c06c82deddb2f38b5b9a770e4d8df793d0cbe803b52287f01d3d46c6a143e106ee31cb32b8e985841ca5e4e16b20d5d",
187
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/new-naming.html": "4b0e5128293de9fde103c9a8648b67ef1d261c9eee359fc019083675ee38f66d45756dcd26b41efb034ca819f5c9be532c8b0d2fa1efaa174958c961818030e3",
188
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/new-upgrading.html": "a09270d8ed206b1a3a9b2415190148fbc1bbdda637fa032e7d17e0108c7e4ce4bbde2fc06595866029eac5c4904d6ae7b999b57870d6699a4b7ee2924bda80df",
189
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/newsletter-subscribe.html": "9fb09338a1d452dae32c9cdebb4e8800b26b163b46a88942d526e6965a47e33aa2959ff7855940f47d3f46297d5f2b7d4d7b6d3197928c55e5b17e728af5737a",
190
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/products\/camera-retro-tee.html": "2196b9364ee03668eafd98a2274ec10413c1e80772012636d5ecebfd48888ec5df05dfef642d46d971bf46757473a5fbb876ba457797b6196e33d60b784ebe8a",
191
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/products\/classics-tee.html": "a16ac1e4a87939505a43302b9dd94a1766fb6ed91a67c93efba42e38e264aab1f79c5f9150ad66f7029a6ab1811d60bdaaff6977a9c53148b7e393ab053e6224",
192
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/products\/cta-suggestions.html": "af48d657766f7f6163ce4851571750154337c8471059b200896e79f4ac3ccf2af4955ec4b950f1d8974cc6cde7ae11a29017303ccbd1895f30854adaf94d3730",
193
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/products\/fa-ther-tee.html": "095990235b55e0032b7dedb26ea37a20c3c99d431998d81781e80f409a589205028a0f786cc19dd6b479b2e2738bc0744f41ca7471ea5889f294a137e7100e45",
194
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/products\/green-logo-tee.html": "801e093b284cc4f6ce225877fb0ac5611d35a47360248255b13314e9722c96bbc2abb240b55ef5c7b07f931d392b0dca6f7aca7b68c9d722aedea916b12d0a91",
195
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/products\/old-skool-tee.html": "8a754b53ccf0db827e9d1250744b83e937a820876a2c49c969ef8e403b680d2692777d843c11576435cc6a4b2c2ef08a085497709b87b029a3e0827b68d0e269",
196
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/products\/rock-paper-scissors-lizard-spock-tee.html": "5aab5d331fa8f5a3540d42c901a52cc15345b585ea7b271583f9588949bc282defef5da5349ed795b0628825ce239f11481174bcea5a43aee41169959c0985da",
197
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/products\/space-shuttle-tee.html": "b155fc2184abac985df711df2bf1e3907ff088a9ffb648ff3a0dd8c329598722fb3f100f3230184b73f5a4606936e282fa1281f35f7be2a9e3665fbafedfd0a9",
198
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/products\/white-logo-tee.html": "4394a413fb87a5cd25148f5be1fd7e1ef641f6500f68e607f51e13d5f2718c676b4af28b0669cede49dcfd0784ea0004a23c2f803346c5acc00c1fae38e7015f",
199
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/stripe-ad.html": "046fb057775c05ba14c426912de5d1499ab7ac0069ee6b3920279cdb551e2e4bd7c343008606bdd6cd9231e90d3d821085a7cb43fed8871ce687ef42f26d5a33",
200
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/stripe-social.html": "0e73d4df0440bca1dcd3d32a3ffd1cd566a0a04e021b0c9b777e4503de7a4b90b4132d248e6a317093c276011b171669aad65399503b1e475afe593eed4c65d3",
201
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/tell-me-thanks.html": "7b4aac2c3b5b1fb29e48575ddaf771e9769bb4bc7e9de53b1e6f1001c26ac8380609e3697af6a687c144edce9e0c56e6f7ae24c961434d6c6f7f7e5f0a8791c1",
202
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/tests\/rotated-flipped-inside-anchor.html": "2f385fbca67c27a5700b81c77c8c568536b2f35ed39e5b4baf9b80b4f50c40fae8b44923a2d48ec7cbc78bb4fb3a570533bb3a8a1635ddd6af3d93a5ba58135e",
203
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/tests\/rotated-flipped-inside-btn.html": "94101d52e8831e9655f0100a23ae49d9ba861c55726eb5f5f4e21534224fd3b0faf507adc0f4cfdee449a6713a20f5cfbca2c06e9c580702cf64f8bba2f1f9fa",
204
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/tests\/rotated-flipped.html": "e773c3bbe0f72df812bf3edfcdb2fbd7469b9c852c06d235f2012cec2d7dedb804d615de3b004e1ece3cddec1136db0580a8f256197c1b07629468ffda1b1940",
205
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/tests\/stacked-inside-anchor.html": "59f6a4cd94a0790767d72b0a4f83d1d749667d43bccd60628e271cfb934ad7adba2d8f913c4f55708080aaea6c781b271b09107b56f276c996b49f60a18e911c",
206
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/tests\/stacked-with-text.html": "37054624c8aaabc00921b74100c417d1dc43fe9cc46a92ab6e4c17b496d5c952416936093135637f9f01c41b78b73c727a5d921f036bb0491329a42e3fc8e8bb",
207
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/tests\/stacked.html": "644604c9302130434ec413ac9f30532013d3dd3d0ca6f36ab14bdead72ab56386bf3faf46a0993ac2d4ebc46e37b853a3415bfe82dd602b9379e6260574e2323",
208
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/thanks-to.html": "e95ea8282f36803c852620a01d0d8dcd0c8bc217a863db947aedb700f40f2f3e63f3aa64bb32e10cb2c2a4e4e25aa85f65786106555cdd688035be0bf8dfeffd",
209
+        "phone\/css\/font-awesome-4.7.0\/src\/_includes\/why.html": "c8bdd398cd372d29a4221d90003e41ea64851afad508ddc07a285e59abeef7fa708db378de329ee5d43d160593c650e6c79a0771448c435b864256437f665da8",
210
+        "phone\/css\/font-awesome-4.7.0\/src\/_layouts\/base.html": "55c3ac21d5fcfc6af1af7b534ad3dd540d6fd574d2b6f16b4a1412977f7e4aa52f3fec17e01cbd8707bbdbaae250c5d14fe3bf776ba34c58b31105905001a92c",
211
+        "phone\/css\/font-awesome-4.7.0\/src\/_layouts\/icon.html": "d58a89c5f5e459f76b6193976ad8d6fb2790c761344afc1e9714cadcaac4295fa33600060fb719de9ad2d6b4bef445921cbc94e9a7df3163d198cd229b6a673d",
212
+        "phone\/css\/font-awesome-4.7.0\/src\/_layouts\/survey.html": "3cad49f4be12b65f99e525424b4a9da671b1c9e103b0d086f60bd9c0321c58048c83b2e2473bf7fe39ce2a8954293c6769ee23a11511e7ad9498b95c2b4d18d7",
213
+        "phone\/css\/font-awesome-4.7.0\/src\/_plugins\/flatten_icon_filters.rb": "359a2c2e490019fbd73818b7bba512408baa61cb9e3519eb97ac0d6998148e753ef1b9e6efa71bae9f6450399a325385cc7377db998256726845e50d94814d99",
214
+        "phone\/css\/font-awesome-4.7.0\/src\/_plugins\/icon_page_generator.rb": "05e73c7a8787eed87f8d85f6e4c4508d35a853623624fe1addd208172ff8ec5ae7f5e5ee7b546c044f2766843e07d9b9d492f708697f319a3cee839fe6792fcc",
215
+        "phone\/css\/font-awesome-4.7.0\/src\/_plugins\/site.rb": "c7e207a821c852b18991122f2397613a8f9ccfaf511b80235a8a17807498f8090df1203c80311b53558fbad4bb3b251267854701521f8b639f7436403e1f21fb",
216
+        "phone\/css\/font-awesome-4.7.0\/src\/accessibility.html": "e3189df725f9a93f691530e07404bd5f0572121bc8b4f22f94caa724e783be7e1bf7fef39bca4dfa99c640689d6ccd7f379c7750e12e3f6d0422524554ed80ee",
217
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/css\/prettify.css": "6947c12db54c8c2b0900923b14b3a0aa8c15477d9b767bf6c7d401a3ed1b0393ad6f03b7a44a11bd81289fc350608f0fb1cfaf7df80a67ebf7ab37815df7a453",
218
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/css\/pygments.css": "35cb14cd45b94b0190d26a84549156caa20469918569cf3a382bc3b0ec200206e553218af8508c31ade050241c304faca75509741b9fdac87a78876f06a8dad1",
219
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/font-awesome\/HELP-US-OUT.txt": "f0ebc1e7ec38a8cd333b34e2deebb416ffab31f3cd707f27e310beff328e5e05962a023da606c62559c8b606f7138b90896ee304fd45e86afdd2910ac8cdda57",
220
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/font-awesome\/fonts\/FontAwesome.otf": "a3acaaac3a9861ac7a4ba23e52b9115d39b674cb685b45454fb4b80329a4f7370b5ea7dd8b41d630798f8a54082b62411fd63332752296dbf5f2b3b96abb8874",
221
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/font-awesome\/fonts\/fontawesome-webfont.eot": "c160d3d77e67eff986043461693b2a831e1175f579490d7f0b411005ea81bd4f5850ff534f6721b727c002973f3f9027ea960fac4317d37db1d4cb53ec9d343a",
222
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/font-awesome\/fonts\/fontawesome-webfont.svg": "4f575d52331de91a2e32cc3408dd0eaf0cf25b7244d34b226314e3647e85ce284f86e3b7238c6c8b9022dc4e2787bf51620849290cdcd5d4c4bc905f289d2156",
223
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/font-awesome\/fonts\/fontawesome-webfont.ttf": "9ffb91e68c975172848b4bba25284678cc2c6eb4fb2d42000aa871c36656c4cebc28bf83c94df9afdfbf2407c01fe6b554c660b9b5c11af27c35acadfe6136ac",
224
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/font-awesome\/fonts\/fontawesome-webfont.woff": "9c776dea55a01fd854ea23b3463d9ac716077d406ecbe8ed0c9b6120ff7e60357f0521ab3e3bf9d4e17ca2c44a5d63ee58a4e7a37a3d3f26415a98d11c99e04f",
225
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/font-awesome\/fonts\/fontawesome-webfont.woff2": "838fefdbc14901f41edf995a78fdac55764cd4912ccb734b8bea4909194582904d8f2afdf2b6c428667912ce4d65681a1044d045d1bc6de2b14113f0315fc892",
226
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/font-awesome\/less\/animated.less": "871260979d82ccbfaba0da449a8db5fda5149ab93f6cd4c3b7c7258f4b02519010e4b9488402b3bc1483ffe9b1c28e48371827bcb3815d8bf2c2c9fa2c3457db",
227
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/font-awesome\/less\/bordered-pulled.less": "fbc272ec15a506c75aa742979053bd53c137e096b9577dc2c2921ae05da4beef051b5c73d523e788009e7473cacfcf2a3f3be3d756f70533fcdd083c28f06283",
228
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/font-awesome\/less\/core.less": "7dc7ebd8db2a4a82608ff2bdac7dcfcc25ceaf328ca3dddc24b4d9288dc1cb0fd9666f049a24e84f49de93a9808bf4558a2c9100b60a18eb6ae8ced3ca1e08ac",
229
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/font-awesome\/less\/fixed-width.less": "840595e81ca021f4171407c5671024890d8baabe223d4aea8fdbec4af80506e058a02c007b9a8eab3b22b8a1233da5331645f54d458d0cd85e126fe7ecaf0f72",
230
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/font-awesome\/less\/font-awesome.less": "16a2f4f83d9c99c04db5f3a2f8b8f912f2615815d46b4248e93085a0d85b26da4602202e7edafea260cb4effb3966a29f35c5718376787df53b463b671a44358",
231
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/font-awesome\/less\/icons.less": "fb4ceabdd56efea26de2ca8b1d36eb5bf9449945597d8a885154bb4826beadd742d7ed7bea85d0045b2212bef5271218202ea13a9752162c58f828874c281c12",
232
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/font-awesome\/less\/larger.less": "fc61ace85bfb818341e45d7ae4863fdbf772ca3880f056951a8029fd0c0bd2aa64831cd446ab5f8dad19e4b332732eb5cc0d1f82e07ff28284a270545e7c4fc9",
233
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/font-awesome\/less\/list.less": "93822d88bcf9a647867411a47721786bb3404a45dd78b1155b1601dea5327f4cb913248014494101d9aaf5ebc53ca8f7b0d279971199c84d0fcba23af42cb3ac",
234
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/font-awesome\/less\/mixins.less": "49774e645ddbdb849361cd519f93ac859896040ab6e282c2ca4b7ee5bc3f0ff9ae33febfb03af13f5c3c70c64da49020d6b38aee87c3cb49bdbfd2997e008a39",
235
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/font-awesome\/less\/path.less": "2214dadd8025d0da912ee4e0366a25b6d521f61ad04cd61c0b13140a9465d7711db8a80e3c83bc5410624eeef8bb2dbd1aba48cc3fa39b75d5eb5e91afbb7ba7",
236
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/font-awesome\/less\/rotated-flipped.less": "0c410031dd5a13e53659de9933ff7cdd1c474d7aa7a92bf3f0acc635099abe6e09eec47385178ad757e604241d8a0a631c4c44c025f588889ce003844263ba03",
237
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/font-awesome\/less\/screen-reader.less": "7d5c0d28b78b9c24b6af0181f8bf72d1b7bf20c45edbf1594da8b4c8391dd24920b9d0ad186ada7217755cbbabb9bf6ea52acd8ed39f7c9abf4659339eb70504",
238
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/font-awesome\/less\/stacked.less": "02c86ec39dd5c62d633350a7ea40f08179f45d45ee120f980fba55dd9b3268901bd29d83029889982e180c890d8407f9d8902c0a83d65f9eef8cda449dce9b7f",
239
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/font-awesome\/less\/variables.less": "20beb08c4fd41e8ea8c5f83402e381f4cdbf5ada68fe4f55a3b7131e15376da55615d9abca6bc4ebe1c5d592f43bcb68099c4fe8291000dbea7aefad87bd0cf8",
240
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/font-awesome\/scss\/_animated.scss": "0e27405ded612c01c0d1fdb3327dd0e311ad92146ba05099bc7ab26486fa2e1b6705f642078027696eb66b07e05a0c4fe743c24f5ed28c99b62a095c96e1f0ce",
241
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/font-awesome\/scss\/_bordered-pulled.scss": "7e4c565381a5bd3de2c6a7d2d706b592ff23b9634e8aee400aa900abe45b34a6c0a0457661d24c39d2688c0d2464f69cb1c6b38460ad09c0ff22cfad1aa572c7",
242
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/font-awesome\/scss\/_core.scss": "a08d491eb1c351847ff35af3220bb18d3f7bf301c56e34f682fbb81f27612aa26ce32cd9cc491f82b23da16cc2d17e4ebf9afebb2d5c040f8639476e247ef912",
243
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/font-awesome\/scss\/_fixed-width.scss": "63ff8f10bd612ecb27b17775471d3fd2156e23f20ad5949b444a9ce5c7f5c4c4e963579e90f868d4bee6cabc30ac24c8b428a5aa448c6329e85a3082e688d228",
244
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/font-awesome\/scss\/_icons.scss": "bb0c2c272dbd75b0da7e1dab2155a7dddf4e4a15db41f6bba899af8fb0ccb6dbfc715806962c52596e8ff54655a62d12892c05e39cf8d94a32c1b0138798c3f7",
245
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/font-awesome\/scss\/_larger.scss": "56e124c9477776ebbf03a9c1abda1216998d58a901bf6ee377c50f7239fc048a2fa72add0f77c8fd01fe38132250a6ecfb17cb37a415b2b2efe38fd0432822ea",
246
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/font-awesome\/scss\/_list.scss": "cb337c087a7753cffd1298f24f3a6fda676afb4116f2a9bc52182cf0be3b2baf916152a146f808da073de76f8015157f6384c8c8cbbf743fa778729c2155e058",
247
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/font-awesome\/scss\/_mixins.scss": "1a5738e10348256551ce5e24ac2c2999cfb471f59e41c6bad9811fe00cff0d5d91fe3941961ddae0ab799022d1efd55bf771e91ef9198389dbca737c4bf5808a",
248
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/font-awesome\/scss\/_path.scss": "9eaa7d29bb402c790bf1ad40ee849e26743d198bff3cfce0182c2320afd9d47f4377b2bfb147999a057604dcfed33e408065577a516be0f3623fc0df75120912",
249
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/font-awesome\/scss\/_rotated-flipped.scss": "214f7a0b8237f34b8c95efa9dc56ec15b61700987b8e240fa1d97c29aa2f615b87913bb28a6db1dc92ffaf3e80984e4b5f0b602b94f39604fd4613fa5a146411",
250
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/font-awesome\/scss\/_screen-reader.scss": "5e3c8df5f64a9ddd9c7dad6f939156090e832a43c4352f7f470169ba22133267931f53100da2a4f4ec5e5528734c5d60c42ebc64fae6a5ee1dbc2e920dc343c9",
251
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/font-awesome\/scss\/_stacked.scss": "10ea316ec6c669b0d07a17eb585f73da0038a9ed622d3e0bb0751ca5ef61159ce6593c3c53e1e0c589f3dd3ddceb2e9c08215475635611fbda9f8e6f7ba5c7a6",
252
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/font-awesome\/scss\/_variables.scss": "f036c1d9b7c98d14708c711ee7752db086211c571af722c0e726541fc1429b1cdd1beb747e5e06547aff18f12f2a931e0e78f42e2ecab8f9b70e3fc2a57b9b04",
253
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/font-awesome\/scss\/font-awesome.scss": "0f0dfede40b047e2fbaf5090d3f08a06637444c3f9bdcd8cd2242a8d5df7fcec938e073b1f7c91c334646e2a324d6de12f2673424ce7439d45b99eba020361fd",
254
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/ico\/favicon.ico": "8fb75ec6e7d4290d0f342ab1cbbc4d507326fdcae091b08c25a27be56629ab35d96b999cd06c10aea1db67895dd3b3f74c4359c0e4b1f429503bac3764a76992",
255
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/img\/algolia.png": "d2af6d614e206d73dcce611d448befaa4899b09ecbbbf0a0aa6dde1e268958415ea5fd9a2a87b9b1fc7354fbfb1c1161ebfd7170ec3b95fe4be790408f6c89d9",
256
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/img\/logo-themeisle.png": "ed8dc9ff39b794aed38e9f2cf46993d72e027d1f15f662b3f98eb6e08cdb700f0bfb83fccd4e16cec4be2d0f41b4ff0afcc3776f4a2eddf05fa6fa2b639b9445",
257
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/img\/logo-wpbeginner.png": "9c6ed3015a57e44c0538e52080de6033288689387e12cb648500475c42e2fa736cb027e2ce547d63750fc5ceb3831c3473c656ac3e04fa313aecd399f23e6ebe",
258
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/js\/ZeroClipboard-1.1.7.min.js": "99deba8b85b7aa2c092af1b7a2e09757b1b82b6c9509ddf5af0edd48a10a1a7e790158cb473cb86aa133d79d47142f14e8fc15ff4cf3ce9e39268af6593ebcd9",
259
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/js\/ZeroClipboard-1.1.7.swf": "bb635b563a8b0a637d455127a40bf817ed57c4bfdac1cc07858faef1fcc488c3bd9ad057cba83ec38c7a2cbce0522ab402c4d215303103f6f3227db36716ad34",
260
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/js\/html5shiv.js": "d3915b572fce20ce95c1d5a0bb75f424bf3d6f71e726a77afb50e85c457603d60241cb4698227dd3cf071b7133fe444cf2f0e6728913058731173fbbc9ccaac8",
261
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/js\/monetization.js": "7a8e7b8e79aba68f409fc32188905637e798d79de92305c5907c339ff1c9bee5f22f2d58e499e73316f6bb39db580224299d10560e9e29476f819598b19b5076",
262
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/js\/prettify.min.js": "7162bb9b467682742f6d87ea94300000064fc54e15193c3d7e5a4f898f0ad7dd55bad8f01933eb625ab1a0f4a8191d7062e1acbec6512ee610d2c0c413c0b34a",
263
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/js\/respond.min.js": "a133ec6ca8b11553f9e940bd30faddeeb2465bd5cc9b48f3431670140c1f4d1d74b2362729e1e907e50d6a2411ea58b2027996ff0ee3e5f7a420526f8efda5d4",
264
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/js\/search.js": "1a925281a9fc0721c8b290fd8f6048db5bf31057ba7050228e7245d05fb1fbf6742884355254f00ef1bd68a4542bdaea73375f0eac1f40ae21f280d0d08f37cf",
265
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/js\/site.js": "71e19b41cf03a3b0bf05e1bc0c07a0ed3cff51968470b22502d26357a337cff80179d9e2546082851c07ffafe2427919104253f53c97540f90dc2591662ef9d5",
266
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/.csscomb.json": "7d746f81e37b2a55e4eda116b76f688e057fe1e7a7311dedfacfbc2943dac84b2bda9612140cf7f0089015533d9a00efd90fee5e260a2bd94b7fc73737617368",
267
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/.csslintrc": "238adfbeee24fd202885d332d1316c44bf23a37e1899b9c618215715326a3a0a84112ea18f345203e450d096795ddd7b859a055296f8d2f834b2b0eb7f7d5f3c",
268
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/alerts.less": "6ef653823ef237fa019122796e00afeffe3e6f69773b3282e70595946b936a8055865fc1ef115f371be0c81a4b2abf6243de068d8b75b071fd856aec8ba87d91",
269
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/badges.less": "ca5abfb72cce5fcd7958c53fad833af4e8321595538ee76a4c2eeacd79f217f8465c1b86bca32357daf1d7a82edef5560bb9c69c11d137a1aa1fdb8da16d82b1",
270
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/bootstrap.less": "abcad45a2e54b3b501bb5219bc5883702fb9a15e8a23fb9b3a9c78ad705b99ee39c042972ac756409bd85b45db460572949374c0f0b8eb4885ab4d7529b45e93",
271
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/breadcrumbs.less": "66bc7d8baa9d552aa7bb832fead9ffcde5e9ff1ee9aab436c6599566bd3b87849a74e1a888d7d33bb925016a2dc26d0f046ceaff40bdb06464a550a64f27207b",
272
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/button-groups.less": "b99d1ac30a521fb6163effb388a25114b8f849718bc1a2c32bd4c36423e1b51b1d45b6be181ec0ad39d44debb1475e483456c8fb21d86bb2356addfffd488c96",
273
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/buttons.less": "d2795ba4cd91e07fffe5ba49935b36583c324479ef3d3741330e9267430b0f560f24c059dc1e62c5bcab21084790a87d38dbae051dad3a6e50a403abc7b7ccab",
274
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/carousel.less": "e9f601bb603e0a39d1fd7efd07346cac7d094ae1cbf8d8b95dd2836baf7c25757660a532f1a7d8881c9582234f07b64d57e81ee5e863c901b141b6119696e21d",
275
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/close.less": "e2a6a0877df37b1796039939c179b98f2768291a1c8ccd26fe6848590fc865df9f6f0016c6b5b0d0e7367746ea27c8c9103df4bf5efbac063059e4fdc0db3540",
276
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/code.less": "3932fc44533043a4000c26e4fed51f231c2dc054e561c9d4167a5429799b813d4b28654d9ac411e3a425b66217b090ca72ddc3d5963459fef01fc92386ecf525",
277
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/component-animations.less": "bd7517bccb89a397d29bfb1db20bfbacd1b28d4927330168d8984908c1e7d0f647c0cdcd646f8b009344bc967dc751ccedf0efa872691d23f26e2e3debd6b467",
278
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/dropdowns.less": "bd193d3168a7ec1eb89a484c5e79c37a4ba7d6cfbf5b922bb2e7037b88c3b935fc31a9d9c3c52a92c41b03640a6bb12d61917c2f0128c33c64409e0531ae7ec7",
279
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/forms.less": "c8893acca4ceee40dfb2fbbde9720efdfd8fd5f1e74b0202be26aa3746c27c5e836f7268d9b44466086f5eae106571d4be2d4e04011f85ad45d7ededecf4d73d",
280
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/glyphicons.less": "6f909009f4e9f2b6aad0337c650a3e396b63341ee6c4099baf4537a07256f423dcb969f3f452559b0b3790992cdbbe272d52f4898950b50cf386297d5ac693e8",
281
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/grid.less": "9638e08c198425b7e46b2178f022af3c4566adf6e9cc1ce1386b595fdfcf7a07ee51fa60fa9f3c55f02fd9ae1d2e1198e9534171582b0fea5db0d4288854e215",
282
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/input-groups.less": "c8e470633c05493fc778a64600ffad97737f34a94423217849ce01b77054a8c1d0fdd85350595c7c30bfadf159a8d1ca2d04af9f49c08795e9387020a07a4447",
283
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/jumbotron.less": "e3c97f308f50a5a3914eeceeb9a90dd1a7e802492c2c3da657740c997852ee0271a1dc06fd497ab44625544314c4cdef3bb16cb0bdd5067ca9d89b5cd64a3f17",
284
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/labels.less": "640e8861faf662e06fd4ff06a92382a27319fa39761c78b8a19c4b0ab2b2e440b4ee7cdec8a0f7ce67a12f0596ffdbbd19308e2e9a63d164709ee083edceec64",
285
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/list-group.less": "a11b70ab5618e5ea686893fce866074b51254c93d5bcb02fe30306d143b791e76b3672b7f8fe51545ef30d73ab89732bfc45cf2179dcf9ae07ce38d27389f422",
286
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/media.less": "e8d21a5bc99a08d3d04ee371ded649b3cacd1265988efedbba1e8aaead14d346326c14b64dc6aefa744e232ef6ab46d4ba8a1d23e7aa26b276633db92ab94420",
287
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/mixins.less": "f8a8d51bd105a260e9db963e2e7d636bc91c93c51f117574e199f90cb439daaaa32616356b884527ea48b9feece9724952af7ec1452355703df624c8b498e5a4",
288
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/mixins\/alerts.less": "582d9fbaf2f8b6b737697824af7ba9e47f98dd4a001b60f1668c2f88aed8bdc3e80311618bad7b07605f81876cbfcbc6830b620bef0ee9fa57fb90898988db79",
289
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/mixins\/background-variant.less": "68709b0c5b5ba52b0f583b7421f79bfcd32c2784620f0ee8077a0d788ddc38a43b11863cec3b1a183451115f257aa7aeb58d077f066e846639fdd881ad069649",
290
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/mixins\/border-radius.less": "e495c886182327408e6b82511baa49dcbf1e2b05104f844f3a57fcff40a49eaad548e19ce13853c45e74ac52689d9479792cc3de55a020c2229128f595d5288a",
291
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/mixins\/buttons.less": "fa6f88171ef22558b095a136769533231a9b0ad8954211f85db3a42ab19492e0d456d5feb419f237bef68d1f75ddc42442154a4007a45b76f17608ec907dcfda",
292
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/mixins\/center-block.less": "3b81464925a61dbb2be2b11d9be3292e9a3d42c65bc05e52f84b91684e0b178021dbd73e6f613c89f39c34ad311d039bb80332cde9bb64ccc51e0af49e63143a",
293
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/mixins\/clearfix.less": "5989cda9e86899298c7e7c9cf73004d94d6e53f214dbbad93ca7e7e790d1e2043f768481ba9d20e1b7ff5667fbb4902b213560d09e3a7aa7cf977f55a9247614",
294
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/mixins\/forms.less": "07dabe53df01d5324803837089f67f74b8e890330859fad42fda090f2f9a35280ddf531cbbc6b549e26002d5afba0e1773cd871c63c7f2f580b67a042f18e403",
295
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/mixins\/gradients.less": "31b17118826eac8be3aad693382b82d99c01983b68ac37c5290d07920f76f61134c69ee12f9f5ed335aa392e69dd3bcb9a512636142e6acc1827f6db673a5a12",
296
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/mixins\/grid-framework.less": "ab354cc185f82538cf2532bbe7a7df82dd197a6355bfa3c333164294e329742a800f26641fff2857f7269f80a30cb1fc8635fcf6c7575b7b98603db973d4a314",
297
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/mixins\/grid.less": "4ef011c62ffaf26988e7f30749a58e251f316ccc3093b1c50d5c65cd66065e2af58bcedbf3447a97f5506df294bb2a31ec0d2ed01c70a977135e153991bb6fc6",
298
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/mixins\/hide-text.less": "770055fd6a76bf5881015e17101bf9079d8e05188ea70e42ad8a2b8d4d141be3e7756039dd7b904786fc79c8f14ecc58d7c9da4122395d6bb5b9f8766c86e3a8",
299
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/mixins\/image.less": "a0aa831f323ab27f3fe324453e54382b7e4ed8da5fa72e9819df2b3d07705c800ade9f8e5f732eeb36043096479798a812ef712c589164a629dce7fc9b49f75e",
300
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/mixins\/labels.less": "3923340ff6b2eee8eda3819d42f4c4b7e6291f9edd2b9807c4548e5bfe47eca3076b62de3c5bf257dd7af4711eb1059f0e342984d2e7a606d2229df2b5678865",
301
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/mixins\/list-group.less": "be85a41f96cf369a90b27fb5b1fe477306fd9687971fe85bfe8aac3a4ee21c775a9b55d2d0062b66a50e71a11368bf6617ab7962c39b978252c20631b4d55db8",
302
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/mixins\/nav-divider.less": "89478e72ea248cdf80330b4fc356d0901ce5637e98e07419be49ca8dbd563d894af7fa7fb0e8acc8af4255a9c8a929615a19067e83ff554cb7db5a14ce3aad61",
303
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/mixins\/nav-vertical-align.less": "2b5ad0e0e292a091f90fd02947db3dab499d47c7e44562005a02b4beee1221baf602687aefe63edd30b6ba2959fe2e94ca9088fdb0e7a548d5c722dd3684710c",
304
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/mixins\/opacity.less": "39f3e7f370cbfe52d61b08688ed4e0070ad396ed7e2e9bc068d3f10d31cd15e1317664cad0cba13b15e4c60076f1fcc353e28e2b2fcb1fe5f3143ed87ae2cdf2",
305
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/mixins\/pagination.less": "1344d77a2a54bdad0f7c731114e8ead128335bfab274b36f6ba8c02f6362acbfeb3718452d993f945f78af7f439f1240e4205af3b39e2d12883f9ab127a7866e",
306
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/mixins\/panels.less": "7518af77aea6fa3fc4d2950ed0d7df5d9fb374f7ffc52333b8e4cd6a785b2dc8b1ffb12cda7e5fc3571bbfbcf7e480af1ea8ceefcea09a6af534949d8622e73c",
307
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/mixins\/progress-bar.less": "b390e21c7a4fc508ea0c8403dfe7e89d0d7c2e6402cd1a7972f1ac3cdfeb354d6890e3d2c8d214575110162326b0a016055a548ca6d6f0fd146a035eb8896a55",
308
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/mixins\/reset-filter.less": "1cfef8254d9fcd9d3142c9636270bc505cb7ff3d4e74faf7b3f5c90fd5d7eb4465fdf4affeacda7e7ce40800b8756d3ea2a1031f6729eb975acbba71b3a64b37",
309
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/mixins\/reset-text.less": "e7a4f4abf9fbf88ac5c756798751d7e0b0ce1390607479a522d3044682a19054a1cdebce3a66a4a2bbbdbaeda9db8d14621f12ae7ae67c4ddaaa1c3f43c9ba75",
310
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/mixins\/resize.less": "653227d4ef865d5ac4e8f844b72019847c1e06e6d9063bb18dfe91b4316957fec4f01063585275b8cec695b602edce11116320972306bd643cecacc6d80fadd4",
311
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/mixins\/responsive-visibility.less": "4d75a3404f4f5e8e3364a46ddbe9b9a6c0e780825a71ff4e5ce7c712eef99caeeb47c198df6df4d22479a72ff769247548638bf222f492762fbba383028f3318",
312
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/mixins\/size.less": "5961852fff078e8f3efb4d2584e60d59d5a74ecc325b53c03d80a63339a86757019d34b28435597ba576a7129bd697f7e974e4a374c772cf3d740f4ec27ec720",
313
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/mixins\/tab-focus.less": "e277a74a513db05ce8c8bef7a2aa56a2e45b0a6f7e49432eb2c07d9e876a950292be339f6d8937eb0339794f632b6eda5fa29b9ba6e1c037b6dca1f720549f8b",
314
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/mixins\/table-row.less": "60977b7f339f344350b9c904cfabb9209a1121cb26ea41cf516f01ce3e3f9b5f7e262c298d97f33a8a5f201595f3ad0166d800dd625287deb7d3d416a91093a1",
315
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/mixins\/text-emphasis.less": "644b7f8385aaad90396707bab15dcd319a71f0a72eea7c0721caf98dfe53825b76973dfcb6ad51ae6cc28d181f4f244074a7ac95c29387231697db7de5af42fc",
316
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/mixins\/text-overflow.less": "a32baf8bc0d47de27e34ffe09a37702a0faa5e541d06803abecd9b82bf59de1bf0a7ea85ea23a68b84726c984ab0caf62e520b1165b80251c031fdf3060f6c20",
317
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/mixins\/vendor-prefixes.less": "6857da23deb03264fcefc6ca3fefd631571aac71203f23292024f20e0d5bebf4669b5dbcccd36df095460bc9027614396a9f42bcba832e968498d4ac753c76eb",
318
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/modals.less": "4c99c136dbcf3ebe6a95e694ab1bc14a1469f9dca8311390661e5dde3201dcacd855aa9b4400c54d16116a60c98412a06579938fe1c534c7b8643a22d0e6deb4",
319
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/navbar.less": "36d19bb1a44da00094675414d564a1ab382e3fdcfa1eed9e74f5f9ebc0ea5cfbef151996a44de9c9a975d088f409f73fbaaf01887ed0ebb1828810d82fdb3e7b",
320
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/navs.less": "d19df77d08c0bcb9a534533943e2f722a54d26e94cf328849cdd77aed4e1bf067563c0cfd4997f8eaab3dde47fa567025d3283f979d8be5e61c121b784a3d98f",
321
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/normalize.less": "d0a2aafb6b60e57d40747d6b1e36f25011ac250b853eafb50478d4abb1c166aa89edf393a62019081ed19e08b32c6f2fe013edb00090437dd8fa5737379ee718",
322
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/pager.less": "7637659ca2998df19ae2d38304067029b9944db4e70a42c2d0e77ce52cbd0176d765490a890687cbbb24334bf098b4cf54931b35bddc26a85e205b81114dd6a4",
323
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/pagination.less": "365110bafb570d10002748f6d2e743a16a27cadcbe600d64335a1ac09ff690683649872012e3a60bb92a611d87f409b450bc0d9de28d6aa1decae8f70a1a0491",
324
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/panels.less": "d6f37fadce28cf9e90bd1dc47e0bf71b1bd8b67db3e19b0447d2a6a3e13def8cae5d2c52d43aecbfad80fcfcd0b0e24fb5eea205bc6733e10d90b22dde5f275e",
325
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/popovers.less": "084501129f4c74a32eedbd78f6888cd48789e5175987dfcf45385c98a54fbad40654415e6c531a757b1108937ae9c6b9c81404700d754fc54eb925ea4516efac",
326
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/print.less": "9c4f44378fb1cd28535572fd768baf652de2614f31e62753ba79c02a313ab509db28f52c3d0c78665d2384dd7be47edf97e243ef83c6b22e38edec56873aa1ce",
327
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/progress-bars.less": "41c051579d9fb7949b128dda04dedb2ed8adc358b157cf5450d375962323725ee2faa7a4033613471f00544596c8fa400d22d9965c77544aebf6e56b3911cf49",
328
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/responsive-embed.less": "a0288862649916929c2de7a5c982f877847f687422ed205fcb9b6a197ee98a6bf52fd012725f894d951bc6ee4bfdee0a4a8363e652f93b8bb98140aed1995533",
329
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/responsive-utilities.less": "98690e8c90ab2c0c4d9662786b7560f2198a968a4f4ba253b8c87b9402b02c339516c89af569acef3f6f37978ead0a41b234a164f5f16d4828e5bd2b0459f370",
330
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/scaffolding.less": "882fd7d208e76e926ccb9c88ba56741e8baff7b6a46bb17a4c9652778864e63ec04f5113628c6c39c4a94392974293681e560a0e3015226d4c1a66c19e085419",
331
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/tables.less": "8588df750d6291bec4a2359fa6f07658d0a9267b319c47560d61ea909aeef592123fba6aa0ce3cdff19fb92849bc8253f67c98ec5ddeeb782ec73998034c67ec",
332
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/theme.less": "9b0c31e6b9f57bb814edb418813052427ccc97fa23a1ad9c29e1b26f9eb26921948727ed5804cb72d302f53387f4e87aaf8c436e10cdc60c39d3d10a8e89f228",
333
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/thumbnails.less": "000fb95bc0b7210a573f6ae1d336c1baaa78764a9ef5c5054c088b5bd993c4866ee8b5d525c35b0e99d796545389b0a00864c7187222ca23d1d5f395a804a6cf",
334
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/tooltip.less": "76459540fb8f856671ffa6da159ccef956144ec4e38bf73ff2c0f0af40130592d87f7fed1b1b9eda2bfc6e827b4f69dcfbd82a07101b4ec60b8a1e0c3d1c3315",
335
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/type.less": "e2f164468cdf7097e0b3b456bcbae8ba23774c9fa678f2eee698010924f8691a8477de1c259b7e592c5c75f8dc959e7f051a501788b4b7ed4bd73df89a028595",
336
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/utilities.less": "ac3407691078aa6dd779ff6ae1e9cd26abf9913ac18e24188fa31fb3e69b1deb31f7ee8cf8ee7a5fe778d4b0a8a7666faf0d6b30c46257140180a6a6147c2269",
337
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/variables.less": "ae9259421469571038a01a417a1faa001b312ee8a8c16b22022cb169b1ff957a55c0f0d9d31afebb74841f3a23b35c1c41b6c0d66da7a9d16a26e91f7381f0e5",
338
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/bootstrap-3.3.5\/wells.less": "58014e2654e7364b1665d22a62edfa71828822547362fd42ffa3580781b4ca5a5ae6d209ce7916063ebe1f619147c9fc64bddd3b94105635afbdfcf9dea71d9c",
339
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/gandy-grid\/grid.less": "b8bd10ea52b0a8ebac7df606b883a3d9c3cd86d11db93494b822f848f6ff712b04f6155cfed3dbfccbd5676e5cb7ee9f1a965806476f771ba805e9433380b83a",
340
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/gandy-grid\/mixins.less": "201801419a28897fc914d74545fb9653cf133957c675f69fcb12fc1d210017d850821eb2b76e8c3e768639d47089ab647469147646c2e49761f143c7c9800b09",
341
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/site.less": "2613c3caeb1d7f65290aca49a2dadaf2a82058e915f81fa1e95d19a8cd2a1065e80af28f870c74048848fea4097f3e4630b06b63c54ea2219ca1527e22053dea",
342
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/site\/algolia.less": "3aeb335ed5081bd89f699218f6a94aa1d1d67e9d0f12608b880fe6ded5948f1172f93c4a3604970eb2e0d57bb88f65b192891e2ad77c6b4ed6d9bc4580d64ddb",
343
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/site\/banner-ad.less": "f5617e2a0610c67953cef2f11f14d969f2acc4d6f19155a3b9386e6da7cf938d1d0cc6d2f437348aa03285683bccea3b1e0e61b644ed4a402a38e85c0cf5e9e9",
344
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/site\/bootstrap\/alerts.less": "5bf122c528abe73261e3e5fa571cbef01e133e767c7d59bfcaf5ed88d4747c66b26c8c6f543de14349e5c6ce30a0985cd1ab5439d53bad1036ff29fc35d466c5",
345
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/site\/bootstrap\/buttons.less": "e770985ec8cd35b9e3226af40ea32b31540baf07189fb8fb80b9dde4bb6485297afce6e4aae54fea3760ed643a576d8da45b4b76f282edef0487d34f4f1c473a",
346
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/site\/bootstrap\/jumbotron.less": "8bd6c1a7619f6eb8e89fff5bad824869909c1650d69b7bfbd6a62388644fc906b74de7d4d826c6ef4fd62fe15db80d4a92ca00261ba1f704e30c494842ebb560",
347
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/site\/bootstrap\/labels.less": "33cddb047fd6080281598dbb61960c0c882fd55d116103531413dfa228b2da0ba7a1d74e1a0a784027e2bf196839d44a7ccc0d5bc6d6f9723618c5aff1a90e80",
348
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/site\/bootstrap\/modals.less": "e7bd46144060a749a799012ddd68eb40cc2c2591163a5a2daa5814bd3eb4ae9bfa6fea8729a1ef9bd26956a88a069c0e3673555d2cceacc2b486bade7578012e",
349
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/site\/bootstrap\/navbar.less": "fa7cce0e8647032bf6f84be86cbb21b51fde5ab235d4c9497ae714c450d29a8bbd072a6e0764b1c9b646d5caa1b5386e4b365a08ac725e687a5a02c5db0af717",
350
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/site\/bootstrap\/panels.less": "dbe49fa43779ed116880f620472a17cb0df73f5e1b4ac422727a7efa5f7820d24656ab6702a33ecbf418db70eaab3dbb34c6c52c8856d925532db6027819bb7a",
351
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/site\/bootstrap\/tooltip.less": "48416fa9b750f9ab909e6ecc641a3227956361d458ccace89d5c784d3fbe9cd58d2d8e4a1876062fd4217538dd361286b73b72d65fb43b9e8480e74d8ed1c7e4",
352
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/site\/bootstrap\/type.less": "387eb060b9fae5bb9d75be7fe4243ce95d8331c6bfcd3da567cdb79c750f8bd8a45d36959d0717323b267a081e7c18ace43df84810008256162ce9158bdca09e",
353
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/site\/bootstrap\/variables.less": "2c0810ea534208a0bc6c97f87b61d7788b9fc7f16c63dd30a10759495cfab6b603fa5a1b7b80d3d70897f295065589d9d95d660e8edab05627f0a096996e235b",
354
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/site\/bootstrap\/wells.less": "b1e85ac1c8f2b0a3b372d9e3666b00592e299004c7624f8fc27458dfe2cffee3093058b4c9867ac589a48727d5065ced497ae6ae6469636689aa2d2c9b8566a4",
355
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/site\/bsap-ad.less": "17d85c0b18c3de440cd3ee34fd9f88b20bc00630ddef8e753bf6b0e93933efd8e5e8ff3694ff98df19b422596e374cf28e9193eef073b92e62f3407608c44652",
356
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/site\/carbon-ad.less": "c06e5dcc5d97495dcb4acf6eb0dd9eda68ccf311b808e167ec37cae91af8a8b2f963cdbddb8c489c565323447df2f6fd7d62e6d20b8d1fcfc9849316c4eb2758",
357
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/site\/example-rating.less": "3b62779f2d1e1da0e09614e27e43e369cb6860ea3e3f25bb416321d22355484faa7ef06dcaedb3b0ad62cfe76bbf89b8f5bea97c22d7b883e1d048a705f94486",
358
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/site\/fa5.less": "230d28cd06d28dc7a3698a27b400c643663dd239651c29978bc15d3b86797b43b7530b39730af185c33d6c80f96515ff91e56e3da01a066bb85003d88480082f",
359
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/site\/feature-list.less": "5fd9507d3bd6a2a2f3487163ef9168b5db241055b93013555d74fcb2b81ae7866c5011876831f5ade138242a726c39e327ed7c820c760aad4d4f561b52836d45",
360
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/site\/fontawesome-icon-list.less": "be0af7e5d5a793d5587c79e02ee245e659ea1de4b1bf2d187971f6f51b6976c6d07837c79659e77aa6dc52d0a423f6744cefb537a37245ace430bdda7953c846",
361
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/site\/footer.less": "3195eaff0ecc028109d7a79a1b6d6850d7e619253d4a69c69e7470421617d05cab7a7daa95eff1bb6fea458d6848795fa8f56f4089207442b4cc34fd7f926a96",
362
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/site\/jumbotron-carousel.less": "25fc6b59ec1147d0ceac291147773662201799313a4824ea103f7510ea9b328eb9f27ed9768d1128ba655c493355364ab3f95ab4b58b10d7286f17e3b903a5a3",
363
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/site\/layout.less": "caf18d839d6a84d1cd0e13cfb2a2d9e5884ac802429175b4da914d77f896155d3c5e4925f4392044827a8f87e79c0f97876432f95b7125f0f20692e2a08463a7",
364
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/site\/lazy.less": "e00c9dd4e99db9ec174e6b50dc856637cfb57fdb321b72f95a319b5772c6338f7e1f89d109a6bc18ec890c5d275449f87525dbcc272ae3e89de8f4bf4c6611e8",
365
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/site\/newsletter.less": "1e1baa0263cad5613607142776bee6932e57173cdd77cf5a06f79dc104fb479e30fa8f56f6fbec770fd90e5d456d016747960d0943bc01a4d7128a2b336fefb1",
366
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/site\/print.less": "47ce33620e649fe5f9e899daf9b990ed8ff131146fbb8a21b6816f81bb854025bcce74d146d0bc08e345502fae36ff9d16dd879d72aff48712c1f0d2dfd06964",
367
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/site\/responsive\/screen-lg.less": "25b983b0a15d3d09e2c2eae2750bef037ea4cf6bf67b275b40fdb615579143dd6245dd9ff53044c67254f9a84efd05813a8d975992b138149fa7e248c26adab8",
368
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/site\/responsive\/screen-md.less": "4d88734ce346390a74caf1579f78b41908c5b386b38cf4724c84b7c4bbdb1de987520f51ee2e23bbbe8fce2733e220002fcc18cedc790613f0e6c1ea519baaa7",
369
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/site\/responsive\/screen-sm-up.less": "5a059b3ae6b0d1fb6339b5a031f036f64ee7093271c19c45defe57083205152a57e82e75f6e7cf9d95fc5c7e3e20f9db144616034f90c4ea8803b4846d2da348",
370
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/site\/responsive\/screen-sm.less": "b988a2ed6bb237b5c25f7556a3e07b375c9ed33716015de07e4f7b7f787d35186539f05b2d4f752c5a59edfd43e3501d84d865530cdeec3a61320690d060af00",
371
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/site\/responsive\/screen-xs.less": "5266a0dffdf45a7e45efb3fdad70b058f713a4476f7e356096417b139f4d85d36a8cf9c99cbe4840cf5ba4ea438cc9ecc599e39049cc84d853caf7eafe0cc71b",
372
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/site\/search.less": "de316ec445ee08ae2afd58ec4192419daff43fd3be40a77d29eef3e913dd826d633d9eebbb1b82ff38e0b1c62587c04b0ce9725ed1fc89a8cefffbe4a297e44c",
373
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/site\/social-buttons.less": "acd3c69ed3cb1726e4c4707d9ff68bd0bbe928f5ab7a60eff22c7a239214d94ad0d7aeecd7bb1bf3a600ed8e11a44d7631e99c4eea14f3ca986ec38fbbd102ef",
374
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/site\/store.less": "f7b3701892b29f7e84f9e98089f9d902efe6081adeb426a6330ea8bcb646345142b980d2187880f5b88ffce816a92ae990cb72ddc381beee017c4cd386290970",
375
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/site\/stripe-ad.less": "b15f475b64c9f484603631269f41f319251ed78f8d12c0929b77a48c5d427742b56e2ca5d7ae49dfa1e179357535af024c561fe2aea48de23f79ebb6869f84d8",
376
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/site\/sumome.less": "ce6ee2eb2c308a88e56c952e611c726c2cf158109d42918c2e1ef320c45d51269069ba0d50db0d5c443d2d8fa5634f86050794cd2194ff07689b0777a2f63bc7",
377
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/site\/textured-bg.less": "e26572839aef1ebc89da8e1d443c5cda4f52d5e52473af89fdc2d0393b472f16e3e26a705ab8086c730c9215eb9109dcdcd42e6705ac9209989832b559b293fa",
378
+        "phone\/css\/font-awesome-4.7.0\/src\/assets\/less\/site\/views.less": "36c20e316fa6b35959878f3b4a70f3924a0bfd316f34c697a1a3424039fdeb670f976199a01c0896e9158a042eca193674988a4e91d995be289e78ea2ab2fcbb",
379
+        "phone\/css\/font-awesome-4.7.0\/src\/cdn\/error.html": "7e51a097a684678928af7cd5708c2a17222f9cbf81db4a9f85384d28d59031b48ac43315d167ffc0a45097014aea4341416b885d2cf8ccbed6e5bc331767b720",
380
+        "phone\/css\/font-awesome-4.7.0\/src\/cdn\/success.html": "47c4fe2b58da41de009380c016e277dd8beaee35055a3328fb9710dc2e24056ff62f6f9698cf531270c7cea3c96eb84336f201e98aa34d2a37c420d8938ff116",
381
+        "phone\/css\/font-awesome-4.7.0\/src\/cheatsheet.html": "a36cb07fa872f277fac0510ab5d5d640f8d837572c381041cf8623055328e827933b369922dd1c6dc82b7e4bc89d8bdbd19ebd21439a7b95d9b7b43f47d2fb44",
382
+        "phone\/css\/font-awesome-4.7.0\/src\/community.html": "df0bf171b74d07c35d650ed1d786413adae55ec2d74cd779faa2ecfdabf0beaeec77b603a11b9334e31cd74a5458c9100d9336f905b2d50c479fe34c7cf2bcdd",
383
+        "phone\/css\/font-awesome-4.7.0\/src\/design.html": "0df2e8909f5138f50322334a3b5bc65bef0b822cdeab29f8bdba4e077ba0f301a56e8724bfb730e8e6165afe3b761db5c6b6cf8ae2b83e74aac0b0e7563dd999",
384
+        "phone\/css\/font-awesome-4.7.0\/src\/examples.html": "680fb422b52d80c5503cdae6774f4feb7290a542ae93b294961dd96694f6f72c125b39898e21c00470df65414cf4e3e1ae31cc500097e7c8578fa223aeee33bf",
385
+        "phone\/css\/font-awesome-4.7.0\/src\/get-started.html": "f773d4781b5e4817544fdd144005157be79a773d3b1a8a72e30e98354cb6de28887585d4f64f7ea3a8a8ee8faaf242b77c8d4f1b1319c01bc1ed917da7a537b4",
386
+        "phone\/css\/font-awesome-4.7.0\/src\/icons.html": "77017e98ef938c868ed33d4c7125cbd6e5bb6bf5426fe9dfbc9548d5224ca102f5b6277ec6d9e26db29fbffe973a8aa8e77d494832ff3ee6918c8e2d0384be83",
387
+        "phone\/css\/font-awesome-4.7.0\/src\/icons.yml": "b67111f3a3a99ef19f5f7dcc27ff0ad37a5b7e74e288ead793b50ea319e65f4c24716b1ab412e2e12772408b5c1cebb56884cad02d425104325f39236ea4b3c8",
388
+        "phone\/css\/font-awesome-4.7.0\/src\/index.html": "e3c7f7f120a5f0015a7b63d9f84f71aabd6b669cf19e72be01e15374d357171948935ec8b4824f6aafcae82bd9916ccd8768d1d195fccf0b8f281f17c88ac174",
389
+        "phone\/css\/font-awesome-4.7.0\/src\/license.html": "a73280c350c239e7e0d8dc4f96dd9ec90e695accf6a86e7a6641ea68145e007b761324aad669fcfc9bd4f43781b71563b2900016b4c78797d392db6985cb7de9",
390
+        "phone\/css\/font-awesome-4.7.0\/src\/store.html": "a6de552c4d0099c7a4586a2c27ad1bb016461a35bf3d7ec0647ba93c55146e53dcf51b52daae17330a734279513dbf3e6586983574ed5e28d0707bfdb9a13dc1",
391
+        "phone\/css\/font-awesome-4.7.0\/src\/survey.html": "09b3fb7dd39ff303d463da73133ea78ec9a60aa5f7189929ac0a8aea9fe51c09fae1bb8c2c85772001d4e828a42b7e4c4d57419f488f49b5a9584dc010365a10",
392
+        "phone\/css\/font-awesome-4.7.0\/src\/test\/2.3.2.html": "70f712d192f8441b7e2a5504b84955e42360c56b3c2b00df15472a69a4c435c74baae6876c4e8f9d00572f7bc7f24dd17726604025f89b12ecbfd1710b8325e3",
393
+        "phone\/css\/font-awesome-4.7.0\/src\/test\/all.html": "8056255c377ce11e2a51b001330f29ae81462e4ace4e7e3ff960d4e661cc282eeef4ef168a307a01196a830f2fb8dcf572b39c3cbb5d77e8bde8643f2a64e869",
394
+        "phone\/css\/font-awesome-4.7.0\/src\/test\/glyphicons.html": "b21a79668cf8d1a330ea2148e2f1089d41420f7f0e23b2862ea01e1e3c459d325247339aeee5d6dee5149b4f0f143832b819d07138da87eccbfbe130cd9ff650",
395
+        "phone\/css\/font-awesome-4.7.0\/src\/test\/height\/4.4.0.html": "435d1525deea3bbdddf21794156acfa355e9fae0ecb37a64b3e7486d4e3ea798c2d95ceadb12fc3b3f9b4017530e00eb0e44f1fc9c5865013520855b2b184685",
396
+        "phone\/css\/font-awesome-4.7.0\/src\/test\/height\/4.5.0.html": "f8e27986cc8539878b4247d92ea56a4750d036adabdb0b208d5e2a6c0df1ced6f4a6a9fd4d0f9ed7c0cf695233a16f6bed7ab0981e7bd57423f55dc5b3ae0710",
397
+        "phone\/css\/font-awesome-4.7.0\/src\/test\/height\/current.html": "dc9b48458c1841dd7bd085f7753ccbf27203591f68f0278f0b9df1cdaf9beb043a35d9c7b9bb500a2667543582d4c9b40b5c2f144cf88997d8dc84fedd00ee1b",
398
+        "phone\/css\/font-awesome-4.7.0\/src\/test\/index.html": "8060c06227dd2096d27afbc55f027214974a38c5f711d3f0c77ef1645441302324102037c7ad57b116d60c8aed2d847655bfddbfe0ba526fb0b5966435b509be",
399
+        "phone\/css\/font-awesome-4.7.0\/src\/thanks.html": "cf0b677134a1893d3335991a2a9b9533812447a0817b88c03c6f27c967fe8956cdd17b355b6abe796617d83e0229c945a557345c11580b636b5fd633af273bdb",
400
+        "phone\/css\/font-awesome-4.7.0\/src\/whats-new.html": "56607f43fc358a79bce938d9198bb7b091159d9aed52a354b57027810564973ddb9f0cd36b6ed8e573f6e9f09b25b043cdc88a1c22d212367e7794775a0e44f1",
401
+        "phone\/images\/sip_trip_phone_logo.svg": "271b9632efc181f514892220a648aa2636ec8a561e297c1a2abfb64a10ffcdbff37913bf8cc82ad362a33b4faf224e74b45bd32a9b1b760a2e0476d56bc02538",
402
+        "phone\/images\/sip_trip_phone_logo_large.svg": "b622744c5eff160b77ef7226d8f70eef15311db18d7dea9e334e92b20601a33d812cb0bbc3eef74d6294d1ab43ba3969a7ffde23d8ec2f7f9d1dbf6b6ec18e25",
403
+        "phone\/index.html": "4ee572d188ff32e2f7518c6dfd2fb2efcce4a1afddf7661128d3a04120483716f4006e261c61faadb9da64d5c9c09d6ce49cfb32f77adbf98f7703dd3ff253bd",
404
+        "phone\/scripts\/SIP.js\/sip.min.js": "ac923b5f101160a076034d6dfb2409fe479a4df6aa4cca358b64ef516de77f0c58b8faeac6a7bb9b7f0ac908e5773b0d567dcb3aa01a1a3bb5d133d41113a1c4",
405
+        "phone\/scripts\/app.js": "bf2e4c9ea3c61739b6463437ee9676cd4de2b09bba723f243533ece5b8c563dc3ef05afd43f18409de714f672b9b59ddeb1c6f6b8b65a28aa22b71b4843dda04",
406
+        "phone\/scripts\/bootstrap.min.js": "de8d6bf69932b479dcfe470e893effa9f88d399314b2fa74c14a1465c7a6f1da78a3764fa35ee05ddd6a3f225588e601ed5978d5ef48e353e279c596f2471071",
407
+        "phone\/scripts\/jquery-1.11.3.min.js": "25e4bc43cc350f38cab68b422101b528781bcd271a299cad39aaf64aa331ed0a35b9dfed3938ddccaa08c31161ee2c472acf297aabea334315758e128487b0fb",
408
+        "phone\/scripts\/moment.min.js": "8f42e847a067c9f4e803bed887cb458ca2a6973025a6bd7f4a0853eeb24b4c64f8284e9d8fd40066fc71e17a90b36d1a6477939ff7c4160dec09e11e6f90d798",
409
+        "phone\/sounds\/dtmf.ogg": "ff7217621c355aaf8eaf290f61a9fb228be899d055fc312de7ebd8a29e0688f82fbb629519db948737837df1e0aefe8b0ed0b304909f6149e97753dd6f50b791",
410
+        "phone\/sounds\/incoming.ogg": "666a28d6d6dfa0afa0d1be3d838c9b207b91ac5ef46a787b05b30da622a611b4f734ef7512bff873d3e6025ed1bd1699ccc2970292b3ca21d29a58990ec96a73",
411
+        "phone\/sounds\/outgoing.ogg": "b5d17d7a53e42215365176c8ce515bcc71fe682b92d6ee12a484d0b12d7f2a28b81db18b2d6e9073bd774728fe68becfa6c34b8648bca4a20a52622d7eef2fd5",
412
+        "templates\/content\/index.php": "44ea4db27e9af9e1c61a2d6c8431b22d17dbec2e9c732201ac8b81d56ae9d85e37f68cd11f9de2f5936e8de3d240ac5ebd28296f5994411ffd35f01d9a4dcfc1",
413
+        "templates\/index.php": "e1737e2207375f18a5d1b795f9cca76ac2acc20d569452081aa548c2980e3f1d2389afd483e59a29a600dfc766c764550c322c8de9ede58772b9d25f253674bb",
414
+        "templates\/settings.php": "e311bb045304186403743ca156df317e467522cf4a9829a753b94ec792aad38d833ab4f36a5b92a7e3975d73345e8e7289a7ddf4bef145c9fc3a397d2c2a71ef"
415
+    },
416
+    "signature": "ABVpPM1i4MgKTJ41pqIF0NwKqny2yCM8H\/0Gd1hIlXTpFAvJHrGgmvDz7qW9pXUFkWrCOhl6EyNfrIkLL34d4uAWKRZZXLbYr8iB9jobIVss0xspQDQHesFum3Zp+CDdhf4HySjtEOzxgTCQ01Ul52UlHChbebLDNOpvWtUQg8IzaSLWhj0ZsPXhpptC4k\/\/rUawAA9HadD1kewuDiwua0sVJbMLNsfOT9yrtnQBGQHQjGmepUv0Od7yyBt1VYECfQBMdHhrHgViLq5X1uLe4\/sGK3CNBEwHv\/9knMmcSSwqAQ43TcDla86M8lG6zFCIQoc9Tewrk95bSUlcIhxZX78j9OvvnFUYDvu6UaH\/IZyM7GUl+G97fDVQ0upUAoZoEV3OXgCnoTT5TbjT7z5pMoc0HcBY+6fPKimzzZyBf06Od0GQGknnYy+eAfBTJ9auB7lX5PSuAZwmC8uvlwdrPeEKIcHZEHhSxWsVJTjgXkqnESa28\/0wR5RraISANvRbHgm1yPjHZgL07d9WxM9+nPjbdWARL6WxcLF3hl81XB5K7ln14BGaTUUktXasAwea\/Muz2bvwPecJ9pJRJEV36X25IZWMRCfsRA6N77YqJuDqLQdVHH5IljuG\/E5duygPCHo1tVU11z04yeMfQNpsxcc2KjO1gVtEPuCqBM3kI2A=",
417
+    "certificate": "-----BEGIN CERTIFICATE-----\r\nMIIECTCCAvECAhG7MA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD\r\nVQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI\r\nMTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB\r\ndXRob3JpdHkwHhcNMjIwMjI1MTU1NzUxWhcNMzIwNjAyMTU1NzUxWjAZMRcwFQYD\r\nVQQDDA5zaXBfdHJpcF9waG9uZTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC\r\nggIBALGXGrkLJY9XsqMXKDMLD4+Ub5HVr9HebfC2593+Ed41HVqIca9z3CdeXg87\r\npTjyZQhqsCzVArIJsmnH5pT02NYZDsZeARWpRLYWOIQeOJwS0EdOtWP6\/VXjxfw+\r\nUaDthCcfcj8TC7y+15zqwx9ERSc8ujXadGPqZEZAfGuZSy6b9+oXo17tT9fCbVeJ\r\nYyXibMWutUhIt8FvUQ2PCUYUity1kvn9+G3sOlPYMWDqPG3tt70EJ2m1J9ZX6Pa8\r\npmI8LG8IvFWImbX1\/+8YrtQZ0RQcoP7yX\/H6S8NvsAux\/sgMYNSEVbXzapE2TeMD\r\n1w0aEH3101twV+2cuKf8U+bt0Vha9HFNC06Nmu2lQkXPV\/Cdvx+DIKXhb3AaApgB\r\nT4uzRE4Zfg\/BZkspJ7IFObi2NpTv2T4frH3tZudOR\/OWtsGTpZbH8p12RK7yE19d\r\nMCR3DdVMe\/OXh1GaIc30s4jd6apskC33xZJ3IamyzY6EYLL41E2vmd9Eg6VMTGXJ\r\nHuOdAtJYy4R6040aDXfeNAnTcCVZQYmPvfnalQfcfiQePaWMyMVsBFy\/utq\/R\/qU\r\nTgtp68+jhvRH2YOxUVvuyrWhxY8PqhNHWlp5OYGllBdes5GrKvGIqnO\/q1nC6V5A\r\nHd+1SZSQJE1kQxpXxiDJeYBUQZUyBOiqM+GNfnZi+kVJ75YtAgMBAAEwDQYJKoZI\r\nhvcNAQELBQADggEBAIOJ8yPdp3vsRaOzsQCg8NdQgIDn9PZRtF0GjOPqVCOo\/ytx\r\nwIgdAiTAl1qvQaUjRSZf+qpYFPs\/Ojqd3DHi+ySPcq6PkkTWxkEpRmoaoFNAt0XA\r\nyOjSQhsBxuqFDmK+U6YvB\/QupGOSZipaBjQnaP5xufoiitIdRqd1XFHyBiNEfRt1\r\nQhLzrz\/u4PLaC6653qrl\/Jpd\/tp7LUtglihr4ODkALNQFWgY0n58tawkvTBaOpf2\r\nE3BfgleQKRa73g\/H3pGtUWtdXeTSkNHlxqef7l\/icwEDWqZfV8MIPRgEymG1naYL\r\nFIBUptO7eT+NDScFHKe4rtPK7FHhUjS7x4OcIao=\r\n-----END CERTIFICATE-----"
418
+}
0 419
\ No newline at end of file
1 420
new file mode 100644
... ...
@@ -0,0 +1,71 @@
1
+/**
2
+ * @copyright 2021 Double Bastion LLC <www.doublebastion.com>
3
+ *
4
+ * @author Double Bastion LLC
5
+ *
6
+ * @license GNU AGPL version 3 or any later version
7
+ *
8
+ * This program is free software; you can redistribute it and/or
9
+ * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
10
+ * License as published by the Free Software Foundation; either
11
+ * version 3 of the License, or any later version.
12
+ *
13
+ * This program is distributed in the hope that it will be useful,
14
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
17
+ *
18
+ * You should have received a copy of the GNU Affero General Public
19
+ * License along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
+ *
21
+ */
22
+
23
+$(document).ready(function() {
24
+
25
+   var baseUrl = OC.generateUrl('/apps/sip_trip_phone/user/getsettings');
26
+   var userid = "<?php p($userId); ?>";
27
+
28
+   $.ajax({
29
+      method: 'GET',
30
+      url: baseUrl + '/' + userid,
31
+      contentType: 'application/json',
32
+      success: function(settingsdb) {
33
+
34
+         var connectData = {
35
+             "User" : settingsdb.sipusername,
36
+             "Realm" : settingsdb.siprealm,
37
+             "Display" : settingsdb.pdisplayname,
38
+             "WSServer" : settingsdb.stphwssurl,
39
+             "Stun" : settingsdb.stunserver,
40
+             "Tracesipmsg" : settingsdb.tracesipmsg,
41
+             "Voicenumbers" : settingsdb.voicenumbers,
42
+             "Defaultvoicenumber" : settingsdb.defaultvoicenumber
43
+         };
44
+
45
+         localStorage.setItem('SIPCreds', JSON.stringify(connectData));
46
+
47
+	 var baseUrl = OC.generateUrl('/apps/sip_trip_phone/user/getsippass');
48
+
49
+         $.ajax({
50
+	      method: 'GET',
51
+	      url: baseUrl + '/' + userid,
52
+              contentType: 'text',
53
+	      success: function(sippassword) {
54
+
55
+                 var url = OC.generateUrl('/apps/sip_trip_phone/phone/index.html');
56
+
57
+                 if (!localStorage.getItem('SipTripPhone')) {
58
+
59
+                     window.open(url, "SipTripPhone", "width=354,height=572,menubar=no,scrollbars=no,status=no,addressbar=no,resizable=no");
60
+                     window.sipUserPasswd = sippassword;
61
+
62
+		 } else {
63
+		     window.alert('The phone is already open !');
64
+		 }
65
+              }
66
+
67
+         });
68
+      }
69
+   });
70
+});
71
+
0 72
new file mode 100644
... ...
@@ -0,0 +1,301 @@
1
+/*
2
+ @copyright 2021 Double Bastion LLC <www.doublebastion.com>
3
+
4
+ @author Double Bastion LLC
5
+
6
+ @license GNU AGPL version 3 or any later version
7
+
8
+ This program is free software; you can redistribute it and/or
9
+ modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
10
+ License as published by the Free Software Foundation; either
11
+ version 3 of the License, or any later version.
12
+
13
+ This program is distributed in the hope that it will be useful,
14
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
+ GNU AFFERO GENERAL PUBLIC LICENSE for more details.
17
+
18
+ You should have received a copy of the GNU Affero General Public
19
+ License along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
+
21
+
22
+
23
+ This is a modified version of the original "ctxSip.css" file.
24
+
25
+ Below is the copyright notice of ctxSip phone (https://github.com/collecttix/ctxSip)
26
+ which also applies to the original "ctxSip.css" file, which was part of ctxSip phone:
27
+
28
+
29
+   The MIT License (MIT)
30
+
31
+   Copyright (c) 2014 Collecttix
32
+
33
+   Permission is hereby granted, free of charge, to any person obtaining a copy
34
+   of this software and associated documentation files (the "Software"), to deal
35
+   in the Software without restriction, including without limitation the rights
36
+   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
37
+   copies of the Software, and to permit persons to whom the Software is
38
+   furnished to do so, subject to the following conditions:
39
+
40
+   The above copyright notice and this permission notice shall be included in
41
+   all copies or substantial portions of the Software.
42
+
43
+   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
44
+   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
45
+   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
46
+   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
47
+   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
48
+   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
49
+   THE SOFTWARE.
50
+*/
51
+
52
+@font-face {
53
+    font-family: 'Inter';
54
+    src: url('../../fonts/Inter-Regular.woff2') format('woff2'),
55
+         url('../../fonts/Inter-Regular.woff') format('woff');
56
+    font-weight: 400;
57
+    font-style: normal;
58
+}
59
+@font-face {
60
+    font-family: 'Inter';
61
+    src: url('../../fonts/Inter-Italic.woff2') format('woff2'),
62
+         url('../../fonts/Inter-Italic.woff') format('woff');
63
+    font-weight: 400;
64
+    font-style: italic;
65
+}
66
+@font-face {
67
+    font-family: 'Inter';
68
+    src: url('../../fonts/Inter-Medium.woff2') format('woff2'),
69
+         url('../../fonts/Inter-Medium.woff') format('woff');
70
+    font-weight: 500;
71
+    font-style: normal;
72
+}
73
+@font-face {
74
+    font-family: 'Inter';
75
+    src: url('../../fonts/Inter-MediumItalic.woff2') format('woff2'),
76
+         url('../../fonts/Inter-MediumItalic.woff') format('woff');
77
+    font-weight: 500;
78
+    font-style: italic;
79
+}
80
+@font-face {
81
+    font-family: 'Inter';
82
+    src: url('../../fonts/Inter-SemiBold.woff2') format('woff2'),
83
+         url('../../fonts/Inter-SemiBold.woff') format('woff');
84
+    font-weight: 600;
85
+    font-style: normal;
86
+}
87
+@font-face {
88
+    font-family: 'Inter';
89
+    src: url('../../fonts/Inter-SemiBoldItalic.woff2') format('woff2'),
90
+         url('../../fonts/Inter-SemiBoldItalic.woff') format('woff');
91
+    font-weight: 600;
92
+    font-style: italic;
93
+}
94
+@font-face {
95
+    font-family: 'Inter';
96
+    src: url('../../fonts/Inter-Bold.woff2') format('woff2'),
97
+         url('../../fonts/Inter-Bold.woff') format('woff');
98
+    font-weight: 700;
99
+    font-style: normal;
100
+}
101
+@font-face {
102
+    font-family: 'Inter';
103
+    src: url('../../fonts/Inter-BoldItalic.woff2') format('woff2'),
104
+         url('../../fonts/Inter-BoldItalic.woff') format('woff');
105
+    font-weight: 700;
106
+    font-style: italic;
107
+}
108
+@font-face {
109
+    font-family: 'Inter';
110
+    src: url('../../fonts/Inter-ExtraBold.woff2') format('woff2'),
111
+         url('../../fonts/Inter-ExtraBold.woff') format('woff');
112
+    font-weight: 800;
113
+    font-style: normal;
114
+}
115
+@font-face {
116
+    font-family: 'Inter';
117
+    src: url('../../fonts/Inter-ExtraBoldItalic.woff2') format('woff2'),
118
+         url('../../fonts/Inter-ExtraBoldItalic.woff') format('woff');
119
+    font-weight: 800;
120
+    font-style: italic;
121
+}
122
+
123
+#sipClient {
124
+  background-color: #30394a;
125
+  font-size: 13px;
126
+  line-height: 1.42857143;
127
+  font-family: 'Inter';
128
+  /* firefox 19+ */
129
+  /* ie */
130
+}
131
+#sipClient p {
132
+  margin: 0;
133
+  padding: 0 0 10px 0;
134
+  line-height: 22px;
135
+}
136
+#sipClient .sipStatus {
137
+  margin: 0 -15px 2px -15px;
138
+  padding: 1px 16px;
139
+//  background-color: #111;
140
+  background-color: #2c6595;
141
+  color: #e4e4e4;
142
+  font-weight: 500;
143
+}
144
+#sipClient #txtCallStatus {
145
+  color: #e4e4e4;
146
+}
147
+#sipClient #sip-dialpad {
148
+  margin: 15px 0 0 0;
149
+}
150
+#sipClient #dialpadWrap {
151
+  display: block;
152
+  position: relative;
153
+  width: 246px;
154
+  height: 354px;
155
+}
156
+
157
+#sipClient #sip-dialpad .col-xs-4 {
158
+  text-align: center;
159
+}
160
+#sipClient .btn-default {
161
+  border-color: #ffffff !important;
162
+}
163
+#sipClient #callButton {
164
+  font-weight: 600;
165
+  font-size: 15px;
166
+  padding: 5px 12px;
167
+}
168
+#sipClient .digit {
169
+  height: 66px;
170
+  width: 66px;
171
+  margin: 0 8px 14px 8px !important;
172
+  background-color: #f7f7f7;
173
+  font-weight: 300;
174
+  font-size: 24px;
175
+  border-radius: 6px;
176
+  line-height: 21px;
177
+  padding-top: 14px;
178
+  float: left;
179
+}
180
+#sipClient .digit span {
181
+  display: block;
182
+  color: #999;
183
+  font-size: 11px;
184
+  font-weight: normal;
185
+}
186
+#sipClient .sip-panel h3 {
187
+  margin-top: 22px;
188
+}
189
+#sipClient #sip-splash {
190
+  height: 371px;
191
+}
192
+#sipClient #sip-splash .fa {
193
+  margin-bottom: 15px;
194
+}
195
+#sipClient #sip-splash .fa-circle {
196
+  color: #5cb85c;
197
+}
198
+#sipClient #sip-log .panel-heading {
199
+  padding: 10px 8px;
200
+}
201
+#sipClient #sip-logitems {
202
+  overflow-y: auto;
203
+  overflow-x: hidden;
204
+}
205
+#sipClient #sldVolume {
206
+  width: 140px;
207
+  margin: 0 auto;
208
+  box-shadow: none;
209
+}
210
+#sipClient .sip-logitem {
211
+  padding: 4px;
212
+}
213
+#sipClient #numDisplay::-webkit-input-placeholder {
214
+  color: #bbb;
215
+}
216
+#sipClient #numDisplay::-moz-placeholder {
217
+  color: #bbb;
218
+}
219
+#sipClient #numDisplay::-ms-input-placeholder {
220
+  color: #bbb;
221
+}
222
+#sipClient #numDisplay::-moz-placeholder {
223
+  color: #bbb;
224
+}
225
+#sipClient #numDisplay {
226
+  height: 30px;
227
+  padding: 0px 4px;
228
+  font-size: 15px;
229
+  font-weight: 500;
230
+  overflow: visible;
231
+  border-radius: 4px;
232
+}
233
+.btn .fa {
234
+  display: inline-block; 
235
+  margin: 4px 2px 0px 2px !important;
236
+}
237
+#audioLocal, #audioRemote {
238
+  display: block;
239
+  height: 0px !important;
240
+  width: 0px !important;
241
+  margin: 0px;
242
+}
243
+.page-header {
244
+//  margin: 12px 0 20px 0 !important;
245
+  margin: 26px 0 20px 0 !important;
246
+}
247
+
248
+#selectFromNmbr {
249
+  display: block;
250
+  width: 100%;
251
+  height: auto;
252
+  text-align: center;
253
+  margin: 0 0 4px 0;
254
+}
255
+
256
+#fromNmbrTitle {
257
+  display: inline-block;
258
+  width: 100%;
259
+  height: 20px;
260
+  text-align: center;
261
+  color: #e8e8e8;
262
+  font-size: 14px;
263
+  font-weight: 600;
264
+  border-radius: 4px;
265
+}
266
+
267
+#fromNumber {
268
+  display: inline-block;
269
+  width: auto;
270
+  height: 100%;
271
+  font-size: 15px;
272
+  padding: 0 4px 0 4px;
273
+  text-align: left;
274
+}
275
+
276
+.input-group-btn {
277
+  vertical-align: bottom !important;
278
+}
279
+
280
+@media (min-width: 768px) {
281
+  .lead {
282
+    font-size: 19px !important;
283
+  }
284
+}  
285
+
286
+.panel-title {
287
+  font-size: 15px;
288
+}
289
+
290
+.small, small {
291
+  font-size: 11px;
292
+  margin: 0 0 0 22px;
293
+}
294
+
295
+.list-group-item-warning {
296
+  background-color: #ffffe3;
297
+}
298
+
299
+.text-right {
300
+  word-break: break-word;
301
+}
0 302
\ No newline at end of file
1 303
new file mode 100644
... ...
@@ -0,0 +1,167 @@
1
+<!--
2
+ @copyright 2021 Double Bastion LLC <www.doublebastion.com>
3
+
4
+ @author Double Bastion LLC
5
+
6
+ @license GNU AGPL version 3 or any later version
7
+
8
+ This program is free software; you can redistribute it and/or
9
+ modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
10
+ License as published by the Free Software Foundation; either
11
+ version 3 of the License, or any later version.
12
+
13
+ This program is distributed in the hope that it will be useful,
14
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
+ GNU AFFERO GENERAL PUBLIC LICENSE for more details.
17
+
18
+ You should have received a copy of the GNU Affero General Public
19
+ License along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
+
21
+
22
+
23
+ This is a modified version of the original file "index.html".
24
+
25
+ Below is the copyright notice of ctxSip phone (https://github.com/collecttix/ctxSip)
26
+ which also applies to the original "index.html" file, which was part of ctxSip phone:
27
+
28
+
29
+   The MIT License (MIT)
30
+
31
+   Copyright (c) 2014 Collecttix
32
+
33
+   Permission is hereby granted, free of charge, to any person obtaining a copy
34
+   of this software and associated documentation files (the "Software"), to deal
35
+   in the Software without restriction, including without limitation the rights
36
+   to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
37
+   copies of the Software, and to permit persons to whom the Software is
38
+   furnished to do so, subject to the following conditions:
39
+
40
+   The above copyright notice and this permission notice shall be included in
41
+   all copies or substantial portions of the Software.
42
+
43
+   THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
44
+   IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
45
+   FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
46
+   AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
47
+   LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
48
+   OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
49
+   THE SOFTWARE.
50
+-->
51
+
52
+<!DOCTYPE html>
53
+<html lang="en">
54
+
55
+<head>
56
+    <meta charset="utf-8" />
57
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
58
+    <title>SIP Trip Phone</title>
59
+    <link rel="icon" type="image/gif" href="img/favicon.ico" />
60
+    <link rel="stylesheet" type="text/css" href="css/bootstrap.min.css" /> 
61
+    <link rel="stylesheet" type="text/css" href="css/font-awesome-4.7.0/css/font-awesome.min.css" />
62
+    <link rel="stylesheet" type="text/css" href="css/ctxSip.css" />
63
+
64
+    <script type="text/javascript" src="scripts/jquery-1.11.3.min.js"></script>
65
+    <script type="text/javascript" src="scripts/bootstrap.min.js"></script>
66
+    <script type="text/javascript" src="scripts/moment.min.js"></script>
67
+    <script type="text/javascript" src="scripts/SIP.js/sip.min.js"></script>
68
+    <script type="text/javascript" src="scripts/app.js"></script>
69
+
70
+</head>
71
+<body id="sipClient">
72
+<div class="container-fluid">
73
+
74
+    <div class="clearfix sipStatus">
75
+        <div id="txtCallStatus" class="pull-right">&nbsp;</div>
76
+        <div id="txtRegStatus"></div>
77
+    </div>
78
+
79
+    <div class="form-group" id="phoneUI">
80
+        <div class="input-group">
81
+            <div class="input-group-btn">
82
+                <button id="dropDownButton" class="btn btn-sm btn-primary dropdown-toggle" data-toggle="dropdown" title="Show keypad">
83
+                    <i class="fa fa-th"></i>
84
+                </button>
85
+                <div id="sip-dialpad" class="dropdown-menu">
86
+                  <div id="dialpadWrap">
87
+                    <button type="button" onclick="document.getElementById('dtmfTone').cloneNode(true).play()" class="btn btn-default digit" data-digit="1">1<span>&nbsp;</span></button>
88
+                    <button type="button" onclick="document.getElementById('dtmfTone').cloneNode(true).play()" class="btn btn-default digit" data-digit="2,A,B,C">2<span>ABC</span></button>
89
+                    <button type="button" onclick="document.getElementById('dtmfTone').cloneNode(true).play()" class="btn btn-default digit" data-digit="3,D,E,F">3<span>DEF</span></button>
90
+                    <button type="button" onclick="document.getElementById('dtmfTone').cloneNode(true).play()" class="btn btn-default digit" data-digit="4,G,H,I">4<span>GHI</span></button>
91
+                    <button type="button" onclick="document.getElementById('dtmfTone').cloneNode(true).play()" class="btn btn-default digit" data-digit="5,J,K,L">5<span>JKL</span></button>
92
+                    <button type="button" onclick="document.getElementById('dtmfTone').cloneNode(true).play()" class="btn btn-default digit" data-digit="6,M,N,O">6<span>MNO</span></button>
93
+                    <button type="button" onclick="document.getElementById('dtmfTone').cloneNode(true).play()" class="btn btn-default digit" data-digit="7,P,Q,R,S">7<span>PQRS</span></button>
94
+                    <button type="button" onclick="document.getElementById('dtmfTone').cloneNode(true).play()" class="btn btn-default digit" data-digit="8,T,U,V">8<span>TUV</span></button>
95
+                    <button type="button" onclick="document.getElementById('dtmfTone').cloneNode(true).play()" class="btn btn-default digit" data-digit="9,W,X,Y,Z">9<span>WXYZ</span></button>
96
+                    <button type="button" onclick="document.getElementById('dtmfTone').cloneNode(true).play()" class="btn btn-default digit" data-digit="*">*<span>&nbsp;</span></button>
97
+                    <button type="button" onclick="document.getElementById('dtmfTone').cloneNode(true).play()" class="btn btn-default digit" data-digit="0,+">0<span>+</span></button>
98
+                    <button type="button" onclick="document.getElementById('dtmfTone').cloneNode(true).play()" class="btn btn-default digit" data-digit="#">#<span>&nbsp;</span></button>
99
+                    <div class="clearfix">&nbsp;</div>
100
+                    <button id="callButton" class="btn btn-success btn-block btnCall" title="Call">
101
+                        <i class="fa fa-play"></i> Call
102
+                    </button>
103
+                  </div>
104
+                </div>
105
+            </div>
106
+            <div id="selectFromNmbr"><div id="fromNmbrTitle">From</div><select id="fromNumber" title="Choose a number to call from"></select></div>
107
+            <input type="text" name="number" id="numDisplay" class="form-control text-center input-sm" value="" placeholder="Enter the recipient's number" autocomplete="false" title="Recipient" />
108
+            <div class="input-group-btn input-group-btn-sm">
109
+                <button class="btn btn-sm btn-primary dropdown-toggle" id="btnVol" data-toggle="dropdown" title="Volume">
110
+                    <i class="fa fa-fw fa-volume-up"></i>
111
+                </button>
112
+                <div class="dropdown-menu dropdown-menu-right">
113
+                    <input type="range" min="0" max="100" value="100" step="1" id="sldVolume" />
114
+                </div>
115
+            </div>
116
+        </div>
117
+    </div>
118
+
119
+    <div class="well-sip">
120
+        <div id="sip-splash" class="text-muted text-center panel panel-default">
121
+            <div class="panel-body">
122
+                <div class="page-header">
123
+                  <span>
124
+                        <img src="images/sip_trip_phone_logo_large.svg" style="display:block;margin:0px auto;width:80px;height:80px" />
125
+                  </span>
126
+                  <h3>SIP Trip Phone</h3>
127
+                </div>
128
+                <p class="lead">To make a call click on the button in the upper-left corner, enter a phone number and press 'Call'.
129
+                   You can also use your keyboard to enter phone numbers and press 'Enter' to make calls.</p>
130
+            </div>
131
+        </div>
132
+
133
+        <div id="sip-log" class="panel panel-default hide">
134
+            <div class="panel-heading">
135
+                <h4 class="text-muted panel-title">Recent Calls <span class="pull-right" style="cursor:pointer;"><i class="fa fa-trash text-muted sipLogClear" title="Clear log"></i></span></h4>
136
+            </div>
137
+            <div id="sip-logitems" class="list-group">
138
+                <p class="text-muted text-center">No recent calls from this browser.</p>
139
+            </div>
140
+        </div>
141
+    </div>
142
+
143
+    <div class="modal fade" id="mdlError" tabindex="-1" role="dialog" aria-hidden="true" data-backdrop="static" data-keyboard="false">
144
+        <div class="modal-dialog modal-sm">
145
+            <div class="modal-content">
146
+                <div class="modal-header">
147
+                    <h4 class="modal-title">Sip Error</h4>
148
+                </div>
149
+                <div class="modal-body text-center text-danger">
150
+                    <h3><i class="fa fa-3x fa-ban"></i></h3>
151
+                    <p class="lead">Sip registration failed. No calls can be handled.</p>
152
+                </div>
153
+            </div>
154
+        </div>
155
+    </div>
156
+
157
+</div>
158
+
159
+<audio id="ringtone" src="sounds/incoming.ogg" loop></audio>
160
+<audio id="ringbacktone" src="sounds/outgoing.ogg" loop></audio>
161
+<audio id="dtmfTone" src="sounds/dtmf.ogg" preload></audio>
162
+
163
+<video id="audioRemote"></video>
164
+<video id="audioLocal"></video>
165
+
166
+</body>
167
+</html>
0 168
new file mode 100644
... ...
@@ -0,0 +1,1015 @@
1
+/**
2
+ * @copyright 2021 Double Bastion LLC <www.doublebastion.com>
3
+ *
4
+ * @author Double Bastion LLC
5
+ *
6
+ * @license GNU AGPL version 3 or any later version
7
+ *
8
+ * This program is free software; you can redistribute it and/or
9
+ * modify it under the terms of the GNU AFFERO GENERAL PUBLIC LICENSE
10
+ * License as published by the Free Software Foundation; either
11
+ * version 3 of the License, or any later version.
12
+ *
13
+ * This program is distributed in the hope that it will be useful,
14
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16
+ * GNU AFFERO GENERAL PUBLIC LICENSE for more details.
17
+ *
18
+ * You should have received a copy of the GNU Affero General Public
19
+ * License along with this program.  If not, see <http://www.gnu.org/licenses/>.
20
+ *
21
+ *
22
+ *
23
+ * This is a modified version of the original file "app.js".
24
+ *
25
+ * Below is the copyright notice of ctxSip phone (https://github.com/collecttix/ctxSip)
26
+ * which also applies to the original "app.js" file, which was part of ctxSip phone:
27
+ *
28
+ *
29
+ *  The MIT License (MIT)
30
+ *
31
+ *  Copyright (c) 2014 Collecttix
32
+ *
33
+ *  Permission is hereby granted, free of charge, to any person obtaining a copy
34
+ *  of this software and associated documentation files (the "Software"), to deal
35
+ *  in the Software without restriction, including without limitation the rights
36
+ *  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
37
+ *  copies of the Software, and to permit persons to whom the Software is
38
+ *  furnished to do so, subject to the following conditions:
39
+ *
40
+ *  The above copyright notice and this permission notice shall be included in
41
+ *  all copies or substantial portions of the Software.
42
+ *
43
+ *  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
44
+ *  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
45
+ *  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
46
+ *  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
47
+ *  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
48
+ *  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
49
+ *  THE SOFTWARE.
50
+ *
51
+ */
52
+
53
+
54
+/* globals SIP, user, moment, Stopwatch */
55
+
56
+$(document).ready(function() {
57
+
58
+    var ctxSip;
59
+
60
+    // Show system notifications on incoming calls
61
+    function incomingCallNote() {
62
+       var noticeOptions = { body: "New incoming call !!!", icon: "images/sip_trip_phone_logo.svg" }
63
+       var inComingCallNotification = new Notification("SIP Trip Phone incoming call", noticeOptions);
64
+       inComingCallNotification.onclick = function (event) {
65
+         return;
66
+       }
67
+
68
+       if (document.hasFocus()) {
69
+           return;
70
+       } else { setTimeout(incomingCallNote, 8000); }
71
+    }
72
+
73
+    // Change page title on incoming calls
74
+    function changePageTitle() {
75
+        if ($(document).attr("title") == "SIP Trip Phone") { $(document).prop("title", "New call !!!"); } else { $(document).prop("title", "SIP Trip Phone"); }
76
+        if (document.hasFocus()) {
77
+            $(document).prop("title", "SIP Trip Phone");
78
+            return;
79
+        } else { setTimeout(changePageTitle, 460); }
80
+    }
81
+
82
+    var userSIPPass = window.opener.sipUserPasswd;
83
+
84
+    var user = JSON.parse(localStorage.getItem('SIPCreds'));
85
+
86
+    var traceornot = (user.Tracesipmsg == 1)? true : false;
87
+
88
+    // Add the 'available phone numbers' drop-down list
89
+    var stpVoiceNmbrs = user.Voicenumbers;
90
+    var stpVoiceNbOpt = '';
91
+    var stpVoiceNmbrsArr = [];
92
+
93
+    if (stpVoiceNmbrs != '') {
94
+
95
+	stpVoiceNmbrsArr = stpVoiceNmbrs.split(",");
96
+	var stpDefNmbrFdb = user.Defaultvoicenumber;
97
+
98
+	for (var v = 0; v < stpVoiceNmbrsArr.length; v++) {
99
+             stpVoiceNbOpt += '<option value="'+ stpVoiceNmbrsArr[v] +'" class="stpSlctFrmNmbrs">'+ stpVoiceNmbrsArr[v] +'</option>';
100
+	}
101
+    }
102
+    stpVoiceNbOpt += '<option value="'+ user.User +'" class="stpSlctFrmNmbrs">'+ user.User +'</option>';
103
+
104
+    $("#fromNumber").append(stpVoiceNbOpt);
105
+
106
+    if (stpDefNmbrFdb != '' && stpDefNmbrFdb != null) {
107
+        $("#fromNumber").val(stpDefNmbrFdb);
108
+    } else {
109
+        if (stpVoiceNmbrsArr.length > 0) {
110
+            $("#fromNumber").val(stpVoiceNmbrsArr[0]);
111
+        } else { $("#fromNumber").val(user.User); }
112
+    }
113
+
114
+    // Adjust height of text frame and call history list and width of dial pad
115
+    $("#sip-splash").css({ "height" : window.innerHeight - 134 });
116
+    $("#sip-logitems").css({ "height" : window.innerHeight - 174 });
117
+
118
+    $(window).resize(function() {
119
+      $("#sip-splash").css({ "height" : window.innerHeight - 134 });
120
+      $("#sip-logitems").css({ "height" : window.innerHeight - 174 });
121
+    });
122
+
123
+    var calcWidth = parseInt(window.innerWidth - 30) + "px";
124
+    var calcHeight = parseInt(window.innerHeight - 134) + "px";
125
+    $("#sip-dialpad").css({ "width" : calcWidth, "height" : calcHeight });
126
+
127
+    var calcMargin =  parseInt(($("#sip-dialpad").height() - $("#dialpadWrap").height()) / 2)  + "px auto";
128
+    $("#dialpadWrap").css("margin", calcMargin);
129
+
130
+
131
+    if (user.Stun != '') {
132
+        var configComp = {
133
+               password        : userSIPPass,
134
+               displayName     : user.Display,
135
+               uri             : 'sip:'+ user.User +'@'+ user.Realm,
136
+               wsServers       : user.WSServer,
137
+               stunServers     : ["stun:"+ user.Stun],
138
+               traceSip        : traceornot,
139
+               log             : { level : 3 },
140
+               registerExpires : 9999999
141
+            };
142
+    } else {
143
+        var configComp = {
144
+               password        : userSIPPass,
145
+               displayName     : user.Display,
146
+               uri             : 'sip:'+ user.User +'@'+ user.Realm,
147
+               wsServers       : user.WSServer,
148
+               traceSip        : traceornot,
149
+               log             : { level : 3 },
150
+               registerExpires : 9999999
151
+            };
152
+    }
153
+
154
+    ctxSip = {
155
+
156
+        config : configComp,
157
+        ringtone     : document.getElementById('ringtone'),
158
+        ringbacktone : document.getElementById('ringbacktone'),
159
+        // dtmfTone     : document.getElementById('dtmfTone'),
160
+
161
+        Sessions     : [],
162
+        callTimers   : {},
163
+        callActiveID : null,
164
+        callVolume   : 1,
165
+        Stream       : null,
166
+
167
+        /**
168
+         * Parses a SIP uri and returns a formatted phone number.
169
+         *
170
+         * @param  {string} phone number or uri to format
171
+         * @return {string}       formatted number
172
+         */
173
+        formatPhone : function(phone) {
174
+
175
+            var num;
176
+
177
+            if (phone.indexOf('@')) {
178
+                num =  phone.split('@')[0];
179
+            } else {
180
+                num = phone;
181
+            }
182
+
183
+            num = num.toString().replace(/[^0-9]/g, '');
184
+
185
+            if (num.length === 10) {
186
+                return '(' + num.substr(0, 3) + ') ' + num.substr(3, 3) + '-' + num.substr(6,4);
187
+            } else if (num.length === 11) {
188
+                return '(' + num.substr(1, 3) + ') ' + num.substr(4, 3) + '-' + num.substr(7,4);
189
+            } else {
190
+                return num;
191
+            }
192
+        },
193
+
194
+        // Sound methods
195
+        startRingTone : function() {
196
+            try { ctxSip.ringtone.play(); } catch (e) { }
197
+        },
198
+
199
+        stopRingTone : function() {
200
+            try { ctxSip.ringtone.pause(); } catch (e) { }
201
+        },
202
+
203
+        startRingbackTone : function() {
204
+            try { ctxSip.ringbacktone.play(); } catch (e) { }
205
+        },
206
+
207
+        stopRingbackTone : function() {
208
+            try { ctxSip.ringbacktone.pause(); } catch (e) { }
209
+        },
210
+
211
+        // Genereates a random string to ID a call
212
+        getUniqueID : function() {
213
+            return Math.random().toString(36).substr(2, 9);
214
+        },
215
+
216
+
217
+        newSession : function(newSess) {
218
+
219
+            newSess.displayName = newSess.remoteIdentity.displayName || newSess.remoteIdentity.uri.user;
220
+            newSess.ctxid       = ctxSip.getUniqueID();
221
+
222
+            var status;
223
+
224
+            if (newSess.direction === 'incoming') {
225
+                status = "Incoming: "+ newSess.displayName;
226
+                ctxSip.startRingTone();
227
+
228
+                incomingCallNote();
229
+                changePageTitle();
230
+
231
+            } else {
232
+                status = "Trying: "+ newSess.displayName;
233
+                ctxSip.startRingbackTone();
234
+            }
235
+
236
+            ctxSip.logCall(newSess, 'ringing');
237
+
238
+            ctxSip.setCallSessionStatus(status);
239
+
240
+            // EVENT CALLBACKS
241
+
242
+            newSess.on('progress',function(e) {
243
+                if (e.direction === 'outgoing') {
244
+                    ctxSip.setCallSessionStatus('Calling...');
245
+                }
246
+            });
247
+
248
+            newSess.on('connecting',function(e) {
249
+                if (e.direction === 'outgoing') {
250
+                    ctxSip.setCallSessionStatus('Connecting...');
251
+                }
252
+            });
253
+
254
+           newSess.on('accepted',function(e) {
255
+
256
+             // If there is another active call, hold it
257
+             if (ctxSip.callActiveID && ctxSip.callActiveID !== newSess.ctxid) {
258
+                 ctxSip.phoneHoldButtonPressed(ctxSip.callActiveID);
259
+             }
260
+
261
+             ctxSip.stopRingbackTone();
262
+             ctxSip.stopRingTone();
263
+             ctxSip.setCallSessionStatus('Answered');
264
+             ctxSip.logCall(newSess, 'answered');
265
+             ctxSip.callActiveID = newSess.ctxid;
266
+           });
267
+
268
+            newSess.on('hold', function(e) {
269
+                ctxSip.callActiveID = null;
270
+                ctxSip.logCall(newSess, 'holding');
271
+            });
272
+
273
+            newSess.on('unhold', function(e) {
274
+                ctxSip.logCall(newSess, 'resumed');
275
+                ctxSip.callActiveID = newSess.ctxid;
276
+            });
277
+
278
+            newSess.on('muted', function(e) {
279
+                ctxSip.Sessions[newSess.ctxid].isMuted = true;
280
+                ctxSip.setCallSessionStatus("Muted");
281
+            });
282
+
283
+            newSess.on('unmuted', function(e) {
284
+                ctxSip.Sessions[newSess.ctxid].isMuted = false;
285
+                ctxSip.setCallSessionStatus("Answered");
286
+            });
287
+
288
+            newSess.on('cancel', function(e) {
289
+                ctxSip.stopRingTone();
290
+                ctxSip.stopRingbackTone();
291
+                ctxSip.setCallSessionStatus("Canceled");
292
+                if (this.direction === 'outgoing') {
293
+                    ctxSip.callActiveID = null;
294
+                    newSess             = null;
295
+                    ctxSip.logCall(this, 'ended');
296
+                }
297
+            });
298
+
299
+            newSess.on('bye', function(e) {
300
+                ctxSip.stopRingTone();
301
+                ctxSip.stopRingbackTone();
302
+                ctxSip.setCallSessionStatus("");
303
+                ctxSip.logCall(newSess, 'ended');
304
+                ctxSip.callActiveID = null;
305
+                newSess             = null;
306
+            });
307
+
308
+            newSess.on('failed',function(e) {
309
+                ctxSip.stopRingTone();
310
+                ctxSip.stopRingbackTone();
311
+                ctxSip.setCallSessionStatus('Terminated');
312
+            });
313
+
314
+            newSess.on('rejected',function(e) {
315
+                ctxSip.stopRingTone();
316
+                ctxSip.stopRingbackTone();
317
+                ctxSip.setCallSessionStatus('Rejected');
318
+                ctxSip.callActiveID = null;
319
+                ctxSip.logCall(this, 'ended');
320
+                newSess             = null;
321
+            });
322
+
323
+            ctxSip.Sessions[newSess.ctxid] = newSess;
324
+
325
+        },
326
+
327
+        // getUser media request refused or device was not present
328
+        getUserMediaFailure : function(e) {
329
+            window.console.error('getUserMedia failed:', e);
330
+            ctxSip.setError(true, 'Media Error.', 'You must allow access to your microphone.  Check the address bar.', true);
331
+        },
332
+
333
+
334
+        getUserMediaSuccess : function(stream) {
335
+            ctxSip.Stream = stream;
336
+        },
337
+
338
+
339
+        /**
340
+         * sets the ui call status field
341
+         *
342
+         * @param {string} status
343
+         */
344
+        setCallSessionStatus : function(status) {
345
+            $('#txtCallStatus').html(status);
346
+        },
347
+
348
+        /**
349
+         * sets the ui connection status field
350
+         *
351
+         * @param {string} status
352
+         */
353
+        setStatus : function(status) {
354
+            $("#txtRegStatus").html('<i class="fa fa-signal"></i> '+status);
355
+        },
356
+
357
+        /**
358
+         * logs a call to localstorage
359
+         *
360
+         * @param  {object} session
361
+         * @param  {string} status Enum 'ringing', 'answered', 'ended', 'holding', 'resumed'
362
+         */
363
+        logCall : function(session, status) {
364
+
365
+            var log = {
366
+                    clid : session.displayName,
367
+                    uri  : session.remoteIdentity.uri.toString(),
368
+                    id   : session.ctxid,
369
+                    time : new Date().getTime()
370
+                },
371
+                calllog = JSON.parse(localStorage.getItem('sipCalls'));
372
+
373
+            if (!calllog) { calllog = {}; }
374
+
375
+            if (!calllog.hasOwnProperty(session.ctxid)) {
376
+                calllog[log.id] = {
377
+                    id    : log.id,
378
+                    clid  : log.clid,
379
+                    uri   : log.uri,
380
+                    start : log.time,
381
+                    flow  : session.direction
382
+                };
383
+            }
384
+
385
+            if (status === 'ended') {
386
+                calllog[log.id].stop = log.time;
387
+            }
388
+
389
+            if (status === 'ended' && calllog[log.id].status === 'ringing') {
390
+                calllog[log.id].status = 'missed';
391
+            } else {
392
+                calllog[log.id].status = status;
393
+            }
394
+
395
+            localStorage.setItem('sipCalls', JSON.stringify(calllog));
396
+            ctxSip.logShow();
397
+        },
398
+
399
+        /**
400
+         * adds a ui item to the call log
401
+         *
402
+         * @param  {object} item log item
403
+         */
404
+        logItem : function(item) {
405
+
406
+            var callActive = (item.status !== 'ended' && item.status !== 'missed'),
407
+                callLength = (item.status !== 'ended')? '<span id="'+item.id+'"></span>': moment.duration(item.stop - item.start).humanize(),
408
+                callClass  = '',
409
+                callIcon,
410
+                i;
411
+
412
+            switch (item.status) {
413
+                case 'ringing'  :
414
+                    callClass = 'list-group-item-success';
415
+                    callIcon  = 'fa-bell';
416
+                    break;
417
+
418
+                case 'missed'   :
419
+                    callClass = 'list-group-item-danger';
420
+                    if (item.flow === "incoming") { callIcon = 'fa-chevron-left'; }
421
+                    if (item.flow === "outgoing") { callIcon = 'fa-chevron-right'; }
422
+                    break;
423
+
424
+                case 'holding'  :
425
+                    callClass = 'list-group-item-warning';
426
+                    callIcon  = 'fa-pause';
427
+                    break;
428
+
429
+                case 'answered' :
430
+                case 'resumed'  :
431
+                    callClass = 'list-group-item-info';
432
+                    callIcon  = 'fa-phone-square';
433
+                    break;
434
+
435
+                case 'ended'  :
436
+                    if (item.flow === "incoming") { callIcon = 'fa-chevron-left'; }
437
+                    if (item.flow === "outgoing") { callIcon = 'fa-chevron-right'; }
438
+                    break;
439
+            }
440
+
441
+
442
+            i  = '<div class="list-group-item sip-logitem clearfix '+callClass+'" data-uri="'+item.uri+'" data-sessionid="'+item.id+'" title="Double click to call">';
443
+            i += '<div class="clearfix"><div class="pull-left">';
444
+            i += '<i class="fa fa-fw '+callIcon+' fa-fw"></i> <strong>'+ctxSip.formatPhone(item.uri)+'</strong><br><small>'+moment(item.start).format('YYYY/MM/DD HH:mm:ss')+'</small>';
445
+            i += '</div>';
446
+            i += '<div class="pull-right text-right"><em>'+item.clid+'</em><br>' + callLength+'</div></div>';
447
+
448
+            if (callActive) {
449
+                i += '<div class="btn-group btn-group-xs pull-right">';
450
+                if (item.status === 'ringing' && item.flow === 'incoming') {
451
+                    i += '<button class="btn btn-xs btn-success btnCall" title="Call"><i class="fa fa-phone"></i></button>';
452
+                } else {
453
+                    i += '<button class="btn btn-xs btn-primary btnHoldResume" title="Hold"><i class="fa fa-pause"></i></button>';
454
+                    i += '<button class="btn btn-xs btn-info btnTransfer" title="Transfer"><i class="fa fa-random"></i></button>';
455
+                    i += '<button class="btn btn-xs btn-warning btnMute" title="Mute"><i class="fa fa-fw fa-microphone"></i></button>';
456
+                }
457
+                i += '<button class="btn btn-xs btn-danger btnHangUp" title="Hangup"><i class="fa fa-stop"></i></button>';
458
+                i += '</div>';
459
+            }
460
+            i += '</div>';
461
+
462
+            $('#sip-logitems').append(i);
463
+
464
+
465
+            // Start call timer on answer
466
+            if (item.status === 'answered') {
467
+                var tEle = document.getElementById(item.id);
468
+                ctxSip.callTimers[item.id] = new Stopwatch(tEle);
469
+                ctxSip.callTimers[item.id].start();
470
+            }
471
+
472
+            if (callActive && item.status !== 'ringing') {
473
+                ctxSip.callTimers[item.id].start({startTime : item.start});
474
+            }
475
+
476
+            $('#sip-logitems').scrollTop(0);
477
+        },
478
+
479
+        /**
480
+         * updates the call log ui
481
+         */
482
+        logShow : function() {
483
+
484
+            var calllog = JSON.parse(localStorage.getItem('sipCalls')),
485
+            x = [];
486
+
487
+            if (calllog !== null) {
488
+
489
+                $('#sip-splash').addClass('hide');
490
+                $('#sip-log').removeClass('hide');
491
+
492
+                // empty existing logs
493
+                $('#sip-logitems').empty();
494
+
495
+                // JS doesn't guarantee property order so
496
+                // create an array with the start time as
497
+                // the key and sort by that.
498
+
499
+                // Add start time to array
500
+                $.each(calllog, function(k,v) {
501
+                    x.push(v);
502
+                });
503
+
504
+                // sort descending
505
+                x.sort(function(a, b) {
506
+                    return b.start - a.start;
507
+                });
508
+
509
+                $.each(x, function(k, v) {
510
+                    ctxSip.logItem(v);
511
+                });
512
+
513
+            } else {
514
+                $('#sip-splash').removeClass('hide');
515
+                $('#sip-log').addClass('hide');
516
+            }
517
+        },
518
+
519
+        /**
520
+         * removes log items from localstorage and updates the UI
521
+         */
522
+        logClear : function() {
523
+
524
+            localStorage.removeItem('sipCalls');
525
+            ctxSip.logShow();
526
+        },
527
+
528
+        sipCall : function(target) {
529
+
530
+            try {
531
+
532
+	        // Get the name of the SIP provider to send it to Asterisk, so that Asterisk knows what provider
533
+	        // to use for outbound calls, in case multiple phone numbers from different providers are used
534
+	        var callerNumber = $("#fromNumber").val();
535
+
536
+                if (callerNumber.indexOf(":") >= 0) {
537
+	            var shortProv = callerNumber.split(":");
538
+	            var sipProvider = shortProv[0].replace(" ", "");
539
+                    var callFromNumber = shortProv[1].replace(" ", "");
540
+                } else {
541
+	            var sipProvider = 'n/a';
542
+                    var callFromNumber = callerNumber;
543
+                }
544
+
545
+                var s = ctxSip.phone.invite(target, {
546
+                    media : {
547
+                        stream      : ctxSip.Stream,
548
+                        constraints : { audio : true, video : false },
549
+                        render      : { remote: document.getElementById('audioRemote') }
550
+                        // render: { remote: $('#audioRemote').get()[0] }
551
+                        // RTCConstraints : { "optional": [{ 'DtlsSrtpKeyAgreement': 'true'} ]}
552
+                    },
553
+                    extraHeaders    : [ 'X-SipProvider: '+ sipProvider , 'X-CallFromNumber: '+ callFromNumber ]
554
+                });
555
+                s.direction = 'outgoing';
556
+                ctxSip.newSession(s);
557
+
558
+            } catch(e) {
559
+                throw(e);
560
+            }
561
+        },
562
+
563
+        sipTransfer : function(sessionid) {
564
+
565
+                var s  = ctxSip.Sessions[sessionid],
566
+                target = window.prompt('Enter destination number', '');
567
+
568
+                if (target) {
569
+                    ctxSip.setCallSessionStatus('<i>Transfering the call...</i>');
570
+                }
571
+                s.refer(target);
572
+        },
573
+
574
+        sipHangUp : function(sessionid) {
575
+
576
+            var s = ctxSip.Sessions[sessionid];
577
+            // s.terminate();
578
+            if (!s) {
579
+                return;
580
+            } else if (s.startTime) {
581
+                s.bye();
582
+            } else if (s.reject) {
583
+                s.reject();
584
+            } else if (s.cancel) {
585
+                s.cancel();
586
+            }
587
+
588
+        },
589
+
590
+        sipSendDTMF : function(digit) {
591
+
592
+            // try { ctxSip.dtmfTone.play(); } catch(e) { }
593
+
594
+            var a = ctxSip.callActiveID;
595
+            if (a) {
596
+                var s = ctxSip.Sessions[a];
597
+                s.dtmf(digit);
598
+            }
599
+        },
600
+
601
+        phoneCallButtonPressed : function(sessionid) {
602
+
603
+                var s  = ctxSip.Sessions[sessionid];
604
+                var targetinit = $("#numDisplay").val();
605
+
606
+            if (!s) {
607
+
608
+		if (targetinit.trim() !== '') {
609
+		    if (/^[a-zA-Z0-9\+\*\#\@\:\.\-]+$/.test(targetinit) && targetinit.length < 201) {
610
+
611
+                        var target = targetinit;
612
+                        ctxSip.sipCall(target);
613
+
614
+                    } else {
615
+	                alert("The phone number or extension that you have tried to dial is not valid. You can only enter numbers, uppercase and lowercase letters, plus signs (+), asterisks (*), number signs (#), at signs (@), colons (:), periods (.) and hyphens (-) in the 'Recipient' field. Also, the total number of characters cannot exceed 200.");
616
+		    }
617
+                }
618
+
619
+            } else if (s.accept && !s.startTime) {
620
+
621
+                s.accept({
622
+                    media: {
623
+                            stream: ctxSip.Stream,
624
+                            constraints: { audio: true, video: false },
625
+                            render      : { remote: document.getElementById('audioRemote') }
626
+                            // render: { remote: $('#audioRemote').get()[0] }
627
+                            // RTCConstraints : { "optional": [{ 'DtlsSrtpKeyAgreement': 'true'} ]}
628
+                           }
629
+                });
630
+            }
631
+        },
632
+
633
+        phoneMuteButtonPressed : function (sessionid) {
634
+
635
+            var s = ctxSip.Sessions[sessionid];
636
+
637
+            if (!s.isMuted) {
638
+                s.mute();
639
+            } else {
640
+                s.unmute();
641
+            }
642
+        },
643
+
644
+        phoneHoldButtonPressed : function(sessionid) {
645
+
646
+            var s = ctxSip.Sessions[sessionid];
647
+
648
+            if (s.isOnHold().local === true) {
649
+                s.unhold();
650
+            } else {
651
+                s.hold();
652
+            }
653
+        },
654
+
655
+
656
+        setError : function(err, title, msg, closable) {
657
+
658
+            // Show modal if err = true
659
+            if (err === true) {
660
+                $("#mdlError p").html(msg);
661
+                $("#mdlError").modal('show');
662
+
663
+                if (closable) {
664
+                    var b = '<button type="button" class="close" data-dismiss="modal">&times;</button>';
665
+                    $("#mdlError .modal-header").find('button').remove();
666
+                    $("#mdlError .modal-header").prepend(b);
667
+                    $("#mdlError .modal-title").html(title);
668
+                    $("#mdlError").modal({ keyboard : true });
669
+                } else {
670
+                    $("#mdlError .modal-header").find('button').remove();
671
+                    $("#mdlError .modal-title").html(title);
672
+                    $("#mdlError").modal({ keyboard : false });
673
+                }
674
+                $('#numDisplay').prop('disabled', 'disabled');
675
+            } else {
676
+                $('#numDisplay').removeProp('disabled');
677
+                $("#mdlError").modal('hide');
678
+            }
679
+        },
680
+
681
+        /**
682
+         * Tests for a capable browser, return bool, and shows an
683
+         * error modal on fail.
684
+         */
685
+        hasWebRTC : function() {
686
+
687
+            if (navigator.webkitGetUserMedia) {
688
+                return true;
689
+            } else if (navigator.mozGetUserMedia) {
690
+                return true;
691
+            } else if (navigator.getUserMedia) {
692
+                return true;
693
+            } else {
694
+                ctxSip.setError(true, 'Unsupported Browser.', 'Your browser does not support the features required for this phone.');
695
+                window.console.error("WebRTC support not found");
696
+                return false;
697
+            }
698
+        }
699
+    };
700
+
701
+    userSIPPass = '';
702
+    window.opener.sipUserPasswd = '';
703
+
704
+    // Throw an error if the browser can't hack it.
705
+    if (!ctxSip.hasWebRTC()) {
706
+        return true;
707
+    }
708
+
709
+    ctxSip.phone = new SIP.UA(ctxSip.config);
710
+
711
+    ctxSip.phone.on('connected', function(e) {
712
+        ctxSip.setStatus("Connected");
713
+    });
714
+
715
+    ctxSip.phone.on('disconnected', function(e) {
716
+        ctxSip.setStatus("Disconnected");
717
+
718
+        // disable phone
719
+        ctxSip.setError(true, 'Websocket Disconnected.', 'An Error occurred connecting to the websocket.');
720
+
721
+        // remove existing sessions
722
+        $("#sessions > .session").each(function(i, session) {
723
+            ctxSip.removeSession(session, 500);
724
+        });
725
+    });
726
+
727
+    ctxSip.phone.on('registered', function(e) {
728
+
729
+        var closeEditorWarning = function() {
730
+            return 'If you close this window, you will not be able to make or receive calls from your browser.';
731
+        };
732
+
733
+        var closePhone = function() {
734
+            // stop the phone on unload
735
+            localStorage.removeItem('SipTripPhone');
736
+            ctxSip.phone.stop();
737
+        };
738
+
739
+        window.onbeforeunload = closeEditorWarning;
740
+        window.onunload       = closePhone;
741
+
742
+        // This key is set to prevent multiple windows.
743
+        localStorage.setItem('SipTripPhone', 'true');
744
+
745
+        $("#mldError").modal('hide');
746
+        ctxSip.setStatus("Ready");
747
+
748
+        // Get the userMedia and cache the stream
749
+        var audio = document.getElementById('audioRemote');
750
+        var mediaStream = new MediaStream();
751
+        let audioTrack = null;
752
+
753
+        navigator.mediaDevices.getUserMedia({ audio : true, video : false }, ctxSip.getUserMediaSuccess, ctxSip.getUserMediaFailure).then(function(mediaStream) {
754
+
755
+           let audioTracks = mediaStream.getAudioTracks();
756
+           audio.srcObject = mediaStream;
757
+
758
+           if (audioTracks.length) {
759
+               audioTrack = audioTracks[0];
760
+           }
761
+        }).then(function() {
762
+           new Promise(function(resolve) {
763
+               audio.onloadedmetadata = resolve;
764
+           })
765
+        })
766
+
767
+    });
768
+
769
+    ctxSip.phone.on('registrationFailed', function(e) {
770
+        ctxSip.setError(true, 'Registration Error.', 'An error occurred while registering your phone. Please check your settings.');
771
+        ctxSip.setStatus("Error: Registration Failed");
772
+    });
773
+
774
+    ctxSip.phone.on('unregistered', function(e) {
775
+        ctxSip.setError(true, 'Registration Error.', 'An error occurred while registering your phone. Please check your settings.');
776
+        ctxSip.setStatus("Error: Registration Failed");
777
+    });
778
+
779
+    ctxSip.phone.on('invite', function (incomingSession) {
780
+
781
+        var s = incomingSession;
782
+
783
+        s.direction = 'incoming';
784
+        ctxSip.newSession(s);
785
+    });
786
+
787
+    // Auto-focus number input on backspace.
788
+    $('#sipClient').keydown(function(event) {
789
+        if (event.which === 8) {
790
+            $('#numDisplay').focus();
791
+        }
792
+    });
793
+
794
+    $('#numDisplay').keypress(function(e) {
795
+        // Enter pressed? so Dial.
796
+        if (e.which === 13) {
797
+            ctxSip.phoneCallButtonPressed();
798
+        }
799
+    });
800
+
801
+    var clck = 0;
802
+
803
+    $('.digit').click(function(event) {
804
+
805
+     if (event.shiftKey) {
806
+
807
+         clck++;
808
+         event.preventDefault();
809
+         var num = $('#numDisplay').val();
810
+         var dig;
811
+         var diginit = $(this).data('digit').toString().split(',');
812
+         var elct = diginit.length;
813
+
814
+         dig = diginit[clck%elct];
815
+         var numsec = num.slice(0,-1);
816
+         $('#numDisplay').val(numsec+dig);
817
+         ctxSip.sipSendDTMF(dig);
818
+
819
+     } else {
820
+         event.preventDefault();
821
+         var num = $('#numDisplay').val();
822
+         var dig;
823
+         var diginit = $(this).data('digit').toString().split(',');
824
+
825
+         dig = diginit[0];
826
+         clck = 0;
827
+         $('#numDisplay').val(num+dig);
828
+         ctxSip.sipSendDTMF(dig);
829
+       }
830
+
831
+       return false;
832
+
833
+    });
834
+
835
+    $('#phoneUI .dropdown-menu').click(function(e) {
836
+        e.preventDefault();
837
+    });
838
+
839
+    $('#phoneUI').delegate('.btnCall', 'click', function(event) {
840
+        ctxSip.phoneCallButtonPressed();
841
+        // to close the drop-down
842
+        return true;
843
+    });
844
+
845
+    $('.sipLogClear').click(function(event) {
846
+        event.preventDefault();
847
+        ctxSip.logClear();
848
+    });
849
+
850
+    $('#sip-logitems').delegate('.sip-logitem .btnCall', 'click', function(event) {
851
+        var sessionid = $(this).closest('.sip-logitem').data('sessionid');
852
+        ctxSip.phoneCallButtonPressed(sessionid);
853
+        return false;
854
+    });
855
+
856
+    $('#sip-logitems').delegate('.sip-logitem .btnHoldResume', 'click', function(event) {
857
+        var sessionid = $(this).closest('.sip-logitem').data('sessionid');
858
+        ctxSip.phoneHoldButtonPressed(sessionid);
859
+        return false;
860
+    });
861
+
862
+    $('#sip-logitems').delegate('.sip-logitem .btnHangUp', 'click', function(event) {
863
+        var sessionid = $(this).closest('.sip-logitem').data('sessionid');
864
+        ctxSip.sipHangUp(sessionid);
865
+        return false;
866
+    });
867
+
868
+    $('#sip-logitems').delegate('.sip-logitem .btnTransfer', 'click', function(event) {
869
+        var sessionid = $(this).closest('.sip-logitem').data('sessionid');
870
+        ctxSip.sipTransfer(sessionid);
871
+        return false;
872
+    });
873
+
874
+    $('#sip-logitems').delegate('.sip-logitem .btnMute', 'click', function(event) {
875
+        var sessionid = $(this).closest('.sip-logitem').data('sessionid');
876
+        ctxSip.phoneMuteButtonPressed(sessionid);
877
+
878
+        var crtMuteBtn = $(this).closest('.sip-logitem').find('.btnMute');
879
+        if (crtMuteBtn.css("background-color") != "rgb(145, 103, 43)") {
880
+            crtMuteBtn.css("background-color", "rgb(145, 103, 43)");
881
+            crtMuteBtn.prop("title", "Unmute");
882
+        } else {
883
+            crtMuteBtn.css("background-color", "rgb(240, 173, 78)");
884
+            crtMuteBtn.prop("title", "Mute");
885
+        }
886
+
887
+        return false;
888
+    });
889
+
890
+    $('#sip-logitems').delegate('.sip-logitem', 'dblclick', function(event) {
891
+        event.preventDefault();
892
+
893
+        var uricalled = $(this).data('uri');
894
+        var uriproc = uricalled.split(":");
895
+        var uripronb = uriproc[1].split("@");
896
+        var uri = uripronb[0];
897
+        $('#numDisplay').val(uri);
898
+        ctxSip.phoneCallButtonPressed();
899
+    });
900
+
901
+    $('#sldVolume').on('change', function() {
902
+
903
+            var v  = $(this).val() / 100,
904
+            btn    = $('#btnVol'),
905
+            icon   = $('#btnVol').find('i'),
906
+            active = ctxSip.callActiveID;
907
+
908
+        // Set the object and media stream volumes
909
+        if (ctxSip.Sessions[active]) {
910
+            ctxSip.Sessions[active].player.volume = v;
911
+            ctxSip.callVolume                     = v;
912
+        }
913
+
914
+        // Set the others
915
+        $('audio').each(function() {
916
+            $(this).get()[0].volume = v;
917
+        });
918
+
919
+        if (v < 0.1) {
920
+            btn.removeClass(function (index, css) {
921
+                   return (css.match (/(^|\s)btn\S+/g) || []).join(' ');
922
+                })
923
+                .addClass('btn btn-sm btn-danger');
924
+            icon.removeClass().addClass('fa fa-fw fa-volume-off');
925
+        } else if (v < 0.8) {
926
+            btn.removeClass(function (index, css) {
927
+                   return (css.match (/(^|\s)btn\S+/g) || []).join(' ');
928
+               }).addClass('btn btn-sm btn-info');
929
+            icon.removeClass().addClass('fa fa-fw fa-volume-down');
930
+        } else {
931
+            btn.removeClass(function (index, css) {
932
+                   return (css.match (/(^|\s)btn\S+/g) || []).join(' ');
933
+               }).addClass('btn btn-sm btn-primary');
934
+            icon.removeClass().addClass('fa fa-fw fa-volume-up');
935
+        }
936
+        return false;
937
+    });
938
+
939
+    // Hide the spalsh after 3 secs.
940
+    setTimeout(function() {
941
+        ctxSip.logShow();
942
+    }, 3000);
943
+
944
+
945
+    /**
946
+     * Stopwatch object used for call timers
947
+     *
948
+     * @param {dom element} elem
949
+     * @param {[object]} options
950
+     */
951
+    var Stopwatch = function(elem, options) {
952
+
953
+        // Private functions
954
+        function createTimer() {
955
+            return document.createElement("span");
956
+        }
957
+
958
+        var timer = createTimer(),
959
+            offset,
960
+            clock,
961
+            interval;
962
+
963
+        // Default options
964
+        options           = options || {};
965
+        options.delay     = options.delay || 1000;
966
+        options.startTime = options.startTime || Date.now();
967
+
968
+        // Append elements
969
+        elem.appendChild(timer);
970
+
971
+        function start() {
972
+            if (!interval) {
973
+                offset   = options.startTime;
974
+                interval = setInterval(update, options.delay);
975
+            }
976
+        }
977
+
978
+        function stop() {
979
+            if (interval) {
980
+                clearInterval(interval);
981
+                interval = null;
982
+            }
983
+        }
984
+
985
+        function reset() {
986
+            clock = 0;
987
+            render();
988
+        }
989
+
990
+        function update() {
991
+            clock += delta();
992
+            render();
993
+        }
994
+
995
+        function render() {
996
+            timer.innerHTML = moment(clock).format('mm:ss');
997
+        }
998
+
999
+        function delta() {
1000
+            var now = Date.now(),
1001
+                d   = now - offset;
1002
+
1003
+            offset = now;
1004
+            return d;
1005
+        }
1006
+
1007
+        // Initialize
1008
+        reset();
1009
+
1010
+        // Public API
1011
+        this.start = start; //function() { start; }
1012
+        this.stop  = stop; //function() { stop; }
1013
+    };
1014
+
1015
+});