Groups keyboard shortcuts have been updated
Dismiss
See shortcuts

chrome.storage.sync returns undefined even after Chrome reinstall (Windows 11)

35 views
Skip to first unread message

Notuzo Pidorasovich

unread,
Jan 15, 2025, 9:22:20 AMJan 15
to Chromium Extensions
Hello!
  I'm encountering a very persistent issue with my Chrome extension. `chrome.storage.sync` (and seemingly the entire `chrome.storage` object) is returning `undefined` in my extension's popup script. This happens *even after a complete reinstall of Chrome and creating a new profile*.  

Problem Description:

  The `chrome.storage.sync` (and `chrome.storage`) API is returning `undefined` in my `popup.js` script. This results in the error `Uncaught TypeError: Cannot read properties of undefined (reading 'sync')`.  

  **Steps to Reproduce:**

 1. Install the extension (as unpacked). 2. Open the popup. 3. Enter an API key (in the input field). 4. Click the "Save" button. 5. Open the popup's developer console. 6. The error `Uncaught TypeError: Cannot read properties of undefined (reading 'sync')` and `typeof chrome.storage: undefined` are visible.  

  **Chrome Information:**


Google Chrome

132.0.6834.84 (Официальная сборка) (64 бит) 

Версия

c1a6c2d428b5b484febdecda9475aba38de5a502-refs/branch-heads/6834@{#3391}

ОС

Windows 11 Version 24H2 (Build 26100.2033)

JavaScript

V8 13.2.152.27

User Agent

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36

Командная строка

"C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chrome.exe" --from-installer --flag-switches-begin --flag-switches-end

Путь к исполняемому файлу

C:\Users\Administrator\AppData\Local\Google\Chrome\Application\chrome.exe

Путь к профилю

C:\Users\Administrator\AppData\Local\Google\Chrome\User Data\Profile 2
Модификации для командной строки: 
IC0tZm9yY2UtZmllbGR0cmlhbHM9IipBTFBTTmV3Q29kZXBvaW50L0RlZmF1bHQvKkFkc1A0L0VuYWJsZWRfMjAyNDExMTcvKkFnZ3Jlc3NpdmVTaGFkZXJDYWNoZUxpbWl0cy9EZWZhdWx0LypBc3luY0RpcmVjdFA0L0RlZmF1bHQvKkF0dHJpYnV0aW9uUmVwb3J0aW5nSW5Ccm93c2VyUHJvY2Vzc2luZy9EZWZhdWx0L0F1dG9maWxsRGVjb3VwbGVBdXRvZmlsbENvdW50RnJvbUNhY2hlL0VuYWJsZWRMYXVuY2gvKkF1dG9maWxsRGlzYWJsZUxvY2FsQ2FyZE1pZ3JhdGlvbi9EZWZhdWx0L0F1dG9maWxsRW5hYmxlQWNjb3VudFN0b3JhZ2VGb3JJbmVsaWdpYmxlQ291bnRyaWVzL0RlZmF1bHQvKkF1dG9maWxsRW5hYmxlQ2FyZEJlbmVmaXRzRm9yQW1lcmljYW5FeHByZXNzL0VuYWJsZWRfNTAvKkF1dG9maWxsRW5hYmxlQ3ZjU3RvcmFnZS9MYXVuY2hlZF85OC9BdXRvZmlsbEVuYWJsZUVtYWlsSGV1cmlzdGljT25seUFkZHJlc3NGb3Jtcy9FbmFibGVkX0F1dG9jb21wbGV0ZUFsbC9BdXRvZmlsbEVuYWJsZUZwYW5SaXNrQmFzZWRBdXRoZW50aWNhdGlvbi9MYXVuY2hlZC9BdXRvZmlsbEVuYWJsZVNlcnZlckliYW4vRGVmYXVsdC9BdXRvZmlsbEVuYWJsZVN1cHBvcnRGb3JQYXJzaW5nV2l0aFNoYXJlZExhYmVscy9EZWZhdWx0L0F1dG9maWxsRW5hYmxlVmNuR3JheU91dEZvck1lcmNoYW50T3B0T3V0L0RlZmF1bHQvKkF1dG9maWxsRW5hYmxlVmlydHVhbENhcmRPbkZpbGUvRW5hYmxlZExhdW5jaC8qQXV0b2ZpbGxGaXhDYWNoaW5nT25KYXZhU2NyaXB0Q2hhbmdlcy9EZWZhdWx0LypBdXRvZmlsbEZpeFZhbHVlU2VtYW50aWNzL0VuYWJsZWRfMjAyNDEyMDMvQXV0b2ZpbGxJMThuQWRkcmVzc01vZGVsQW5kUmVnZXhlc0dFSVRQTC9EZWZhdWx0L0F1dG9maWxsSTE4bkFkZHJlc3NNb2RlbE5ld0NvdW50cmllcy9FbmFibGVkTGF1bmNoL0F1dG9maWxsSW1wb3J0RnJvbUF1dG9jb21wbGV0ZVVucmVjb2duaXplZC9FbmFibGVkTGF1bmNoLypBdXRvZmlsbEluZmVyTGFiZWxGcm9tRGVmYXVsdFNlbGVjdFRleHQvRGVmYXVsdC8qQXV0b2ZpbGxMb2dEZWR1cGxpY2F0aW9uTWV0cmljcy9FbmFibGVkXzUwLypBdXRvZmlsbFBob25lTnVtYmVyRGV0ZWN0aW9uSW1wcm92ZW1lbnRzL0VuYWJsZWRfVHJ1bmtUeXBlc19Db3VudHJ5Q29kZS9BdXRvZmlsbFVubWFza0NhcmRSZXF1ZXN0VGltZW91dC9EZWZhdWx0L0F1dG9maWxsVXBsb2FkQ2FyZFJlcXVlc3RUaW1lb3V0L0VuYWJsZWRfNnBvaW50NXNlY29uZHMvQXV0b2ZpbGxVcHN0cmVhbVVwZGF0ZWRVaS9MYXVuY2hlZF9TZWN1cml0eS9BdXRvZmlsbFZjbkVucm9sbFJlcXVlc3RUaW1lb3V0L0VuYWJsZWRfNnBvaW50NXNlY29uZHMvQmFja0ZvcndhcmRDYWNoZUJyb2FkY2FzdENoYW5uZWwvRW5hYmxlZF81MC8qQmFja0ZvcndhcmRDYWNoZUZvclBhZ2VXaXRoQ2FjaGVDb250cm9sTm90U3RvcmVkSGVhZGVyL0NvbnRyb2xfNTAvQmFja0ZvcndhcmRDYWNoZVNlbnNvcnMvRGVmYXVsdC8qQm9vc3RSZW5kZXJQcm9jZXNzRm9yTG9hZGluZy9Cb29zdEJyb3dzZXJJbml0aWF0ZWRQcmVyZW5kZXJpbmdGb3JTUlBfMjAyNTAxMDgvKkJyb3dzZXJTZWFyY2hHYXRld2F5VHJhZmZpY01pZ3JhdGlvbi9Db250cm9sXzIwMjQxMTIwLypDU1NMYXp5UGFyc2luZ0Zhc3RQYXRoL0NvbnRyb2xfOS9DYW1lcmFNaWNQcmV2aWV3L0NvbnRyb2xfMjAyNDExMTkvQ2FudmFzSGliZXJuYXRpb25FeHBlcmltZW50cy9Db250cm9sXzIwMjQwOTIzL0Nhc3RDZXJ0aWZpY2F0ZVJldm9jYXRpb24vRW5hYmxlZExhdW5jaC8qQ2hyb21lQVBJS2V5L0VuYWJsZWQvKkNocm9tZUNoYW5uZWxTdGFibGUvRW5hYmxlZC8qQ2hyb21uaWVudElQSC9EZWZhdWx0LypDaHJvbW5pZW50SW1hZ2VDb250ZXh0TWVudUFjdGlvbnMvTGF1bmNoZWQvKkNsYXNzaWZ5VXJsT25Qcm9jZXNzUmVzcG9uc2VFdmVudExpbnV4TWFjQW5kV2luZG93cy9FbmFibGVkTGF1bmNoL0NsZWFyVW5kZWNyeXB0YWJsZVBhc3N3b3Jkcy9EZWZhdWx0L0NsaWVudFNpZGVEZXRlY3Rpb25BY2NlcHRIQ0FsbG93bGlzdC9EZWZhdWx0L0NsaWVudFNpZGVEZXRlY3Rpb25TYW1wbGVQaW5nL0NvbnRyb2xfMjAyNDExMDZfNTAvKkNvbXBvc2VVcGZyb250SW5wdXRNb2Rlcy9EZWZhdWx0L0NvbmRpdGlvbmFsSW1hZ2VSZXNpemUvRGVmYXVsdC8qQ29va2llRGVwcmVjYXRpb25GYWNpbGl0YXRlZFRlc3RpbmdDb29raWVEZXByZWNhdGlvbi9Db250cm9sT25lXzNfMjAyNDAyMDcvKkRic2NQaGFzZTFhU3R1ZHkvRGVmYXVsdC8qRGVmYXVsdEJyb3dzZXJQcm9tcHRSZWZyZXNoTGF1bmNoL1YyRW5hYmxlZDNWMl9MYXVuY2hfMjAyNDA3MDIvKkRlZmVyUmVuZGVyZXJUYXNrc0FmdGVySW5wdXQvRW5hYmxlZF9NaW5pbWFsVHlwZXNfMjAyNDEyMDQvKkRlc2t0b3BOdHBJbWFnZUVycm9yRGV0ZWN0aW9uL0RlZmF1bHRfMjAyNDEyMDMvKkRlc2t0b3BOdHBNb2JpbGVQcm9tby9EZWZhdWx0LypEZXNrdG9wUmVFbmdhZ2VtZW50L0VuYWJsZWRfMjAyNDExMTgvKkRldlRvb2xzRnJlZXN0eWxlci9FbmFibGVkTGF1bmNoLypFbmFibGVDZXJ0TWFuYWdlbWVudFVJVjJXcml0ZS9EZWZhdWx0LypFbmFibGVJbW1lZGlhdGVEcmF3RHVyaW5nU2Nyb2xsSW50ZXJhY3Rpb24vRGVmYXVsdC9FbnRlcnByaXNlRmlsZU9iZnVzY2F0aW9uL0RlZmF1bHQvRW50ZXJwcmlzZVBhc3N3b3JkUmV1c2VVaVJlZnJlc2gvRW5hYmxlZExhdW5jaC8qRXNiQWlTdHJpbmdVcGRhdGUvRW5hYmxlZExhdW5jaC8qRXNjYXBlTHRHdEluQXR0cmlidXRlcy9EZWZhdWx0LypFdmVudFRpbWluZ1NlbGVjdGlvbkF1dG9TY3JvbGxOb0ludGVyYWN0aW9uSWQvRGVmYXVsdC8qRXZpY3Rpb25UaHJvdHRsZXNEcmF3L0VuYWJsZWRMYXVuY2gvKkV4cGFuZENvbXBvc2l0ZWRDdWxsUmVjdC9EZWZhdWx0LypFeHBpcmVkSGlzdG9ncmFtcy9FeHBpcnlFbmFibGVkV2l0aEFsbG93bGlzdC8qRXh0ZW5kZWRSZXBvcnRpbmdSZW1vdmVQcmVmRGVwZW5kZW5jeS9EZWZhdWx0LypFeHRlbnNpb25NYW5pZmVzdFYyRGVwcmVjYXRpb24vRGVmYXVsdC8qRXh0ZW5zaW9uUGFyZW50YWxDb250cm9sc09uTGludXhNYWNXaW5kb3dzL0RlZmF1bHQvKkV4dHJlbWVMaWdodHdlaWdodFVBRkRldGVjdG9yL0RlZmF1bHQvKkZlYXR1cmVQYXJhbVdpdGhDYWNoZS9EZWZhdWx0LypGZW5jZWRGcmFtZXNFbmFibGVSZXBvcnRFdmVudEhlYWRlckNoYW5nZXMvRW5hYmxlZExhdW5jaC8qRmVuZGVyQXV0b1ByZWNvbm5lY3RMY3BPcmlnaW5zL0RlZmF1bHQvKkZpbmdlcnByaW50aW5nUHJvdGVjdGlvbkZpbHRlci9EZWZhdWx0L0ZsZWRnZUZhY2lsaXRhdGVkVGVzdGluZ1NpZ25hbHNIZWFkZXJzL0VuYWJsZWRMYXVuY2gvKkZvbnRhdGlvbnNGb250QmFja2VuZC9Db250cm9sXzUwLypGcmVlemluZ09uQmF0dGVyeVNhdmVyVHdlYWtzL1ByZXBlcmlvZF9EZWZhdWx0L0dsb2JhbE1lZGlhQ29udHJvbHNVcGRhdGVkVUkvRW5hYmxlZExhdW5jaC8qR3dwQXNhbjIwMjRXaW5NYWMvRGVmYXVsdC8qSGlnaGxpZ2h0SW5oZXJpdGFuY2VLaWxsU3dpdGNoL0Rpc2FibGVkX0VtZXJnZW5jeUtpbGxTd2l0Y2gvKkh0dHBEaXNrQ2FjaGVQcmV3YXJtaW5nL0RlZmF1bHQvKkh0dHBzRmlyc3RNb2RlVjJGb3JFbmdhZ2VkU2l0ZXMvRGVmYXVsdC8qSHR0cHNGaXJzdE1vZGVWMkZvclR5cGljYWxseVNlY3VyZVVzZXJzL0RlZmF1bHQvKklPU0FjcXVpc2l0aW9uT25EZXNrdG9wUHJvbW8vTGF1bmNoZWRfMjAyNF8xMl8xNi8qSWdub3JlRHVwbGljYXRlTmF2cy9FbmFibGVkX3RocmVzaG9sZF8yc18yMDI0MTAzMS8qSW5saW5lRnVsbHNjcmVlblBlcmZFeHBlcmltZW50L0RlZmF1bHQvKktlZXBBbGl2ZUluQnJvd3Nlck1pZ3JhdGlvbkhvbGRiYWNrL0RlZmF1bHRfMjAyNDEyMTIvKktleWJvYXJkQW5kUG9pbnRlckxvY2tQcm9tcHRLaWxsU3dpdGNoL0Rpc2FibGVkX0VtZXJnZW5jeUtpbGxTd2l0Y2gvKktpZHNQcm9maWxlUGhhc2UxL0xhdW5jaGVkLypLaWRzUHJvZmlsZVBoYXNlMi9Db250cm9sX1N0YWJsZV81MC8qTENQUERlZmVyVW51c2VkUHJlbG9hZFJlcXVlc3QvQ29udHJvbF8yMDI1MDEwOS8qTENQUEltYWdlTG9hZGluZ1ByaW9yaXR5L0RlZmF1bHQvKkxDUFBMYXp5TG9hZEltYWdlUHJlbG9hZC9FbmFibGVXaXRoTmF0aXZlTGF6eUxvYWRpbmcvKkxDUFBNdWx0aXBsZUtleS9FbmFibGVkS2V5U3RhdF8yMDI1MDEwNy8qTENQVGltaW5nUHJlZGljdG9yUHJlcmVuZGVyMi9EZWZhdWx0LypMYXp5VXBkYXRlVHJhbnNsYXRlTW9kZWwvRW5hYmxlZF8yMDI1MDEwOC8qTGltaXRlZEVudHJvcHlVbmlmb3JtaXR5U3R1ZHk0cGN0MkEvR3JvdXBfMl8yMDI0MTAxNy8qTGltaXRlZEVudHJvcHlVbmlmb3JtaXR5U3R1ZHk0cGN0MkIvR3JvdXBfMl8yMDI0MTAxNy8qTGltaXRlZEVudHJvcHlVbmlmb3JtaXR5U3R1ZHk0cGN0MkMvR3JvdXBfMl8yMDI0MTAxNy8qTGltaXRlZEVudHJvcHlVbmlmb3JtaXR5U3R1ZHk0cGN0MkQvR3JvdXBfNl8yMDI0MTAxNy8qTGltaXRlZEVudHJvcHlVbmlmb3JtaXR5U3R1ZHk0cGN0MkUvR3JvdXBfMl8yMDI0MTAxNy8qTGltaXRlZEVudHJvcHlVbmlmb3JtaXR5U3R1ZHk0cGN0MkYvR3JvdXBfMV8yMDI0MTAxNy8qTGlua2VkU2VydmljZXNTZXR0aW5nL0RlZmF1bHQvKkxvY2FsU3RhdGVFbnRlcnByaXNlUGFzc3dvcmRIYXNoZXMvRW5hYmxlZExhdW5jaC8qTG93UHJpb3JpdHlBc3luY1NjcmlwdEV4ZWN1dGlvbi9EZWZhdWx0LypNZWRpYVJlY29yZGVyVXNlTWVkaWFWaWRlb0VuY29kZXIvRGVmYXVsdC8qTWVtb3J5UHVyZ2VJbkJhY2tncm91bmQvRGlzYWJsZVN0cm9uZ1JlZmVyZW5jZXNfMjAyNDEyMDIvKk1ldHJpY3NBbmRDcmFzaFNhbXBsaW5nL1JlcG9ydGluZ0Z1bGwvKk1vdmVUaGVtZVByZWZzVG9TcGVjaWZpY3MvRGVmYXVsdC8qTXVsdGlwbGVMYXllck1lbWJlclJlZkdXU1Rlc3RTdHVkeS9Hcm91cEFfMjAyNDEwMDgvTXVsdGlwbGVTcGFyZVJQSHMvUHJlcGVyaW9kX0RlZmF1bHQvKk5ld0NvbnRlbnRGb3JDaGVja2VyYm9hcmRlZFNjcm9sbHMvRGVmYXVsdC8qTm9QcmVSZWFkTWFpbkRsbElmU3NkL0NvbnRyb2xfMjAyNTEyMTMvKk5vVGhyb3R0bGluZ1Zpc2libGVBZ2VudC9EZWZhdWx0LypPY2NsdXNpb25DdWxsaW5nUXVhZFNwbGl0TGltaXQvUHJlcGVyaW9kX0RlZmF1bHQvKk9tbmlib3hEZWxldGVPbGRTaG9ydGN1dHMvTGF1bmNoZWQvKk9tbmlib3hPbkRldmljZUhlYWRNb2RlbFJldHJpZXZhbEltcHJvdmVtZW50TGF1bmNoRGVza3RvcC9EZXNrdG9wX0VuYWJsZWRfMTAwcGN0LypPbmVUaW1lUGVybWlzc2lvbi9FbmFibGVkV2l0aEFsbG93V2hpbGVWaXNpdGluZ0FzRmlyc3RCdXR0b25fMjAyNDEwMzFMYXVuY2gvKk9wdGltaXphdGlvblRhcmdldEdlb2xvY2F0aW9uUGVybWlzc2lvblByZWRpY3Rpb25zR3JhZHVhbFJvbGxvdXQvRGVmYXVsdC8qT3B0aW1pemF0aW9uVGFyZ2V0Tm90aWZpY2F0aW9uUGVybWlzc2lvblByZWRpY3Rpb25zR3JhZHVhbFJvbGxvdXQvRGVmYXVsdC8qT3V0T2ZQcm9jZXNzUHJpbnREcml2ZXJzUHJpbnQvRGVmYXVsdC8qUE1Qcm9jZXNzUHJpb3JpdHlQb2xpY3kvRW5hYmxlZF8yMDI0MTIxMy9QV0FJY29uQW5kVGl0bGVJbk5hdGl2ZU5vdGlmaWNhdGlvbnNXaW4vRGVmYXVsdC8qUGFnZU1ldGFkYXRhRGVza3RvcEV4cGFuc2lvbi9EZWZhdWx0LypQYXJ0aXRpb25BbGxvY1VzZVBvb2xPZmZzZXRGcmVlbGlzdHMvRW5hYmxlZExhdW5jaC8qUGFydGl0aW9uQWxsb2NVc2VTbWFsbFNpbmdsZVNsb3RTcGFucy9FbmFibGVkTGF1bmNoLypQZGZDcjIzL0RlZmF1bHQvKlBkZk91dE9mUHJvY2Vzc0lmcmFtZS9EZWZhdWx0LypQZGZTZWFyY2hpZnkvRGVmYXVsdC8qUGVyZkNvbWJpbmVkMjAyNC9FbmFibGVkX0xhdW5jaGVkLypQZXJmb3JtYW5jZUludGVydmVudGlvblVJTGF1bmNoL0VuYWJsZWRTdHJpbmcxLypQZXJtaXNzaW9uUHJlZGljdGlvbnNWMy9FbmFibGVkTGF1bmNoLypQb2xpY3lCbG9ja2xpc3RQcm9jZWVkVW50aWxSZXNwb25zZS9Ib2xkYmFja18yMDI0MTIxNi8qUHJlZmV0Y2hSZXVzYWJsZS9EZWZhdWx0LypQcmVsb2FkaW5nQ29uZmlnL0RlZmF1bHRfMjAyNDExMjYvKlByZXJlbmRlcjJCb29rbWFya0JhclRyaWdnZXJWMi9Nb3VzZURvd25BbmRNb3VzZUhvdmVyMzAwbXNfMjAyNDEyMDQvKlByZXJlbmRlcjJGYWxsYmFja1ByZWZldGNoU3BlY1J1bGVzL1ByZXBlcmlvZF9EZWZhdWx0LypQcmVyZW5kZXIyTmV3VGFiUGFnZVRyaWdnZXJWMi9EZWZhdWx0LypQcmVzZXJ2ZURpc2NhcmRhYmxlSW1hZ2VNYXBRdWFsaXR5L0RlZmF1bHQvKlByaXZhY3lTYW5kYm94QWRzQVBJcy9FbmFibGVkX05vdGljZV9HQV9Dcm9zc0FwcFdlYkFyYV9TdGFibGVfMjAyNDA0MjQvUHJpdmFjeVNhbmRib3hQcml2YWN5UG9saWN5L0VuYWJsZWRfMjAyNDEyMTMvKlByb2Nlc3NCb3VuZFN0cmluZ0VuY3J5cHRpb24vRGVmYXVsdC9Qcm90ZWN0ZWRBdWRpZW5jZUJBbmRBVHJpZ2dlcmVkVXBkYXRlcy9EZWZhdWx0LypQcm90ZWN0ZWRBdWRpZW5jZURlYWxzU3VwcG9ydC9Db250cm9sXzEwL1Byb3RlY3RlZEF1ZGllbmNlTXVsdGlUaHJlYWRlZFNlbGxlcldvcmtsZXQvRGVmYXVsdC9Qcm90ZWN0ZWRBdWRpZW5jZU5vV2FzbUxhenlDb21waWxhdGlvblN0dWR5L0RlZmF1bHQvUHJvdGVjdGVkQXVkaWVuY2VQcmVjb25uZWN0Q2FjaGVTdHVkeS9EZWZhdWx0LypQcm90ZWN0ZWRBdWRpZW5jZVRydXN0ZWRLVlN1cHBvcnQvRGVmYXVsdC9Qcm90ZWN0ZWRBdWRpZW5jZXNLQW5vbnltaXR5RW5mb3JjZW1lbnRTdHVkeS9FbmFibGVkXzIwMjQwNTI0LypRVUlDL1NlcnZlclByZWZlcnJlZEFkZHJlc3NWYW5pbGxhTm92MjAyNC8qUmFzdGVySW5kdWNpbmdTY3JvbGwvRGVmYXVsdC8qUmVhY3RpdmVQcmVmZXRjaERlc2t0b3AvRW5hYmxlZFdpdGhQcmVjb25uZWN0TGF1bmNoLypSZWR1Y2VBY2NlcHRMYW5ndWFnZS9EZWZhdWx0LypSZWdpc3Rlck9zVXBkYXRlSGFuZGxlcldpbi9FbmFibGVkTGF1bmNoL1JlbW92ZVJlbmRlcmVyUHJvY2Vzc0xpbWl0L0NvbnRyb2xfMjAyNDEyMDQvKlJlbmRlckRvY3VtZW50V2l0aE5hdmlnYXRpb25RdWV1ZWluZy9EZWZhdWx0XzIwMjQxMTIwLypSZW5kZXJQYXNzRHJhd25SZWN0L0VuYWJsZWRfMjAyNTAxMTMvUmVzb2x1dGlvbkJhc2VkRGVjb2RlclByaW9yaXR5L0RlZmF1bHQvKlJldHJvYWN0aXZlUHJlcGVyaW9kL0RlZmF1bHRfV2luZG93cy8qUmV1c2VEZXRlY3Rpb25CYXNlZE9uUGFzc3dvcmRIYXNoZXMvRGVmYXVsdC8qUm9sbG91dEJvdGhPdGhlclBsYXRmb3Jtcy9FbmFibGVkX2JvdGhMYXVuY2gvKlNhZmVCcm93c2luZ0hhc2hQcmVmaXhSZWFsVGltZUxvb2t1cHNGYXN0ZXJPaHR0cEtleVJvdGF0aW9uL0VuYWJsZWRMYXVuY2gvKlNhZmV0eUh1Yk9uZU9mZkhhdHMvRGVmYXVsdC8qU2F2ZVBhc3N3b3JkSGFzaEZyb21Qcm9maWxlUGlja2VyL0RlZmF1bHQvKlNjcmlwdGVkSWRsZVRhc2tDb250cm9sbGVyT09NRml4L0VuYWJsZWRMYXVuY2gvKlNlYXJjaEVuZ2luZUNob2ljZUd1ZXN0RXhwZXJpZW5jZS9FbmFibGVkTGF1bmNoLypTZWFyY2hQcmVmZXRjaEhpZ2hQcmlvcml0eVByZWZldGNoZXMvRGVmYXVsdC8qU2VjdXJlVGltZUNlcnRpZmljYXRlVmVyaWZpY2F0aW9uL0VuYWJsZWRMYXVuY2gvKlNlbGVjdFBhcnNlclJlbGF4YXRpb24vRGlzYWJsZWRfRW1lcmdlbmN5S2lsbFN3aXRjaC8qU2VuZFRhYlRvU2VsZklPU1B1c2hOb3RpZmljYXRpb25zL0RlZmF1bHQvKlNlcnZpY2VXb3JrZXJBdXRvUHJlbG9hZC9EZWZhdWx0LypTZXJ2aWNlV29ya2VyQXZvaWRNYWluVGhyZWFkRm9ySW5pdGlhbGl6YXRpb25Gb3JEZXNrdG9wL0VuYWJsZWRfMjAyNDEyMTAvKlNlcnZpY2VXb3JrZXJTdG9yYWdlU3VwcHJlc3NQb3N0VGFzay9FbmFibGVkL1NpZ25pbkludGVyY2VwdFNpbXBsZUJ1dHRvbnMvRGVmYXVsdC8qU2tpcFBhZ2VoaWRlSW5Db21taXRGb3JEU0VOYXZpZ2F0aW9uL1ByZXBlcmlvZDg1LypTa2lwVW5uZWNlc3NhcnlSZW1vdGVGcmFtZUdlb21ldHJ5UHJvcGFnYXRpb24vRGVmYXVsdC8qU3BlY3VsYXRpdmVTZXJ2aWNlV29ya2VyV2FybVVwL0RlZmF1bHQvU3RhbGVTZXNzaW9uQ29va2llQ2xlYW51cC9EZWZhdWx0LypTdGFsZVN0b3JhZ2VDbGVhbnVwL0RlZmF1bHQvKlRhYlN0cmlwQ29sbGVjdGlvblN0b3JhZ2UvRW5hYmxlZExhdW5jaC8qVGFic3RyaXBEZWNsdXR0ZXIvRGVmYXVsdC8qVGV4dFNpemVBZGp1c3RJbXByb3ZlbWVudHMvRW5hYmxlZExhdW5jaC8qVGhyZWFkZWRTY3JvbGxQcmV2ZW50UmVuZGVyaW5nU3RhcnZhdGlvbi9FbmFibGVkXzEwMG1zXzIwMjUwMTA5LypUb29sYmFyUGlubmluZy9FbmFibGVkTGF1bmNoLypUcnVuY2F0ZUxhbmd1YWdlRGV0ZWN0aW9uU2FtcGxlL0VuYWJsZWRMYXVuY2gvKlVLTS9FbmFibGVkXzIwMTgwMzE0LypVTUEtTGF5ZXJDb25zdHJhaW5lZC1Vbmlmb3JtaXR5LUxvd0VudHJvcHlMYXllcl9TZXNzaW9uQ29uc2lzdGVudFN0dWR5L2dyb3VwXzAyLypVTUEtUG9wdWxhdGlvbi1SZXN0cmljdC9ub3JtYWwvVU1BLVBzZXVkby1NZXRyaWNzLUVmZmVjdC1JbmplY3Rpb24tMjUtUGVyY2VudC9Db250cm9sXzA5XzIwMjQxMTA1LypVTUEtVW5pZm9ybWl0eS1UcmlhbC0wLjUtUGVyY2VudC0xL2dyb3VwXzgyLypVTUEtVW5pZm9ybWl0eS1UcmlhbC0wLjUtUGVyY2VudC0yL2dyb3VwXzE4OC8qVU1BLVVuaWZvcm1pdHktVHJpYWwtMS1QZXJjZW50L2dyb3VwXzQ3LypVTUEtVW5pZm9ybWl0eS1UcmlhbC0xMC1QZXJjZW50L2dyb3VwXzA0LypVTUEtVW5pZm9ybWl0eS1UcmlhbC0xMC1QZXJjZW50LXNhbml0eS9ncm91cF8wNC8qVU1BLVVuaWZvcm1pdHktVHJpYWwtMTAwLVBlcmNlbnQvZ3JvdXBfMDEvKlVNQS1Vbmlmb3JtaXR5LVRyaWFsLTIwLVBlcmNlbnQvZGVmYXVsdC8qVU1BLVVuaWZvcm1pdHktVHJpYWwtMjAtUGVyY2VudC1TZXNzaW9uL2dyb3VwXzAxLypVTUEtVW5pZm9ybWl0eS1UcmlhbC01LVBlcmNlbnQvZ3JvdXBfMTQvKlVNQS1Vbmlmb3JtaXR5LVRyaWFsLTUwLVBlcmNlbnQvZGVmYXVsdC9Va21TYW1wbGluZ1JhdGUvRG93bnNhbXBsZWRfMjAyMzA5LypVbm9EZXNrdG9wTTBGdWxsL0xhdW5jaGVkLypVbm9Qd2EvRGVmYXVsdC8qVXNlQXN5bmNPc0NyeXB0SW5Mb2dpbkRhdGFiYXNlL0VuYWJsZWRMYXVuY2gvKlVzZUJyb3dzZXJDYWxjdWxhdGVkT3JpZ2luL0VuYWJsZWRMYXVuY2gvKlVzZU5ld0VuY3J5cHRpb25LZXlGb3JXZWJEYXRhL0xhdW5jaC8qVXNlUnVzdEpzb25QYXJzZXJJbkN1cnJlbnRTZXF1ZW5jZS9EZWZhdWx0LypVc2VyRWR1Y2F0aW9uVjJTdHVkeS9FbmFibGVkTGF1bmNoL1VzZXJuYW1lRmlyc3RGbG93V2l0aEludGVybWVkaWF0ZVZhbHVlc1ByZWRpY3Rpb25zL0VuYWJsZWRMYXVuY2gvKlY4Q29tcGlsZUhpbnRzL0NvbXBpbGVIaW50c19MYXVuY2hlZF9WOC8qVjhFeHRlcm5hbE1lbW9yeUFjY291bnRlZEluR2xvYmFsTGltaXQvQ29udHJvbF81MC8qVjhHQ1NwZWVkVXNlc0NvdW50ZXJzL0RlZmF1bHQvKlY4U2NhdmVuZ2VySGlnaGVyQ2FwYWNpdHkvVjhTY2F2ZW5nZXJNYXhDYXBhY2l0eTMyTUIvKlY4U2VwYXJhdGVHQ1BoYXNlcy9EZWZhdWx0LypWOFVwZGF0ZUxpbWl0QWZ0ZXJMb2FkaW5nL0RlZmF1bHQvV2ViQ29udGVudHNEaXNjYXJkL0RlZmF1bHQvV2ViUlRDLUJ3ZS1Qcm9iaW5nQ29uZmlndXJhdGlvbi9Db250cm9sLF8yMDI0MTAwMy8qV2ViUlRDLVFDTS1EeW5hbWljLVZQOC9fRGVmYXVsdC9XZWJSdGNFbmNvZGVkVHJhbnNmb3JtRGlyZWN0Q2FsbGJhY2svRGVmYXVsdC8qV2luU2JveFBhcmFsbGVsUHJvY2Vzc0xhdW5jaC9FbmFibGVkTGF1bmNoLypXaW5TeXN0ZW1Mb2NhdGlvblBlcm1pc3Npb24vRGVmYXVsdCIgLS1mb3JjZS1maWVsZHRyaWFsLXBhcmFtcz0iQXV0b2ZpbGxFbmFibGVFbWFpbEhldXJpc3RpY09ubHlBZGRyZXNzRm9ybXMuRW5hYmxlZF9BdXRvY29tcGxldGVBbGw6YXV0b2NvbXBsZXRlX2VtYWlsL2ZhbHNlLEF1dG9maWxsVXBsb2FkQ2FyZFJlcXVlc3RUaW1lb3V0LkVuYWJsZWRfNnBvaW50NXNlY29uZHM6YXV0b2ZpbGxfdXBsb2FkX2NhcmRfcmVxdWVzdF90aW1lb3V0X21pbGxpc2Vjb25kcy82NTAwLEF1dG9maWxsVXBzdHJlYW1VcGRhdGVkVWkuTGF1bmNoZWRfU2VjdXJpdHk6YXV0b2ZpbGxfdXBzdHJlYW1fdXBkYXRlZF91aV90cmVhdG1lbnQvMSxBdXRvZmlsbFZjbkVucm9sbFJlcXVlc3RUaW1lb3V0LkVuYWJsZWRfNnBvaW50NXNlY29uZHM6YXV0b2ZpbGxfdmNuX2Vucm9sbF9yZXF1ZXN0X3RpbWVvdXRfbWlsbGlzZWNvbmRzLzY1MDAsQm9vc3RSZW5kZXJQcm9jZXNzRm9yTG9hZGluZy5Cb29zdEJyb3dzZXJJbml0aWF0ZWRQcmVyZW5kZXJpbmdGb3JTUlBfMjAyNTAxMDg6cHJpb3JpdGl6ZV9wcmVyZW5kZXJpbmcvZmFsc2UvcHJpb3JpdGl6ZV9wcmVyZW5kZXJpbmdfb25seS90cnVlL3ByaW9yaXRpemVfcmVuZGVyZXJfaW5pdGlhdGVkL2ZhbHNlL3RhcmdldF91cmxzLyU1QiUyMmh0dHBzJTNBJTJGJTJGd3d3JTJFZ29vZ2xlJTJFY29tJTJGc2VhcmNoJTIyJTVELENocm9tZUFQSUtleS5FbmFibGVkOmFwaV9rZXkvQUl6YVN5QTJLbHdCWDNta0ZvMzBvbTlMVUZZUWhwcUxvYV9CTmhFLENocm9tbmllbnRJbWFnZUNvbnRleHRNZW51QWN0aW9ucy5MYXVuY2hlZDplbmFibGUtY29weS1hcy1pbWFnZS90cnVlL2VuYWJsZS1zYXZlLWFzLWltYWdlL2ZhbHNlL3RleHQtcmVjZWl2ZWQtdGltZW91dC8yMDAwLENvb2tpZURlcHJlY2F0aW9uRmFjaWxpdGF0ZWRUZXN0aW5nQ29va2llRGVwcmVjYXRpb24uQ29udHJvbE9uZV8zXzIwMjQwMjA3OmRlY2lzaW9uX2RlbGF5X3RpbWUvMXMvZGlzYWJsZV8zcF9jb29raWVzL2ZhbHNlL2Rpc2FibGVfYWRzX2FwaXMvZmFsc2UvZW5hYmxlX290cl9wcm9maWxlcy9mYWxzZS9lbmFibGVfc2lsZW50X29uYm9hcmRpbmcvdHJ1ZS9sYWJlbC9jb250cm9sXzElMkUzL25lZWRfb25ib2FyZGluZ19mb3JfbGFiZWwvdHJ1ZS9uZWVkX29uYm9hcmRpbmdfZm9yX3N5bnRoZXRpY190cmlhbC90cnVlL3VzZV9wcm9maWxlX2ZpbHRlcmluZy9mYWxzZS92ZXJzaW9uLzIsRGVmYXVsdEJyb3dzZXJQcm9tcHRSZWZyZXNoTGF1bmNoLlYyRW5hYmxlZDNWMl9MYXVuY2hfMjAyNDA3MDI6Z3JvdXBfbmFtZS9lbmFibGVkLXYyLWFybS0zL21heF9wcm9tcHRfY291bnQvNS9yZXByb21wdF9kdXJhdGlvbi8yMWQvcmVwcm9tcHRfZHVyYXRpb25fbXVsdGlwbGllci8xL3Nob3dfYXBwX21lbnVfY2hpcC9mYWxzZS9zaG93X2FwcF9tZW51X2l0ZW0vdHJ1ZS9zaG93X2luZm9fYmFyL3RydWUvdXBkYXRlZF9pbmZvX2Jhcl9jb3B5L2ZhbHNlLERlZmVyUmVuZGVyZXJUYXNrc0FmdGVySW5wdXQuRW5hYmxlZF9NaW5pbWFsVHlwZXNfMjAyNDEyMDQ6cG9saWN5L21pbmltYWwtdHlwZXMsRGVza3RvcFJlRW5nYWdlbWVudC5FbmFibGVkXzIwMjQxMTE4Om1heF9hY3RpdmVfZGF5cy8wL21heF9hY3RpdmVfd2Vla3MvMC9tYXhfbW9udGhseV9hY3RpdmVfZGF5cy8yLERldlRvb2xzRnJlZXN0eWxlci5FbmFibGVkTGF1bmNoOmFpZGFfdGVtcGVyYXR1cmUvMCxFeHBpcmVkSGlzdG9ncmFtcy5FeHBpcnlFbmFibGVkV2l0aEFsbG93bGlzdDphbGxvd2xpc3QvLElnbm9yZUR1cGxpY2F0ZU5hdnMuRW5hYmxlZF90aHJlc2hvbGRfMnNfMjAyNDEwMzE6ZHVwbGljYXRlX25hdl90aHJlc2hvbGQvMnMsTENQUExhenlMb2FkSW1hZ2VQcmVsb2FkLkVuYWJsZVdpdGhOYXRpdmVMYXp5TG9hZGluZzpsY3BwX3ByZWxvYWRfbGF6eV9sb2FkX2ltYWdlX3R5cGUvbmF0aXZlX2xhenlfbG9hZGluZyxMQ1BQTXVsdGlwbGVLZXkuRW5hYmxlZEtleVN0YXRfMjAyNTAxMDc6bGNwcF9tYXhfaG9zdHNfdG9fdHJhY2svMTAwL2xjcHBfbXVsdGlwbGVfa2V5X2hpc3RvZ3JhbV9zbGlkaW5nX3dpbmRvd19zaXplLzEwMDAvbGNwcF9tdWx0aXBsZV9rZXlfbWF4X2hpc3RvZ3JhbV9idWNrZXRzLzEwL2xjcHBfbXVsdGlwbGVfa2V5X21heF9wYXRoX2xlbmd0aC8xNS9sY3BwX211bHRpcGxlX2tleV90eXBlL2xjcHBfa2V5X3N0YXQsTWV0cmljc0FuZENyYXNoU2FtcGxpbmcuUmVwb3J0aW5nRnVsbDpkaXNhYmxlX2NyYXNoZXMvdHJ1ZS9zYW1wbGluZ19yYXRlX3Blcl9taWxsZS85MDAsT21uaWJveE9uRGV2aWNlSGVhZE1vZGVsUmV0cmlldmFsSW1wcm92ZW1lbnRMYXVuY2hEZXNrdG9wLkRlc2t0b3BfRW5hYmxlZF8xMDBwY3Q6U2VsZWN0aW9uRml4L3RydWUsT25lVGltZVBlcm1pc3Npb24uRW5hYmxlZFdpdGhBbGxvd1doaWxlVmlzaXRpbmdBc0ZpcnN0QnV0dG9uXzIwMjQxMDMxTGF1bmNoOnNob3dfYWxsb3dfYWx3YXlzX2FzX2ZpcnN0X2J1dHRvbi90cnVlL3VzZV9zdHJvbmdlcl9wcm9tcHRfbGFuZ3VhZ2UvdHJ1ZS91c2Vfd2hpbGVfdmlzaXRpbmdfbGFuZ3VhZ2UvdHJ1ZSxQZXJmQ29tYmluZWQyMDI0LkVuYWJsZWRfTGF1bmNoZWQ6Y29tbWl0X2ludGVydmFsLzEwbSxQZXJmb3JtYW5jZUludGVydmVudGlvblVJTGF1bmNoLkVuYWJsZWRTdHJpbmcxOmludGVydmVudGlvbl9kaWFsb2dfdmVyc2lvbi8xLFByZXJlbmRlcjJCb29rbWFya0JhclRyaWdnZXJWMi5Nb3VzZURvd25BbmRNb3VzZUhvdmVyMzAwbXNfMjAyNDEyMDQ6cHJlcmVuZGVyX2Jvb2ttYXJrYmFyX29uX21vdXNlX2hvdmVyX3RyaWdnZXIvdHJ1ZS9wcmVyZW5kZXJfYm9va21hcmtiYXJfb25fbW91c2VfcHJlc3NlZF90cmlnZ2VyL3RydWUvcHJlcmVuZGVyX3N0YXJ0X2RlbGF5X29uX21vdXNlX2hvdmVyX21zLzMwMCxQcml2YWN5U2FuZGJveEFkc0FQSXMuRW5hYmxlZF9Ob3RpY2VfR0FfQ3Jvc3NBcHBXZWJBcmFfU3RhYmxlXzIwMjQwNDI0OktBbm9ueW1pdHlTZXJ2aWNlQXV0aFNlcnZlci9odHRwcyUzQSUyRiUyRmNocm9tZWthbm9ueW1pdHlhdXRoLXBhJTJFZ29vZ2xlYXBpcyUyRWNvbSUyRi9LQW5vbnltaXR5U2VydmljZUpvaW5JbnRlcnZhbC8yNGgvS0Fub255bWl0eVNlcnZpY2VKb2luUmVsYXlTZXJ2ZXIvaHR0cHMlM0ElMkYlMkZnb29nbGUtb2h0dHAtcmVsYXktam9pbiUyRWZhc3RseS1lZGdlJTJFY29tJTJGL0tBbm9ueW1pdHlTZXJ2aWNlSm9pblNlcnZlci9odHRwcyUzQSUyRiUyRmNocm9tZWthbm9ueW1pdHktcGElMkVnb29nbGVhcGlzJTJFY29tJTJGL0tBbm9ueW1pdHlTZXJ2aWNlUXVlcnlJbnRlcnZhbC8yNGgvS0Fub255bWl0eVNlcnZpY2VRdWVyeVJlbGF5U2VydmVyL2h0dHBzJTNBJTJGJTJGZ29vZ2xlLW9odHRwLXJlbGF5LXF1ZXJ5JTJFZmFzdGx5LWVkZ2UlMkVjb20lMkYvS0Fub255bWl0eVNlcnZpY2VRdWVyeVNlcnZlci9odHRwcyUzQSUyRiUyRmNocm9tZWthbm9ueW1pdHlxdWVyeS1wYSUyRWdvb2dsZWFwaXMlMkVjb20lMkYvVHJ1c3RUb2tlbk9wZXJhdGlvbnNSZXF1aXJpbmdPcmlnaW5UcmlhbC9hbGwtb3BlcmF0aW9ucy1yZXF1aXJlLW9yaWdpbi10cmlhbC9hZ2dyZWdhdGVfcmVwb3J0X2RlbGF5X3NwYW4vMTBtL2FnZ3JlZ2F0ZV9yZXBvcnRfbWluX2RlbGF5LzBtL2ltcGxlbWVudGF0aW9uX3R5cGUvbXBhcmNoLFFVSUMuU2VydmVyUHJlZmVycmVkQWRkcmVzc1ZhbmlsbGFOb3YyMDI0OmNoYW5uZWwvRi9jb25uZWN0aW9uX29wdGlvbnMvU1BBRC9lcG9jaC8zMDAwMDAwMC9yZXRyYW5zbWl0dGFibGVfb25fd2lyZV90aW1lb3V0X21pbGxpc2Vjb25kcy8yMDAsUmVhY3RpdmVQcmVmZXRjaERlc2t0b3AuRW5hYmxlZFdpdGhQcmVjb25uZWN0TGF1bmNoOnVzZV9wcmVkaWN0aW9ucy90cnVlLFJlbmRlckRvY3VtZW50V2l0aE5hdmlnYXRpb25RdWV1ZWluZy5EZWZhdWx0XzIwMjQxMTIwOmxldmVsL3N1YmZyYW1lL3F1ZXVlaW5nX2xldmVsL2Z1bGwsU2VjdXJlVGltZUNlcnRpZmljYXRlVmVyaWZpY2F0aW9uLkVuYWJsZWRMYXVuY2g6RmV0Y2hCZWhhdmlvci9iYWNrZ3JvdW5kLWFuZC1vbi1kZW1hbmQsVGhyZWFkZWRTY3JvbGxQcmV2ZW50UmVuZGVyaW5nU3RhcnZhdGlvbi5FbmFibGVkXzEwMG1zXzIwMjUwMTA5OnRocmVzaG9sZF9tcy8xMDAsVUtNLkVuYWJsZWRfMjAxODAzMTQ6V2hpdGVsaXN0RW50cmllcy9BYm91dFRoaXNTaXRlU3RhdHVzJTJDQWJ1c2l2ZUV4cGVyaWVuY2VIZXVyaXN0aWMlMkNBYnVzaXZlRXhwZXJpZW5jZUhldXJpc3RpYyUyRUphdmFTY3JpcHREaWFsb2clMkNBYnVzaXZlRXhwZXJpZW5jZUhldXJpc3RpYyUyRVRhYlVuZGVyJTJDQWJ1c2l2ZUV4cGVyaWVuY2VIZXVyaXN0aWMlMkVXaW5kb3dPcGVuJTJDQWNjZXNzaWJpbGl0eSUyRUltYWdlRGVzY3JpcHRpb25zJTJDQWNjZXNzaWJpbGl0eSUyRVJlbmRlcmVyJTJDQWNjdXJhY3lUaXBEaWFsb2clMkNBY2N1cmFjeVRpcFN0YXR1cyUyQ0FkRnJhbWVMb2FkJTJDQWRQYWdlTG9hZCUyQ0Fkc0ludGVydmVudGlvbiUyRUxhc3RJbnRlcnZlbnRpb24lMkNBbXBQYWdlTG9hZCUyQ0FuZHJvaWQlMkVEYXJrVGhlbWUlMkVBdXRvRGFya01vZGUlMkNBbmRyb2lkJTJFTXVsdGlXaW5kb3dDaGFuZ2VBY3Rpdml0eSUyQ0FuZHJvaWQlMkVNdWx0aVdpbmRvd1N0YXRlJTJDQW5kcm9pZCUyRVNjcmVlblJvdGF0aW9uJTJDQW5kcm9pZCUyRVVzZXJSZXF1ZXN0ZWRVc2VyQWdlbnRDaGFuZ2UlMkNBcHBMaXN0QXBwQ2xpY2tEYXRhJTJDQXBwTGlzdEFwcExhdW5jaCUyQ0FwcExpc3ROb25BcHBJbXByZXNzaW9uJTJDQXV0b2ZpbGwlMkVDYXJkVXBsb2FkRGVjaXNpb24lMkNBdXRvZmlsbCUyRURldmVsb3BlckVuZ2FnZW1lbnQlMkNBdXRvZmlsbCUyRUVkaXRlZEF1dG9maWxsZWRGaWVsZEF0U3VibWlzc2lvbiUyQ0F1dG9maWxsJTJFRmllbGRGaWxsU3RhdHVzJTJDQXV0b2ZpbGwlMkVGaWVsZFR5cGVWYWxpZGF0aW9uJTJDQXV0b2ZpbGwlMkVGb3JtRXZlbnQlMkNBdXRvZmlsbCUyRUZvcm1GaWxsU3VjY2Vzc0lPUyUyQ0F1dG9maWxsJTJFRm9ybVN1Ym1pdHRlZCUyQ0F1dG9maWxsJTJFSGlkZGVuUmVwcmVzZW50YXRpb25hbEZpZWxkU2tpcERlY2lzaW9uJTJDQXV0b2ZpbGwlMkVJbnRlcmFjdGVkV2l0aEZvcm0lMkNBdXRvZmlsbCUyRVJlcGVhdGVkU2VydmVyVHlwZVByZWRpY3Rpb25SYXRpb25hbGl6ZWQlMkNBdXRvZmlsbCUyRVNlbGVjdGVkTWFza2VkU2VydmVyQ2FyZCUyQ0F1dG9maWxsJTJFU3VnZ2VzdGlvbkZpbGxlZCUyQ0F1dG9maWxsJTJFU3VnZ2VzdGlvbnNTaG93biUyQ0F1dG9maWxsJTJFVGV4dEZpZWxkRGlkQ2hhbmdlJTJDQXV0b2ZpbGxBc3Npc3RhbnQlMkVJbkNocm9tZVRyaWdnZXJpbmclMkNBdXRvZmlsbEFzc2lzdGFudCUyRUxpdGVTY3JpcHRGaW5pc2hlZCUyQ0F1dG9maWxsQXNzaXN0YW50JTJFTGl0ZVNjcmlwdE9uYm9hcmRpbmclMkNBdXRvZmlsbEFzc2lzdGFudCUyRUxpdGVTY3JpcHRTaG93blRvVXNlciUyQ0F1dG9maWxsQXNzaXN0YW50JTJFTGl0ZVNjcmlwdFN0YXJ0ZWQlMkNBdXRvZmlsbEFzc2lzdGFudCUyRVRpbWluZyUyQ0JhY2tGb3J3YXJkQ2FjaGVEaXNhYmxlZEZvclJlbmRlckZyYW1lSG9zdFJlYXNvbiUyQ0JhY2tGb3J3YXJkQ2FjaGVEaXNhbGxvd0FjdGl2YXRpb25SZWFzb24lMkNCYWNrZ3JvdW5kRmV0Y2glMkNCYWNrZ3JvdW5kRmV0Y2hEZWxldGluZ1JlZ2lzdHJhdGlvbiUyQ0JhY2tncm91bmRTeW5jQ29tcGxldGVkJTJDQmFja2dyb3VuZFN5bmNSZWdpc3RlcmVkJTJDQmFkZ2luZyUyQ0JsaW5rJTJFQ29udGV4dE1lbnUlMkVJbWFnZVNlbGVjdGlvbiUyQ0JsaW5rJTJFRmluZEluUGFnZSUyQ0JsaW5rJTJFSFRNTFBhcnNpbmclMkNCbGluayUyRVBhZ2VMb2FkJTJDQmxpbmslMkVQYWludFRpbWluZyUyQ0JsaW5rJTJFU2NyaXB0JTJFQXN5bmNTY3JpcHRzJTJDQmxpbmslMkVVcGRhdGVUaW1lJTJDQmxpbmslMkVVc2VDb3VudGVyJTJDQmxvYXRlZFJlbmRlcmVyJTJDQ2hyb21lT1NBcHAlMkVJbnN0YWxsZWRBcHAlMkNDaHJvbWVPU0FwcCUyRUxhdW5jaCUyQ0Nocm9tZU9TQXBwJTJFVW5pbnN0YWxsQXBwJTJDQ2hyb21lT1NBcHAlMkVVc2FnZVRpbWUlMkNDbGlja0lucHV0JTJDQ2xpZW50UmVuZGVyaW5nQVBJJTJDQ29tcG9zaXRvciUyRVJlbmRlcmluZyUyQ0NvbXBvc2l0b3IlMkVVc2VySW50ZXJhY3Rpb24lMkNDb250YWN0c1BpY2tlciUyRVNoYXJlU3RhdGlzdGljcyUyQ0NvbnRlbnRJbmRleCUyRUFkZGVkJTJDQ29udGVudEluZGV4JTJFRGVsZXRlZEJ5VXNlciUyQ0NvbnRlbnRJbmRleCUyRU9wZW5lZCUyQ0NvbnRleHRNZW51QW5kcm9pZCUyRVNlbGVjdGVkJTJDQ29udGV4dE1lbnVBbmRyb2lkJTJFU2hvd24lMkNDb250ZXh0dWFsU2VhcmNoJTJDQ29udGV4dHVhbFN1Z2dlc3Rpb25zJTJDQ1BVVXNhZ2VNZWFzdXJlbWVudCUyQ0Nyb3NzT3JpZ2luU3ViZnJhbWVXaXRob3V0RW1iZWRkaW5nQ29udHJvbCUyQ0RhdGFSZWR1Y3Rpb25Qcm94eSUyQ0RldGFjaGVkV2luZG93cyUyRUV4cGVyaW1lbnRhbCUyQ0RvY3VtZW50JTJFT3V0bGl2ZVRpbWVBZnRlclNodXRkb3duJTJDRG9jdW1lbnRDcmVhdGVkJTJDRG93bmxvYWQlMkVDb21wbGV0ZWQlMkNEb3dubG9hZCUyRUludGVycnVwdGVkJTJDRG93bmxvYWQlMkVSZXN1bWVkJTJDRG93bmxvYWQlMkVTdGFydGVkJTJDRXZlbnQlMkVTY3JvbGxCZWdpbiUyRVRvdWNoJTJDRXZlbnQlMkVTY3JvbGxCZWdpbiUyRVdoZWVsJTJDRXZlbnQlMkVTY3JvbGxVcGRhdGUlMkVUb3VjaCUyQ0V2ZW50JTJFU2Nyb2xsVXBkYXRlJTJFV2hlZWwlMkNFeHRlbnNpb25zJTJFQ3Jvc3NPcmlnaW5GZXRjaEZyb21Db250ZW50U2NyaXB0MyUyQ0V4dGVuc2lvbnMlMkVXZWJSZXF1ZXN0JTJFS2VlcGFsaXZlUmVxdWVzdEZpbmlzaGVkJTJDRmlsZVN5c3RlbUFQSSUyRVdlYlJlcXVlc3QlMkNGbG9jUGFnZUxvYWQlMkNGb250TWF0Y2hBdHRlbXB0cyUyQ0dlbmVyYXRlZE5hdmlnYXRpb24lMkNHb29nbGVEb2NzT2ZmbGluZUV4dGVuc2lvbiUyQ0dyYXBoaWNzJTJFU21vb3RobmVzcyUyRUV2ZW50TGF0ZW5jeSUyQ0dyYXBoaWNzJTJFU21vb3RobmVzcyUyRUxhdGVuY3klMkNHcmFwaGljcyUyRVNtb290aG5lc3MlMkVOb3JtYWxpemVkUGVyY2VudERyb3BwZWRGcmFtZXMlMkNHcmFwaGljcyUyRVNtb290aG5lc3MlMkVQZXJjZW50RHJvcHBlZEZyYW1lcyUyQ0dyYXBoaWNzJTJFU21vb3RobmVzcyUyRVRocm91Z2hwdXQlMkNIaXN0b3J5Q2x1c3RlcnMlMkNIaXN0b3J5TWFuaXB1bGF0aW9uSW50ZXJ2ZW50aW9uJTJDSGlzdG9yeU5hdmlnYXRpb24lMkNJZGVudGlmaWFiaWxpdHklMkNJbnB1dEV2ZW50JTJDSW5wdXRNZXRob2QlMkVBc3Npc3RpdmUlMkVNYXRjaCUyQ0lucHV0TWV0aG9kJTJFTm9uQ29tcGxpYW50QXBpJTJDSW5zdGFsbGVkUmVsYXRlZEFwcHMlMkNJbnRlcnZlbnRpb24lMkVEb2N1bWVudFdyaXRlJTJFU2NyaXB0QmxvY2slMkNJT1MlMkVGaW5kSW5QYWdlU2VhcmNoTWF0Y2hlcyUyQ0lPUyUyRUlzRGVmYXVsdEJyb3dzZXIlMkNJT1MlMkVQYWdlQWRkZWRUb1JlYWRpbmdMaXN0JTJDSU9TJTJFUGFnZVJlYWRhYmlsaXR5JTJDSU9TJTJFUGFnZVpvb21DaGFuZ2VkJTJDSU9TJTJFUmVuZGVyZXJHb25lJTJDSU9TJTJFVVJMTWlzbWF0Y2hJbkxlZ2FjeUFuZFNsaW1OYXZpZ2F0aW9uTWFuYWdlciUyQ0phdmFzY3JpcHRGcmFtZXdvcmtQYWdlTG9hZCUyQ0xheW91dCUyRURpc3BsYXlDdXRvdXQlMkVTdGF0ZUNoYW5nZWQlMkNMaXRlVmlkZW8lMkNMb2FkQ291bnRzUGVyVG9wTGV2ZWxEb2N1bWVudCUyQ0xvYWRpbmdQcmVkaWN0b3IlMkNMb2NhbE5ldHdvcmtSZXF1ZXN0cyUyQ0xvZ2luRGV0ZWN0aW9uJTJDTG9va2FsaWtlVXJsJTJFTmF2aWdhdGlvblN1Z2dlc3Rpb24lMkNNYWluRnJhbWVEb3dubG9hZCUyQ01haW5GcmFtZU5hdmlnYXRpb24lMkNNZWRpYSUyRUF1dG9wbGF5JTJFQXR0ZW1wdCUyQ01lZGlhJTJFQXV0b3BsYXklMkVBdWRpb0NvbnRleHQlMkNNZWRpYSUyRUF1dG9wbGF5JTJFTXV0ZWQlMkVVbm11dGVBY3Rpb24lMkNNZWRpYSUyRUJhc2ljUGxheWJhY2slMkNNZWRpYSUyRUVNRSUyRUFwaVByb21pc2VSZWplY3Rpb24lMkNNZWRpYSUyRUVNRSUyRUNyZWF0ZU1lZGlhS2V5cyUyQ01lZGlhJTJFRU1FJTJFUmVxdWVzdE1lZGlhS2V5U3lzdGVtQWNjZXNzJTJDTWVkaWElMkVFbmdhZ2VtZW50JTJFU2Vzc2lvbkZpbmlzaGVkJTJDTWVkaWElMkVFbmdhZ2VtZW50JTJFU2hvcnRQbGF5YmFja0lnbm9yZWQlMkNNZWRpYSUyRUZlZWQlMkVEaXNjb3ZlciUyQ01lZGlhJTJFR2xvYmFsTWVkaWFDb250cm9scyUyRUFjdGlvbkJ1dHRvblByZXNzZWQlMkNNZWRpYSUyRUthbGVpZG9zY29wZSUyRU5hdmlnYXRpb24lMkNNZWRpYSUyRUxlYXJuaW5nJTJFUHJlZGljdGlvblJlY29yZCUyQ01lZGlhJTJFU2l0ZU11dGVkJTJDTWVkaWElMkVWaWRlb0RlY29kZVBlcmZSZWNvcmQlMkNNZWRpYSUyRVdhdGNoVGltZSUyQ01lZGlhJTJFV2ViQXVkaW8lMkVBdWRpb0NvbnRleHQlMkVBdWRpYmxlVGltZSUyQ01lZGlhJTJFV2ViTWVkaWFQbGF5ZXJTdGF0ZSUyQ01lZGlhUm91dGVyJTJFQ2FzdFdlYlNlbmRlckV4dGVuc2lvbkxvYWRVcmwlMkNNZWRpYVJvdXRlciUyRVNpdGVJbml0aWF0ZWRNaXJyb3JpbmdTdGFydGVkJTJDTWVkaWFSb3V0ZXIlMkVUYWJNaXJyb3JpbmdTdGFydGVkJTJDTWVtb3J5JTJFRXhwZXJpbWVudGFsJTJDTWVtb3J5JTJFVGFiRm9vdHByaW50JTJDTWl4ZWRDb250ZW50QXV0b3VwZ3JhZGUlMkVSZXNvdXJjZVJlcXVlc3QlMkNNb2JpbGVGcmllbmRsaW5lc3MlMkNNb2JpbGVNZW51JTJFRGlyZWN0U2hhcmUlMkNNb2JpbGVNZW51JTJFRmluZEluUGFnZSUyQ01vYmlsZU1lbnUlMkVTaGFyZSUyQ05hdmlnYXRpb25QcmVkaWN0b3JBbmNob3JFbGVtZW50TWV0cmljcyUyQ05hdmlnYXRpb25QcmVkaWN0b3JQYWdlTGlua0NsaWNrJTJDTmF2aWdhdGlvblByZWRpY3RvclBhZ2VMaW5rTWV0cmljcyUyQ05hdmlnYXRpb25QcmVkaWN0b3JSZW5kZXJlcldhcm11cCUyQ05hdmlnYXRpb25UaW1pbmclMkNOZXQlMkVMZWdhY3lUTFNWZXJzaW9uJTJDTm9TdGF0ZVByZWZldGNoJTJDTm90aWZpY2F0aW9uJTJDT2ZmbGluZU1lYXN1cmVtZW50cyUyQ09mZmxpbmVQYWdlcyUyRVNhdmVQYWdlUmVxdWVzdGVkJTJDT21uaWJveFNlY3VyaXR5SW5kaWNhdG9yJTJFRm9ybVN1Ym1pc3Npb24lMkNPcHRpbWl6YXRpb25HdWlkZSUyQ09wdGltaXphdGlvbkd1aWRlQXV0b3R1bmluZyUyQ1BhZ2VDb250ZW50QW5ub3RhdGlvbnMlMkNQYWdlRG9tYWluSW5mbyUyQ1BhZ2VGb3JlZ3JvdW5kU2Vzc2lvbiUyQ1BhZ2VJbmZvQnViYmxlJTJDUGFnZUxvYWQlMkNQYWdlTG9hZCUyRUZyb21Hb29nbGVTZWFyY2glMkNQYWdlTG9hZCUyRUludGVybmFsJTJDUGFnZUxvYWQlMkVTZXJ2aWNlV29ya2VyQ29udHJvbGxlZCUyQ1BhZ2VMb2FkJTJFU2lnbmVkRXhjaGFuZ2UlMkNQYWdlTG9hZENhcHBpbmclMkNQYWdlV2l0aFBhc3N3b3JkJTJDUGFpbnRQcmV2aWV3Q2FwdHVyZSUyQ1Bhc3N3b3JkRm9ybSUyQ1Bhc3N3b3JkTWFuYWdlciUyRVdlbGxLbm93bkNoYW5nZVBhc3N3b3JkUmVzdWx0JTJDUGF5bWVudEFwcCUyRUNoZWNrb3V0RXZlbnRzJTJDUGF5bWVudFJlcXVlc3QlMkVDaGVja291dEV2ZW50cyUyQ1BheW1lbnRSZXF1ZXN0JTJFVHJhbnNhY3Rpb25BbW91bnQlMkNQZXBwZXIlMkVCcm9rZXIlMkNQZXJmZWN0SGV1cmlzdGljcyUyQ1BlcmZvcm1hbmNlQVBJJTJFTG9uZ1Rhc2slMkNQZXJmb3JtYW5jZUFQSSUyRU1lbW9yeSUyQ1BlcmZvcm1hbmNlQVBJJTJFTWVtb3J5JTJFTGVnYWN5JTJDUGVyaW9kaWNCYWNrZ3JvdW5kU3luY0V2ZW50Q29tcGxldGVkJTJDUGVyaW9kaWNCYWNrZ3JvdW5kU3luY1JlZ2lzdGVyZWQlMkNQZXJtaXNzaW9uJTJDUGVybWlzc2lvblVzYWdlJTJDUGx1Z2lucyUyRUZsYXNoSW5zdGFuY2UlMkNQb3B1cCUyRUNsb3NlZCUyQ1BvcHVwJTJFUGFnZSUyQ1BvcnRhbCUyRUFjdGl2YXRlJTJDUG9zdE1lc3NhZ2UlMkVJbmNvbWluZyUyRUZyYW1lJTJDUG9zdE1lc3NhZ2UlMkVJbmNvbWluZyUyRVBhZ2UlMkNQb3dlclVzYWdlU2NlbmFyaW9zSW50ZXJ2YWxEYXRhJTJDUHJlZmV0Y2hQcm94eSUyQ1ByZWZldGNoUHJveHklMkVBZnRlclNSUENsaWNrJTJDUHJlZmV0Y2hQcm94eSUyRVByZWZldGNoZWRSZXNvdXJjZSUyQ1ByZXJlbmRlclBhZ2VMb2FkJTJDUHJldmlld3MlMkNQcmV2aWV3c0NvaW5GbGlwJTJDUHJldmlld3NEZWZlckFsbFNjcmlwdCUyQ1ByZXZpZXdzUmVzb3VyY2VMb2FkaW5nSGludHMlMkNQdWJsaWNJbWFnZUNvbXByZXNzaW9uRGF0YVVzZSUyQ1B1YmxpY0ltYWdlQ29tcHJlc3Npb25JbWFnZUxvYWQlMkNQV0ElMkVWaXNpdCUyQ1JlYWRlck1vZGVBY3RpdmF0ZWQlMkNSZWFkZXJNb2RlUmVjZWl2ZWREaXN0aWxsYWJpbGl0eSUyQ1JlbmRlcmVyU2NoZWR1bGVyVGFzayUyQ1JlbmRlclZpZXdDb250ZXh0TWVudSUyRVVzZWQlMkNSZXNwb25zaXZlbmVzcyUyRVVzZXJJbnRlcmFjdGlvbiUyQ1Jlc3BvbnNpdmVuZXNzTWVhc3VyZW1lbnQlMkNTYW1lU2l0ZURpZmZlcmVudFNjaGVtZVJlcXVlc3QlMkNTYW1lU2l0ZURpZmZlcmVudFNjaGVtZVJlc3BvbnNlJTJDU2NoZW1lZnVsU2FtZVNpdGVDb250ZXh0RG93bmdyYWRlJTJDU2NyZWVuQnJpZ2h0bmVzcyUyQ1NlY3VyaXR5JTJFU2FmZXR5VGlwJTJDU2VjdXJpdHklMkVTaXRlRW5nYWdlbWVudCUyQ1NoYXJlZEhpZ2hsaWdodHMlMkVMaW5rR2VuZXJhdGVkJTJDU2hhcmVkSGlnaGxpZ2h0cyUyRUxpbmtPcGVuZWQlMkNTaGFyaW5nJTJFQ2xpY2tUb0NhbGwlMkNTaG9wcGluZyUyRUNocm9tZUNhcnQlMkNTaG9wcGluZyUyRUZvcm1TdWJtaXR0ZWQlMkNTaG9wcGluZyUyRVdpbGxTZW5kUmVxdWVzdCUyQ1NpdGVJc29sYXRpb24lMkVYU0QlMkVCcm93c2VyJTJFQmxvY2tlZCUyQ1NtYXJ0Q2hhcmdpbmclMkNTTVNSZWNlaXZlciUyQ1NTTCUyRU1peGVkQ29udGVudFNob3duJTJDU1NMJTJFTWl4ZWRDb250ZW50U2hvd24yJTJDU3ViZnJhbWVEb3dubG9hZCUyQ1N1YnJlc291cmNlRmlsdGVyJTJDU3VicmVzb3VyY2VSZWRpcmVjdCUyRVB1YmxpY1NyY1ZpZGVvQ29tcHJlc3Npb24lMkNUYWIlMkVSZW5kZXJlck9PTSUyQ1RhYiUyRVNjcmVlbnNob3QlMkNUYWJNYW5hZ2VyJTJFQmFja2dyb3VuZCUyRUZpcnN0QWxlcnRGaXJlZCUyQ1RhYk1hbmFnZXIlMkVCYWNrZ3JvdW5kJTJFRmlyc3RBdWRpb1N0YXJ0cyUyQ1RhYk1hbmFnZXIlMkVCYWNrZ3JvdW5kJTJFRmlyc3RGYXZpY29uVXBkYXRlZCUyQ1RhYk1hbmFnZXIlMkVCYWNrZ3JvdW5kJTJFRmlyc3ROb25QZXJzaXN0ZW50Tm90aWZpY2F0aW9uQ3JlYXRlZCUyQ1RhYk1hbmFnZXIlMkVCYWNrZ3JvdW5kJTJFRmlyc3RUaXRsZVVwZGF0ZWQlMkNUYWJNYW5hZ2VyJTJFQmFja2dyb3VuZCUyRUZvcmVncm91bmRlZE9yQ2xvc2VkJTJDVGFiTWFuYWdlciUyRUV4cGVyaW1lbnRhbCUyRUJhY2tncm91bmRUYWJPcGVuaW5nJTJFVGFiU3dpdGNoTG9hZFN0b3BwZWQlMkNUYWJNYW5hZ2VyJTJFRXhwZXJpbWVudGFsJTJFU2Vzc2lvblJlc3RvcmUlMkVGb3JlZ3JvdW5kVGFiJTJFUGFnZUxvYWQlMkNUYWJNYW5hZ2VyJTJFRXhwZXJpbWVudGFsJTJFU2Vzc2lvblJlc3RvcmUlMkVUYWJTd2l0Y2hMb2FkU3RvcHBlZCUyQ1RhYk1hbmFnZXIlMkVMaWZlY3ljbGVTdGF0ZUNoYW5nZSUyQ1RhYk1hbmFnZXIlMkVUYWJMaWZldGltZSUyQ1RhYk1hbmFnZXIlMkVUYWJNZXRyaWNzJTJDVGFiTWFuYWdlciUyRVdpbmRvd01ldHJpY3MlMkNUb3VjaFRvRmlsbCUyRVNob3duJTJDVHJhbnNsYXRlJTJDVHJhbnNsYXRlUGFnZUxvYWQlMkNUcnVzdGVkV2ViQWN0aXZpdHklMkVMb2NhdGlvbkRlbGVnYXRpb24lMkNUcnVzdGVkV2ViQWN0aXZpdHklMkVPcGVuJTJDVHJ1c3RlZFdlYkFjdGl2aXR5JTJFUXVhbGl0eUVuZm9yY2VtZW50VmlvbGF0aW9uJTJDVW5sb2FkJTJDVXNlckFjdGl2aXR5JTJDVXNlckFjdGl2aXR5SWQlMkNVc2VyU2V0dGluZ3NFdmVudCUyQ1Y4JTJFV2FzbSUyRU1vZHVsZUNvbXBpbGVkJTJDVjglMkVXYXNtJTJFTW9kdWxlRGVjb2RlZCUyQ1Y4JTJFV2FzbSUyRU1vZHVsZUluc3RhbnRpYXRlZCUyQ1Y4JTJFV2FzbSUyRU1vZHVsZVRpZXJlZFVwJTJDVmlydHVhbEtleWJvYXJkJTJFT3BlbiUyQ1dlYkFQSyUyRUluc3RhbGwlMkNXZWJBUEslMkVTZXNzaW9uRW5kJTJDV2ViQVBLJTJFVW5pbnN0YWxsJTJDV2ViQVBLJTJFVmlzaXQlMkNXZWJBcHAlMkVEYWlseUludGVyYWN0aW9uJTJDV2ViT1RQSW1wYWN0JTJDV2ViUlRDJTJFQWRkcmVzc0hhcnZlc3RpbmclMkNXZWJSVEMlMkVDb21wbGV4U2RwJTJDV29ya2VyJTJFQ2xpZW50QWRkZWQlMkNYUiUyRVBhZ2VTZXNzaW9uJTJDWFIlMkVXZWJYUiUyQ1hSJTJFV2ViWFIlMkVQcmVzZW50YXRpb25TZXNzaW9uJTJDWFIlMkVXZWJYUiUyRVNlc3Npb24lMkNYUiUyRVdlYlhSJTJFU2Vzc2lvblJlcXVlc3QsVWttU2FtcGxpbmdSYXRlLkRvd25zYW1wbGVkXzIwMjMwOTpBYmFuZG9uZWRTUlBOYXZpZ2F0aW9uLzUvQWJ1c2l2ZUV4cGVyaWVuY2VIZXVyaXN0aWMlMkVKYXZhU2NyaXB0RGlhbG9nLzEyL0FkRnJhbWVMb2FkLzkwL0FkUGFnZUxvYWQvMTYvQWRzSW50ZXJlc3RHcm91cCUyRUF1Y3Rpb25MYXRlbmN5JTJFVjIvMy9BZHNJbnRlcnZlbnRpb24lMkVMYXN0SW50ZXJ2ZW50aW9uLzMvQW5kcm9pZCUyRU11bHRpV2luZG93U3RhdGUvMTAvQXV0b2ZpbGwlMkVEZXZlbG9wZXJFbmdhZ2VtZW50LzE2L0F1dG9maWxsJTJFRmllbGRGaWxsU3RhdHVzLzYwL0F1dG9maWxsJTJFRmllbGRUeXBlVmFsaWRhdGlvbi8yMDAvQXV0b2ZpbGwlMkVGb3JtRXZlbnQvMTgvQXV0b2ZpbGwlMkVTZWN0aW9uaW5nLzEyMC9BdXRvZmlsbCUyRVRleHRGaWVsZERpZENoYW5nZS8yL0JsaW5rJTJFRGV2ZWxvcGVyTWV0cmljc1JhcmUvNDUvQmxpbmslMkVGZWRDbS8yL0JsaW5rJTJFRnJhbWVMb2FkZXIvMTIwMC9CbGluayUyRUhUTUxQYXJzaW5nLzQwL0JsaW5rJTJFSmF2YVNjcmlwdEZyYW1ld29yayUyRVZlcnNpb25zLzMvQmxpbmslMkVQYWdlTG9hZC81MC9CbGluayUyRVBhaW50VGltaW5nLzI0MC9CbGluayUyRVVwZGF0ZVRpbWUvOTAvQnJvd3NpbmdUb3BpY3MlMkVEb2N1bWVudEJyb3dzaW5nVG9waWNzQXBpUmVzdWx0Mi85MDAvQnJvd3NpbmdUb3BpY3MlMkVQYWdlTG9hZC8zL0NoYXJnZUV2ZW50SGlzdG9yeS8yL0Nocm9tZU9TQXBwJTJFSW5wdXRFdmVudC9DaHJvbWVPU0FwcC9DaHJvbWVPU0FwcCUyRUluc3RhbGxlZEFwcC9DaHJvbWVPU0FwcC9DaHJvbWVPU0FwcCUyRUxhdW5jaC9DaHJvbWVPU0FwcC9DaHJvbWVPU0FwcCUyRVVuaW5zdGFsbEFwcC9DaHJvbWVPU0FwcC9DaHJvbWVPU0FwcCUyRVVzYWdlVGltZS9DaHJvbWVPU0FwcC9DaHJvbWVPU0FwcCUyRVVzYWdlVGltZVJldXNlZFNvdXJjZUlkL0Nocm9tZU9TQXBwL0NsaWVudEhpbnRzJTJFQWNjZXB0Q0hGcmFtZVVzYWdlLzMzMC9DbGllbnRIaW50cyUyRUFjY2VwdENISGVhZGVyVXNhZ2UvMTAwL0NsaWVudEhpbnRzJTJFRGVsZWdhdGVDSE1ldGFVc2FnZS80L0NsaWVudFJlbmRlcmluZ0FQSS84NTAvQ29tcG9zZSUyRVRleHRFbGVtZW50VXNhZ2UvNC9Db250ZW50TWFuYWdlbWVudFN5c3RlbVBhZ2VMb2FkLzQwL0Nvb2tpZXMlMkVGaXJzdFBhcnR5UGFydGl0aW9uZWRJbkNyb3NzU2l0ZUNvbnRleHRWMy8xMDAwL0Nyb3NzT3JpZ2luU3ViZnJhbWVXaXRob3V0RW1iZWRkaW5nQ29udHJvbC8yMjAvRElQUyUyRUNoYWluQmVnaW4vNi9ESVBTJTJFQ2hhaW5FbmQvMTIvRElQUyUyRU5hdmlnYXRpb25GbG93Tm9kZS80L0RJUFMlMkVSZWRpcmVjdC8yMC9EYWlseUNoYXJnZVN1bW1hcnkvMy9Eb2N1bWVudENyZWF0ZWQvMzAwL0Rvd25sb2FkJTJFQ29tcGxldGVkL0Rvd25sb2FkL0Rvd25sb2FkJTJFSW50ZXJydXB0ZWQvRG93bmxvYWQvRG93bmxvYWQlMkVSZXN1bWVkL0Rvd25sb2FkL0Rvd25sb2FkJTJFU3RhcnRlZC9Eb3dubG9hZC9FdmVudCUyRVNjcm9sbC8zMzAvRXZlbnQlMkVTY3JvbGxKYW5rJTJFUHJlZGljdG9ySmFuay83NTAvRXh0ZW5zaW9ucyUyRU9uTmF2aWdhdGlvbi8xNjAvRXh0ZW5zaW9ucyUyRVdlYlJlcXVlc3QlMkVLZWVwYWxpdmVSZXF1ZXN0RmluaXNoZWQvMjAwL0dlbmVyYXRlZE5hdmlnYXRpb24vNC9Hb29nbGVEb2NzT2ZmbGluZUV4dGVuc2lvbi80MC9HcmFwaGljcyUyRVNtb290aG5lc3MvMzAvR3JhcGhpY3MlMkVTbW9vdGhuZXNzJTJFRXZlbnRMYXRlbmN5L0dyYXBoaWNzJTJFU21vb3RobmVzcy9HcmFwaGljcyUyRVNtb290aG5lc3MlMkVMYXRlbmN5L0dyYXBoaWNzJTJFU21vb3RobmVzcy9HcmFwaGljcyUyRVNtb290aG5lc3MlMkVOb3JtYWxpemVkUGVyY2VudERyb3BwZWRGcmFtZXMvR3JhcGhpY3MlMkVTbW9vdGhuZXNzL0hpc3RvcnlNYW5pcHVsYXRpb25JbnRlcnZlbnRpb24vNi9JbnN0YWxsZWRSZWxhdGVkQXBwcy8xMi9KYXZhc2NyaXB0RnJhbWV3b3JrUGFnZUxvYWQvNDAvTG9hZENvdW50c1BlclRvcExldmVsRG9jdW1lbnQvNTAvTG9hZGluZ1ByZWRpY3Rvci8yNS9Mb2NhbE5ldHdvcmtSZXF1ZXN0cy8yMC9NYWluRnJhbWVOYXZpZ2F0aW9uLzIvTWFpbkZyYW1lTmF2aWdhdGlvbiUyRVpzdGRDb250ZW50RW5jb2RpbmcvNS9NZWRpYS83MC9NZWRpYSUyRUF1dG9wbGF5JTJFQXR0ZW1wdC80MC9NZWRpYSUyRUJhc2ljUGxheWJhY2svTWVkaWEvTWVkaWElMkVFTUUlMkVHZXRTdGF0dXNGb3JQb2xpY3kvMTYvTWVkaWElMkVFTUUlMkVSZXF1ZXN0TWVkaWFLZXlTeXN0ZW1BY2Nlc3MvMy9NZWRpYSUyRVZpZGVvRGVjb2RlUGVyZlJlY29yZC8xNi9NZWRpYSUyRVdlYkF1ZGlvJTJFQXVkaW9Db250ZXh0JTJFQXVkaWJsZVRpbWUvTWVkaWEvTWVkaWElMkVXZWJNZWRpYVBsYXllclN0YXRlL01lZGlhL01lbW9yeSUyRUV4cGVyaW1lbnRhbC8yNDAvTWVtb3J5JTJFVGFiRm9vdHByaW50LzQ1L01peGVkQ29udGVudEF1dG91cGdyYWRlJTJFUmVzb3VyY2VSZXF1ZXN0LzYvTW9iaWxlRnJpZW5kbGluZXNzLzUvTW9iaWxlRnJpZW5kbGluZXNzJTJFVGFwcGVkQmFkVGFyZ2V0cy8zNS9OYXZpZ2F0aW9uJTJFUmVjZWl2ZWRSZXNwb25zZS81MC9OYXZpZ2F0aW9uUHJlZGljdG9yLzI1L05hdmlnYXRpb25QcmVkaWN0b3JBbmNob3JFbGVtZW50TWV0cmljcy9OYXZpZ2F0aW9uUHJlZGljdG9yL05hdmlnYXRpb25QcmVkaWN0b3JQYWdlTGlua0NsaWNrL05hdmlnYXRpb25QcmVkaWN0b3IvTmF2aWdhdGlvblByZWRpY3RvclBhZ2VMaW5rTWV0cmljcy9OYXZpZ2F0aW9uUHJlZGljdG9yL05hdmlnYXRpb25QcmVkaWN0b3JQcmVsb2FkT25Ib3Zlci9OYXZpZ2F0aW9uUHJlZGljdG9yL05hdmlnYXRpb25QcmVkaWN0b3JVc2VySW50ZXJhY3Rpb25zL05hdmlnYXRpb25QcmVkaWN0b3IvTmF2aWdhdGlvblRocm90dGxlRGVmZXJyZWRUaW1lLzEwL05hdmlnYXRpb25UaW1pbmcvMzUvTmV0d29yayUyRURhdGFVcmxzLzIyMC9Ob3RpZmljYXRpb24vNC9PbW5pYm94U2VjdXJpdHlJbmRpY2F0b3IlMkVGb3JtU3VibWlzc2lvbi82L09wZW5lckhldXJpc3RpYyUyRVBvc3RQb3B1cENvb2tpZUFjY2Vzcy8zNS9PcHRpbWl6YXRpb25HdWlkZS8xMjAvUGFnZUNvbnRlbnRBbm5vdGF0aW9uczIvODAvUGFnZURvbWFpbkluZm8vNDAvUGFnZUZvcmVncm91bmRTZXNzaW9uLzcwL1BhZ2VMb2FkSW5pdGlhdG9yRm9yQWRUYWdnaW5nLzQwL1BhaW50UHJldmlld0NhcHR1cmUvMi9QYXJ0aXRpb25lZENvb2tpZVByZXNlbnRWMi84NTAwL1Bhc3N3b3JkTWFuYWdlciUyRUZpcnN0Q0NUUGFnZUxvYWQvMy9QZXJmb3JtYW5jZUFQSSUyRUxvbmdBbmltYXRpb25GcmFtZS8xMzAwL1BlcmZvcm1hbmNlQVBJJTJFTG9uZ1Rhc2svNjAvUGVyZm9ybWFuY2VBUEklMkVNZW1vcnklMkVMZWdhY3kvNjUwL1BlcmZvcm1hbmNlTWFuYWdlciUyRVBhZ2VSZXNvdXJjZVVzYWdlMi8zNjAvUGVybWlzc2lvblVzYWdlLzI1L1BvcHVwLzMvUG9wdXAlMkVDbG9zZWQvUG9wdXAvUG9wdXAlMkVQYWdlL1BvcHVwL1Bvd2VyVXNhZ2VTY2VuYXJpb3NJbnRlcnZhbERhdGEvNDAvUHJlZmV0Y2hQcm94eS8zNS9QcmVmZXRjaFByb3h5JTJFQWZ0ZXJTUlBDbGljay8xMi9QcmVmZXRjaFByb3h5JTJFUHJlZmV0Y2hlZFJlc291cmNlLzUvUHJlbG9hZGluZyUyRUF0dGVtcHQvUHJlbG9hZGluZ0F0dGVtcHQvUHJlbG9hZGluZyUyRUF0dGVtcHQlMkVQcmV2aW91c1ByaW1hcnlQYWdlL1ByZWxvYWRpbmdBdHRlbXB0L1ByZWxvYWRpbmclMkVQcmVkaWN0aW9uLzI0MC9QcmVsb2FkaW5nJTJFUHJlZGljdGlvbiUyRVByZXZpb3VzUHJpbWFyeVBhZ2UvMjcwL1JlZGlyZWN0SGV1cmlzdGljJTJFQ29va2llQWNjZXNzMi82L1JlZGlyZWN0SGV1cmlzdGljJTJFQ29va2llQWNjZXNzVGhpcmRQYXJ0eTIvNi9SZW5kZXJlclNjaGVkdWxlclRhc2svMTUwMC9SZXNwb25zaXZlbmVzcyUyRVVzZXJJbnRlcmFjdGlvbi83MC9TYW1lc2l0ZVJlZGlyZWN0Q29udGV4dERvd25ncmFkZS8xMi9TZWN1cml0eSUyRVNpdGVFbmdhZ2VtZW50LzM1L1NlcnZpY2VXb3JrZXIlMkVNYWluUmVzb3VyY2VMb2FkQ29tcGxldGVkLzE2L1NlcnZpY2VXb3JrZXIlMkVPbkxvYWQvMy9TaG9wcGluZyUyRVdpbGxTZW5kUmVxdWVzdC82MC9TaXRlJTJFSW5zdGFsbC84L1NpdGUlMkVNYW5pZmVzdC84L1NpdGUlMkVRdWFsaXR5LzgvU2l0ZUZhbWlsaWFyaXR5SGV1cmlzdGljUmVzdWx0LzQ1L1NpdGVJbnN0YW5jZS82L1NvZnROYXZpZ2F0aW9uLzEwL1N1YnJlc291cmNlRmlsdGVyLzQ1L1N1YnJlc291cmNlTG9hZCUyRVpzdGRDb250ZW50RW5jb2RpbmcvODUwL1RhYk1hbmFnZXIlMkVUYWJMaWZldGltZS80L1RhYlJldmlzaXRUcmFja2VyJTJFVGFiU3RhdGVDaGFuZ2UvNDUvVGhpcmRQYXJ0eUNvb2tpZXMlMkVCcmVha2FnZUluZGljYXRvciUyRUhUVFBFcnJvci82MC9UcmFuc2xhdGUvNDUvVHJhbnNsYXRlUGFnZUxvYWQvNjAvVW5sb2FkLzM1L1VzZXJQZXJjZWl2ZWRQYWdlVmlzaXQvMTIwL1Y4JTJFV2FzbS8xMC9WOCUyRVdhc20lMkVNb2R1bGVDb21waWxlZC9WOCUyRVdhc20vVjglMkVXYXNtJTJFTW9kdWxlRGVjb2RlZC9WOCUyRVdhc20vVjglMkVXYXNtJTJFTW9kdWxlSW5zdGFudGlhdGVkL1Y4JTJFV2FzbS9XZWJPVFBJbXBhY3QvMTYvV2luZG93UHJveHlVc2FnZS8yNDAwL1hSJTJFV2ViWFIvMi9fZGVmYXVsdF9zYW1wbGluZy8xL193ZWJkeF9mZWF0dXJlc19zYW1wbGluZy8xLFY4U2NhdmVuZ2VySGlnaGVyQ2FwYWNpdHkuVjhTY2F2ZW5nZXJNYXhDYXBhY2l0eTMyTUI6VjhTY2F2ZW5nZXJNYXhDYXBhY2l0eS8zMiIgLS1lbmFibGUtZmVhdHVyZXM9IkFjdGl2ZUNvbnRlbnRTZXR0aW5nRXhwaXJ5PE9uZVRpbWVQZXJtaXNzaW9uLCpBZ2dyZXNzaXZlU2hhZGVyQ2FjaGVMaW1pdHM8QWdncmVzc2l2ZVNoYWRlckNhY2hlTGltaXRzLCpBbGxvd0phdmFTY3JpcHRUb1Jlc2V0QXV0b2ZpbGxTdGF0ZTxBdXRvZmlsbEZpeENhY2hpbmdPbkphdmFTY3JpcHRDaGFuZ2VzLEFsbG93UmVjZW50U2Vzc2lvblRyYWNraW5nPERlc2t0b3BSZUVuZ2FnZW1lbnQsKkFsbG93U2Vuc29yc1RvRW50ZXJCZmNhY2hlPEJhY2tGb3J3YXJkQ2FjaGVTZW5zb3JzLEFsbG93VVJOc0luSWZyYW1lczxQcml2YWN5U2FuZGJveEFkc0FQSXMsKkFwcFNwZWNpZmljTm90aWZpY2F0aW9uczxQV0FJY29uQW5kVGl0bGVJbk5hdGl2ZU5vdGlmaWNhdGlvbnNXaW4sQXR0cmlidXRpb25GZW5jZWRGcmFtZVJlcG9ydGluZ0JlYWNvbjxQcml2YWN5U2FuZGJveEFkc0FQSXMsQXR0cmlidXRpb25SZXBvcnRpbmdDcm9zc0FwcFdlYjxQcml2YWN5U2FuZGJveEFkc0FQSXMsQXV0b2ZpbGxEZWNvdXBsZUF1dG9maWxsQ291bnRGcm9tQ2FjaGU8QXV0b2ZpbGxEZWNvdXBsZUF1dG9maWxsQ291bnRGcm9tQ2FjaGUsKkF1dG9maWxsRGlzYWJsZUxvY2FsQ2FyZE1pZ3JhdGlvbjxBdXRvZmlsbERpc2FibGVMb2NhbENhcmRNaWdyYXRpb24sKkF1dG9maWxsRW5hYmxlQWNjb3VudFN0b3JhZ2VGb3JJbmVsaWdpYmxlQ291bnRyaWVzPEF1dG9maWxsRW5hYmxlQWNjb3VudFN0b3JhZ2VGb3JJbmVsaWdpYmxlQ291bnRyaWVzLEF1dG9maWxsRW5hYmxlQ2FyZEJlbmVmaXRzRm9yQW1lcmljYW5FeHByZXNzPEF1dG9maWxsRW5hYmxlQ2FyZEJlbmVmaXRzRm9yQW1lcmljYW5FeHByZXNzLEF1dG9maWxsRW5hYmxlQ3ZjU3RvcmFnZUFuZEZpbGxpbmc8QXV0b2ZpbGxFbmFibGVDdmNTdG9yYWdlLEF1dG9maWxsRW5hYmxlQ3ZjU3RvcmFnZUFuZEZpbGxpbmdFbmhhbmNlbWVudDxBdXRvZmlsbEVuYWJsZUN2Y1N0b3JhZ2UsQXV0b2ZpbGxFbmFibGVFbWFpbEhldXJpc3RpY09ubHlBZGRyZXNzRm9ybXM8QXV0b2ZpbGxFbmFibGVFbWFpbEhldXJpc3RpY09ubHlBZGRyZXNzRm9ybXMsQXV0b2ZpbGxFbmFibGVGcGFuUmlza0Jhc2VkQXV0aGVudGljYXRpb248QXV0b2ZpbGxFbmFibGVGcGFuUmlza0Jhc2VkQXV0aGVudGljYXRpb24sKkF1dG9maWxsRW5hYmxlU2VydmVySWJhbjxBdXRvZmlsbEVuYWJsZVNlcnZlckliYW4sKkF1dG9maWxsRW5hYmxlU3VwcG9ydEZvclBhcnNpbmdXaXRoU2hhcmVkTGFiZWxzPEF1dG9maWxsRW5hYmxlU3VwcG9ydEZvclBhcnNpbmdXaXRoU2hhcmVkTGFiZWxzLEF1dG9maWxsRW5hYmxlU3VwcG9ydEZvclBob25lTnVtYmVyVHJ1bmtUeXBlczxBdXRvZmlsbFBob25lTnVtYmVyRGV0ZWN0aW9uSW1wcm92ZW1lbnRzLCpBdXRvZmlsbEVuYWJsZVZjbkdyYXlPdXRGb3JNZXJjaGFudE9wdE91dDxBdXRvZmlsbEVuYWJsZVZjbkdyYXlPdXRGb3JNZXJjaGFudE9wdE91dCwqQXV0b2ZpbGxGaXhDYWNoaW5nT25KYXZhU2NyaXB0Q2hhbmdlczxBdXRvZmlsbEZpeENhY2hpbmdPbkphdmFTY3JpcHRDaGFuZ2VzLEF1dG9maWxsRml4Q3VycmVudFZhbHVlSW5JbXBvcnQ8QXV0b2ZpbGxGaXhWYWx1ZVNlbWFudGljcyxBdXRvZmlsbEZpeEluaXRpYWxWYWx1ZU9mU2VsZWN0PEF1dG9maWxsRml4VmFsdWVTZW1hbnRpY3MsQXV0b2ZpbGxGaXhWYWx1ZVNlbWFudGljczxBdXRvZmlsbEZpeFZhbHVlU2VtYW50aWNzLCpBdXRvZmlsbEdyZWVrUmVnZXhlczxBdXRvZmlsbEkxOG5BZGRyZXNzTW9kZWxBbmRSZWdleGVzR0VJVFBMLEF1dG9maWxsSW1wb3J0RnJvbUF1dG9jb21wbGV0ZVVucmVjb2duaXplZDxBdXRvZmlsbEltcG9ydEZyb21BdXRvY29tcGxldGVVbnJlY29nbml6ZWQsQXV0b2ZpbGxJbmZlckNvdW50cnlDYWxsaW5nQ29kZTxBdXRvZmlsbFBob25lTnVtYmVyRGV0ZWN0aW9uSW1wcm92ZW1lbnRzLCpBdXRvZmlsbEluZmVyTGFiZWxGcm9tRGVmYXVsdFNlbGVjdFRleHQ8QXV0b2ZpbGxJbmZlckxhYmVsRnJvbURlZmF1bHRTZWxlY3RUZXh0LEF1dG9maWxsTG9nRGVkdXBsaWNhdGlvbk1ldHJpY3M8QXV0b2ZpbGxMb2dEZWR1cGxpY2F0aW9uTWV0cmljcyxBdXRvZmlsbFBhcnNlVmNuQ2FyZE9uRmlsZVN0YW5kYWxvbmVDdmNGaWVsZHM8QXV0b2ZpbGxFbmFibGVWaXJ0dWFsQ2FyZE9uRmlsZSxBdXRvZmlsbFByZWZlclBhcnNlZFBob25lTnVtYmVyPEF1dG9maWxsUGhvbmVOdW1iZXJEZXRlY3Rpb25JbXByb3ZlbWVudHMsKkF1dG9maWxsVW5tYXNrQ2FyZFJlcXVlc3RUaW1lb3V0PEF1dG9maWxsVW5tYXNrQ2FyZFJlcXVlc3RUaW1lb3V0LEF1dG9maWxsVXBsb2FkQ2FyZFJlcXVlc3RUaW1lb3V0PEF1dG9maWxsVXBsb2FkQ2FyZFJlcXVlc3RUaW1lb3V0LEF1dG9maWxsVXBzdHJlYW1VcGRhdGVkVWk8QXV0b2ZpbGxVcHN0cmVhbVVwZGF0ZWRVaSxBdXRvZmlsbFVzZUFVQWRkcmVzc01vZGVsPEF1dG9maWxsSTE4bkFkZHJlc3NNb2RlbE5ld0NvdW50cmllcyxBdXRvZmlsbFVzZUNBQWRkcmVzc01vZGVsPEF1dG9maWxsSTE4bkFkZHJlc3NNb2RlbE5ld0NvdW50cmllcyxBdXRvZmlsbFVzZURFQWRkcmVzc01vZGVsPEF1dG9maWxsSTE4bkFkZHJlc3NNb2RlbE5ld0NvdW50cmllcywqQXV0b2ZpbGxVc2VJVEFkZHJlc3NNb2RlbDxBdXRvZmlsbEkxOG5BZGRyZXNzTW9kZWxBbmRSZWdleGVzR0VJVFBMLCpBdXRvZmlsbFVzZVBMQWRkcmVzc01vZGVsPEF1dG9maWxsSTE4bkFkZHJlc3NNb2RlbEFuZFJlZ2V4ZXNHRUlUUEwsQXV0b2ZpbGxWY25FbnJvbGxSZXF1ZXN0VGltZW91dDxBdXRvZmlsbFZjbkVucm9sbFJlcXVlc3RUaW1lb3V0LEF2b2lkU2NoZWR1bGVXb3JrRHVyaW5nTmF0aXZlRXZlbnRQcm9jZXNzaW5nPFBlcmZDb21iaW5lZDIwMjQsQkZDYWNoZU9wZW5Ccm9hZGNhc3RDaGFubmVsPEJhY2tGb3J3YXJkQ2FjaGVCcm9hZGNhc3RDaGFubmVsLEJpZGRpbmdBbmRTY29yaW5nRGVidWdSZXBvcnRpbmdBUEk8UHJpdmFjeVNhbmRib3hBZHNBUElzLEJsaW5rU2NoZWR1bGVyRGlzY3JldGVJbnB1dE1hdGNoZXNSZXNwb25zaXZlbmVzc01ldHJpY3M8RGVmZXJSZW5kZXJlclRhc2tzQWZ0ZXJJbnB1dCxCbGlua1VzZUxhcmdlRW1wdHlTbG90U3BhblJpbmdGb3JCdWZmZXJSb290PFBlcmZDb21iaW5lZDIwMjQsQm9va21hcmtUcmlnZ2VyRm9yUHJlcmVuZGVyMjxQcmVyZW5kZXIyQm9va21hcmtCYXJUcmlnZ2VyVjIsQm9vc3RSZW5kZXJQcm9jZXNzRm9yTG9hZGluZzxCb29zdFJlbmRlclByb2Nlc3NGb3JMb2FkaW5nLEJyb3dzaW5nVG9waWNzPFByaXZhY3lTYW5kYm94QWRzQVBJcyxCcm93c2luZ1RvcGljc1hIUjxQcml2YWN5U2FuZGJveEFkc0FQSXMsKkNQVU1lYXN1cmVtZW50SW5GcmVlemluZ1BvbGljeTxGcmVlemluZ09uQmF0dGVyeVNhdmVyVHdlYWtzLENhc3RDZXJ0aWZpY2F0ZVJldm9jYXRpb248Q2FzdENlcnRpZmljYXRlUmV2b2NhdGlvbixDZXJ0VmVyaWZpY2F0aW9uTmV0d29ya1RpbWU8U2VjdXJlVGltZUNlcnRpZmljYXRlVmVyaWZpY2F0aW9uLENsYXNzaWZ5VXJsT25Qcm9jZXNzUmVzcG9uc2VFdmVudDxDbGFzc2lmeVVybE9uUHJvY2Vzc1Jlc3BvbnNlRXZlbnRMaW51eE1hY0FuZFdpbmRvd3MsKkNsZWFyVW5kZWNyeXB0YWJsZVBhc3N3b3JkczxDbGVhclVuZGVjcnlwdGFibGVQYXNzd29yZHMsKkNsaWVudFNpZGVEZXRlY3Rpb25BY2NlcHRIQ0FsbG93bGlzdDxDbGllbnRTaWRlRGV0ZWN0aW9uQWNjZXB0SENBbGxvd2xpc3QsKkNvbmRpdGlvbmFsSW1hZ2VSZXNpemU8Q29uZGl0aW9uYWxJbWFnZVJlc2l6ZSxDb25kaXRpb25hbGx5U2tpcEdwdUNoYW5uZWxGbHVzaDxQZXJmQ29tYmluZWQyMDI0LENvbnN1bWVDb21waWxlSGludHM8VjhDb21waWxlSGludHMsQ29udmVyc2lvbk1lYXN1cmVtZW50PFByaXZhY3lTYW5kYm94QWRzQVBJcyxDb29raWVEZXByZWNhdGlvbkZhY2lsaXRhdGVkVGVzdGluZzxDb29raWVEZXByZWNhdGlvbkZhY2lsaXRhdGVkVGVzdGluZ0Nvb2tpZURlcHJlY2F0aW9uLERJUFM8Q29va2llRGVwcmVjYXRpb25GYWNpbGl0YXRlZFRlc3RpbmdDb29raWVEZXByZWNhdGlvbixEZWZhdWx0QnJvd3NlclByb21wdFJlZnJlc2g8RGVmYXVsdEJyb3dzZXJQcm9tcHRSZWZyZXNoTGF1bmNoLERlZmF1bHRCcm93c2VyUHJvbXB0UmVmcmVzaFRyaWFsPERlZmF1bHRCcm93c2VyUHJvbXB0UmVmcmVzaExhdW5jaCxEZWZlclJlbmRlcmVyVGFza3NBZnRlcklucHV0PERlZmVyUmVuZGVyZXJUYXNrc0FmdGVySW5wdXQsKkRlbGV0ZU9ycGhhbkxvY2FsU3RvcmFnZU9uU3RhcnR1cDxTdGFsZVN0b3JhZ2VDbGVhbnVwLCpEZWxldGVTdGFsZUxvY2FsU3RvcmFnZU9uU3RhcnR1cDxTdGFsZVN0b3JhZ2VDbGVhbnVwLCpEZWxldGVTdGFsZVNlc3Npb25Db29raWVzT25TdGFydHVwPFN0YWxlU2Vzc2lvbkNvb2tpZUNsZWFudXAsRGV2VG9vbHNGcmVlc3R5bGVyPERldlRvb2xzRnJlZXN0eWxlciwqRHJhd1F1YWRTcGxpdExpbWl0PE9jY2x1c2lvbkN1bGxpbmdRdWFkU3BsaXRMaW1pdCxFYXJseUVzdGFibGlzaEdwdUNoYW5uZWw8UGVyZkNvbWJpbmVkMjAyNCwqRW5hYmxlQmFuZEFUcmlnZ2VyZWRVcGRhdGVzPFByb3RlY3RlZEF1ZGllbmNlQkFuZEFUcmlnZ2VyZWRVcGRhdGVzLCpFbmFibGVDZXJ0TWFuYWdlbWVudFVJVjJXcml0ZTxFbmFibGVDZXJ0TWFuYWdlbWVudFVJVjJXcml0ZSxFbmFibGVFeHRlbnNpb25zUGVybWlzc2lvbnNGb3JTdXBlcnZpc2VkVXNlcnNPbkRlc2t0b3A8RXh0ZW5zaW9uUGFyZW50YWxDb250cm9sc09uTGludXhNYWNXaW5kb3dzLCpFbmFibGVGaW5nZXJwcmludGluZ1Byb3RlY3Rpb25GaWx0ZXI8RmluZ2VycHJpbnRpbmdQcm90ZWN0aW9uRmlsdGVyLCpFbmFibGVPb3BQcmludERyaXZlcnM8T3V0T2ZQcm9jZXNzUHJpbnREcml2ZXJzUHJpbnQsRW5hYmxlU3VwZXJ2aXNlZFVzZXJTa2lwUGFyZW50QXBwcm92YWxUb0luc3RhbGxFeHRlbnNpb25zPEV4dGVuc2lvblBhcmVudGFsQ29udHJvbHNPbkxpbnV4TWFjV2luZG93cywqRW50ZXJwcmlzZUZpbGVPYmZ1c2NhdGlvbjxFbnRlcnByaXNlRmlsZU9iZnVzY2F0aW9uLEVudGVycHJpc2VQYXNzd29yZFJldXNlVWlSZWZyZXNoPEVudGVycHJpc2VQYXNzd29yZFJldXNlVWlSZWZyZXNoLEVzYkFpU3RyaW5nVXBkYXRlPEVzYkFpU3RyaW5nVXBkYXRlLCpFc2NhcGVMdEd0SW5BdHRyaWJ1dGVzPEVzY2FwZUx0R3RJbkF0dHJpYnV0ZXMsRXN0YWJsaXNoR3B1Q2hhbm5lbEFzeW5jPFBlcmZDb21iaW5lZDIwMjQsKkV2aWN0T3JwaGFuUXVvdGFTdG9yYWdlPFN0YWxlU3RvcmFnZUNsZWFudXAsKkV2aWN0U3RhbGVRdW90YVN0b3JhZ2U8U3RhbGVTdG9yYWdlQ2xlYW51cCxFdmljdGlvblRocm90dGxlc0RyYXc8RXZpY3Rpb25UaHJvdHRsZXNEcmF3LEV4cGFuZGVkUHJlZmV0Y2hSYW5nZTxQZXJmQ29tYmluZWQyMDI0LEV4cGlyZWRIaXN0b2dyYW1Mb2dpYzxFeHBpcmVkSGlzdG9ncmFtcyxFeHBsaWNpdEJyb3dzZXJTaWduaW5VSU9uRGVza3RvcDxVbm9EZXNrdG9wTTBGdWxsLCpFeHRlbmRlZFJlcG9ydGluZ1JlbW92ZVByZWZEZXBlbmRlbmN5PEV4dGVuZGVkUmVwb3J0aW5nUmVtb3ZlUHJlZkRlcGVuZGVuY3ksKkV4dHJlbWVMaWdodHdlaWdodFVBRkRldGVjdG9yPEV4dHJlbWVMaWdodHdlaWdodFVBRkRldGVjdG9yLEZlbmNlZEZyYW1lczxQcml2YWN5U2FuZGJveEFkc0FQSXMsRmVuY2VkRnJhbWVzQVBJQ2hhbmdlczxQcml2YWN5U2FuZGJveEFkc0FQSXMsRmVuY2VkRnJhbWVzUmVwb3J0RXZlbnRIZWFkZXJDaGFuZ2VzPEZlbmNlZEZyYW1lc0VuYWJsZVJlcG9ydEV2ZW50SGVhZGVyQ2hhbmdlcywqRmluZ2VycHJpbnRpbmdQcm90ZWN0aW9uVXg8RmluZ2VycHJpbnRpbmdQcm90ZWN0aW9uRmlsdGVyLEZsZWRnZUNvbnNpZGVyS0Fub255bWl0eTxQcm90ZWN0ZWRBdWRpZW5jZXNLQW5vbnltaXR5RW5mb3JjZW1lbnRTdHVkeSxGbGVkZ2VFbmFibGVXQUxGb3JJbnRlcmVzdEdyb3VwU3RvcmFnZTxQZXJmQ29tYmluZWQyMDI0LEZsZWRnZUVuZm9yY2VLQW5vbnltaXR5PFByb3RlY3RlZEF1ZGllbmNlc0tBbm9ueW1pdHlFbmZvcmNlbWVudFN0dWR5LEZsZWRnZUZhY2lsaXRhdGVkVGVzdGluZ1NpZ25hbHNIZWFkZXJzPEZsZWRnZUZhY2lsaXRhdGVkVGVzdGluZ1NpZ25hbHNIZWFkZXJzLCpGbGVkZ2VOb1dhc21MYXp5Q29tcGlsYXRpb248UHJvdGVjdGVkQXVkaWVuY2VOb1dhc21MYXp5Q29tcGlsYXRpb25TdHVkeSwqRmxlZGdlU2VsbGVyV29ya2xldFRocmVhZFBvb2w8UHJvdGVjdGVkQXVkaWVuY2VNdWx0aVRocmVhZGVkU2VsbGVyV29ya2xldCwqRmxlZGdlVHJ1c3RlZFNpZ25hbHNLVnYyU3VwcG9ydDxQcm90ZWN0ZWRBdWRpZW5jZVRydXN0ZWRLVlN1cHBvcnQsKkZsZWRnZVVzZVByZWNvbm5lY3RDYWNoZTxQcm90ZWN0ZWRBdWRpZW5jZVByZWNvbm5lY3RDYWNoZVN0dWR5LEZvcmNlU2FmZVNlYXJjaEZvclVuYXV0aGVudGljYXRlZFN1cGVydmlzZWRVc2VyczxLaWRzUHJvZmlsZVBoYXNlMSxGb3JjZVN1cGVydmlzZWRVc2VyUmVhdXRoZW50aWNhdGlvbkZvckJsb2NrZWRTaXRlczxLaWRzUHJvZmlsZVBoYXNlMSxGb3J3YXJkTWVtb3J5UHJlc3N1cmVUb0JsaW5rSXNvbGF0ZXM8TWVtb3J5UHVyZ2VJbkJhY2tncm91bmQsR2xvYmFsTWVkaWFDb250cm9sc1VwZGF0ZWRVSTxHbG9iYWxNZWRpYUNvbnRyb2xzVXBkYXRlZFVJLEdwdUluZm9Db2xsZWN0aW9uU2VwYXJhdGVQcmVmZXRjaDxQZXJmQ29tYmluZWQyMDI0LEhpZGVHdWVzdE1vZGVGb3JTdXBlcnZpc2VkVXNlcnM8S2lkc1Byb2ZpbGVQaGFzZTEsKkh0dHBzRmlyc3RNb2RlVjJGb3JFbmdhZ2VkU2l0ZXM8SHR0cHNGaXJzdE1vZGVWMkZvckVuZ2FnZWRTaXRlcywqSHR0cHNGaXJzdE1vZGVWMkZvclR5cGljYWxseVNlY3VyZVVzZXJzPEh0dHBzRmlyc3RNb2RlVjJGb3JUeXBpY2FsbHlTZWN1cmVVc2VycyxJT1NQcm9tb0FkZHJlc3NCdWJibGU8SU9TQWNxdWlzaXRpb25PbkRlc2t0b3BQcm9tbyxJT1NQcm9tb1BheW1lbnRCdWJibGU8SU9TQWNxdWlzaXRpb25PbkRlc2t0b3BQcm9tbyxJT1NQcm9tb1JlZnJlc2hlZFBhc3N3b3JkQnViYmxlPElPU0FjcXVpc2l0aW9uT25EZXNrdG9wUHJvbW8sSVBIX0Rlc2t0b3BSZUVuZ2FnZW1lbnQ8RGVza3RvcFJlRW5nYWdlbWVudCxJZ25vcmVEdXBsaWNhdGVOYXZzPElnbm9yZUR1cGxpY2F0ZU5hdnMsSW50ZXJlc3RHcm91cFN0b3JhZ2U8UHJpdmFjeVNhbmRib3hBZHNBUElzLEtBbm9ueW1pdHlTZXJ2aWNlPFByaXZhY3lTYW5kYm94QWRzQVBJcyxLZWVwQWxpdmVJbkJyb3dzZXJNaWdyYXRpb248S2VlcEFsaXZlSW5Ccm93c2VyTWlncmF0aW9uSG9sZGJhY2ssTENQUExhenlMb2FkSW1hZ2VQcmVsb2FkPExDUFBMYXp5TG9hZEltYWdlUHJlbG9hZCxMQ1BQTXVsdGlwbGVLZXk8TENQUE11bHRpcGxlS2V5LExhenlVcGRhdGVUcmFuc2xhdGVNb2RlbDxMYXp5VXBkYXRlVHJhbnNsYXRlTW9kZWwsTGVuc092ZXJsYXlJbWFnZUNvbnRleHRNZW51QWN0aW9uczxDaHJvbW5pZW50SW1hZ2VDb250ZXh0TWVudUFjdGlvbnMsTGVzc0FnZ3Jlc3NpdmVQYXJrYWJsZVN0cmluZzxQZXJmQ29tYmluZWQyMDI0LExldmVsREJQcm90b0FzeW5jV3JpdGU8UGVyZkNvbWJpbmVkMjAyNCwqTGlua2VkU2VydmljZXNTZXR0aW5nPExpbmtlZFNlcnZpY2VzU2V0dGluZywqTGlua2VkU2VydmljZXNTZXR0aW5nSW9zPExpbmtlZFNlcnZpY2VzU2V0dGluZyxMb2FkaW5nUHJlZGljdG9yVXNlT3B0aW1pemF0aW9uR3VpZGU8UmVhY3RpdmVQcmVmZXRjaERlc2t0b3AsTG9jYWxDb21waWxlSGludHM8VjhDb21waWxlSGludHMsTG9jYWxTdGF0ZUVudGVycHJpc2VQYXNzd29yZEhhc2hlczxMb2NhbFN0YXRlRW50ZXJwcmlzZVBhc3N3b3JkSGFzaGVzLE1hY0FsbG93QmFja2dyb3VuZGluZ1JlbmRlclByb2Nlc3NlczxQTVByb2Nlc3NQcmlvcml0eVBvbGljeSwqTWVkaWFSZWNvcmRlclVzZU1lZGlhVmlkZW9FbmNvZGVyPE1lZGlhUmVjb3JkZXJVc2VNZWRpYVZpZGVvRW5jb2RlcixNZW1vcnlQdXJnZUluQmFja2dyb3VuZDxNZW1vcnlQdXJnZUluQmFja2dyb3VuZCxNZXRyaWNzUmVwb3J0aW5nPE1ldHJpY3NBbmRDcmFzaFNhbXBsaW5nLE1vam9CaW5kaW5nc0lubGluZVNMUzxQZXJmQ29tYmluZWQyMDI0LCpNb3ZlVGhlbWVQcmVmc1RvU3BlY2lmaWNzPE1vdmVUaGVtZVByZWZzVG9TcGVjaWZpY3MsKk11bHRpcGxlU3BhcmVSUEhzPE11bHRpcGxlU3BhcmVSUEhzLE5ldHdvcmtUaW1lU2VydmljZVF1ZXJ5aW5nPFNlY3VyZVRpbWVDZXJ0aWZpY2F0ZVZlcmlmaWNhdGlvbiwqTm9UaHJvdHRsaW5nVmlzaWJsZUFnZW50PE5vVGhyb3R0bGluZ1Zpc2libGVBZ2VudCxOb25jZWRQYXJ0aXRpb25lZENvb2tpZXM8UHJpdmFjeVNhbmRib3hBZHNBUElzLE9tbmlib3hEZWxldGVPbGRTaG9ydGN1dHM8T21uaWJveERlbGV0ZU9sZFNob3J0Y3V0cyxPbW5pYm94T25EZXZpY2VIZWFkUHJvdmlkZXJOb25JbmNvZ25pdG88T21uaWJveE9uRGV2aWNlSGVhZE1vZGVsUmV0cmlldmFsSW1wcm92ZW1lbnRMYXVuY2hEZXNrdG9wLE9uZVRpbWVQZXJtaXNzaW9uPE9uZVRpbWVQZXJtaXNzaW9uLE92ZXJyaWRlQVBJS2V5PENocm9tZUFQSUtleSxQTVByb2Nlc3NQcmlvcml0eVBvbGljeTxQTVByb2Nlc3NQcmlvcml0eVBvbGljeSxQYXJ0aXRpb25BbGxvY0FkanVzdFNpemVXaGVuSW5Gb3JlZ3JvdW5kPFBlcmZDb21iaW5lZDIwMjQsUGFydGl0aW9uQWxsb2NMYXJnZUVtcHR5U2xvdFNwYW5SaW5nPFBlcmZDb21iaW5lZDIwMjQsUGFydGl0aW9uQWxsb2NTaG9ydE1lbW9yeVJlY2xhaW08UGVyZkNvbWJpbmVkMjAyNCxQYXJ0aXRpb25BbGxvY1VzZVBvb2xPZmZzZXRGcmVlbGlzdHM8UGFydGl0aW9uQWxsb2NVc2VQb29sT2Zmc2V0RnJlZWxpc3RzLFBhcnRpdGlvbkFsbG9jVXNlU21hbGxTaW5nbGVTbG90U3BhbnM8UGFydGl0aW9uQWxsb2NVc2VTbWFsbFNpbmdsZVNsb3RTcGFucywqUGRmQ3IyMzxQZGZDcjIzLCpQZGZPb3BpZjxQZGZPdXRPZlByb2Nlc3NJZnJhbWUsKlBkZlNlYXJjaGlmeTxQZGZTZWFyY2hpZnksUGVyZm9ybWFuY2VJbnRlcnZlbnRpb25VSTxQZXJmb3JtYW5jZUludGVydmVudGlvblVJTGF1bmNoLFBlcm1pc3Npb25QcmVkaWN0aW9uc1YzPFBlcm1pc3Npb25QcmVkaWN0aW9uc1YzLFByaW9yaXR5T3ZlcnJpZGVQZW5kaW5nVmlld3M8UE1Qcm9jZXNzUHJpb3JpdHlQb2xpY3ksUHJpdmFjeVNhbmRib3hBZHNBUElzPFByaXZhY3lTYW5kYm94QWRzQVBJcyxQcml2YWN5U2FuZGJveEFkc0FQSXNNMU92ZXJyaWRlPFByaXZhY3lTYW5kYm94QWRzQVBJcyxQcml2YWN5U2FuZGJveFByaXZhY3lQb2xpY3k8UHJpdmFjeVNhbmRib3hQcml2YWN5UG9saWN5LFByaXZhdGVBZ2dyZWdhdGlvbkFwaTxQcml2YWN5U2FuZGJveEFkc0FQSXMsUXVldWVOYXZpZ2F0aW9uc1doaWxlV2FpdGluZ0ZvckNvbW1pdDxSZW5kZXJEb2N1bWVudFdpdGhOYXZpZ2F0aW9uUXVldWVpbmcsUXVpY0RvZXNOb3RVc2VGZWF0dXJlczxRVUlDLFJlZHVjZUNwdVV0aWxpemF0aW9uMjxQZXJmQ29tYmluZWQyMDI0LFJlZ2lzdGVyT3NVcGRhdGVIYW5kbGVyV2luPFJlZ2lzdGVyT3NVcGRhdGVIYW5kbGVyV2luLFJlbGVhc2VSZXNvdXJjZURlY29kZWREYXRhT25NZW1vcnlQcmVzc3VyZTxNZW1vcnlQdXJnZUluQmFja2dyb3VuZCxSZW5kZXJEb2N1bWVudDxSZW5kZXJEb2N1bWVudFdpdGhOYXZpZ2F0aW9uUXVldWVpbmcsUmVuZGVyUGFzc0RyYXduUmVjdDxSZW5kZXJQYXNzRHJhd25SZWN0LCpSZXNvbHV0aW9uQmFzZWREZWNvZGVyUHJpb3JpdHk8UmVzb2x1dGlvbkJhc2VkRGVjb2RlclByaW9yaXR5LCpSZXVzZURldGVjdGlvbkJhc2VkT25QYXNzd29yZEhhc2hlczxSZXVzZURldGVjdGlvbkJhc2VkT25QYXNzd29yZEhhc2hlcyxSdW5UYXNrc0J5QmF0Y2hlczxQZXJmQ29tYmluZWQyMDI0LFNhZmVCcm93c2luZ0hhc2hQcmVmaXhSZWFsVGltZUxvb2t1cHNGYXN0ZXJPaHR0cEtleVJvdGF0aW9uPFNhZmVCcm93c2luZ0hhc2hQcmVmaXhSZWFsVGltZUxvb2t1cHNGYXN0ZXJPaHR0cEtleVJvdGF0aW9uLCpTYWZlQnJvd3NpbmdIYXNoUHJlZml4UmVhbFRpbWVMb29rdXBzU2FtcGxlUGluZzxFeHRlbmRlZFJlcG9ydGluZ1JlbW92ZVByZWZEZXBlbmRlbmN5LCpTYWZldHlIdWJIYVRTT25lT2ZmU3VydmV5PFNhZmV0eUh1Yk9uZU9mZkhhdHMsKlNhdmVQYXNzd29yZEhhc2hGcm9tUHJvZmlsZVBpY2tlcjxTYXZlUGFzc3dvcmRIYXNoRnJvbVByb2ZpbGVQaWNrZXIsU2NyaXB0ZWRJZGxlVGFza0NvbnRyb2xsZXJPT01GaXg8U2NyaXB0ZWRJZGxlVGFza0NvbnRyb2xsZXJPT01GaXgsU2VhcmNoRW5naW5lQ2hvaWNlR3Vlc3RFeHBlcmllbmNlPFNlYXJjaEVuZ2luZUNob2ljZUd1ZXN0RXhwZXJpZW5jZSwqU2VuZFRhYlRvU2VsZklPU1B1c2hOb3RpZmljYXRpb25zPFNlbmRUYWJUb1NlbGZJT1NQdXNoTm90aWZpY2F0aW9ucyxTZXJ2aWNlV29ya2VyQXZvaWRNYWluVGhyZWFkRm9ySW5pdGlhbGl6YXRpb248U2VydmljZVdvcmtlckF2b2lkTWFpblRocmVhZEZvckluaXRpYWxpemF0aW9uRm9yRGVza3RvcCxTZXJ2aWNlV29ya2VyU3RvcmFnZVN1cHByZXNzUG9zdFRhc2s8U2VydmljZVdvcmtlclN0b3JhZ2VTdXBwcmVzc1Bvc3RUYXNrLFNoYXJlZFN0b3JhZ2VBUEk8UHJpdmFjeVNhbmRib3hBZHNBUElzLFNoYXJlZFN0b3JhZ2VBUElFbmFibGVXQUxGb3JEYXRhYmFzZTxQZXJmQ29tYmluZWQyMDI0LCpTaWduaW5JbnRlcmNlcHRTaW1wbGVCdXR0b25zPFNpZ25pbkludGVyY2VwdFNpbXBsZUJ1dHRvbnMsKlNraXBVbm5lY2Vzc2FyeVJlbW90ZUZyYW1lR2VvbWV0cnlQcm9wYWdhdGlvbjxTa2lwVW5uZWNlc3NhcnlSZW1vdGVGcmFtZUdlb21ldHJ5UHJvcGFnYXRpb24sU3FsV0FMTW9kZU9uRGlwc0RhdGFiYXNlPFBlcmZDb21iaW5lZDIwMjQsU3FsV0FMTW9kZU9uU2VnbWVudGF0aW9uRGF0YWJhc2U8UGVyZkNvbWJpbmVkMjAyNCxTdWJTYW1wbGVXaW5kb3dQcm94eVVzYWdlTWV0cmljczxQZXJmQ29tYmluZWQyMDI0LFN5bmNBdXRvZmlsbFdhbGxldENyZWRlbnRpYWxEYXRhPEF1dG9maWxsRW5hYmxlQ3ZjU3RvcmFnZSxTeW5jQXV0b2ZpbGxXYWxsZXRVc2FnZURhdGE8QXV0b2ZpbGxFbmFibGVWaXJ0dWFsQ2FyZE9uRmlsZSxTeW5jRW5hYmxlQ29udGFjdEluZm9EYXRhVHlwZUluVHJhbnNwb3J0TW9kZTxVbm9EZXNrdG9wTTBGdWxsLFRhYkdyb3Vwc1NhdmVVSVVwZGF0ZTxSb2xsb3V0Qm90aE90aGVyUGxhdGZvcm1zLFRhYkdyb3Vwc1NhdmVWMjxSb2xsb3V0Qm90aE90aGVyUGxhdGZvcm1zLFRhYlN0cmlwQ29sbGVjdGlvblN0b3JhZ2U8VGFiU3RyaXBDb2xsZWN0aW9uU3RvcmFnZSwqVGFic3RyaXBEZWNsdXR0ZXI8VGFic3RyaXBEZWNsdXR0ZXIsVGV4dFNpemVBZGp1c3RJbXByb3ZlbWVudHM8VGV4dFNpemVBZGp1c3RJbXByb3ZlbWVudHMsVGhyZWFkZWRTY3JvbGxQcmV2ZW50UmVuZGVyaW5nU3RhcnZhdGlvbjxUaHJlYWRlZFNjcm9sbFByZXZlbnRSZW5kZXJpbmdTdGFydmF0aW9uLFRvb2xiYXJQaW5uaW5nPFRvb2xiYXJQaW5uaW5nLFRyYW5zcG9ydFNlY3VyaXR5RmlsZVdyaXRlclNjaGVkdWxlPFBlcmZDb21iaW5lZDIwMjQsVHJ1bmNhdGVMYW5ndWFnZURldGVjdGlvblNhbXBsZTxUcnVuY2F0ZUxhbmd1YWdlRGV0ZWN0aW9uU2FtcGxlLFRydXN0VG9rZW5zPFByaXZhY3lTYW5kYm94QWRzQVBJcyxVSVB1bXBJbXByb3ZlbWVudHNXaW48UGVyZkNvbWJpbmVkMjAyNCwqVU1BUHNldWRvTWV0cmljc0VmZmVjdDxVTUEtUHNldWRvLU1ldHJpY3MtRWZmZWN0LUluamVjdGlvbi0yNS1QZXJjZW50LFVrbTxVS00sVWttU2FtcGxpbmdSYXRlPFVrbVNhbXBsaW5nUmF0ZSxVbmNyZWRlbnRpYWxlZEZpbHRlcmluZ0ZhbGxiYWNrRm9yU3VwZXJ2aXNlZFVzZXJzPEtpZHNQcm9maWxlUGhhc2UxLFVwZGF0ZWRTdXBlcnZpc2VkVXNlckV4dGVuc2lvbkFwcHJvdmFsU3RyaW5nczxFeHRlbnNpb25QYXJlbnRhbENvbnRyb2xzT25MaW51eE1hY1dpbmRvd3MsVXNlQXN5bmNPc0NyeXB0SW5Mb2dpbkRhdGFiYXNlPFVzZUFzeW5jT3NDcnlwdEluTG9naW5EYXRhYmFzZSxVc2VCcm93c2VyQ2FsY3VsYXRlZE9yaWdpbjxVc2VCcm93c2VyQ2FsY3VsYXRlZE9yaWdpbixVc2VOZXdFbmNyeXB0aW9uS2V5Rm9yV2ViRGF0YTxVc2VOZXdFbmNyeXB0aW9uS2V5Rm9yV2ViRGF0YSwqVXNlUnVzdEpzb25QYXJzZXI8VXNlUnVzdEpzb25QYXJzZXJJbkN1cnJlbnRTZXF1ZW5jZSxVc2Vac3RkRm9yUGFya2FibGVTdHJpbmdzPFBlcmZDb21iaW5lZDIwMjQsVXNlckVkdWNhdGlvbkV4cGVyaWVuY2VWZXJzaW9uMjxVc2VyRWR1Y2F0aW9uVjJTdHVkeSxVc2VybmFtZUZpcnN0Rmxvd1dpdGhJbnRlcm1lZGlhdGVWYWx1ZXNQcmVkaWN0aW9uczxVc2VybmFtZUZpcnN0Rmxvd1dpdGhJbnRlcm1lZGlhdGVWYWx1ZXNQcmVkaWN0aW9ucywqVjhHQ1NwZWVkVXNlc0NvdW50ZXJzPFY4R0NTcGVlZFVzZXNDb3VudGVycyxWOFNjYXZlbmdlckhpZ2hlckNhcGFjaXR5PFY4U2NhdmVuZ2VySGlnaGVyQ2FwYWNpdHksKldlYkFwcERvbnRBZGRFeGlzdGluZ0FwcHNUb1N5bmM8VW5vUHdhLCpXZWJDb250ZW50c0Rpc2NhcmQ8V2ViQ29udGVudHNEaXNjYXJkLCpXZWJSdGNFbmNvZGVkVHJhbnNmb3JtRGlyZWN0Q2FsbGJhY2s8V2ViUnRjRW5jb2RlZFRyYW5zZm9ybURpcmVjdENhbGxiYWNrLFdpblNib3hQYXJhbGxlbFByb2Nlc3NMYXVuY2g8V2luU2JveFBhcmFsbGVsUHJvY2Vzc0xhdW5jaCIgLS1kaXNhYmxlLWZlYXR1cmVzPSJBdHRyaWJ1dGlvbkRlYnVnUmVwb3J0aW5nQ29va2llRGVwcmVjYXRpb25UZXN0aW5nPENvb2tpZURlcHJlY2F0aW9uRmFjaWxpdGF0ZWRUZXN0aW5nQ29va2llRGVwcmVjYXRpb24sQXV0b2ZpbGxDb25zaWRlclBob25lTnVtYmVyU2VwYXJhdG9yc1ZhbGlkTGFiZWxzPEF1dG9maWxsUGhvbmVOdW1iZXJEZXRlY3Rpb25JbXByb3ZlbWVudHMsQ1NTTGF6eVBhcnNpbmdGYXN0UGF0aDxDU1NMYXp5UGFyc2luZ0Zhc3RQYXRoLENhY2hlQ29udHJvbE5vU3RvcmVFbnRlckJhY2tGb3J3YXJkQ2FjaGU8QmFja0ZvcndhcmRDYWNoZUZvclBhZ2VXaXRoQ2FjaGVDb250cm9sTm90U3RvcmVkSGVhZGVyLENhbWVyYU1pY1ByZXZpZXc8Q2FtZXJhTWljUHJldmlldyxDYW52YXMyREhpYmVybmF0aW9uPENhbnZhc0hpYmVybmF0aW9uRXhwZXJpbWVudHMsQ2FudmFzMkRIaWJlcm5hdGlvblJlbGVhc2VUcmFuc2Zlck1lbW9yeTxDYW52YXNIaWJlcm5hdGlvbkV4cGVyaW1lbnRzLENsZWFyQ2FudmFzUmVzb3VyY2VzSW5CYWNrZ3JvdW5kPENhbnZhc0hpYmVybmF0aW9uRXhwZXJpbWVudHMsQ2xpZW50U2lkZURldGVjdGlvblNhbXBsZVBpbmc8Q2xpZW50U2lkZURldGVjdGlvblNhbXBsZVBpbmcsQ3VzdG9tUHJvZmlsZVN0cmluZ3NGb3JTdXBlcnZpc2VkVXNlcnM8S2lkc1Byb2ZpbGVQaGFzZTIsRGVsYXlMYXllclRyZWVWaWV3RGVsZXRpb25PbkxvY2FsU3dhcDxSZW5kZXJEb2N1bWVudFdpdGhOYXZpZ2F0aW9uUXVldWVpbmcsRXZpY3Rpb25VbmxvY2tzUmVzb3VyY2VzPENhbnZhc0hpYmVybmF0aW9uRXhwZXJpbWVudHMsRmxlZGdlQXVjdGlvbkRlYWxTdXBwb3J0PFByb3RlY3RlZEF1ZGllbmNlRGVhbHNTdXBwb3J0LEZvbnRhdGlvbnNGb250QmFja2VuZDxGb250YXRpb25zRm9udEJhY2tlbmQsR2V0VXNlck1lZGlhRGVmZXJyZWREZXZpY2VTZXR0aW5nc1NlbGVjdGlvbjxDYW1lcmFNaWNQcmV2aWV3LEhpZ2hsaWdodEluaGVyaXRhbmNlPEhpZ2hsaWdodEluaGVyaXRhbmNlS2lsbFN3aXRjaCxJUEhfU3VwZXJ2aXNlZFVzZXJQcm9maWxlU2lnbmluPEtpZHNQcm9maWxlUGhhc2UyLEtleWJvYXJkQW5kUG9pbnRlckxvY2tQcm9tcHQ8S2V5Ym9hcmRBbmRQb2ludGVyTG9ja1Byb21wdEtpbGxTd2l0Y2gsTENQUERlZmVyVW51c2VkUHJlbG9hZDxMQ1BQRGVmZXJVbnVzZWRQcmVsb2FkUmVxdWVzdCxMb2FkaW5nUHJlZGljdG9yUHJlZmV0Y2g8UmVhY3RpdmVQcmVmZXRjaERlc2t0b3AsTm9QcmVSZWFkTWFpbkRsbElmU3NkPE5vUHJlUmVhZE1haW5EbGxJZlNzZCxQb2xpY3lCbG9ja2xpc3RQcm9jZWVkVW50aWxSZXNwb25zZTxQb2xpY3lCbG9ja2xpc3RQcm9jZWVkVW50aWxSZXNwb25zZSxSZWxlYXNlUmVzb3VyY2VTdHJvbmdSZWZlcmVuY2VzT25NZW1vcnlQcmVzc3VyZTxNZW1vcnlQdXJnZUluQmFja2dyb3VuZCxSZW1vdmVSZW5kZXJlclByb2Nlc3NMaW1pdDxSZW1vdmVSZW5kZXJlclByb2Nlc3NMaW1pdCxSZW5kZXJEb2N1bWVudENvbXBvc2l0b3JSZXVzZTxSZW5kZXJEb2N1bWVudFdpdGhOYXZpZ2F0aW9uUXVldWVpbmcsU2VsZWN0UGFyc2VyUmVsYXhhdGlvbjxTZWxlY3RQYXJzZXJSZWxheGF0aW9uLFNob3dLaXRlRm9yU3VwZXJ2aXNlZFVzZXJzPEtpZHNQcm9maWxlUGhhc2UyLFNraXBUcGNkTWl0aWdhdGlvbnNGb3JBZHM8Q29va2llRGVwcmVjYXRpb25GYWNpbGl0YXRlZFRlc3RpbmdDb29raWVEZXByZWNhdGlvbixUUENEQWRIZXVyaXN0aWNTdWJmcmFtZVJlcXVlc3RUYWdnaW5nPENvb2tpZURlcHJlY2F0aW9uRmFjaWxpdGF0ZWRUZXN0aW5nQ29va2llRGVwcmVjYXRpb24sVjhFeHRlcm5hbE1lbW9yeUFjY291bnRlZEluR2xvYmFsTGltaXQ8VjhFeHRlcm5hbE1lbW9yeUFjY291bnRlZEluR2xvYmFsTGltaXQiIC0tZGlzYWJsZS1maWVsZC10cmlhbC1jb25maWc=



Текущие изменения

e61eae14-ca7d8d80
2b978349-de642ad8
102166ac-ca7d8d80
415c3492-ca7d8d80
d992c558-ca7d8d80
4d7ef2a1-ca7d8d80
158e27e-6edc92c7
f69863c5-8d55def
bb88d3f2-377be55a
db0f7f8d-ca7d8d80
d0d3d7ff-ed61d795
83743a2d-ca7d8d80
72baad2d-6edc92c7
b1de23e3-3f2a3d9
dc88470b-1f8c5973
6b7d4090-e9d6dca
2dbe7f3c-d2fc9c22
b7ed4ad2-1ea7fff5
bc8fd675-3f4a17df
3095aa95-3f4a17df
85354e40-ca7d8d80
e678097f-33c3eba5
867316ab-377be55a
cb637d55-ca7d8d80
999e8980-28fca2c5
47ec1433-ca7d8d80
de62031d-34f8046a
adfbede8-8770be31
43bba9d8-fcae1e82
a36728e6-ca7d8d80
bff44458-c59019b
d510f0ce-377be55a
aad6b02b-ca7d8d80
f3d990c-ca7d8d80
504eb3dc-377be55a
8c6d6f42-ca7d8d80
5762377a-ca7d8d80
a83aa76f-377be55a
f8411335-ca7d8d80
a582a1b8-5ad3f43d
d7ce3099-ca7d8d80
caf19648-ca7d8d80
3c4bd797-ca7d8d80
bd6dd170-ca7d8d80
780df7d2-ca7d8d80
ca6958ab-377be55a
a05c89eb-ca7d8d80
87684b46-ca7d8d80
b8f91ef8-1f8c5973
73f1e332-12ede6a2
8b726c45-ca7d8d80
24298ed4-f9a43703
ae1581ef-ca7d8d80
fc986e76-ca7d8d80
3c978b59-ca7d8d80
398a60dd-642270a4
9cf6c713-dd4c4d28
e41e244a-ca7d8d80
7feffab5-f0487a5b
fb07823c-f9a43703
508f194f-33c3eba5
c3dafd6-f33beeac
ac900222-83096a48
96d006a-ca7d8d80
f6264095-336f71cc
b3a4e30a-ee3e717
f42905ff-ca7d8d80
8fdf0376-81fb1d67
5a9d6f82-9d446b22
477e3a69-9d446b22
97e45cc9-9d446b22
5fdfb7df-b651d52a
fba93f9b-9d446b22
d82487a9-3fa75b73
ae9d51b2-ca7d8d80
f992ad01-377be55a
ad9b71e2-ca7d8d80
d2aa7cc-ca7d8d80
34e11aee-e50ca91b
5e3a236d-603bc464
7aed4fe4-ca7d8d80
53efe597-b20da897
17196951-ca7d8d80
46f36251-9a017d3e
5a474f9e-ca7d8d80
b4c2bd17-12ede6a2
2258dc62-33c3eba5
f2700d05-e8071010
dcceede7-cb9564d2
4b82c9ff-ca7d8d80
c88fa1e2-ca7d8d80
56aa5797-ca7d8d80
265c01cc-91fa8391
d85d2369-ca7d8d80
f503a768-377be55a
9dea5087-377be55a
c861514b-ca7d8d80
68fef0c-ca7d8d80
868b8811-ca7d8d80
aa21b99b-10db844
c63e3410-f1aaad0a
dddd7488-377be55a
b76b514f-12afe5fa
97df86a8-ca7d8d80
59a12fbe-730a5e9a
633b8aa8-6c4f6f0a
de028327-12ede6a2
12043b46-ca7d8d80
2ca06d17-ca7d8d80
45a2f2f-7182c3d8
17ddb1b6-ca7d8d80
66b7a83f-cdbea37c
f3f1bfdb-ca7d8d80
4ea303a6-2e7ad93a
79a319d6-ca7d8d80
4190c9c9-2466b38b
aa540f4f-ca7d8d80
141af21d-377be55a
f3b6291d-8032ff99
f5181214-882bab3b
1edcddf4-659d13d5
e32e4a2d-ca7d8d80
5e8e6e2-573692ed
56fd3fd9-377be55a
1aa5b0d5-ca7d8d80
de4ec470-ca7d8d80
d2094477-377be55a
8e5d54a4-377be55a
ea0d881d-ca7d8d80
583702ee-377be55a
108bcc75-f9a43703
2bac9a6a-ca7d8d80
e85106e5-ca7d8d80
ced7ce3e-58baea85
f73677d0-3f4a17df
6ef0294d-52edc4fb
35840c8c-ca7d8d80
d0083347-ca7d8d80
c26ea5ae-ca7d8d80
4b266bfd-377be55a
8b679bb8-ca7d8d80
152ed874-377be55a
ab8cfc0f-3d6e1015
dd037d0e-377be55a
5f082a30-377be55a
494d8760-52325d43
673e0287-6bdfffe7
3ac60855-486e2a9c
63dcb6a3-3a443afd
e706e746-9d73bb7c
f296190c-97304ce3
4442aae2-a5822863
f690cf64-a5822863
ed1d377-e1cc0f14
75f0f0a0-4ad60575
710c3f90-e1cc0f14
e2b18481-7564fb06
e7e71889-4ad60575
d91dc415-33c3eba5
d8164e51-ca7d8d80
1f173648-377be55a
6406e4c1-377be55a
b1a0623-28ad44a
2cda667c-ca7d8d80
647bb914-377be55a
edb63e8a-3ab28248
2f6246c2-1f8c5973
92c76c82-ca7d8d80
11c437b-395b7325
bdcaab27-ca7d8d80
4a86715e-ca7d8d80
db649fc5-bf7aaf9f
bb543087-377be55a
11fc8dd8-ca7d8d80
49171648-3f4a17df
1e885982-ec7b4b79
f4f00e05-ca7d8d80
9481ce98-3d47f4f4
2a426c03-3d47f4f4
70678518-dee66fa8
be338734-dee66fa8
5f9907a9-dee66fa8
8eeccb9a-dee66fa8
2b465683-dee66fa8
52fc7926-ee3d6169
bc9b361d-dee66fa8
a41a7188-dee66fa8
ff71bfdc-dee66fa8
e7cc79d5-dee66fa8
4b935545-3d47f4f4
9a38bae3-6046c8a7
41ad04e1-e4065f40
2d1e43a3-3d47f4f4
386dc267-3d47f4f4
d69d967d-3695c92e
6c377b0f-a744f381
a983f698-3dc07a40


  **Operating System Information:**

Windows 11 Home 24H2 (Build 26100.2033)     

  **Extension Code**

background.js

function createNotification(title, message) {
    chrome.notifications.create({
        type: "basic",
        iconUrl: chrome.runtime.getURL("icon.png"),
        title: title,
        message: message
    });
}

chrome.runtime.onInstalled.addListener(() => {
    chrome.contextMenus.create({
        id: "findInChatGPT",
        title: "Найти в ChatGPT",
        contexts: ["selection"]
    });
});

chrome.contextMenus.onClicked.addListener(async (info, tab) => {
    if (info.menuItemId === "findInChatGPT") {
        if (!tab || !tab.id) {
            console.error("Tab information is missing.");
            createNotification("Ошибка", "Не удалось получить информацию о вкладке.");
            return;
        }

        if (tab.url && (tab.url.startsWith('http://') || tab.url.startsWith('https://'))) {
            try {
                const injectionResults = await chrome.scripting.executeScript({
                    target: { tabId: tab.id },
                    function: () => window.getSelection().toString()
                });

                const selectedText = injectionResults && injectionResults[0] && injectionResults[0].result;

                if (!selectedText || selectedText.trim() === "") {
                    createNotification("Внимание", "Не выделен текст.");
                    return;
                }

                try {
                    const response = await fetchChatGPTResponse(selectedText);
                    createNotification("Ответ от ChatGPT", response);
                } catch (error) {
                    console.error("Ошибка при запросе к ChatGPT:", error);
                    createNotification("Ошибка", error.message || "Произошла ошибка при запросе к ChatGPT.");
                }
            } catch (error) {
                console.error("Injection error:", error);
                createNotification("Ошибка", "Не удалось получить выделенный текст: " + error.message);
            }
        } else {
            createNotification("Внимание", "Действие доступно только на веб-страницах (http:// или https://).");
            console.log("Context menu clicked on a non-web page:", tab?.url);
        }
    }
});

async function fetchChatGPTResponse(text) {
    try {
        const data = await chrome.storage.sync.get('apiKey');
        const apiKey = data.apiKey;

        if (!apiKey) {
            throw new Error("API ключ не найден. Пожалуйста, введите ключ в настройках расширения.");
        }

        const response = await fetch('https://api.openai.com/v1/chat/completions', {
            method: 'POST',
            headers: {
                'Content-Type': 'application/json',
                'Authorization': `Bearer ${apiKey}`
            },
            body: JSON.stringify({
                model: 'gpt-3.5-turbo',
                messages: [{ role: 'user', content: text }]
            })
        });

        if (!response.ok) {
            const errorData = await response.json();
            throw new Error(errorData?.error?.message || `HTTP error ${response.status}`);
        }

        const responseData = await response.json();
        if (!responseData?.choices?.length) {
            throw new Error("Неожиданный формат ответа от ChatGPT");
        }

        return responseData.choices[0].message.content.trim();

    } catch (error) {
        console.error("Ошибка в fetchChatGPTResponse:", error);
        throw error;
    }
}


manifest.json

{
    "manifest_version": 3,
    "name": "ChatGPT Finder",
    "description": "Find selected text in ChatGPT",
    "version": "1.0",
    "permissions": [
      "contextMenus",
      "notifications",
      "storage",
      "activeTab",
      "scripting"
    ],
    "host_permissions": [
    ],
    "background": {
      "service_worker": "background.js"
    },
    "action": {
      "default_popup": "popup.html"
    },
    "icons": {
      "16": "icon.png",
      "48": "icon.png",
      "128": "icon.png"
    }
  }
popup.js
document.addEventListener('DOMContentLoaded', () => {
    const saveButton = document.getElementById('saveApiKey');
    const statusDiv = document.getElementById('status');
    const errorDiv = document.getElementById('error');

    if (!saveButton || !statusDiv || !errorDiv) {
        console.error("Не найдены элементы на странице!");
        return;
    }

    saveButton.addEventListener('click', () => {
        const apiKey = document.getElementById('apiKey').value;
        statusDiv.textContent = "";
        errorDiv.textContent = "";

        console.log("typeof chrome:", typeof chrome);
        console.log("typeof chrome.storage:", typeof chrome.storage);
        console.log("typeof chrome.storage.sync:", typeof chrome.storage.sync);

        try {
            if (chrome && chrome.storage && chrome.storage.sync) {
                chrome.storage.sync.set({ apiKey: apiKey }, () => {
                    if (chrome.runtime.lastError) {
                        console.error("Ошибка сохранения ключа:", chrome.runtime.lastError);
                        errorDiv.textContent = "Ошибка сохранения ключа: " + chrome.runtime.lastError.message;
                    } else {
                        console.log('API ключ сохранен.');
                        statusDiv.textContent = "API ключ успешно сохранен.";

                        chrome.storage.sync.get('apiKey', (data) => {
                            if (chrome.runtime.lastError) {
                                console.error("Ошибка при чтении ключа:", chrome.runtime.lastError);
                                errorDiv.textContent += "\nОшибка при чтении ключа: " + chrome.runtime.lastError.message;
                            } else {
                                console.log("API Key from storage:", data.apiKey);
                                statusDiv.textContent += "\nКлюч из хранилища: " + (data.apiKey ? "найден: " + data.apiKey : "НЕ найден");
                            }
                        });
                    }
                });
            } else {
                console.error("chrome или chrome.storage или chrome.storage.sync не определены!");
                errorDiv.textContent = "Ошибка: chrome.storage недоступен. Перезагрузите расширение.";
            }
        } catch (error) {
            console.error("Глобальная ошибка в обработчике click:", error);
            errorDiv.textContent = "Глобальная ошибка: " + error.message;
        }
    });
});
popup.html
<!DOCTYPE html>
<html>
<head>
    <title>Настройки ChatGPT</title>
    <style>
        body { width: 300px; padding: 10px; }
        #status, #error { margin-top: 10px; }
        #error { color: red; }
    </style>
</head>
<body>
    <h1>Настройки ChatGPT</h1>
    <label for="apiKey">API ключ:</label><br>
    <input type="password" id="apiKey" placeholder="Введите ваш API ключ" style="width: 100%; box-sizing: border-box;"><br><br>
    <button id="saveApiKey" style="width: 100%;">Сохранить</button>
    <div id="status"></div>
    <div id="error"></div>
    <script src="popup.js"></script>
</body>
</html>
It s all. If you need any additional information that I have not provided, please let me know.
Reply all
Reply to author
Forward
0 new messages