@factorialco/f0-react 8.30.0 → 8.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{ChatPdfThumbnail-DWaao_8n.js → ChatPdfThumbnail-BSSuwnX6.js} +1 -1
- package/dist/{ChatPostComposerDialog-BzfKi8B9.js → ChatPostComposerDialog-DT2qzJz7.js} +3 -3
- package/dist/{DocumentToolbar-D2hX6w6p.js → DocumentToolbar-COZ7xCb5.js} +2 -2
- package/dist/{DocxViewer-CR162hGX.js → DocxViewer-Cwm_Q0g6.js} +2 -2
- package/dist/{F0AiProcessingOverlay-BcPRamzV.js → F0AiProcessingOverlay-CLBRUF77.js} +1 -1
- package/dist/{F0CanvasPanel-CfvO8PxL.js → F0CanvasPanel-j19rKA2q.js} +4382 -4353
- package/dist/{F0Map-B9VtxUMF.js → F0Map-BYEGbNFJ.js} +4 -4
- package/dist/{F0VideoPlayer-ToZIr9o_.js → F0VideoPlayer-DLC7folq.js} +2 -2
- package/dist/{MapProvider-BWvxHXPr.js → MapProvider-wJjbpL-O.js} +9370 -9358
- package/dist/{SheetViewer-C_ggHHhG.js → SheetViewer-DMCfqh-D.js} +3 -3
- package/dist/{TextViewer-Chpe7Gia.js → TextViewer-D4X0yq0F.js} +2 -2
- package/dist/ai.d.ts +6 -6
- package/dist/ai.js +2 -2
- package/dist/component-status.d.ts +6 -6
- package/dist/component-status.js +1 -1
- package/dist/{experimental-C-yBJYg_.js → experimental-C3h3olmD.js} +7 -7
- package/dist/experimental.d.ts +97 -83
- package/dist/experimental.js +4 -4
- package/dist/f0.d.ts +97 -83
- package/dist/f0.js +10 -10
- package/dist/i18n-provider-defaults.d.ts +6 -6
- package/dist/{index-DbbOGl34.js → index-2cL0J9Pc.js} +3 -3
- package/dist/{index-C84yy6Mp.js → index-D0RZbFbo.js} +3 -3
- package/dist/{index-CCnZ0u0y.js → index-DPzxBulj.js} +2 -2
- package/dist/{index-BMDmI7wS.js → index-XRldN0kV.js} +1 -1
- package/dist/index-no2co85K.js +4 -0
- package/dist/{pdfWorker-BrS1LCTo.js → pdfWorker-CQHWwuw6.js} +2 -2
- package/package.json +1 -1
- package/dist/index-B__q_mq_.js +0 -4
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import './maplibre-gl.css';import './index.css';/* empty css */
|
|
2
2
|
import { m as V } from "./maplibre-gl-BFrhpbuU.js";
|
|
3
|
-
import { b as H } from "./F0Map-
|
|
4
|
-
import { y as M } from "./F0CanvasPanel-
|
|
3
|
+
import { b as H } from "./F0Map-BYEGbNFJ.js";
|
|
4
|
+
import { y as M } from "./F0CanvasPanel-j19rKA2q.js";
|
|
5
5
|
const E = "data:text/javascript;base64,KGZ1bmN0aW9uKCl7CihmdW5jdGlvbiAoZ2xvYmFsLCBmYWN0b3J5KSB7CiAgaWYgKHR5cGVvZiBleHBvcnRzID09PSAnb2JqZWN0JyAmJiB0eXBlb2YgbW9kdWxlICE9PSAndW5kZWZpbmVkJykgewogICAgZmFjdG9yeShtb2R1bGUuZXhwb3J0cykKICB9IGVsc2UgaWYgKHR5cGVvZiBkZWZpbmUgPT09ICdmdW5jdGlvbicgJiYgZGVmaW5lLmFtZCkgewogICAgZGVmaW5lKGZhY3RvcnkpOwogIH0gZWxzZSB7CiAgICBmYWN0b3J5KGdsb2JhbCk7CiAgfQp9KSAodGhpcywgZnVuY3Rpb24gKGV4cG9ydHMpIHsKdmFyIE1vZHVsZSA9IHsKICBUT1RBTF9NRU1PUlk6IDgqMTAyNCoxMDI0LAogIFRPVEFMX1NUQUNLOiAyKjEwMjQqMTAyNCAsCiAgcHJlUnVuOiBbXSwKICBwb3N0UnVuOiBbXSwKICBwcmludDogZnVuY3Rpb24oIHRleHQgKSB7CiAgICBjb25zb2xlLmxvZyh0ZXh0KTsKICB9LAogIHByaW50RXJyOiBmdW5jdGlvbih0ZXh0KSB7CiAgICB0ZXh0ID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwoYXJndW1lbnRzKS5qb2luKCcgJyk7CiAgICBpZiAoIHRleHQuaW5kZXhPZiggJ3ByZS1tYWluIHByZXAgdGltZScgKSA+PSAwICkgewogICAgICByZXR1cm47CiAgICB9CiAgICBjb25zb2xlLmVycm9yKHRleHQpOwogIH0KfTsKdmFyIE1vZHVsZSA9IHR5cGVvZiBNb2R1bGUgIT09ICd1bmRlZmluZWQnID8gTW9kdWxlIDoge307CnZhciBtb2R1bGVPdmVycmlkZXMgPSB7fTsKdmFyIGtleTsKZm9yIChrZXkgaW4gTW9kdWxlKSB7CiAgICBpZiAoTW9kdWxlLmhhc093blByb3BlcnR5KGtleSkpIHsKICAgICAgICBtb2R1bGVPdmVycmlkZXNba2V5XSA9IE1vZHVsZVtrZXldOwogICAgfQp9Ck1vZHVsZVsnYXJndW1lbnRzJ10gPSBbXTsKTW9kdWxlWyd0aGlzUHJvZ3JhbSddID0gJy4vdGhpcy5wcm9ncmFtJzsKTW9kdWxlWydxdWl0J10gPSBmdW5jdGlvbiAoc3RhdHVzLCB0b1Rocm93KSB7CiAgICB0aHJvdyB0b1Rocm93Owp9OwpNb2R1bGVbJ3ByZVJ1biddID0gW107Ck1vZHVsZVsncG9zdFJ1biddID0gW107CnZhciBFTlZJUk9OTUVOVF9JU19XRUIgPSBmYWxzZTsKdmFyIEVOVklST05NRU5UX0lTX1dPUktFUiA9IGZhbHNlOwp2YXIgRU5WSVJPTk1FTlRfSVNfTk9ERSA9IGZhbHNlOwp2YXIgRU5WSVJPTk1FTlRfSVNfU0hFTEwgPSBmYWxzZTsKRU5WSVJPTk1FTlRfSVNfV0VCID0gdHlwZW9mIHdpbmRvdyA9PT0gJ29iamVjdCc7CkVOVklST05NRU5UX0lTX1dPUktFUiA9IHR5cGVvZiBpbXBvcnRTY3JpcHRzID09PSAnZnVuY3Rpb24nOwpFTlZJUk9OTUVOVF9JU19OT0RFID0gdHlwZW9mIHByb2Nlc3MgPT09ICdvYmplY3QnICYmIHR5cGVvZiByZXF1aXJlID09PSAnZnVuY3Rpb24nICYmICFFTlZJUk9OTUVOVF9JU19XRUIgJiYgIUVOVklST05NRU5UX0lTX1dPUktFUjsKRU5WSVJPTk1FTlRfSVNfU0hFTEwgPSAhRU5WSVJPTk1FTlRfSVNfV0VCICYmICFFTlZJUk9OTUVOVF9JU19OT0RFICYmICFFTlZJUk9OTUVOVF9JU19XT1JLRVI7CnZhciBzY3JpcHREaXJlY3RvcnkgPSAnJzsKZnVuY3Rpb24gbG9jYXRlRmlsZShwYXRoKSB7CiAgICBpZiAoTW9kdWxlWydsb2NhdGVGaWxlJ10pIHsKICAgICAgICByZXR1cm4gTW9kdWxlWydsb2NhdGVGaWxlJ10ocGF0aCwgc2NyaXB0RGlyZWN0b3J5KTsKICAgIH0gZWxzZSB7CiAgICAgICAgcmV0dXJuIHNjcmlwdERpcmVjdG9yeSArIHBhdGg7CiAgICB9Cn0KaWYgKEVOVklST05NRU5UX0lTX05PREUpIHsKICAgIHNjcmlwdERpcmVjdG9yeSA9IF9fZGlybmFtZSArICcvJzsKICAgIHZhciBub2RlRlM7CiAgICB2YXIgbm9kZVBhdGg7CiAgICBNb2R1bGVbJ3JlYWQnXSA9IGZ1bmN0aW9uIHNoZWxsX3JlYWQoZmlsZW5hbWUsIGJpbmFyeSkgewogICAgICAgIHZhciByZXQ7CiAgICAgICAgcmV0ID0gdHJ5UGFyc2VBc0RhdGFVUkkoZmlsZW5hbWUpOwogICAgICAgIGlmICghcmV0KSB7CiAgICAgICAgICAgIGlmICghbm9kZUZTKQogICAgICAgICAgICAgICAgbm9kZUZTID0gcmVxdWlyZSgnZnMnKTsKICAgICAgICAgICAgaWYgKCFub2RlUGF0aCkKICAgICAgICAgICAgICAgIG5vZGVQYXRoID0gcmVxdWlyZSgncGF0aCcpOwogICAgICAgICAgICBmaWxlbmFtZSA9IG5vZGVQYXRoWydub3JtYWxpemUnXShmaWxlbmFtZSk7CiAgICAgICAgICAgIHJldCA9IG5vZGVGU1sncmVhZEZpbGVTeW5jJ10oZmlsZW5hbWUpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gYmluYXJ5ID8gcmV0IDogcmV0LnRvU3RyaW5nKCk7CiAgICB9OwogICAgTW9kdWxlWydyZWFkQmluYXJ5J10gPSBmdW5jdGlvbiByZWFkQmluYXJ5KGZpbGVuYW1lKSB7CiAgICAgICAgdmFyIHJldCA9IE1vZHVsZVsncmVhZCddKGZpbGVuYW1lLCB0cnVlKTsKICAgICAgICBpZiAoIXJldC5idWZmZXIpIHsKICAgICAgICAgICAgcmV0ID0gbmV3IFVpbnQ4QXJyYXkocmV0KTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIHJldDsKICAgIH07CiAgICBpZiAocHJvY2Vzc1snYXJndiddLmxlbmd0aCA+IDEpIHsKICAgICAgICBNb2R1bGVbJ3RoaXNQcm9ncmFtJ10gPSBwcm9jZXNzWydhcmd2J11bMV0ucmVwbGFjZSgvXFwvZywgJy8nKTsKICAgIH0KICAgIE1vZHVsZVsnYXJndW1lbnRzJ10gPSBwcm9jZXNzWydhcmd2J10uc2xpY2UoMik7CiAgICBpZiAodHlwZW9mIG1vZHVsZSAhPT0gJ3VuZGVmaW5lZCcpIHsKICAgICAgICBtb2R1bGVbJ2V4cG9ydHMnXSA9IE1vZHVsZTsKICAgIH0KICAgIHByb2Nlc3NbJ29uJ10oJ3VuY2F1Z2h0RXhjZXB0aW9uJywgZnVuY3Rpb24gKGV4KSB7CiAgICAgICAgaWYgKCEoZXggaW5zdGFuY2VvZiBFeGl0U3RhdHVzKSkgewogICAgICAgICAgICB0aHJvdyBleDsKICAgICAgICB9CiAgICB9KTsKICAgIHByb2Nlc3NbJ29uJ10oJ3VuaGFuZGxlZFJlamVjdGlvbicsIGFib3J0KTsKICAgIE1vZHVsZVsncXVpdCddID0gZnVuY3Rpb24gKHN0YXR1cykgewogICAgICAgIHByb2Nlc3NbJ2V4aXQnXShzdGF0dXMpOwogICAgfTsKICAgIE1vZHVsZVsnaW5zcGVjdCddID0gZnVuY3Rpb24gKCkgewogICAgICAgIHJldHVybiAnW0Vtc2NyaXB0ZW4gTW9kdWxlIG9iamVjdF0nOwogICAgfTsKfSBlbHNlIGlmIChFTlZJUk9OTUVOVF9JU19TSEVMTCkgewogICAgaWYgKHR5cGVvZiByZWFkICE9ICd1bmRlZmluZWQnKSB7CiAgICAgICAgTW9kdWxlWydyZWFkJ10gPSBmdW5jdGlvbiBzaGVsbF9yZWFkKGYpIHsKICAgICAgICAgICAgdmFyIGRhdGEgPSB0cnlQYXJzZUFzRGF0YVVSSShmKTsKICAgICAgICAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgICAgICAgIHJldHVybiBpbnRBcnJheVRvU3RyaW5nKGRhdGEpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHJldHVybiByZWFkKGYpOwogICAgICAgIH07CiAgICB9CiAgICBNb2R1bGVbJ3JlYWRCaW5hcnknXSA9IGZ1bmN0aW9uIHJlYWRCaW5hcnkoZikgewogICAgICAgIHZhciBkYXRhOwogICAgICAgIGRhdGEgPSB0cnlQYXJzZUFzRGF0YVVSSShmKTsKICAgICAgICBpZiAoZGF0YSkgewogICAgICAgICAgICByZXR1cm4gZGF0YTsKICAgICAgICB9CiAgICAgICAgaWYgKHR5cGVvZiByZWFkYnVmZmVyID09PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICAgIHJldHVybiBuZXcgVWludDhBcnJheShyZWFkYnVmZmVyKGYpKTsKICAgICAgICB9CiAgICAgICAgZGF0YSA9IHJlYWQoZiwgJ2JpbmFyeScpOwogICAgICAgIHJldHVybiBkYXRhOwogICAgfTsKICAgIGlmICh0eXBlb2Ygc2NyaXB0QXJncyAhPSAndW5kZWZpbmVkJykgewogICAgICAgIE1vZHVsZVsnYXJndW1lbnRzJ10gPSBzY3JpcHRBcmdzOwogICAgfSBlbHNlIGlmICh0eXBlb2YgYXJndW1lbnRzICE9ICd1bmRlZmluZWQnKSB7CiAgICAgICAgTW9kdWxlWydhcmd1bWVudHMnXSA9IGFyZ3VtZW50czsKICAgIH0KICAgIGlmICh0eXBlb2YgcXVpdCA9PT0gJ2Z1bmN0aW9uJykgewogICAgICAgIE1vZHVsZVsncXVpdCddID0gZnVuY3Rpb24gKHN0YXR1cykgewogICAgICAgICAgICBxdWl0KHN0YXR1cyk7CiAgICAgICAgfTsKICAgIH0KfSBlbHNlIGlmIChFTlZJUk9OTUVOVF9JU19XRUIgfHwgRU5WSVJPTk1FTlRfSVNfV09SS0VSKSB7CiAgICBpZiAoRU5WSVJPTk1FTlRfSVNfV09SS0VSKSB7CiAgICAgICAgc2NyaXB0RGlyZWN0b3J5ID0gc2VsZi5sb2NhdGlvbi5ocmVmOwogICAgfSBlbHNlIGlmIChkb2N1bWVudC5jdXJyZW50U2NyaXB0KSB7CiAgICAgICAgc2NyaXB0RGlyZWN0b3J5ID0gZG9jdW1lbnQuY3VycmVudFNjcmlwdC5zcmM7CiAgICB9CiAgICBpZiAoc2NyaXB0RGlyZWN0b3J5LmluZGV4T2YoJ2Jsb2I6JykgIT09IDApIHsKICAgICAgICBzY3JpcHREaXJlY3RvcnkgPSBzY3JpcHREaXJlY3Rvcnkuc3Vic3RyKDAsIHNjcmlwdERpcmVjdG9yeS5sYXN0SW5kZXhPZignLycpICsgMSk7CiAgICB9IGVsc2UgewogICAgICAgIHNjcmlwdERpcmVjdG9yeSA9ICcnOwogICAgfQogICAgTW9kdWxlWydyZWFkJ10gPSBmdW5jdGlvbiBzaGVsbF9yZWFkKHVybCkgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKICAgICAgICAgICAgeGhyLm9wZW4oJ0dFVCcsIHVybCwgZmFsc2UpOwogICAgICAgICAgICB4aHIuc2VuZChudWxsKTsKICAgICAgICAgICAgcmV0dXJuIHhoci5yZXNwb25zZVRleHQ7CiAgICAgICAgfSBjYXRjaCAoZXJyKSB7CiAgICAgICAgICAgIHZhciBkYXRhID0gdHJ5UGFyc2VBc0RhdGFVUkkodXJsKTsKICAgICAgICAgICAgaWYgKGRhdGEpIHsKICAgICAgICAgICAgICAgIHJldHVybiBpbnRBcnJheVRvU3RyaW5nKGRhdGEpOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHRocm93IGVycjsKICAgICAgICB9CiAgICB9OwogICAgaWYgKEVOVklST05NRU5UX0lTX1dPUktFUikgewogICAgICAgIE1vZHVsZVsncmVhZEJpbmFyeSddID0gZnVuY3Rpb24gcmVhZEJpbmFyeSh1cmwpIHsKICAgICAgICAgICAgdHJ5IHsKICAgICAgICAgICAgICAgIHZhciB4aHIgPSBuZXcgWE1MSHR0cFJlcXVlc3QoKTsKICAgICAgICAgICAgICAgIHhoci5vcGVuKCdHRVQnLCB1cmwsIGZhbHNlKTsKICAgICAgICAgICAgICAgIHhoci5yZXNwb25zZVR5cGUgPSAnYXJyYXlidWZmZXInOwogICAgICAgICAgICAgICAgeGhyLnNlbmQobnVsbCk7CiAgICAgICAgICAgICAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoeGhyLnJlc3BvbnNlKTsKICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7CiAgICAgICAgICAgICAgICB2YXIgZGF0YSA9IHRyeVBhcnNlQXNEYXRhVVJJKHVybCk7CiAgICAgICAgICAgICAgICBpZiAoZGF0YSkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBkYXRhOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgdGhyb3cgZXJyOwogICAgICAgICAgICB9CiAgICAgICAgfTsKICAgIH0KICAgIE1vZHVsZVsncmVhZEFzeW5jJ10gPSBmdW5jdGlvbiByZWFkQXN5bmModXJsLCBvbmxvYWQsIG9uZXJyb3IpIHsKICAgICAgICB2YXIgeGhyID0gbmV3IFhNTEh0dHBSZXF1ZXN0KCk7CiAgICAgICAgeGhyLm9wZW4oJ0dFVCcsIHVybCwgdHJ1ZSk7CiAgICAgICAgeGhyLnJlc3BvbnNlVHlwZSA9ICdhcnJheWJ1ZmZlcic7CiAgICAgICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uIHhocl9vbmxvYWQoKSB7CiAgICAgICAgICAgIGlmICh4aHIuc3RhdHVzID09IDIwMCB8fCB4aHIuc3RhdHVzID09IDAgJiYgeGhyLnJlc3BvbnNlKSB7CiAgICAgICAgICAgICAgICBvbmxvYWQoeGhyLnJlc3BvbnNlKTsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgZGF0YSA9IHRyeVBhcnNlQXNEYXRhVVJJKHVybCk7CiAgICAgICAgICAgIGlmIChkYXRhKSB7CiAgICAgICAgICAgICAgICBvbmxvYWQoZGF0YS5idWZmZXIpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIG9uZXJyb3IoKTsKICAgICAgICB9OwogICAgICAgIHhoci5vbmVycm9yID0gb25lcnJvcjsKICAgICAgICB4aHIuc2VuZChudWxsKTsKICAgIH07CiAgICBNb2R1bGVbJ3NldFdpbmRvd1RpdGxlJ10gPSBmdW5jdGlvbiAodGl0bGUpIHsKICAgICAgICBkb2N1bWVudC50aXRsZSA9IHRpdGxlOwogICAgfTsKfSBlbHNlIHsKfQp2YXIgb3V0ID0gTW9kdWxlWydwcmludCddIHx8ICh0eXBlb2YgY29uc29sZSAhPT0gJ3VuZGVmaW5lZCcgPyBjb25zb2xlLmxvZy5iaW5kKGNvbnNvbGUpIDogdHlwZW9mIHByaW50ICE9PSAndW5kZWZpbmVkJyA/IHByaW50IDogbnVsbCk7CnZhciBlcnIgPSBNb2R1bGVbJ3ByaW50RXJyJ10gfHwgKHR5cGVvZiBwcmludEVyciAhPT0gJ3VuZGVmaW5lZCcgPyBwcmludEVyciA6IHR5cGVvZiBjb25zb2xlICE9PSAndW5kZWZpbmVkJyAmJiBjb25zb2xlLndhcm4uYmluZChjb25zb2xlKSB8fCBvdXQpOwpmb3IgKGtleSBpbiBtb2R1bGVPdmVycmlkZXMpIHsKICAgIGlmIChtb2R1bGVPdmVycmlkZXMuaGFzT3duUHJvcGVydHkoa2V5KSkgewogICAgICAgIE1vZHVsZVtrZXldID0gbW9kdWxlT3ZlcnJpZGVzW2tleV07CiAgICB9Cn0KbW9kdWxlT3ZlcnJpZGVzID0gdW5kZWZpbmVkOwp2YXIgU1RBQ0tfQUxJR04gPSAxNjsKZnVuY3Rpb24gZHluYW1pY0FsbG9jKHNpemUpIHsKICAgIHZhciByZXQgPSBIRUFQMzJbRFlOQU1JQ1RPUF9QVFIgPj4gMl07CiAgICB2YXIgZW5kID0gcmV0ICsgc2l6ZSArIDE1ICYgLTE2OwogICAgaWYgKGVuZCA8PSBfZW1zY3JpcHRlbl9nZXRfaGVhcF9zaXplKCkpIHsKICAgICAgICBIRUFQMzJbRFlOQU1JQ1RPUF9QVFIgPj4gMl0gPSBlbmQ7CiAgICB9IGVsc2UgewogICAgICAgIHZhciBzdWNjZXNzID0gX2Vtc2NyaXB0ZW5fcmVzaXplX2hlYXAoZW5kKTsKICAgICAgICBpZiAoIXN1Y2Nlc3MpCiAgICAgICAgICAgIHJldHVybiAwOwogICAgfQogICAgcmV0dXJuIHJldDsKfQpmdW5jdGlvbiBnZXROYXRpdmVUeXBlU2l6ZSh0eXBlKSB7CiAgICBzd2l0Y2ggKHR5cGUpIHsKICAgIGNhc2UgJ2kxJzoKICAgIGNhc2UgJ2k4JzoKICAgICAgICByZXR1cm4gMTsKICAgIGNhc2UgJ2kxNic6CiAgICAgICAgcmV0dXJuIDI7CiAgICBjYXNlICdpMzInOgogICAgICAgIHJldHVybiA0OwogICAgY2FzZSAnaTY0JzoKICAgICAgICByZXR1cm4gODsKICAgIGNhc2UgJ2Zsb2F0JzoKICAgICAgICByZXR1cm4gNDsKICAgIGNhc2UgJ2RvdWJsZSc6CiAgICAgICAgcmV0dXJuIDg7CiAgICBkZWZhdWx0OiB7CiAgICAgICAgICAgIGlmICh0eXBlW3R5cGUubGVuZ3RoIC0gMV0gPT09ICcqJykgewogICAgICAgICAgICAgICAgcmV0dXJuIDQ7CiAgICAgICAgICAgIH0gZWxzZSBpZiAodHlwZVswXSA9PT0gJ2knKSB7CiAgICAgICAgICAgICAgICB2YXIgYml0cyA9IHBhcnNlSW50KHR5cGUuc3Vic3RyKDEpKTsKICAgICAgICAgICAgICAgIHJldHVybiBiaXRzIC8gODsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQp9CmZ1bmN0aW9uIHdhcm5PbmNlKHRleHQpIHsKICAgIGlmICghd2Fybk9uY2Uuc2hvd24pCiAgICAgICAgd2Fybk9uY2Uuc2hvd24gPSB7fTsKICAgIGlmICghd2Fybk9uY2Uuc2hvd25bdGV4dF0pIHsKICAgICAgICB3YXJuT25jZS5zaG93blt0ZXh0XSA9IDE7CiAgICAgICAgZXJyKHRleHQpOwogICAgfQp9CnZhciBqc0NhbGxTdGFydEluZGV4ID0gMTsKdmFyIGZ1bmN0aW9uUG9pbnRlcnMgPSBuZXcgQXJyYXkoMCk7CnZhciBmdW5jV3JhcHBlcnMgPSB7fTsKZnVuY3Rpb24gZHluQ2FsbChzaWcsIHB0ciwgYXJncykgewogICAgaWYgKGFyZ3MgJiYgYXJncy5sZW5ndGgpIHsKICAgICAgICByZXR1cm4gTW9kdWxlWydkeW5DYWxsXycgKyBzaWddLmFwcGx5KG51bGwsIFtwdHJdLmNvbmNhdChhcmdzKSk7CiAgICB9IGVsc2UgewogICAgICAgIHJldHVybiBNb2R1bGVbJ2R5bkNhbGxfJyArIHNpZ10uY2FsbChudWxsLCBwdHIpOwogICAgfQp9CnZhciB0ZW1wUmV0MCA9IDA7CnZhciBzZXRUZW1wUmV0MCA9IGZ1bmN0aW9uICh2YWx1ZSkgewogICAgdGVtcFJldDAgPSB2YWx1ZTsKfTsKdmFyIGdldFRlbXBSZXQwID0gZnVuY3Rpb24gKCkgewogICAgcmV0dXJuIHRlbXBSZXQwOwp9Owp2YXIgR0xPQkFMX0JBU0UgPSA4Owp2YXIgQUJPUlQgPSBmYWxzZTsKdmFyIEVYSVRTVEFUVVMgPSAwOwpmdW5jdGlvbiBhc3NlcnRfZW0oY29uZGl0aW9uLCB0ZXh0KSB7CiAgICBpZiAoIWNvbmRpdGlvbikgewogICAgICAgIGFib3J0KCdBc3NlcnRpb24gZmFpbGVkOiAnICsgdGV4dCk7CiAgICB9Cn0KZnVuY3Rpb24gZ2V0Q0Z1bmMoaWRlbnQpIHsKICAgIHZhciBmdW5jID0gTW9kdWxlWydfJyArIGlkZW50XTsKICAgIHJldHVybiBmdW5jOwp9CmZ1bmN0aW9uIGNjYWxsKGlkZW50LCByZXR1cm5UeXBlLCBhcmdUeXBlcywgYXJncywgb3B0cykgewogICAgdmFyIHRvQyA9IHsKICAgICAgICAnc3RyaW5nJzogZnVuY3Rpb24gKHN0cikgewogICAgICAgICAgICB2YXIgcmV0ID0gMDsKICAgICAgICAgICAgaWYgKHN0ciAhPT0gbnVsbCAmJiBzdHIgIT09IHVuZGVmaW5lZCAmJiBzdHIgIT09IDApIHsKICAgICAgICAgICAgICAgIHZhciBsZW4gPSAoc3RyLmxlbmd0aCA8PCAyKSArIDE7CiAgICAgICAgICAgICAgICByZXQgPSBzdGFja0FsbG9jKGxlbik7CiAgICAgICAgICAgICAgICBzdHJpbmdUb1VURjgoc3RyLCByZXQsIGxlbik7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuIHJldDsKICAgICAgICB9LAogICAgICAgICdhcnJheSc6IGZ1bmN0aW9uIChhcnIpIHsKICAgICAgICAgICAgdmFyIHJldCA9IHN0YWNrQWxsb2MoYXJyLmxlbmd0aCk7CiAgICAgICAgICAgIHdyaXRlQXJyYXlUb01lbW9yeShhcnIsIHJldCk7CiAgICAgICAgICAgIHJldHVybiByZXQ7CiAgICAgICAgfQogICAgfTsKICAgIGZ1bmN0aW9uIGNvbnZlcnRSZXR1cm5WYWx1ZShyZXQpIHsKICAgICAgICBpZiAocmV0dXJuVHlwZSA9PT0gJ3N0cmluZycpCiAgICAgICAgICAgIHJldHVybiBVVEY4VG9TdHJpbmcocmV0KTsKICAgICAgICBpZiAocmV0dXJuVHlwZSA9PT0gJ2Jvb2xlYW4nKQogICAgICAgICAgICByZXR1cm4gQm9vbGVhbihyZXQpOwogICAgICAgIHJldHVybiByZXQ7CiAgICB9CiAgICB2YXIgZnVuYyA9IGdldENGdW5jKGlkZW50KTsKICAgIHZhciBjQXJncyA9IFtdOwogICAgdmFyIHN0YWNrID0gMDsKICAgIGlmIChhcmdzKSB7CiAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdzLmxlbmd0aDsgaSsrKSB7CiAgICAgICAgICAgIHZhciBjb252ZXJ0ZXIgPSB0b0NbYXJnVHlwZXNbaV1dOwogICAgICAgICAgICBpZiAoY29udmVydGVyKSB7CiAgICAgICAgICAgICAgICBpZiAoc3RhY2sgPT09IDApCiAgICAgICAgICAgICAgICAgICAgc3RhY2sgPSBzdGFja1NhdmUoKTsKICAgICAgICAgICAgICAgIGNBcmdzW2ldID0gY29udmVydGVyKGFyZ3NbaV0pOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgY0FyZ3NbaV0gPSBhcmdzW2ldOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgfQogICAgdmFyIHJldCA9IGZ1bmMuYXBwbHkobnVsbCwgY0FyZ3MpOwogICAgcmV0ID0gY29udmVydFJldHVyblZhbHVlKHJldCk7CiAgICBpZiAoc3RhY2sgIT09IDApCiAgICAgICAgc3RhY2tSZXN0b3JlKHN0YWNrKTsKICAgIHJldHVybiByZXQ7Cn0KZnVuY3Rpb24gc2V0VmFsdWUocHRyLCB2YWx1ZSwgdHlwZSwgbm9TYWZlKSB7CiAgICB0eXBlID0gdHlwZSB8fCAnaTgnOwogICAgaWYgKHR5cGUuY2hhckF0KHR5cGUubGVuZ3RoIC0gMSkgPT09ICcqJykKICAgICAgICB0eXBlID0gJ2kzMic7CiAgICBzd2l0Y2ggKHR5cGUpIHsKICAgIGNhc2UgJ2kxJzoKICAgICAgICBIRUFQOFtwdHIgPj4gMF0gPSB2YWx1ZTsKICAgICAgICBicmVhazsKICAgIGNhc2UgJ2k4JzoKICAgICAgICBIRUFQOFtwdHIgPj4gMF0gPSB2YWx1ZTsKICAgICAgICBicmVhazsKICAgIGNhc2UgJ2kxNic6CiAgICAgICAgSEVBUDE2W3B0ciA+PiAxXSA9IHZhbHVlOwogICAgICAgIGJyZWFrOwogICAgY2FzZSAnaTMyJzoKICAgICAgICBIRUFQMzJbcHRyID4+IDJdID0gdmFsdWU7CiAgICAgICAgYnJlYWs7CiAgICBjYXNlICdpNjQnOgogICAgICAgIHRlbXBJNjQgPSBbCiAgICAgICAgICAgIHZhbHVlID4+PiAwLAogICAgICAgICAgICAodGVtcERvdWJsZSA9IHZhbHVlLCArTWF0aF9hYnModGVtcERvdWJsZSkgPj0gKzEgPyB0ZW1wRG91YmxlID4gKzAgPyAoTWF0aF9taW4oK01hdGhfZmxvb3IodGVtcERvdWJsZSAvICs0Mjk0OTY3Mjk2KSwgKzQyOTQ5NjcyOTUpIHwgMCkgPj4+IDAgOiB+fitNYXRoX2NlaWwoKHRlbXBEb3VibGUgLSArKH5+dGVtcERvdWJsZSA+Pj4gMCkpIC8gKzQyOTQ5NjcyOTYpID4+PiAwIDogMCkKICAgICAgICBdLCBIRUFQMzJbcHRyID4+IDJdID0gdGVtcEk2NFswXSwgSEVBUDMyW3B0ciArIDQgPj4gMl0gPSB0ZW1wSTY0WzFdOwogICAgICAgIGJyZWFrOwogICAgY2FzZSAnZmxvYXQnOgogICAgICAgIEhFQVBGMzJbcHRyID4+IDJdID0gdmFsdWU7CiAgICAgICAgYnJlYWs7CiAgICBjYXNlICdkb3VibGUnOgogICAgICAgIEhFQVBGNjRbcHRyID4+IDNdID0gdmFsdWU7CiAgICAgICAgYnJlYWs7CiAgICBkZWZhdWx0OgogICAgICAgIGFib3J0KCdpbnZhbGlkIHR5cGUgZm9yIHNldFZhbHVlOiAnICsgdHlwZSk7CiAgICB9Cn0KdmFyIEFMTE9DX05PTkUgPSAzOwpmdW5jdGlvbiBnZXRNZW1vcnkoc2l6ZSkgewogICAgaWYgKCFydW50aW1lSW5pdGlhbGl6ZWQpCiAgICAgICAgcmV0dXJuIGR5bmFtaWNBbGxvYyhzaXplKTsKICAgIHJldHVybiBfbWFsbG9jKHNpemUpOwp9CnZhciBVVEY4RGVjb2RlciA9IHR5cGVvZiBUZXh0RGVjb2RlciAhPT0gJ3VuZGVmaW5lZCcgPyBuZXcgVGV4dERlY29kZXIoJ3V0ZjgnKSA6IHVuZGVmaW5lZDsKZnVuY3Rpb24gVVRGOEFycmF5VG9TdHJpbmcodThBcnJheSwgaWR4LCBtYXhCeXRlc1RvUmVhZCkgewogICAgdmFyIGVuZElkeCA9IGlkeCArIG1heEJ5dGVzVG9SZWFkOwogICAgdmFyIGVuZFB0ciA9IGlkeDsKICAgIHdoaWxlICh1OEFycmF5W2VuZFB0cl0gJiYgIShlbmRQdHIgPj0gZW5kSWR4KSkKICAgICAgICArK2VuZFB0cjsKICAgIGlmIChlbmRQdHIgLSBpZHggPiAxNiAmJiB1OEFycmF5LnN1YmFycmF5ICYmIFVURjhEZWNvZGVyKSB7CiAgICAgICAgcmV0dXJuIFVURjhEZWNvZGVyLmRlY29kZSh1OEFycmF5LnN1YmFycmF5KGlkeCwgZW5kUHRyKSk7CiAgICB9IGVsc2UgewogICAgICAgIHZhciBzdHIgPSAnJzsKICAgICAgICB3aGlsZSAoaWR4IDwgZW5kUHRyKSB7CiAgICAgICAgICAgIHZhciB1MCA9IHU4QXJyYXlbaWR4KytdOwogICAgICAgICAgICBpZiAoISh1MCAmIDEyOCkpIHsKICAgICAgICAgICAgICAgIHN0ciArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHUwKTsKICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHZhciB1MSA9IHU4QXJyYXlbaWR4KytdICYgNjM7CiAgICAgICAgICAgIGlmICgodTAgJiAyMjQpID09IDE5MikgewogICAgICAgICAgICAgICAgc3RyICs9IFN0cmluZy5mcm9tQ2hhckNvZGUoKHUwICYgMzEpIDw8IDYgfCB1MSk7CiAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgfQogICAgICAgICAgICB2YXIgdTIgPSB1OEFycmF5W2lkeCsrXSAmIDYzOwogICAgICAgICAgICBpZiAoKHUwICYgMjQwKSA9PSAyMjQpIHsKICAgICAgICAgICAgICAgIHUwID0gKHUwICYgMTUpIDw8IDEyIHwgdTEgPDwgNiB8IHUyOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgdTAgPSAodTAgJiA3KSA8PCAxOCB8IHUxIDw8IDEyIHwgdTIgPDwgNiB8IHU4QXJyYXlbaWR4KytdICYgNjM7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKHUwIDwgNjU1MzYpIHsKICAgICAgICAgICAgICAgIHN0ciArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKHUwKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIHZhciBjaCA9IHUwIC0gNjU1MzY7CiAgICAgICAgICAgICAgICBzdHIgKz0gU3RyaW5nLmZyb21DaGFyQ29kZSg1NTI5NiB8IGNoID4+IDEwLCA1NjMyMCB8IGNoICYgMTAyMyk7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICB9CiAgICByZXR1cm4gc3RyOwp9CmZ1bmN0aW9uIFVURjhUb1N0cmluZyhwdHIsIG1heEJ5dGVzVG9SZWFkKSB7CiAgICByZXR1cm4gcHRyID8gVVRGOEFycmF5VG9TdHJpbmcoSEVBUFU4LCBwdHIsIG1heEJ5dGVzVG9SZWFkKSA6ICcnOwp9CmZ1bmN0aW9uIHN0cmluZ1RvVVRGOEFycmF5KHN0ciwgb3V0VThBcnJheSwgb3V0SWR4LCBtYXhCeXRlc1RvV3JpdGUpIHsKICAgIGlmICghKG1heEJ5dGVzVG9Xcml0ZSA+IDApKQogICAgICAgIHJldHVybiAwOwogICAgdmFyIHN0YXJ0SWR4ID0gb3V0SWR4OwogICAgdmFyIGVuZElkeCA9IG91dElkeCArIG1heEJ5dGVzVG9Xcml0ZSAtIDE7CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7ICsraSkgewogICAgICAgIHZhciB1ID0gc3RyLmNoYXJDb2RlQXQoaSk7CiAgICAgICAgaWYgKHUgPj0gNTUyOTYgJiYgdSA8PSA1NzM0MykgewogICAgICAgICAgICB2YXIgdTEgPSBzdHIuY2hhckNvZGVBdCgrK2kpOwogICAgICAgICAgICB1ID0gNjU1MzYgKyAoKHUgJiAxMDIzKSA8PCAxMCkgfCB1MSAmIDEwMjM7CiAgICAgICAgfQogICAgICAgIGlmICh1IDw9IDEyNykgewogICAgICAgICAgICBpZiAob3V0SWR4ID49IGVuZElkeCkKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBvdXRVOEFycmF5W291dElkeCsrXSA9IHU7CiAgICAgICAgfSBlbHNlIGlmICh1IDw9IDIwNDcpIHsKICAgICAgICAgICAgaWYgKG91dElkeCArIDEgPj0gZW5kSWR4KQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIG91dFU4QXJyYXlbb3V0SWR4KytdID0gMTkyIHwgdSA+PiA2OwogICAgICAgICAgICBvdXRVOEFycmF5W291dElkeCsrXSA9IDEyOCB8IHUgJiA2MzsKICAgICAgICB9IGVsc2UgaWYgKHUgPD0gNjU1MzUpIHsKICAgICAgICAgICAgaWYgKG91dElkeCArIDIgPj0gZW5kSWR4KQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIG91dFU4QXJyYXlbb3V0SWR4KytdID0gMjI0IHwgdSA+PiAxMjsKICAgICAgICAgICAgb3V0VThBcnJheVtvdXRJZHgrK10gPSAxMjggfCB1ID4+IDYgJiA2MzsKICAgICAgICAgICAgb3V0VThBcnJheVtvdXRJZHgrK10gPSAxMjggfCB1ICYgNjM7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaWYgKG91dElkeCArIDMgPj0gZW5kSWR4KQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIG91dFU4QXJyYXlbb3V0SWR4KytdID0gMjQwIHwgdSA+PiAxODsKICAgICAgICAgICAgb3V0VThBcnJheVtvdXRJZHgrK10gPSAxMjggfCB1ID4+IDEyICYgNjM7CiAgICAgICAgICAgIG91dFU4QXJyYXlbb3V0SWR4KytdID0gMTI4IHwgdSA+PiA2ICYgNjM7CiAgICAgICAgICAgIG91dFU4QXJyYXlbb3V0SWR4KytdID0gMTI4IHwgdSAmIDYzOwogICAgICAgIH0KICAgIH0KICAgIG91dFU4QXJyYXlbb3V0SWR4XSA9IDA7CiAgICByZXR1cm4gb3V0SWR4IC0gc3RhcnRJZHg7Cn0KZnVuY3Rpb24gc3RyaW5nVG9VVEY4KHN0ciwgb3V0UHRyLCBtYXhCeXRlc1RvV3JpdGUpIHsKICAgIHJldHVybiBzdHJpbmdUb1VURjhBcnJheShzdHIsIEhFQVBVOCwgb3V0UHRyLCBtYXhCeXRlc1RvV3JpdGUpOwp9CmZ1bmN0aW9uIGxlbmd0aEJ5dGVzVVRGOChzdHIpIHsKICAgIHZhciBsZW4gPSAwOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyArK2kpIHsKICAgICAgICB2YXIgdSA9IHN0ci5jaGFyQ29kZUF0KGkpOwogICAgICAgIGlmICh1ID49IDU1Mjk2ICYmIHUgPD0gNTczNDMpCiAgICAgICAgICAgIHUgPSA2NTUzNiArICgodSAmIDEwMjMpIDw8IDEwKSB8IHN0ci5jaGFyQ29kZUF0KCsraSkgJiAxMDIzOwogICAgICAgIGlmICh1IDw9IDEyNykKICAgICAgICAgICAgKytsZW47CiAgICAgICAgZWxzZSBpZiAodSA8PSAyMDQ3KQogICAgICAgICAgICBsZW4gKz0gMjsKICAgICAgICBlbHNlIGlmICh1IDw9IDY1NTM1KQogICAgICAgICAgICBsZW4gKz0gMzsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGxlbiArPSA0OwogICAgfQogICAgcmV0dXJuIGxlbjsKfQp2YXIgVVRGMTZEZWNvZGVyID0gdHlwZW9mIFRleHREZWNvZGVyICE9PSAndW5kZWZpbmVkJyA/IG5ldyBUZXh0RGVjb2RlcigndXRmLTE2bGUnKSA6IHVuZGVmaW5lZDsKZnVuY3Rpb24gVVRGMTZUb1N0cmluZyhwdHIpIHsKICAgIHZhciBlbmRQdHIgPSBwdHI7CiAgICB2YXIgaWR4ID0gZW5kUHRyID4+IDE7CiAgICB3aGlsZSAoSEVBUDE2W2lkeF0pCiAgICAgICAgKytpZHg7CiAgICBlbmRQdHIgPSBpZHggPDwgMTsKICAgIGlmIChlbmRQdHIgLSBwdHIgPiAzMiAmJiBVVEYxNkRlY29kZXIpIHsKICAgICAgICByZXR1cm4gVVRGMTZEZWNvZGVyLmRlY29kZShIRUFQVTguc3ViYXJyYXkocHRyLCBlbmRQdHIpKTsKICAgIH0gZWxzZSB7CiAgICAgICAgdmFyIGkgPSAwOwogICAgICAgIHZhciBzdHIgPSAnJzsKICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICB2YXIgY29kZVVuaXQgPSBIRUFQMTZbcHRyICsgaSAqIDIgPj4gMV07CiAgICAgICAgICAgIGlmIChjb2RlVW5pdCA9PSAwKQogICAgICAgICAgICAgICAgcmV0dXJuIHN0cjsKICAgICAgICAgICAgKytpOwogICAgICAgICAgICBzdHIgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShjb2RlVW5pdCk7CiAgICAgICAgfQogICAgfQp9CmZ1bmN0aW9uIHN0cmluZ1RvVVRGMTYoc3RyLCBvdXRQdHIsIG1heEJ5dGVzVG9Xcml0ZSkgewogICAgaWYgKG1heEJ5dGVzVG9Xcml0ZSA9PT0gdW5kZWZpbmVkKSB7CiAgICAgICAgbWF4Qnl0ZXNUb1dyaXRlID0gMjE0NzQ4MzY0NzsKICAgIH0KICAgIGlmIChtYXhCeXRlc1RvV3JpdGUgPCAyKQogICAgICAgIHJldHVybiAwOwogICAgbWF4Qnl0ZXNUb1dyaXRlIC09IDI7CiAgICB2YXIgc3RhcnRQdHIgPSBvdXRQdHI7CiAgICB2YXIgbnVtQ2hhcnNUb1dyaXRlID0gbWF4Qnl0ZXNUb1dyaXRlIDwgc3RyLmxlbmd0aCAqIDIgPyBtYXhCeXRlc1RvV3JpdGUgLyAyIDogc3RyLmxlbmd0aDsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbnVtQ2hhcnNUb1dyaXRlOyArK2kpIHsKICAgICAgICB2YXIgY29kZVVuaXQgPSBzdHIuY2hhckNvZGVBdChpKTsKICAgICAgICBIRUFQMTZbb3V0UHRyID4+IDFdID0gY29kZVVuaXQ7CiAgICAgICAgb3V0UHRyICs9IDI7CiAgICB9CiAgICBIRUFQMTZbb3V0UHRyID4+IDFdID0gMDsKICAgIHJldHVybiBvdXRQdHIgLSBzdGFydFB0cjsKfQpmdW5jdGlvbiB3cml0ZUFycmF5VG9NZW1vcnkoYXJyYXksIGJ1ZmZlcikgewogICAgSEVBUDguc2V0KGFycmF5LCBidWZmZXIpOwp9CmZ1bmN0aW9uIHdyaXRlQXNjaWlUb01lbW9yeShzdHIsIGJ1ZmZlciwgZG9udEFkZE51bGwpIHsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyLmxlbmd0aDsgKytpKSB7CiAgICAgICAgSEVBUDhbYnVmZmVyKysgPj4gMF0gPSBzdHIuY2hhckNvZGVBdChpKTsKICAgIH0KICAgIGlmICghZG9udEFkZE51bGwpCiAgICAgICAgSEVBUDhbYnVmZmVyID4+IDBdID0gMDsKfQpmdW5jdGlvbiBkZW1hbmdsZShmdW5jKSB7CiAgICByZXR1cm4gZnVuYzsKfQpmdW5jdGlvbiBkZW1hbmdsZUFsbCh0ZXh0KSB7CiAgICB2YXIgcmVnZXggPSAvX19aW1x3XGRfXSsvZzsKICAgIHJldHVybiB0ZXh0LnJlcGxhY2UocmVnZXgsIGZ1bmN0aW9uICh4KSB7CiAgICAgICAgdmFyIHkgPSBkZW1hbmdsZSh4KTsKICAgICAgICByZXR1cm4geCA9PT0geSA/IHggOiB5ICsgJyBbJyArIHggKyAnXSc7CiAgICB9KTsKfQpmdW5jdGlvbiBqc1N0YWNrVHJhY2UoKSB7CiAgICB2YXIgZXJyID0gbmV3IEVycm9yKCk7CiAgICBpZiAoIWVyci5zdGFjaykgewogICAgICAgIHRyeSB7CiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcigwKTsKICAgICAgICB9IGNhdGNoIChlKSB7CiAgICAgICAgICAgIGVyciA9IGU7CiAgICAgICAgfQogICAgICAgIGlmICghZXJyLnN0YWNrKSB7CiAgICAgICAgICAgIHJldHVybiAnKG5vIHN0YWNrIHRyYWNlIGF2YWlsYWJsZSknOwogICAgICAgIH0KICAgIH0KICAgIHJldHVybiBlcnIuc3RhY2sudG9TdHJpbmcoKTsKfQpmdW5jdGlvbiBhbGlnblVwKHgsIG11bHRpcGxlKSB7CiAgICBpZiAoeCAlIG11bHRpcGxlID4gMCkgewogICAgICAgIHggKz0gbXVsdGlwbGUgLSB4ICUgbXVsdGlwbGU7CiAgICB9CiAgICByZXR1cm4geDsKfQp2YXIgYnVmZmVyLCBIRUFQOCwgSEVBUFU4LCBIRUFQMTYsIEhFQVBVMTYsIEhFQVAzMiwgSEVBUFUzMiwgSEVBUEYzMiwgSEVBUEY2NDsKZnVuY3Rpb24gdXBkYXRlR2xvYmFsQnVmZmVyVmlld3MoKSB7CiAgICBNb2R1bGVbJ0hFQVA4J10gPSBIRUFQOCA9IG5ldyBJbnQ4QXJyYXkoYnVmZmVyKTsKICAgIE1vZHVsZVsnSEVBUDE2J10gPSBIRUFQMTYgPSBuZXcgSW50MTZBcnJheShidWZmZXIpOwogICAgTW9kdWxlWydIRUFQMzInXSA9IEhFQVAzMiA9IG5ldyBJbnQzMkFycmF5KGJ1ZmZlcik7CiAgICBNb2R1bGVbJ0hFQVBVOCddID0gSEVBUFU4ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTsKICAgIE1vZHVsZVsnSEVBUFUxNiddID0gSEVBUFUxNiA9IG5ldyBVaW50MTZBcnJheShidWZmZXIpOwogICAgTW9kdWxlWydIRUFQVTMyJ10gPSBIRUFQVTMyID0gbmV3IFVpbnQzMkFycmF5KGJ1ZmZlcik7CiAgICBNb2R1bGVbJ0hFQVBGMzInXSA9IEhFQVBGMzIgPSBuZXcgRmxvYXQzMkFycmF5KGJ1ZmZlcik7CiAgICBNb2R1bGVbJ0hFQVBGNjQnXSA9IEhFQVBGNjQgPSBuZXcgRmxvYXQ2NEFycmF5KGJ1ZmZlcik7Cn0KdmFyIFNUQUNLX0JBU0UgPSA3MTEyMCwgRFlOQU1JQ19CQVNFID0gNTMxNDAwMCwgRFlOQU1JQ1RPUF9QVFIgPSA3MTA4ODsKdmFyIFRPVEFMX1NUQUNLID0gNTI0Mjg4MDsKdmFyIElOSVRJQUxfVE9UQUxfTUVNT1JZID0gTW9kdWxlWydUT1RBTF9NRU1PUlknXSB8fCAxNjc3NzIxNjsKaWYgKElOSVRJQUxfVE9UQUxfTUVNT1JZIDwgVE9UQUxfU1RBQ0spCiAgICBlcnIoJ1RPVEFMX01FTU9SWSBzaG91bGQgYmUgbGFyZ2VyIHRoYW4gVE9UQUxfU1RBQ0ssIHdhcyAnICsgSU5JVElBTF9UT1RBTF9NRU1PUlkgKyAnISAoVE9UQUxfU1RBQ0s9JyArIFRPVEFMX1NUQUNLICsgJyknKTsKaWYgKE1vZHVsZVsnYnVmZmVyJ10pIHsKICAgIGJ1ZmZlciA9IE1vZHVsZVsnYnVmZmVyJ107Cn0gZWxzZSB7CiAgICB7CiAgICAgICAgYnVmZmVyID0gbmV3IEFycmF5QnVmZmVyKElOSVRJQUxfVE9UQUxfTUVNT1JZKTsKICAgIH0KfQp1cGRhdGVHbG9iYWxCdWZmZXJWaWV3cygpOwpIRUFQMzJbRFlOQU1JQ1RPUF9QVFIgPj4gMl0gPSBEWU5BTUlDX0JBU0U7CmZ1bmN0aW9uIGNhbGxSdW50aW1lQ2FsbGJhY2tzKGNhbGxiYWNrcykgewogICAgd2hpbGUgKGNhbGxiYWNrcy5sZW5ndGggPiAwKSB7CiAgICAgICAgdmFyIGNhbGxiYWNrID0gY2FsbGJhY2tzLnNoaWZ0KCk7CiAgICAgICAgaWYgKHR5cGVvZiBjYWxsYmFjayA9PSAnZnVuY3Rpb24nKSB7CiAgICAgICAgICAgIGNhbGxiYWNrKCk7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KICAgICAgICB2YXIgZnVuYyA9IGNhbGxiYWNrLmZ1bmM7CiAgICAgICAgaWYgKHR5cGVvZiBmdW5jID09PSAnbnVtYmVyJykgewogICAgICAgICAgICBpZiAoY2FsbGJhY2suYXJnID09PSB1bmRlZmluZWQpIHsKICAgICAgICAgICAgICAgIE1vZHVsZVsnZHluQ2FsbF92J10oZnVuYyk7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBNb2R1bGVbJ2R5bkNhbGxfdmknXShmdW5jLCBjYWxsYmFjay5hcmcpOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZnVuYyhjYWxsYmFjay5hcmcgPT09IHVuZGVmaW5lZCA/IG51bGwgOiBjYWxsYmFjay5hcmcpOwogICAgICAgIH0KICAgIH0KfQp2YXIgX19BVFBSRVJVTl9fID0gW107CnZhciBfX0FUSU5JVF9fID0gW107CnZhciBfX0FUTUFJTl9fID0gW107CnZhciBfX0FUUE9TVFJVTl9fID0gW107CnZhciBydW50aW1lSW5pdGlhbGl6ZWQgPSBmYWxzZTsKdmFyIHJ1bnRpbWVFeGl0ZWQgPSBmYWxzZTsKZnVuY3Rpb24gcHJlUnVuKCkgewogICAgaWYgKE1vZHVsZVsncHJlUnVuJ10pIHsKICAgICAgICBpZiAodHlwZW9mIE1vZHVsZVsncHJlUnVuJ10gPT0gJ2Z1bmN0aW9uJykKICAgICAgICAgICAgTW9kdWxlWydwcmVSdW4nXSA9IFtNb2R1bGVbJ3ByZVJ1biddXTsKICAgICAgICB3aGlsZSAoTW9kdWxlWydwcmVSdW4nXS5sZW5ndGgpIHsKICAgICAgICAgICAgYWRkT25QcmVSdW4oTW9kdWxlWydwcmVSdW4nXS5zaGlmdCgpKTsKICAgICAgICB9CiAgICB9CiAgICBjYWxsUnVudGltZUNhbGxiYWNrcyhfX0FUUFJFUlVOX18pOwp9CmZ1bmN0aW9uIGVuc3VyZUluaXRSdW50aW1lKCkgewogICAgaWYgKHJ1bnRpbWVJbml0aWFsaXplZCkKICAgICAgICByZXR1cm47CiAgICBydW50aW1lSW5pdGlhbGl6ZWQgPSB0cnVlOwogICAgY2FsbFJ1bnRpbWVDYWxsYmFja3MoX19BVElOSVRfXyk7Cn0KZnVuY3Rpb24gcHJlTWFpbigpIHsKICAgIGNhbGxSdW50aW1lQ2FsbGJhY2tzKF9fQVRNQUlOX18pOwp9CmZ1bmN0aW9uIGV4aXRSdW50aW1lKCkgewogICAgcnVudGltZUV4aXRlZCA9IHRydWU7Cn0KZnVuY3Rpb24gcG9zdFJ1bigpIHsKICAgIGlmIChNb2R1bGVbJ3Bvc3RSdW4nXSkgewogICAgICAgIGlmICh0eXBlb2YgTW9kdWxlWydwb3N0UnVuJ10gPT0gJ2Z1bmN0aW9uJykKICAgICAgICAgICAgTW9kdWxlWydwb3N0UnVuJ10gPSBbTW9kdWxlWydwb3N0UnVuJ11dOwogICAgICAgIHdoaWxlIChNb2R1bGVbJ3Bvc3RSdW4nXS5sZW5ndGgpIHsKICAgICAgICAgICAgYWRkT25Qb3N0UnVuKE1vZHVsZVsncG9zdFJ1biddLnNoaWZ0KCkpOwogICAgICAgIH0KICAgIH0KICAgIGNhbGxSdW50aW1lQ2FsbGJhY2tzKF9fQVRQT1NUUlVOX18pOwp9CmZ1bmN0aW9uIGFkZE9uUHJlUnVuKGNiKSB7CiAgICBfX0FUUFJFUlVOX18udW5zaGlmdChjYik7Cn0KZnVuY3Rpb24gYWRkT25Qb3N0UnVuKGNiKSB7CiAgICBfX0FUUE9TVFJVTl9fLnVuc2hpZnQoY2IpOwp9CnZhciBNYXRoX2FicyA9IE1hdGguYWJzOwp2YXIgTWF0aF9jZWlsID0gTWF0aC5jZWlsOwp2YXIgTWF0aF9mbG9vciA9IE1hdGguZmxvb3I7CnZhciBNYXRoX21pbiA9IE1hdGgubWluOwp2YXIgcnVuRGVwZW5kZW5jaWVzID0gMDsKdmFyIHJ1bkRlcGVuZGVuY3lXYXRjaGVyID0gbnVsbDsKdmFyIGRlcGVuZGVuY2llc0Z1bGZpbGxlZCA9IG51bGw7CmZ1bmN0aW9uIGFkZFJ1bkRlcGVuZGVuY3koaWQpIHsKICAgIHJ1bkRlcGVuZGVuY2llcysrOwogICAgaWYgKE1vZHVsZVsnbW9uaXRvclJ1bkRlcGVuZGVuY2llcyddKSB7CiAgICAgICAgTW9kdWxlWydtb25pdG9yUnVuRGVwZW5kZW5jaWVzJ10ocnVuRGVwZW5kZW5jaWVzKTsKICAgIH0KfQpmdW5jdGlvbiByZW1vdmVSdW5EZXBlbmRlbmN5KGlkKSB7CiAgICBydW5EZXBlbmRlbmNpZXMtLTsKICAgIGlmIChNb2R1bGVbJ21vbml0b3JSdW5EZXBlbmRlbmNpZXMnXSkgewogICAgICAgIE1vZHVsZVsnbW9uaXRvclJ1bkRlcGVuZGVuY2llcyddKHJ1bkRlcGVuZGVuY2llcyk7CiAgICB9CiAgICBpZiAocnVuRGVwZW5kZW5jaWVzID09IDApIHsKICAgICAgICBpZiAocnVuRGVwZW5kZW5jeVdhdGNoZXIgIT09IG51bGwpIHsKICAgICAgICAgICAgY2xlYXJJbnRlcnZhbChydW5EZXBlbmRlbmN5V2F0Y2hlcik7CiAgICAgICAgICAgIHJ1bkRlcGVuZGVuY3lXYXRjaGVyID0gbnVsbDsKICAgICAgICB9CiAgICAgICAgaWYgKGRlcGVuZGVuY2llc0Z1bGZpbGxlZCkgewogICAgICAgICAgICB2YXIgY2FsbGJhY2sgPSBkZXBlbmRlbmNpZXNGdWxmaWxsZWQ7CiAgICAgICAgICAgIGRlcGVuZGVuY2llc0Z1bGZpbGxlZCA9IG51bGw7CiAgICAgICAgICAgIGNhbGxiYWNrKCk7CiAgICAgICAgfQogICAgfQp9Ck1vZHVsZVsncHJlbG9hZGVkSW1hZ2VzJ10gPSB7fTsKTW9kdWxlWydwcmVsb2FkZWRBdWRpb3MnXSA9IHt9Owp2YXIgbWVtb3J5SW5pdGlhbGl6ZXIgPSBudWxsOwp2YXIgZGF0YVVSSVByZWZpeCA9ICdkYXRhOmFwcGxpY2F0aW9uL29jdGV0LXN0cmVhbTtiYXNlNjQsJzsKZnVuY3Rpb24gaXNEYXRhVVJJKGZpbGVuYW1lKSB7CiAgICByZXR1cm4gU3RyaW5nLnByb3RvdHlwZS5zdGFydHNXaXRoID8gZmlsZW5hbWUuc3RhcnRzV2l0aChkYXRhVVJJUHJlZml4KSA6IGZpbGVuYW1lLmluZGV4T2YoZGF0YVVSSVByZWZpeCkgPT09IDA7Cn0KX19BVElOSVRfXy5wdXNoKHsKICAgIGZ1bmM6IGZ1bmN0aW9uICgpIHsKICAgICAgICBfX19lbXNjcmlwdGVuX2Vudmlyb25fY29uc3RydWN0b3IoKTsKICAgIH0KfSk7Cm1lbW9yeUluaXRpYWxpemVyID0gJ2RhdGE6YXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtO2Jhc2U2NCxBQUFBQUFBQUFBQUFBUUlIQ0FNSkJnVUVCQW9LREFvS0Nnc0tCQVFFQkEwT0FBQUFBQUFBQUFFQ0JBVUhEeEVIQ1FjQUJ3TVNGUVFCSWlRbEp5OHhKeWtuQVFFak1qVUFJUUlrSlNjdk1TY3BKd0lDSXpJMUFTRWlKaVlvTURFb0tDZ0RBd015TlFFaElnUWxKeTh4U2d0S0JBUWpFaFVDSVNJa0JTY3ZNU2NwVEFVRkl6STFBeUVpQmdZb01ERW9LRTBHQmlNU0ZRTWhJaVFsQnk4eEIwNEhCd2NqTWpVRUlTSW1KZ2d3TVFnSUNBZ0lJekkxQkNFaUJDVUhMekVIQ1FjSkNTTVNGUVJoWWdSbGgyOXhoNDZIQ29kakVoVUNJU0lFSlNjdk1TY0xKd3NMSXhJVkFtRmlaQVdIYjNHSGpvY01oMk55ZFFOaFlnWUdpSEJ4aUlpSURZaGpFaFVESVNLRUpRY3ZNUWNPQnc0T0k1S1ZCQ0VpSkNVbkR6RW5LU2NQSnlNeU5RVWhJaVltS0JBeEtDZ29FQ2dqTWpVRklTSWtKU2N2RVNjcEp4RW5JekkxQmlFaUVpVW5MekZURkZNU0VpTVNGUUJoWWhKbGgyOXhoNDZIRTRkakVoVUFJU0lTSlNjdk1TY1VKeFFVSXhJVkFDRWlGU1VuTHpGV0YxWVZGU01TRlFOaFloVmxoMjl4aDQ2SEZvZGpFaFVESVNJVkpTY3ZNU2NYSnhjWEl4SVZBd0FDRVJFQUFBQUFBRUlCQVFBQUFBQUFBZ1FFRXhNQUFRQWlORFFEQXdBQUFBSUVCQk1UQUFJQUFBQUFBQUFBQUFFQUFnSUFBQUFBQVFBQkFoTVRBQUVCQUFJQ0FBQUFBU0V3QmdRREF6QUFJVEFHQkFVRk1BTWhNQVlFQlFVd0FpRXdCZ1FEQXpBQkFBQUFBQUFBQUFBQVlnRUJBQUFBQUFCaUFRRUFNQUFFQUdKVVZCTXdBQU13UWxSVUF6QXdBekJDQkFRVE1EQUVBQUFBQUFBQUFBQVRBQUVCQUFBQUFDTUFBUUVDUUFBQkl3QUJBUUpBQUFBREFBTTJGRUFBQVZOQUJUWUVRRUFBVTBBRk5nUkFRQUZUUUFZR0JFQkFBd0FBQUFBQUFBQUFBQUVBQWdBQUFBQUFBUU1ERkJRQUFRQUJBQUlWRlFBQ0FBRURBeFFVQUFJQUlUTXpCQVFBQUFBaEFESUZCUUFBQUdNQUFRQUFBQUFBWXdBQkVqQUFCQ0JqSUFFQ01DQURBR05WVmhRd0FBTXdRMVZXQkRBd0F6QkRCVllVTURBRU1FTlZCaFF3TUFRQUFBQUFBQUFBQUFBQkFBQUFBQUFBQUFFQUFCUVVBQUVBQVFBQUZSVUFBZ0FCQUFBVUZBQUNJQUVnSUFRRUlBRWdBU0FnQlFVZ0FRRUFBUUVBQUFBQUFRQUJBUlFVQUFFQkFBRUJBQUFBQVFFQUFRRUZCUUFCSVFBaElRUUVBQUFCQUFFQkJRVUFBQUFERVJFQUFBQUFJQU1CQVFJZ0lBSWdBd0VCQWlBZ0FRQURCUVVVQUFBQklBTUZCUVFnSUFFQUF3VUZGQUFBQWdJQUFRRUFBQUFBQWdBQkFRQUFBQUVDQUJRVUV3QUFBU0lBQkFRREFBQUFJZ0FFQkFNQUFBRUFBQUFBQUFBQUFBRUFBZ0lBQUFBQUFRQUJBeFFVQUFFQkFBSUNBQUFBQVFFQUFRTUZCUUFCSVFBaEF3UUVBQUFCQUFFREJRVUFBSEVHY1FaN0Juc0dld1o3Qm40R2ZnWitCbjRHQUFBQUFBQUFBQUI2Qm5vR2VnWjZCZ0FBQUFBQUFBQUFlUVo1Qm5rR2VRWUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlZR2hnYUdCb1lHQUFBQUFBQUFBQUNOQm8wR2pBYU1CbzRHamdhSUJvZ0dtQWFZQnBFR2tRYXBCcWtHcVFhcEJxOEdyd2F2QnE4R0FBQUFBQUFBQUFBQUFBQUFBQUFBQUxvR3VnYTdCcnNHdXdhN0JzQUd3QWJCQnNFR3dRYkJCcjRHdmdhK0JyNEcwZ2JTQnRNRzB3WUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTWNHeHdiR0JzWUd5QWJJQmdBQXl3YkxCc1VHeFFiSkJza0cwQWJRQnRBRzBBWUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBekFiTUJzd0d6QVpMQmtzR1RBWk1CazBHVFFaT0JrNEdUd1pQQmxBR1VBWlJCbEVHVWdaU0JpRUdJZ1lpQmlNR0l3WWtCaVFHSlFZbEJpWUdKZ1ltQmlZR0p3WW5CaWdHS0FZb0JpZ0dLUVlwQmlvR0tnWXFCaW9HS3dZckJpc0dLd1lzQml3R0xBWXNCaTBHTFFZdEJpMEdMZ1l1Qmk0R0xnWXZCaThHTUFZd0JqRUdNUVl5QmpJR013WXpCak1HTXdZMEJqUUdOQVkwQmpVR05RWTFCalVHTmdZMkJqWUdOZ1kzQmpjR053WTNCamdHT0FZNEJqZ0dPUVk1QmprR09RWTZCam9HT2dZNkJrRUdRUVpCQmtFR1FnWkNCa0lHUWdaREJrTUdRd1pEQmtRR1JBWkVCa1FHUlFaRkJrVUdSUVpHQmtZR1JnWkdCa2NHUndaSEJrY0dTQVpJQmtrR1NRWktCa29HU2daS0Jsd0dYQVpkQmwwR1hnWmVCbDhHWHdZQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFNQUFRQUJBQUFDQWdBQUFRSUFBUUVDQUFFQkF3QUFBQUFBQUFBQUFBRUFBd0FCQUFNQUFBRUNBQUFCQWdBQkFRSUFBUUVESVJFaEV3RVZJUmNER1NFZEF4OEJJd01sQXlrRExRTXhBelVCT1FFN0FUMEJQd05CQTBVRFNRTk5BMUVEVlFOWkExMEFBQUFBQUFBQUFBQUFBd0FEWVFObEEya1RiUU54QTNVRGVRRjlBWDhEZ1FRQmhBR0VBWVFCaEFHRUFVUURCQUVFQndRSUJBZ0VBUUFBQUFBQUFBQUFBQUFCaFFHSEFZa0Jpd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBWUpBQ0VBSVFBQUFDRUFBUUFCQUFNQUN4WUxEZ3NDQXdBREFBc0dBd0FEQUFNQUF3QURBQU1BQXdBTEtnTUFDVGdCQUFFQUFRQUpOQWt5Q1RZQkFBRUFDVHdCQUFFQUFRQUJBQUVBQVFBSk9nRUFBd0FEQUFNQUF3QURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQ3o0REFBTUFBd0FEQUFNQUMwSURBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQWxPQzFBREFBTUFDMW9EQUFsVUMxWUJBQUVBQVFBSmtBbUpDWWNKaXdtU0FRQUpqZ3VzQVFBREFBTUFDNVFEQUFsZUNXQUFBQUFBQUFBQUFBQUFBQUFBQVFBQUFBQUFBUUlEQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUlEQUFBQUFBQUFBQUFBQUFBQUFBRUFBQUFCQWdNQUFRSURBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQ0F3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFQkFRRUJBQUFBQUFBQUFBQUFBQUFBQUFEQXdNQUF3QURBd01EQXdNREF3TURBQUFCQUFFQUFRQUJBQUVDQXdBQkFBRUNBd0FCQUFFQ0F3QUJBZ01BQVFJREFBRUNBd0FCQWdNQUFRQUJBQUVBQVFBQkFnTUFBUUlEQUFFQ0F3QUJBZ01BQVFJREFBRUNBd0FCQWdNQUFRSURBQUVDQXdBQkFnTUFBUUlEQUFFQ0F3QUJBZ01BQVFJREFBRUNBd0FCQUFFQUFRSURBQUVBQVFBQkFBRUFBQUJkQkdVRWJRUjFCSTBFbFFTZEJLVUVyUVMxQkxzRXd3VExCTk1FMndUakJPa0U4UVQ1QkFFRkJBVU1CUlFGSEFVa0JTd0ZLQVV3QlRnRlFBVkZCVTBGVlFWZEJXRUZhUVZ4QlhrRmdRV0pCWVVGalFXU0Jab0ZvQVdvQmJBRnVBWEFCY2dGMEFYWUJkMEY1UVhvQmZBRitBVUFCZ1lHRGdZTkJoVUdIUVlsQmpVR0xRWTlCa1VHZlFSVkJsMEdUUVp0Qm04R2R3WmxCb2NHalFhVkJuOEdwUWFyQnJNR25RYkRCc2tHMFFhN0J1RUc1d2J2QnRrRy93WUhCdzhIOXdZZkJ5VUhMUWNYQnowSFF3ZExCelVIV3dkZ0IyZ0hVd2Q0QjM4SGh3ZHdCd2tHandlWEIzMEVud2VuQjY4SGZRUzNCNzhIeHdmTUI5UUgyd2ZqQjMwRXlBWHJCL01IK3djRENGVUZFd2dMQ01nRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRkd3aklCU01JSndndkNNZ0ZOUWpJQlRzSVF3aExDRlVGVlFWVENGc0l5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0ZZQWhvQ01nRnlBVndDSGdJZ0FpSUNKQUl5QVdZQ0tBSXFBaTRDTWdGd0FqQ0NNb0lzQWpJQmMwSTRRalZDTjBJNlFqSUJmRUk5d2ovQ0FjSnlBVVhDUjhKSndrUENYMEVmUVEzQ1RvSlFna3ZDVklKU2duSUJWa0p5QVZvQ1dFSmNBbDRDWHdKaEFtTUNmMEVsQW1YQ1owSnBBbVhDU1FGckFtdEJLMEVyUVN0QkxRSnJRU3RCSzBFeEFuTUNkUUozQW5rQ2VnSjhBbThDUWdLRUFyNENRQUtHQW9nQ2lnS01BcElDamdLUUFwUUNsZ0tad3BzQ2w4S2RBcDBDblFLZEFwMENuUUtkQXAwQ253S2hBci9DSWNLandxV0Nwc0tvd3IvQ0tvS3FRcTZDcjBLL3dqL0NMSUsvd2ovQ1A4SS93ai9DTXdLMUFyRUN2OEkvd2ovQ05rSy93ai9DUDhJL3dqL0NQOEkvd2pmQ3VjSy93anZDdllLL3dqL0NQOEkvd2ovQ1A4SS93ai9DSFFLZEFwMENuUUsvZ3AwQ2dVTERBdDBDblFLZEFwMENuUUtkQXAwQ25RSy93Z1VDeHNMSHdzbEMvOElLd3VrQ2xVRk93c3pDME1MclFTdEJLMEVTd3Y5QkZNTHlBVlpDMmtMWVF0aEN5UUZjUXQ1QzRFTGZRU0pDLzhJL3dpUUMvOEkvd2ovQ1A4SS93ai9DSmdMbmd1dUM2WUxDUWJJQmJZTFd3aklCYjRMeGd2S0M4Z0Z5QVhQQzljTC93amZDNlFLNXd2dEMvOEk1d3YxQy84SXBBci9DUDhJL3dqL0NQOEkvd2ovQ1A4SS9RdklCY2dGeUFVRkRNZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0ZDd3pJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFVUURNZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhOQ1A4SS93Z1lETWdGR3d6SUJTTU1LUXd4RERrTVBneklCY2dGUWd6SUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVZKRE1nRlVBeFdETWdGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVZlRE1nRnlBWElCV1lNeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQldnTXlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVZ2RE1nRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0ZkZ3pJQmNnRnlBVjlESVVNeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0ZpZ3pJQmNnRmtneklCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRmxneklCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFXWkRNZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFXY0RNZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRm9neklCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnFneklCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCYThNeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVcwRE1nRnlBWElCYmtNeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY0VNeUF6TURNZ0Z5QVhJQmRNTXlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmRrTTZReklCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRjRRei9DUEVNY0FuSUJjZ0Z5QVhJQmNnRnlBWElCY2dGOWd6K0RLMEVEZzBHRGNnRnlBVVdEUjROTGcydEJETU5PdzFCRFgwRUpnMUpEVkVOeUFWWkRXa05iQTFoRFhRTkhRWjhEWU1Od1FodEJwTU5pdzJiRGNnRm93MnJEYk1OeUFXN0RjTU55dzNURGRzTjN3M25EZjBFL1FUSUJlOE55QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYM0RRTU8rdzE5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFQ3c0TERnc09DdzRMRGdzT0N3NExEZ3NPQ3c0TERnc09DdzRMRGdzT0N3NExEZ3NPQ3c0TERnc09DdzRMRGdzT0N3NExEZ3NPQ3c0TERnc09DdzRMRGhNT0V3NFREaE1PRXc0VERoTU9FdzRURGhNT0V3NFREaE1PRXc0VERoTU9FdzRURGhNT0V3NFREaE1PRXc0VERoTU9FdzRURGhNT0V3NFREaE1PRXc0VERoTU9FdzRURGhNT0V3NFREaE1PRXc0VERoTU9FdzRURGhNT0V3NFREaE1PRXc0VERoTU9FdzRURGhNT0V3NFREaE1PRXc0VERoTU9FdzRURGhNT0V3NFREaE1PRXc0VERoTU9FdzRURGhNT0V3NFREaE1PRXc0VERoTU9FdzRURGhNT0V3NFREaE1PRXc0VERoTU9FdzRURGhNT0V3NFREaE1PRXc0VERoTU9FdzRURGhNT0V3NFREaE1PRXc0VERoTU9FdzRURGhNT0V3NFREaE1PRXc0VERoTU9FdzRURGhNT0V3NFREaE1PRXc0VERoTU9FdzRURGhNT0V3NFREaE1PRXc0VERoTU9FdzRURGhNT0V3NFREaE1PRXc0VERoTU9FdzRURGhNT0V3NFREaE1PRXc0VERoTU9FdzRURGhNT0V3NFREaE1PRXc0VERoTU9FdzRURGhNT0V3NFREaE1PRXc0VERoTU9FdzRURGhNT0V3NFREaE1PRXc0VERoTU9FdzRURGhNT0V3NFREaE1PRXc0VERoTU9FdzRURGhNT0V3NFREaE1PRXc0VERoTU9FdzRURGhNT0V3N0lCY2dGeUFVYkRzZ0YxQXdpRGljT3lBWElCY2dGTHc3SUJjZ0Z6QWg5QkVVT05RNDlEc2dGeUFWTkRsVU95QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVZhRG1JT3lBVm1Ec2dGYkE1d0RuZ09nQTZIRG84T3lBWElCY2dGbFE2dERtMEV0UTY5RHNJTzRRaWREcVVPQ3c0TERnc09DdzRMRGdzT0N3NExEZ3NPQ3c0TERnc09DdzRMRGdzT0N3NExEZ3NPQ3c0TERnc09DdzRMRGdzT0N3NExEZ3NPQ3c0TERnc09DdzRMRHZRUjlCRTBFblFTdEJMc0Vpd1RiQk9rRStRVEVCUlFGSkFVb0JUZ0ZCUVZWQldFRmNRVkJCWVVGa2dXZ0JiQUZnQVhRQmQwRjZBWDRCY1lHRFFZZEJpQUNzQUtBQXRBQzRBTFFBckFDMEFLNGd0QUNrQUtRQXBBQ2lJTTJ3SGJBV0lNb2d4QUNrQUtRQXBBQ3VJTUFnMUFDa0FLUWcyQ0RjSU5BZzVDRG9JT3dnNzVEdHNCMndFZEQxRVAyd0Y1RDlzQjJ3SGJBZHNCcGcvYkFkc0Iyd0hiQWRzQjJ3SGJBYm9QMndIeUR6SVEyd0U5RU5zQjJ3SGJBWE1RUUFxekVFQUtRQXBBQ2tBS1FBcEFDa0FLUUFwQUNrQUtRQXBBQ2tBS1FBcEFDa0FLUUFwQUNrQUtRQXBBQ2tBS1FBcEFDa0FLUUFwQUNrQUtRQXBBQ2tBS1FBcEFDa0FLUUFwQUNrQUtRQXBBQ2tBS1FBcEFDa0FLUUFwQUNrQUtRQXBBQ2tBS1FBcEFDa0FLUUFwQUNrQUtRQXBBQ2tBS1FBcEFDa0FLUUFwQUNrQUtRQXBBQ2tBS1FBcEFDa0FLUUFwQUNrQUtRQXBBQ2tBS1FBcEFDa0FLUUFwQUNrQUtRQXBBQ2tBS1FBcEFDa0FLUUFwQUNrQUtRQXBBQ2tBS1FBcEFDa0FLUUFwQUNrQUtRQXBBQ2tBS1FBcEFDa0FLUUFwQUNrQUtRQXBBQ2tBS1FBcEFDa0FLUUFwQUNrQUtRQXBBQ2tBS1FBcEFDa0FLUUFwQUNrQUtRQXBBQ2tBS1FBcEFDa0FLUUFwQUNrQUtRQXBBQ2tBS1FBcEFDa0FLUUFwQUNrQUtRQXBBQ2tBS1FBcEFDa0FLUUFwQUNrQUtRQXBBQ2tBS1FBcEFDa0FLUUFwQUNrQUtRQXBBQ2tBS1FBcEFDa0FLUUFwQUNrQUtRQXBBQ2tBS1FBcEFDa0FLUUFwQUNrQUtRQXBBQ2tBS1FBcEFDa0FLUUFwQUNrQUtRQXBBQ2tBS1FBcEFDa0FLUUFwQUNrQUtRQXBBQ2tBS1FBcEFDa0FLUUFwQUNrQUtRQXBBQ2tBS1FBcEFDa0FLUUFwQUNrQUtRQXBBQ2tBS1FBcEFDa0FLUUFwQUNrQUtRQXBBQ2tBS1FBcEFDa0FLUUFwQUNrQUtRQXBBQ2tBS1FBcEFDa0FLUUFwQUNrQUtRQXBBQ2tBS1FBcEFDa0FLUUFwQUNrQUtRQXBBQ2tBS1FBcEFDa0FLUUFwQUNrQUtRQXBBQ2tBS1FBcEFDa0FLUUFwQUNrQUtRQXBBQ2tBS1FBcEFDa0FLUUFwQUNrQUtRQXBBQ2tBS1FBcEFDa0FLUUFwQUNrQUtRQXBBQ2tBS1FBcEFDa0FLUUFwQUNrQUtRQXBBQ2tBS1FBcEFDa0FLUUFwQUNrQUtRQXBBQ2tBS1FBcEFDa0FLUUFwQUNrQUtRQXBBQ2tBS1FBcEFDa0FLUUFwQUNrQUtRQXBBQ2tBS1FBcEFDa0FLUUFwQUNrQUtRQXBBQ2tBS1FBcEFDa0FLUUFwQUNrQUtRQXBBQ2tBS1FBcEFDa0FLUUFwQUNrQUs4eEJBQ2tBS1FBcEFDa0FLUUFwQUNrQUtRQXBBQ2tBS1FBcEFDa0FLUUFwQUNrQUtRQXBBQ2tBS1FBcEFDa0FLUUFwQUNrQUtRQXBBQ2tBS1FBcEFDZ0FIQUFjQUJ3QUhBQWNBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQWNBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQWNBQndBSEFBY0FCd0FIQUFjQUJ3QUhNeEVBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQWNBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQWNBQndBSEFBY0FCd0FIQUFjQUJ3QUhBQWNBQndBSEFBY0FCek1SZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFUS0R0RU8yUTU5Qk1nRnlBWElCZGNMNlE3aERnQVA4UTc0RGdnUGhRc1FEMzBFZlFSOUJIMEV3UWpJQlJnUElBL0lCU2dQTUE4MER6d1B5QVZFRDMwRVZRVmZCVXdQeUFWUUQxZ1BhQTlnRDhnRmNBL0lCWGNQZlFSOUJIMEVmUVRJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVZwQzgwSWJBNTlCSDBFZlFSOUJJY1BmdytLRDVJUDRRaWFEMzBFb2crcUQ3SVBmUVI5Qk1nRndnL0tEN29QMmcvaEQ5SVA2US94RDMwRUFSRDVEOGdGQkJBTUVCUVFIQkFrRUgwRWZRVElCY2dGTEJCOUJGVUZOQkQ5QkR3UXlBVkVFSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCRXdRZlFSOUJIMEVmUVJVRUZ3UVl4QjlCSDBFZlFSOUJIMEVjeEQrQlhzUWF4QlNDWU1RaXhDUkVLa1FtUkNoRUswUVVnbTlFTFVReFJEVkVNMFFmUVI5Qk53UTVCQWdCdXdRL0JBQ0VRb1I5QkI5QkgwRWZRUjlCTWdGRWhFYUVYMEV5QVVpRVNvUmZRUjlCSDBFZlFSOUJNZ0ZNaEU2RVgwRXlBVkNFVW9SVWhISUJXSVJXaEY5QkRzSWFoRjlCSDBFZlFSOUJIMEVmUVRJQlhJUmZRUjlCSDBFVlFYOUJIb1JmUVI5QkgwRWZRUjlCSDBFZlFSOUJKSVJnaEdLRWNnRm9oR2FFY2dGd2doOUJIMEVmUVI5QkgwRWZRUjlCSDBFdUJHOUVhb1JzaEhORWNVUmZRUjlCTndSNEJIVUVmQVI2QkZhRVgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QlBRUmZRUjlCSDBFZlFSOUJIMEVmUVI5Qk1nRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnpBaDlCSDBFZlFRRUVnd1NGQkw4RWNnRnlBWElCY2dGeUFYSUJSd1NmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRXlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0ZKQko5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGSmhKOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5Qk1nRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhDQ09FSUxoSjlCSDBFWWc0MkVzZ0ZQaEpHRWs0UzJReDlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSVkJmMEVWaEo5QkgwRWZRVElCY2dGWGhKakVtc1NmUVI5QkhNU3lBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRmV4TElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0ZneEo5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCTWdGeUFYSUJjZ0Z5QVhJQmNnRnlBWGhDSDBFZlFSaURzZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVg3RFgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFeUFYSUJjZ0ZpeEtRRXBnU2ZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QlA4SS93ai9DUDhJL3dqL0NQOEltQXYvQ0tBUy93aW5FcThTdFJML0NMc1Mvd2ovQ01NU2ZRUjlCSDBFZlFUTEV2OEkvd2ltQ3RNU2ZRUjlCSDBFZlFUakV1b1M3eEwxRXYwU0JSTU5FK2NTRlJNZEV5VVRLaFA4RXVNUzZoTG1FdlVTTWhQa0VqVVQ1eEk5RTBVVFRSTlVFMEFUU0JOUUUxY1RReE5mRTlzUy93ai9DUDhJL3dqL0NQOEkvd2ovQ1A4SS93ai9DUDhJL3dqL0NQOEkvd2drQlc4VEpBVjJFMzBUWnhOOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRU0VFNHdUZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCTWdGeUFYSUJjZ0Z5QVhJQlpRVGZRUlZCYVFUbkJOOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRU3NFN3dUdEJOOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJNd1QxQlBjRStRVDdCUDBFMzBFeEJOOUJIMEVmUVI5QkgwRWZRUjlCSDBFL3dqOEUvOEkvd2lRQ3dFVUJSU1lDdzBVL3dqL0NQd1Qvd2k2RW4wRUZSUWRGQ0VVS1JReEZIMEVmUVI5QkgwRS93ai9DUDhJL3dqL0NQOEkvd2c1RlA4SS93ai9DUDhJL3dqL0NQOEkvd2ovQ1A4SS93ai9DUDhJL3dqL0NQOEkvd2ovQ1A4SS93ai9DUDhJUVJSSkZQOEkvd2ovQ0pBTC93ai9DRkVVZlFUOEUvOElXUlQvQ0dFVW1ndDlCSDBFL0JPa0N2OElaUlQvQ0cwVUhSVC9DSDBFZlFSOUJKb0xmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIVVV5QVhJQlh3VXlBWElCY2dGaEJUSUJZd1V5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0ZlZ3pJQmNnRmxCVElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCWndVcEJUSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVc1RE1nRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVdyRk1nRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJiSVV5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnVSVElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBVnBDMzBFeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z2UlRJQmNnRnlBWElCY2dGeUFWUUQ4Z0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJYOFN5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJjZ0Z5QVhJQmNnRnlBWENGSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVRJQmNnRnlBWElCY29VeUFYSUJjZ0Z5QVhJQmNnRnlBWElCY2dGeUFYSUJWQVBmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5Qk5vVTBoVFNGTklVZlFSOUJIMEVmUVFrQlNRRkpBVWtCU1FGSkFVa0JlSVVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRWZRUjlCSDBFZlFSOUJIMEVmUVI5QkgwRUV3NFREaE1PRXc0VERoTU9FdzRURGhNT0V3NFREaE1PRXc0VERoTU9FdzRURGhNT0V3NFREaE1PRXc0VERoTU9FdzRURGhNT0V3NFREaE1PRXc0VERoTU9FdzRURGhNT0V3NFREaE1PRXc0VERoTU9FdzRURGhNT0V3NFREaE1PRXc0VERoTU9FdzRURGhNT0V3NFREaE1PRXc0VERoTU9FdzRURGhNTzZoUmNCQThBRHdBUEFBOEFEd0FQQUE4QUR3QVBBQThBRHdBUEFBOEFEd0FQQUE4QUR3QVBBQThBRHdBUEFBOEFEd0FQQUE4QUR3QVBBQThBRHdBUEFBOEFEd0FNQUJjQUZ3QVhBQmtBRndBWEFCY0FGQUFWQUJjQUdBQVhBQk1BRndBWEFFa0FpUURKQUFrQlNRR0pBY2tCQ1FKSkFva0NGd0FYQUJnQUdBQVlBQmNBRndBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBRkFBWEFCVUFHZ0FXQUJvQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUJRQUdBQVZBQmdBRHdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBOEFEd0FQQUE4QUR3QVBBQThBRHdBUEFBOEFEd0FQQUE4QUR3QVBBQThBRHdBUEFBOEFEd0FQQUE4QUR3QVBBQThBRHdBUEFBOEFEd0FQQUE4QUR3QU1BQmNBR1FBWkFCa0FHUUFiQUJjQUdnQWJBQVVBSEFBWUFCQUFHd0FhQUJzQUdBQkxBNHNER2dBQ0FCY0FGd0FhQUFzREJRQWRBTXMwU3pUTFBCY0FBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQmdBQVFBQkFBRUFBUUFCQUFFQUFRQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FZQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FCQUFJQUFRQUNBQUVBQWdBQkFBSUFBUUFDQUFFQUFnQUJBQUlBQVFBQ0FBRUFBZ0FCQUFJQUFRQUNBQUVBQWdBQkFBSUFBUUFDQUFFQUFnQUJBQUlBQVFBQ0FBRUFBZ0FCQUFJQUFRQUNBQUVBQWdBQkFBSUFBUUFDQUFFQUFnQUJBQUlBQVFBQ0FBRUFBZ0FCQUFJQUFnQUJBQUlBQVFBQ0FBRUFBZ0FCQUFJQUFnQUJBQUlBQVFBQ0FBRUFBZ0FCQUFJQUFRQUNBQUVBQWdBQkFBSUFBUUFDQUFFQUFnQUJBQUlBQVFBQ0FBRUFBZ0FCQUFJQUFRQUNBQUVBQWdBQkFBSUFBUUFDQUFFQUFnQUJBQUlBQVFBQ0FBRUFBZ0FCQUFJQUFRQUNBQUVBQVFBQ0FBRUFBZ0FCQUFJQUFnQUNBQUVBQVFBQ0FBRUFBZ0FCQUFFQUFnQUJBQUVBQVFBQ0FBSUFBUUFCQUFFQUFRQUNBQUVBQVFBQ0FBRUFBUUFCQUFJQUFnQUNBQUVBQVFBQ0FBRUFBUUFDQUFFQUFnQUJBQUlBQVFBQkFBSUFBUUFDQUFJQUFRQUNBQUVBQVFBQ0FBRUFBUUFCQUFJQUFRQUNBQUVBQVFBQ0FBSUFCUUFCQUFJQUFnQUNBQVVBQlFBRkFBVUFBUUFEQUFJQUFRQURBQUlBQVFBREFBSUFBUUFDQUFFQUFnQUJBQUlBQVFBQ0FBRUFBZ0FCQUFJQUFRQUNBQUVBQWdBQ0FBRUFBZ0FCQUFJQUFRQUNBQUVBQWdBQkFBSUFBUUFDQUFFQUFnQUJBQUlBQVFBQ0FBSUFBUUFEQUFJQUFRQUNBQUVBQVFBQkFBSUFBUUFDQUFFQUFnQUJBQUlBQVFBQ0FBRUFBZ0FCQUFJQUFRQUNBQUVBQWdBQkFBSUFBUUFDQUFFQUFnQUJBQUlBQVFBQ0FBRUFBZ0FCQUFJQUFRQUNBQUVBQWdBQkFBSUFBUUFDQUFFQUFnQUJBQUlBQVFBQ0FBRUFBZ0FCQUFJQUFRQUNBQUlBQWdBQ0FBSUFBZ0FDQUFFQUFRQUNBQUVBQVFBQ0FBSUFBUUFDQUFFQUFRQUJBQUVBQWdBQkFBSUFBUUFDQUFFQUFnQUJBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFCUUFDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFhQUJvQUdnQWFBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFCb0FHZ0FhQUJvQUdnQWFBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQUVBQVFBQkFBRUFBUUFHZ0FhQUJvQUdnQWFBQm9BR2dBRUFCb0FCQUFhQUJvQUdnQWFBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQWFBQm9BR2dBYUFCb0FCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FCQUFJQUFRQUNBQVFBR2dBQkFBSUFBQUFBQUFRQUFnQUNBQUlBRndBQkFBQUFBQUFBQUFBQUdnQWFBQUVBRndBQkFBRUFBUUFBQUFFQUFBQUJBQUVBQWdBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQUFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFRQUNBQUlBQVFBQkFBRUFBZ0FDQUFJQUFRQUNBQUVBQWdBQkFBSUFBUUFDQUFFQUFnQUJBQUlBQVFBQ0FBRUFBZ0FCQUFJQUFRQUNBQUVBQWdBQkFBSUFBZ0FDQUFJQUFnQUJBQUlBR0FBQkFBSUFBUUFCQUFJQUFnQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQVFBQ0FBRUFBZ0FCQUFJQUFRQUNBQUVBQWdBQkFBSUFBUUFDQUFFQUFnQUJBQUlBQVFBQ0FBRUFBZ0FCQUFJQUFRQUNBQUVBQWdBQkFBSUFBUUFDQUFFQUFnQWJBQVlBQmdBR0FBWUFCZ0FIQUFjQUFRQUNBQUVBQWdBQkFBSUFBUUFDQUFFQUFnQUJBQUlBQVFBQ0FBRUFBZ0FCQUFJQUFRQUNBQUVBQWdBQkFBSUFBUUFDQUFFQUFnQUJBQUlBQVFBQ0FBRUFBZ0FCQUFJQUFRQUNBQUVBQWdBQkFBSUFBUUFDQUFFQUFnQUJBQUlBQVFBQ0FBRUFBZ0FCQUFJQUFRQUJBQUlBQVFBQ0FBRUFBZ0FCQUFJQUFRQUNBQUVBQWdBQkFBSUFBZ0FCQUFJQUFRQUNBQUVBQWdBQkFBSUFBUUFDQUFFQUFnQUJBQUlBQVFBQ0FBRUFBZ0FCQUFJQUFRQUNBQUVBQWdBQkFBSUFBUUFDQUFFQUFnQUJBQUlBQVFBQ0FBRUFBZ0FCQUFJQUFRQUNBQUVBQWdBQkFBSUFBUUFDQUFFQUFnQUFBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUFBQUFBQkFBWEFCY0FGd0FYQUJjQUZ3QUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FYQUJNQUFBQUFBQnNBR3dBWkFBQUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFFd0FHQUJjQUJnQUdBQmNBQmdBR0FCY0FCZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFBQUFBQUFBQUFBQUZBQVVBQlFBRkFCY0FGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQVFBQkFBRUFBUUFCQUFHQUFZQUJnQUZ3QVhBQmtBRndBWEFCc0FHd0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUZ3QVFBQUFBRndBWEFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUVBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFTUUNKQU1rQUNRRkpBWWtCeVFFSkFra0NpUUlYQUJjQUZ3QVhBQVVBQlFBR0FBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUZ3QUZBQVlBQmdBR0FBWUFCZ0FHQUFZQUVBQWJBQVlBQmdBR0FBWUFCZ0FHQUFRQUJBQUdBQVlBR3dBR0FBWUFCZ0FHQUFVQUJRQkpBSWtBeVFBSkFVa0JpUUhKQVFrQ1NRS0pBZ1VBQlFBRkFCc0FHd0FGQUJjQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBQUFCQUFCUUFHQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQUFBQUFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBU1FDSkFNa0FDUUZKQVlrQnlRRUpBa2tDaVFJRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUVBQVFBR3dBWEFCY0FGd0FFQUFBQUFBQUdBQmtBR1FBR0FBWUFCZ0FHQUFRQUJnQUdBQVlBQkFBR0FBWUFCZ0FHQUFZQUFBQUFBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUFBQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBR0FBWUFCZ0FHQUFRQUJnQUdBQVlBQmdBR0FBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQmdBR0FBWUFBQUFBQUJjQUFBQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCZ0FHQUJBQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBQUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQlFBRkFBWUFCZ0FYQUJjQVNRQ0pBTWtBQ1FGSkFZa0J5UUVKQWtrQ2lRSVhBQVFBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFZQUJnQUdBQWdBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCZ0FJQUFZQUJRQUlBQWdBQ0FBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQ0FBSUFBZ0FDQUFHQUFnQUNBQUZBQVlBQmdBR0FBWUFCZ0FHQUFZQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUdBQVlBQUFBQUFFa0FpUURKQUFrQlNRR0pBY2tCQ1FKSkFva0NCUUFGQUJrQUdRRExOOHMxeXovTE5NczhTd2tiQUJrQUJRQVhBQVlBQUFBRkFBWUFDQUFJQUFBQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFBQUFBQUZBQVVBQUFBQUFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUFBQVVBQlFBRkFBVUFCUUFGQUFVQUFBQUZBQUFBQUFBQUFBVUFCUUFGQUFVQUFBQUFBQVlBQlFBSUFBZ0FDQUFHQUFZQUJnQUdBQUFBQUFBSUFBZ0FBQUFBQUFnQUNBQUdBQVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQUFBQUFBQUFBQUFGQUFVQUFBQUZBQUFBQUFBQUFBQUFBQUFBQUVrQWlRREpBQWtCU1FHSkFja0JDUUpKQW9rQ0JnQUdBQVVBQlFBRkFBWUFGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFZQUJnQUlBQUFBQlFBRkFBVUFCUUFGQUFVQUFBQUFBQUFBQUFBRkFBVUFBQUFBQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBQUFBVUFCUUFGQUFVQUJRQUZBQVVBQUFBRkFBVUFBQUFGQUFVQUFBQUZBQVVBQUFBQUFBWUFBQUFJQUFnQUNBQUdBQVlBQUFBQUFBQUFBQUFHQUFZQUFBQUFBQVlBQmdBR0FBQUFBQUFBQUFZQUFBQUFBQUFBQUFBQUFBQUFBQUFGQUFVQUJRQUZBQUFBQlFBQUFBVUFCUUFHQUFZQUFBQUFBRWtBaVFESkFBa0JTUUdKQWNrQkNRSkpBb2tDRndBWkFBQUFBQUFBQUFBQUFBQUFBQUFBQlFBR0FBWUFCZ0FHQUFZQUJnQUFBQVlBQmdBSUFBQUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFBQUFGQUFVQUJRQUFBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFBQUFVQUJRQUZBQVVBQlFBRkFBVUFBQUFGQUFVQUFBQUZBQVVBQlFBRkFBVUFBQUFBQUFZQUJRQUlBQWdBQ0FBR0FBWUFCZ0FHQUFZQUFBQUdBQVlBQ0FBQUFBZ0FDQUFHQUFBQUFBQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFVQUJRQUdBQVlBQUFBQUFFa0FpUURKQUFrQlNRR0pBY2tCQ1FKSkFva0NHd0FGQU1zMFN6VExQTXMzeXpYTFB3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBWUFDQUFJQUFBQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFBQUFBQUZBQVVBQUFBQUFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUFBQVVBQlFBRkFBVUFCUUFGQUFVQUFBQUZBQVVBQUFBRkFBVUFCUUFGQUFVQUFBQUFBQVlBQlFBSUFBWUFDQUFHQUFZQUJnQUdBQUFBQUFBSUFBZ0FBQUFBQUFnQUNBQUdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUdBQWdBQUFBQUFBQUFBQUFGQUFVQUFBQUZBQUFBQUFBQUFBQUFBQUFBQUVrQWlRREpBQWtCU1FHSkFja0JDUUpKQW9rQ3l3ZExIa3Q0R3dBYkFCc0FHd0FiQUJzQUdRQWJBQUFBQUFBQUFBQUFBQUFBQUFBQUJnQUZBQUFBQlFBRkFBVUFCUUFGQUFVQUFBQUFBQUFBQlFBRkFBVUFBQUFGQUFVQUJRQUZBQUFBQUFBQUFBVUFCUUFBQUFVQUFBQUZBQVVBQUFBQUFBQUFCUUFGQUFBQUFBQUFBQVVBQlFBRkFBQUFBQUFBQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQUFBQUFBQUFBQUFDQUFJQUFZQUNBQUlBQUFBQUFBQUFBZ0FDQUFJQUFBQUNBQUlBQWdBQmdBQUFBQUFCUUFBQUFBQUFBQUFBQUFBQUFBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRkFBVUFCZ0FHQUFBQUFBQkpBSWtBeVFBSkFVa0JpUUhKQVFrQ1NRS0pBZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQkxCWXNGeXdVTEJvc0Z5d1VMQmhzQUJnQUlBQWdBQ0FBR0FBVUFCUUFGQUFVQUJRQUZBQVVBQlFBQUFBVUFCUUFGQUFBQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFBQUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBQUFBQUFBQUFVQUJnQUdBQVlBQ0FBSUFBZ0FDQUFBQUFZQUJnQUdBQUFBQmdBR0FBWUFCZ0FBQUFBQUFBQUFBQUFBQUFBQUFBWUFCZ0FBQUFVQUJRQUZBQUFBQUFBQUFBQUFBQUFGQUFVQUJnQUdBQUFBQUFCSkFJa0F5UUFKQVVrQmlRSEpBUWtDU1FLSkFnQUFCUUFGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQlFBR0FBZ0FDQUFYQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFBQUFVQUJRQUZBQUFBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUFBQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQUFBQlFBRkFBVUFCUUFGQUFBQUFBQUdBQVVBQ0FBR0FBZ0FDQUFJQUFnQUNBQUFBQVlBQ0FBSUFBQUFDQUFJQUFZQUJnQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFVQUFBQUZBQVVBQmdBR0FBQUFBQUJKQUlrQXlRQUpBVWtCaVFISkFRa0NTUUtKQXNzSFN4NUxlTXMwU3pUTFBNczN5elhMUHhzQUJRQUZBQVVBQlFBRkFBVUFCZ0FHQUFnQUNBQUFBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUFBQVVBQlFBRkFBQUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFZQUJnQUZBQWdBQ0FBSUFBWUFCZ0FHQUFZQUFBQUlBQWdBQ0FBQUFBZ0FDQUFJQUFZQUJRQWJBQUFBQUFBQUFBQUFCUUFGQUFVQUNBQUx6QXZLUzhzTHlVczJTOGtMTlFVQUFBQUFBQUFBQUFBQUFBQUFTUUNKQU1rQUNRRkpBWWtCeVFFSkFra0NpUUlBQUFBQUNBQUlBQmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFnQUFBQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUFBQUFBQUFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFBQUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFBQUFVQUFBQUFBQVVBQlFBRkFBVUFCUUFGQUFVQUFBQUFBQUFBQmdBQUFBQUFBQUFBQUFnQUNBQUlBQVlBQmdBR0FBQUFCZ0FBQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCZ0FGQUFVQUJnQUdBQVlBQmdBR0FBWUFCZ0FBQUFBQUFBQUFBQmtBQlFBRkFBVUFCUUFGQUFVQUJBQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUZ3QkpBSWtBeVFBSkFVa0JpUUhKQVFrQ1NRS0pBaGNBRndBQUFBQUFBQUFBQUFBQUJRQUZBQUFBQlFBQUFBQUFCUUFGQUFBQUJRQUFBQUFBQlFBQUFBQUFBQUFBQUFBQUFBQUZBQVVBQlFBRkFBQUFCUUFGQUFVQUJRQUZBQVVBQlFBQUFBVUFCUUFGQUFBQUJRQUFBQVVBQUFBQUFBVUFCUUFBQUFVQUJRQUZBQVVBQmdBRkFBVUFCZ0FHQUFZQUJnQUdBQVlBQUFBR0FBWUFCUUFBQUFBQUJRQUZBQVVBQlFBRkFBQUFCQUFBQUFZQUJnQUdBQVlBQmdBR0FBQUFBQUJKQUlrQXlRQUpBVWtCaVFISkFRa0NTUUtKQWdBQUFBQUZBQVVBQlFBRkFBVUFHd0FiQUJzQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBWEFCY0FHd0FYQUJzQUd3QWJBQVlBQmdBYkFCc0FHd0FiQUJzQUd3QkpBSWtBeVFBSkFVa0JpUUhKQVFrQ1NRS0pBa3MwU3p4TFJFdE1TMVJMWEV0a1MyeExkRXNzR3dBR0FCc0FCZ0FiQUFZQUZBQVZBQlFBRlFBSUFBZ0FCUUFGQUFVQUJRQUZBQVVBQlFBRkFBQUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQUFBQUFBQUFBQUFHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQ0FBR0FBWUFCZ0FHQUFZQUZ3QUdBQVlBQlFBRkFBVUFCUUFGQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUFBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FBQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FHQUJzQUd3QWJBQnNBR3dBYkFBQUFHd0FiQUJjQUZ3QVhBQmNBRndBYkFCc0FHd0FiQUJjQUZ3QUFBQUFBQUFBQUFBQUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFnQUNBQUdBQVlBQmdBR0FBZ0FCZ0FHQUFZQUJnQUdBQVlBQ0FBR0FBWUFDQUFJQUFZQUJnQUZBRWtBaVFESkFBa0JTUUdKQWNrQkNRSkpBb2tDRndBWEFCY0FGd0FYQUJjQUJRQUZBQVVBQlFBRkFBVUFDQUFJQUFZQUJnQUZBQVVBQlFBRkFBWUFCZ0FHQUFVQUNBQUlBQWdBQlFBRkFBZ0FDQUFJQUFnQUNBQUlBQWdBQlFBRkFBVUFCZ0FHQUFZQUJnQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBWUFDQUFJQUFZQUJnQUlBQWdBQ0FBSUFBZ0FDQUFHQUFVQUNBQkpBSWtBeVFBSkFVa0JpUUhKQVFrQ1NRS0pBZ2dBQ0FBSUFBWUFHd0FiQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUJjQUJBQUNBQUlBQWdBQkFBRUFBUUFCQUFFQUFRQUFBQUVBQUFBQUFBQUFBQUFBQUFFQUFBQUFBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUFBQUZBQVVBQlFBRkFBQUFBQUFGQUFVQUJRQUZBQVVBQlFBRkFBQUFCUUFBQUFVQUJRQUZBQVVBQUFBQUFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBQUFCUUFGQUFVQUJRQUFBQUFBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQUFBQlFBRkFBVUFCUUFBQUFBQUJRQUZBQVVBQlFBRkFBVUFCUUFBQUFVQUFBQUZBQVVBQlFBRkFBQUFBQUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBQUFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBQUFBVUFCUUFGQUFVQUFBQUFBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQUFBQUFBR0FBWUFCZ0FYQUJjQUZ3QVhBQmNBRndBWEFCY0FGd0FMQTBzRGl3UExBd3NFU3dTTEJNc0VDd1hMQjBzS3l3eExEOHNSU3hUTEZrc1p5eHRMSG90NEFBQUFBQUFBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQUFBQUFBQUFBQUFBQUFBQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQUFBQUFBSUFBZ0FDQUFJQUFnQUNBQUFBQUFBVEFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQVhBQmNBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQXdBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQlFBRlFBQUFBQUFBQUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUZ3QVhBQmNBaWduS0NRb0tCUUFGQUFVQUJRQUZBQVVBQlFBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFBQUFVQUJRQUZBQVVBQmdBR0FBWUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFZQUJnQUdBQmNBRndBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBR0FBWUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBQUFBVUFCUUFGQUFBQUJnQUdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFHQUFZQUNBQUdBQVlBQmdBR0FBWUFCZ0FHQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFHQUFnQUNBQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBRndBWEFCY0FCQUFYQUJjQUZ3QVpBQVVBQmdBQUFBQUFTUUNKQU1rQUNRRkpBWWtCeVFFSkFra0NpUUlBQUFBQUFBQUFBQUFBQUFCTEJZc0Z5d1VMQmtzR2l3YkxCZ3NIU3dlTEJ3QUFBQUFBQUFBQUFBQUFBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVlBQlFBQUFBQUFBQUFBQUFBQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFYQUJjQUZ3QVhBQmNBRndBVEFCY0FGd0FYQUJjQUJnQUdBQVlBRUFBQUFFa0FpUURKQUFrQlNRR0pBY2tCQ1FKSkFva0NBQUFBQUFBQUFBQUFBQUFBQlFBRkFBVUFCQUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUFBQUFBQUFBQUFBQUFBQUFBQUFGQUFVQUJRQUZBQVVBQmdBR0FBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCZ0FHQUFZQUNBQUlBQWdBQ0FBR0FBWUFDQUFJQUFnQUFBQUFBQUFBQUFBSUFBZ0FCZ0FJQUFnQUNBQUlBQWdBQ0FBR0FBWUFCZ0FBQUFBQUFBQUFBQnNBQUFBQUFBQUFGd0FYQUVrQWlRREpBQWtCU1FHSkFja0JDUUpKQW9rQ0JRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBQUFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUFBQUFBQlFBRkFBVUFCUUFGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBQUFBQUFBQUFBQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFBQUFBQUFBQUFBQUFBQUFFa0FpUURKQUFrQlNRR0pBY2tCQ1FKSkFva0NDd01BQUFBQUFBQWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBR0FBWUFDQUFJQUFZQUFBQUFBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQVFBRndBWEFCY0FGd0FYQUJjQUFBQUFBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FIQUFBQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQ0FBR0FBZ0FCZ0FHQUFZQUJnQUdBQVlBQmdBQUFBWUFDQUFHQUFnQUNBQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUNBQUlBQWdBQ0FBSUFBZ0FCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FBQUFBQUJnQkpBSWtBeVFBSkFVa0JpUUhKQVFrQ1NRS0pBZ0FBQUFBQUFBQUFBQUFBQUVrQWlRREpBQWtCU1FHSkFja0JDUUpKQW9rQ0FBQUFBQUFBQUFBQUFBQUFGd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUFBQUFBQUFBQVlBQmdBR0FBWUFDQUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFHQUFnQUJnQUdBQVlBQmdBR0FBZ0FCZ0FJQUFnQUNBQUlBQWdBQmdBSUFBZ0FCUUFGQUFVQUJRQUZBQVVBQlFBQUFBQUFBQUFBQUVrQWlRREpBQWtCU1FHSkFja0JDUUpKQW9rQ0Z3QVhBQmNBRndBWEFCY0FCUUFJQUFZQUJnQUdBQVlBQ0FBSUFBWUFCZ0FJQUFZQUJnQUdBQVVBQlFCSkFJa0F5UUFKQVVrQmlRSEpBUWtDU1FLSkFnVUFCUUFGQUFVQUJRQUZBQVlBQmdBSUFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJnQUlBQVlBQmdBSUFBZ0FDQUFHQUFnQUJnQUdBQVlBQ0FBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBWEFCY0FGd0FYQUVrQWlRREpBQWtCU1FHSkFja0JDUUpKQW9rQ0FBQUFBQUFBQlFBRkFBVUFTUUNKQU1rQUNRRkpBWWtCeVFFSkFra0NpUUlGQUFVQUJRQUZBQVVBQlFBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQWdBQ0FBR0FBWUFBQUFBQUFBQUZ3QVhBQmNBRndBWEFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVFBQkFBRUFBUUFCQUFFQUJjQUZ3QUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUFBQUFBQUFBQUFBQUFBQUFBQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFBQUFBQUJBQUVBQVFBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVlBQmdBR0FCY0FCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUlBQVlBQmdBR0FBWUFCZ0FHQUFZQUJRQUZBQVVBQlFBR0FBVUFCUUFGQUFVQUNBQUlBQVlBQlFBRkFBZ0FCZ0FHQUFBQUFBQUFBQUFBQUFBQUFBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQVFBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFCQUFFQUFRQUJBQUVBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUFBQVlBQmdBR0FBWUFCZ0FCQUFJQUFRQUNBQUVBQWdBQkFBSUFBUUFDQUFFQUFnQUJBQUlBQVFBQ0FBRUFBZ0FCQUFJQUFRQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUJBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUVBQVFBQkFBRUFBUUFhQUJvQUdnQUFBQUFBQWdBQ0FBSUFBQUFDQUFJQUFRQUJBQUVBQVFBREFCb0FHZ0FBQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FCQUFFQUFRQUJBQUVBQVFBQkFBRUFBZ0FDQUFJQUFnQUNBQUlBQUFBQUFBRUFBUUFCQUFFQUFRQUJBQUFBQUFBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFnQUNBQUlBQWdBQ0FBSUFBQUFBQUFFQUFRQUJBQUVBQVFBQkFBQUFBQUFDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBQUFCQUFBQUFRQUFBQUVBQUFBQkFBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFBQUFBQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUF3QURBQU1BQXdBREFBTUFBd0FEQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FEQUFNQUF3QURBQU1BQXdBREFBTUFBZ0FDQUFJQUFnQUNBQUFBQWdBQ0FBRUFBUUFCQUFFQUF3QWFBQUlBR2dBYUFCb0FBZ0FDQUFJQUFBQUNBQUlBQVFBQkFBRUFBUUFEQUJvQUdnQWFBQUlBQWdBQ0FBSUFBQUFBQUFJQUFnQUJBQUVBQVFBQkFBQUFHZ0FhQUJvQUZnQVhBQmNBRndBWUFCUUFGUUFYQUJjQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUdBQVhBQllBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBTUFCQUFFQUFRQUJBQUVBQUFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBeXdJRUFBQUFBQURMQXdzRVN3U0xCTXNFQ3dVWUFCZ0FHQUFVQUJVQUJBQU1BQXdBREFBTUFBd0FEQUFNQUF3QURBQU1BQXdBRUFBUUFCQUFFQUFRQUJNQUV3QVRBQk1BRXdBVEFCY0FGd0FjQUIwQUZBQWNBQndBSFFBVUFCd0FGd0FYQUJjQUZ3QVhBQmNBRndBWEFBMEFEZ0FRQUJBQUVBQVFBQkFBREFBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBY0FCMEFGd0FYQUJjQUZ3QVdBTXNDQ3dOTEE0c0R5d01MQkVzRWl3VExCQXNGR0FBWUFCZ0FGQUFWQUFBQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBQUFBQUFBQUFaQUJrQUdRQVpBQmtBR1FBWkFCa0FHUUFaQUJrQUdRQVpBQmtBR1FBWkFCa0FHUUFaQUJrQUdRQVpBQmtBR1FBWkFCa0FHUUFaQUJrQUdRQVpBQmtBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBY0FCd0FIQUFjQUJnQUhBQWNBQndBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBYkFCc0FHd0FiQUFFQUd3QUJBQnNBQVFBYkFBRUFBUUFCQUFFQUd3QUNBQUVBQVFBQkFBRUFBZ0FGQUFVQUJRQUZBQUlBR3dBYkFBSUFBZ0FCQUFFQUdBQVlBQmdBR0FBWUFBRUFBZ0FDQUFJQUFnQWJBQmdBR3dBYkFBSUFHd0NMTlFzMlN6YUxOSXM0Q3pVTE9RczlDMEZMTlV0Rnl6WExQY3RGeTAyTEJSc0FHd0FCQUJzQUd3QWJBQnNBQVFBYkFCc0FBZ0FCQUFFQUFRQUNBQUlBQVFBQkFBRUFBZ0FiQUFFQUd3QWJBQmdBQVFBQkFBRUFBUUFCQUJzQUd3Q0tCY29GQ2daS0Jvb0d5Z1lLQjBvSGlnZktCd29JU2dqS0VVb2VDcGhLZUlvRnlnVUtCa29HaWdiS0Jnb0hTZ2VLQjhvSENnaEtDTW9SU2g0S21FcDRTbmhLbUlwNEFRQUNBTW9HeWhHS21NcDRTd1ViQUJzQUFBQUFBQUFBQUFBWUFCZ0FHQUFZQUJnQUd3QWJBQnNBR3dBYkFCZ0FHQUFiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBYkFCc0FHQUFiQUJzQUdBQWJBQnNBR3dBYkFCc0FHd0FiQUJnQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QVlBQmdBR3dBYkFCZ0FHd0FZQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCUUFGUUFVQUJVQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQmdBR0FBYkFCc0FHd0FiQUJzQUd3QWJBQlFBRlFBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHQUFiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCZ0FHQUFZQUJnQUdBQVlBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0RMQWdzSVN3aUxDTXNJQ3dsTENZc0p5d2tMQ2tzS0N3TkxBNHNEeXdNTEJFc0Vpd1RMQkFzRnl3ZkxBZ3NEU3dPTEE4c0RDd1JMQklzRXl3UUxCY3NIQ3doTENJc0l5d2dMQ1VzSml3bkxDUXNLU3dvTEEwc0Rpd1BMQXdzRVN3U0xCTXNFQ3dYTEJ3c0lTd2lMQ01zSUN3bExDWXNKeXdrTENrc0tHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FZQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJnQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHQUFiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCUUFGUUFVQUJVQUZBQVZBQlFBRlFBVUFCVUFGQUFWQUJRQUZRQUxBMHNEaXdQTEF3c0VTd1NMQk1zRUN3WExCd3NEU3dPTEE4c0RDd1JMQklzRXl3UUxCY3NIQ3dOTEE0c0R5d01MQkVzRWl3VExCQXNGeXdjYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FZQUJnQUdBQVlBQmdBRkFBVkFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCUUFGUUFVQUJVQUZBQVZBQlFBRlFBVUFCVUFHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFVQUJVQUZBQVZBQlFBRlFBVUFCVUFGQUFWQUJRQUZRQVVBQlVBRkFBVkFCUUFGUUFVQUJVQUZBQVZBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQlFBRlFBVUFCVUFHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFVQUJVQUdBQVlBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJzQUd3QVlBQmdBR0FBWUFCZ0FHQUFiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBQUFBQUFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQUFBQUFBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBQUFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQUFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUFBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUJBQUlBQVFBQkFBRUFBZ0FDQUFFQUFnQUJBQUlBQVFBQ0FBRUFBUUFCQUFFQUFnQUJBQUlBQWdBQkFBSUFBZ0FDQUFJQUFnQUNBQVFBQkFBQkFBRUFBUUFDQUFFQUFnQUNBQnNBR3dBYkFCc0FHd0FiQUFFQUFnQUJBQUlBQmdBR0FBWUFBUUFDQUFBQUFBQUFBQUFBQUFBWEFCY0FGd0FYQUVzMEZ3QVhBQUlBQWdBQ0FBSUFBZ0FDQUFBQUFnQUFBQUFBQUFBQUFBQUFBZ0FBQUFBQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQmdBRkFBVUFCUUFGQUFVQUJRQUZBQUFBQlFBRkFBVUFCUUFGQUFVQUJRQUFBQVVBQlFBRkFBVUFCUUFGQUFVQUFBQUZBQVVBQlFBRkFBVUFCUUFGQUFBQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCY0FGd0FjQUIwQUhBQWRBQmNBRndBWEFCd0FIUUFYQUJ3QUhRQVhBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QVRBQmNBRndBVEFCY0FIQUFkQUJjQUZ3QWNBQjBBRkFBVkFCUUFGUUFVQUJVQUZBQVZBQmNBRndBWEFCY0FGd0FFQUJjQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUV3QVRBQmNBRndBWEFCY0FFd0FYQUJRQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QUFBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FBQUFBQUFBQUFBQWJBSW9GeWdVS0Jrb0dpZ2JLQmdvSFNnZUtCd1lBQmdBR0FBWUFDQUFJQUJNQUJBQUVBQVFBQkFBRUFCc0FHd0RLQjBvS3lnd0VBQVVBRndBYkFCc0FEQUFYQUJjQUZ3QWJBQVFBQlFCS0JSUUFGUUFVQUJVQUZBQVZBQlFBRlFBVUFCVUFHd0FiQUJRQUZRQVVBQlVBRkFBVkFCUUFGUUFUQUJRQUZRQVZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFBQUFBQUJnQUdBQm9BR2dBRUFBUUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFYQUFRQUJBQUVBQVVBQUFBQUFBQUFBQUFBQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFBQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUFBQWJBQnNBaXdYTEJRc0dTd1liQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFBQUFBQUFBQUFBQUFBYkFCc0FHd0FiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQWl3WExCUXNHU3dhTEJzc0dDd2RMQjRzSHl3Y2JBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFNc0hTd3JMREVzUHl4RkxGTXNXU3hrYkFJc0t5d29MQzBzTGl3dkxDd3NNU3d5TERNc01DdzFMRFlzTnl3MExEaHNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QkxEb3NPeXc0TEQwc1Bpdy9MRHdzUVN4Q0xFTXNRQ3hGTEVZc1J5eEVGQUFVQUJRQUZBQVVBaFFZRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUF4UVVGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQ0ZCZ1VBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUWNGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUNGQlFVQUJRQUZCd1VBQlFBRkFJVjRCUUFGQmdVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBaFFjRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQXhRVUZBQVVBQlFBRkFBVUFCUUFGQUlVR0JRQkZCZ1VBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUNGZWNVSEJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBUlhnRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFZRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQ0ZCZ1VBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBRVVlQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQWhYa0ZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBaFhvRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBeFFVRkFFVUhCUURGQmdVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQXhRY0ZBRVY0UlFyRkRBVUFCUUFGQUFVQUJRQUZBRVVQQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUdCUVlGQmdVR0JRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBUlFZRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBaFFVRkFBVUFCUUFGQUFVQUJRQUZBSVVGQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFDRkJRVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQWhRZEZDZ1VBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFJVUZ4UVVGQmdVQXhRVUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUURGQndVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBUlFjRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQndVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUlVSEJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFCRkhnVUFCUUFGQUFVQUJRQUZBQVVBUlFZRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBSVY0QlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUF4UVVGQUFVQUJRQUZBTVVGQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRREZCUVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQVJYZ0ZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUF4UVlGQUFVQUJRQUZBQVVBUlI0RkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFERkJnVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBUlFVRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBQUFBQUFBQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJBQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQnNBR3dBYkFCc0FHd0FiQUJzQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFFQUJjQUZ3QVhBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQVNRQ0pBTWtBQ1FGSkFZa0J5UUVKQWtrQ2lRSUZBQVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBZ0FCQUFJQUFRQUNBQUVBQWdBQkFBSUFBUUFDQUFFQUFnQUJBQUlBQVFBQ0FBRUFBZ0FCQUFJQUFRQUNBQUVBQWdBQkFBSUFCQUFFQUFZQUJnQUJBQUlBQVFBQ0FBRUFBZ0FCQUFJQUFRQUNBQUVBQWdBQkFBSUFCUUFHQUFjQUJ3QUhBQmNBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBWEFBUUFCUUFGQUFVQUJRQUZBQVVBaWdYS0JRb0dTZ2FLQnNvR0NnZEtCNG9IU2dVR0FBWUFGd0FYQUJjQUZ3QVhBQmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQWFBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQWFBQm9BR2dBYUFCb0FHZ0FFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQlFBRUFBUUFBZ0FGQUFVQUJRQUZBQVVBR2dBYUFBRUFBZ0FCQUFJQUFRQUNBQUVBQWdBQkFBSUFBUUFDQUFFQUFnQUNBQUlBQVFBQ0FBRUFBZ0FCQUFJQUFRQUNBQUVBQWdBQkFBSUFBUUFDQUFFQUFnQUJBQUlBQkFBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQVFBQ0FBRUFBZ0FCQUFFQUFnQUJBQUlBQVFBQ0FBRUFBZ0FCQUFJQUJBQWFBQm9BQVFBQ0FBRUFBZ0FGQUFFQUFnQUJBQUlBQWdBQ0FBRUFBZ0FCQUFJQUFRQUNBQUVBQWdBQkFBSUFBUUFDQUFFQUFRQUJBQUVBQVFBQ0FBRUFBUUFCQUFFQUFRQUNBQUVBQWdBQkFBSUFBQUFBQUFBQUFBQUFBQUFBQlFBRkFBWUFCUUFGQUFVQUJnQUZBQVVBQlFBRkFBWUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQWdBQ0FBR0FBWUFDQUFiQUJzQUd3QWJBQUFBQUFBQUFBQUF5elJMTk1zOHl6ZkxOY3MvR3dBYkFCa0FHd0FBQUFBQUFBQUFBQUFBQUFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFGd0FYQUJjQUZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNBQUlBQWdBQ0FBR0FBWUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCY0FGd0JKQUlrQXlRQUpBVWtCaVFISkFRa0NTUUtKQWdBQUFBQUFBQUFBQUFBQUFBZ0FDQUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBRkFBVUFCUUFGQUFVQUJRQVhBQmNBRndBRkFCY0FCUUFGQUFZQUJRQUZBQVVBQlFBRkFBVUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FCY0FGd0FGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUlBQWdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCY0FDQUFYQUJjQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQUFBQkFCSkFJa0F5UUFKQVVrQmlRSEpBUWtDU1FLSkFnQUFBQUFBQUFBQUZ3QVhBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQmdBSUFBZ0FCZ0FHQUFZQUJnQUlBQWdBQmdBSUFBZ0FDQUFGQUFVQUJRQUZBQVVBQmdBRUFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFFa0FpUURKQUFrQlNRR0pBY2tCQ1FKSkFva0NCUUFGQUFVQUJRQUZBQUFBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQmdBR0FBWUFCZ0FHQUFZQUNBQUlBQVlBQmdBSUFBZ0FCZ0FHQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFVQUJRQUZBQVlBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVlBQ0FBQUFBQUFTUUNKQU1rQUNRRkpBWWtCeVFFSkFra0NpUUlBQUFBQUZ3QVhBQmNBRndBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVFBQlFBRkFBVUFCUUFGQUFVQUd3QWJBQnNBQlFBSUFBWUFDQUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFHQUFVQUJnQUdBQVlBQlFBRkFBWUFCZ0FGQUFVQUJRQUZBQVVBQmdBR0FBVUFCZ0FGQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVUFCUUFFQUJjQUZ3QUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQ0FBR0FBWUFDQUFJQUJjQUZ3QUZBQVFBQkFBSUFBWUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFGQUFVQUJRQUZBQVVBQlFBQUFBQUFCUUFGQUFVQUJRQUZBQVVBQUFBQUFBVUFCUUFGQUFVQUJRQUZBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVVBQlFBRkFBVUFCUUFGQUFVQUFBQUZBQVVBQlFBRkFBVUFCUUFGQUFBQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUdnQUVBQVFBQkFBRUFBSUFBZ0FDQUFJQUFnQUNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUZBQVVBQlFBSUFBZ0FCZ0FJQUFnQUJnQUlBQWdBRndBSUFBWUFBQUFBQUVrQWlRREpBQWtCU1FHSkFja0JDUUpKQW9rQ0FBQUFBQUFBQUFBQUFBQUFCUUFGQUFVQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBQUFBQUFBQUFBQUJRQUZBQVVBQlFBRkFBVUFCUUFBQUFBQUFBQUFBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFCSUFFZ0FTQUJJQUVnQVNBQklBRWdBU0FCSUFFZ0FTQUJJQUVnQVNBQklBRWdBU0FCSUFFZ0FTQUJJQUVnQVNBQklBRWdBU0FCSUFFZ0FTQUJJQUVnQVJBQkVBRVFBUkFCRUFFUUFSQUJFQUVRQVJBQkVBRVFBUkFCRUFFUUFSQUJFQUVRQVJBQkVBRVFBUkFCRUFFUUFSQUJFQUVRQVJBQkVBRVFBUkFCRUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVR0JRQUZBQVVBQlFBRkFBVUFCUURGQndVQUJRQUZBQVVBeFFVRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUF4UVlGQU1VR0JRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBTVVIQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUFBQUFBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQmdBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFBQUFVQUJRQUZBQVVBQlFBQUFBVUFBQUFGQUFVQUFBQUZBQVVBQUFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQWdBQ0FBSUFBZ0FDQUFJQUFnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ0FBSUFBZ0FDQUFJQUFBQUFBQUFBQUFBQUFBVUFCZ0FGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUJvQUdnQWFBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQWFBQm9BR2dBYUFCb0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUZRQVVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFBQUFBQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFCa0FHd0FBQUFBQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FYQUJjQUZ3QVhBQmNBRndBWEFCUUFGUUFYQUFBQUFBQUFBQUFBQUFBQUFBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBRndBVEFCTUFGZ0FXQUJRQUZRQVVBQlVBRkFBVkFCUUFGUUFVQUJVQUZBQVZBQmNBRndBVUFCVUFGd0FYQUJjQUZ3QVdBQllBRmdBWEFCY0FGd0FBQUJjQUZ3QVhBQmNBRXdBVUFCVUFGQUFWQUJRQUZRQVhBQmNBRndBWUFCTUFHQUFZQUJnQUFBQVhBQmtBRndBWEFBQUFBQUFBQUFBQUJRQUZBQVVBQlFBRkFBQUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUFBQUFBRUFBQUFBQUFCUUFGQUFVQUJRQUZBQVVBQUFBQUFBVUFCUUFGQUFVQUJRQUZBQUFBQUFBRkFBVUFCUUFGQUFVQUJRQUFBQUFBQlFBRkFBVUFBQUFBQUFBQUdRQVpBQmdBR2dBYkFCa0FHUUFBQUJzQUdBQVlBQmdBR0FBYkFCc0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQUJBQUVBQWJBQnNBQUFBQUFBQUFGd0FYQUJjQUdRQVhBQmNBRndBVUFCVUFGd0FZQUJjQUV3QVhBQmNBU1FDSkFNa0FDUUZKQVlrQnlRRUpBa2tDaVFJWEFCY0FHQUFZQUJnQUZ3QWFBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQVVBQmdBRlFBWUFCUUFGUUFYQUJRQUZRQVhBQmNBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRUFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVFBQkFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFBQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQUFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBQUFCUUFGQUFBQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFBQUFBQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBQUFBQUFDN0FMdUV0NFM0QkxpRXVRUzVoTG9FdW9TN0JMdUl0NGk0Q0xpSXVRaTVpTG9JdW9pN0NMdUFBQUFBQUFBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQmNBRndBWEFBQUFBQUFBQUFBQWl3WExCUXNHU3dhTEJzc0dDd2RMQjRzSHl3ZExDc3NNU3cvTEVVc1V5eFpMR2NzYlN4NExnQXVJQzVBTG1BdWdDNmpLQjhvSHlnZktCOG9IeWd6S0Vjb1J5aEhLRVVvZUNvZ0ttQXFZQ3BnS21BcVlTbmhLbUlvR3loRkxORXMwaXpqTFBCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQVN3WExOQnNBR3dBYkFBQUFHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUFBQUFBQUFBQUFES05FbzBpZ1dLQnNvUkNwaEttSXFZaWdiS0I4b1JTaDRLbUVwNFNwaUtCc29IeWhGS0hncVlTbmlLZUlxWXlnZUtCWW9GaWdYS0Jjb0Z5Z1hLQllvR0d3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FHQUFBQUFBQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCZ0NMQmNzRkN3WkxCb3NHeXdZTEIwc0hpd2ZMQjBzS3l3eExEOHNSU3hUTEZrc1p5eHRMSGd1QUM0Z0xrQXVZQzZBTHFBdXdDN2dBQUFBQUFBQUFBSXNGaXdiTEI4c1JBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQU1vYkJRQUZBQVVBQlFBRkFBVUFCUUFGQUFxNEFBQUFBQUFBQUFBQUFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJnQUdBQVlBQmdBR0FBQUFBQUFBQUFBQUFBQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBQUFCY0FCUUFGQUFVQUJRQUFBQUFBQUFBQUFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBWEFJb0Z5Z1hLQjBvS1NoNEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQUFBQUFFa0FpUURKQUFrQlNRR0pBY2tCQ1FKSkFva0NBQUFBQUFBQUFBQUFBQUFBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUFBQUFBQUFBQUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFBQUFBQUFBQUFBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZ3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQUFBRkFBVUFBQUFBQUFBQUJRQUFBQUFBQlFBRkFBVUFCUUFGQUFVQUJRQUFBQUFBQlFBQUFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQUFBRndDTEJjc0ZDd2JMQjBzS1N4NUxlSXQ0QlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUJzQUd3Q0xCY3NGQ3daTEJvc0d5d2RMQ2dBQUFBQUFBQUFBQUFBQUFBQUFpd1hMQlFzR1N3WkxCb3NHeXdkTENrc2VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBQUFCUUFGQUFBQUFBQUFBQUFBQUFDTEJZc0d5d2RMQ2tzZUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFDTEJjc0hTd3BMSHNzRkN3WUFBQUFBQUFBWEFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBQUFBQUFBQUFBQUFBQUZ3QkxvRXVvUzdCTHVJdDRpNENMaUl1UWk1aUxvSXVvaTdDTHVNdDR5NERMaU11UXk1akxvTXVveTdETHVNczJTelhMTklzMHkwWkxOTXRPaXpqTFBFdEZCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQUFBQUFBQUFBQURMWGtzMEJRQUZBSXNGeXdVTEJrc0dpd2JMQmdzSFN3ZUxCOHNIU3dyTERFc1B5eEZMRk1zV0FBQUFBRXNlQzRBTGlBdVFDNWdMb0F1b0M3QUx1RXQ0UzRCTGlFdVFTNWdMQTBzRGl3UExBOHNIU3dwTEhrdDRTelFBQUFBQUFBQUFBQUFBQUFBQUFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBWEFBQUFBQUFBQUFBQUFBQUFBQUFBQlFBR0FBWUFCZ0FBQUFZQUJnQUFBQUFBQUFBQUFBQUFCZ0FHQUFZQUJnQUZBQVVBQlFBRkFBQUFCUUFGQUFVQUFBQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFBQUFBQUdBQVlBQmdBQUFBQUFBQUFBQUFZQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBSXNGeXhFWEFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUNMQmNzSFN3b0ZBQVVBQlFBRkFBVUFCZ0FHQUFBQUFBQUFBQUFBaXdXTEJzc0hTd3BMSGhjQUZ3QVhBQmNBRndBWEFCY0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFCc0FCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBQUFBQUFBQUFYQUJjQUZ3QVhBQmNBRndBWEFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUFBQUFBSXNGeXdVTEJrc0d5d2RMQ2tzZVMzZ0ZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQUFBQUFBQUFBQUFBQUNMQmNzRkN3WkxCc3NIU3dwTEhrdDRCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFBQUFBQUFBQUFBQUFBQUFBQUFBWEFCY0FGd0FYQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBSXNGeXdVTEJrc0d5d2RMQ2tzZUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUNMQllzR3l3ZkxFVXNlUzNnRkFBVUFCUUFGQUFZQUJnQUdBQVlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRWtBaVFESkFBa0JTUUdKQWNrQkNRSkpBb2tDQUFBQUFBQUFBQUFBQUFBQUN3TkxBNHNEeXdNTEJFc0Vpd1RMQkFzRnl3ZExDc3NNU3cvTEVVc1V5eFpMR2NzYlN4NExnQXVJQzVBTG1BdWdDNmdMc0F1NFN6VExOSXMwaXpnQUFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUNMQmNzRkN3WkxCb3NHeXdkTENzc01TeDVMTkFVQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQ0xCY3NIU3dwTEhoY0FGd0FYQUJjQUZ3QUFBQUFBQUFBQUFBQUFBQUJMRk1zV1N4bkxHMHNlUzNoSkFJa0F5UUFKQVVrQmlRSEpBUWtDU1FLSkFnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVlBQ0FBR0FBZ0FCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFZQUJnQUdBQVlBQmdBR0FBWUFGd0FYQUJjQUZ3QVhBQmNBRndBQUFBQUFBQUFBQUFzRFN3T0xBOHNEQ3dSTEJJc0V5d1FMQmNzSFN3ckxERXNQeXhFRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQWdBQ0FBSUFBWUFCZ0FHQUFZQUNBQUlBQVlBQmdBWEFCY0FFQUFYQUJjQUZ3QVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUUFBQUFBQUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFBQUFBQUFBQUFBQUFBQUFBQUFCSkFJa0F5UUFKQVVrQmlRSEpBUWtDU1FLSkFnQUFBQUFBQUFBQUFBQUFBQVVBQlFBRkFBVUFCUUFGQUFVQUJnQUdBQVlBQmdBR0FBZ0FCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBQUFTUUNKQU1rQUNRRkpBWWtCeVFFSkFra0NpUUlYQUJjQUZ3QVhBQVVBQ0FBSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQmdBR0FBWUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVlBRndBWEFBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDQUFGQUFVQUJRQUZBQmNBRndBWEFCY0FCZ0FHQUFZQUJnQVhBQUFBQUFCSkFJa0F5UUFKQVVrQmlRSEpBUWtDU1FLSkFnVUFGd0FGQUJjQUZ3QVhBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQ0FBSUFBZ0FCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFDQUFBQUlzRnl3VUxCa3NHaXdiTEJnc0hTd2VMQjhzSFN3ckxERXNQeXhGTEZNc1dTeG5MRzBzZVMzZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFDQUFJQUFnQUJnQUdBQVlBQ0FBSUFBWUFDQUFHQUFZQUZ3QVhBQmNBRndBWEFCY0FCZ0FBQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFBQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFBQUFVQUFBQUZBQVVBQlFBRkFBQUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQUFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFCY0FBQUFBQUFBQUFBQUFBQUFBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUlBQWdBQ0FBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQUFBQUFBQUFBQUFBQUVrQWlRREpBQWtCU1FHSkFja0JDUUpKQW9rQ0FBQUFBQUFBQUFBQUFBQUFCUUFGQUFnQUNBQUFBQUFBQmdBR0FBWUFCZ0FHQUFZQUJnQUFBQUFBQUFBR0FBWUFCZ0FHQUFZQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVlBQmdBSUFBZ0FBQUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFBQUFBQUFVQUJRQUFBQUFBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFBQUJRQUZBQVVBQlFBRkFBVUFCUUFBQUFVQUJRQUFBQVVBQlFBRkFBVUFCUUFBQUFZQUJnQUZBQWdBQ0FBR0FBZ0FDQUFJQUFnQUFBQUFBQWdBQ0FBQUFBQUFDQUFJQUFnQUFBQUFBQVVBQUFBQUFBQUFBQUFBQUFBQUNBQUFBQUFBQUFBQUFBQUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQ0FBSUFBZ0FCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBZ0FDQUFHQUFZQUJnQUlBQVlBQlFBRkFBVUFCUUFYQUJjQUZ3QVhBQmNBU1FDSkFNa0FDUUZKQVlrQnlRRUpBa2tDaVFJQUFCY0FBQUFYQUFZQUFBQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFnQUNBQUlBQVlBQmdBR0FBWUFCZ0FHQUFnQUJnQUlBQWdBQ0FBSUFBWUFCZ0FJQUFZQUJnQUZBQVVBRndBRkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCSkFJa0F5UUFKQVVrQmlRSEpBUWtDU1FLSkFnQUFBQUFBQUFBQUFBQUFBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFnQUNBQUlBQVlBQmdBR0FBWUFBQUFBQUFnQUNBQUlBQWdBQmdBR0FBZ0FCZ0FHQUJjQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBRkFBVUFCUUFGQUFZQUJnQUFBQUFBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUlBQWdBQ0FBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQ0FBSUFBWUFDQUFHQUFZQUZ3QVhBQmNBQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFTUUNKQU1rQUNRRkpBWWtCeVFFSkFra0NpUUlBQUFBQUFBQUFBQUFBQUFBWEFCY0FGd0FYQUJjQUZ3QVhBQmNBRndBWEFCY0FGd0FYQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVNRQ0pBTWtBQ1FGSkFZa0J5UUVKQWtrQ2lRSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFHQUFnQUJnQUlBQWdBQmdBR0FBWUFCZ0FHQUFZQUNBQUdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlBQWdBQmdBR0FBWUFCZ0FJQUFZQUJnQUdBQVlBQmdBQUFBQUFBQUFBQUVrQWlRREpBQWtCU1FHSkFja0JDUUpKQW9rQ3l3ZExDaGNBRndBWEFCc0FCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUNBQUlBQWdBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQ0FBR0FBWUFGd0FBQUFBQUFBQUFBRWtBaVFESkFBa0JTUUdKQWNrQkNRSkpBb2tDeXdkTENzc01Tdy9MRVVzVXl4WkxHY3NiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFZQUJnQUdBQVlBQmdBR0FBZ0FCUUFHQUFZQUJnQUdBQmNBRndBWEFCY0FGd0FYQUJjQUZ3QUdBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZBQVlBQmdBR0FBWUFCZ0FHQUFnQUNBQUdBQVlBQmdBRkFBVUFCUUFGQUFVQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBWEFCY0FGd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJRQUZBQVVBQlFBQUFBQUFCUUFGQUFVQUJRQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBZ0FCZ0FHQUJjQUZ3QVhBQVVBRndBWEFBVUFGd0FYQUJjQUZ3QVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBU1FDSkFNa0FDUUZKQVlrQnlRRUpBa2tDaVFLTEJjc0ZDd1pMQm9zR3l3WUxCMHNIaXdmTEIwc0t5d3hMRDhzUlN4VExGa3NaeXh0TEhnQUFBQUFBQUJjQUZ3QUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFBQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFDQUFHQUFZQUJnQUdBQVlBQmdBR0FBQUFCZ0FHQUFZQUJnQUdBQVlBQ0FBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBQUFBZ0FCZ0FHQUFZQUJnQUdBQVlBQmdBSUFBWUFCZ0FJQUFZQUJnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFBQUFBQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFVQUJnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVNRQ0pBTWtBQ1FGSkFZa0J5UUVKQWtrQ2lRSUFBQUFBQUFBQUFBQUFBQUFGQUFVQUJRQUZBQVVBQlFBRkFBQUFCUUFGQUFBQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBR0FBWUFCZ0FHQUFZQUJnQUFBQUFBQUFBR0FBQUFCZ0FHQUFBQUJnQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQWdBQ0FBSUFBZ0FDQUFBQUFZQUJnQUFBQWdBQ0FBR0FBZ0FCZ0FGQUFBQUFBQUFBQUFBQUFBQUFBQUFCUUFGQUFVQUJRQUZBQVVBQUFBRkFBVUFBQUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBWUFCZ0FJQUFnQUZ3QVhBQUFBQUFBQUFBQUFBQUFBQUFBQXlqUktOY28weWpSS05JbzBpamhLRDhvUlNnYUtCc29HQ2dkS0I0b0hBQUFYQUJjQUZ3QVhBQmNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFNb0ZDZ1pLQm9vR3lnWUtCMG9IaWdjS0Jrb0dpZ2JLQmdvSFNnZUtCMG9HaWdiS0Jnb0hTZ2VLQjRvRnlnVUtCa29HaWdiS0Jnb0hTZ2VLQjRvRnlnVUtCa29HaWdiS0JRb0dDZ1pLQm9vR3lnWUtCMG9IaWdlS0Jjb0ZDZ1lLQmtvR2lnYUt3SXJCaWdYS0JRb0dDZ1pLQm9vR0NnWUtCa29HU2daS0Jrb0d5Z1lLQndvSENnZEtCMG9IaWdlS0I0b0hpZ2ZLQlFvR1NnYUtCc29HaWdYS0JRb0dTZ1pLQm9vR2lnYktCUW9HaWdYS0JZbzBpamhLUllvMGlqaktOUVVBQlFBRkFBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRWtBaVFESkFBa0JTUUdKQWNrQkNRSkpBb2tDQUFBQUFBQUFBQUFYQUJjQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQUFBQUFBWUFCZ0FHQUFZQUJnQVhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUdBQVlBQmdBR0FBWUFCZ0FHQUJjQUZ3QVhBQmNBRndBYkFCc0FHd0FiQUFRQUJBQUVBQVFBRndBYkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFTUUNKQU1rQUNRRkpBWWtCeVFFSkFra0NpUUlBQU1zSFN4NkxlQXQ1aTNrTGVvdDZBQUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUFBQUFBQUFBQUFBQUFCUUFGQUFVQVN3V0xCY3NGQ3daTEJvc0d5d1lMQjBzSGl3ZkxCd3NJU3dpTENNc0lDd2xMQ1lzSnl3a0xDb3NGeXdVTEJoY0FGd0FYQUJjQUFBQUFBQUFBQUFBQUFBVUFCUUFGQUFVQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQlFBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJnQUdBQVlBQmdBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFBQUFBQUFBQUFBQUFBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFBQUFBQUFBQUFBQUFBQUFBQUFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFBQUFBQUJzQUJnQUdBQmNBRUFBUUFCQUFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJzQUd3QWJBQnNBR3dBYkFCc0FBQUFBQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFBZ0FDQUFHQUFZQUJnQWJBQnNBR3dBSUFBZ0FDQUFJQUFnQUNBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUJzQUd3QUdBQVlBQmdBR0FBWUFCZ0FHQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBQmdBR0FBWUFCZ0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBYkFCc0FCZ0FHQUFZQUd3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVN3V0xCY3NGQ3daTEJvc0d5d1lMQjBzSGl3ZkxCd3NJU3dpTENNc0lDd2xMQ1lzSnl3a0xDZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJc0Z5d1VMQmtzR2l3YkxCZ3NIU3dlTEI4c0hTd3JMREVzUHl4RkxGTXNXU3huTEc0c0Z5d1VMQmtzR2l3YUxCWXNHQUFBQUFBQUFBQUFBQUFBQUFBQkpBb2tDU1FDSkFNa0FDUUZKQVlrQnlRRUpBa2tDaVFKSkFJa0F5UUFKQVVrQmlRSEpBUWtDU1FLSkFra0FpUURKQUFrQlNRR0pBY2tCQ1FKSkFva0NBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBSUFBZ0FDQUFJQUFnQUNBQUlBQUFBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQVFBQUFBRUFBUUFBQUFBQUFRQUFBQUFBQVFBQkFBQUFBQUFCQUFFQUFRQUJBQUFBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUlBQWdBQ0FBSUFBQUFDQUFBQUFnQUNBQUlBQWdBQ0FBSUFBZ0FBQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFJQUFnQUNBQUlBQVFBQkFBQUFBUUFCQUFFQUFRQUFBQUFBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUFBQVFBQkFBRUFBUUFCQUFFQUFRQUFBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUJBQUVBQUFBQkFBRUFBUUFCQUFBQUFRQUJBQUVBQVFBQkFBQUFBUUFBQUFBQUFBQUJBQUVBQVFBQkFBRUFBUUFCQUFBQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBZ0FDQUFJQUFnQUNBQUlBQUFBQUFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBR0FBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQmdBQWdBQ0FBSUFBZ0FDQUFJQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFZQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQmdBQWdBQ0FBSUFBZ0FDQUFJQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFDQUFJQUFnQVlBQUlBQWdBQ0FBSUFBZ0FDQUFFQUFnQUFBQUFBU1FDSkFNa0FDUUZKQVlrQnlRRUpBa2tDaVFKSkFJa0F5UUFKQVVrQmlRSEpBUWtDQUFBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBYkFCc0FHd0FiQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBYkFCc0FHd0FiQUJzQUd3QWJBQnNBQmdBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFBWUFHd0FiQUJjQUZ3QVhBQmNBRndBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUFBQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUFBQUFBQVlBQmdBR0FBWUFCZ0FHQUFZQUFBQUdBQVlBQUFBR0FBWUFCZ0FHQUFZQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQlFBRkFBVUFCUUFGQUFBQUFBQ0xCY3NGQ3daTEJvc0d5d1lMQjBzSGl3Y0dBQVlBQmdBR0FBWUFCZ0FHQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFJQUFnQUNBQUlBQmdBR0FBWUFCZ0FHQUFZQUJnQUFBQUFBQUFBQUFBQUFTUUNKQU1rQUNRRkpBWWtCeVFFSkFra0NpUUlBQUFBQUFBQUFBQmNBRndBQkFBRUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUlzRnl3VUxCa3NHaXdiTEJnc0hTd2VMQjhzSFN3ckxERXNQeXhGTEZNdDRTM2xMZ1lzRnl3VUxCa3NHaXdiTEJnc0hTd2VMQnhzQXl6UkxOTXM4R1FDTEJjc0ZpM2pMZUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRExGa3NaeXh0TEhndUFDNGdMa0F1WUM2QUxxQXV3QzdoTGVFdUFTNGhMa0V1WVM2QkxxRXV3UzdpTGVJdUFpNGlMa0l1WWk2Q0xxSXV3aTdqTGVNdUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBWUFCZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVVBQlFBRkFBVUFBQUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFBQUFVQUJRQUFBQVVBQUFBQUFBVUFBQUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFBQUJRQUZBQVVBQlFBQUFBVUFBQUFGQUFBQUFBQUFBQUFBQUFBQUFBVUFBQUFBQUFBQUFBQUZBQUFBQlFBQUFBVUFBQUFGQUFVQUJRQUFBQVVBQlFBQUFBVUFBQUFBQUFVQUFBQUZBQUFBQlFBQUFBVUFBQUFGQUFBQUJRQUZBQUFBQlFBQUFBQUFCUUFGQUFVQUJRQUFBQVVBQlFBRkFBVUFCUUFGQUFVQUFBQUZBQVVBQlFBRkFBQUFCUUFGQUFVQUJRQUFBQVVBQUFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBQUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBQUFBQUFBQUFBQUFBQUZBQVVBQlFBQUFBVUFCUUFGQUFVQUJRQUFBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUFBQUFBQUFBQUFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUFBQUFBQUFBQUFBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBQUFBQUFHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBQUFBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3RExBc3NDQ3dOTEE0c0R5d01MQkVzRWl3VExCQXNGU3dWTEJRQUFBQUFBQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FBQUFBQUFBQUFBQUFBQUFBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QUFBQUFBQUFBQUFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFBQUFBQUFBQUFBQUFBQUFBQUFBR3dBYkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWJBQnNBR3dBYkFCc0FHd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHZ0FhQUJvQUdnQWFBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQUFBQUFBQUFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FBQUFBQUFBQUFBQUFBQUFBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QUFBQUFBQUFBQUFBQUFBQUFBQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FBQUFBQUFBQUFBQUFBQUFBYkFCc0FHd0FiQUJzQUd3QWJBQnNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FHd0FiQUJzQUd3QUFBQUFBR3dBYkFCc0FHd0FBQUFBQUFBQWJBQUFBR3dBYkFCc0FHd0FiQUJzQUd3QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCc0FHd0FiQUJzQUd3QWJBQnNBR3dBYkFCc0FBQUFBQUFBQUFBQUFBQUFBQlFBRkJ3VUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUVVR0JRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBRVVHQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFoUVlGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFERkRBVUFCUUFGQUFVQUJRQUZBQVVBQlFCRkR3VUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBRVVQQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUURGQmdVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVR0JRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRWUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRWUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkJnVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQVJRWUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUlVSEJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQUFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFHQUFZQUJnQUdBQVlBQmdBR0FBWUFCZ0FHQUFZQUJnQUdBQVlBQmdBR0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRVFBUkFCRUFFUUFSQUJFQUVRQVJBQkVBRVFBUkFCRUFFUUFSQUJFQUVRQVJBQkVBRVFBUkFCRUFFUUFSQUJFQUVRQVJBQkVBRVFBUkFCRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNyQUNBQXV3QUFBQlVpSUFRZkl1QUVJQ0xnQXlFaW9BTWlJc0FESkNMQUJFTWlJQUpGSWtBQlRDSWdBWmdpQUFTbUlrQUVxQ0tBQktraVlBU3JJcUFFdUNLQUE4MGlBQUh5SXVBQzh5SUFBL1FpSUFQMklrQUQ5eUpnQS9vaVFBTDdJbUFDL0NLQUF2MGlvQUwrSXNBQzNDY0FBcHNwb0FDZ0tjQUFveW1BQUxncFlBSDFLVUFBM2lxQUFlTXF3QUhrS3FBQjVTcmdBZTRxNEFEK0syQUFid04zQTM4RGh3T2ZBNmNEcndPM0E0OERsd09QQTVjRGp3T1hBNDhEbHdPUEE1Y0Rqd09YQTcwRHhRUE5BOVVEM1FQbEErRUQ2UVB4QS9rRDlBUDhBNDhEbHdPUEE1Y0RCQVFNQkk4RGx3T1BBNWNEandPWEF4SUVHZ1FpQkNvRU1nUTZCRUlFU2dSUUJGZ0VZQVJvQkhBRWVBUitCSVlFamdTV0JKNEVwZ1N5Qks0RXVnVENCQ1FFMGdUYUJNb0U0Z1RrQk93RTlBVDhCUDBFQlFVTkJSVUYvUVFkQlNJRkZRWDlCQ29GTWdYOEJEb0ZRZ1gwQkVjRmp3TlBCVk1GV3dWZEJXVUZiUVg4QkhVRmZRWDBCQVlFZ1FVRkJmUUVqd09QQTRrRmp3T1BBNDhGbHdXUEE0OERtd1dqQlk4RHB3V3VCWThEdGdXK0JjVUZSZ1dQQTQ4RHpRWFZCZDBGNVFXUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd1B0Qlk4RDlRV1BBNDhEandQOUJZOERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERCUWFQQTQ4RGp3TU5CZzBHQ1FVSkJZOERFd1liQnZVRk1RWWpCaU1HT1FaQUJpa0dqd09QQTQ4RFNBWlFCbzhEandPUEExSUdXZ1ppQm84RGFRWnhCbzhEZVFhUEE0OERPUVdCQmtjRmlRWUdCSkVHandPWUJvOERuUWFQQTQ4RGp3T1BBNk1HcXdhUEE0OERqd09QQTQ4RGp3UGRBN01HandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd083QnNNR3h3YmZCdVVHendiWEJ1MEc5UWI1QnNnRkFRY0pCeEVIandNWkIxb0dXZ1phQmlrSE1RYzVCMEVIUmdkT0IxWUhJUWRlQjJZSGp3TnNCM01IV2daYUJsb0dXZ1p6QlhrSFdnYUJCNDhEandOWEJsb0dXZ1phQmxvR1dnWmFCbG9HV2daYUJsb0dXZ1phQmxvR2lRZGFCbG9HV2daYUJsb0dqd2RhQmxvR2x3ZWZCNDhEandPUEE0OERqd09QQTQ4RGp3TmFCbG9HV2daYUJxOEh0d2UvQjZjSHp3ZlhCOThINWdmdEIvVUgrUWZIQjFvR1dnWmFCZ0VJQndoYUJnMElFQWlQQTQ4RGp3T1BBNDhEandPUEF4Z0lqd09QQTQ4RElBaVBBNDhEandQZEF5Z0lNQWcxQ0k4RFBRaGFCbG9HWFFaYUJsb0dXZ1phQmxvR1dnWkVDRW9JV2doU0NJOERqd05pQ1AwRmp3TzJBNDhEandPUEE0OERqd09QQTFvR0h3akVBNDhET1FocUNJOERjZ2g2Q0k4RGp3T1BBNDhEZmdpUEE0OERVZ2ExQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd05hQmxvR2p3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQXprSVdnWnpCWThEandPUEE0OERqd09QQTQ4RGp3T1BBNFVJandPUEE0b0lYUVdQQTQ4RHFRVmFCbEVHandPUEE1SUlqd09QQTQ4RG1naWhDQ01HcVFpUEE0OERmd1d4Q0k4RHVRakFDSThENGdURkNJOEQrd1NQQTgwSTFRajlCSThEMlFqOEJPRUlqd09QQTQ4RGp3T1BBNDhEandQb0NJOERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd1A4Q1BBSTlBaU9CSTRFamdTT0JJNEVqZ1NPQkk0RWpnU09CSTRFamdTT0JJNEVCQW1PQkk0RWpnU09CQXdKRUFrWUNTQUpKQWtzQ1k0RWpnU09CREFKT0FsL0EwQUpTQW1QQTQ4RGp3TlFDWThEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd004RGp3T2ZBNjhEandPUEE0OERqd09QQTQ4RHZRT05BOTBENFFQeEEvUUR6d09QQTRRRUR3T1BBNDhEa2dRaUJESUVBZ1JRQkdBRWNBUitCRTRFbmdTUUFxQUNzQUsvd3FnQWFBQm9BR2dBYUFCb0FHZ0FhQUJvQUUzQzZBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQVhRTG9BR2dBYWtMNlFzcERHa01xUXpwREtBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQWFBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQWFBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQWFBQm9BR2dBYUFCS1EyZ0FhQUJvQUdnQWFBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQWFBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQWFBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQVNrTm9BR2dBYUFCb0FHZ0FhQUJvQUdnQWFBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQWFBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQWFBQm9BR2dBYUFCb0FFcERhQUJvQUdnQWFBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQWFBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQWFBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQWFBQktRMmdBYUFCb0FHZ0FhQUJvQUdnQWFBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQWFBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQWFBQm9BR2dBYUFCb0FHZ0FTa05vQUdnQWFBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQWFBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQWFBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQWFBQm9BRXBEYUFCb0FHZ0FhQUJvQUdnQWFBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQWFBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQWFBQm9BR2dBYUFCb0FHZ0FhQUJLUTJnQWFBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQWFBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQWFBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQWFBQm9BR2dBU2tOb0FHZ0FhQUJvQUdnQWFBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQWFBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQWFBQm9BR2dBYUFCb0FHZ0FhQUJvQUVwRGFBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQWFBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQWFBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQWFBQm9BR2dBYUFCS1EyZ0FhQUJvQUdnQWFBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQWFBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQWFBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQVNrTm9BR2dBYUFCb0FHZ0FhQUJvQUdnQWFBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQWFBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQWFBQm9BR2dBYUFCb0FFcERXa05lUTJnQWFBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQWFBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQWFBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQWFBQktRMmdBYUFCb0FHZ0FhQUJvQUdnQWFBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQWFBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQWFBQm9BR2dBYUFCb0FHZ0FTa05vQUdnQWFBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQWFBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQWFBQm9BR2dBYUFCb0FHZ0FhQUJvQUdnQWFBQm9BRXBEWThEandPUEE0OERqd09QQTQ4RGp3TllDWThEV2daYUJtQUovUVdQQS9VRWp3T1BBNDhEandPUEE0OERqd05vQ1k4RGp3T1BBMjhKandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhESkFRa0JDUUVKQVFrQkNRRUpBUWtCSGNKSkFRa0JDUUVKQVFrQkNRRUpBUi9DWU1KSkFRa0JDUUVKQVNUQ1lzSkpBU2JDU1FFSkFTakNha0pKQVFrQkNRRUpBUWtCQ1FFSkFRa0JDUUVKQVM1Q2JFSkpBUWtCQ1FFSkFRa0JDUUVKQVFrQkNRRXdRa2tCQ1FFSkFRa0JDUUV5UW5RQ2RZSkpBUWtCQ1FFSkFUOEJONEo1UW5zQ1FZRTd3bVBBNDhENGdUMkNZOEQvQWtHQkFFS0NRcVBBNDhERGdxUEE0OERqd09QQXlBSUZnb0dCSUVGWEFVZENvOERqd09QQTQ4RGp3UGVDU1VLandPUEF5MEtOUXFQQTQ4RGp3T1BBNDhEandNNUNrRUtqd09QQTBrS1hBVlJDbzhEVndxUEE0OEQ3UVZmQ284RGp3T1BBNDhEandPUEEyUUtqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBMndLY0FwNENvOERmd3FQQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T0dDbzhEandPVUNvNEtqd09QQTQ4RG5BcWtDbzhEcUFxUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0TUZqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNjRLandPMENvOERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEdWdxUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandNV0JjSUtqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE4a0swUXJYQ284RGp3TmFCbG9HM3dxUEE0OERqd09QQTQ4RFdnWmFCak1JandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhENFFxUEErZ0tqd1BrQ284RDZ3cVBBL01LOXdxUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBOTBEL3dyZEF3WUxEUXNWQzQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEF4MExKUXVQQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERKQVFrQkNRRUpBUWtCQ1FFTFFza0JEVUxOUXM4Q3lRRUpBUWtCQ1FFSkFRa0JDUUVKQVFrQkNRRUpBUWtCQ1FFSkFRa0JDUUVKQVFrQkNRRUpBUWtCQ1FFSkFRa0JQUUlqZ1NPQkNRRUpBUWtCQ1FFSkFRa0JDUUVKQVFrQkNRRWpnU09CSTRFamdTT0JJNEVqZ1JFQ3lRRUpBUWtCQ1FFSkFRa0JDUUVKQVJhQmt3TFdnWmFCbDBHVVF0VkMwUUlYUXV4QTQ4RFl3dVBBNDhEandPUEE0OERqd09QQTJvSGp3T1BBNDhEandOYUJsb0dXZ1phQmxvR1dnWmFCbG9HV2daYUJsb0dXZ1phQmxvR1dnWmFCbG9HV2daYUJsb0dXZ1phQmxvR1dnWmFCbG9HV2daYUJsb0dXZ1pyQzNNTFdnWmFCbG9HWFFaYUJsb0dld3VQQTB3TFdnYURDMW9HaXd0R0NJOERqd05NQzQ4TFdnYVhDMW9Hbnd1bkMxb0dqd09QQTQ4RFJnaVBBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTY4TGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RGp3T1BBNDhEandPUEE0OERqd09QQTQ4RHJ3dS9DN2NMdHd1M0M4QUx3QXZBQzhBTDNRUGRBOTBEM1FQZEE5MEQzUVBJQzhBTHdBdkFDOEFMd0F2QUM4QUx3QXZBQzhBTHdBdkFDOEFMd0F2QUM4QUx3QXZBQzhBTHdBdkFDOEFMd0F2QUM4QUx3QXZBQzhBTHdBdkFDOEFMd0F2QUM4QUx3QXZBQzhBTHdBdkFDOEFMd0F2QUM4QUx3QXZBQzhBTHdBdkFDOEFMd0F2QUM4QUx3QXZBQzhBTHdBdkFDOEFMd0F2QUM4QUx3QXZBQzhBTGJnTnVBMjRERWdBU0FCSUFFZ0FTQUJJQUVnQVNBQklBQ0FBSEFBZ0FDUUFIQUJJQUVnQVNBQklBRWdBU0FCSUFFZ0FTQUJJQUVnQVNBQklBRWdBSEFBY0FCd0FJQUFrQUNnQUtBQVFBQkFBRUFBb0FDZ0FLTVFyeUNnQURBQVlBQXdBR0FBWUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FHQUFvQUNsQUtBQXJRQ2dBS0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBS1VRb0FDdElLQUFvQUNnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNsRUtBQXJTQ2dBU0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFFZ0FTQUJJQUVnQVNBQWNBRWdBU0FCSUFFZ0FTQUJJQUVnQVNBQklBRWdBU0FCSUFFZ0FTQUJJQUVnQVNBQklBRWdBU0FCSUFFZ0FTQUJJQUVnQVNBQVlBQ2dBRUFBUUFCQUFFQUFvQUNnQUtBQW9BQUFBS2tBb0FzZ0FLQUFvQUJBQUVBQUlBQWdBS0FBQUFDZ0FLQUFvQUFnQUFBQXFRQ2dBS0FBb0FDZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ2dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFvQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ2dBS0FBQUFBQUFBQUFBQUFBQUFBQUFBQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFBQUFBQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FBQUFBQUFBQUFBQUFBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQUFBQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBTEVBc1FDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBc1FDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBc1FDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBc1FDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBc1FDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBc1FDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBc1FDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBQUFBQUFBQUFBQUFLQUFvQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFvQUFBQUFBQUFBQUFBQUFBb0FDZ0FBQUFvQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBS0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUxFQXNRQ3hBTEVBc1FDeEFMRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFvQUFBQUFBQW9BQ2dBRUFBRUFzUUN4QUxFQXNRQ3hBTEVBc1FDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBc1FDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBc1FDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBc1FDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBc1FDeEFMRUFBUUN4QUFFQXNRQ3hBQUVBc1FDeEFBRUFzUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUJRQUZBQVVBQlFBRkFBVUFDZ0FLQUEwQUJBQUVBQTBBQmdBTkFBb0FDZ0N4QUxFQXNRQ3hBTEVBc1FDeEFMRUFzUUN4QUxFQURRQ3RDQTBBRFFBTkFFMEFEUUNOQUkwQWpRQ05BRTBBalFCTkFJMEFUUUJOQUUwQVRRQk5BSTBBalFDTkFJMEFUUUJOQUUwQVRRQk5BRTBBVFFCTkFFMEFUUUJOQUUwQVRRQXRBRTBBVFFCTkFFMEFUUUJOQUUwQWpRQk5BRTBBc1FDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBc1FDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBc1FDeEFMRUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFFQUFVQUJRQU5BRTBBVFFDeEFJMEFqUUNOQUEwQWpRQ05BSTBBVFFCTkFFMEFUUUJOQUUwQVRRQk5BSTBBalFDTkFJMEFqUUNOQUkwQWpRQ05BSTBBalFDTkFJMEFqUUNOQUkwQWpRQ05BRTBBVFFCTkFFMEFUUUJOQUUwQVRRQk5BRTBBVFFCTkFFMEFUUUJOQUUwQVRRQk5BRTBBVFFCTkFFMEFUUUJOQUUwQVRRQk5BRTBBVFFCTkFFMEFUUUJOQUUwQVRRQk5BRTBBVFFDTkFFMEFUUUNOQUkwQWpRQ05BSTBBalFDTkFJMEFqUUJOQUkwQVRRQ05BRTBBVFFDTkFJMEFEUUNOQUxFQXNRQ3hBTEVBc1FDeEFMRUFCUUFLQUxFQXNRQ3hBTEVBc1FDeEFBMEFEUUN4QUxFQUNnQ3hBTEVBc1FDeEFJMEFqUUFDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUUwQVRRQk5BQTBBRFFCTkFBMEFEUUFOQUEwQURRQU5BQTBBRFFBTkFBMEFEUUFOQUEwQURRQU5BSzBBalFDeEFFMEFUUUJOQUkwQWpRQ05BSTBBalFCTkFFMEFUUUJOQUkwQVRRQk5BRTBBVFFCTkFFMEFUUUJOQUUwQWpRQk5BSTBBVFFDTkFFMEFUUUNOQUxFQXNRQ3hBTEVBc1FDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBc1FDeEFMRUFzUUN4QUxFQURRQU5BSTBBVFFCTkFFMEFUUUJOQUUwQVRRQk5BRTBBVFFCTkFJMEFqUUNOQUUwQVRRQk5BRTBBVFFCTkFFMEFUUUJOQUUwQVRRQk5BRTBBVFFCTkFJMEFqUUJOQUUwQVRRQk5BSTBBVFFDTkFJMEFUUUJOQUUwQWpRQ05BRTBBVFFCTkFFMEFUUUJOQUEwQURRQU5BQTBBRFFBTkFBMEFEUUFOQUEwQURRQU5BQTBBRFFBTkFBMEFEUUFOQUEwQURRQU5BQTBBRFFBTkFBMEFEUUFOQUEwQURRQU5BQTBBRFFBTkFBMEFEUUFOQUEwQURRQ3hBTEVBc1FDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBRFFBTkFBMEFEUUFOQUEwQURRQU5BQTBBRFFBTkFBMEFEUUFOQUEwQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQkJBRUVBUVFCQkFFRUFRUUJCQUVFQVFRQkJBRUVBUVFCQkFFRUFRUUJCQUVFQVFRQkJBRUVBUVFCQkFFRUFRUUJCQUVFQVFRQkJBRUVBUVFCQkFFRUFRUUN4QUxFQXNRQ3hBTEVBc1FDeEFMRUFzUUFCQUFFQUNnQUtBQW9BQ2dBaEFBRUFBUUN4QUFFQUFRQ3hBTEVBc1FDeEFBRUFzUUN4QUxFQUFRQ3hBTEVBc1FDeEFMRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBc1FDeEFMRUFzUUFCQUxFQXNRQ3hBTEVBc1FDQkFFRUFRUUJCQUVFQVFRQ0JBSUVBUVFDQkFFRUFRUUJCQUVFQVFRQkJBRUVBUVFCQkFFRUFnUUJCQUFFQUFRQUJBTEVBc1FDeEFBRUFBUUFCQUFFQVRRQU5BRTBBVFFCTkFFMEFEUUNOQUUwQWpRQ05BQTBBRFFBTkFBMEFEUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFMRUFzUUFGQUxFQXNRQ3hBTEVBc1FDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBc1FDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBc1FDeEFMRUFzUUN4QUxFQXNRQk5BRTBBVFFCTkFFMEFUUUJOQUUwQVRRQk5BSTBBalFDTkFBMEFqUUJOQUUwQWpRQ05BRTBBVFFBTkFFMEFUUUJOQUkwQVRRQk5BRTBBVFFBTkFBMEFEUUFOQUEwQURRQU5BQTBBRFFBTkFBMEFEUUFOQUEwQURRQU5BQTBBRFFBTkFBMEFEUUN4QUxFQXNRQ3hBTEVBc1FDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBc1FDeEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXNRQUFBTEVBQUFBQUFBQUFBQUN4QUxFQXNRQ3hBTEVBc1FDeEFMRUFBQUFBQUFBQUFBQ3hBQUFBQUFBQUFMRUFzUUN4QUxFQXNRQ3hBTEVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDeEFMRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUxFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBc1FBQUFBQUFBQUFBQUxFQXNRQ3hBTEVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTEVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFMRUFzUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBRUFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFBQUFzUUFBQUFBQXNRQ3hBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFMRUFzUUFBQUFBQUFBQUFBTEVBc1FBQUFBQUFzUUN4QUxFQUFBQUFBQUFBc1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDeEFMRUFBQUFBQUFBQXNRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBc1FDeEFMRUFzUUN4QUFBQXNRQ3hBQUFBQUFBQUFBQUFzUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXNRQ3hBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFzUUN4QUxFQXNRQ3hBTEVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDeEFBQUFBQUN4QUFBQXNRQ3hBTEVBc1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBc1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBc1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFzUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ3hBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBb0FDZ0FLQUFvQUNnQUtBQVFBQ2dBQUFBQUFBQUFBQUFBQXNRQUFBQUFBQUFDeEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTEVBc1FDeEFBQUFBQUFBQUFBQUFBQ3hBTEVBc1FBQUFMRUFzUUN4QUxFQUFBQUFBQUFBQUFBQUFBQUFBQUN4QUxFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTEVBc1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDZ0FLQUFvQUNnQUtBQW9BQ2dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFzUUFBQUFBQW9BQUFBQUFBQUFBQUFBQUFBQUNnQUFBQUFBQUFBQUFBQUFDeEFMRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUxFQXNRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFMRUFBQUFBQUFBQUFBQUFBQUFBQUFDeEFMRUFzUUFBQUxFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXNRQUFBQUFBc1FDeEFMRUFzUUN4QUxFQXNRQUFBQUFBQUFBQUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBc1FBQUFBQUFzUUN4QUxFQXNRQ3hBTEVBQUFDeEFMRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUxFQXNRQ3hBTEVBc1FDeEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDeEFMRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTEVBQUFDeEFBQUFzUUFLTVFyeUNqRUs4Z0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBc1FDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBc1FDeEFMRUFzUUN4QUFBQXNRQ3hBTEVBc1FDeEFBQUFzUUN4QUFBQUFBQUFBQUFBQUFDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBc1FDeEFMRUFBQUN4QUxFQXNRQ3hBTEVBc1FDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBc1FDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBc1FDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ3hBTEVBc1FDeEFBQUFzUUN4QUxFQXNRQ3hBTEVBQUFDeEFMRUFBQUFBQUxFQXNRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUxFQXNRQUFBQUFBQUFBQUFMRUFzUUN4QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFzUUN4QUxFQXNRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFMRUFBQUFBQUxFQXNRQUFBQUFBQUFBQUFBQUFBQUN4QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFMRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ3hBTEVBc1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQUFBQUFBQUFBQUFBQUFBQUNnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBa0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBb3hDdklBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ3hBTEVBc1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXNRQ3hBQUFBc1FDeEFMRUFzUUN4QUxFQXNRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXNRQUFBQUFBc1FDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBc1FDeEFBQUFBQUFBQUFBQUFBQUFBQUFBQkFBQUFMRUFBQUFBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFMRUFRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUtBQW9BQ2dBS0FBb0FDZ0FLQUVvQUNnQUtBQ29Bc1FDeEFMRUFFZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBc1FDeEFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBc1FDeEFMRUFBQUFBQUFBQUFBQ3hBTEVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBc1FBQUFBQUFBQUFBQUFBQUFBQ3hBTEVBc1FBQUFBQUFBQUFBQUFvQUFBQUFBQUFBQ2dBS0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDeEFMRUFBQUFBQUxFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDeEFBQUFzUUN4QUxFQXNRQ3hBTEVBc1FBQUFMRUFBQUN4QUFBQUFBQ3hBTEVBc1FDeEFMRUFzUUN4QUxFQUFBQUFBQUFBQUFBQUFBQUFzUUN4QUxFQXNRQ3hBTEVBc1FDeEFMRUFzUUFBQUFBQXNRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUxFQXNRQ3hBTEVBc1FDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBc1FDeEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUxFQUFBQ3hBTEVBc1FDeEFMRUFBQUN4QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBc1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXNRQ3hBTEVBc1FBQUFBQUFzUUN4QUFBQXNRQ3hBTEVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFMRUFBQUN4QUxFQUFBQUFBQUFBc1FBQUFMRUFzUUN4QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBQUFBQUFMRUFzUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFMRUFzUUN4QUFBQXNRQ3hBTEVBc1FDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBc1FBQUFMRUFzUUN4QUxFQXNRQ3hBTEVBQUFBQUFBQUFBQUN4QUFBQUFBQUFBQUFBQUFBQUFMRUFBQUFBQUFBQXNRQ3hBQUFBQUFBQUFBQUFBQUFBQUxFQXNRQ3hBTEVBc1FDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBc1FDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBc1FDeEFMRUFzUUFBQUxFQXNRQ3hBTEVBc1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDZ0FBQUFvQUNnQUtBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBS0FBb0FDZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQW9BQ2dBS0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNnQUtBQUFBQ2dBS0FBb0FDZ0FHQUFveEN2SUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FKQUxJQXNnQ3lBTElBc2dBU0FCUUlGUWdUQ0JZSXNnQ3lBTElBc2dDeUFMSUFBZ0FBQUFBQUFBQUNBQUlBQWdBQ0FBSUFBZ0FEQUFNQUNnQUtNUXJ5QUFBSkFBa0FDUUFKQUFrQUNRQUpBQWtBQ1FBSkFBa0FzZ0FTQkRJRW9BaWhDQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNRQUhBS3NJcmdpd0NLd0lyd2dHQUFRQUJBQUVBQVFBQkFBS0FBb0FDZ0FLQUFvd0N2QUtBQW9BQ2dBS0FBb0FBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FEQUFNQUNnQUtNUXJ5QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUN4QUxFQXNRQ3hBTEVBc1FDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBc1FDeEFBb0FDZ0FBQUFvQUNnQUtBQW9BQUFBS0FBb0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFLQUFBQUNnQUtBQW9BQUFBQUFBQUFBQUFBQUFvQUNnQUtBQW9BQ2dBS0FBQUFDZ0FBQUFvQUFBQUtBQUFBQUFBQUFBQUFCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNnQUtBQUFBQUFBQUFBQUFDaEFLQUFvQUNnQUtBQUFBQUFBQUFBQUFBQUFLQUFvQUNnQUtBQUFBQUFBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQW9BQ2dBS0FBQUFBQUFBQUFBQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLTUFyd0NqQUs4QW93Q3ZBS01BcndDakFLOEFvd0N2QUtNQXJ3Q2dBS0FBb3dDdkFLa0FxUUNwQUtFQXFRQ3BBS0VBb1FDcEFLa0FxUUNwQUtrQW9RQ2dBS0VBb1FDaEFLRUFvQUNnQUtBQXB3Q25BS2NBcXdDckFLc0FvQUNnQUtBQW9RQXdBRUFBb0FDcEFLRUFvQUNnQUtBQW9RQ2hBS0VBb1FDZ0FLa0FxUUNwQUtrQW9BQ3BBS0FBb1FDZ0FLQUFvQUNnQUtFQW9RQ2hBS0VBb1FDaEFLRUFvUUNoQUtBQW9BQ2dBS0FBb0FDaEFLQUFvUUNqQUs4QW9RQ2hBS0VBb1FDaEFLa0FvUUNwQUtFQW9RQ2hBS0VBb1FDaEFLa0FvQUNnQUtBQW9BQ2dBS01BcndDakFLOEFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvUUNoQUtBQW9RQ2dBS01BcndDakFLOEFvd0N2QUtNQXJ3Q2dBS0FBb3dDdkFLTUFyd0NqQUs4QW93Q3ZBS01BcndDakFLOEFvd0N2QUtNQXJ3Q2pBSzhBb1FDZ0FLQUFvd0N2QUtNQXJ3Q2dBS0FBb0FDZ0FLQUFxUUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNqQUs4QW9BQ2dBS2tBb1FDcEFLa0FvUUNwQUtFQW9RQ2hBS0VBb3dDdkFLTUFyd0NqQUs4QW93Q3ZBS2tBb0FDZ0FLQUFvQUNnQUtFQW9RQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2pBSzhBb3dDdkFLa0FvQUNnQUtNQXJ3Q2dBS0FBb0FDZ0FLTUFyd0NqQUs4QW93Q3ZBS01BcndDakFLOEFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLTVFyeUNqRUs4Z29BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0VBb1FDZ0FLQUFvQUNnQUtBQW9BQ2dBS01RcnlDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBQUFDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBQUFBQUFBQUFBQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQUFBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb3hDdklLTVFyeUNqRUs4Z294Q3ZJS01RcnlDakVLOGdveEN2SUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9RQ2dBS0FBb3dDdkFLTVFyeUNnQUtNQXJ3Q2dBS1VBb1FDdEFLQUFvQUNnQUtBQW9BQ2hBS0VBb3dDdkFLQUFvQUNnQUtBQW9BQ3BBS01BcndDZ0FLQUFvQUNqQUs4QW93Q3ZBS01RcnlDakVLOGdveEN2SUtNUXJ5Q2pFSzhnb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0VBb0FDaEFLRUFvUUNnQUtBQW93Q3ZBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb1FDcEFLRUFvUUNqQUs4QW9BQ2dBS01RcnlDZ0FLQUFvQUNnQUtBQW94Q3ZJS01RcnlDakVLOGdveEN2SUtNUXJ5Q25FS01ncnhDcklLTVFyeUNqRUs4Z294Q3ZJS01RcnlDZ0FLQUFxUUNoQUtFQW9RQ2hBS2tBb0FDaEFLa0Fvd0N2QUtFQW9RQ2pBSzhBb3dDdkFLTUFyd0NqQUs4QW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtrQW9BQ2dBS0FBb0FDZ0FLQUFvQUNqQUs4QW9RQ2hBS01BcndDZ0FLQUFvQUNoQUtBQW9BQ2dBS0FBb1FDakFLOEFvd0N2QUtBQW93Q3ZBS0FBb0FDakVLOGdveEN2SUtFQW9BQ2dBS0FBb0FDZ0FLRUFxUUNwQUtrQW9RQ2dBS0FBb0FDZ0FLQUFvd0N2QUtrQW9BQ2dBS0FBb0FDaEFLQUFvQUNnQUtNQXJ3Q2pBSzhBb1FDZ0FLRUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9RQ2hBS0VBb1FDaEFLRUFvUUNoQUtFQW9RQ2hBS0VBb1FDaEFLRUFvUUNoQUtFQW9RQ2dBS0VBb1FDaEFLRUFvQUNnQUtFQW9BQ2hBS0FBb0FDaEFLQUFvd0N2QUtNQXJ3Q2dBS0FBb0FDZ0FLQUFvd0N2QUtBQW9BQ2dBS0FBb0FDZ0FLTUFyd0NoQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLRUFvUUNnQUtBQW9BQ2dBS0FBb0FDZ0FLTUFyd0NnQUtBQW9BQ2dBS0VBb1FDaEFLRUFvQUNoQUtFQW9BQ2dBS0VBb1FDZ0FLQUFvQUNnQUtNQXJ3Q2pBSzhBb3dDdkFLTUFyd0NqQUs4QW93Q3ZBS01BcndDakFLOEFvd0N2QUtNQXJ3Q2pBSzhBb3dDdkFLTUFyd0NqQUs4QW93Q3ZBS01BcndDakFLOEFvd0N2QUtNQXJ3Q2hBS0FBb0FDakFLOEFvd0N2QUtNQXJ3Q2pBSzhBb0FDakFLOEFvd0N2QUtNQXJ3Q2pBSzhBb3dDdkFLTUFyd0NqQUs4QW93Q3ZBS01BcndDakFLOEFvd0N2QUtNQXJ3Q2dBS0FBb0FDZ0FLQUFvUUNnQUtrQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBQUFBQUFLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBQUFBQUFDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FBQUFLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ3BBQUFBQUFBQUFBQUFBQUFBQUtBQW9BQ2dBS0FBb0FDZ0FBQUFBQUFBQUFBTEVBc1FDeEFBQUFBQUFBQUFBQUFBQUFBQUFBQ2dBS0FBb0FDZ0FLQUFvQUNnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFMRUFDZ0FLQUFvd0N2QUtNQXJ3Q2dBS0FBb0FDakFLOEFvQUNqQUs4QW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLTUFyd0NnQUtBQW93Q3ZBS01RcnlDakVLOGdveEN2SUtNUXJ5Q2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFBQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFBQUFBQUFBQUFBQ2dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDeEFMRUFzUUN4QUFBQUFBQUtBQUFBQUFBQUFBQUFBQUFLQUFvQUFBQUFBQUFBQUFBQUFBb0FDZ0FLQUFrQUNnQUtBQW9BQ2dBQUFBQUFBQUFLTVFyeUNqRUs4Z294Q3ZJS01RcnlDakVLOGdvQUNnQUtNUXJ5Q2pFSzhnb3hDdklLTVFyeUNnQUtBQW9BQ2dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTEVBc1FBS0FBb0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUtBQW9BQ2dBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBS0FBb0FDZ0FLQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBS0FBb0FDZ0FLQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBS0FBb0FDZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUxFQXNRQ3hBTEVBQ2dDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBc1FDeEFBb0FDZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFDZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFMRUFBQUFBQUFBQXNRQUFBQUFBQUFBQUFMRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXNRQ3hBQUFBQ2dBS0FBb0FDZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQVFBQUFBQUFBQUFBQUFBQUFBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVlBQUFBQW9BQ2dBS0FBb0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFMRUFzUUN4QUxFQXNRQ3hBTEVBc1FDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBc1FDeEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXNRQUFBQUFBQUFBQUFBQUFBQUN4QUxFQXNRQ3hBTEVBc1FDeEFMRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXNRQ3hBTEVBc1FDeEFMRUFzUUN4QUxFQXNRQ3hBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFMRUFBQUFBQUxFQXNRQ3hBTEVBQUFBQUFMRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXNRQ3hBTEVBc1FDeEFMRUFBQUFBQUxFQXNRQUFBQUFBc1FDeEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUxFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUxFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ3hBQUFBc1FDeEFMRUFBQUFBQUxFQXNRQUFBQUFBQUFBQUFBQUFzUUN4QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTEVBc1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBc1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFMRUFBQUFBQUxFQUFBQUFBQUFBQUFDeEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBTUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQU5BQTBBRFFBTkFBMEFEUUFOQUEwQURRQU5BQTBBRFFBTkFBMEFEUUFOQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUJBTEVBQVFBTkFBMEFEUUFOQUEwQURRQU5BQTBBRFFBTkFBMEFEUUFOQUEwQURRQU5BQTBBRFFBTkFBMEFEUUFOQUEwQURRQU5BQTBBRFFBTkFBMEFEUUFLQUFvQURRQU5BQTBBRFFBTkFBMEFEUUFOQUEwQURRQU5BQTBBRFFBTkFBMEFEUUFTQUJJQUVnQVNBQklBRWdBU0FCSUFFZ0FTQUJJQUVnQVNBQklBRWdBU0FBMEFEUUFOQUEwQURRQU5BQTBBRFFBTkFBMEFEUUFOQUEwQUNnQU5BQTBBc1FDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBc1FDeEFMRUFzUUN4QUxFQXNRQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQUFBQUFBQUFBQUFBQUFBQUxFQXNRQ3hBTEVBc1FDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBc1FDeEFMRUFDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBR0FBb0FCZ0FBQUFvQUJnQUtBQW9BQ2dBS01RcnlDakVLOGdveEN2SUVBQW9BQ2dBREFBTUFDakFLOEFvQUFBQUtBQVFBQkFBS0FBQUFBQUFBQUFBQURRQU5BQTBBRFFBTkFBMEFEUUFOQUEwQURRQU5BQTBBRFFBTkFBMEFEUUFOQUEwQURRQU5BQTBBRFFBTkFBMEFEUUFOQUEwQURRQU5BQTBBRFFDeUFBQUFDZ0FLQUFRQUJBQUVBQW9BQ2dBS01RcnlDZ0FEQUFZQUF3QUdBQVlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBR0FBb0FDbEFLQUFyUUNnQUtBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUtVUW9BQ3RJS0FBb3hDdklLQUFveEN2SUtBQW9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQVFBQkFBS0FBb0FDZ0FFQUFRQUFBQUtBQW9BQ2dBS0FBb0FDZ0FLQUFBQUVnQVNBQklBRWdBU0FCSUFFZ0FTQUJJQXFnQ3FBS29BQ2dBS0FCSUFFZ0FBQUFvQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FBQUFBQUFBQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBQUFBQUFBQUFBQUxFQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDeEFMRUFzUUN4QUxFQUFBQUFBQUFBQUFBQUFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUNnQUJBTEVBc1FDeEFBRUFzUUN4QUFFQUFRQUJBQUVBQVFDeEFMRUFzUUN4QUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFMRUFzUUN4QUFFQUFRQUJBQUVBc1FCQkFJRUFBUUFCQUlFQXNRQ3hBQUVBQVFBQkFBRUFRUUJCQUVFQVFRQ0JBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQVFRQkJBRUVBUVFCQkFJRUFBUUNCQUFFQWdRQ0JBQUVBQVFCaEFJRUFnUUNCQUlFQWdRQkJBRUVBUVFCQkFHRUFRUUJCQUVFQVFRQkJBSUVBUVFCQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQ2dBS0FBb0FDZ0FLQUFvQUNnQkJBSUVBUVFDQkFJRUFnUUJCQUVFQVFRQ0JBRUVBUVFDQkFFRUFnUUNCQUVFQWdRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUNCQUlFQWdRQ0JBRUVBUVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBVFFCTkFJMEFUUUN4QUxFQXNRQ3hBQTBBRFFBTkFBMEFEUUFOQUEwQURRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQTBBRFFBTkFBMEFEUUFOQUcwQVRRQk5BRTBBVFFCTkFFMEFUUUJOQUUwQVRRQk5BRTBBVFFCTkFFMEFUUUJOQUUwQVRRQk5BRTBBVFFCTkFFMEFUUUJOQUUwQVRRQk5BRTBBVFFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFVQUJRQUZBQVVBQlFBRkFBVUFCUUFGQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUJOQUUwQVRRQ05BRTBBVFFCTkFFMEFUUUJOQUUwQVRRQk5BRTBBVFFCTkFFMEFEUUN4QUxFQXNRQ3hBTEVBc1FDeEFMRUFzUUN4QUxFQVRRQk5BRTBBalFBTkFBMEFEUUFOQUEwQURRQU5BQTBBRFFBTkFBMEFEUUFOQUEwQURRQU5BQTBBRFFBTkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXNRQ3hBTEVBc1FDeEFMRUFzUUN4QUxFQXNRQ3hBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXNRQ3hBTEVBc1FBQUFBQUFzUUN4QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUN4QUxFQXNRQ3hBTEVBQUFDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUN4QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBc1FDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDeEFMRUFzUUN4QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBc1FDeEFMRUFBQUFBQUxFQUFBQ3hBTEVBQUFBQUFBQUFBQUFBQUFBQXNRQUFBQUFBQUFBQUFMRUFzUUN4QUxFQXNRQ3hBTEVBc1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXNRQ3hBTEVBc1FDeEFMRUFzUUFBQUFBQUFBQ3hBTEVBc1FDeEFMRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ3hBTEVBc1FBQUFMRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTEVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFMRUFzUUN4QUxFQXNRQ3hBQUFBc1FBQUFBQUFBQUFBQUxFQXNRQUFBTEVBc1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUN4QUxFQXNRQ3hBQUFBQUFBQUFBQUFBQUFBQUxFQXNRQUFBTEVBc1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDeEFMRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXNRQ3hBTEVBc1FDeEFMRUFzUUN4QUFBQUFBQ3hBQUFBc1FBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBc1FBQUFMRUFBQUFBQUxFQXNRQ3hBTEVBc1FDeEFBQUFzUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUxFQXNRQ3hBTEVBQUFDeEFMRUFzUUN4QUxFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFMRUFzUUN4QUxFQXNRQ3hBTEVBc1FDeEFBQUFzUUN4QUFBQUFBQUFBQUFBQUFBQUFMRUFzUUN4QUxFQXNRQ3hBS0FBb0FDeEFMRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBc1FDeEFMRUFzUUN4QUxFQUFBQUFBTEVBc1FDeEFMRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFMRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFzUUN4QUxFQXNRQ3hBTEVBQUFBQUFMRUFzUUN4QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXNRQ3hBTEVBc1FDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBc1FBQUFMRUFzUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUN4QUxFQXNRQ3hBTEVBc1FDeEFBQUFzUUN4QUxFQXNRQ3hBTEVBQUFDZ0FMRUFzUUN4QUxFQXNRQ3hBTEVBc1FBQUFBQUFzUUN4QUxFQXNRQ3hBTEVBc1FBQUFMRUFzUUFBQUxFQXNRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTEVBc1FDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBc1FDeEFMRUFzUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFzUUN4QUxFQXNRQ3hBTEVBQUFBQUFBQUFzUUFBQUxFQXNRQUFBTEVBc1FDeEFMRUFzUUN4QUxFQUFBQ3hBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUxFQXNRQUFBQUFBQUFDeEFBQUFzUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFMRUFzUUN4QUxFQXNRQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTEVBc1FDeEFMRUFzUUN4QUxFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUN4QUxFQXNRQ3hBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFzZ0N5QUxJQXNnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFMRUFzUUN4QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUxJQXNnQ3lBTElBc2dDeUFMSUFzZ0N4QUxFQXNRQ3hBTEVBc1FDeEFMRUFBQUFBQUxFQXNRQ3hBTEVBc1FDeEFMRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ3hBTEVBc1FDeEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBb0FDZ0N4QUxFQXNRQUtBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBS0VBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFvUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFLRUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0N4QUxFQXNRQ3hBTEVBc1FDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBc1FDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBQUFBQUFBQUFBQUN4QUxFQXNRQ3hBTEVBc1FDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBTEVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDeEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXNRQ3hBTEVBc1FDeEFBQUFzUUN4QUxFQXNRQ3hBTEVBc1FDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ3hBTEVBc1FDeEFMRUFzUUN4QUFBQXNRQ3hBTEVBc1FDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBc1FDeEFMRUFzUUN4QUFBQUFBQ3hBTEVBc1FDeEFMRUFzUUN4QUFBQXNRQ3hBQUFBc1FDeEFMRUFzUUN4QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQXNRQ3hBTEVBc1FDeEFMRUFzUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUJCQUVFQVFRQkJBRUVBUVFCQkFFRUFRUUJCQUVFQVFRQkJBRUVBUVFCQkFFRUFRUUJCQUVFQVFRQkJBRUVBUVFCQkFFRUFRUUJCQUVFQVFRQkJBRUVBc1FDeEFMRUFzUUN4QUxFQXNRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBQkFBRUFBUUFCQUFFQUFRQUJBQUVBQVFBTkFBMEFEUUFOQUEwQURRQU5BQTBBRFFBTkFBMEFEUUFOQUEwQURRQU5BQW9BQ2dBTkFBMEFEUUFOQUEwQURRQU5BQTBBRFFBTkFBMEFEUUFOQUEwQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQUFBQUFBQUFBQUFLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFBQUFBQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FBQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBSUFBZ0FDQUFJQUFnQUNBQUlBQWdBQ0FBSUFBZ0FLQUFvQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ2dBS0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FBQUFBQUFBQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQUFBQUFBQUFBQUFBQUFBQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FBQUFBQUFBQUFBQUFBQUFBQUFBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQUFBQUFBQUFBQUFBQUFBQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQUFBQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQUFBQUFBS0FBb0FDZ0FLQUFBQUFBQUFBQW9BQUFBS0FBb0FDZ0FLQUFvQUNnQUtBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FBQUFBQUFBQUFBQUFBQUFBS0FBb0FDZ0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQW9BQ2dBS0FBb0FDZ0FLQUFvQUNnQUtBQW9BQ2dBS0FBb0FDZ0FLQUFvQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRWdBU0FMSUFzZ0N5QUxJQXNnQ3lBTElBc2dDeUFMSUFzZ0N5QUxJQXNnQ3lBTElBc2dDeUFMSUFzZ0N5QUxJQXNnQ3lBTElBc2dDeUFMSUFzZ0N5QUxJQXNnQVNBTElBRWdBU0FCSUFFZ0FTQUJJQUVnQVNBQklBRWdBU0FCSUFFZ0FTQUJJQUVnQVNBQklBRWdBU0FCSUFFZ0FTQUJJQUVnQVNBQklBRWdBU0FCSUFFZ0FTQUJJQUVnQ3hBTEVBc1FDeEFMRUFzUUN4QUxFQXNRQ3hBTEVBc1FDeEFMRUFzUUN4QUJJQUVnQVNBQklBRWdBU0FCSUFFZ0FTQUJJQUVnQVNBQklBRWdBU0FCSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFNQVJBUUJSRWdFQXNCQUJBQUFBQUFEQUVRRUEvaEVCQU1BUUFRQUFBQUFBbUJFQkFCOFNBUURBRVFFQUxCSUJBS0FRQVFBQUFBQUF3QkVCQUpjU0FRQ3dFQUVBQUFBQUFNQVJBUUJ6RWdFQTJCQUJBQUFBQUFBQkFBQUFBZ0FBQUpBQ0FBREFBd0FBNEJFQkFPQVJBUUN3QVFBQXdBTUFBT0FSQVFEZ0VRRUFZQU1BQUpBREFBRGdFUUVBNEJFQkFBQURBQUF3QXdBQTRCRUJBT0FSQVFEQUFnQUFVQUlBQU9rUkFRRHdFUUVBa0FJQUFPQUJBQURnRVFFQTVSRUJBQ0FDQUFCUUFnQUE2UkVCQVBBUkFRQ3dBUUFBNEFFQUFPQVJBUURsRVFFQUFCQUFBQUNBQUFBQUNBQUFBRUFBQUFBQUFBQ2dFQUVBQVFBQUFBSUFBQUFEQUFBQUJBQUFBQUVBQUFBQkFBQUFBUUFBQUFFQUFBQUFBQUFBeUJBQkFBRUFBQUFGQUFBQUF3QUFBQVFBQUFBQkFBQUFBZ0FBQUFJQUFBQUNBQUFBQUFFQ0F3UUFBUTBPQUFFQ0JRWUhDQUFCQ1FvTERBQUNCQVlJQ2d3T1RqRXdYMTlqZUhoaFltbDJNVEUyWDE5emFHbHRYM1I1Y0dWZmFXNW1iMFVBVTNRNWRIbHdaVjlwYm1adkFFNHhNRjlmWTNoNFlXSnBkakV5TUY5ZmMybGZZMnhoYzNOZmRIbHdaVjlwYm1adlJRQk9NVEJmWDJONGVHRmlhWFl4TVRkZlgyTnNZWE56WDNSNWNHVmZhVzVtYjBVQVRqRXdYMTlqZUhoaFltbDJNVEU1WDE5d2IybHVkR1Z5WDNSNWNHVmZhVzVtYjBVQVRqRXdYMTlqZUhoaFltbDJNVEUzWDE5d1ltRnpaVjkwZVhCbFgybHVabTlGJzsKdmFyIHRlbXBEb3VibGVQdHIgPSA3MTEwNDsKdmFyIEVOViA9IHt9OwpmdW5jdGlvbiBfX19idWlsZEVudmlyb25tZW50KGVudmlyb24pIHsKICAgIHZhciBNQVhfRU5WX1ZBTFVFUyA9IDY0OwogICAgdmFyIFRPVEFMX0VOVl9TSVpFID0gMTAyNDsKICAgIHZhciBwb29sUHRyOwogICAgdmFyIGVudlB0cjsKICAgIGlmICghX19fYnVpbGRFbnZpcm9ubWVudC5jYWxsZWQpIHsKICAgICAgICBfX19idWlsZEVudmlyb25tZW50LmNhbGxlZCA9IHRydWU7CiAgICAgICAgRU5WWydVU0VSJ10gPSBFTlZbJ0xPR05BTUUnXSA9ICd3ZWJfdXNlcic7CiAgICAgICAgRU5WWydQQVRIJ10gPSAnLyc7CiAgICAgICAgRU5WWydQV0QnXSA9ICcvJzsKICAgICAgICBFTlZbJ0hPTUUnXSA9ICcvaG9tZS93ZWJfdXNlcic7CiAgICAgICAgRU5WWydMQU5HJ10gPSAnQy5VVEYtOCc7CiAgICAgICAgRU5WWydfJ10gPSBNb2R1bGVbJ3RoaXNQcm9ncmFtJ107CiAgICAgICAgcG9vbFB0ciA9IGdldE1lbW9yeShUT1RBTF9FTlZfU0laRSk7CiAgICAgICAgZW52UHRyID0gZ2V0TWVtb3J5KE1BWF9FTlZfVkFMVUVTICogNCk7CiAgICAgICAgSEVBUDMyW2VudlB0ciA+PiAyXSA9IHBvb2xQdHI7CiAgICAgICAgSEVBUDMyW2Vudmlyb24gPj4gMl0gPSBlbnZQdHI7CiAgICB9IGVsc2UgewogICAgICAgIGVudlB0ciA9IEhFQVAzMltlbnZpcm9uID4+IDJdOwogICAgICAgIHBvb2xQdHIgPSBIRUFQMzJbZW52UHRyID4+IDJdOwogICAgfQogICAgdmFyIHN0cmluZ3MgPSBbXTsKICAgIHZhciB0b3RhbFNpemUgPSAwOwogICAgZm9yICh2YXIga2V5IGluIEVOVikgewogICAgICAgIGlmICh0eXBlb2YgRU5WW2tleV0gPT09ICdzdHJpbmcnKSB7CiAgICAgICAgICAgIHZhciBsaW5lID0ga2V5ICsgJz0nICsgRU5WW2tleV07CiAgICAgICAgICAgIHN0cmluZ3MucHVzaChsaW5lKTsKICAgICAgICAgICAgdG90YWxTaXplICs9IGxpbmUubGVuZ3RoOwogICAgICAgIH0KICAgIH0KICAgIGlmICh0b3RhbFNpemUgPiBUT1RBTF9FTlZfU0laRSkgewogICAgICAgIHRocm93IG5ldyBFcnJvcignRW52aXJvbm1lbnQgc2l6ZSBleGNlZWRlZCBUT1RBTF9FTlZfU0laRSEnKTsKICAgIH0KICAgIHZhciBwdHJTaXplID0gNDsKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc3RyaW5ncy5sZW5ndGg7IGkrKykgewogICAgICAgIHZhciBsaW5lID0gc3RyaW5nc1tpXTsKICAgICAgICB3cml0ZUFzY2lpVG9NZW1vcnkobGluZSwgcG9vbFB0cik7CiAgICAgICAgSEVBUDMyW2VudlB0ciArIGkgKiBwdHJTaXplID4+IDJdID0gcG9vbFB0cjsKICAgICAgICBwb29sUHRyICs9IGxpbmUubGVuZ3RoICsgMTsKICAgIH0KICAgIEhFQVAzMltlbnZQdHIgKyBzdHJpbmdzLmxlbmd0aCAqIHB0clNpemUgPj4gMl0gPSAwOwp9CmZ1bmN0aW9uIF9fWlN0MTh1bmNhdWdodF9leGNlcHRpb252KCkgewogICAgcmV0dXJuICEhX19aU3QxOHVuY2F1Z2h0X2V4Y2VwdGlvbnYudW5jYXVnaHRfZXhjZXB0aW9uOwp9CmZ1bmN0aW9uIF9fX2N4YV9mcmVlX2V4Y2VwdGlvbihwdHIpIHsKICAgIHRyeSB7CiAgICAgICAgcmV0dXJuIF9mcmVlKHB0cik7CiAgICB9IGNhdGNoIChlKSB7CiAgICB9Cn0KdmFyIEVYQ0VQVElPTlMgPSB7CiAgICBsYXN0OiAwLAogICAgY2F1Z2h0OiBbXSwKICAgIGluZm9zOiB7fSwKICAgIGRlQWRqdXN0OiBmdW5jdGlvbiAoYWRqdXN0ZWQpIHsKICAgICAgICBpZiAoIWFkanVzdGVkIHx8IEVYQ0VQVElPTlMuaW5mb3NbYWRqdXN0ZWRdKQogICAgICAgICAgICByZXR1cm4gYWRqdXN0ZWQ7CiAgICAgICAgZm9yICh2YXIga2V5IGluIEVYQ0VQVElPTlMuaW5mb3MpIHsKICAgICAgICAgICAgdmFyIHB0ciA9ICtrZXk7CiAgICAgICAgICAgIHZhciBhZGogPSBFWENFUFRJT05TLmluZm9zW3B0cl0uYWRqdXN0ZWQ7CiAgICAgICAgICAgIHZhciBsZW4gPSBhZGoubGVuZ3RoOwogICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSsrKSB7CiAgICAgICAgICAgICAgICBpZiAoYWRqW2ldID09PSBhZGp1c3RlZCkgewogICAgICAgICAgICAgICAgICAgIHJldHVybiBwdHI7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIGFkanVzdGVkOwogICAgfSwKICAgIGFkZFJlZjogZnVuY3Rpb24gKHB0cikgewogICAgICAgIGlmICghcHRyKQogICAgICAgICAgICByZXR1cm47CiAgICAgICAgdmFyIGluZm8gPSBFWENFUFRJT05TLmluZm9zW3B0cl07CiAgICAgICAgaW5mby5yZWZjb3VudCsrOwogICAgfSwKICAgIGRlY1JlZjogZnVuY3Rpb24gKHB0cikgewogICAgICAgIGlmICghcHRyKQogICAgICAgICAgICByZXR1cm47CiAgICAgICAgdmFyIGluZm8gPSBFWENFUFRJT05TLmluZm9zW3B0cl07CiAgICAgICAgaW5mby5yZWZjb3VudC0tOwogICAgICAgIGlmIChpbmZvLnJlZmNvdW50ID09PSAwICYmICFpbmZvLnJldGhyb3duKSB7CiAgICAgICAgICAgIGlmIChpbmZvLmRlc3RydWN0b3IpIHsKICAgICAgICAgICAgICAgIE1vZHVsZVsnZHluQ2FsbF92aSddKGluZm8uZGVzdHJ1Y3RvciwgcHRyKTsKICAgICAgICAgICAgfQogICAgICAgICAgICBkZWxldGUgRVhDRVBUSU9OUy5pbmZvc1twdHJdOwogICAgICAgICAgICBfX19jeGFfZnJlZV9leGNlcHRpb24ocHRyKTsKICAgICAgICB9CiAgICB9LAogICAgY2xlYXJSZWY6IGZ1bmN0aW9uIChwdHIpIHsKICAgICAgICBpZiAoIXB0cikKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIHZhciBpbmZvID0gRVhDRVBUSU9OUy5pbmZvc1twdHJdOwogICAgICAgIGluZm8ucmVmY291bnQgPSAwOwogICAgfQp9OwpmdW5jdGlvbiBfX19yZXN1bWVFeGNlcHRpb24ocHRyKSB7CiAgICBpZiAoIUVYQ0VQVElPTlMubGFzdCkgewogICAgICAgIEVYQ0VQVElPTlMubGFzdCA9IHB0cjsKICAgIH0KICAgIHRocm93IHB0cjsKfQpmdW5jdGlvbiBfX19jeGFfZmluZF9tYXRjaGluZ19jYXRjaCgpIHsKICAgIHZhciB0aHJvd24gPSBFWENFUFRJT05TLmxhc3Q7CiAgICBpZiAoIXRocm93bikgewogICAgICAgIHJldHVybiAoc2V0VGVtcFJldDAoMCksIDApIHwgMDsKICAgIH0KICAgIHZhciBpbmZvID0gRVhDRVBUSU9OUy5pbmZvc1t0aHJvd25dOwogICAgdmFyIHRocm93bnR5cGUgPSBpbmZvLnR5cGU7CiAgICBpZiAoIXRocm93bnR5cGUpIHsKICAgICAgICByZXR1cm4gKHNldFRlbXBSZXQwKDApLCB0aHJvd24pIHwgMDsKICAgIH0KICAgIHZhciB0eXBlQXJyYXkgPSBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChhcmd1bWVudHMpOwogICAgdmFyIHBvaW50ZXIgPSBNb2R1bGVbJ19fX2N4YV9pc19wb2ludGVyX3R5cGUnXSh0aHJvd250eXBlKTsKICAgIGlmICghX19fY3hhX2ZpbmRfbWF0Y2hpbmdfY2F0Y2guYnVmZmVyKQogICAgICAgIF9fX2N4YV9maW5kX21hdGNoaW5nX2NhdGNoLmJ1ZmZlciA9IF9tYWxsb2MoNCk7CiAgICBIRUFQMzJbX19fY3hhX2ZpbmRfbWF0Y2hpbmdfY2F0Y2guYnVmZmVyID4+IDJdID0gdGhyb3duOwogICAgdGhyb3duID0gX19fY3hhX2ZpbmRfbWF0Y2hpbmdfY2F0Y2guYnVmZmVyOwogICAgZm9yICh2YXIgaSA9IDA7IGkgPCB0eXBlQXJyYXkubGVuZ3RoOyBpKyspIHsKICAgICAgICBpZiAodHlwZUFycmF5W2ldICYmIE1vZHVsZVsnX19fY3hhX2Nhbl9jYXRjaCddKHR5cGVBcnJheVtpXSwgdGhyb3dudHlwZSwgdGhyb3duKSkgewogICAgICAgICAgICB0aHJvd24gPSBIRUFQMzJbdGhyb3duID4+IDJdOwogICAgICAgICAgICBpbmZvLmFkanVzdGVkLnB1c2godGhyb3duKTsKICAgICAgICAgICAgcmV0dXJuIChzZXRUZW1wUmV0MCh0eXBlQXJyYXlbaV0pLCB0aHJvd24pIHwgMDsKICAgICAgICB9CiAgICB9CiAgICB0aHJvd24gPSBIRUFQMzJbdGhyb3duID4+IDJdOwogICAgcmV0dXJuIChzZXRUZW1wUmV0MCh0aHJvd250eXBlKSwgdGhyb3duKSB8IDA7Cn0KZnVuY3Rpb24gX19fZ3h4X3BlcnNvbmFsaXR5X3YwKCkgewp9CmZ1bmN0aW9uIF9lbXNjcmlwdGVuX2dldF9oZWFwX3NpemUoKSB7CiAgICByZXR1cm4gSEVBUDgubGVuZ3RoOwp9CmZ1bmN0aW9uIGFib3J0T25DYW5ub3RHcm93TWVtb3J5KHJlcXVlc3RlZFNpemUpIHsKICAgIGFib3J0KCdPT00nKTsKfQpmdW5jdGlvbiBlbXNjcmlwdGVuX3JlYWxsb2NfYnVmZmVyKHNpemUpIHsKICAgIHRyeSB7CiAgICAgICAgdmFyIG5ld0J1ZmZlciA9IG5ldyBBcnJheUJ1ZmZlcihzaXplKTsKICAgICAgICBpZiAobmV3QnVmZmVyLmJ5dGVMZW5ndGggIT0gc2l6ZSkKICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgIG5ldyBJbnQ4QXJyYXkobmV3QnVmZmVyKS5zZXQoSEVBUDgpOwogICAgfSBjYXRjaCAoZSkgewogICAgICAgIHJldHVybiBmYWxzZTsKICAgIH0KICAgIGJ1ZmZlciA9IG5ld0J1ZmZlcjsKICAgIE1vZHVsZVsnX2Vtc2NyaXB0ZW5fcmVwbGFjZV9tZW1vcnknXShuZXdCdWZmZXIpOwogICAgcmV0dXJuIHRydWU7Cn0KZnVuY3Rpb24gX2Vtc2NyaXB0ZW5fcmVzaXplX2hlYXAocmVxdWVzdGVkU2l6ZSkgewogICAgdmFyIG9sZFNpemUgPSBfZW1zY3JpcHRlbl9nZXRfaGVhcF9zaXplKCk7CiAgICB2YXIgUEFHRV9NVUxUSVBMRSA9IDE2Nzc3MjE2OwogICAgdmFyIExJTUlUID0gMjE0NzQ4MzY0OCAtIFBBR0VfTVVMVElQTEU7CiAgICBpZiAocmVxdWVzdGVkU2l6ZSA+IExJTUlUKSB7CiAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgfQogICAgdmFyIE1JTl9UT1RBTF9NRU1PUlkgPSAxNjc3NzIxNjsKICAgIHZhciBuZXdTaXplID0gTWF0aC5tYXgob2xkU2l6ZSwgTUlOX1RPVEFMX01FTU9SWSk7CiAgICB3aGlsZSAobmV3U2l6ZSA8IHJlcXVlc3RlZFNpemUpIHsKICAgICAgICBpZiAobmV3U2l6ZSA8PSA1MzY4NzA5MTIpIHsKICAgICAgICAgICAgbmV3U2l6ZSA9IGFsaWduVXAoMiAqIG5ld1NpemUsIFBBR0VfTVVMVElQTEUpOwogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIG5ld1NpemUgPSBNYXRoLm1pbihhbGlnblVwKCgzICogbmV3U2l6ZSArIDIxNDc0ODM2NDgpIC8gNCwgUEFHRV9NVUxUSVBMRSksIExJTUlUKTsKICAgICAgICB9CiAgICB9CiAgICBpZiAoIWVtc2NyaXB0ZW5fcmVhbGxvY19idWZmZXIobmV3U2l6ZSkpIHsKICAgICAgICByZXR1cm4gZmFsc2U7CiAgICB9CiAgICB1cGRhdGVHbG9iYWxCdWZmZXJWaWV3cygpOwogICAgcmV0dXJuIHRydWU7Cn0KZnVuY3Rpb24gX2Vtc2NyaXB0ZW5fbWVtY3B5X2JpZyhkZXN0LCBzcmMsIG51bSkgewogICAgSEVBUFU4LnNldChIRUFQVTguc3ViYXJyYXkoc3JjLCBzcmMgKyBudW0pLCBkZXN0KTsKfQpmdW5jdGlvbiBfX19zZXRFcnJObyh2YWx1ZSkgewogICAgaWYgKE1vZHVsZVsnX19fZXJybm9fbG9jYXRpb24nXSkKICAgICAgICBIRUFQMzJbTW9kdWxlWydfX19lcnJub19sb2NhdGlvbiddKCkgPj4gMl0gPSB2YWx1ZTsKICAgIHJldHVybiB2YWx1ZTsKfQp2YXIgQVNTRVJUSU9OUyA9IGZhbHNlOwpmdW5jdGlvbiBpbnRBcnJheVRvU3RyaW5nKGFycmF5KSB7CiAgICB2YXIgcmV0ID0gW107CiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGFycmF5Lmxlbmd0aDsgaSsrKSB7CiAgICAgICAgdmFyIGNociA9IGFycmF5W2ldOwogICAgICAgIGlmIChjaHIgPiAyNTUpIHsKICAgICAgICAgICAgaWYgKEFTU0VSVElPTlMpIHsKICAgICAgICAgICAgfQogICAgICAgICAgICBjaHIgJj0gMjU1OwogICAgICAgIH0KICAgICAgICByZXQucHVzaChTdHJpbmcuZnJvbUNoYXJDb2RlKGNocikpOwogICAgfQogICAgcmV0dXJuIHJldC5qb2luKCcnKTsKfQp2YXIgZGVjb2RlQmFzZTY0ID0gdHlwZW9mIGF0b2IgPT09ICdmdW5jdGlvbicgPyBhdG9iIDogZnVuY3Rpb24gKGlucHV0KSB7CiAgICB2YXIga2V5U3RyID0gJ0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU2Nzg5Ky89JzsKICAgIHZhciBvdXRwdXQgPSAnJzsKICAgIHZhciBjaHIxLCBjaHIyLCBjaHIzOwogICAgdmFyIGVuYzEsIGVuYzIsIGVuYzMsIGVuYzQ7CiAgICB2YXIgaSA9IDA7CiAgICBpbnB1dCA9IGlucHV0LnJlcGxhY2UoL1teQS1aYS16MC05XCtcL1w9XS9nLCAnJyk7CiAgICBkbyB7CiAgICAgICAgZW5jMSA9IGtleVN0ci5pbmRleE9mKGlucHV0LmNoYXJBdChpKyspKTsKICAgICAgICBlbmMyID0ga2V5U3RyLmluZGV4T2YoaW5wdXQuY2hhckF0KGkrKykpOwogICAgICAgIGVuYzMgPSBrZXlTdHIuaW5kZXhPZihpbnB1dC5jaGFyQXQoaSsrKSk7CiAgICAgICAgZW5jNCA9IGtleVN0ci5pbmRleE9mKGlucHV0LmNoYXJBdChpKyspKTsKICAgICAgICBjaHIxID0gZW5jMSA8PCAyIHwgZW5jMiA+PiA0OwogICAgICAgIGNocjIgPSAoZW5jMiAmIDE1KSA8PCA0IHwgZW5jMyA+PiAyOwogICAgICAgIGNocjMgPSAoZW5jMyAmIDMpIDw8IDYgfCBlbmM0OwogICAgICAgIG91dHB1dCA9IG91dHB1dCArIFN0cmluZy5mcm9tQ2hhckNvZGUoY2hyMSk7CiAgICAgICAgaWYgKGVuYzMgIT09IDY0KSB7CiAgICAgICAgICAgIG91dHB1dCA9IG91dHB1dCArIFN0cmluZy5mcm9tQ2hhckNvZGUoY2hyMik7CiAgICAgICAgfQogICAgICAgIGlmIChlbmM0ICE9PSA2NCkgewogICAgICAgICAgICBvdXRwdXQgPSBvdXRwdXQgKyBTdHJpbmcuZnJvbUNoYXJDb2RlKGNocjMpOwogICAgICAgIH0KICAgIH0gd2hpbGUgKGkgPCBpbnB1dC5sZW5ndGgpOwogICAgcmV0dXJuIG91dHB1dDsKfTsKZnVuY3Rpb24gaW50QXJyYXlGcm9tQmFzZTY0KHMpIHsKICAgIGlmICh0eXBlb2YgRU5WSVJPTk1FTlRfSVNfTk9ERSA9PT0gJ2Jvb2xlYW4nICYmIEVOVklST05NRU5UX0lTX05PREUpIHsKICAgICAgICB2YXIgYnVmOwogICAgICAgIHRyeSB7CiAgICAgICAgICAgIGJ1ZiA9IEJ1ZmZlci5mcm9tKHMsICdiYXNlNjQnKTsKICAgICAgICB9IGNhdGNoIChfKSB7CiAgICAgICAgICAgIGJ1ZiA9IG5ldyBCdWZmZXIocywgJ2Jhc2U2NCcpOwogICAgICAgIH0KICAgICAgICByZXR1cm4gbmV3IFVpbnQ4QXJyYXkoYnVmLmJ1ZmZlciwgYnVmLmJ5dGVPZmZzZXQsIGJ1Zi5ieXRlTGVuZ3RoKTsKICAgIH0KICAgIHRyeSB7CiAgICAgICAgdmFyIGRlY29kZWQgPSBkZWNvZGVCYXNlNjQocyk7CiAgICAgICAgdmFyIGJ5dGVzID0gbmV3IFVpbnQ4QXJyYXkoZGVjb2RlZC5sZW5ndGgpOwogICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZGVjb2RlZC5sZW5ndGg7ICsraSkgewogICAgICAgICAgICBieXRlc1tpXSA9IGRlY29kZWQuY2hhckNvZGVBdChpKTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGJ5dGVzOwogICAgfSBjYXRjaCAoXykgewogICAgICAgIHRocm93IG5ldyBFcnJvcignQ29udmVydGluZyBiYXNlNjQgc3RyaW5nIHRvIGJ5dGVzIGZhaWxlZC4nKTsKICAgIH0KfQpmdW5jdGlvbiB0cnlQYXJzZUFzRGF0YVVSSShmaWxlbmFtZSkgewogICAgaWYgKCFpc0RhdGFVUkkoZmlsZW5hbWUpKSB7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgcmV0dXJuIGludEFycmF5RnJvbUJhc2U2NChmaWxlbmFtZS5zbGljZShkYXRhVVJJUHJlZml4Lmxlbmd0aCkpOwp9CnZhciBhc21HbG9iYWxBcmcgPSB7CiAgICAnSW50OEFycmF5JzogSW50OEFycmF5LAogICAgJ0ludDE2QXJyYXknOiBJbnQxNkFycmF5LAogICAgJ0ludDMyQXJyYXknOiBJbnQzMkFycmF5LAogICAgJ1VpbnQ4QXJyYXknOiBVaW50OEFycmF5LAogICAgJ1VpbnQxNkFycmF5JzogVWludDE2QXJyYXkKfTsKdmFyIGFzbUxpYnJhcnlBcmcgPSB7CiAgICAnYSc6IGFib3J0LAogICAgJ2InOiBzZXRUZW1wUmV0MCwKICAgICdjJzogZ2V0VGVtcFJldDAsCiAgICAnZCc6IF9fWlN0MTh1bmNhdWdodF9leGNlcHRpb252LAogICAgJ2UnOiBfX19idWlsZEVudmlyb25tZW50LAogICAgJ2YnOiBfX19jeGFfZmluZF9tYXRjaGluZ19jYXRjaCwKICAgICdnJzogX19fY3hhX2ZyZWVfZXhjZXB0aW9uLAogICAgJ2gnOiBfX19neHhfcGVyc29uYWxpdHlfdjAsCiAgICAnaSc6IF9fX3Jlc3VtZUV4Y2VwdGlvbiwKICAgICdqJzogX19fc2V0RXJyTm8sCiAgICAnayc6IF9lbXNjcmlwdGVuX2dldF9oZWFwX3NpemUsCiAgICAnbCc6IF9lbXNjcmlwdGVuX21lbWNweV9iaWcsCiAgICAnbSc6IF9lbXNjcmlwdGVuX3Jlc2l6ZV9oZWFwLAogICAgJ24nOiBhYm9ydE9uQ2Fubm90R3Jvd01lbW9yeSwKICAgICdvJzogZW1zY3JpcHRlbl9yZWFsbG9jX2J1ZmZlciwKICAgICdwJzogdGVtcERvdWJsZVB0ciwKICAgICdxJzogRFlOQU1JQ1RPUF9QVFIKfTsKdmFyIGFzbSA9IGZ1bmN0aW9uIChnbG9iYWwsIGVudiwgYnVmZmVyKSB7CiAgICAnYWxtb3N0IGFzbSc7CiAgICB2YXIgYSA9IG5ldyBnbG9iYWwuSW50OEFycmF5KGJ1ZmZlciksIGIgPSBuZXcgZ2xvYmFsLkludDE2QXJyYXkoYnVmZmVyKSwgYyA9IG5ldyBnbG9iYWwuSW50MzJBcnJheShidWZmZXIpLCBkID0gbmV3IGdsb2JhbC5VaW50OEFycmF5KGJ1ZmZlciksIGUgPSBuZXcgZ2xvYmFsLlVpbnQxNkFycmF5KGJ1ZmZlciksIGYgPSBlbnYucCB8IDAsIGcgPSBlbnYucSB8IDAsIGggPSAwLCBpID0gMCwgaiA9IDAsIGsgPSAwLCBsID0gMCwgbSA9IDAsIG4gPSAwLCBvID0gMCwgcCA9IGVudi5hLCBxID0gZW52LmIsIHIgPSBlbnYuYywgcyA9IGVudi5kLCB0ID0gZW52LmUsIHUgPSBlbnYuZiwgdiA9IGVudi5nLCB3ID0gZW52LmgsIHggPSBlbnYuaSwgeSA9IGVudi5qLCB6ID0gZW52LmssIEEgPSBlbnYubCwgQiA9IGVudi5tLCBDID0gZW52Lm4sIEQgPSBlbnYubywgRSA9IDcxMTIwLCBGID0gNTMxNDAwMCwgRyA9IDA7CiAgICBmdW5jdGlvbiBIKG5ld0J1ZmZlcikgewogICAgICAgIGEgPSBuZXcgSW50OEFycmF5KG5ld0J1ZmZlcik7CiAgICAgICAgZCA9IG5ldyBVaW50OEFycmF5KG5ld0J1ZmZlcik7CiAgICAgICAgYiA9IG5ldyBJbnQxNkFycmF5KG5ld0J1ZmZlcik7CiAgICAgICAgZSA9IG5ldyBVaW50MTZBcnJheShuZXdCdWZmZXIpOwogICAgICAgIGMgPSBuZXcgSW50MzJBcnJheShuZXdCdWZmZXIpOwogICAgICAgIGJ1ZmZlciA9IG5ld0J1ZmZlcjsKICAgICAgICByZXR1cm4gdHJ1ZTsKICAgIH0KICAgIGZ1bmN0aW9uIE8oYSkgewogICAgICAgIGEgPSBhIHwgMDsKICAgICAgICB2YXIgYiA9IDA7CiAgICAgICAgYiA9IEU7CiAgICAgICAgRSA9IEUgKyBhIHwgMDsKICAgICAgICBFID0gRSArIDE1ICYgLTE2OwogICAgICAgIHJldHVybiBiIHwgMDsKICAgIH0KICAgIGZ1bmN0aW9uIFAoKSB7CiAgICAgICAgcmV0dXJuIEUgfCAwOwogICAgfQogICAgZnVuY3Rpb24gUShhKSB7CiAgICAgICAgYSA9IGEgfCAwOwogICAgICAgIEUgPSBhOwogICAgfQogICAgZnVuY3Rpb24gUihhLCBiKSB7CiAgICAgICAgYSA9IGEgfCAwOwogICAgICAgIGIgPSBiIHwgMDsKICAgICAgICBFID0gYTsKICAgICAgICBGID0gYjsKICAgIH0KICAgIGZ1bmN0aW9uIFMoYSwgZCkgewogICAgICAgIGEgPSBhIHwgMDsKICAgICAgICBkID0gZCB8IDA7CiAgICAgICAgdmFyIGUgPSAwLCBmID0gMCwgZyA9IDAsIGggPSAwLCBpID0gMDsKICAgICAgICBnID0gRTsKICAgICAgICBFID0gRSArIDE2IHwgMDsKICAgICAgICBoID0gZzsKICAgICAgICBjW2ggPj4gMl0gPSAwOwogICAgICAgIGYgPSBZYShhLCBkLCAwLCAwLCBoKSB8IDA7CiAgICAgICAgaSA9IGYgKyAxIHwgMDsKICAgICAgICBjW2ggPj4gMl0gPSAwOwogICAgICAgIGUgPSBBYihpIDw8IDEpIHwgMDsKICAgICAgICBZYShhLCBkLCBlLCBpLCBoKSB8IDA7CiAgICAgICAgaWYgKChjW2ggPj4gMl0gfCAwKSA+IDApIHsKICAgICAgICAgICAgQmIoZSk7CiAgICAgICAgICAgIGUgPSAwOwogICAgICAgIH0gZWxzZQogICAgICAgICAgICBiW2UgKyAoZiA8PCAxKSA+PiAxXSA9IDA7CiAgICAgICAgRSA9IGc7CiAgICAgICAgcmV0dXJuIGUgfCAwOwogICAgfQogICAgZnVuY3Rpb24gVChhLCBiKSB7CiAgICAgICAgYSA9IGEgfCAwOwogICAgICAgIGIgPSBiIHwgMDsKICAgICAgICB2YXIgZCA9IDAsIGUgPSAwLCBmID0gMDsKICAgICAgICBmID0gRTsKICAgICAgICBFID0gRSArIDE2IHwgMDsKICAgICAgICBlID0gZjsKICAgICAgICBkID0gY1sxNzU5Ml0gfCAwOwogICAgICAgIGlmICghZCkgewogICAgICAgICAgICBkID0gWigpIHwgMDsKICAgICAgICAgICAgY1sxNzU5Ml0gPSBkOwogICAgICAgIH0KICAgICAgICBjW2UgPj4gMl0gPSAwOwogICAgICAgIGVhKGQsIGEsIGIsIC0yLCBlKTsKICAgICAgICBpZiAoKGNbZSA+PiAyXSB8IDApID4gMCkKICAgICAgICAgICAgZCA9IDA7CiAgICAgICAgZWxzZQogICAgICAgICAgICBkID0gRWEoY1sxNzU5Ml0gfCAwKSB8IDA7CiAgICAgICAgRSA9IGY7CiAgICAgICAgcmV0dXJuIGQgfCAwOwogICAgfQogICAgZnVuY3Rpb24gVShhKSB7CiAgICAgICAgYSA9IGEgfCAwOwogICAgICAgIHZhciBiID0gMCwgZCA9IDAsIGUgPSAwOwogICAgICAgIGUgPSBFOwogICAgICAgIEUgPSBFICsgMTYgfCAwOwogICAgICAgIGQgPSBlICsgNCB8IDA7CiAgICAgICAgYiA9IGU7CiAgICAgICAgY1tkID4+IDJdID0gMDsKICAgICAgICBjW2IgPj4gMl0gPSAwOwogICAgICAgIEZhKGNbMTc1OTJdIHwgMCwgYSwgYiwgZCk7CiAgICAgICAgRSA9IGU7CiAgICAgICAgcmV0dXJuICgoY1tkID4+IDJdIHwgMCkgPiAwID8gMCA6IGNbYiA+PiAyXSB8IDApIHwgMDsKICAgIH0KICAgIGZ1bmN0aW9uIFYoYSwgYiwgZCkgewogICAgICAgIGEgPSBhIHwgMDsKICAgICAgICBiID0gYiB8IDA7CiAgICAgICAgZCA9IGQgfCAwOwogICAgICAgIHJldHVybiAoVmEoY1sxNzU5M10gfCAwLCBhLCBiLCBkKSB8IDApID09IDEgfCAwOwogICAgfQogICAgZnVuY3Rpb24gVyhhLCBiKSB7CiAgICAgICAgYSA9IGEgfCAwOwogICAgICAgIGIgPSBiIHwgMDsKICAgICAgICB2YXIgZCA9IDAsIGUgPSAwLCBmID0gMDsKICAgICAgICBmID0gRTsKICAgICAgICBFID0gRSArIDE2IHwgMDsKICAgICAgICBlID0gZjsKICAgICAgICBjW2UgPj4gMl0gPSAwOwogICAgICAgIGQgPSBjWzE3NTkzXSB8IDA7CiAgICAgICAgaWYgKCFkKSB7CiAgICAgICAgICAgIGQgPSBaKCkgfCAwOwogICAgICAgICAgICBjWzE3NTkzXSA9IGQ7CiAgICAgICAgfQogICAgICAgIE1hKGNbMTc1OTJdIHwgMCwgYSwgYiwgZCwgZSk7CiAgICAgICAgaWYgKChjW2UgPj4gMl0gfCAwKSA+IDApCiAgICAgICAgICAgIGQgPSAwOwogICAgICAgIGVsc2UgewogICAgICAgICAgICBjW2UgPj4gMl0gPSAwOwogICAgICAgICAgICBkID0gUWEoZCwgZSkgfCAwOwogICAgICAgICAgICBkID0gKGNbZSA+PiAyXSB8IDApID4gMCA/IDAgOiBkOwogICAgICAgIH0KICAgICAgICBFID0gZjsKICAgICAgICByZXR1cm4gZCB8IDA7CiAgICB9CiAgICBmdW5jdGlvbiBYKGEsIGQsIGUpIHsKICAgICAgICBhID0gYSB8IDA7CiAgICAgICAgZCA9IGQgfCAwOwogICAgICAgIGUgPSBlIHwgMDsKICAgICAgICB2YXIgZiA9IDAsIGcgPSAwLCBoID0gMDsKICAgICAgICBnID0gRTsKICAgICAgICBFID0gRSArIDE2IHwgMDsKICAgICAgICBoID0gZzsKICAgICAgICBjW2ggPj4gMl0gPSAwOwogICAgICAgIGYgPSBBYigoZSA8PCAxKSArIDIgfCAwKSB8IDA7CiAgICAgICAgYSA9IEhhKGEgKyAoZCA8PCAxKSB8IDAsIGUsIGYsIGUsIGgpIHwgMDsKICAgICAgICBpZiAoKGNbaCA+PiAyXSB8IDApID4gMCkKICAgICAgICAgICAgZiA9IDA7CiAgICAgICAgZWxzZQogICAgICAgICAgICBiW2YgKyAoYSA8PCAxKSA+PiAxXSA9IDA7CiAgICAgICAgRSA9IGc7CiAgICAgICAgcmV0dXJuIGYgfCAwOwogICAgfQogICAgZnVuY3Rpb24gWShhLCBkKSB7CiAgICAgICAgYSA9IGEgfCAwOwogICAgICAgIGQgPSBkIHwgMDsKICAgICAgICB2YXIgZSA9IDAsIGYgPSAwLCBnID0gMCwgaCA9IDAsIGkgPSAwOwogICAgICAgIGkgPSBFOwogICAgICAgIEUgPSBFICsgMTYgfCAwOwogICAgICAgIGggPSBpOwogICAgICAgIGNbaCA+PiAyXSA9IDA7CiAgICAgICAgZiA9IGNbMTc1OTNdIHwgMDsKICAgICAgICBpZiAoIWYpIHsKICAgICAgICAgICAgZiA9IFooKSB8IDA7CiAgICAgICAgICAgIGNbMTc1OTNdID0gZjsKICAgICAgICB9CiAgICAgICAgTWEoY1sxNzU5Ml0gfCAwLCBhLCBkLCBmLCBoKTsKICAgICAgICBpZiAoKGNbaCA+PiAyXSB8IDApIDw9IDAgPyAoZyA9IERhKGYpIHwgMCwgZCA9IGcgKyAxIHwgMCwgZSA9IEFiKGQgPDwgMSkgfCAwLCBLYShjWzE3NTkzXSB8IDAsIGUsIGQsIDEwLCBoKSB8IDAsIChjW2ggPj4gMl0gfCAwKSA8PSAwKSA6IDApCiAgICAgICAgICAgIGJbZSArIChnIDw8IDEpID4+IDFdID0gMDsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGUgPSAwOwogICAgICAgIEUgPSBpOwogICAgICAgIHJldHVybiBlIHwgMDsKICAgIH0KICAgIGZ1bmN0aW9uIFooKSB7CiAgICAgICAgdmFyIGEgPSAwLCBiID0gMDsKICAgICAgICBiID0gRTsKICAgICAgICBFID0gRSArIDE2IHwgMDsKICAgICAgICBhID0gYjsKICAgICAgICBjW2EgPj4gMl0gPSAwOwogICAgICAgIGEgPSBfKGEpIHwgMDsKICAgICAgICBFID0gYjsKICAgICAgICByZXR1cm4gYSB8IDA7CiAgICB9CiAgICBmdW5jdGlvbiBfKGIpIHsKICAgICAgICBiID0gYiB8IDA7CiAgICAgICAgdmFyIGQgPSAwOwogICAgICAgIGlmICghYikgewogICAgICAgICAgICBkID0gMDsKICAgICAgICAgICAgcmV0dXJuIGQgfCAwOwogICAgICAgIH0KICAgICAgICBpZiAoKCQoY1tiID4+IDJdIHwgMCkgfCAwKSA8PCAyNCA+PiAyNCkgewogICAgICAgICAgICBkID0gMDsKICAgICAgICAgICAgcmV0dXJuIGQgfCAwOwogICAgICAgIH0KICAgICAgICBkID0gbGIoMzYwKSB8IDA7CiAgICAgICAgaWYgKCFkKSB7CiAgICAgICAgICAgIGNbYiA+PiAyXSA9IDc7CiAgICAgICAgICAgIGQgPSAwOwogICAgICAgICAgICByZXR1cm4gZCB8IDA7CiAgICAgICAgfQogICAgICAgIGZjKGQgfCAwLCAwLCAzNjApIHwgMDsKICAgICAgICBhW2QgKyA2OCA+PiAwXSA9IDE7CiAgICAgICAgYVtkICsgNjkgPj4gMF0gPSAxOwogICAgICAgIGlmICgoYmEoY1tiID4+IDJdIHwgMCkgfCAwKSA8PCAyNCA+PiAyNCkKICAgICAgICAgICAgcmV0dXJuIGQgfCAwOwogICAgICAgIGNhKGQpOwogICAgICAgIGQgPSAwOwogICAgICAgIHJldHVybiBkIHwgMDsKICAgIH0KICAgIGZ1bmN0aW9uICQoYSkgewogICAgICAgIGEgPSBhIHwgMDsKICAgICAgICByZXR1cm4gKGEgfCAwKSA+IDAgfCAwOwogICAgfQogICAgZnVuY3Rpb24gYWEoYSwgYiwgZCwgZSkgewogICAgICAgIGEgPSBhIHwgMDsKICAgICAgICBiID0gYiB8IDA7CiAgICAgICAgZCA9IGQgfCAwOwogICAgICAgIGUgPSBlIHwgMDsKICAgICAgICB2YXIgZiA9IDAsIGcgPSAwOwogICAgICAgIGcgPSBjW2EgPj4gMl0gfCAwOwogICAgICAgIGlmICghZykKICAgICAgICAgICAgaWYgKGQgPDwgMjQgPj4gMjQgIT0gMCA/IChnID0gbGIoZSkgfCAwLCBjW2EgPj4gMl0gPSBnLCAoZyB8IDApICE9IDApIDogMCkgewogICAgICAgICAgICAgICAgY1tiID4+IDJdID0gZTsKICAgICAgICAgICAgICAgIGEgPSAxOwogICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgIGEgPSAwOwogICAgICAgIGVsc2UgaWYgKChjW2IgPj4gMl0gfCAwKSA8IChlIHwgMCkpCiAgICAgICAgICAgIGlmIChkIDw8IDI0ID4+IDI0ICE9IDAgPyAoZiA9IG1iKGcsIGUpIHwgMCwgKGYgfCAwKSAhPSAwKSA6IDApIHsKICAgICAgICAgICAgICAgIGNbYSA+PiAyXSA9IGY7CiAgICAgICAgICAgICAgICBjW2IgPj4gMl0gPSBlOwogICAgICAgICAgICAgICAgYSA9IDE7CiAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgYSA9IDA7CiAgICAgICAgZWxzZQogICAgICAgICAgICBhID0gMTsKICAgICAgICByZXR1cm4gYSB8IDA7CiAgICB9CiAgICBmdW5jdGlvbiBiYShhKSB7CiAgICAgICAgYSA9IGEgfCAwOwogICAgICAgIHJldHVybiAoYSB8IDApIDwgMSB8IDA7CiAgICB9CiAgICBmdW5jdGlvbiBjYShhKSB7CiAgICAgICAgYSA9IGEgfCAwOwogICAgICAgIHZhciBiID0gMDsKICAgICAgICBpZiAoIWEpCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICBjW2EgPj4gMl0gPSAwOwogICAgICAgIGIgPSBjW2EgKyA0NCA+PiAyXSB8IDA7CiAgICAgICAgaWYgKGIgfCAwKQogICAgICAgICAgICBuYihiKTsKICAgICAgICBiID0gY1thICsgNDggPj4gMl0gfCAwOwogICAgICAgIGlmIChiIHwgMCkKICAgICAgICAgICAgbmIoYik7CiAgICAgICAgYiA9IGNbYSArIDUyID4+IDJdIHwgMDsKICAgICAgICBpZiAoYiB8IDApCiAgICAgICAgICAgIG5iKGIpOwogICAgICAgIGIgPSBjW2EgKyA1NiA+PiAyXSB8IDA7CiAgICAgICAgaWYgKGIgfCAwKQogICAgICAgICAgICBuYihiKTsKICAgICAgICBiID0gY1thICsgNjAgPj4gMl0gfCAwOwogICAgICAgIGlmIChiIHwgMCkKICAgICAgICAgICAgbmIoYik7CiAgICAgICAgYiA9IGNbYSArIDY0ID4+IDJdIHwgMDsKICAgICAgICBpZiAoYiB8IDApCiAgICAgICAgICAgIG5iKGIpOwogICAgICAgIGIgPSBjW2EgKyAzNDQgPj4gMl0gfCAwOwogICAgICAgIGlmIChiIHwgMCkKICAgICAgICAgICAgbmIoYik7CiAgICAgICAgbmIoYSk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgZnVuY3Rpb24gZGEoYSwgYiwgZCkgewogICAgICAgIGEgPSBhIHwgMDsKICAgICAgICBiID0gYiB8IDA7CiAgICAgICAgZCA9IGQgfCAwOwogICAgICAgIHZhciBlID0gMCwgZiA9IDA7CiAgICAgICAgZSA9IDA7CiAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgaWYgKChlIHwgMCkgPj0gKGEgfCAwKSkgewogICAgICAgICAgICAgICAgZiA9IDU7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoKGNbYiArIChlIDw8IDMpID4+IDJdIHwgMCkgPiAoZCB8IDApKQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGUgPSBlICsgMSB8IDA7CiAgICAgICAgfQogICAgICAgIGlmICgoZiB8IDApID09IDUpCiAgICAgICAgICAgIGUgPSBhICsgLTEgfCAwOwogICAgICAgIHJldHVybiBjW2IgKyAoZSA8PCAzKSArIDQgPj4gMl0gJiAyNTUgfCAwOwogICAgfQogICAgZnVuY3Rpb24gZWEoYiwgZSwgZiwgZywgaCkgewogICAgICAgIGIgPSBiIHwgMDsKICAgICAgICBlID0gZSB8IDA7CiAgICAgICAgZiA9IGYgfCAwOwogICAgICAgIGcgPSBnIHwgMDsKICAgICAgICBoID0gaCB8IDA7CiAgICAgICAgdmFyIGkgPSAwLCBqID0gMCwgayA9IDAsIGwgPSAwLCBtID0gMCwgbiA9IDAsIG8gPSAwLCBwID0gMCwgcSA9IDAsIHIgPSAwLCBzID0gMCwgdCA9IDAsIHUgPSAwLCB2ID0gMCwgdyA9IDAsIHggPSAwLCB5ID0gMCwgeiA9IDA7CiAgICAgICAgaWYgKCFoKQogICAgICAgICAgICByZXR1cm47CiAgICAgICAgaWYgKCgkKGNbaCA+PiAyXSB8IDApIHwgMCkgPDwgMjQgPj4gMjQpCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICBpZiAoKGIgfCAwKSA9PSAwIHwgKGUgfCAwKSA9PSAwIHwgKGYgfCAwKSA8IC0xIHwgZyArIC0xMjYgPDwgMjQgPj4gMjQgPDwgMjQgPj4gMjQgPiAtMSkgewogICAgICAgICAgICBjW2ggPj4gMl0gPSAxOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGlmICgoZiB8IDApID09IC0xKQogICAgICAgICAgICBmID0gb2IoZSkgfCAwOwogICAgICAgIHUgPSBiICsgODQgfCAwOwogICAgICAgIGlmICgoY1t1ID4+IDJdIHwgMCkgPT0gMykgewogICAgICAgICAgICBmYShiLCBlLCBmLCBnLCBoKTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBjW2IgPj4gMl0gPSAwOwogICAgICAgIGNbYiArIDQgPj4gMl0gPSBlOwogICAgICAgIHogPSBiICsgMTYgfCAwOwogICAgICAgIGNbeiA+PiAyXSA9IGY7CiAgICAgICAgY1tiICsgOCA+PiAyXSA9IGY7CiAgICAgICAgbCA9IGIgKyAxMiB8IDA7CiAgICAgICAgY1tsID4+IDJdID0gZjsKICAgICAgICBzID0gYiArIDkzIHwgMDsKICAgICAgICBhW3MgPj4gMF0gPSBnOwogICAgICAgIGkgPSBnICYgMTsKICAgICAgICBqID0gaSAmIDI1NTsKICAgICAgICBtID0gYiArIDExNiB8IDA7CiAgICAgICAgY1ttID4+IDJdID0gajsKICAgICAgICB4ID0gYiArIDEzMiB8IDA7CiAgICAgICAgY1t4ID4+IDJdID0gMTsKICAgICAgICBrID0gYiArIDcyIHwgMDsKICAgICAgICBjW2sgPj4gMl0gPSAwOwogICAgICAgIG4gPSBiICsgNzYgfCAwOwogICAgICAgIGNbbiA+PiAyXSA9IDA7CiAgICAgICAgY1tiICsgMjI0ID4+IDJdID0gMDsKICAgICAgICB5ID0gYiArIDMzMiB8IDA7CiAgICAgICAgY1t5ID4+IDJdID0gMDsKICAgICAgICBjW2IgKyAzMzYgPj4gMl0gPSAwOwogICAgICAgIGUgPSAoZyAmIDI1NSkgPiAyNTM7CiAgICAgICAgdCA9IGIgKyA5NCB8IDA7CiAgICAgICAgYVt0ID4+IDBdID0gZSAmIDE7CiAgICAgICAgaWYgKCFmKSB7CiAgICAgICAgICAgIGlmIChlKSB7CiAgICAgICAgICAgICAgICBhW3MgPj4gMF0gPSBpOwogICAgICAgICAgICAgICAgYVt0ID4+IDBdID0gMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBjW2IgKyAxMjAgPj4gMl0gPSBjWzY5ODgwICsgKGogPDwgMikgPj4gMl07CiAgICAgICAgICAgIGNbYiArIDIyMCA+PiAyXSA9IDA7CiAgICAgICAgICAgIGNbeCA+PiAyXSA9IDA7CiAgICAgICAgICAgIGdhKGIpOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGNbYiArIDIyMCA+PiAyXSA9IC0xOwogICAgICAgIGUgPSBjW2IgKyA1NiA+PiAyXSB8IDA7CiAgICAgICAgdyA9IGIgKyAxMzYgfCAwOwogICAgICAgIGNbdyA+PiAyXSA9IChlIHwgMCkgPT0gMCA/IGIgKyAxNDAgfCAwIDogZTsKICAgICAgICBlID0gYiArIDQ0IHwgMDsKICAgICAgICBpID0gYiArIDY4IHwgMDsKICAgICAgICBpZiAoISgoYWEoZSwgYiArIDIwIHwgMCwgYVtpID4+IDBdIHwgMCwgZikgfCAwKSA8PCAyNCA+PiAyNCkpIHsKICAgICAgICAgICAgY1toID4+IDJdID0gNzsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBjW2sgPj4gMl0gPSBjW2UgPj4gMl07CiAgICAgICAgaWYgKCEoKGhhKGIpIHwgMCkgPDwgMjQgPj4gMjQpKSB7CiAgICAgICAgICAgIGNbaCA+PiAyXSA9IDc7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgdiA9IGNbayA+PiAyXSB8IDA7CiAgICAgICAgcSA9IGNbbCA+PiAyXSB8IDA7CiAgICAgICAgayA9IGIgKyAxMjggfCAwOwogICAgICAgIGNbayA+PiAyXSA9IHE7CiAgICAgICAgZiA9IGIgKyA0OCB8IDA7CiAgICAgICAgaWYgKCEoKGFhKGYsIGIgKyAyNCB8IDAsIGFbaSA+PiAwXSB8IDAsIHEpIHwgMCkgPDwgMjQgPj4gMjQpKSB7CiAgICAgICAgICAgIGNbaCA+PiAyXSA9IDc7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgY1tuID4+IDJdID0gY1tmID4+IDJdOwogICAgICAgIGogPSBpYShiLCBoKSB8IDA7CiAgICAgICAgaWYgKCgkKGNbaCA+PiAyXSB8IDApIHwgMCkgPDwgMjQgPj4gMjQpCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICBnID0gYiArIDI0MCB8IDA7CiAgICAgICAgZiA9IGNbZyA+PiAyXSB8IDA7CiAgICAgICAgZG8KICAgICAgICAgICAgaWYgKChmIHwgMCkgPCA2KQogICAgICAgICAgICAgICAgY1tiICsgMjQ0ID4+IDJdID0gYiArIDI0ODsKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBmID0gZiA8PCA0OwogICAgICAgICAgICAgICAgZSA9IGIgKyA0MCB8IDA7CiAgICAgICAgICAgICAgICBpID0gYiArIDY0IHwgMDsKICAgICAgICAgICAgICAgIGlmICgoZiB8IDApIDw9IChjW2UgPj4gMl0gfCAwKSkgewogICAgICAgICAgICAgICAgICAgIGNbYiArIDI0NCA+PiAyXSA9IGNbaSA+PiAyXTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgoYWEoaSwgZSwgMSwgZikgfCAwKSA8PCAyNCA+PiAyNCkgewogICAgICAgICAgICAgICAgICAgIGNbYiArIDI0NCA+PiAyXSA9IGNbaSA+PiAyXTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNbaCA+PiAyXSA9IDc7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB3aGlsZSAoMCk7CiAgICAgICAgY1tnID4+IDJdID0gLTE7CiAgICAgICAgY1ttID4+IDJdID0gajsKICAgICAgICBhOgogICAgICAgICAgICBkbwogICAgICAgICAgICAgICAgc3dpdGNoIChqIHwgMCkgewogICAgICAgICAgICAgICAgY2FzZSAwOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNbayA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNhc2UgMTogewogICAgICAgICAgICAgICAgICAgICAgICBjW2sgPj4gMl0gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBkZWZhdWx0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoY1t1ID4+IDJdIHwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1tiICsgMTEyID4+IDJdID0gNjk4ODg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1tiICsgMTEyID4+IDJdID0gNjk5MDQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1tiICsgMTEyID4+IDJdID0gNjk5MjA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1tiICsgMTEyID4+IDJdID0gNjk5MzY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgNTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGIgKyAxMTIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoY1tiICsgODggPj4gMl0gJiAxKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbZiA+PiAyXSA9IDY5OTY4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbZiA+PiAyXSA9IDY5OTUyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBiICsgMTEyIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGNbYiArIDg4ID4+IDJdICYgMSkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2YgPj4gMl0gPSA3MDAwMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2YgPj4gMl0gPSA2OTk4NDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDApOwogICAgICAgICAgICAgICAgICAgICAgICBqID0gY1t4ID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChqIHwgMCkgPCAyID8gKGNbYiArIDEyMCA+PiAyXSB8IDApID49IDAgOiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhW3QgPj4gMF0gfCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBjW3cgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gY1tlID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChpIHwgMCkgPiAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGFbcyA+PiAwXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBkYShqLCBlLCAwKSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBmICYgMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChxIHwgMCkgPiAoaSB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gZGEoaiwgZSwgcSArIC0xIHwgMCkgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gYVtzID4+IDBdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGFbcyA+PiAwXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gZiAmIDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgamEoYiwgMCwgcSwgZiwgZSAmIDEpOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGNbbiA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGFbdCA+PiAwXSB8IDApICE9IDAgPyAocCA9IGNbdyA+PiAyXSB8IDAsIChjW3AgPj4gMl0gfCAwKSA8PSAwKSA6IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGRhKGosIHAsIDApIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gYVtzID4+IDBdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBhW28gPj4gMF0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IHEgKyAtMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gcDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9ICgoZiAmIDI1NSkgPCAocCAmIDI1NSkgPyBwIDogZikgJiAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKG0gfCAwKSA+IDAgPyAoYVt2ICsgKG0gKyAtMSkgPj4gMF0gfCAwKSA9PSA3IDogMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoYVt0ID4+IDBdIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IDYxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGNbdyA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChtIHwgMCkgPCAoY1tmID4+IDJdIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IDYxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGRhKGNbeCA+PiAyXSB8IDAsIGYsIG0pIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHIgfCAwKSA9PSA2MSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gYVtzID4+IDBdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gZiAmIDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBnICsgMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoayB8IDApID49IChxIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSA2OTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBhW28gKyBrID4+IDBdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUgPDwgMjQgPj4gMjQgIT0gbCA8PCAyNCA+PiAyNCA/ICgxIDw8IGRbdiArIGsgPj4gMF0gJiAzODI5NzYgfCAwKSA9PSAwIDogMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgociB8IDApID09IDY5KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFbdCA+PiAwXSB8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBjW3cgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChxIHwgMCkgPD0gKGNbZSA+PiAyXSB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGRhKGNbeCA+PiAyXSB8IDAsIGUsIG4pIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGogPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gYVtzID4+IDBdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBsICYgMjU1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlICYgMjU1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAoKHAgJiAxMjcpID4+PiAwIDwgKGkgJiAxMjcpID4+PiAwID8gaSA6IHApICYgMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShwICYgMTI4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamEoYiwgbSwgaywgZiwgaSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IG8gKyBmIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFbcCA+PiAwXSA9IGFbcCA+PiAwXSAmIDEyNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZiB8IDApIDwgKGcgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gZiArIDEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBjW2IgKyAzNDAgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoISgoJChmKSB8IDApIDw8IDI0ID4+IDI0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAga2EoYik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGNbaCA+PiAyXSA9IGY7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIHdoaWxlICgwKTsKICAgICAgICBrID0gYiArIDg4IHwgMDsKICAgICAgICBkOgogICAgICAgICAgICBkbwogICAgICAgICAgICAgICAgaWYgKChhW3QgPj4gMF0gfCAwID8gY1trID4+IDJdICYgMSB8IDAgOiAwKSA/ICgoY1t1ID4+IDJdIHwgMCkgKyAtNSB8IDApID4+PiAwIDwgMiA6IDApIHsKICAgICAgICAgICAgICAgICAgICBnID0gMDsKICAgICAgICAgICAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGcgfCAwKSA+PSAoY1t4ID4+IDJdIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBkOwogICAgICAgICAgICAgICAgICAgICAgICBlID0gY1t3ID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgZiA9IChjW2UgKyAoZyA8PCAzKSA+PiAyXSB8IDApICsgLTEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY1tlICsgKGcgPDwgMykgKyA0ID4+IDJdICYgMjU1IHwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGNbZSArIChnICsgLTEgPDwgMykgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZSB8IDApIDwgKGkgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IGFbdiArIGUgPj4gMF0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoaiA8PCAyNCA+PiAyNCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoMSA8PCAoaiAmIDI1NSkgJiA4MTk0IHwgMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGUgKyAtMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChlIHwgMCkgPCAoZiB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChhW3YgKyBmID4+IDBdIHwgMCkgPT0gNykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGYgKyAtMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGEoYiwgZiwgNCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDApOwogICAgICAgICAgICAgICAgICAgICAgICBnID0gZyArIDEgfCAwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgd2hpbGUgKDApOwogICAgICAgIGlmICghKGNbayA+PiAyXSAmIDIpKQogICAgICAgICAgICBmID0gKGNbeiA+PiAyXSB8IDApICsgKGNbeSA+PiAyXSB8IDApIHwgMDsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGYgPSAoY1t6ID4+IDJdIHwgMCkgLSAoY1tiICsgMzQ4ID4+IDJdIHwgMCkgfCAwOwogICAgICAgIGNbeiA+PiAyXSA9IGY7CiAgICAgICAgZ2EoYik7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgZnVuY3Rpb24gZmEoYiwgZSwgZiwgZywgaCkgewogICAgICAgIGIgPSBiIHwgMDsKICAgICAgICBlID0gZSB8IDA7CiAgICAgICAgZiA9IGYgfCAwOwogICAgICAgIGcgPSBnIHwgMDsKICAgICAgICBoID0gaCB8IDA7CiAgICAgICAgdmFyIGkgPSAwLCBqID0gMCwgayA9IDAsIGwgPSAwLCBtID0gMCwgbiA9IDAsIG8gPSAwLCBwID0gMCwgcSA9IDAsIHIgPSAwLCBzID0gMCwgdCA9IDAsIHUgPSAwLCB2ID0gMCwgdyA9IDAsIHggPSAwLCB5ID0gMCwgeiA9IDAsIEEgPSAwLCBCID0gMCwgQyA9IDAsIEQgPSAwLCBFID0gMDsKICAgICAgICBDID0gYiArIDg0IHwgMDsKICAgICAgICBjW0MgPj4gMl0gPSAwOwogICAgICAgIGlmICghZikgewogICAgICAgICAgICBlYShiLCBlLCAwLCBnLCBoKTsKICAgICAgICAgICAgRCA9IDA7CiAgICAgICAgICAgIG5iKEQpOwogICAgICAgICAgICBjW0MgPj4gMl0gPSAzOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIEQgPSBsYihmICogNyB8IDApIHwgMDsKICAgICAgICBpZiAoIUQpIHsKICAgICAgICAgICAgY1toID4+IDJdID0gNzsKICAgICAgICAgICAgRCA9IDA7CiAgICAgICAgICAgIG5iKEQpOwogICAgICAgICAgICBjW0MgPj4gMl0gPSAzOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGogPSBEICsgKGYgPDwgMikgfCAwOwogICAgICAgIEIgPSBqICsgKGYgPDwgMSkgfCAwOwogICAgICAgIGsgPSBiICsgODggfCAwOwogICAgICAgIGwgPSBjW2sgPj4gMl0gfCAwOwogICAgICAgIGlmIChsICYgMSB8IDApCiAgICAgICAgICAgIGNbayA+PiAyXSA9IGwgJiAtNCB8IDI7CiAgICAgICAgZyA9IGcgJiAxOwogICAgICAgIGVhKGIsIGUsIGYsIGcsIGgpOwogICAgICAgIGlmICgoJChjW2ggPj4gMl0gfCAwKSB8IDApIDw8IDI0ID4+IDI0KSB7CiAgICAgICAgICAgIG5iKEQpOwogICAgICAgICAgICBjW0MgPj4gMl0gPSAzOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIHggPSBQYShiLCBoKSB8IDA7CiAgICAgICAgdiA9IGIgKyAxMiB8IDA7CiAgICAgICAgdyA9IGNbdiA+PiAyXSB8IDA7CiAgICAgICAgZWMoQiB8IDAsIHggfCAwLCB3IHwgMCkgfCAwOwogICAgICAgIHggPSBiICsgMTI4IHwgMDsKICAgICAgICB5ID0gY1t4ID4+IDJdIHwgMDsKICAgICAgICB6ID0gYiArIDExNiB8IDA7CiAgICAgICAgQSA9IGNbeiA+PiAyXSB8IDA7CiAgICAgICAgaSA9IEthKGIsIGosIGYsIDIsIGgpIHwgMDsKICAgICAgICBXYShiLCBELCBoKTsKICAgICAgICBpZiAoISgoJChjW2ggPj4gMl0gfCAwKSB8IDApIDw8IDI0ID4+IDI0KSkgewogICAgICAgICAgICBjW2sgPj4gMl0gPSBsOwogICAgICAgICAgICBjW0MgPj4gMl0gPSA1OwogICAgICAgICAgICB1ID0gYiArIDY4IHwgMDsKICAgICAgICAgICAgdCA9IGFbdSA+PiAwXSB8IDA7CiAgICAgICAgICAgIGFbdSA+PiAwXSA9IDA7CiAgICAgICAgICAgIGVhKGIsIGosIGksIGcgXiAxLCBoKTsKICAgICAgICAgICAgYVt1ID4+IDBdID0gdDsKICAgICAgICAgICAgUmEoYiwgaCk7CiAgICAgICAgICAgIGE6CiAgICAgICAgICAgICAgICBkbwogICAgICAgICAgICAgICAgICAgIGlmICghKCgkKGNbaCA+PiAyXSB8IDApIHwgMCkgPDwgMjQgPj4gMjQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBiICsgMjIwIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgcSA9IGNbbiA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBiICsgMjI0IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGNbbyA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGogPSAwOwogICAgICAgICAgICAgICAgICAgICAgICBnID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGggfCAwKSA+PSAocSB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IGNbcCArIChoICogMTIgfCAwKSArIDQgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IG0gLSBnIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChnIHwgMCkgPCAyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IGo7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGNbcCArIChoICogMTIgfCAwKSA+PiAyXSAmIDIxNDc0ODM2NDc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gaSArIGcgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IGo7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBpICsgMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoaSB8IDApID49IChsIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gY1tEICsgKGkgPDwgMikgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqID0gY1tEICsgKGogPDwgMikgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gayAtIGogfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKCgodSB8IDApID4gLTEgPyB1IDogMCAtIHUgfCAwKSB8IDApICE9IDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlICgoYVtCICsgayA+PiAwXSB8IDApID09IChhW0IgKyBqID4+IDBdIHwgMCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBnICsgMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqID0gZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGggKyAxIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWopCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gcDsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gYiArIDYwIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKChhYShnLCBiICsgMzYgfCAwLCBhW2IgKyA2OSA+PiAwXSB8IDAsIChqICsgcSB8IDApICogMTIgfCAwKSB8IDApIDw8IDI0ID4+IDI0KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgocSB8IDApID09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gY1tnID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW3UgPj4gMl0gPSBjW3AgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1t1ICsgNCA+PiAyXSA9IGNbcCArIDQgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1t1ICsgOCA+PiAyXSA9IGNbcCArIDggPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gY1tnID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbbyA+PiAyXSA9IHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW24gPj4gMl0gPSAoY1tuID4+IDJdIHwgMCkgKyBqOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHUgPSB0ICsgNCB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBxOwogICAgICAgICAgICAgICAgICAgICAgICBpID0gajsKICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBnICsgLTEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChnIHwgMCkgPD0gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBjW3UgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSAoY1t0ICsgKHMgKiAxMiB8IDApICsgNCA+PiAyXSB8IDApIC0gKGNbdCArICgoZyArIC0yIHwgMCkgKiAxMiB8IDApICsgNCA+PiAyXSB8IDApIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHEgPSB0ICsgKHMgKiAxMiB8IDApIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGogPSBjW3EgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGogPj4+IDMxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IGogJiAyMTQ3NDgzNjQ3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChnIHwgMCkgPCAyKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IHMgKyBpIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IHQgKyAoZyAqIDEyIHwgMCkgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW3AgPj4gMl0gPSBjW3EgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbcCArIDQgPj4gMl0gPSBjW3EgKyA0ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW3AgKyA4ID4+IDJdID0gY1txICsgOCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IGNbRCArIChqIDw8IDIpID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IChyIHwgMCkgPT0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gZyArIC0xICsgaiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGwgPyBqIDogaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gbCA/IC0xIDogMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gdCArIChzICogMTIgfCAwKSArIDQgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG8gPSB0ICsgKHMgKiAxMiB8IDApICsgOCB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGwgPyBoIDogajsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZyB8IDApID09IChwIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IGNbRCArIChnIDw8IDIpID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gZyArIG0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBjW0QgKyAoayA8PCAyKSA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRSA9IGogLSBsIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKCgoRSB8IDApID4gLTEgPyBFIDogMCAtIEUgfCAwKSB8IDApICE9IDEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoYVtCICsgaiA+PiAwXSB8IDApID09IChhW0IgKyBsID4+IDBdIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFID0gY1tEICsgKGggPDwgMikgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRSA9IChFIHwgMCkgPCAoaiB8IDApID8gRSA6IGo7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gaSArIHMgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1t0ICsgKGwgKiAxMiB8IDApID4+IDJdID0gKHIgXiBkW0IgKyBFID4+IDBdKSA8PCAzMSB8IEU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW3QgKyAobCAqIDEyIHwgMCkgKyA0ID4+IDJdID0gY1tuID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRSA9IGcgLSBoIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbbiA+PiAyXSA9IChjW24gPj4gMl0gfCAwKSArIH4oKEUgfCAwKSA+IC0xID8gRSA6IDAgLSBFIHwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFID0gY1tvID4+IDJdICYgMTA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW3QgKyAobCAqIDEyIHwgMCkgKyA4ID4+IDJdID0gRTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbbyA+PiAyXSA9IGNbbyA+PiAyXSAmIH5FOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gaSArIC0xIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBpICsgcyB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEUgPSB0ICsgKGcgKiAxMiB8IDApIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1tFID4+IDJdID0gY1txID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW0UgKyA0ID4+IDJdID0gY1txICsgNCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1tFICsgOCA+PiAyXSA9IGNbcSArIDggPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEUgPSBjW0QgKyAoaCA8PCAyKSA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IGNbRCArIChwIDw8IDIpID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqID0gKEUgfCAwKSA8IChqIHwgMCkgPyBFIDogajsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbdCArIChnICogMTIgfCAwKSA+PiAyXSA9IChyIF4gZFtCICsgaiA+PiAwXSkgPDwgMzEgfCBqOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IHM7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB3aGlsZSAoMCk7CiAgICAgICAgICAgIEUgPSBiICsgOTMgfCAwOwogICAgICAgICAgICBhW0UgPj4gMF0gPSBhW0UgPj4gMF0gXiAxOwogICAgICAgIH0KICAgICAgICBjW2IgKyA0ID4+IDJdID0gZTsKICAgICAgICBjW3YgPj4gMl0gPSB3OwogICAgICAgIGNbYiArIDggPj4gMl0gPSBmOwogICAgICAgIGNbeiA+PiAyXSA9IEE7CiAgICAgICAgRSA9IGNbYiArIDI0ID4+IDJdIHwgMDsKICAgICAgICBlYyhjW2IgKyA3NiA+PiAyXSB8IDAsIEIgfCAwLCAoKHcgfCAwKSA+IChFIHwgMCkgPyBFIDogdykgfCAwKSB8IDA7CiAgICAgICAgY1t4ID4+IDJdID0geTsKICAgICAgICBpZiAoKGNbYiArIDIyMCA+PiAyXSB8IDApIDw9IDEpIHsKICAgICAgICAgICAgRSA9IEQ7CiAgICAgICAgICAgIG5iKEUpOwogICAgICAgICAgICBjW0MgPj4gMl0gPSAzOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGNbeiA+PiAyXSA9IDI7CiAgICAgICAgRSA9IEQ7CiAgICAgICAgbmIoRSk7CiAgICAgICAgY1tDID4+IDJdID0gMzsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBmdW5jdGlvbiBnYShhKSB7CiAgICAgICAgYSA9IGEgfCAwOwogICAgICAgIGNbYSArIDEwMCA+PiAyXSA9IDA7CiAgICAgICAgY1thICsgMTA4ID4+IDJdID0gMDsKICAgICAgICBjW2EgPj4gMl0gPSBhOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGZ1bmN0aW9uIGhhKGYpIHsKICAgICAgICBmID0gZiB8IDA7CiAgICAgICAgdmFyIGcgPSAwLCBoID0gMCwgaSA9IDAsIGogPSAwLCBrID0gMCwgbCA9IDAsIG0gPSAwLCBuID0gMCwgbyA9IDAsIHAgPSAwLCBxID0gMCwgciA9IDAsIHMgPSAwLCB0ID0gMCwgdSA9IDAsIHYgPSAwLCB3ID0gMCwgeCA9IDAsIHkgPSAwLCB6ID0gMCwgQSA9IDAsIEIgPSAwLCBDID0gMCwgRCA9IDAsIEYgPSAwLCBHID0gMCwgSCA9IDAsIEkgPSAwLCBKID0gMCwgSyA9IDAsIEwgPSAwLCBNID0gMCwgTiA9IDA7CiAgICAgICAgTiA9IEU7CiAgICAgICAgRSA9IEUgKyAxMDI0IHwgMDsKICAgICAgICB4ID0gTiArIDUxMiB8IDA7CiAgICAgICAgRyA9IE47CiAgICAgICAgQiA9IGNbZiArIDQgPj4gMl0gfCAwOwogICAgICAgIEQgPSBjW2YgKyA0NCA+PiAyXSB8IDA7CiAgICAgICAgSiA9IGNbZiArIDggPj4gMl0gfCAwOwogICAgICAgIEsgPSBmICsgOTMgfCAwOwogICAgICAgIGcgPSBhW0sgPj4gMF0gfCAwOwogICAgICAgIEggPSAoZyAmIDI1NSkgPiAyNTM7CiAgICAgICAgaWYgKEgpCiAgICAgICAgICAgIEMgPSAoKGNbZiArIDg0ID4+IDJdIHwgMCkgKyAtNSB8IDApID4+PiAwIDwgMjsKICAgICAgICBlbHNlCiAgICAgICAgICAgIEMgPSAwOwogICAgICAgIEkgPSBmICsgODggfCAwOwogICAgICAgIE0gPSBjW0kgPj4gMl0gfCAwOwogICAgICAgIGogPSBNICYgMjsKICAgICAgICBpZiAoTSAmIDQgfCAwKQogICAgICAgICAgICBjW2YgKyAxMiA+PiAyXSA9IDA7CiAgICAgICAgZyA9IGcgJiAyNTU7CiAgICAgICAgdiA9IGcgJiAxOwogICAgICAgIHcgPSB2ICYgMjU1OwogICAgICAgIE0gPSBmICsgMTM2IHwgMDsKICAgICAgICBoID0gKGNbTSA+PiAyXSB8IDApICsgNCB8IDA7CiAgICAgICAgaWYgKEgpIHsKICAgICAgICAgICAgY1toID4+IDJdID0gdjsKICAgICAgICAgICAgaWYgKChjW2YgKyAxMDAgPj4gMl0gfCAwKSA+IDAgPyAoaSA9IEJhKGYpIHwgMCwgaSA8PCAyNCA+PiAyNCAhPSAxMCkgOiAwKSB7CiAgICAgICAgICAgICAgICBjWyhjW00gPj4gMl0gfCAwKSArIDQgPj4gMl0gPSBpIDw8IDI0ID4+IDI0ICE9IDAgJiAxOwogICAgICAgICAgICAgICAgaSA9IHc7CiAgICAgICAgICAgICAgICBrID0gMDsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGkgPSB3OwogICAgICAgICAgICAgICAgayA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBjW2ggPj4gMl0gPSBnOwogICAgICAgICAgICBpID0gMTA7CiAgICAgICAgICAgIGsgPSAwOwogICAgICAgIH0KICAgICAgICB1ID0gKGogfCAwKSA9PSAwOwogICAgICAgIHkgPSBmICsgMTMyIHwgMDsKICAgICAgICB6ID0gZiArIDEyIHwgMDsKICAgICAgICBBID0gZiArIDM0OCB8IDA7CiAgICAgICAgaCA9IC0xOwogICAgICAgIGogPSAwOwogICAgICAgIGwgPSAwOwogICAgICAgIEYgPSAtMTsKICAgICAgICBnID0gMDsKICAgICAgICBhOgogICAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICAgICAgYjoKICAgICAgICAgICAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICAgICAgICAgICAgICB0ID0gQyAmIGkgPDwgMjQgPj4gMjQgPT0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGw7CiAgICAgICAgICAgICAgICAgICAgICAgIGM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gKGggfCAwKSA8IDEyNjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAoayB8IDApID09IDIgJiBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcSA9IChoIHwgMCkgPiAtMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGY6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoaiB8IDApID49IChKIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGogKyAxIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gZVtCICsgKGogPDwgMSkgPj4gMV0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKChpIHwgMCkgPT0gKEogfCAwKSB8IChsICYgNjQ1MTIgfCAwKSAhPSA1NTI5NikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IGVbQiArIChpIDw8IDEpID4+IDFdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IChtICYgNjQ1MTIgfCAwKSA9PSA1NjMyMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IG8gPyBqICsgMiB8IDAgOiBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSAobCA8PCAxMCkgKyAtNTY2MTM4ODggKyBtIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHBhKGYsIGwpIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbyAmIDI1NTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gbyAmIDI1NTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gMSA8PCBvIHwgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gaiArIC0xIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gRCArIG4gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFbbSA+PiAwXSA9IGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChsIHwgMCkgPiA2NTUzNSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhW0QgKyAoaiArIC0yKSA+PiAwXSA9IDE4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gZyB8IDI2MjE0NDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF1KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gcCArICgoKGwgKyAtODI5NCB8IDApID4+PiAwIDwgNCB8ICgobCAmIC00IHwgMCkgPT0gODIwNCB8IChsICsgLTgyMzQgfCAwKSA+Pj4gMCA8IDUpKSAmIDEpIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGkgPDwgMjQgPj4gMjQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwgPSAyNTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChvICsgLTE5IHwgMCkgPj4+IDAgPCAzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwgPSAzNTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChpIDw8IDI0ID4+IDI0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyMjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAoaiB8IDApIDwgKEogfCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKChsIHwgMCkgPT0gMTMgJiBpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChiW0IgKyAoaiA8PCAxKSA+PiAxXSB8IDApICE9IDEwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gciA/IGcgfCAxMDQ4NTc2IDogZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwgPSA0MzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoTCB8IDApID09IDM1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGggKyAxIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGggfCAwKSA8IDEyNSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW3ggKyAoaSA8PCAyKSA+PiAyXSA9IG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbRyArIChpIDw8IDIpID4+IDJdID0gazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChvIHwgMCkgPT0gMTkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYVttID4+IDBdID0gMjA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IDM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIGlmICgoTCB8IDApID09IDQzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBjW0cgKyAoaCA8PCAyKSA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGggKyAtMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gcDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbKGNbTSA+PiAyXSB8IDApICsgKChjW3kgPj4gMl0gfCAwKSArIC0xIDw8IDMpID4+IDJdID0gajsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1soY1tNID4+IDJdIHwgMCkgKyAoKGNbeSA+PiAyXSB8IDApICsgLTEgPDwgMykgKyA0ID4+IDJdID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY1tJID4+IDJdICYgNCB8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1t6ID4+IDJdID0gajsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1tBID4+IDJdID0gcDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1t5ID4+IDJdID0gKGNbeSA+PiAyXSB8IDApICsgMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoKENhKGYpIHwgMCkgPDwgMjQgPj4gMjQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwgPSA3NjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKEgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwgPSA1NjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbKGNbTSA+PiAyXSB8IDApICsgKChjW3kgPj4gMl0gfCAwKSArIC0xIDw8IDMpICsgNCA+PiAyXSA9IGRbSyA+PiAwXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IC0xOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoTCB8IDApID09IDI1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEwgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGsgfCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbKGNbTSA+PiAyXSB8IDApICsgKChjW3kgPj4gMl0gfCAwKSArIC0xIDw8IDMpICsgNCA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IHMgPyBnIHwgMTA0ODU3NiA6IGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IDM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKChMIHwgMCkgPT0gNTYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbKGNbTSA+PiAyXSB8IDApICsgKChjW3kgPj4gMl0gfCAwKSArIC0xIDw8IDMpICsgNCA+PiAyXSA9IHY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSAtMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgc3dpdGNoIChrIHwgMCkgewogICAgICAgICAgICAgICAgY2FzZSAxOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNbKGNbTSA+PiAyXSB8IDApICsgKChjW3kgPj4gMl0gfCAwKSArIC0xIDw8IDMpICsgNCA+PiAyXSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIGsgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjYXNlIDI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFbRCArIChjW3ggKyAoaCA8PCAyKSA+PiAyXSB8IDApID4+IDBdID0gMjE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gMzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBnIHwgMjA5NzE1MjsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gMzsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZGVmYXVsdDogewogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGwgPSBwOwogICAgICAgICAgICAgICAgRiA9IChvIHwgMCkgPT0gMTMgPyBuIDogRjsKICAgICAgICAgICAgICAgIGkgPSAxOwogICAgICAgICAgICB9CiAgICAgICAgaWYgKChMIHwgMCkgPT0gNzYpIHsKICAgICAgICAgICAgRSA9IE47CiAgICAgICAgICAgIHJldHVybiBnIHwgMDsKICAgICAgICB9CiAgICAgICAgRCA9IChoIHwgMCkgPiAxMjU7CiAgICAgICAgaSA9IEQgPyAyIDogazsKICAgICAgICBoID0gRCA/IDEyNSA6IGg7CiAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgaWYgKChoIHwgMCkgPD0gLTEpCiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgaWYgKChpIHwgMCkgPT0gMikgewogICAgICAgICAgICAgICAgTCA9IDYyOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaSA9IGNbRyArIChoIDw8IDIpID4+IDJdIHwgMDsKICAgICAgICAgICAgaCA9IGggKyAtMSB8IDA7CiAgICAgICAgfQogICAgICAgIGlmICgoTCB8IDApID09IDYyKQogICAgICAgICAgICBnID0gZyB8IDEwNDg1NzY7CiAgICAgICAgaWYgKGNbSSA+PiAyXSAmIDQpIHsKICAgICAgICAgICAgaWYgKChjW3ogPj4gMl0gfCAwKSA8IChKIHwgMCkpCiAgICAgICAgICAgICAgICBjW3kgPj4gMl0gPSAoY1t5ID4+IDJdIHwgMCkgKyAtMTsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBjWyhjW00gPj4gMl0gfCAwKSArICgoY1t5ID4+IDJdIHwgMCkgKyAtMSA8PCAzKSA+PiAyXSA9IEo7CiAgICAgICAgICAgIGNbQSA+PiAyXSA9IHA7CiAgICAgICAgfQogICAgICAgIGlmICh0KQogICAgICAgICAgICBjWyhjW00gPj4gMl0gfCAwKSArICgoY1t5ID4+IDJdIHwgMCkgKyAtMSA8PCAzKSArIDQgPj4gMl0gPSAxOwogICAgICAgIGlmIChIKQogICAgICAgICAgICBhW0sgPj4gMF0gPSBjWyhjW00gPj4gMl0gfCAwKSArIDQgPj4gMl07CiAgICAgICAgaSA9IGNbeSA+PiAyXSB8IDA7CiAgICAgICAgaCA9IDA7CiAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgaWYgKChoIHwgMCkgPj0gKGkgfCAwKSkKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBMID0gY1s2OTg4MCArICgoY1soY1tNID4+IDJdIHwgMCkgKyAoaCA8PCAzKSArIDQgPj4gMl0gJiAxKSA8PCAyKSA+PiAyXSB8IGc7CiAgICAgICAgICAgIGggPSBoICsgMSB8IDA7CiAgICAgICAgICAgIGcgPSBMOwogICAgICAgIH0KICAgICAgICBjW2YgKyAxMjAgPj4gMl0gPSBnIHwgKGcgJiAxMjggfCAwKSAhPSAwICYgKGFbZiArIDkyID4+IDBdIHwgMCkgIT0gMCAmIDE7CiAgICAgICAgY1tmICsgMTI0ID4+IDJdID0gRjsKICAgICAgICBmID0gMTsKICAgICAgICBFID0gTjsKICAgICAgICByZXR1cm4gZiB8IDA7CiAgICB9CiAgICBmdW5jdGlvbiBpYShmLCBnKSB7CiAgICAgICAgZiA9IGYgfCAwOwogICAgICAgIGcgPSBnIHwgMDsKICAgICAgICB2YXIgaCA9IDAsIGkgPSAwLCBqID0gMCwgayA9IDAsIGwgPSAwLCBtID0gMCwgbiA9IDAsIG8gPSAwLCBwID0gMCwgcSA9IDAsIHIgPSAwLCBzID0gMCwgdCA9IDAsIHUgPSAwLCB2ID0gMCwgdyA9IDAsIHggPSAwLCB5ID0gMCwgeiA9IDAsIEEgPSAwLCBCID0gMCwgQyA9IDAsIEQgPSAwLCBGID0gMCwgRyA9IDAsIEggPSAwLCBJID0gMCwgSiA9IDAsIEsgPSAwLCBMID0gMDsKICAgICAgICBMID0gRTsKICAgICAgICBFID0gRSArIDUzMjggfCAwOwogICAgICAgIG8gPSBMICsgMjc4OCB8IDA7CiAgICAgICAgQiA9IEw7CiAgICAgICAgQyA9IEwgKyAyNTYgfCAwOwogICAgICAgIEkgPSBjW2YgKyA3MiA+PiAyXSB8IDA7CiAgICAgICAgSyA9IGNbZiArIDc2ID4+IDJdIHwgMDsKICAgICAgICBHID0gY1tmICsgNCA+PiAyXSB8IDA7CiAgICAgICAgSCA9IGNbZiArIDEyID4+IDJdIHwgMDsKICAgICAgICBEID0gZiArIDEyMCB8IDA7CiAgICAgICAgaSA9IGNbRCA+PiAyXSB8IDA7CiAgICAgICAgeSA9IGYgKyA5NCB8IDA7CiAgICAgICAgaWYgKChhW3kgPj4gMF0gfCAwKSAhPSAwID8gKGggPSBjW2YgKyAxMzYgPj4gMl0gfCAwLCAoY1toID4+IDJdIHwgMCkgPD0gMCkgOiAwKQogICAgICAgICAgICBqID0gZGEoY1tmICsgMTMyID4+IDJdIHwgMCwgaCwgMCkgfCAwOwogICAgICAgIGVsc2UKICAgICAgICAgICAgaiA9IGFbZiArIDkzID4+IDBdIHwgMDsKICAgICAgICB4ID0gZiArIDI0MCB8IDA7CiAgICAgICAgY1t4ID4+IDJdID0gMDsKICAgICAgICBpZiAoKCQoY1tnID4+IDJdIHwgMCkgfCAwKSA8PCAyNCA+PiAyNCkgewogICAgICAgICAgICBLID0gMDsKICAgICAgICAgICAgRSA9IEw7CiAgICAgICAgICAgIHJldHVybiBLIHwgMDsKICAgICAgICB9CiAgICAgICAgaCA9IHJhKGkpIHwgMDsKICAgICAgICBpZiAoKGggfCAwKSAhPSAyKSB7CiAgICAgICAgICAgIEsgPSBoOwogICAgICAgICAgICBFID0gTDsKICAgICAgICAgICAgcmV0dXJuIEsgfCAwOwogICAgICAgIH0KICAgICAgICBpZiAoKGNbZiArIDg0ID4+IDJdIHwgMCkgPiAxKSB7CiAgICAgICAgICAgIG0gPSBmICsgMTMyIHwgMDsKICAgICAgICAgICAgayA9IGYgKyAxMzYgfCAwOwogICAgICAgICAgICBqID0gMDsKICAgICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgICAgIGlmICgoaiB8IDApID49IChjW20gPj4gMl0gfCAwKSkgewogICAgICAgICAgICAgICAgICAgIEYgPSAyOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKCFqKSB7CiAgICAgICAgICAgICAgICAgICAgaCA9IDA7CiAgICAgICAgICAgICAgICAgICAgaSA9IGNbayA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGkgPSBjW2sgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgIGggPSBjW2kgKyAoaiArIC0xIDw8IDMpID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGwgPSBjW2kgKyAoaiA8PCAzKSA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICBpID0gY1tpICsgKGogPDwgMykgKyA0ID4+IDJdICYgMjU1OwogICAgICAgICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoKGggfCAwKSA+PSAobCB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBhW0sgKyBoID4+IDBdID0gaTsKICAgICAgICAgICAgICAgICAgICBoID0gaCArIDEgfCAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaiA9IGogKyAxIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBFID0gTDsKICAgICAgICAgICAgcmV0dXJuIEYgfCAwOwogICAgICAgIH0KICAgICAgICBpZiAoIShpICYgNzk4NTE1MikpIHsKICAgICAgICAgICAgc2EoZiwgbyk7CiAgICAgICAgICAgIG4gPSBmICsgMTMyIHwgMDsKICAgICAgICAgICAgbCA9IGYgKyAxMzYgfCAwOwogICAgICAgICAgICBrID0gMDsKICAgICAgICAgICAgYToKICAgICAgICAgICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKChrIHwgMCkgPj0gKGNbbiA+PiAyXSB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIEYgPSAyOwogICAgICAgICAgICAgICAgICAgICAgICBKID0gODk7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoIWspIHsKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGggPSBjW2wgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGggPSBjW2wgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBpID0gY1toICsgKGsgKyAtMSA8PCAzKSA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIG0gPSBjW2ggKyAoayA8PCAzKSA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgaiA9IGNbaCArIChrIDw8IDMpICsgNCA+PiAyXSAmIDI1NTsKICAgICAgICAgICAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGkgfCAwKSA+PSAobSB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGFbSyArIGkgPj4gMF0gPSBqOwogICAgICAgICAgICAgICAgICAgICAgICBiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGFbSSArIGkgPj4gMF0gfCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxODoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA3OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gaSArIDEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChoIHwgMCkgPCAoSCB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChiW0cgKyAoaSA8PCAxKSA+PiAxXSB8IDApID09IDEzID8gKGJbRyArIChoIDw8IDEpID4+IDFdIHwgMCkgPT0gMTAgOiAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhKG8sIGopOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISgodWEobywgaSkgfCAwKSA8PCAyNCA+PiAyNCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGkgKyAxIHwgMDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgayA9IGsgKyAxIHwgMDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKChKIHwgMCkgPT0gODkpIHsKICAgICAgICAgICAgICAgIEUgPSBMOwogICAgICAgICAgICAgICAgcmV0dXJuIEYgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNbZyA+PiAyXSA9IDc7CiAgICAgICAgICAgIEsgPSAwOwogICAgICAgICAgICBFID0gTDsKICAgICAgICAgICAgcmV0dXJuIEsgfCAwOwogICAgICAgIH0KICAgICAgICBzYShmLCBDKTsKICAgICAgICBiW0IgPj4gMV0gPSBqICYgMjU1OwogICAgICAgIHYgPSBmICsgOTMgfCAwOwogICAgICAgIHcgPSBmICsgMTM2IHwgMDsKICAgICAgICB1ID0gZiArIDEzMiB8IDA7CiAgICAgICAgciA9IDA7CiAgICAgICAgcCA9IDA7CiAgICAgICAgcyA9IDA7CiAgICAgICAgaSA9IDA7CiAgICAgICAgbSA9IDA7CiAgICAgICAgZyA9IGo7CiAgICAgICAgcSA9IGo7CiAgICAgICAgaCA9IDA7CiAgICAgICAgdCA9IDA7CiAgICAgICAgYzoKICAgICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgICAgIGlmICgodCB8IDApID49IChIIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBvID0gSSArIHQgfCAwOwogICAgICAgICAgICAgICAgbCA9IGFbbyA+PiAwXSB8IDA7CiAgICAgICAgICAgICAgICBuID0gbCAmIDI1NTsKICAgICAgICAgICAgICAgIGQ6CiAgICAgICAgICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChsIDw8IDI0ID4+IDI0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTU6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTI6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTQ6CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gaCB8IDI2MjE0NDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhW0sgKyB0ID4+IDBdID0gZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGwgKyAtMTEgJiAyNTUpIDwgMikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IHEgKyAyICYgMTI2OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IChxICYgMTI3KSArIDEgPDwgMjQgPj4gMjQgfCAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKChwIHwgcyB8IDApID09IDAgJiAoaiAmIDI1NSkgPCAxMjYpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gcCArICgocyB8IDApID09IDAgJiAxKSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqID0gcTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChsIDw8IDI0ID4+IDI0KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxNToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDEyOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqID0gaiB8IC0xMjg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gaSArIDEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJbQiArIChpIDw8IDEpID4+IDFdID0gaiAmIDI1NTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxNjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBoIHwgMjYyMTQ0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFbSyArIHQgPj4gMF0gPSBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAocCB8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IHAgKyAtMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGogPSBxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGkgKyAtMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGVbQiArIChpIDw8IDEpID4+IDFdIHwgMCkgPCAyNTYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqID0gYltCICsgKG4gPDwgMSkgPj4gMV0gJiAyNTU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGogPSBxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IHE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IHE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDIxOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDIwOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IHEgJiAyNTU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGggfCBjWzY5ODgwICsgKChrICYgMSkgPDwgMikgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IGsgJiAxMjc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYVtLICsgdCA+PiAwXSA9IGo7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChqIHwgMCkgPT0gKGcgJiAxMjcgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGggfCAxMDI0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YShDLCBtLCBnLCBxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGggfCAtMjE0NzQ4MjYyNDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGwgPDwgMjQgPj4gMjQgPT0gMjAgPyBrICsgMiAmIDM4MiA6IGogKyAxIHwgMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqID0gbCAmIDI1NTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISgocCB8IHMgfCAwKSA9PSAwICYgKGwgJiAyNTQpID4+PiAwIDwgMTI2KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhW28gPj4gMF0gPSA5OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gcTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBzICsgMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGogPSBxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gciArIDEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgociB8IDApID49IChjW3ggPj4gMl0gfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1t4ID4+IDJdID0gazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gaSArIDEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJbQiArIChpIDw8IDEpID4+IDFdID0gbCB8IDI1NjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YShDLCBqKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gcTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gaCB8IDEgPDwgbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyMjogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZyBeIHEpICYgMTI3KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhKEMsIG0sIGcsIHEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gaCB8IC0yMTQ3NDgzNjQ4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghcikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFbbyA+PiAwXSA9IDk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IHA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGkgKyAtMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IHdoaWxlICgoZVtCICsgKHMgPDwgMSkgPj4gMV0gfCAwKSA8IDI1Nik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB4YShDKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSByICsgLTEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGggfCA0MTk0MzA0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYVtvID4+IDBdID0gOTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IHA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gcyArIC0xIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gYltCICsgKGkgPDwgMSkgPj4gMV0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBnICYgMjU1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBnICYgMjU1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBoIHwgY1s2OTg4MCArICgoZyAmIDEpIDw8IDIpID4+IDJdIHwgMTAyNDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhW0sgKyB0ID4+IDBdID0gZyAmIDEyNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gajsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqID0gczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA3OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGggfCAxMjg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChhW3kgPj4gMF0gfCAwKSAhPSAwID8gKHogPSBjW3cgPj4gMl0gfCAwLCAodCB8IDApID49IChjW3ogPj4gMl0gfCAwKSkgOiAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqID0gZGEoY1t1ID4+IDJdIHwgMCwgeiwgdCkgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IGFbdiA+PiAwXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYVtLICsgdCA+PiAwXSA9IGo7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IHQgKyAxIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGogfCAwKSA8IChIIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChiW0cgKyAodCA8PCAxKSA+PiAxXSB8IDApID09IDEzID8gKGJbRyArIChqIDw8IDEpID4+IDFdIHwgMCkgPT0gMTAgOiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IHE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoYVt5ID4+IDBdIHwgMCkgIT0gMCA/IChBID0gY1t3ID4+IDJdIHwgMCwgKGogfCAwKSA+PSAoY1tBID4+IDJdIHwgMCkpIDogMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBkYShjW3UgPj4gMl0gfCAwLCBBLCBqKSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBhW3YgPj4gMF0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiW0IgPj4gMV0gPSBpICYgMjU1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YShDLCBpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGogPSBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGogPSBxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxODogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFbSyArIHQgPj4gMF0gPSBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGogPSBxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBoIHwgMjYyMTQ0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IHEgJiAyNTU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChqICYgMTI3IHwgMCkgPT0gKGcgJiAxMjcgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhKEMsIG0sIGcsIHEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gY1soKGogJiAxMjggfCAwKSA9PSAwID8gNzAwMjQgOiA3MDAxNikgKyAoKGogJiAxKSA8PCAyKSA+PiAyXSB8IChoIHwgLTIxNDc0ODM2NDgpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhW0sgKyB0ID4+IDBdID0gcTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISgodWEoQywgdCkgfCAwKSA8PCAyNCA+PiAyNCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRiA9IC0xOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKID0gODk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGogPSBxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSAxIDw8IGRbbyA+PiAwXSB8IG47CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICByID0gazsKICAgICAgICAgICAgICAgIHMgPSBsOwogICAgICAgICAgICAgICAgcSA9IGo7CiAgICAgICAgICAgICAgICB0ID0gdCArIDEgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgaWYgKChKIHwgMCkgPT0gODkpIHsKICAgICAgICAgICAgRSA9IEw7CiAgICAgICAgICAgIHJldHVybiBGIHwgMDsKICAgICAgICB9CiAgICAgICAgaWYgKGggJiA4MzgwMzc2KQogICAgICAgICAgICBoID0gY1s2OTg4MCArICgoYVt2ID4+IDBdICYgMSkgPDwgMikgPj4gMl0gfCBoOwogICAgICAgIEsgPSBoIHwgKGggJiAxMjggfCAwKSAhPSAwICYgKGFbZiArIDkyID4+IDBdIHwgMCkgIT0gMCAmIDE7CiAgICAgICAgY1tEID4+IDJdID0gSzsKICAgICAgICBLID0gcmEoSykgfCAwOwogICAgICAgIEUgPSBMOwogICAgICAgIHJldHVybiBLIHwgMDsKICAgIH0KICAgIGZ1bmN0aW9uIGphKGQsIGUsIGYsIGcsIGgpIHsKICAgICAgICBkID0gZCB8IDA7CiAgICAgICAgZSA9IGUgfCAwOwogICAgICAgIGYgPSBmIHwgMDsKICAgICAgICBnID0gZyB8IDA7CiAgICAgICAgaCA9IGggfCAwOwogICAgICAgIHZhciBpID0gMCwgaiA9IDAsIGsgPSAwLCBsID0gMCwgbSA9IDAsIG4gPSAwLCBvID0gMCwgcCA9IDAsIHEgPSAwLCByID0gMCwgcyA9IDAsIHQgPSAwLCB1ID0gMDsKICAgICAgICB1ID0gRTsKICAgICAgICBFID0gRSArIDMyIHwgMDsKICAgICAgICBzID0gdTsKICAgICAgICB0ID0gY1tkICsgNzIgPj4gMl0gfCAwOwogICAgICAgIGlmICgoY1tkICsgMTI0ID4+IDJdIHwgMCkgPiAoZSB8IDApKSB7CiAgICAgICAgICAgIGlmICgoYVtkICsgOTQgPj4gMF0gfCAwKSAhPSAwID8gKGkgPSBjW2QgKyAxMzYgPj4gMl0gfCAwLCAoY1tpID4+IDJdIHwgMCkgPD0gKGUgfCAwKSkgOiAwKQogICAgICAgICAgICAgICAgaSA9IGRhKGNbZCArIDEzMiA+PiAyXSB8IDAsIGksIGUpIHwgMDsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgaSA9IGFbZCArIDkzID4+IDBdIHwgMDsKICAgICAgICAgICAgaWYgKGkgJiAxKQogICAgICAgICAgICAgICAgcSA9ICgoY1tkICsgODQgPj4gMl0gfCAwKSArIC01IHwgMCkgPj4+IDAgPCAyOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBxID0gMDsKICAgICAgICB9IGVsc2UKICAgICAgICAgICAgcSA9IDA7CiAgICAgICAgY1tzICsgMTIgPj4gMl0gPSAtMTsKICAgICAgICBjW3MgKyAxNiA+PiAyXSA9IC0xOwogICAgICAgIGNbcyArIDI0ID4+IDJdID0gZTsKICAgICAgICByID0gYVsoY1tkICsgNzYgPj4gMl0gfCAwKSArIGUgPj4gMF0gfCAwOwogICAgICAgIGFbcyArIDI4ID4+IDBdID0gcjsKICAgICAgICBwID0gY1tkICsgMTEyID4+IDJdIHwgMDsKICAgICAgICByID0gciAmIDE7CiAgICAgICAgY1tzID4+IDJdID0gY1twICsgKHIgPDwgMikgPj4gMl07CiAgICAgICAgY1tzICsgNCA+PiAyXSA9IGNbcCArIDggKyAociA8PCAyKSA+PiAyXTsKICAgICAgICBpZiAoKGUgfCAwKSA9PSAwID8gKGNbZCArIDEwMCA+PiAyXSB8IDApID4gMCA6IDApIHsKICAgICAgICAgICAgaSA9IG1hKGQpIHwgMDsKICAgICAgICAgICAgaSA9IGkgPDwgMjQgPj4gMjQgPT0gNCA/IGcgOiBpOwogICAgICAgIH0gZWxzZQogICAgICAgICAgICBpID0gZzsKICAgICAgICBnID0gdCArIGUgfCAwOwogICAgICAgIHIgPSBkICsgMjQwIHwgMDsKICAgICAgICBpZiAoKGFbZyA+PiAwXSB8IDApID09IDIyID8gKGogPSBjW3IgPj4gMl0gfCAwLCAoaiB8IDApID4gLTEpIDogMCkgewogICAgICAgICAgICBvID0gY1tkICsgMjQ0ID4+IDJdIHwgMDsKICAgICAgICAgICAgY1tzICsgOCA+PiAyXSA9IGNbbyArIChqIDw8IDQpID4+IDJdOwogICAgICAgICAgICBnID0gY1tvICsgKGogPDwgNCkgKyA0ID4+IDJdIHwgMDsKICAgICAgICAgICAgcCA9IGJbbyArIChqIDw8IDQpICsgMTIgPj4gMV0gfCAwOwogICAgICAgICAgICBjW3MgKyAyMCA+PiAyXSA9IGNbbyArIChqIDw8IDQpICsgOCA+PiAyXTsKICAgICAgICAgICAgY1tyID4+IDJdID0gaiArIC0xOwogICAgICAgICAgICBqID0gcDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBjW3MgKyA4ID4+IDJdID0gLTE7CiAgICAgICAgICAgIGogPSAoYVtnID4+IDBdIHwgMCkgPT0gMTcgPyAoaSAmIDI1NSkgKyAxICYgNjU1MzUgOiAwOwogICAgICAgICAgICBjW3MgKyAyMCA+PiAyXSA9IDA7CiAgICAgICAgICAgIG5hKGQsIHMsIGksIGUsIGUpOwogICAgICAgICAgICBnID0gZTsKICAgICAgICB9CiAgICAgICAgaSA9IC0xOwogICAgICAgIG0gPSAxOwogICAgICAgIG4gPSBlOwogICAgICAgIG8gPSBlOwogICAgICAgIHAgPSBnOwogICAgICAgIGwgPSBqOwogICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgIGlmICgobiB8IDApID4gKGYgfCAwKSkKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBpZiAoKG4gfCAwKSA+PSAoZiB8IDApKSB7CiAgICAgICAgICAgICAgICBnID0gZjsKICAgICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICAgICBnID0gZyArIC0xIHwgMDsKICAgICAgICAgICAgICAgICAgICBqID0gYVt0ICsgZyA+PiAwXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgaWYgKChnIHwgMCkgPD0gKGUgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9IHdoaWxlICgoMSA8PCAoaiAmIDI1NSkgJiAzODI5NzYgfCAwKSAhPSAwKTsKICAgICAgICAgICAgICAgIGlmICgoaiAmIC0yKSA8PCAyNCA+PiAyNCA9PSAyMCkKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIGsgPSBoOwogICAgICAgICAgICAgICAgICAgIGogPSBtOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgZyA9IGFbdCArIG4gPj4gMF0gfCAwOwogICAgICAgICAgICAgICAgaWYgKGcgPDwgMjQgPj4gMjQgPT0gNykKICAgICAgICAgICAgICAgICAgICBjW3IgPj4gMl0gPSAtMTsKICAgICAgICAgICAgICAgIGE6CiAgICAgICAgICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZyA8PCAyNCA+PiAyNCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IG07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAyOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqID0gbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoaSB8IDApID4gKG4gfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGogPSBtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gaSArIDEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoaSB8IDApID49IChmIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IGFbdCArIGkgPj4gMF0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZyA8PCAyNCA+PiAyNCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IGogPDwgMjQgPj4gMjQgPT0gMTMgPyA1IDogMjsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqID0gbTsKICAgICAgICAgICAgICAgICAgICB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICBrID0gYVsxNiArIChnICYgMjU1KSA+PiAwXSB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZyA9IGwgJiA2NTUzNTsKICAgICAgICAgICAgayA9IGFbKGsgJiAyNTUpICsgKDQ4ICsgKGcgPDwgNCkpID4+IDBdIHwgMDsKICAgICAgICAgICAgbCA9IGsgJiAzMTsKICAgICAgICAgICAgayA9IChrICYgMjU1KSA+Pj4gNTsKICAgICAgICAgICAgayA9IChuIHwgMCkgPT0gKGYgfCAwKSAmIGsgPDwgMjQgPj4gMjQgPT0gMCA/IDEgOiBrICYgMjU1OwogICAgICAgICAgICBjOgogICAgICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgICAgICBpZiAoIShrIDw8IDE2ID4+IDE2KSkgewogICAgICAgICAgICAgICAgICAgICAgICBrID0gbzsKICAgICAgICAgICAgICAgICAgICAgICAgZyA9IHA7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgZyA9IGFbNDggKyAoZyA8PCA0KSArIDE1ID4+IDBdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChrICYgNykgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYShkLCBzLCBnLCBwLCBuKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBjOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gcDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBjOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDM6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYShkLCBzLCBnLCBwLCBvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYShkLCBzLCA0LCBvLCBuKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBjOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYShkLCBzLCBnLCBwLCBvKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gbjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBjOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IG87CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IHA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHdoaWxlICgwKTsKICAgICAgICAgICAgbSA9IGo7CiAgICAgICAgICAgIG4gPSBuICsgMSB8IDA7CiAgICAgICAgICAgIG8gPSBrOwogICAgICAgICAgICBwID0gZzsKICAgICAgICB9CiAgICAgICAgayA9IGQgKyAxMiB8IDA7CiAgICAgICAgaWYgKChjW2sgPj4gMl0gfCAwKSA9PSAoZiB8IDApID8gKGNbZCArIDEwOCA+PiAyXSB8IDApID4gMCA6IDApIHsKICAgICAgICAgICAgaSA9IG9hKGQpIHwgMDsKICAgICAgICAgICAgaSA9IGkgPDwgMjQgPj4gMjQgPT0gNCA/IGggOiBpOwogICAgICAgIH0gZWxzZQogICAgICAgICAgICBpID0gaDsKICAgICAgICBnID0gZjsKICAgICAgICBkbyB7CiAgICAgICAgICAgIGcgPSBnICsgLTEgfCAwOwogICAgICAgICAgICBqID0gYVt0ICsgZyA+PiAwXSB8IDA7CiAgICAgICAgICAgIGlmICgoZyB8IDApIDw9IChlIHwgMCkpCiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9IHdoaWxlICgoMSA8PCAoaiAmIDI1NSkgJiAzODI5NzYgfCAwKSAhPSAwKTsKICAgICAgICBpZiAoKGogJiAtMikgPDwgMjQgPj4gMjQgPT0gMjAgPyAoY1trID4+IDJdIHwgMCkgPiAoZiB8IDApIDogMCkgewogICAgICAgICAgICBmID0gKGNbciA+PiAyXSB8IDApICsgMSB8IDA7CiAgICAgICAgICAgIGNbciA+PiAyXSA9IGY7CiAgICAgICAgICAgIHQgPSBkICsgMjQ0IHwgMDsKICAgICAgICAgICAgYlsoY1t0ID4+IDJdIHwgMCkgKyAoZiA8PCA0KSArIDEyID4+IDFdID0gbDsKICAgICAgICAgICAgY1soY1t0ID4+IDJdIHwgMCkgKyAoY1tyID4+IDJdIDw8IDQpICsgOCA+PiAyXSA9IGNbcyArIDIwID4+IDJdOwogICAgICAgICAgICBjWyhjW3QgPj4gMl0gfCAwKSArIChjW3IgPj4gMl0gPDwgNCkgKyA0ID4+IDJdID0gcDsKICAgICAgICAgICAgY1soY1t0ID4+IDJdIHwgMCkgKyAoY1tyID4+IDJdIDw8IDQpID4+IDJdID0gY1tzICsgOCA+PiAyXTsKICAgICAgICAgICAgRSA9IHU7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgbmEoZCwgcywgaSwgZiwgZik7CiAgICAgICAgRSA9IHU7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgZnVuY3Rpb24ga2EoYikgewogICAgICAgIGIgPSBiIHwgMDsKICAgICAgICB2YXIgZCA9IDAsIGUgPSAwLCBmID0gMCwgZyA9IDAsIGggPSAwLCBpID0gMCwgaiA9IDAsIGsgPSAwLCBsID0gMCwgbSA9IDAsIG4gPSAwLCBvID0gMCwgcCA9IDA7CiAgICAgICAgbCA9IGNbYiArIDcyID4+IDJdIHwgMDsKICAgICAgICBuID0gY1tiICsgNzYgPj4gMl0gfCAwOwogICAgICAgIGlmICghKGNbYiArIDEyMCA+PiAyXSAmIDgyNDgxOTIpKQogICAgICAgICAgICByZXR1cm47CiAgICAgICAgaCA9IChhW2IgKyA5MiA+PiAwXSB8IDApICE9IDA7CiAgICAgICAgaSA9IGIgKyA5NCB8IDA7CiAgICAgICAgaiA9IGIgKyA5MyB8IDA7CiAgICAgICAgayA9IGIgKyAxMzYgfCAwOwogICAgICAgIGcgPSBiICsgMTMyIHwgMDsKICAgICAgICBiID0gY1tiICsgMTI4ID4+IDJdIHwgMDsKICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICBpZiAoKGIgfCAwKSA8PSAwKQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgICAgICBpZiAoKGIgfCAwKSA8PSAwKQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgZSA9IGIgKyAtMSB8IDA7CiAgICAgICAgICAgICAgICBkID0gYVtsICsgZSA+PiAwXSB8IDA7CiAgICAgICAgICAgICAgICBpZiAoISgxIDw8IChkICYgMjU1KSAmIDgyNDgxOTIpKSB7CiAgICAgICAgICAgICAgICAgICAgYiA9IGU7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBkbwogICAgICAgICAgICAgICAgICAgIGlmIChoICYgZCA8PCAyNCA+PiAyNCA9PSA3KQogICAgICAgICAgICAgICAgICAgICAgICBiID0gMDsKICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFbaSA+PiAwXSB8IDAgPyAobSA9IGNbayA+PiAyXSB8IDAsIChiIHwgMCkgPiAoY1ttID4+IDJdIHwgMCkpIDogMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IGRhKGNbZyA+PiAyXSB8IDAsIG0sIGUpIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBhW2ogPj4gMF0gfCAwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHdoaWxlICgwKTsKICAgICAgICAgICAgICAgIGFbbiArIGUgPj4gMF0gPSBiOwogICAgICAgICAgICAgICAgYiA9IGU7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgICAgIGlmICgoYiB8IDApIDw9IDApCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBmID0gYiArIC0xIHwgMDsKICAgICAgICAgICAgICAgIGQgPSBhW2wgKyBmID4+IDBdIHwgMDsKICAgICAgICAgICAgICAgIGUgPSAxIDw8IChkICYgMjU1KTsKICAgICAgICAgICAgICAgIGlmICghKGUgJiAzODI5NzYpKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKGggJiBkIDw8IDI0ID4+IDI0ID09IDcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIHAgPSAyNDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmIChlICYgMzg0IHwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICBwID0gMjA7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgIGFbbiArIGYgPj4gMF0gPSBhW24gKyBiID4+IDBdIHwgMDsKICAgICAgICAgICAgICAgIGIgPSBmOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICBpZiAoKHAgfCAwKSA9PSAyMCkgewogICAgICAgICAgICAgICAgICAgIGlmIChhW2kgPj4gMF0gfCAwID8gKG8gPSBjW2sgPj4gMl0gfCAwLCAoYiB8IDApID4gKGNbbyA+PiAyXSB8IDApKSA6IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgYiA9IGRhKGNbZyA+PiAyXSB8IDAsIG8sIGYpIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgcCA9IDI0OwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYiA9IGFbaiA+PiAwXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgcCA9IDI0OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB3aGlsZSAoMCk7CiAgICAgICAgICAgIGlmICgocCB8IDApID09IDI0KSB7CiAgICAgICAgICAgICAgICBwID0gMDsKICAgICAgICAgICAgICAgIGFbbiArIGYgPj4gMF0gPSBiOwogICAgICAgICAgICAgICAgYiA9IGY7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgZnVuY3Rpb24gbGEoYSwgYiwgZCkgewogICAgICAgIGEgPSBhIHwgMDsKICAgICAgICBiID0gYiB8IDA7CiAgICAgICAgZCA9IGQgfCAwOwogICAgICAgIHZhciBlID0gMCwgZiA9IDAsIGcgPSAwLCBoID0gMCwgaSA9IDAsIGogPSAwLCBrID0gMDsKICAgICAgICBrID0gYSArIDMyOCB8IDA7CiAgICAgICAgZSA9IGNbayA+PiAyXSB8IDA7CiAgICAgICAgZG8KICAgICAgICAgICAgaWYgKCFlKSB7CiAgICAgICAgICAgICAgICBnID0gbGIoODApIHwgMDsKICAgICAgICAgICAgICAgIGUgPSBhICsgMzQ0IHwgMDsKICAgICAgICAgICAgICAgIGNbZSA+PiAyXSA9IGc7CiAgICAgICAgICAgICAgICBpZiAoZyB8IDApIHsKICAgICAgICAgICAgICAgICAgICBjW2sgPj4gMl0gPSAxMDsKICAgICAgICAgICAgICAgICAgICBpID0gZTsKICAgICAgICAgICAgICAgICAgICBmID0gZzsKICAgICAgICAgICAgICAgICAgICBoID0gMTA7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjW2EgKyAzNDAgPj4gMl0gPSA3OwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaSA9IGEgKyAzNDQgfCAwOwogICAgICAgICAgICAgICAgZyA9IGNbaSA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICBmID0gZzsKICAgICAgICAgICAgICAgIGggPSBlOwogICAgICAgICAgICB9CiAgICAgICAgd2hpbGUgKDApOwogICAgICAgIGogPSBhICsgMzMyIHwgMDsKICAgICAgICBlID0gY1tqID4+IDJdIHwgMDsKICAgICAgICBkbwogICAgICAgICAgICBpZiAoKGUgfCAwKSA+PSAoaCB8IDApKSB7CiAgICAgICAgICAgICAgICBmID0gbWIoZywgaCA8PCA0KSB8IDA7CiAgICAgICAgICAgICAgICBjW2kgPj4gMl0gPSBmOwogICAgICAgICAgICAgICAgaWYgKGYgfCAwKSB7CiAgICAgICAgICAgICAgICAgICAgY1trID4+IDJdID0gY1trID4+IDJdIDw8IDE7CiAgICAgICAgICAgICAgICAgICAgZSA9IGNbaiA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjW2kgPj4gMl0gPSBnOwogICAgICAgICAgICAgICAgY1thICsgMzQwID4+IDJdID0gNzsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIHdoaWxlICgwKTsKICAgICAgICBjW2YgKyAoZSA8PCAzKSA+PiAyXSA9IGI7CiAgICAgICAgY1tmICsgKGUgPDwgMykgKyA0ID4+IDJdID0gZDsKICAgICAgICBjW2ogPj4gMl0gPSAoY1tqID4+IDJdIHwgMCkgKyAxOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGZ1bmN0aW9uIG1hKGEpIHsKICAgICAgICBhID0gYSB8IDA7CiAgICAgICAgdmFyIGIgPSAwLCBkID0gMCwgZiA9IDAsIGcgPSAwLCBoID0gMCwgaSA9IDA7CiAgICAgICAgZyA9IGNbYSArIDk2ID4+IDJdIHwgMDsKICAgICAgICBiID0gY1thICsgMTAwID4+IDJdIHwgMDsKICAgICAgICBhOgogICAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICAgICAgaWYgKChiIHwgMCkgPD0gMCkgewogICAgICAgICAgICAgICAgICAgIGIgPSA0OwogICAgICAgICAgICAgICAgICAgIGQgPSA4OwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZiA9IGIgKyAtMSB8IDA7CiAgICAgICAgICAgICAgICBkID0gZVtnICsgKGYgPDwgMSkgPj4gMV0gfCAwOwogICAgICAgICAgICAgICAgaWYgKChiIHwgMCkgIT0gMSAmIChkICYgNjQ1MTIgfCAwKSA9PSA1NjMyMCkgewogICAgICAgICAgICAgICAgICAgIGIgPSBiICsgLTIgfCAwOwogICAgICAgICAgICAgICAgICAgIGkgPSBlW2cgKyAoYiA8PCAxKSA+PiAxXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgaCA9IChpICYgNjQ1MTIgfCAwKSA9PSA1NTI5NjsKICAgICAgICAgICAgICAgICAgICBkID0gaCA/IGQgKyAtNTY2MTM4ODggKyAoaSA8PCAxMCkgfCAwIDogZDsKICAgICAgICAgICAgICAgICAgICBiID0gaCA/IGIgOiBmOwogICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgYiA9IGY7CiAgICAgICAgICAgICAgICBzd2l0Y2ggKCgocGEoYSwgZCkgfCAwKSAmIDI1NSkgPDwgMjQgPj4gMjQpIHsKICAgICAgICAgICAgICAgIGNhc2UgMTM6CiAgICAgICAgICAgICAgICBjYXNlIDE6IHsKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IDY7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY2FzZSA3OiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSA3OwogICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNhc2UgMDogewogICAgICAgICAgICAgICAgICAgICAgICBiID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IDg7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZGVmYXVsdDogewogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIGlmICgoZCB8IDApID09IDYpIHsKICAgICAgICAgICAgaSA9IDE7CiAgICAgICAgICAgIHJldHVybiBpIHwgMDsKICAgICAgICB9IGVsc2UgaWYgKChkIHwgMCkgPT0gNykgewogICAgICAgICAgICBpID0gNDsKICAgICAgICAgICAgcmV0dXJuIGkgfCAwOwogICAgICAgIH0gZWxzZSBpZiAoKGQgfCAwKSA9PSA4KQogICAgICAgICAgICByZXR1cm4gYiB8IDA7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CiAgICBmdW5jdGlvbiBuYShiLCBlLCBmLCBnLCBoKSB7CiAgICAgICAgYiA9IGIgfCAwOwogICAgICAgIGUgPSBlIHwgMDsKICAgICAgICBmID0gZiB8IDA7CiAgICAgICAgZyA9IGcgfCAwOwogICAgICAgIGggPSBoIHwgMDsKICAgICAgICB2YXIgaSA9IDAsIGogPSAwLCBrID0gMCwgbCA9IDAsIG0gPSAwLCBuID0gMCwgbyA9IDAsIHAgPSAwLCBxID0gMCwgciA9IDAsIHMgPSAwLCB0ID0gMDsKICAgICAgICBsID0gY1tlID4+IDJdIHwgMDsKICAgICAgICBwID0gY1tlICsgNCA+PiAyXSB8IDA7CiAgICAgICAgcyA9IGIgKyA3NiB8IDA7CiAgICAgICAgdCA9IGNbcyA+PiAyXSB8IDA7CiAgICAgICAgbyA9IGUgKyAyMCB8IDA7CiAgICAgICAgayA9IGNbbyA+PiAyXSAmIDI1NTsKICAgICAgICBxID0gZFsoZiAmIDI1NSkgKyAobCArIChrIDw8IDMpKSA+PiAwXSB8IDA7CiAgICAgICAgciA9IHEgJiAxNTsKICAgICAgICBjW28gPj4gMl0gPSByOwogICAgICAgIHIgPSBhW2wgKyAociA8PCAzKSArIDcgPj4gMF0gfCAwOwogICAgICAgIGE6CiAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICBzd2l0Y2ggKGFbcCArIChxID4+PiA0KSA+PiAwXSB8IDApIHsKICAgICAgICAgICAgICAgIGNhc2UgMTQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGUgKyA4IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgbSA9IChhW2UgKyAyOCA+PiAwXSB8IDApICsgMSA8PCAyNCA+PiAyNDsKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGc7CiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gaSArIC0xIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoaSB8IDApIDw9IChjW2wgPj4gMl0gfCAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gdCArIGsgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IGFbaSA+PiAwXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGogJiAyNTUpID4gKG0gJiAyNTUpKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFbaSA+PiAwXSA9IChqICYgMjU1KSArIDI1NDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY2FzZSAxOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNbZSArIDggPj4gMl0gPSBnOwogICAgICAgICAgICAgICAgICAgICAgICBpID0gZzsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY2FzZSAyOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBjW2UgKyA4ID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY2FzZSAzOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHFhKGNbYiArIDcyID4+IDJdIHwgMCwgY1tzID4+IDJdIHwgMCwgY1tlICsgOCA+PiAyXSB8IDAsIGcsIChkW2UgKyAyOCA+PiAwXSB8IDApICsgMSAmIDI1NSk7CiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBnOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjYXNlIDQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgcWEoY1tiICsgNzIgPj4gMl0gfCAwLCBjW3MgPj4gMl0gfCAwLCBjW2UgKyA4ID4+IDJdIHwgMCwgZywgKGRbZSArIDI4ID4+IDBdIHwgMCkgKyAyICYgMjU1KTsKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGc7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNhc2UgNTogewogICAgICAgICAgICAgICAgICAgICAgICBpID0gZSArIDEyIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgaiA9IGNbaSA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoaiB8IDApID4gLTEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYShiLCBqLCAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgY1tpID4+IDJdID0gLTE7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjW2IgKyAzMjggPj4gMl0gfCAwID8gKG0gPSBiICsgMzMyIHwgMCwgbiA9IGIgKyAzMzYgfCAwLCAoY1ttID4+IDJdIHwgMCkgPiAoY1tuID4+IDJdIHwgMCkpIDogMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IGUgKyAxNiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gY1tqID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGkgKyAxIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGkgfCAwKSA+PSAoZyB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxID0gdCArIGkgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFbcSA+PiAwXSA9IChhW3EgPj4gMF0gfCAwKSArIC0yIDw8IDI0ID4+IDI0ICYgLTI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW24gPj4gMl0gPSBjW20gPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2ogPj4gMl0gPSAtMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmIDw8IDI0ID4+IDI0ICE9IDUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbGEoYiwgZywgMSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW24gPj4gMl0gPSBjW20gPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgY1tlICsgMTYgPj4gMl0gPSAtMTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoYVtsICsgKGsgPDwgMykgKyA3ID4+IDBdICYgMSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZzsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gY1tlICsgOCA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gKGkgfCAwKSA+IDAgPyBpIDogZzsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA8PCAyNCA+PiAyNCA9PSA1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYShiLCBnLCAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbYiArIDMzNiA+PiAyXSA9IGNbYiArIDMzMiA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjYXNlIDY6IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChjW2IgKyAzMjggPj4gMl0gfCAwKSA+IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2IgKyAzMzIgPj4gMl0gPSBjW2IgKyAzMzYgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgIGNbZSArIDggPj4gMl0gPSAtMTsKICAgICAgICAgICAgICAgICAgICAgICAgY1tlICsgMTIgPj4gMl0gPSAtMTsKICAgICAgICAgICAgICAgICAgICAgICAgY1tlICsgMTYgPj4gMl0gPSBoICsgLTE7CiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBnOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjYXNlIDc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChmIDw8IDI0ID4+IDI0ID09IDMgPyAoYVsoY1tiICsgNzIgPj4gMl0gfCAwKSArIGcgPj4gMF0gfCAwKSA9PSA1IDogMCkgPyAoY1tiICsgODQgPj4gMl0gfCAwKSAhPSA2IDogMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGUgKyAxMiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqID0gY1tpID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoaiB8IDApID09IC0xKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1tlICsgMTYgPj4gMl0gPSBoICsgLTE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoaiB8IDApID4gLTEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYShiLCBqLCAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2kgPj4gMl0gPSAtMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhKGIsIGcsIDEpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBlICsgMTIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGNbaSA+PiAyXSB8IDApID09IC0xKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2kgPj4gMl0gPSBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGc7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNhc2UgODogewogICAgICAgICAgICAgICAgICAgICAgICBjW2UgKyAxNiA+PiAyXSA9IGggKyAtMTsKICAgICAgICAgICAgICAgICAgICAgICAgY1tlICsgOCA+PiAyXSA9IC0xOwogICAgICAgICAgICAgICAgICAgICAgICBpID0gZzsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY2FzZSA5OiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBnOwogICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcSA9IGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gaSArIC0xIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgocSB8IDApIDw9IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYVt0ICsgaSA+PiAwXSAmIDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqID0gMzY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChqIHwgMCkgPT0gMzYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhKGIsIGksIDQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY1tiICsgMzM2ID4+IDJdID0gY1tiICsgMzMyID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGNbZSArIDggPj4gMl0gPSBnOwogICAgICAgICAgICAgICAgICAgICAgICBpID0gZzsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY2FzZSAxMDogewogICAgICAgICAgICAgICAgICAgICAgICBsYShiLCBnLCAxKTsKICAgICAgICAgICAgICAgICAgICAgICAgbGEoYiwgZywgMik7CiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBnOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjYXNlIDExOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBiICsgMzM2IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgaiA9IGIgKyAzMzIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBjW2ogPj4gMl0gPSBjW2kgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmIDw8IDI0ID4+IDI0ID09IDUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhKGIsIGcsIDQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY1tpID4+IDJdID0gY1tqID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGc7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGc7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNhc2UgMTI6IHsKICAgICAgICAgICAgICAgICAgICAgICAgbCA9IChkW2UgKyAyOCA+PiAwXSB8IDApICsgKHIgJiAyNTUpIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgaiA9IGwgJiAyNTU7CiAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBlICsgOCB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBsICYgMjU1OwogICAgICAgICAgICAgICAgICAgICAgICBpID0gY1trID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoaSB8IDApID49IChnIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gdCArIGkgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPj4+IDAgPiAoZFttID4+IDBdIHwgMCkgPj4+IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYVttID4+IDBdID0gajsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBpICsgMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgY1tiICsgMzM2ID4+IDJdID0gY1tiICsgMzMyID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICBjW2sgPj4gMl0gPSBnOwogICAgICAgICAgICAgICAgICAgICAgICBpID0gZzsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY2FzZSAxMzogewogICAgICAgICAgICAgICAgICAgICAgICBuID0gYVtlICsgMjggPj4gMF0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBmID0gZSArIDggfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBxID0gbiAmIDI1NTsKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IHEgKyAzIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgcCA9IHEgKyAyIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgcSA9IHEgKyAxICYgMjU1OwogICAgICAgICAgICAgICAgICAgICAgICBpID0gZzsKICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBpICsgLTEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChpIHwgMCkgPD0gKGNbZiA+PiAyXSB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGogPSB0ICsgayB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gYVtqID4+IDBdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSBsICYgMjU1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChvIHwgMCkgPT0gKG0gfCAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGogPSBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobyB8IDApICE9IChqICYgMjU1IHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IGkgKyAtMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFbdCArIGkgPj4gMF0gPSBxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gajsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IGFbdCArIGogPj4gMF0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbCArIC0xIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGogPDwgMjQgPj4gMjQgIT0gbiA8PCAyNCA+PiAyNCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IGFbdCArIGkgPj4gMF0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gaiAmIDI1NTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqID0gdCArIGwgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFbaiA+PiAwXSA9IChwIHwgMCkgPT0gKGsgfCAwKSA/IG4gOiBxOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICBpID0gZzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgd2hpbGUgKDApOwogICAgICAgIGlmICghKHIgPDwgMjQgPj4gMjQgIT0gMCB8IChpIHwgMCkgPCAoZyB8IDApKSkKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIGogPSAoZFtlICsgMjggPj4gMF0gfCAwKSArIChyICYgMjU1KSAmIDI1NTsKICAgICAgICBpZiAoKGkgfCAwKSA8IChjW2UgKyAyNCA+PiAyXSB8IDApKSB7CiAgICAgICAgICAgIHFhKGNbYiArIDcyID4+IDJdIHwgMCwgY1tzID4+IDJdIHwgMCwgaSwgaCwgaik7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgaWYgKChpIHwgMCkgPj0gKGggfCAwKSkKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBhW3QgKyBpID4+IDBdID0gajsKICAgICAgICAgICAgaSA9IGkgKyAxIHwgMDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgZnVuY3Rpb24gb2EoYSkgewogICAgICAgIGEgPSBhIHwgMDsKICAgICAgICB2YXIgYiA9IDAsIGQgPSAwLCBmID0gMCwgZyA9IDAsIGggPSAwLCBpID0gMCwgaiA9IDA7CiAgICAgICAgZyA9IGNbYSArIDEwNCA+PiAyXSB8IDA7CiAgICAgICAgaCA9IGNbYSArIDEwOCA+PiAyXSB8IDA7CiAgICAgICAgYiA9IDA7CiAgICAgICAgYToKICAgICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgICAgIGlmICgoYiB8IDApID49IChoIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICBiID0gNDsKICAgICAgICAgICAgICAgICAgICBkID0gNzsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGYgPSBiICsgMSB8IDA7CiAgICAgICAgICAgICAgICBkID0gZVtnICsgKGIgPDwgMSkgPj4gMV0gfCAwOwogICAgICAgICAgICAgICAgaWYgKChmIHwgMCkgPT0gKGggfCAwKSB8IChkICYgNjQ1MTIgfCAwKSAhPSA1NTI5NikKICAgICAgICAgICAgICAgICAgICBiID0gZjsKICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIGogPSBlW2cgKyAoZiA8PCAxKSA+PiAxXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgaSA9IChqICYgNjQ1MTIgfCAwKSA9PSA1NjMyMDsKICAgICAgICAgICAgICAgICAgICBkID0gaSA/IChkIDw8IDEwKSArIC01NjYxMzg4OCArIGogfCAwIDogZDsKICAgICAgICAgICAgICAgICAgICBiID0gaSA/IGIgKyAyIHwgMCA6IGY7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBzd2l0Y2ggKCgocGEoYSwgZCkgfCAwKSAmIDI1NSkgPDwgMjQgPj4gMjQpIHsKICAgICAgICAgICAgICAgIGNhc2UgMDogewogICAgICAgICAgICAgICAgICAgICAgICBiID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IDc7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY2FzZSAxMzoKICAgICAgICAgICAgICAgIGNhc2UgMTogewogICAgICAgICAgICAgICAgICAgICAgICBkID0gODsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjYXNlIDU6IHsKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IDY7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY2FzZSAyOiB7CiAgICAgICAgICAgICAgICAgICAgICAgIGIgPSAyOwogICAgICAgICAgICAgICAgICAgICAgICBkID0gOTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBkZWZhdWx0OiB7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgaWYgKChkIHwgMCkgPT0gNikgewogICAgICAgICAgICBqID0gMzsKICAgICAgICAgICAgcmV0dXJuIGogfCAwOwogICAgICAgIH0gZWxzZSBpZiAoKGQgfCAwKSA9PSA3KSB7CiAgICAgICAgICAgIGogPSBiOwogICAgICAgICAgICByZXR1cm4gaiB8IDA7CiAgICAgICAgfSBlbHNlIGlmICgoZCB8IDApID09IDgpIHsKICAgICAgICAgICAgaiA9IDE7CiAgICAgICAgICAgIHJldHVybiBqIHwgMDsKICAgICAgICB9IGVsc2UgaWYgKChkIHwgMCkgPT0gOSkKICAgICAgICAgICAgcmV0dXJuIGIgfCAwOwogICAgICAgIHJldHVybiAwOwogICAgfQogICAgZnVuY3Rpb24gcGEoYSwgYikgewogICAgICAgIGEgPSBhIHwgMDsKICAgICAgICBiID0gYiB8IDA7CiAgICAgICAgdmFyIGQgPSAwLCBlID0gMDsKICAgICAgICBlID0gY1thICsgMzUyID4+IDJdIHwgMDsKICAgICAgICBpZiAoISgoZSB8IDApICE9IDAgPyAoZCA9IElbZSAmIDBdKGNbYSArIDM1NiA+PiAyXSB8IDAsIGIpIHwgMCwgKGQgfCAwKSAhPSAyMykgOiAwKSkKICAgICAgICAgICAgZCA9IHRiKGIpIHwgMDsKICAgICAgICByZXR1cm4gKChkIHwgMCkgPiAyMiA/IDEwIDogZCkgfCAwOwogICAgfQogICAgZnVuY3Rpb24gcWEoYiwgYywgZCwgZSwgZikgewogICAgICAgIGIgPSBiIHwgMDsKICAgICAgICBjID0gYyB8IDA7CiAgICAgICAgZCA9IGQgfCAwOwogICAgICAgIGUgPSBlIHwgMDsKICAgICAgICBmID0gZiB8IDA7CiAgICAgICAgdmFyIGcgPSAwLCBoID0gMDsKICAgICAgICBnID0gMDsKICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICBpZiAoKGQgfCAwKSA+PSAoZSB8IDApKQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGggPSBhW2IgKyBkID4+IDBdIHwgMDsKICAgICAgICAgICAgZyA9IGcgKyAoKGggPDwgMjQgPj4gMjQgPT0gMjIpIDw8IDMxID4+IDMxKSB8IDA7CiAgICAgICAgICAgIGlmICghZykKICAgICAgICAgICAgICAgIGFbYyArIGQgPj4gMF0gPSBmOwogICAgICAgICAgICBkID0gZCArIDEgfCAwOwogICAgICAgICAgICBnID0gZyArICgoaCAmIC0yKSA8PCAyNCA+PiAyNCA9PSAyMCAmIDEpIHwgMDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgZnVuY3Rpb24gcmEoYSkgewogICAgICAgIGEgPSBhIHwgMDsKICAgICAgICBpZiAoKGEgJiAyMTU0NDk4IHwgMCkgPT0gMCA/IChhICYgMzIgfCAwKSA9PSAwIHwgKGEgJiA4MjQ5MzA0IHwgMCkgPT0gMCA6IDApIHsKICAgICAgICAgICAgYSA9IDA7CiAgICAgICAgICAgIHJldHVybiBhIHwgMDsKICAgICAgICB9CiAgICAgICAgYSA9IChhICYgMjYyMjA1ODEgfCAwKSA9PSAwID8gMSA6IDI7CiAgICAgICAgcmV0dXJuIGEgfCAwOwogICAgfQogICAgZnVuY3Rpb24gc2EoZCwgZSkgewogICAgICAgIGQgPSBkIHwgMDsKICAgICAgICBlID0gZSB8IDA7CiAgICAgICAgdmFyIGYgPSAwLCBnID0gMCwgaCA9IDA7CiAgICAgICAgY1tlID4+IDJdID0gZDsKICAgICAgICBjW2UgKyA0OTIgPj4gMl0gPSAwOwogICAgICAgIGJbZSArIDUwMCA+PiAxXSA9IDA7CiAgICAgICAgYltlICsgNTAyID4+IDFdID0gMDsKICAgICAgICBoID0gZCArIDk0IHwgMDsKICAgICAgICBpZiAoKGFbaCA+PiAwXSB8IDApICE9IDAgPyAoZiA9IGNbZCArIDEzNiA+PiAyXSB8IDAsIChjW2YgPj4gMl0gfCAwKSA8PSAwKSA6IDApCiAgICAgICAgICAgIGYgPSBkYShjW2QgKyAxMzIgPj4gMl0gfCAwLCBmLCAwKSB8IDA7CiAgICAgICAgZWxzZQogICAgICAgICAgICBmID0gYVtkICsgOTMgPj4gMF0gfCAwOwogICAgICAgIGFbZSArIDUwNCA+PiAwXSA9IGY7CiAgICAgICAgaWYgKChhW2ggPj4gMF0gfCAwKSAhPSAwID8gKGcgPSBjW2QgKyAxMzYgPj4gMl0gfCAwLCAoY1tnID4+IDJdIHwgMCkgPD0gMCkgOiAwKQogICAgICAgICAgICBmID0gZGEoY1tkICsgMTMyID4+IDJdIHwgMCwgZywgMCkgfCAwOwogICAgICAgIGVsc2UKICAgICAgICAgICAgZiA9IGFbZCArIDkzID4+IDBdIHwgMDsKICAgICAgICBmID0gZiAmIDE7CiAgICAgICAgYVtlICsgNTA2ID4+IDBdID0gZjsKICAgICAgICBhW2UgKyA1MDUgPj4gMF0gPSBmOwogICAgICAgIGNbZSArIDUwOCA+PiAyXSA9IGYgJiAyNTU7CiAgICAgICAgY1tlICsgNDk2ID4+IDJdID0gMDsKICAgICAgICBmID0gY1tkICsgNTIgPj4gMl0gfCAwOwogICAgICAgIGlmICghZikgewogICAgICAgICAgICBjW2UgKyA0ODQgPj4gMl0gPSBlICsgNDsKICAgICAgICAgICAgZyA9IDIwOwogICAgICAgICAgICBoID0gZSArIDQ4OCB8IDA7CiAgICAgICAgICAgIGNbaCA+PiAyXSA9IGc7CiAgICAgICAgICAgIGQgPSBkICsgODQgfCAwOwogICAgICAgICAgICBkID0gY1tkID4+IDJdIHwgMDsKICAgICAgICAgICAgaCA9IChkIHwgMCkgPT0gMTsKICAgICAgICAgICAgZCA9IChkIHwgMCkgPT0gNjsKICAgICAgICAgICAgZCA9IGggfCBkOwogICAgICAgICAgICBkID0gZCAmIDE7CiAgICAgICAgICAgIGUgPSBlICsgMjUyOCB8IDA7CiAgICAgICAgICAgIGFbZSA+PiAwXSA9IGQ7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBjW2UgKyA0ODQgPj4gMl0gPSBmOwogICAgICAgICAgICBnID0gKChjW2QgKyAyOCA+PiAyXSB8IDApID4+PiAwKSAvIDI0IHwgMDsKICAgICAgICAgICAgaCA9IGUgKyA0ODggfCAwOwogICAgICAgICAgICBjW2ggPj4gMl0gPSBnOwogICAgICAgICAgICBkID0gZCArIDg0IHwgMDsKICAgICAgICAgICAgZCA9IGNbZCA+PiAyXSB8IDA7CiAgICAgICAgICAgIGggPSAoZCB8IDApID09IDE7CiAgICAgICAgICAgIGQgPSAoZCB8IDApID09IDY7CiAgICAgICAgICAgIGQgPSBoIHwgZDsKICAgICAgICAgICAgZCA9IGQgJiAxOwogICAgICAgICAgICBlID0gZSArIDI1MjggfCAwOwogICAgICAgICAgICBhW2UgPj4gMF0gPSBkOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQogICAgZnVuY3Rpb24gdGEoZCwgZSkgewogICAgICAgIGQgPSBkIHwgMDsKICAgICAgICBlID0gZSB8IDA7CiAgICAgICAgY1tkICsgNDkyID4+IDJdID0gMDsKICAgICAgICBiW2QgKyA1MDIgPj4gMV0gPSAwOwogICAgICAgIGFbZCArIDUwNCA+PiAwXSA9IGU7CiAgICAgICAgZSA9IGUgJiAxOwogICAgICAgIGFbZCArIDUwNiA+PiAwXSA9IGU7CiAgICAgICAgYVtkICsgNTA1ID4+IDBdID0gZTsKICAgICAgICBjW2QgKyA1MDggPj4gMl0gPSBlICYgMjU1OwogICAgICAgIGNbZCArIDQ5NiA+PiAyXSA9IDA7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgZnVuY3Rpb24gdWEoZiwgZykgewogICAgICAgIGYgPSBmIHwgMDsKICAgICAgICBnID0gZyB8IDA7CiAgICAgICAgdmFyIGggPSAwLCBpID0gMCwgaiA9IDAsIGsgPSAwLCBsID0gMCwgbSA9IDAsIG4gPSAwLCBvID0gMCwgcCA9IDAsIHEgPSAwLCByID0gMCwgcyA9IDAsIHQgPSAwOwogICAgICAgIHMgPSBjW2YgKyA0OTIgPj4gMl0gfCAwOwogICAgICAgIHAgPSBmICsgNDk2ICsgKHMgPDwgNCkgfCAwOwogICAgICAgIGggPSBjW2YgPj4gMl0gfCAwOwogICAgICAgIHIgPSAoY1toICsgNzIgPj4gMl0gfCAwKSArIGcgfCAwOwogICAgICAgIG0gPSBhW3IgPj4gMF0gfCAwOwogICAgICAgIGRvCiAgICAgICAgICAgIGlmIChtIDw8IDI0ID4+IDI0ID09IDEwKSB7CiAgICAgICAgICAgICAgICBoID0gYlsoY1toICsgNCA+PiAyXSB8IDApICsgKGcgPDwgMSkgPj4gMV0gfCAwOwogICAgICAgICAgICAgICAgbCA9IGYgKyA0OTYgKyAocyA8PCA0KSArIDQgfCAwOwogICAgICAgICAgICAgICAgaSA9IGVbbCA+PiAxXSB8IDA7CiAgICAgICAgICAgICAgICBvID0gZiArIDQ4NCB8IDA7CiAgICAgICAgICAgICAgICBqID0gaCAmIDY1NTM1OwogICAgICAgICAgICAgICAgbiA9IGVbZiArIDQ5NiArIChzIDw8IDQpICsgNiA+PiAxXSB8IDA7CiAgICAgICAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICAgICAgICAgIHQgPSBuOwogICAgICAgICAgICAgICAgICAgIG4gPSBuICsgLTEgfCAwOwogICAgICAgICAgICAgICAgICAgIGlmICgodCB8IDApIDw9IChpIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGlmICgoY1soY1tvID4+IDJdIHwgMCkgKyAobiAqIDI0IHwgMCkgKyA0ID4+IDJdIHwgMCkgPT0gKGogfCAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICBxID0gNTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKChxIHwgMCkgPT0gNSkgewogICAgICAgICAgICAgICAgICAgIGggPSB5YShmLCBuLCBnKSB8IDA7CiAgICAgICAgICAgICAgICAgICAgaWYgKGggPDwgMjQgPj4gMjQgPT0gMTApCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGFbZiArIDQ5NiArIChzIDw8IDQpICsgMTAgPj4gMF0gPSAxMDsKICAgICAgICAgICAgICAgICAgICBjW2YgKyA0OTYgKyAocyA8PCA0KSArIDEyID4+IDJdID0gaCAmIDI1NTsKICAgICAgICAgICAgICAgICAgICBjW3AgPj4gMl0gPSBnOwogICAgICAgICAgICAgICAgICAgIGggPSBjWyhjW2YgPj4gMl0gfCAwKSArIDc2ID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICBpID0gZFtoICsgZyA+PiAwXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgaWYgKGkgJiAxMjgpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGkgJiAxOwogICAgICAgICAgICAgICAgICAgICAgICBhW2YgKyA0OTYgKyAocyA8PCA0KSArIDkgPj4gMF0gPSBpOwogICAgICAgICAgICAgICAgICAgICAgICBpID0gMSA8PCBpOwogICAgICAgICAgICAgICAgICAgICAgICBoID0gZVtsID4+IDFdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoaCB8IDApID49IChuIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gKGNbbyA+PiAyXSB8IDApICsgKGggKiAyNCB8IDApICsgMTIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYlt0ID4+IDFdID0gaSB8IGVbdCA+PiAxXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBoICsgMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaCA9IChjWyhjW2YgPj4gMl0gfCAwKSArIDc2ID4+IDJdIHwgMCkgKyBnIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgYVtoID4+IDBdID0gYVtoID4+IDBdICYgMTI3OwogICAgICAgICAgICAgICAgICAgICAgICBoID0gY1soY1tmID4+IDJdIHwgMCkgKyA3NiA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHQgPSBoICsgKGNbKGNbbyA+PiAyXSB8IDApICsgKG4gKiAyNCB8IDApID4+IDJdIHwgMCkgfCAwOwogICAgICAgICAgICAgICAgICAgIGFbdCA+PiAwXSA9IGFbdCA+PiAwXSAmIDEyNzsKICAgICAgICAgICAgICAgICAgICB0ID0gMTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gdCB8IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoKGggPDwgMTYgPj4gMTYgPyAoayA9ICh6YihqKSB8IDApICYgNjU1MzUsIGggPDwgMTYgPj4gMTYgIT0gayA8PCAxNiA+PiAxNikgOiAwKSA/ICh3YihqKSB8IDApID09IDEgOiAwKSB7CiAgICAgICAgICAgICAgICAgICAgYToKICAgICAgICAgICAgICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChrIDw8IDE2ID4+IDE2IDwgMTIyOTcpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGsgPDwgMTYgPj4gMTYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDkwMDI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKCh6YShmLCAxMjI5NywgZykgfCAwKSA8PCAyNCA+PiAyNCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoayA8PCAxNiA+PiAxNikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMTIyOTc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKCh6YShmLCA5MDAyLCBnKSB8IDApIDw8IDI0ID4+IDI0KSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDApOwogICAgICAgICAgICAgICAgICAgIGlmICghKCh6YShmLCBrLCBnKSB8IDApIDw8IDI0ID4+IDI0KSkgewogICAgICAgICAgICAgICAgICAgICAgICB0ID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgfCAwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgIHdoaWxlICgwKTsKICAgICAgICBoID0gZFsoY1soY1tmID4+IDJdIHwgMCkgKyA3NiA+PiAyXSB8IDApICsgZyA+PiAwXSB8IDA7CiAgICAgICAgYjoKICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgIGlmICghKGggJiAxMjgpKQogICAgICAgICAgICAgICAgICAgIHN3aXRjaCAobSA8PCAyNCA+PiAyNCkgewogICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAxMzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IG0gPDwgMjQgPj4gMjQgIT0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFbZiArIDQ5NiArIChzIDw8IDQpICsgMTAgPj4gMF0gPSBtOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYVtmICsgNDk2ICsgKHMgPDwgNCkgKyA5ID4+IDBdID0gbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbZiArIDQ5NiArIChzIDw8IDQpICsgMTIgPj4gMl0gPSBoICYgMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbcCA+PiAyXSA9IGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gaCAmIDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBxID0gMzU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBiOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgY2FzZSAyOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhW2YgKyA0OTYgKyAocyA8PCA0KSArIDEwID4+IDBdID0gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoYVtmICsgNDk2ICsgKHMgPDwgNCkgKyA5ID4+IDBdIHwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAwOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGFbZiArIDI1MjggPj4gMF0gfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFbciA+PiAwXSA9IDIzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2YgKyA0OTYgKyAocyA8PCA0KSArIDEyID4+IDJdID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1twID4+IDJdID0gZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gNTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gMjQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhW3IgPj4gMF0gPSBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY1tmICsgNDk2ICsgKHMgPDwgNCkgKyAxMiA+PiAyXSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW3AgPj4gMl0gPSBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBiOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgY2FzZSA1OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhW2YgKyA0OTYgKyAocyA8PCA0KSArIDEwID4+IDBdID0gNTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbZiArIDQ5NiArIChzIDw8IDQpICsgMTIgPj4gMl0gPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY1twID4+IDJdID0gZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGNhc2UgMTc6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBhW2YgKyA0OTYgKyAocyA8PCA0KSArIDEwID4+IDBdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoIDw8IDI0ID4+IDI0ICE9IDEwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcSA9IDM1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhW3IgPj4gMF0gPSAxMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHQgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHQgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYVtmICsgNDk2ICsgKHMgPDwgNCkgKyAxMCA+PiAwXSA9IG07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHEgPSAzNTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGI7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpID0gaCAmIDE7CiAgICAgICAgICAgICAgICAgICAgaCA9IGkgJiAyNTU7CiAgICAgICAgICAgICAgICAgICAgaWYgKChtICsgLTggJiAyNTUpID49IDMpCiAgICAgICAgICAgICAgICAgICAgICAgIGFbciA+PiAwXSA9IGg7CiAgICAgICAgICAgICAgICAgICAgYVtmICsgNDk2ICsgKHMgPDwgNCkgKyAxMCA+PiAwXSA9IGg7CiAgICAgICAgICAgICAgICAgICAgYVtmICsgNDk2ICsgKHMgPDwgNCkgKyA5ID4+IDBdID0gaDsKICAgICAgICAgICAgICAgICAgICBjW2YgKyA0OTYgKyAocyA8PCA0KSArIDEyID4+IDJdID0gaTsKICAgICAgICAgICAgICAgICAgICBjW3AgPj4gMl0gPSBnOwogICAgICAgICAgICAgICAgICAgIHEgPSAzNTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgd2hpbGUgKDApOwogICAgICAgIGM6CiAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICBpZiAoKHEgfCAwKSA9PSAzNSkgewogICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaCA8PCAyNCA+PiAyNCkgewogICAgICAgICAgICAgICAgICAgIGNhc2UgMDoKICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgY2FzZSAxMzoKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYzsKICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgICAgICAgICAgICBoID0gMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGggfCAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB3aGlsZSAoMCk7CiAgICAgICAgaiA9IDEgPDwgKGggPDwgMjQgPj4gMjQgIT0gMCAmIDEpOwogICAgICAgIGsgPSBmICsgNDk2ICsgKHMgPDwgNCkgKyA2IHwgMDsKICAgICAgICBsID0gZiArIDQ4NCB8IDA7CiAgICAgICAgaCA9IGVbZiArIDQ5NiArIChzIDw8IDQpICsgNCA+PiAxXSB8IDA7CiAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgaWYgKGggPj4+IDAgPj0gKGVbayA+PiAxXSB8IDApID4+PiAwKSB7CiAgICAgICAgICAgICAgICBoID0gMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGkgPSBjW2wgPj4gMl0gfCAwOwogICAgICAgICAgICBpZiAoKGNbaSArIChoICogMjQgfCAwKSA+PiAyXSB8IDApIDwgKGcgfCAwKSkgewogICAgICAgICAgICAgICAgdCA9IGkgKyAoaCAqIDI0IHwgMCkgKyAxMiB8IDA7CiAgICAgICAgICAgICAgICBiW3QgPj4gMV0gPSBqIHwgZVt0ID4+IDFdOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGggPSBoICsgMSB8IDA7CiAgICAgICAgfQogICAgICAgIHJldHVybiBoIHwgMDsKICAgIH0KICAgIGZ1bmN0aW9uIHZhKGUsIGYsIGcsIGgpIHsKICAgICAgICBlID0gZSB8IDA7CiAgICAgICAgZiA9IGYgfCAwOwogICAgICAgIGcgPSBnIHwgMDsKICAgICAgICBoID0gaCB8IDA7CiAgICAgICAgdmFyIGkgPSAwOwogICAgICAgIGkgPSBjW2UgKyA0OTIgPj4gMl0gfCAwOwogICAgICAgIGlmICgxIDw8IChkWyhjWyhjW2UgPj4gMl0gfCAwKSArIDcyID4+IDJdIHwgMCkgKyBmID4+IDBdIHwgMCkgJiA3ODY0MzIwIHwgMCkKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIGJbZSArIDQ5NiArIChpIDw8IDQpICsgNiA+PiAxXSA9IGJbZSArIDQ5NiArIChpIDw8IDQpICsgNCA+PiAxXSB8IDA7CiAgICAgICAgYVtlICsgNDk2ICsgKGkgPDwgNCkgKyA4ID4+IDBdID0gaDsKICAgICAgICBoID0gKChoICYgMTI3KSA+IChnICYgMTI3KSA/IGggOiBnKSAmIDE7CiAgICAgICAgYVtlICsgNDk2ICsgKGkgPDwgNCkgKyAxMCA+PiAwXSA9IGg7CiAgICAgICAgYVtlICsgNDk2ICsgKGkgPDwgNCkgKyA5ID4+IDBdID0gaDsKICAgICAgICBjW2UgKyA0OTYgKyAoaSA8PCA0KSArIDEyID4+IDJdID0gaCAmIDI1NTsKICAgICAgICBjW2UgKyA0OTYgKyAoaSA8PCA0KSA+PiAyXSA9IGY7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgZnVuY3Rpb24gd2EoZCwgZSkgewogICAgICAgIGQgPSBkIHwgMDsKICAgICAgICBlID0gZSB8IDA7CiAgICAgICAgdmFyIGYgPSAwLCBnID0gMCwgaCA9IDA7CiAgICAgICAgZyA9IGQgKyA0OTIgfCAwOwogICAgICAgIGggPSBjW2cgPj4gMl0gfCAwOwogICAgICAgIGYgPSBkICsgNDk2ICsgKGggPDwgNCkgfCAwOwogICAgICAgIGFbZCArIDQ5NiArIChoIDw8IDQpICsgMTAgPj4gMF0gPSAxMDsKICAgICAgICBkID0gYltkICsgNDk2ICsgKGggPDwgNCkgKyA2ID4+IDFdIHwgMDsKICAgICAgICBjW2cgPj4gMl0gPSBoICsgMTsKICAgICAgICBiW2YgKyAyMiA+PiAxXSA9IGQ7CiAgICAgICAgYltmICsgMjAgPj4gMV0gPSBkOwogICAgICAgIGFbZiArIDI0ID4+IDBdID0gZTsKICAgICAgICBlID0gZSAmIDE7CiAgICAgICAgYVtmICsgMjYgPj4gMF0gPSBlOwogICAgICAgIGFbZiArIDI1ID4+IDBdID0gZTsKICAgICAgICBjW2YgKyAyOCA+PiAyXSA9IGUgJiAyNTU7CiAgICAgICAgY1tmICsgMTYgPj4gMl0gPSAwOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGZ1bmN0aW9uIHhhKGIpIHsKICAgICAgICBiID0gYiB8IDA7CiAgICAgICAgdmFyIGQgPSAwLCBlID0gMDsKICAgICAgICBlID0gYiArIDQ5MiB8IDA7CiAgICAgICAgZCA9IChjW2UgPj4gMl0gfCAwKSArIC0xIHwgMDsKICAgICAgICBjW2UgPj4gMl0gPSBkOwogICAgICAgIGFbYiArIDQ5NiArIChkIDw8IDQpICsgMTAgPj4gMF0gPSAxMDsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBmdW5jdGlvbiB5YShkLCBmLCBnKSB7CiAgICAgICAgZCA9IGQgfCAwOwogICAgICAgIGYgPSBmIHwgMDsKICAgICAgICBnID0gZyB8IDA7CiAgICAgICAgdmFyIGggPSAwLCBpID0gMCwgaiA9IDAsIGsgPSAwLCBsID0gMCwgbSA9IDAsIG4gPSAwLCBvID0gMCwgcCA9IDAsIHEgPSAwOwogICAgICAgIG8gPSBjW2QgKyA0OTIgPj4gMl0gfCAwOwogICAgICAgIHEgPSBkICsgNDg0IHwgMDsKICAgICAgICBtID0gY1txID4+IDJdIHwgMDsKICAgICAgICBqID0gYVtkICsgNDk2ICsgKG8gPDwgNCkgKyA4ID4+IDBdICYgMTsKICAgICAgICBoID0gaiAmIDI1NTsKICAgICAgICBpID0gYlttICsgKGYgKiAyNCB8IDApICsgMTIgPj4gMV0gfCAwOwogICAgICAgIGlmICghKGogPDwgMjQgPj4gMjQpKQogICAgICAgICAgICBpZiAoIShpICYgMSkpCiAgICAgICAgICAgICAgICBsID0gNDsKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBwID0gMDsKICAgICAgICAgICAgICAgIGsgPSAwOwogICAgICAgICAgICB9CiAgICAgICAgZWxzZSBpZiAoIShpICYgMikpCiAgICAgICAgICAgIGwgPSA0OwogICAgICAgIGVsc2UgewogICAgICAgICAgICBwID0gMTsKICAgICAgICAgICAgayA9IDA7CiAgICAgICAgfQogICAgICAgIGRvCiAgICAgICAgICAgIGlmICgobCB8IDApID09IDQpIHsKICAgICAgICAgICAgICAgIGlmIChpICYgMykgewogICAgICAgICAgICAgICAgICAgIHAgPSBjW20gKyAoZiAqIDI0IHwgMCkgKyAxNiA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgcCA9IChwIHwgMCkgPT0gKGggfCAwKSA/IGogOiBwICYgMjU1OwogICAgICAgICAgICAgICAgICAgIGsgPSAoZVtkICsgNDk2ICsgKG8gPDwgNCkgKyA0ID4+IDFdIHwgMCB8IDApICE9IChmIHwgMCk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBiW2QgKyA0OTYgKyAobyA8PCA0KSArIDYgPj4gMV0gPSBmOwogICAgICAgICAgICAgICAgcSA9IDEwOwogICAgICAgICAgICAgICAgcmV0dXJuIHEgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgd2hpbGUgKDApOwogICAgICAgIG4gPSBtICsgKGYgKiAyNCB8IDApIHwgMDsKICAgICAgICBhWyhjWyhjW2QgPj4gMl0gfCAwKSArIDcyID4+IDJdIHwgMCkgKyAoY1tuID4+IDJdIHwgMCkgPj4gMF0gPSBwOwogICAgICAgIGFbKGNbKGNbZCA+PiAyXSB8IDApICsgNzIgPj4gMl0gfCAwKSArIGcgPj4gMF0gPSBwOwogICAgICAgIEFhKGQsIGYsIGNbbiA+PiAyXSB8IDAsIHApOwogICAgICAgIGlmICghaykgewogICAgICAgICAgICBpID0gZCArIDQ5NiArIChvIDw8IDQpICsgNiB8IDA7CiAgICAgICAgICAgIGggPSBiW2QgKyA0OTYgKyAobyA8PCA0KSArIDQgPj4gMV0gfCAwOwogICAgICAgICAgICBqID0gZiAmIDY1NTM1OwogICAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICAgICAgYltpID4+IDFdID0gajsKICAgICAgICAgICAgICAgIGlmICgoaiAmIDY1NTM1KSA8PSAoaCAmIDY1NTM1KSkgewogICAgICAgICAgICAgICAgICAgIGggPSBwOwogICAgICAgICAgICAgICAgICAgIGwgPSAyMTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgoY1soY1txID4+IDJdIHwgMCkgKyAoKChqICYgNjU1MzUpICsgLTEgfCAwKSAqIDI0IHwgMCkgPj4gMl0gfCAwKSA9PSAoY1tuID4+IDJdIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgaiA9IGogKyAtMSA8PCAxNiA+PiAxNjsKICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIGggPSBwOwogICAgICAgICAgICAgICAgICAgIGwgPSAyMTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoKGwgfCAwKSA9PSAyMSkKICAgICAgICAgICAgICAgIHJldHVybiBoIHwgMDsKICAgICAgICB9CiAgICAgICAgY1ttICsgKGYgKiAyNCB8IDApICsgNCA+PiAyXSA9IDAgLSBnOwogICAgICAgIGogPSBkICsgNDk2ICsgKG8gPDwgNCkgKyA0IHwgMDsKICAgICAgICBoID0gZjsKICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICBpID0gaCArIC0xIHwgMDsKICAgICAgICAgICAgaWYgKChoIHwgMCkgPD0gKGVbaiA+PiAxXSB8IDAgfCAwKSkKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBoID0gY1txID4+IDJdIHwgMDsKICAgICAgICAgICAgaWYgKChjW2ggKyAoaSAqIDI0IHwgMCkgPj4gMl0gfCAwKSAhPSAoY1tuID4+IDJdIHwgMCkpCiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgY1toICsgKGkgKiAyNCB8IDApICsgNCA+PiAyXSA9IDA7CiAgICAgICAgICAgIGggPSBpOwogICAgICAgIH0KICAgICAgICBpID0gZCArIDQ5NiArIChvIDw8IDQpICsgNiB8IDA7CiAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgZiA9IGYgKyAxIHwgMDsKICAgICAgICAgICAgaWYgKChmIHwgMCkgPj0gKGVbaSA+PiAxXSB8IDAgfCAwKSkgewogICAgICAgICAgICAgICAgaCA9IHA7CiAgICAgICAgICAgICAgICBsID0gMjE7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICBoID0gY1txID4+IDJdIHwgMDsKICAgICAgICAgICAgaWYgKChjW2ggKyAoZiAqIDI0IHwgMCkgPj4gMl0gfCAwKSA+PSAoZyB8IDApKSB7CiAgICAgICAgICAgICAgICBoID0gcDsKICAgICAgICAgICAgICAgIGwgPSAyMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGggPSBoICsgKGYgKiAyNCB8IDApICsgNCB8IDA7CiAgICAgICAgICAgIGlmICgoY1toID4+IDJdIHwgMCkgPiAwKQogICAgICAgICAgICAgICAgY1toID4+IDJdID0gMDsKICAgICAgICB9CiAgICAgICAgaWYgKChsIHwgMCkgPT0gMjEpCiAgICAgICAgICAgIHJldHVybiBoIHwgMDsKICAgICAgICByZXR1cm4gMDsKICAgIH0KICAgIGZ1bmN0aW9uIHphKGEsIGQsIGYpIHsKICAgICAgICBhID0gYSB8IDA7CiAgICAgICAgZCA9IGQgfCAwOwogICAgICAgIGYgPSBmIHwgMDsKICAgICAgICB2YXIgZyA9IDAsIGggPSAwLCBpID0gMCwgaiA9IDAsIGsgPSAwLCBsID0gMCwgbSA9IDA7CiAgICAgICAgbCA9IGNbYSArIDQ5MiA+PiAyXSB8IDA7CiAgICAgICAgbSA9IGEgKyA0OTYgKyAobCA8PCA0KSArIDYgfCAwOwogICAgICAgIGcgPSBlW20gPj4gMV0gfCAwOwogICAgICAgIGsgPSBhICsgNDg4IHwgMDsKICAgICAgICBpZiAoKGNbayA+PiAyXSB8IDApID4gKGcgfCAwKSkKICAgICAgICAgICAgaCA9IGNbYSArIDQ4NCA+PiAyXSB8IDA7CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGogPSBjW2EgPj4gMl0gfCAwOwogICAgICAgICAgICBpID0gaiArIDUyIHwgMDsKICAgICAgICAgICAgaiA9IGogKyAyOCB8IDA7CiAgICAgICAgICAgIGlmICghKChhYShpLCBqLCAxLCBnICogNDggfCAwKSB8IDApIDw8IDI0ID4+IDI0KSkgewogICAgICAgICAgICAgICAgbSA9IDA7CiAgICAgICAgICAgICAgICByZXR1cm4gbSB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZyA9IGEgKyA0ODQgfCAwOwogICAgICAgICAgICBoID0gY1tnID4+IDJdIHwgMDsKICAgICAgICAgICAgaWYgKChoIHwgMCkgPT0gKGEgKyA0IHwgMCkpCiAgICAgICAgICAgICAgICBlYyhjW2kgPj4gMl0gfCAwLCBoIHwgMCwgNDgwKSB8IDA7CiAgICAgICAgICAgIGggPSBjW2kgPj4gMl0gfCAwOwogICAgICAgICAgICBjW2cgPj4gMl0gPSBoOwogICAgICAgICAgICBjW2sgPj4gMl0gPSAoKGNbaiA+PiAyXSB8IDApID4+PiAwKSAvIDI0IHwgMDsKICAgICAgICAgICAgZyA9IGVbbSA+PiAxXSB8IDA7CiAgICAgICAgfQogICAgICAgIGNbaCArIChnICogMjQgfCAwKSA+PiAyXSA9IGY7CiAgICAgICAgY1toICsgKGcgKiAyNCB8IDApICsgNCA+PiAyXSA9IGQgJiA2NTUzNTsKICAgICAgICBjW2ggKyAoZyAqIDI0IHwgMCkgKyAxNiA+PiAyXSA9IGNbYSArIDQ5NiArIChsIDw8IDQpICsgMTIgPj4gMl07CiAgICAgICAgY1toICsgKGcgKiAyNCB8IDApICsgOCA+PiAyXSA9IGNbYSArIDQ5NiArIChsIDw8IDQpID4+IDJdOwogICAgICAgIGJbaCArIChnICogMjQgfCAwKSArIDEyID4+IDFdID0gMDsKICAgICAgICBiW20gPj4gMV0gPSAoYlttID4+IDFdIHwgMCkgKyAxIDw8IDE2ID4+IDE2OwogICAgICAgIG0gPSAxOwogICAgICAgIHJldHVybiBtIHwgMDsKICAgIH0KICAgIGZ1bmN0aW9uIEFhKGIsIGQsIGYsIGcpIHsKICAgICAgICBiID0gYiB8IDA7CiAgICAgICAgZCA9IGQgfCAwOwogICAgICAgIGYgPSBmIHwgMDsKICAgICAgICBnID0gZyB8IDA7CiAgICAgICAgdmFyIGggPSAwLCBpID0gMCwgaiA9IDAsIGsgPSAwLCBsID0gMCwgbSA9IDAsIG4gPSAwOwogICAgICAgIG0gPSBjWyhjW2IgPj4gMl0gfCAwKSArIDcyID4+IDJdIHwgMDsKICAgICAgICBoID0gZCArIDEgfCAwOwogICAgICAgIGkgPSBnICYgMjU1OwogICAgICAgIGogPSBiICsgNDk2ICsgKGNbYiArIDQ5MiA+PiAyXSA8PCA0KSArIDYgfCAwOwogICAgICAgIGQgPSAoY1tiICsgNDg0ID4+IDJdIHwgMCkgKyAoaCAqIDI0IHwgMCkgfCAwOwogICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgIGlmICgoaCB8IDApID49IChlW2ogPj4gMV0gfCAwIHwgMCkpIHsKICAgICAgICAgICAgICAgIGQgPSA5OwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgayA9IGQgKyA0IHwgMDsKICAgICAgICAgICAgaWYgKChjW2sgPj4gMl0gfCAwKSA8PSAtMSkgewogICAgICAgICAgICAgICAgaWYgKChjW2QgKyA4ID4+IDJdIHwgMCkgPiAoZiB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgZCA9IDk7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBsID0gY1tkID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgIGlmICgobCB8IDApID4gKGYgfCAwKSkgewogICAgICAgICAgICAgICAgICAgIGlmICgoY1tkICsgMTYgPj4gMl0gfCAwKSA9PSAoaSB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSA5OwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYVttICsgbCA+PiAwXSA9IGc7CiAgICAgICAgICAgICAgICAgICAgbiA9IDAgLSAoY1trID4+IDJdIHwgMCkgfCAwOwogICAgICAgICAgICAgICAgICAgIGFbbSArIG4gPj4gMF0gPSBnOwogICAgICAgICAgICAgICAgICAgIGNbayA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgQWEoYiwgaCwgbCwgZyk7CiAgICAgICAgICAgICAgICAgICAgQWEoYiwgaCwgbiwgZyk7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZCA9IGQgKyAyNCB8IDA7CiAgICAgICAgICAgIGggPSBoICsgMSB8IDA7CiAgICAgICAgfQogICAgICAgIGlmICgoZCB8IDApID09IDkpCiAgICAgICAgICAgIHJldHVybjsKICAgIH0KICAgIGZ1bmN0aW9uIEJhKGEpIHsKICAgICAgICBhID0gYSB8IDA7CiAgICAgICAgdmFyIGIgPSAwLCBkID0gMCwgZiA9IDAsIGcgPSAwLCBoID0gMCwgaSA9IDAsIGogPSAwLCBrID0gMDsKICAgICAgICBoID0gY1thICsgOTYgPj4gMl0gfCAwOwogICAgICAgIGkgPSBjW2EgKyAxMDAgPj4gMl0gfCAwOwogICAgICAgIGcgPSAwOwogICAgICAgIGIgPSAxMDsKICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICBpZiAoKGcgfCAwKSA+PSAoaSB8IDApKQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGYgPSBnICsgMSB8IDA7CiAgICAgICAgICAgIGQgPSBlW2ggKyAoZyA8PCAxKSA+PiAxXSB8IDA7CiAgICAgICAgICAgIGlmICgoZiB8IDApID09IChpIHwgMCkgfCAoZCAmIDY0NTEyIHwgMCkgIT0gNTUyOTYpCiAgICAgICAgICAgICAgICBnID0gZjsKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBrID0gZVtoICsgKGYgPDwgMSkgPj4gMV0gfCAwOwogICAgICAgICAgICAgICAgaiA9IChrICYgNjQ1MTIgfCAwKSA9PSA1NjMyMDsKICAgICAgICAgICAgICAgIGQgPSBqID8gKGQgPDwgMTApICsgLTU2NjEzODg4ICsgayB8IDAgOiBkOwogICAgICAgICAgICAgICAgZyA9IGogPyBnICsgMiB8IDAgOiBmOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGQgPSBwYShhLCBkKSB8IDA7CiAgICAgICAgICAgIGYgPSBkICYgMjU1OwogICAgICAgICAgICBhOgogICAgICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgICAgICBpZiAoYiA8PCAyNCA+PiAyNCA9PSAxMCkgewogICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGYgPDwgMjQgPj4gMjQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxMzoKICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOgogICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDA6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSAxMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBmOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgICBiID0gKGQgJiAyNTUgfCAwKSA9PSA3ID8gMTAgOiBiOwogICAgICAgICAgICAgICAgd2hpbGUgKDApOwogICAgICAgIH0KICAgICAgICByZXR1cm4gYiB8IDA7CiAgICB9CiAgICBmdW5jdGlvbiBDYShhKSB7CiAgICAgICAgYSA9IGEgfCAwOwogICAgICAgIHZhciBiID0gMCwgZCA9IDAsIGUgPSAwOwogICAgICAgIGQgPSBjW2EgKyAxMzIgPj4gMl0gfCAwOwogICAgICAgIGUgPSBhICsgMTM2IHwgMDsKICAgICAgICBiID0gY1tlID4+IDJdIHwgMDsKICAgICAgICBpZiAoKGIgfCAwKSAhPSAoYSArIDE0MCB8IDApKSB7CiAgICAgICAgICAgIGIgPSBhICsgNTYgfCAwOwogICAgICAgICAgICBpZiAoISgoYWEoYiwgYSArIDMyIHwgMCwgMSwgZCA8PCA0KSB8IDApIDw8IDI0ID4+IDI0KSkgewogICAgICAgICAgICAgICAgZSA9IDA7CiAgICAgICAgICAgICAgICByZXR1cm4gZSB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY1tlID4+IDJdID0gY1tiID4+IDJdOwogICAgICAgICAgICBlID0gMTsKICAgICAgICAgICAgcmV0dXJuIGUgfCAwOwogICAgICAgIH0KICAgICAgICBpZiAoKGQgfCAwKSA8IDExKSB7CiAgICAgICAgICAgIGUgPSAxOwogICAgICAgICAgICByZXR1cm4gZSB8IDA7CiAgICAgICAgfQogICAgICAgIGQgPSBhICsgNTYgfCAwOwogICAgICAgIGlmICghKChhYShkLCBhICsgMzIgfCAwLCAxLCAxNjApIHwgMCkgPDwgMjQgPj4gMjQpKSB7CiAgICAgICAgICAgIGUgPSAwOwogICAgICAgICAgICByZXR1cm4gZSB8IDA7CiAgICAgICAgfQogICAgICAgIGEgPSBjW2QgPj4gMl0gfCAwOwogICAgICAgIGNbZSA+PiAyXSA9IGE7CiAgICAgICAgZCA9IGEgKyA4MCB8IDA7CiAgICAgICAgZG8gewogICAgICAgICAgICBjW2EgPj4gMl0gPSBjW2IgPj4gMl07CiAgICAgICAgICAgIGEgPSBhICsgNCB8IDA7CiAgICAgICAgICAgIGIgPSBiICsgNCB8IDA7CiAgICAgICAgfSB3aGlsZSAoKGEgfCAwKSA8IChkIHwgMCkpOwogICAgICAgIGUgPSAxOwogICAgICAgIHJldHVybiBlIHwgMDsKICAgIH0KICAgIGZ1bmN0aW9uIERhKGEpIHsKICAgICAgICBhID0gYSB8IDA7CiAgICAgICAgdmFyIGIgPSAwOwogICAgICAgIGRvCiAgICAgICAgICAgIGlmICghYSkKICAgICAgICAgICAgICAgIGEgPSAwOwogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGIgPSBjW2EgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgaWYgKChiIHwgMCkgIT0gKGEgfCAwKSkgewogICAgICAgICAgICAgICAgICAgIGlmICghYikgewogICAgICAgICAgICAgICAgICAgICAgICBhID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICgoY1tiID4+IDJdIHwgMCkgIT0gKGIgfCAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICBhID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYSA9IGNbYSArIDEyID4+IDJdIHwgMDsKICAgICAgICAgICAgfQogICAgICAgIHdoaWxlICgwKTsKICAgICAgICByZXR1cm4gYSB8IDA7CiAgICB9CiAgICBmdW5jdGlvbiBFYShhKSB7CiAgICAgICAgYSA9IGEgfCAwOwogICAgICAgIHZhciBiID0gMDsKICAgICAgICBkbwogICAgICAgICAgICBpZiAoIWEpCiAgICAgICAgICAgICAgICBhID0gMDsKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBiID0gY1thID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgIGlmICgoYiB8IDApICE9IChhIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIWIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoKGNbYiA+PiAyXSB8IDApICE9IChiIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGEgPSBjW2EgKyAxMzIgPj4gMl0gfCAwOwogICAgICAgICAgICB9CiAgICAgICAgd2hpbGUgKDApOwogICAgICAgIHJldHVybiBhIHwgMDsKICAgIH0KICAgIGZ1bmN0aW9uIEZhKGEsIGIsIGQsIGUpIHsKICAgICAgICBhID0gYSB8IDA7CiAgICAgICAgYiA9IGIgfCAwOwogICAgICAgIGQgPSBkIHwgMDsKICAgICAgICBlID0gZSB8IDA7CiAgICAgICAgdmFyIGYgPSAwOwogICAgICAgIGlmICghZSkKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIGlmICgoJChjW2UgPj4gMl0gfCAwKSB8IDApIDw8IDI0ID4+IDI0KQogICAgICAgICAgICByZXR1cm47CiAgICAgICAgZG8KICAgICAgICAgICAgaWYgKGEgfCAwKSB7CiAgICAgICAgICAgICAgICBmID0gY1thID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgIGlmICgoZiB8IDApICE9IChhIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIWYpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGlmICgoY1tmID4+IDJdIHwgMCkgIT0gKGYgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoKGIgfCAwKSA+PSAwID8gKGNbYSArIDEzMiA+PiAyXSB8IDApID4gKGIgfCAwKSA6IDApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIWQpCiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgICAgICBjW2QgPj4gMl0gPSBjWyhjW2YgKyAxMzYgPj4gMl0gfCAwKSArIChiIDw8IDMpID4+IDJdOwogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGNbZSA+PiAyXSA9IDE7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB3aGlsZSAoMCk7CiAgICAgICAgY1tlID4+IDJdID0gMjc7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgZnVuY3Rpb24gR2EoYSwgYiwgZCkgewogICAgICAgIGEgPSBhIHwgMDsKICAgICAgICBiID0gYiB8IDA7CiAgICAgICAgZCA9IGQgfCAwOwogICAgICAgIHZhciBlID0gMCwgZiA9IDA7CiAgICAgICAgaWYgKCFkKSB7CiAgICAgICAgICAgIGYgPSAtMTsKICAgICAgICAgICAgcmV0dXJuIGYgfCAwOwogICAgICAgIH0KICAgICAgICBpZiAoKCQoY1tkID4+IDJdIHwgMCkgfCAwKSA8PCAyNCA+PiAyNCkgewogICAgICAgICAgICBmID0gLTE7CiAgICAgICAgICAgIHJldHVybiBmIHwgMDsKICAgICAgICB9CiAgICAgICAgZG8KICAgICAgICAgICAgaWYgKGEgfCAwKSB7CiAgICAgICAgICAgICAgICBmID0gY1thID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgIGlmICgoZiB8IDApICE9IChhIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIWYpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGlmICgoY1tmID4+IDJdIHwgMCkgIT0gKGYgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoKGIgfCAwKSA+PSAwID8gKGNbZiArIDEyID4+IDJdIHwgMCkgPiAoYiB8IDApIDogMCkgewogICAgICAgICAgICAgICAgICAgIGUgPSBjW2YgKyAxMzYgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgIGEgPSAwOwogICAgICAgICAgICAgICAgICAgIHdoaWxlICgxKQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGNbZSArIChhIDw8IDMpID4+IDJdIHwgMCkgPiAoYiB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBhICsgMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgRmEoZiwgYSwgMCwgZCk7CiAgICAgICAgICAgICAgICAgICAgZiA9IGE7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGYgfCAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY1tkID4+IDJdID0gMTsKICAgICAgICAgICAgICAgIGYgPSAtMTsKICAgICAgICAgICAgICAgIHJldHVybiBmIHwgMDsKICAgICAgICAgICAgfQogICAgICAgIHdoaWxlICgwKTsKICAgICAgICBjW2QgPj4gMl0gPSAyNzsKICAgICAgICBmID0gLTE7CiAgICAgICAgcmV0dXJuIGYgfCAwOwogICAgfQogICAgZnVuY3Rpb24gSGEoYSwgYiwgZCwgZSwgZikgewogICAgICAgIGEgPSBhIHwgMDsKICAgICAgICBiID0gYiB8IDA7CiAgICAgICAgZCA9IGQgfCAwOwogICAgICAgIGUgPSBlIHwgMDsKICAgICAgICBmID0gZiB8IDA7CiAgICAgICAgdmFyIGcgPSAwOwogICAgICAgIGlmICghZikgewogICAgICAgICAgICBmID0gMDsKICAgICAgICAgICAgcmV0dXJuIGYgfCAwOwogICAgICAgIH0KICAgICAgICBpZiAoKElhKGNbZiA+PiAyXSB8IDApIHwgMCkgPDwgMjQgPj4gMjQpIHsKICAgICAgICAgICAgZiA9IDA7CiAgICAgICAgICAgIHJldHVybiBmIHwgMDsKICAgICAgICB9CiAgICAgICAgaWYgKCEoKGEgfCAwKSA9PSAwIHwgKGIgfCAwKSA8IC0xIHwgKGUgfCAwKSA8IDApID8gKGcgPSAoZCB8IDApID09IDAsICEoZyAmIChlIHwgMCkgPiAwKSkgOiAwKSB7CiAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICBpZiAoIWcpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIShhID4+PiAwID49IGQgPj4+IDAgJiAoZCArIChlIDw8IDEpIHwgMCkgPj4+IDAgPiBhID4+PiAwKSA/ICEoZCA+Pj4gMCA+PSBhID4+PiAwICYgKGEgKyAoYiA8PCAxKSB8IDApID4+PiAwID4gZCA+Pj4gMCkgOiAwKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjW2YgPj4gMl0gPSAxOwogICAgICAgICAgICAgICAgICAgIGYgPSAwOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBmIHwgMDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgd2hpbGUgKDApOwogICAgICAgICAgICBpZiAoKGIgfCAwKSA9PSAtMSkKICAgICAgICAgICAgICAgIGIgPSBvYihhKSB8IDA7CiAgICAgICAgICAgIGlmICgoYiB8IDApID4gMCkKICAgICAgICAgICAgICAgIGIgPSBKYShhLCBiLCBkLCBlLCAxMCwgZikgfCAwOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBiID0gMDsKICAgICAgICAgICAgZiA9IHFiKGQsIGUsIGIsIGYpIHwgMDsKICAgICAgICAgICAgcmV0dXJuIGYgfCAwOwogICAgICAgIH0KICAgICAgICBjW2YgPj4gMl0gPSAxOwogICAgICAgIGYgPSAwOwogICAgICAgIHJldHVybiBmIHwgMDsKICAgIH0KICAgIGZ1bmN0aW9uIElhKGEpIHsKICAgICAgICBhID0gYSB8IDA7CiAgICAgICAgcmV0dXJuIChhIHwgMCkgPiAwIHwgMDsKICAgIH0KICAgIGZ1bmN0aW9uIEphKGEsIGQsIGYsIGcsIGgsIGkpIHsKICAgICAgICBhID0gYSB8IDA7CiAgICAgICAgZCA9IGQgfCAwOwogICAgICAgIGYgPSBmIHwgMDsKICAgICAgICBnID0gZyB8IDA7CiAgICAgICAgaCA9IGggfCAwOwogICAgICAgIGkgPSBpIHwgMDsKICAgICAgICB2YXIgaiA9IDAsIGsgPSAwLCBsID0gMCwgbSA9IDAsIG4gPSAwLCBvID0gMCwgcCA9IDA7CiAgICAgICAgbCA9IGggJiA2NTUzNTsKICAgICAgICBzd2l0Y2ggKGwgJiAxMSkgewogICAgICAgIGNhc2UgMDogewogICAgICAgICAgICAgICAgaWYgKChnIHwgMCkgPCAoZCB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgY1tpID4+IDJdID0gMTU7CiAgICAgICAgICAgICAgICAgICAgbyA9IGQ7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG8gfCAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgayA9IGQ7CiAgICAgICAgICAgICAgICBoID0gZjsKICAgICAgICAgICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgICAgICAgICAgaiA9IGsgKyAtMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgZiA9IGsgKyAtMiB8IDA7CiAgICAgICAgICAgICAgICAgICAgaWYgKChrIHwgMCkgPiAxID8gKGJbYSArIChqIDw8IDEpID4+IDFdICYgLTEwMjQpIDw8IDE2ID4+IDE2ID09IC05MjE2IDogMCkKICAgICAgICAgICAgICAgICAgICAgICAgaiA9IChiW2EgKyAoZiA8PCAxKSA+PiAxXSAmIC0xMDI0KSA8PCAxNiA+PiAxNiA9PSAtMTAyNDAgPyBmIDogajsKICAgICAgICAgICAgICAgICAgICBmID0gajsKICAgICAgICAgICAgICAgICAgICBkbyB7CiAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBmOwogICAgICAgICAgICAgICAgICAgICAgICBmID0gZiArIDEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBvID0gaDsKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGggKyAyIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgYltvID4+IDFdID0gYlthICsgKG4gPDwgMSkgPj4gMV0gfCAwOwogICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKChmIHwgMCkgPCAoayB8IDApKTsKICAgICAgICAgICAgICAgICAgICBpZiAoKGogfCAwKSA+IDApCiAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBqOwogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBoID0gZDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGggfCAwOwogICAgICAgICAgICB9CiAgICAgICAgY2FzZSAxOiB7CiAgICAgICAgICAgICAgICBpZiAoKGcgfCAwKSA8IChkIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICBjW2kgPj4gMl0gPSAxNTsKICAgICAgICAgICAgICAgICAgICBvID0gZDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbyB8IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpID0gZDsKICAgICAgICAgICAgICAgIGcgPSBmOwogICAgICAgICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgICAgICAgICBmID0gaTsKICAgICAgICAgICAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICAgICAgICAgICAgICBqID0gZiArIC0xIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGVbYSArIChqIDw8IDEpID4+IDFdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChmIHwgMCkgPiAxICYgKGggJiA2NDUxMiB8IDApID09IDU2MzIwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gZiArIC0yIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBlW2EgKyAoZiA8PCAxKSA+PiAxXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gKG4gJiA2NDUxMiB8IDApID09IDU1Mjk2OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IG8gPyBoICsgLTU2NjEzODg4ICsgKG4gPDwgMTApIHwgMCA6IGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gbyA/IGYgOiBqOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBqOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGYgfCAwKSA8PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKDEgPDwgKChzYihoKSB8IDApIDw8IDI0ID4+IDI0KSAmIDQ0OCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaiA9IGY7CiAgICAgICAgICAgICAgICAgICAgaCA9IGc7CiAgICAgICAgICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgICAgICAgICBuID0gajsKICAgICAgICAgICAgICAgICAgICAgICAgaiA9IGogKyAxIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgbyA9IGg7CiAgICAgICAgICAgICAgICAgICAgICAgIGggPSBoICsgMiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGJbbyA+PiAxXSA9IGJbYSArIChuIDw8IDEpID4+IDFdIHwgMDsKICAgICAgICAgICAgICAgICAgICB9IHdoaWxlICgoaiB8IDApIDwgKGkgfCAwKSk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGspIHsKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGY7CiAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBoOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGggPSBkOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICByZXR1cm4gaCB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICBkZWZhdWx0OiB7CiAgICAgICAgICAgICAgICBuID0gKGwgJiA4IHwgMCkgIT0gMDsKICAgICAgICAgICAgICAgIGlmIChuKSB7CiAgICAgICAgICAgICAgICAgICAgaiA9IGE7CiAgICAgICAgICAgICAgICAgICAgayA9IGQ7CiAgICAgICAgICAgICAgICAgICAgaCA9IDA7CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgbSA9IGo7CiAgICAgICAgICAgICAgICAgICAgICAgIGogPSBqICsgMiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIG0gPSBlW20gPj4gMV0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBoID0gaCArICgoKChtICsgLTgyOTQgfCAwKSA+Pj4gMCA8IDQgfCAoKG0gJiA2NTUzMiB8IDApID09IDgyMDQgfCAobSArIC04MjM0IHwgMCkgPj4+IDAgPCA1KSkgXiAxKSAmIDEpIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChrIHwgMCkgPD0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gayArIC0xIHwgMDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYSA9IGogKyAoMCAtIGQgPDwgMSkgfCAwOwogICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgaCA9IGQ7CiAgICAgICAgICAgICAgICBpZiAoKGggfCAwKSA+IChnIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICBjW2kgPj4gMl0gPSAxNTsKICAgICAgICAgICAgICAgICAgICBvID0gaDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gbyB8IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBtID0gKGwgJiAxIHwgMCkgPT0gMDsKICAgICAgICAgICAgICAgIGwgPSAobCAmIDIgfCAwKSA9PSAwOwogICAgICAgICAgICAgICAgaSA9IGQ7CiAgICAgICAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICAgICAgICAgIGsgPSBpICsgLTEgfCAwOwogICAgICAgICAgICAgICAgICAgIGogPSBlW2EgKyAoayA8PCAxKSA+PiAxXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgaWYgKChpIHwgMCkgPiAxICYgKGogJiA2NDUxMiB8IDApID09IDU2MzIwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBpICsgLTIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBwID0gZVthICsgKGQgPDwgMSkgPj4gMV0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBnID0gKHAgJiA2NDUxMiB8IDApID09IDU1Mjk2OwogICAgICAgICAgICAgICAgICAgICAgICBqID0gZyA/IGogKyAtNTY2MTM4ODggKyAocCA8PCAxMCkgfCAwIDogajsKICAgICAgICAgICAgICAgICAgICAgICAgayA9IGcgPyBkIDogazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYToKICAgICAgICAgICAgICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghbSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGsgfCAwKSA8PSAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoMSA8PCAoKHNiKGopIHwgMCkgPDwgMjQgPj4gMjQpICYgNDQ4KSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBrICsgLTEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqID0gZVthICsgKGcgPDwgMSkgPj4gMV0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGsgfCAwKSA+IDEgJiAoaiAmIDY0NTEyIHwgMCkgPT0gNTYzMjApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBrICsgLTIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGVbYSArIChrIDw8IDEpID4+IDFdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSAoZCAmIDY0NTEyIHwgMCkgPT0gNTUyOTY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqID0gcCA/IGogKyAtNTY2MTM4ODggKyAoZCA8PCAxMCkgfCAwIDogajsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBwID8gayA6IGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKG4pIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChqICYgLTQgfCAwKSAhPSA4MjA0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChqIHwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4MjM0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4MjM1OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4MjM2OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4MjM3OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4MjM4OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4Mjk0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4Mjk1OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4Mjk2OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4Mjk3OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gNDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSA0MDsKICAgICAgICAgICAgICAgICAgICBiOgogICAgICAgICAgICAgICAgICAgICAgICBkbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChvIHwgMCkgPT0gNDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAobCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGogPSB5YihqKSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqID4+PiAwIDwgNjU1MzYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJbZiA+PiAxXSA9IGo7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJbZiA+PiAxXSA9IChqID4+PiAxMCkgKyA1NTIzMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJbZiArIDIgPj4gMV0gPSBqICYgMTAyMyB8IDU2MzIwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IGogKyBrIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGYgKyAoaiA8PCAxKSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGogPSBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoaiB8IDApID49IChpIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiW2YgPj4gMV0gPSBiW2EgKyAoaiA8PCAxKSA+PiAxXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGogPSBqICsgMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBmICsgMiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKChrIHwgMCkgPiAwKQogICAgICAgICAgICAgICAgICAgICAgICBpID0gazsKICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGggfCAwOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIHJldHVybiAwOwogICAgfQogICAgZnVuY3Rpb24gS2EoZSwgZiwgZywgaCwgaSkgewogICAgICAgIGUgPSBlIHwgMDsKICAgICAgICBmID0gZiB8IDA7CiAgICAgICAgZyA9IGcgfCAwOwogICAgICAgIGggPSBoIHwgMDsKICAgICAgICBpID0gaSB8IDA7CiAgICAgICAgdmFyIGogPSAwLCBrID0gMCwgbCA9IDAsIG0gPSAwLCBuID0gMCwgbyA9IDAsIHAgPSAwLCBxID0gMCwgciA9IDAsIHMgPSAwLCB0ID0gMCwgdSA9IDAsIHYgPSAwLCB3ID0gMCwgeCA9IDAsIHkgPSAwLCB6ID0gMDsKICAgICAgICB5ID0gRTsKICAgICAgICBFID0gRSArIDE2IHwgMDsKICAgICAgICB3ID0geSArIDQgfCAwOwogICAgICAgIHggPSB5OwogICAgICAgIGlmICghaSkgewogICAgICAgICAgICBpID0gMDsKICAgICAgICAgICAgRSA9IHk7CiAgICAgICAgICAgIHJldHVybiBpIHwgMDsKICAgICAgICB9CiAgICAgICAgaWYgKChJYShjW2kgPj4gMl0gfCAwKSB8IDApIDw8IDI0ID4+IDI0KSB7CiAgICAgICAgICAgIGkgPSAwOwogICAgICAgICAgICBFID0geTsKICAgICAgICAgICAgcmV0dXJuIGkgfCAwOwogICAgICAgIH0KICAgICAgICBpZiAoKChlIHwgMCA/ICh2ID0gY1tlICsgNCA+PiAyXSB8IDAsIHYgfCAwKSA6IDApID8gKGogPSBjW2UgKyAxMiA+PiAyXSB8IDAsIChqIHwgZyB8IDApID49IDApIDogMCkgPyAoayA9IChmIHwgMCkgPT0gMCwgIShrICYgKGcgfCAwKSA+IDApKSA6IDApIHsKICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgIGlmICghaykgewogICAgICAgICAgICAgICAgICAgIGlmICghKHYgPj4+IDAgPj0gZiA+Pj4gMCAmIHYgPj4+IDAgPCAoZiArIChnIDw8IDEpIHwgMCkgPj4+IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2ID4+PiAwID4gZiA+Pj4gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHYgKyAoY1tlICsgOCA+PiAyXSA8PCAxKSB8IDApID4+PiAwIDw9IGYgPj4+IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgY1tpID4+IDJdID0gMTsKICAgICAgICAgICAgICAgICAgICBpID0gMDsKICAgICAgICAgICAgICAgICAgICBFID0geTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSB8IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIHdoaWxlICgwKTsKICAgICAgICAgICAgaWYgKCFqKSB7CiAgICAgICAgICAgICAgICBxYihmLCBnLCAwLCBpKSB8IDA7CiAgICAgICAgICAgICAgICBpID0gMDsKICAgICAgICAgICAgICAgIEUgPSB5OwogICAgICAgICAgICAgICAgcmV0dXJuIGkgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHQgPSBRYShlLCBpKSB8IDA7CiAgICAgICAgICAgIGlmICgoSWEoY1tpID4+IDJdIHwgMCkgfCAwKSA8PCAyNCA+PiAyNCkgewogICAgICAgICAgICAgICAgaSA9IDA7CiAgICAgICAgICAgICAgICBFID0geTsKICAgICAgICAgICAgICAgIHJldHVybiBpIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBrID0gY1tlICsgODggPj4gMl0gfCAwOwogICAgICAgICAgICB1ID0gaCAmIC0xMzsKICAgICAgICAgICAgdSA9IChrICYgMiB8IDApID09IDAgPyAoayAmIDEgfCAwKSA9PSAwID8gaCA6IHUgfCA0IDogdSB8IDg7CiAgICAgICAgICAgIHUgPSAoKGNbZSArIDg0ID4+IDJdIHwgMCkgKyAtMyB8IDApID4+PiAwIDwgNCA/IHUgOiB1ICYgLTU7CiAgICAgICAgICAgIGsgPSB1ICYgNjU1MzU7CiAgICAgICAgICAgIGogPSAoayAmIDQgfCAwKSAhPSAwOwogICAgICAgICAgICBhOgogICAgICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgICAgICBpZiAoIShrICYgMTYpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGsgJiA2NTUzMzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChtIHwgMCkgPj0gKHQgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gKFZhKGUsIG0sIHcsIHgpIHwgMCkgPT0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gdiArIChjW3cgPj4gMl0gPDwgMSkgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBjW3ggPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gTGEoaywgaCwgbCwgaiwgbiwgaSkgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IEphKGssIGgsIGwsIGosIHUsIGkpIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW3ggPj4gMl0gPSBrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSAobCB8IDApID09IDAgPyAwIDogbCArIChrIDw8IDEpIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqID0gaiAtIGsgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSBtICsgMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgcSA9IGNbZSArIDcyID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgciA9IGUgKyAyMjQgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBzID0gZSArIDgwIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGsgJiA2NTUzMzsKICAgICAgICAgICAgICAgICAgICAgICAgaiA9IGc7CiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICBrID0gZjsKICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobyB8IDApID49ICh0IHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHogPSBWYShlLCBvLCB3LCB4KSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gY1t3ID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSB2ICsgKGwgPDwgMSkgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGNbKGNbciA+PiAyXSB8IDApICsgKG8gKiAxMiB8IDApICsgOCA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gKGggfCAwKSA+IDAgPyBoIDogMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSAoYVtzID4+IDBdIHwgMCkgIT0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF6KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChtKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGggfCAoYVtxICsgbCA+PiAwXSB8IDApICE9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSA4MjA3IC0gKGggJiAxKSA8PCAxNiA+PiAxNjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGggJiA1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGogfCAwKSA+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiW2sgPj4gMV0gPSBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBrICsgMiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqID0gaiArIC0xIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gTGEobiwgY1t4ID4+IDJdIHwgMCwgaywgaiwgcCwgaSkgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW3ggPj4gMl0gPSBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gKGsgfCAwKSA9PSAwID8gMCA6IGsgKyAobCA8PCAxKSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGogPSBqIC0gbCB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhW3MgPj4gMF0gfCAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IChhW3EgKyAobCArIC0xICsgKGNbdyA+PiAyXSB8IDApKSA+PiAwXSB8IDApID09IDAgPyBoIDogaCB8IDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGggJiAxMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChqIHwgMCkgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiW2sgPj4gMV0gPSA4MjA3IC0gKGggPj4+IDEgJiAxKSA8PCAxNiA+PiAxNjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBrICsgMiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IGogKyAtMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKG0pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gKDEgPDwgZFtxICsgKGwgKyAtMSArIChjW3ggPj4gMl0gfCAwKSkgPj4gMF0gJiA4MTk0IHwgMCkgPT0gMCA/IGggfCA0IDogaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IDgyMDcgLSAoaCAmIDEpIDw8IDE2ID4+IDE2OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaCAmIDUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoaiB8IDApID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJbayA+PiAxXSA9IGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IGsgKyAyIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGogPSBqICsgLTEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHogPSBKYShuLCBjW3ggPj4gMl0gfCAwLCBrLCBqLCB1LCBpKSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbeCA+PiAyXSA9IHo7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSAoayB8IDApID09IDAgPyAwIDogayArICh6IDw8IDEpIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IGogLSB6IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFbcyA+PiAwXSB8IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gKDEgPDwgZFtxICsgKGNbdyA+PiAyXSB8IDApID4+IDBdICYgODE5NCB8IDApID09IDAgPyBoIHwgOCA6IGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGggJiAxMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChqIHwgMCkgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiW2sgPj4gMV0gPSA4MjA3IC0gKGggPj4+IDEgJiAxKSA8PCAxNiA+PiAxNjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBrICsgMiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IGogKyAtMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbyA9IG8gKyAxIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGsgJiA2NTUzMzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqID0gZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGsgKyAtMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChrIHwgMCkgPD0gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6ID0gKFZhKGUsIGwsIHcsIHgpIHwgMCkgPT0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gdiArIChjW3cgPj4gMl0gPDwgMSkgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBjW3ggPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh6KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gSmEoaywgaCwgbSwgaiwgbiwgaSkgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IExhKGssIGgsIG0sIGosIHUsIGkpIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW3ggPj4gMl0gPSBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSAobSB8IDApID09IDAgPyAwIDogbSArIChoIDw8IDEpIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqID0gaiAtIGggfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBjW2UgKyA3MiA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIG8gPSBrICYgNjU1MzM7CiAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBmOwogICAgICAgICAgICAgICAgICAgICAgICBoID0gdDsKICAgICAgICAgICAgICAgICAgICAgICAgaiA9IGc7CiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gaCArIC0xIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoaCB8IDApIDw9IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHogPSBWYShlLCBuLCB3LCB4KSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gY1t3ID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSB2ICsgKGwgPDwgMSkgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCF6KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGNbeCA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFbcCArIChsICsgLTEgKyBoKSA+PiAwXSB8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChqIHwgMCkgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiW2sgPj4gMV0gPSA4MjA2OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IGsgKyAyIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBjW3ggPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGogPSBqICsgLTEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB6ID0gSmEobSwgaCwgaywgaiwgbywgaSkgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbeCA+PiAyXSA9IHo7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IChrIHwgMCkgPT0gMCA/IDAgOiBrICsgKHogPDwgMSkgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGogPSBqIC0geiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGFbcCArIChjW3cgPj4gMl0gfCAwKSA+PiAwXSB8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChqIHwgMCkgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiW2sgPj4gMV0gPSA4MjA2OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IGsgKyAyIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqID0gaiArIC0xIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKDEgPDwgZFtwICsgbCA+PiAwXSAmIDgxOTQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoaiB8IDApID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYltrID4+IDFdID0gODIwNzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBrICsgMiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IGogKyAtMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHogPSBMYShtLCBjW3ggPj4gMl0gfCAwLCBrLCBqLCB1LCBpKSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1t4ID4+IDJdID0gejsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrID0gKGsgfCAwKSA9PSAwID8gMCA6IGsgKyAoeiA8PCAxKSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IGogLSB6IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoISgxIDw8IGRbcCArICh6ICsgLTEgKyAoY1t3ID4+IDJdIHwgMCkpID4+IDBdICYgODE5NCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChqIHwgMCkgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiW2sgPj4gMV0gPSA4MjA3OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IGsgKyAyIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqID0gaiArIC0xIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gbjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHdoaWxlICgwKTsKICAgICAgICAgICAgeiA9IHFiKGYsIGcsIGcgLSBqIHwgMCwgaSkgfCAwOwogICAgICAgICAgICBFID0geTsKICAgICAgICAgICAgcmV0dXJuIHogfCAwOwogICAgICAgIH0KICAgICAgICBjW2kgPj4gMl0gPSAxOwogICAgICAgIHogPSAwOwogICAgICAgIEUgPSB5OwogICAgICAgIHJldHVybiB6IHwgMDsKICAgIH0KICAgIGZ1bmN0aW9uIExhKGEsIGQsIGYsIGcsIGgsIGkpIHsKICAgICAgICBhID0gYSB8IDA7CiAgICAgICAgZCA9IGQgfCAwOwogICAgICAgIGYgPSBmIHwgMDsKICAgICAgICBnID0gZyB8IDA7CiAgICAgICAgaCA9IGggfCAwOwogICAgICAgIGkgPSBpIHwgMDsKICAgICAgICB2YXIgaiA9IDAsIGsgPSAwLCBsID0gMCwgbSA9IDAsIG4gPSAwOwogICAgICAgIHN3aXRjaCAoaCAmIDEwKSB7CiAgICAgICAgY2FzZSAwOiB7CiAgICAgICAgICAgICAgICBpZiAoKGcgfCAwKSA8IChkIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICBjW2kgPj4gMl0gPSAxNTsKICAgICAgICAgICAgICAgICAgICBnID0gZDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZyB8IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBqID0gZDsKICAgICAgICAgICAgICAgIGggPSBmOwogICAgICAgICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgICAgICAgICBiW2ggPj4gMV0gPSBiW2EgPj4gMV0gfCAwOwogICAgICAgICAgICAgICAgICAgIGlmICgoaiB8IDApID4gMSkgewogICAgICAgICAgICAgICAgICAgICAgICBhID0gYSArIDIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBqID0gaiArIC0xIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGggKyAyIHwgMDsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBoID0gZDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGggfCAwOwogICAgICAgICAgICB9CiAgICAgICAgY2FzZSAyOiB7CiAgICAgICAgICAgICAgICBpZiAoKGcgfCAwKSA8IChkIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICBjW2kgPj4gMl0gPSAxNTsKICAgICAgICAgICAgICAgICAgICBnID0gZDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZyB8IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBsID0gMDsKICAgICAgICAgICAgICAgIGogPSAwOwogICAgICAgICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgICAgICAgICBrID0gaiArIDEgfCAwOwogICAgICAgICAgICAgICAgICAgIGggPSBlW2EgKyAoaiA8PCAxKSA+PiAxXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgaWYgKChrIHwgMCkgPT0gKGQgfCAwKSB8IChoICYgNjQ1MTIgfCAwKSAhPSA1NTI5NikKICAgICAgICAgICAgICAgICAgICAgICAgaiA9IGs7CiAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIG0gPSBlW2EgKyAoayA8PCAxKSA+PiAxXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGcgPSAobSAmIDY0NTEyIHwgMCkgPT0gNTYzMjA7CiAgICAgICAgICAgICAgICAgICAgICAgIGggPSBnID8gKGggPDwgMTApICsgLTU2NjEzODg4ICsgbSB8IDAgOiBoOwogICAgICAgICAgICAgICAgICAgICAgICBqID0gZyA/IGogKyAyIHwgMCA6IGs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGggPSB5YihoKSB8IDA7CiAgICAgICAgICAgICAgICAgICAgaWYgKGggPj4+IDAgPCA2NTUzNikKICAgICAgICAgICAgICAgICAgICAgICAgayA9IGwgKyAxIHwgMDsKICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgYltmICsgKGwgKyAxIDw8IDEpID4+IDFdID0gaCAmIDEwMjMgfCA1NjMyMDsKICAgICAgICAgICAgICAgICAgICAgICAgayA9IGwgKyAyIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IChoID4+PiAxMCkgKyA1NTIzMiB8IDA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGJbZiArIChsIDw8IDEpID4+IDFdID0gaDsKICAgICAgICAgICAgICAgICAgICBpZiAoKGogfCAwKSA8IChkIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBrOwogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBoID0gZDsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgcmV0dXJuIGggfCAwOwogICAgICAgICAgICB9CiAgICAgICAgY2FzZSA4OiB7CiAgICAgICAgICAgICAgICBsID0gZzsKICAgICAgICAgICAgICAgIGggPSBhOwogICAgICAgICAgICAgICAgYSA9IGY7CiAgICAgICAgICAgICAgICBhOgogICAgICAgICAgICAgICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBoOwogICAgICAgICAgICAgICAgICAgICAgICBoID0gaCArIDIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBrID0gYltrID4+IDFdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgYjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChrICYgLTQpIDw8IDE2ID4+IDE2ID09IDgyMDQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGogPSBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGsgPDwgMTYgPj4gMTYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4MjM0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDgyMzU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODIzNjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4MjM3OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDgyMzg6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODI5NDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4Mjk1OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDgyOTY6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODI5NzogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGogPSBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqID0gbCArIC0xIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChsIHwgMCkgPCAxKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYlthID4+IDFdID0gazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGEgKyAyIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZCB8IDApIDw9IDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSAyNjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IGo7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gZCArIC0xIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgobSB8IDApID09IDI2KSB7CiAgICAgICAgICAgICAgICAgICAgZyA9IGcgLSBqIHwgMDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZyB8IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjW2kgPj4gMl0gPSAxNTsKICAgICAgICAgICAgICAgIGEgPSBkOwogICAgICAgICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoKGEgfCAwKSA8PSAxKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBmID0gZVtoID4+IDFdIHwgMDsKICAgICAgICAgICAgICAgICAgICBqID0gaiArICgoKChmICsgLTgyOTQgfCAwKSA+Pj4gMCA8IDQgfCAoKGYgJiA2NTUzMiB8IDApID09IDgyMDQgfCAoZiArIC04MjM0IHwgMCkgPj4+IDAgPCA1KSkgXiAxKSA8PCAzMSA+PiAzMSkgfCAwOwogICAgICAgICAgICAgICAgICAgIGEgPSBhICsgLTEgfCAwOwogICAgICAgICAgICAgICAgICAgIGggPSBoICsgMiB8IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBnID0gZyAtIGogfCAwOwogICAgICAgICAgICAgICAgcmV0dXJuIGcgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgZGVmYXVsdDogewogICAgICAgICAgICAgICAgaCA9IDA7CiAgICAgICAgICAgICAgICBrID0gZzsKICAgICAgICAgICAgICAgIGogPSBkOwogICAgICAgICAgICAgICAgYzoKICAgICAgICAgICAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICAgICAgICAgICAgICBsID0gZVthID4+IDFdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChqIHwgMCkgPT0gMSB8IChsICYgNjQ1MTIgfCAwKSAhPSA1NTI5NikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSAxOwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSBlW2EgKyAyID4+IDFdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSAobiAmIDY0NTEyIHwgMCkgPT0gNTYzMjA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsID0gZCA/IChsIDw8IDEwKSArIC01NjYxMzg4OCArIG4gfCAwIDogbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBkID8gMiA6IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGEgKyAoZCA8PCAxKSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGogPSBqIC0gZCB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobCAmIC00IHwgMCkgIT0gODIwNCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzd2l0Y2ggKGwgfCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODIzNDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4MjM1OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDgyMzY6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODIzNzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4MjM4OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDgyOTQ6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgODI5NToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4Mjk2OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlIDgyOTc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IGsgLSBkIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChrIHwgMCkgPCAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHliKGwpIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgPj4+IDAgPCA2NTUzNikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYltmICsgKGggPDwgMSkgPj4gMV0gPSBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGggKyAxIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYltmICsgKGggPDwgMSkgPj4gMV0gPSAobCA+Pj4gMTApICsgNTUyMzI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiW2YgKyAoaCArIDEgPDwgMSkgPj4gMV0gPSBsICYgMTAyMyB8IDU2MzIwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGggKyAyIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDApOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGogfCAwKSA8PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gNDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmICgobSB8IDApID09IDQwKQogICAgICAgICAgICAgICAgICAgIHJldHVybiBoIHwgMDsKICAgICAgICAgICAgICAgIGNbaSA+PiAyXSA9IDE1OwogICAgICAgICAgICAgICAgaCA9IGE7CiAgICAgICAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICAgICAgICAgIGlmICgoaiB8IDApIDw9IDApCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIG4gPSBlW2ggPj4gMV0gfCAwOwogICAgICAgICAgICAgICAgICAgIGsgPSBrICsgKCgoKG4gKyAtODI5NCB8IDApID4+PiAwIDwgNCB8ICgobiAmIDY1NTMyIHwgMCkgPT0gODIwNCB8IChuICsgLTgyMzQgfCAwKSA+Pj4gMCA8IDUpKSBeIDEpIDw8IDMxID4+IDMxKSB8IDA7CiAgICAgICAgICAgICAgICAgICAgaiA9IGogKyAtMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgaCA9IGggKyAyIHwgMDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIG4gPSBnIC0gayB8IDA7CiAgICAgICAgICAgICAgICByZXR1cm4gbiB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CiAgICBmdW5jdGlvbiBNYShkLCBlLCBmLCBnLCBoKSB7CiAgICAgICAgZCA9IGQgfCAwOwogICAgICAgIGUgPSBlIHwgMDsKICAgICAgICBmID0gZiB8IDA7CiAgICAgICAgZyA9IGcgfCAwOwogICAgICAgIGggPSBoIHwgMDsKICAgICAgICB2YXIgaSA9IDAsIGogPSAwLCBrID0gMCwgbCA9IDAsIG0gPSAwLCBuID0gMCwgbyA9IDAsIHAgPSAwOwogICAgICAgIGlmICghaCkKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIGlmICgoTmEoY1toID4+IDJdIHwgMCkgfCAwKSA8PCAyNCA+PiAyNCkKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIGlmIChkIHwgMCA/IChjW2QgPj4gMl0gfCAwKSA9PSAoZCB8IDApIDogMCkgewogICAgICAgICAgICBpZiAoISgoZSB8IDApID4gLTEgJiAoZiB8IDApID4gKGUgfCAwKSkpIHsKICAgICAgICAgICAgICAgIGNbaCA+PiAyXSA9IDE7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKChmIHwgMCkgPj0gMCA/IChjW2QgKyAxMiA+PiAyXSB8IDApID49IChmIHwgMCkgOiAwKSB7CiAgICAgICAgICAgICAgICBpZiAoIWcpIHsKICAgICAgICAgICAgICAgICAgICBjW2ggPj4gMl0gPSAxOwogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHAgPSBHYShkLCBlLCBoKSB8IDA7CiAgICAgICAgICAgICAgICBpZiAoKHAgfCAwKSAhPSAoR2EoZCwgZiArIC0xIHwgMCwgaCkgfCAwKSkgewogICAgICAgICAgICAgICAgICAgIGNbaCA+PiAyXSA9IDE7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY1tnID4+IDJdID0gMDsKICAgICAgICAgICAgICAgIGwgPSBkICsgNCB8IDA7CiAgICAgICAgICAgICAgICBjW2cgKyA0ID4+IDJdID0gKGNbbCA+PiAyXSB8IDApICsgKGUgPDwgMSk7CiAgICAgICAgICAgICAgICBvID0gZiAtIGUgfCAwOwogICAgICAgICAgICAgICAgY1tnICsgMTIgPj4gMl0gPSBvOwogICAgICAgICAgICAgICAgY1tnICsgOCA+PiAyXSA9IG87CiAgICAgICAgICAgICAgICBtID0gZyArIDE2IHwgMDsKICAgICAgICAgICAgICAgIGNbbSA+PiAyXSA9IG87CiAgICAgICAgICAgICAgICBpZiAoKGFbZCArIDk0ID4+IDBdIHwgMCkgIT0gMCA/IChpID0gY1tkICsgMTM2ID4+IDJdIHwgMCwgKGNbaSA+PiAyXSB8IDApIDw9IChlIHwgMCkpIDogMCkgewogICAgICAgICAgICAgICAgICAgIGggPSBkICsgMTMyIHwgMDsKICAgICAgICAgICAgICAgICAgICBqID0gaDsKICAgICAgICAgICAgICAgICAgICBoID0gZGEoY1toID4+IDJdIHwgMCwgaSwgZSkgfCAwOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBqID0gZCArIDEzMiB8IDA7CiAgICAgICAgICAgICAgICAgICAgaCA9IGFbZCArIDkzID4+IDBdIHwgMDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIHAgPSBnICsgOTMgfCAwOwogICAgICAgICAgICAgICAgYVtwID4+IDBdID0gaDsKICAgICAgICAgICAgICAgIGNbZyArIDEzMiA+PiAyXSA9IGNbaiA+PiAyXTsKICAgICAgICAgICAgICAgIGNbZyArIDIyNCA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICBjW2cgKyAxMjAgPj4gMl0gPSAwOwogICAgICAgICAgICAgICAgY1tnICsgODQgPj4gMl0gPSBjW2QgKyA4NCA+PiAyXTsKICAgICAgICAgICAgICAgIGNbZyArIDg4ID4+IDJdID0gY1tkICsgODggPj4gMl07CiAgICAgICAgICAgICAgICBrID0gZyArIDM0OCB8IDA7CiAgICAgICAgICAgICAgICBjW2sgPj4gMl0gPSAwOwogICAgICAgICAgICAgICAgaWYgKChjW2QgKyAzNDggPj4gMl0gfCAwKSA+IDApIHsKICAgICAgICAgICAgICAgICAgICBqID0gZTsKICAgICAgICAgICAgICAgICAgICBoID0gMDsKICAgICAgICAgICAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGogfCAwKSA+PSAoZiB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBiWyhjW2wgPj4gMl0gfCAwKSArIChqIDw8IDEpID4+IDFdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChpICYgLTQpIDw8IDE2ID4+IDE2ID09IDgyMDQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBuID0gMjQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaSA8PCAxNiA+PiAxNikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4MjM0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4MjM1OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4MjM2OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4MjM3OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4MjM4OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4Mjk0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4Mjk1OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4Mjk2OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4Mjk3OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAyNDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChuIHwgMCkgPT0gMjQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG4gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGggKyAxIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbayA+PiAyXSA9IGg7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaiA9IGogKyAxIHwgMDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgY1ttID4+IDJdID0gbyAtIGg7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjW2cgKyA3MiA+PiAyXSA9IChjW2QgKyA3MiA+PiAyXSB8IDApICsgZTsKICAgICAgICAgICAgICAgIGwgPSAoY1tkICsgNzYgPj4gMl0gfCAwKSArIGUgfCAwOwogICAgICAgICAgICAgICAgY1tnICsgNzYgPj4gMl0gPSBsOwogICAgICAgICAgICAgICAgY1tnICsgMjIwID4+IDJdID0gLTE7CiAgICAgICAgICAgICAgICBoID0gY1tkICsgMTE2ID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgIGE6CiAgICAgICAgICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChoIHwgMCkgIT0gMikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY1tnICsgMTE2ID4+IDJdID0gaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBjW2QgKyAxMjggPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChoIHwgMCkgPD0gKGUgfCAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbZyArIDEyOCA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGggfCAwKSA8IChmIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2cgKyAxMjggPj4gMl0gPSBoIC0gZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1tnICsgMTI4ID4+IDJdID0gbzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9hKGcpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgayA9IGcgKyAxMjggfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IGNbayA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBhW3AgPj4gMF0gJiAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBhW2wgPj4gMF0gJiAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChqIHwgMCkgPCAobyB8IDApID8gKGFbcCA+PiAwXSAmIDEpICE9IGggPDwgMjQgPj4gMjQgOiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChpIHwgMCkgPT0gKGogfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGFbbCArIGkgPj4gMF0gJiAxKSA9PSBoIDw8IDI0ID4+IDI0KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gaSArIDEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY1tnICsgMTE2ID4+IDJdID0gaCAmIDI1NTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoaCAmIDMpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgMDogewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhW3AgPj4gMF0gPSAoYVtwID4+IDBdIHwgMCkgKyAxIDw8IDI0ID4+IDI0ICYgLTI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbayA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAxOiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFbcCA+PiAwXSA9IGFbcCA+PiAwXSB8IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbayA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDApOwogICAgICAgICAgICAgICAgY1tnID4+IDJdID0gZDsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICBjW2ggPj4gMl0gPSAxOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGNbaCA+PiAyXSA9IDI3OwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGZ1bmN0aW9uIE5hKGEpIHsKICAgICAgICBhID0gYSB8IDA7CiAgICAgICAgcmV0dXJuIChhIHwgMCkgPiAwIHwgMDsKICAgIH0KICAgIGZ1bmN0aW9uIE9hKGIpIHsKICAgICAgICBiID0gYiB8IDA7CiAgICAgICAgdmFyIGUgPSAwLCBmID0gMCwgZyA9IDAsIGggPSAwLCBpID0gMDsKICAgICAgICBnID0gY1tiICsgNzIgPj4gMl0gfCAwOwogICAgICAgIGggPSBjW2IgKyA3NiA+PiAyXSB8IDA7CiAgICAgICAgZSA9IGNbYiArIDEyID4+IDJdIHwgMDsKICAgICAgICBpID0gYVtiICsgOTMgPj4gMF0gfCAwOwogICAgICAgIGlmICgoYVtnICsgKGUgKyAtMSkgPj4gMF0gfCAwKSA9PSA3KSB7CiAgICAgICAgICAgIGkgPSBlOwogICAgICAgICAgICBiID0gYiArIDEyOCB8IDA7CiAgICAgICAgICAgIGNbYiA+PiAyXSA9IGk7CiAgICAgICAgICAgIHJldHVybjsKICAgICAgICB9CiAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgaWYgKChlIHwgMCkgPD0gMCkKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBmID0gZSArIC0xIHwgMDsKICAgICAgICAgICAgaWYgKCEoMSA8PCBkW2cgKyBmID4+IDBdICYgODI0ODE5MikpCiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgZSA9IGY7CiAgICAgICAgfQogICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgIGlmICgoZSB8IDApIDw9IDApIHsKICAgICAgICAgICAgICAgIGYgPSA4OwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZiA9IGUgKyAtMSB8IDA7CiAgICAgICAgICAgIGlmICgoYVtoICsgZiA+PiAwXSB8IDApID09IGkgPDwgMjQgPj4gMjQpCiAgICAgICAgICAgICAgICBlID0gZjsKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBmID0gODsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmICgoZiB8IDApID09IDgpIHsKICAgICAgICAgICAgYiA9IGIgKyAxMjggfCAwOwogICAgICAgICAgICBjW2IgPj4gMl0gPSBlOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgfQogICAgZnVuY3Rpb24gUGEoYiwgZCkgewogICAgICAgIGIgPSBiIHwgMDsKICAgICAgICBkID0gZCB8IDA7CiAgICAgICAgdmFyIGUgPSAwLCBmID0gMCwgZyA9IDAsIGggPSAwLCBpID0gMDsKICAgICAgICBpZiAoIWQpIHsKICAgICAgICAgICAgaSA9IDA7CiAgICAgICAgICAgIHJldHVybiBpIHwgMDsKICAgICAgICB9CiAgICAgICAgaWYgKChOYShjW2QgPj4gMl0gfCAwKSB8IDApIDw8IDI0ID4+IDI0KSB7CiAgICAgICAgICAgIGkgPSAwOwogICAgICAgICAgICByZXR1cm4gaSB8IDA7CiAgICAgICAgfQogICAgICAgIGRvCiAgICAgICAgICAgIGlmIChiIHwgMCkgewogICAgICAgICAgICAgICAgZSA9IGNbYiA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICBpZiAoKGUgfCAwKSAhPSAoYiB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFlKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBpZiAoKGNbZSA+PiAyXSB8IDApICE9IChlIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZiA9IGNbYiArIDEyID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgIGlmICgoZiB8IDApIDwgMSkgewogICAgICAgICAgICAgICAgICAgIGNbZCA+PiAyXSA9IDE7CiAgICAgICAgICAgICAgICAgICAgaSA9IDA7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGkgfCAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZyA9IGIgKyAxMjggfCAwOwogICAgICAgICAgICAgICAgaCA9IGNbZyA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICBpZiAoKGYgfCAwKSA9PSAoaCB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgaSA9IGNbYiArIDc2ID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSB8IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlID0gYiArIDQ4IHwgMDsKICAgICAgICAgICAgICAgIGlmICghKChhYShlLCBiICsgMjQgfCAwLCBhW2IgKyA2OCA+PiAwXSB8IDAsIGYpIHwgMCkgPDwgMjQgPj4gMjQpKSB7CiAgICAgICAgICAgICAgICAgICAgY1tkID4+IDJdID0gNzsKICAgICAgICAgICAgICAgICAgICBpID0gMDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaSB8IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBlID0gY1tlID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgIGQgPSBiICsgNzYgfCAwOwogICAgICAgICAgICAgICAgaWYgKChoIHwgMCkgPiAwID8gKGkgPSBjW2QgPj4gMl0gfCAwLCAoZSB8IDApICE9IChpIHwgMCkpIDogMCkKICAgICAgICAgICAgICAgICAgICBlYyhlIHwgMCwgaSB8IDAsIGggfCAwKSB8IDA7CiAgICAgICAgICAgICAgICBmYyhlICsgaCB8IDAsIGFbYiArIDkzID4+IDBdIHwgMCwgZiAtIGggfCAwKSB8IDA7CiAgICAgICAgICAgICAgICBjW2cgPj4gMl0gPSBmOwogICAgICAgICAgICAgICAgY1tkID4+IDJdID0gZTsKICAgICAgICAgICAgICAgIGkgPSBlOwogICAgICAgICAgICAgICAgcmV0dXJuIGkgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgd2hpbGUgKDApOwogICAgICAgIGNbZCA+PiAyXSA9IDI3OwogICAgICAgIGkgPSAwOwogICAgICAgIHJldHVybiBpIHwgMDsKICAgIH0KICAgIGZ1bmN0aW9uIFFhKGEsIGIpIHsKICAgICAgICBhID0gYSB8IDA7CiAgICAgICAgYiA9IGIgfCAwOwogICAgICAgIHZhciBkID0gMDsKICAgICAgICBpZiAoIWIpIHsKICAgICAgICAgICAgZCA9IC0xOwogICAgICAgICAgICByZXR1cm4gZCB8IDA7CiAgICAgICAgfQogICAgICAgIGlmICgoTmEoY1tiID4+IDJdIHwgMCkgfCAwKSA8PCAyNCA+PiAyNCkgewogICAgICAgICAgICBkID0gLTE7CiAgICAgICAgICAgIHJldHVybiBkIHwgMDsKICAgICAgICB9CiAgICAgICAgZG8KICAgICAgICAgICAgaWYgKGEgfCAwKSB7CiAgICAgICAgICAgICAgICBkID0gY1thID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgIGlmICgoZCB8IDApICE9IChhIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICBpZiAoIWQpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGlmICgoY1tkID4+IDJdIHwgMCkgIT0gKGQgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBSYShhLCBiKTsKICAgICAgICAgICAgICAgIGlmICgoTmEoY1tiID4+IDJdIHwgMCkgfCAwKSA8PCAyNCA+PiAyNCkgewogICAgICAgICAgICAgICAgICAgIGQgPSAtMTsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZCB8IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBkID0gY1thICsgMjIwID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgIHJldHVybiBkIHwgMDsKICAgICAgICAgICAgfQogICAgICAgIHdoaWxlICgwKTsKICAgICAgICBjW2IgPj4gMl0gPSAyNzsKICAgICAgICBkID0gLTE7CiAgICAgICAgcmV0dXJuIGQgfCAwOwogICAgfQogICAgZnVuY3Rpb24gUmEoZSwgZikgewogICAgICAgIGUgPSBlIHwgMDsKICAgICAgICBmID0gZiB8IDA7CiAgICAgICAgdmFyIGcgPSAwLCBoID0gMCwgaSA9IDAsIGogPSAwLCBrID0gMCwgbCA9IDAsIG0gPSAwLCBuID0gMCwgbyA9IDAsIHAgPSAwLCBxID0gMCwgciA9IDAsIHMgPSAwLCB0ID0gMDsKICAgICAgICBzID0gZSArIDIyMCB8IDA7CiAgICAgICAgaWYgKChjW3MgPj4gMl0gfCAwKSA+IC0xKQogICAgICAgICAgICByZXR1cm47CiAgICAgICAgZG8KICAgICAgICAgICAgaWYgKChjW2UgKyAxMTYgPj4gMl0gfCAwKSA9PSAyKSB7CiAgICAgICAgICAgICAgICBvID0gY1tlICsgMTIgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgciA9IGNbZSArIDc2ID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgIHAgPSBjW2UgKyAxMjggPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgZyA9IDA7CiAgICAgICAgICAgICAgICBpID0gMDsKICAgICAgICAgICAgICAgIGggPSAtMjsKICAgICAgICAgICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKChnIHwgMCkgPj0gKHAgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgcSA9IGFbciArIGcgPj4gMF0gfCAwOwogICAgICAgICAgICAgICAgICAgIGcgPSBnICsgMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgaSA9IGkgKyAocSA8PCAyNCA+PiAyNCAhPSBoIDw8IDI0ID4+IDI0ICYgMSkgfCAwOwogICAgICAgICAgICAgICAgICAgIGggPSBxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKChvIHwgMCkgPT0gKHAgfCAwKSAmIChpIHwgMCkgPT0gMSkgewogICAgICAgICAgICAgICAgICAgIFNhKGUsIGFbciA+PiAwXSB8IDApOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbCA9IChvIHwgMCkgPiAocCB8IDApOwogICAgICAgICAgICAgICAgcSA9IGkgKyAobCAmIDEpIHwgMDsKICAgICAgICAgICAgICAgIGcgPSBlICsgNjAgfCAwOwogICAgICAgICAgICAgICAgaWYgKCEoKGFhKGcsIGUgKyAzNiB8IDAsIGFbZSArIDY5ID4+IDBdIHwgMCwgcSAqIDEyIHwgMCkgfCAwKSA8PCAyNCA+PiAyNCkpCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgbiA9IGNbZyA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICBtID0gMDsKICAgICAgICAgICAgICAgIGcgPSAxMjY7CiAgICAgICAgICAgICAgICBrID0gMDsKICAgICAgICAgICAgICAgIGkgPSAwOwogICAgICAgICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgICAgICAgICBoID0gYVtyICsgaSA+PiAwXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgZyA9IChoICYgMjU1KSA8IChnICYgMjU1KSA/IGggOiBnOwogICAgICAgICAgICAgICAgICAgIGsgPSAoaCAmIDI1NSkgPiAoayAmIDI1NSkgPyBoIDogazsKICAgICAgICAgICAgICAgICAgICBqID0gaTsKICAgICAgICAgICAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICAgICAgICAgICAgICBqID0gaiArIDEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGogfCAwKSA+PSAocCB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBoID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoYVtyICsgaiA+PiAwXSB8IDApICE9IGggPDwgMjQgPj4gMjQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgY1tuICsgKG0gKiAxMiB8IDApID4+IDJdID0gaTsKICAgICAgICAgICAgICAgICAgICBjW24gKyAobSAqIDEyIHwgMCkgKyA0ID4+IDJdID0gaiAtIGk7CiAgICAgICAgICAgICAgICAgICAgY1tuICsgKG0gKiAxMiB8IDApICsgOCA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgbSA9IG0gKyAxIHwgMDsKICAgICAgICAgICAgICAgICAgICBpZiAoIWgpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGo7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAobCkgewogICAgICAgICAgICAgICAgICAgIGNbbiArIChtICogMTIgfCAwKSA+PiAyXSA9IHA7CiAgICAgICAgICAgICAgICAgICAgY1tuICsgKG0gKiAxMiB8IDApICsgNCA+PiAyXSA9IG8gLSBwOwogICAgICAgICAgICAgICAgICAgIHAgPSBhW2UgKyA5MyA+PiAwXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgZyA9IChwICYgMjU1KSA8IChnICYgMjU1KSA/IHAgOiBnOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgY1tlICsgMjI0ID4+IDJdID0gbjsKICAgICAgICAgICAgICAgIGNbcyA+PiAyXSA9IHE7CiAgICAgICAgICAgICAgICBUYShlLCBnLCBrKTsKICAgICAgICAgICAgICAgIGcgPSAwOwogICAgICAgICAgICAgICAgaCA9IDA7CiAgICAgICAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICAgICAgICAgIGlmICgoaCB8IDApID09IChxIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIG8gPSBuICsgKGggKiAxMiB8IDApIHwgMDsKICAgICAgICAgICAgICAgICAgICBwID0gY1tvID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICBjW28gPj4gMl0gPSBkW3IgKyBwID4+IDBdIDw8IDMxIHwgcDsKICAgICAgICAgICAgICAgICAgICBvID0gbiArIChoICogMTIgfCAwKSArIDQgfCAwOwogICAgICAgICAgICAgICAgICAgIHAgPSAoY1tvID4+IDJdIHwgMCkgKyBnIHwgMDsKICAgICAgICAgICAgICAgICAgICBjW28gPj4gMl0gPSBwOwogICAgICAgICAgICAgICAgICAgIGcgPSBwOwogICAgICAgICAgICAgICAgICAgIGggPSBoICsgMSB8IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAobSA+Pj4gMCA8IHEgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICBxID0gZFtlICsgOTMgPj4gMF0gfCAwOwogICAgICAgICAgICAgICAgICAgIHIgPSBuICsgKCgocSAmIDEgfCAwKSA9PSAwID8gbSA6IDApICogMTIgfCAwKSB8IDA7CiAgICAgICAgICAgICAgICAgICAgY1tyID4+IDJdID0gcSA8PCAzMSB8IGNbciA+PiAyXTsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICBTYShlLCBhW2UgKyA5MyA+PiAwXSB8IDApOwogICAgICAgIHdoaWxlICgwKTsKICAgICAgICBnID0gY1tlICsgMzMyID4+IDJdIHwgMDsKICAgICAgICBhOgogICAgICAgICAgICBkbwogICAgICAgICAgICAgICAgaWYgKChnIHwgMCkgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgciA9IGNbZSArIDM0NCA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgaCA9IHIgKyAoZyA8PCAzKSB8IDA7CiAgICAgICAgICAgICAgICAgICAgaSA9IGUgKyAyMjQgfCAwOwogICAgICAgICAgICAgICAgICAgIGcgPSByOwogICAgICAgICAgICAgICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnID4+PiAwID49IGggPj4+IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICByID0gVWEoY1tzID4+IDJdIHwgMCwgY1tpID4+IDJdIHwgMCwgY1tnID4+IDJdIHwgMCwgZikgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICByID0gKGNbaSA+PiAyXSB8IDApICsgKHIgKiAxMiB8IDApICsgOCB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGNbciA+PiAyXSA9IGNbciA+PiAyXSB8IGNbZyArIDQgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBnICsgOCB8IDA7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB3aGlsZSAoMCk7CiAgICAgICAgaWYgKChjW2UgKyAzNDggPj4gMl0gfCAwKSA8PSAwKQogICAgICAgICAgICByZXR1cm47CiAgICAgICAgZyA9IGNbZSArIDQgPj4gMl0gfCAwOwogICAgICAgIGogPSBnICsgKGNbZSArIDEyID4+IDJdIDw8IDEpIHwgMDsKICAgICAgICBrID0gZzsKICAgICAgICBoID0gZSArIDIyNCB8IDA7CiAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgaWYgKGcgPj4+IDAgPj0gaiA+Pj4gMCkKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBpID0gYltnID4+IDFdIHwgMDsKICAgICAgICAgICAgaWYgKChpICYgLTQpIDw8IDE2ID4+IDE2ID09IDgyMDQpCiAgICAgICAgICAgICAgICB0ID0gMzE7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIHN3aXRjaCAoaSA8PCAxNiA+PiAxNikgewogICAgICAgICAgICAgICAgY2FzZSA4MjM0OgogICAgICAgICAgICAgICAgY2FzZSA4MjM1OgogICAgICAgICAgICAgICAgY2FzZSA4MjM2OgogICAgICAgICAgICAgICAgY2FzZSA4MjM3OgogICAgICAgICAgICAgICAgY2FzZSA4MjM4OgogICAgICAgICAgICAgICAgY2FzZSA4Mjk0OgogICAgICAgICAgICAgICAgY2FzZSA4Mjk1OgogICAgICAgICAgICAgICAgY2FzZSA4Mjk2OgogICAgICAgICAgICAgICAgY2FzZSA4Mjk3OiB7CiAgICAgICAgICAgICAgICAgICAgICAgIHQgPSAzMTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZGVmYXVsdDogewogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgaWYgKCh0IHwgMCkgPT0gMzEpIHsKICAgICAgICAgICAgICAgIHQgPSAwOwogICAgICAgICAgICAgICAgZSA9IFVhKGNbcyA+PiAyXSB8IDAsIGNbaCA+PiAyXSB8IDAsIGcgLSBrID4+IDEsIGYpIHwgMDsKICAgICAgICAgICAgICAgIGUgPSAoY1toID4+IDJdIHwgMCkgKyAoZSAqIDEyIHwgMCkgKyA4IHwgMDsKICAgICAgICAgICAgICAgIGNbZSA+PiAyXSA9IChjW2UgPj4gMl0gfCAwKSArIC0xOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGcgPSBnICsgMiB8IDA7CiAgICAgICAgfQogICAgICAgIHJldHVybjsKICAgIH0KICAgIGZ1bmN0aW9uIFNhKGEsIGIpIHsKICAgICAgICBhID0gYSB8IDA7CiAgICAgICAgYiA9IGIgfCAwOwogICAgICAgIHZhciBkID0gMDsKICAgICAgICBkID0gYSArIDIyOCB8IDA7CiAgICAgICAgY1thICsgMjI0ID4+IDJdID0gZDsKICAgICAgICBjW2EgKyAyMjAgPj4gMl0gPSAxOwogICAgICAgIGNbZCA+PiAyXSA9IChiICYgMjU1KSA8PCAzMTsKICAgICAgICBjW2EgKyAyMzIgPj4gMl0gPSBjW2EgKyAxMiA+PiAyXTsKICAgICAgICBjW2EgKyAyMzYgPj4gMl0gPSAwOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGZ1bmN0aW9uIFRhKGEsIGIsIGUpIHsKICAgICAgICBhID0gYSB8IDA7CiAgICAgICAgYiA9IGIgfCAwOwogICAgICAgIGUgPSBlIHwgMDsKICAgICAgICB2YXIgZiA9IDAsIGcgPSAwLCBoID0gMCwgaSA9IDAsIGogPSAwLCBrID0gMCwgbCA9IDAsIG0gPSAwLCBuID0gMCwgbyA9IDAsIHAgPSAwLCBxID0gMDsKICAgICAgICBvID0gRTsKICAgICAgICBFID0gRSArIDE2IHwgMDsKICAgICAgICBuID0gbzsKICAgICAgICBpZiAoKChiIHwgMSkgJiAyNTUpID49IChlICYgMjU1KSkgewogICAgICAgICAgICBFID0gbzsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBsID0gYiArIDEgPDwgMjQgPj4gMjQ7CiAgICAgICAgbSA9IGNbYSArIDIyNCA+PiAyXSB8IDA7CiAgICAgICAgaSA9IGNbYSArIDc2ID4+IDJdIHwgMDsKICAgICAgICBqID0gYSArIDEyOCB8IDA7CiAgICAgICAgayA9IGEgKyAxMiB8IDA7CiAgICAgICAgaCA9IChjW2EgKyAyMjAgPj4gMl0gfCAwKSArICgoKGNbaiA+PiAyXSB8IDApIDwgKGNbayA+PiAyXSB8IDApKSA8PCAzMSA+PiAzMSkgfCAwOwogICAgICAgIGIgPSBlOwogICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgIGIgPSBiICsgLTEgPDwgMjQgPj4gMjQ7CiAgICAgICAgICAgIGlmICgoYiAmIDI1NSkgPCAobCAmIDI1NSkpCiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgYSA9IDA7CiAgICAgICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgICAgICBpZiAoKGEgfCAwKSA+PSAoaCB8IDApKQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgaWYgKChkW2kgKyAoY1ttICsgKGEgKiAxMiB8IDApID4+IDJdIHwgMCkgPj4gMF0gfCAwKSA+PSAoYiAmIDI1NSkpIHsKICAgICAgICAgICAgICAgICAgICBlID0gYTsKICAgICAgICAgICAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICAgICAgICAgICAgICBnID0gZSArIDEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGcgfCAwKSA+PSAoaCB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZFtpICsgKGNbbSArIChnICogMTIgfCAwKSA+PiAyXSB8IDApID4+IDBdIHwgMCkgPCAoYiAmIDI1NSkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGYgPSBlOwogICAgICAgICAgICAgICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoYSB8IDApID49IChmIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgcSA9IG0gKyAoYSAqIDEyIHwgMCkgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBjW24gPj4gMl0gPSBjW3EgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgIGNbbiArIDQgPj4gMl0gPSBjW3EgKyA0ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICBjW24gKyA4ID4+IDJdID0gY1txICsgOCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgcCA9IG0gKyAoZiAqIDEyIHwgMCkgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBjW3EgPj4gMl0gPSBjW3AgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgIGNbcSArIDQgPj4gMl0gPSBjW3AgKyA0ID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICBjW3EgKyA4ID4+IDJdID0gY1twICsgOCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgY1twID4+IDJdID0gY1tuID4+IDJdOwogICAgICAgICAgICAgICAgICAgICAgICBjW3AgKyA0ID4+IDJdID0gY1tuICsgNCA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgY1twICsgOCA+PiAyXSA9IGNbbiArIDggPj4gMl07CiAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBmICsgLTEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBhID0gYSArIDEgfCAwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoKGcgfCAwKSA9PSAoaCB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBlICsgMiB8IDA7CiAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICBhID0gYSArIDEgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgfQogICAgICAgIGlmIChsICYgMSkgewogICAgICAgICAgICBFID0gbzsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBiID0gaCArICgoKGNbaiA+PiAyXSB8IDApID09IChjW2sgPj4gMl0gfCAwKSkgPDwgMzEgPj4gMzEpIHwgMDsKICAgICAgICBhID0gMDsKICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICBpZiAoKGEgfCAwKSA+PSAoYiB8IDApKQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIHAgPSBtICsgKGEgKiAxMiB8IDApIHwgMDsKICAgICAgICAgICAgY1tuID4+IDJdID0gY1twID4+IDJdOwogICAgICAgICAgICBjW24gKyA0ID4+IDJdID0gY1twICsgNCA+PiAyXTsKICAgICAgICAgICAgY1tuICsgOCA+PiAyXSA9IGNbcCArIDggPj4gMl07CiAgICAgICAgICAgIHEgPSBtICsgKGIgKiAxMiB8IDApIHwgMDsKICAgICAgICAgICAgY1twID4+IDJdID0gY1txID4+IDJdOwogICAgICAgICAgICBjW3AgKyA0ID4+IDJdID0gY1txICsgNCA+PiAyXTsKICAgICAgICAgICAgY1twICsgOCA+PiAyXSA9IGNbcSArIDggPj4gMl07CiAgICAgICAgICAgIGNbcSA+PiAyXSA9IGNbbiA+PiAyXTsKICAgICAgICAgICAgY1txICsgNCA+PiAyXSA9IGNbbiArIDQgPj4gMl07CiAgICAgICAgICAgIGNbcSArIDggPj4gMl0gPSBjW24gKyA4ID4+IDJdOwogICAgICAgICAgICBiID0gYiArIC0xIHwgMDsKICAgICAgICAgICAgYSA9IGEgKyAxIHwgMDsKICAgICAgICB9CiAgICAgICAgRSA9IG87CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgZnVuY3Rpb24gVWEoYSwgYiwgZCwgZSkgewogICAgICAgIGEgPSBhIHwgMDsKICAgICAgICBiID0gYiB8IDA7CiAgICAgICAgZCA9IGQgfCAwOwogICAgICAgIGUgPSBlIHwgMDsKICAgICAgICB2YXIgZiA9IDAsIGcgPSAwLCBoID0gMCwgaSA9IDAsIGogPSAwOwogICAgICAgIGcgPSAwOwogICAgICAgIGYgPSAwOwogICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgIGlmICgoZiB8IDApID49IChhIHwgMCkpCiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgaCA9IGNbYiArIChmICogMTIgfCAwKSArIDQgPj4gMl0gfCAwOwogICAgICAgICAgICBqID0gY1tiICsgKGYgKiAxMiB8IDApID4+IDJdICYgMjE0NzQ4MzY0NzsKICAgICAgICAgICAgaWYgKChqIHwgMCkgPD0gKGQgfCAwKSA/IChoIC0gZyArIGogfCAwKSA+IChkIHwgMCkgOiAwKSB7CiAgICAgICAgICAgICAgICBpID0gNzsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGcgPSBoOwogICAgICAgICAgICBmID0gZiArIDEgfCAwOwogICAgICAgIH0KICAgICAgICBpZiAoKGkgfCAwKSA9PSA3KQogICAgICAgICAgICByZXR1cm4gZiB8IDA7CiAgICAgICAgY1tlID4+IDJdID0gMjc7CiAgICAgICAgaiA9IDA7CiAgICAgICAgcmV0dXJuIGogfCAwOwogICAgfQogICAgZnVuY3Rpb24gVmEoYSwgYiwgZCwgZSkgewogICAgICAgIGEgPSBhIHwgMDsKICAgICAgICBiID0gYiB8IDA7CiAgICAgICAgZCA9IGQgfCAwOwogICAgICAgIGUgPSBlIHwgMDsKICAgICAgICB2YXIgZiA9IDAsIGcgPSAwLCBoID0gMDsKICAgICAgICBoID0gRTsKICAgICAgICBFID0gRSArIDE2IHwgMDsKICAgICAgICBmID0gaDsKICAgICAgICBjW2YgPj4gMl0gPSAwOwogICAgICAgIGRvCiAgICAgICAgICAgIGlmIChhIHwgMCkgewogICAgICAgICAgICAgICAgZyA9IGNbYSA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICBpZiAoKGcgfCAwKSAhPSAoYSB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKCFnKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBpZiAoKGNbZyA+PiAyXSB8IDApICE9IChnIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgUmEoYSwgZik7CiAgICAgICAgICAgICAgICBpZiAoKE5hKGNbZiA+PiAyXSB8IDApIHwgMCkgPDwgMjQgPj4gMjQpIHsKICAgICAgICAgICAgICAgICAgICBlID0gMDsKICAgICAgICAgICAgICAgICAgICBFID0gaDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSB8IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoKGIgfCAwKSA+PSAwID8gKGNbYSArIDIyMCA+PiAyXSB8IDApID4gKGIgfCAwKSA6IDApIHsKICAgICAgICAgICAgICAgICAgICBhID0gYSArIDIyNCB8IDA7CiAgICAgICAgICAgICAgICAgICAgZiA9IGNbKGNbYSA+PiAyXSB8IDApICsgKGIgKiAxMiB8IDApID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICBpZiAoZCB8IDApCiAgICAgICAgICAgICAgICAgICAgICAgIGNbZCA+PiAyXSA9IGYgJiAyMTQ3NDgzNjQ3OwogICAgICAgICAgICAgICAgICAgIGlmIChlIHwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICBhID0gY1thID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChiIHwgMCkgPiAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IChjW2EgKyAoYiAqIDEyIHwgMCkgKyA0ID4+IDJdIHwgMCkgLSAoY1thICsgKChiICsgLTEgfCAwKSAqIDEyIHwgMCkgKyA0ID4+IDJdIHwgMCkgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gY1thICsgNCA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGNbZSA+PiAyXSA9IGE7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGUgPSBmID4+PiAzMTsKICAgICAgICAgICAgICAgICAgICBFID0gaDsKICAgICAgICAgICAgICAgICAgICByZXR1cm4gZSB8IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBjW2YgPj4gMl0gPSAxOwogICAgICAgICAgICAgICAgZSA9IDA7CiAgICAgICAgICAgICAgICBFID0gaDsKICAgICAgICAgICAgICAgIHJldHVybiBlIHwgMDsKICAgICAgICAgICAgfQogICAgICAgIHdoaWxlICgwKTsKICAgICAgICBjW2YgPj4gMl0gPSAyNzsKICAgICAgICBlID0gMDsKICAgICAgICBFID0gaDsKICAgICAgICByZXR1cm4gZSB8IDA7CiAgICB9CiAgICBmdW5jdGlvbiBXYShhLCBkLCBlKSB7CiAgICAgICAgYSA9IGEgfCAwOwogICAgICAgIGQgPSBkIHwgMDsKICAgICAgICBlID0gZSB8IDA7CiAgICAgICAgdmFyIGYgPSAwLCBnID0gMCwgaCA9IDAsIGkgPSAwLCBqID0gMCwgayA9IDAsIGwgPSAwLCBtID0gMCwgbiA9IDAsIG8gPSAwLCBwID0gMDsKICAgICAgICBpZiAoIWUpCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICBpZiAoKE5hKGNbZSA+PiAyXSB8IDApIHwgMCkgPDwgMjQgPj4gMjQpCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICBpZiAoIWQpIHsKICAgICAgICAgICAgY1tlID4+IDJdID0gMTsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBRYShhLCBlKSB8IDA7CiAgICAgICAgaWYgKCEoKFhhKGNbZSA+PiAyXSB8IDApIHwgMCkgPDwgMjQgPj4gMjQpKQogICAgICAgICAgICByZXR1cm47CiAgICAgICAgbSA9IGEgKyAyMjQgfCAwOwogICAgICAgIGUgPSBjW20gPj4gMl0gfCAwOwogICAgICAgIGsgPSBhICsgMjIwIHwgMDsKICAgICAgICBsID0gZSArICgoY1trID4+IDJdIHwgMCkgKiAxMiB8IDApIHwgMDsKICAgICAgICBuID0gYSArIDE2IHwgMDsKICAgICAgICBpZiAoKGNbbiA+PiAyXSB8IDApIDwgMSkKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIGcgPSAwOwogICAgICAgIGYgPSBkOwogICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgIGlmIChlID4+PiAwID49IGwgPj4+IDApCiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgaCA9IGNbZSA+PiAyXSB8IDA7CiAgICAgICAgICAgIGogPSBjW2UgKyA0ID4+IDJdIHwgMDsKICAgICAgICAgICAgaWYgKChoIHwgMCkgPiAtMSkKICAgICAgICAgICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgICAgICAgICAgaSA9IGYgKyA0IHwgMDsKICAgICAgICAgICAgICAgICAgICBjW2YgPj4gMl0gPSBoOwogICAgICAgICAgICAgICAgICAgIGcgPSBnICsgMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgaWYgKChnIHwgMCkgPCAoaiB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGggPSBoICsgMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBpOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgaSA9IGogLSBnICsgKGggJiAyMTQ3NDgzNjQ3KSB8IDA7CiAgICAgICAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICAgICAgICAgIGkgPSBpICsgLTEgfCAwOwogICAgICAgICAgICAgICAgICAgIGggPSBmICsgNCB8IDA7CiAgICAgICAgICAgICAgICAgICAgY1tmID4+IDJdID0gaTsKICAgICAgICAgICAgICAgICAgICBnID0gZyArIDEgfCAwOwogICAgICAgICAgICAgICAgICAgIGlmICgoZyB8IDApID49IChqIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGg7CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgICBmID0gaDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfQogICAgICAgICAgICBlID0gZSArIDEyIHwgMDsKICAgICAgICB9CiAgICAgICAgaWYgKChjW2EgKyAzMzIgPj4gMl0gfCAwKSA+IDApIHsKICAgICAgICAgICAgZyA9IGNbayA+PiAyXSB8IDA7CiAgICAgICAgICAgIG0gPSBjW20gPj4gMl0gfCAwOwogICAgICAgICAgICBmID0gMDsKICAgICAgICAgICAgZSA9IDA7CiAgICAgICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgICAgICBpZiAoKGUgfCAwKSA+PSAoZyB8IDApKQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgcCA9IGNbbSArIChlICogMTIgfCAwKSArIDggPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgZiA9IGYgKyAoKHAgJiA1IHwgMCkgIT0gMCAmIDEpICsgKChwICYgMTAgfCAwKSAhPSAwICYgMSkgfCAwOwogICAgICAgICAgICAgICAgZSA9IGUgKyAxIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBlID0gY1tuID4+IDJdIHwgMDsKICAgICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgICAgIGwgPSBnICsgLTEgfCAwOwogICAgICAgICAgICAgICAgaWYgKCEoKGcgfCAwKSA+IDAgJiAoZiB8IDApID4gMCkpCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBrID0gY1ttICsgKGwgKiAxMiB8IDApICsgOCA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICBoID0gZSArIC0xIHwgMDsKICAgICAgICAgICAgICAgIGlmIChrICYgMTApIHsKICAgICAgICAgICAgICAgICAgICBjW2QgKyAoaCA8PCAyKSA+PiAyXSA9IC0xOwogICAgICAgICAgICAgICAgICAgIGUgPSBoOwogICAgICAgICAgICAgICAgICAgIGYgPSBmICsgLTEgfCAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKChnIHwgMCkgPiAxKQogICAgICAgICAgICAgICAgICAgIGogPSBjW20gKyAoKGcgKyAtMiB8IDApICogMTIgfCAwKSArIDQgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgIGogPSAwOwogICAgICAgICAgICAgICAgaSA9IChmIHwgMCkgPiAwOwogICAgICAgICAgICAgICAgaCA9IGNbbSArIChsICogMTIgfCAwKSArIDQgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgICAgICAgICBnID0gaCArIC0xIHwgMDsKICAgICAgICAgICAgICAgICAgICBpZiAoIShpICYgKGggfCAwKSA+IChqIHwgMCkpKQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBwID0gZSArIC0xIHwgMDsKICAgICAgICAgICAgICAgICAgICBjW2QgKyAocCA8PCAyKSA+PiAyXSA9IGNbZCArIChnIDw8IDIpID4+IDJdOwogICAgICAgICAgICAgICAgICAgIGggPSBnOwogICAgICAgICAgICAgICAgICAgIGUgPSBwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZyA9IGUgKyAtMSB8IDA7CiAgICAgICAgICAgICAgICBpZiAoayAmIDUpIHsKICAgICAgICAgICAgICAgICAgICBjW2QgKyAoZyA8PCAyKSA+PiAyXSA9IC0xOwogICAgICAgICAgICAgICAgICAgIGUgPSBnOwogICAgICAgICAgICAgICAgICAgIGYgPSBmICsgLTEgfCAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZyA9IGw7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBpZiAoKGNbYSArIDM0OCA+PiAyXSB8IDApIDw9IDApCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICBwID0gY1trID4+IDJdIHwgMDsKICAgICAgICBvID0gY1ttID4+IDJdIHwgMDsKICAgICAgICBhID0gYSArIDQgfCAwOwogICAgICAgIGUgPSAwOwogICAgICAgIG0gPSAwOwogICAgICAgIGYgPSAwOwogICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgIGlmICgobSB8IDApID49IChwIHwgMCkpCiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgbiA9IGNbbyArIChtICogMTIgfCAwKSArIDQgPj4gMl0gfCAwOwogICAgICAgICAgICBsID0gbiAtIGYgfCAwOwogICAgICAgICAgICBnID0gKGNbbyArIChtICogMTIgfCAwKSArIDggPj4gMl0gfCAwKSA9PSAwOwogICAgICAgICAgICBhOgogICAgICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgICAgICBpZiAoKGUgfCAwKSA9PSAoZiB8IDApICYgZykKICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGwgKyBlIHwgMDsKICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZiB8IDApID49IChuIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1tkICsgKGUgPDwgMikgPj4gMl0gPSBjW2QgKyAoZiA8PCAyKSA+PiAyXTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gZiArIDEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBlICsgMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGogPSBjW28gKyAobSAqIDEyIHwgMCkgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBpID0gKGogfCAwKSA+IC0xOwogICAgICAgICAgICAgICAgICAgICAgICBqID0gaiAmIDIxNDc0ODM2NDc7CiAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBsICsgLTEgKyBqIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgaCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGggfCAwKSA+PSAobCB8IDApKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gaSA/IGggKyBqIHwgMCA6IGsgLSBoIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBiWyhjW2EgPj4gMl0gfCAwKSArIChmIDw8IDEpID4+IDFdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChnICYgLTQpIDw8IDE2ID4+IDE2ICE9IDgyMDQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN3aXRjaCAoZyA8PCAxNiA+PiAxNikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4MjM0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4MjM1OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4MjM2OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4MjM3OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4MjM4OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4Mjk0OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4Mjk1OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4Mjk2OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSA4Mjk3OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0OiB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1tkICsgKGUgPDwgMikgPj4gMl0gPSBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGUgKyAxIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBoICsgMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB3aGlsZSAoMCk7CiAgICAgICAgICAgIG0gPSBtICsgMSB8IDA7CiAgICAgICAgICAgIGYgPSBuOwogICAgICAgIH0KICAgICAgICByZXR1cm47CiAgICB9CiAgICBmdW5jdGlvbiBYYShhKSB7CiAgICAgICAgYSA9IGEgfCAwOwogICAgICAgIHJldHVybiAoYSB8IDApIDwgMSB8IDA7CiAgICB9CiAgICBmdW5jdGlvbiBZYShhLCBkLCBlLCBmLCBnKSB7CiAgICAgICAgYSA9IGEgfCAwOwogICAgICAgIGQgPSBkIHwgMDsKICAgICAgICBlID0gZSB8IDA7CiAgICAgICAgZiA9IGYgfCAwOwogICAgICAgIGcgPSBnIHwgMDsKICAgICAgICB2YXIgaCA9IDAsIGkgPSAwLCBqID0gMCwgayA9IDAsIGwgPSAwLCBtID0gMCwgbiA9IDAsIG8gPSAwOwogICAgICAgIG8gPSBFOwogICAgICAgIEUgPSBFICsgNjU2IHwgMDsKICAgICAgICBqID0gbyArIDYzMiB8IDA7CiAgICAgICAgbCA9IG87CiAgICAgICAgbSA9IG8gKyA2MjggfCAwOwogICAgICAgIG4gPSBvICsgNjI0IHwgMDsKICAgICAgICBrID0gbyArIDYwMCB8IDA7CiAgICAgICAgaWYgKCFnKSB7CiAgICAgICAgICAgIG4gPSAwOwogICAgICAgICAgICBFID0gbzsKICAgICAgICAgICAgcmV0dXJuIG4gfCAwOwogICAgICAgIH0KICAgICAgICBpZiAoKFphKGNbZyA+PiAyXSB8IDApIHwgMCkgPDwgMjQgPj4gMjQpIHsKICAgICAgICAgICAgbiA9IDA7CiAgICAgICAgICAgIEUgPSBvOwogICAgICAgICAgICByZXR1cm4gbiB8IDA7CiAgICAgICAgfQogICAgICAgIGlmICghKChhIHwgMCkgPT0gMCB8IChkIHwgMCkgPCAtMSkgPyAoaCA9IChlIHwgMCkgPT0gMCwgISgoZiB8IDApIDwgMCB8IGggJiAoZiB8IDApICE9IDApKSA6IDApIHsKICAgICAgICAgICAgaWYgKChkIHwgMCkgPT0gLTEpCiAgICAgICAgICAgICAgICBkID0gb2IoYSkgfCAwOwogICAgICAgICAgICBpZiAoKGQgfCAwKSA8IDEpIHsKICAgICAgICAgICAgICAgIHFiKGUsIGYsIDAsIGcpIHwgMDsKICAgICAgICAgICAgICAgIG4gPSAwOwogICAgICAgICAgICAgICAgRSA9IG87CiAgICAgICAgICAgICAgICByZXR1cm4gbiB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgIGlmICghaCkgewogICAgICAgICAgICAgICAgICAgIGlmICghKGEgPj4+IDAgPD0gZSA+Pj4gMCAmIChhICsgKGQgPDwgMSkgfCAwKSA+Pj4gMCA+IGUgPj4+IDApID8gIShlID4+PiAwIDw9IGEgPj4+IDAgJiAoZSArIChmIDw8IDEpIHwgMCkgPj4+IDAgPiBhID4+PiAwKSA6IDApCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNbZyA+PiAyXSA9IDE7CiAgICAgICAgICAgICAgICAgICAgbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgRSA9IG87CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gfCAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB3aGlsZSAoMCk7CiAgICAgICAgICAgIGNbbSA+PiAyXSA9IDA7CiAgICAgICAgICAgIGNbbiA+PiAyXSA9IDA7CiAgICAgICAgICAgIGggPSAkYShhLCBkKSB8IDA7CiAgICAgICAgICAgIGlmICgoaCB8IDApID4gKGYgfCAwKSkgewogICAgICAgICAgICAgICAgY1tnID4+IDJdID0gMTU7CiAgICAgICAgICAgICAgICBuID0gaDsKICAgICAgICAgICAgICAgIEUgPSBvOwogICAgICAgICAgICAgICAgcmV0dXJuIG4gfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGggPSAoZCB8IDApID4gKGggfCAwKSA/IGQgOiBoOwogICAgICAgICAgICBpZiAoKGggfCAwKSA+PSAzMDEpIHsKICAgICAgICAgICAgICAgIGkgPSBsYihoIDw8IDEpIHwgMDsKICAgICAgICAgICAgICAgIGlmICghaSkgewogICAgICAgICAgICAgICAgICAgIGNbZyA+PiAyXSA9IDc7CiAgICAgICAgICAgICAgICAgICAgbiA9IDA7CiAgICAgICAgICAgICAgICAgICAgRSA9IG87CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG4gfCAwOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaSA9IGw7CiAgICAgICAgICAgICAgICBoID0gMzAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHBiKGksIGEsIGQpIHwgMDsKICAgICAgICAgICAgaWYgKChoIHwgMCkgPiAoZCB8IDApKQogICAgICAgICAgICAgICAgZmMoaSArIChkIDw8IDEpIHwgMCwgMCwgaCAtIGQgPDwgMSB8IDApIHwgMDsKICAgICAgICAgICAgYWIoaSwgZCwgbSwgbik7CiAgICAgICAgICAgIGJiKGksIGQsIGNbbSA+PiAyXSB8IDAsIGNbbiA+PiAyXSB8IDApOwogICAgICAgICAgICBiW2sgPj4gMV0gPSA4MjAzOwogICAgICAgICAgICBiW2sgKyAyID4+IDFdID0gMDsKICAgICAgICAgICAgY1trICsgNCA+PiAyXSA9IDM7CiAgICAgICAgICAgIGNbayArIDggPj4gMl0gPSAyOwogICAgICAgICAgICBjW2sgKyAxMiA+PiAyXSA9IDI2MjE0NDsKICAgICAgICAgICAgY1trICsgMTYgPj4gMl0gPSAzOTMyMTY7CiAgICAgICAgICAgIGNbayArIDIwID4+IDJdID0gMDsKICAgICAgICAgICAgY1tqID4+IDJdID0gY1trID4+IDJdOwogICAgICAgICAgICBjW2ogKyA0ID4+IDJdID0gY1trICsgNCA+PiAyXTsKICAgICAgICAgICAgY1tqICsgOCA+PiAyXSA9IGNbayArIDggPj4gMl07CiAgICAgICAgICAgIGNbaiArIDEyID4+IDJdID0gY1trICsgMTIgPj4gMl07CiAgICAgICAgICAgIGNbaiArIDE2ID4+IDJdID0gY1trICsgMTYgPj4gMl07CiAgICAgICAgICAgIGNbaiArIDIwID4+IDJdID0gY1trICsgMjAgPj4gMl07CiAgICAgICAgICAgIGQgPSBjYihpLCBkLCBnLCBqKSB8IDA7CiAgICAgICAgICAgIGFiKGksIGQsIG0sIG4pOwogICAgICAgICAgICBiYihpLCBkLCBjW20gPj4gMl0gfCAwLCBjW24gPj4gMl0gfCAwKTsKICAgICAgICAgICAgcGIoZSwgaSwga2IoZCwgZikgfCAwKSB8IDA7CiAgICAgICAgICAgIGlmICgoaSB8IDApICE9IChsIHwgMCkpCiAgICAgICAgICAgICAgICBuYihpKTsKICAgICAgICAgICAgaWYgKChkIHwgMCkgPiAoZiB8IDApKSB7CiAgICAgICAgICAgICAgICBjW2cgPj4gMl0gPSAxNTsKICAgICAgICAgICAgICAgIG4gPSBkOwogICAgICAgICAgICAgICAgRSA9IG87CiAgICAgICAgICAgICAgICByZXR1cm4gbiB8IDA7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBuID0gcWIoZSwgZiwgZCwgZykgfCAwOwogICAgICAgICAgICAgICAgRSA9IG87CiAgICAgICAgICAgICAgICByZXR1cm4gbiB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgY1tnID4+IDJdID0gMTsKICAgICAgICBuID0gMDsKICAgICAgICBFID0gbzsKICAgICAgICByZXR1cm4gbiB8IDA7CiAgICB9CiAgICBmdW5jdGlvbiBaYShhKSB7CiAgICAgICAgYSA9IGEgfCAwOwogICAgICAgIHJldHVybiAoYSB8IDApID4gMCB8IDA7CiAgICB9CiAgICBmdW5jdGlvbiBfYShhKSB7CiAgICAgICAgYSA9IGEgfCAwOwogICAgICAgIHZhciBjID0gMDsKICAgICAgICBjID0gYSAmIDY1NTM1OwogICAgICAgIGlmICgoYSArIC0xNTcwICYgNjU1MzUpIDwgMTc4KSB7CiAgICAgICAgICAgIGMgPSBiWzE3MTIgKyAoYyArIC0xNTcwIDw8IDEpID4+IDFdIHwgMDsKICAgICAgICAgICAgcmV0dXJuIGMgfCAwOwogICAgICAgIH0KICAgICAgICBpZiAoYSA8PCAxNiA+PiAxNiA9PSA4MjA1KSB7CiAgICAgICAgICAgIGMgPSAzOwogICAgICAgICAgICByZXR1cm4gYyB8IDA7CiAgICAgICAgfQogICAgICAgIGlmICgoYSArIC04MzAxICYgNjU1MzUpIDwgMykgewogICAgICAgICAgICBjID0gNDsKICAgICAgICAgICAgcmV0dXJuIGMgfCAwOwogICAgICAgIH0KICAgICAgICBpZiAoKGEgKyAxMjAwICYgNjU1MzUpIDwgMjc1KSB7CiAgICAgICAgICAgIGMgPSBkWzIwODAgKyAoYyArIC02NDMzNikgPj4gMF0gfCAwOwogICAgICAgICAgICByZXR1cm4gYyB8IDA7CiAgICAgICAgfQogICAgICAgIGlmICgoYSArIDQwMCAmIDY1NTM1KSA+PSAxNDEpIHsKICAgICAgICAgICAgYyA9IDA7CiAgICAgICAgICAgIHJldHVybiBjIHwgMDsKICAgICAgICB9CiAgICAgICAgYyA9IGRbMjM2OCArIChjICsgLTY1MTM2KSA+PiAwXSB8IDA7CiAgICAgICAgcmV0dXJuIGMgfCAwOwogICAgfQogICAgZnVuY3Rpb24gJGEoYSwgYykgewogICAgICAgIGEgPSBhIHwgMDsKICAgICAgICBjID0gYyB8IDA7CiAgICAgICAgdmFyIGQgPSAwLCBlID0gMCwgZiA9IDAsIGcgPSAwLCBoID0gMDsKICAgICAgICBnID0gYyArIC0xIHwgMDsKICAgICAgICBmID0gMDsKICAgICAgICBkID0gYzsKICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICBpZiAoKGYgfCAwKSA+PSAoYyB8IDApKQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGUgPSBiW2EgKyAoZiA8PCAxKSA+PiAxXSB8IDA7CiAgICAgICAgICAgIGlmICgoZiB8IDApIDwgKGcgfCAwKSAmIGUgPDwgMTYgPj4gMTYgPT0gMTYwNCA/IChpYihiW2EgKyAoZiArIDEgPDwgMSkgPj4gMV0gfCAwKSB8IDApICE9IDAgOiAwKQogICAgICAgICAgICAgICAgaCA9IDY7CiAgICAgICAgICAgIGVsc2UgaWYgKGpiKGUpIHwgMCkKICAgICAgICAgICAgICAgIGggPSA2OwogICAgICAgICAgICBpZiAoKGggfCAwKSA9PSA2KSB7CiAgICAgICAgICAgICAgICBoID0gMDsKICAgICAgICAgICAgICAgIGQgPSBkICsgLTEgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGYgPSBmICsgMSB8IDA7CiAgICAgICAgfQogICAgICAgIHJldHVybiBkIHwgMDsKICAgIH0KICAgIGZ1bmN0aW9uIGFiKGEsIGQsIGUsIGYpIHsKICAgICAgICBhID0gYSB8IDA7CiAgICAgICAgZCA9IGQgfCAwOwogICAgICAgIGUgPSBlIHwgMDsKICAgICAgICBmID0gZiB8IDA7CiAgICAgICAgdmFyIGcgPSAwLCBoID0gMDsKICAgICAgICBoID0gMDsKICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICBnID0gKGggfCAwKSA8IChkIHwgMCk7CiAgICAgICAgICAgIGlmIChnICYgKGJbYSArIChoIDw8IDEpID4+IDFdIHwgMCkgPT0gMzIpCiAgICAgICAgICAgICAgICBoID0gaCArIDEgfCAwOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICB9CiAgICAgICAgaWYgKCFnKSB7CiAgICAgICAgICAgIGEgPSAwOwogICAgICAgICAgICBjW2UgPj4gMl0gPSBoOwogICAgICAgICAgICBjW2YgPj4gMl0gPSBhOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGcgPSAwOwogICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgIGQgPSBkICsgLTEgfCAwOwogICAgICAgICAgICBpZiAoKGJbYSArIChkIDw8IDEpID4+IDFdIHwgMCkgIT0gMzIpCiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgZyA9IGcgKyAxIHwgMDsKICAgICAgICB9CiAgICAgICAgY1tlID4+IDJdID0gaDsKICAgICAgICBjW2YgPj4gMl0gPSBnOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGZ1bmN0aW9uIGJiKGEsIGMsIGQsIGUpIHsKICAgICAgICBhID0gYSB8IDA7CiAgICAgICAgYyA9IGMgfCAwOwogICAgICAgIGQgPSBkIHwgMDsKICAgICAgICBlID0gZSB8IDA7CiAgICAgICAgdmFyIGYgPSAwLCBnID0gMDsKICAgICAgICBjID0gYyAtIGUgfCAwOwogICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgIGMgPSBjICsgLTEgfCAwOwogICAgICAgICAgICBpZiAoKGQgfCAwKSA+PSAoYyB8IDApKQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGcgPSBhICsgKGQgPDwgMSkgfCAwOwogICAgICAgICAgICBmID0gYltnID4+IDFdIHwgMDsKICAgICAgICAgICAgZSA9IGEgKyAoYyA8PCAxKSB8IDA7CiAgICAgICAgICAgIGJbZyA+PiAxXSA9IGJbZSA+PiAxXSB8IDA7CiAgICAgICAgICAgIGJbZSA+PiAxXSA9IGY7CiAgICAgICAgICAgIGQgPSBkICsgMSB8IDA7CiAgICAgICAgfQogICAgICAgIHJldHVybjsKICAgIH0KICAgIGZ1bmN0aW9uIGNiKGEsIGUsIGYsIGcpIHsKICAgICAgICBhID0gYSB8IDA7CiAgICAgICAgZSA9IGUgfCAwOwogICAgICAgIGYgPSBmIHwgMDsKICAgICAgICBnID0gZyB8IDA7CiAgICAgICAgdmFyIGggPSAwLCBpID0gMCwgaiA9IDAsIGsgPSAwLCBsID0gMCwgbSA9IDAsIG4gPSAwLCBvID0gMCwgcCA9IDAsIHEgPSAwLCByID0gMCwgcyA9IDAsIHQgPSAwLCB1ID0gMCwgdiA9IDAsIHcgPSAwLCB4ID0gMCwgeSA9IDAsIHogPSAwOwogICAgICAgIHogPSBFOwogICAgICAgIEUgPSBFICsgMzIgfCAwOwogICAgICAgIHggPSB6OwogICAgICAgIGogPSAwOwogICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgIGlmICgoaiB8IDApID49IChlIHwgMCkpCiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgayA9IGEgKyAoaiA8PCAxKSB8IDA7CiAgICAgICAgICAgIGggPSBiW2sgPj4gMV0gfCAwOwogICAgICAgICAgICBpID0gaCAmIDY1NTM1OwogICAgICAgICAgICBpZiAoKGggKyAxMjAwICYgNjU1MzUpIDwgMTc2KSB7CiAgICAgICAgICAgICAgICBoID0gYlsxMDA4ICsgKGkgKyAtNjQzMzYgPDwgMSkgPj4gMV0gfCAwOwogICAgICAgICAgICAgICAgaWYgKGggPDwgMTYgPj4gMTYpCiAgICAgICAgICAgICAgICAgICAgYltrID4+IDFdID0gaDsKICAgICAgICAgICAgfSBlbHNlIGlmICgoaCArIDQwMCAmIDY1NTM1KSA8IDE0MSkKICAgICAgICAgICAgICAgIGJbayA+PiAxXSA9IGJbMTM2MCArIChpICsgLTY1MTM2IDw8IDEpID4+IDFdIHwgMDsKICAgICAgICAgICAgaiA9IGogKyAxIHwgMDsKICAgICAgICB9CiAgICAgICAgbCA9IGUgKyAtMSB8IDA7CiAgICAgICAgdyA9IGw7CiAgICAgICAgaiA9IDA7CiAgICAgICAgaCA9IF9hKGJbYSArIChsIDw8IDEpID4+IDFdIHwgMCkgfCAwOwogICAgICAgIG0gPSAwOwogICAgICAgIHYgPSAwOwogICAgICAgIHIgPSAwOwogICAgICAgIHMgPSAwOwogICAgICAgIHAgPSAwOwogICAgICAgIGsgPSAtMjsKICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICBpZiAoKGwgfCAwKSA9PSAtMSkKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBvID0gaCAmIDY1NTM1OwogICAgICAgICAgICBpZiAoISgobyAmIDY1MjgwIHwgMCkgPT0gMCA/ICgoX2EoYlthICsgKGwgPDwgMSkgPj4gMV0gfCAwKSB8IDApICYgNCkgPT0gMCA6IDApKQogICAgICAgICAgICAgICAgeSA9IDEzOwogICAgICAgICAgICBkbwogICAgICAgICAgICAgICAgaWYgKCh5IHwgMCkgPT0gMTMpIHsKICAgICAgICAgICAgICAgICAgICB5ID0gMDsKICAgICAgICAgICAgICAgICAgICBuID0gbCArIC0xIHwgMDsKICAgICAgICAgICAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGsgfCAwKSA+PSAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgobiB8IDApID09IC0xKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gLTE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSAzMDAwOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IF9hKGJbYSArIChuIDw8IDEpID4+IDFdIHwgMCkgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IChqICYgNCkgPT0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBuICsgKCh1IF4gMSkgPDwgMzEgPj4gMzEpIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSB1ID8gbiA6IGs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgbiA9IGk7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKChtICYgMTYpID09IDAgfCAobyAmIDMyIHwgMCkgPT0gMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBhICsgKGwgPDwgMSkgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGViKGJbaCA+PiAxXSB8IDApIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGkgPDwgMTYgPj4gMTYpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IF9hKDApIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gdjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYltoID4+IDFdID0gLTE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYlthICsgKHcgPDwgMSkgPj4gMV0gPSBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBfYShpKSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdCA9IHY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbCA9IHc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB0ID0gbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHUgPSBwOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDApOwogICAgICAgICAgICAgICAgICAgIGlmICgobCB8IDApID4gMCkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGJbYSArIChsICsgLTEgPDwgMSkgPj4gMV0gfCAwKSA9PSAzMikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IGJbYSArIChsIDw8IDEpID4+IDFdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHEgPSAoZmIocCkgfCAwKSA9PSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IHAgPDwgMTYgPj4gMTYgPT0gMTU3NCAmIHEgPyAxIDogcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBxID8gcyA6IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKCFsKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBiW2EgPj4gMV0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBxID0gKGZiKHApIHwgMCkgPT0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgciA9IHAgPDwgMTYgPj4gMTYgPT0gMTU3NCAmIHEgPyAxIDogcjsKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHEgPyBzIDogMTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgbiA9IGogJiA2NTUzNTsKICAgICAgICAgICAgICAgICAgICBvID0gdCAmIDY1NTM1OwogICAgICAgICAgICAgICAgICAgIHEgPSBoICYgNjU1MzU7CiAgICAgICAgICAgICAgICAgICAgbSA9IHEgJiAzOwogICAgICAgICAgICAgICAgICAgIHAgPSBkWzE2NDggKyAoKG4gJiAzKSA8PCA0KSArICgobyAmIDMpIDw8IDIpICsgbSA+PiAwXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgaWYgKChtIHwgMCkgIT0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICBtID0gYSArIChsIDw8IDEpIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGJbbSA+PiAxXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnYihpKSB8IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKG8gJiAyIHwgMCkgPT0gMCB8IChuICYgMSB8IDApID09IDAgfCAoaSAmIC0yKSA8PCAxNiA+PiAxNiA9PSAxNjEyKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBvID4+PiA0ICYgMSBeIDEgfCBuID4+PiA1ICYgMSBeIDE7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGEgKyAobCA8PCAxKSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIHAgPSBwICYgMTsKICAgICAgICAgICAgICAgICAgICAgICAgbSA9IGk7CiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBiW2kgPj4gMV0gfCAwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoKChpIF4gMTUzNikgJiA2NTUzNSkgPCAyNTYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdiKGkpIHwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYlttID4+IDFdID0gcCArIDY1MTM2ICsgKGRbNzAxMzQgKyAoKGkgJiA2NTUzNSkgKyAtMTYxMSkgPj4gMF0gfCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpID0gcSA+Pj4gODsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHEgJiA4IHwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYlttID4+IDFdID0gcCArIGkgKyA2NDMzNjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IHU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGkgfCAwKSAhPSAwICYgKHEgJiA0IHwgMCkgPT0gMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYlttID4+IDFdID0gcCArIGkgKyA2NTEzNjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSB0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcCA9IHU7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gdDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHAgPSB1OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgbSA9IHQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHAgPSB1OwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgd2hpbGUgKDApOwogICAgICAgICAgICBpID0gKGggJiA0KSA9PSAwOwogICAgICAgICAgICBuID0gaSA/IG0gOiB2OwogICAgICAgICAgICBtID0gaSA/IGggOiBtOwogICAgICAgICAgICBpID0gaSA/IGwgOiB3OwogICAgICAgICAgICBvID0gbCArIC0xIHwgMDsKICAgICAgICAgICAgaWYgKChvIHwgMCkgIT0gKGsgfCAwKSkgewogICAgICAgICAgICAgICAgaWYgKGwpCiAgICAgICAgICAgICAgICAgICAgaCA9IF9hKGJbYSArIChvIDw8IDEpID4+IDFdIHwgMCkgfCAwOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgaCA9IGo7CiAgICAgICAgICAgICAgICBrID0gLTI7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgdyA9IGk7CiAgICAgICAgICAgIHYgPSBuOwogICAgICAgICAgICBsID0gbzsKICAgICAgICB9CiAgICAgICAgaWYgKHApIHsKICAgICAgICAgICAgY1t4ID4+IDJdID0gY1tnID4+IDJdOwogICAgICAgICAgICBjW3ggKyA0ID4+IDJdID0gY1tnICsgNCA+PiAyXTsKICAgICAgICAgICAgY1t4ICsgOCA+PiAyXSA9IGNbZyArIDggPj4gMl07CiAgICAgICAgICAgIGNbeCArIDEyID4+IDJdID0gY1tnICsgMTIgPj4gMl07CiAgICAgICAgICAgIGNbeCArIDE2ID4+IDJdID0gY1tnICsgMTYgPj4gMl07CiAgICAgICAgICAgIGNbeCArIDIwID4+IDJdID0gY1tnICsgMjAgPj4gMl07CiAgICAgICAgICAgIGUgPSBoYihhLCBlLCBmLCB4KSB8IDA7CiAgICAgICAgfQogICAgICAgIGlmICghKHIgfCBzKSkgewogICAgICAgICAgICB5ID0gZTsKICAgICAgICAgICAgRSA9IHo7CiAgICAgICAgICAgIHJldHVybiB5IHwgMDsKICAgICAgICB9CiAgICAgICAgeSA9IGRiKGUpIHwgMDsKICAgICAgICBFID0gejsKICAgICAgICByZXR1cm4geSB8IDA7CiAgICB9CiAgICBmdW5jdGlvbiBkYihhKSB7CiAgICAgICAgYSA9IGEgfCAwOwogICAgICAgIHJldHVybiBhIHwgMDsKICAgIH0KICAgIGZ1bmN0aW9uIGViKGEpIHsKICAgICAgICBhID0gYSB8IDA7CiAgICAgICAgc3dpdGNoIChhIDw8IDE2ID4+IDE2KSB7CiAgICAgICAgY2FzZSAxNTcwOiB7CiAgICAgICAgICAgICAgICBhID0gMTYyODsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgY2FzZSAxNTcxOiB7CiAgICAgICAgICAgICAgICBhID0gMTYyOTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgY2FzZSAxNTczOiB7CiAgICAgICAgICAgICAgICBhID0gMTYzMDsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgY2FzZSAxNTc1OiB7CiAgICAgICAgICAgICAgICBhID0gMTYzMTsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgYSA9IDA7CiAgICAgICAgfQogICAgICAgIHJldHVybiBhIHwgMDsKICAgIH0KICAgIGZ1bmN0aW9uIGZiKGEpIHsKICAgICAgICBhID0gYSB8IDA7CiAgICAgICAgcmV0dXJuIChhICsgLTE1ODcgJiA2NTUzNSkgPCA0IHwgMDsKICAgIH0KICAgIGZ1bmN0aW9uIGdiKGEpIHsKICAgICAgICBhID0gYSB8IDA7CiAgICAgICAgcmV0dXJuIChhICsgLTE2MTEgJiA2NTUzNSkgPCA4IHwgMDsKICAgIH0KICAgIGZ1bmN0aW9uIGhiKGEsIGQsIGUsIGYpIHsKICAgICAgICBhID0gYSB8IDA7CiAgICAgICAgZCA9IGQgfCAwOwogICAgICAgIGUgPSBlIHwgMDsKICAgICAgICBmID0gZiB8IDA7CiAgICAgICAgdmFyIGcgPSAwLCBoID0gMCwgaSA9IDAsIGogPSAwLCBrID0gMCwgbCA9IDAsIG0gPSAwLCBuID0gMDsKICAgICAgICBtID0gKGQgPDwgMSkgKyAyIHwgMDsKICAgICAgICBuID0gbGIobSkgfCAwOwogICAgICAgIGlmICghbikgewogICAgICAgICAgICBjW2UgPj4gMl0gPSA3OwogICAgICAgICAgICBuID0gMDsKICAgICAgICAgICAgcmV0dXJuIG4gfCAwOwogICAgICAgIH0KICAgICAgICBmYyhuIHwgMCwgMCwgbSB8IDApIHwgMDsKICAgICAgICBlID0gMDsKICAgICAgICBoID0gMDsKICAgICAgICBnID0gMDsKICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICBpZiAoKGcgfCAwKSA+PSAoZCB8IDApKQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGkgPSBiW2EgKyAoZyA8PCAxKSA+PiAxXSB8IDA7CiAgICAgICAgICAgIGlmIChpIDw8IDE2ID4+IDE2ID09IC0xKSB7CiAgICAgICAgICAgICAgICBlID0gZSArIDEgfCAwOwogICAgICAgICAgICAgICAgaCA9IGggKyAtMSB8IDA7CiAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgYltuICsgKGggPDwgMSkgPj4gMV0gPSBpOwogICAgICAgICAgICBoID0gaCArIDEgfCAwOwogICAgICAgICAgICBnID0gZyArIDEgfCAwOwogICAgICAgIH0KICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICBpZiAoKGUgfCAwKSA8PSAtMSkKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBiW24gKyAoZyA8PCAxKSA+PiAxXSA9IDA7CiAgICAgICAgICAgIGcgPSBnICsgLTEgfCAwOwogICAgICAgICAgICBlID0gZSArIC0xIHwgMDsKICAgICAgICB9CiAgICAgICAgcGIoYSwgbiwgZCkgfCAwOwogICAgICAgIGlmIChjW2YgKyA0ID4+IDJdIHwgMCkgewogICAgICAgICAgICBlID0gb2IoYSkgfCAwOwogICAgICAgICAgICBpZiAoIShjW2YgKyAxMiA+PiAyXSB8IDApKSB7CiAgICAgICAgICAgICAgICBqID0gMDsKICAgICAgICAgICAgICAgIGsgPSAxOwogICAgICAgICAgICAgICAgbCA9IDE1OwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgaiA9IDE7CiAgICAgICAgICAgIGsgPSAoY1tmICsgMTIgPj4gMl0gfCAwKSA9PSAwOwogICAgICAgICAgICBsID0gMTU7CiAgICAgICAgfQogICAgICAgIGlmICgobCB8IDApID09IDE1KSB7CiAgICAgICAgICAgIGZjKG4gfCAwLCAwLCBtIHwgMCkgfCAwOwogICAgICAgICAgICBlID0gZDsKICAgICAgICAgICAgZyA9IDA7CiAgICAgICAgICAgIGkgPSBkOwogICAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICAgICAgaWYgKChpIHwgMCkgPD0gLTEpCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICBoID0gYlthICsgKGkgPDwgMSkgPj4gMV0gfCAwOwogICAgICAgICAgICAgICAgaWYgKGogJiBoIDw8IDE2ID4+IDE2ID09IC0xIHwgayAmIGggPDwgMTYgPj4gMTYgPT0gLTIpIHsKICAgICAgICAgICAgICAgICAgICBlID0gZSArIDEgfCAwOwogICAgICAgICAgICAgICAgICAgIGcgPSBnICsgMSB8IDA7CiAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICBiW24gKyAoZSA8PCAxKSA+PiAxXSA9IGg7CiAgICAgICAgICAgICAgICBlID0gZSArIC0xIHwgMDsKICAgICAgICAgICAgICAgIGkgPSBpICsgLTEgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGUgPSAwOwogICAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICAgICAgaWYgKChlIHwgMCkgPj0gKGcgfCAwKSkKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGJbbiArIChlIDw8IDEpID4+IDFdID0gMzI7CiAgICAgICAgICAgICAgICBlID0gZSArIDEgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHBiKGEsIG4sIGQpIHwgMDsKICAgICAgICAgICAgZSA9IGQ7CiAgICAgICAgfQogICAgICAgIGsgPSAoY1tmICsgOCA+PiAyXSB8IDApID09IDA7CiAgICAgICAgZiA9IChjW2YgKyAxNiA+PiAyXSB8IDApID09IDA7CiAgICAgICAgaiA9IGYgfCBrIF4gMTsKICAgICAgICBpZiAoayB8IGYpIHsKICAgICAgICAgICAgZmMobiB8IDAsIDAsIG0gfCAwKSB8IDA7CiAgICAgICAgICAgIGggPSAwOwogICAgICAgICAgICBlID0gMDsKICAgICAgICAgICAgZyA9IDA7CiAgICAgICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgICAgICBpZiAoKGcgfCAwKSA+PSAoZCB8IDApKQogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgaSA9IGJbYSArIChnIDw8IDEpID4+IDFdIHwgMDsKICAgICAgICAgICAgICAgIGlmIChrICYgaSA8PCAxNiA+PiAxNiA9PSAtMSB8IGogJiBpIDw8IDE2ID4+IDE2ID09IC0yKSB7CiAgICAgICAgICAgICAgICAgICAgaCA9IGggKyAtMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgZSA9IGUgKyAxIHwgMDsKICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgIGJbbiArIChoIDw8IDEpID4+IDFdID0gaTsKICAgICAgICAgICAgICAgIGggPSBoICsgMSB8IDA7CiAgICAgICAgICAgICAgICBnID0gZyArIDEgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgICAgICBpZiAoKGUgfCAwKSA8PSAtMSkKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIGJbbiArIChnIDw8IDEpID4+IDFdID0gMzI7CiAgICAgICAgICAgICAgICBnID0gZyArIC0xIHwgMDsKICAgICAgICAgICAgICAgIGUgPSBlICsgLTEgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHBiKGEsIG4sIGQpIHwgMDsKICAgICAgICAgICAgZSA9IGQ7CiAgICAgICAgfQogICAgICAgIG5iKG4pOwogICAgICAgIG4gPSBlOwogICAgICAgIHJldHVybiBuIHwgMDsKICAgIH0KICAgIGZ1bmN0aW9uIGliKGEpIHsKICAgICAgICBhID0gYSB8IDA7CiAgICAgICAgc3dpdGNoIChhIDw8IDE2ID4+IDE2KSB7CiAgICAgICAgY2FzZSAxNTczOgogICAgICAgIGNhc2UgMTU3MToKICAgICAgICBjYXNlIDE1NzA6IHsKICAgICAgICAgICAgICAgIGEgPSAxOwogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIH0KICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICBhID0gYSA8PCAxNiA+PiAxNiA9PSAxNTc1ICYgMTsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGEgfCAwOwogICAgfQogICAgZnVuY3Rpb24gamIoYSkgewogICAgICAgIGEgPSBhIHwgMDsKICAgICAgICByZXR1cm4gKGEgJiAtMTYpIDw8IDE2ID4+IDE2ID09IC00MDAgfCAwOwogICAgfQogICAgZnVuY3Rpb24ga2IoYSwgYikgewogICAgICAgIGEgPSBhIHwgMDsKICAgICAgICBiID0gYiB8IDA7CiAgICAgICAgcmV0dXJuICgoYSB8IDApID4gKGIgfCAwKSA/IGIgOiBhKSB8IDA7CiAgICB9CiAgICBmdW5jdGlvbiBsYihhKSB7CiAgICAgICAgYSA9IGEgfCAwOwogICAgICAgIGlmICghYSkKICAgICAgICAgICAgYSA9IDcwMzM2OwogICAgICAgIGVsc2UKICAgICAgICAgICAgYSA9IEFiKGEpIHwgMDsKICAgICAgICByZXR1cm4gYSB8IDA7CiAgICB9CiAgICBmdW5jdGlvbiBtYihhLCBiKSB7CiAgICAgICAgYSA9IGEgfCAwOwogICAgICAgIGIgPSBiIHwgMDsKICAgICAgICBkbwogICAgICAgICAgICBpZiAoKGEgfCAwKSAhPSA3MDMzNikKICAgICAgICAgICAgICAgIGlmICghYikgewogICAgICAgICAgICAgICAgICAgIEJiKGEpOwogICAgICAgICAgICAgICAgICAgIGEgPSA3MDMzNjsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgYSA9IENiKGEsIGIpIHwgMDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgYSA9IGxiKGIpIHwgMDsKICAgICAgICB3aGlsZSAoMCk7CiAgICAgICAgcmV0dXJuIGEgfCAwOwogICAgfQogICAgZnVuY3Rpb24gbmIoYSkgewogICAgICAgIGEgPSBhIHwgMDsKICAgICAgICBpZiAoKGEgfCAwKSA9PSA3MDMzNikKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIEJiKGEpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGZ1bmN0aW9uIG9iKGEpIHsKICAgICAgICBhID0gYSB8IDA7CiAgICAgICAgdmFyIGMgPSAwOwogICAgICAgIGMgPSBhOwogICAgICAgIHdoaWxlICgxKQogICAgICAgICAgICBpZiAoIShiW2MgPj4gMV0gfCAwKSkKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICBjID0gYyArIDIgfCAwOwogICAgICAgIHJldHVybiBjIC0gYSA+PiAxIHwgMDsKICAgIH0KICAgIGZ1bmN0aW9uIHBiKGEsIGIsIGMpIHsKICAgICAgICBhID0gYSB8IDA7CiAgICAgICAgYiA9IGIgfCAwOwogICAgICAgIGMgPSBjIHwgMDsKICAgICAgICBpZiAoKGMgfCAwKSA8PSAwKQogICAgICAgICAgICByZXR1cm4gYSB8IDA7CiAgICAgICAgZWMoYSB8IDAsIGIgfCAwLCBjIDw8IDEgfCAwKSB8IDA7CiAgICAgICAgcmV0dXJuIGEgfCAwOwogICAgfQogICAgZnVuY3Rpb24gcWIoYSwgZCwgZSwgZikgewogICAgICAgIGEgPSBhIHwgMDsKICAgICAgICBkID0gZCB8IDA7CiAgICAgICAgZSA9IGUgfCAwOwogICAgICAgIGYgPSBmIHwgMDsKICAgICAgICBkbwogICAgICAgICAgICBpZiAoZiB8IDAgPyAhKChlIHwgMCkgPCAwIHwgKHJiKGNbZiA+PiAyXSB8IDApIHwgMCkgPDwgMjQgPj4gMjQgPT0gMCkgOiAwKSB7CiAgICAgICAgICAgICAgICBpZiAoKGUgfCAwKSA8IChkIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICBiW2EgKyAoZSA8PCAxKSA+PiAxXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgaWYgKChjW2YgPj4gMl0gfCAwKSAhPSAtMTI0KQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBjW2YgPj4gMl0gPSAwOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKChlIHwgMCkgPT0gKGQgfCAwKSkgewogICAgICAgICAgICAgICAgICAgIGNbZiA+PiAyXSA9IC0xMjQ7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGNbZiA+PiAyXSA9IDE1OwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgd2hpbGUgKDApOwogICAgICAgIHJldHVybiBlIHwgMDsKICAgIH0KICAgIGZ1bmN0aW9uIHJiKGEpIHsKICAgICAgICBhID0gYSB8IDA7CiAgICAgICAgcmV0dXJuIChhIHwgMCkgPCAxIHwgMDsKICAgIH0KICAgIGZ1bmN0aW9uIHNiKGEpIHsKICAgICAgICBhID0gYSB8IDA7CiAgICAgICAgdmFyIGMgPSAwOwogICAgICAgIGRvCiAgICAgICAgICAgIGlmIChhID4+PiAwID49IDU1Mjk2KSB7CiAgICAgICAgICAgICAgICBpZiAoYSA+Pj4gMCA8IDY1NTM2KSB7CiAgICAgICAgICAgICAgICAgICAgYyA9ICgoYSB8IDApIDwgNTYzMjAgPyAzMjAgOiAwKSArIChhID4+PiA1KSB8IDA7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoYSA+Pj4gMCA+IDExMTQxMTEpIHsKICAgICAgICAgICAgICAgICAgICBhID0gNDU5NjsKICAgICAgICAgICAgICAgICAgICBhID0gMjUxMiArIChhIDw8IDEpIHwgMDsKICAgICAgICAgICAgICAgICAgICBhID0gYlthID4+IDFdIHwgMDsKICAgICAgICAgICAgICAgICAgICBhID0gYSAmIDI1NTsKICAgICAgICAgICAgICAgICAgICBhID0gYSAmIDMxOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBhIHwgMDsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgYyA9IChhID4+PiA1ICYgNjMpICsgKGVbMjUxMiArICgoYSA+Pj4gMTEpICsgMjA4MCA8PCAxKSA+PiAxXSB8IDApIHwgMDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICBjID0gYSA+Pj4gNTsKICAgICAgICB3aGlsZSAoMCk7CiAgICAgICAgYSA9ICgoZVsyNTEyICsgKGMgPDwgMSkgPj4gMV0gfCAwKSA8PCAyKSArIChhICYgMzEpIHwgMDsKICAgICAgICBhID0gMjUxMiArIChhIDw8IDEpIHwgMDsKICAgICAgICBhID0gYlthID4+IDFdIHwgMDsKICAgICAgICBhID0gYSAmIDI1NTsKICAgICAgICBhID0gYSAmIDMxOwogICAgICAgIHJldHVybiBhIHwgMDsKICAgIH0KICAgIGZ1bmN0aW9uIHRiKGEpIHsKICAgICAgICBhID0gYSB8IDA7CiAgICAgICAgdmFyIGMgPSAwOwogICAgICAgIGRvCiAgICAgICAgICAgIGlmIChhID4+PiAwID49IDU1Mjk2KSB7CiAgICAgICAgICAgICAgICBpZiAoYSA+Pj4gMCA8IDY1NTM2KSB7CiAgICAgICAgICAgICAgICAgICAgYyA9ICgoYSB8IDApIDwgNTYzMjAgPyAzMjAgOiAwKSArIChhID4+PiA1KSB8IDA7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoYSA+Pj4gMCA+IDExMTQxMTEpIHsKICAgICAgICAgICAgICAgICAgICBhID0gMzY0NDsKICAgICAgICAgICAgICAgICAgICBhID0gNDU1ODQgKyAoYSA8PCAxKSB8IDA7CiAgICAgICAgICAgICAgICAgICAgYSA9IGJbYSA+PiAxXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgYSA9IGEgJiAzMTsKICAgICAgICAgICAgICAgICAgICBhID0gYSAmIDY1NTM1OwogICAgICAgICAgICAgICAgICAgIHJldHVybiBhIHwgMDsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgYyA9IChhID4+PiA1ICYgNjMpICsgKGVbNDU1ODQgKyAoKGEgPj4+IDExKSArIDIwODAgPDwgMSkgPj4gMV0gfCAwKSB8IDA7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgYyA9IGEgPj4+IDU7CiAgICAgICAgd2hpbGUgKDApOwogICAgICAgIGEgPSAoKGVbNDU1ODQgKyAoYyA8PCAxKSA+PiAxXSB8IDApIDw8IDIpICsgKGEgJiAzMSkgfCAwOwogICAgICAgIGEgPSA0NTU4NCArIChhIDw8IDEpIHwgMDsKICAgICAgICBhID0gYlthID4+IDFdIHwgMDsKICAgICAgICBhID0gYSAmIDMxOwogICAgICAgIGEgPSBhICYgNjU1MzU7CiAgICAgICAgcmV0dXJuIGEgfCAwOwogICAgfQogICAgZnVuY3Rpb24gdWIoYSkgewogICAgICAgIGEgPSBhIHwgMDsKICAgICAgICB2YXIgYyA9IDA7CiAgICAgICAgZG8KICAgICAgICAgICAgaWYgKGEgPj4+IDAgPj0gNTUyOTYpIHsKICAgICAgICAgICAgICAgIGlmIChhID4+PiAwIDwgNjU1MzYpIHsKICAgICAgICAgICAgICAgICAgICBjID0gKChhIHwgMCkgPCA1NjMyMCA/IDMyMCA6IDApICsgKGEgPj4+IDUpIHwgMDsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChhID4+PiAwID4gMTExNDExMSkgewogICAgICAgICAgICAgICAgICAgIGMgPSAzNjQ0OwogICAgICAgICAgICAgICAgICAgIGMgPSA0NTU4NCArIChjIDw8IDEpIHwgMDsKICAgICAgICAgICAgICAgICAgICBjID0gYltjID4+IDFdIHwgMDsKICAgICAgICAgICAgICAgICAgICBhID0gdmIoYSwgYykgfCAwOwogICAgICAgICAgICAgICAgICAgIHJldHVybiBhIHwgMDsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgYyA9IChhID4+PiA1ICYgNjMpICsgKGVbNDU1ODQgKyAoKGEgPj4+IDExKSArIDIwODAgPDwgMSkgPj4gMV0gfCAwKSB8IDA7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgYyA9IGEgPj4+IDU7CiAgICAgICAgd2hpbGUgKDApOwogICAgICAgIGMgPSAoKGVbNDU1ODQgKyAoYyA8PCAxKSA+PiAxXSB8IDApIDw8IDIpICsgKGEgJiAzMSkgfCAwOwogICAgICAgIGMgPSA0NTU4NCArIChjIDw8IDEpIHwgMDsKICAgICAgICBjID0gYltjID4+IDFdIHwgMDsKICAgICAgICBhID0gdmIoYSwgYykgfCAwOwogICAgICAgIHJldHVybiBhIHwgMDsKICAgIH0KICAgIGZ1bmN0aW9uIHZiKGEsIGIpIHsKICAgICAgICBhID0gYSB8IDA7CiAgICAgICAgYiA9IGIgfCAwOwogICAgICAgIHZhciBkID0gMCwgZSA9IDA7CiAgICAgICAgYiA9IGIgPDwgMTYgPj4gMTYgPj4gMTM7CiAgICAgICAgaWYgKChiIHwgMCkgIT0gLTQpIHsKICAgICAgICAgICAgZSA9IGIgKyBhIHwgMDsKICAgICAgICAgICAgcmV0dXJuIGUgfCAwOwogICAgICAgIH0KICAgICAgICBiID0gMDsKICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICBpZiAoYiA+Pj4gMCA+PSA0MCkgewogICAgICAgICAgICAgICAgYiA9IDg7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfQogICAgICAgICAgICBlID0gY1s0NTQyNCArIChiIDw8IDIpID4+IDJdIHwgMDsKICAgICAgICAgICAgZCA9IGUgJiAyMDk3MTUxOwogICAgICAgICAgICBpZiAoKGQgfCAwKSA9PSAoYSB8IDApKSB7CiAgICAgICAgICAgICAgICBiID0gNjsKICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgoZCB8IDApID4gKGEgfCAwKSkgewogICAgICAgICAgICAgICAgYiA9IDg7CiAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICBiID0gYiArIDEgfCAwOwogICAgICAgIH0KICAgICAgICBpZiAoKGIgfCAwKSA9PSA2KSB7CiAgICAgICAgICAgIGUgPSBjWzQ1NDI0ICsgKGUgPj4+IDIxIDw8IDIpID4+IDJdICYgMjA5NzE1MTsKICAgICAgICAgICAgcmV0dXJuIGUgfCAwOwogICAgICAgIH0gZWxzZSBpZiAoKGIgfCAwKSA9PSA4KQogICAgICAgICAgICByZXR1cm4gYSB8IDA7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CiAgICBmdW5jdGlvbiB3YihhKSB7CiAgICAgICAgYSA9IGEgfCAwOwogICAgICAgIHZhciBjID0gMCwgZCA9IDA7CiAgICAgICAgZG8KICAgICAgICAgICAgaWYgKGEgPj4+IDAgPj0gNTUyOTYpIHsKICAgICAgICAgICAgICAgIGlmIChhID4+PiAwIDwgNjU1MzYpIHsKICAgICAgICAgICAgICAgICAgICBjID0gKChhIHwgMCkgPCA1NjMyMCA/IDMyMCA6IDApICsgKGEgPj4+IDUpIHwgMDsKICAgICAgICAgICAgICAgICAgICBkID0gNzsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGlmIChhID4+PiAwID4gMTExNDExMSkKICAgICAgICAgICAgICAgICAgICBjID0gMzY0NDsKICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgIGMgPSAoYSA+Pj4gNSAmIDYzKSArIChlWzQ1NTg0ICsgKChhID4+PiAxMSkgKyAyMDgwIDw8IDEpID4+IDFdIHwgMCkgfCAwOwogICAgICAgICAgICAgICAgICAgIGQgPSA3OwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgYyA9IGEgPj4+IDU7CiAgICAgICAgICAgICAgICBkID0gNzsKICAgICAgICAgICAgfQogICAgICAgIHdoaWxlICgwKTsKICAgICAgICBpZiAoKGQgfCAwKSA9PSA3KQogICAgICAgICAgICBjID0gKChlWzQ1NTg0ICsgKGMgPDwgMSkgPj4gMV0gfCAwKSA8PCAyKSArIChhICYgMzEpIHwgMDsKICAgICAgICByZXR1cm4gKGJbNDU1ODQgKyAoYyA8PCAxKSA+PiAxXSAmIDc2OCkgPj4+IDggfCAwOwogICAgfQogICAgZnVuY3Rpb24geGIoYSkgewogICAgICAgIGEgPSBhIHwgMDsKICAgICAgICB2YXIgYyA9IDAsIGQgPSAwOwogICAgICAgIGRvCiAgICAgICAgICAgIGlmIChhID4+PiAwID49IDU1Mjk2KSB7CiAgICAgICAgICAgICAgICBpZiAoYSA+Pj4gMCA8IDY1NTM2KSB7CiAgICAgICAgICAgICAgICAgICAgYyA9ICgoYSB8IDApIDwgNTYzMjAgPyAzMjAgOiAwKSArIChhID4+PiA1KSB8IDA7CiAgICAgICAgICAgICAgICAgICAgZCA9IDc7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBpZiAoYSA+Pj4gMCA+IDExMTQxMTEpCiAgICAgICAgICAgICAgICAgICAgYyA9IDM2NDQ7CiAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBjID0gKGEgPj4+IDUgJiA2MykgKyAoZVs0NTU4NCArICgoYSA+Pj4gMTEpICsgMjA4MCA8PCAxKSA+PiAxXSB8IDApIHwgMDsKICAgICAgICAgICAgICAgICAgICBkID0gNzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGMgPSBhID4+PiA1OwogICAgICAgICAgICAgICAgZCA9IDc7CiAgICAgICAgICAgIH0KICAgICAgICB3aGlsZSAoMCk7CiAgICAgICAgaWYgKChkIHwgMCkgPT0gNykKICAgICAgICAgICAgYyA9ICgoZVs0NTU4NCArIChjIDw8IDEpID4+IDFdIHwgMCkgPDwgMikgKyAoYSAmIDMxKSB8IDA7CiAgICAgICAgYyA9IGJbNDU1ODQgKyAoYyA8PCAxKSA+PiAxXSB8IDA7CiAgICAgICAgaWYgKCEoYyAmIDc2OCkpCiAgICAgICAgICAgIHJldHVybiBhIHwgMDsKICAgICAgICBhID0gdmIoYSwgYykgfCAwOwogICAgICAgIHJldHVybiBhIHwgMDsKICAgIH0KICAgIGZ1bmN0aW9uIHliKGEpIHsKICAgICAgICBhID0gYSB8IDA7CiAgICAgICAgcmV0dXJuIHViKGEpIHwgMDsKICAgIH0KICAgIGZ1bmN0aW9uIHpiKGEpIHsKICAgICAgICBhID0gYSB8IDA7CiAgICAgICAgcmV0dXJuIHhiKGEpIHwgMDsKICAgIH0KICAgIGZ1bmN0aW9uIEFiKGEpIHsKICAgICAgICBhID0gYSB8IDA7CiAgICAgICAgdmFyIGIgPSAwLCBkID0gMCwgZSA9IDAsIGYgPSAwLCBnID0gMCwgaCA9IDAsIGkgPSAwLCBqID0gMCwgayA9IDAsIGwgPSAwLCBtID0gMCwgbiA9IDAsIG8gPSAwLCBwID0gMCwgcSA9IDAsIHIgPSAwLCBzID0gMCwgdCA9IDA7CiAgICAgICAgdCA9IEU7CiAgICAgICAgRSA9IEUgKyAxNiB8IDA7CiAgICAgICAgbiA9IHQ7CiAgICAgICAgZG8KICAgICAgICAgICAgaWYgKGEgPj4+IDAgPCAyNDUpIHsKICAgICAgICAgICAgICAgIGsgPSBhID4+PiAwIDwgMTEgPyAxNiA6IGEgKyAxMSAmIC04OwogICAgICAgICAgICAgICAgYSA9IGsgPj4+IDM7CiAgICAgICAgICAgICAgICBtID0gY1sxNzU5NF0gfCAwOwogICAgICAgICAgICAgICAgZCA9IG0gPj4+IGE7CiAgICAgICAgICAgICAgICBpZiAoZCAmIDMgfCAwKSB7CiAgICAgICAgICAgICAgICAgICAgYiA9IChkICYgMSBeIDEpICsgYSB8IDA7CiAgICAgICAgICAgICAgICAgICAgYSA9IDcwNDE2ICsgKGIgPDwgMSA8PCAyKSB8IDA7CiAgICAgICAgICAgICAgICAgICAgZCA9IGEgKyA4IHwgMDsKICAgICAgICAgICAgICAgICAgICBlID0gY1tkID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICBmID0gZSArIDggfCAwOwogICAgICAgICAgICAgICAgICAgIGcgPSBjW2YgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgIGlmICgoZyB8IDApID09IChhIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgICAgIGNbMTc1OTRdID0gbSAmIH4oMSA8PCBiKTsKICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgY1tnICsgMTIgPj4gMl0gPSBhOwogICAgICAgICAgICAgICAgICAgICAgICBjW2QgPj4gMl0gPSBnOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBzID0gYiA8PCAzOwogICAgICAgICAgICAgICAgICAgIGNbZSArIDQgPj4gMl0gPSBzIHwgMzsKICAgICAgICAgICAgICAgICAgICBzID0gZSArIHMgKyA0IHwgMDsKICAgICAgICAgICAgICAgICAgICBjW3MgPj4gMl0gPSBjW3MgPj4gMl0gfCAxOwogICAgICAgICAgICAgICAgICAgIHMgPSBmOwogICAgICAgICAgICAgICAgICAgIEUgPSB0OwogICAgICAgICAgICAgICAgICAgIHJldHVybiBzIHwgMDsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGwgPSBjWzE3NTk2XSB8IDA7CiAgICAgICAgICAgICAgICBpZiAoayA+Pj4gMCA+IGwgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICBpZiAoZCB8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgYiA9IDIgPDwgYTsKICAgICAgICAgICAgICAgICAgICAgICAgYiA9IGQgPDwgYSAmIChiIHwgMCAtIGIpOwogICAgICAgICAgICAgICAgICAgICAgICBiID0gKGIgJiAwIC0gYikgKyAtMSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBiID4+PiAxMiAmIDE2OwogICAgICAgICAgICAgICAgICAgICAgICBiID0gYiA+Pj4gaTsKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGIgPj4+IDUgJiA4OwogICAgICAgICAgICAgICAgICAgICAgICBiID0gYiA+Pj4gZDsKICAgICAgICAgICAgICAgICAgICAgICAgZyA9IGIgPj4+IDIgJiA0OwogICAgICAgICAgICAgICAgICAgICAgICBiID0gYiA+Pj4gZzsKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGIgPj4+IDEgJiAyOwogICAgICAgICAgICAgICAgICAgICAgICBiID0gYiA+Pj4gYTsKICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGIgPj4+IDEgJiAxOwogICAgICAgICAgICAgICAgICAgICAgICBlID0gKGQgfCBpIHwgZyB8IGEgfCBlKSArIChiID4+PiBlKSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGIgPSA3MDQxNiArIChlIDw8IDEgPDwgMikgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBhID0gYiArIDggfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBnID0gY1thID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGcgKyA4IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGNbaSA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZCB8IDApID09IChiIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBtICYgfigxIDw8IGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY1sxNzU5NF0gPSBhOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY1tkICsgMTIgPj4gMl0gPSBiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY1thID4+IDJdID0gZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBtOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBlIDw8IDM7CiAgICAgICAgICAgICAgICAgICAgICAgIGggPSBzIC0gayB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGNbZyArIDQgPj4gMl0gPSBrIHwgMzsKICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGcgKyBrIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgY1tmICsgNCA+PiAyXSA9IGggfCAxOwogICAgICAgICAgICAgICAgICAgICAgICBjW2cgKyBzID4+IDJdID0gaDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGwgfCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gY1sxNzU5OV0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IGwgPj4+IDM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gNzA0MTYgKyAoYiA8PCAxIDw8IDIpIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSAxIDw8IGI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShhICYgYikpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjWzE3NTk0XSA9IGEgfCBiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBkICsgOCB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBkICsgOCB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IGNbYSA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2EgPj4gMl0gPSBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY1tiICsgMTIgPj4gMl0gPSBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY1tlICsgOCA+PiAyXSA9IGI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2UgKyAxMiA+PiAyXSA9IGQ7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgY1sxNzU5Nl0gPSBoOwogICAgICAgICAgICAgICAgICAgICAgICBjWzE3NTk5XSA9IGY7CiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBpOwogICAgICAgICAgICAgICAgICAgICAgICBFID0gdDsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHMgfCAwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBnID0gY1sxNzU5NV0gfCAwOwogICAgICAgICAgICAgICAgICAgIGlmIChnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSAoZyAmIDAgLSBnKSArIC0xIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGQgPj4+IDEyICYgMTY7CiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBkID4+PiBmOwogICAgICAgICAgICAgICAgICAgICAgICBlID0gZCA+Pj4gNSAmIDg7CiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBkID4+PiBlOwogICAgICAgICAgICAgICAgICAgICAgICBoID0gZCA+Pj4gMiAmIDQ7CiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBkID4+PiBoOwogICAgICAgICAgICAgICAgICAgICAgICBpID0gZCA+Pj4gMSAmIDI7CiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBkID4+PiBpOwogICAgICAgICAgICAgICAgICAgICAgICBqID0gZCA+Pj4gMSAmIDE7CiAgICAgICAgICAgICAgICAgICAgICAgIGogPSBjWzcwNjgwICsgKChlIHwgZiB8IGggfCBpIHwgaikgKyAoZCA+Pj4gaikgPDwgMikgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBkID0gajsKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGo7CiAgICAgICAgICAgICAgICAgICAgICAgIGogPSAoY1tqICsgNCA+PiAyXSAmIC04KSAtIGsgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGNbZCArIDE2ID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBjW2QgKyAyMCA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSAoY1thICsgNCA+PiAyXSAmIC04KSAtIGsgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGggPj4+IDAgPCBqID4+PiAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gZiA/IGEgOiBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IGYgPyBoIDogajsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBoID0gaSArIGsgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoaCA+Pj4gMCA+IGkgPj4+IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBjW2kgKyAyNCA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gY1tpICsgMTIgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGIgfCAwKSA9PSAoaSB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBpICsgMjAgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gY1thID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gaSArIDE2IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBjW2EgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBiICsgMjAgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGNbZSA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gYiArIDE2IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gY1tlID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2EgPj4gMl0gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gYjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gY1tpICsgOCA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbZCArIDEyID4+IDJdID0gYjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1tiICsgOCA+PiAyXSA9IGQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYgfCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBjW2kgKyAyOCA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSA3MDY4MCArIChiIDw8IDIpIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChpIHwgMCkgPT0gKGNbYSA+PiAyXSB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2EgPj4gMl0gPSBkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1sxNzU5NV0gPSBnICYgfigxIDw8IGIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGYgKyAxNiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjWygoY1tzID4+IDJdIHwgMCkgPT0gKGkgfCAwKSA/IHMgOiBmICsgMjAgfCAwKSA+PiAyXSA9IGQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1tkICsgMjQgPj4gMl0gPSBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gY1tpICsgMTYgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYiB8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbZCArIDE2ID4+IDJdID0gYjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbYiArIDI0ID4+IDJdID0gZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gY1tpICsgMjAgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYiB8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbZCArIDIwID4+IDJdID0gYjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbYiArIDI0ID4+IDJdID0gZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChqID4+PiAwIDwgMTYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gaiArIGsgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbaSArIDQgPj4gMl0gPSBzIHwgMzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gaSArIHMgKyA0IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW3MgPj4gMl0gPSBjW3MgPj4gMl0gfCAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2kgKyA0ID4+IDJdID0gayB8IDM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1toICsgNCA+PiAyXSA9IGogfCAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbaCArIGogPj4gMl0gPSBqOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChsIHwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gY1sxNzU5OV0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gbCA+Pj4gMzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IDcwNDE2ICsgKGIgPDwgMSA8PCAyKSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSAxIDw8IGI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGIgJiBtKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1sxNzU5NF0gPSBiIHwgbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGQgKyA4IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBkICsgOCB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gY1thID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2EgPj4gMl0gPSBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2IgKyAxMiA+PiAyXSA9IGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbZSArIDggPj4gMl0gPSBiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2UgKyAxMiA+PiAyXSA9IGQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbMTc1OTZdID0gajsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjWzE3NTk5XSA9IGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gaSArIDggfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgRSA9IHQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcyB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IGs7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIG0gPSBrOwogICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgbSA9IGs7CiAgICAgICAgICAgIH0gZWxzZSBpZiAoYSA+Pj4gMCA8PSA0Mjk0OTY3MjMxKSB7CiAgICAgICAgICAgICAgICBhID0gYSArIDExIHwgMDsKICAgICAgICAgICAgICAgIGsgPSBhICYgLTg7CiAgICAgICAgICAgICAgICBlID0gY1sxNzU5NV0gfCAwOwogICAgICAgICAgICAgICAgaWYgKGUpIHsKICAgICAgICAgICAgICAgICAgICBmID0gMCAtIGsgfCAwOwogICAgICAgICAgICAgICAgICAgIGEgPSBhID4+PiA4OwogICAgICAgICAgICAgICAgICAgIGlmIChhKQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoayA+Pj4gMCA+IDE2Nzc3MjE1KQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IDMxOwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSAoYSArIDEwNDgzMjAgfCAwKSA+Pj4gMTYgJiA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGEgPDwgbTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSAociArIDUyMDE5MiB8IDApID4+PiAxNiAmIDQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gciA8PCBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaiA9IChyICsgMjQ1NzYwIHwgMCkgPj4+IDE2ICYgMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGogPSAxNCAtIChpIHwgbSB8IGopICsgKHIgPDwgaiA+Pj4gMTUpIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGogPSBrID4+PiAoaiArIDcgfCAwKSAmIDEgfCBqIDw8IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIGogPSAwOwogICAgICAgICAgICAgICAgICAgIGQgPSBjWzcwNjgwICsgKGogPDwgMikgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgIGE6CiAgICAgICAgICAgICAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gNjE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBrIDw8ICgoaiB8IDApID09IDMxID8gMCA6IDI1IC0gKGogPj4+IDEpIHwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IChjW2QgKyA0ID4+IDJdICYgLTgpIC0gayB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID4+PiAwIDwgZiA+Pj4gMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSA2NTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGNbZCArIDIwID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGNbZCArIDE2ICsgKGkgPj4+IDMxIDw8IDIpID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IChyIHwgMCkgPT0gMCB8IChyIHwgMCkgPT0gKGQgfCAwKSA/IGcgOiByOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IDYxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGkgPDwgMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgwKTsKICAgICAgICAgICAgICAgICAgICBpZiAoKHIgfCAwKSA9PSA2MSkgewogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGQgfCAwKSA9PSAwICYgKGEgfCAwKSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gMiA8PCBqOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IChhIHwgMCAtIGEpICYgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSBrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IChhICYgMCAtIGEpICsgLTEgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IG0gPj4+IDEyICYgMTY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gbSA+Pj4gaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBtID4+PiA1ICYgODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0gPSBtID4+PiBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IG0gPj4+IDIgJiA0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgbSA9IG0gPj4+IGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBqID0gbSA+Pj4gMSAmIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gbSA+Pj4gajsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBtID4+PiAxICYgMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGNbNzA2ODAgKyAoKGcgfCBoIHwgaSB8IGogfCBkKSArIChtID4+PiBkKSA8PCAyKSA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGggPSBmOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSA2NTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKChyIHwgMCkgPT0gNjUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZyA9IGQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtID0gKGNbZyArIDQgPj4gMl0gJiAtOCkgLSBrIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBtID4+PiAwIDwgZiA+Pj4gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBkID8gbSA6IGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gZCA/IGcgOiBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGNbZyArIDE2ID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gY1tnICsgMjAgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gZDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoKChpIHwgMCkgIT0gMCA/IGggPj4+IDAgPCAoKGNbMTc1OTZdIHwgMCkgLSBrIHwgMCkgPj4+IDAgOiAwKSA/IChsID0gaSArIGsgfCAwLCBsID4+PiAwID4gaSA+Pj4gMCkgOiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBjW2kgKyAyNCA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBjW2kgKyAxMiA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGIgfCAwKSA9PSAoaSB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGkgKyAyMCB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IGNbYSA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBpICsgMTYgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gY1thID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFiKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBiICsgMjAgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gY1tmID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gYiArIDE2IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBjW2YgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFkKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IGQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbYSA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBjW2kgKyA4ID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW3MgKyAxMiA+PiAyXSA9IGI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1tiICsgOCA+PiAyXSA9IHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGNbaSArIDI4ID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gNzA2ODAgKyAoYSA8PCAyKSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChpIHwgMCkgPT0gKGNbZCA+PiAyXSB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbZCA+PiAyXSA9IGI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGUgJiB+KDEgPDwgYSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjWzE3NTk1XSA9IGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBnICsgMTYgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjWygoY1tzID4+IDJdIHwgMCkgPT0gKGkgfCAwKSA/IHMgOiBnICsgMjAgfCAwKSA+PiAyXSA9IGI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2IgKyAyNCA+PiAyXSA9IGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGNbaSArIDE2ID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSB8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1tiICsgMTYgPj4gMl0gPSBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2EgKyAyNCA+PiAyXSA9IGI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBjW2kgKyAyMCA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1tiICsgMjAgPj4gMl0gPSBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2EgKyAyNCA+PiAyXSA9IGI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID4+PiAwIDwgMTYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGggKyBrIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1tpICsgNCA+PiAyXSA9IHMgfCAzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gaSArIHMgKyA0IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1tzID4+IDJdID0gY1tzID4+IDJdIHwgMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2kgKyA0ID4+IDJdID0gayB8IDM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbbCArIDQgPj4gMl0gPSBoIHwgMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1tsICsgaCA+PiAyXSA9IGg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBoID4+PiAzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaCA+Pj4gMCA8IDI1NikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IDcwNDE2ICsgKGIgPDwgMSA8PCAyKSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gY1sxNzU5NF0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IDEgPDwgYjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGEgJiBiKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbMTc1OTRdID0gYSB8IGI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IGQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGQgKyA4IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGQgKyA4IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gY1thID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbYSA+PiAyXSA9IGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2IgKyAxMiA+PiAyXSA9IGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2wgKyA4ID4+IDJdID0gYjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbbCArIDEyID4+IDJdID0gZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBoID4+PiA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID4+PiAwID4gMTY3NzcyMTUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IDMxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IChiICsgMTA0ODMyMCB8IDApID4+PiAxNiAmIDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGIgPDwgcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxID0gKHMgKyA1MjAxOTIgfCAwKSA+Pj4gMTYgJiA0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBzIDw8IHE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IChzICsgMjQ1NzYwIHwgMCkgPj4+IDE2ICYgMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gMTQgLSAocSB8IHIgfCBkKSArIChzIDw8IGQgPj4+IDE1KSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGggPj4+IChkICsgNyB8IDApICYgMSB8IGQgPDwgMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSA3MDY4MCArIChkIDw8IDIpIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1tsICsgMjggPj4gMl0gPSBkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gbCArIDE2IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1thICsgNCA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbYSA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAxIDw8IGQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGEgJiBlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1sxNzU5NV0gPSBhIHwgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbYiA+PiAyXSA9IGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2wgKyAyNCA+PiAyXSA9IGI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2wgKyAxMiA+PiAyXSA9IGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2wgKyA4ID4+IDJdID0gbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBjW2IgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGNbYiArIDQgPj4gMl0gJiAtOCB8IDApICE9IChoIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGggPDwgKChkIHwgMCkgPT0gMzEgPyAwIDogMjUgLSAoZCA+Pj4gMSkgfCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBiICsgMTYgKyAoZSA+Pj4gMzEgPDwgMikgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGNbZCA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGNbYSArIDQgPj4gMl0gJiAtOCB8IDApID09IChoIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBjOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gZSA8PCAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbZCA+PiAyXSA9IGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbbCArIDI0ID4+IDJdID0gYjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1tsICsgMTIgPj4gMl0gPSBsOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2wgKyA4ID4+IDJdID0gbDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBiICsgOCB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBjW3IgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW3MgKyAxMiA+PiAyXSA9IGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbciA+PiAyXSA9IGw7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbbCArIDggPj4gMl0gPSBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2wgKyAxMiA+PiAyXSA9IGI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbbCArIDI0ID4+IDJdID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBpICsgOCB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIEUgPSB0OwogICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gcyB8IDA7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgIG0gPSBrOwogICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgbSA9IGs7CiAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgbSA9IC0xOwogICAgICAgIHdoaWxlICgwKTsKICAgICAgICBkID0gY1sxNzU5Nl0gfCAwOwogICAgICAgIGlmIChkID4+PiAwID49IG0gPj4+IDApIHsKICAgICAgICAgICAgYiA9IGQgLSBtIHwgMDsKICAgICAgICAgICAgYSA9IGNbMTc1OTldIHwgMDsKICAgICAgICAgICAgaWYgKGIgPj4+IDAgPiAxNSkgewogICAgICAgICAgICAgICAgcyA9IGEgKyBtIHwgMDsKICAgICAgICAgICAgICAgIGNbMTc1OTldID0gczsKICAgICAgICAgICAgICAgIGNbMTc1OTZdID0gYjsKICAgICAgICAgICAgICAgIGNbcyArIDQgPj4gMl0gPSBiIHwgMTsKICAgICAgICAgICAgICAgIGNbYSArIGQgPj4gMl0gPSBiOwogICAgICAgICAgICAgICAgY1thICsgNCA+PiAyXSA9IG0gfCAzOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgY1sxNzU5Nl0gPSAwOwogICAgICAgICAgICAgICAgY1sxNzU5OV0gPSAwOwogICAgICAgICAgICAgICAgY1thICsgNCA+PiAyXSA9IGQgfCAzOwogICAgICAgICAgICAgICAgcyA9IGEgKyBkICsgNCB8IDA7CiAgICAgICAgICAgICAgICBjW3MgPj4gMl0gPSBjW3MgPj4gMl0gfCAxOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHMgPSBhICsgOCB8IDA7CiAgICAgICAgICAgIEUgPSB0OwogICAgICAgICAgICByZXR1cm4gcyB8IDA7CiAgICAgICAgfQogICAgICAgIGggPSBjWzE3NTk3XSB8IDA7CiAgICAgICAgaWYgKGggPj4+IDAgPiBtID4+PiAwKSB7CiAgICAgICAgICAgIHEgPSBoIC0gbSB8IDA7CiAgICAgICAgICAgIGNbMTc1OTddID0gcTsKICAgICAgICAgICAgcyA9IGNbMTc2MDBdIHwgMDsKICAgICAgICAgICAgciA9IHMgKyBtIHwgMDsKICAgICAgICAgICAgY1sxNzYwMF0gPSByOwogICAgICAgICAgICBjW3IgKyA0ID4+IDJdID0gcSB8IDE7CiAgICAgICAgICAgIGNbcyArIDQgPj4gMl0gPSBtIHwgMzsKICAgICAgICAgICAgcyA9IHMgKyA4IHwgMDsKICAgICAgICAgICAgRSA9IHQ7CiAgICAgICAgICAgIHJldHVybiBzIHwgMDsKICAgICAgICB9CiAgICAgICAgaWYgKCEoY1sxNzcxMl0gfCAwKSkgewogICAgICAgICAgICBjWzE3NzE0XSA9IDQwOTY7CiAgICAgICAgICAgIGNbMTc3MTNdID0gNDA5NjsKICAgICAgICAgICAgY1sxNzcxNV0gPSAtMTsKICAgICAgICAgICAgY1sxNzcxNl0gPSAtMTsKICAgICAgICAgICAgY1sxNzcxN10gPSAwOwogICAgICAgICAgICBjWzE3NzA1XSA9IDA7CiAgICAgICAgICAgIGNbMTc3MTJdID0gbiAmIC0xNiBeIDE0MzE2NTU3Njg7CiAgICAgICAgICAgIGEgPSA0MDk2OwogICAgICAgIH0gZWxzZQogICAgICAgICAgICBhID0gY1sxNzcxNF0gfCAwOwogICAgICAgIGkgPSBtICsgNDggfCAwOwogICAgICAgIGogPSBtICsgNDcgfCAwOwogICAgICAgIGcgPSBhICsgaiB8IDA7CiAgICAgICAgZiA9IDAgLSBhIHwgMDsKICAgICAgICBrID0gZyAmIGY7CiAgICAgICAgaWYgKGsgPj4+IDAgPD0gbSA+Pj4gMCkgewogICAgICAgICAgICBzID0gMDsKICAgICAgICAgICAgRSA9IHQ7CiAgICAgICAgICAgIHJldHVybiBzIHwgMDsKICAgICAgICB9CiAgICAgICAgYSA9IGNbMTc3MDRdIHwgMDsKICAgICAgICBpZiAoYSB8IDAgPyAobCA9IGNbMTc3MDJdIHwgMCwgbiA9IGwgKyBrIHwgMCwgbiA+Pj4gMCA8PSBsID4+PiAwIHwgbiA+Pj4gMCA+IGEgPj4+IDApIDogMCkgewogICAgICAgICAgICBzID0gMDsKICAgICAgICAgICAgRSA9IHQ7CiAgICAgICAgICAgIHJldHVybiBzIHwgMDsKICAgICAgICB9CiAgICAgICAgZDoKICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgIGlmICghKGNbMTc3MDVdICYgNCkpIHsKICAgICAgICAgICAgICAgICAgICBlID0gY1sxNzYwMF0gfCAwOwogICAgICAgICAgICAgICAgICAgIGU6CiAgICAgICAgICAgICAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSA3MDgyNDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gY1thID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGQgPj4+IDAgPD0gZSA+Pj4gMCA/IChxID0gYSArIDQgfCAwLCAoZCArIChjW3EgPj4gMl0gfCAwKSB8IDApID4+PiAwID4gZSA+Pj4gMCkgOiAwKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBjW2EgKyA4ID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gMTI4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gZyAtIGggJiBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChiID4+PiAwIDwgMjE0NzQ4MzY0NykgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gZ2MoYiB8IDApIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChlIHwgMCkgPT0gKChjW2EgPj4gMl0gfCAwKSArIChjW3EgPj4gMl0gfCAwKSB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGUgfCAwKSAhPSAoLTEgfCAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAxMzY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IDEyODsKICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDApOwogICAgICAgICAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICAgICAgICAgIGlmICgociB8IDApID09IDEyOCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGdjKDApIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoYSB8IDApICE9ICgtMSB8IDApID8gKGIgPSBhLCBvID0gY1sxNzcxM10gfCAwLCBwID0gbyArIC0xIHwgMCwgYiA9ICgocCAmIGIgfCAwKSA9PSAwID8gMCA6IChwICsgYiAmIDAgLSBvKSAtIGIgfCAwKSArIGsgfCAwLCBvID0gY1sxNzcwMl0gfCAwLCBwID0gYiArIG8gfCAwLCBiID4+PiAwID4gbSA+Pj4gMCAmIGIgPj4+IDAgPCAyMTQ3NDgzNjQ3KSA6IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxID0gY1sxNzcwNF0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChxIHwgMCA/IHAgPj4+IDAgPD0gbyA+Pj4gMCB8IHAgPj4+IDAgPiBxID4+PiAwIDogMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBnYyhiIHwgMCkgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZSB8IDApID09IChhIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAxMzY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHdoaWxlICgwKTsKICAgICAgICAgICAgICAgICAgICBkbwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKHIgfCAwKSA9PSAxMzYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSAwIC0gYiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShpID4+PiAwID4gYiA+Pj4gMCAmIChiID4+PiAwIDwgMjE0NzQ4MzY0NyAmIChlIHwgMCkgIT0gKC0xIHwgMCkpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGUgfCAwKSA9PSAoLTEgfCAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gY1sxNzcxNF0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGogLSBiICsgYSAmIDAgLSBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGEgPj4+IDAgPj0gMjE0NzQ4MzY0NykKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChnYyhhIHwgMCkgfCAwKSA9PSAoLTEgfCAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdjKGQgfCAwKSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBhICsgYiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHdoaWxlICgwKTsKICAgICAgICAgICAgICAgICAgICBjWzE3NzA1XSA9IGNbMTc3MDVdIHwgNDsKICAgICAgICAgICAgICAgICAgICByID0gMTQzOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBiID0gMDsKICAgICAgICAgICAgICAgICAgICByID0gMTQzOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB3aGlsZSAoMCk7CiAgICAgICAgaWYgKChyIHwgMCkgPT0gMTQzKSB7CiAgICAgICAgICAgIGlmIChrID4+PiAwID49IDIxNDc0ODM2NDcpIHsKICAgICAgICAgICAgICAgIHMgPSAwOwogICAgICAgICAgICAgICAgRSA9IHQ7CiAgICAgICAgICAgICAgICByZXR1cm4gcyB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZSA9IGdjKGsgfCAwKSB8IDA7CiAgICAgICAgICAgIHEgPSBnYygwKSB8IDA7CiAgICAgICAgICAgIGEgPSBxIC0gZSB8IDA7CiAgICAgICAgICAgIGQgPSBhID4+PiAwID4gKG0gKyA0MCB8IDApID4+PiAwOwogICAgICAgICAgICBpZiAoKGUgfCAwKSA9PSAoLTEgfCAwKSB8IGQgXiAxIHwgZSA+Pj4gMCA8IHEgPj4+IDAgJiAoKGUgfCAwKSAhPSAoLTEgfCAwKSAmIChxIHwgMCkgIT0gKC0xIHwgMCkpIF4gMSkgewogICAgICAgICAgICAgICAgcyA9IDA7CiAgICAgICAgICAgICAgICBFID0gdDsKICAgICAgICAgICAgICAgIHJldHVybiBzIHwgMDsKICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICBiID0gZCA/IGEgOiBiOwogICAgICAgIH0KICAgICAgICBhID0gKGNbMTc3MDJdIHwgMCkgKyBiIHwgMDsKICAgICAgICBjWzE3NzAyXSA9IGE7CiAgICAgICAgaWYgKGEgPj4+IDAgPiAoY1sxNzcwM10gfCAwKSA+Pj4gMCkKICAgICAgICAgICAgY1sxNzcwM10gPSBhOwogICAgICAgIGogPSBjWzE3NjAwXSB8IDA7CiAgICAgICAgZjoKICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgIGlmIChqKSB7CiAgICAgICAgICAgICAgICAgICAgYSA9IDcwODI0OwogICAgICAgICAgICAgICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBjW2EgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBmID0gYSArIDQgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBnID0gY1tmID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChlIHwgMCkgPT0gKGQgKyBnIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAxNTQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBoID0gY1thICsgOCA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gaDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKCgociB8IDApID09IDE1NCA/IChjW2EgKyAxMiA+PiAyXSAmIDggfCAwKSA9PSAwIDogMCkgPyBlID4+PiAwID4gaiA+Pj4gMCAmIGQgPj4+IDAgPD0gaiA+Pj4gMCA6IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgY1tmID4+IDJdID0gZyArIGI7CiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSAoY1sxNzU5N10gfCAwKSArIGIgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBxID0gaiArIDggfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBxID0gKHEgJiA3IHwgMCkgPT0gMCA/IDAgOiAwIC0gcSAmIDc7CiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBqICsgcSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIHEgPSBzIC0gcSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGNbMTc2MDBdID0gcjsKICAgICAgICAgICAgICAgICAgICAgICAgY1sxNzU5N10gPSBxOwogICAgICAgICAgICAgICAgICAgICAgICBjW3IgKyA0ID4+IDJdID0gcSB8IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIGNbaiArIHMgKyA0ID4+IDJdID0gNDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGNbMTc2MDFdID0gY1sxNzcxNl07CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoZSA+Pj4gMCA8IChjWzE3NTk4XSB8IDApID4+PiAwKQogICAgICAgICAgICAgICAgICAgICAgICBjWzE3NTk4XSA9IGU7CiAgICAgICAgICAgICAgICAgICAgZiA9IGUgKyBiIHwgMDsKICAgICAgICAgICAgICAgICAgICBhID0gNzA4MjQ7CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChjW2EgPj4gMl0gfCAwKSA9PSAoZiB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICByID0gMTYyOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGNbYSArIDggPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGlmICgociB8IDApID09IDE2MiA/IChjW2EgKyAxMiA+PiAyXSAmIDggfCAwKSA9PSAwIDogMCkgewogICAgICAgICAgICAgICAgICAgICAgICBjW2EgPj4gMl0gPSBlOwogICAgICAgICAgICAgICAgICAgICAgICBsID0gYSArIDQgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBjW2wgPj4gMl0gPSAoY1tsID4+IDJdIHwgMCkgKyBiOwogICAgICAgICAgICAgICAgICAgICAgICBsID0gZSArIDggfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBsID0gZSArICgobCAmIDcgfCAwKSA9PSAwID8gMCA6IDAgLSBsICYgNykgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBiID0gZiArIDggfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBiID0gZiArICgoYiAmIDcgfCAwKSA9PSAwID8gMCA6IDAgLSBiICYgNykgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBrID0gbCArIG0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBpID0gYiAtIGwgLSBtIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgY1tsICsgNCA+PiAyXSA9IG0gfCAzOwogICAgICAgICAgICAgICAgICAgICAgICBnOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGogfCAwKSA9PSAoYiB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSAoY1sxNzU5N10gfCAwKSArIGkgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjWzE3NTk3XSA9IHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbMTc2MDBdID0gazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1trICsgNCA+PiAyXSA9IHMgfCAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoY1sxNzU5OV0gfCAwKSA9PSAoYiB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gKGNbMTc1OTZdIHwgMCkgKyBpIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbMTc1OTZdID0gczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbMTc1OTldID0gazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbayArIDQgPj4gMl0gPSBzIHwgMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbayArIHMgPj4gMl0gPSBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGNbYiArIDQgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGEgJiAzIHwgMCkgPT0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaCA9IGEgJiAtODsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBhID4+PiAzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSA+Pj4gMCA8IDI1NikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGNbYiArIDggPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGNbYiArIDEyID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoZCB8IDApID09IChhIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjWzE3NTk0XSA9IGNbMTc1OTRdICYgfigxIDw8IGUpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2EgKyAxMiA+PiAyXSA9IGQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1tkICsgOCA+PiAyXSA9IGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnID0gY1tiICsgMjQgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGNbYiArIDEyID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChhIHwgMCkgPT0gKGIgfCAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gYiArIDE2IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGQgKyA0IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGNbZSA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGNbZCA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBhICsgMjAgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGNbZiA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWUpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gYSArIDE2IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gY1tmID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2QgPj4gMl0gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBjW2IgKyA4ID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1tzICsgMTIgPj4gMl0gPSBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2EgKyA4ID4+IDJdID0gczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWcpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gY1tiICsgMjggPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IDcwNjgwICsgKGQgPDwgMikgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGNbZSA+PiAyXSB8IDApICE9IChiIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGcgKyAxNiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbKChjW3MgPj4gMl0gfCAwKSA9PSAoYiB8IDApID8gcyA6IGcgKyAyMCB8IDApID4+IDJdID0gYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFhKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2UgPj4gMl0gPSBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoYSB8IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1sxNzU5NV0gPSBjWzE3NTk1XSAmIH4oMSA8PCBkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2EgKyAyNCA+PiAyXSA9IGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gYiArIDE2IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBjW2QgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGUgfCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1thICsgMTYgPj4gMl0gPSBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbZSArIDI0ID4+IDJdID0gYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBjW2QgKyA0ID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbYSArIDIwID4+IDJdID0gZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbZCArIDI0ID4+IDJdID0gYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBiICsgaCB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gaCArIGkgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gYiArIDQgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2IgPj4gMl0gPSBjW2IgPj4gMl0gJiAtMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1trICsgNCA+PiAyXSA9IGYgfCAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2sgKyBmID4+IDJdID0gZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IGYgPj4+IDM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChmID4+PiAwIDwgMjU2KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gNzA0MTYgKyAoYiA8PCAxIDw8IDIpIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBjWzE3NTk0XSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gMSA8PCBiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoYSAmIGIpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1sxNzU5NF0gPSBhIHwgYjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gZCArIDggfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gZCArIDggfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBjW2EgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1thID4+IDJdID0gazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbYiArIDEyID4+IDJdID0gazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbayArIDggPj4gMl0gPSBiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1trICsgMTIgPj4gMl0gPSBkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IGYgPj4+IDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZiA+Pj4gMCA+IDE2Nzc3MjE1KSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSAzMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSAoYiArIDEwNDgzMjAgfCAwKSA+Pj4gMTYgJiA4OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBiIDw8IHI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcSA9IChzICsgNTIwMTkyIHwgMCkgPj4+IDE2ICYgNDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gcyA8PCBxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSAocyArIDI0NTc2MCB8IDApID4+PiAxNiAmIDI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IDE0IC0gKHEgfCByIHwgZSkgKyAocyA8PCBlID4+PiAxNSkgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBmID4+PiAoZSArIDcgfCAwKSAmIDEgfCBlIDw8IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IDcwNjgwICsgKGUgPDwgMikgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2sgKyAyOCA+PiAyXSA9IGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBrICsgMTYgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2EgKyA0ID4+IDJdID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1thID4+IDJdID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGNbMTc1OTVdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IDEgPDwgZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCEoYSAmIGQpKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjWzE3NTk1XSA9IGEgfCBkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1tiID4+IDJdID0gazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbayArIDI0ID4+IDJdID0gYjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbayArIDEyID4+IDJdID0gazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbayArIDggPj4gMl0gPSBrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IGNbYiA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoY1tiICsgNCA+PiAyXSAmIC04IHwgMCkgIT0gKGYgfCAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gZiA8PCAoKGUgfCAwKSA9PSAzMSA/IDAgOiAyNSAtIChlID4+PiAxKSB8IDApOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGIgKyAxNiArIChlID4+PiAzMSA8PCAyKSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gY1tkID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoY1thICsgNCA+PiAyXSAmIC04IHwgMCkgPT0gKGYgfCAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBlIDw8IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1tkID4+IDJdID0gazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1trICsgMjQgPj4gMl0gPSBiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2sgKyAxMiA+PiAyXSA9IGs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbayArIDggPj4gMl0gPSBrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IGIgKyA4IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGNbciA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbcyArIDEyID4+IDJdID0gazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1tyID4+IDJdID0gazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1trICsgOCA+PiAyXSA9IHM7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbayArIDEyID4+IDJdID0gYjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1trICsgMjQgPj4gMl0gPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgwKTsKICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGwgKyA4IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgRSA9IHQ7CiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzIHwgMDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgYSA9IDcwODI0OwogICAgICAgICAgICAgICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBjW2EgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZCA+Pj4gMCA8PSBqID4+PiAwID8gKHMgPSBkICsgKGNbYSArIDQgPj4gMl0gfCAwKSB8IDAsIHMgPj4+IDAgPiBqID4+PiAwKSA6IDApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGNbYSArIDggPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBmID0gcyArIC00NyB8IDA7CiAgICAgICAgICAgICAgICAgICAgYSA9IGYgKyA4IHwgMDsKICAgICAgICAgICAgICAgICAgICBhID0gZiArICgoYSAmIDcgfCAwKSA9PSAwID8gMCA6IDAgLSBhICYgNykgfCAwOwogICAgICAgICAgICAgICAgICAgIGYgPSBqICsgMTYgfCAwOwogICAgICAgICAgICAgICAgICAgIGEgPSBhID4+PiAwIDwgZiA+Pj4gMCA/IGogOiBhOwogICAgICAgICAgICAgICAgICAgIHIgPSBhICsgOCB8IDA7CiAgICAgICAgICAgICAgICAgICAgZCA9IGIgKyAtNDAgfCAwOwogICAgICAgICAgICAgICAgICAgIHAgPSBlICsgOCB8IDA7CiAgICAgICAgICAgICAgICAgICAgcCA9IChwICYgNyB8IDApID09IDAgPyAwIDogMCAtIHAgJiA3OwogICAgICAgICAgICAgICAgICAgIHEgPSBlICsgcCB8IDA7CiAgICAgICAgICAgICAgICAgICAgcCA9IGQgLSBwIHwgMDsKICAgICAgICAgICAgICAgICAgICBjWzE3NjAwXSA9IHE7CiAgICAgICAgICAgICAgICAgICAgY1sxNzU5N10gPSBwOwogICAgICAgICAgICAgICAgICAgIGNbcSArIDQgPj4gMl0gPSBwIHwgMTsKICAgICAgICAgICAgICAgICAgICBjW2UgKyBkICsgNCA+PiAyXSA9IDQwOwogICAgICAgICAgICAgICAgICAgIGNbMTc2MDFdID0gY1sxNzcxNl07CiAgICAgICAgICAgICAgICAgICAgZCA9IGEgKyA0IHwgMDsKICAgICAgICAgICAgICAgICAgICBjW2QgPj4gMl0gPSAyNzsKICAgICAgICAgICAgICAgICAgICBjW3IgPj4gMl0gPSBjWzE3NzA2XTsKICAgICAgICAgICAgICAgICAgICBjW3IgKyA0ID4+IDJdID0gY1sxNzcwN107CiAgICAgICAgICAgICAgICAgICAgY1tyICsgOCA+PiAyXSA9IGNbMTc3MDhdOwogICAgICAgICAgICAgICAgICAgIGNbciArIDEyID4+IDJdID0gY1sxNzcwOV07CiAgICAgICAgICAgICAgICAgICAgY1sxNzcwNl0gPSBlOwogICAgICAgICAgICAgICAgICAgIGNbMTc3MDddID0gYjsKICAgICAgICAgICAgICAgICAgICBjWzE3NzA5XSA9IDA7CiAgICAgICAgICAgICAgICAgICAgY1sxNzcwOF0gPSByOwogICAgICAgICAgICAgICAgICAgIGIgPSBhICsgMjQgfCAwOwogICAgICAgICAgICAgICAgICAgIGRvIHsKICAgICAgICAgICAgICAgICAgICAgICAgciA9IGI7CiAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBiICsgNCB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGNbYiA+PiAyXSA9IDc7CiAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoKHIgKyA4IHwgMCkgPj4+IDAgPCBzID4+PiAwKTsKICAgICAgICAgICAgICAgICAgICBpZiAoKGEgfCAwKSAhPSAoaiB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBhIC0gaiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGNbZCA+PiAyXSA9IGNbZCA+PiAyXSAmIC0yOwogICAgICAgICAgICAgICAgICAgICAgICBjW2ogKyA0ID4+IDJdID0gZyB8IDE7CiAgICAgICAgICAgICAgICAgICAgICAgIGNbYSA+PiAyXSA9IGc7CiAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBnID4+PiAzOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoZyA+Pj4gMCA8IDI1NikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IDcwNDE2ICsgKGIgPDwgMSA8PCAyKSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gY1sxNzU5NF0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IDEgPDwgYjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGEgJiBiKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbMTc1OTRdID0gYSB8IGI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IGQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGQgKyA4IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGQgKyA4IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gY1thID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbYSA+PiAyXSA9IGo7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2IgKyAxMiA+PiAyXSA9IGo7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2ogKyA4ID4+IDJdID0gYjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbaiArIDEyID4+IDJdID0gZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBnID4+PiA4OwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYikKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChnID4+PiAwID4gMTY3NzcyMTUpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IDMxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciA9IChiICsgMTA0ODMyMCB8IDApID4+PiAxNiAmIDg7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IGIgPDwgcjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxID0gKHMgKyA1MjAxOTIgfCAwKSA+Pj4gMTYgJiA0OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBzIDw8IHE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IChzICsgMjQ1NzYwIHwgMCkgPj4+IDE2ICYgMjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gMTQgLSAocSB8IHIgfCBlKSArIChzIDw8IGUgPj4+IDE1KSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGcgPj4+IChlICsgNyB8IDApICYgMSB8IGUgPDwgMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSA3MDY4MCArIChlIDw8IDIpIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgY1tqICsgMjggPj4gMl0gPSBlOwogICAgICAgICAgICAgICAgICAgICAgICBjW2ogKyAyMCA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGNbZiA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBjWzE3NTk1XSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSAxIDw8IGU7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghKGIgJiBhKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY1sxNzU5NV0gPSBiIHwgYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbZCA+PiAyXSA9IGo7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2ogKyAyNCA+PiAyXSA9IGQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2ogKyAxMiA+PiAyXSA9IGo7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2ogKyA4ID4+IDJdID0gajsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBjW2QgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBqOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGNbYiArIDQgPj4gMl0gJiAtOCB8IDApICE9IChnIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGcgPDwgKChlIHwgMCkgPT0gMzEgPyAwIDogMjUgLSAoZSA+Pj4gMSkgfCAwKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBiICsgMTYgKyAoZSA+Pj4gMzEgPDwgMikgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGNbZCA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGNbYSArIDQgPj4gMl0gJiAtOCB8IDApID09IChnIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhayBqOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gZSA8PCAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbZCA+PiAyXSA9IGo7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbaiArIDI0ID4+IDJdID0gYjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1tqICsgMTIgPj4gMl0gPSBqOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2ogKyA4ID4+IDJdID0gajsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgZjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBiICsgOCB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIHMgPSBjW3IgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBjW3MgKyAxMiA+PiAyXSA9IGo7CiAgICAgICAgICAgICAgICAgICAgICAgIGNbciA+PiAyXSA9IGo7CiAgICAgICAgICAgICAgICAgICAgICAgIGNbaiArIDggPj4gMl0gPSBzOwogICAgICAgICAgICAgICAgICAgICAgICBjW2ogKyAxMiA+PiAyXSA9IGI7CiAgICAgICAgICAgICAgICAgICAgICAgIGNbaiArIDI0ID4+IDJdID0gMDsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIHMgPSBjWzE3NTk4XSB8IDA7CiAgICAgICAgICAgICAgICAgICAgaWYgKChzIHwgMCkgPT0gMCB8IGUgPj4+IDAgPCBzID4+PiAwKQogICAgICAgICAgICAgICAgICAgICAgICBjWzE3NTk4XSA9IGU7CiAgICAgICAgICAgICAgICAgICAgY1sxNzcwNl0gPSBlOwogICAgICAgICAgICAgICAgICAgIGNbMTc3MDddID0gYjsKICAgICAgICAgICAgICAgICAgICBjWzE3NzA5XSA9IDA7CiAgICAgICAgICAgICAgICAgICAgY1sxNzYwM10gPSBjWzE3NzEyXTsKICAgICAgICAgICAgICAgICAgICBjWzE3NjAyXSA9IC0xOwogICAgICAgICAgICAgICAgICAgIGNbMTc2MDddID0gNzA0MTY7CiAgICAgICAgICAgICAgICAgICAgY1sxNzYwNl0gPSA3MDQxNjsKICAgICAgICAgICAgICAgICAgICBjWzE3NjA5XSA9IDcwNDI0OwogICAgICAgICAgICAgICAgICAgIGNbMTc2MDhdID0gNzA0MjQ7CiAgICAgICAgICAgICAgICAgICAgY1sxNzYxMV0gPSA3MDQzMjsKICAgICAgICAgICAgICAgICAgICBjWzE3NjEwXSA9IDcwNDMyOwogICAgICAgICAgICAgICAgICAgIGNbMTc2MTNdID0gNzA0NDA7CiAgICAgICAgICAgICAgICAgICAgY1sxNzYxMl0gPSA3MDQ0MDsKICAgICAgICAgICAgICAgICAgICBjWzE3NjE1XSA9IDcwNDQ4OwogICAgICAgICAgICAgICAgICAgIGNbMTc2MTRdID0gNzA0NDg7CiAgICAgICAgICAgICAgICAgICAgY1sxNzYxN10gPSA3MDQ1NjsKICAgICAgICAgICAgICAgICAgICBjWzE3NjE2XSA9IDcwNDU2OwogICAgICAgICAgICAgICAgICAgIGNbMTc2MTldID0gNzA0NjQ7CiAgICAgICAgICAgICAgICAgICAgY1sxNzYxOF0gPSA3MDQ2NDsKICAgICAgICAgICAgICAgICAgICBjWzE3NjIxXSA9IDcwNDcyOwogICAgICAgICAgICAgICAgICAgIGNbMTc2MjBdID0gNzA0NzI7CiAgICAgICAgICAgICAgICAgICAgY1sxNzYyM10gPSA3MDQ4MDsKICAgICAgICAgICAgICAgICAgICBjWzE3NjIyXSA9IDcwNDgwOwogICAgICAgICAgICAgICAgICAgIGNbMTc2MjVdID0gNzA0ODg7CiAgICAgICAgICAgICAgICAgICAgY1sxNzYyNF0gPSA3MDQ4ODsKICAgICAgICAgICAgICAgICAgICBjWzE3NjI3XSA9IDcwNDk2OwogICAgICAgICAgICAgICAgICAgIGNbMTc2MjZdID0gNzA0OTY7CiAgICAgICAgICAgICAgICAgICAgY1sxNzYyOV0gPSA3MDUwNDsKICAgICAgICAgICAgICAgICAgICBjWzE3NjI4XSA9IDcwNTA0OwogICAgICAgICAgICAgICAgICAgIGNbMTc2MzFdID0gNzA1MTI7CiAgICAgICAgICAgICAgICAgICAgY1sxNzYzMF0gPSA3MDUxMjsKICAgICAgICAgICAgICAgICAgICBjWzE3NjMzXSA9IDcwNTIwOwogICAgICAgICAgICAgICAgICAgIGNbMTc2MzJdID0gNzA1MjA7CiAgICAgICAgICAgICAgICAgICAgY1sxNzYzNV0gPSA3MDUyODsKICAgICAgICAgICAgICAgICAgICBjWzE3NjM0XSA9IDcwNTI4OwogICAgICAgICAgICAgICAgICAgIGNbMTc2MzddID0gNzA1MzY7CiAgICAgICAgICAgICAgICAgICAgY1sxNzYzNl0gPSA3MDUzNjsKICAgICAgICAgICAgICAgICAgICBjWzE3NjM5XSA9IDcwNTQ0OwogICAgICAgICAgICAgICAgICAgIGNbMTc2MzhdID0gNzA1NDQ7CiAgICAgICAgICAgICAgICAgICAgY1sxNzY0MV0gPSA3MDU1MjsKICAgICAgICAgICAgICAgICAgICBjWzE3NjQwXSA9IDcwNTUyOwogICAgICAgICAgICAgICAgICAgIGNbMTc2NDNdID0gNzA1NjA7CiAgICAgICAgICAgICAgICAgICAgY1sxNzY0Ml0gPSA3MDU2MDsKICAgICAgICAgICAgICAgICAgICBjWzE3NjQ1XSA9IDcwNTY4OwogICAgICAgICAgICAgICAgICAgIGNbMTc2NDRdID0gNzA1Njg7CiAgICAgICAgICAgICAgICAgICAgY1sxNzY0N10gPSA3MDU3NjsKICAgICAgICAgICAgICAgICAgICBjWzE3NjQ2XSA9IDcwNTc2OwogICAgICAgICAgICAgICAgICAgIGNbMTc2NDldID0gNzA1ODQ7CiAgICAgICAgICAgICAgICAgICAgY1sxNzY0OF0gPSA3MDU4NDsKICAgICAgICAgICAgICAgICAgICBjWzE3NjUxXSA9IDcwNTkyOwogICAgICAgICAgICAgICAgICAgIGNbMTc2NTBdID0gNzA1OTI7CiAgICAgICAgICAgICAgICAgICAgY1sxNzY1M10gPSA3MDYwMDsKICAgICAgICAgICAgICAgICAgICBjWzE3NjUyXSA9IDcwNjAwOwogICAgICAgICAgICAgICAgICAgIGNbMTc2NTVdID0gNzA2MDg7CiAgICAgICAgICAgICAgICAgICAgY1sxNzY1NF0gPSA3MDYwODsKICAgICAgICAgICAgICAgICAgICBjWzE3NjU3XSA9IDcwNjE2OwogICAgICAgICAgICAgICAgICAgIGNbMTc2NTZdID0gNzA2MTY7CiAgICAgICAgICAgICAgICAgICAgY1sxNzY1OV0gPSA3MDYyNDsKICAgICAgICAgICAgICAgICAgICBjWzE3NjU4XSA9IDcwNjI0OwogICAgICAgICAgICAgICAgICAgIGNbMTc2NjFdID0gNzA2MzI7CiAgICAgICAgICAgICAgICAgICAgY1sxNzY2MF0gPSA3MDYzMjsKICAgICAgICAgICAgICAgICAgICBjWzE3NjYzXSA9IDcwNjQwOwogICAgICAgICAgICAgICAgICAgIGNbMTc2NjJdID0gNzA2NDA7CiAgICAgICAgICAgICAgICAgICAgY1sxNzY2NV0gPSA3MDY0ODsKICAgICAgICAgICAgICAgICAgICBjWzE3NjY0XSA9IDcwNjQ4OwogICAgICAgICAgICAgICAgICAgIGNbMTc2NjddID0gNzA2NTY7CiAgICAgICAgICAgICAgICAgICAgY1sxNzY2Nl0gPSA3MDY1NjsKICAgICAgICAgICAgICAgICAgICBjWzE3NjY5XSA9IDcwNjY0OwogICAgICAgICAgICAgICAgICAgIGNbMTc2NjhdID0gNzA2NjQ7CiAgICAgICAgICAgICAgICAgICAgcyA9IGIgKyAtNDAgfCAwOwogICAgICAgICAgICAgICAgICAgIHEgPSBlICsgOCB8IDA7CiAgICAgICAgICAgICAgICAgICAgcSA9IChxICYgNyB8IDApID09IDAgPyAwIDogMCAtIHEgJiA3OwogICAgICAgICAgICAgICAgICAgIHIgPSBlICsgcSB8IDA7CiAgICAgICAgICAgICAgICAgICAgcSA9IHMgLSBxIHwgMDsKICAgICAgICAgICAgICAgICAgICBjWzE3NjAwXSA9IHI7CiAgICAgICAgICAgICAgICAgICAgY1sxNzU5N10gPSBxOwogICAgICAgICAgICAgICAgICAgIGNbciArIDQgPj4gMl0gPSBxIHwgMTsKICAgICAgICAgICAgICAgICAgICBjW2UgKyBzICsgNCA+PiAyXSA9IDQwOwogICAgICAgICAgICAgICAgICAgIGNbMTc2MDFdID0gY1sxNzcxNl07CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIHdoaWxlICgwKTsKICAgICAgICBiID0gY1sxNzU5N10gfCAwOwogICAgICAgIGlmIChiID4+PiAwIDw9IG0gPj4+IDApIHsKICAgICAgICAgICAgcyA9IDA7CiAgICAgICAgICAgIEUgPSB0OwogICAgICAgICAgICByZXR1cm4gcyB8IDA7CiAgICAgICAgfQogICAgICAgIHEgPSBiIC0gbSB8IDA7CiAgICAgICAgY1sxNzU5N10gPSBxOwogICAgICAgIHMgPSBjWzE3NjAwXSB8IDA7CiAgICAgICAgciA9IHMgKyBtIHwgMDsKICAgICAgICBjWzE3NjAwXSA9IHI7CiAgICAgICAgY1tyICsgNCA+PiAyXSA9IHEgfCAxOwogICAgICAgIGNbcyArIDQgPj4gMl0gPSBtIHwgMzsKICAgICAgICBzID0gcyArIDggfCAwOwogICAgICAgIEUgPSB0OwogICAgICAgIHJldHVybiBzIHwgMDsKICAgIH0KICAgIGZ1bmN0aW9uIEJiKGEpIHsKICAgICAgICBhID0gYSB8IDA7CiAgICAgICAgdmFyIGIgPSAwLCBkID0gMCwgZSA9IDAsIGYgPSAwLCBnID0gMCwgaCA9IDAsIGkgPSAwLCBqID0gMDsKICAgICAgICBpZiAoIWEpCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICBkID0gYSArIC04IHwgMDsKICAgICAgICBmID0gY1sxNzU5OF0gfCAwOwogICAgICAgIGEgPSBjW2EgKyAtNCA+PiAyXSB8IDA7CiAgICAgICAgYiA9IGEgJiAtODsKICAgICAgICBqID0gZCArIGIgfCAwOwogICAgICAgIGRvCiAgICAgICAgICAgIGlmICghKGEgJiAxKSkgewogICAgICAgICAgICAgICAgZSA9IGNbZCA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICBpZiAoIShhICYgMykpCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgaCA9IGQgKyAoMCAtIGUpIHwgMDsKICAgICAgICAgICAgICAgIGcgPSBlICsgYiB8IDA7CiAgICAgICAgICAgICAgICBpZiAoaCA+Pj4gMCA8IGYgPj4+IDApCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgaWYgKChjWzE3NTk5XSB8IDApID09IChoIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICBhID0gaiArIDQgfCAwOwogICAgICAgICAgICAgICAgICAgIGIgPSBjW2EgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgIGlmICgoYiAmIDMgfCAwKSAhPSAzKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBoOwogICAgICAgICAgICAgICAgICAgICAgICBiID0gZzsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGNbMTc1OTZdID0gZzsKICAgICAgICAgICAgICAgICAgICBjW2EgPj4gMl0gPSBiICYgLTI7CiAgICAgICAgICAgICAgICAgICAgY1toICsgNCA+PiAyXSA9IGcgfCAxOwogICAgICAgICAgICAgICAgICAgIGNbaCArIGcgPj4gMl0gPSBnOwogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGQgPSBlID4+PiAzOwogICAgICAgICAgICAgICAgaWYgKGUgPj4+IDAgPCAyNTYpIHsKICAgICAgICAgICAgICAgICAgICBhID0gY1toICsgOCA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgYiA9IGNbaCArIDEyID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICBpZiAoKGIgfCAwKSA9PSAoYSB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNbMTc1OTRdID0gY1sxNzU5NF0gJiB+KDEgPDwgZCk7CiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBoOwogICAgICAgICAgICAgICAgICAgICAgICBiID0gZzsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgY1thICsgMTIgPj4gMl0gPSBiOwogICAgICAgICAgICAgICAgICAgICAgICBjW2IgKyA4ID4+IDJdID0gYTsKICAgICAgICAgICAgICAgICAgICAgICAgaSA9IGg7CiAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBnOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBmID0gY1toICsgMjQgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgYSA9IGNbaCArIDEyID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICAgICAgaWYgKChhIHwgMCkgPT0gKGggfCAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICBiID0gaCArIDE2IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGIgKyA0IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGNbZCA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGNbYiA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gZDsKICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBhICsgMjAgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGNbZSA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gYSArIDE2IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gY1tlID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBjW2IgPj4gMl0gPSAwOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBjW2ggKyA4ID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgY1tpICsgMTIgPj4gMl0gPSBhOwogICAgICAgICAgICAgICAgICAgICAgICBjW2EgKyA4ID4+IDJdID0gaTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICBpZiAoZikgewogICAgICAgICAgICAgICAgICAgIGIgPSBjW2ggKyAyOCA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgZCA9IDcwNjgwICsgKGIgPDwgMikgfCAwOwogICAgICAgICAgICAgICAgICAgIGlmICgoY1tkID4+IDJdIHwgMCkgPT0gKGggfCAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICBjW2QgPj4gMl0gPSBhOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbMTc1OTVdID0gY1sxNzU5NV0gJiB+KDEgPDwgYik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpID0gaDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpID0gZiArIDE2IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgY1soKGNbaSA+PiAyXSB8IDApID09IChoIHwgMCkgPyBpIDogZiArIDIwIHwgMCkgPj4gMl0gPSBhOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBoOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IGc7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBjW2EgKyAyNCA+PiAyXSA9IGY7CiAgICAgICAgICAgICAgICAgICAgYiA9IGggKyAxNiB8IDA7CiAgICAgICAgICAgICAgICAgICAgZCA9IGNbYiA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgaWYgKGQgfCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNbYSArIDE2ID4+IDJdID0gZDsKICAgICAgICAgICAgICAgICAgICAgICAgY1tkICsgMjQgPj4gMl0gPSBhOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBiID0gY1tiICsgNCA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgaWYgKGIpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY1thICsgMjAgPj4gMl0gPSBiOwogICAgICAgICAgICAgICAgICAgICAgICBjW2IgKyAyNCA+PiAyXSA9IGE7CiAgICAgICAgICAgICAgICAgICAgICAgIGkgPSBoOwogICAgICAgICAgICAgICAgICAgICAgICBiID0gZzsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBpID0gaDsKICAgICAgICAgICAgICAgICAgICAgICAgYiA9IGc7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpID0gaDsKICAgICAgICAgICAgICAgICAgICBiID0gZzsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGkgPSBkOwogICAgICAgICAgICAgICAgaCA9IGQ7CiAgICAgICAgICAgIH0KICAgICAgICB3aGlsZSAoMCk7CiAgICAgICAgaWYgKGggPj4+IDAgPj0gaiA+Pj4gMCkKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIGEgPSBqICsgNCB8IDA7CiAgICAgICAgZSA9IGNbYSA+PiAyXSB8IDA7CiAgICAgICAgaWYgKCEoZSAmIDEpKQogICAgICAgICAgICByZXR1cm47CiAgICAgICAgaWYgKCEoZSAmIDIpKSB7CiAgICAgICAgICAgIGlmICgoY1sxNzYwMF0gfCAwKSA9PSAoaiB8IDApKSB7CiAgICAgICAgICAgICAgICBqID0gKGNbMTc1OTddIHwgMCkgKyBiIHwgMDsKICAgICAgICAgICAgICAgIGNbMTc1OTddID0gajsKICAgICAgICAgICAgICAgIGNbMTc2MDBdID0gaTsKICAgICAgICAgICAgICAgIGNbaSArIDQgPj4gMl0gPSBqIHwgMTsKICAgICAgICAgICAgICAgIGlmICgoaSB8IDApICE9IChjWzE3NTk5XSB8IDApKQogICAgICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgICAgIGNbMTc1OTldID0gMDsKICAgICAgICAgICAgICAgIGNbMTc1OTZdID0gMDsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoKGNbMTc1OTldIHwgMCkgPT0gKGogfCAwKSkgewogICAgICAgICAgICAgICAgaiA9IChjWzE3NTk2XSB8IDApICsgYiB8IDA7CiAgICAgICAgICAgICAgICBjWzE3NTk2XSA9IGo7CiAgICAgICAgICAgICAgICBjWzE3NTk5XSA9IGg7CiAgICAgICAgICAgICAgICBjW2kgKyA0ID4+IDJdID0gaiB8IDE7CiAgICAgICAgICAgICAgICBjW2ggKyBqID4+IDJdID0gajsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgICAgICBmID0gKGUgJiAtOCkgKyBiIHwgMDsKICAgICAgICAgICAgZCA9IGUgPj4+IDM7CiAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICBpZiAoZSA+Pj4gMCA8IDI1NikgewogICAgICAgICAgICAgICAgICAgIGIgPSBjW2ogKyA4ID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICBhID0gY1tqICsgMTIgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgIGlmICgoYSB8IDApID09IChiIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY1sxNzU5NF0gPSBjWzE3NTk0XSAmIH4oMSA8PCBkKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgY1tiICsgMTIgPj4gMl0gPSBhOwogICAgICAgICAgICAgICAgICAgICAgICBjW2EgKyA4ID4+IDJdID0gYjsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBnID0gY1tqICsgMjQgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgIGEgPSBjW2ogKyAxMiA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChhIHwgMCkgPT0gKGogfCAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IGogKyAxNiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gYiArIDQgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGNbZCA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gY1tiID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gYSArIDIwIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gY1tlID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGEgKyAxNiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBjW2UgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbYiA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gYTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBjW2ogKyA4ID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbZCArIDEyID4+IDJdID0gYTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbYSArIDggPj4gMl0gPSBkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGE7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB3aGlsZSAoMCk7CiAgICAgICAgICAgICAgICAgICAgaWYgKGcgfCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBjW2ogKyAyOCA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGIgPSA3MDY4MCArIChhIDw8IDIpIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChjW2IgPj4gMl0gfCAwKSA9PSAoaiB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2IgPj4gMl0gPSBkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1sxNzU5NV0gPSBjWzE3NTk1XSAmIH4oMSA8PCBhKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBnICsgMTYgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY1soKGNbZSA+PiAyXSB8IDApID09IChqIHwgMCkgPyBlIDogZyArIDIwIHwgMCkgPj4gMl0gPSBkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFkKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGNbZCArIDI0ID4+IDJdID0gZzsKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGogKyAxNiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBjW2EgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoYiB8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbZCArIDE2ID4+IDJdID0gYjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbYiArIDI0ID4+IDJdID0gZDsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICBhID0gY1thICsgNCA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhIHwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY1tkICsgMjAgPj4gMl0gPSBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY1thICsgMjQgPj4gMl0gPSBkOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB3aGlsZSAoMCk7CiAgICAgICAgICAgIGNbaSArIDQgPj4gMl0gPSBmIHwgMTsKICAgICAgICAgICAgY1toICsgZiA+PiAyXSA9IGY7CiAgICAgICAgICAgIGlmICgoaSB8IDApID09IChjWzE3NTk5XSB8IDApKSB7CiAgICAgICAgICAgICAgICBjWzE3NTk2XSA9IGY7CiAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBjW2EgPj4gMl0gPSBlICYgLTI7CiAgICAgICAgICAgIGNbaSArIDQgPj4gMl0gPSBiIHwgMTsKICAgICAgICAgICAgY1toICsgYiA+PiAyXSA9IGI7CiAgICAgICAgICAgIGYgPSBiOwogICAgICAgIH0KICAgICAgICBhID0gZiA+Pj4gMzsKICAgICAgICBpZiAoZiA+Pj4gMCA8IDI1NikgewogICAgICAgICAgICBkID0gNzA0MTYgKyAoYSA8PCAxIDw8IDIpIHwgMDsKICAgICAgICAgICAgYiA9IGNbMTc1OTRdIHwgMDsKICAgICAgICAgICAgYSA9IDEgPDwgYTsKICAgICAgICAgICAgaWYgKCEoYiAmIGEpKSB7CiAgICAgICAgICAgICAgICBjWzE3NTk0XSA9IGIgfCBhOwogICAgICAgICAgICAgICAgYSA9IGQ7CiAgICAgICAgICAgICAgICBiID0gZCArIDggfCAwOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgYiA9IGQgKyA4IHwgMDsKICAgICAgICAgICAgICAgIGEgPSBjW2IgPj4gMl0gfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNbYiA+PiAyXSA9IGk7CiAgICAgICAgICAgIGNbYSArIDEyID4+IDJdID0gaTsKICAgICAgICAgICAgY1tpICsgOCA+PiAyXSA9IGE7CiAgICAgICAgICAgIGNbaSArIDEyID4+IDJdID0gZDsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBhID0gZiA+Pj4gODsKICAgICAgICBpZiAoYSkKICAgICAgICAgICAgaWYgKGYgPj4+IDAgPiAxNjc3NzIxNSkKICAgICAgICAgICAgICAgIGUgPSAzMTsKICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICBoID0gKGEgKyAxMDQ4MzIwIHwgMCkgPj4+IDE2ICYgODsKICAgICAgICAgICAgICAgIGogPSBhIDw8IGg7CiAgICAgICAgICAgICAgICBnID0gKGogKyA1MjAxOTIgfCAwKSA+Pj4gMTYgJiA0OwogICAgICAgICAgICAgICAgaiA9IGogPDwgZzsKICAgICAgICAgICAgICAgIGUgPSAoaiArIDI0NTc2MCB8IDApID4+PiAxNiAmIDI7CiAgICAgICAgICAgICAgICBlID0gMTQgLSAoZyB8IGggfCBlKSArIChqIDw8IGUgPj4+IDE1KSB8IDA7CiAgICAgICAgICAgICAgICBlID0gZiA+Pj4gKGUgKyA3IHwgMCkgJiAxIHwgZSA8PCAxOwogICAgICAgICAgICB9CiAgICAgICAgZWxzZQogICAgICAgICAgICBlID0gMDsKICAgICAgICBhID0gNzA2ODAgKyAoZSA8PCAyKSB8IDA7CiAgICAgICAgY1tpICsgMjggPj4gMl0gPSBlOwogICAgICAgIGNbaSArIDIwID4+IDJdID0gMDsKICAgICAgICBjW2kgKyAxNiA+PiAyXSA9IDA7CiAgICAgICAgYiA9IGNbMTc1OTVdIHwgMDsKICAgICAgICBkID0gMSA8PCBlOwogICAgICAgIGE6CiAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICBpZiAoIShiICYgZCkpIHsKICAgICAgICAgICAgICAgICAgICBjWzE3NTk1XSA9IGIgfCBkOwogICAgICAgICAgICAgICAgICAgIGNbYSA+PiAyXSA9IGk7CiAgICAgICAgICAgICAgICAgICAgY1tpICsgMjQgPj4gMl0gPSBhOwogICAgICAgICAgICAgICAgICAgIGNbaSArIDEyID4+IDJdID0gaTsKICAgICAgICAgICAgICAgICAgICBjW2kgKyA4ID4+IDJdID0gaTsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgYSA9IGNbYSA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgYjoKICAgICAgICAgICAgICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoY1thICsgNCA+PiAyXSAmIC04IHwgMCkgIT0gKGYgfCAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBmIDw8ICgoZSB8IDApID09IDMxID8gMCA6IDI1IC0gKGUgPj4+IDEpIHwgMCk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGEgKyAxNiArIChlID4+PiAzMSA8PCAyKSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBjW2QgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChjW2IgKyA0ID4+IDJdICYgLTggfCAwKSA9PSAoZiB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gYjsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gZSA8PCAxOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1tkID4+IDJdID0gaTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2kgKyAyNCA+PiAyXSA9IGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY1tpICsgMTIgPj4gMl0gPSBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbaSArIDggPj4gMl0gPSBpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgwKTsKICAgICAgICAgICAgICAgICAgICBoID0gYSArIDggfCAwOwogICAgICAgICAgICAgICAgICAgIGogPSBjW2ggPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgIGNbaiArIDEyID4+IDJdID0gaTsKICAgICAgICAgICAgICAgICAgICBjW2ggPj4gMl0gPSBpOwogICAgICAgICAgICAgICAgICAgIGNbaSArIDggPj4gMl0gPSBqOwogICAgICAgICAgICAgICAgICAgIGNbaSArIDEyID4+IDJdID0gYTsKICAgICAgICAgICAgICAgICAgICBjW2kgKyAyNCA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIHdoaWxlICgwKTsKICAgICAgICBqID0gKGNbMTc2MDJdIHwgMCkgKyAtMSB8IDA7CiAgICAgICAgY1sxNzYwMl0gPSBqOwogICAgICAgIGlmIChqIHwgMCkKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIGEgPSA3MDgzMjsKICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICBhID0gY1thID4+IDJdIHwgMDsKICAgICAgICAgICAgaWYgKCFhKQogICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgIGEgPSBhICsgOCB8IDA7CiAgICAgICAgfQogICAgICAgIGNbMTc2MDJdID0gLTE7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgZnVuY3Rpb24gQ2IoYSwgYikgewogICAgICAgIGEgPSBhIHwgMDsKICAgICAgICBiID0gYiB8IDA7CiAgICAgICAgdmFyIGQgPSAwLCBlID0gMDsKICAgICAgICBpZiAoIWEpIHsKICAgICAgICAgICAgYiA9IEFiKGIpIHwgMDsKICAgICAgICAgICAgcmV0dXJuIGIgfCAwOwogICAgICAgIH0KICAgICAgICBpZiAoYiA+Pj4gMCA+IDQyOTQ5NjcyMzEpIHsKICAgICAgICAgICAgYiA9IDA7CiAgICAgICAgICAgIHJldHVybiBiIHwgMDsKICAgICAgICB9CiAgICAgICAgZCA9IERiKGEgKyAtOCB8IDAsIGIgPj4+IDAgPCAxMSA/IDE2IDogYiArIDExICYgLTgpIHwgMDsKICAgICAgICBpZiAoZCB8IDApIHsKICAgICAgICAgICAgYiA9IGQgKyA4IHwgMDsKICAgICAgICAgICAgcmV0dXJuIGIgfCAwOwogICAgICAgIH0KICAgICAgICBkID0gQWIoYikgfCAwOwogICAgICAgIGlmICghZCkgewogICAgICAgICAgICBiID0gMDsKICAgICAgICAgICAgcmV0dXJuIGIgfCAwOwogICAgICAgIH0KICAgICAgICBlID0gY1thICsgLTQgPj4gMl0gfCAwOwogICAgICAgIGUgPSAoZSAmIC04KSAtICgoZSAmIDMgfCAwKSA9PSAwID8gOCA6IDQpIHwgMDsKICAgICAgICBlYyhkIHwgMCwgYSB8IDAsIChlID4+PiAwIDwgYiA+Pj4gMCA/IGUgOiBiKSB8IDApIHwgMDsKICAgICAgICBCYihhKTsKICAgICAgICBiID0gZDsKICAgICAgICByZXR1cm4gYiB8IDA7CiAgICB9CiAgICBmdW5jdGlvbiBEYihhLCBiKSB7CiAgICAgICAgYSA9IGEgfCAwOwogICAgICAgIGIgPSBiIHwgMDsKICAgICAgICB2YXIgZCA9IDAsIGUgPSAwLCBmID0gMCwgZyA9IDAsIGggPSAwLCBpID0gMCwgaiA9IDAsIGsgPSAwLCBsID0gMCwgbSA9IDA7CiAgICAgICAgbCA9IGEgKyA0IHwgMDsKICAgICAgICBtID0gY1tsID4+IDJdIHwgMDsKICAgICAgICBkID0gbSAmIC04OwogICAgICAgIGkgPSBhICsgZCB8IDA7CiAgICAgICAgaWYgKCEobSAmIDMpKSB7CiAgICAgICAgICAgIGlmIChiID4+PiAwIDwgMjU2KSB7CiAgICAgICAgICAgICAgICBhID0gMDsKICAgICAgICAgICAgICAgIHJldHVybiBhIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBpZiAoZCA+Pj4gMCA+PSAoYiArIDQgfCAwKSA+Pj4gMCA/IChkIC0gYiB8IDApID4+PiAwIDw9IGNbMTc3MTRdIDw8IDEgPj4+IDAgOiAwKQogICAgICAgICAgICAgICAgcmV0dXJuIGEgfCAwOwogICAgICAgICAgICBhID0gMDsKICAgICAgICAgICAgcmV0dXJuIGEgfCAwOwogICAgICAgIH0KICAgICAgICBpZiAoZCA+Pj4gMCA+PSBiID4+PiAwKSB7CiAgICAgICAgICAgIGQgPSBkIC0gYiB8IDA7CiAgICAgICAgICAgIGlmIChkID4+PiAwIDw9IDE1KQogICAgICAgICAgICAgICAgcmV0dXJuIGEgfCAwOwogICAgICAgICAgICBrID0gYSArIGIgfCAwOwogICAgICAgICAgICBjW2wgPj4gMl0gPSBtICYgMSB8IGIgfCAyOwogICAgICAgICAgICBjW2sgKyA0ID4+IDJdID0gZCB8IDM7CiAgICAgICAgICAgIG0gPSBpICsgNCB8IDA7CiAgICAgICAgICAgIGNbbSA+PiAyXSA9IGNbbSA+PiAyXSB8IDE7CiAgICAgICAgICAgIEViKGssIGQpOwogICAgICAgICAgICByZXR1cm4gYSB8IDA7CiAgICAgICAgfQogICAgICAgIGlmICgoY1sxNzYwMF0gfCAwKSA9PSAoaSB8IDApKSB7CiAgICAgICAgICAgIGsgPSAoY1sxNzU5N10gfCAwKSArIGQgfCAwOwogICAgICAgICAgICBkID0gayAtIGIgfCAwOwogICAgICAgICAgICBlID0gYSArIGIgfCAwOwogICAgICAgICAgICBpZiAoayA+Pj4gMCA8PSBiID4+PiAwKSB7CiAgICAgICAgICAgICAgICBhID0gMDsKICAgICAgICAgICAgICAgIHJldHVybiBhIHwgMDsKICAgICAgICAgICAgfQogICAgICAgICAgICBjW2wgPj4gMl0gPSBtICYgMSB8IGIgfCAyOwogICAgICAgICAgICBjW2UgKyA0ID4+IDJdID0gZCB8IDE7CiAgICAgICAgICAgIGNbMTc2MDBdID0gZTsKICAgICAgICAgICAgY1sxNzU5N10gPSBkOwogICAgICAgICAgICByZXR1cm4gYSB8IDA7CiAgICAgICAgfQogICAgICAgIGlmICgoY1sxNzU5OV0gfCAwKSA9PSAoaSB8IDApKSB7CiAgICAgICAgICAgIGUgPSAoY1sxNzU5Nl0gfCAwKSArIGQgfCAwOwogICAgICAgICAgICBpZiAoZSA+Pj4gMCA8IGIgPj4+IDApIHsKICAgICAgICAgICAgICAgIGEgPSAwOwogICAgICAgICAgICAgICAgcmV0dXJuIGEgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGQgPSBlIC0gYiB8IDA7CiAgICAgICAgICAgIGlmIChkID4+PiAwID4gMTUpIHsKICAgICAgICAgICAgICAgIGsgPSBhICsgYiB8IDA7CiAgICAgICAgICAgICAgICBlID0gYSArIGUgfCAwOwogICAgICAgICAgICAgICAgY1tsID4+IDJdID0gbSAmIDEgfCBiIHwgMjsKICAgICAgICAgICAgICAgIGNbayArIDQgPj4gMl0gPSBkIHwgMTsKICAgICAgICAgICAgICAgIGNbZSA+PiAyXSA9IGQ7CiAgICAgICAgICAgICAgICBlID0gZSArIDQgfCAwOwogICAgICAgICAgICAgICAgY1tlID4+IDJdID0gY1tlID4+IDJdICYgLTI7CiAgICAgICAgICAgICAgICBlID0gazsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGNbbCA+PiAyXSA9IG0gJiAxIHwgZSB8IDI7CiAgICAgICAgICAgICAgICBlID0gYSArIGUgKyA0IHwgMDsKICAgICAgICAgICAgICAgIGNbZSA+PiAyXSA9IGNbZSA+PiAyXSB8IDE7CiAgICAgICAgICAgICAgICBlID0gMDsKICAgICAgICAgICAgICAgIGQgPSAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGNbMTc1OTZdID0gZDsKICAgICAgICAgICAgY1sxNzU5OV0gPSBlOwogICAgICAgICAgICByZXR1cm4gYSB8IDA7CiAgICAgICAgfQogICAgICAgIGUgPSBjW2kgKyA0ID4+IDJdIHwgMDsKICAgICAgICBpZiAoZSAmIDIgfCAwKSB7CiAgICAgICAgICAgIGEgPSAwOwogICAgICAgICAgICByZXR1cm4gYSB8IDA7CiAgICAgICAgfQogICAgICAgIGogPSAoZSAmIC04KSArIGQgfCAwOwogICAgICAgIGlmIChqID4+PiAwIDwgYiA+Pj4gMCkgewogICAgICAgICAgICBhID0gMDsKICAgICAgICAgICAgcmV0dXJuIGEgfCAwOwogICAgICAgIH0KICAgICAgICBrID0gaiAtIGIgfCAwOwogICAgICAgIGYgPSBlID4+PiAzOwogICAgICAgIGRvCiAgICAgICAgICAgIGlmIChlID4+PiAwIDwgMjU2KSB7CiAgICAgICAgICAgICAgICBlID0gY1tpICsgOCA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICBkID0gY1tpICsgMTIgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgaWYgKChkIHwgMCkgPT0gKGUgfCAwKSkgewogICAgICAgICAgICAgICAgICAgIGNbMTc1OTRdID0gY1sxNzU5NF0gJiB+KDEgPDwgZik7CiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGNbZSArIDEyID4+IDJdID0gZDsKICAgICAgICAgICAgICAgICAgICBjW2QgKyA4ID4+IDJdID0gZTsKICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGggPSBjW2kgKyAyNCA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICBkID0gY1tpICsgMTIgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgICAgICBpZiAoKGQgfCAwKSA9PSAoaSB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBpICsgMTYgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBmID0gZSArIDQgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBkID0gY1tmID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gY1tlID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBmOwogICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZyA9IGQgKyAyMCB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gY1tnID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGcgPSBkICsgMTYgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBjW2cgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gZzsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBnOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGNbZSA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBkOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGYgPSBjW2kgKyA4ID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgY1tmICsgMTIgPj4gMl0gPSBkOwogICAgICAgICAgICAgICAgICAgICAgICBjW2QgKyA4ID4+IDJdID0gZjsKICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgd2hpbGUgKDApOwogICAgICAgICAgICAgICAgaWYgKGggfCAwKSB7CiAgICAgICAgICAgICAgICAgICAgZCA9IGNbaSArIDI4ID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICBlID0gNzA2ODAgKyAoZCA8PCAyKSB8IDA7CiAgICAgICAgICAgICAgICAgICAgaWYgKChjW2UgPj4gMl0gfCAwKSA9PSAoaSB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNbZSA+PiAyXSA9IGY7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY1sxNzU5NV0gPSBjWzE3NTk1XSAmIH4oMSA8PCBkKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgZyA9IGggKyAxNiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGNbKChjW2cgPj4gMl0gfCAwKSA9PSAoaSB8IDApID8gZyA6IGggKyAyMCB8IDApID4+IDJdID0gZjsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFmKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGNbZiArIDI0ID4+IDJdID0gaDsKICAgICAgICAgICAgICAgICAgICBkID0gaSArIDE2IHwgMDsKICAgICAgICAgICAgICAgICAgICBlID0gY1tkID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICBpZiAoZSB8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgY1tmICsgMTYgPj4gMl0gPSBlOwogICAgICAgICAgICAgICAgICAgICAgICBjW2UgKyAyNCA+PiAyXSA9IGY7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIGQgPSBjW2QgKyA0ID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICBpZiAoZCB8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgY1tmICsgMjAgPj4gMl0gPSBkOwogICAgICAgICAgICAgICAgICAgICAgICBjW2QgKyAyNCA+PiAyXSA9IGY7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgd2hpbGUgKDApOwogICAgICAgIGlmIChrID4+PiAwIDwgMTYpIHsKICAgICAgICAgICAgY1tsID4+IDJdID0gbSAmIDEgfCBqIHwgMjsKICAgICAgICAgICAgbSA9IGEgKyBqICsgNCB8IDA7CiAgICAgICAgICAgIGNbbSA+PiAyXSA9IGNbbSA+PiAyXSB8IDE7CiAgICAgICAgICAgIHJldHVybiBhIHwgMDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBpID0gYSArIGIgfCAwOwogICAgICAgICAgICBjW2wgPj4gMl0gPSBtICYgMSB8IGIgfCAyOwogICAgICAgICAgICBjW2kgKyA0ID4+IDJdID0gayB8IDM7CiAgICAgICAgICAgIG0gPSBhICsgaiArIDQgfCAwOwogICAgICAgICAgICBjW20gPj4gMl0gPSBjW20gPj4gMl0gfCAxOwogICAgICAgICAgICBFYihpLCBrKTsKICAgICAgICAgICAgcmV0dXJuIGEgfCAwOwogICAgICAgIH0KICAgICAgICByZXR1cm4gMDsKICAgIH0KICAgIGZ1bmN0aW9uIEViKGEsIGIpIHsKICAgICAgICBhID0gYSB8IDA7CiAgICAgICAgYiA9IGIgfCAwOwogICAgICAgIHZhciBkID0gMCwgZSA9IDAsIGYgPSAwLCBnID0gMCwgaCA9IDAsIGkgPSAwOwogICAgICAgIGkgPSBhICsgYiB8IDA7CiAgICAgICAgZCA9IGNbYSArIDQgPj4gMl0gfCAwOwogICAgICAgIGRvCiAgICAgICAgICAgIGlmICghKGQgJiAxKSkgewogICAgICAgICAgICAgICAgZiA9IGNbYSA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICBpZiAoIShkICYgMykpCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgaCA9IGEgKyAoMCAtIGYpIHwgMDsKICAgICAgICAgICAgICAgIGIgPSBmICsgYiB8IDA7CiAgICAgICAgICAgICAgICBpZiAoKGNbMTc1OTldIHwgMCkgPT0gKGggfCAwKSkgewogICAgICAgICAgICAgICAgICAgIGEgPSBpICsgNCB8IDA7CiAgICAgICAgICAgICAgICAgICAgZCA9IGNbYSA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgaWYgKChkICYgMyB8IDApICE9IDMpCiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGNbMTc1OTZdID0gYjsKICAgICAgICAgICAgICAgICAgICBjW2EgPj4gMl0gPSBkICYgLTI7CiAgICAgICAgICAgICAgICAgICAgY1toICsgNCA+PiAyXSA9IGIgfCAxOwogICAgICAgICAgICAgICAgICAgIGNbaSA+PiAyXSA9IGI7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZSA9IGYgPj4+IDM7CiAgICAgICAgICAgICAgICBpZiAoZiA+Pj4gMCA8IDI1NikgewogICAgICAgICAgICAgICAgICAgIGEgPSBjW2ggKyA4ID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICBkID0gY1toICsgMTIgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgIGlmICgoZCB8IDApID09IChhIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY1sxNzU5NF0gPSBjWzE3NTk0XSAmIH4oMSA8PCBlKTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgY1thICsgMTIgPj4gMl0gPSBkOwogICAgICAgICAgICAgICAgICAgICAgICBjW2QgKyA4ID4+IDJdID0gYTsKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZyA9IGNbaCArIDI0ID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgIGEgPSBjW2ggKyAxMiA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICBkbwogICAgICAgICAgICAgICAgICAgIGlmICgoYSB8IDApID09IChoIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGggKyAxNiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBkICsgNCB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBjW2UgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWEpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEgPSBjW2QgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGU7CiAgICAgICAgICAgICAgICAgICAgICAgIHdoaWxlICgxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gYSArIDIwIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBjW2YgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGEgKyAxNiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGNbZiA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFlKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBmOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGY7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgY1tkID4+IDJdID0gMDsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBmID0gY1toICsgOCA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGNbZiArIDEyID4+IDJdID0gYTsKICAgICAgICAgICAgICAgICAgICAgICAgY1thICsgOCA+PiAyXSA9IGY7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgd2hpbGUgKDApOwogICAgICAgICAgICAgICAgaWYgKGcpIHsKICAgICAgICAgICAgICAgICAgICBkID0gY1toICsgMjggPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgIGUgPSA3MDY4MCArIChkIDw8IDIpIHwgMDsKICAgICAgICAgICAgICAgICAgICBpZiAoKGNbZSA+PiAyXSB8IDApID09IChoIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgY1tlID4+IDJdID0gYTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFhKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjWzE3NTk1XSA9IGNbMTc1OTVdICYgfigxIDw8IGQpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBmID0gZyArIDE2IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgY1soKGNbZiA+PiAyXSB8IDApID09IChoIHwgMCkgPyBmIDogZyArIDIwIHwgMCkgPj4gMl0gPSBhOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWEpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgY1thICsgMjQgPj4gMl0gPSBnOwogICAgICAgICAgICAgICAgICAgIGQgPSBoICsgMTYgfCAwOwogICAgICAgICAgICAgICAgICAgIGUgPSBjW2QgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgIGlmIChlIHwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICBjW2EgKyAxNiA+PiAyXSA9IGU7CiAgICAgICAgICAgICAgICAgICAgICAgIGNbZSArIDI0ID4+IDJdID0gYTsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZCA9IGNbZCArIDQgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgIGlmIChkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNbYSArIDIwID4+IDJdID0gZDsKICAgICAgICAgICAgICAgICAgICAgICAgY1tkICsgMjQgPj4gMl0gPSBhOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICBoID0gYTsKICAgICAgICB3aGlsZSAoMCk7CiAgICAgICAgYSA9IGkgKyA0IHwgMDsKICAgICAgICBlID0gY1thID4+IDJdIHwgMDsKICAgICAgICBpZiAoIShlICYgMikpIHsKICAgICAgICAgICAgaWYgKChjWzE3NjAwXSB8IDApID09IChpIHwgMCkpIHsKICAgICAgICAgICAgICAgIGkgPSAoY1sxNzU5N10gfCAwKSArIGIgfCAwOwogICAgICAgICAgICAgICAgY1sxNzU5N10gPSBpOwogICAgICAgICAgICAgICAgY1sxNzYwMF0gPSBoOwogICAgICAgICAgICAgICAgY1toICsgNCA+PiAyXSA9IGkgfCAxOwogICAgICAgICAgICAgICAgaWYgKChoIHwgMCkgIT0gKGNbMTc1OTldIHwgMCkpCiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgY1sxNzU5OV0gPSAwOwogICAgICAgICAgICAgICAgY1sxNzU5Nl0gPSAwOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGlmICgoY1sxNzU5OV0gfCAwKSA9PSAoaSB8IDApKSB7CiAgICAgICAgICAgICAgICBpID0gKGNbMTc1OTZdIHwgMCkgKyBiIHwgMDsKICAgICAgICAgICAgICAgIGNbMTc1OTZdID0gaTsKICAgICAgICAgICAgICAgIGNbMTc1OTldID0gaDsKICAgICAgICAgICAgICAgIGNbaCArIDQgPj4gMl0gPSBpIHwgMTsKICAgICAgICAgICAgICAgIGNbaCArIGkgPj4gMl0gPSBpOwogICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGYgPSAoZSAmIC04KSArIGIgfCAwOwogICAgICAgICAgICBkID0gZSA+Pj4gMzsKICAgICAgICAgICAgZG8KICAgICAgICAgICAgICAgIGlmIChlID4+PiAwIDwgMjU2KSB7CiAgICAgICAgICAgICAgICAgICAgYSA9IGNbaSArIDggPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgIGIgPSBjW2kgKyAxMiA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgaWYgKChiIHwgMCkgPT0gKGEgfCAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICBjWzE3NTk0XSA9IGNbMTc1OTRdICYgfigxIDw8IGQpOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBjW2EgKyAxMiA+PiAyXSA9IGI7CiAgICAgICAgICAgICAgICAgICAgICAgIGNbYiArIDggPj4gMl0gPSBhOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgIGcgPSBjW2kgKyAyNCA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgYiA9IGNbaSArIDEyID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICBkbwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGIgfCAwKSA9PSAoaSB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBhID0gaSArIDE2IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBhICsgNCB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gY1tkID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBjW2EgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBiICsgMjAgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBjW2UgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlID0gYiArIDE2IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGNbZSA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICghZCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBkOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gZDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGU7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgY1thID4+IDJdID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSBiOwogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZCA9IGNbaSArIDggPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY1tkICsgMTIgPj4gMl0gPSBiOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY1tiICsgOCA+PiAyXSA9IGQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkID0gYjsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIHdoaWxlICgwKTsKICAgICAgICAgICAgICAgICAgICBpZiAoZyB8IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgYiA9IGNbaSArIDI4ID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IDcwNjgwICsgKGIgPDwgMikgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGNbYSA+PiAyXSB8IDApID09IChpIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNbYSA+PiAyXSA9IGQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjWzE3NTk1XSA9IGNbMTc1OTVdICYgfigxIDw8IGIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZSA9IGcgKyAxNiB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjWygoY1tlID4+IDJdIHwgMCkgPT0gKGkgfCAwKSA/IGUgOiBnICsgMjAgfCAwKSA+PiAyXSA9IGQ7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWQpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgY1tkICsgMjQgPj4gMl0gPSBnOwogICAgICAgICAgICAgICAgICAgICAgICBiID0gaSArIDE2IHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGNbYiA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmIChhIHwgMCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY1tkICsgMTYgPj4gMl0gPSBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY1thICsgMjQgPj4gMl0gPSBkOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBjW2IgKyA0ID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGIgfCAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2QgKyAyMCA+PiAyXSA9IGI7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjW2IgKyAyNCA+PiAyXSA9IGQ7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIHdoaWxlICgwKTsKICAgICAgICAgICAgY1toICsgNCA+PiAyXSA9IGYgfCAxOwogICAgICAgICAgICBjW2ggKyBmID4+IDJdID0gZjsKICAgICAgICAgICAgaWYgKChoIHwgMCkgPT0gKGNbMTc1OTldIHwgMCkpIHsKICAgICAgICAgICAgICAgIGNbMTc1OTZdID0gZjsKICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgfQogICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgIGNbYSA+PiAyXSA9IGUgJiAtMjsKICAgICAgICAgICAgY1toICsgNCA+PiAyXSA9IGIgfCAxOwogICAgICAgICAgICBjW2ggKyBiID4+IDJdID0gYjsKICAgICAgICAgICAgZiA9IGI7CiAgICAgICAgfQogICAgICAgIGIgPSBmID4+PiAzOwogICAgICAgIGlmIChmID4+PiAwIDwgMjU2KSB7CiAgICAgICAgICAgIGQgPSA3MDQxNiArIChiIDw8IDEgPDwgMikgfCAwOwogICAgICAgICAgICBhID0gY1sxNzU5NF0gfCAwOwogICAgICAgICAgICBiID0gMSA8PCBiOwogICAgICAgICAgICBpZiAoIShhICYgYikpIHsKICAgICAgICAgICAgICAgIGNbMTc1OTRdID0gYSB8IGI7CiAgICAgICAgICAgICAgICBiID0gZDsKICAgICAgICAgICAgICAgIGEgPSBkICsgOCB8IDA7CiAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICBhID0gZCArIDggfCAwOwogICAgICAgICAgICAgICAgYiA9IGNbYSA+PiAyXSB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgY1thID4+IDJdID0gaDsKICAgICAgICAgICAgY1tiICsgMTIgPj4gMl0gPSBoOwogICAgICAgICAgICBjW2ggKyA4ID4+IDJdID0gYjsKICAgICAgICAgICAgY1toICsgMTIgPj4gMl0gPSBkOwogICAgICAgICAgICByZXR1cm47CiAgICAgICAgfQogICAgICAgIGIgPSBmID4+PiA4OwogICAgICAgIGlmIChiKQogICAgICAgICAgICBpZiAoZiA+Pj4gMCA+IDE2Nzc3MjE1KQogICAgICAgICAgICAgICAgZSA9IDMxOwogICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgIGcgPSAoYiArIDEwNDgzMjAgfCAwKSA+Pj4gMTYgJiA4OwogICAgICAgICAgICAgICAgaSA9IGIgPDwgZzsKICAgICAgICAgICAgICAgIGQgPSAoaSArIDUyMDE5MiB8IDApID4+PiAxNiAmIDQ7CiAgICAgICAgICAgICAgICBpID0gaSA8PCBkOwogICAgICAgICAgICAgICAgZSA9IChpICsgMjQ1NzYwIHwgMCkgPj4+IDE2ICYgMjsKICAgICAgICAgICAgICAgIGUgPSAxNCAtIChkIHwgZyB8IGUpICsgKGkgPDwgZSA+Pj4gMTUpIHwgMDsKICAgICAgICAgICAgICAgIGUgPSBmID4+PiAoZSArIDcgfCAwKSAmIDEgfCBlIDw8IDE7CiAgICAgICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgICAgIGUgPSAwOwogICAgICAgIGIgPSA3MDY4MCArIChlIDw8IDIpIHwgMDsKICAgICAgICBjW2ggKyAyOCA+PiAyXSA9IGU7CiAgICAgICAgY1toICsgMjAgPj4gMl0gPSAwOwogICAgICAgIGNbaCArIDE2ID4+IDJdID0gMDsKICAgICAgICBhID0gY1sxNzU5NV0gfCAwOwogICAgICAgIGQgPSAxIDw8IGU7CiAgICAgICAgaWYgKCEoYSAmIGQpKSB7CiAgICAgICAgICAgIGNbMTc1OTVdID0gYSB8IGQ7CiAgICAgICAgICAgIGNbYiA+PiAyXSA9IGg7CiAgICAgICAgICAgIGNbaCArIDI0ID4+IDJdID0gYjsKICAgICAgICAgICAgY1toICsgMTIgPj4gMl0gPSBoOwogICAgICAgICAgICBjW2ggKyA4ID4+IDJdID0gaDsKICAgICAgICAgICAgcmV0dXJuOwogICAgICAgIH0KICAgICAgICBiID0gY1tiID4+IDJdIHwgMDsKICAgICAgICBhOgogICAgICAgICAgICBkbwogICAgICAgICAgICAgICAgaWYgKChjW2IgKyA0ID4+IDJdICYgLTggfCAwKSAhPSAoZiB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgZSA9IGYgPDwgKChlIHwgMCkgPT0gMzEgPyAwIDogMjUgLSAoZSA+Pj4gMSkgfCAwKTsKICAgICAgICAgICAgICAgICAgICB3aGlsZSAoMSkgewogICAgICAgICAgICAgICAgICAgICAgICBkID0gYiArIDE2ICsgKGUgPj4+IDMxIDw8IDIpIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgYSA9IGNbZCA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICAgICAgICAgIGlmICghYSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGNbYSArIDQgPj4gMl0gJiAtOCB8IDApID09IChmIHwgMCkpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIgPSBhOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGUgPSBlIDw8IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gYTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBjW2QgPj4gMl0gPSBoOwogICAgICAgICAgICAgICAgICAgIGNbaCArIDI0ID4+IDJdID0gYjsKICAgICAgICAgICAgICAgICAgICBjW2ggKyAxMiA+PiAyXSA9IGg7CiAgICAgICAgICAgICAgICAgICAgY1toICsgOCA+PiAyXSA9IGg7CiAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB3aGlsZSAoMCk7CiAgICAgICAgZyA9IGIgKyA4IHwgMDsKICAgICAgICBpID0gY1tnID4+IDJdIHwgMDsKICAgICAgICBjW2kgKyAxMiA+PiAyXSA9IGg7CiAgICAgICAgY1tnID4+IDJdID0gaDsKICAgICAgICBjW2ggKyA4ID4+IDJdID0gaTsKICAgICAgICBjW2ggKyAxMiA+PiAyXSA9IGI7CiAgICAgICAgY1toICsgMjQgPj4gMl0gPSAwOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGZ1bmN0aW9uIEZiKGEsIGIpIHsKICAgICAgICBhID0gYSB8IDA7CiAgICAgICAgYiA9IGIgfCAwOwogICAgICAgIGlmIChhID4+PiAwIDwgOSkgewogICAgICAgICAgICBiID0gQWIoYikgfCAwOwogICAgICAgICAgICByZXR1cm4gYiB8IDA7CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgYiA9IEdiKGEsIGIpIHwgMDsKICAgICAgICAgICAgcmV0dXJuIGIgfCAwOwogICAgICAgIH0KICAgICAgICByZXR1cm4gMDsKICAgIH0KICAgIGZ1bmN0aW9uIEdiKGEsIGIpIHsKICAgICAgICBhID0gYSB8IDA7CiAgICAgICAgYiA9IGIgfCAwOwogICAgICAgIHZhciBkID0gMCwgZSA9IDAsIGYgPSAwLCBnID0gMCwgaCA9IDAsIGkgPSAwOwogICAgICAgIGQgPSBhID4+PiAwID4gMTYgPyBhIDogMTY7CiAgICAgICAgaWYgKCEoZCArIC0xICYgZCkpCiAgICAgICAgICAgIGEgPSBkOwogICAgICAgIGVsc2UgewogICAgICAgICAgICBhID0gMTY7CiAgICAgICAgICAgIHdoaWxlICgxKQogICAgICAgICAgICAgICAgaWYgKGEgPj4+IDAgPCBkID4+PiAwKQogICAgICAgICAgICAgICAgICAgIGEgPSBhIDw8IDE7CiAgICAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgfQogICAgICAgIGlmICgoLTY0IC0gYSB8IDApID4+PiAwIDw9IGIgPj4+IDApIHsKICAgICAgICAgICAgaCA9IDA7CiAgICAgICAgICAgIHJldHVybiBoIHwgMDsKICAgICAgICB9CiAgICAgICAgZyA9IGIgPj4+IDAgPCAxMSA/IDE2IDogYiArIDExICYgLTg7CiAgICAgICAgZCA9IEFiKGcgKyAxMiArIGEgfCAwKSB8IDA7CiAgICAgICAgaWYgKCFkKSB7CiAgICAgICAgICAgIGggPSAwOwogICAgICAgICAgICByZXR1cm4gaCB8IDA7CiAgICAgICAgfQogICAgICAgIGYgPSBkICsgLTggfCAwOwogICAgICAgIGRvCiAgICAgICAgICAgIGlmIChhICsgLTEgJiBkKSB7CiAgICAgICAgICAgICAgICBlID0gKGQgKyBhICsgLTEgJiAwIC0gYSkgKyAtOCB8IDA7CiAgICAgICAgICAgICAgICBiID0gZjsKICAgICAgICAgICAgICAgIGUgPSAoZSAtIGIgfCAwKSA+Pj4gMCA+IDE1ID8gZSA6IGUgKyBhIHwgMDsKICAgICAgICAgICAgICAgIGIgPSBlIC0gYiB8IDA7CiAgICAgICAgICAgICAgICBhID0gZCArIC00IHwgMDsKICAgICAgICAgICAgICAgIGkgPSBjW2EgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgZCA9IChpICYgLTgpIC0gYiB8IDA7CiAgICAgICAgICAgICAgICBpZiAoIShpICYgMykpIHsKICAgICAgICAgICAgICAgICAgICBjW2UgPj4gMl0gPSAoY1tmID4+IDJdIHwgMCkgKyBiOwogICAgICAgICAgICAgICAgICAgIGNbZSArIDQgPj4gMl0gPSBkOwogICAgICAgICAgICAgICAgICAgIGEgPSBlOwogICAgICAgICAgICAgICAgICAgIGIgPSBlOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICBpID0gZSArIDQgfCAwOwogICAgICAgICAgICAgICAgICAgIGNbaSA+PiAyXSA9IGQgfCBjW2kgPj4gMl0gJiAxIHwgMjsKICAgICAgICAgICAgICAgICAgICBkID0gZSArIGQgKyA0IHwgMDsKICAgICAgICAgICAgICAgICAgICBjW2QgPj4gMl0gPSBjW2QgPj4gMl0gfCAxOwogICAgICAgICAgICAgICAgICAgIGNbYSA+PiAyXSA9IGIgfCBjW2EgPj4gMl0gJiAxIHwgMjsKICAgICAgICAgICAgICAgICAgICBjW2kgPj4gMl0gPSBjW2kgPj4gMl0gfCAxOwogICAgICAgICAgICAgICAgICAgIEViKGYsIGIpOwogICAgICAgICAgICAgICAgICAgIGEgPSBlOwogICAgICAgICAgICAgICAgICAgIGIgPSBlOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgYSA9IGY7CiAgICAgICAgICAgICAgICBiID0gZjsKICAgICAgICAgICAgfQogICAgICAgIHdoaWxlICgwKTsKICAgICAgICBhID0gYSArIDQgfCAwOwogICAgICAgIGQgPSBjW2EgPj4gMl0gfCAwOwogICAgICAgIGlmIChkICYgMyB8IDAgPyAoaCA9IGQgJiAtOCwgaCA+Pj4gMCA+IChnICsgMTYgfCAwKSA+Pj4gMCkgOiAwKSB7CiAgICAgICAgICAgIGkgPSBoIC0gZyB8IDA7CiAgICAgICAgICAgIGYgPSBiICsgZyB8IDA7CiAgICAgICAgICAgIGNbYSA+PiAyXSA9IGcgfCBkICYgMSB8IDI7CiAgICAgICAgICAgIGNbZiArIDQgPj4gMl0gPSBpIHwgMzsKICAgICAgICAgICAgaCA9IGIgKyBoICsgNCB8IDA7CiAgICAgICAgICAgIGNbaCA+PiAyXSA9IGNbaCA+PiAyXSB8IDE7CiAgICAgICAgICAgIEViKGYsIGkpOwogICAgICAgIH0KICAgICAgICBpID0gYiArIDggfCAwOwogICAgICAgIHJldHVybiBpIHwgMDsKICAgIH0KICAgIGZ1bmN0aW9uIEhiKCkgewogICAgICAgIHQoNzA4ODgpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGZ1bmN0aW9uIEliKCkgewogICAgICAgIHJldHVybiA3MDg3MjsKICAgIH0KICAgIGZ1bmN0aW9uIEpiKCkgewogICAgICAgIHJldHVybiA3MDg4MDsKICAgIH0KICAgIGZ1bmN0aW9uIEtiKCkgewogICAgICAgIHJldHVybiA3MDg4NDsKICAgIH0KICAgIGZ1bmN0aW9uIExiKCkgewogICAgICAgIHJldHVybiA3MDg4ODsKICAgIH0KICAgIGZ1bmN0aW9uIE1iKGEpIHsKICAgICAgICBhID0gYSB8IDA7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgZnVuY3Rpb24gTmIoYSkgewogICAgICAgIGEgPSBhIHwgMDsKICAgICAgICBiYyhhKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBmdW5jdGlvbiBPYihhKSB7CiAgICAgICAgYSA9IGEgfCAwOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGZ1bmN0aW9uIFBiKGEpIHsKICAgICAgICBhID0gYSB8IDA7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgZnVuY3Rpb24gUWIoYSwgYiwgZCkgewogICAgICAgIGEgPSBhIHwgMDsKICAgICAgICBiID0gYiB8IDA7CiAgICAgICAgZCA9IGQgfCAwOwogICAgICAgIHZhciBlID0gMCwgZiA9IDAsIGcgPSAwLCBoID0gMDsKICAgICAgICBoID0gRTsKICAgICAgICBFID0gRSArIDY0IHwgMDsKICAgICAgICBmID0gaDsKICAgICAgICBpZiAoIShVYihhLCBiKSB8IDApKQogICAgICAgICAgICBpZiAoKGIgfCAwKSAhPSAwID8gKGcgPSBZYihiLCA2OTc5MikgfCAwLCAoZyB8IDApICE9IDApIDogMCkgewogICAgICAgICAgICAgICAgYiA9IGYgKyA0IHwgMDsKICAgICAgICAgICAgICAgIGUgPSBiICsgNTIgfCAwOwogICAgICAgICAgICAgICAgZG8gewogICAgICAgICAgICAgICAgICAgIGNbYiA+PiAyXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgYiA9IGIgKyA0IHwgMDsKICAgICAgICAgICAgICAgIH0gd2hpbGUgKChiIHwgMCkgPCAoZSB8IDApKTsKICAgICAgICAgICAgICAgIGNbZiA+PiAyXSA9IGc7CiAgICAgICAgICAgICAgICBjW2YgKyA4ID4+IDJdID0gYTsKICAgICAgICAgICAgICAgIGNbZiArIDEyID4+IDJdID0gLTE7CiAgICAgICAgICAgICAgICBjW2YgKyA0OCA+PiAyXSA9IDE7CiAgICAgICAgICAgICAgICBMW2NbKGNbZyA+PiAyXSB8IDApICsgMjggPj4gMl0gJiAzXShnLCBmLCBjW2QgPj4gMl0gfCAwLCAxKTsKICAgICAgICAgICAgICAgIGlmICgoY1tmICsgMjQgPj4gMl0gfCAwKSA9PSAxKSB7CiAgICAgICAgICAgICAgICAgICAgY1tkID4+IDJdID0gY1tmICsgMTYgPj4gMl07CiAgICAgICAgICAgICAgICAgICAgYiA9IDE7CiAgICAgICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgICAgICBiID0gMDsKICAgICAgICAgICAgfSBlbHNlCiAgICAgICAgICAgICAgICBiID0gMDsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGIgPSAxOwogICAgICAgIEUgPSBoOwogICAgICAgIHJldHVybiBiIHwgMDsKICAgIH0KICAgIGZ1bmN0aW9uIFJiKGEsIGIsIGQsIGUsIGYsIGcpIHsKICAgICAgICBhID0gYSB8IDA7CiAgICAgICAgYiA9IGIgfCAwOwogICAgICAgIGQgPSBkIHwgMDsKICAgICAgICBlID0gZSB8IDA7CiAgICAgICAgZiA9IGYgfCAwOwogICAgICAgIGcgPSBnIHwgMDsKICAgICAgICBpZiAoVWIoYSwgY1tiICsgOCA+PiAyXSB8IDApIHwgMCkKICAgICAgICAgICAgWGIoYiwgZCwgZSwgZik7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgZnVuY3Rpb24gU2IoYiwgZCwgZSwgZiwgZykgewogICAgICAgIGIgPSBiIHwgMDsKICAgICAgICBkID0gZCB8IDA7CiAgICAgICAgZSA9IGUgfCAwOwogICAgICAgIGYgPSBmIHwgMDsKICAgICAgICBnID0gZyB8IDA7CiAgICAgICAgdmFyIGggPSAwOwogICAgICAgIGRvCiAgICAgICAgICAgIGlmICghKFViKGIsIGNbZCArIDggPj4gMl0gfCAwKSB8IDApKSB7CiAgICAgICAgICAgICAgICBpZiAoVWIoYiwgY1tkID4+IDJdIHwgMCkgfCAwKSB7CiAgICAgICAgICAgICAgICAgICAgaWYgKChjW2QgKyAxNiA+PiAyXSB8IDApICE9IChlIHwgMCkgPyAoaCA9IGQgKyAyMCB8IDAsIChjW2ggPj4gMl0gfCAwKSAhPSAoZSB8IDApKSA6IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgY1tkICsgMzIgPj4gMl0gPSBmOwogICAgICAgICAgICAgICAgICAgICAgICBjW2ggPj4gMl0gPSBlOwogICAgICAgICAgICAgICAgICAgICAgICBnID0gZCArIDQwIHwgMDsKICAgICAgICAgICAgICAgICAgICAgICAgY1tnID4+IDJdID0gKGNbZyA+PiAyXSB8IDApICsgMTsKICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChjW2QgKyAzNiA+PiAyXSB8IDApID09IDEgPyAoY1tkICsgMjQgPj4gMl0gfCAwKSA9PSAyIDogMCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFbZCArIDU0ID4+IDBdID0gMTsKICAgICAgICAgICAgICAgICAgICAgICAgY1tkICsgNDQgPj4gMl0gPSA0OwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgaWYgKChmIHwgMCkgPT0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgY1tkICsgMzIgPj4gMl0gPSAxOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9IGVsc2UKICAgICAgICAgICAgICAgIFdiKGQsIGUsIGYpOwogICAgICAgIHdoaWxlICgwKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBmdW5jdGlvbiBUYihhLCBiLCBkLCBlKSB7CiAgICAgICAgYSA9IGEgfCAwOwogICAgICAgIGIgPSBiIHwgMDsKICAgICAgICBkID0gZCB8IDA7CiAgICAgICAgZSA9IGUgfCAwOwogICAgICAgIGlmIChVYihhLCBjW2IgKyA4ID4+IDJdIHwgMCkgfCAwKQogICAgICAgICAgICBWYihiLCBkLCBlKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBmdW5jdGlvbiBVYihhLCBiKSB7CiAgICAgICAgYSA9IGEgfCAwOwogICAgICAgIGIgPSBiIHwgMDsKICAgICAgICByZXR1cm4gKGEgfCAwKSA9PSAoYiB8IDApIHwgMDsKICAgIH0KICAgIGZ1bmN0aW9uIFZiKGIsIGQsIGUpIHsKICAgICAgICBiID0gYiB8IDA7CiAgICAgICAgZCA9IGQgfCAwOwogICAgICAgIGUgPSBlIHwgMDsKICAgICAgICB2YXIgZiA9IDAsIGcgPSAwOwogICAgICAgIGYgPSBiICsgMTYgfCAwOwogICAgICAgIGcgPSBjW2YgPj4gMl0gfCAwOwogICAgICAgIGRvCiAgICAgICAgICAgIGlmIChnKSB7CiAgICAgICAgICAgICAgICBpZiAoKGcgfCAwKSAhPSAoZCB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgZSA9IGIgKyAzNiB8IDA7CiAgICAgICAgICAgICAgICAgICAgY1tlID4+IDJdID0gKGNbZSA+PiAyXSB8IDApICsgMTsKICAgICAgICAgICAgICAgICAgICBjW2IgKyAyNCA+PiAyXSA9IDI7CiAgICAgICAgICAgICAgICAgICAgYVtiICsgNTQgPj4gMF0gPSAxOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgYiA9IGIgKyAyNCB8IDA7CiAgICAgICAgICAgICAgICBpZiAoKGNbYiA+PiAyXSB8IDApID09IDIpCiAgICAgICAgICAgICAgICAgICAgY1tiID4+IDJdID0gZTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGNbZiA+PiAyXSA9IGQ7CiAgICAgICAgICAgICAgICBjW2IgKyAyNCA+PiAyXSA9IGU7CiAgICAgICAgICAgICAgICBjW2IgKyAzNiA+PiAyXSA9IDE7CiAgICAgICAgICAgIH0KICAgICAgICB3aGlsZSAoMCk7CiAgICAgICAgcmV0dXJuOwogICAgfQogICAgZnVuY3Rpb24gV2IoYSwgYiwgZCkgewogICAgICAgIGEgPSBhIHwgMDsKICAgICAgICBiID0gYiB8IDA7CiAgICAgICAgZCA9IGQgfCAwOwogICAgICAgIHZhciBlID0gMDsKICAgICAgICBpZiAoKGNbYSArIDQgPj4gMl0gfCAwKSA9PSAoYiB8IDApID8gKGUgPSBhICsgMjggfCAwLCAoY1tlID4+IDJdIHwgMCkgIT0gMSkgOiAwKQogICAgICAgICAgICBjW2UgPj4gMl0gPSBkOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGZ1bmN0aW9uIFhiKGIsIGQsIGUsIGYpIHsKICAgICAgICBiID0gYiB8IDA7CiAgICAgICAgZCA9IGQgfCAwOwogICAgICAgIGUgPSBlIHwgMDsKICAgICAgICBmID0gZiB8IDA7CiAgICAgICAgdmFyIGcgPSAwOwogICAgICAgIGFbYiArIDUzID4+IDBdID0gMTsKICAgICAgICBkbwogICAgICAgICAgICBpZiAoKGNbYiArIDQgPj4gMl0gfCAwKSA9PSAoZSB8IDApKSB7CiAgICAgICAgICAgICAgICBhW2IgKyA1MiA+PiAwXSA9IDE7CiAgICAgICAgICAgICAgICBnID0gYiArIDE2IHwgMDsKICAgICAgICAgICAgICAgIGUgPSBjW2cgPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgaWYgKCFlKSB7CiAgICAgICAgICAgICAgICAgICAgY1tnID4+IDJdID0gZDsKICAgICAgICAgICAgICAgICAgICBjW2IgKyAyNCA+PiAyXSA9IGY7CiAgICAgICAgICAgICAgICAgICAgY1tiICsgMzYgPj4gMl0gPSAxOwogICAgICAgICAgICAgICAgICAgIGlmICghKChmIHwgMCkgPT0gMSA/IChjW2IgKyA0OCA+PiAyXSB8IDApID09IDEgOiAwKSkKICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgYVtiICsgNTQgPj4gMF0gPSAxOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKChlIHwgMCkgIT0gKGQgfCAwKSkgewogICAgICAgICAgICAgICAgICAgIGYgPSBiICsgMzYgfCAwOwogICAgICAgICAgICAgICAgICAgIGNbZiA+PiAyXSA9IChjW2YgPj4gMl0gfCAwKSArIDE7CiAgICAgICAgICAgICAgICAgICAgYVtiICsgNTQgPj4gMF0gPSAxOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgZyA9IGIgKyAyNCB8IDA7CiAgICAgICAgICAgICAgICBlID0gY1tnID4+IDJdIHwgMDsKICAgICAgICAgICAgICAgIGlmICgoZSB8IDApID09IDIpIHsKICAgICAgICAgICAgICAgICAgICBjW2cgPj4gMl0gPSBmOwogICAgICAgICAgICAgICAgICAgIGUgPSBmOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKChlIHwgMCkgPT0gMSA/IChjW2IgKyA0OCA+PiAyXSB8IDApID09IDEgOiAwKQogICAgICAgICAgICAgICAgICAgIGFbYiArIDU0ID4+IDBdID0gMTsKICAgICAgICAgICAgfQogICAgICAgIHdoaWxlICgwKTsKICAgICAgICByZXR1cm47CiAgICB9CiAgICBmdW5jdGlvbiBZYihkLCBlKSB7CiAgICAgICAgZCA9IGQgfCAwOwogICAgICAgIGUgPSBlIHwgMDsKICAgICAgICB2YXIgZiA9IDAsIGcgPSAwLCBoID0gMCwgaSA9IDAsIGogPSAwLCBrID0gMCwgbCA9IDAsIG0gPSAwLCBuID0gMCwgbyA9IDAsIHAgPSAwLCBxID0gMDsKICAgICAgICBxID0gRTsKICAgICAgICBFID0gRSArIDY0IHwgMDsKICAgICAgICBuID0gcTsKICAgICAgICBwID0gY1tkID4+IDJdIHwgMDsKICAgICAgICBvID0gZCArIChjW3AgKyAtOCA+PiAyXSB8IDApIHwgMDsKICAgICAgICBwID0gY1twICsgLTQgPj4gMl0gfCAwOwogICAgICAgIGNbbiA+PiAyXSA9IGU7CiAgICAgICAgY1tuICsgNCA+PiAyXSA9IGQ7CiAgICAgICAgY1tuICsgOCA+PiAyXSA9IDY5ODA4OwogICAgICAgIGcgPSBuICsgMTIgfCAwOwogICAgICAgIGggPSBuICsgMTYgfCAwOwogICAgICAgIGkgPSBuICsgMjAgfCAwOwogICAgICAgIGogPSBuICsgMjQgfCAwOwogICAgICAgIGsgPSBuICsgMjggfCAwOwogICAgICAgIGwgPSBuICsgMzIgfCAwOwogICAgICAgIG0gPSBuICsgNDAgfCAwOwogICAgICAgIGQgPSBVYihwLCBlKSB8IDA7CiAgICAgICAgZSA9IGc7CiAgICAgICAgZiA9IGUgKyA0MCB8IDA7CiAgICAgICAgZG8gewogICAgICAgICAgICBjW2UgPj4gMl0gPSAwOwogICAgICAgICAgICBlID0gZSArIDQgfCAwOwogICAgICAgIH0gd2hpbGUgKChlIHwgMCkgPCAoZiB8IDApKTsKICAgICAgICBiW2cgKyA0MCA+PiAxXSA9IDA7CiAgICAgICAgYVtnICsgNDIgPj4gMF0gPSAwOwogICAgICAgIGE6CiAgICAgICAgICAgIGRvCiAgICAgICAgICAgICAgICBpZiAoZCkgewogICAgICAgICAgICAgICAgICAgIGNbbiArIDQ4ID4+IDJdID0gMTsKICAgICAgICAgICAgICAgICAgICBOW2NbKGNbcCA+PiAyXSB8IDApICsgMjAgPj4gMl0gJiAzXShwLCBuLCBvLCBvLCAxLCAwKTsKICAgICAgICAgICAgICAgICAgICBkID0gKGNbaiA+PiAyXSB8IDApID09IDEgPyBvIDogMDsKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgTVtjWyhjW3AgPj4gMl0gfCAwKSArIDI0ID4+IDJdICYgM10ocCwgbiwgbywgMSwgMCk7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoIChjW24gKyAzNiA+PiAyXSB8IDApIHsKICAgICAgICAgICAgICAgICAgICBjYXNlIDA6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSAoY1ttID4+IDJdIHwgMCkgPT0gMSAmIChjW2sgPj4gMl0gfCAwKSA9PSAxICYgKGNbbCA+PiAyXSB8IDApID09IDEgPyBjW2kgPj4gMl0gfCAwIDogMDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrIGE7CiAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBjYXNlIDE6CiAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ6IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsgYTsKICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBpZiAoKGNbaiA+PiAyXSB8IDApICE9IDEgPyAhKChjW20gPj4gMl0gfCAwKSA9PSAwICYgKGNbayA+PiAyXSB8IDApID09IDEgJiAoY1tsID4+IDJdIHwgMCkgPT0gMSkgOiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGQgPSAwOwogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgZCA9IGNbaCA+PiAyXSB8IDA7CiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgIHdoaWxlICgwKTsKICAgICAgICBFID0gcTsKICAgICAgICByZXR1cm4gZCB8IDA7CiAgICB9CiAgICBmdW5jdGlvbiBaYihhKSB7CiAgICAgICAgYSA9IGEgfCAwOwogICAgICAgIGJjKGEpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGZ1bmN0aW9uIF9iKGEsIGIsIGQsIGUsIGYsIGcpIHsKICAgICAgICBhID0gYSB8IDA7CiAgICAgICAgYiA9IGIgfCAwOwogICAgICAgIGQgPSBkIHwgMDsKICAgICAgICBlID0gZSB8IDA7CiAgICAgICAgZiA9IGYgfCAwOwogICAgICAgIGcgPSBnIHwgMDsKICAgICAgICBpZiAoVWIoYSwgY1tiICsgOCA+PiAyXSB8IDApIHwgMCkKICAgICAgICAgICAgWGIoYiwgZCwgZSwgZik7CiAgICAgICAgZWxzZSB7CiAgICAgICAgICAgIGEgPSBjW2EgKyA4ID4+IDJdIHwgMDsKICAgICAgICAgICAgTltjWyhjW2EgPj4gMl0gfCAwKSArIDIwID4+IDJdICYgM10oYSwgYiwgZCwgZSwgZiwgZyk7CiAgICAgICAgfQogICAgICAgIHJldHVybjsKICAgIH0KICAgIGZ1bmN0aW9uICRiKGIsIGQsIGUsIGYsIGcpIHsKICAgICAgICBiID0gYiB8IDA7CiAgICAgICAgZCA9IGQgfCAwOwogICAgICAgIGUgPSBlIHwgMDsKICAgICAgICBmID0gZiB8IDA7CiAgICAgICAgZyA9IGcgfCAwOwogICAgICAgIHZhciBoID0gMCwgaSA9IDAsIGogPSAwOwogICAgICAgIGRvCiAgICAgICAgICAgIGlmICghKFViKGIsIGNbZCArIDggPj4gMl0gfCAwKSB8IDApKSB7CiAgICAgICAgICAgICAgICBpZiAoIShVYihiLCBjW2QgPj4gMl0gfCAwKSB8IDApKSB7CiAgICAgICAgICAgICAgICAgICAgaSA9IGNbYiArIDggPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgIE1bY1soY1tpID4+IDJdIHwgMCkgKyAyNCA+PiAyXSAmIDNdKGksIGQsIGUsIGYsIGcpOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKChjW2QgKyAxNiA+PiAyXSB8IDApICE9IChlIHwgMCkgPyAoaCA9IGQgKyAyMCB8IDAsIChjW2ggPj4gMl0gfCAwKSAhPSAoZSB8IDApKSA6IDApIHsKICAgICAgICAgICAgICAgICAgICBjW2QgKyAzMiA+PiAyXSA9IGY7CiAgICAgICAgICAgICAgICAgICAgaSA9IGQgKyA0NCB8IDA7CiAgICAgICAgICAgICAgICAgICAgaWYgKChjW2kgPj4gMl0gfCAwKSA9PSA0KQogICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICBmID0gZCArIDUyIHwgMDsKICAgICAgICAgICAgICAgICAgICBhW2YgPj4gMF0gPSAwOwogICAgICAgICAgICAgICAgICAgIGogPSBkICsgNTMgfCAwOwogICAgICAgICAgICAgICAgICAgIGFbaiA+PiAwXSA9IDA7CiAgICAgICAgICAgICAgICAgICAgYiA9IGNbYiArIDggPj4gMl0gfCAwOwogICAgICAgICAgICAgICAgICAgIE5bY1soY1tiID4+IDJdIHwgMCkgKyAyMCA+PiAyXSAmIDNdKGIsIGQsIGUsIGUsIDEsIGcpOwogICAgICAgICAgICAgICAgICAgIGlmIChhW2ogPj4gMF0gfCAwKQogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIShhW2YgPj4gMF0gfCAwKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgZiA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBiID0gMTE7CiAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IDE1OwogICAgICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICBmID0gMDsKICAgICAgICAgICAgICAgICAgICAgICAgYiA9IDExOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICBkbwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoKGIgfCAwKSA9PSAxMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgY1toID4+IDJdID0gZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGogPSBkICsgNDAgfCAwOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgY1tqID4+IDJdID0gKGNbaiA+PiAyXSB8IDApICsgMTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICgoY1tkICsgMzYgPj4gMl0gfCAwKSA9PSAxID8gKGNbZCArIDI0ID4+IDJdIHwgMCkgPT0gMiA6IDApIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhW2QgKyA1NCA+PiAwXSA9IDE7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYpIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IDE1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmID0gNDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGYpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYiA9IDE1OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYgPSA0OwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgd2hpbGUgKDApOwogICAgICAgICAgICAgICAgICAgIGlmICgoYiB8IDApID09IDE1KQogICAgICAgICAgICAgICAgICAgICAgICBmID0gMzsKICAgICAgICAgICAgICAgICAgICBjW2kgPj4gMl0gPSBmOwogICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgaWYgKChmIHwgMCkgPT0gMSkKICAgICAgICAgICAgICAgICAgICBjW2QgKyAzMiA+PiAyXSA9IDE7CiAgICAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgICAgV2IoZCwgZSwgZik7CiAgICAgICAgd2hpbGUgKDApOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGZ1bmN0aW9uIGFjKGEsIGIsIGQsIGUpIHsKICAgICAgICBhID0gYSB8IDA7CiAgICAgICAgYiA9IGIgfCAwOwogICAgICAgIGQgPSBkIHwgMDsKICAgICAgICBlID0gZSB8IDA7CiAgICAgICAgaWYgKFViKGEsIGNbYiArIDggPj4gMl0gfCAwKSB8IDApCiAgICAgICAgICAgIFZiKGIsIGQsIGUpOwogICAgICAgIGVsc2UgewogICAgICAgICAgICBhID0gY1thICsgOCA+PiAyXSB8IDA7CiAgICAgICAgICAgIExbY1soY1thID4+IDJdIHwgMCkgKyAyOCA+PiAyXSAmIDNdKGEsIGIsIGQsIGUpOwogICAgICAgIH0KICAgICAgICByZXR1cm47CiAgICB9CiAgICBmdW5jdGlvbiBiYyhhKSB7CiAgICAgICAgYSA9IGEgfCAwOwogICAgICAgIEJiKGEpOwogICAgICAgIHJldHVybjsKICAgIH0KICAgIGZ1bmN0aW9uIGNjKGEsIGIsIGQpIHsKICAgICAgICBhID0gYSB8IDA7CiAgICAgICAgYiA9IGIgfCAwOwogICAgICAgIGQgPSBkIHwgMDsKICAgICAgICB2YXIgZSA9IDAsIGYgPSAwOwogICAgICAgIGYgPSBFOwogICAgICAgIEUgPSBFICsgMTYgfCAwOwogICAgICAgIGUgPSBmOwogICAgICAgIGNbZSA+PiAyXSA9IGNbZCA+PiAyXTsKICAgICAgICBhID0gSltjWyhjW2EgPj4gMl0gfCAwKSArIDE2ID4+IDJdICYgMV0oYSwgYiwgZSkgfCAwOwogICAgICAgIGlmIChhKQogICAgICAgICAgICBjW2QgPj4gMl0gPSBjW2UgPj4gMl07CiAgICAgICAgRSA9IGY7CiAgICAgICAgcmV0dXJuIGEgJiAxIHwgMDsKICAgIH0KICAgIGZ1bmN0aW9uIGRjKGEpIHsKICAgICAgICBhID0gYSB8IDA7CiAgICAgICAgaWYgKCFhKQogICAgICAgICAgICBhID0gMDsKICAgICAgICBlbHNlCiAgICAgICAgICAgIGEgPSAoWWIoYSwgNjk4NjQpIHwgMCkgIT0gMCAmIDE7CiAgICAgICAgcmV0dXJuIGEgfCAwOwogICAgfQogICAgZnVuY3Rpb24gZWMoYiwgZCwgZSkgewogICAgICAgIGIgPSBiIHwgMDsKICAgICAgICBkID0gZCB8IDA7CiAgICAgICAgZSA9IGUgfCAwOwogICAgICAgIHZhciBmID0gMCwgZyA9IDAsIGggPSAwOwogICAgICAgIGlmICgoZSB8IDApID49IDgxOTIpIHsKICAgICAgICAgICAgQShiIHwgMCwgZCB8IDAsIGUgfCAwKSB8IDA7CiAgICAgICAgICAgIHJldHVybiBiIHwgMDsKICAgICAgICB9CiAgICAgICAgaCA9IGIgfCAwOwogICAgICAgIGcgPSBiICsgZSB8IDA7CiAgICAgICAgaWYgKChiICYgMykgPT0gKGQgJiAzKSkgewogICAgICAgICAgICB3aGlsZSAoYiAmIDMpIHsKICAgICAgICAgICAgICAgIGlmICghZSkKICAgICAgICAgICAgICAgICAgICByZXR1cm4gaCB8IDA7CiAgICAgICAgICAgICAgICBhW2IgPj4gMF0gPSBhW2QgPj4gMF0gfCAwOwogICAgICAgICAgICAgICAgYiA9IGIgKyAxIHwgMDsKICAgICAgICAgICAgICAgIGQgPSBkICsgMSB8IDA7CiAgICAgICAgICAgICAgICBlID0gZSAtIDEgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIGUgPSBnICYgLTQgfCAwOwogICAgICAgICAgICBmID0gZSAtIDY0IHwgMDsKICAgICAgICAgICAgd2hpbGUgKChiIHwgMCkgPD0gKGYgfCAwKSkgewogICAgICAgICAgICAgICAgY1tiID4+IDJdID0gY1tkID4+IDJdOwogICAgICAgICAgICAgICAgY1tiICsgNCA+PiAyXSA9IGNbZCArIDQgPj4gMl07CiAgICAgICAgICAgICAgICBjW2IgKyA4ID4+IDJdID0gY1tkICsgOCA+PiAyXTsKICAgICAgICAgICAgICAgIGNbYiArIDEyID4+IDJdID0gY1tkICsgMTIgPj4gMl07CiAgICAgICAgICAgICAgICBjW2IgKyAxNiA+PiAyXSA9IGNbZCArIDE2ID4+IDJdOwogICAgICAgICAgICAgICAgY1tiICsgMjAgPj4gMl0gPSBjW2QgKyAyMCA+PiAyXTsKICAgICAgICAgICAgICAgIGNbYiArIDI0ID4+IDJdID0gY1tkICsgMjQgPj4gMl07CiAgICAgICAgICAgICAgICBjW2IgKyAyOCA+PiAyXSA9IGNbZCArIDI4ID4+IDJdOwogICAgICAgICAgICAgICAgY1tiICsgMzIgPj4gMl0gPSBjW2QgKyAzMiA+PiAyXTsKICAgICAgICAgICAgICAgIGNbYiArIDM2ID4+IDJdID0gY1tkICsgMzYgPj4gMl07CiAgICAgICAgICAgICAgICBjW2IgKyA0MCA+PiAyXSA9IGNbZCArIDQwID4+IDJdOwogICAgICAgICAgICAgICAgY1tiICsgNDQgPj4gMl0gPSBjW2QgKyA0NCA+PiAyXTsKICAgICAgICAgICAgICAgIGNbYiArIDQ4ID4+IDJdID0gY1tkICsgNDggPj4gMl07CiAgICAgICAgICAgICAgICBjW2IgKyA1MiA+PiAyXSA9IGNbZCArIDUyID4+IDJdOwogICAgICAgICAgICAgICAgY1tiICsgNTYgPj4gMl0gPSBjW2QgKyA1NiA+PiAyXTsKICAgICAgICAgICAgICAgIGNbYiArIDYwID4+IDJdID0gY1tkICsgNjAgPj4gMl07CiAgICAgICAgICAgICAgICBiID0gYiArIDY0IHwgMDsKICAgICAgICAgICAgICAgIGQgPSBkICsgNjQgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHdoaWxlICgoYiB8IDApIDwgKGUgfCAwKSkgewogICAgICAgICAgICAgICAgY1tiID4+IDJdID0gY1tkID4+IDJdOwogICAgICAgICAgICAgICAgYiA9IGIgKyA0IHwgMDsKICAgICAgICAgICAgICAgIGQgPSBkICsgNCB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBlID0gZyAtIDQgfCAwOwogICAgICAgICAgICB3aGlsZSAoKGIgfCAwKSA8IChlIHwgMCkpIHsKICAgICAgICAgICAgICAgIGFbYiA+PiAwXSA9IGFbZCA+PiAwXSB8IDA7CiAgICAgICAgICAgICAgICBhW2IgKyAxID4+IDBdID0gYVtkICsgMSA+PiAwXSB8IDA7CiAgICAgICAgICAgICAgICBhW2IgKyAyID4+IDBdID0gYVtkICsgMiA+PiAwXSB8IDA7CiAgICAgICAgICAgICAgICBhW2IgKyAzID4+IDBdID0gYVtkICsgMyA+PiAwXSB8IDA7CiAgICAgICAgICAgICAgICBiID0gYiArIDQgfCAwOwogICAgICAgICAgICAgICAgZCA9IGQgKyA0IHwgMDsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICB3aGlsZSAoKGIgfCAwKSA8IChnIHwgMCkpIHsKICAgICAgICAgICAgYVtiID4+IDBdID0gYVtkID4+IDBdIHwgMDsKICAgICAgICAgICAgYiA9IGIgKyAxIHwgMDsKICAgICAgICAgICAgZCA9IGQgKyAxIHwgMDsKICAgICAgICB9CiAgICAgICAgcmV0dXJuIGggfCAwOwogICAgfQogICAgZnVuY3Rpb24gZmMoYiwgZCwgZSkgewogICAgICAgIGIgPSBiIHwgMDsKICAgICAgICBkID0gZCB8IDA7CiAgICAgICAgZSA9IGUgfCAwOwogICAgICAgIHZhciBmID0gMCwgZyA9IDAsIGggPSAwLCBpID0gMDsKICAgICAgICBoID0gYiArIGUgfCAwOwogICAgICAgIGQgPSBkICYgMjU1OwogICAgICAgIGlmICgoZSB8IDApID49IDY3KSB7CiAgICAgICAgICAgIHdoaWxlIChiICYgMykgewogICAgICAgICAgICAgICAgYVtiID4+IDBdID0gZDsKICAgICAgICAgICAgICAgIGIgPSBiICsgMSB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICAgICAgZiA9IGggJiAtNCB8IDA7CiAgICAgICAgICAgIGkgPSBkIHwgZCA8PCA4IHwgZCA8PCAxNiB8IGQgPDwgMjQ7CiAgICAgICAgICAgIGcgPSBmIC0gNjQgfCAwOwogICAgICAgICAgICB3aGlsZSAoKGIgfCAwKSA8PSAoZyB8IDApKSB7CiAgICAgICAgICAgICAgICBjW2IgPj4gMl0gPSBpOwogICAgICAgICAgICAgICAgY1tiICsgNCA+PiAyXSA9IGk7CiAgICAgICAgICAgICAgICBjW2IgKyA4ID4+IDJdID0gaTsKICAgICAgICAgICAgICAgIGNbYiArIDEyID4+IDJdID0gaTsKICAgICAgICAgICAgICAgIGNbYiArIDE2ID4+IDJdID0gaTsKICAgICAgICAgICAgICAgIGNbYiArIDIwID4+IDJdID0gaTsKICAgICAgICAgICAgICAgIGNbYiArIDI0ID4+IDJdID0gaTsKICAgICAgICAgICAgICAgIGNbYiArIDI4ID4+IDJdID0gaTsKICAgICAgICAgICAgICAgIGNbYiArIDMyID4+IDJdID0gaTsKICAgICAgICAgICAgICAgIGNbYiArIDM2ID4+IDJdID0gaTsKICAgICAgICAgICAgICAgIGNbYiArIDQwID4+IDJdID0gaTsKICAgICAgICAgICAgICAgIGNbYiArIDQ0ID4+IDJdID0gaTsKICAgICAgICAgICAgICAgIGNbYiArIDQ4ID4+IDJdID0gaTsKICAgICAgICAgICAgICAgIGNbYiArIDUyID4+IDJdID0gaTsKICAgICAgICAgICAgICAgIGNbYiArIDU2ID4+IDJdID0gaTsKICAgICAgICAgICAgICAgIGNbYiArIDYwID4+IDJdID0gaTsKICAgICAgICAgICAgICAgIGIgPSBiICsgNjQgfCAwOwogICAgICAgICAgICB9CiAgICAgICAgICAgIHdoaWxlICgoYiB8IDApIDwgKGYgfCAwKSkgewogICAgICAgICAgICAgICAgY1tiID4+IDJdID0gaTsKICAgICAgICAgICAgICAgIGIgPSBiICsgNCB8IDA7CiAgICAgICAgICAgIH0KICAgICAgICB9CiAgICAgICAgd2hpbGUgKChiIHwgMCkgPCAoaCB8IDApKSB7CiAgICAgICAgICAgIGFbYiA+PiAwXSA9IGQ7CiAgICAgICAgICAgIGIgPSBiICsgMSB8IDA7CiAgICAgICAgfQogICAgICAgIHJldHVybiBoIC0gZSB8IDA7CiAgICB9CiAgICBmdW5jdGlvbiBnYyhhKSB7CiAgICAgICAgYSA9IGEgfCAwOwogICAgICAgIHZhciBiID0gMCwgZCA9IDAsIGUgPSAwOwogICAgICAgIGUgPSB6KCkgfCAwOwogICAgICAgIGQgPSBjW2cgPj4gMl0gfCAwOwogICAgICAgIGIgPSBkICsgYSB8IDA7CiAgICAgICAgaWYgKChhIHwgMCkgPiAwICYgKGIgfCAwKSA8IChkIHwgMCkgfCAoYiB8IDApIDwgMCkgewogICAgICAgICAgICBDKGIgfCAwKSB8IDA7CiAgICAgICAgICAgIHkoMTIpOwogICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgfQogICAgICAgIGlmICgoYiB8IDApID4gKGUgfCAwKSkKICAgICAgICAgICAgaWYgKCEoQihiIHwgMCkgfCAwKSkgewogICAgICAgICAgICAgICAgeSgxMik7CiAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgIH0KICAgICAgICBjW2cgPj4gMl0gPSBiOwogICAgICAgIHJldHVybiBkIHwgMDsKICAgIH0KICAgIGZ1bmN0aW9uIGhjKGEsIGIsIGMpIHsKICAgICAgICBhID0gYSB8IDA7CiAgICAgICAgYiA9IGIgfCAwOwogICAgICAgIGMgPSBjIHwgMDsKICAgICAgICByZXR1cm4gSVthICYgMF0oYiB8IDAsIGMgfCAwKSB8IDA7CiAgICB9CiAgICBmdW5jdGlvbiBpYyhhLCBiLCBjLCBkKSB7CiAgICAgICAgYSA9IGEgfCAwOwogICAgICAgIGIgPSBiIHwgMDsKICAgICAgICBjID0gYyB8IDA7CiAgICAgICAgZCA9IGQgfCAwOwogICAgICAgIHJldHVybiBKW2EgJiAxXShiIHwgMCwgYyB8IDAsIGQgfCAwKSB8IDA7CiAgICB9CiAgICBmdW5jdGlvbiBqYyhhLCBiKSB7CiAgICAgICAgYSA9IGEgfCAwOwogICAgICAgIGIgPSBiIHwgMDsKICAgICAgICBLW2EgJiA3XShiIHwgMCk7CiAgICB9CiAgICBmdW5jdGlvbiBrYyhhLCBiLCBjLCBkLCBlKSB7CiAgICAgICAgYSA9IGEgfCAwOwogICAgICAgIGIgPSBiIHwgMDsKICAgICAgICBjID0gYyB8IDA7CiAgICAgICAgZCA9IGQgfCAwOwogICAgICAgIGUgPSBlIHwgMDsKICAgICAgICBMW2EgJiAzXShiIHwgMCwgYyB8IDAsIGQgfCAwLCBlIHwgMCk7CiAgICB9CiAgICBmdW5jdGlvbiBsYyhhLCBiLCBjLCBkLCBlLCBmKSB7CiAgICAgICAgYSA9IGEgfCAwOwogICAgICAgIGIgPSBiIHwgMDsKICAgICAgICBjID0gYyB8IDA7CiAgICAgICAgZCA9IGQgfCAwOwogICAgICAgIGUgPSBlIHwgMDsKICAgICAgICBmID0gZiB8IDA7CiAgICAgICAgTVthICYgM10oYiB8IDAsIGMgfCAwLCBkIHwgMCwgZSB8IDAsIGYgfCAwKTsKICAgIH0KICAgIGZ1bmN0aW9uIG1jKGEsIGIsIGMsIGQsIGUsIGYsIGcpIHsKICAgICAgICBhID0gYSB8IDA7CiAgICAgICAgYiA9IGIgfCAwOwogICAgICAgIGMgPSBjIHwgMDsKICAgICAgICBkID0gZCB8IDA7CiAgICAgICAgZSA9IGUgfCAwOwogICAgICAgIGYgPSBmIHwgMDsKICAgICAgICBnID0gZyB8IDA7CiAgICAgICAgTlthICYgM10oYiB8IDAsIGMgfCAwLCBkIHwgMCwgZSB8IDAsIGYgfCAwLCBnIHwgMCk7CiAgICB9CiAgICBmdW5jdGlvbiBuYyhhLCBiKSB7CiAgICAgICAgYSA9IGEgfCAwOwogICAgICAgIGIgPSBiIHwgMDsKICAgICAgICBwKDApOwogICAgICAgIHJldHVybiAwOwogICAgfQogICAgZnVuY3Rpb24gb2MoYSwgYiwgYykgewogICAgICAgIGEgPSBhIHwgMDsKICAgICAgICBiID0gYiB8IDA7CiAgICAgICAgYyA9IGMgfCAwOwogICAgICAgIHAoMSk7CiAgICAgICAgcmV0dXJuIDA7CiAgICB9CiAgICBmdW5jdGlvbiBwYyhhKSB7CiAgICAgICAgYSA9IGEgfCAwOwogICAgICAgIHAoMik7CiAgICB9CiAgICBmdW5jdGlvbiBxYyhhLCBiLCBjLCBkKSB7CiAgICAgICAgYSA9IGEgfCAwOwogICAgICAgIGIgPSBiIHwgMDsKICAgICAgICBjID0gYyB8IDA7CiAgICAgICAgZCA9IGQgfCAwOwogICAgICAgIHAoMyk7CiAgICB9CiAgICBmdW5jdGlvbiByYyhhLCBiLCBjLCBkLCBlKSB7CiAgICAgICAgYSA9IGEgfCAwOwogICAgICAgIGIgPSBiIHwgMDsKICAgICAgICBjID0gYyB8IDA7CiAgICAgICAgZCA9IGQgfCAwOwogICAgICAgIGUgPSBlIHwgMDsKICAgICAgICBwKDQpOwogICAgfQogICAgZnVuY3Rpb24gc2MoYSwgYiwgYywgZCwgZSwgZikgewogICAgICAgIGEgPSBhIHwgMDsKICAgICAgICBiID0gYiB8IDA7CiAgICAgICAgYyA9IGMgfCAwOwogICAgICAgIGQgPSBkIHwgMDsKICAgICAgICBlID0gZSB8IDA7CiAgICAgICAgZiA9IGYgfCAwOwogICAgICAgIHAoNSk7CiAgICB9CiAgICB2YXIgSSA9IFtuY107CiAgICB2YXIgSiA9IFsKICAgICAgICBvYywKICAgICAgICBRYgogICAgXTsKICAgIHZhciBLID0gWwogICAgICAgIHBjLAogICAgICAgIE1iLAogICAgICAgIE5iLAogICAgICAgIE9iLAogICAgICAgIFBiLAogICAgICAgIFpiLAogICAgICAgIHBjLAogICAgICAgIHBjCiAgICBdOwogICAgdmFyIEwgPSBbCiAgICAgICAgcWMsCiAgICAgICAgVGIsCiAgICAgICAgYWMsCiAgICAgICAgcWMKICAgIF07CiAgICB2YXIgTSA9IFsKICAgICAgICByYywKICAgICAgICBTYiwKICAgICAgICAkYiwKICAgICAgICByYwogICAgXTsKICAgIHZhciBOID0gWwogICAgICAgIHNjLAogICAgICAgIFJiLAogICAgICAgIF9iLAogICAgICAgIHNjCiAgICBdOwogICAgcmV0dXJuIHsKICAgICAgICBfX19jeGFfY2FuX2NhdGNoOiBjYywKICAgICAgICBfX19jeGFfaXNfcG9pbnRlcl90eXBlOiBkYywKICAgICAgICBfX19lbXNjcmlwdGVuX2Vudmlyb25fY29uc3RydWN0b3I6IEhiLAogICAgICAgIF9fZ2V0X2RheWxpZ2h0OiBKYiwKICAgICAgICBfX2dldF9lbnZpcm9uOiBMYiwKICAgICAgICBfX2dldF90aW1lem9uZTogS2IsCiAgICAgICAgX19nZXRfdHpuYW1lOiBJYiwKICAgICAgICBfYmlkaV9nZXRMaW5lOiBZLAogICAgICAgIF9iaWRpX2dldFBhcmFncmFwaEVuZEluZGV4OiBVLAogICAgICAgIF9iaWRpX2dldFZpc3VhbFJ1bjogViwKICAgICAgICBfYmlkaV9wcm9jZXNzVGV4dDogVCwKICAgICAgICBfYmlkaV9zZXRMaW5lOiBXLAogICAgICAgIF9iaWRpX3dyaXRlUmV2ZXJzZTogWCwKICAgICAgICBfZW1zY3JpcHRlbl9yZXBsYWNlX21lbW9yeTogSCwKICAgICAgICBfZnJlZTogQmIsCiAgICAgICAgX21hbGxvYzogQWIsCiAgICAgICAgX21lbWFsaWduOiBGYiwKICAgICAgICBfbWVtY3B5OiBlYywKICAgICAgICBfbWVtc2V0OiBmYywKICAgICAgICBfc2JyazogZ2MsCiAgICAgICAgX3VzaGFwZV9hcmFiaWM6IFMsCiAgICAgICAgZHluQ2FsbF9paWk6IGhjLAogICAgICAgIGR5bkNhbGxfaWlpaTogaWMsCiAgICAgICAgZHluQ2FsbF92aTogamMsCiAgICAgICAgZHluQ2FsbF92aWlpaToga2MsCiAgICAgICAgZHluQ2FsbF92aWlpaWk6IGxjLAogICAgICAgIGR5bkNhbGxfdmlpaWlpaTogbWMsCiAgICAgICAgZXN0YWJsaXNoU3RhY2tTcGFjZTogUiwKICAgICAgICBzdGFja0FsbG9jOiBPLAogICAgICAgIHN0YWNrUmVzdG9yZTogUSwKICAgICAgICBzdGFja1NhdmU6IFAKICAgIH07Cn0oYXNtR2xvYmFsQXJnLCBhc21MaWJyYXJ5QXJnLCBidWZmZXIpOwp2YXIgX19fY3hhX2Nhbl9jYXRjaCA9IE1vZHVsZVsnX19fY3hhX2Nhbl9jYXRjaCddID0gYXNtWydfX19jeGFfY2FuX2NhdGNoJ107CnZhciBfX19jeGFfaXNfcG9pbnRlcl90eXBlID0gTW9kdWxlWydfX19jeGFfaXNfcG9pbnRlcl90eXBlJ10gPSBhc21bJ19fX2N4YV9pc19wb2ludGVyX3R5cGUnXTsKdmFyIF9fX2Vtc2NyaXB0ZW5fZW52aXJvbl9jb25zdHJ1Y3RvciA9IE1vZHVsZVsnX19fZW1zY3JpcHRlbl9lbnZpcm9uX2NvbnN0cnVjdG9yJ10gPSBhc21bJ19fX2Vtc2NyaXB0ZW5fZW52aXJvbl9jb25zdHJ1Y3RvciddOwp2YXIgX19nZXRfZGF5bGlnaHQgPSBNb2R1bGVbJ19fZ2V0X2RheWxpZ2h0J10gPSBhc21bJ19fZ2V0X2RheWxpZ2h0J107CnZhciBfX2dldF9lbnZpcm9uID0gTW9kdWxlWydfX2dldF9lbnZpcm9uJ10gPSBhc21bJ19fZ2V0X2Vudmlyb24nXTsKdmFyIF9fZ2V0X3RpbWV6b25lID0gTW9kdWxlWydfX2dldF90aW1lem9uZSddID0gYXNtWydfX2dldF90aW1lem9uZSddOwp2YXIgX19nZXRfdHpuYW1lID0gTW9kdWxlWydfX2dldF90em5hbWUnXSA9IGFzbVsnX19nZXRfdHpuYW1lJ107CnZhciBfYmlkaV9nZXRMaW5lID0gTW9kdWxlWydfYmlkaV9nZXRMaW5lJ10gPSBhc21bJ19iaWRpX2dldExpbmUnXTsKdmFyIF9iaWRpX2dldFBhcmFncmFwaEVuZEluZGV4ID0gTW9kdWxlWydfYmlkaV9nZXRQYXJhZ3JhcGhFbmRJbmRleCddID0gYXNtWydfYmlkaV9nZXRQYXJhZ3JhcGhFbmRJbmRleCddOwp2YXIgX2JpZGlfZ2V0VmlzdWFsUnVuID0gTW9kdWxlWydfYmlkaV9nZXRWaXN1YWxSdW4nXSA9IGFzbVsnX2JpZGlfZ2V0VmlzdWFsUnVuJ107CnZhciBfYmlkaV9wcm9jZXNzVGV4dCA9IE1vZHVsZVsnX2JpZGlfcHJvY2Vzc1RleHQnXSA9IGFzbVsnX2JpZGlfcHJvY2Vzc1RleHQnXTsKdmFyIF9iaWRpX3NldExpbmUgPSBNb2R1bGVbJ19iaWRpX3NldExpbmUnXSA9IGFzbVsnX2JpZGlfc2V0TGluZSddOwp2YXIgX2JpZGlfd3JpdGVSZXZlcnNlID0gTW9kdWxlWydfYmlkaV93cml0ZVJldmVyc2UnXSA9IGFzbVsnX2JpZGlfd3JpdGVSZXZlcnNlJ107CnZhciBfZW1zY3JpcHRlbl9yZXBsYWNlX21lbW9yeSA9IE1vZHVsZVsnX2Vtc2NyaXB0ZW5fcmVwbGFjZV9tZW1vcnknXSA9IGFzbVsnX2Vtc2NyaXB0ZW5fcmVwbGFjZV9tZW1vcnknXTsKdmFyIF9mcmVlID0gTW9kdWxlWydfZnJlZSddID0gYXNtWydfZnJlZSddOwp2YXIgX21hbGxvYyA9IE1vZHVsZVsnX21hbGxvYyddID0gYXNtWydfbWFsbG9jJ107CnZhciBfbWVtYWxpZ24gPSBNb2R1bGVbJ19tZW1hbGlnbiddID0gYXNtWydfbWVtYWxpZ24nXTsKdmFyIF9tZW1jcHkgPSBNb2R1bGVbJ19tZW1jcHknXSA9IGFzbVsnX21lbWNweSddOwp2YXIgX21lbXNldCA9IE1vZHVsZVsnX21lbXNldCddID0gYXNtWydfbWVtc2V0J107CnZhciBfc2JyayA9IE1vZHVsZVsnX3NicmsnXSA9IGFzbVsnX3NicmsnXTsKdmFyIF91c2hhcGVfYXJhYmljID0gTW9kdWxlWydfdXNoYXBlX2FyYWJpYyddID0gYXNtWydfdXNoYXBlX2FyYWJpYyddOwp2YXIgZXN0YWJsaXNoU3RhY2tTcGFjZSA9IE1vZHVsZVsnZXN0YWJsaXNoU3RhY2tTcGFjZSddID0gYXNtWydlc3RhYmxpc2hTdGFja1NwYWNlJ107CnZhciBzdGFja0FsbG9jID0gTW9kdWxlWydzdGFja0FsbG9jJ10gPSBhc21bJ3N0YWNrQWxsb2MnXTsKdmFyIHN0YWNrUmVzdG9yZSA9IE1vZHVsZVsnc3RhY2tSZXN0b3JlJ10gPSBhc21bJ3N0YWNrUmVzdG9yZSddOwp2YXIgc3RhY2tTYXZlID0gTW9kdWxlWydzdGFja1NhdmUnXSA9IGFzbVsnc3RhY2tTYXZlJ107CnZhciBkeW5DYWxsX2lpaSA9IE1vZHVsZVsnZHluQ2FsbF9paWknXSA9IGFzbVsnZHluQ2FsbF9paWknXTsKdmFyIGR5bkNhbGxfaWlpaSA9IE1vZHVsZVsnZHluQ2FsbF9paWlpJ10gPSBhc21bJ2R5bkNhbGxfaWlpaSddOwp2YXIgZHluQ2FsbF92aSA9IE1vZHVsZVsnZHluQ2FsbF92aSddID0gYXNtWydkeW5DYWxsX3ZpJ107CnZhciBkeW5DYWxsX3ZpaWlpID0gTW9kdWxlWydkeW5DYWxsX3ZpaWlpJ10gPSBhc21bJ2R5bkNhbGxfdmlpaWknXTsKdmFyIGR5bkNhbGxfdmlpaWlpID0gTW9kdWxlWydkeW5DYWxsX3ZpaWlpaSddID0gYXNtWydkeW5DYWxsX3ZpaWlpaSddOwp2YXIgZHluQ2FsbF92aWlpaWlpID0gTW9kdWxlWydkeW5DYWxsX3ZpaWlpaWknXSA9IGFzbVsnZHluQ2FsbF92aWlpaWlpJ107Ck1vZHVsZVsnYXNtJ10gPSBhc207Ck1vZHVsZVsnY2NhbGwnXSA9IGNjYWxsOwpNb2R1bGVbJ1VURjE2VG9TdHJpbmcnXSA9IFVURjE2VG9TdHJpbmc7Ck1vZHVsZVsnc3RyaW5nVG9VVEYxNiddID0gc3RyaW5nVG9VVEYxNjsKaWYgKG1lbW9yeUluaXRpYWxpemVyKSB7CiAgICBpZiAoIWlzRGF0YVVSSShtZW1vcnlJbml0aWFsaXplcikpIHsKICAgICAgICBtZW1vcnlJbml0aWFsaXplciA9IGxvY2F0ZUZpbGUobWVtb3J5SW5pdGlhbGl6ZXIpOwogICAgfQogICAgaWYgKEVOVklST05NRU5UX0lTX05PREUgfHwgRU5WSVJPTk1FTlRfSVNfU0hFTEwpIHsKICAgICAgICB2YXIgZGF0YSA9IE1vZHVsZVsncmVhZEJpbmFyeSddKG1lbW9yeUluaXRpYWxpemVyKTsKICAgICAgICBIRUFQVTguc2V0KGRhdGEsIEdMT0JBTF9CQVNFKTsKICAgIH0gZWxzZSB7CiAgICAgICAgYWRkUnVuRGVwZW5kZW5jeSgnbWVtb3J5IGluaXRpYWxpemVyJyk7CiAgICAgICAgdmFyIGFwcGx5TWVtb3J5SW5pdGlhbGl6ZXIgPSBmdW5jdGlvbiAoZGF0YSkgewogICAgICAgICAgICBpZiAoZGF0YS5ieXRlTGVuZ3RoKQogICAgICAgICAgICAgICAgZGF0YSA9IG5ldyBVaW50OEFycmF5KGRhdGEpOwogICAgICAgICAgICBIRUFQVTguc2V0KGRhdGEsIEdMT0JBTF9CQVNFKTsKICAgICAgICAgICAgaWYgKE1vZHVsZVsnbWVtb3J5SW5pdGlhbGl6ZXJSZXF1ZXN0J10pCiAgICAgICAgICAgICAgICBkZWxldGUgTW9kdWxlWydtZW1vcnlJbml0aWFsaXplclJlcXVlc3QnXS5yZXNwb25zZTsKICAgICAgICAgICAgcmVtb3ZlUnVuRGVwZW5kZW5jeSgnbWVtb3J5IGluaXRpYWxpemVyJyk7CiAgICAgICAgfTsKICAgICAgICB2YXIgZG9Ccm93c2VyTG9hZCA9IGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgTW9kdWxlWydyZWFkQXN5bmMnXShtZW1vcnlJbml0aWFsaXplciwgYXBwbHlNZW1vcnlJbml0aWFsaXplciwgZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgdGhyb3cgJ2NvdWxkIG5vdCBsb2FkIG1lbW9yeSBpbml0aWFsaXplciAnICsgbWVtb3J5SW5pdGlhbGl6ZXI7CiAgICAgICAgICAgIH0pOwogICAgICAgIH07CiAgICAgICAgdmFyIG1lbW9yeUluaXRpYWxpemVyQnl0ZXMgPSB0cnlQYXJzZUFzRGF0YVVSSShtZW1vcnlJbml0aWFsaXplcik7CiAgICAgICAgaWYgKG1lbW9yeUluaXRpYWxpemVyQnl0ZXMpIHsKICAgICAgICAgICAgYXBwbHlNZW1vcnlJbml0aWFsaXplcihtZW1vcnlJbml0aWFsaXplckJ5dGVzLmJ1ZmZlcik7CiAgICAgICAgfSBlbHNlIGlmIChNb2R1bGVbJ21lbW9yeUluaXRpYWxpemVyUmVxdWVzdCddKSB7CiAgICAgICAgICAgIHZhciB1c2VSZXF1ZXN0ID0gZnVuY3Rpb24gKCkgewogICAgICAgICAgICAgICAgdmFyIHJlcXVlc3QgPSBNb2R1bGVbJ21lbW9yeUluaXRpYWxpemVyUmVxdWVzdCddOwogICAgICAgICAgICAgICAgdmFyIHJlc3BvbnNlID0gcmVxdWVzdC5yZXNwb25zZTsKICAgICAgICAgICAgICAgIGlmIChyZXF1ZXN0LnN0YXR1cyAhPT0gMjAwICYmIHJlcXVlc3Quc3RhdHVzICE9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgdmFyIGRhdGEgPSB0cnlQYXJzZUFzRGF0YVVSSShNb2R1bGVbJ21lbW9yeUluaXRpYWxpemVyUmVxdWVzdFVSTCddKTsKICAgICAgICAgICAgICAgICAgICBpZiAoZGF0YSkgewogICAgICAgICAgICAgICAgICAgICAgICByZXNwb25zZSA9IGRhdGEuYnVmZmVyOwogICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUud2FybignYSBwcm9ibGVtIHNlZW1zIHRvIGhhdmUgaGFwcGVuZWQgd2l0aCBNb2R1bGUubWVtb3J5SW5pdGlhbGl6ZXJSZXF1ZXN0LCBzdGF0dXM6ICcgKyByZXF1ZXN0LnN0YXR1cyArICcsIHJldHJ5aW5nICcgKyBtZW1vcnlJbml0aWFsaXplcik7CiAgICAgICAgICAgICAgICAgICAgICAgIGRvQnJvd3NlckxvYWQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGFwcGx5TWVtb3J5SW5pdGlhbGl6ZXIocmVzcG9uc2UpOwogICAgICAgICAgICB9OwogICAgICAgICAgICBpZiAoTW9kdWxlWydtZW1vcnlJbml0aWFsaXplclJlcXVlc3QnXS5yZXNwb25zZSkgewogICAgICAgICAgICAgICAgc2V0VGltZW91dCh1c2VSZXF1ZXN0LCAwKTsKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIE1vZHVsZVsnbWVtb3J5SW5pdGlhbGl6ZXJSZXF1ZXN0J10uYWRkRXZlbnRMaXN0ZW5lcignbG9hZCcsIHVzZVJlcXVlc3QpOwogICAgICAgICAgICB9CiAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgZG9Ccm93c2VyTG9hZCgpOwogICAgICAgIH0KICAgIH0KfQpmdW5jdGlvbiBFeGl0U3RhdHVzKHN0YXR1cykgewogICAgdGhpcy5uYW1lID0gJ0V4aXRTdGF0dXMnOwogICAgdGhpcy5tZXNzYWdlID0gJ1Byb2dyYW0gdGVybWluYXRlZCB3aXRoIGV4aXQoJyArIHN0YXR1cyArICcpJzsKICAgIHRoaXMuc3RhdHVzID0gc3RhdHVzOwp9CkV4aXRTdGF0dXMucHJvdG90eXBlID0gbmV3IEVycm9yKCk7CkV4aXRTdGF0dXMucHJvdG90eXBlLmNvbnN0cnVjdG9yID0gRXhpdFN0YXR1czsKZGVwZW5kZW5jaWVzRnVsZmlsbGVkID0gZnVuY3Rpb24gcnVuQ2FsbGVyKCkgewogICAgaWYgKCFNb2R1bGVbJ2NhbGxlZFJ1biddKQogICAgICAgIHJ1bigpOwogICAgaWYgKCFNb2R1bGVbJ2NhbGxlZFJ1biddKQogICAgICAgIGRlcGVuZGVuY2llc0Z1bGZpbGxlZCA9IHJ1bkNhbGxlcjsKfTsKZnVuY3Rpb24gcnVuKGFyZ3MpIHsKICAgIGFyZ3MgPSBhcmdzIHx8IE1vZHVsZVsnYXJndW1lbnRzJ107CiAgICBpZiAocnVuRGVwZW5kZW5jaWVzID4gMCkgewogICAgICAgIHJldHVybjsKICAgIH0KICAgIHByZVJ1bigpOwogICAgaWYgKHJ1bkRlcGVuZGVuY2llcyA+IDApCiAgICAgICAgcmV0dXJuOwogICAgaWYgKE1vZHVsZVsnY2FsbGVkUnVuJ10pCiAgICAgICAgcmV0dXJuOwogICAgZnVuY3Rpb24gZG9SdW4oKSB7CiAgICAgICAgaWYgKE1vZHVsZVsnY2FsbGVkUnVuJ10pCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICBNb2R1bGVbJ2NhbGxlZFJ1biddID0gdHJ1ZTsKICAgICAgICBpZiAoQUJPUlQpCiAgICAgICAgICAgIHJldHVybjsKICAgICAgICBlbnN1cmVJbml0UnVudGltZSgpOwogICAgICAgIHByZU1haW4oKTsKICAgICAgICBpZiAoTW9kdWxlWydvblJ1bnRpbWVJbml0aWFsaXplZCddKQogICAgICAgICAgICBNb2R1bGVbJ29uUnVudGltZUluaXRpYWxpemVkJ10oKTsKICAgICAgICBwb3N0UnVuKCk7CiAgICB9CiAgICBpZiAoTW9kdWxlWydzZXRTdGF0dXMnXSkgewogICAgICAgIE1vZHVsZVsnc2V0U3RhdHVzJ10oJ1J1bm5pbmcuLi4nKTsKICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uICgpIHsKICAgICAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICAgICBNb2R1bGVbJ3NldFN0YXR1cyddKCcnKTsKICAgICAgICAgICAgfSwgMSk7CiAgICAgICAgICAgIGRvUnVuKCk7CiAgICAgICAgfSwgMSk7CiAgICB9IGVsc2UgewogICAgICAgIGRvUnVuKCk7CiAgICB9Cn0KTW9kdWxlWydydW4nXSA9IHJ1bjsKZnVuY3Rpb24gYWJvcnQod2hhdCkgewogICAgaWYgKE1vZHVsZVsnb25BYm9ydCddKSB7CiAgICAgICAgTW9kdWxlWydvbkFib3J0J10od2hhdCk7CiAgICB9CiAgICBpZiAod2hhdCAhPT0gdW5kZWZpbmVkKSB7CiAgICAgICAgb3V0KHdoYXQpOwogICAgICAgIGVycih3aGF0KTsKICAgICAgICB3aGF0ID0gSlNPTi5zdHJpbmdpZnkod2hhdCk7CiAgICB9IGVsc2UgewogICAgICAgIHdoYXQgPSAnJzsKICAgIH0KICAgIEFCT1JUID0gdHJ1ZTsKICAgIEVYSVRTVEFUVVMgPSAxOwogICAgdGhyb3cgJ2Fib3J0KCcgKyB3aGF0ICsgJykuIEJ1aWxkIHdpdGggLXMgQVNTRVJUSU9OUz0xIGZvciBtb3JlIGluZm8uJzsKfQpNb2R1bGVbJ2Fib3J0J10gPSBhYm9ydDsKaWYgKE1vZHVsZVsncHJlSW5pdCddKSB7CiAgICBpZiAodHlwZW9mIE1vZHVsZVsncHJlSW5pdCddID09ICdmdW5jdGlvbicpCiAgICAgICAgTW9kdWxlWydwcmVJbml0J10gPSBbTW9kdWxlWydwcmVJbml0J11dOwogICAgd2hpbGUgKE1vZHVsZVsncHJlSW5pdCddLmxlbmd0aCA+IDApIHsKICAgICAgICBNb2R1bGVbJ3ByZUluaXQnXS5wb3AoKSgpOwogICAgfQp9Ck1vZHVsZVsnbm9FeGl0UnVudGltZSddID0gdHJ1ZTsKcnVuKCk7Cid1c2Ugc3RyaWN0JzsKCgovKioKICogVGFrZXMgbG9naWNhbCBpbnB1dCBhbmQgcmVwbGFjZXMgQXJhYmljIGNoYXJhY3RlcnMgd2l0aCB0aGUgInByZXNlbnRhdGlvbiBmb3JtIgogKiBvZiB0aGVpciBpbml0aWFsL21lZGlhbC9maW5hbCBmb3JtcywgYmFzZWQgb24gdGhlaXIgb3JkZXIgaW4gdGhlIGlucHV0LgogKgogKiBUaGUgcmVzdWx0cyBhcmUgc3RpbGwgaW4gbG9naWNhbCBvcmRlci4KICoKICogQHBhcmFtIHtzdHJpbmd9IFtpbnB1dF0gSW5wdXQgdGV4dCBpbiBsb2dpY2FsIG9yZGVyCiAqIEByZXR1cm5zIHtzdHJpbmd9IFRyYW5zZm9ybWVkIHRleHQgdXNpbmcgQXJhYmljIHByZXNlbnRhdGlvbiBmb3JtcwogKi8KZnVuY3Rpb24gYXBwbHlBcmFiaWNTaGFwaW5nKGlucHV0KSB7CiAgICBpZiAoIWlucHV0KQogICAgICAgIHsgcmV0dXJuIGlucHV0OyB9CgogICAgdmFyIG5EYXRhQnl0ZXMgPSAoaW5wdXQubGVuZ3RoICsgMSkgKiAyOwogICAgdmFyIHN0cmluZ0lucHV0UHRyID0gTW9kdWxlLl9tYWxsb2MobkRhdGFCeXRlcyk7CiAgICBNb2R1bGUuc3RyaW5nVG9VVEYxNihpbnB1dCwgc3RyaW5nSW5wdXRQdHIsIG5EYXRhQnl0ZXMpOwogICAgdmFyIHJldHVyblN0cmluZ1B0ciA9IE1vZHVsZS5jY2FsbCgndXNoYXBlX2FyYWJpYycsICdudW1iZXInLCBbJ251bWJlcicsICdudW1iZXInXSwgW3N0cmluZ0lucHV0UHRyLCBpbnB1dC5sZW5ndGhdKTsKICAgIE1vZHVsZS5fZnJlZShzdHJpbmdJbnB1dFB0cik7CgogICAgaWYgKHJldHVyblN0cmluZ1B0ciA9PT0gMCkKICAgICAgICB7IHJldHVybiBpbnB1dDsgfQoKICAgIHZhciByZXN1bHQgPSBNb2R1bGUuVVRGMTZUb1N0cmluZyhyZXR1cm5TdHJpbmdQdHIpOwogICAgTW9kdWxlLl9mcmVlKHJldHVyblN0cmluZ1B0cik7CgogICAgcmV0dXJuIHJlc3VsdDsKfQoKZnVuY3Rpb24gbWVyZ2VQYXJhZ3JhcGhMaW5lQnJlYWtQb2ludHMobGluZUJyZWFrUG9pbnRzLCBwYXJhZ3JhcGhDb3VudCkgewogICAgdmFyIG1lcmdlZFBhcmFncmFwaExpbmVCcmVha1BvaW50cyA9IFtdOwoKICAgIGZvciAodmFyIGkgPSAwOyBpIDwgcGFyYWdyYXBoQ291bnQ7IGkrKykgewogICAgICAgIHZhciBwYXJhZ3JhcGhFbmRJbmRleCA9IE1vZHVsZS5jY2FsbCgnYmlkaV9nZXRQYXJhZ3JhcGhFbmRJbmRleCcsICdudW1iZXInLCBbJ251bWJlciddLCBbaV0pOwogICAgICAgIC8vIFRPRE86IEhhbmRsZSBlcnJvcj8KCiAgICAgICAgZm9yICh2YXIgaSQxID0gMCwgbGlzdCA9IGxpbmVCcmVha1BvaW50czsgaSQxIDwgbGlzdC5sZW5ndGg7IGkkMSArPSAxKSB7CiAgICAgICAgICAgIHZhciBsaW5lQnJlYWtQb2ludCA9IGxpc3RbaSQxXTsKCiAgICAgICAgICAgIGlmIChsaW5lQnJlYWtQb2ludCA8IHBhcmFncmFwaEVuZEluZGV4ICYmCiAgICAgICAgICAgICAgICAoIW1lcmdlZFBhcmFncmFwaExpbmVCcmVha1BvaW50c1ttZXJnZWRQYXJhZ3JhcGhMaW5lQnJlYWtQb2ludHMubGVuZ3RoIC0gMV0gfHwgbGluZUJyZWFrUG9pbnQgPiBtZXJnZWRQYXJhZ3JhcGhMaW5lQnJlYWtQb2ludHNbbWVyZ2VkUGFyYWdyYXBoTGluZUJyZWFrUG9pbnRzLmxlbmd0aCAtIDFdKSkKICAgICAgICAgICAgICAgIHsgbWVyZ2VkUGFyYWdyYXBoTGluZUJyZWFrUG9pbnRzLnB1c2gobGluZUJyZWFrUG9pbnQpOyB9CiAgICAgICAgfQogICAgICAgIG1lcmdlZFBhcmFncmFwaExpbmVCcmVha1BvaW50cy5wdXNoKHBhcmFncmFwaEVuZEluZGV4KTsKICAgIH0KCiAgICBmb3IgKHZhciBpJDIgPSAwLCBsaXN0JDEgPSBsaW5lQnJlYWtQb2ludHM7IGkkMiA8IGxpc3QkMS5sZW5ndGg7IGkkMiArPSAxKSB7CiAgICAgICAgdmFyIGxpbmVCcmVha1BvaW50JDEgPSBsaXN0JDFbaSQyXTsKCiAgICAgICAgaWYgKGxpbmVCcmVha1BvaW50JDEgPiBtZXJnZWRQYXJhZ3JhcGhMaW5lQnJlYWtQb2ludHNbbWVyZ2VkUGFyYWdyYXBoTGluZUJyZWFrUG9pbnRzLmxlbmd0aCAtIDFdKQogICAgICAgICAgICB7IG1lcmdlZFBhcmFncmFwaExpbmVCcmVha1BvaW50cy5wdXNoKGxpbmVCcmVha1BvaW50JDEpOyB9CiAgICB9CgogICAgcmV0dXJuIG1lcmdlZFBhcmFncmFwaExpbmVCcmVha1BvaW50czsKfQoKLy8gVGhpcyBmdW5jdGlvbiBpcyBzdGF0ZWZ1bDogaXQgc2V0cyBhIHN0YXRpYyBCaURpIHBhcmFnYXBoIG9iamVjdAovLyBvbiB0aGUgIm5hdGl2ZSIgc2lkZQpmdW5jdGlvbiBzZXRQYXJhZ3JhcGgoaW5wdXQsIHN0cmluZ0lucHV0UHRyLCBuRGF0YUJ5dGVzKSB7CiAgICBpZiAoIWlucHV0KSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CgogICAgTW9kdWxlLnN0cmluZ1RvVVRGMTYoaW5wdXQsIHN0cmluZ0lucHV0UHRyLCBuRGF0YUJ5dGVzKTsKICAgIHZhciBwYXJhZ3JhcGhDb3VudCA9IE1vZHVsZS5jY2FsbCgnYmlkaV9wcm9jZXNzVGV4dCcsICdudW1iZXInLCBbJ251bWJlcicsICdudW1iZXInXSwgW3N0cmluZ0lucHV0UHRyLCBpbnB1dC5sZW5ndGhdKTsKCiAgICBpZiAocGFyYWdyYXBoQ291bnQgPT09IDApIHsKICAgICAgICBNb2R1bGUuX2ZyZWUoc3RyaW5nSW5wdXRQdHIpOwogICAgICAgIHJldHVybiBudWxsOwogICAgfQogICAgcmV0dXJuIHBhcmFncmFwaENvdW50Owp9CgovKioKICogVGFrZXMgaW5wdXQgdGV4dCBpbiBsb2dpY2FsIG9yZGVyIGFuZCBhcHBsaWVzIHRoZSBCaURpIGFsZ29yaXRobSB1c2luZyB0aGUgY2hvc2VuCiAqIGxpbmUgYnJlYWsgcG9pbnQgdG8gZ2VuZXJhdGUgYSBzZXQgb2YgbGluZXMgd2l0aCB0aGUgY2hhcmFjdGVycyByZS1hcnJhbmdlZCBpbnRvCiAqIHZpc3VhbCBvcmRlci4KICoKICogQHBhcmFtIHtzdHJpbmd9IFtpbnB1dF0gSW5wdXQgdGV4dCBpbiBsb2dpY2FsIG9yZGVyCiAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gW2xpbmVCcmVha1BvaW50c10gRWFjaCBsaW5lIGJyZWFrIGlzIGFuIGluZGV4IGludG8gdGhlIGlucHV0IHN0cmluZwogKgogKiBAcmV0dXJucyB7QXJyYXk8c3RyaW5nPn0gT25lIHN0cmluZyBwZXIgbGluZSwgd2l0aCBlYWNoIHN0cmluZyBpbiB2aXN1YWwgb3JkZXIKICovCmZ1bmN0aW9uIHByb2Nlc3NCaWRpcmVjdGlvbmFsVGV4dChpbnB1dCwgbGluZUJyZWFrUG9pbnRzKSB7CiAgICB2YXIgbkRhdGFCeXRlcyA9IChpbnB1dC5sZW5ndGggKyAxKSAqIDI7CiAgICB2YXIgc3RyaW5nSW5wdXRQdHIgPSBNb2R1bGUuX21hbGxvYyhuRGF0YUJ5dGVzKTsKICAgIHZhciBwYXJhZ3JhcGhDb3VudCA9IHNldFBhcmFncmFwaChpbnB1dCwgc3RyaW5nSW5wdXRQdHIsIG5EYXRhQnl0ZXMpOwogICAgaWYgKCFwYXJhZ3JhcGhDb3VudCkgewogICAgICAgIHJldHVybiBbaW5wdXRdOwogICAgfQoKICAgIHZhciBtZXJnZWRQYXJhZ3JhcGhMaW5lQnJlYWtQb2ludHMgPSBtZXJnZVBhcmFncmFwaExpbmVCcmVha1BvaW50cyhsaW5lQnJlYWtQb2ludHMsIHBhcmFncmFwaENvdW50KTsKCiAgICB2YXIgbGluZVN0YXJ0SW5kZXggPSAwOwogICAgdmFyIGxpbmVzID0gW107CgogICAgZm9yICh2YXIgaSA9IDAsIGxpc3QgPSBtZXJnZWRQYXJhZ3JhcGhMaW5lQnJlYWtQb2ludHM7IGkgPCBsaXN0Lmxlbmd0aDsgaSArPSAxKSB7CiAgICAgICAgdmFyIGxpbmVCcmVha1BvaW50ID0gbGlzdFtpXTsKCiAgICAgICAgdmFyIHJldHVyblN0cmluZ1B0ciA9IE1vZHVsZS5jY2FsbCgnYmlkaV9nZXRMaW5lJywgJ251bWJlcicsIFsnbnVtYmVyJywgJ251bWJlciddLCBbbGluZVN0YXJ0SW5kZXgsIGxpbmVCcmVha1BvaW50XSk7CgogICAgICAgIGlmIChyZXR1cm5TdHJpbmdQdHIgPT09IDApIHsKICAgICAgICAgICAgTW9kdWxlLl9mcmVlKHN0cmluZ0lucHV0UHRyKTsKICAgICAgICAgICAgcmV0dXJuIFtdOyAvLyBUT0RPOiB0aHJvdyBleGNlcHRpb24/CiAgICAgICAgfQoKICAgICAgICBsaW5lcy5wdXNoKE1vZHVsZS5VVEYxNlRvU3RyaW5nKHJldHVyblN0cmluZ1B0cikpOwogICAgICAgIE1vZHVsZS5fZnJlZShyZXR1cm5TdHJpbmdQdHIpOwoKICAgICAgICBsaW5lU3RhcnRJbmRleCA9IGxpbmVCcmVha1BvaW50OwogICAgfQoKICAgIE1vZHVsZS5fZnJlZShzdHJpbmdJbnB1dFB0cik7IC8vIElucHV0IHN0cmluZyBtdXN0IGxpdmUgdW50aWwgZ2V0TGluZSBjYWxscyBhcmUgZmluaXNoZWQKCiAgICByZXR1cm4gbGluZXM7Cn0KCmZ1bmN0aW9uIGNyZWF0ZUludDMyUHRyKCkgewogICAgcmV0dXJuIE1vZHVsZS5fbWFsbG9jKDQpOwp9CgpmdW5jdGlvbiBjb25zdW1lSW50MzJQdHIocHRyKSB7CiAgICB2YXIgaGVhcFZpZXcgPSBuZXcgSW50MzJBcnJheShNb2R1bGUuSEVBUFU4LmJ1ZmZlciwgcHRyLCAxKTsKICAgIHZhciByZXN1bHQgPSBoZWFwVmlld1swXTsKICAgIE1vZHVsZS5fZnJlZShwdHIpOwogICAgcmV0dXJuIHJlc3VsdDsKfQoKZnVuY3Rpb24gd3JpdGVSZXZlcnNlKHN0cmluZ0lucHV0UHRyLCBsb2dpY2FsU3RhcnQsIGxvZ2ljYWxFbmQpIHsKICAgIHZhciByZXR1cm5TdHJpbmdQdHIgPSBNb2R1bGUuY2NhbGwoJ2JpZGlfd3JpdGVSZXZlcnNlJywgJ251bWJlcicsIFsnbnVtYmVyJywgJ251bWJlcicsICdudW1iZXInXSwgW3N0cmluZ0lucHV0UHRyLCBsb2dpY2FsU3RhcnQsIGxvZ2ljYWxFbmQgLSBsb2dpY2FsU3RhcnRdKTsKCiAgICBpZiAocmV0dXJuU3RyaW5nUHRyID09PSAwKSB7CiAgICAgICAgcmV0dXJuIG51bGw7CiAgICB9CiAgICB2YXIgcmV2ZXJzZWQgPSBNb2R1bGUuVVRGMTZUb1N0cmluZyhyZXR1cm5TdHJpbmdQdHIpOwogICAgTW9kdWxlLl9mcmVlKHJldHVyblN0cmluZ1B0cik7CiAgICByZXR1cm4gcmV2ZXJzZWQ7Cn0KCi8qKgogKiBUYWtlcyBpbnB1dCB0ZXh0IGluIGxvZ2ljYWwgb3JkZXIgYW5kIGFwcGxpZXMgdGhlIEJpRGkgYWxnb3JpdGhtIHVzaW5nIHRoZSBjaG9zZW4KICogbGluZSBicmVhayBwb2ludCB0byBnZW5lcmF0ZSBhIHNldCBvZiBsaW5lcyB3aXRoIHRoZSBjaGFyYWN0ZXJzIHJlLWFycmFuZ2VkIGludG8KICogdmlzdWFsIG9yZGVyLgogKgogKiBBbHNvIHRha2VzIGFuIGFycmF5IG9mICJzdHlsZSBpbmRpY2VzIiB0aGF0IHNwZWNpZnkgZGlmZmVyZW50IHN0eWxpbmcgb24gdGhlIGlucHV0CiAqIGNoYXJhY3RlcnMgKHRoZSBzdHlsZXMgYXJlIHJlcHJlc2VudGVkIGFzIGludGVnZXJzIGhlcmUsIHRoZSBjYWxsZXIgaXMgcmVzcG9uc2libGUKICogZm9yIHRoZSBhY3R1YWwgaW1wbGVtZW50YXRpb24gb2Ygc3R5bGluZykuIEJpRGkgY2FuIGJvdGggcmVvcmRlciBhbmQgYWRkL3JlbW92ZQogKiBjaGFyYWN0ZXJzIGZyb20gdGhlIGlucHV0IHN0cmluZywgYnV0IHRoaXMgZnVuY3Rpb24gY29waWVzIHN0eWxlIGluZm9ybWF0aW9uIGZyb20KICogdGhlICJzb3VyY2UiIGxvZ2ljYWwgY2hhcmFjdGVycyB0byB0aGVpciBjb3JyZXNwb25kaW5nIHZpc3VhbCBjaGFyYWN0ZXJzIGluIHRoZSBvdXRwdXQuCiAqCiAqIEBwYXJhbSB7c3RyaW5nfSBbaW5wdXRdIElucHV0IHRleHQgaW4gbG9naWNhbCBvcmRlcgogKiBAcGFyYW0ge0FycmF5PG51bWJlcj59IFtzdHlsZUluZGljZXNdIFNhbWUgbGVuZ3RoIGFzIGlucHV0IHRleHQsIGVhY2ggZW50cnkgcmVwcmVzZW50cyB0aGUgc3R5bGUKICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgY29ycmVzcG9uZGluZyBpbnB1dCBjaGFyYWN0ZXIuCiAqIEBwYXJhbSB7QXJyYXk8bnVtYmVyPn0gW2xpbmVCcmVha1BvaW50c10gRWFjaCBsaW5lIGJyZWFrIGlzIGFuIGluZGV4IGludG8gdGhlIGlucHV0IHN0cmluZwogKiBAcmV0dXJucyB7QXJyYXk8W3N0cmluZyxBcnJheTxudW1iZXI+Pl19IE9uZSBzdHJpbmcgcGVyIGxpbmUsIHdpdGggZWFjaCBzdHJpbmcgaW4gdmlzdWFsIG9yZGVyLgogKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFYWNoIHN0cmluZyBoYXMgYSBtYXRjaGluZyBhcnJheSBvZiBzdHlsZSBpbmRpY2VzIGluIHRoZSBzYW1lIG9yZGVyLgogKi8KZnVuY3Rpb24gcHJvY2Vzc1N0eWxlZEJpZGlyZWN0aW9uYWxUZXh0KHRleHQsIHN0eWxlSW5kaWNlcywgbGluZUJyZWFrUG9pbnRzKSB7CiAgICB2YXIgbkRhdGFCeXRlcyA9ICh0ZXh0Lmxlbmd0aCArIDEpICogMjsKICAgIHZhciBzdHJpbmdJbnB1dFB0ciA9IE1vZHVsZS5fbWFsbG9jKG5EYXRhQnl0ZXMpOwogICAgdmFyIHBhcmFncmFwaENvdW50ID0gc2V0UGFyYWdyYXBoKHRleHQsIHN0cmluZ0lucHV0UHRyLCBuRGF0YUJ5dGVzKTsKICAgIGlmICghcGFyYWdyYXBoQ291bnQpIHsKICAgICAgICByZXR1cm4gW3t0ZXh0OiB0ZXh0LCBzdHlsZUluZGljZXM6IHN0eWxlSW5kaWNlc31dOwogICAgfQoKICAgIHZhciBtZXJnZWRQYXJhZ3JhcGhMaW5lQnJlYWtQb2ludHMgPSBtZXJnZVBhcmFncmFwaExpbmVCcmVha1BvaW50cyhsaW5lQnJlYWtQb2ludHMsIHBhcmFncmFwaENvdW50KTsKCiAgICB2YXIgbGluZVN0YXJ0SW5kZXggPSAwOwogICAgdmFyIGxpbmVzID0gW107CgogICAgZm9yICh2YXIgaSQxID0gMCwgbGlzdCA9IG1lcmdlZFBhcmFncmFwaExpbmVCcmVha1BvaW50czsgaSQxIDwgbGlzdC5sZW5ndGg7IGkkMSArPSAxKSB7CiAgICAgICAgdmFyIGxpbmVCcmVha1BvaW50ID0gbGlzdFtpJDFdOwoKICAgICAgICB2YXIgbGluZVRleHQgPSAiIjsKICAgICAgICB2YXIgbGluZVN0eWxlSW5kaWNlcyA9IFtdOwogICAgICAgIHZhciBydW5Db3VudCA9IE1vZHVsZS5jY2FsbCgnYmlkaV9zZXRMaW5lJywgJ251bWJlcicsIFsnbnVtYmVyJywgJ251bWJlciddLCBbbGluZVN0YXJ0SW5kZXgsIGxpbmVCcmVha1BvaW50XSk7CgogICAgICAgIGlmICghcnVuQ291bnQpIHsKICAgICAgICAgICAgTW9kdWxlLl9mcmVlKHN0cmluZ0lucHV0UHRyKTsKICAgICAgICAgICAgcmV0dXJuIFtdOyAvLyBUT0RPOiB0aHJvdyBleGNlcHRpb24/CiAgICAgICAgfQoKICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJ1bkNvdW50OyBpKyspIHsKICAgICAgICAgICAgdmFyIGxvZ2ljYWxTdGFydFB0ciA9IGNyZWF0ZUludDMyUHRyKCk7CiAgICAgICAgICAgIHZhciBsb2dpY2FsTGVuZ3RoUHRyID0gY3JlYXRlSW50MzJQdHIoKTsKICAgICAgICAgICAgdmFyIGlzUmV2ZXJzZWQgPSBNb2R1bGUuY2NhbGwoJ2JpZGlfZ2V0VmlzdWFsUnVuJywgJ251bWJlcicsIFsnbnVtYmVyJywgJ251bWJlcicsICdudW1iZXInXSwgW2ksIGxvZ2ljYWxTdGFydFB0ciwgbG9naWNhbExlbmd0aFB0cl0pOwoKICAgICAgICAgICAgdmFyIGxvZ2ljYWxTdGFydCA9IGxpbmVTdGFydEluZGV4ICsgY29uc3VtZUludDMyUHRyKGxvZ2ljYWxTdGFydFB0cik7CiAgICAgICAgICAgIHZhciBsb2dpY2FsTGVuZ3RoID0gY29uc3VtZUludDMyUHRyKGxvZ2ljYWxMZW5ndGhQdHIpOwogICAgICAgICAgICB2YXIgbG9naWNhbEVuZCA9IGxvZ2ljYWxTdGFydCArIGxvZ2ljYWxMZW5ndGg7CiAgICAgICAgICAgIGlmIChpc1JldmVyc2VkKSB7CiAgICAgICAgICAgICAgICAvLyBXaXRoaW4gdGhpcyByZXZlcnNlZCBzZWN0aW9uLCBpdGVyYXRlIGxvZ2ljYWxseSBiYWNrd2FyZHMKICAgICAgICAgICAgICAgIC8vIEVhY2ggdGltZSB3ZSBzZWUgYSBjaGFuZ2UgaW4gc3R5bGUsIHJlbmRlciBhIHJldmVyc2VkIGNodW5rCiAgICAgICAgICAgICAgICAvLyBvZiBldmVyeXRoaW5nIHNpbmNlIHRoZSBsYXN0IGNoYW5nZQogICAgICAgICAgICAgICAgdmFyIHN0eWxlUnVuU3RhcnQgPSBsb2dpY2FsRW5kOwogICAgICAgICAgICAgICAgdmFyIGN1cnJlbnRTdHlsZUluZGV4ID0gc3R5bGVJbmRpY2VzW3N0eWxlUnVuU3RhcnQgLSAxXTsKICAgICAgICAgICAgICAgIGZvciAodmFyIGogPSBsb2dpY2FsRW5kIC0gMTsgaiA+PSBsb2dpY2FsU3RhcnQ7IGotLSkgewogICAgICAgICAgICAgICAgICAgIGlmIChjdXJyZW50U3R5bGVJbmRleCAhPT0gc3R5bGVJbmRpY2VzW2pdIHx8IGogPT09IGxvZ2ljYWxTdGFydCkgewogICAgICAgICAgICAgICAgICAgICAgICB2YXIgc3R5bGVSdW5FbmQgPSBqID09PSBsb2dpY2FsU3RhcnQgPyBqIDogaiArIDE7CiAgICAgICAgICAgICAgICAgICAgICAgIHZhciByZXZlcnNlZCA9IHdyaXRlUmV2ZXJzZShzdHJpbmdJbnB1dFB0ciwgc3R5bGVSdW5FbmQsIHN0eWxlUnVuU3RhcnQpOwogICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXJldmVyc2VkKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNb2R1bGUuX2ZyZWUoc3RyaW5nSW5wdXRQdHIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFtdOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVUZXh0ICs9IHJldmVyc2VkOwogICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHZhciBrID0gMDsgayA8IHJldmVyc2VkLmxlbmd0aDsgaysrKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lU3R5bGVJbmRpY2VzLnB1c2goY3VycmVudFN0eWxlSW5kZXgpOwogICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRTdHlsZUluZGV4ID0gc3R5bGVJbmRpY2VzW2pdOwogICAgICAgICAgICAgICAgICAgICAgICBzdHlsZVJ1blN0YXJ0ID0gc3R5bGVSdW5FbmQ7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQoKICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgIGxpbmVUZXh0ICs9IHRleHQuc3Vic3RyaW5nKGxvZ2ljYWxTdGFydCwgbG9naWNhbEVuZCk7CiAgICAgICAgICAgICAgICBsaW5lU3R5bGVJbmRpY2VzID0gbGluZVN0eWxlSW5kaWNlcy5jb25jYXQoc3R5bGVJbmRpY2VzLnNsaWNlKGxvZ2ljYWxTdGFydCwgbG9naWNhbEVuZCkpOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBsaW5lcy5wdXNoKFtsaW5lVGV4dCwgbGluZVN0eWxlSW5kaWNlc10pOwogICAgICAgIGxpbmVTdGFydEluZGV4ID0gbGluZUJyZWFrUG9pbnQ7CiAgICB9CgogICAgTW9kdWxlLl9mcmVlKHN0cmluZ0lucHV0UHRyKTsgLy8gSW5wdXQgc3RyaW5nIG11c3QgbGl2ZSB1bnRpbCBnZXRMaW5lIGNhbGxzIGFyZSBmaW5pc2hlZAoKICAgIHJldHVybiBsaW5lczsKfQoKc2VsZi5yZWdpc3RlclJUTFRleHRQbHVnaW4oeydhcHBseUFyYWJpY1NoYXBpbmcnOiBhcHBseUFyYWJpY1NoYXBpbmcsICdwcm9jZXNzQmlkaXJlY3Rpb25hbFRleHQnOiBwcm9jZXNzQmlkaXJlY3Rpb25hbFRleHQsICdwcm9jZXNzU3R5bGVkQmlkaXJlY3Rpb25hbFRleHQnOiBwcm9jZXNzU3R5bGVkQmlkaXJlY3Rpb25hbFRleHR9KTsKCn0pOwp9KSgpOwo=", R = (I, {
|
|
6
6
|
source: g,
|
|
7
7
|
promoteId: F,
|