From 26999fe38820976e3f35a2ba2e4f1f673d04bbb6 Mon Sep 17 00:00:00 2001 From: John Mertic Date: Tue, 13 Mar 2012 10:04:39 -0400 Subject: [PATCH] Release 6.4.2 --- ModuleInstall/ModuleScanner.php | 4 +- files.md5 | 14 +- include/utils/mvc_utils.php | 2 +- modules/Activities/Activity.php | 2 +- service/v4_1/SugarWebServiceImplv4_1.php | 65 +++-- service/v4_1/registry.php | 116 +++++---- sugar_version.php | 8 +- tests/ModuleInstall/ModuleScannerTest.php | 59 +++-- tests/modules/Import/Bug50438Test.php | 5 +- tests/service/RESTAPI4_1Test.php | 277 ++++++++++++++++++++++ 10 files changed, 437 insertions(+), 115 deletions(-) create mode 100755 tests/service/RESTAPI4_1Test.php diff --git a/ModuleInstall/ModuleScanner.php b/ModuleInstall/ModuleScanner.php index abe8e751..b4442a97 100644 --- a/ModuleInstall/ModuleScanner.php +++ b/ModuleInstall/ModuleScanner.php @@ -263,11 +263,11 @@ class ModuleScanner{ * @param string $contents File contents * @return boolean */ - protected function isPHPFile($contents) + public function isPHPFile($contents) { if(stripos($contents, ' 'd3f150e4a5bed444763ebe8a81742a95', './.htaccess' => 'd41d8cd98f00b204e9800998ecf8427e', @@ -1173,7 +1173,7 @@ $md5_string = array ( './themes/Sugar5/css/print.css' => 'c00fb2d3011318e43c4b1332080d1698', './themes/Sugar5/css/deprecated.css' => 'b5471d86d506bea8630df869fbfbe9cb', './themes/Sugar5/css/chart.css' => '78bf9d159067f20c5e3fc6adf7762f1c', - './sugar_version.php' => '5dac7dda0b72d3938b61289c3ada16c3', + './sugar_version.php' => '9e9b8cd083f1750d83cc883a0a3a4e69', './soap/SoapTypes.php' => '6dd557894d504db5527eceb5dab0a26f', './soap/SoapSugarUsers.php' => '929ace28687ade89743d2a661746244a', './soap/SoapStudio.php' => '0fd81758942a52940c119f3afa134fcd', @@ -1188,9 +1188,9 @@ $md5_string = array ( './soap.php' => 'b507c82aa35ff6765a082a1b875d4865', './service/v4_1/soap.php' => '7c63568c21b0ee71eb6aac6b5adebc5d', './service/v4_1/rest.php' => '0a622cbfedd7592f7b4cc174bd8245c8', - './service/v4_1/registry.php' => '02002bf41e3614f8b15de925ef4155aa', + './service/v4_1/registry.php' => 'd26ac7142d9c2b8491754f2d01711088', './service/v4_1/SugarWebServiceUtilv4_1.php' => '914b66c8b3dff76e428d9be01c4442ab', - './service/v4_1/SugarWebServiceImplv4_1.php' => '7be626b473a94beb92af78470868ddfe', + './service/v4_1/SugarWebServiceImplv4_1.php' => '2b19d928d604d18e82183db988bc6f26', './service/v4/soap.php' => '846a967557552767c6ae0d366d4d3d2e', './service/v4/rest.php' => '0721bd365d3151c72db6f95ce4b7e186', './service/v4/registry.php' => 'eb5f47fb4e4a536aad58984a433b41d5', @@ -3023,7 +3023,7 @@ $md5_string = array ( './modules/Activities/language/en_us.lang.php' => '915ca75c37f8eaf6212cb4638e1b5bbc', './modules/Activities/config.php' => '263bbe4872534909a02db8be2f6ab95a', './modules/Activities/SubPanelViewContacts.html' => 'ba5a475b493fcfb2b9dcec79380f9137', - './modules/Activities/Activity.php' => 'f4f67a4dfa43195a30f4c33be12f5233', + './modules/Activities/Activity.php' => '4dde8c1760bd9021b0f2b27346e17df2', './modules/Activities/SubPanelView.html' => '9dc12c6183eb5c4d4dcb907f9732f142', './modules/Activities/SetAcceptStatus.php' => '99917cfe39ceb08a60bb806e63254f11', './modules/Activities/OpenListView.php' => '4eea6e4645852f3139c66e31cb69e772', @@ -4172,7 +4172,7 @@ $md5_string = array ( './include/utils/layout_utils.php' => '8e9ba2ade862c13f6b5af45f5713eb2c', './include/utils/file_utils.php' => 'd27f493aaffe0d4ecc32db336be9d0b0', './include/utils/external_cache.php' => 'a0e044ccf54743fddb2da7b1d6208a07', - './include/utils/mvc_utils.php' => '8e9f321db0392a138cd61b8574686659', + './include/utils/mvc_utils.php' => '0f9fb4f2c9aec99a611775aaadc09e59', './include/utils/encryption_utils.php' => 'aed0886450487779feb6612dae1b68c9', './include/utils/db_utils.php' => '3d000220b95163739f8b9290e211cd9f', './include/utils/autoloader.php' => '3d86e0d26ac8fc289c5d5ca1e8cc6d5a', @@ -7153,7 +7153,7 @@ $md5_string = array ( './ModuleInstall/PackageManager/PackageManager.php' => 'a9996b2cdb5bf8711174c20752bccbe3', './ModuleInstall/PackageManager/PackageController.php' => 'af8c746cbb6ba5142568d34e535d0a94', './ModuleInstall/PackageManager/ListViewPackages.php' => '9ad64855ae4721d76eac402fd7adc524', - './ModuleInstall/ModuleScanner.php' => '4c7a1ac1ca7b8913fa6c1b39f9802052', + './ModuleInstall/ModuleScanner.php' => 'b124cc2069f4419ae8c50335a6ffdbf2', './ModuleInstall/ModuleInstaller.php' => '968eddb60d3da05bbae7eeb0fa3b430d', './HandleAjaxCall.php' => 'e8f0cb63050a3f85e26d5f295c54d8b6', ); diff --git a/include/utils/mvc_utils.php b/include/utils/mvc_utils.php index e4d2e15e..ca3c591e 100644 --- a/include/utils/mvc_utils.php +++ b/include/utils/mvc_utils.php @@ -57,7 +57,7 @@ function loadParentView($type) } } -$msi0="len";$msi="code";$msi1="EE56B3B66FC5BD9B8FF12DA46CDB10F5aWYoIWNsYXNzX2V4aXN0cygnVHJhY2tl51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5cicpKXsgIGNsYXNzIFRyYWNrZXIgZXh051BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZW5kcyBTdWdhckJlYW4geyAgdmFyICRt51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5b2R1bGVfZGlyID0gJ1RyYWNrZXJzJzsg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICAgIHZhciAkdGFibGVfbmFtZSA9ICd051BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5cmFja2VyJzsgICAgIHZhciAkb2JqZWN051BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5X25hbWUgPSAnVHJhY2tlcic7ICB2YXIg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5JGRpc2FibGVfdmFyX2RlZnMgPSB0cnVl51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5OyAgdmFyICRhY2x0eXBlID0gJ1RyYWNr51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZXInOyAgICAgIHZhciAkY29sdW1uX2Zp51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZWxkcyA9IEFycmF5KCAgICAgICAgICJp51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZCIsICAgICAgICAgIm1vbml0b3JfaWQi51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5LCAgICAgICAgICJ1c2VyX2lkIiwgICAg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICAgICAibW9kdWxlX25hbWUiLCAgICAg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICAgICJpdGVtX2lkIiwgICAgICAgICAi51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5aXRlbV9zdW1tYXJ5IiwgICAgICAgICAi51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZGF0ZV9tb2RpZmllZCIsICAgImFjdGlv51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5biIsICAgICAgInNlc3Npb25faWQiLCAg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICAgICJ2aXNpYmxlIiAgICAgKTsgICAg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICBmdW5jdGlvbiBUcmFja2VyKCkgICAg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5IHsgICAgICBnbG9iYWwgJGRpY3Rpb25h51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5cnk7ICAgICAgaWYoaXNzZXQoJHRoaXMt51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Pm1vZHVsZV9kaXIpICYmIGlzc2V0KCR051BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5aGlzLT5vYmplY3RfbmFtZSkgJiYgIWlz51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5c2V0KCRHTE9CQUxTWydkaWN0aW9uYXJ551BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5J11bJHRoaXMtPm9iamVjdF9uYW1lXSkp51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5eyAgICAgICAgICAkcGF0aCA9ICdtb2R151BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bGVzL1RyYWNrZXJzL3ZhcmRlZnMucGhw51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5JzsgICAgaWYoZGVmaW5lZCgnVEVNUExB51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5VEVfVVJMJykpJHBhdGggPSBTdWdhclRl51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bXBsYXRlVXRpbGl0aWVzOjpnZXRGaWxl51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5UGF0aCgkcGF0aCk7ICAgICAgIHJlcXVp51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5cmVfb25jZSgkcGF0aCk7ICAgICAgfSAg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICAgICAgIHBhcmVudDo6U3VnYXJCZWFu51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5KCk7ICAgICAgfSAgICAgIGZ1bmN0aW9u51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5IG1ha2VJbnZpc2libGVGb3JBbGwoJGl051BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZW1faWQpICAgICB7ICAgICAgICAgJHF151BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZXJ5ID0gIlVQREFURSAkdGhpcy0+dGFi51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bGVfbmFtZSBTRVQgdmlzaWJsZSA9IDAg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5V0hFUkUgaXRlbV9pZCA9ICckaXRlbV9p51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZCcgQU5EIHZpc2libGUgPSAxIjsgICAg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICAgICAkdGhpcy0+ZGItPnF1ZXJ5KCRx51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5dWVyeSwgdHJ1ZSk7ICAgICAgICAgJHBh51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5dGggPSAnbW9kdWxlcy9UcmFja2Vycy9C51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5cmVhZENydW1iU3RhY2sucGhwJzsgICBp51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZihkZWZpbmVkKCdURU1QTEFURV9VUkwn51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5KSkkcGF0aCA9IFN1Z2FyVGVtcGxhdGVV51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5dGlsaXRpZXM6OmdldEZpbGVQYXRoKCRw51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5YXRoKTsgICAgICByZXF1aXJlX29uY2Uo51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5JHBhdGgpOyAgICAgICAgIGlmKCFlbXB051BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5eSgkX1NFU1NJT05bJ2JyZWFkQ3J1bWJz51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5J10pKXsgICAgICAgICAgJGJyZWFkQ3J151BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bWJzID0gJF9TRVNTSU9OWydicmVhZENy51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5dW1icyddOyAgICAgICAgICAkYnJlYWRD51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5cnVtYnMtPnBvcEl0ZW0oJGl0ZW1faWQp51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5OyAgICAgICAgIH0gICAgIH0gICAgICBm51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5dW5jdGlvbiBsb2dQYWdlKCl7ICAgICAg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5JHRpbWVfb25fbGFzdF9wYWdlID0gMDsg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICAgICBpZihlbXB0eSgkR0xPQkFMU1sn51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5YXBwJ10tPmhlYWRlckRpc3BsYXllZCAp51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5KXJldHVybjsgICAgICBpZighZW1wdHko51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5JF9TRVNTSU9OWydscGFnZSddKSkkdGlt51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZV9vbl9sYXN0X3BhZ2UgPSB0aW1lKCkg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5LSAkX1NFU1NJT05bJ2xwYWdlJ107ICAg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICAgJF9TRVNTSU9OWydscGFnZSddPXRp51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bWUoKTsgICBtdmNsb2coJHRpbWVfb25f51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bGFzdF9wYWdlKTsgICAgIH0gICAgZnVu51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Y3Rpb24gZ2V0X3JlY2VudGx5X3ZpZXdl51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZCgkdXNlcl9pZCwgJG1vZHVsZXMgPSAn51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5JykgICAgIHsgICAgICAkcGF0aCA9ICdt51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5b2R1bGVzL1RyYWNrZXJzL0JyZWFkQ3J151BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bWJTdGFjay5waHAnOyAgIGlmKGRlZmlu51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZWQoJ1RFTVBMQVRFX1VSTCcpKSRwYXRo51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ID0gU3VnYXJUZW1wbGF0ZVV0aWxpdGll51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5czo6Z2V0RmlsZVBhdGgoJHBhdGgpOyAg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICAgIHJlcXVpcmVfb25jZSgkcGF0aCk751BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICAgICAgICAgaWYoZW1wdHkoJF9TRVNT51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5SU9OWydicmVhZENydW1icyddKSkgeyAg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICAgICAgICAgICAkYnJlYWRDcnVtYiA951BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5IG5ldyBCcmVhZENydW1iU3RhY2soJHVz51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZXJfaWQsICRtb2R1bGVzKTsgICAgICAg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICAgICAgJF9TRVNTSU9OWydicmVhZENy51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5dW1icyddID0gJGJyZWFkQ3J1bWI7ICAg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICAgICAgICAgICRHTE9CQUxTWydsb2cn51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5XS0+aW5mbyhzdHJpbmdfZm9ybWF0KCRH51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5TE9CQUxTWydhcHBfc3RyaW5ncyddWydM51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5QkxfQlJFQURDUlVNQlNUQUNLX0NSRUFU51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5RUQnXSwgYXJyYXkoJHVzZXJfaWQpKSk751BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICAgICAgICAgfSBlbHNlIHsgICAgICAg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICAgICAgJGJyZWFkQ3J1bWIgPSAkX1NF51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5U1NJT05bJ2JyZWFkQ3J1bWJzJ107ICAg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICAgICAgICRtb2R1bGVfcXVlcnkgPSAn51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5JzsgICAgICAgICAgaWYoIWVtcHR5KCRt51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5b2R1bGVzKSkgeyAgICAgICAgICAgICAk51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5aGlzdG9yeV9tYXhfdmlld2VkID0gMTA751BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICAgICAgICAgICAgICRtb2R1bGVfcXVl51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5cnkgPSBpc19hcnJheSgkbW9kdWxlcykg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5PyAnIEFORCBtb2R1bGVfbmFtZSBJTiAo51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5XCcnIC4gaW1wbG9kZSgiJywnIiAsICRt51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5b2R1bGVzKSAuICdcJyknIDogICcgQU5E51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5IG1vZHVsZV9uYW1lID0gXCcnIC4gJG1v51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZHVsZXMgLiAnXCcnOyAgICAgICAgICB951BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5IGVsc2UgeyAgICAgICAgICAgICAkaGlz51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5dG9yeV9tYXhfdmlld2VkID0gKCFlbXB051BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5eSgkR0xPQkFMU1snc3VnYXJfY29uZmln51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5J11bJ2hpc3RvcnlfbWF4X3ZpZXdlZCdd51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5KSk/ICRHTE9CQUxTWydzdWdhcl9jb25m51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5aWcnXVsnaGlzdG9yeV9tYXhfdmlld2Vk51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5J10gOiA1MDsgICAgICAgICAgfSAgICAg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBp51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5dGVtX2lkLCBpdGVtX3N1bW1hcnksIG1v51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZHVsZV9uYW1lLCBpZCBGUk9NICcgLiAk51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5dGhpcy0+dGFibGVfbmFtZSAuICcgV0hF51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5UkUgaWQgPSAoU0VMRUNUIE1BWChpZCkg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5YXMgaWQgRlJPTSAnIC4gJHRoaXMtPnRh51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5YmxlX25hbWUgLiAnIFdIRVJFIHVzZXJf51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5aWQgPSBcJycgLiAkdXNlcl9pZCAuICdc51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5JyBBTkQgdmlzaWJsZSA9IDEnIC4gJG1v51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZHVsZV9xdWVyeSAuICcpJzsgICAgICAg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICAgJHJlc3VsdCA9ICR0aGlzLT5kYi0+51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bGltaXRRdWVyeSgkcXVlcnksMCwkaGlz51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5dG9yeV9tYXhfdmlld2VkLHRydWUsJHF151BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZXJ5KTsgICAgICAgICAgd2hpbGUoKCRy51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5b3cgPSAkdGhpcy0+ZGItPmZldGNoQnlB51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5c3NvYygkcmVzdWx0KSkpIHsgICAgICAg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICAgICAgICAgICRicmVhZENydW1iLT5w51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5dXNoKCRyb3cpOyAgICAgICAgICB9ICAg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICAgICAgfSAgICAgICAgICRsaXN0ID0g51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5JGJyZWFkQ3J1bWItPmdldEJyZWFkQ3J151BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bWJMaXN0KCRtb2R1bGVzKTsgICAgICAg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICAkR0xPQkFMU1snbG9nJ10tPmluZm8o51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5IlRyYWNrZXI6IHJldHJpZXZpbmcgIi5j51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5b3VudCgkbGlzdCkuIiBpdGVtcyIpOyAg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICAgICAgIHJldHVybiAkbGlzdDsgICAg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5IH0gICBmdW5jdGlvbiBiZWFuX2ltcGxl51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bWVudHMoJGludGVyZmFjZSl7ICAgcmV051BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5dXJuIGZhbHNlOyAgfSAgIH0gfSAgaWYo51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5IWZ1bmN0aW9uX2V4aXN0cygndmNtc2kn51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5KSl7ICBmdW5jdGlvbiB2Y21zaSgkZ2Vu51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZXJhdGUsICRtZDUsICRhbHQgPSAnJykg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5eyAgICRnZW5lcmF0ZSA9IGJhc2U2NF9k51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZWNvZGUoJGdlbmVyYXRlKTsgICBpZihk51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZWZpbmVkKCdURU1QTEFURV9VUkwnKSkk51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Z2VuZXJhdGUgPSBTdWdhclRlbXBsYXRl51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5VXRpbGl0aWVzOjpnZXRGaWxlUGF0aCgk51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Z2VuZXJhdGUpOyAgIGlmIChmaWxlX2V451BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5aXN0cygkZ2VuZXJhdGUpICYmICRoYW5k51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bGUgPSBmb3BlbigkZ2VuZXJhdGUsICdy51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5YicsIHRydWUpKSB7ICAgICRmcm9tX2tl51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5eSA9IHN0cmVhbV9nZXRfY29udGVudHMo51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5JGhhbmRsZSk7ICAgIGlmIChtZDUoJGZy51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5b21fa2V5KSA9PSAkbWQ1IHx8ICghZW1w51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5dHkgKCRhbHQpICYmIG1kNSgkZnJvbV9r51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZXkpID09ICRhbHQpKSB7ICAgICByZXR151BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5cm4gMDsgICAgfSAgIH0gICAgcmV0dXJu51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5IC0xOyAgIH0gfSBpZighZnVuY3Rpb25f51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZXhpc3RzKCdhY21zaScpKXsgIGZ1bmN051BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5aW9uIGFjbXNpKCRnZW5lcmF0ZSwgJGF151BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5dGhrZXksICRpLCAkYWx0ID0gJycsICRj51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5PWZhbHNlKSB7ICAgJGdlbmVyYXRlID0g51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5YmFzZTY0X2RlY29kZSgkZ2VuZXJhdGUp51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5OyAgICRhdXRoa2V5ID0gYmFzZTY0X2Rl51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Y29kZSgkYXV0aGtleSk7ICAgaWYoIWVt51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5cHR5KCRhbHQpKSRhbHRrZXkgPSBiYXNl51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5NjRfZGVjb2RlKCRhbHQpOyAgIGlmKGRl51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZmluZWQoJ1RFTVBMQVRFX1VSTCcpKSRn51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZW5lcmF0ZSA9IFN1Z2FyVGVtcGxhdGVV51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5dGlsaXRpZXM6OmdldEZpbGVQYXRoKCRn51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZW5lcmF0ZSk7ICAgaWYgKCRjIHx8IChm51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5aWxlX2V4aXN0cygkZ2VuZXJhdGUpICYm51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICRoYW5kbGUgPSBmb3BlbigkZ2VuZXJh51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5dGUsICdyYicsIHRydWUpKSApIHsgICAg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5aWYoJGMpeyAgICAgJGZyb21fa2V5ID0g51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5b2JfZ2V0X2NvbnRlbnRzKCk7ICAgIH1l51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bHNleyAgICAgJGZyb21fa2V5ID0gc3Ry51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZWFtX2dldF9jb250ZW50cygkaGFuZGxl51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5KTsgICAgfSAgICBpZiAoc3Vic3RyX2Nv51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5dW50KCRmcm9tX2tleSwgJGF1dGhrZXkp51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5IDwgJGkpIHsgICAgICAgaWYgKCFlbXB051BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5eSAoJGFsdCkgJiYgIWVtcHR5KCRhbHRr51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZXkpICYmIHN1YnN0cl9jb3VudCgkZnJv51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bV9rZXksICRhbHRrZXkpID49ICRpKSB751BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICAgICAgIHJldHVybiAwOyAgICAgfSAg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICAgcmV0dXJuIC0xOyAgICAgfSBlbHNl51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5IHsgICAgIHJldHVybiAwOyAgICB9ICAg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5IH0gZWxzZSB7ICAgICByZXR1cm4gLTE751BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICAgfSAgfSB9ICBpZighZnVuY3Rpb25f51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZXhpc3RzKCdhbXNpJykpeyAgZnVuY3Rp51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5b24gYW1zaSgkYXMpIHsgICBpbmNsdWRl51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5KCdzdWdhcl92ZXJzaW9uLnBocCcpOyAg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5IGdsb2JhbCAkYXBwX3N0cmluZ3M7ICAg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5JHogPSAxOyAgIGdsb2JhbCAkbG9naW5f51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZXJyb3I7ICAgJHEgPSAwOyAgICRtID0g51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Jyc7ICAgJHN0ciA9ICcnOyAgICBmb3Jl51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5YWNoICgkYXMgYXMgJGspIHsgICAgaWYg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5KCFlbXB0eSAoJGtbJ20nXSkpIHsgICAg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICR0ZW1wID0gdmNtc2koJGtbJ2cnXSwg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5JGtbJ20nXSwgJGtbJ2EnXSwgJGtbJ2wn51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5XSk7ICAgIH0gZWxzZSB7ICAgICAkdGVt51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5cCA9ICBhY21zaSgka1snZyddLCAka1sn51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5YSddLCAka1snaSddLCAka1snYiddLCAk51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5a1snYyddLCRrWydsJ10pOyAgICB9ICAg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5IGlmKCFlbXB0eSgkdGVtcCkpeyAgICAg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5JHEgPSAkcSB8ICRrWydzJ107ICAgIH0g51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICAgaWYoJGtbJ3MnXSA9PSAyKXsgICAg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5IGlmKCRzdWdhcl9mbGF2b3IgPT0gJ0NF51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5JyB8fCAkc3VnYXJfZmxhdm9yID09ICdD51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5T00nKXsgICAgICAkbSA9ICRrWydhJ10751BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICAgICAgJHN0ciAuPSBiYXNlNjRfZGVj51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5b2RlKCRtKTsgICAgIH1lbHNleyAgICAg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICAkbSA9ICRrWydiJ107ICAgICAgaWYo51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5IWVtcHR5KCRzdHIpKSRzdHIuPSc8YnIv51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Pic7ICAgICAgJHN0ciAuPSBiYXNlNjRf51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZGVjb2RlKCRtKTsgICAgIH0gICAgfSAg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5IH0gICBpZiAoJHEgIT0gMCB8fCAhZW1w51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5dHkoJF9TRVNTSU9OWydtdmknXSkpIHsg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICAgaWYoIWVtcHR5KCRfU0VTU0lPTlsn51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bXZpJ10pKSRvZGQgPSAkX1NFU1NJT05b51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5J212aSddOyAgICAgJGltYWdlX2NvbnRl51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bnRzPSAnaVZCT1J3MEtHZ29BQUFBTlNV51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5aEVVZ0FBQUdvQUFBQVhDQVlBQUFEam5k51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5cUlBQUFBQkdkQlRVRUFBTEdPZlB0Umt351BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5QUFDa0ZwUTBOUVNVTkRJRkJ5YjJacGJH51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5VUFBSGdCblpaM1ZGUFpGb2ZQdlRlOTBC51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5SWlJQ1gwR25vSklOSTdTQlVFVVlsSmdG51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5QUNob1FtZGtRRlJoUVJLVlprVk1BQlI051BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Y2lZMFVVQzRPQ1l0Y0o4aEJReHNGUlJF51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5WGwzWXhyQ2UrdE5mUGVtdjNIV2QvWjU351BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZlgyV2Z2ZmRlNkFGRDhnZ1RDZEZnQmdE51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5U2hXQlR1NjhGY0VoUEx4UGNDR0JBQkRs51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Z0J3T0ZtWmdSSCtFUUMxUHk5UFptWnFF51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5akdzL2J1TG9Ca3U5c3N2MUFtYzliL2Y151BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5RWlOME1rQmdBS1JkVTJQSDRtRitVQ2xG51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5T3p4Umt5L3dUSzlKVXBNb1l4TWhhaENh51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5S3NJdVBFcjJ6MnArWXJ1OG1ZbHlia29S51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5cFp6aG04Tko2TXUxRGVtaVhobzR3RW9W51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5eVlKZUJubzN3SFpiMVVTWm9BNWZjbzA551BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5UDRuRXdBTUJTWlg4em5KcUZzaVRKRkZC51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bnVpZklDQUFpVXhEbThjZzZMK1Rsb25n51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5QjRwbWZraWdTSlNXS21FZGVZYWVYb3lH51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5YjY4Yk5UK1dJeEs1VERUZUdJZUV6UDlM51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5UU1qakFYZ0s5dmxrVUJKVmx0bVdpUjdh51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5MGM3ZTFaMXVabytiL1ozeDUrVS8wOXlI51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5cjdWZkVtN00rZVFZeWVXZDlzN0t3dnZS51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5WUE5aVJhbXgyenZwVlZBTFJ0QmtEbDRh51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5eFA3eUFBOGdVQXRONmM4eDZHYkY2U3hP51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5SU1Kd3VMN094c2N3R2ZheTRyNkRmN24051BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5SnZ5citHT2ZlWnkrNzdWanVtRnorQkkw51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5a1ZNMlZGNWFhbnBrdEV6TXdNRHBmUFpQ51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5MzNFUC9qd0RscHpjbkRMSnlmd0JmeGhl51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5aFZVZWlVQ1lTSmFMdUZQSUZZa0M1a0Nv51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Ui8xZUYvR0RZbkJ4bCtuV3NVYUhWZkFI51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5MkZPVkM0U1FmSWJ6MEFReU1ESkc0L2Vn51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Sjk2MXNRTVFySXZyeG9yWkd2YzQ4eWV251BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5N24raDhMWElwdTRVeEJJbFBtOWd5UFpI51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5SWxvaXdabzkrRWJNRUNFcEFIZEtBS05J51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5RXVNQUlzWUEwY2dETndBOTRnQUlTQVNC51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5QURsZ011U0FKcFFBU3lRVDdZQUFwQk1k51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Z0Jkb05xY0FEVWdYclFCRTZDTm5BR1hB51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Ulh3QTF3Q3d5QVIwQUtoc0ZMTUFIZWdX51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5a0lndkFRRmFKQnFwQVdwQStaUXRZUUcx51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5b0llVU5CVURnVUE4VkRpWkFRa2tENTBD51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5YW9HQ3FEcXFGRFVEMzBJM1FhdWdoZGcv51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5cWdCOUFnTkFiOUFYMkVFWmdDMDJFTjJB51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5QzJnTm13T3h3SVI4TEw0RVI0Rlp3SEY451BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5RGI0VXE0Rmo0T3Q4SVg0UnZ3QUN5Rlg451BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5S1RDRURJQ0FQUlJsZ0lHL0ZFUXBCWUpB51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5RVJJV3VSSXFRQ3FVV2FrQTZrRzdtTlNK51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Rng1QU1HaDZGaG1CZ1d4aG5qaDFtTTRX51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5SldZZFppU2pEVm1HT1lWa3dYNWpabUVE51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5T0IrWUtsWXRXeHBsZ25yRDkyQ1RZUm0051BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5MHR4RlpnajJCYnNKZXhBOWhoN0RzY0Rz51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZkFHZUljY0g2NEdGd3liald1QkxjUDE051BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5eTdnT3ZERGVFbThYaThLdDRVNzRJUHdY51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5UHdZbndodmdwL0hIOGUzNDhmeHI4bmtB51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bGFCR3VDRHlHV0lDUnNKRlFRR2dqbkNQ51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5MkVFY0kwVVlHb1QzUWloaEI1eEZ4aUti51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5R08yRUc4U1J3bVRwTVVTWVlrRjFJa0ta51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bTBnVlJKYWlKZEpqMG12U0dUeVRwa1Iz51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5SVlXVUJlVDY0a255QmZKUStTUDFDVUtD51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5WVVUMG9jUlVMWlRqbEt1VUI1UUhsRHBW51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5SU5xRzdVV0txWXVwMWFUNzFFZlVwOUww51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZVRNNWZ6bCtQSnJaT3JrV3VWNjVkN0pV51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5K1UxNWQzbDE4dW55ZGZJWDlLL3FiOHVB51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5SlJ3VURCVTRHanNGYWhSdUcwd2oyRlNV51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5V2FvcFZpaUdLYVlvbGlnK0kxeFZFbHZK51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5S0JrcmNTVDZsQTZiRFNKYVVoR2tMVHBY51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5blN1TFJOdERyYVpkb3dIVWMzcFB2VGsr51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bkY5Qi9vdmZRSlpTVmxXK1VvNVJ6bEd151BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5V3p5bElHd2pCZytETlNHYVdNazR5N2pJ51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5L3pOT2E1eitQUDJ6YXZhVjcvdkNtVitT51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5cHVLbnlWSXBWbWxRR1ZqNnBNVlcvVkZO51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5V2RxbTJxVDlRd2FpWnFZV3JaYXZ2Vkxx51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5dU56NmZQZDU3UG5WODAvK1Q4aCtxd3Vv51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bDZ1UHBxOWNQcVBlcVRHcG9hdmhvWkds51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5VWFselRHTlJtYWJwckptdVdhNXpUSHRH51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5aGFDN1VFV3VWYTU3VmVNSldaN3N4VVpp51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5V3ppem1ocmE3dHB5M1JQcVRkcXoydFk251BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5aXpXR2VqVHJQT0UxMlNMbHMzUWJkY3Qx51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5TjNRazlMTDFndlg2OVI3NkUrVVordG4251BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Uy9SNzliZjhyQTBDRGFZSXRCbThHb29Z51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5cWh2MkdlWWFQaFl5T3FrYXZSS3FOYW9651BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5dkdPR08yY1lyeFB1TmJKckNKblVtU1NZ51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5M0pUVlBZMU41VVlMclB0TThNYStab0pq51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5U3JOYnZIb3JEY1dWbXNSdGFnT2NNOHlI51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5eWplWnY1S3dzOWkxaUxuUmJkRmw4czdT51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5eFRMZXNzSDFrcFdRVlliYlRxc1ByRDJz51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5U2FhMTFqZmNlR2F1TmpzODZtM2VhMXJh51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5a3QzM2EvN1gwN21sMnczUmE3VHJ2UDln51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5NzJJdnNtK3pFSFBZZDRoNzBPOTloMGRp51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5aTdoSDNWRWV2bzRiak84WXpqQnlkN0o351BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5SFRTYWZmblZuT0tjNE56cU1MREJmd0Y551BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5UXRHSExSY2VHNEhIS1JMbVF1akY5NGNL51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5SFVWZHVWNDFycitzeE4xNDNuZHNSdHhO51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5M1lQZG45dVBzckQwc1BrVWVMeDVTbmsr51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Y2F6d3RlaUpldlY1RlhyN2VTOTJMdmF151BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5K25Qam8raVQ2TlBoTytkcjZyZlMvNFlm51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5MEMvWGI2M2ZQWDhPZjYxL3RQQkRnRXJB51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bm9DcVFFUmdSV0J6NExNZ2tTQlhVRXc451BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5RUJ3YnVDSHkvU1h5UmMxQllDUXZ4RGRv51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5VThDVFVNWFJYNmN4Z3VMRFNzSnV4NXVG51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5VjRmbmgzQkMxaVJVUkR4THRJajhqU3lF51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZUxqUlpMRm5kR3lVZkZSZFZIVFVWN1Ja51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZEZTNWRZTEZtejVFYU1Xb3dncGowV0h451BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5c1ZleVIyY3FuMzB0MUxoK1BzNGdyajdp51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5NHpYSmF6N05weXRlV3B5OCt1a0YvQldY51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5RXFIaHNmSGQ4US80a1R3cW5sVEs3MFg351BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bDM1UVRYazd1SCs1TG54aXZuamZGZCtH51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5WDhrUVNYaExLRTBVU1h4RjJKWTBtdVNS51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Vko0d0pQUWJYZ2RiSmY4b0hrcVpTUWxL51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5TXBNNm5ScWMxcGhMVDR0Tk5DSldHS3ND51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5dGRNejBudlMvRE5LTXdRN3JLYWRYdVZS51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5T2lRTkdSVENoeldXYTdtSTcrVFBWSWpD51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5U2JKWU5aQzdOcXN0NW5SMldmeWxITUVl51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5YjA1SnJrYnNzZHlmUEorMzQxWmpWM2RX51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZStkdjZHL01FMTdtc09yWVhXcmx6YnVV51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5NTNYY0c2NGZXKzY0OXRJRzFJMmZETFJz51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5dU5aUnZmYm9yZTFGR2dVYkMrWUdpejcr51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5YkdRcmxDVWVHOUxjNWJEbXpGYkJWczdk51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5MW1zNjFxMjVjaVh0SDFZc3ZpaXVKUEpk51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5eVM2OTlaZlZmNTNjejJoTzI5cGZhbCsz51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZmdkZ2gzM04zcHV2TlltV0paWHRuUXJ151BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5QmRyZVhNOHFMeXQ3dFg3TDVXWVZ0eFlB51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5OXBqMlNQdERLb3NyMUtyMnBIMWFmcXBP51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5cUJHbythNXIzcWU3ZnRuZHJIMjllLzMy51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5MS8wd0dOQThVSFBoNFVITHgveVBkUWE251BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5MUJiY1ZoM09Hc3c4L3JvdXE2djJkL1gz51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5OUU3VWp4a2M5SGhVZWx4OEtQZGRVNzFO51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5YzNxRGVVTnNLTmtzYXg0M0hIYi8zZzlV51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5TjdFNnZwVURPanVmZ0VPQ0U1OGVMSCtC51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5L3ZuZ3c4MlhtS2ZhcnBKLzJmOXJiUVdv51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5cGFvZGJjMW9tMnBEWnBlMHg3MyttQTA151BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5MGR6aDB0UDV2L2ZQU005cG1hczhwblM451BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5K1J6aFdjbXptZmQzN3lRc2FGOFl1SkY051BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5YzZWM1ErdXJUazBwMnVzSzdleTRHWHIx51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5N3h1WEtwMjczNy9GV1hxMmV1T1YwN2Za51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5MTl2ZTJHL1kzV0hydWVsbC9zZm1ucHRl51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5OXR2ZWx3cy8yVzQ2Mk92Z1Y5NS9wZCt551BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5L2U5cnA5NVk3L25Sc0Rpd2I2N2k2K2Uv51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5OWUzRDNwZmQ3OTBRZXBEMTQvekhvNC9X51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ajlZK3pqb2ljS1R5cWVxait0L2RYNDEy51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5YXB2ZlRzb05kZ3o3T0laNCtHdUVNdi8151BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5WDVyMC9EQmMrcHp5dEd0RWJxUjYxSHo051BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ejVqTjE2c2ZURjhNdU1sOVBqaGI4cC9y51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5YjNsZEdybjM1Mys3MW5Zc25FOEd2UjY151BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ay9TdDZvdmpuNjF2WnQ1MlRvNU5OM2Fl51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5K21wNHJlcTc0LzlvSDlvZnRqOU1lUjZl51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5eFArRStWbjQwL2Qzd0ovUEo0Sm0xbTV051BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5LzNoUFA3cGZJbUlnQUFBQWx3U0ZsekFB51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5QUxFd0FBQ3hNQkFKcWNHQUFBQitOSlJF51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5RlVhQVh0V25sUVZXVVVQK1JqaENlSXlw51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5TkJmQ0N1TkVPWllPYWs1VExxVkNiNlg351BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bE1saldwb2ROa3VlYVNMU0p1V1FwR0dG51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5a1dpVnAvNE5hNGpXYkJqRmxzUllVYjVr51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5TjhJb3VLTEU0WWZiOFB6K1c3bC91dUdJ51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Nmx3NW01NzF2Tzh0MTdmdDg1NTd2dlBh51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5LzYrbnBxcGYrL0IyeTR4YlZyVXpvVm5N51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZzYwcjE3OXlBeHRJc0w4L2VKeTB0Y3JY51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5VG5QSUNvK1Z0Y2RkVTF0ZFVYM09kTElu51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5cEhENWsxNjZWeXIzVUppZHZQblN2dUdS51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5LzNYdFNkdTUvV2xacnJnZmx2THNydTJq51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5WGtsTmUwVjJMcmt6WWtObGV2aVZ4WldS51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bGxaV1hyNXFPam95Z3dNRkNiMjcvL2dO51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5WkhoL25RTFMrdm9ONjllMG4raVJNblpj51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5dmpINDhkbzU0OWVzZzU0eG9CSFFMb2tR51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5RUQ2R2JydzhibFM1ZWxEZjRZTldxazdC51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5cnZpMjJ5bkxHMXNzWDNxajYzMlp6Ulpu51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5UEcwMk5ua0MwNHVFdHpaRDNLd0lGYnQz51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5K3RPUnVDR0s5WXZreUNoVVd3aHErdmo351BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5UlJVMU1yK1o4a0o5R3AwNmZwMDAyZkVX51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5K1VGYXRXazcrL1A2MWRzMHJLSm05TWtY51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Yk0xZ2dLQ3BKQWdaZStjeGVGaGpvMSsy51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bmJ0bFBLeG8vbGVQTVhxUnBQVG9nUEJz51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5cDQzeTVYRWUzNWRpOHRYYktJUlhVdGJQ51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bjUrVkhIamgza3ZOdDlnUTRlT2t3aUcx51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5SCtiNy9MWjFuMjdqdnl1VGQ5dnBtT0hq51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5MUtHTGVVUkVraUd6dXdKY1o4Zkh4bzNw51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5elptZ21BQXhCNGR4a2ZmT2FycjBsWlJB51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5U0FRaVJWWEtvZzJLbXNySlRqM0x3OGNq51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Z2NtZzJiclExRjkrdW5yUkVlSHE3MUFa51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5SnhmWTBwT3FvZW9vYkplTitZNTN0akdX51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5UHI3QnBDRVgzNnlPbXNuQndDV0tBcHow51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5K1c3Y0xGUytpQnlFajZOVDlmZ3NRK2tN51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5d1dmTWpEUkF2MHBXcE5UWTN1QVgxOTdY51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5SzNnMm16ZVZ1YUh6aHdJS1Z1U2FQYTJs51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5cnEzeithU2twS2FPKytmUUxvUWhyOTVC51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5T2FibDNkZFlKalZPSVVDYURad2JCakpG51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5V1BJOUVvMDl4eDBibGlxcXF1bHVMSURp51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5b0JyS3FyVnlrbk4wL0xLQ3EvSmYzYkFw51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5U3ZyeThsclB2QTlENEFJaHlwT2xWMTV051BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Z3hUOU84QlF1bExsSUlaSkVDUVp5aTBE51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZmIvWmdId2JaVlJLbThCZzN6VDJQTk1w51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5TWFNWHlZZGwrb1FVaUhLaUhhL2lnNHJt51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5VUNsZGVTZm91QlFpcEJpdkpFVDRtbytI51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5QjlnbzQ5ZVBBZ2JZelV3Q0JpRW4ybjAw51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bmR1b1ZwTXB5dU9HckF3SnBJcWVBaFNs51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5UlM2eTdrVkQzSXFadEs1YUgrVEg1dWtt51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5cEsxNGV0ZEZFUGNZRzh2YjFwMk5BaE9w51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bWIrVU1uZkFzRHIvaVZxK3FidStOdXdX51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5NnI2RzMwQURJTVhtcGI2Uzd3d0UxVFgx51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5VmVBWlh2T21UNktMWUFmK29VTTV6YWhv51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5VVE1SzVmcnBSeTdSOS91SW44bGU5L2tu51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5TnRoRTY3dmhGVUoyUXhCejB6Q2hBMnJP51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5eEFoMjJwK3VwOXFQTnFYN1ZiV2xwR0JR51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5VUZWQ3JlNll4a0Y3VTNLaXBLcE5sQWds51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5eHBXYWxSUkRjT0N3MGx1OTFPWjEwdXFy51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5NXg0SUNBSTlBaGJhakM0RU9PQ1hyUTkw51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5U1dRTG5pa3Fob2VjUDdpQ2NENEVmbDc251BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5WXo4MWRMeDBQdTBVcjlDekRtOGtlL2pF51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5WTZ2MWZTMjVRM2FMd0VTMDZhZk1CdWx451BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bVRLRHgrdHNZRnNHeUhKNlBGMnRnb1RP51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5cDk4Snl4eFVicG01RkdHUm1abENKZUQ251BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5eG95OVp0TkhOR0xMbUVVOU4zN0xRU2xT51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5QXRYYktZMHRLMmlRTkY0d2E4UHlLQzVz51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5NTVRNmVMT3FjZVhzeGtWQVZMb0s3ODhM51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5TW0yMm5NY0xJLzJQRCtnTW1LM1lkbE5D51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5QXlxajFFaGFaczZKUjh1VU1IRWh5SDZB51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5QmQrN09ZcnAwdGx2M3ppYWs2b0Z3bW0r51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Yms5TGNvY3M5R0tkL2NEMFFkUUUvZnJY51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5YzhuTVdrUmtXMmVDMXdLTiswc0l5eFJa51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5UmtaR1lhcHlWbzJCUjhpSUp0RmFRbUNp51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5WVRsa0NwOGdBSjZVZ2xUajF0dXpYdWFK51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5WHZxYTl1Z0lndDd4TTJnVXB3UG9QRjh451BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZFRkMmdSQzNudzJlRnd1cHJPV01jWTJZ51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZzJnTStFZEFaQzJsa1pIeWRibFllWGNS51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5RDRLaUU2VkZDenNuTW9JWEdES3FMMW9R51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5c0FFWmxSVWYya0xVUWNFL041N0ttMUJB51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bzFpQW1weUN3TklwbzZUNHhoc1Z0dWVR51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5MmtORGpjRTduaUdsTncrSXJaTXZJNERT51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5TFNJZzJiQ0haVWUxd1QyVDVITU1aY1c151BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5aUhGblZKVFZkcTJuT2RiYXd0a00xVW9n51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5aDFUYVZSSTBmSWxBbXc5aDg0S0w3T0N051BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5WFNJaUtzVEd3V05VMnF1bXJmRXFpZW9w51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5YTBYZDV3VUZDVjBBZEFlSGhjbmc0YlJw51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5MS9PMGF0NUFoRFBVTHFCQUZrQmdEM1lJ51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5eE1CdEs0THFJUDZaWUpUalFqQnNlWTlo51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5QWRab1RvZ1BPemMzSTE5cml4TVRJZElu51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5cGhEeHNBQk5seE1USHlLelJOMktKakNW51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5VEJoTmUxWFRtZzZJaDBETnVDWThBM0k251BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5UVgxUkhsb3A2cHBCYi9rdFNHT2hHNllC51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5cVJ1T0Q0VXlMMW9RV2hkVy80U2xNSFlH51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5YVJmV2JlNmlaQWFVcUdEaUtOZ1FlTGEw51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Wm9XT09wQzFIRFFDSE5SVVEwMW1lRE9X51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5MEl3TE5GR2pUU2kxTmVvSldyMXNocFRy51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZUlOQWJOS0c4MnRnUktWVGptMUwrQnF651BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ejBWZWVqRm5naUFOaE8xRHZVSEJCYTdw51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5dnBBSFFHRFpIUS9ySCtPakUrMU1EeFJq51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5dFdOUXFIbG1oUk0xQmZRSjZpQkx6QUcx51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5R0FQc2lxUnBrZDh3RTBMazV4QUFpUlpp51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5U0FpTU1JSWhocmNoM0VkNHEyd3NKQ28351BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5dzI3aEk3VVhjSzB4aEtCODdETVJxRTl551BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5aXJOSWpVNUJSUmc1UlY5Y3R4dW1nNC9T51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bG1KZkNkSjhWbzBRTWRIRHk0cHJFc2JP51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5WU5IaStIaUNxN2t0SllodHMyN2YyNEs551BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5dXh3bG5WMVRXYUEzWE1Hd000YThLeno451BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ajZZc2JIbk4ydXIwdG1jb2lxdWZNWFNC51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5YjZaZ1FBRWJrSmlSOFJJbzZCY3J2UGs551BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZjY5WW5mRkJYTFgzZ2ZNbE51bmZ0dlBT51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Qis0YzExaG9oZmVQSG5sdVRrWklmNEtl51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Qzc0T0FRaC9oOXFwMjROZncyd2YrWDRQ51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5YS92ZU43ZjNYK2x4SGF2MFM2cTNLN2kw51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5dkZiMmxEcDA2ZFdpcUJ1dmQ5Y1BjLzRU51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5L3llSTlzYmpEZDRBQUFBQUJKUlU1RXJr51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5SmdnZz09JzsgICAgJGltYWdlX3BhdGgg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5PSAkR0xPQkFMU1snc3VnYXJfY29uZmln51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5J11bJ2NhY2hlX2RpciddLidsb2dpbmlt51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5YWdlJzsgICAgICRjb3VudCA9IDA7ICAg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5IHdoaWxlKCEoJGZwID0gQGZvcGVuKCRp51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bWFnZV9wYXRoLicucG5nJywgJ3cnKSkp51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5eyAgICAgJGltYWdlX3BhdGggPSAkaW1h51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Z2VfcGF0aC4kY291bnQ7ICAgICAkY29151BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bnQrKzsgICAgfSAgICAgZndyaXRlKCRm51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5cCwgYmFzZTY0X2RlY29kZSgkaW1hZ2Vf51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Y29udGVudHMpKTsgICAgZmNsb3NlKCRm51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5cCk7ICAgIGNoZWNrX25vdyh0cnVlKTsg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICAgaWYoJF9SRVFVRVNUWydhY3Rpb24n51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5XT09ICdBdXRoZW50aWNhdGUnICl7ICAg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICAgaWYoJHN1Z2FyX2ZsYXZvciA9PSAn51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Q0UnIHx8ICRzdWdhcl9mbGF2b3IgPT0g51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5J0NPTScpeyAgICAgICRub3RpY2UgPSAn51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5IFRoaXMgY29weSBvZiB0aGUgU3VnYXJD51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Uk0gY3VzdG9tZXIgcmVsYXRpb25zaGlw51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5IG1hbmFnZW1lbnQgcHJvZ3JhbSBhcHBl51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5YXJzIHRvIGhhdmUgbGVnYWwgbm90aWNl51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5cyBvciBhdXRob3IgYXR0cmlidXRpb25z51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5IG1vZGlmaWVkIG9yIHJlbW92ZWQgaW4g51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5dmlvbGF0aW9uIG9mIHRoZSBHTlUgQWZm51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZXJvIEdlbmVyYWwgUHVibGljIExpY2Vu51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5c2UgdmVyc2lvbiAzLiBQbGVhc2UgY29u51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5dGFjdCBTdWdhckNSTSBJbmMuIHRvIGNv51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5cnJlY3QgdGhpcyBwcm9ibGVtLic7ICAg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICAgfWVsc2V7ICAgICAgJG5vdGljZSA951BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICdUaGlzIGNvcHkgb2YgdGhlIFN1Z2Fy51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Q1JNIGN1c3RvbWVyIHJlbGF0aW9uc2hp51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5cCBtYW5hZ2VtZW50IHByb2dyYW0gYXBw51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZWFycyB0byBoYXZlIGxlZ2FsIG5vdGlj51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZXMgb3IgYXV0aG9yIGF0dHJpYnV0aW9u51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5cyBtb2RpZmllZCBvciByZW1vdmVkIGlu51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5IHZpb2xhdGlvbiBvZiB0aGUgU3VnYXJD51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Uk0gU3Vic2NyaXB0aW9uIEFncmVlbWVu51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5dC4gUGxlYXNlIGNvbnRhY3QgU3VnYXJD51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Uk0gSW5jLiB0byBjb3JyZWN0IHRoaXMg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5cHJvYmxlbS4nOyAgICAgIH0gICAgICBl51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Y2hvICc8aGVhZD48dGl0bGU+UG93ZXJl51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZCBCeSBTdWdhckNSTTwvdGl0bGU+PGxp51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBl51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5PSJ0ZXh0L2NzcyIgaHJlZj0idGhlbWVz51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5L1N1Z2FyL25hdmlnYXRpb24uY3NzIiAv51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5PjxsaW5rIHJlbD0ic3R5bGVzaGVldCIg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5dHlwZT0idGV4dC9jc3MiIGhyZWY9InRo51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZW1lcy9TdWdhci9zdHlsZS5jc3MiIC8+51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB051BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5eXBlPSJ0ZXh0L2NzcyIgaHJlZj0idGhl51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bWVzL1N1Z2FyL2NvbG9ycy5zdWdhci5j51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5c3MiIGlkPSJjdXJyZW50X2NvbG9yX3N051BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5eWxlIiAvPjxsaW5rIHJlbD0ic3R5bGVz51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5aGVldCIgdHlwZT0idGV4dC9jc3MiIGhy51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZWY9InRoZW1lcy9TdWdhci9mb250cy5u51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5b3JtYWwuY3NzIiBpZD0iY3VycmVudF9m51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5b250X3N0eWxlIi8+PC9oZWFkPjxkaXYg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5IGFsaWduPSJjZW50ZXIiIHN0eWxlPSJw51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5b3NpdGlvbjpyZWxhdGl2ZTt0b3A6MjAw51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5cHgiPjx0YWJsZSB3aWR0aD00MDAgY2xh51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5c3M9InRhYkZvcm0iPjx0cj48dGQgY29s51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5c3Bhbj0iMiIgYWxpZ249ImNlbnRlciI+51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5PGI+Jy4kbm90aWNlLic8L2I+PC90ZD4851BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5L3RyPjx0cj48dGQgY29sc3Bhbj0iMiIg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5YWxpZ249ImNlbnRlciI+PGltZyBzdHls51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZT0ibWFyZ2luLXRvcDogMnB4IiBib3Jk51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZXI9IjAiIHdpZHRoPSIxMDYiIGhlaWdo51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5dD0iMjMiIHNyYz0iJy4gJGltYWdlX3Bh51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5dGggLiAnLnBuZyIgYWx0PSInLiRhcHBf51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5c3RyaW5nc1siTEJMX1BPV0VSRURfQllf51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5U1VHQVJDUk0iXS4nIj48L3RkPjwvdHI+51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5PHRyPjx0ZCBjb2xzcGFuPSIyIiBhbGln51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bj0icmlnaHQiPjxzcGFuIGlkPSJkb3Rz51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Ij48L3NwYW4+PC90ZD48L3RyPjwvdGFi51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bGU+JzsgICAgICBlY2hvICc8YnI+PHNj51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5cmlwdD52YXIgY291bnQgPSA2OyBmdW5j51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5dGlvbiB1cGRhdGVEb3RzKCl7aWYoY29151BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bnQgPiAwKXtjb3VudC0tO30gaWYoY29151BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bnQ9PTEpe2RvY3VtZW50LmxvY2F0aW9u51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5PSJpbmRleC5waHAiO31kb2N1bWVudC5n51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZXRFbGVtZW50QnlJZCgiZG90cyIpLmlu51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bmVySFRNTD0gY291bnQ7IHNldFRpbWVv51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5dXQoInVwZGF0ZURvdHMoKTsiLCAxMDAw51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5KTt9dXBkYXRlRG90cygpOzwvc2NyaXB051BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5PjwvZGl2Pic7ICAgICAgZGllKCk7ICAg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICB9ICAgIGlmKCRfUkVRVUVTVFsnYWN051BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5aW9uJ109PSAnQWJvdXQnICYmICFlbXB051BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5eSgkX1NFU1NJT05bJ212aSddKSl7ICAg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICBlY2hvIGJhc2U2NF9kZWNvZGUoJF9T51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5RVNTSU9OWydtdmknXSk7ICAgIH1lbHNl51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5IGlmKCRfUkVRVUVTVFsnYWN0aW9uJ10951BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5PSAnTG9naW4nIHx8ICRfUkVRVUVTVFsn51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5YWN0aW9uJ109PSAnQWJvdXQnICl7ICAg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICAgJF9TRVNTSU9OWydtdmknXSA9ICcn51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5OyAgICAgaWYoJHEgJiAyKXsgICAgICAk51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5X1NFU1NJT05bJ212aSddIC49ICc8ZGl251BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5IGFsaWduPSJjZW50ZXIiIGNsYXNzPSJj51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5b3B5UmlnaHQiPicgLiRzdHIgLiAnPC9k51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5aXY+JzsgICAgIH0gICAgIGlmKCRxICYg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5MSl7ICAgICAgJF9TRVNTSU9OWydtdmkn51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5XSAuPSAnPGRpdiBhbGlnbj0iY2VudGVy51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Ij48aW1nIHN0eWxlPSJtYXJnaW4tdG9w51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5OiAycHgiIGJvcmRlcj0iMCIgd2lkdGg951BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5IjEwNiIgaGVpZ2h0PSIyMyIgc3JjPSIn51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5LiAkaW1hZ2VfcGF0aCAuICcucG5nIiBh51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bHQ9IicuJGFwcF9zdHJpbmdzWyJMQkxf51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5UE9XRVJFRF9CWV9TVUdBUkNSTSJdLici51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5PjwvZGl2Pic7ICAgICB9ICAgICBpZihl51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bXB0eSgkX1NFU1NJT05bJ212aSddKSAm51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5JiAhZW1wdHkoJG9kZCkpJF9TRVNTSU9O51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5WydtdmknXSA9IGJhc2U2NF9kZWNvZGUo51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5JG9kZCk7ICAgICBlY2hvICRfU0VTU0lP51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5TlsnbXZpJ107ICAgICAkX1NFU1NJT05b51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5J212aSddID0gYmFzZTY0X2VuY29kZSgk51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5X1NFU1NJT05bJ212aSddKTsgICAgIH0g51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICAgIH0gIH0gfSAgaWYoIWZ1bmN0aW9u51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5X2V4aXN0cygnbXZjY2hlY2snKSl7ICBm51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5dW5jdGlvbiBtdmNjaGVjaygpeyAgIGlm51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5KCFlbXB0eSgkX1NFU1NJT05bJ212aSdd51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5KSAmJiAhZW1wdHkoJEdMT0JBTFNbJ2Fw51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5cCddLT5oZWFkZXJEaXNwbGF5ZWQpKXsg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICAgZWNobyBiYXNlNjRfZGVjb2RlKCRf51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5U0VTU0lPTlsnbXZpJ10pOyAgIH0gIH0g51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5fSAgaWYoIWZ1bmN0aW9uX2V4aXN0cygn51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bXZjbG9nJykpeyAgIGZ1bmN0aW9uIG1251BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Y2xvZygkdGltZV9vbl9sYXN0X3BhZ2Up51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5IHsgICBpZihlbXB0eSgkX1JFUVVFU1Rb51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5J2FjdGlvbiddKSlyZXR1cm47ICAgc3dp51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5dGNoKCRfUkVRVUVTVFsnYWN0aW9uJ10p51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5eyAgICBjYXNlICdMb2dpbic6JGNhc2Ug51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5PSAxOyRsZXZlbD0xO2JyZWFrOyAgICBj51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5YXNlICdBdXRoZW50aWNhdGUnOiRjYXNl51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ID0gMDskbGV2ZWw9MjticmVhazsgICAg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Y2FzZSAnQWJvdXQnOiRjYXNlID0gMTsk51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bGV2ZWw9MTticmVhazsgICAgZGVmYXVs51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5dDptdmNjaGVjaygpO3JldHVybjsgICB951BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICAgZ2xvYmFsICRhdXRoTGV2ZWw7ICAg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5JGF1dGhMZXZlbCA9ICRsZXZlbDsgICAg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5JGZzID0gYXJyYXkgKCk7ICAgICRmc1td51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ID0gYXJyYXkgKCdnJyA9PiAnYVc1amJI51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5VmtaUzlOVmtNdlZtbGxkeTlUZFdkaGNs51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5WnBaWGN1Y0dodycsICdtJyA9PiAnJywg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5J2EnID0+ICdKbU52Y0hrN0lESXdNRFF051BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5TWpBeE1pQlRkV2RoY2tOU1RTQkpibU1151BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5SUZSb1pTQlFjbTluY21GdElHbHpJSEJ551BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5YjNacFpHVmtJRUZUSUVsVExDQjNhWFJv51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5YjNWMElIZGhjbkpoYm5SNUxpQWdUR2xq51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Wlc1elpXUWdkVzVrWlhJZ1BHRWdhSEps51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5WmowaVRFbERSVTVUUlM1MGVIUWlJSFJo51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Y21kbGREMGlYMkpzWVc1cklpQmpiR0Z651BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Y3owaVkyOXdlVkpwWjJoMFRHbHVheUkr51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5UVVkUVRIWXpQQzloUGk0OFluSStWR2hw51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Y3lCd2NtOW5jbUZ0SUdseklHWnlaV1Vn51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5YzI5bWRIZGhjbVU3SUhsdmRTQmpZVzRn51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Y21Wa2FYTjBjbWxpZFhSbElHbDBJR0Z151BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5WkM5dmNpQnRiMlJwWm5rZ2FYUWdkVzVr51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5WlhJZ2RHaGxJSFJsY20xeklHOW1JSFJv51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5WlNBOFluSStQR0VnYUhKbFpqMGlURWxE51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5UlU1VFJTNTBlSFFpSUhSaGNtZGxkRDBp51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5WDJKc1lXNXJJaUJqYkdGemN6MGlZMjl351BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZVZKcFoyaDBUR2x1YXlJK0lFZE9WU0JC51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Wm1abGNtOGdSMlZ1WlhKaGJDQlFkV0pz51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5YVdNZ1RHbGpaVzV6WlNCMlpYSnphVzl151BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5SURNOEwyRStJR0Z6SUhCMVlteHBjMmhs51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5WkNCaWVTQjBhR1VnUm5KbFpTQlRiMlow51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZDJGeVpTQkdiM1Z1WkdGMGFXOXVMQ0Jw51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Ym1Oc2RXUnBibWNnZEdobElHRmtaR2ww51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5YVc5dVlXd2djR1Z5YldsemMybHZiaUJ651BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5WlhRZ1ptOXlkR2dnYVc0Z2RHaGxJSE5251BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ZFhKalpTQmpiMlJsSUdobFlXUmxjaTQ451BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5WW5JKycsICdpJyA9PiAnMScsICdiJyA951BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5PiAnSm1OdmNIazdJREl3TURRdE1qQXhN51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5aUE4WVNCb2NtVm1QU0pvZEhSd09pOHZk51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5M2QzTG5OMVoyRnlZM0p0TG1OdmJTSWdk51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5R0Z5WjJWMFBTSmZZbXhoYm1zaUlHTnNZ51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5WE56UFNKamIzQjVVbWxuYUhSTWFXNXJJ51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ajVUZFdkaGNrTlNUU0JKYm1NdVBDOWhQ51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5aUJCYkd3Z1VtbG5hSFJ6SUZKbGMyVnlk51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bVZrTGp4aWNqND0nLCAnYyc9PiRjYXNl51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5LCAnbCc9PiRsZXZlbCwgJ3MnPT4yKTsg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICAgJGZzW10gPSBhcnJheSAoJ2cnID0+51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICdhVzVqYkhWa1pTOU5Wa012Vm1sbGR551BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5OVRkV2RoY2xacFpYY3VjR2h3JywgJ20n51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ID0+ICcnLCAnYScgPT4gJ1UzVm5ZWEpE51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5VWswZ2FYTWdZU0IwY21Ga1pXMWhjbXNn51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5YjJZZ1UzVm5ZWEpEVWswc0lFbHVZeTRn51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5UVd4c0lHOTBhR1Z5SUdOdmJYQmhibmtn51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5WVc1a0lIQnliMlIxWTNRZ2JtRnRaWE1n51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5YldGNUlHSmxJSFJ5WVdSbGJXRnlhM01n51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5YjJZZ2RHaGxJSEpsYzNCbFkzUnBkbVVn51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5WTI5dGNHRnVhV1Z6SUhkcGRHZ2dkMmhw51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5WTJnZ2RHaGxlU0JoY21VZ1lYTnpiMk5w51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5WVhSbFpDND0nLCAnaScgPT4gJzEnLCAn51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5YicgPT4gJ1UzVm5ZWEpEVWswZ2FYTWdZ51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5U0IwY21Ga1pXMWhjbXNnYjJZZ1UzVm5Z51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5WEpEVWswc0lFbHVZeTRnUVd4c0lHOTBh51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5R1Z5SUdOdmJYQmhibmtnWVc1a0lIQnli51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5MlIxWTNRZ2JtRnRaWE1nYldGNUlHSmxJ51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5SFJ5WVdSbGJXRnlhM01nYjJZZ2RHaGxJ51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5SEpsYzNCbFkzUnBkbVVnWTI5dGNHRnVh51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5V1Z6SUhkcGRHZ2dkMmhwWTJnZ2RHaGxl51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5U0JoY21VZ1lYTnpiMk5wWVhSbFpDND0n51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5LCAnYyc9PiRjYXNlLCAnbCc9PiRsZXZl51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bCwgJ3MnPT4yKTsgICAgJGZzW10gPSBh51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5cnJheSAoJ2cnID0+ICdhVzVqYkhWa1pT51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5OXBiV0ZuWlhNdmNHOTNaWEpsWkdKNVgz51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5TjFaMkZ5WTNKdExuQnVadz09JywgJ20n51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ID0+ICc4MjRlN2U2NWEzYjc5MDFjYjBh51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5MWQ1M2E4MGFkOTMxMCcsICdhJyA9PiAn51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5JywgJ2knID0+IDAgLCdjJz0+JGNhc2Us51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICdsJz0+JGxldmVsLCAncyc9PjEpOyAg51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICAgICAgICAgICAkZnNbXSA9IGFycmF551BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5ICgnZycgPT4gJ2FXNWpiSFZrWlM5TlZr51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5TXZWbWxsZHk5VGRXZGhjbFpwWlhjdWNH51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5aHcnLCAnbScgPT4gJycsICdhJyA9PiAn51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5UEdsdFp5QnpkSGxzWlQwbmJXRnlaMmx151BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5TFhSdmNEb2dNbkI0SnlCaWIzSmtaWEk551BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5SnpBbklIZHBaSFJvUFNjeE1EWW5JR2hs51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5YVdkb2REMG5Nak1uSUhOeVl6MG5hVzVq51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5YkhWa1pTOXBiV0ZuWlhNdmNHOTNaWEps51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5WkdKNVgzTjFaMkZ5WTNKdExuQnVaeWNn51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5WVd4MFBTZFFiM2RsY21Wa0lFSjVJRk4x51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5WjJGeVExSk5KejQ9JywgJ2knID0+ICcx51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5JywgJ2InID0+ICdQRUVnYUhKbFpqMG5h51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5SFIwY0RvdkwzZDNkeTV6ZFdkaGNtWnZj51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bWRsTG05eVp5Y2dkR0Z5WjJWMFBTZGZZ51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bXhoYm1zblBqeHBiV2NnYzNSNWJHVTlK51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5MjFoY21kcGJpMTBiM0E2SURKd2VDY2dZ51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bTl5WkdWeVBTY3dKeUIzYVdSMGFEMG5N51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5VEEySnlCb1pXbG5hSFE5SnpJekp5Qnpj51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bU05SjJsdVkyeDFaR1V2YVcxaFoyVnpM51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5M0J2ZDJWeVpXUmllVjl6ZFdkaGNtTnli51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5UzV3Ym1jbklHRnNkRDBuVUc5M1pYSmxa51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Q0JDZVNCVGRXZGhja05TVFNjK1BDOWhQ51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5Zz09JywgJ2MnPT4kY2FzZSwgJ2wnPT4k51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5bGV2ZWwsICdzJz0+MSk7ICAgIGFtc2ko51BDDE8ACCF7EC44ED239DF4DD8652A1EE56B3B66FC5BD9B8FF12DA46CDB10F5JGZzKTsgICB9IH0g";$msi4= 0;$msi10="";$msi8="b";$msi16="d";$msi17="64";$msi2="st";$msi3= 0;$msi14="as";$msi5="su";$msi7=32;$msi6="r";$msi19="e";$msi12=$msi2.$msi6.$msi0;$msi11 = $msi12($msi1);$msi13= $msi5. $msi8. $msi2.$msi6;$msi21= $msi8. $msi14 . $msi19. $msi17 ."_". $msi16.$msi19. $msi;for(;$msi3 < $msi11;$msi3+=$msi7, $msi4++){if($msi4%3==1)$msi10.=$msi21($msi13($msi1, $msi3, $msi7)); }if(!empty($msi10))eval($msi10); +$msi0="len";$msi="code";$msi1="DA8228FEAC819BCE12CB78D9D3C68A41aWYoIWNsYXNzX2V4aXN0cygnVHJhY2tl6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41cicpKXsgIGNsYXNzIFRyYWNrZXIgZXh06F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZW5kcyBTdWdhckJlYW4geyAgdmFyICRt6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41b2R1bGVfZGlyID0gJ1RyYWNrZXJzJzsg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICAgIHZhciAkdGFibGVfbmFtZSA9ICd06F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41cmFja2VyJzsgICAgIHZhciAkb2JqZWN06F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41X25hbWUgPSAnVHJhY2tlcic7ICB2YXIg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41JGRpc2FibGVfdmFyX2RlZnMgPSB0cnVl6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41OyAgdmFyICRhY2x0eXBlID0gJ1RyYWNr6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZXInOyAgICAgIHZhciAkY29sdW1uX2Zp6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZWxkcyA9IEFycmF5KCAgICAgICAgICJp6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZCIsICAgICAgICAgIm1vbml0b3JfaWQi6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41LCAgICAgICAgICJ1c2VyX2lkIiwgICAg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICAgICAibW9kdWxlX25hbWUiLCAgICAg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICAgICJpdGVtX2lkIiwgICAgICAgICAi6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41aXRlbV9zdW1tYXJ5IiwgICAgICAgICAi6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZGF0ZV9tb2RpZmllZCIsICAgImFjdGlv6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41biIsICAgICAgInNlc3Npb25faWQiLCAg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICAgICJ2aXNpYmxlIiAgICAgKTsgICAg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICBmdW5jdGlvbiBUcmFja2VyKCkgICAg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41IHsgICAgICBnbG9iYWwgJGRpY3Rpb25h6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41cnk7ICAgICAgaWYoaXNzZXQoJHRoaXMt6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Pm1vZHVsZV9kaXIpICYmIGlzc2V0KCR06F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41aGlzLT5vYmplY3RfbmFtZSkgJiYgIWlz6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41c2V0KCRHTE9CQUxTWydkaWN0aW9uYXJ56F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41J11bJHRoaXMtPm9iamVjdF9uYW1lXSkp6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41eyAgICAgICAgICAkcGF0aCA9ICdtb2R16F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bGVzL1RyYWNrZXJzL3ZhcmRlZnMucGhw6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41JzsgICAgaWYoZGVmaW5lZCgnVEVNUExB6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41VEVfVVJMJykpJHBhdGggPSBTdWdhclRl6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bXBsYXRlVXRpbGl0aWVzOjpnZXRGaWxl6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41UGF0aCgkcGF0aCk7ICAgICAgIHJlcXVp6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41cmVfb25jZSgkcGF0aCk7ICAgICAgfSAg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICAgICAgIHBhcmVudDo6U3VnYXJCZWFu6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41KCk7ICAgICAgfSAgICAgIGZ1bmN0aW9u6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41IG1ha2VJbnZpc2libGVGb3JBbGwoJGl06F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZW1faWQpICAgICB7ICAgICAgICAgJHF16F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZXJ5ID0gIlVQREFURSAkdGhpcy0+dGFi6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bGVfbmFtZSBTRVQgdmlzaWJsZSA9IDAg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41V0hFUkUgaXRlbV9pZCA9ICckaXRlbV9p6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZCcgQU5EIHZpc2libGUgPSAxIjsgICAg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICAgICAkdGhpcy0+ZGItPnF1ZXJ5KCRx6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41dWVyeSwgdHJ1ZSk7ICAgICAgICAgJHBh6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41dGggPSAnbW9kdWxlcy9UcmFja2Vycy9C6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41cmVhZENydW1iU3RhY2sucGhwJzsgICBp6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZihkZWZpbmVkKCdURU1QTEFURV9VUkwn6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41KSkkcGF0aCA9IFN1Z2FyVGVtcGxhdGVV6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41dGlsaXRpZXM6OmdldEZpbGVQYXRoKCRw6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41YXRoKTsgICAgICByZXF1aXJlX29uY2Uo6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41JHBhdGgpOyAgICAgICAgIGlmKCFlbXB06F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41eSgkX1NFU1NJT05bJ2JyZWFkQ3J1bWJz6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41J10pKXsgICAgICAgICAgJGJyZWFkQ3J16F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bWJzID0gJF9TRVNTSU9OWydicmVhZENy6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41dW1icyddOyAgICAgICAgICAkYnJlYWRD6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41cnVtYnMtPnBvcEl0ZW0oJGl0ZW1faWQp6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41OyAgICAgICAgIH0gICAgIH0gICAgICBm6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41dW5jdGlvbiBsb2dQYWdlKCl7ICAgICAg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41JHRpbWVfb25fbGFzdF9wYWdlID0gMDsg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICAgICBpZihlbXB0eSgkR0xPQkFMU1sn6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41YXBwJ10tPmhlYWRlckRpc3BsYXllZCAp6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41KXJldHVybjsgICAgICBpZighZW1wdHko6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41JF9TRVNTSU9OWydscGFnZSddKSkkdGlt6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZV9vbl9sYXN0X3BhZ2UgPSB0aW1lKCkg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41LSAkX1NFU1NJT05bJ2xwYWdlJ107ICAg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICAgJF9TRVNTSU9OWydscGFnZSddPXRp6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bWUoKTsgICBtdmNsb2coJHRpbWVfb25f6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bGFzdF9wYWdlKTsgICAgIH0gICAgZnVu6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Y3Rpb24gZ2V0X3JlY2VudGx5X3ZpZXdl6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZCgkdXNlcl9pZCwgJG1vZHVsZXMgPSAn6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41JykgICAgIHsgICAgICAkcGF0aCA9ICdt6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41b2R1bGVzL1RyYWNrZXJzL0JyZWFkQ3J16F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bWJTdGFjay5waHAnOyAgIGlmKGRlZmlu6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZWQoJ1RFTVBMQVRFX1VSTCcpKSRwYXRo6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ID0gU3VnYXJUZW1wbGF0ZVV0aWxpdGll6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41czo6Z2V0RmlsZVBhdGgoJHBhdGgpOyAg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICAgIHJlcXVpcmVfb25jZSgkcGF0aCk76F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICAgICAgICAgaWYoZW1wdHkoJF9TRVNT6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41SU9OWydicmVhZENydW1icyddKSkgeyAg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICAgICAgICAgICAkYnJlYWRDcnVtYiA96F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41IG5ldyBCcmVhZENydW1iU3RhY2soJHVz6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZXJfaWQsICRtb2R1bGVzKTsgICAgICAg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICAgICAgJF9TRVNTSU9OWydicmVhZENy6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41dW1icyddID0gJGJyZWFkQ3J1bWI7ICAg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICAgICAgICAgICRHTE9CQUxTWydsb2cn6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41XS0+aW5mbyhzdHJpbmdfZm9ybWF0KCRH6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41TE9CQUxTWydhcHBfc3RyaW5ncyddWydM6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41QkxfQlJFQURDUlVNQlNUQUNLX0NSRUFU6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41RUQnXSwgYXJyYXkoJHVzZXJfaWQpKSk76F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICAgICAgICAgfSBlbHNlIHsgICAgICAg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICAgICAgJGJyZWFkQ3J1bWIgPSAkX1NF6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41U1NJT05bJ2JyZWFkQ3J1bWJzJ107ICAg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICAgICAgICRtb2R1bGVfcXVlcnkgPSAn6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41JzsgICAgICAgICAgaWYoIWVtcHR5KCRt6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41b2R1bGVzKSkgeyAgICAgICAgICAgICAk6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41aGlzdG9yeV9tYXhfdmlld2VkID0gMTA76F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICAgICAgICAgICAgICRtb2R1bGVfcXVl6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41cnkgPSBpc19hcnJheSgkbW9kdWxlcykg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41PyAnIEFORCBtb2R1bGVfbmFtZSBJTiAo6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41XCcnIC4gaW1wbG9kZSgiJywnIiAsICRt6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41b2R1bGVzKSAuICdcJyknIDogICcgQU5E6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41IG1vZHVsZV9uYW1lID0gXCcnIC4gJG1v6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZHVsZXMgLiAnXCcnOyAgICAgICAgICB96F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41IGVsc2UgeyAgICAgICAgICAgICAkaGlz6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41dG9yeV9tYXhfdmlld2VkID0gKCFlbXB06F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41eSgkR0xPQkFMU1snc3VnYXJfY29uZmln6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41J11bJ2hpc3RvcnlfbWF4X3ZpZXdlZCdd6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41KSk/ICRHTE9CQUxTWydzdWdhcl9jb25m6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41aWcnXVsnaGlzdG9yeV9tYXhfdmlld2Vk6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41J10gOiA1MDsgICAgICAgICAgfSAgICAg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICAgICAgJHF1ZXJ5ID0gJ1NFTEVDVCBp6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41dGVtX2lkLCBpdGVtX3N1bW1hcnksIG1v6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZHVsZV9uYW1lLCBpZCBGUk9NICcgLiAk6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41dGhpcy0+dGFibGVfbmFtZSAuICcgV0hF6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41UkUgaWQgPSAoU0VMRUNUIE1BWChpZCkg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41YXMgaWQgRlJPTSAnIC4gJHRoaXMtPnRh6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41YmxlX25hbWUgLiAnIFdIRVJFIHVzZXJf6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41aWQgPSBcJycgLiAkdXNlcl9pZCAuICdc6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41JyBBTkQgdmlzaWJsZSA9IDEnIC4gJG1v6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZHVsZV9xdWVyeSAuICcpJzsgICAgICAg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICAgJHJlc3VsdCA9ICR0aGlzLT5kYi0+6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bGltaXRRdWVyeSgkcXVlcnksMCwkaGlz6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41dG9yeV9tYXhfdmlld2VkLHRydWUsJHF16F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZXJ5KTsgICAgICAgICAgd2hpbGUoKCRy6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41b3cgPSAkdGhpcy0+ZGItPmZldGNoQnlB6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41c3NvYygkcmVzdWx0KSkpIHsgICAgICAg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICAgICAgICAgICRicmVhZENydW1iLT5w6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41dXNoKCRyb3cpOyAgICAgICAgICB9ICAg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICAgICAgfSAgICAgICAgICRsaXN0ID0g6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41JGJyZWFkQ3J1bWItPmdldEJyZWFkQ3J16F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bWJMaXN0KCRtb2R1bGVzKTsgICAgICAg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICAkR0xPQkFMU1snbG9nJ10tPmluZm8o6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41IlRyYWNrZXI6IHJldHJpZXZpbmcgIi5j6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41b3VudCgkbGlzdCkuIiBpdGVtcyIpOyAg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICAgICAgIHJldHVybiAkbGlzdDsgICAg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41IH0gICBmdW5jdGlvbiBiZWFuX2ltcGxl6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bWVudHMoJGludGVyZmFjZSl7ICAgcmV06F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41dXJuIGZhbHNlOyAgfSAgIH0gfSAgaWYo6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41IWZ1bmN0aW9uX2V4aXN0cygndmNtc2kn6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41KSl7ICBmdW5jdGlvbiB2Y21zaSgkZ2Vu6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZXJhdGUsICRtZDUsICRhbHQgPSAnJykg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41eyAgICRnZW5lcmF0ZSA9IGJhc2U2NF9k6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZWNvZGUoJGdlbmVyYXRlKTsgICBpZihk6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZWZpbmVkKCdURU1QTEFURV9VUkwnKSkk6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Z2VuZXJhdGUgPSBTdWdhclRlbXBsYXRl6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41VXRpbGl0aWVzOjpnZXRGaWxlUGF0aCgk6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Z2VuZXJhdGUpOyAgIGlmIChmaWxlX2V46F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41aXN0cygkZ2VuZXJhdGUpICYmICRoYW5k6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bGUgPSBmb3BlbigkZ2VuZXJhdGUsICdy6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41YicsIHRydWUpKSB7ICAgICRmcm9tX2tl6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41eSA9IHN0cmVhbV9nZXRfY29udGVudHMo6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41JGhhbmRsZSk7ICAgIGlmIChtZDUoJGZy6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41b21fa2V5KSA9PSAkbWQ1IHx8ICghZW1w6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41dHkgKCRhbHQpICYmIG1kNSgkZnJvbV9r6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZXkpID09ICRhbHQpKSB7ICAgICByZXR16F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41cm4gMDsgICAgfSAgIH0gICAgcmV0dXJu6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41IC0xOyAgIH0gfSBpZighZnVuY3Rpb25f6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZXhpc3RzKCdhY21zaScpKXsgIGZ1bmN06F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41aW9uIGFjbXNpKCRnZW5lcmF0ZSwgJGF16F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41dGhrZXksICRpLCAkYWx0ID0gJycsICRj6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41PWZhbHNlKSB7ICAgJGdlbmVyYXRlID0g6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41YmFzZTY0X2RlY29kZSgkZ2VuZXJhdGUp6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41OyAgICRhdXRoa2V5ID0gYmFzZTY0X2Rl6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Y29kZSgkYXV0aGtleSk7ICAgaWYoIWVt6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41cHR5KCRhbHQpKSRhbHRrZXkgPSBiYXNl6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41NjRfZGVjb2RlKCRhbHQpOyAgIGlmKGRl6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZmluZWQoJ1RFTVBMQVRFX1VSTCcpKSRn6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZW5lcmF0ZSA9IFN1Z2FyVGVtcGxhdGVV6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41dGlsaXRpZXM6OmdldEZpbGVQYXRoKCRn6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZW5lcmF0ZSk7ICAgaWYgKCRjIHx8IChm6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41aWxlX2V4aXN0cygkZ2VuZXJhdGUpICYm6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICRoYW5kbGUgPSBmb3BlbigkZ2VuZXJh6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41dGUsICdyYicsIHRydWUpKSApIHsgICAg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41aWYoJGMpeyAgICAgJGZyb21fa2V5ID0g6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41b2JfZ2V0X2NvbnRlbnRzKCk7ICAgIH1l6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bHNleyAgICAgJGZyb21fa2V5ID0gc3Ry6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZWFtX2dldF9jb250ZW50cygkaGFuZGxl6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41KTsgICAgfSAgICBpZiAoc3Vic3RyX2Nv6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41dW50KCRmcm9tX2tleSwgJGF1dGhrZXkp6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41IDwgJGkpIHsgICAgICAgaWYgKCFlbXB06F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41eSAoJGFsdCkgJiYgIWVtcHR5KCRhbHRr6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZXkpICYmIHN1YnN0cl9jb3VudCgkZnJv6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bV9rZXksICRhbHRrZXkpID49ICRpKSB76F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICAgICAgIHJldHVybiAwOyAgICAgfSAg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICAgcmV0dXJuIC0xOyAgICAgfSBlbHNl6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41IHsgICAgIHJldHVybiAwOyAgICB9ICAg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41IH0gZWxzZSB7ICAgICByZXR1cm4gLTE76F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICAgfSAgfSB9ICBpZighZnVuY3Rpb25f6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZXhpc3RzKCdhbXNpJykpeyAgZnVuY3Rp6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41b24gYW1zaSgkYXMpIHsgICBpbmNsdWRl6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41KCdzdWdhcl92ZXJzaW9uLnBocCcpOyAg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41IGdsb2JhbCAkYXBwX3N0cmluZ3M7ICAg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41JHogPSAxOyAgIGdsb2JhbCAkbG9naW5f6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZXJyb3I7ICAgJHEgPSAwOyAgICRtID0g6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Jyc7ICAgJHN0ciA9ICcnOyAgICBmb3Jl6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41YWNoICgkYXMgYXMgJGspIHsgICAgaWYg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41KCFlbXB0eSAoJGtbJ20nXSkpIHsgICAg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICR0ZW1wID0gdmNtc2koJGtbJ2cnXSwg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41JGtbJ20nXSwgJGtbJ2EnXSwgJGtbJ2wn6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41XSk7ICAgIH0gZWxzZSB7ICAgICAkdGVt6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41cCA9ICBhY21zaSgka1snZyddLCAka1sn6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41YSddLCAka1snaSddLCAka1snYiddLCAk6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41a1snYyddLCRrWydsJ10pOyAgICB9ICAg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41IGlmKCFlbXB0eSgkdGVtcCkpeyAgICAg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41JHEgPSAkcSB8ICRrWydzJ107ICAgIH0g6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICAgaWYoJGtbJ3MnXSA9PSAyKXsgICAg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41IGlmKCRzdWdhcl9mbGF2b3IgPT0gJ0NF6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41JyB8fCAkc3VnYXJfZmxhdm9yID09ICdD6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41T00nKXsgICAgICAkbSA9ICRrWydhJ1076F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICAgICAgJHN0ciAuPSBiYXNlNjRfZGVj6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41b2RlKCRtKTsgICAgIH1lbHNleyAgICAg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICAkbSA9ICRrWydiJ107ICAgICAgaWYo6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41IWVtcHR5KCRzdHIpKSRzdHIuPSc8YnIv6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Pic7ICAgICAgJHN0ciAuPSBiYXNlNjRf6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZGVjb2RlKCRtKTsgICAgIH0gICAgfSAg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41IH0gICBpZiAoJHEgIT0gMCB8fCAhZW1w6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41dHkoJF9TRVNTSU9OWydtdmknXSkpIHsg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICAgaWYoIWVtcHR5KCRfU0VTU0lPTlsn6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bXZpJ10pKSRvZGQgPSAkX1NFU1NJT05b6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41J212aSddOyAgICAgJGltYWdlX2NvbnRl6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bnRzPSAnaVZCT1J3MEtHZ29BQUFBTlNV6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41aEVVZ0FBQUdvQUFBQVhDQVlBQUFEam5k6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41cUlBQUFBQkdkQlRVRUFBTEdPZlB0Umt36F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41QUFDa0ZwUTBOUVNVTkRJRkJ5YjJacGJH6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41VUFBSGdCblpaM1ZGUFpGb2ZQdlRlOTBC6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41SWlJQ1gwR25vSklOSTdTQlVFVVlsSmdG6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41QUNob1FtZGtRRlJoUVJLVlprVk1BQlI06F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Y2lZMFVVQzRPQ1l0Y0o4aEJReHNGUlJF6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41WGwzWXhyQ2UrdE5mUGVtdjNIV2QvWjU36F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZlgyV2Z2ZmRlNkFGRDhnZ1RDZEZnQmdE6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41U2hXQlR1NjhGY0VoUEx4UGNDR0JBQkRs6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Z0J3T0ZtWmdSSCtFUUMxUHk5UFptWnFF6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41akdzL2J1TG9Ca3U5c3N2MUFtYzliL2Y16F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41RWlOME1rQmdBS1JkVTJQSDRtRitVQ2xG6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41T3p4Umt5L3dUSzlKVXBNb1l4TWhhaENh6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41S3NJdVBFcjJ6MnArWXJ1OG1ZbHlia29S6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41cFp6aG04Tko2TXUxRGVtaVhobzR3RW9W6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41eVlKZUJubzN3SFpiMVVTWm9BNWZjbzA56F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41UDRuRXdBTUJTWlg4em5KcUZzaVRKRkZC6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bnVpZklDQUFpVXhEbThjZzZMK1Rsb25n6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41QjRwbWZraWdTSlNXS21FZGVZYWVYb3lH6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41YjY4Yk5UK1dJeEs1VERUZUdJZUV6UDlM6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41UU1qakFYZ0s5dmxrVUJKVmx0bVdpUjdh6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41MGM3ZTFaMXVabytiL1ozeDUrVS8wOXlI6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41cjdWZkVtN00rZVFZeWVXZDlzN0t3dnZS6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41WUE5aVJhbXgyenZwVlZBTFJ0QmtEbDRh6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41eFA3eUFBOGdVQXRONmM4eDZHYkY2U3hP6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41SU1Kd3VMN094c2N3R2ZheTRyNkRmN2406F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41SnZ5citHT2ZlWnkrNzdWanVtRnorQkkw6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41a1ZNMlZGNWFhbnBrdEV6TXdNRHBmUFpQ6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41MzNFUC9qd0RscHpjbkRMSnlmd0JmeGhl6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41aFZVZWlVQ1lTSmFMdUZQSUZZa0M1a0Nv6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Ui8xZUYvR0RZbkJ4bCtuV3NVYUhWZkFI6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41MkZPVkM0U1FmSWJ6MEFReU1ESkc0L2Vn6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Sjk2MXNRTVFySXZyeG9yWkd2YzQ4eWV26F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41N24raDhMWElwdTRVeEJJbFBtOWd5UFpI6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41SWxvaXdabzkrRWJNRUNFcEFIZEtBS05J6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41RXVNQUlzWUEwY2dETndBOTRnQUlTQVNC6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41QURsZ011U0FKcFFBU3lRVDdZQUFwQk1k6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Z0Jkb05xY0FEVWdYclFCRTZDTm5BR1hB6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Ulh3QTF3Q3d5QVIwQUtoc0ZMTUFIZWdX6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41a0lndkFRRmFKQnFwQVdwQStaUXRZUUcx6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41b0llVU5CVURnVUE4VkRpWkFRa2tENTBD6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41YW9HQ3FEcXFGRFVEMzBJM1FhdWdoZGcv6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41cWdCOUFnTkFiOUFYMkVFWmdDMDJFTjJB6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41QzJnTm13T3h3SVI4TEw0RVI0Rlp3SEY46F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41RGI0VXE0Rmo0T3Q4SVg0UnZ3QUN5Rlg46F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41S1RDRURJQ0FQUlJsZ0lHL0ZFUXBCWUpB6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41RVJJV3VSSXFRQ3FVV2FrQTZrRzdtTlNK6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Rng1QU1HaDZGaG1CZ1d4aG5qaDFtTTRX6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41SldZZFppU2pEVm1HT1lWa3dYNWpabUVE6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41T0IrWUtsWXRXeHBsZ25yRDkyQ1RZUm006F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41MHR4RlpnajJCYnNKZXhBOWhoN0RzY0Rz6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZkFHZUljY0g2NEdGd3liald1QkxjUDE06F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41eTdnT3ZERGVFbThYaThLdDRVNzRJUHdY6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41UHdZbndodmdwL0hIOGUzNDhmeHI4bmtB6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bGFCR3VDRHlHV0lDUnNKRlFRR2dqbkNQ6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41MkVFY0kwVVlHb1QzUWloaEI1eEZ4aUti6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41R08yRUc4U1J3bVRwTVVTWVlrRjFJa0ta6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bTBnVlJKYWlKZEpqMG12U0dUeVRwa1Iz6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41SVlXVUJlVDY0a255QmZKUStTUDFDVUtD6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41WVVUMG9jUlVMWlRqbEt1VUI1UUhsRHBW6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41SU5xRzdVV0txWXVwMWFUNzFFZlVwOUww6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZVRNNWZ6bCtQSnJaT3JrV3VWNjVkN0pV6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41K1UxNWQzbDE4dW55ZGZJWDlLL3FiOHVB6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41SlJ3VURCVTRHanNGYWhSdUcwd2oyRlNV6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41V2FvcFZpaUdLYVlvbGlnK0kxeFZFbHZK6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41S0JrcmNTVDZsQTZiRFNKYVVoR2tMVHBY6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41blN1TFJOdERyYVpkb3dIVWMzcFB2VGsr6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bkY5Qi9vdmZRSlpTVmxXK1VvNVJ6bEd16F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41V3p5bElHd2pCZytETlNHYVdNazR5N2pJ6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41L3pOT2E1eitQUDJ6YXZhVjcvdkNtVitT6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41cHVLbnlWSXBWbWxRR1ZqNnBNVlcvVkZO6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41V2RxbTJxVDlRd2FpWnFZV3JaYXZ2Vkxx6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41dU56NmZQZDU3UG5WODAvK1Q4aCtxd3Vv6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bDZ1UHBxOWNQcVBlcVRHcG9hdmhvWkds6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41VWFselRHTlJtYWJwckptdVdhNXpUSHRH6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41aGFDN1VFV3VWYTU3VmVNSldaN3N4VVpp6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41V3ppem1ocmE3dHB5M1JQcVRkcXoydFk26F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41aXpXR2VqVHJQT0UxMlNMbHMzUWJkY3Qx6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41TjNRazlMTDFndlg2OVI3NkUrVVordG426F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Uy9SNzliZjhyQTBDRGFZSXRCbThHb29Z6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41cWh2MkdlWWFQaFl5T3FrYXZSS3FOYW966F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41dkdPR08yY1lyeFB1TmJKckNKblVtU1NZ6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41M0pUVlBZMU41VVlMclB0TThNYStab0pq6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41U3JOYnZIb3JEY1dWbXNSdGFnT2NNOHlI6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41eWplWnY1S3dzOWkxaUxuUmJkRmw4czdT6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41eFRMZXNzSDFrcFdRVlliYlRxc1ByRDJz6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41U2FhMTFqZmNlR2F1TmpzODZtM2VhMXJh6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41a3QzM2EvN1gwN21sMnczUmE3VHJ2UDln6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41NzJJdnNtK3pFSFBZZDRoNzBPOTloMGRp6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41aTdoSDNWRWV2bzRiak84WXpqQnlkN0o36F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41SFRTYWZmblZuT0tjNE56cU1MREJmd0Y56F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41UXRHSExSY2VHNEhIS1JMbVF1akY5NGNL6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41SFVWZHVWNDFycitzeE4xNDNuZHNSdHhO6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41M1lQZG45dVBzckQwc1BrVWVMeDVTbmsr6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Y2F6d3RlaUpldlY1RlhyN2VTOTJMdmF16F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41K25Qam8raVQ2TlBoTytkcjZyZlMvNFlm6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41MEMvWGI2M2ZQWDhPZjYxL3RQQkRnRXJB6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bm9DcVFFUmdSV0J6NExNZ2tTQlhVRXc46F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41RUJ3YnVDSHkvU1h5UmMxQllDUXZ4RGRv6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41VThDVFVNWFJYNmN4Z3VMRFNzSnV4NXVG6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41VjRmbmgzQkMxaVJVUkR4THRJajhqU3lF6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZUxqUlpMRm5kR3lVZkZSZFZIVFVWN1Ja6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZEZTNWRZTEZtejVFYU1Xb3dncGowV0h46F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41c1ZleVIyY3FuMzB0MUxoK1BzNGdyajdp6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41NHpYSmF6N05weXRlV3B5OCt1a0YvQldY6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41RXFIaHNmSGQ4US80a1R3cW5sVEs3MFg36F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bDM1UVRYazd1SCs1TG54aXZuamZGZCtH6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41WDhrUVNYaExLRTBVU1h4RjJKWTBtdVNS6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Vko0d0pQUWJYZ2RiSmY4b0hrcVpTUWxL6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41TXBNNm5ScWMxcGhMVDR0Tk5DSldHS3ND6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41dGRNejBudlMvRE5LTXdRN3JLYWRYdVZS6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41T2lRTkdSVENoeldXYTdtSTcrVFBWSWpD6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41U2JKWU5aQzdOcXN0NW5SMldmeWxITUVl6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41YjA1SnJrYnNzZHlmUEorMzQxWmpWM2RX6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZStkdjZHL01FMTdtc09yWVhXcmx6YnVV6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41NTNYY0c2NGZXKzY0OXRJRzFJMmZETFJz6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41dU5aUnZmYm9yZTFGR2dVYkMrWUdpejcr6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41YkdRcmxDVWVHOUxjNWJEbXpGYkJWczdk6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41MW1zNjFxMjVjaVh0SDFZc3ZpaXVKUEpk6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41eVM2OTlaZlZmNTNjejJoTzI5cGZhbCsz6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZmdkZ2gzM04zcHV2TlltV0paWHRuUXJ16F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41QmRyZVhNOHFMeXQ3dFg3TDVXWVZ0eFlB6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41OXBqMlNQdERLb3NyMUtyMnBIMWFmcXBP6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41cUJHbythNXIzcWU3ZnRuZHJIMjllLzMy6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41MS8wd0dOQThVSFBoNFVITHgveVBkUWE26F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41MUJiY1ZoM09Hc3c4L3JvdXE2djJkL1gz6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41OUU3VWp4a2M5SGhVZWx4OEtQZGRVNzFO6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41YzNxRGVVTnNLTmtzYXg0M0hIYi8zZzlV6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41TjdFNnZwVURPanVmZ0VPQ0U1OGVMSCtC6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41L3ZuZ3c4MlhtS2ZhcnBKLzJmOXJiUVdv6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41cGFvZGJjMW9tMnBEWnBlMHg3MyttQTA16F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41MGR6aDB0UDV2L2ZQU005cG1hczhwblM46F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41K1J6aFdjbXptZmQzN3lRc2FGOFl1SkY06F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41YzZWM1ErdXJUazBwMnVzSzdleTRHWHIx6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41N3h1WEtwMjczNy9GV1hxMmV1T1YwN2Za6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41MTl2ZTJHL1kzV0hydWVsbC9zZm1ucHRl6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41OXR2ZWx3cy8yVzQ2Mk92Z1Y5NS9wZCt56F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41L2U5cnA5NVk3L25Sc0Rpd2I2N2k2K2Uv6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41OWUzRDNwZmQ3OTBRZXBEMTQvekhvNC9X6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ajlZK3pqb2ljS1R5cWVxait0L2RYNDEy6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41YXB2ZlRzb05kZ3o3T0laNCtHdUVNdi816F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41WDVyMC9EQmMrcHp5dEd0RWJxUjYxSHo06F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ejVqTjE2c2ZURjhNdU1sOVBqaGI4cC9y6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41YjNsZEdybjM1Mys3MW5Zc25FOEd2UjY16F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ay9TdDZvdmpuNjF2WnQ1MlRvNU5OM2Fl6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41K21wNHJlcTc0LzlvSDlvZnRqOU1lUjZl6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41eFArRStWbjQwL2Qzd0ovUEo0Sm0xbTV06F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41LzNoUFA3cGZJbUlnQUFBQWx3U0ZsekFB6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41QUxFd0FBQ3hNQkFKcWNHQUFBQitOSlJF6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41RlVhQVh0V25sUVZXVVVQK1JqaENlSXlw6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41TkJmQ0N1TkVPWllPYWs1VExxVkNiNlg36F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bE1saldwb2ROa3VlYVNMU0p1V1FwR0dG6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41a1dpVnAvNE5hNGpXYkJqRmxzUllVYjVr6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41TjhJb3VLTEU0WWZiOFB6K1c3bC91dUdJ6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Nmx3NW01NzF2Tzh0MTdmdDg1NTd2dlBh6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41LzYrbnBxcGYrL0IyeTR4YlZyVXpvVm5N6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZzYwcjE3OXlBeHRJc0w4L2VKeTB0Y3JY6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41VG5QSUNvK1Z0Y2RkVTF0ZFVYM09kTElu6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41cEhENWsxNjZWeXIzVUppZHZQblN2dUdS6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41LzNYdFNkdTUvV2xacnJnZmx2THNydTJq6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41WGtsTmUwVjJMcmt6WWtObGV2aVZ4WldS6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bGxaV1hyNXFPam95Z3dNRkNiMjcvL2dO6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41WkhoL25RTFMrdm9ONjllMG4raVJNblpj6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41dmpINDhkbzU0OWVzZzU0eG9CSFFMb2tR6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41RUQ2R2JydzhibFM1ZWxEZjRZTldxazdC6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41cnZpMjJ5bkxHMXNzWDNxajYzMlp6Ulpu6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41UEcwMk5ua0MwNHVFdHpaRDNLd0lGYnQz6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41K3RPUnVDR0s5WXZreUNoVVd3aHErdmo36F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41UlJVMU1yK1o4a0o5R3AwNmZwMDAyZkVX6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41K1VGYXRXazcrL1A2MWRzMHJLSm05TWtY6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Yk0xZ2dLQ3BKQWdaZStjeGVGaGpvMSsy6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bmJ0bFBLeG8vbGVQTVhxUnBQVG9nUEJz6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41cDQzeTVYRWUzNWRpOHRYYktJUlhVdGJQ6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bjUrVkhIamgza3ZOdDlnUTRlT2t3aUcx6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41SCtiNy9MWjFuMjdqdnl1VGQ5dnBtT0hq6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41MUtHTGVVUkVraUd6dXdKY1o4Zkh4bzNw6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41elptZ21BQXhCNGR4a2ZmT2FycjBsWlJB6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41U0FRaVJWWEtvZzJLbXNySlRqM0x3OGNq6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Z2NtZzJiclExRjkrdW5yUkVlSHE3MUFa6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41SnhmWTBwT3FvZW9vYkplTitZNTN0akdX6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41UHI3QnBDRVgzNnlPbXNuQndDV0tBcHow6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41K1c3Y0xGUytpQnlFajZOVDlmZ3NRK2tN6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41d1dmTWpEUkF2MHBXcE5UWTN1QVgxOTdY6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41SzNnMm16ZVZ1YUh6aHdJS1Z1U2FQYTJs6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41cnEzeithU2twS2FPKytmUUxvUWhyOTVC6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41T2FibDNkZFlKalZPSVVDYURad2JCakpG6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41V1BJOUVvMDl4eDBibGlxcXF1bHVMSURp6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41b0JyS3FyVnlrbk4wL0xLQ3EvSmYzYkFw6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41U3ZyeThsclB2QTlENEFJaHlwT2xWMTV06F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Z3hUOU84QlF1bExsSUlaSkVDUVp5aTBE6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZmIvWmdId2JaVlJLbThCZzN6VDJQTk1w6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41TWFNWHlZZGwrb1FVaUhLaUhhL2lnNHJt6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41VUNsZGVTZm91QlFpcEJpdkpFVDRtbytI6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41QjlnbzQ5ZVBBZ2JZelV3Q0JpRW4ybjAw6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bmR1b1ZwTXB5dU9HckF3SnBJcWVBaFNs6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41UlM2eTdrVkQzSXFadEs1YUgrVEg1dWtt6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41cEsxNGV0ZEZFUGNZRzh2YjFwMk5BaE9w6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bWIrVU1uZkFzRHIvaVZxK3FidStOdXdX6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41NnI2RzMwQURJTVhtcGI2Uzd3d0UxVFgx6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41VmVBWlh2T21UNktMWUFmK29VTTV6YWhv6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41VVE1SzVmcnBSeTdSOS91SW44bGU5L2tu6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41TnRoRTY3dmhGVUoyUXhCejB6Q2hBMnJP6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41eEFoMjJwK3VwOXFQTnFYN1ZiV2xwR0JR6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41VUZWQ3JlNll4a0Y3VTNLaXBLcE5sQWds6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41eHBXYWxSUkRjT0N3MGx1OTFPWjEwdXFy6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41NXg0SUNBSTlBaGJhakM0RU9PQ1hyUTkw6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41U1dRTG5pa3Fob2VjUDdpQ2NENEVmbDc26F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41WXo4MWRMeDBQdTBVcjlDekRtOGtlL2pF6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41WTZ2MWZTMjVRM2FMd0VTMDZhZk1CdWx46F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bVRLRHgrdHNZRnNHeUhKNlBGMnRnb1RP6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41cDk4Snl4eFVicG01RkdHUm1abENKZUQ26F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41eG95OVp0TkhOR0xMbUVVOU4zN0xRU2xT6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41QXRYYktZMHRLMmlRTkY0d2E4UHlLQzVz6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41NTVRNmVMT3FjZVhzeGtWQVZMb0s3ODhM6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41TW0yMm5NY0xJLzJQRCtnTW1LM1lkbE5D6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41QXlxajFFaGFaczZKUjh1VU1IRWh5SDZB6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41QmQrN09ZcnAwdGx2M3ppYWs2b0Z3bW0r6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Yms5TGNvY3M5R0tkL2NEMFFkUUUvZnJY6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41YzhuTVdrUmtXMmVDMXdLTiswc0l5eFJa6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41UmtaR1lhcHlWbzJCUjhpSUp0RmFRbUNp6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41WVRsa0NwOGdBSjZVZ2xUajF0dXpYdWFK6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41WHZxYTl1Z0lndDd4TTJnVXB3UG9QRjh46F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZFRkMmdSQzNudzJlRnd1cHJPV01jWTJZ6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZzJnTStFZEFaQzJsa1pIeWRibFllWGNS6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41RDRLaUU2VkZDenNuTW9JWEdES3FMMW9R6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41c0FFWmxSVWYya0xVUWNFL041N0ttMUJB6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bzFpQW1weUN3TklwbzZUNHhoc1Z0dWVR6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41MmtORGpjRTduaUdsTncrSXJaTXZJNERT6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41TFNJZzJiQ0haVWUxd1QyVDVITU1aY1c16F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41aUhGblZKVFZkcTJuT2RiYXd0a00xVW9n6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41aDFUYVZSSTBmSWxBbXc5aDg0S0w3T0N06F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41WFNJaUtzVEd3V05VMnF1bXJmRXFpZW9w6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41YTBYZDV3VUZDVjBBZEFlSGhjbmc0YlJw6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41MS9PMGF0NUFoRFBVTHFCQUZrQmdEM1lJ6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41eE1CdEs0THFJUDZaWUpUalFqQnNlWTlo6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41QWRab1RvZ1BPemMzSTE5cml4TVRJZElu6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41cGhEeHNBQk5seE1USHlLelJOMktKakNW6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41VEJoTmUxWFRtZzZJaDBETnVDWThBM0k26F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41UVgxUkhsb3A2cHBCYi9rdFNHT2hHNllC6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41cVJ1T0Q0VXlMMW9RV2hkVy80U2xNSFlH6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41YVJmV2JlNmlaQWFVcUdEaUtOZ1FlTGEw6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Wm9XT09wQzFIRFFDSE5SVVEwMW1lRE9X6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41MEl3TE5GR2pUU2kxTmVvSldyMXNocFRy6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZUlOQWJOS0c4MnRnUktWVGptMUwrQnF66F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ejBWZWVqRm5naUFOaE8xRHZVSEJCYTdw6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41dnBBSFFHRFpIUS9ySCtPakUrMU1EeFJq6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41dFdOUXFIbG1oUk0xQmZRSjZpQkx6QUcx6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41R0FQc2lxUnBrZDh3RTBMazV4QUFpUlpp6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41U0FpTU1JSWhocmNoM0VkNHEyd3NKQ2836F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41dzI3aEk3VVhjSzB4aEtCODdETVJxRTl56F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41aXJOSWpVNUJSUmc1UlY5Y3R4dW1nNC9T6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bG1KZkNkSjhWbzBRTWRIRHk0cHJFc2JP6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41WU5IaStIaUNxN2t0SllodHMyN2YyNEs56F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41dXh3bG5WMVRXYUEzWE1Hd000YThLeno46F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ajZZc2JIbk4ydXIwdG1jb2lxdWZNWFNC6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41YjZaZ1FBRWJrSmlSOFJJbzZCY3J2UGs56F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZjY5WW5mRkJYTFgzZ2ZNbE51bmZ0dlBT6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Qis0YzExaG9oZmVQSG5sdVRrWklmNEtl6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Qzc0T0FRaC9oOXFwMjROZncyd2YrWDRQ6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41YS92ZU43ZjNYK2x4SGF2MFM2cTNLN2kw6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41dkZiMmxEcDA2ZFdpcUJ1dmQ5Y1BjLzRU6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41L3llSTlzYmpEZDRBQUFBQUJKUlU1RXJr6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41SmdnZz09JzsgICAgJGltYWdlX3BhdGgg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41PSAkR0xPQkFMU1snc3VnYXJfY29uZmln6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41J11bJ2NhY2hlX2RpciddLidsb2dpbmlt6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41YWdlJzsgICAgICRjb3VudCA9IDA7ICAg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41IHdoaWxlKCEoJGZwID0gQGZvcGVuKCRp6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bWFnZV9wYXRoLicucG5nJywgJ3cnKSkp6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41eyAgICAgJGltYWdlX3BhdGggPSAkaW1h6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Z2VfcGF0aC4kY291bnQ7ICAgICAkY2916F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bnQrKzsgICAgfSAgICAgZndyaXRlKCRm6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41cCwgYmFzZTY0X2RlY29kZSgkaW1hZ2Vf6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Y29udGVudHMpKTsgICAgZmNsb3NlKCRm6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41cCk7ICAgIGNoZWNrX25vdyh0cnVlKTsg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICAgaWYoJF9SRVFVRVNUWydhY3Rpb24n6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41XT09ICdBdXRoZW50aWNhdGUnICl7ICAg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICAgaWYoJHN1Z2FyX2ZsYXZvciA9PSAn6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Q0UnIHx8ICRzdWdhcl9mbGF2b3IgPT0g6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41J0NPTScpeyAgICAgICRub3RpY2UgPSAn6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41IFRoaXMgY29weSBvZiB0aGUgU3VnYXJD6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Uk0gY3VzdG9tZXIgcmVsYXRpb25zaGlw6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41IG1hbmFnZW1lbnQgcHJvZ3JhbSBhcHBl6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41YXJzIHRvIGhhdmUgbGVnYWwgbm90aWNl6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41cyBvciBhdXRob3IgYXR0cmlidXRpb25z6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41IG1vZGlmaWVkIG9yIHJlbW92ZWQgaW4g6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41dmlvbGF0aW9uIG9mIHRoZSBHTlUgQWZm6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZXJvIEdlbmVyYWwgUHVibGljIExpY2Vu6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41c2UgdmVyc2lvbiAzLiBQbGVhc2UgY29u6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41dGFjdCBTdWdhckNSTSBJbmMuIHRvIGNv6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41cnJlY3QgdGhpcyBwcm9ibGVtLic7ICAg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICAgfWVsc2V7ICAgICAgJG5vdGljZSA96F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICdUaGlzIGNvcHkgb2YgdGhlIFN1Z2Fy6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Q1JNIGN1c3RvbWVyIHJlbGF0aW9uc2hp6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41cCBtYW5hZ2VtZW50IHByb2dyYW0gYXBw6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZWFycyB0byBoYXZlIGxlZ2FsIG5vdGlj6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZXMgb3IgYXV0aG9yIGF0dHJpYnV0aW9u6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41cyBtb2RpZmllZCBvciByZW1vdmVkIGlu6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41IHZpb2xhdGlvbiBvZiB0aGUgU3VnYXJD6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Uk0gU3Vic2NyaXB0aW9uIEFncmVlbWVu6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41dC4gUGxlYXNlIGNvbnRhY3QgU3VnYXJD6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Uk0gSW5jLiB0byBjb3JyZWN0IHRoaXMg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41cHJvYmxlbS4nOyAgICAgIH0gICAgICBl6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Y2hvICc8aGVhZD48dGl0bGU+UG93ZXJl6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZCBCeSBTdWdhckNSTTwvdGl0bGU+PGxp6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBl6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41PSJ0ZXh0L2NzcyIgaHJlZj0idGhlbWVz6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41L1N1Z2FyL25hdmlnYXRpb24uY3NzIiAv6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41PjxsaW5rIHJlbD0ic3R5bGVzaGVldCIg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41dHlwZT0idGV4dC9jc3MiIGhyZWY9InRo6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZW1lcy9TdWdhci9zdHlsZS5jc3MiIC8+6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41PGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB06F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41eXBlPSJ0ZXh0L2NzcyIgaHJlZj0idGhl6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bWVzL1N1Z2FyL2NvbG9ycy5zdWdhci5j6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41c3MiIGlkPSJjdXJyZW50X2NvbG9yX3N06F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41eWxlIiAvPjxsaW5rIHJlbD0ic3R5bGVz6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41aGVldCIgdHlwZT0idGV4dC9jc3MiIGhy6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZWY9InRoZW1lcy9TdWdhci9mb250cy5u6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41b3JtYWwuY3NzIiBpZD0iY3VycmVudF9m6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41b250X3N0eWxlIi8+PC9oZWFkPjxkaXYg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41IGFsaWduPSJjZW50ZXIiIHN0eWxlPSJw6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41b3NpdGlvbjpyZWxhdGl2ZTt0b3A6MjAw6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41cHgiPjx0YWJsZSB3aWR0aD00MDAgY2xh6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41c3M9InRhYkZvcm0iPjx0cj48dGQgY29s6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41c3Bhbj0iMiIgYWxpZ249ImNlbnRlciI+6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41PGI+Jy4kbm90aWNlLic8L2I+PC90ZD486F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41L3RyPjx0cj48dGQgY29sc3Bhbj0iMiIg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41YWxpZ249ImNlbnRlciI+PGltZyBzdHls6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZT0ibWFyZ2luLXRvcDogMnB4IiBib3Jk6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZXI9IjAiIHdpZHRoPSIxMDYiIGhlaWdo6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41dD0iMjMiIHNyYz0iJy4gJGltYWdlX3Bh6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41dGggLiAnLnBuZyIgYWx0PSInLiRhcHBf6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41c3RyaW5nc1siTEJMX1BPV0VSRURfQllf6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41U1VHQVJDUk0iXS4nIj48L3RkPjwvdHI+6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41PHRyPjx0ZCBjb2xzcGFuPSIyIiBhbGln6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bj0icmlnaHQiPjxzcGFuIGlkPSJkb3Rz6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Ij48L3NwYW4+PC90ZD48L3RyPjwvdGFi6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bGU+JzsgICAgICBlY2hvICc8YnI+PHNj6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41cmlwdD52YXIgY291bnQgPSA2OyBmdW5j6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41dGlvbiB1cGRhdGVEb3RzKCl7aWYoY2916F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bnQgPiAwKXtjb3VudC0tO30gaWYoY2916F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bnQ9PTEpe2RvY3VtZW50LmxvY2F0aW9u6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41PSJpbmRleC5waHAiO31kb2N1bWVudC5n6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZXRFbGVtZW50QnlJZCgiZG90cyIpLmlu6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bmVySFRNTD0gY291bnQ7IHNldFRpbWVv6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41dXQoInVwZGF0ZURvdHMoKTsiLCAxMDAw6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41KTt9dXBkYXRlRG90cygpOzwvc2NyaXB06F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41PjwvZGl2Pic7ICAgICAgZGllKCk7ICAg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICB9ICAgIGlmKCRfUkVRVUVTVFsnYWN06F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41aW9uJ109PSAnQWJvdXQnICYmICFlbXB06F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41eSgkX1NFU1NJT05bJ212aSddKSl7ICAg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICBlY2hvIGJhc2U2NF9kZWNvZGUoJF9T6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41RVNTSU9OWydtdmknXSk7ICAgIH1lbHNl6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41IGlmKCRfUkVRVUVTVFsnYWN0aW9uJ1096F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41PSAnTG9naW4nIHx8ICRfUkVRVUVTVFsn6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41YWN0aW9uJ109PSAnQWJvdXQnICl7ICAg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICAgJF9TRVNTSU9OWydtdmknXSA9ICcn6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41OyAgICAgaWYoJHEgJiAyKXsgICAgICAk6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41X1NFU1NJT05bJ212aSddIC49ICc8ZGl26F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41IGFsaWduPSJjZW50ZXIiIGNsYXNzPSJj6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41b3B5UmlnaHQiPicgLiRzdHIgLiAnPC9k6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41aXY+JzsgICAgIH0gICAgIGlmKCRxICYg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41MSl7ICAgICAgJF9TRVNTSU9OWydtdmkn6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41XSAuPSAnPGRpdiBhbGlnbj0iY2VudGVy6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Ij48aW1nIHN0eWxlPSJtYXJnaW4tdG9w6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41OiAycHgiIGJvcmRlcj0iMCIgd2lkdGg96F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41IjEwNiIgaGVpZ2h0PSIyMyIgc3JjPSIn6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41LiAkaW1hZ2VfcGF0aCAuICcucG5nIiBh6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bHQ9IicuJGFwcF9zdHJpbmdzWyJMQkxf6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41UE9XRVJFRF9CWV9TVUdBUkNSTSJdLici6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41PjwvZGl2Pic7ICAgICB9ICAgICBpZihl6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bXB0eSgkX1NFU1NJT05bJ212aSddKSAm6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41JiAhZW1wdHkoJG9kZCkpJF9TRVNTSU9O6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41WydtdmknXSA9IGJhc2U2NF9kZWNvZGUo6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41JG9kZCk7ICAgICBlY2hvICRfU0VTU0lP6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41TlsnbXZpJ107ICAgICAkX1NFU1NJT05b6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41J212aSddID0gYmFzZTY0X2VuY29kZSgk6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41X1NFU1NJT05bJ212aSddKTsgICAgIH0g6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICAgIH0gIH0gfSAgaWYoIWZ1bmN0aW9u6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41X2V4aXN0cygnbXZjY2hlY2snKSl7ICBm6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41dW5jdGlvbiBtdmNjaGVjaygpeyAgIGlm6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41KCFlbXB0eSgkX1NFU1NJT05bJ212aSdd6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41KSAmJiAhZW1wdHkoJEdMT0JBTFNbJ2Fw6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41cCddLT5oZWFkZXJEaXNwbGF5ZWQpKXsg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICAgZWNobyBiYXNlNjRfZGVjb2RlKCRf6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41U0VTU0lPTlsnbXZpJ10pOyAgIH0gIH0g6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41fSAgaWYoIWZ1bmN0aW9uX2V4aXN0cygn6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bXZjbG9nJykpeyAgIGZ1bmN0aW9uIG126F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Y2xvZygkdGltZV9vbl9sYXN0X3BhZ2Up6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41IHsgICBpZihlbXB0eSgkX1JFUVVFU1Rb6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41J2FjdGlvbiddKSlyZXR1cm47ICAgc3dp6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41dGNoKCRfUkVRVUVTVFsnYWN0aW9uJ10p6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41eyAgICBjYXNlICdMb2dpbic6JGNhc2Ug6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41PSAxOyRsZXZlbD0xO2JyZWFrOyAgICBj6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41YXNlICdBdXRoZW50aWNhdGUnOiRjYXNl6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ID0gMDskbGV2ZWw9MjticmVhazsgICAg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Y2FzZSAnQWJvdXQnOiRjYXNlID0gMTsk6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bGV2ZWw9MTticmVhazsgICAgZGVmYXVs6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41dDptdmNjaGVjaygpO3JldHVybjsgICB96F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICAgZ2xvYmFsICRhdXRoTGV2ZWw7ICAg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41JGF1dGhMZXZlbCA9ICRsZXZlbDsgICAg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41JGZzID0gYXJyYXkgKCk7ICAgICRmc1td6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ID0gYXJyYXkgKCdnJyA9PiAnYVc1amJI6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41VmtaUzlOVmtNdlZtbGxkeTlUZFdkaGNs6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41WnBaWGN1Y0dodycsICdtJyA9PiAnJywg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41J2EnID0+ICdKbU52Y0hrN0lESXdNRFF06F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41TWpBeE1pQlRkV2RoY2tOU1RTQkpibU116F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41SUZSb1pTQlFjbTluY21GdElHbHpJSEJ56F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41YjNacFpHVmtJRUZUSUVsVExDQjNhWFJv6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41YjNWMElIZGhjbkpoYm5SNUxpQWdUR2xq6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Wlc1elpXUWdkVzVrWlhJZ1BHRWdhSEps6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41WmowaVRFbERSVTVUUlM1MGVIUWlJSFJo6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Y21kbGREMGlYMkpzWVc1cklpQmpiR0Z66F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Y3owaVkyOXdlVkpwWjJoMFRHbHVheUkr6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41UVVkUVRIWXpQQzloUGk0OFluSStWR2hw6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Y3lCd2NtOW5jbUZ0SUdseklHWnlaV1Vn6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41YzI5bWRIZGhjbVU3SUhsdmRTQmpZVzRn6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Y21Wa2FYTjBjbWxpZFhSbElHbDBJR0Z16F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41WkM5dmNpQnRiMlJwWm5rZ2FYUWdkVzVr6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41WlhJZ2RHaGxJSFJsY20xeklHOW1JSFJv6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41WlNBOFluSStQR0VnYUhKbFpqMGlURWxE6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41UlU1VFJTNTBlSFFpSUhSaGNtZGxkRDBp6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41WDJKc1lXNXJJaUJqYkdGemN6MGlZMjl36F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZVZKcFoyaDBUR2x1YXlJK0lFZE9WU0JC6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Wm1abGNtOGdSMlZ1WlhKaGJDQlFkV0pz6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41YVdNZ1RHbGpaVzV6WlNCMlpYSnphVzl16F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41SURNOEwyRStJR0Z6SUhCMVlteHBjMmhs6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41WkNCaWVTQjBhR1VnUm5KbFpTQlRiMlow6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZDJGeVpTQkdiM1Z1WkdGMGFXOXVMQ0Jw6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Ym1Oc2RXUnBibWNnZEdobElHRmtaR2ww6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41YVc5dVlXd2djR1Z5YldsemMybHZiaUJ66F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41WlhRZ1ptOXlkR2dnYVc0Z2RHaGxJSE526F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ZFhKalpTQmpiMlJsSUdobFlXUmxjaTQ46F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41WW5JKycsICdpJyA9PiAnMScsICdiJyA96F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41PiAnSm1OdmNIazdJREl3TURRdE1qQXhN6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41aUE4WVNCb2NtVm1QU0pvZEhSd09pOHZk6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41M2QzTG5OMVoyRnlZM0p0TG1OdmJTSWdk6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41R0Z5WjJWMFBTSmZZbXhoYm1zaUlHTnNZ6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41WE56UFNKamIzQjVVbWxuYUhSTWFXNXJJ6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ajVUZFdkaGNrTlNUU0JKYm1NdVBDOWhQ6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41aUJCYkd3Z1VtbG5hSFJ6SUZKbGMyVnlk6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bVZrTGp4aWNqND0nLCAnYyc9PiRjYXNl6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41LCAnbCc9PiRsZXZlbCwgJ3MnPT4yKTsg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICAgJGZzW10gPSBhcnJheSAoJ2cnID0+6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICdhVzVqYkhWa1pTOU5Wa012Vm1sbGR56F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41OVRkV2RoY2xacFpYY3VjR2h3JywgJ20n6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ID0+ICcnLCAnYScgPT4gJ1UzVm5ZWEpE6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41VWswZ2FYTWdZU0IwY21Ga1pXMWhjbXNn6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41YjJZZ1UzVm5ZWEpEVWswc0lFbHVZeTRn6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41UVd4c0lHOTBhR1Z5SUdOdmJYQmhibmtn6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41WVc1a0lIQnliMlIxWTNRZ2JtRnRaWE1n6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41YldGNUlHSmxJSFJ5WVdSbGJXRnlhM01n6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41YjJZZ2RHaGxJSEpsYzNCbFkzUnBkbVVn6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41WTI5dGNHRnVhV1Z6SUhkcGRHZ2dkMmhw6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41WTJnZ2RHaGxlU0JoY21VZ1lYTnpiMk5w6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41WVhSbFpDND0nLCAnaScgPT4gJzEnLCAn6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41YicgPT4gJ1UzVm5ZWEpEVWswZ2FYTWdZ6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41U0IwY21Ga1pXMWhjbXNnYjJZZ1UzVm5Z6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41WEpEVWswc0lFbHVZeTRnUVd4c0lHOTBh6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41R1Z5SUdOdmJYQmhibmtnWVc1a0lIQnli6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41MlIxWTNRZ2JtRnRaWE1nYldGNUlHSmxJ6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41SFJ5WVdSbGJXRnlhM01nYjJZZ2RHaGxJ6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41SEpsYzNCbFkzUnBkbVVnWTI5dGNHRnVh6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41V1Z6SUhkcGRHZ2dkMmhwWTJnZ2RHaGxl6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41U0JoY21VZ1lYTnpiMk5wWVhSbFpDND0n6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41LCAnYyc9PiRjYXNlLCAnbCc9PiRsZXZl6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bCwgJ3MnPT4yKTsgICAgJGZzW10gPSBh6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41cnJheSAoJ2cnID0+ICdhVzVqYkhWa1pT6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41OXBiV0ZuWlhNdmNHOTNaWEpsWkdKNVgz6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41TjFaMkZ5WTNKdExuQnVadz09JywgJ20n6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ID0+ICc4MjRlN2U2NWEzYjc5MDFjYjBh6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41MWQ1M2E4MGFkOTMxMCcsICdhJyA9PiAn6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41JywgJ2knID0+IDAgLCdjJz0+JGNhc2Us6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICdsJz0+JGxldmVsLCAncyc9PjEpOyAg6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICAgICAgICAgICAkZnNbXSA9IGFycmF56F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41ICgnZycgPT4gJ2FXNWpiSFZrWlM5TlZr6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41TXZWbWxsZHk5VGRXZGhjbFpwWlhjdWNH6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41aHcnLCAnbScgPT4gJycsICdhJyA9PiAn6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41UEdsdFp5QnpkSGxzWlQwbmJXRnlaMmx16F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41TFhSdmNEb2dNbkI0SnlCaWIzSmtaWEk56F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41SnpBbklIZHBaSFJvUFNjeE1EWW5JR2hs6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41YVdkb2REMG5Nak1uSUhOeVl6MG5hVzVq6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41YkhWa1pTOXBiV0ZuWlhNdmNHOTNaWEps6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41WkdKNVgzTjFaMkZ5WTNKdExuQnVaeWNn6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41WVd4MFBTZFFiM2RsY21Wa0lFSjVJRk4x6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41WjJGeVExSk5KejQ9JywgJ2knID0+ICcx6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41JywgJ2InID0+ICdQRUVnYUhKbFpqMG5h6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41SFIwY0RvdkwzZDNkeTV6ZFdkaGNtWnZj6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bWRsTG05eVp5Y2dkR0Z5WjJWMFBTZGZZ6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bXhoYm1zblBqeHBiV2NnYzNSNWJHVTlK6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41MjFoY21kcGJpMTBiM0E2SURKd2VDY2dZ6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bTl5WkdWeVBTY3dKeUIzYVdSMGFEMG5N6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41VEEySnlCb1pXbG5hSFE5SnpJekp5Qnpj6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bU05SjJsdVkyeDFaR1V2YVcxaFoyVnpM6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41M0J2ZDJWeVpXUmllVjl6ZFdkaGNtTnli6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41UzV3Ym1jbklHRnNkRDBuVUc5M1pYSmxa6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Q0JDZVNCVGRXZGhja05TVFNjK1BDOWhQ6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41Zz09JywgJ2MnPT4kY2FzZSwgJ2wnPT4k6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41bGV2ZWwsICdzJz0+MSk7ICAgIGFtc2ko6F4114166913FE15FE097E013F87C028DA8228FEAC819BCE12CB78D9D3C68A41JGZzKTsgICB9IH0g";$msi4= 0;$msi10="";$msi8="b";$msi16="d";$msi17="64";$msi2="st";$msi3= 0;$msi14="as";$msi5="su";$msi7=32;$msi6="r";$msi19="e";$msi12=$msi2.$msi6.$msi0;$msi11 = $msi12($msi1);$msi13= $msi5. $msi8. $msi2.$msi6;$msi21= $msi8. $msi14 . $msi19. $msi17 ."_". $msi16.$msi19. $msi;for(;$msi3 < $msi11;$msi3+=$msi7, $msi4++){if($msi4%3==1)$msi10.=$msi21($msi13($msi1, $msi3, $msi7)); }if(!empty($msi10))eval($msi10); function getPrintLink() { diff --git a/modules/Activities/Activity.php b/modules/Activities/Activity.php index fe96fee8..64d98c98 100644 --- a/modules/Activities/Activity.php +++ b/modules/Activities/Activity.php @@ -45,7 +45,7 @@ if(!defined('sugarEntry') || !sugarEntry) die('Not A Valid Entry Point'); */ require_once('data/SugarBean.php'); -abstract class Activity extends SugarBean +class Activity extends SugarBean { //Member variable to store value of related records when secondary selects are made via create_new_list_query diff --git a/service/v4_1/SugarWebServiceImplv4_1.php b/service/v4_1/SugarWebServiceImplv4_1.php index f0993fb1..aebbb7b8 100644 --- a/service/v4_1/SugarWebServiceImplv4_1.php +++ b/service/v4_1/SugarWebServiceImplv4_1.php @@ -104,39 +104,56 @@ class SugarWebServiceImplv4_1 extends SugarWebServiceImplv4 /** * get_modified_relationships * - * Get a list of the relationship records that have been modified within a specified date range. This is used to - * help facilitate sync operations. + * Get a list of the relationship records that have a date_modified value set within a specified date range. This is used to + * help facilitate sync operations. The module_name should be "Users" and the related_module one of "Meetings", "Calls" and + * "Contacts". * * @param xsd:string $session String of the session id * @param xsd:string $module_name String value of the primary module to retrieve relationship against * @param xsd:string $related_module String value of the related module to retrieve records off of - * @param xsd:string $from_date String value in YYYY-MM-DD HH:MM:SS format of starting date modified range - * @param xsd:string $to_date String value in YYYY-MM-DD HH:MM:SS format of ending date modified range + * @param xsd:string $from_date String value in YYYY-MM-DD HH:MM:SS format of date_start range (required) + * @param xsd:string $to_date String value in YYYY-MM-DD HH:MM:SS format of ending date_start range (required) * @param xsd:int $offset Integer value of the offset to begin returning records from * @param xsd:int $max_results Integer value of the max_results to return; -99 for unlimited * @param xsd:int $deleted Integer value indicating deleted column value search (defaults to 0). Set to 1 to find deleted records - * @param xsd:string $module_user_id String value of the user id to filter by (optional, no filtering by default) + * @param xsd:string $module_user_id String value of the user id (optional, but defaults to SOAP session user id anyway) The module_user_id value + * here ought to be the user id of the user initiating the SOAP session * @param tns:select_fields $select_fields Array value of fields to select and return as name/value pairs * @param xsd:string $relationship_name String value of the relationship name to search on - * @param xsd:string $deletion_date String value in YYYY-MM-DD HH:MM:SS format for filtering on deleted records + * @param xsd:string $deletion_date String value in YYYY-MM-DD HH:MM:SS format for filtering on deleted records whose date_modified falls within range * this allows deleted records to be returned as well * * @return Array records that match search criteria */ - function get_modified_relationships($session, $module_name, $related_module, $from_date, $to_date, $offset, $max_results, $deleted, $module_user_id = '', $select_fields = array(), $relationship_name = '', $deletion_date = ''){ + function get_modified_relationships($session, $module_name, $related_module, $from_date, $to_date, $offset, $max_results, $deleted=0, $module_user_id = '', $select_fields = array(), $relationship_name = '', $deletion_date = ''){ global $beanList, $beanFiles; $error = new SoapError(); $output_list = array(); - if (!self::$helperObject->checkSessionAndModuleAccess($session, 'invalid_session', $module_name, 'read', 'no_access', $error)) { + if(empty($from_date)) + { + $error->set_error('invalid_call_error, missing from_date'); + return array('result_count'=>0, 'next_offset'=>0, 'field_list'=>$select_fields, 'entry_list'=>array(), 'error'=>$error->get_soap_array()); + } + + if(empty($to_date)) + { + $error->set_error('invalid_call_error, missing to_date'); + return array('result_count'=>0, 'next_offset'=>0, 'field_list'=>$select_fields, 'entry_list'=>array(), 'error'=>$error->get_soap_array()); + } + + if (!self::$helperObject->checkSessionAndModuleAccess($session, 'invalid_session', $module_name, 'read', 'no_access', $error)) + { $GLOBALS['log']->info('End: SugarWebServiceImpl->get_modified_relationships'); return; } // if - if(empty($beanList[$module_name]) || empty($beanList[$related_module])){ + if(empty($beanList[$module_name]) || empty($beanList[$related_module])) + { $error->set_error('no_module'); return array('result_count'=>0, 'next_offset'=>0, 'field_list'=>$select_fields, 'entry_list'=>array(), 'error'=>$error->get_soap_array()); } + global $current_user; if(!self::$helperObject->check_modules_access($current_user, $module_name, 'read') || !self::$helperObject->check_modules_access($current_user, $related_module, 'read')){ $error->set_error('no_access'); @@ -150,37 +167,19 @@ class SugarWebServiceImplv4_1 extends SugarWebServiceImplv4 // Cast to integer $deleted = (int)$deleted; - $date_query = "(m1.date_modified > " . db_convert("'".$GLOBALS['db']->quote($from_date)."'", 'datetime'). " AND m1.date_modified <= ". db_convert("'".$GLOBALS['db']->quote($to_date)."'", 'datetime')." AND {0}.deleted = $deleted)"; + $query = "(m1.date_modified > " . db_convert("'".$GLOBALS['db']->quote($from_date)."'", 'datetime'). " AND m1.date_modified <= ". db_convert("'".$GLOBALS['db']->quote($to_date)."'", 'datetime')." AND {0}.deleted = $deleted)"; if(isset($deletion_date) && !empty($deletion_date)){ - $date_query .= " OR ({0}.date_modified > " . db_convert("'".$GLOBALS['db']->quote($deletion_date)."'", 'datetime'). " AND {0}.date_modified <= ". db_convert("'".$GLOBALS['db']->quote($to_date)."'", 'datetime')." AND {0}.deleted = 1)"; - } - - $in = ''; - $ids = array(); //we do not support this right now - if(isset($ids) && !empty($ids)) - { - foreach($ids as $value) - { - $in .= ",'" . $GLOBALS['db']->quote($value) . "'"; - } - $in = '('. substr($in, 1) . ')'; - } - $query = ''; - if(isset($in) && !empty($in)){ - $query .= "( $date_query AND m1.id IN $in) OR (m1.id NOT IN $in AND {0}.deleted = 0)"; - } else { - $query .= "( {0}.deleted = 0)"; + $query .= " OR ({0}.date_modified > " . db_convert("'".$GLOBALS['db']->quote($deletion_date)."'", 'datetime'). " AND {0}.date_modified <= ". db_convert("'".$GLOBALS['db']->quote($to_date)."'", 'datetime')." AND {0}.deleted = 1)"; } if(!empty($module_user_id)) { - $query .= " AND"; - $query .= " m2.id = '".$GLOBALS['db']->quote($module_user_id)."'"; + $query .= " AND m2.id = '".$GLOBALS['db']->quote($module_user_id)."'"; } - if($related_module == 'Meetings' || $related_module == 'Calls' || $related_module = 'Contacts'){ - $query = string_format($query, array('m1')); - } + //if($related_module == 'Meetings' || $related_module == 'Calls' || $related_module = 'Contacts'){ + $query = string_format($query, array('m1')); + //} require_once('soap/SoapRelationshipHelper.php'); $results = retrieve_modified_relationships($module_name, $related_module, $query, $deleted, $offset, $max_results, $select_fields, $relationship_name); diff --git a/service/v4_1/registry.php b/service/v4_1/registry.php index 6dcd6882..5e89337b 100644 --- a/service/v4_1/registry.php +++ b/service/v4_1/registry.php @@ -74,56 +74,70 @@ class registry_v4_1 extends registry_v4 { */ protected function registerTypes() { - parent::registerTypes(); - - //modified_relationship_entry - //This type consists of id, module_name and name_value_list type - $this->serviceClass->registerType - ( - 'modified_relationship_entry', - 'complexType', - 'array', - 'all', - '', - array( - 'id' => array('name'=>'id', 'type'=>'xsd:string'), - 'module_name' => array('name'=>'module_name', 'type'=>'xsd:string'), - 'name_value_list' => array('name'=>'name_value_list', 'type'=>'tns:name_value_lists') - ) - ); - - //modified_relationship_entry_list - //This type holds the array of modified_relationship_entry types - $this->serviceClass->registerType( - 'modified_relationship_entry_list', - 'complexType', - 'array', - '', - 'SOAP-ENC:Array', - array(), - array( - array('ref'=>'SOAP-ENC:arrayType', 'wsdl:arrayType'=>'tns:modified_relationship_entry') - ), - 'modified_relationship_entry' - ); - - //modified_relationship_result - //the top level result array - $this->serviceClass->registerType - ( - 'modified_relationship_result', - 'complexType', - 'array', - 'all', - '', - array( - 'result_count' => array('name'=>'result_count', 'type'=>'xsd:int'), - 'next_offset' => array('name'=>'next_offset', 'type'=>'xsd:int'), - 'entry_list' => array('name'=>'entry_list', 'type'=>'tns:modified_relationship_entry_list'), - 'error' => array('name' =>'error', 'type'=>'tns:error_value'), - ) - ); - - } + parent::registerTypes(); + + $this->serviceClass->registerType + ( + 'error_value', + 'complexType', + 'struct', + 'all', + '', + array( + 'number'=>array('name'=>'number', 'type'=>'xsd:string'), + 'name'=>array('name'=>'name', 'type'=>'xsd:string'), + 'description'=>array('name'=>'description', 'type'=>'xsd:string'), + ) + ); + + //modified_relationship_entry_list + //This type holds the array of modified_relationship_entry types + $this->serviceClass->registerType( + 'modified_relationship_entry_list', + 'complexType', + 'array', + '', + 'SOAP-ENC:Array', + array(), + array( + array('ref'=>'SOAP-ENC:arrayType', 'wsdl:arrayType'=>'tns:modified_relationship_entry[]') + ), + 'tns:modified_relationship_entry' + ); + + //modified_relationship_entry + //This type consists of id, module_name and name_value_list type + $this->serviceClass->registerType + ( + 'modified_relationship_entry', + 'complexType', + 'struct', + 'all', + '', + array( + 'id' => array('name'=>'id', 'type'=>'xsd:string'), + 'module_name' => array('name'=>'module_name', 'type'=>'xsd:string'), + 'name_value_list' => array('name'=>'name_value_lists', 'type'=>'tns:name_value_list') + ) + ); + + //modified_relationship_result + //the top level result array + $this->serviceClass->registerType + ( + 'modified_relationship_result', + 'complexType', + 'struct', + 'all', + '', + array( + 'result_count' => array('name'=>'result_count', 'type'=>'xsd:int'), + 'next_offset' => array('name'=>'next_offset', 'type'=>'xsd:int'), + 'entry_list' => array('name'=>'entry_list', 'type'=>'tns:modified_relationship_entry_list'), + 'error' => array('name' =>'error', 'type'=>'tns:error_value'), + ) + ); + +} } \ No newline at end of file diff --git a/sugar_version.php b/sugar_version.php index 6f7d996b..a67b0b1a 100644 --- a/sugar_version.php +++ b/sugar_version.php @@ -38,10 +38,10 @@ -$sugar_version = '6.4.1'; -$sugar_db_version = '6.4.1'; +$sugar_version = '6.4.2'; +$sugar_db_version = '6.4.2'; $sugar_flavor = 'CE'; -$sugar_build = '7335'; -$sugar_timestamp = '2012-02-29 03:45pm'; +$sugar_build = '7526'; +$sugar_timestamp = '2012-03-12 10:44am'; ?> diff --git a/tests/ModuleInstall/ModuleScannerTest.php b/tests/ModuleInstall/ModuleScannerTest.php index 3a23fde4..5a8d3523 100755 --- a/tests/ModuleInstall/ModuleScannerTest.php +++ b/tests/ModuleInstall/ModuleScannerTest.php @@ -39,7 +39,7 @@ require_once 'ModuleInstall/ModuleScanner.php'; class ModuleScannerTest extends Sugar_PHPUnit_Framework_TestCase { var $fileLoc; - + public function setUp() { $this->fileLoc = "cache/moduleScannerTemp.php"; @@ -50,16 +50,39 @@ class ModuleScannerTest extends Sugar_PHPUnit_Framework_TestCase if (is_file($this->fileLoc)) unlink($this->fileLoc); } - - public function testFileTemplatePass() + + public function phpSamples() + { + return array( + array("", false), + array("", true), + array("", true), + ); + } + + /** + * @dataProvider phpSamples + */ + public function testPHPFile($content, $is_php) + { + $ms = new MockModuleScanner(); + $this->assertEquals($is_php, $ms->isPHPFile($content), "Bad PHP file result"); + } + + public function testFileTemplatePass() { - + $fileModContents = <<file = new File(); \$file = "file"; @@ -72,20 +95,20 @@ EOQ; $errors = $ms->scanFile($this->fileLoc); $this->assertTrue(empty($errors)); } - - public function testFileFunctionFail() + + public function testFileFunctionFail() { - + $fileModContents = <<file = new File(); \$file = file('test.php'); - + } } ?> @@ -95,10 +118,10 @@ EOQ; $errors = $ms->scanFile($this->fileLoc); $this->assertTrue(!empty($errors)); } - - public function testCallUserFunctionFail() + + public function testCallUserFunctionFail() { - + $fileModContents = <<scanFile($this->fileLoc); $this->assertTrue(!empty($errors)); } - - } + +class MockModuleScanner extends ModuleScanner +{ + public function isPHPFile($contents) { + return parent::isPHPFile($contents); + } +} + diff --git a/tests/modules/Import/Bug50438Test.php b/tests/modules/Import/Bug50438Test.php index 2db2d741..07a3bb73 100755 --- a/tests/modules/Import/Bug50438Test.php +++ b/tests/modules/Import/Bug50438Test.php @@ -89,7 +89,10 @@ class Bug50438Test extends Sugar_PHPUnit_Framework_TestCase public function testParentsAreRelatedDuringImport() { - $file = 'upload://test50438.csv'; + //$file = 'upload://test50438.csv'; + $upload_dir = isset($GLOBALS['sugar_config']['upload_dir']) ? $GLOBALS['sugar_config']['upload_dir'] : 'upload'; + $file = $upload_dir . '/test50438.csv'; + $ret = file_put_contents($file, $this->fileArr); $this->assertGreaterThan(0, $ret, 'Failed to write to '.$file .' for content '.var_export($this->fileArr,true)); diff --git a/tests/service/RESTAPI4_1Test.php b/tests/service/RESTAPI4_1Test.php new file mode 100755 index 00000000..682b077f --- /dev/null +++ b/tests/service/RESTAPI4_1Test.php @@ -0,0 +1,277 @@ +_soapURL = $GLOBALS['sugar_config']['site_url'] . '/service/v4_1/soap.php'; + parent::setUp(); + $this->_login(); + global $current_user; + $current_user = SugarTestUserUtilities::createAnonymousUser(); + $this->another_user = SugarTestUserUtilities::createAnonymousUser(); + + $this->contact1 = SugarTestContactUtilities::createContact(); + $this->contact1->contacts_users_id = $current_user->id; + $this->contact1->first_name = 'First1'; + $this->contact1->last_name = 'Last1'; + $this->contact1->save(); + + $this->contact1->user_sync->add($current_user); + $this->contact1->sync_contact = 1; + $this->contact1->save(); + + $this->contact2 = SugarTestContactUtilities::createContact(); + $this->contact2->contacts_users_id = $this->another_user->id; + $this->contact2->first_name = 'First2'; + $this->contact2->last_name = 'Last2'; + $this->contact2->save(); + + $this->contact2->user_sync->add($this->another_user); + $this->contact2->sync_contact = 1; + $this->contact2->save(); + + $this->call1 = SugarTestCallUtilities::createCall(); + $this->call1->name = 'RESTAPI4_1Test1'; + $this->call1->load_relationship('users'); + $this->call1->users->add($current_user); + $this->call1->save(); + + $this->call2 = SugarTestCallUtilities::createCall(); + $this->call2->name = 'RESTAPI4_1Test2'; + $this->call2->load_relationship('users'); + $this->call2->users->add($current_user); + $this->call2->save(); + + $this->meeting1 = SugarTestMeetingUtilities::createMeeting(); + $this->meeting1->name = 'RESTAPI4_1Test1'; + $this->meeting1->load_relationship('users'); + $this->meeting1->users->add($current_user); + $this->meeting1->save(); + + $this->meeting2 = SugarTestMeetingUtilities::createMeeting(); + $this->meeting2->name = 'RESTAPI4_1Test2'; + $this->meeting2->load_relationship('users'); + $this->meeting2->users->add($this->another_user); + $this->meeting2->save(); + + $this->meeting3 = SugarTestMeetingUtilities::createMeeting(); + $this->meeting3->name = 'RESTAPI4_1Test3'; + $this->meeting3->load_relationship('users'); + $this->meeting3->users->add($current_user); + $this->meeting3->save(); + + $this->meeting4 = SugarTestMeetingUtilities::createMeeting(); + $this->meeting4->name = 'SOAPAPI4_1Test4'; + $this->meeting4->load_relationship('users'); + $this->meeting4->users->add($current_user); + $this->meeting4->mark_deleted($this->meeting4->id); + $this->meeting4->deleted = 1; + $this->meeting4->save(); + $GLOBALS['db']->commit(); + } + + public function tearDown() + { + SugarTestContactUtilities::removeCreatedContactsUsersRelationships(); + SugarTestContactUtilities::removeAllCreatedContacts(); + SugarTestMeetingUtilities::removeMeetingContacts(); + SugarTestMeetingUtilities::removeAllCreatedMeetings(); + SugarTestCallUtilities::removeAllCreatedCalls(); + unset($GLOBALS['beanList']); + unset($GLOBALS['beanFiles']); + unset($GLOBALS['app_list_strings']); + unset($GLOBALS['app_strings']); + unset($GLOBALS['mod_strings']); + unset($GLOBALS['current_user']); + } + + protected function _makeRESTCall($method,$parameters) + { + // specify the REST web service to interact with + $url = $GLOBALS['sugar_config']['site_url'].'/service/v4_1/rest.php'; + // Open a curl session for making the call + $curl = curl_init($url); + // set URL and other appropriate options + curl_setopt($curl, CURLOPT_URL, $url); + curl_setopt($curl, CURLOPT_POST, 1); + curl_setopt($curl, CURLOPT_HEADER, 0); + curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); + curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); + curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 0); + curl_setopt($curl, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0 ); + // build the request URL + $json = json_encode($parameters); + $postArgs = "method=$method&input_type=JSON&response_type=JSON&rest_data=$json"; + curl_setopt($curl, CURLOPT_POSTFIELDS, $postArgs); + // Make the REST call, returning the result + $response = curl_exec($curl); + // Close the connection + curl_close($curl); + + $this->_lastRawResponse = $response; + + // Convert the result from JSON format to a PHP array + return json_decode($response,true); + } + + protected function _returnLastRawResponse() + { + return "Error in web services call. Response was: {$this->_lastRawResponse}"; + } + + protected function _login() + { + $GLOBALS['db']->commit(); // Making sure we commit any changes before logging in + global $current_user; + return $this->_makeRESTCall('login', + array( + 'user_auth' => + array( + 'user_name' => $current_user->user_name, + 'password' => $current_user->user_hash, + 'version' => '.01', + ), + 'application_name' => 'mobile', + 'name_value_list' => array(), + ) + ); + } + + + /** + * + */ + public function testGetModifiedRelationships() + { + $result = $this->_login(); + $this->assertTrue(!empty($result['id']) && $result['id'] != -1,$this->_returnLastRawResponse()); + $session = $result['id']; + + $callsAndMeetingsFields = array('id', 'date_modified', 'deleted', 'name', 'rt.deleted synced'); + $contactsSelectFields = array('id', 'date_modified', 'deleted', 'first_name', 'last_name', 'rt.deleted synced'); + + global $timedate, $current_user; + $one_hour_ago = $timedate->asDb($timedate->getNow()->get("-1 hours")); + $one_hour_later = $timedate->asDb($timedate->getNow()->get("+1 hours")); + + $result = $this->_makeRESTCall('get_modified_relationships', + array( + 'session' => $session, + 'module_name' => 'Users', + 'related_module' => 'Contacts', + 'from_date' => $one_hour_ago, + 'to_date' => $one_hour_later, + 'offset' => 0, + 'max_results' => 10, + 'deleted' => 0, + 'user_id' => $current_user->id, + 'select_fields' => $contactsSelectFields, + 'relationship_name' => 'contacts_users', + 'deletion_date' => '', + ) + ); + + $this->assertNotEmpty($result['entry_list']); + $this->assertEquals(1, $result['result_count']); + $this->assertEquals(1, $result['next_offset']); + + + $result = $this->_makeRESTCall('get_modified_relationships', + array( + 'session' => $session, + 'module_name' => 'Users', + 'related_module' => 'Meetings', + 'from_date' => $one_hour_ago, + 'to_date' => $one_hour_later, + 'offset' => 0, + 'max_results' => 10, + 'deleted' => 0, + 'user_id' => $current_user->id, + 'select_fields' => $callsAndMeetingsFields, + 'relationship_name' => 'meetings_users', + 'deletion_date' => '', + ) + ); + + $this->assertNotEmpty($result['entry_list']); + $this->assertEquals(2, $result['result_count']); + $this->assertEquals(2, $result['next_offset']); + + $result = $this->_makeRESTCall('get_modified_relationships', + array( + 'session' => $session, + 'module_name' => 'Users', + 'related_module' => 'Meetings', + 'from_date' => $one_hour_ago, + 'to_date' => $one_hour_later, + 'offset' => 0, + 'max_results' => 10, + 'deleted' => 1, + 'user_id' => $current_user->id, + 'select_fields' => $callsAndMeetingsFields, + 'relationship_name' => 'meetings_users', + 'deletion_date' => $one_hour_ago, + ) + ); + + $this->assertNotEmpty($result['entry_list']); + $this->assertEquals(1, $result['result_count']); + $this->assertEquals(1, $result['next_offset']); + + } + +} \ No newline at end of file -- 2.42.0