devicely 2.0.6 → 2.0.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. package/bin/devicely.js +1 -1
  2. package/lib/androidDeviceDetection.js +1 -1
  3. package/lib/appMappings.js +1 -1
  4. package/lib/deviceDetection.js +1 -1
  5. package/lib/devices.js +1 -1
  6. package/lib/doctor.js +1 -1
  7. package/lib/executor.js +1 -1
  8. package/lib/frontend/static/js/main.96600727.js +1 -1
  9. package/lib/logger.js +1 -1
  10. package/lib/server.js +1 -1
  11. package/package.json +1 -1
  12. package/scripts/shell/android_device_control.sh +49 -0
  13. package/scripts/shell/connect_android_usb_multi_final.sh +49 -0
  14. package/scripts/shell/connect_android_wireless.sh +49 -0
  15. package/scripts/shell/connect_android_wireless_multi_final.sh +49 -0
  16. package/scripts/shell/connect_ios_usb_multi_final.sh +49 -0
  17. package/scripts/shell/connect_ios_wireless_multi_final.sh +49 -0
  18. package/scripts/shell/create_production_scripts.sh +49 -0
  19. package/scripts/shell/install_uiautomator2.sh +49 -0
  20. package/scripts/shell/ios_device_control.sh +49 -0
  21. package/scripts/shell/organize_project.sh +49 -0
  22. package/scripts/shell/pre-publish-check.sh +49 -0
  23. package/scripts/shell/publish-to-npm.sh +49 -0
  24. package/scripts/shell/publish.sh +49 -0
  25. package/scripts/shell/setup.sh +49 -0
  26. package/scripts/shell/start.sh +49 -0
  27. package/scripts/shell/sync-to-npm-package-final.sh +49 -0
  28. package/scripts/shell/sync-to-npm-package.sh +49 -0
  29. package/scripts/shell/test-local-package.sh +49 -0
  30. package/scripts/shell/verify-shell-protection.sh +49 -0
  31. package/scripts/shell/android_device_control +0 -0
  32. package/scripts/shell/connect_android_usb +0 -0
  33. package/scripts/shell/connect_android_usb_multi_final +0 -0
  34. package/scripts/shell/connect_android_wireless +0 -0
  35. package/scripts/shell/connect_android_wireless_multi_final +0 -0
  36. package/scripts/shell/connect_ios_usb +0 -0
  37. package/scripts/shell/connect_ios_usb_multi_final +0 -0
  38. package/scripts/shell/connect_ios_wireless_multi_final +0 -0
  39. package/scripts/shell/create_production_scripts +0 -0
  40. package/scripts/shell/diagnose_wireless_ios +0 -0
  41. package/scripts/shell/find_element_coordinates +0 -0
  42. package/scripts/shell/find_wda +0 -0
  43. package/scripts/shell/install_uiautomator2 +0 -0
  44. package/scripts/shell/ios_device_control +0 -0
  45. package/scripts/shell/organize_project +0 -0
  46. package/scripts/shell/pre-publish-check +0 -0
  47. package/scripts/shell/publish +0 -0
  48. package/scripts/shell/publish-to-npm +0 -0
  49. package/scripts/shell/setup +0 -0
  50. package/scripts/shell/setup_android +0 -0
  51. package/scripts/shell/start +0 -0
  52. package/scripts/shell/sync-to-npm-package-final +0 -0
  53. package/scripts/shell/test_android_locators +0 -0
  54. package/scripts/shell/test_connect +0 -0
  55. package/scripts/shell/test_device_detection +0 -0
  56. package/scripts/shell/test_fixes +0 -0
  57. package/scripts/shell/test_getlocators_fix +0 -0
  58. package/scripts/shell/test_recording_feature +0 -0
  59. package/scripts/shell/verify-shell-protection +0 -0
  60. package/scripts/shell/verify_distribution +0 -0
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "devicely",
3
- "version": "2.0.6",
3
+ "version": "2.0.8",
4
4
  "description": "Devicely - One Command, All Devices. AI Powered Mobile Automation for iOS and Android",
5
5
  "main": "lib/index.js",
6
6
  "bin": {
@@ -0,0 +1,49 @@
1
+ #!/bin/bash
2
+ # Protected Shell Script - Devicely
3
+ # This script is encrypted for code protection
4
+
5
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
6
+ NODE_BIN="node"
7
+
8
+ # Check if node is available
9
+ if ! command -v node &> /dev/null; then
10
+ echo "Error: Node.js is required to run Devicely"
11
+ exit 1
12
+ fi
13
+
14
+ # Decrypt and execute
15
+ $NODE_BIN -e "
16
+ const crypto = require('crypto');
17
+ const pkg = require('$SCRIPT_DIR/../../package.json');
18
+
19
+ function generateKey() {
20
+ return crypto.createHash('sha256').update(pkg.name + pkg.version).digest();
21
+ }
22
+
23
+ function decrypt(iv, content) {
24
+ const key = generateKey();
25
+ const decipher = crypto.createDecipheriv('aes-256-cbc', key, Buffer.from(iv, 'hex'));
26
+ let decrypted = decipher.update(content, 'hex', 'utf8');
27
+ decrypted += decipher.final('utf8');
28
+ return decrypted;
29
+ }
30
+
31
+ const encrypted = {
32
+ iv: '24ea15be19043954bac2aaab7a120d58',
33
+ content: '4afbe56ea2c33fa17312aae22e0e232995ffa6f2f8329b23417ca43a2cbce57645e6e367740fcee541e9f850c46b1ac30222a0efd3ca9d983df349d04aa239344b0e28491ffc2e7881c7a38fc90a5ee7f2fff535c7f7a7bc951a8bcf9216969999dbe3dedb2ae48c1dcc422d91d4f4fe44a5e5d41632c2a1932f3447b87765d81b5ba4e0d49fb788bf597c529683ea4b2fefead9d9d96172ab11d1ad92a31c356d379f4b07b8472174bfcb171c7bb92d1217063b92f0d10d814fa9569acfdf983468737a31007f09f501b383ec9b223ec725cdda30f4c1715dd9cf5acc6ec81f93ac104567bf013c0916fab11703b83cac557fb4403e9ac7486061989e49a952e27b094aa00f0699332eb90a1eece17b383d2eea87e3dfc0d24c5ca9d72d3a96315707d90b56477f4e774589acb457ffe5730f8b9db34ab1d86779339c6cfb2054565c375c5ce76a4279fd6831ba31d58685fef93e95ce815b4e03775d683811043a16c9cbc733077fedc8ee4c6e30b296cbf00f6a858e2357e46944af47d51a712d7906e96c9637e4257e5d38e30afb3fc0e11d0044f8e7f66bfca90facd1fedab667723e4abe2edf24676f26226824fdc41260fad0268e811c353d336a4a0fcd2b39a83dd188262e264a6f7307adf1ab3c507836307a79d924b56de988a821c92580ed4143cd1fb546327bef34163a7665b117cd09c134ab89d4b468133d5838c0d2eec0dd65cf5c6ef22d7c0c207b9ffb6d1ef72767537482e510ec4d1d6c963e4dc383459cd60ede24acab4b485785f49d36bb6d013a7f423962b208d0a0f7dba46604a361062ec7b4bc62d8b60bf8fa84cb5ab157513dd3a6f5435ee2bd80c327eb825e3cbe93275a2998c3ebaa5e267509ec49f483aea2066e2c5205290d7d28c082f196e2bb6549762fac4156a7b59d044dacb45fc21b7d7221ee7b91377ff46b2abcef80582dd4357ecf7e4f9dad71ef4a472b976637ac33b9b96faa88e009e193ecb0656b7c4ac4752da4d54db11b2a4d09085847f6b9b94f706377fbf465da65dc4d26b5bc17746f4327a5218a7fac641e884a0de2f3ce89745901ab644a7202efab6065d5f9190ae8931d010e47b0f06e82a6a2c6f45d6b66149ce2bc5f3490580c8c6414df8a7725b225b51eee50165b7e80fa5796accd43cb85ef8a6bd3b0f3c29903e9e5ca41cd0f5e9543ce354a814c1e31eb8f22efad35c46b7517c52aedac8f26c60ee5657fdda5746ac37601897c78f9b46eae8fb61968bbb62f28522ceff458f1fdb916d21b3a5746e911f8f276802766143a8e958b351dc04b04cdddcf60e193f60e5196a6d7c79a8e303e6dc60b85c216bdecceb25d6593745400a38f70211d4004c8f997a75fc5590c0edfedaefb3b3652ccd62709582803bc4f6d27623ef2ed06190fc78ec6f024ef5a44901babed004e36de83f4042b77c6b9c1c270b85afb3e1ac998f03f6b16fb18ed6541069e1bb1155cae7e6c8b941473c35b81add8f9e7be0941ccdd47ff5336cc2b42be6d123281b2ecfdf5d53bb16ac727521f7bec5bc11af70de5dfafc9c91993a5d649c440e35dd275d34fce70ffc4ba862a33af29bc21048e2a833fe0b9f038b4f7efcdf35ce436cd00b1e1151f967ad6641dcb4c1b7f09e9b0b6e2b5853b7a987888136cf4351b744e80e1c39aff6ad3eb3248a94dc51fff1167416ce868ee8099eba87c73e37883b19ba45ed4d0fd811d911266c1de9cd2bcf1cf1cbc0a58dfaeb06a136b05d09180da067d6e6bdb4290b43d4f871cec2c627ed9c9616a89add9aba8bbaa870e1ff3f4830944a825ca6ab973366e2e9330ee7fb943235a7be91b3fd04f917a4a8c0bfc619297deccf3f779af269a03355b5883b48a9910c0161c4b29fb36497dc8ee7ba26869d86b567e3eb9f1a3ba4bc0574c60c6ffaeb9c6ed4bccd13befcb6548f39e8db2b72037a817188a15544ee5368ed0f0478c20d4972b11ff1ab256da47186d850674ce8396f5c4fb9c7db34ed0e6ce8b7b5f819f962b10368619a56230eb005d7285195218f7bd7898dcd214d7590bfa370d70162a88211fbd2c6aea91f2acf0cf33a617ae3783a06783fe71643ea81604e773207c8465bf6da110b25828d029cd3c3fe99ddea9e769bddb88fa83b6e48018b4aaf6e2a4e66a734b02f53a6b11a73ab76b9fee4dde37f24d7d69536b506bc68093f75eb934452ddd1a526a9fa10608893be2a730891fed2e772092f2924d18d400c170b3b7c3d0e62987e3e03920b065416b31001ada2f134a4f0977b0ba892d8646f191cad3d70d56a1903282ac97a495ebe94ed8f68e8dc9f0fb48017905dbc34308620c948272226b0e24cc24e78a1eccbecd65a39fd92cfffdd6a0d5ed5414b777cea71c35f21e91e43ca918f87806cfa3650b12187b47129cc729bca0c8087259e67c76d310040997ef4a0ab4c32533881592d97bc70b62d2c8c16fc31a5f52239af2f0b9fca03a51d188e33058e20cccd9859bbf6a2860225592d90f1358e4d835bd96d1a18b8b2ae11984550cd4871e7263095a107bbb1f9590402991a9eef6e9c0b4ed9bbad94ac248077b8dbc4afe400ca3d78893c7280d1ff04687efa29cf27508795e2ec24142b6c2c708c42ce6d6963e6ed2271b8d51d151e45770ee48e5d4229a8c2ccdc01bf92575f7cccdc4642e59640916df9271c6e28a342bbed82d506d4d005bbe83702c402eb1e389205a0f8036ffef595e4b763eb2465888bc762f214ca0582574354311bccedfccf741984724fd0e01cd4f498145de0df10b1936a422e8bfeb0bbb232cacf60b8705d7e46b48e5edd24b557caf3dfcd38c5271ff366ebf9d82480721a828746d3a95e8fdcb3e754992b814ced3b265faa742ddda9d9b1e95115a567d8b299d8a0923cb3ae545d5e51e326d863009ee23b883c75870d8ebbcc3bcf31a3413da6c43e22f8a85d4a0f9534550b1c95a3d9fd6ffb609a7732f40c61132a4a9cf2739571bf3a3e58741b64af2a55495c40dc6635b415c2649f9fe71460758f97476eb1e9b53dc855f8875107a7c1582bb5d858581cc4db9e77353b20aa7ff34a1ad1a99aa0c4f9e96254566918e87e4a771722cb584a6754c7d58cafc807596af371e97438747530bc1ad24976174b51facd0e986213d519c627ecb7db5a81fce18862ea92c87143c1abc8d2093cf923a69a952624c6cc8d6c377058b63034df10ad8dd1274a0be9b88a89068486ec94ccebd0321cc3fad388e7fa6d00862ea66fad2c5ff47fd40c47191f7c15e3523953161e92fd05ec5746ef72ba82122f8b23bfd63d17a2b4ced5a61c2c39ddd4ce1340313904bf4f256744dd22720d33c5a59538d1d900717c2b5d60a95b7d75cd6af962a5450410925befd3559e142ae61a989bafabf850823c053ef1c0cfc23f3c146b645e7e731b9e449ba54cda63e248106f719427ad4e533718c96005725078712af60ed7a3270700d571b24f0be0e896682fc03c8818b859bedc4fd4d75c518ff50224f4e53f50f2bb490078529cce62428ed1ce4257b381ac6b675e545966ac26257488e55830a05a55b4980cf5b2a5330420612638677ed8dd4678e20b7361f4780069271d742bb961b94c6bc6059fc02045c636f17114704b52ae17429d2466efa52529361edf9176f14243068ebb52392ecde769aa31f4ebe47c760c3b309264d41d3bb3de1cf934a655811c862f458601c9c404c688397b3ad46443676cd3822213f94f691e0034e895709123d57dd3f9f749c5127ebc0a779f4e01c0e0c452c48951da92e14bed99e5c943a86781b38399519482016b05f49ca1cce2da2ec7581c0c41acf60d52dda9b39f72eb0c745b67674e72508cc673149f4f795d42f053f93627332fd2deebf155d1c947113db4d98e6a9391b023ecefcccdeca26fde72ef6b768e08225f321116267f735c0ad9914e078ebad6f69f2c5b1387f4e6fb8398e1e401c0f378faf3b072672fdf0fae2e9de8a516b2b4c25316cd89a5b315c4304d2318cb7ebe40636bf4fdda480ce83900db342092afc5e9ebb7a28fa849f27e5d9b9a80bdfb26387caea6b2e10e884b1f6aad8e1facaa66c0614a14258ef8ec85a2e70209e27cf2e775a0e1c4d6fb0f3710b2f4542dac1e67d74b9b8bd4df5a6ff435f2d03001e5f682107797bfb65256d837552c01bdfb6db78a093109c3c8bd808c2af6a1165fd46ed8365a8e7cc1b7c97314ebcdb690f241cc9876cfebdcdf47f743f43a282da2ab3b4c658c89899effcc6b780a453d3222eee705d4b775910c22b79cb43a6a15f53bf537802150e7e3c01f7b2f8f065deab2318d171ff83c9c42bd10d870d5901a9d9a1978d82689d8304e9dc08a08c28004c4fbc8644e0c09a8a6eec387c9143ebc0dd2a54eb84064cb355200e36afb1178f9fcef64f2db4e48570443346b99b7e05afe45d0607c359a4d5d99cddbde6f7b8164b52969a62a249e460f02f39ef5f2ec9f4d89f029c4f292b2bcdb72b44cccf7e761ace4a201b99abda61d20765cf7b1d97eb4e9c0e26c3e14ddb2ec504fd8b7f2869c062f0930cd5f093cdf1ff87f431ec89591c52e9904697fd1c2bb4303f1dcc9f5674cb10f899302c779d816a74577d2e606205b64d5d9a3f558a575b6f5aa1378328c656f9393958656d5f5d5170169a9eead251718d40fac172cddaa6cdce08ea05f7114ed151f69118820975a1dbf3c936578fa3fc45d436abe473c74c900e82553e7287bc115ff97d4cf0c1c2cc31417def238006b5ad1895440d35e66a4c1ac9c9fd63c839698f8a7110013d52894258ec92091b6cf9cd480785fe6ca141216e03ada5a23fc8675643bcf9c4cea3f6121222bf73ef48a0c6fd2cdd1204e944c8afe341a65485248de7c3777cc19bab904fd6a607f3d9034af8c08a4a6982bedd447d92d1fc4272ec70e8f4045b56e8882c3438207e4e6af726e950aef0b0887fa3f071c7c0ce22fe082f2c61849a4da34a3eb3f6d33f72984407f4f4b4dbd15b9c7bd9e25d22b0b7445dbd72dc8cac4daf610846a2673b0918321e990e4cf13478a9fe00914223cfa011336f05aa05e5f3fbc5e5cd9af67e02124a2a0a00d7644f2d8f5a2e248daa0ec2057174201f3181089c5dcb7f40d539b6b605b31cbc62989c6095a2282f4be1094c0a3991e1143f6aa788ad07a52d0bec8c703de4f59a02803b0d58b233e0113f64053f51a3a3b79d7f7b327feb7e8983cc46dce148aedd1823fdd0bd8cde111357bce3a773e141f20ed378c1d468b976057262a9048ee5bf4dd4a78bd0f4d32b46b4b834f887c5f2bc803b77430b693efed815d652461acb6afc664006bd22df747caef8fff42d4de1013f9895e117137f673ac1e0ad3e1fdc825cd361052634da48ffe6f001853868200be600d0ea0eb918828c0ea4717a7e6d11f2bae7011ccdb07192b4060fbe37722e8f0ab519b3047df4a35bd787e9bc0aea3ffc4960f3e1fc9da3f63f6bcda5d0722cabe67747066a3298ea2aa8ce90a2e664eba1eef441e027758e8e5032e496eb89f0d12873345ec175cbc0da61ffe1ee0d9562a942f09518e17d5eec6a8e1c7eca18246516a86cabef7f34cacc8954ab7c755f0cd4171def6bd98fcff695589ccd9ba4e45b62aefbffb665cce999b86d1dfcaff3d27a74defb31f55bb0a20436729740c0789ebda1b364bc142fbfe86be85bf0b04914bb732b582c6508a18071c272811c83ff0f7ab8f30ec407716fe026eb31252187308f9f12ed0e0c28fd3b66a6800a57d746f80fc29883484d05ae223798b7c5e755f95a41e784924e42b242556d5de24e2f25af070e5e2aa269025834154160e821e8d19a25da6808a4c44e1570b1c8c95d845e3fbd051049d23e3484ee978c488b7d4a16d26e23941b5978be9fa2dcbf0c760edf8f34824df2d4fbdeafe886d4daed83574ecb08934cfd28d5529d8e52c3ffb866082f0d5c041458f40b6bfc446d429ae16c33e9ea12359e63af2bf1e384cd63513b540a6bb884ba40a0408925bb23f3363ef2a9ca62aa7abc51d825f8005b3a23123faca7848ccfc88276761001552523e0f4b358e1cc67e5214de4dbcf744f0bbf6057139dbb1668bb2df5999d531bfbf617928623aae189517897128166b47661844f3973c0a6ec4eb6183069e2911baee5aef4b85e91550c811eda69594e521d5b4f4efaed259fd1487ca12dd0518ed9c36e8cd07e9c392487fe8caeab709282d4aab655e6dd62925dc42553e94b2810c4e6f9b8eec71393fc692a50f383aa13e1b5dada52c3332ab7c31577ef9baf9e63d89a368a660ab19f7d2b44a8c5e9bd86f3fc4552b9552a7162d07c70c405601449f1e40b3f5ea6587ceb003d2efaf4f0434f0b0899bde1ca139f8c216f594b5c29971718dc752e0657398dc36b653d485aa238097617cd5a80b337495c4a643e18bd380e4d22a1d96351d6f74e51b9382247cf743e6034bbccfe471d3de209503926fc272b379b6e931d111448e8e137620ced39590b6f54b520b96b52ac0dab06cd2e5706b4f2473ea97bb23682a3801c852ab0d8168f46e409e6003049636c8dc5496c054c64f86d209251de52a39dd599c36ead81044d203a98a5fc8443169ca57447ec994cc64f533e5915ffab3494775a4f32956dd271f7d460bd72193ee9c32978b187ff929b239603e40ac6406a64d581f240ac101dbebfa1d88a659dfdf28380b5ddcbfd605f8433c67b40c37a83a5281160a96c00749cce8d11e6cdfb9a4228740d434acbdcc66378e22dae07066c4a91caefd0c2b6a2381508421eab31c2da8e6f78a36f5b9514c89791b59bb664828436365b83bc6fa04026306d80d50bb4b82403c83619f42465a91f7d54952874af275df9153e110eaf84ad451be29ed7c0d70772a61efa6247afe843c786b503e03de22e342907ca9849b1798057d98f89db1e127b1962fce6ed9a7b1c57467b281db30b3981d0af0b0aa0e712da4bd32dbf666c783b1c1d283ede3187a44e2cac0b37c7eaf239ab07db71d8e50d77ebe08f536df0cb387aa285a64b4ee7d32e8c36b6212f0275a842d4c02e44debaeaf53a9236b1fde107696b8b29172db2c4965c7dc9f082388f63d705e29086f6f39c47a85d683cb4343182cc8305ab026a8d3af8c070aa47eb2d4462d034117fa13118d392543d1424d86c636e81bbdbaa9c397ce17e33498dfde6b6f694456e2d5a5c06888d91a953b439405af97d6f684290e9bf5e5c36c146f5c03ff78f70c39ffa7fa1861aa27aab0115ee06770c9eb44093d78c11d5af3a15135a955b3059dfe56af337dfb66a6dd345e06081db976227d2055f3c2a8776c7eef3b76613a87c60baa0b3c98826bfb725fee417bccc8d5b791088d88f57a3629d00968d324211003377cf7d1d5eadc3887644137d858c9824d5e99e8f9e534ed23637e9d65095fa4b65b3bbd10c67b676fb8ff8135705d221f0b567d83cca341cf35333288a634063a203226c361ef1c9f583d75ceeda8f49427ac6794f59632626a439dc8202ddb80f25a8584a905126b02decc9d52a3dc1a06fab788e5195245422b890cce8209c9e18371d7e547e65eb7addc7322e2dd49f7fcfe7f40af5b25610a403503e1382411c56ec502d87347a55241ca497b81062677b374bd8124a3f94beabdeb94eec553e306ecdb5e66a0890d3c94483d9eafa7ac9225528dec0834782ac82842e1cf7eb7f4b452e4296f004f308768246b4eb6c11b247921d78071ef7ffd0dfc23511a483f44c03c8186a3cf6155060521d58f48bb4b69c974f343b3ebda1fe265d7fa12977f907cf0bc8d18e256aff08bf86805821a3d29d3a5fe76cc9ed04c28be966f12b5950b22a7e35836334e0e389b5dc3d9368ee4120cf156526bc76c2ad7585cdb8ca0cf3d78aa658b0fc934cb38ac08d9974e1d60e6e9d8fd86af48138df8dfa7dc88baf82cbc2c47e554a198b952521ec5db2d2c2d4538901049ef10bdef27448a4396056e7aefb9eba6918e4aa416254dee5551c5ba7b25ebc1391ae73ae8209a615f99564cb97eace58a964f412f01fd3438cd8f962efbf01adca01ddf4cc3fcca5b05b576d86bd215e1be1335a11423444699d833312ad3aa7455450f60be646cedbf583545ee3d118eac55b5c73adbded31dcba1ab9ca7897001c3611b89ae97d1fef6ee7ef79f539184aa8baa6875177c5d991c84d13e87f4f5bb237a1c96863149e4b070f1425e3a81ca100a42ca4487d1ca233e0e3393dae34af06a378bc838117c22203e9387166b5087b749c58c0b0e646f49f9194561d84c95553d9e161f3b2860c097fb51e5aba66b0d24cb27efc2a7b8e645fefd24df1e8b5b5f4663918e22542cbb6213b40bbd4793b18f27e1018af2ceaa12a88cdfc17cbe4020e4cea9b940e1d2a30980f4814f737d0de9a0e338d9f466a782c8b87839c5d13acf49f352d8c61798572b41d7e116a4c20f40fd40c7593e9bcfbc392b23c2cdbcb3b10bbe1ee7e0e981a8339fd68ddd259fa3e552a7d47ae28841aad02bdd1a80a57c7d3996c68a3e9a841bd868df9514da502dea1e66479b9987682ab54ff712d3d68694d632743e42c6b60f5de638ca09e788f0917d65a784ed1db684e6fb38fabcfda10de18de3e99476437c0140007ffc89b3d5b4b37aa140336c89573229286977e472dd0fb37e259dbfa84441f22c0ea1ff5a6a1f9494aeed04302bdaa070f15ac1e21e9e29bb1d68e8dfdce6acd9a8c6116983ec114137308ebe694ecc5822f64788665ffe52724408b4e48f2e33136d0f38f5207bbf7f7da21d03a1e92875c442e992472d7565093f927873118bb5e32a8efe611b9c06c3467d8143ec3537377f9b454304f177beec55a3cf005d11534f541481ae54988c6808a7e5fb99b3aa9c571045126dcb3c36979191d104bad50df007ecb01bb974012e17d0292cdf2174c884679b61ceb1962edc9459a97e730202c940f522e885227a2624a19230a32f3ec40bfc7b9f0335adf8ecbba5d9fabe9b3e83752c42d7543028cd828a2db5750ef4a58fc0b640130f8c4a237e11f62fc0fed8ea6e91cd51cd01554da018e93438a30cf1213f477a8e2a8090a1ec1add82e77ef583186052d9c25043b916a0564fff7c97007fe307958fe701a179e8aae9cbe59a713776c6c8151e526aed1c264ecd950637e983f3943222e3928d037a1f7a9637ef0765b2f8a3229de3765467a603be77bd1e3219392b530c47d9705bfe8fd7eab405127987de3aed885baf16833973319b92d342246bcdf5cd28793434e7df41ec04623adfa5bb66b3181ea21619b1a3b458c193aa049d72714fbd6ebe95ebf66dbee97b5cd54c385dab1b2e14f6bd8165170bcd99abdc35cd47fddcb9d47599a613cf31ab6aa5f0cb183c461967d2d672445a98d8b197f3924ce91f38ad7718ebe73b6dbb1c4b20a66b9665d6246e52c26c48f770488e68904ff83e87eca0d080e72c6eb96ea35f90d5e0170143eaa2a8063da9f189c6a3bb6336df4d41d92c8a1073322e472d7a35e5cd9581a7caa646cc9f9fd149c91397927247f28287e463720ea0480cb0acf0541064adddece0dca451c7746dbce3f7e91ba38f689312051118fb9f62372dc973ad464fda76976384f3ab82f9bda40a4f93e0e72ec2af68fe50166b7d15b24d96bbf3bdc66948bee6d7cd129f98d44ecbb0bbf1de895ce1b19debea474ec228a6139df3a6962164b25961d08e468f140c96b7e17cea5819d10dc6ff2b91980f6f49e74b9d600569ab682b87676d9e7ee0040300cd08db937894f4d3fd1f559fc9afc7ab889c59ee1ab00f35dcf9ed2915a6ac9dcedb19447924c8483e1fc5b3618c293e3af7a5fb5556e9117a587d8b781ac31d33e5e0a5f8a46b89420a84505da82eb2c2e3f7256eb16b393329b64fd870475c9a80956c4925ca40dff76fae6efb30ec3c388c78435a2e9318cbb173b1a75f8f30b6df57a6d7fba94f7e6c344f2b69261fbeb1e10959d28a13437b22b8750c1281c948089e31c8424a3e2b6196d80f2165ab73de0ae7b6fd4ef3e19c625cff85d4c5765e9ab32d769ebd3ad44069b7cf35fd4e8c11264c2e2973290f799ae25fc9b10bd8ac93d156bcfc979465f1e9e0b0501e1acef062b1c37c0f6ab67ecf9328b5f285a9fd7c438148e2981970d72f14adef4c0e7cba0276458267adeffb8c4a7d234dda9e5de38f718043ba30d99ce438b2d84c7338d36424349cd8de2ec774ff5736d0403481205d69906ea184fadff695a69e551e7b6eaa2ba4b2c743028e64c9fe845abbd2eb1795d91ffe11aaad3308a24304ae297b84d03b4957f6bec5168dfd729dbea06ef35ecc7f264ddbf5473b0adaa2316687ec5e0860569bf446e8b38587066e35ad2fe5e0e0231f11a22b6d3ad3c4a2e64b3297141355080c1dbd5c62a1dc103601389e1fddb4d42d873e110b3c3007dea5efd29ab600411349f4248323f8d5626fcbc6d2e1e66215197a42cbfed97520c4ebe46d0b005237399d4f4acff932b197b989dbd3ff7507f0a8f9937e9b1d8e67244654a80fce6ee15abaeef7ea193152a899971fd024fb8f491d2eff25d48a65232023ed0d55c40727762f0929ded30ac80d515a6232307e0f797047e380b1fd668ad4d1ebb09a9ceaf26d42d4bde3618daaaae99de79a7b4696d1ca9562f3603570fa784454b110b405482eb73e21345119decc21a16f97dd1299fc95fb4d499ccc1be94d1716c55245bd1e0951b3e0ed60ac2abd043020338e8ee8f92c39bd21b9d8c4b40e2382a64d6776e0681f2cb0c11ccf9c392f8707387a0b17dce51b661c0bc6ec61bc3717409c9d2d1f7b8da3fc07d5665f46e3ddded213527dc8900f58d2d7e1b55669f5e30702a117deb582a15b3fa691455fa1bf7818509073d8d7210ddf25f4feee2aed732ae9d67d006c2a7cf6faedd3c1eb9dd5fb469ed813f441311efa717e2b1eab5fde00d229692acb277666cfd218747352adaa0846235c238a7fa929af5412113533f7d26c069c5b1a59fa7584867148e18226342e5cda8b9e8a207b7174c576aa439c3c477ea3f98cb12150058d833a6be198b0d12e94c101a8b58613f265034c177dcc72df324d5cbe9f1472ebecf7109585f3ae3da1b949074b495c4c0b1e7a70f0b3b1cc7c8d474d1fb51eb55e935ffacb76800eacf2a08ae67e82ec6d4808f91ee009c8f7a0343459875bad91b0bd964038db9a9e45977b8c11e40e1cc8781fa3426c9eb172dd61ac22b884e13a6f2ecf89830f7d10f2382b0b2f5ac21b6e787cb15113b1d8ff65fb617870e89b3be667f200911ab770d0e3fa1661394b00ad8241ba9229e1f3904f65c4f8105e4f9426439f83551a12d03a06293bc4291dc9fd5e3603dce10cdd449ae3407744191a3ff77d21fdfe6b5c661b3ae964136642c09b3265f9e9e66338ce75710233fcd310950e68a6b8d80476463aea81b4c560563498b307672f77f4e436415fa857d1daba7f8f557803b771b5ddbaf1016216d26bd7ea275c60ce6d26738d89a4f7621f7c5e797703203b9802c41c9e33b7524621630af90667729ad556b51464314ebba7ec646afbf53d5c311cf399477d895ee19ef22cbaeaf51b6e42d602395d6ab9b384622475a62e2ecf04a1be99acfaf8347961bceee8354cf29dc78fe745782709a0d270e3bd71bc44ee00fc87bf9ea8ee1e5f155d4d6811c19393e0f1d27ffd4bc19a9dc06e95dd2325f56ad12cf5575f48ba5010322bc39d2e864ec1bee0591396ee08284f50d8ad7cbf36a26e4eb25dc2b26244ad53649723c0f724447b0ae059d68a4b7a8b7e9b0ba7111e96694ffe3b2ab130c3cac31ce458d00d34f3382503359ded754077e1d18868e4d5ac5108b5f83af140ebcc3a313d22ac49c3464ed02ea9aa2129bbb73349c9f68bbda7c7713e78fd33ff2f08b060a547b34969de35a8da9f5c8cfcb60e234c21502409999d73b750ec24d4369904b3e0628d676ed372167326411de39b644c40d712afabdf46bca389d66ba259725a60d023f48592fa902b9702a8fa0663367109628540999629499d60ae2587e51fef2476834471af98e81077b71ba2a1be9fe901ffad333a8b660aa9dd8639a68fd7d5aa091738f2f8dbc83d3aa86d9bea882093e0645bf0fa399ded208473feab7922dab3c3c42b2fbcfaa88e6acb36ea81b2d3b0ef690799737377bfe00ad69fe4f170f1fdf3b850ec44d3d3b06c1b03adfd3d368f2fd8d55781a8b6dc0a78fdcde67b093869b0925455ee062725b80a222abdf733b7219516a1bf072a8ad2c4d63a098e44f43d29f50f732331746de31935e8b650125e8ef539f3c70a99d6895a965ade7b40cbcf42447bea8e654c95367223bffc62ee84d13e8e1ba3726a18bc8f3aed0935d725a8300fc79331a59e39cb1e42256af5c084d58f83d254485741f88bc2b932248e6adce5bba59637dda363b883ff3a6ca67726f85447f4d7ec531e3d73d054d0eb284ab08dcb0db3e4f695de6cbc3a586b3f635f637f0b0a698917731775d9d35bfe1ee466e9b780dbccdfa919b38ea6cfc5c38dc1c5bab3f340eb6a298ede433139d1f585b1aaac1672a42eeeec8ce76f0f1ebb344eb0f0b5102a7dcb75eccddcc53ca4379e5af6841187db95f3277e53d50797e18408128c5346e037811b7ce85dd7c71e060a76df326db9fa6ed9534c837bc32136a215fe1181decc322ee80f2b50d283b17aff3a674c01e8ff26aad26966758b30c3f8a44103b6cc962d4b606d90071b4baeb4eb572f5238076034e71926bdeac9af95986d28c4ff654cf96288d124d34b29a7da0e1d727c156f38943711c5d3df24e75d4166199e4ae8bdef32c881ee912a0a06feb25a3f36625e3366ee6f12c03af39da49d84d96c1198c0849f2d72519f903c248b49ae109f62973e025b72e2cbb0d8a733bf62323efd92139c7d7466d1208aadd30c9d6cfd5b6f4fca75816d3f8e2fcd62038e58c8e1113c3ad4cf6275d12cc55377dc959ee271f85ccfd3be9f422581bfb2132476c4f18e0790e84db715e9e295b0d3a6486f8f248edcfaf945748fce9d09002abe9f106f0bec9e83cd760b324a8d583956c23c725fd556565c3b07c1c7468366bcd90bbc630a10318d995f41ee4c239f042c54348f49704d3f499f39563e7cde308e10c1c4fe9051ab3e37fdf687fdd7449da790ab5ff92e27d75aae9c19482b648f9b9ddd89762572291ec574eaa479997953bc84476241da1706be86e8f3af82f34ad850aa6d443f351943a705b1d8b48b38176b15a4003df194949b126c78ac442302e39709053bd83be84c3c0e25fb265d33ddd2ea41db116d6e4e3b025374911d2cbfd2ef9c78dd2a300b8f965ba2bcaf4606ef96fc8e778b0dbbe67f127408fd2fe1ec23b8b070d04b8ee214b453cab75c6de33a44fda9fb340e8b1f224843351c3bbe28cb44957368ebec3950ea7d882628e6a847a3853e675658db744efd87348d97f58acb516149beb097e79a6da45fefd6495c1caf71cab8daf393c53ebff8b0d43cdf25b4072a92709ec83b3cad0f8df540a5a602565f7d96106623ecfd512bc959d744c3f3e7f3de6624395dd0d3d845a97e5e694a97c6ded96e5cfee03bd18104e0fe6998928c3f06c3d1a9b7a214280977d5e6c331767926ff2fb30c020eeae1a1aed0772a3b7597d036268e5c2e232003746f9fd3af8722c443af770dc4ad613ffee777bf053291c60ed931cf8cd22a884da72b8accdcb6785f408593c5cc11b87e5257fc52280fe881d1762d2af8c192ee802e28264dbeafd1d5147576137fab25735f5fe49301c3a890bdf7098c1395fb602fff4229e35403ece27a5f90a5921e31ce5771e19be0e7e473dd75fccd5d3c94e9791baf8804c69d65ed69896dc20d828825c111923cd10dfe11a3627900c7ee554c8608a47c952a9f4a8a997b268c46540075f663d40542fc0eda782b491aeb2e5c439f5b179b7c5d1251e9bf997d969d3704fa7602b66d58564ed0af16bb705021f5ad25ddfe433fc22b6e431c9370ebd754317c27eb7bd4edefacf913e8b10046acb5b851666a96a4fd4b4fb9e04521ceaecef152264c40d023e4992bc1eab0429d5d785c5317b781b4fde3c10cd5e2e387a8d2a95d351022c752af1effd8973f755f5f3abc90c6b4484f75dd5f7f560cca8c91c0ba6e390ec041142e7018a865e4cea99cdb5a80847e41df0e0bcabbe6e334e52782c1d25c1bb5cef6df3334b6c0de928c755997bfdcfc9f5875c7cfc682824e8a003f7dedc75dc68c8ab96802d925b5ef206bdd68295b93e3eb21b331871976ec56f6194acf7085bd4e02266d0e77813cd2466b17501460bc5f3703f5e31daa11943e4750a4e506f19d8f467fdeca7c5f27d135fb8ca12450bfd2903d153087b48ec5fabb79dd57d28addd720ba382d8667f687648c392b4cfce26f9ebf6234cbb093f4f64780feb271adac0b588882c3dc3c8d1258bf7e1ca0ab7714995198a5ce6f8d54fbb94b475c96c090ecd3efb29d4a254f02a27c5ad29fe610d69c776cd1cc02b06b12b33da849564bc85c36e562fc54ef3b2783383bea5358e5fda0a06955d2f39e8492360bec139cfa8f36eb9d46d8325d6b170b84ace2b948c4150fa7b7a6eafaa2b073630aefe6551df1ea3010c23c4e74e28d80e4c4ebefdcf0f065cda6668ad458559b44af2d18e1f93becadb04c50afff42735c3c778ba023786266f6389f09cf331cb50294878553c5c3cbd376016f50069f9564298239289a780d11c233cbc7972033ad2e89b17ab27b271f9e5a2fd39507c97ea521c5589d44ef41517c884d121af72964033da355be820bd714ab2402cec66566f45060a2cd5caaec301a04e75f6ad6cd8b1eec21c3db0b7c148e0f99e1bc84a7dddbe956d338d0c54e53b97b075d8173e26673718692ee3f58231864bafb7b46d8581d426bec335a8fdcddeb7c34a2de3194c59d80f5e6650f4b04a5e5199b6325daebc6c81a9e5770bae3bd800894ea24d6ee8ccaea7c7b65e3ae7ae653c7cca64d018a924400bea839f7a1c70ea3e03a7c6f4133c20fe9f6c656ca4964c2da8afb0d1c1585a1e8fdccc2e229f8915b0c079529382efd9197cd3afafd6420a873557986fbc58fdc33293d78fe6897713311902e163358413cbf0908695a772be76272c227a8ed545c8de6a6a2e8643149d6c577f1b1235cb3b7a4c0e9df8a115b744ad41274e165936fb9fcb4e12c0352b8ba7f05a75740d46f0d82a8c1385def8bfad25fec64f8cddc471fa40ffbda5c5cb163c6448b782284b1f68d1850e204a9ca4442f50dd6355c6a43f6ff37b5613d88119f9531e027433d8d16266c3292f13855a24352f8e20fafdfea5f925eef12b955e91551ec802d55913a7e40bcd69d304b64344e2375a6a5e7afe60137b69b3908a4653a041cab34ff17f9ecbd948d4585bf6583c1b856e137e081c3bfc64d199e18eae694f3a515dbaad5f387eae477555ede73bfce8a8ac614012a1040f12af799ba386870a8b628acad6e11013d9b7a998a90502be2b5d5f80dbb452158a68fe85a605c157e6e7363b94d73165372c6240016d627febae615f50d165dd8848e4bc74a0a3ef7aec243cf2223c836a8bc9234966ec7609210d4c770a3b22694026365f6b12069c427e8ecacdb350758f3e0275d1e22fa758ec5c0e603877bf4372922b2510a497cb078d67f4af1a3a1438c653ffcbdf1909e45635c4a9c71daae2f8bc7356a23e70508e3054a50e8550cc658d630a56a522d98f3371c1b66a00d5aaa4074ee57e52aa7d0bfdaf33ef9c6eba148da4d755d71acb4d3154d98775950e8f372edc1935a240e92f0bb82785b6e49de3c20746fdac6fa75fc9a17abb35b86b8d031f2b486f41665a3db63d37fb2673e916ccf8e316009805004b0aea43af681c206b42961acbaaa685e5705a53c59f1628d7fdad1c0353ea6a5f0b09fe66547e95f7b51b28ddeeb33664316182b09dcdeccb5af7d931a4493bb5bcf43f877a39726c150b8231348ecc7c0d4f945222d2a6b41b74c3518186f56100cb4b9191c715a4632b7a60e60c4c2a313d9c8db575c25ec02d1b0c4866a1afb1198e849f6b5d5ff8dd5d818875450e766fa0b8e9af6a6124140c64b1287c1785946793a16121d361860fb5359a6773453cc9bc13fd6d789ec78d28f9a24b8be320905d50f51e569b4ee794066db5a236b9372a17b75b010d974d42d8a3b88df8a51d274bbc49de840360ef18043d911fa333b08fba9773832c418ac8d6845beb6e635a10e8aa4d0afce1f14be5df65623c15fb729523636b26f6764e009c1bc19c2231c4ce76e1e2166a1ffd57d8398d2af9b2046740528cfd03717d119e9f965276e4c822e8eecd5328489e9fc8f01d945d600a9a8330c53f608c43d201b692342fb25db80be6a04ee56530806bcb0f0b9c29f2b729b6300b71b8f9b07e0a03a72e41a9cd6158f6bc878ff26eb4ea688f496b5cbbc6984dc4cf6710f0c8a036b30b2cc2ec93ff6b3bde67e3da90c7201d149f214d6d05e92afd79336d4e57e733e4cbdcc7523c7cfec123c7eb94c0b289e533ea9e59e46aca6bb30b8461f16ae404f901313024943b7f51ecee27d5b5d97c20f48d21d89aaee6ff8e7191292f9e83fe65fa436471d0537c2033b27d7a94326afd106a407bbc3be1c491ceab46e03a2bbe4b3f2d49ad7a4d26833fbe3e0f85ea8264571a12118cac66dc7e56e3945c06688c88421b4c6fc4dece35ce8c4960ec2aa57e887c83aa5ff3bb1621bcb664b1667a389af4c42954fb690dced85511324e3713b8a069b79988e048d179cce4dc7d3af35c0637cab23da2e2ee49307934be9116a88f4e720549a960ca75de24af556e0976aed2673fefee8b55d24aef62b009b090c387a7811ca163817ebe7e68fb86e52d154a9a047a16b49e5eab392befbb13b4255597d453175dd36a8e5a0b1aa7c4eb838a0ee2258cbc1cc3bb19926417e1c33effac18326e76cce895da13ac43b9f207a451fe5318e794f4a3736c2f09c58181caa0ecefc9aa7567b8e274f2b4fe6236797d25bd57ec35623a24cd4c8d3dbfc536c37049a8529dc82e7a1a6df12193e5c10ab17f8eb1fe7d69f8a485a05ffc40639d05f9e585e173585dac41897b5e3fc2e85352c225f22b6fe1d781a1acb48f1506c9e502e04eb109b06ec1a2ca5215e7d5eb9db8651888230133f000351dfdf6791eb0c252b4c061624bbcaf5eb124c4f55c8e2eaf06295e903d1a69d23f3833f7255573d2e9e0e079059f9c78c5be811d00d9dc0a330415f8e27aad571d43ea7c38fbb81443856aea303764cf168fe7e9e92eb419549d42fee524fa53ad0c9d3de00b8647c1b67be4301ef4fba254b69d3cc77d719add8d939d9e75828910882795a9c3e063ebc948e806061e6d7270f554985711fb9fdebcadd9e5cef632cc17c66bb1bf73a0616fe3fc13a4cb4b35b7651a618dada5513cd4c888112fedac4c66203d50824519f4890e82239865d39406f4fe28831e70cf398f8cd6cc7d952cd1b4a4e51c6f4bdf42ddf6a5f4ef98f0edc3cd34993e752a9446fa3a65562575bdac1eb6fa4317cd029cd7597739a943df3b207c55ccc84972e7832d28023b4d2e9283d32dbb0d39b7a04f846ddc7a6a816c96213b1baaa1d61b955cf11b607d8189da86ee618c353216aefa5b8a7f132ffd039a209996dbeb1baf1a98cbff97ba9ffbffbeaf38a86cbbe51e3057fd7265facbe6f7676c2492bb9603225c419ada46710ad46b470124d665c944b3d9d70f8c82239f3b7e3777e101d51154643c43b8c833822097c82f8ad61c1dbd3ccb59347d65ad7638fe4f6558ca8a9c66f14dcfd154c60ac44ccd2b83a593c2cb706f3813bcb14ebf33273daf62a524ec8ddc2582e0929717e5c6623469afd772d82e25947d3a821c77d0fe185f2f9318c81376133eeb3b2b2065cdfec2b613d8317bbc5f5c3bc38ee95320cd7f4d6a1cde7d2435082fbf7c23b0a1a3f5e1eb14194e11287b6d910699176151cccfd1a614501ee31a7b18846f0575815ad6d08e079c1f2a9626cbd466b475b2df698ee4a45360cddff8f86a2163be78147b42553e6276dbb1f3416f8f0e91cb4acc75c1265e8f6abbd0caa13d440971982b2312e7b375ab5a2d1cf69fab8ee731884ae3a3a46087012c49b0962137a9d8359f9f0dd521acf5f910ae5fdd64dc077cde4d142e7bb47786befc956f3936900ac0440ec1338a99b958531d29ed0ca5c9cc2a2ef01234724eb7b379be7a561ff9d4f25a973d17a8e06f8a763b2a7422f5b5e59399075d4b86dc403b0a45206c8430875cb2c7d267a185b9b5044ae88d80241d13d835498c32e665bf0dea4f5c79cef7ba54bc9696a4c4174690b648d944c9a274d26d8cf08e91c2a21239a6e2a7804da71d364c606a62d4886da8b0b1ca7cc0b8fee6f5528573468d2dd4c39a1f289ff55da2d7f45716b3dce623087496da5c4829359348e96ba91ad29157bea9304f4fbd07b63cc0d1a82bc8d9df20a8b979cee1803c15af52bd0563447bff5be8362d4169299224f3277c463485d3da12bcf9340f7c6ae3c20487176ca5a2143e0751cc3bfa28bf289e44aa23af0b3f6d666c7942651d100b259152c5d5be442b3abc079223f94813027929772e81bfe65215324f46fe067e863f44f8fe4affda039452cbb4b75506aab8beacdb2dcbe931b0d8b96c0c8d3d6412f321eb5f30de5ceae8e614d49a6eecff3c1f576fc3956fa566fd1e707ff26c0a629262605886ca4cffbd71fe9db5c8f2d2b23c5c7249b8f134e28db03fb265ab8fa88c32ba01edea79043d2541c8b2fea6e4dbc18ceb7062df39fc5927bbe95c5abfbcb54932a8584b90c4974ee0d13e5dce96fa653a3ac53276f303be7d92f6d2fd90fc533aa03a7187a947768814fa2704cab8a26781a6a695fc24d35d86c617304150ca9871a7059d9ba1bd6f727728cd47c4779aef3d6da7416df869826c9ff2ed8dd02b33a7c64507831ebcc0d77de4f8d26e5127266176c16d538321d2ef1dfa3636e508763591ef24a622243b41f40b5950330ea703938c974db9fd0015017fb289de1f2b437c2f780353d7582726d8ef42d7b217a2c03dfdbe0d438ba6c388f2c6bf2b1a15a7226a1ce736a2cad867bad495775fbb1563aef8467e7ab9bcf55a639744dff42cb4c7fa206d94213cce18e3d4d76b5c87f7eb0d828a7ff1e7127d7a3b6bc4edb5f58fb960dc0d4e1ba44f796aa26f7aa55be64af5fd77601442e3b0624e637e8d2cc1faaa479f5035cdd5069a2f3282c26ff922a57be8eead77547aa4cb5e505ef0fbbfedc4f8acc2b1dd17cfc4c226854fdc3588f07c3bb3461db49cb89b64ae2a622b33cdee71e6f133a828fe4eaaaf4b7210d770b9d370d0b62e51c15620043dbea70c58e1e2e5ff956e523a066b050cf4788bdacba5586dd13c17674b5c1d742320366c2be5417ec80a5b134b7f87d5d3dd59d059c0b521846a4f28225114f484077e09b4249b654739c4f0652406e46321d4f46b809847d9a60da8f9b45fd7ca895146ebc6cad98c4add1a71266f05279bb5c0b8998aa26af9fdda22ce128da75e3e554ef655abc8f22a6018b9f5b7460a1c6f73cd14ddf760830ae0775eeab404f45fb620d57cf042be12a98a1aa5d005e12f963710859e2f18f2587413c2d5343f9774689d5785891c236755a94b8ac974412301e1f2e08c53d48484f4c38056602ad82c3618da707e09f9aec2708a768e71aa632e6456127e69c93392c77f2a29ff3703aec4b314f3141b4a49dd918edd122df9a67a69e6b594bbd8e3c2a9ed822d01909dda8f5101b2e4855a871b6a70640eb57da3b5833ea814438024e46525bc5ab3eb2124c54c8c781ece35f3ec263657bf5c4a73e4709f4ce69ffa14a018ed6fd0504812c859e7bbdbcdedd6a1701f8a43e43a55ed30c3c107d567312c118dd9a3175b2047fc6f89cfa10e8081f017bf84acd1e07a5e97aec0e6ad03d3054793388b8f04392746b917ce1d020b6bd55cc86d8d64e9e0ab7ac2c1ed4cadd409cbcfb74c1f4d3a21520ea83a1fcdeddfd2b6f6dd908dfbfbd2da40e58db5d50ce41f35ef4d9ea67d7e7482507570eb3436d6c0e965d021a0a14d4cc83b9e6258dc880165ee676e198bd78e40b093553f7a976a0f9a6ff013fb55036d49b4ed9394dae7d016b36c252856f56fd07f003f64ada252b6020606bd7e0422bec376e7ccb399e4f0aba4bd44d114a3db88e3d9eefe73bd8a21a7dcdee9696b93429abc501d7be952780c3fc93b021979f12227c3bc375cbe8f6bd96074d3ae093611727b0e3690b2e17ad7afec0048c4cb2b19b6f12a1fb143fc2986fc56b1bb91b78f10f2c26dc0ba6beade4ee149d0db7cfa2ac66f98be4bf1c2ce97a98c9aca014de2f23e2d65771c36aa0618c8cba83a16acdba52f496e6780b5f6136c5ae597939ed97e5672ef0e2f9a5973281bd334d4b58912e68ed10e83518202c33f8e8dd0a8788d815f946a65d722e2fddc0db98bdea8a665b346951074e91303f6c770680ed4fab56da4f35d6c6db9548485c79b3a7c836e97aced016cb2f5b3b539129c26e377327e84b662d49b53f583ef557c7c9fef4bf1060ede9c5135917789f0eec0d66ad7744324462e38dfbffd2f33442b82d910822b92c6f4b15e3b96544341e5dd9af5ea64998c769528389d8231064994a1f4d435f386069adff2934dad362a4ae081b608e64caafcd3313a80647e3da8d7f80be6999e1e64e1f8412490ec67bb7390c19cb3331054a69f6ce07ebecf673567b6f8916ae12eeed2fe5d936d08870b0f003896d9df7772e7712231fabedcd0a3ee8ebcb3ee25013ae7c4293cc1a904dc84d559f849fa1f5e122c93cf5c8e89d9354904510b749b228b6967bf71fc35fec9eacb37ad5635735c9c3a635ec952d3fe5cc9fb9761303e77a5a8b91cb794c0cdd3e1cfd13b8da5a28b7711b2e71412d6155d29c88e9b5e55b335ad3718e2fbb31176d745411e72a9cff17b1a9b6ab70949da9fe38238456f44bb41783907491f7406cf4216302c17d41d698b05350064b40d6d9b017c02f919f12e3d26d4ef4f692d93aebedd8da4a1584707193fb5fcde9b09d53ee8ba7387c0163a9e0c3543a98c7a3b76140fccb3d0c4a204273f1271f0b7768d7fb6806c6d0b5cd98713bf2d91bc5dbcc2062312d374e23af660707b0341517e5ac3e7ccb15d3157feff3f0df65a084c1de89776fb6665241eaa69bdd54fdca5f01f5dc5e440612d7f61b63896b8ebe40961466e8a78051719e2d4462e01133ad7cb45e1bbee126918aa9858b2887fd0a51824334458e3f8ec3f1edb2ac11622668d2ad24d85cd28c8403c0a9c5a6cb8ce187ce12c9e9fa6458a1509336e369bf3bd34a6dca96b4dc0ac4cb78bc6e470d1d37646452638804d42a44937b2ffd5ca574e33397e848455225c19050fe5adeda94c268d07df07e3cfe74a4881b09e0753d6a1e3303a14022cdf5ca3cd7ba87b0ae46d661f18158164f20f4915ed6b2d2a99ee665644dee383815733c403f30c1060da8b3cb4115ff4162169a16fd2aa83271a7ba0bcd009bb0c35b290842bbb88be956b99d048cf803e7ae8fc0e7508c9f56e50e5904d9f2165c23c93d37d44650fb24bae2ab630d50da496409821ffbee9450f8e266e777797cd691533c8cb2cc9a71bba36cc69416a151615a82ab4f453f3ee6bd2fce436ad5b51b934d75434b71a526933022b10dcbd160a6405acd006c5a8f85b75ca772903e26371f94eb74726a4e156cb67f635f9b90c4bbf60f7e8b936971d21f4329e201a7d970329bd03870a6815bcbafa7b724d6b5cd704197573920f4650c5f1364b2ed50ff707653e179b5cf3445367eac8c10aedd9201d2749c35d2d1f36b93587ebbc51d2819a01ba0cf3629fe638a8ae9aa77b448f3bafbea12cca6610ab69d2309e387223127f71f1984b2f18e7359b3f51f528f75100870962c13519d2e7ec9082a9acafd997b33f9bc24ba9faa841e5007590842f3f7983ea3c4d45b338fc93db76e31e742045515ba43cf17bbfe87b2e7405ec690fdb90d0e8f7c054ef5a512e4cd1c8943de710333a3f3fea8d5c15a25f01b42e6028e652c3e58e0f4d3ee91ee32f0193b31973500ba0cc9f2f85406d9cc6248b61cd96eaecc32c88e8d474c4b1135ccb9a3ec232fb9db79877a11e98a920f495d169a3a139b5efbd6845908e287c23c60ac939869d327dc167b200244ee787fa6b509c85b90e22d536894c451f4d9de0a424136f4f23de0c19fc0de9696eb04b24c9ea76c8edd5d05f24059de0c3526137617069f81f4b4798037d16dd2384cef0f2528fca382a6f76c8846668e2c7ba343a8576d908a2785fba9588c348f6a8f3e0c60612091fca40fe76a555cb030741e70d3371d086daef5e5c56dd8712e285d6993458e650c80616dbd3195acfad7f3b623788bf6f5afa34599760762644bf6292a42651c7c8e52cc717acbf60341be08caff1b35c587a6d22f8e7178d837cdfb4002ec93841af021bc522d1d403688418eeb5dcbe81f3be2363ef8dd6dfe8b0820a2139745ce0c46d29927ad6b21615e5f9c2a1a954408264e3d7d3936f11d7de41430035604d85ad28bcd273cd705c9602f4e7811dd6366377d951b17e65aabf0f17307b03acbb47777ca9d899224499f8a566f505279eec3d04bb4149737f99d121007f4a92deebac671ad5ce6e3072c40601a22fd3e4aa949d58e7cdfdd8ff95816658ff37175df10b765b22ca43a82f4145c861664e046a3a340614f80eb90d95d79c0760e99673b79294bad64f000d2cef4b806d54ff4e3e13c589e1841d13cee7e71f48d1e30115147b42e6f0bbc3a4ff91f48da9a3e545c679940cfc60f874290e8ad42f8b2aa53b9d00d98ab579934bfe24b02577f22443ab994465bd327326d3900de330e9965fe13efe5a6f81d4dceaf0100020e512a4e5e62b41485602787d65b759bfc557112058767de09f442767b81aa6a85822f89badfa4b6c43712c786a8cfac72596eb2f1a8da5a613927d50c4a064811c51f7516cddd01259e06d96bcf077207fe563b732b1a88198e300bd5d9ee2bc0c158311390d653e665efd5ebcd73886975e32598e4708aa3347d36aab27b4ff4e231dda7f316d5875189d62db4734468fedabbedfa6c8af8b69579bde1918903db20853c5e0529238a8f10221c009414df607eb4555343938c34a42638832c776129cd401d0eb6fb907fc79420911f6ad8ef633dd69ae269f26faa8277b53863dd6c317cf59692217fcd511e4d8b2cf099fd598a2a58545aab940cc76fe2a2a38d2d5bdd0b634b687f122554a89c80004c151e17d297638b0478a3cc0c0c7e288ae9552e99f40c4ebce90003827ccafb6749fda680aa081fa200a293cc7f3bdf5d16d6027f7336f62985cf0a9c4e593a4d5363d1ffe234b03238e78519b9855520a16ad3d1236ea2755b5e23426edf9ab9ab70352231ae2bf25a119e1f25497b1906a10f0a1c406e32f139a3e92d57ee6de3fd0b09e060dbb7213145ab5b456154dfde7ae0cff1b3d4703883dfa3372d73010ada32a242dce785248117b0184bbf240951a0b61409c099176adb840332efff1ae33ed09a82f0fc27885fa85c65998519d6f0fb45aa62dd5466f56f81a1edb5079e2a0d9b7327feb60d1c9d9290adb5effdda845939670dca0973c01196e4b1dffc264272ef843ae688c793e6ba4786d4fd385be00a11eb559a00f89dd6edd92f819121027da7a2621759754b6e7852e92bcd1de94d07aa1724215c7091dbab1de93471d26a297c0f88ea5cc5ae50032d180bcefeb61cac903bd9b5e9cd782c0316d7a5230ecf9e207f9b8b08f099d534e9f378c33882f73ad776f6a1fd7640862d81275f2962437fd503db52e02f6f4d40b7c54ee03fd6364dc65bbb7abe9866a42489cffbfc45e4ddf3cee4c076812955b0739cc323ca23cd09938d48c11a88906cc57f976ce3f98a619f2780510702adb5f408bcb18568530741ae55764cfc08b152b6bc9732ccacac39e70ffa91fdfaf5f681b7b66f76cb6f6c68e9ac826580f998c77ee09f2543480df4b75230cde6467ce64eaede9635242bcc46cdd38bc7617f9fedb317131b66ba890835ab7a35c4c4509ff2b7cb8fe319e107ba3f78624f2f208f2cc162962dbefd1fba10c0d194deef63974d18f7f3169d7ff3b39deafc17298d12dd3dee34c0909e135bd3a661bc37a1a50be02e2c2d2aa99616314ce7455182c67ace1a31f0f019361267d69e6c93727f65f8b6a50ed0afb4480ba02f09f5c4229ab393fb37dd454a37cffeee268ef6aef70b5a9ccbae1cc362fcaeac35ea817befbe25914fc93f60b8df65b4e63b8c4f8b3662503f9b26b16b7e11022cd5bbeee276e5b2f382412fefccd970de5bb92ff3c8370930fb8a281c558afbca700f81ee560baa4387065508781c2710dff9dfca1fd86d04f5d92d8f9df59277238fac444686eef8bfff63c186eae228cf0c89f339e67bcebd8f9f987f5444ba5ea8a22a47f79ea4479fcf9d8d26dca066d3b4c86b047886e4a5a4e2607af58b77f731e321beae524f81170d5dc2e3d8a0e164cf058a2fef2f1735d7c9c50026cd3c22a28165597d09b68f7a8a7893c3bcaca3d009f306c01b98d31391067959f1ff5ff975e0efd6ce213ff0a9c150e87e14ee922e0a58b252a9033325dec4ec8f640b21106e101954efeed0aa0f1a18d6c48be22396723e4ccfbaa22667efc627ef763907a80096d2d00416e285967e1d91a87215da5aa02480f3fabc15eec70dce2c189bbc3422f4371f61843c9830a73f14e348b57c9c8370d91bd61cc547bb89ec4ade8d47e1469df072552829fdbb52f749eba61a931c70d76eb45d1bb135eed32e1343f97f7142b6ba12d6b7811849ba093e56f0003d9eecaea9655fafde6755f045368357a1d9006864fd55defc11c84224ef84c8df86ee32246a3283db477a1ab10514919535e444df89392698f84ce3f616cbecc8b26a12df739b9c91ad6ccfead2b4f6aad566873b4abee3bbe4e53abc79345f14f3f2f927a1d2ea85bd03120cc5f5a0752ca6f4da3b8bf9cf62d828c9ca6098ebd4b2b989a6f4a3e42d313827753e82ba5c8c33ed99b27f5a6bcf69a1bbf3872a630b6504c664e508f471795c9397595838aa40bc4c6fc727f3bb51a40d13a937d5c9222d4f88d76923921c17349547adaee9ae3417f49aca8bab5faa3d38fee55a32f1f3568cb4553b8e19cf6d50420235310589dd6903fb26be001eee64f043e67e75e2f733c43733900e1fdd7bedde84e775c9c33e7c9cac18d351579e4a39deaa73683253bf11e42b719fd59b9e4c290fac57bbf900938f2ab7072691fb422848fc84899f164667254d8826f14fb312439afbc551e0f1791045bbab63e4b9c143ce3474fb5ee4d8ac7c770ce1480e4a96d5168cca7ddc51faecc8619d50f8726e1d6b518ee4f0be69e63c60b999bcb4c7be2de706b0072d28503716fea77ce0dbf2a48d8a410ca03c984b114ce91e39f700cd5e994a5874071f8d4d96942c02e318dd04551b20e96220ea73771fa9f6567e43cf5532edcc0f1cdedf660cf4ab0a11d65c4e12e5fc0188866bb7aca15b89693117982a32e27defcbe9238a38593348428ac754aad2d96d9e636f6377470b55f6e2e9ab2e6426198f5649f7419f0c7bb9feec219508536b0b5a67891ee2443a514d68d235d30322d78956ceb08208d84ea61f2b9faf5b35d8730c1dcf59fb16f3b0cc15a92c50ae17bdd65a368c0d5415edbbbae53ee3a5c0f2b74bd1b96651aaf438812c5abef795f52eb964effe08d4251429931972742a8ba3a9bb6af97e123321588d21f6ba3103be411c6c27cc1467526956992265dfeb5f87ca807d75696c121575c2fd891a825b68d7abcbc1d616b115f1c3cf8850451cf0c64eb061c6b112711319600c047d64df7a175c684e432e89c18db0719ed1f3ba97e718b1388eb4240409b3b110f7c6ddb47a29188595ad1db509c500c2eace98d627ab664881fa01182897fb33f662a68785cb6d54f597bc5699c0a6ef9fcc07d1391b5e735f2a2e062147f11e6b0ddef1d6ba833f28a0c31facf0a447734393bf6145931a5eebd1176d1e12d5990877cb43ddf38ce81d4aa0aa7c57949d2143451ca480a90b513271d7645812f01d26eafd11e5b4e54454544c15fcb647b8250abeb00f65cb8ac82cb68b55aaaeff0a0920e94f3430e0e3d216b5ffe5e5262f36a371737c681301ebfb859c77b97890b7b600b4e0ea90e374e43ea9777a55a94ba3c092bbdeb7b02359f703d04a57b98e82ec810342ead2b29554b1fbd72ddcd4c8ae8fda298f8eae16fd8ab5da73697ad44218b4a7a93374a86cd24fe152b2f60e40b48a5ea94277bb26d6f105f1f40a1fb9565aac77dd7174be81914230fa32b97d64f070fb0867cddebfc49cf3d68712c35660290c1e62166a0e76d6b3735213832c3922bc06047eb0897bccdf4176b25e662a2d34215cbc214c2910afe21637f41bec56bdd604ad38d80b27bf7e1475cc08edfc47ace993e51d0e8f8f4936b15ea5173b9fc9bd102640652ea0d5efa6ad28e10a54d9c5668f3a2cf51fef9fc805be8fb6f6da274412ff2ac876a5bcd10c168300f73193ef25537c6476c266fd9a1ad5dfa4ddfd26aa7275b377cb3a462f61b01599d8d20437e5b8dba45847b3a5a2e503234095139dbbd8e983aeeb53bec9ce68300f068d013013ab44dc1243ea6e2266bc372a3e2875e4cf3d2560566e4839bbacb47040c002c85e394fc4f3605d299a8a14a2bab7b70437145df7858443b01e3060bc0e4f236e2389a1e4efb9b5b8494cf5b513f8e6069fb7602312544bb00da8f6a2f43840cafe6c376aac6b06c5f396120ed69cae496de11d0b7ac56beb0867046b63b0c159ca859003a55df55e4175385076731c7a0df61726b3f209cea67f795be297292064d1c0e8a58d0cb90f4d1038abbbcf58ccb753f5dddaf332631c3cd6c76929efdacb2ad3eabb966895493a2ee7145d5298228e31a169e22af691fca950359b2779298d33a6d19dc22fe6ec237c97d99417de8190ce4d9ff0a5fd28091a202edd3c7ada764b5a69c8ce98339988daf0e817898ca4760c19b4eb7bf82c7c729c12b9b515098fc7c0e661679d47780c6b740987ebce59e3f39a7ee731f82ece78904e485dd7571458b96e29186542cec2c16e369581e3167f69fb16ca45961284ea82e520bde2f8024858d9acf0c94cd97ea4150cc1db883c3b0db29a2bee818f177ec27cbd4f3d7f9d5a96d7c731ac29c9d92e8e26173ab1b672c5f0b05fd4a960c4041f3c96e1575201d4fec42dc7d228bda2cb250faf667f9cd2205dd3ef78763bbdc0eb459c96dfbac92ee0a2e1d0ef0e4c953e3dde67b44a470715a76af1dbd4cd4b6bda1c27ea42d644bd9bd40dd480b170a9111bd39c0e955995e087cc4250511c36f1dd243e963a6f17e341e5a17fade3e19528269a47f639d0aff8a449ea2678100c167d7e220a400368d8f427dc3193430a8ad8500725e9623ec59b0407ef4fc2cb2796a5a4ebf0523b950162f18b225c1fbbe57d6d1f1331c93f9bcc4ce85c68db683b2ef6130983529e44a5f748b75da15163823da3473ab6005cea3c62a040c7a1bb4f6b04c10af9f246fb2fdb4d4de1b63645a8a35a8400b32f10842e19765ba6518244753c17c4cef9d8e1f9a7b34f5ad9525f3908e9a1a9174db5fca6702c5608647e6e9b7b18f1caf1c46476c6bd082a4d0599ca0de2aff968589d4a19fc78dd4318b57942f1d977367bab6ade610d466bfef11b433327e4bd6cbe272e14fa9d0989ff55ed3c9b5911cb69389e872e0117b522676dfdd2f7ad9e2fd25a52bdae5f6ea2d44872fce5e48cdefb425e21fc815804ec7d536ab150ea8fc5d3e06d67991e65404cea6f87d50df8ac71fe278e9e05eec684336957087e2cd5fd87b2ced4eb7cfbe146b314c26e277cbad0d957daab0d4906533d3196e401e10e952c12d93eddc997afc7bba7377b52d6677bc62635ffb4e5e72d8e603d78f787122ee5b17c1934063dee77cdbd09d08f2dc9d32779911029904fd6a55b0384f6ebfc8bd3e6b37c3e45e67fbad947713996ad30f6c4a3d55a6a4a5c5b309d6d193f53d2c4201944ce4eebbd91e960c5a3c56f392701dd56422f7493e930e56b1ba58af9cce4a15b709b51759adc7cc032b5a34d938e1ebfffd24da4ffbaa510362942b663eb301720fc8a8caa60b8ed37ea9e05765e9e1a041914b3d1e4d66e9fbfbda4a8c62ef403cb3eefafc0bf57d2148cfb5fd117081adfd88985b63893eb3a8b3a26189a125d6dfa1e9264e5df2ded53dc4371af3f04a00c8c80a408d8fd9328c9d4eb559e8e3e8ac797818e8a6311bdac22caf81c38dbeee6cfb7d0f5ea98cacd4a1557b6fd0f3ed4f7429f411e821f8774b1dbf4ebbcaaadbb834f9374f107c1aafc16d21457a0aaedda729513dc92df582d94099f737badbdd44243c87f15ef750be4e2d18f99bd76f4fe16c1984af7c0995cd240b0edb658f0cde42a39022524a1c2dcc1d5f16f84c9ef82506b7ab2605e51addda5a11a9fd0e377f4aa0726c288def47bc581a89baea54dcd616868814a48ed77483ab50a06940723c463b8c69bbac9529bea599034c88aef8247dbe76936617dc77ef988e7bd1934077d1462c6194e25afef28640835abbec6f1725196a19918c98c2e34ecf0cea80b4d5fee9872b1b04bab54605f26be3a9489847a070d0caa5e5933109f1272edc6a9a32bf5d65e11da773b3534f37bd0f03a550e615744a61f8ea01f5893904efb10a67764a4de534fc082029386afc903c45b923304ff983ab7adfd298307db0e836b23cf6ac2c123e849c3673c18a5f8f408762bb44c7fa3461f38b5710a05ee667cab29788047903a1d6f0fe8152ccfd14f8073c7727012cfc636db7602d7b3fb9270e54534c766f3f4ab28ca667f3bd7d31d63b141bae5eec57c9c51f40ab7fe797e15de703c8b54702bce1aa9bc68c55fb8bba27c083bc7735d694280f753f5b4d203451a2e69852d40632c830e939e33626d21c2c7144daf55b675a587a21341181a948a357b53436974baf536c1481d43607dff602996316229cc6161b0ff96d1636bc8b858f85cd8e8e64a784279f70b9493b986960116704e93c147193c74b28b373d7041c377949765dfd7e409e1a5d6ab87d5f036af188d22dd37b8e6cbdb13e4740cf39d7c68077942d57410605c109bf2d1e19dce784239d08ede1fbcb9ba86e8cb83e676a8b5cc22e1da6dd2f5d79c543675a8792bfa2928fa6be51ceb80ccd53494cd4d08b006388b3e094835a66998850b13d0ddd74bb80f141726b0fe9a476fc0fe1b82bbade9a55e97de91c461e08ad4c7c2c98fae029325d44d82bb39c514b9fc9b192486eec70734f5c8b8843e1251665dd397197f769c398864b4dcf75ba7a234518e42d6b7dcdfe8b452f95813876321a32e53aa6502c2fe3f20d02a49f7d3ea5763a3dbabe01100b5ecea37a861099476854236f258dd83e03a4c1af1f691f680c518440e04b87b7478e7dddcccf0e5848cdf1588ce7c97c578f14ad5a4606d360e384d3a28ef8d9d83b8acf29a8f82f585c1cc76fc79c1598a56882e54d76c630b5eaf2dde012f2e0601c9086b72bf5417bcada1a59c1adeef8b09266c745c9334d315115c9c72f83f2fda0ffe0b5e534c9810697e2df4efb12c84e667d1aa6b6c20de9e04666b5f8381cd673911c4e279ac4b1f1e96c8c2c1df4913432d1af209a9070eb1796403ca8f323e848030db59453cc20edb35548cd7a3674acd700e8e3e2b9613e595b5bd3c69cb07065b52447b705c7e741f4e4e147d9c7b00ffb1042e43aa3b1a81bf4630c0357b9dbd7c7c3d2536edc80dce1f96a5687c6b2d800df1778820db3b47adc3de2efee1fcc30f7a6e54f5c555fed25597e08ce5984697b495bf7296260b2edcefd33431ac5286b5f1e8257abf78ec8ffbd5b0da588ce62b82ca2c341efc2b1c7adb33d58078bbc166b38be9d3652bef8aa6d3739a660fe898737c10bcca2fffb25a4022453440abbd23937d1c8e5818560d4d4a7adb5eb2e9c154a58a183d86688fff744005dee15e526790097750f3d645d5e5ee22d4abc2b08a64d7174383809a56768f85155167687ac5a4f55fb5bf2e9f85e4000dd6afaef4ca6c63c3a67478f56d0c8c5a7c7bd65d711b60851623f799cce6da6df77187f97b7721fe3bd1ef6443bcc555c66d3d8b3046e6cc7ce0b6b9357c4379fddef70f0afde30e292220df94de64c0cbd80ecace9d018f8b7f7d32a2ecaf4b3c2de9d65161252f5e56509dabe7454b0aa24d388bf9bcc68d07e6afb5f2c240a8767e0e5460fa828758e55a8e1e2af546cf40af8c8eb1f9b7b461dea1d6fb118584ce742d1801e3580b5d41ee82271acd6d1ddbfc9c44a94a2bd9d639324eb3e6768b02d402eb41714c041798e6c6995c3ca21f98e726b26b343c31ade0ac47870d748dd6b15e0fb063487a13abfe9b55a8674f0d3d99ef1d151f00f1c2618efb0d9035497c04011bbfb84b760d155b23b75514a6a17af3fb108cf067a7e329a66dad863dd48129c25962a6ce502e7699588577774909eafabd3b4ae5399578ee28ea3e03666661edda6b409cf4dbe966f0042c90fdb85d79c6004cc69ef6dce2661586ac0f8cc86c70d552b81f5bcf36408ce4658f0f3c23d0dfea148835e3442ce651fca262909d9865aa141b3e0b3324e0e9437b8dd416bdb9a8134e16eb40d79d0dc21e6cc9b0d026c1d0179d628721f4d874d0d32bb8eac335d190b9820c77dfebfce11157bdaf98d537a480b2832accdecb51f3d9e27ef3037f73ba6e4995f7a7192ab4309a24f494788d96691f409220ce509f86d7f080da28f1a50b0f02fbaf92b82b5ddbd357a3f02d191c37c2f391bd975d9d16afbeaa08384346f56c1baa3de291c7d88d7f1a3726bf199b9715b61d71a6e395add64fd20b8a35677399d9ea8d2535cc9a5a41c0ba4fad75c0a64d6ff0800c0edda290879ecc19d4a0af1660259993ab48f55f06419e56519202784a4fb0a388dbda0fffcfde3ce775c9498a3742ba0593f9fc5ca39b09b4995049398296a1237d8a061343eb910265a9ea7b5ed39ccc49f17b74cfc5f23ac5e0a49a082c346dae99a84741dd25afaeece08d01cdd83762e6168bae15f8e1fc7699767341b9d8509c2316ba98c1e726dbd3baed80a78f8d45cd6fbcc78e7d1fa3abc09b26c55d8cf6f02afd9d8ca8bd93d29d0aa2d362b942a5f7953947899eb508237c108c33263950ab3bf6e5c1ec6de5acf682e90aad0bb87e3cf678decd927b7efe2b5deb78473bb52962d09b055a43ce8820ca4e6fd23ed4e781b2764c0a1ae92bed23ce80d94ed063d63a1e1f208d6a256825553c793b1cbfe1bc896367f696b8823cd9bb58b0cf5ee82cedc55930c670277b1baea577d1e667a50eddfc5d1b00b02813e364aab413f69f06a620587f064d52eab777cb61458e720876c076e3c59528f970184b0d51ab487c78a447c9d352f4c0c30c068f9cab0ac8068a832ac644572df525b2ac2e8c243d68dd300c80d978a2cd94e2a7df0c98ab78f29a3c52ef1d177972b828846b1e8d37d72625f429689ef35763ecf99399794128309d13b45e660b668767fa05797c7b8a0e8f9e38010b40bf0ade9d5529d42992026ef6131a944abece1c636abce420819af4ed22176be6ab5dda1829718cae0674dcac10f7f1ae23d4c225cc8f30920f49afb54022303d353f3cccd657f44f15690d842b511213cb236f18c9b754df388d0c679094cbec5fc469bd89b30529f026a241a85af3f53c0055d17bd914965e840dc6b00b898f0d7f851c05e19fd45d13287e3f739213808d83f06a8c21915d488cb9190cc8d3dabe26c04ee9c8840a5776242f460c0d19e029d599e1cc4f896574b2bb9f653bba0d28fe7fa56470e1f5de0f3af8c17d142b87b874be8a5664cfbdbe6839188074c8d4c45c9eff0a9691e7c98cbdcb131f3d638c978664e5ded9f5746277e9d693af94e2e30c78069be7f686ac865b5e99109ada572048c23840a1ebb283ce70f06040590970b2121ab265c034a81c75e394109887d6b7d1841db3b64625eddddc58eb5ca6d881cfbca3700998ab87ee22833fc0f7ecb6edc77df3dce1208beb4a655822daa5a42cac272b3e34979765eb9a86b655db8ec3514061024eeada903ab8c2486e752471eda82c99c2e21d1a24ca9c8719f5b39fe336990521f2c9065607dd2d4b3ae0601c5e17b31424126f7d45ef3c3575755de6c9c88670047e1f3e5bc38aa2331edcb5d33554f54ba8d92096ee6294d4e9a8373ac5cd929e4a43ce3c113a75e4da840ff2c098cc67af843a646e92a2ad4dcd15cc25359410213817b66757921111197db14596d08305d238e43164cbc2ccd189d03b80217716a2b64b2168585b1c9fb0c672895c30a453ef9ec2eaa6c4d462f3f210853d5a75b9711f3e3d87de17b78848dbffd3770890c693b4f636679ec7107d10bef9b3b7df0bec182e747f04bb8967b01055ce79a61d8d4ea1b0edad1cdcd2b23e4ddb3d07152bf8d95baa3e76c3af31d852b93aec0cecbea5e6e1a20368fa0dd6ba6476aeb5fbebad65cfc265fbc8afc7bfc3b50212c60412cc2b225610154e6a1300f3a51c5206322012e70bc298badaedd129b5984721bc3ac23a6e1d09d0b9adcb93fa8781a66857f3259f8442665a63bfb404723648c8ea933009c6afea2a3d416e2e69c5aab705fab2b4b1c60e421eeea9b5a23039f77690b1269b7f5cd92ee096a1d570863e5b23fa28afc44061e9adb63174b2ad5d98393f2b2b76dee805b1ff1fa3ba2ffd18b2460a08387965b9fe0f956e1cb273f5dd67723a12765416cc798e2e20a15d0c78e8209f5bbf62d5313b216a1abc03602707a4c738e50938f6bdbea1bc7f05a0eeaf6e4c5657242682f9dcdb501ee50539a7ef6d4a000ca0113be835403f8e01827001ebada46b9b84b2e5db1362e2e0f09d0a48e06f377a811b4a6315c68938eb550e103d1e90f4d0d70ec3d1160368f42fcf7efc9f5e4055105bb70e4aac93f73035033a9f1852c1f165db77ee4470be503fe9d352db7e1b6dc342765174f9cd75e50d0be3eddf5dc46011124b3f85a2f248107bc2269f89fa2d90d06292c8d05c99063b8e0dd1aeca7a8abc815d1ba563eeba0e8f1f73eb70be02aebfdcc02c8f659866f64d71cf64d910734d3fe3f1f7dc04a0f530b6f906309abbbff64c81467b48f22088e97f802277aa0e66f007933f95e2313783624dc45a8dff47080f7dd382877f298524c1402d7ba20eff1bf8a53e78fd9024b0060495c063bab63f594856eceefbdf0882fea74fc01523b64fc90a7ea2155d97a7ba673980bbe498a378c0d31cfc407d1d7008200a2ad7289de01d07f53484675c8b5d353c0d53e545065b3ea015b42d08b2a1b00001deae851b23271d39e1039464c61cb82361883ebbedf8e679963f68f7db61a670302767cc0247d04430f2c5de9b64bed94b8cab235dc77aa1f644d30eb0f33a8da5cd0d10278e170c94538da035d58faf67cb1062c844a996d95c6d1c4910733f16e62062652dfc8dc7431ce0541da47edcf9e8646b373b25727448351d1f478c3bad9a4ceb74d781df2e74257f85d9f0ab96a84a57d156b714931e9ec15d83c066e189e5b52e97c47facdcc1604133b6ea9aa10e05d24b65282fc34e0b984673db2d9709d45c776824020e42a5d5aff59a1b65eea6e63cb07e0b3dd12a3587a3aed50f39194d489b8d767fa739f0edbd115d118cbf066c0870abeb27c7f900bbb40742314c80ece985e30d4996f8f7a81a1d73508f2993089497a745b2254eab9089db12dae3ca613b4ae5fa6d8764d7b715022979983a7347a5ac0db760f0c31a707a1fb67d41a3d85dd3f84c6c57b5dc5959dfc32b6684556028d12881418ad3e9cc403deedab86b31ef76709f93ec8ca7ec73b7e12001bba9f95dbbdfc1f5859b0a463ccb9d77431d3dbb7aac168847dabaf39dd09a5accf7e5210394f9dbbfffb7e4bbfb5fe23c10ea2a913c76e7d1f58fceaa499c6bd3435edbe19d5954d056c9f59c625cbe4fe0f4ac0b13f7a48c58437a6bf7a76e429e9ac151e9f0f23c31e0e400b0a00f9bda7003daa13eeb903c5fea1f3b329664488ff25afaf313b0a4f319b4e9a42d121c3950a93a12286287877746779e11b15a2c3f880904f93f26bc70b15b54f8d985e6a9070ca625b966e2420e27872c57139260c9226b2700f6486290715799adc17d340e351996727aec01e1a8747c570947432482dc8cd6f216a10276fd09c3d61f7cb1b27bab2c7daec20ffb4785e186bc441ec78ea158cf9174d5e14af9ddc9b9337d7ee508c6c42186dfcac33a942bfbce313dfcbbe3c313e72504f612f50d2268c388a3e0da606b493ac2765c494d664419830fe35d29fcc37329808fe3cbdba500d2d06e35116ff8c6a65415141fe12852d8aad77b5ff0a0b6f0043f393354e16855e3688766018a56574926b2abc4393002987c771245b156b4e85a671710922bd8961b6f018d844d5192a9fc5fada5ac01c1a08ca734512b18b0a868947451142fa8871f5f39762875422c014f4cab15f8463a09060e1a41b4b634c1cb39375c702bc456f18904fda431ad4d7b8fa27798930eda5e6d407b109dcc8fa71426741be4e31a3ecb6e937ee8195dffc0a93e30d56f8205a93926540ea242ed6da74ba01ca10e3f67a2e91b762473c536867271c7d29dca1aed81f322c155413b61d2c17c219c5bef48045b20cf6dbe6157ef80c8d96ef0d81fdf295d19d7748ecc441da9caae42463863d7a1a8d6b3ecf75a21fa483cd2269b1e2c741307557349274d207f789a57d2d0f034661ffe22b5eef7af7b3dd4b66950028adaf2cee7a37e203aaf3ee2e853f0cbb0cfcc17f19cedf374620c489f66b256a6b10645dc35a968354c1f01db7b89857e630df7a14d62de86d2dd08f8f0af5992105fa365cc1a0e05d2ca3ca7301e13b3badabf962ddfd4cca7530758203c6c76236a17dae783afb4bba20006f7b4575efad67434f10ae233f5fe86442a3cd2921be6ca001f041891cf8d24b29b955d671edddc059dc074c9da47e2a27477e4208d54eb6949b9fe31bdf7bee54c4ce6c60719faa3db079ec7360549caa3dfdfb303d54d9842ff84d50557bf51d190ea8525f135e395d3f224a03ae4b714073a37ec5286a8d1092bccccdeedc93da09726b9061a17f3962baf4e9d2631b027fdd40a94f318880747861b96cc0599c4083c31f6fd429164d05ca7b16d28e646999e3bf297e4127e74f09a588f6174ee04885c7d9b65f4932dd6244f0e450cff8fced113d8eb3f76944ebe933d44278898aaba3b386986c70a6197ac5d929c3d448621a7190d8bb8d65609a0e50808a977ec5cedd939291e55aeab553bf31029add31070dbf85cb9cfcdfcb3472c73f73d50da5ad3049570b4885c8572b8e3a0e9f3f08097107df422f756d291c7d41e81102519c91d5727977f9a461e9e82e8c91fa6283aeb72aadef019aad9d1d1d40114a4a34e1cb7ebf3586f486ad1625ad3b90c8f79c98fe46c642392264b32e89f094821e2800a84f66f3dbb244db717602464c4bb0617614dce7a79ec16e7480aae80cbfb92b1c43cbb668911936016298997f9caa0826139b2c944cbc9e75771e94bfc184f2f8aa7deca660068a6a5a577324a86f2749d6c0ae2045c7ec5c8e490404b1183999153c574c6952afcb9f6e48de8bded770c7dcfb8c1affad8762cead4fb8f096cfd8a419911ab7106998ecabd8000f78f9de3de47976023b45d333a78503b1099850f9930c6d478f64a8d9fccffd1df1c4b226c9839bde0058efd37b29ee87b93999b710a27b132fcda5d146745abb0109b2d1524d36fe80470d729cde8fc6d6315cc871ceb3d0efa2284d4de9456c333a64874e4b0378d74b360c171edcabb57b025ed521d68b2ca4433da595e19657eaeef456d294d0e2ac1377d21fcdceb15f15aa5a125f95bb5d95e8ec612dec54d82c06dd0bed823b977a0ddf10c70ffc98943a00351c10e90be0b56e7e00dace607c94cdc63da60dd55d307b3f756f5f9661eeb5dcad5ff5c156402e189b8b553780dcf3e673d23d19c4455b1da63d9fc87137cb66fa948c3c90aaf86bbcecd9dbfd190b7d2a2332e7d800c9ddbeed8c48888f2ce98d349cea84d8fb485c9323ed807f57605659ac42b9dac9e23eea02e6e919596e7575d73dcf5548a1b715e564b6d2030337bd79dc22d711e127a940d21d5f030f832669f4e989d659aa22d306f7d95e392f2035ea2e70598d4c3794cce78acb76e3520c710e611d76cfc591a18e7e304d3e61edcf5a64c03054e18345175cbebd18b719c484739a05efd3e4b41a81ea5c5742f0f3304ec544bac91db081d8f1718a32ee582f304fda08ba17e28a4e463598a7999d249938e9849956bf85414fd8bb5d613702df3ec1238aca9b2fc3e3881afc249917b79b2e3e9390fb1b71f97afe82e6a61e5aecdf3d25f3012cd83014399f555071217d7fcbf4ddb0585f66e8e173bc2f9f13e22c3c52fa6abe15262c9b6415843fb39b3199284737bcb269c523baefc523249988c49362e62a51885438a0e607f0170ddeecb1940dd6b8d0b3577474404b40cce3bd3b4567bf560d70676589f2723c88b8831ac634ad76079070b5304ad1798bd909b884b81a324a5943d01ed6ad6658428aac408892825849f91b58fa5c0202ad698831ffd824352c6aca10fa0dc04964700e0bd6eef7efdb2fee90e151f736b26a4cd8df2b4aa1abf6cf34a865079f871733876b50f3e626ce8f093a6879cc80b53e3234a580d1d321039ea792bccfae22fda92f2dd1b74a37e2a8eb4ef02d731274107e913dfe9f3855b770eb40acaee3a540967404c0dd94ce4ee2ad20dc8ead08e30ba241569b412edc7fbe70635f35514573100e2d4fe1aff11dbe8afd66b9f033e56d932743dd0fecdc3a4857214aa11479e094ddf2829bf3f18750f75ad17bd79e9d949414da8655dc1e89339bdc6ebbfde3964855cef9388f9dce8ed91eac614854ba15f8e83f67e5a1f0d1408fff457227b4bfad06fcd5b95dd75971f9189be8a86cd5bc64f3987a3894d5330d4319b75c162b997ac94b90cbdf043c0c8b07483676d105aab2e7fc8ae3fd1ce243e7a8a2118edf2be7726df3e0a77734293f69636b23dd74f5fef1fbf72f0e29ddfc797edff21224e85f95f222823b1a7218f27b58f8e5743f280c8b09d56dcd652c44b1d8f5b8295c418bc7e5105536de36be07e0ddef4525ac47414a621720b61c2fe94bd08bf311f1e58485eb2c9745323379cdcab6f2ff8437fa34328e268cc3caf625fdfc4eb4d6c4df778b93190aaab0ab588195b5d12e06f145344f50c1ccbf18caa35e9c559d9cae7455c443e285158f8cd09de6a4fa133b010e492499e034a92d63b1d5bf4a6cfc26928bf47e1529e07e5e88abbfef1fdf17c06937a04953ba86b50b4de8af14b0aad8bd481f9a9e6ec16813c8d34d62c967cde94fb84d1d7b34818d72e566c2686085cfde4ed858b4f033a529b561b20a9a8043128ec6f545a746eaae838b2d000581e166cb439a1b4110a4cd40e0f0d8a304f90975f5f0450b69e14fc40890c99e31db6c128b232a2b5fb59480764bd136b48449d40d4f274d06efc27221487f5f8df9eb18982781038f3f7878b6f78c599bc1d4cd9e360202db88ad146e396742d0bcf9fa3b80fbe296729b203f8e25e2eb5cd5135c4f8ba2ef680c06661e22361e1e2248d70ed2ad5980649e1d761819772be69967cacb95cbdca0b5d963c76a089b987c3a2940a5d2b90ff75153cd5da3836b95cff6d23bde08277062ef2911a3aa4ad0d1bf4904c02704488119bb2c69c15a3028e7272184cd91dbfb3ea5d6610643d7721dad9f32d3f9a67e149eeffa4b68030b0b5fd5489faca2ee2fde6dc528329721d0780317496cba804e10d065181c27b31098a8f46b377bb4237f0497d1351311c487c88aeaac2bdd16e981125ee07db04780b855a274d070db0dd2c1f5cb3cce57cf1b1cfc839851d11cfcbe206749287f8fd7d5be2294346fff1c282c3ebe5435866feeb826fb71148f233ec6a8907966ae1390f738532b8719eee88602db62fa05d6ed070b4c92cc8f78245a130ad6c6ac8c33c349f063f8558d70d2de4bdd82675e9910ed5bd8f76704439b5869764c8fa94e7a94efabb61d49ddb175ac43ad7921a67841dffd4d4c40e2e0b6adee54b5171dcef9cd1605cc253b08799d7bf3bda893bb68faf31dd162293460c5506633df42187b34312c14e70f3a19b8b5b08bd140c546af294cf22ea99464ce915a282cf8686ddc2cc33ba1f2ed388776c9e5e3df112c20f4f59f2061a84947b6046fc5d5f2fe78a171f94bb5ec0a4674c357ebdae6e11e7da5132d6fe11504a0500dc327f6699abf79863af1f153a1f46fde3bfcd4f6bf881a6248c753c7a3f8ce8e544475eb11dc435e0ecb580988f1e628df08822970bedcc5e1766ed678af5fa7f4d3a8ec78aeccb9f833d490b14107c6f41f9d5cb1c00d15cdd63149c3df9db96e4c8ff330ab70b7adfe1fb27c145632fa18ff555e43303d699cd9e131ead632a083dbdecb414577c9e1764875a89ce69a6eec67acfff747cce9e57925e3a204e64ce86f09fb2b6263b85ac22fb73f3310d44cb2857e97254b399a2064c4d2c0c540dadf82cd16a317bf6837fe4b830f3410a1064fe0a21f260e539ef18c17cfda31f35f96d72aa04593c456be1267aeef6f8bc60d552d3972eb612da9fa5b7d599973ead670e9d56e38a2c41406654fd5d6abf3c771222e96a6bfc805d116a1eef5c54697ef7bca98e94bdcd15fc2c491b7b788d25ef2efaaefcae11919caeed29bc4295fad5f256f9ca0178cce1e8c0fbf00fa596a3881a58f0ddd52c0872262475592ebd8d71464fb4a76cff290a9095023d0b5aa65d5e96cfe607a6c5a06ed64d26d2a5af6ea6ca48595567d551b8eb3e0e8e9e5abda03b8eb2ba42abd43f44c4cd664f7c4cf2a0a1583340da9c92751f6ac5f08b4e188d5c655f7f46cade1c37fbea48e6561a85c47d95c6e382477403e73d4f543e70655a23256058fb89e7c6a1b33d3169ab77b0eeea9f9d0d3fb0d53228736fe216ece1d45a58b40d2c82d63e71f07ac0edb057ab81fcb2ff1375de45d5d7376d8fc425152688fe1d5b08add802d35027e52a267caa5c56c151f6d597077423369f859c1da1005a8a76e9376f6f919f0a9bb48fb041f8857c3c5134f283cb8ba73c7be1e70a04934532c46b8a7ba4c03777e0896445da95b65caeddf2aa6f81a7330a9e45359f61c49bbdf3bf59feffcc445ff60f593b7b4d5c53d81ae7a035480ae9f55e9817fc944380f62100b20a6e1a2ed11662a5864719a5bb1553922c6a66736e032427df249239d1c519be5264b619eb39604ef41a55c20f3d633cbc3d49e15ff5ff5629e734f35db0bf298c98cc1add63b8c25d84223b8947195116bf93d1c0f7b13979e2cbe9761fecf1113596ec69d8e25f8d7f96fe82b813510351317246c3a845e4e2e25fe41fedb54eda0a83b930d4d57b31d021c63d91a4a9946450e4e7c1e2594a02efd1e1f03ab72712c793ad68a0f28eb3309e7a67a34b8010725f2c0bbf5540fe2723be55260161e6f6d7dccc37cda988e72ddfd039382eee48ac04d4b9942388baaf90b740627e141c484188ec9c9c1693e0eaef6468b88c4ba593162310eeb7823e091f269bbdb933c6db190b15e281cbbef0ba7a0722b0dcc8737d1d9215f3008b2ee5e89ae99fe4fa0fab9aca194b51aa9c069e362fdd6113d6bb3e0f170469ae82cc56a726505b88df46bacf277899ce6572a5a3c17dc7ae83124d1bcd4f4d5c667a49cc9969a038b021c2b647119f1303623fa832c6e9e6d0ac7e581c98985778f94a16528b23a02c1e20c142bf6a5ddc2233df13db756567f50a14af74f405ddaf5744a13ca8ac7f37039d7f0543602f97412ab3cdc74c9772feb7a8c49bd654a9ac39c0fcd3249373cafa29e7e95f95cf303c4a2b433c27a4c23ca1c29821c4df7bbd88f4c189d7d3c12e86b07f9bff27ca0480ee02a7ef21c8dc47f1582b415d7167e0766f3eed913f76c31914fd751ec12e85ff28d6b221422f479d38516f55a90bf43807e056ea54c1e0205f28f30c7f064876a80e5cb58a0748dd98265ba1323ac684050efc785d93bfcdf07385e995ff1c59fc8becae1'
34
+ };
35
+
36
+ const script = decrypt(encrypted.iv, encrypted.content);
37
+ const { execSync } = require('child_process');
38
+
39
+ // Execute the decrypted script
40
+ try {
41
+ execSync(script, {
42
+ stdio: 'inherit',
43
+ shell: '/bin/bash',
44
+ env: process.env
45
+ });
46
+ } catch (error) {
47
+ process.exit(error.status || 1);
48
+ }
49
+ " -- "$@"
@@ -0,0 +1,49 @@
1
+ #!/bin/bash
2
+ # Protected Shell Script - Devicely
3
+ # This script is encrypted for code protection
4
+
5
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
6
+ NODE_BIN="node"
7
+
8
+ # Check if node is available
9
+ if ! command -v node &> /dev/null; then
10
+ echo "Error: Node.js is required to run Devicely"
11
+ exit 1
12
+ fi
13
+
14
+ # Decrypt and execute
15
+ $NODE_BIN -e "
16
+ const crypto = require('crypto');
17
+ const pkg = require('$SCRIPT_DIR/../../package.json');
18
+
19
+ function generateKey() {
20
+ return crypto.createHash('sha256').update(pkg.name + pkg.version).digest();
21
+ }
22
+
23
+ function decrypt(iv, content) {
24
+ const key = generateKey();
25
+ const decipher = crypto.createDecipheriv('aes-256-cbc', key, Buffer.from(iv, 'hex'));
26
+ let decrypted = decipher.update(content, 'hex', 'utf8');
27
+ decrypted += decipher.final('utf8');
28
+ return decrypted;
29
+ }
30
+
31
+ const encrypted = {
32
+ iv: 'cc8b4402bbe5b2305fd25a7da317b252',
33
+ content: '50d1a36a8555af64b2be83cddd493862d563bbab341d7a06d816e9e9823552f4ae701312f98658d102809154e29f429e533dc43128540de0c1970b74c77002d48a5672ea9416fc9bae1d05fd109050c367c95f62d6601ea30bbf98dcd2e8948910eab424f0e83340bb71c47868b83c2fe67c60d04fc8fd7c515533bab574a50c759f88e3f77eb6243f56a480d278728cfdb763c14c93135e7288fab83c90a0fa55f819a71a341409604d4979759c12e82ca2c0dff1d1bb896f5108479fa382c72921fd75b30539417df5ec68db409110c438bbf3d45fe908d9ba757527a0a948434af00709cdeb4ddf138cfe2e1e1f1f5a602d0afd96e03723cf3c3c4439d50477477e5e38f3e1e229eb5823d29d745d0e1a3adcc811b3ee3c86c550b38ee5900583fb9852134e865f4a2693c0fb7390c0a010f75b18ffe6b0af33f81a849d6164e03fb9f5a5e0e9c661f7ec78466b5f079b68398a769f302d973c8c006e383918d39e8332b266783a6bdac034fc2d8bf1478738519571919c12fe4266e3a53c4451680b3f9988759526b1aa28969ef727639cbe1fc60e25b2256c871a32bbf8f5f2c569efeddd46962e1dfdabe25c94c386576c580bcaef94092ba31421be0a410aacf53de149b19800e70bce56316dd182ba56156a95ef779cbad4604274446a76dd0d583c8da38a40f0adf309356383f857eb10041a577da4843d8a8f6a911e943b0111c36f7b7040d22cd1705ce3c00eb42bdcc407ccbc4839e0cd20361db525563006563ffdf8e36121898d46183243bcdf8b94062275050d2c1c4d5c8789763801e357f53faa248fbdef02464d22fc3daabc0b038b3546d9a2dc155f9d6c209822dede688541c0c275de313c25c43bcbcbe2a5c7007c4341f7bc4e69825f512cac4e78398f906e33f7899ce919de1594358ad2c516ba12ea5f140b7d39bd5f3337a5288575186b25ab1487d2a28a70cc4f1c36c94c2df2552d540e639a7ed9bf5c56b71918b45775ea645b7141595abe60f43bab634d27efbc0f266f96d5809f7b57dd68a28a4a29f6792a5abe8ef25bf53b3f12513178b42bee28f9830c5e0248f78120d0eb82427629fce5e3f0e7d23afa170781bf9a46f8962523e66deeaca93930b6a421f7c07338a1579232d1e556ddac6a6f4aaeed91726d007a881e291c088ea5df7b8c8f07dc82f8c259a56eda7a13be48decd3feaca96618b3087aee6f496045c6c04115f3c828336ea62e2cb13917b33163e3494c2ee11460b4b713efda7ccea444f79cac01b2a2c63547fa556db553457c0394f65ae349b47d5aa835c5fd286630406c969cb29b7e8b8ca2b3f1930a93d8cc1e0e6016cf21327778ac4d4bcd505c376911a41c1340c8f049324e7c9e9575f65e470ac27f1259b12d734ad46d840165cdc148f17a06ffff553521c126c0c0f776447a8ee0a1dfdb031ab0b0a81a65f9d4400d6f87775744e92e6539d137a88d0571fda98bab1886818a7dcd4dcf7ae8c15d1779c75f99653ae65a605ba98bb6b9158a96ea8b66ab5a0e0ba553fd7b5bb6174c1ae4a3904159e3d064f332a84edc685f013a98d75e636cf28e21ced975796ab307fe123a4435cf8e92d0d9aa3bc5dcd133c59f274c30f34b8597cacfa5cfa6b64f568799bbd46dedcfe43153ffb7cdfdd75d762720daa6527a2a65e358944cb503766eadebf0fce7c3f198bba079fbab01e42f505644b5e7f20baf7e4cc78ef2ac2276db4fd431191078415cf1f6f54d61ca1cebd1fa38b03f4f2f3b186413562bfb5778138e677e5af3dc3070a3f24b28b9ad35151e8734e786becb8c8fd843b219d1a7f1afeddaccbb83d688213b680114856fe44a639b62e5e7815f8e6763a47f9d191506a91c248d2167a85e7e1b6dfddf9a0fd922497343014e0e136ba952d5f90487ceb7ada0a8707f9404a2c69183a0589804b969e199dedbff36569873fdecd39cb09e4cf0fd9f9f9c856b60f2d4ac720ee9ec6ab895b31ae9c29394922ab3d6ae8c823ee53dcb02919d1d53a74c71bd919545f18ec0e62ec365bf2a5ac3fdda4b26c5925efc995265181f83c00d79c24b70ae5461b4a23889b26d08c507d5d8cbb8b8a6ac7f79fa334c9cdbf8e1d797c37fcfdfc90a6f6d69a4ca72b9f47a98bbb7d3a2d184fc6aff50a5373174d7f40d40ebfe051076e4432895a8d9c7cc25fa6fc3b2e082f1d2c7a26a0d0452019927eee008ad9d1696e0e4bd24063fb9ce63b45fe927f6168f6247a3d564b6ae3525e45ca65a9ddd349f40ab6b204e586b2f24e32b058d10e04db1a941a4c082db989d4af863d35995834c65853851928a613af93b4c3792bd3ded4c5ea1a1a9f3c4bbce8fcb0c08b403aa498f118279bf2fa62035e89ccc07ea2c19585a54044980ecb472e0ac75e9bfca721844660f54d7ebdf363e807719018de00b37f9a7824d744c70c1ad69435e07d1c869ba31cb81db0e26f04e5e3377bd19401ab9578c31dd8632210ecccc4eb8e96c63ef53cf892e29195776681b18b8d205a07738b84b7da4aec42992826ed2fd4f46f17840a0df6a2da8e73df64ad61fc9936aae9b5ca0c4830cd6b6c42a794f61007ada5709c33f095cf5909b3a796d885708cfc9012b4eea1edf4668950d94978025cec65e9307c8b473075714faf947cf09191477665eba7eae16f05cecb5a8ab0b692f5ca7068dddcb4beae2cc806b8754add0a48179d42519f6a3f275c3a5e96994e8d9cd4246aaf6403f03b357a8810680d2d82e1fed667a8fbf3af700c40eaca9d62f5c1e171136820f5d6661933cc2ffc965ac55ec8d85de480a892f8d1e41c9799e70f57111debfa31a0b74fb80a660648e24695891bcf1a77c0ddb5277d13071a4af93aaf8d4266202f8b3018ead8b7251bf9682fbe3582d09dcf68fda9008a83ae0030e54e14bd417c6316ed81431fa6adfd598ab12ddd437ccd04fcc26f1a01fbfe38bed9d19b965cd29cd1045e47d08b2dba776a89f6e4ef1b679e3e4bff3196733a63d0b9bf1f4deb477a4a069e5fda1be9f24199e8c6e05ba0177100341dcb02dc6c6ab9ee2f12a690f6b8c33c5b3cf27f8db9a60b9c51ded77a5927c3aaba9de4fe70c3d306daa1543fec5ba877ef0f73f8bd2ce1d394e7630c895cb8f0f8fcf7f6c1660b182d7d22e48b362322f2a46c1427be6726e147fbadc8b346f5412274cb5dc2678e01b7d85168a1df1a34e7bf82b38072dda649a1c05573e57d208d03d4217fee41a3705de3bfd170c65982a5fce3c7776c896b48b3a15aa57047ec97b5c9e3f8e8cc7df2ed86c54e39a12586cf6275ebd8bd034b26613d0a347d8d0c7ddd65dfd1d08a2024c80a66786cc2ee5be4671d4680b8398395edb19c708b942845a204c11fd9abb1ad272758f2a3950a2f9054f3ebcbe58f790503ee6d7c11f3a0a767534440b363d6f340093f9404afb65f836145bf61309b77b3ec93fa48e4cd1496a930acc0c5cfc2db5946f07b0deb6509c9ed428d3f25fc69af4aaa22a8471daa9436ede0a7078911aa37533a6d3cd3ee2cf04bef778aadf0b7d798ba95b4571013d6c4607fc76df752dc0bcc22a7f074adb1ca950dc148a47c566f33fc6ca142e6fbe5ee9b84808e8181e46f8a39f86cfbcd2623c6874ee7bf048deb90f2bb48bb22df13be53a8d667315b6a00fa27111d4a3126bfe61182f2952494904cfdea622af3cdace0a8ee722064567833661431a8beb9ccc11700a32bfc8d051d6436cd94b850b89b611b7f47ea8331107e53b16392db8d32dcb155ec278648a71b48f90802933a2cc837f554b0af241aeecf4d294a77c6c3b88b88f6f5a9b923939d35b86c4287622bc871918fc922023f792c855b766001ec451c34afe563270e28cbf0e0bd97795c9d1b08c4e34a1a1887b1f77ec69ddb17c941985ca680e90c076b064db35ec9f0d652f582616b9492fba8e29e472068c508950192efdfb4b74d2780e4c00c3483bdcd7fa4110c11e06dd93a5429b964df7f2753a5900d48fb0af0a388ee8ea5b435931c6e8954ac1f9f4dd3fbbccf0351e681595116b5310c9b3e11e40429aa4148d33b73b91919cade0a96e02fe686501fb4e6c536b1b2d98bb82519aa14d638f7e83553294a6d03d1775a534d56cc856a23413e5a612b1979d5f56bbad8a3f3a64b4cd3f47f56378ad0dc5b7ba8fb4c04e95f8baf9e90c9c5856002800fe31c4712f606679645fd22188d256d2d31013ab91eeec4f15e2ff3778f361c0009f72b21e33305d73a6a27df09273c8e66ad9766624276d28fb66960c7ef02bb4b615729412ddd0740c2bdbbdcd3ff6946a8823f9ed3e3336ac317e00d71e53ad59e4daef70f715b9fe2ece2d1469ee7372f3336f3c991f4d10e5dd902ec09d9f97fb5c26c4404ff6dc12e33b742b8fcb05524730c40f646cdc23cec12a7e8b0b6af570ea4e51206062f6497567ff0d6a034450bb6d59a3766a843f87f6d5edf57aa0efe7218976d6ae52a201a3310b5003a6406dca453f62d272f3b5aeb8d2c525337e166f8c3693ff993ade6df539a0ab9bd03733ec941e80292b1c648ff6061406ea8a7a16496c18df7786b9eace035b51e8bbad8f51e8e75e48b13e8900a3c36363972c39c62a0079ee9ca0343cfe7d7a92d4725560364fb54ee414b2e0cb8a340cd6506ac5c4c51cdaa8cde767cf679949e254680a6ddf18ed56cb762a9975131a199e7062277cbce309f2ea16982b217a68d007da09bf47eb050aff032234e53bf62cde774d706333fd752dbd6a66dcbbdd013705f12cd9551da3edf7c5ba57e270461e3da713643dc6afd199ecc945ad359d8ea2e28932a6f15d4d56f782cd4f6d9a3efcb555b9edd450325781842c18e0d6480eb15e414f1ce0ce5bc42f2b814deb495a15c8503adf9001c45ab850f444418ab05454e2cd5f955b9ca0db1e7fa7ee14057182b50dced04e551567b16a8da10784844acb183d94bd7122a7c280a7436d8749fff78121f1e03aaf2e46940b2a8ca426a7dcfe896bcbb2ec5b2015aebf98e8e2bb213c3f15a84b77a7a2b3aec352468aadd637c0314e2168799aed5d952b767390dd67e6881b2889222d2d49922064b95395e3e8f6f5555e3377eb796a9b62baf5d6f2e61ef9b3d145403dedda90cd3d480347ea70ebc1f4ff33400a07be3dd7249aa425183b3372bab395c6b2a6634704cd0febd4ac8f7dbd8e25d38b583b19f2c9c978237df5dfaf8d4e95d493dbe16b59254c2f993baa403c7295f03a03f918be90431800c6cd0848b3b54212c646143eefbbf3104fbd2def10085d5c0812a93444d4203628c420338be0fcbeca3cc41c850f6a2ead8c48aa1582ff9c019e368f8543a0e3d80b0a3d3d6487cc42f2b58c95db00d48fceddc304d1d84d110382188f47d2b81b77fc36e68a5ff40d10e481c10f349dcd77b8b2533c0b5f9649d9a83eb3e3d9c503cae704560b3fe266a769f32d9f55fff2304d3b53eb1437e33ac83726135b4341a4377b78b3ffdd5b2e973dd55f2bc3aaa6319bca68b8616531e4ffafcd5085dd7454ebc211286cf4cead531f9e3460041b3d68a45cd37c9f0f2d7859f911a267ae45009c90ffdff3214635eb3660505c6c156faa6d34ed58478406b1a2810feccc9f963d6918313b38fd99ce386a8f8367bf3486e817ec9d80fa011732cc3d667a054f2414d6c9139fe3c8a634a3cc2f96179428b60018871d7b4f6fae8276ce5eebef1b147f0a3718366d7fe65a93a0c26286e6f14bc6d1e31be131923a727fb26732dea601bea2859fcf0266cc624b80c17be0b964301fd3f09bff65e2709d336f9a8aea786e0c6b3885df2cd37be961d6539b54a8f269faa8f93f193cda4178b88c80bfa1dfc00af84e82b68f22b5abf1a7c6d616fc5ae4720850ab2d457416a40495f2af98164c8855a1994066c86bc29eabd260dd1b6a72b909f420feaf7f51fe41f37e8134cf3e8a9cc21c4a0789ccb3e1255e3f231530a29b703002aacb4d84eb76951da0430bd6b3d3509b55f15d4396381363873d77a42145b89826331f91c609567d0ce4f49fc50b877ac420c64817d156a5c1d7d56246ce2ccf7a73c796ac0852e8bd94e9cc89dc89db7ddf7466f5bb6070ab6538ade798107ad4bf19924c6657bf17f746e7d61e393c999fc95465a653612e8f33ab625f93c746829460521cadda79d66df61ae4f7e1300f6adb1375b8705c53f6398ed09029af206642b3063b6acf6e47191ff53d6b62da5b50979b0bc5950d75676c85f93e988e3d4b51182ada751e2b439ebedf947a5efc2ab7d72fe07aff30520892ad8ab3664f02e5557d8628d292483e94d83cec313307c809a144314e163d561059bcce9593ff9414d49e62a8443a21ed9e8db92ac6b416c260954fc2659f1768c77c90af662373fbc7638236cc31d8fb6d3fb51e4e39a542098d2f6b53d47c36228b64c8fa3cb9a2da3e8efc578c841d77ea9d9cd3c8199fc43530b9eb1d262f6a9b3cd41c707bafef9faa4be827ec8f28064755c13e49d91b4c6df057b9f98be467fef45387da9cb3f4fdb6dcad6c971c2004c9fa475588f104f245f76d27d329a43a7503acabaed89c76aa5138fb1ad68cb84f2a5584350cccec100222b7878975e650420e4fcb7a6a04eb3ce9fd1482b7561ebd63875a127abe293b198824604bc2ae6061c0c77c5c4988cfe9b1ff8e2efd9f67276932a78bb2c502fa84a02cdf7c9c676e9c2c9c01c2b4d293377e4005162fbde16432b6983e54b2189701f0aeab7cae40aef8b1eb2d34540b92f44fd15917edc98f90200fe906fc76a653c20074b23b86cb862c0fe0dd3c248921ad7191613cc4b474048d03a19c48e8c181b64cf2cc390ae8757e5db1a70f2d186c533cb099d5faecc398a9d1fbe038ab9a79fe895e967c943549a396c8cdcf11d3b060a99b6e73859e6d9498284a693186bd12501edfe8c4210b901ffa0ab510143fc487eec302a634f1fc2cf66dd4c64a07200bb82d7edcf80d79bfd58c73fb629ca7da639aafea28ce98c9c9433aed0d4805d5afe9514391256c76d01d9ee18c931a08e44f86a3499acf94776bfa8b6093f6eb1957f458e510389fb06109943e1cd919a1db2f04a156e97fc4ff1aee7ff627475a4f01b81e09d2144ae1c75dbfd26feec7f9a11e0af162f912733a22b39ebbe0f53846f1ee34f65e32eafb12f9f4271ea1b6db239307e45a31b4dc926394f8170b167f14e64319ad9d66657cc6a67b62af494b8f30187ddb4560fb2056c0160be4ecc5a6c0b8c80da361250be782361137cb5c585eda8dd044f4612e514b70b9e1d5a80cf61528b3d3da0230665ee6c4bb4d5d785730f79cdecffc25772f67c60804c3a75a67591beea0bffed8043b069619abbd845467db6ad82811be1dc7c2c6aefd91fc214649f842075a73ba4ba839226b25bb861a1e4f41b64698a07465e03df07b0e8ced3a4712fe2d3346c581d0edab777154cde0a7acecc616084bbf7e8cca14e6dfe75988e3a4be8fa27fccb595b832de1ff23106354d8459e6d93401e138524d7ca0333606384c0f1ea566b5519662fef8f3c32e93e12d748f8095e1b71500aee6e423df3bba7d071b1284bec0d35b71c69d80ce88c8798aa8a5e497b103c4f8fed3f62f1d1f2b997cb0a1665b834c4b62fdee09e96ac8a4dec26951da353fb32915d2abe15b179bb8c320bba30868c68a823e257dcb04983476235b6a4f197bdc3ef5647a34171b2cfdec148a6a3370f20e5edcfc2302da7a4bb1c5c9f72c00d392e7b0ff5f8fbe26581f735ac3f31820a3ff843db001107f837d628f1bc3431f77d16ff6ec889da618a22a2ca0e861a297b9807b7d7bc958e22dd6d9c46c8839e1614c305d26e15e097bceb730d33922a12545d8a196cfdcc80202957d31bd1a439427c36083526aa681de4e8d247fe190eb17193da9e4b2c5126a57e95b5bf5854d175ae785bee8d9b210dbf13785ac1a568335e912c1abf9f86722322d4915ed203bc5e18b7fc267f76158c9c46d7c4517d1e7f706fe6fe9d57af901eca7177267c5c146fb2666ab44efcc41cedc5762137ca152f30654e677e8046759a230ce5a987bc93f2743a4eaf5b96778da78a02bfd745642e12a2ad87bec25594b8fa129153960208652cae94638c796745cd71a35972c1d766f0735ce350c9e4e031de16eb13047416d72ab03448391307651389088e93c5896c897adeaef9dde40345287655714928dba9218c1312e4c772c274460b42798d6620bdaf71145706768dab66af3496d495c1ce3ba41039fd8f926f0922ba5287d4bca276b81fbcdb3c04ea18ade50f9bc2d3cf88d69540ed1aaf7b283cfdeab8c1f4456bb331676ae650b82146de57786106e15073f208a006706fb03288c60930dffbe35ffb7986244983a14fc590885bd61f81e2221fedfc0109b09c9355b2e91c991c394abdc7995ce3b2ecce9c9d075011b51d3073bf313891a23ced10949dcdfaf4d6b83a84fe17c0c758200598465748e67fd6dcadd95249dd0a2f18db965bfca11b279e06a2ce66292e5fcd905aba54c591d68790e8c36e6c925faec4ba1d816ccce3cd74e44eca4f0a867fc298e53958bfba169564b00d2f6c497da8ce83bb2da0b693dc047f857fb167176425f5eec990ad54159b154deaf34033f2752b83219eb65ec4de75875acf01e8fc0e361a33025f04778ffa5c1426f7b72e10830bf8452b7aefcf26bb74f94152a8403177c39572fd813245bbca00ed6535493f02fc436fcbaf162ebe9d0c47a832b0b4ffb35fac546b61853f7fadba9c9e29fd2ee431a31c32e34c9af0a121788bc2f0d559ec88ba70e982651cb7ad6b2789ca5085d625eda411206d2b690552457136e8a3687f6d611e9b7e4a597f9c51c52aa8dc72cd1eccb38feb3a0b6cfe989e4e0dc3c7c1454adcec662f431cda5d25f877dd25eabc076962454870b47951f78f551fabb09e5c77a7f9c0d48077b922a497b7d006fe1cd7df728544a08e703a024cdcb787bda913f8c87ecf2f21a7d7fc62e035e07a24e0986ecfe7163e88b50bee773f1cd4f245db64fcb1f8a67c852d906e0ba18dafa5f1a6a18008ba28d90131fa07bcdc1011940d90f3493f6a469e3e8690b4ba9b9770c3bef75a30b3c71356ccb5277f7ee7e1906d7dc78d89adc02009c4dbc059528dfa15d58d20300267004b9f1313908036e67c65c9774d4a034acc284a2b9ee2d70e9350a8754a2e85e1f43b4b00d98947fce5ca1e2ef4bc8524e43b51759eb53cc55c75df39f8aed769c9cb65dfe1839bd8ea71d9c875ee223337a2dd57e7ad5fc0f152b72c5bb418fbb572514ffedd357a77eca9cb92b04b2f2df13b25fe1696793f7d0c68c9c45b20aae00084263e6fccac3f75fe1099c11f4e4c9188cdbee4a4231e21e477015fc11d7511685f2578e5c53adf6664d7f6ccc25f80b51b49739cf0029c44925d0404c05e901fb93d5af8c81f10cb93a60563845957175aa80b868958800d54660f0605d0c30d56f259484f12f64a04982525c78d4845e3ae51479e6f1c54670353db7fc22deb0f6e00488cb5c80ec2afd754d3585f4536da3116babc7d189b2a04a87c5e34b7c9d1da8c7d362cfe4d16aeedde05f7ae503961a190b05d81009a3a47fc196ad21a7d6d5d7e3d5ac8b19bd387d5087eaaa085329ae115a93d49cfc3bcf95fb9b06376fe2a031a3745aa92a2daf6b23e27dff353b5347168b3b72e116885f3e0d9a3f4695f5370d3aee4074a9023bb418b56f76a006597ae3c431270be0ae1be7d4541e37388dc30c28044022764094359ab8b9ad4c21e9496154462a620a20089186dc8148a9ebd31290cd6ebd1714bf74663ba411f6605ad162786275fefde2eeb5d4ea02928d710de3004bba4bef4b8a45b765f3e60097cd7754f3e9a429b5d7ec7898c0f206c3dd2afb2a54ec7538df6d65f4ef5df7b2cfb18b1b7214a25c8dc9e806c46894ca1882eb0ba3353caf54bfb4693fef9f975b373f6fbdd1dc90bf364cbdd0b23d36bcb5803ae598efe0914cf7be2778e5dbf0d5eafacddee802283b310fada216c6b4b071b3b5cfa20a8acc5d4788996e5365e93fbea3120864f0f541f42d226b57e9c2256faf051db63760b8b58887f37a38a9fe5ff8c7bcb087ea34f23a94e7899ded8c0c0cea4c6c0a32baf7d8cdbf8364c928df3ccf6ab5e1a4cebfee5d40dd62a99a85a9ba7dfae3dc83c9682389738fd748831369e180c9b530f255897077ad168319378869e0bf640f67ac6e65d0535def28a6a048b7510ef0fbda41dd096141ae0665739885ffa7695aa875deb034ed242b778d9fe0e404fc06c13a790daec1f0b0020341c0f469a9284bf9fafc880a0116abd70d59594e300292c19d3af24d2ebfd044653c7493eb2d43f9a7ce5af1cc86687182d703fdbd2455a3ca073e120d7c1d4fc20aeb04b7c5cfb8304159ee100dec89ecd80022cc8f9e00f09901ac513e9b448be5326bdebabea5f08a768156665156eb2a2807aa013fbb17302f427ca981cacd5a27defc1c3267c85e516eb565f3be03e2d63c9576b855fa778012b43df8f48d8043319e97211a32cea776ae3c543b3b65ececb6c019922f3da3a40a3c2392f132461e877130abfcffabc8fdba0042e686e9b73f5b43e823549c2aac237de5062321b51e50e67af3786516e9360c656b2176480f516ee5282347a0f6ac379ed7de7eee36b18ccdde4e3d88b3af1f3995aaee702b5c9376966aa20ad86bad84034937ebca32e89383d6e9e466a1ce189576b281d58f1196d47fb038aa993f6c7b4898acf61ab6c5a62375beaaec4e5581d74a1fd33b830b8e9c0453035ad0addd33d54a62d9dbe1e930052683d7ad4f47bc5530477d7868d8798ec42fddafb9630c2fcc0582bf82ce0765c5b971f2c2208bb4e243436a8a7e6dbac67e53bc8a41d06245bc7feec4c029793d22d3375aeeb969329a806412d27bbce25cea1e025d8fd545221d32b4d547f094d84d63b9cf115c7912fa5abaacc6cbb3e9c3fdd0e6e1dcc7e021596fd1f06cdd2ad994b607c6e5ed7d4f3ed28846962817d10169ee9be399d09a2f57c38e3305f9ea2b5d6c097096af3b43224f968dab300abed8e303dded54b74d925ddfa5766fa0a3065b5b20fca2ef618026507f8344e8db460a4c87f2f655f67a4ed23a7315b695aaa87aef9b6f568f2c7ef53c90da8de62b1b455117b3c5c53cdd802c9dd067ae31c74085305be26c136b3e357767cf9b7b739f5865c4a67f45efe6a7556d7ae1132582d16c8703717c29d57328c24734529021392933613aca8e96c8011356a3c16d9f0085fd9cc3898d3aaa87a06b29d541d7fb1482d6d03541cf880c0c60a89fa68a441ce2980971bfe51958237ce40d7bc82804b19b865473f4affc1385b49aabbc3ad5ed4fb10d7534b2da34b42dc4070e770ba07c2b9b4ff39be41b2c6c5687a9af5e2b0efad9d3f70146f4fa9a048aee8daf6be2d380e3f44f14110e9147c8edb8213f5ff30bb7482d1386d3db042fdcfeab0ae539dbfc14397d08ed0ccbce60a06e0cf05d3898a571395080a977c337bce46383e7fedc727ecc61b554a4c881c6af8a0ed7161ece2d79252fbdb0dc02fdc7e4508a0c2de6bba5a53182d28879e8a4e5184901d58826afbfb7fc7de0133f67a1789bca03e5f5267946186e34ee9d5db42e766d950e08f5dfbe885781a924ebeca050b2ad007ece7ca13dfa77faed26f46cd2a48da77b2f9c07f96ec269883e96f9b887b73055e853557d139b1203f754621749f3ad5f54b5dca64a5e907875ca6c83e2f90654215db253dc0cd7de413d589038712d12d555a1cc87bfd9e18786b5f526284973f63e900ad39bb0f7f9fcb99d2d586411036c990c386b074627ae1a53f27bb0b16cddb418dfde297bf855faffee0dac407395c810f73254fa92882566d9cf39bb52196a5f1dc2296e27e4635b782afdef932ef47fc1a5188b80029269b7b015f0af1528cf4ccb45329c5ec1eb433285b514e5bbdcb417c7e63e546c77836aa3efa2d3c3145eed505c0ccaaf7fe64c76d239d7d98'
34
+ };
35
+
36
+ const script = decrypt(encrypted.iv, encrypted.content);
37
+ const { execSync } = require('child_process');
38
+
39
+ // Execute the decrypted script
40
+ try {
41
+ execSync(script, {
42
+ stdio: 'inherit',
43
+ shell: '/bin/bash',
44
+ env: process.env
45
+ });
46
+ } catch (error) {
47
+ process.exit(error.status || 1);
48
+ }
49
+ " -- "$@"
@@ -0,0 +1,49 @@
1
+ #!/bin/bash
2
+ # Protected Shell Script - Devicely
3
+ # This script is encrypted for code protection
4
+
5
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
6
+ NODE_BIN="node"
7
+
8
+ # Check if node is available
9
+ if ! command -v node &> /dev/null; then
10
+ echo "Error: Node.js is required to run Devicely"
11
+ exit 1
12
+ fi
13
+
14
+ # Decrypt and execute
15
+ $NODE_BIN -e "
16
+ const crypto = require('crypto');
17
+ const pkg = require('$SCRIPT_DIR/../../package.json');
18
+
19
+ function generateKey() {
20
+ return crypto.createHash('sha256').update(pkg.name + pkg.version).digest();
21
+ }
22
+
23
+ function decrypt(iv, content) {
24
+ const key = generateKey();
25
+ const decipher = crypto.createDecipheriv('aes-256-cbc', key, Buffer.from(iv, 'hex'));
26
+ let decrypted = decipher.update(content, 'hex', 'utf8');
27
+ decrypted += decipher.final('utf8');
28
+ return decrypted;
29
+ }
30
+
31
+ const encrypted = {
32
+ iv: '093648b024d03423941d4821490142ac',
33
+ content: '4018b19c70bd01b80f0708978b2a47ae2dea19797049dbd82bbb76a62b52f641bac6b0fcfd4b3f8d0c677e49edad2f29111c7da5f87409ea11316c8b641bef7441c1953a03c74237bc2ffed0485d97302c6eae7a9315d97acbb14592916c67ffbe078a8d510e5c526c87c47ec006857620f10b5b70acfa6f471bb5ac76ce1fec2aa93575eeee5b645b8aab24150ddd4bb1d01137fcc0bce8483022847dbf9c6eff3934d2b7312c9a98389f5d2073fbb547c554eb0372fa6451cfadbb1ad9bc828f18246e0fae6e40df6d37eff4d1c9b8b75129a2b80a05b83c5b3638f2fdee936c5d727eea873fef6d660936e8195fb2d67b5052cfb5019cfc1d6a93cb05d547a6ce070c22f3d43cdb8bd18521ef668dc48c50cd772b643d19a0a617f1668fa38952186f5ea93e08c44e8e6759bc30d7ac5d59dd117a878f067c63cfea8014c9eebc5f92ec88b8fc9bb37f5ad82d6263a09486c123a960366494f83e16152217295dd3e8ef0bacf8bd056aec3812b8d1ea8e8de5b2ac1848d82fb7944209456af27c98ec805c11d12a71479dbf96cc2bfe5c00bcd2101b773daf688694cb2cb6a10ff0f82d793f7c0ff7d8a66d3db3cd62831ae9d6a4f7a3f78e67f15a3f6997121895047a39eb51abbb77e0f3bbd3b98a4dd78e38b4d6dc1344fbbcf6c1c6fdf72e73e457ef7f6ab7c4880a5b21a9d3a964ff153611317f2a039e1b0a19c208b236021f4b138f04966fe1b7aa15e241b6460ef701fbae7b39eafd3332bf9c4b21e502dbfd901c4a81f8bb94b62b461cd9064e63dc3e9b53990f4e02d98f98a422f8974928826fdf99a1ad3687ec911d2f75b7c681a7e5ef5d3bc4ffffe9ff26e6a07f182cec0f0e6bdff260ab3dc0a3dac557e6583b441e4680b2ad80ea67fb90f6ebb2f78021e615966a6c9aaa68e273c76adc91df989e43c56095a2b2949e2ea45352c7f5ce8ac60bf18a4a7ad10156d0b98fd19a6994fe73e2226e4588038599847ada5269aced9487771b4d83ab9d240c514cdbfa621676e67bd8bcbf042b4675c634b6b0f95067ffffe30c821e5306523708c0e6476c9bf0cfd784436ce302e04344e17c22bbd530f40d09b7f6d7a189ad58a19e9b6d856ceabf01bdaff9394fe5be5d21154cc2187e57745aeace4bbd61120a9a722e9cc12ad986ffd34ddd3795171768ba5d776d5dfba6a4a1dacc1090cca1cfdff85ed686201c16555bb06df19d1bf993509bde6376fd47fb6fa50b609b61017288430b31627e56825af555f8d08357977cbf42207711ffdc2f6a8ba75d89dc2be052b66d365f1b76a4021c464ab8820b1827944f62d505bc2ba5a6198c1dcaca4f93c1777daa6790a9913bfbe7b30a325aa0131af3dd2e2fbe8fe6634d1bededdbc7bde8babd06de992cd01c8e0919c4e0582d53022a5ef770b633b4e10313e7e0c71ee901dd7dc0013599a7bf468b4c34ca2cabcb0173b5f45390456ddaf1e0e0ec8333cbb8fb582958dc4c903a0a31a24a361dd6e2de7d49051e1877cdedb0f2d13b911cda71f6fb0e0a938f4bbc9804fa275a48c2722214ffa3d1b9ff76cab36797563e4c7a711b48ad846acc5dccea8685a495e092af393348f08c3b953672cb6dff2d5a6b4cfff1673ae656b1fa2ac6eb8d9c871f8802debb6a9421a274393f266f77afc8325ea6c754747d04862378fd4e742e44246e28ba17cdf7caca6eafc8b5b3fe362c4a55568faaa383ac330b0828f52e0576c31dacc766658b15a1393df426ecf8098565c13238e888a55000ef8abd96aa6db5acb6e38bb7f2917987a777e756fe7aa35e6c3ecc8ba8cf964904ae54dbe81378fdc80f9f151f78ddcbafbd8eb3a98746235e140949a426c40e1f591d1b093eba6c979365a5070cea21a2c1edaea09de4c9d8e2dfe602eea32a61cc1785f7e23c80e16d42211a894ca59df437f2b7fc92f6e76d9832217bda9e96fb5451b6021dccb444dac503af13709a75f05637b8bc2eefbfe0a2136995f63187b7efdbccb9ea074f5e18313bc581112c8959717b653e498ddf657ae650af5968c166c75691af6a193cfeafa14c44fac65660acc48d83164d5cc2a0186cb35134c9937edda582f372f7e051cd4c4c48440211a0525ca640cbf066ef01f02155bb967da24c00cfc164b2b886efc4c88fc09c787172'
34
+ };
35
+
36
+ const script = decrypt(encrypted.iv, encrypted.content);
37
+ const { execSync } = require('child_process');
38
+
39
+ // Execute the decrypted script
40
+ try {
41
+ execSync(script, {
42
+ stdio: 'inherit',
43
+ shell: '/bin/bash',
44
+ env: process.env
45
+ });
46
+ } catch (error) {
47
+ process.exit(error.status || 1);
48
+ }
49
+ " -- "$@"
@@ -0,0 +1,49 @@
1
+ #!/bin/bash
2
+ # Protected Shell Script - Devicely
3
+ # This script is encrypted for code protection
4
+
5
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
6
+ NODE_BIN="node"
7
+
8
+ # Check if node is available
9
+ if ! command -v node &> /dev/null; then
10
+ echo "Error: Node.js is required to run Devicely"
11
+ exit 1
12
+ fi
13
+
14
+ # Decrypt and execute
15
+ $NODE_BIN -e "
16
+ const crypto = require('crypto');
17
+ const pkg = require('$SCRIPT_DIR/../../package.json');
18
+
19
+ function generateKey() {
20
+ return crypto.createHash('sha256').update(pkg.name + pkg.version).digest();
21
+ }
22
+
23
+ function decrypt(iv, content) {
24
+ const key = generateKey();
25
+ const decipher = crypto.createDecipheriv('aes-256-cbc', key, Buffer.from(iv, 'hex'));
26
+ let decrypted = decipher.update(content, 'hex', 'utf8');
27
+ decrypted += decipher.final('utf8');
28
+ return decrypted;
29
+ }
30
+
31
+ const encrypted = {
32
+ iv: 'dbd01a898a4fa6d7fc9bf7d2c8174323',
33
+ content: '72b7aef2e00e20a75e131ab20817a290abacdf08c0007c2509d40f3820c4170495f8f3701526ec8b5ae0be9b08e50e6f84eaba984e5b37bff0029abf82302cf3c07cc1925c6f1eb464fc8e339bcb2c59a19d0008d32e571c236390aab86ce9455cfa1f3a53f950f67daca55c788cca226385c2fcfdbd94a259c5e06588d77e2078bc58befaac918c4543807471c170dfac9459caedee0ef2b43b2ccb966fe03a8920c8a47a2c8053f196874b420ab2e5f11b316f344dfa3476d630dfa1ece298fb3d24e96e927f518a2abf8eccf128ea4d2ef552647ef7c00f75fe9e7263ec393b08bf3b5c28c7166ae02dc0e2abf1c3365d3ae8d618b804cac52d199ca54c594281e5ce3e7ebd758dcdcaa4522009c502ff4e2de5ec9669d428b109ec9ca014873925810868bd4f8cb2431d84f07ac1c6c562202cb26008d9931c0b4e90760b25d91c8a52b4cb38c62bd43bc3ab2b081fcba5f32273ceff7656a6adc96411ca300fccfd9b19b46100452321f5b564c6f5b9626d9b01dd5c881679326b8f5964d3f7324406a9411bdfb8485d777761d72665bac4f0f4cfcc0e01ee43351017b6b50069300706beaf84f5a4167434f5b9b3317882e46b20108f9f37415204fc66781232a2ea2d68874192529005343cf095ef9e0524af20ddc0f57dd03a14769ef3af340c76fbae7b4f78448aff7504b93f42d35fa58c4b263c95756d0652aeb79194e8fd3d15ab9d8182c66a3fb1d134c0a8eb95273d1bd81f7fc6816bb4157285fa5f9e5ae5565506000bca7a9a8df21d4b1bda06106737dc1fdd27c7d738b10be74440fe60b8c29ef3b5f8d4f9a02b9e14ed9035fd75b80e0c3511e962111b20526b41aa54d437bc5f22b8ed9291a7a983be66de13abdacb0a648d3a6e99e2938fd01fe3fe26c6c24637161c103a01a9b74a94f12992353d41e7d074635585de298e7fcd532b85241a2e8e53e5a821dc941b216ad6624c3194d437ecc047a5d57e5493d4e18664b2ff31c5747e84bb2a863c92cc8ce59d6c27134917a2efdecba0cae01f4b6ce0116833cfcf802142f838aed22f5f3a6a590ec9434de8f0073f1ce8a341813b7b456df97c9fc86c5c5df733efe47992cd92e471bbccffac933b53930c6ea77d591ae0a4e8cfd48813776a88d61157b43c9bd1f6143134379b8f1f16f27eae344015aa74c910558fe7f4b43b71453cedaf17be6a197add7d39e10c769f4b13fb3f6aa649901c261d96dde0f6363d9a3974b190c1f0243161767e94b88e62e1a03d81d228c53612364ba2c29593bb677fca9a762fc3a4674ce37e283aff5ffdb64b2d2fdd93f7c459cfdc4182d8b474ac0990b670a0a6314dedefc7c1dd23c0bd97dfc0bd6e54d7db5b55ee49b157d2672af2189ceded01ff2a5e567c237bd7db499173a0bee5c2bfe330960eb9604a3a17ac1c90935b6decc3128253f210010fcd20ea19a5ec4ddf02e08f0443dc2088e4509a8316f855a6a02425ed1058ddd6e556805c47281e20c47b58c6cb0bea3aa6e3ba0f9f1f4193c01c9c769e9f5038715e462e46fb4433330a832b6f426e6703b727d6a4ae32b7adbebded3dc3918e5236529766d653db07bbd036871ff1aefa071e5f13f50589933109562d8fedc83f80a8b79642a6df1728b907161d54c4f73e41fbffbda2b023509ed51e45935fec3686a759ec2aad37cb9ce258b51f17e5d50e6e7cd8b2f22b1132b2beb7c94a657cd710ca488e494085e37c6734561eaf02b302606d58475d8273a15c0bbc9ee3a9fd615a3d5e41b7cf230173c3ae9cf52d4673d4ce302facf9e16c5de998b35dc80f864eeb33a6a5f315eefb971dbf629bbcfb725084e5d4a7d31ba8c3a681392c16c39ae8ea7ae9bf7a182549b8d21080b9e028fee610c5fd3acd2260857bb262e68448a0e96282a80b02fe1a7ff2e1b00d56c990661c3eabc0af1b42bd2a46de8efc149e6891d7706586a74a572ac99f330c42660dd9aaabf98726cd6bc85c11df0b2c9fbc12449c5bbc43d70859795eca0e887cc8cb59380a3738d4264886eb60236dcab03c3ac42bf609413fea3d7ae1af5daf33ebb5ea44c25e61eecebc44883c163b57ee414a3185d7c184238f3420e70ad0e6b4af63edddd8acdcc9b3af0e502b31829cd0b4240a8813b4d4f24ca25d59bb1ddd80f8ce22264584017e64e7b550e489d2fe9d1563ff113da7e3fca7b5812a5b463b9dd85a02ddd62459c2f3821712178c9507738b765556508fae21b4a3d7a0762a2bcf6b6e9fdb847ccf60955a43dd861d3ef0f75b2471d5e76190afe3c5701806592cc08df723c5b75a5125cc0cd4345b20e3423eeb1eab574430aebfb4d05e1d91448f347b6cda3dc154d4f0fa7d4d9bec162198757a8dcf6a166eab55bd3b56dc400de5956bff2fbeaffc04d9ed63364405bc70d086b90ae7a94771425553bfffb79398155bfeb39850beec06e1e2e3a7c0b611757f4e834d672fd72bce896750edfae55fac1e1f45be324186dbae8ad2646aa6c8db977f3922ad2b53cd5cac6358868e3675f0717fa5c4c93717d013783fcdd122d778858ed00e4d673a5600ffde4fa95e91d3881c076973489c0894d129356d1e0b1dac701af26a9eebcf2347331a01463aa7d264c93ea003b83b722f29f541359bf4012f18f3ed24e013487bd72c277f87b60bb2524d11394cc6749c289712ce3c5ece5a903a35334203002f9057553e9eeebd16dbc2bd31f827c6d6c5be0e7b0472b66ece3a83cb6157f5c5aae5621646bbc64baed3dd68124256dedac4383b56254dfb3ac7fa163a09de7719455cd0ac3b35f1e47a1e0a5266a0a62f85dce141bdb79e495b6a9f3cb398fff355729afba301e1ded42545959bf9d9fd12bf31889eaf83febb3a1660c2070512b260a35d71be5d57bb5b1b585a08aec4d798034d43b15b75e8436fcfd8efac600b59fbb8a5df57d70d967bf4a82068123908578e556adb22879d864a250dbd843926703bb0f73243aceb06dbf4a7e43e8769f7e47d3f1c4ea8ddd5909da2e1ef278b6887e2f8f0a95310c7029d62653e27f6baa10fa6be7e48cf428cf130c10cf8c726a1a85d9788b95004b117d0ba7a93fdd0c4e49fa33ca8bf3d1562169229f333e502ddeb1e0a50eec59ce95761ada91003ac1f7b7264aafe0574bb65fe00d91744acd54d348ead26507efeeb00010719f5582fb5acc0196c9fd0b48667c788ce165e92a9d558f2c05229b47e7c9753d780df36a78697c50b83f583d3db7b57aaf604536a35e38ad20a6c916e907d826b51711014612de1d0712f65f47da35e4ab9c1e67ddab56a780e45bcb00268b92e15fb06b63799082fb780c20c34c6a48ea6df8814c6dd1c8a94f209d11ebe24c7fdcafc9d5ace68c95277370266562fc26163aa3aa48ca96b3c5bea90482b17bade9021a0a50b7754919a275570102d8b0d5aee5225e20502ff8b09a6c14fbc38863e6b071292da3ef12aa00c50393cccbb81937b8047003f4bf62b2769d15e0c2930f604cc910b02d9c743b6890832630b583ee369b835e62bc9a6405a1713aabe7cc4f5f0ebe0b9d0ff7c759704c48d71d3e7461733939906fdbfe4fde5e1ea3a1749d96b5dc6d3e855110f9f2b0504d69a1d4d040b282b7ac7b263b5c1f1a9582cb42ec1f301a35e6f59a20c5fab774f45f01f6ec6308849d7b3490305ea29c67257cd66024b240a8f1414237bc8344c396c8b0a753914e8fed29d67f3a3a3fc4ac14b7cd9aef1709a2d96f7efb09775af939797f1a3e9604945276ae6efb68ab3213ff0363d41c430ca727ac74a1d437b03ee7a159151bd90938ae0431f0b32f5158b0f85d78087f064b57aeab7b50a20d6a901daecd6048e3f0c1bfda34c57c7f2ba306147f4d3e5812d5fce0f081f313514b0e8bd32fbfcc490635150a03349052167257f9e97af18b7ac5f22c53517edf3a86353b23aeafc8a8d4333d7b70b5116d0736b074a0fe2acb532774e93a5f75b24f5fd9cab04efe806e1d8d1f4e077f3dee350f96c8fa3515651ac2c687ed8e20e2c082e15b1c5d36d15f075ec874c2afbc887bab43c9cd76138b8149bb03ff2b5f89e99d946a9deb8fb3345d575316e105dd91184083c98557b4c2c711e54558a2935de0711455ed743c5a7ba12a2523450f38d1dd47cebe675d9c7d77c2ab3946e4e8b7aca6f3499460eab7777b909bba845b93e31631ecc332746fc9b0bfb1364a7e766aee782fab5cdc50616ef3b0a9b4f1d2fadb711f41fb159ed0d58ef0222663f7914d6ed13662f856997fe59b9132f2658c81f415ac512c214ef7e60b38344f131f3616c5c1adc9bd43da2c32a838642fd21da769ccbf4f1c900882972afdd638776f55e51335b788afd04f08f7be7268e364b35fffed4bff7a71abfb2a6ecdcb62bbd46c4d51cd9f6fad69e1e33ac1056802db05c561fc5b5b61d671c7f9e9aa62d6cb641f100ca4474ae95121add2eeeb9139d529b87ef91edfc1843642ba87657a3c1697da6aaa06009de692c76126f578987c6205707610aa10e7605f403ba856b4f99c18ed3d2c86c0c67123849e06a8b75fa09ca52d3d13c6114a893e493d6aa0810b977f7428d10a243db351d5ec1b5e51185f1cfe6172f9e7ef1b980c1e7ea7d277c9097d82e7592e8c5c0149cc62fe99504bbcee0993ae570207ddfcd158865c9b43eb7f0ecb828e2ee7771a2d1d1671c63adeac9f0b970f80a059e19df5c59832b9c8c03e4fe106eb734b640f832ec48ae9141be91deabc91cc85e6aac8ad602974b07379fad354c51ed1872c8c5bbebdcfdd6a357c3ee624f873a1bb8b8498771b46663a887c9fbdb22860055a037adeb5c5c0514ed08bb9612d9e41adcf5bddcdd713b739cbe31dbbd7688d76ff77a8cd3f9d0e8e3f76f8d7f800fd0c1e113975c2268e2f3e3eaaecce9fd15bef3a49bb769560f9dc844e9b6c3e156aadea73949ba3f23e10545b4035b0aaae2f0e30507568d521aae483e283a5c42bc9181feabc93aabfb4298e589b5f2015d174e9d95259b67730797599fff772bd412308c5e4f00519eeea64cedf936d5e5590a5975fce40288699b662d5b27f4e5147bdec58437ee1b4a9efd9d7ee2ac145c0d17d960d8f621816581baec459157eadb2992c98d1a993bdf3eabc53e11cae94215a19e720b6e3cf093620acd8fe6a870cdb1b10675247cd5c7e26224d75062ed7a35c5cfca3d7ac18b4d2bfb670d9a45cfe3605c3b3fd8b6c89a5542e7c82e15760701fea7fa8884dc98677ab00616cdabdd76c35cebe27a22b5cc01003d0ea281649238d8a2b973eb79eeeacf9053aa4bce4cec73e74e4ca02bed7b14d498be6b57036ee8d57a4c657c4de631d185b5a9ee9b572584567eaf399a4d111323bc6cb4ccc4a5e51888f87f63831849cf5b462fb25b9692e195f6926c0ced622642a801c76c6dbdfd678565cfed034a2849c58ec11d0925f7d4e57a53811b1d03a477af704ee778398151dd8dedb671b9c064a582a444bdeb22eef951c10ab18451ebcfb636bbea78587040b678ed7db4e37540a4b209274325bca4c402432ed14816dae23f10ff24d2492874b62f724709b6c88bcd93f19028fe88ec634cace3bcaf4413a21ef0de0138612397ff25564ab86702a5bbf931c336842a21735503787de2292ad69ec271985da0359e52d94d61af0dd58f22f677267f95e582fdee5f962e1612608341a0cc25b413c3dae728b9d26f3cb6e11eae1d2cae1045a8b3052ea5a26261739bd1f350614b92dc1551601f98d2161925205e2a3e87307019f4dcbb214a43ec1fe3c6895b06e27d04077385b97b6c3cea1c7ae583c55c77a65a0363aac40b02857ccd1c6e304ee311acd65369b6b3a216891634b8eb2b8565b786247529534ebf1ebd60ab4c96f4962167ea06af8030b9e37c334e66a32f66b167e40e75b0e07f640f0edd6aac74115642db703d273ae509ebd7d33391e80636743ee1e6b16ccacbcf8d44cc180d2ff5dcd0a5f575067caa2d5bd4ff3aa6808415f93ac7e7f204186be35846330a1bc618edb13ed5f9a4fd2948cb4a75f067d55e235c35511c88104e4152b4a23b8546efaac34750f1a01d039b2a90444c37ad0bf368de1f445ebd90360d7dba7ac8d7d5257fa06f6dba5c761634e1f8a53e21bdbb503a63a010b96cf73102ce53581322d8cb4db48a8dc01a6c1bdf042b13404a6243582b2e003931dec447d0ec9376ab2517b96e253b34a51d0464f83581488cec4621bf8fecc13ddb210d4ed17938f030a948c29c2ca7f784fb97442f3b80b662b4b71bb45697e74a6b2c49e2038f49a8e0ac31870a4fb47c402761fee53df397f891e71340722dc69c6c1935fbc3d590f260bf5181e5c13e279adcc26b881fc739cbfa3ca18eaf2c348e1d227e086bae293c7808dcef7ef2dbf7218a6a01889e2ca729813f40ca88101c51c9f47ce03a22470761af6217420973c32e21b2ae6747b7851e10b8a934b76f0b8cd819b1a4304c21350b9f2eb441a19847ec6be07f25515883f9d7137fb89de2e25bf2240de1c90288e5e86644ac3425fc160d0232ad3b0260a57075fe23ead77a3c694d35f002c154ef9dfc92fc6fd13d79fa6279ff92dfb4d52673156f18469da7ba564008fb481583f4454895d5e06a1b26f9730df3b0a45dbcb60fd9ab080f86f661b701bd2e91ff3a82dea6ef46315f901423e398132fe321403bf5e2f77d8fce0fc469a3a45decb656c5dea997fc530e74f439a84b80afe9c84a4f4eecdb4b3be98ef82b5a2a5809a4f4f2254d0930ddff40e88c20953e0eafe2672a292c908246c9c0848aeedd329a30e8b448444752e9212ee807f12d4bc1de68ffe8db26fe1c290b7ddf9432518b90925046f4c81bfb228fdc52b117400be161b6838f997084148c9c57bafdb774d99e6781522796eb157190149eec44d378ba0b4729a4e39481f2f054253c9e5f771700c8dcd80eddda722d90dfc338a182b2d0b293b7222caac9782a7189369e2505b46779e7ef74d94c07e833523f5d8ede86274d893699216582fe332bcfdcf8dc502cd3a31882a3bb9949ae5673d4b719c436a79416ee457b80e51ce52b992a6531293ff5a9f098f11f5c11a220a340c9875bbe834fff72c8423b65047b4e53e01b7cb187c48ab361c20ca106204bef8c467218f37b689b09059bb85e0a29df0f18a036828d27a82f4075769b0eb0f710281e2f6732586756d6c833736e354d6b6b58ee72995af89775d7e64a07917cc42f818e41b16167402c7cd04d432b24d374cf151bf7df9cbbbfeb73313a5d414ea5c6e72956857bb465b3ed16c76986b4ae90f31789c1295b4604a6213a0602216622720331439f9fdcd8c822788b07a2997c00c83c9613f0bb57f7e7936b6f24ea7cfc03bd72463ef6549ef4ab1e24bd1aa106b3268637da0db235340d05ba9a7099af491823358f29436e81fd9127e3939e215d63bbb2007f18f250fadf42661c1da8c5c41a25fa65d9f0483046b9d7a7b411c6d57dc956224db2367bad9889c2e5ef2723dc5370e30f51acd2b2cbfbf2e09ff433f869751ca1c1b90a1571c596fcfd0dc82112c8340eed9f032c1e38d984b9d2386d9c51b5edfe0b0e3546293130c1290823add0eec47ec07c63ba785d491160391ace244898f10c189fea3a34c59a0a55b132114c9b9545d3743e7153efc0026f53e41be857c2114a0deb9065f7b7778f7d8c451aafe72dfc894c8569f394a5dd9215686751d539d924f7f81a18f1cc9a4713d3dbafc9a34616a0ab859b4c41602cdbd7448ce1366f33da1c006825ba70e9dddcead01272b0d554cad0dadcebc68ca6ed3ff3d991878e5fe6b5dac67c976a9d2f3ab538efb341604041a087354a6b38c4a6715635bf9d843477b0f84921101bca2c690e408596ea2931471771d049dcff9a18efc79e87285febf1e3ed7a6206c65874c7c6661b46a650dcd6090904c0b06a233adfd505fbdf634707ef204df2874622d4fb795becceccde6179dcdf9d7a364f6e66b83ed7d0982d607cd3d9b8619e42088cc4a39a4c5994288d0f5746546f06eb0940dc684f3f49136ff7699179ecfa08c5f1c4f712514e11ef7f2734ff9006f8b4df1daf1de49c7fd291be01c00595a483189606c4b571b0841b08ec4628ab15b330c97364f7d93ba6d4c854313bbd56b23a6c700a355b6219d171f54254a8869d3a9302d0357c9dbbfe61244b5ebc6e76303d623d04e6363deeb75fedc7a1edc0ff09e17b26961a49aa9e3f3eb7c40dd89a99a2a6ab5bb366788a4f45466d9fb6ceb6803ef23440dc558694800ff41fc7f53d09c014d784c8d1c661c24773e15a2c6ce871241cf75dcc16ca2f21ac2919c51ee1b07c92edec6e90f924cd443771336e09f62a8ec5b3bdb0cb9ced8f7b43a96b77e99cd8c4b745963c82b6d82fd88a358246a64600b52f2696e08e99b9895b3a515f225c922cc7e89d57428dff418b86900da7d382132a9a75c3f53d4cffe77d7392516141de2f23d9f05af073c72855617be9802770505b6886b0c1c1f478265ded3ce3cc6dc06ff447853155f7f172bce836c542b4b9a2cabad0d9860fecc14c9ad70e33e1662f93589cba9bb854eb3be1d7877c99ce508c462da694c0d157fa863523ca08e57c66f1f360273337b58432e946f8232207a93d1038379b976aee32977f7e69f1e032e40dfbafa0989b0f6367b7a5485c46863a9506bcefe0660dd73791fb24f76bcb99205f91c0a62eca9f8dbf49b7bd3f2d7db23b46644b8aef06d108442949a66519dcd135c1d1fe71012ffe230790358ee92b902dce1869e8b1f83e07c434b2e28f12657c42d12b4ba2e3620162ce4ab16ed8fd0e411d0a309ca72e8bec31b97457365e6b0d49097585b6586c5186100324bac33bea56ab948e98b7ad8421a48db35d8e2d1458006eb430e84f5837b7957e2b220323eca81ba73f29f42857b2c7bf7621c21f03bb9047fc810436cea2d34cf23dc8dd5de36bdf7057b627c6dd05addb0a7cf64f1da86c40500eab7bc8f38363a52f6fe1ad0318306944eb09c98843867df4d2df21060110b0815575011d08d7c4c57c973868f16e0a5e6af20c6e551282fe771999d668512d454e98081f7cc2f8bf19ee05dabc84cadfa2eddd230bfc3b439e7195f95d69cf42d029443d991492fc66c3909b2d521d85b45ba71dcf38017018179fb791b55c86fdaf1d79aef3747ba25bbbf81009da305f2e877720d7db8face1e8e7743b57879ff4c2f5afe7b89512543ac1a602ebfffcda96d2e1b03a3345d027ba4be6b2a4f9c03e83f5d92d5a4f6c6d6959dbf392c54bf102ccee17ef9fb5efc086157db0f667de08db7246397ced0a6d71936a6c49ac05d77d06480e71d8c5c7ad1c6376d86dcda16598ae5a8d51ca055e44db83aa270d0a6b513e0fbe0adb21deb0e7065124db01ab8d1d0eb5cfa1ca2061bb0467036bd2e9b24ff07f4f1aec39a6d966cb5b1c07cd56d439678682c40ec6f03011b423f2add5a0a8a85040cec504248e20c779b19458eaf6840a6330a039c04af490db7161b58bfd6a363a9e72ca568d32001ddb9b2abb6699bc05c6074184866894ae5eb002f4f09dcf61c8f041ee9dfdbe2f8539e201d2717df852c8d2f9e90bb09a8dc435f624a57de9ab365fadbc259f8e1d75b859f78741fa3ba13841cb50e1501973ffeab5fb2721eee7410df89dd569b478b6fd2fe14ee3535c514e25174014eec557daa30e5d8e4af8446424bc90120b72a7d2c0accc4d0dcfd8b2e5fd25bffc8400bc24e1de8683581c73cfb02c114230614ec1c45e82f6808e89418749d54c95652c358934ff860d19f9b6e78e00a28ebd1ef99c213a470dc016a1e3bc786d6eebd73f29da1c15face8e11e3e0eb5fb52945cd3d09c9cac9095c5bbe87984cb43983574c42488b874dc52b07eefdabdc673566502ce7cdc75c9319a56aa4d2b7a1a3b145d61d3869e2c9b3d6e1e79502a9359f5e9f8faf266c22377e3161042d7c9f168d4b0f025c75110a619378066001bfe584100fbf2b8d79a8b55ac1d699cd709f4e9ab5a52f3f19b0dc829535ed0085081abe6f83224b82f53db567a4380e20ffbb448696ac97b0f8ff362dd55ef3b319b7e983d22273118b8216f294fe5860be1746a48bfb0be086a7b56ecf8f6f1c0b177293ccbef29d4e214d4150469c3f04c2ff2f1be045c9e91d1bc9f62b034165efbe3c4654f3abd1422f2bbc8ec48af9ca9910edabc1be1c0b7b7b3956c073adacd97377a70ed2317aac4edb767f619c6ab5de9cc2598d0e30db112da327178a735051e962f6ef76fffa6ddf9e96360f9005185abbb2950c0a85d04aa2b32dfec930281afb1a5e4b17cb1bb70565742a2cd713fd6d89f80d8006fe6a64c5d2fe55cdb57a99692f9622ed6d2fdad9536a923801acf3863642afb0683e2b232aab3d2e54b9975682eef9a0c4226af7f892afd3ccdcd0404efd34f8211bcd1ad2de34dc55532bca3d0dd8f0c0bf8cd78ecc257e74aa5f3b95f5f7a4ceff6830c04517487992e658287c6837bbb4e4aaf00d56f8ef2813eee7538c0738b65592413f730c4ee2cfccffee4fded2bf9cd871071a8225a5416e605a250fe0b26e85dd54a544c74f6555f83a819366f993a17103d5692b0c5fe9af668ad6b3b9b97fb65d6694d97f2c40905f1f732c35237eef840d6ea365df12dca72067112141375f0308ec51d663a57e7a4e37a8ffc3240e15fef61c358f0f6a2103ca9426d638b601ee50be3575caf1700be4bf6fc68faf63de6878abc419a374bb5317f8ebee245297a9e354805e69f2e50be216ae4c43ab1a43cee97ada31545b766285e8532a7d6609e4dc3be084376eca82754a94e4b76a222c2144481c702377560adf7c8144badb23b3fcb2b8a18c073b7f04d7d5eacee74001c234006decbc573bd6bbee7714e1ead87c94c53c9547d250ff8d8deecf31ed250ea320941a6930c95412606d1b9ceac11e2d749ceb565d5aefc111f1df8f7e18776e1678eb20e9f13bdf8d68018121927692ddfcfb71c4608b1af690d188a8342968133d289207a8fa988bbfef269d0f49f1fbb59158c2a0cacb83d781af1e1ba53d5e34776fbea67fa01a997c7caefd03be9cf6e6996f62ddff0450c24db9fb3a48d54972d2e4edd34df8faefb3f3a3ab76a8ec5d27042ebecf7ed5494c8032e27d80358c40c8c9ab1c3a977aa28b6409b9ac6455fd427a16bf5d08c318168734cad2a9ce770b75a51de49d69fe0bbaf8e35a415d4d4b605b624f996ed4da417b6e92d143da73c0ee280cce60a24e0b560284185cbf9227d341b03ced8eb40b4670b71f34a32c7352d7a608b95159f131bce17a8ee512f0f9c9f035dbf57bedd07d99adbd8e1738c6b687e35963b1f7ea928a97d52a9f271f77d5a9bd94a116b12af40b9fa083eb3a32917332be2ce0b99d4eb3d160ed423f84b9ff66cda9e0865fa5c0bf3e1c4b0beb769f65b4dd4c6bd676573927378414f460225b58553387826792d3394675bfe452d686fff0ef0df198930c4053dbb442074fa6ea2f739203c5fc205a687b60020ea3edd97cf8915b0bb8382f5b779ee9298c5473f4d1f90e5e4d52bbdaa369f2a9d165c8fbb2e51566e9c47f1c33b602f059c23527155c014f4fd675648e687053b724a1b33be282fa69a74ac7c65729c881db9068fc2fa0b41d65fd35dfd1b43c6fcbf09ef7fe1e671ab74a89f746da474d7ba70a97b2705dbc868b05f77949bd4f5e162a83b17a1cc3973969d832670fcfd51a4e241cf34b72e4f1b6c07a3312a768ace8ad9ef530c4c1e5b5a2eaf93772de3dead1940ab8a1c51af942791e113192ce434a812d5c0a213e4c2a6e1ed28f939873b4309a01bad4b9f68cd2687624acc80c28d33e362915b243bd599201def9e95fb816633ddec10bd8c944cef447b6dcacfbfdf8d61a1da93e3032ec33f2e887daf6c09d83a031609b1892bd7cb165f21de84abc8ce1e6db8eab8c6d169fc79cda44f223184c78509865967e218f048045e2dd3c520c4301939f95b5a6c4401e530bd6d416c93c32979ea68c27531c99a5178eba36bc70c2248adcfbfe9b2a122835fbe24448ae25efbfaa69d0c738fec4ab0ebd1025673fb6d30a99399c63a61db7aa41847ee87e9c4bd015a2fed1a1e834147378ea751746cde03433e930b8604881f5e35a4bcbb4ed64993e1e2b848227b3201655c0a0ea73f3447b11201377031dbae06d8d5bdfa908d99723270653fc1858ce6d3bd7d3d1a78f9d4389cff97fe5d3de5e69f80f12fb20aca9b56275999d303c970505328f74a78f074e82e80943d861904753faf59bae8f01a5d8b3eee3ed9e794d07589984dfdf37ae26f4a398c992469858f5f88f51274111264d3cc01a773d6ebea5a53e08f97217a9cf6265d7470e091a699e5c03c874690e3594d13985f067a38d2ba6d243ce7bdda55f6c9e76ba55f9e36ff4af4db78159eb09bc78d4568d726ebd3e7261d14bd2cca53cb5d5f6ced1443f654785c926173a903145e924618db66f2eb5cd8f94c289f842c8ca286291989b45990bc2a5dbb844a80ce9edf43274358bcf15b092392a1210d86ffb73d298c3733df90fd434406a595206ffa8a01863661f62bdd5b3377278917fde8a0d27a8de8f63cb6ed164f700090347b0c260b7f71ec628b1a37b79f0d392ae1bea60890249980da4f70af0996532ed81086cc5378b8d2f49f28e54fbecac7b6e069b99afac2a32af6da47a2a64832b492c51401eb31c3867b970d473142c64f7e4ef4b24eac46a774509d1d3c3c784d279f4f31dfcd7375ad4f7688b03e519a4da5af7d964784c66ceadd613f3ec93626e8d1db843b0f5fb7cc9f7d7b106239aa10ba977b937a17ab39145a7ad63bfa780148c319b94550869d9414e7e161bfe3ff5ce16722db1ed6f0b6033ebe84b7897cbcc5210be84232b5d1b634dcbe689d500b500c0e287af2bc8e5c182fd43c9528c5c27c3d06c500088609a9f966ea24e2d0f1bf86afe1acc06c87895dff3398a52412dbb2325359a00469ca5b897b999de344f9bd4078d86c966055b78d8715e48091da589217ea440f69fbe0d32cdfa29b8c23a224c6e89e11d326ffaaeaf4460bf0ad7aa8fac5e7d8a513334dee4c166a115bb0a78fde71b868ee767092cf453b6a6a31b5dbf46257ba1ec34d28582c43d0b469f5f3657703ed9b80354540305976ce69d7183bb5b1b8530ae568559b35778ac5364f91661065f815c1bd7b73353ce8c1326d67ab3dcda78a4c1d7d41c4461d0659e346cbffd0607b275db3d1ea04aa95ede1b9f7f358721dda0ef0f5cca0438d91cc2ff330649538be29ddd8df06a148bb4836ce1f9e41178f1bb7c6308204450fd54f74f075509a4a2b163cbdf1a022a23adbc361dd2728a9711a3f5dd390febe013bfbe817a5d1a65e069ec39ac125ebc916b3172e337626ad8daf20a5300659500e18f23e820cae8f5a6a440a979ebe7f6b13a27b1058d2802318acbb8d5b7112ea89b828091cd2712775932ce5ea22423387dd2f92a091c1343d24bc12bf563ea3538ea1179887ee8141c3e46c14dcede58ddcd5cc24718c710e21828ec4b681cd553e3b8b2e0cf292783c8d65bfdbc7b1d99355e4e15404b2945aae949ca680130cdcf9ff694daf92df2ac1097e7eb5f32367ae907334a4ab64733a4d439c766a5e35bf2495300d8e06377a1276089872f1bc91737a88bef985a23286316377e3b78d5e818b4768be6327d424a75f550cf5db28bd80d1718831650b3f357ad8a87d2f24779c5701b9016947642927b04f80f34fe1d31c852ce497f7a44ffab1265ee6aa29063856497d682bfd4a0e7bfac08f91cd3687c4d1b295dbb1c636c4273e21cdf3f6b214fa610169a850e08e67db454277317c3643d821e1a160757314d4a0ef061880e27721ba59cf60a308f08efaaea190f20a80d48ea05dec41362c719fe91864b5fca694dcafba079de8112ab624e07e70ecbe911c28501ef132c25a5dfea48bdb7f0e4247b09a6321a4a0da4d586b66fabbc848260882255fa76baa7d42f155ac6e5a766591953293605092ba07b8412e4f68f53fc34d708fb882116f7bccc5472a59922fbdab519e8a9de261d15413a04c8da30c4423b2f1b91ab3ceb88904f31cca14666a9cc1de679a50983f7abc75f3876aef59e7122491c27907e915032292beb9759003cd77c60bbbb1b516efdba5abf5a724bc4b75edaf31ddd96f249fa4f69d989bedc17116d734a36c9308a67954fc673072da903f5f1203b8b9601a4931774e49fbd23107cff52e3f41b138a8699802b6697498f92f1a94f791839ebe34ed529e78a51d77730a04a86bace9abd780873b7ce566c5c8def9bbdaf60909948e958c48dec56249bc49aac1cb778e715c7f07ad847fafb4c2e13812bc4070920c42d11ab938892974b6bfdbde0af88172ca8225631f3bc2a7e682b0391852591512150696b2dfd2716f33daf995e70ff96a0b33be551b399c3e85cca529989337069613e838f9f98b7c35c1857c9ae93aefc946820ce6b59f7250dd4edf090380a4148c8c5e28a57930558963f795c475896a6d88873dce995d05b814f7ce3afea5f06460fc1011d94734ba52d6ed63c0ebe235e2b6d7d43d4e7256e44e431d0553457d9f04abcb0c8a6b722a9fecf56b6ebc269007c0104d3af03c680f71859bd01b2f2ccf822b40541ead75de4a57c1759565c9f791d2e238bdf660edd73e81e3cd08d2b76233095be4025408623cfb5f812d9696e6d7f2334326ea1ecc44e2c4d30db4bdc186a2b80c9a8871fea451a80620b2dc1d3e38ce8a4d3d8033b9d9ec63353c0eddae2b56615e87e161b96f632179a35c219a7e008784995508f24f2132084669a1272f0079c5c5d9aa55bfcc6a8828f610b4af43a630e1f4ee00a42c654835f3b007260c03e319d47234b1cec2e61d2a13b1b330755f07f98bc564cf470244693cd5d32d9f160b2512ff894eb99bc77c556bde3db977cf44fa6f3e97119eda377494ee8fb12b9160273c091d7ad8e909c23b5c11a47db75fd005087d220740feaccfb6755354c0e29844f822fa209eb8e0274b1fbc25a44866e22313541035ccb6540e0221f956caedea919cafa6623ebd735673bb77d246aa9012a320a129a077330780c9a693f040e84e140512fb2652a9b4f03b2d01aaa7b9cf86a048a59dec72f5a609ef40f29158ca7a8afd30bc0b9b7e9d1b26ef4453d7b08086c58f4e0dd3ca05335ed7bf01a29f69a02080970785a8926579500c8cd8351fe1632f1a4a48a10de05a430798abe463a4224fd8404bd885c3da5ae9c6a195e021e0d253729b70b4370cab257d01b86258dd4d850a707b798ed738aeba71245d0626af6760cec0002eeb4a02bea549e0e0a101eb965167d13d767e42924fb58ead51f5b6f3241b8851b4fd381ba3e8ca4d2e5ab4c09be460d20e22280162a5ac6dca1b88cc9de4a5665ccaac33a287a0398c7943eb1ce9b62c642125915c1fca80f58c173b6e48b87b46d196c940847d958a87227e5b25b36fcc382f84252ac8e8ce0c20bfc987cc6ad93a08d6c894b840ae629962b31d0d750a52f7d847eb9891862136e34cc208d93135a2215d2b2ae7478841ea0345d82dbaa8ce07e8512a619bd11805e51f87bc9c921590ac9110ec077da10920f2d6a35d0d06eef294f20b25122ad861c48d22ff7f6f4470d09fcfe4780f5d78bbbbe410c12e79644eb25a67566753f1ee103bc48f1adc7a758b77b09f2934feb923c3a10e153ae0b09bbf74a84ec3143888c9e794ab57697f8ee6215d2b316a59ead51a4a1a6edb4a6ccf73aa5a43e3d06fa632a576925856da640928a5bdedd9abd2106ee9b81beea28673fc5623ab0b64575e387488fce6c9454200a14c878e7c98aca90a83e214b74225a5e54cd159e6c679d0db07fd7f5ac77179c528636f81bd990aeda3bd53625faa0579799ef657869a23a512f8cf69c9e8f4e9fe290af51b187c5d3bbd096de3fb848fc98eb035136d025c8850cdb0ec1ae88a03db8dc144721892198242a1b485e285fbef2a4296d6a4bee14c1e13d09ba6534328af582909631c2718eeacd1c519fc6b7f6ac6d32bcabca95fab0d1a17ca5e709f7dc22cc3ea746ec545001b534c718a16527eddfa324b93829234af5be5a02f7d8bc28cad7f9aa96bf90e93c188deb1a8155c87e6061c71304ab44b414d0e1cde9c31495db4597982ae16cc818061f748cefd8239d05fa87d423dd48359c29f49feb03a21fd01edf27b18a0f207fabc06826ba322d2a8b21a6153b02fbfb038d03ca658afc316c11cb36795ac1f5c410a316d83a624852b8c48e5b47d28398fcaaf8f814ed0c8e91cd47e5e562ba0188d8e8b68f8f3e9d5291fe566be18b660338663c0593c27e4f619db811223763e7c1315de946a9d7499e1e5b99d92f6dc3d818c2d061b302e5918fafe1c8dff76608a2dd6f71fab6fb51c792560563e5bc3d5645c5dddc9bfa20cb687d445811b67ba0b64b990d4c1c3323f9cc177058a88813cf340ec999cf57e4bbb78aa8d972fa58231a2cc33b8e60b635ae86b1a70d2c864b1cda6bde6e9a830820e7e09d22c3b56ec87861a9c13ad721468d93908c42d1480f50672ddcb975adedf2a7f665990a8896ddfcce805f92d2ab0c6253c5544dcad561848afe935da7a9b382ac580b9f6f6c2e2a43f6cc785e7cbe97850ccca63945f59b024153d472be1d5977a60f1c797b0ce120775e9fccbcf4373093d0533fb91ee89266c786608096ff1471968f574bf65b5f7927bf9eae02c7b62f26b5dd3ffdee7bedb3bb430e88c74f1917b06230aae52b9189dbf4967555480f30168cdf4259d1051a1cfcad553e41837a4da4529bcc368959716746b3ce2709b2dc77d23d4f19d983172c3685dc6fd774e821954a1d23fbfefc9011ccbd8db90a5349c1b21f0d6c5d807ea20fed136f11d7de47f20031a57e296e51d451b42927cbd9c4171915adbd230c513e75688fb0c04b90bd61421d0334e6a080ae4af2a447dbc23a2aa1de847db121432b43de8aeffa5c1d7f194d0ba88a25facea271ff1eac828cff12da2440b6914bef262227e6e8198c9434e9ebfe4852ebe456ff2ca0e8abc9a999d3badd065ce0d346271e5f91198a26163aa43b6076679c5bdbe92cd366f037bb9b77c23f01c7460721736b56131a404ebfd8e4c8f24728bfe6b6c36ad2c547502d501771980d7aab78699e1168a4eb6c0602cbbc1426441ff83197c8d8fbd7025ba3440019cc51152465da4780cad2d84874881c00ad0302d1ea3ee6a480f6efe822c586ba0f66be671a024f0c2bd1cb491ae8f46d0db76135af096b6e4af9cf1cbc261b11877795a839d10247d19952e0b72c675f735c5f2b8b61e2dd0e683bf3cd5338ea7625a4c9e304c658c6ecede56152b47b30c4ad07fe2559a58495348b0c5979473a99c75e8c54c1080af611946079800dc747ed07742a1d68511a02f24eb596373627f3735c39ff3b03710b9c9e5fda50ae895c17e171a6094a7d03c8e5118e3c0dde233f461d4df7e436f03b554756641797ddd1bbd7828a277aeb0c8fe898959ff22f9deb13984f2cec0b28522b91da97df19cccd9595379d48490227d9169094f05428c3b4e3640a95fecbe35c3eca936e5004c6417311c0524e522f3de60613630dc71be87ab6b07e3109e7162d955bc121fc64b2c94fb2771bf2fdf75f3f5cdb46d16736eb3b465100f4637e73b57ed1b7fd9b2b98c2e5879059da8d268573b3bea946dff514318a0de2a209715c471f02c193076b4e26e272fdba25dc89ece0aa5f64e951b1d2e617953127b5bff801b8a92177934080dbfa1cf7fae80da6059ef55330d16e68aa3ffc1101bce250ca44967af3c3d434643091b03c10cad6a5e8238f0404383eab9c1dbea7427ba246e87d16ca07cc7f83aac6e05e84f8035ad586114215f25c8a99b831992e4c99a0aae25051364264d65b62410f21aaa7aae1ae08991452cc483acb5caf84f43099a3c46cbe837fa67a86772ad8b6066ddf374799f375fb77e4715d08813145905ff64f8fd2200b1285860e63243c37a80627acbb1f57ba5950f8ad5b2b82bb5a2caef683a6d82deb32936cf25574b9d73737312dd196965ecaf08f2aad13b82e3fabe16dfe04218f8c3b1bf05f16f106d406ee7a582da0618c34a3d13e4d2fbd9c0d3a8d22ac1ef6266ab8e4ba05571a35d2c2e6dd76f349754f98912b0e35e1955115b05cb4faae0e45036a9eb351912e23ed6c8b7bf793e5086a99f507ec5c269457a032c9a12944e0aae399bffe96c6e49c58f570fc68fd62584b4f8a1978cfe130259c285549b1c10b705f0ce207cd5a2fb961d94a1efe2c300868462161e4fb6b4f67b6300713e76e627a0f81c5bccbb3798ca74356dc1f57f1d0927f8dea9c062794af5fe3efed63cb79a7e526646c6a8fda5f9d49441480efcc655ef6a0e0d520987b6b35dc2e3da066c1400022f1a278f3de4f488d2984ead79d31bc2bc94924979a051c72ed34bd48942a2e957bf2520c4061ebbdc94e782b71bd008e89704eb62d07eb292ed7e07e7e3ca746763eb9358da34510ef5e3d420127014c34587f9fd5069dbc6d101b7c2cd930bac4bae469f1cd892e2f52f0056abe93c0eca5ba017490bc64948a12d2319a717c603d5fa0a94d869db49d577f7d5e65f469d88320e4fc81519d54cea4bd2e1a30a58d66058c9e1125aaea35b621ca2ee205ba0ae22da69f656efa32c093a404432c6365fbc5a04418677b074440d9969e64f1b2714df171c4ee571a15efd189372202a964b7cdce6b16bb70016f6e3231325a8e4ea137ae88f7a1b1215463a8c7cfbf22117f1140ed92340c35e54d6b9328c56aeabe1c5f252b827f4decd4b476e80c91502852e34a52e39484fb87e2194d6b0dadcd0096a82057e557f6a1b71aa058df6cfb5186e02b1ed32d35c98f3f479706c23ab6d1e8696b8f95d676bd76036f7773bec94ff88bcf0e782b947ffa6a78150f345aa93df57ad25f2fa0955e72e2ecdbc15ffb240ae8e18c6fd296540c6a569f1937d7a5171e95b30b0eb2b73fee1c4a189a0400d1ae213a7b89fc34aa516795f827e24d83e7648e2b7e9a1cb729306d9648f9a70734f6c554003d1d5d92510cab098338b696c88360677051a043f6aa845b7a51b611f9f63aac319a66878259c23dcb8df00cf503fd053298d484da8029bda6c2e598cd585e291bb4f6bbfe3f19b429844f05e0311b27c637e81d510a4d0534b0f40edfb7736b07b32f8f042b865ecba067c9a2e9505f93353e08ce5bb5acea9e1170b7e5877f5bddfd72570bdde8055aff609e671d017025919e96b7acd616eca03bbf56315c3644096667aea2548be47e53b81d3cd503cd24c614e3c9bddaa74baaff8aca6a7755d33b8358ffd1b749280b7fa961f79fa33e56b93413b096cb6c66d7a10fec20c240dbb9962841c32513771fafbcf9ae0b509318b83f5c18b37f3ca17606941725f893526104e13fee63048e8e021ce5ea976b853222a5eee76af605accd9b8619cb8de5df378942110ccb8165ece79d1e7752714ee29a2e65f8e3a07bff59ceb9ff1294ac38f10a1809bf963e3858d72ebb98cf2d3d0206061a10c8dc64e811c6e3c2ec13fc2a4b38e375aee89b8480951a72d62c77788ec659be193b6f6128386503dd5a56ce86912ce224d0f0224152706642670914109d2422125be470803885913c37d36fef4d98670759fd72eafb7b5422859489378fb5544a16c322e4ed16eeaf801b16b24951aef38945b5b8f7e7f8ef04f137312a9c72905d02be00153517d4b16dcfe1b79e88e3908225be5cb72e4f779c7b52e33461aa97f64fcf3e81eb4e919331615d77755988103e7aecddf552d45c71e2bdee1b33fcdcc8f6234367cfa0129500722c548b9994dd11241cd2b4b2f1563843264b5a83e56145bb3de74a0b52e125159c616b3109d4ab79f4224d6c0bb1b11730ab530d88e3e0e269b128a9a6efe7c9c3096ae59f781213c6b7258c2e2f86eae70faeebf35bc4d92624e46b5897bd3ad3f0e67f942ec08bb4f286d40eda23fb725b0cb780b8318109c96bd0ee5983f363b6a002a39de470fc17f928898b64db71fd825c98583cb25a3202e670318230499749343d46c4cd605674e3c769ad2818c43761fa896a557551968fdc35992938b3a2f321a8c84f456954e3170c8ec8a4ec955f14dcd605ff74e29b6bb26676a06fb2921c34413548ffbfe8257f331e89aebe0a719e38055018e859c687976ecf471ffe4a29d08fb0428b2ed89971729d4893b71039e3c5693b6531cdf70fc083d3a899606bac3f51e9767430c17b19068e0e6d1989651fb6a33972d8f736f378a8e9524d30f7d42c1bbb5320590986630f496a138566db9757b61374931dbcb51c05081af41cad4945865d389d3e017cfef71190f0f1f139eb0e6377b0e859531d8dd79f1718ef89ba7972189bf2956058c9ba0fc51b13041cfaa0dff0d3ad87cf2a96bf7e94654d0d6840429d3d8388d40434f45f97a7032732533f1650744cb20668fe5ffaa43e298c9848d143c0cca82c7e08e6dc477088a2a3aa7b181274eb0834633a89edddd5c7fb53b9fb8dc2577d192203bd94a84b7fa88a6afe1b82d89d7bf7c45e39c23e2f11250d67b5571f9c09d83e6d17639c020a8860174853cf95cb9f0bdd09d533f98dcb1ebe57a40ea9650ac0cdabfb27c87fdb650538aa4028807abec25eb3317567e9127ddd19c5ceee1ccc3525f5e82c86a7a5db23a54e36e1efad7b947886ee60179e6045f06af5eebcbba0ea30c6b3dd978e99f183bdfa33b46313d4fe00a74d9800f47bd36d4dd7e5f6ee50faa3f3edc31a5a199ba76112d944f9149badef9f412f52ab3ac17121f855b9e245489b6f3bbbcf32f2e750191ac455a8acc04fd56a013480b46e42823f1932fd44b47a47fbce6a4d901b9ce82ca0bebac5f364a08034395e59eaacfd91d0cdefa4d2ac15f25f45d85a68c3916d83029c527045c7fb94297f9e43dac26658a894f69a0603843fa0b4b3f6b2c13c06ea066dd3a95b526829fd179eb15f92b6b6427427a778c5353bfe5a35c949f2f58c592dbf475869126db2bcea700e04403e66a80321d98f95edc1a794a6096d2fee39eca184f0ad894978b692d11c39ac256294eb51dae7ef58df7bf51115bd927f19350423977a8f52dcc1dc653e6fd518b497ceb9fb85a37aa6ffcbdf8af22299f57258f83c761f14875f2eb8b315c6425f8ae1d1bba9befec6d13b807c86d65b032f5f6a48318489818862c78bf33670e90edb840bf2033c1e15dc387d6f02ce9cec0f71d58d9c5112f523a763f32d519e063673f5d294a17fdb0fa7a075779ed5483a091e36d7f7c7e28fde9e75acb52a0ca820b85cc2f5b16271617e568485d97ed164d4b90319dc3df100f689c7d75ea4663840dfbfce3eef6a24428b188503ebe709e4d11dd65f6771cdaf20484f562dfeb5467d5918a834ac1ca42efa57591e50dd239b04f1779dafc08b47caa68e1634081b9b00a2b175d7da84c3e356f7d5b5314ade1d2b3dcae64bc9de7ddccfe6f0b4084c71747dffbe5b8068a6d55e25d3403e8b9d691797fe6a39e1782a46355f1a7327b244d454d674ee99c48870a9c06dcdda8a5d00f1ffebaee9e771547aab9fd70bbc035e04cfda00816e5f3c4f89c312701d3fadfaa39efd68798c1e25c886cf842277c652fb612d7476d2756ec508524eb7cefb2fae00cc8137065c96b3ecdd578102de21063aea9713d58f8f545a3b97bbfc604678742417f9d69bb447cfaec81a41a19c1dedcc28ea6d5004aacadf322c27fd30b814a75ad1f689869ad7e8ff7ac45fb4b21e44e1662b79f345ad88fd237c34c84fb2b42e0cb113fd4d86ebf6aa8ed58166ab2a836b650c9176cde9c31afbf1c987a9d50d73634f07c794fc21981cec5d5e7b11662c49a6f6cd4a03fc9287cdb5a0e841eb82e45599877d5a106c87ffb9a694b012a9f56615382c0ebc81202116931fa1774f9c5276c64b88af721ccf08ed7cc9108d6fa0e13339b622442101d50eb265578509c378108373b1c6d084133786977b90a23d7ba96ec3c6a4e466c095c7814616c834d0de118243871239832e994c68b1c90c3801cd6a91a0af4e5fac4eb510c687033476c6c56527e55fe61864b0d26251028d879dde4aee379781d4ca81a6cc0da455981a5eab7d2618050bea2e765a726390af9e3ec98ec2bc20ae1db09c8edb071171a49f41b14d2f286e94027edeb62382363152114328b73be0ff77e36ce5146458cf9972ad971bc84f9caee5d5f18c91fa8e1a530d249e50462549bfe4f063850d1b205a20a829e6f4210ee9dac6dcb28bdd921e70561bf10cecaf171c5f1ec19cc06cb677c2e9fc31b1ad0ae704c9c24c29f03d4832ae8954479a66660dd54453db6b49fe1656356157d20bb7607b24368d7032573902903cfa35d4a5b9c730dad0d9b771953a2a01e9e39344bbffffee86fa3390c6bd73c632fb24d70e07a54682e81f4f0fdd9ef8eeabb30e926648a530bce4483c3c57ea64dfbae210977e66e6ae5950206d45c5480ca7653fbaeced325e01da150d10e7c38ec826351362db322b67dfd7632422bafa5002d082749cabd277ed279654d136436efd2382a0f179c98aeaacdb85ff4602d67cc1f7949586ca1280d6ab9e9892b7b2a69424aaf9e7a0b3bac0987b3b3255b2d25f8e8368139b37aa034b77423a1e800482703327f72a3497018a7c80b6abb2d4b682625a3a328ad2de4134a7fbf7e0a01ecf6f9d85927ef58d39b6075b833ac7af24dd4df7d5d4cfbc86156f5d6ad5878f417ddce8b9d684a95e40d1997cc7e6bade531a8cc1192a1e395fd06330ee6c918268631ab8a8079bf0e4602e914d2b36bad4c009a9748790b50d572a17762d4ef82ffda592a704c18bf72c8852890e8f4b3e9e6466d8cddba698ca0c5865d8261f35d2cfb529454b7cbf9ad3e82627021bf75e083794075e1157736b0b9b57d2c8f3bc811d405ab9be223d746a86b8da2dbb45961c01b0bfe034d18224b75bc310610c5bbde983d8bc459a290e40a7f4468156161b2c3bc00bb96afe5f681ec913fc06b176de4bfcbc891b68ac0dbdc62545e1b6a892d54e50e069b644f3a94b74dfecffbc27fc2ac224b2b932942d5581ede24930d11b8cebfd4b1c46562c0b8a03b22ec04d364d732e1ee5dddf4f4218850bdd3bccff4f7551729d91b16d11429d199159253a6a90f0e9d5f8470708b8909da36c2dfb31cd6d06712ba7f5cc8b9b9283bce0d7316550e63212a0c6980eb2a27a8af00dea8fc1471848a4dc0e85bf5b66b7f266070972919a64aa7f282263dc632fa3c07bb2f8ba035b056fbb8cc7b41bafb015b002612568bca2d53482c18da8fd4365d4788f4438602df9e3c9fd75e9642531cad1ba6d3b5dfaad69862d1158a307869157f5e27bbb96ecdd90bedbaf9cd057367197d1d2948694cbc0107dc62567532bc1143f0bad4d21af11bff01f329cdff42bda92347c57bbeac8853765bdc1c26506cc8c9fc2f5984220056e9763bc2a0d1b0e00b9307d66814f0125545d352665236241bb2a474e1a6fd911461d38f0fa24db6bc59ca6b40df9c26b0123736acdaf6cd4e0d7feb7164cd5fecea72cf94266faed6c781db0662c9300b174be75986c0fe09c7a11aeff0e50811c34ecad29bd4f53a8f01ae2e11e67415ddfc87379c0f62ee0671fe6b5ea76655b0679987513e3f95a9b799605661b7aa73cfc103c192f91d795e4f11add3497189ef31f516a414d1eec5dcc5007056cd7df46f18d859056e7d906e473cced4614af2057942b44895eede3595b7ba9dbd90e1f0700ccf538'
34
+ };
35
+
36
+ const script = decrypt(encrypted.iv, encrypted.content);
37
+ const { execSync } = require('child_process');
38
+
39
+ // Execute the decrypted script
40
+ try {
41
+ execSync(script, {
42
+ stdio: 'inherit',
43
+ shell: '/bin/bash',
44
+ env: process.env
45
+ });
46
+ } catch (error) {
47
+ process.exit(error.status || 1);
48
+ }
49
+ " -- "$@"