From 7ecc92fb5e71703525eef9dd7a607af7fef9ba2d Mon Sep 17 00:00:00 2001 From: "TENCENT\\ivinwu" Date: Fri, 21 Dec 2018 20:37:41 +0800 Subject: [PATCH] some bugfix --- build/api/init.d.ts | 2 +- build/util/url.d.ts | 5 ++ build/weRequest.js | 89 ++++++++++++++++++++++++++--------- build/weRequest.min.js | 4 +- package.json | 4 +- src/api/init.ts | 4 +- src/module/requestHandler.ts | 29 +++++------- src/module/responseHandler.ts | 4 +- src/util/url.ts | 28 +++++++++++ 9 files changed, 119 insertions(+), 50 deletions(-) create mode 100644 build/util/url.d.ts create mode 100644 src/util/url.ts diff --git a/build/api/init.d.ts b/build/api/init.d.ts index 942014a..d48889a 100644 --- a/build/api/init.d.ts +++ b/build/api/init.d.ts @@ -1,7 +1,7 @@ /// export interface IInitOption { codeToSession: ICodeToSessionOptions; - sessionName?: string; + sessionName: string; urlPerfix?: string | (() => string); doNotCheckSession?: boolean; reLoginLimit?: number; diff --git a/build/util/url.d.ts b/build/util/url.d.ts new file mode 100644 index 0000000..58ba871 --- /dev/null +++ b/build/util/url.d.ts @@ -0,0 +1,5 @@ +declare function setParams(url: string, params: object): string; +declare const _default: { + setParams: typeof setParams; +}; +export default _default; diff --git a/build/weRequest.js b/build/weRequest.js index 2e20259..799dd6c 100644 --- a/build/weRequest.js +++ b/build/weRequest.js @@ -1,5 +1,5 @@ /*! - * weRequest 1.0.9 + * weRequest 1.2.0 * https://github.com/IvinWu/weRequest */ module.exports = @@ -176,7 +176,7 @@ exports.default = (function (params) { } } }); -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvaW5pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUEsMENBQTJDO0FBQzNDLDBDQUFvQztBQXFFcEMsbUJBQWUsVUFBQyxNQUFtQjtJQUMvQixJQUFNLE1BQU0sZ0JBQW9CLE1BQU0sRUFBSyxnQkFBYSxDQUFDLENBQUE7SUFFekQsSUFBSSxNQUFNLENBQUMsV0FBVyxFQUFFO1FBQ3BCLElBQUk7WUFDQSxnQkFBTSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxXQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDakU7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNSLE9BQU8sQ0FBQyxLQUFLLENBQUMsOENBQThDLENBQUMsQ0FBQTtTQUNoRTtLQUNKO0lBRUQsSUFBSSxNQUFNLENBQUMsZ0JBQWdCLEVBQUU7UUFDekIsSUFBSTtZQUNBLGdCQUFNLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLElBQUksUUFBUSxDQUFDO1NBQ2pGO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDUixPQUFPLENBQUMsS0FBSyxDQUFDLG9EQUFvRCxDQUFDLENBQUE7U0FDdEU7S0FDSjtBQUNMLENBQUMsRUFBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkZWZhdWx0Q29uZmlnIGZyb20gJy4uL3N0b3JlL2NvbmZpZydcclxuaW1wb3J0IHN0YXR1cyBmcm9tICcuLi9zdG9yZS9zdGF0dXMnXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElJbml0T3B0aW9uIHtcclxuICAgIC8qIOeUqGNvZGXmjaLlj5ZzZXNzaW9u55qEQ0dJ6YWN572uICovXHJcbiAgICBjb2RlVG9TZXNzaW9uOiBJQ29kZVRvU2Vzc2lvbk9wdGlvbnM7XHJcbiAgICAvKiDlgqjlrZjlnKhsb2NhbFN0b3JhZ2XnmoRzZXNzaW9u5ZCN56ew77yM5LiUQ0dJ6K+35rGC55qEZGF0YeS4reS8muiHquWKqOW4puS4iuS7peatpOS4uuWQjeensOeahHNlc3Npb27lgLzvvJvlj6/kuI3phY3nva7vvIzpu5jorqTkuLpzZXNzaW9uICovXHJcbiAgICBzZXNzaW9uTmFtZT86IHN0cmluZztcclxuICAgIC8qIOivt+axglVSTOeahOWbuuWumuWJjee8gO+8jOWmguaenOmFjee9ruS6hu+8jOWQjue7reivt+axgueahFVSTOmDveS8muiHquWKqOWKoOS4iui/meS4quWJjee8gO+8jOWmguaenOaYr+WHveaVsO+8jOWImeS4uuWHveaVsOeahOi/lOWbnuWAvCAqL1xyXG4gICAgdXJsUGVyZml4Pzogc3RyaW5nIHwgKCgpID0+IHN0cmluZyk7XHJcbiAgICAvKiDmmK/lkKbpnIDopoHosIPnlKhjaGVja1Nlc3Npb27vvIzpqozor4HlsI/nqIvluo/nmoTnmbvlvZXmgIHov4fmnJ/vvJvoi6XkuJrliqHkuI3pnIDopoHkvb/nlKjliLBzZXNzaW9uX2tlee+8jOWImeWPr+mFjee9ruS4unRydWUgKi9cclxuICAgIGRvTm90Q2hlY2tTZXNzaW9uPzogYm9vbGVhbjtcclxuICAgIC8qIOeZu+W9lemHjeivleasoeaVsO+8jOW9k+i/nue7reivt+axgueZu+W9leaOpeWPo+i/lOWbnuWksei0peasoeaVsOi2hei/h+i/meS4quasoeaVsO+8jOWwhuS4jeWGjemHjeivleeZu+W9lSAqL1xyXG4gICAgcmVMb2dpbkxpbWl0PzogbnVtYmVyO1xyXG4gICAgLyog5b2T5Ye6546w5o6l5Y+j6YC76L6R6ZSZ6K+v5pe277yM5Lya5omn6KGM57uf5LiA55qE5Zue6LCD5Ye95pWw77yM6L+Z6YeM5Y+v5Lul5YGa57uf5LiA55qE6ZSZ6K+v5LiK5oql562J5aSE55CGICovXHJcbiAgICBlcnJvckNhbGxiYWNrPzogbnVsbCB8IEZ1bmN0aW9uO1xyXG4gICAgLyog5o6l5Y+j6L+U5Zue5oiQ5Yqf5LmL5ZCO77yM5Lya5omn6KGM57uf5LiA55qE5Zue6LCD5Ye95pWw77yM6L+Z6YeM5Y+v5Lul5YGa57uf5LiA55qE6ICX5pe25LiK5oql562J5aSE55CGICovXHJcbiAgICByZXBvcnRDR0k/OiBib29sZWFuIHwgKChcclxuICAgICAgLyog6LCD55So55qE5o6l5Y+j5ZCN5a2X77yM5Y+v5ZyocmVxdWVzdOaOpeWPo+eahHJlcG9ydOWtl+autemFjee9riAqL1xyXG4gICAgICBuYW1lOiBzdHJpbmcsXHJcbiAgICAgIC8qIOWPkei1t+ivt+axguaXtueahOaXtumXtOaIsyAqL1xyXG4gICAgICBzdGFydFRpbWU6IG51bWJlcixcclxuICAgICAgLyog6K+35rGC6L+U5Zue5pe255qE5pe26Ze05oizICovXHJcbiAgICAgIGVuZFRpbWU6IG51bWJlcixcclxuICAgICAgLyog6K+35rGC5pa55rOV77yM5Y+v55So5LqO5LiK5oqlICovXHJcbiAgICAgIHJlcXVlc3Q/OiAoKSA9PiB2b2lkXHJcbiAgICApID0+IHZvaWQpO1xyXG4gICAgLyogXHTlj6/kuLrmjqXlj6Pmj5Dkvpttb2Nr5pWw5o2uICovXHJcbiAgICBtb2NrSnNvbj86IFRPRE87XHJcbiAgICAvKiog5omA5pyJ6K+35rGC6YO95Lya6Ieq5Yqo5bim5LiK6L+Z6YeM55qE5Y+C5pWwICovXHJcbiAgICBnbG9iYWxEYXRhPzogYm9vbGVhbiB8IG9iamVjdCB8IEZ1bmN0aW9uO1xyXG4gICAgLyoqIHNlc3Npb27lnKjmnKzlnLDnvJPlrZjnmoRrZXkgKi9cclxuICAgIHNlc3Npb25FeHBpcmVLZXk6IHN0cmluZztcclxuICAgIC8qIOinpuWPkemHjeaWsOeZu+W9leeahOadoeS7tu+8m+WPguaVsOS4ukNHSei/lOWbnueahOaVsOaNru+8jOi/lOWbnumcgOimgemHjeaWsOeZu+W9leeahOadoeS7tiAqL1xyXG4gICAgbG9naW5UcmlnZ2VyPzogKHJlczogc3RyaW5nIHwgSUFueU9iamVjdCB8IEFycmF5QnVmZmVyKSA9PiBib29sZWFuO1xyXG4gICAgLyog6Kem5Y+R6K+35rGC5oiQ5Yqf55qE5p2h5Lu277yb5Y+C5pWw5Li6Q0dJ6L+U5Zue55qE5pWw5o2u77yM6L+U5Zue5o6l5Y+j6YC76L6R5oiQ5Yqf55qE5p2h5Lu2ICovXHJcbiAgICBzdWNjZXNzVHJpZ2dlcj86IChyZXM6IHN0cmluZyB8IElBbnlPYmplY3QgfCBBcnJheUJ1ZmZlcikgPT4gYm9vbGVhbjtcclxuICAgIC8qIOaIkOWKn+S5i+WQjui/lOWbnuaVsOaNru+8m+WPguaVsOS4ukNHSei/lOWbnueahOaVsOaNru+8jOi/lOWbnumAu+i+kemcgOimgeS9v+eUqOeahOaVsOaNriAqL1xyXG4gICAgc3VjY2Vzc0RhdGE/OiAocmVzOiBzdHJpbmcgfCBJQW55T2JqZWN0IHwgQXJyYXlCdWZmZXIpID0+IGJvb2xlYW47XHJcbiAgICAvKiBcdOaOpeWPo+mAu+i+keWksei0peaXtu+8jOmUmeivr+W8ueeql+eahOagh+mimCAqL1xyXG4gICAgZXJyb3JUaXRsZT86IHN0cmluZyB8ICgocmVzOiBzdHJpbmcgfCBJQW55T2JqZWN0IHwgQXJyYXlCdWZmZXIpID0+IHN0cmluZyk7XHJcbiAgICAvKiDmjqXlj6PpgLvovpHlpLHotKXml7bvvIzplJnor6/lvLnnqpfnmoTlhoXlrrkgKi9cclxuICAgIGVycm9yQ29udGVudD86IHN0cmluZyB8ICgocmVzOiBzdHJpbmcgfCBJQW55T2JqZWN0IHwgQXJyYXlCdWZmZXIpID0+IHN0cmluZyk7XHJcbiAgfVxyXG5cclxuICBleHBvcnQgaW50ZXJmYWNlIElDb2RlVG9TZXNzaW9uT3B0aW9uc3tcclxuICAgIC8qIENHSeeahHVybCAqL1xyXG4gICAgdXJsPzogc3RyaW5nO1xyXG4gICAgLyog6LCD55So6K+lQ0dJ55qE5pa55rOVICovXHJcbiAgICBtZXRob2Q/OiAnT1BUSU9OUydcclxuICAgIHwgJ0dFVCdcclxuICAgIHwgJ0hFQUQnXHJcbiAgICB8ICdQT1NUJ1xyXG4gICAgfCAnUFVUJ1xyXG4gICAgfCAnREVMRVRFJ1xyXG4gICAgfCAnVFJBQ0UnXHJcbiAgICB8ICdDT05ORUNUJyB8ICdzdHJpbmcnLFxyXG4gICAgLyogQ0dJ5Lit5Lyg5Y+C5pe277yM5a2Y5pS+Y29kZeeahOWQjeensCAqL1xyXG4gICAgY29kZU5hbWU/OiBzdHJpbmc7XHJcbiAgICAvKiDnmbvlvZXmjqXlj6PpnIDopoHnmoTlhbbku5blj4LmlbAgKi9cclxuICAgIGRhdGE/OiBzdHJpbmcgfCBJQW55T2JqZWN0IHwgQXJyYXlCdWZmZXI7XHJcbiAgICAvKiDmjqXlj6Pov5Tlm57miJDlip/nmoTlh73mlbDvvJvpnIDopoHov5Tlm55zZXNzaW9u55qE5YC8ICovXHJcbiAgICBzdWNjZXNzPzogRnVuY3Rpb247XHJcbiAgICAvKiBjb2Rl5o2i5Y+Wc2Vzc2lvbueahOaOpeWPo+mAu+i+keWHuumUmeaXtu+8jOaJp+ihjOeahOWHveaVsO+8jOiLpemFjee9ruS6huatpOWHveaVsO+8jOWImeS4jeWGjem7mOiupOW8ueeql+aKpemUmSAqL1xyXG4gICAgZmFpbD86IEZ1bmN0aW9uO1xyXG4gICAgLyogY29kZVRvU2Vzc2lvbueahOS4iuaKpeWtl+auteWQjSAqL1xyXG4gICAgcmVwb3J0Pzogc3RyaW5nO1xyXG4gIH1cclxuICBcclxuXHJcbmV4cG9ydCBkZWZhdWx0IChwYXJhbXM6IElJbml0T3B0aW9uKSA9PiB7XHJcbiAgICBjb25zdCBjb25maWc6IElJbml0T3B0aW9uID0gey4uLnBhcmFtcywgLi4uZGVmYXVsdENvbmZpZ31cclxuICAgIC8vIOWmguaenOmFjee9ruabtOaUueS6hnNlc3Npb27nmoTlrZjlgqjlkI3lrZfvvIzliJnph43mlrDojrflj5bkuIDmrKFzZXNzaW9uXHJcbiAgICBpZiAocGFyYW1zLnNlc3Npb25OYW1lKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgc3RhdHVzLnNlc3Npb24gPSB3eC5nZXRTdG9yYWdlU3luYyhjb25maWcuc2Vzc2lvbk5hbWUhKSB8fCAnJztcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ3d4LmdldFN0b3JhZ2VTeW5jOmZhaWwsIGNhbiBub3QgZ2V0IHNlc3Npb24uJylcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyDlpoLmnpzphY3nva7mm7TmlLnkuoZzZXNzaW9u6L+H5pyf5pe26Ze055qE5a2Y5YKo5ZCN5a2X77yM5YiZ6YeN5paw6I635Y+W5LiA5qyhc2Vzc2lvbueahOi/h+acn+aXtumXtFxyXG4gICAgaWYgKHBhcmFtcy5zZXNzaW9uRXhwaXJlS2V5KSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgc3RhdHVzLnNlc3Npb25FeHBpcmUgPSB3eC5nZXRTdG9yYWdlU3luYyhjb25maWcuc2Vzc2lvbkV4cGlyZUtleSkgfHwgSW5maW5pdHk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCd3eC5nZXRTdG9yYWdlU3luYzpmYWlsLCBjYW4gbm90IGdldCBzZXNzaW9uRXhwaXJlLicpXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ== +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5pdC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvaW5pdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7O0FBQUEsMENBQTJDO0FBQzNDLDBDQUFvQztBQXFFcEMsbUJBQWUsVUFBQyxNQUFtQjtJQUMvQixJQUFNLE1BQU0sZ0JBQW9CLE1BQU0sRUFBSyxnQkFBYSxDQUFDLENBQUE7SUFFekQsSUFBSSxNQUFNLENBQUMsV0FBVyxFQUFFO1FBQ3BCLElBQUk7WUFDQSxnQkFBTSxDQUFDLE9BQU8sR0FBRyxFQUFFLENBQUMsY0FBYyxDQUFDLE1BQU0sQ0FBQyxXQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDakU7UUFBQyxPQUFPLENBQUMsRUFBRTtZQUNSLE9BQU8sQ0FBQyxLQUFLLENBQUMsOENBQThDLENBQUMsQ0FBQTtTQUNoRTtLQUNKO0lBRUQsSUFBSSxNQUFNLENBQUMsZ0JBQWdCLEVBQUU7UUFDekIsSUFBSTtZQUNBLGdCQUFNLENBQUMsYUFBYSxHQUFHLEVBQUUsQ0FBQyxjQUFjLENBQUMsTUFBTSxDQUFDLGdCQUFnQixDQUFDLElBQUksUUFBUSxDQUFDO1NBQ2pGO1FBQUMsT0FBTyxDQUFDLEVBQUU7WUFDUixPQUFPLENBQUMsS0FBSyxDQUFDLG9EQUFvRCxDQUFDLENBQUE7U0FDdEU7S0FDSjtBQUNMLENBQUMsRUFBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBkZWZhdWx0Q29uZmlnIGZyb20gJy4uL3N0b3JlL2NvbmZpZydcclxuaW1wb3J0IHN0YXR1cyBmcm9tICcuLi9zdG9yZS9zdGF0dXMnXHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElJbml0T3B0aW9uIHtcclxuICAgIC8qIOeUqGNvZGXmjaLlj5ZzZXNzaW9u55qEQ0dJ6YWN572uICovXHJcbiAgICBjb2RlVG9TZXNzaW9uOiBJQ29kZVRvU2Vzc2lvbk9wdGlvbnM7XHJcbiAgICAvKiDlgqjlrZjlnKhsb2NhbFN0b3JhZ2XnmoRzZXNzaW9u5ZCN56ew77yM5LiUQ0dJ6K+35rGC55qEZGF0YeS4reS8muiHquWKqOW4puS4iuS7peatpOS4uuWQjeensOeahHNlc3Npb27lgLzvvJvlj6/kuI3phY3nva7vvIzpu5jorqTkuLpzZXNzaW9uICovXHJcbiAgICBzZXNzaW9uTmFtZTogc3RyaW5nO1xyXG4gICAgLyog6K+35rGCVVJM55qE5Zu65a6a5YmN57yA77yM5aaC5p6c6YWN572u5LqG77yM5ZCO57ut6K+35rGC55qEVVJM6YO95Lya6Ieq5Yqo5Yqg5LiK6L+Z5Liq5YmN57yA77yM5aaC5p6c5piv5Ye95pWw77yM5YiZ5Li65Ye95pWw55qE6L+U5Zue5YC8ICovXHJcbiAgICB1cmxQZXJmaXg/OiBzdHJpbmcgfCAoKCkgPT4gc3RyaW5nKTtcclxuICAgIC8qIOaYr+WQpumcgOimgeiwg+eUqGNoZWNrU2Vzc2lvbu+8jOmqjOivgeWwj+eoi+W6j+eahOeZu+W9leaAgei/h+acn++8m+iLpeS4muWKoeS4jemcgOimgeS9v+eUqOWIsHNlc3Npb25fa2V577yM5YiZ5Y+v6YWN572u5Li6dHJ1ZSAqL1xyXG4gICAgZG9Ob3RDaGVja1Nlc3Npb24/OiBib29sZWFuO1xyXG4gICAgLyog55m75b2V6YeN6K+V5qyh5pWw77yM5b2T6L+e57ut6K+35rGC55m75b2V5o6l5Y+j6L+U5Zue5aSx6LSl5qyh5pWw6LaF6L+H6L+Z5Liq5qyh5pWw77yM5bCG5LiN5YaN6YeN6K+V55m75b2VICovXHJcbiAgICByZUxvZ2luTGltaXQ/OiBudW1iZXI7XHJcbiAgICAvKiDlvZPlh7rnjrDmjqXlj6PpgLvovpHplJnor6/ml7bvvIzkvJrmiafooYznu5/kuIDnmoTlm57osIPlh73mlbDvvIzov5nph4zlj6/ku6XlgZrnu5/kuIDnmoTplJnor6/kuIrmiqXnrYnlpITnkIYgKi9cclxuICAgIGVycm9yQ2FsbGJhY2s/OiBudWxsIHwgRnVuY3Rpb247XHJcbiAgICAvKiDmjqXlj6Pov5Tlm57miJDlip/kuYvlkI7vvIzkvJrmiafooYznu5/kuIDnmoTlm57osIPlh73mlbDvvIzov5nph4zlj6/ku6XlgZrnu5/kuIDnmoTogJfml7bkuIrmiqXnrYnlpITnkIYgKi9cclxuICAgIHJlcG9ydENHST86IGJvb2xlYW4gfCAoKFxyXG4gICAgICAvKiDosIPnlKjnmoTmjqXlj6PlkI3lrZfvvIzlj6/lnKhyZXF1ZXN05o6l5Y+j55qEcmVwb3J05a2X5q616YWN572uICovXHJcbiAgICAgIG5hbWU6IHN0cmluZyxcclxuICAgICAgLyog5Y+R6LW36K+35rGC5pe255qE5pe26Ze05oizICovXHJcbiAgICAgIHN0YXJ0VGltZTogbnVtYmVyLFxyXG4gICAgICAvKiDor7fmsYLov5Tlm57ml7bnmoTml7bpl7TmiLMgKi9cclxuICAgICAgZW5kVGltZTogbnVtYmVyLFxyXG4gICAgICAvKiDor7fmsYLmlrnms5XvvIzlj6/nlKjkuo7kuIrmiqUgKi9cclxuICAgICAgcmVxdWVzdD86ICgpID0+IHZvaWRcclxuICAgICkgPT4gdm9pZCk7XHJcbiAgICAvKiBcdOWPr+S4uuaOpeWPo+aPkOS+m21vY2vmlbDmja4gKi9cclxuICAgIG1vY2tKc29uPzogVE9ETztcclxuICAgIC8qKiDmiYDmnInor7fmsYLpg73kvJroh6rliqjluKbkuIrov5nph4znmoTlj4LmlbAgKi9cclxuICAgIGdsb2JhbERhdGE/OiBib29sZWFuIHwgb2JqZWN0IHwgRnVuY3Rpb247XHJcbiAgICAvKiogc2Vzc2lvbuWcqOacrOWcsOe8k+WtmOeahGtleSAqL1xyXG4gICAgc2Vzc2lvbkV4cGlyZUtleTogc3RyaW5nO1xyXG4gICAgLyog6Kem5Y+R6YeN5paw55m75b2V55qE5p2h5Lu277yb5Y+C5pWw5Li6Q0dJ6L+U5Zue55qE5pWw5o2u77yM6L+U5Zue6ZyA6KaB6YeN5paw55m75b2V55qE5p2h5Lu2ICovXHJcbiAgICBsb2dpblRyaWdnZXI/OiAocmVzOiBzdHJpbmcgfCBJQW55T2JqZWN0IHwgQXJyYXlCdWZmZXIpID0+IGJvb2xlYW47XHJcbiAgICAvKiDop6blj5Hor7fmsYLmiJDlip/nmoTmnaHku7bvvJvlj4LmlbDkuLpDR0nov5Tlm57nmoTmlbDmja7vvIzov5Tlm57mjqXlj6PpgLvovpHmiJDlip/nmoTmnaHku7YgKi9cclxuICAgIHN1Y2Nlc3NUcmlnZ2VyPzogKHJlczogc3RyaW5nIHwgSUFueU9iamVjdCB8IEFycmF5QnVmZmVyKSA9PiBib29sZWFuO1xyXG4gICAgLyog5oiQ5Yqf5LmL5ZCO6L+U5Zue5pWw5o2u77yb5Y+C5pWw5Li6Q0dJ6L+U5Zue55qE5pWw5o2u77yM6L+U5Zue6YC76L6R6ZyA6KaB5L2/55So55qE5pWw5o2uICovXHJcbiAgICBzdWNjZXNzRGF0YT86IChyZXM6IHN0cmluZyB8IElBbnlPYmplY3QgfCBBcnJheUJ1ZmZlcikgPT4gYm9vbGVhbjtcclxuICAgIC8qIFx05o6l5Y+j6YC76L6R5aSx6LSl5pe277yM6ZSZ6K+v5by556qX55qE5qCH6aKYICovXHJcbiAgICBlcnJvclRpdGxlPzogc3RyaW5nIHwgKChyZXM6IHN0cmluZyB8IElBbnlPYmplY3QgfCBBcnJheUJ1ZmZlcikgPT4gc3RyaW5nKTtcclxuICAgIC8qIOaOpeWPo+mAu+i+keWksei0peaXtu+8jOmUmeivr+W8ueeql+eahOWGheWuuSAqL1xyXG4gICAgZXJyb3JDb250ZW50Pzogc3RyaW5nIHwgKChyZXM6IHN0cmluZyB8IElBbnlPYmplY3QgfCBBcnJheUJ1ZmZlcikgPT4gc3RyaW5nKTtcclxuICB9XHJcblxyXG4gIGV4cG9ydCBpbnRlcmZhY2UgSUNvZGVUb1Nlc3Npb25PcHRpb25ze1xyXG4gICAgLyogQ0dJ55qEdXJsICovXHJcbiAgICB1cmw/OiBzdHJpbmc7XHJcbiAgICAvKiDosIPnlKjor6VDR0nnmoTmlrnms5UgKi9cclxuICAgIG1ldGhvZD86ICdPUFRJT05TJ1xyXG4gICAgfCAnR0VUJ1xyXG4gICAgfCAnSEVBRCdcclxuICAgIHwgJ1BPU1QnXHJcbiAgICB8ICdQVVQnXHJcbiAgICB8ICdERUxFVEUnXHJcbiAgICB8ICdUUkFDRSdcclxuICAgIHwgJ0NPTk5FQ1QnIHwgJ3N0cmluZycsXHJcbiAgICAvKiBDR0nkuK3kvKDlj4Lml7bvvIzlrZjmlL5jb2Rl55qE5ZCN56ewICovXHJcbiAgICBjb2RlTmFtZT86IHN0cmluZztcclxuICAgIC8qIOeZu+W9leaOpeWPo+mcgOimgeeahOWFtuS7luWPguaVsCAqL1xyXG4gICAgZGF0YT86IHN0cmluZyB8IElBbnlPYmplY3QgfCBBcnJheUJ1ZmZlcjtcclxuICAgIC8qIOaOpeWPo+i/lOWbnuaIkOWKn+eahOWHveaVsO+8m+mcgOimgei/lOWbnnNlc3Npb27nmoTlgLwgKi9cclxuICAgIHN1Y2Nlc3M/OiBGdW5jdGlvbjtcclxuICAgIC8qIGNvZGXmjaLlj5ZzZXNzaW9u55qE5o6l5Y+j6YC76L6R5Ye66ZSZ5pe277yM5omn6KGM55qE5Ye95pWw77yM6Iul6YWN572u5LqG5q2k5Ye95pWw77yM5YiZ5LiN5YaN6buY6K6k5by556qX5oql6ZSZICovXHJcbiAgICBmYWlsPzogRnVuY3Rpb247XHJcbiAgICAvKiBjb2RlVG9TZXNzaW9u55qE5LiK5oql5a2X5q615ZCNICovXHJcbiAgICByZXBvcnQ/OiBzdHJpbmc7XHJcbiAgfVxyXG5cclxuXHJcbmV4cG9ydCBkZWZhdWx0IChwYXJhbXM6IElJbml0T3B0aW9uKSA9PiB7XHJcbiAgICBjb25zdCBjb25maWc6IElJbml0T3B0aW9uID0gey4uLnBhcmFtcywgLi4uZGVmYXVsdENvbmZpZ31cclxuICAgIC8vIOWmguaenOmFjee9ruabtOaUueS6hnNlc3Npb27nmoTlrZjlgqjlkI3lrZfvvIzliJnph43mlrDojrflj5bkuIDmrKFzZXNzaW9uXHJcbiAgICBpZiAocGFyYW1zLnNlc3Npb25OYW1lKSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgc3RhdHVzLnNlc3Npb24gPSB3eC5nZXRTdG9yYWdlU3luYyhjb25maWcuc2Vzc2lvbk5hbWUhKSB8fCAnJztcclxuICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ3d4LmdldFN0b3JhZ2VTeW5jOmZhaWwsIGNhbiBub3QgZ2V0IHNlc3Npb24uJylcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICAvLyDlpoLmnpzphY3nva7mm7TmlLnkuoZzZXNzaW9u6L+H5pyf5pe26Ze055qE5a2Y5YKo5ZCN5a2X77yM5YiZ6YeN5paw6I635Y+W5LiA5qyhc2Vzc2lvbueahOi/h+acn+aXtumXtFxyXG4gICAgaWYgKHBhcmFtcy5zZXNzaW9uRXhwaXJlS2V5KSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgc3RhdHVzLnNlc3Npb25FeHBpcmUgPSB3eC5nZXRTdG9yYWdlU3luYyhjb25maWcuc2Vzc2lvbkV4cGlyZUtleSkgfHwgSW5maW5pdHk7XHJcbiAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCd3eC5nZXRTdG9yYWdlU3luYzpmYWlsLCBjYW4gbm90IGdldCBzZXNzaW9uRXhwaXJlLicpXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG59XHJcbiJdfQ== /***/ }), @@ -487,6 +487,7 @@ var sessionManager_1 = __webpack_require__(/*! ./sessionManager */ "./src/module var errorHandler_1 = __webpack_require__(/*! ./errorHandler */ "./src/module/errorHandler.ts"); var responseHandler_1 = __webpack_require__(/*! ./responseHandler */ "./src/module/responseHandler.ts"); var durationReporter_1 = __webpack_require__(/*! ./durationReporter */ "./src/module/durationReporter.ts"); +var url_1 = __webpack_require__(/*! ../util/url */ "./src/util/url.ts"); function format(url) { if (url.startsWith('http')) { return url; @@ -526,8 +527,10 @@ function preDo(obj) { }; })(obj.complete); } - obj.originUrl = obj.url; - obj.url = format(obj.url); + if (!obj.originUrl) { + obj.originUrl = obj.url; + obj.url = format(obj.url); + } return obj; } function initialize(obj, container) { @@ -549,21 +552,11 @@ function initialize(obj, container) { obj.dataType = obj.dataType || 'json'; if (obj.method !== "GET") { if (status_1.default.session) { - if (obj.url.indexOf('?') >= 0) { - obj.url += '&' + config_1.default.sessionName + '=' + encodeURIComponent(status_1.default.session); - } - else { - obj.url += '?' + config_1.default.sessionName + '=' + encodeURIComponent(status_1.default.session); - } - } - for (var i in gd) { - if (obj.url.indexOf('?') >= 0) { - obj.url += '&' + i + '=' + gd[i]; - } - else { - obj.url += '?' + i + '=' + gd[i]; - } + var params = {}; + params[config_1.default.sessionName] = status_1.default.session; + obj.url = url_1.default.setParams(obj.url, params); } + obj.url = url_1.default.setParams(obj.url, gd); } durationReporter_1.default.start(obj); return obj; @@ -591,6 +584,7 @@ function doRequest(obj) { }); } function doUploadFile(obj) { + obj = initialize(obj, 'formData'); obj.count++; wx.uploadFile({ url: obj.url, @@ -640,7 +634,7 @@ exports.default = { request: request, uploadFile: uploadFile }; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdEhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kdWxlL3JlcXVlc3RIYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsMkNBQXFDO0FBQ3JDLDBDQUFvQztBQUNwQywwQ0FBb0M7QUFDcEMsNkNBQXVDO0FBQ3ZDLCtDQUF5QztBQUN6QyxtREFBNkM7QUFDN0MsK0NBQXlDO0FBQ3pDLHFEQUErQztBQUMvQyx1REFBa0Q7QUFHbEQsU0FBUyxNQUFNLENBQUMsR0FBVztJQUN2QixJQUFJLEdBQUcsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLEVBQUU7UUFDeEIsT0FBTyxHQUFHLENBQUE7S0FDYjtTQUFNO1FBQ0gsSUFBSSxTQUFTLEdBQUcsZ0JBQU0sQ0FBQyxTQUFTLENBQUM7UUFDakMsSUFBSSxPQUFPLGdCQUFNLENBQUMsU0FBUyxLQUFLLFVBQVUsRUFBRTtZQUN4QyxTQUFTLEdBQUcsZ0JBQU0sQ0FBQyxTQUFTLEVBQUUsQ0FBQTtTQUNqQztRQUNELE9BQU8sU0FBUyxHQUFHLEdBQUcsQ0FBQztLQUMxQjtBQUNMLENBQUM7QUFHRCxTQUFTLEtBQUssQ0FBQyxHQUFTO0lBQXhCLGlCQStCQztJQTlCRyxJQUFHLE9BQU8sR0FBRyxDQUFDLFVBQVUsS0FBSyxVQUFVLEVBQUU7UUFDckMsR0FBRyxDQUFDLFVBQVUsRUFBRSxDQUFDO0tBQ3BCO0lBRUQsSUFBSSxPQUFPLEdBQUcsQ0FBQyxZQUFZLEtBQUssV0FBVyxFQUFFO1FBQ3pDLEdBQUcsQ0FBQyxZQUFZLEdBQUcsQ0FBQyxDQUFDO0tBQ3hCO1NBQU07UUFDSCxHQUFHLENBQUMsWUFBWSxFQUFFLENBQUM7S0FDdEI7SUFFRCxJQUFJLE9BQU8sR0FBRyxDQUFDLEtBQUssS0FBSyxXQUFXLEVBQUU7UUFDbEMsR0FBRyxDQUFDLEtBQUssR0FBRyxDQUFDLENBQUM7S0FDakI7SUFFRCxJQUFJLEdBQUcsQ0FBQyxXQUFXLEVBQUU7UUFD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LEdBQUcsR0FBRyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDakIsSUFBRyxnQkFBTSxDQUFDLFFBQVEsRUFBRTtRQUNoQixxQkFBVyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFDbkMsT0FBTyxLQUFLLENBQUM7S0FDaEI7SUFDRCxJQUFHLEdBQUcsQ0FBQyxLQUFLLEVBQUU7UUFDVixzQkFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztLQUN6QjtJQUVELHdCQUFjLENBQUM7UUFDWCxZQUFZLENBQUMsR0FBRyxDQUFDLENBQUE7SUFDckIsQ0FBQyxFQUFFLEdBQUcsQ0FBQyxDQUFBO0FBQ1gsQ0FBQztBQUVELGtCQUFlO0lBQ1gsT0FBTyxTQUFBO0lBQ1AsVUFBVSxZQUFBO0NBQ2IsQ0FBQSIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBsb2FkaW5nIGZyb20gJy4uL3V0aWwvbG9hZGluZydcclxuaW1wb3J0IGNvbmZpZyBmcm9tICcuLi9zdG9yZS9jb25maWcnXHJcbmltcG9ydCBzdGF0dXMgZnJvbSAnLi4vc3RvcmUvc3RhdHVzJ1xyXG5pbXBvcnQgbW9ja01hbmFnZXIgZnJvbSAnLi9tb2NrTWFuYWdlcidcclxuaW1wb3J0IGNhY2hlTWFuYWdlciBmcm9tICcuL2NhY2hlTWFuYWdlcidcclxuaW1wb3J0IHNlc3Npb25NYW5hZ2VyIGZyb20gJy4vc2Vzc2lvbk1hbmFnZXInXHJcbmltcG9ydCBlcnJvckhhbmRsZXIgZnJvbSAnLi9lcnJvckhhbmRsZXInXHJcbmltcG9ydCByZXNwb25zZUhhbmRsZXIgZnJvbSAnLi9yZXNwb25zZUhhbmRsZXInXHJcbmltcG9ydCBkdXJhdGlvblJlcG9ydGVyIGZyb20gXCIuL2R1cmF0aW9uUmVwb3J0ZXJcIjtcclxuXHJcbi8vIOagvOW8j+WMlnVybFxyXG5mdW5jdGlvbiBmb3JtYXQodXJsOiBzdHJpbmcpIHtcclxuICAgIGlmICh1cmwuc3RhcnRzV2l0aCgnaHR0cCcpKSB7XHJcbiAgICAgICAgcmV0dXJuIHVybFxyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICBsZXQgdXJsUGVyZml4ID0gY29uZmlnLnVybFBlcmZpeDtcclxuICAgICAgICBpZiAodHlwZW9mIGNvbmZpZy51cmxQZXJmaXggPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgICAgICB1cmxQZXJmaXggPSBjb25maWcudXJsUGVyZml4KClcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHVybFBlcmZpeCArIHVybDtcclxuICAgIH1cclxufVxyXG5cclxuLy8g5omA5pyJ6K+35rGC5Y+R5Ye65YmN6ZyA6KaB5YGa55qE5LqL5oOFXHJcbmZ1bmN0aW9uIHByZURvKG9iajogVE9ETykge1xyXG4gICAgaWYodHlwZW9mIG9iai5iZWZvcmVTZW5kID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICBvYmouYmVmb3JlU2VuZCgpO1xyXG4gICAgfVxyXG4gICAgLy8g55m75b2V5oCB5aSx5pWI77yM6YeN5aSN55m75b2V6K6h5pWwXHJcbiAgICBpZiAodHlwZW9mIG9iai5yZUxvZ2luTGltaXQgPT09IFwidW5kZWZpbmVkXCIpIHtcclxuICAgICAgICBvYmoucmVMb2dpbkxpbWl0ID0gMDtcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgb2JqLnJlTG9naW5MaW1pdCsrO1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0eXBlb2Ygb2JqLmNvdW50ID09PSBcInVuZGVmaW5lZFwiKSB7XHJcbiAgICAgICAgb2JqLmNvdW50ID0gMDtcclxuICAgIH1cclxuXHJcbiAgICBpZiAob2JqLnNob3dMb2FkaW5nKSB7XHJcbiAgICAgICAgbG9hZGluZy5zaG93KG9iai5zaG93TG9hZGluZyk7XHJcbiAgICAgICAgb2JqLmNvbXBsZXRlID0gKChmbjogRnVuY3Rpb24sIC4uLmFyZ3MpID0+IHtcclxuICAgICAgICAgICAgcmV0dXJuICgpPT4ge1xyXG4gICAgICAgICAgICAgICAgLy8gVE9ETyDkvb/nlKhQcm9taXNl5pa55byP5ZCO77yM5Y+v6IO95LiN6ZyA6KaB6L+Z5Lqb5LqGXHJcbiAgICAgICAgICAgICAgICBsb2FkaW5nLmhpZGUoKTtcclxuICAgICAgICAgICAgICAgIC8vIEB0cy1pZ25vcmVcclxuICAgICAgICAgICAgICAgIHR5cGVvZiBmbiA9PT0gXCJmdW5jdGlvblwiICYmIGZuLmFwcGx5KHRoaXMsIC4uLmFyZ3MpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSkob2JqLmNvbXBsZXRlKVxyXG4gICAgfVxyXG5cclxuICAgIG9iai5vcmlnaW5VcmwgPSBvYmoudXJsO1xyXG4gICAgb2JqLnVybCA9IGZvcm1hdChvYmoudXJsKTtcclxuXHJcbiAgICByZXR1cm4gb2JqO1xyXG59XHJcblxyXG4vLyDmoLzlvI/ljJblpITnkIbor7fmsYLnmoRvYmrlhoXlrrlcclxuZnVuY3Rpb24gaW5pdGlhbGl6ZShvYmo6IFRPRE8sIGNvbnRhaW5lcjogVE9ETykge1xyXG4gICAgaWYgKCFvYmpbY29udGFpbmVyXSkge1xyXG4gICAgICAgIG9ialtjb250YWluZXJdID0ge307XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG9iai5vcmlnaW5VcmwgIT09IGNvbmZpZy5jb2RlVG9TZXNzaW9uLnVybCAmJiBzdGF0dXMuc2Vzc2lvbikge1xyXG4gICAgICAgIG9ialtjb250YWluZXJdW2NvbmZpZy5zZXNzaW9uTmFtZSFdID0gc3RhdHVzLnNlc3Npb247XHJcbiAgICB9XHJcblxyXG4gICAgLy8g5aaC5p6c5pyJ5YWo5bGA5Y+C5pWw77yM5YiZ5re75YqgXHJcbiAgICBsZXQgZ2Q6IGFueSA9IHt9O1xyXG4gICAgaWYgKHR5cGVvZiBjb25maWcuZ2xvYmFsRGF0YSA9PT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgZ2QgPSBjb25maWcuZ2xvYmFsRGF0YSgpO1xyXG4gICAgfSBlbHNlIGlmICh0eXBlb2YgY29uZmlnLmdsb2JhbERhdGEgPT09IFwib2JqZWN0XCIpIHtcclxuICAgICAgICBnZCA9IGNvbmZpZy5nbG9iYWxEYXRhO1xyXG4gICAgfVxyXG4gICAgb2JqW2NvbnRhaW5lcl0gPSBPYmplY3QuYXNzaWduKHt9LCBnZCwgb2JqW2NvbnRhaW5lcl0pO1xyXG5cclxuICAgIG9iai5tZXRob2QgPSBvYmoubWV0aG9kIHx8ICdHRVQnO1xyXG4gICAgb2JqLmRhdGFUeXBlID0gb2JqLmRhdGFUeXBlIHx8ICdqc29uJztcclxuXHJcbiAgICAvLyDlpoLmnpzor7fmsYLkuI3mmK9HRVTvvIzliJnlnKhVUkzkuK3oh6rliqjliqDkuIrnmbvlvZXmgIHlkozlhajlsYDlj4LmlbBcclxuICAgIGlmIChvYmoubWV0aG9kICE9PSBcIkdFVFwiKSB7XHJcblxyXG4gICAgICAgIGlmIChzdGF0dXMuc2Vzc2lvbikge1xyXG4gICAgICAgICAgICBpZiAob2JqLnVybC5pbmRleE9mKCc/JykgPj0gMCkge1xyXG4gICAgICAgICAgICAgICAgb2JqLnVybCArPSAnJicgKyBjb25maWcuc2Vzc2lvbk5hbWUgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQoc3RhdHVzLnNlc3Npb24pO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgb2JqLnVybCArPSAnPycgKyBjb25maWcuc2Vzc2lvbk5hbWUgKyAnPScgKyBlbmNvZGVVUklDb21wb25lbnQoc3RhdHVzLnNlc3Npb24pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICAvLyDlpoLmnpzmnInlhajlsYDlj4LmlbDvvIzliJnlnKhVUkzkuK3mt7vliqBcclxuICAgICAgICBmb3IgKGxldCBpIGluIGdkKSB7XHJcbiAgICAgICAgICAgIGlmIChvYmoudXJsLmluZGV4T2YoJz8nKSA+PSAwKSB7XHJcbiAgICAgICAgICAgICAgICBvYmoudXJsICs9ICcmJyArIGkgKyAnPScgKyBnZFtpXTtcclxuICAgICAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgICAgIG9iai51cmwgKz0gJz8nICsgaSArICc9JyArIGdkW2ldO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGR1cmF0aW9uUmVwb3J0ZXIuc3RhcnQob2JqKTtcclxuXHJcbiAgICByZXR1cm4gb2JqO1xyXG59XHJcblxyXG5mdW5jdGlvbiBkb1JlcXVlc3Qob2JqOiBUT0RPKSB7XHJcbiAgICBvYmogPSBpbml0aWFsaXplKG9iaiwgJ2RhdGEnKTtcclxuICAgIG9iai5jb3VudCsrO1xyXG4gICAgd3gucmVxdWVzdCh7XHJcbiAgICAgICAgdXJsOiBvYmoudXJsLFxyXG4gICAgICAgIGRhdGE6IG9iai5kYXRhLFxyXG4gICAgICAgIG1ldGhvZDogb2JqLm1ldGhvZCxcclxuICAgICAgICBoZWFkZXI6IG9iai5oZWFkZXIgfHwge30sXHJcbiAgICAgICAgZGF0YVR5cGU6IG9iai5kYXRhVHlwZSB8fCAnanNvbicsXHJcbiAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKHJlczogd3guUmVxdWVzdFN1Y2Nlc3NDYWxsYmFja1Jlc3VsdCkge1xyXG4gICAgICAgICAgICByZXNwb25zZUhhbmRsZXIocmVzLCBvYmosICdyZXF1ZXN0JylcclxuICAgICAgICB9LFxyXG4gICAgICAgIGZhaWw6IGZ1bmN0aW9uIChyZXM6IHd4LkdlbmVyYWxDYWxsYmFja1Jlc3VsdCkge1xyXG4gICAgICAgICAgICBlcnJvckhhbmRsZXIob2JqLCByZXMpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKHJlcyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBvYmouY291bnQtLTtcclxuICAgICAgICAgICAgdHlwZW9mIG9iai5jb21wbGV0ZSA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb3VudCA9PT0gMCAmJiBvYmouY29tcGxldGUoKTtcclxuICAgICAgICB9XHJcbiAgICB9KVxyXG59XHJcblxyXG5mdW5jdGlvbiBkb1VwbG9hZEZpbGUob2JqOiBUT0RPKSB7XHJcbiAgICBvYmouY291bnQrKztcclxuICAgIHd4LnVwbG9hZEZpbGUoe1xyXG4gICAgICAgIHVybDogb2JqLnVybCxcclxuICAgICAgICBmaWxlUGF0aDogb2JqLmZpbGVQYXRoIHx8ICcnLFxyXG4gICAgICAgIG5hbWU6IG9iai5uYW1lIHx8ICcnLFxyXG4gICAgICAgIGZvcm1EYXRhOiBvYmouZm9ybURhdGEsXHJcbiAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKHJlczogd3guVXBsb2FkRmlsZVN1Y2Nlc3NDYWxsYmFja1Jlc3VsdCkge1xyXG4gICAgICAgICAgICByZXNwb25zZUhhbmRsZXIocmVzLCBvYmosICd1cGxvYWRGaWxlJylcclxuICAgICAgICB9LFxyXG4gICAgICAgIGZhaWw6IGZ1bmN0aW9uIChyZXM6IHd4LkdlbmVyYWxDYWxsYmFja1Jlc3VsdCkge1xyXG4gICAgICAgICAgICBlcnJvckhhbmRsZXIob2JqLCByZXMpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKHJlcyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBvYmouY291bnQtLTtcclxuICAgICAgICAgICAgdHlwZW9mIG9iai5jb21wbGV0ZSA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb3VudCA9PT0gMCAmJiBvYmouY29tcGxldGUoKTtcclxuICAgICAgICB9XHJcbiAgICB9KVxyXG59XHJcblxyXG5mdW5jdGlvbiByZXF1ZXN0KG9iajogVE9ETyk6IFRPRE8ge1xyXG4gICAgb2JqID0gcHJlRG8ob2JqKTtcclxuICAgIGlmKGNvbmZpZy5tb2NrSnNvbikge1xyXG4gICAgICAgIG1vY2tNYW5hZ2VyLmdldChvYmosICdyZXF1ZXN0Jyk7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYob2JqLmNhY2hlKSB7XHJcbiAgICAgICAgY2FjaGVNYW5hZ2VyLmdldChvYmopO1xyXG4gICAgfVxyXG5cclxuICAgIHNlc3Npb25NYW5hZ2VyKCgpPT57XHJcbiAgICAgICAgZG9SZXF1ZXN0KG9iailcclxuICAgIH0sIG9iailcclxufVxyXG5cclxuZnVuY3Rpb24gdXBsb2FkRmlsZShvYmo6IFRPRE8pOiBUT0RPIHtcclxuICAgIG9iaiA9IHByZURvKG9iaik7XHJcbiAgICBpZihjb25maWcubW9ja0pzb24pIHtcclxuICAgICAgICBtb2NrTWFuYWdlci5nZXQob2JqLCAndXBsb2FkRmlsZScpO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmKG9iai5jYWNoZSkge1xyXG4gICAgICAgIGNhY2hlTWFuYWdlci5nZXQob2JqKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXNzaW9uTWFuYWdlcigoKT0+e1xyXG4gICAgICAgIGRvVXBsb2FkRmlsZShvYmopXHJcbiAgICB9LCBvYmopXHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuICAgIHJlcXVlc3QsXHJcbiAgICB1cGxvYWRGaWxlXHJcbn1cclxuIl19 +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVxdWVzdEhhbmRsZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvbW9kdWxlL3JlcXVlc3RIYW5kbGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7O0FBQUEsMkNBQXFDO0FBQ3JDLDBDQUFvQztBQUNwQywwQ0FBb0M7QUFDcEMsNkNBQXVDO0FBQ3ZDLCtDQUF5QztBQUN6QyxtREFBNkM7QUFDN0MsK0NBQXlDO0FBQ3pDLHFEQUErQztBQUMvQyx1REFBaUQ7QUFDakQsbUNBQTZCO0FBRzdCLFNBQVMsTUFBTSxDQUFDLEdBQVc7SUFDdkIsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQ3hCLE9BQU8sR0FBRyxDQUFBO0tBQ2I7U0FBTTtRQUNILElBQUksU0FBUyxHQUFHLGdCQUFNLENBQUMsU0FBUyxDQUFDO1FBQ2pDLElBQUksT0FBTyxnQkFBTSxDQUFDLFNBQVMsS0FBSyxVQUFVLEVBQUU7WUFDeEMsU0FBUyxHQUFHLGdCQUFNLENBQUMsU0FBUyxFQUFFLENBQUE7U0FDakM7UUFDRCxPQUFPLFNBQVMsR0FBRyxHQUFHLENBQUM7S0FDMUI7QUFDTCxDQUFDO0FBR0QsU0FBUyxLQUFLLENBQUMsR0FBUztJQUF4QixpQkFpQ0M7SUFoQ0csSUFBRyxPQUFPLEdBQUcsQ0FBQyxVQUFVLEtBQUssVUFBVSxFQUFFO1FBQ3JDLEdBQUcsQ0FBQyxVQUFVLEVBQUUsQ0FBQztLQUNwQjtJQUVELElBQUksT0FBTyxHQUFHLENBQUMsWUFBWSxLQUFLLFdBQVcsRUFBRTtRQUN6QyxHQUFHLENBQUMsWUFBWSxHQUFHLENBQUMsQ0FBQztLQUN4QjtTQUFNO1FBQ0gsR0FBRyxDQUFDLFlBQVksRUFBRSxDQUFDO0tBQ3RCO0lBRUQsSUFBSSxPQUFPLEdBQUcsQ0FBQyxLQUFLLEtBQUssV0FBVyxFQUFFO1FBQ2xDLEdBQUcsQ0FBQyxLQUFLLEdBQUcsQ0FBQyxDQUFDO0tBQ2pCO0lBRUQsSUFBSSxHQUFHLENBQUMs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Q3pCO0lBRUQsd0JBQWMsQ0FBQztRQUNYLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQTtJQUNyQixDQUFDLEVBQUUsR0FBRyxDQUFDLENBQUE7QUFDWCxDQUFDO0FBRUQsa0JBQWU7SUFDWCxPQUFPLFNBQUE7SUFDUCxVQUFVLFlBQUE7Q0FDYixDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGxvYWRpbmcgZnJvbSAnLi4vdXRpbC9sb2FkaW5nJ1xyXG5pbXBvcnQgY29uZmlnIGZyb20gJy4uL3N0b3JlL2NvbmZpZydcclxuaW1wb3J0IHN0YXR1cyBmcm9tICcuLi9zdG9yZS9zdGF0dXMnXHJcbmltcG9ydCBtb2NrTWFuYWdlciBmcm9tICcuL21vY2tNYW5hZ2VyJ1xyXG5pbXBvcnQgY2FjaGVNYW5hZ2VyIGZyb20gJy4vY2FjaGVNYW5hZ2VyJ1xyXG5pbXBvcnQgc2Vzc2lvbk1hbmFnZXIgZnJvbSAnLi9zZXNzaW9uTWFuYWdlcidcclxuaW1wb3J0IGVycm9ySGFuZGxlciBmcm9tICcuL2Vycm9ySGFuZGxlcidcclxuaW1wb3J0IHJlc3BvbnNlSGFuZGxlciBmcm9tICcuL3Jlc3BvbnNlSGFuZGxlcidcclxuaW1wb3J0IGR1cmF0aW9uUmVwb3J0ZXIgZnJvbSBcIi4vZHVyYXRpb25SZXBvcnRlclwiXHJcbmltcG9ydCB1cmwgZnJvbSAnLi4vdXRpbC91cmwnXHJcblxyXG4vLyDmoLzlvI/ljJZ1cmxcclxuZnVuY3Rpb24gZm9ybWF0KHVybDogc3RyaW5nKSB7XHJcbiAgICBpZiAodXJsLnN0YXJ0c1dpdGgoJ2h0dHAnKSkge1xyXG4gICAgICAgIHJldHVybiB1cmxcclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgbGV0IHVybFBlcmZpeCA9IGNvbmZpZy51cmxQZXJmaXg7XHJcbiAgICAgICAgaWYgKHR5cGVvZiBjb25maWcudXJsUGVyZml4ID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICAgICAgdXJsUGVyZml4ID0gY29uZmlnLnVybFBlcmZpeCgpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB1cmxQZXJmaXggKyB1cmw7XHJcbiAgICB9XHJcbn1cclxuXHJcbi8vIOaJgOacieivt+axguWPkeWHuuWJjemcgOimgeWBmueahOS6i+aDhVxyXG5mdW5jdGlvbiBwcmVEbyhvYmo6IFRPRE8pIHtcclxuICAgIGlmKHR5cGVvZiBvYmouYmVmb3JlU2VuZCA9PT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgb2JqLmJlZm9yZVNlbmQoKTtcclxuICAgIH1cclxuICAgIC8vIOeZu+W9leaAgeWkseaViO+8jOmHjeWkjeeZu+W9leiuoeaVsFxyXG4gICAgaWYgKHR5cGVvZiBvYmoucmVMb2dpbkxpbWl0ID09PSBcInVuZGVmaW5lZFwiKSB7XHJcbiAgICAgICAgb2JqLnJlTG9naW5MaW1pdCA9IDA7XHJcbiAgICB9IGVsc2Uge1xyXG4gICAgICAgIG9iai5yZUxvZ2luTGltaXQrKztcclxuICAgIH1cclxuXHJcbiAgICBpZiAodHlwZW9mIG9iai5jb3VudCA9PT0gXCJ1bmRlZmluZWRcIikge1xyXG4gICAgICAgIG9iai5jb3VudCA9IDA7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKG9iai5zaG93TG9hZGluZykge1xyXG4gICAgICAgIGxvYWRpbmcuc2hvdyhvYmouc2hvd0xvYWRpbmcpO1xyXG4gICAgICAgIG9iai5jb21wbGV0ZSA9ICgoZm46IEZ1bmN0aW9uLCAuLi5hcmdzKSA9PiB7XHJcbiAgICAgICAgICAgIHJldHVybiAoKT0+IHtcclxuICAgICAgICAgICAgICAgIC8vIFRPRE8g5L2/55SoUHJvbWlzZeaWueW8j+WQju+8jOWPr+iDveS4jemcgOimgei/meS6m+S6hlxyXG4gICAgICAgICAgICAgICAgbG9hZGluZy5oaWRlKCk7XHJcbiAgICAgICAgICAgICAgICAvLyBAdHMtaWdub3JlXHJcbiAgICAgICAgICAgICAgICB0eXBlb2YgZm4gPT09IFwiZnVuY3Rpb25cIiAmJiBmbi5hcHBseSh0aGlzLCAuLi5hcmdzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pKG9iai5jb21wbGV0ZSlcclxuICAgIH1cclxuXHJcbiAgICBpZighb2JqLm9yaWdpblVybCkge1xyXG4gICAgICAgIG9iai5vcmlnaW5VcmwgPSBvYmoudXJsO1xyXG4gICAgICAgIG9iai51cmwgPSBmb3JtYXQob2JqLnVybCk7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG9iajtcclxufVxyXG5cclxuLy8g5qC85byP5YyW5aSE55CG6K+35rGC55qEb2Jq5YaF5a65XHJcbmZ1bmN0aW9uIGluaXRpYWxpemUob2JqOiBUT0RPLCBjb250YWluZXI6IFRPRE8pIHtcclxuICAgIGlmICghb2JqW2NvbnRhaW5lcl0pIHtcclxuICAgICAgICBvYmpbY29udGFpbmVyXSA9IHt9O1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChvYmoub3JpZ2luVXJsICE9PSBjb25maWcuY29kZVRvU2Vzc2lvbi51cmwgJiYgc3RhdHVzLnNlc3Npb24pIHtcclxuICAgICAgICBvYmpbY29udGFpbmVyXVtjb25maWcuc2Vzc2lvbk5hbWUhXSA9IHN0YXR1cy5zZXNzaW9uO1xyXG4gICAgfVxyXG5cclxuICAgIC8vIOWmguaenOacieWFqOWxgOWPguaVsO+8jOWImea3u+WKoFxyXG4gICAgbGV0IGdkOiBhbnkgPSB7fTtcclxuICAgIGlmICh0eXBlb2YgY29uZmlnLmdsb2JhbERhdGEgPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgIGdkID0gY29uZmlnLmdsb2JhbERhdGEoKTtcclxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGNvbmZpZy5nbG9iYWxEYXRhID09PSBcIm9iamVjdFwiKSB7XHJcbiAgICAgICAgZ2QgPSBjb25maWcuZ2xvYmFsRGF0YTtcclxuICAgIH1cclxuICAgIG9ialtjb250YWluZXJdID0gT2JqZWN0LmFzc2lnbih7fSwgZ2QsIG9ialtjb250YWluZXJdKTtcclxuXHJcbiAgICBvYmoubWV0aG9kID0gb2JqLm1ldGhvZCB8fCAnR0VUJztcclxuICAgIG9iai5kYXRhVHlwZSA9IG9iai5kYXRhVHlwZSB8fCAnanNvbic7XHJcblxyXG4gICAgLy8g5aaC5p6c6K+35rGC5LiN5pivR0VU77yM5YiZ5ZyoVVJM5Lit6Ieq5Yqo5Yqg5LiK55m75b2V5oCB5ZKM5YWo5bGA5Y+C5pWwXHJcbiAgICBpZiAob2JqLm1ldGhvZCAhPT0gXCJHRVRcIikge1xyXG4gICAgICAgIGlmIChzdGF0dXMuc2Vzc2lvbikge1xyXG4gICAgICAgICAgICBsZXQgcGFyYW1zOiBhbnkgPSB7fTtcclxuICAgICAgICAgICAgcGFyYW1zW2NvbmZpZy5zZXNzaW9uTmFtZV0gPSBzdGF0dXMuc2Vzc2lvbjtcclxuICAgICAgICAgICAgb2JqLnVybCA9IHVybC5zZXRQYXJhbXMob2JqLnVybCwgcGFyYW1zKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgb2JqLnVybCA9IHVybC5zZXRQYXJhbXMob2JqLnVybCwgZ2QpO1xyXG4gICAgfVxyXG5cclxuICAgIGR1cmF0aW9uUmVwb3J0ZXIuc3RhcnQob2JqKTtcclxuXHJcbiAgICByZXR1cm4gb2JqO1xyXG59XHJcblxyXG5mdW5jdGlvbiBkb1JlcXVlc3Qob2JqOiBUT0RPKSB7XHJcbiAgICBvYmogPSBpbml0aWFsaXplKG9iaiwgJ2RhdGEnKTtcclxuICAgIG9iai5jb3VudCsrO1xyXG4gICAgd3gucmVxdWVzdCh7XHJcbiAgICAgICAgdXJsOiBvYmoudXJsLFxyXG4gICAgICAgIGRhdGE6IG9iai5kYXRhLFxyXG4gICAgICAgIG1ldGhvZDogb2JqLm1ldGhvZCxcclxuICAgICAgICBoZWFkZXI6IG9iai5oZWFkZXIgfHwge30sXHJcbiAgICAgICAgZGF0YVR5cGU6IG9iai5kYXRhVHlwZSB8fCAnanNvbicsXHJcbiAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKHJlczogd3guUmVxdWVzdFN1Y2Nlc3NDYWxsYmFja1Jlc3VsdCkge1xyXG4gICAgICAgICAgICByZXNwb25zZUhhbmRsZXIocmVzLCBvYmosICdyZXF1ZXN0JylcclxuICAgICAgICB9LFxyXG4gICAgICAgIGZhaWw6IGZ1bmN0aW9uIChyZXM6IHd4LkdlbmVyYWxDYWxsYmFja1Jlc3VsdCkge1xyXG4gICAgICAgICAgICBlcnJvckhhbmRsZXIob2JqLCByZXMpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKHJlcyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBvYmouY291bnQtLTtcclxuICAgICAgICAgICAgdHlwZW9mIG9iai5jb21wbGV0ZSA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb3VudCA9PT0gMCAmJiBvYmouY29tcGxldGUoKTtcclxuICAgICAgICB9XHJcbiAgICB9KVxyXG59XHJcblxyXG5mdW5jdGlvbiBkb1VwbG9hZEZpbGUob2JqOiBUT0RPKSB7XHJcbiAgICBvYmogPSBpbml0aWFsaXplKG9iaiwgJ2Zvcm1EYXRhJyk7XHJcbiAgICBvYmouY291bnQrKztcclxuICAgIHd4LnVwbG9hZEZpbGUoe1xyXG4gICAgICAgIHVybDogb2JqLnVybCxcclxuICAgICAgICBmaWxlUGF0aDogb2JqLmZpbGVQYXRoIHx8ICcnLFxyXG4gICAgICAgIG5hbWU6IG9iai5uYW1lIHx8ICcnLFxyXG4gICAgICAgIGZvcm1EYXRhOiBvYmouZm9ybURhdGEsXHJcbiAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKHJlczogd3guVXBsb2FkRmlsZVN1Y2Nlc3NDYWxsYmFja1Jlc3VsdCkge1xyXG4gICAgICAgICAgICByZXNwb25zZUhhbmRsZXIocmVzLCBvYmosICd1cGxvYWRGaWxlJylcclxuICAgICAgICB9LFxyXG4gICAgICAgIGZhaWw6IGZ1bmN0aW9uIChyZXM6IHd4LkdlbmVyYWxDYWxsYmFja1Jlc3VsdCkge1xyXG4gICAgICAgICAgICBlcnJvckhhbmRsZXIob2JqLCByZXMpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKHJlcyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBvYmouY291bnQtLTtcclxuICAgICAgICAgICAgdHlwZW9mIG9iai5jb21wbGV0ZSA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb3VudCA9PT0gMCAmJiBvYmouY29tcGxldGUoKTtcclxuICAgICAgICB9XHJcbiAgICB9KVxyXG59XHJcblxyXG5mdW5jdGlvbiByZXF1ZXN0KG9iajogVE9ETyk6IFRPRE8ge1xyXG4gICAgb2JqID0gcHJlRG8ob2JqKTtcclxuICAgIGlmKGNvbmZpZy5tb2NrSnNvbikge1xyXG4gICAgICAgIG1vY2tNYW5hZ2VyLmdldChvYmosICdyZXF1ZXN0Jyk7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYob2JqLmNhY2hlKSB7XHJcbiAgICAgICAgY2FjaGVNYW5hZ2VyLmdldChvYmopO1xyXG4gICAgfVxyXG5cclxuICAgIHNlc3Npb25NYW5hZ2VyKCgpPT57XHJcbiAgICAgICAgZG9SZXF1ZXN0KG9iailcclxuICAgIH0sIG9iailcclxufVxyXG5cclxuZnVuY3Rpb24gdXBsb2FkRmlsZShvYmo6IFRPRE8pOiBUT0RPIHtcclxuICAgIG9iaiA9IHByZURvKG9iaik7XHJcbiAgICBpZihjb25maWcubW9ja0pzb24pIHtcclxuICAgICAgICBtb2NrTWFuYWdlci5nZXQob2JqLCAndXBsb2FkRmlsZScpO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmKG9iai5jYWNoZSkge1xyXG4gICAgICAgIGNhY2hlTWFuYWdlci5nZXQob2JqKTtcclxuICAgIH1cclxuXHJcbiAgICBzZXNzaW9uTWFuYWdlcigoKT0+e1xyXG4gICAgICAgIGRvVXBsb2FkRmlsZShvYmopXHJcbiAgICB9LCBvYmopXHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuICAgIHJlcXVlc3QsXHJcbiAgICB1cGxvYWRGaWxlXHJcbn1cclxuIl19 /***/ }), @@ -696,7 +690,7 @@ function response(res, obj, method) { } }); } - else if (config_1.default.successTrigger(res.data) && typeof obj.success === "function") { + else if (config_1.default.successTrigger(res.data)) { var realData = null; try { realData = config_1.default.successData(res.data); @@ -705,7 +699,7 @@ function response(res, obj, method) { console.error("Function successData occur error: " + e); } if (!obj.noCacheFlash) { - obj.success(realData); + typeof obj.success === "function" && obj.success(realData); } cacheManager_1.default.set(obj, realData); } @@ -718,7 +712,7 @@ function response(res, obj, method) { } } exports.default = response; -//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2VIYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZHVsZS9yZXNwb25zZUhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwwQ0FBb0M7QUFDcEMsMENBQW9DO0FBQ3BDLG1EQUE2QztBQUM3QywrQ0FBeUM7QUFDekMsK0NBQXlDO0FBQ3pDLHVEQUFpRDtBQUVqRCxTQUFTLFFBQVEsQ0FBQyxHQUF5RSxFQUFFLEdBQVMsRUFBRSxNQUFnQztJQUNwSSxJQUFJLEdBQUcsQ0FBQyxVQUFVLEtBQUssR0FBRyxFQUFFO1FBR3hCLElBQUcsT0FBTyxHQUFHLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUM3QixJQUFJO2dCQUNBLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDbkM7WUFBQyxPQUFPLENBQUMsRUFBRTtnQkFDUixzQkFBWSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDdkIsT0FBTyxLQUFLLENBQUM7YUFDaEI7U0FDSjtRQUVELDBCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUUxQixJQUFJLEdBQUcsQ0FBQyxPQUFPLEVBQUU7WUFFYixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDWCxJQUFJO2dCQUNBLENBQUMsR0FBRyxnQkFBTSxDQUFDLGFBQWEsQ0FBQyxPQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQy9DO1lBQUMsT0FBTyxDQUFDLEVBQUU7YUFDWDtZQUNELElBQUksQ0FBQyxFQUFFO2dCQUNILEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDbEI7aUJBQU07Z0JBQ0gsc0JBQVksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7YUFDMUI7U0FDSjthQUFNLElBQUksZ0JBQU0sQ0FBQyxZQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxZQUFZLEdBQUcsZ0JBQU0sQ0FBQyxZQUFhLEVBQUU7WUFFbEYsZ0JBQU0sQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ3BCLGdCQUFNLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztZQUM3QixFQUFFLENBQUMsYUFBYSxDQUFDO2dCQUNiLEdBQUcsRUFBRSxnQkFBTSxDQUFDLFdBQVk7Z0JBQ3hCLFFBQVEsRUFBRTtvQkFDTix3QkFBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBO2dCQUMvQixDQUFDO2FBQ0osQ0FBQyxDQUFBO1NBQ0w7YUFBTSxJQUFJLGdCQUFNLENBQUMsY0FBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxPQUFPLEdBQUcsQ0FBQyxPQUFPLEtBQUssVUFBVSxFQUFFO1lBRTlFLElBQUksUUFBUSxHQUFHLElBQUksQ0FBQztZQUNwQixJQUFJO2dCQUNBLFFBQVEsR0FBRyxnQkFBTSxDQUFDLFdBQVksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDNUM7WUFBQyxPQUFPLENBQUMsRUFBRTtnQkFDUixPQUFPLENBQUMsS0FBSyxDQUFDLG9DQUFvQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQzNEO1lBQ0QsSUFBRyxDQUFDLEdBQUcsQ0FBQyxZQUFZLEVBQUU7Z0JBRWxCLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDekI7WUFFRCxzQkFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDbkM7YUFBTTtZQUVILHNCQUFZLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQzFCO0tBQ0o7U0FBTTtRQUNILHNCQUFZLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQzFCO0FBQ0wsQ0FBQztBQUVELGtCQUFlLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb25maWcgZnJvbSAnLi4vc3RvcmUvY29uZmlnJ1xyXG5pbXBvcnQgc3RhdHVzIGZyb20gJy4uL3N0b3JlL3N0YXR1cydcclxuaW1wb3J0IHJlcXVlc3RIYW5kbGVyIGZyb20gJy4vcmVxdWVzdEhhbmRsZXInXHJcbmltcG9ydCBlcnJvckhhbmRsZXIgZnJvbSAnLi9lcnJvckhhbmRsZXInXHJcbmltcG9ydCBjYWNoZU1hbmFnZXIgZnJvbSAnLi9jYWNoZU1hbmFnZXInXHJcbmltcG9ydCBkdXJhdGlvblJlcG9ydGVyIGZyb20gJy4vZHVyYXRpb25SZXBvcnRlcidcclxuXHJcbmZ1bmN0aW9uIHJlc3BvbnNlKHJlczogd3guUmVxdWVzdFN1Y2Nlc3NDYWxsYmFja1Jlc3VsdCB8IHd4LlVwbG9hZEZpbGVTdWNjZXNzQ2FsbGJhY2tSZXN1bHQsIG9iajogVE9ETywgbWV0aG9kOiBcInJlcXVlc3RcIiB8IFwidXBsb2FkRmlsZVwiKTogYW55IHtcclxuICAgIGlmIChyZXMuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcblxyXG4gICAgICAgIC8vIOWFvOWuuXVwbG9hZEZpbGXov5Tlm57nmoRyZXMuZGF0YeWPr+iDveaYr+Wtl+espuS4slxyXG4gICAgICAgIGlmKHR5cGVvZiByZXMuZGF0YSA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgcmVzLmRhdGEgPSBKU09OLnBhcnNlKHJlcy5kYXRhKTtcclxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgZXJyb3JIYW5kbGVyKG9iaiwgcmVzKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZHVyYXRpb25SZXBvcnRlci5lbmQob2JqKTtcclxuXHJcbiAgICAgICAgaWYgKG9iai5pc0xvZ2luKSB7XHJcbiAgICAgICAgICAgIC8vIOeZu+W9leivt+axglxyXG4gICAgICAgICAgICBsZXQgcyA9IFwiXCI7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBzID0gY29uZmlnLmNvZGVUb1Nlc3Npb24uc3VjY2VzcyEocmVzLmRhdGEpO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHMpIHtcclxuICAgICAgICAgICAgICAgIG9iai5zdWNjZXNzKHMpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZXJyb3JIYW5kbGVyKG9iaiwgcmVzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoY29uZmlnLmxvZ2luVHJpZ2dlciEocmVzLmRhdGEpICYmIG9iai5yZUxvZ2luTGltaXQgPCBjb25maWcucmVMb2dpbkxpbWl0ISkge1xyXG4gICAgICAgICAgICAvLyDnmbvlvZXmgIHlpLHmlYjvvIzkuJTph43or5XmrKHmlbDkuI3otoXov4fphY3nva5cclxuICAgICAgICAgICAgc3RhdHVzLnNlc3Npb24gPSAnJztcclxuICAgICAgICAgICAgc3RhdHVzLnNlc3Npb25Jc0ZyZXNoID0gdHJ1ZTtcclxuICAgICAgICAgICAgd3gucmVtb3ZlU3RvcmFnZSh7XHJcbiAgICAgICAgICAgICAgICBrZXk6IGNvbmZpZy5zZXNzaW9uTmFtZSEsXHJcbiAgICAgICAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3RIYW5kbGVyW21ldGhvZF0ob2JqKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH0gZWxzZSBpZiAoY29uZmlnLnN1Y2Nlc3NUcmlnZ2VyIShyZXMuZGF0YSkgJiYgdHlwZW9mIG9iai5zdWNjZXNzID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICAgICAgLy8g5o6l5Y+j6L+U5Zue5oiQ5Yqf56CBXHJcbiAgICAgICAgICAgIGxldCByZWFsRGF0YSA9IG51bGw7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICByZWFsRGF0YSA9IGNvbmZpZy5zdWNjZXNzRGF0YSEocmVzLmRhdGEpO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRnVuY3Rpb24gc3VjY2Vzc0RhdGEgb2NjdXIgZXJyb3I6IFwiICsgZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYoIW9iai5ub0NhY2hlRmxhc2gpIHtcclxuICAgICAgICAgICAgICAgIC8vIOWmguaenOS4uuS6huS/neivgemhtemdouS4jemXqueDge+8jOWImeS4jeWbnuiwg++8jOWPquaYr+e8k+WtmOacgOaWsOaVsOaNru+8jOW+heS4i+asoei/m+WFpeWGjeeUqFxyXG4gICAgICAgICAgICAgICAgb2JqLnN1Y2Nlc3MocmVhbERhdGEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIOe8k+WtmOWtmOWCqFxyXG4gICAgICAgICAgICBjYWNoZU1hbmFnZXIuc2V0KG9iaiwgcmVhbERhdGEpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIOaOpeWPo+i/lOWbnuWksei0peeggVxyXG4gICAgICAgICAgICBlcnJvckhhbmRsZXIob2JqLCByZXMpO1xyXG4gICAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZXJyb3JIYW5kbGVyKG9iaiwgcmVzKTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgcmVzcG9uc2U7XHJcbiJdfQ== +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzcG9uc2VIYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL21vZHVsZS9yZXNwb25zZUhhbmRsZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSwwQ0FBb0M7QUFDcEMsMENBQW9DO0FBQ3BDLG1EQUE2QztBQUM3QywrQ0FBeUM7QUFDekMsK0NBQXlDO0FBQ3pDLHVEQUFpRDtBQUVqRCxTQUFTLFFBQVEsQ0FBQyxHQUF5RSxFQUFFLEdBQVMsRUFBRSxNQUFnQztJQUNwSSxJQUFJLEdBQUcsQ0FBQyxVQUFVLEtBQUssR0FBRyxFQUFFO1FBR3hCLElBQUcsT0FBTyxHQUFHLENBQUMsSUFBSSxLQUFLLFFBQVEsRUFBRTtZQUM3QixJQUFJO2dCQUNBLEdBQUcsQ0FBQyxJQUFJLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7YUFDbkM7WUFBQyxPQUFPLENBQUMsRUFBRTtnQkFDUixzQkFBWSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztnQkFDdkIsT0FBTyxLQUFLLENBQUM7YUFDaEI7U0FDSjtRQUVELDBCQUFnQixDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUUxQixJQUFJLEdBQUcsQ0FBQyxPQUFPLEVBQUU7WUFFYixJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7WUFDWCxJQUFJO2dCQUNBLENBQUMsR0FBRyxnQkFBTSxDQUFDLGFBQWEsQ0FBQyxPQUFRLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQy9DO1lBQUMsT0FBTyxDQUFDLEVBQUU7YUFDWDtZQUNELElBQUksQ0FBQyxFQUFFO2dCQUNILEdBQUcsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7YUFDbEI7aUJBQU07Z0JBQ0gsc0JBQVksQ0FBQyxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUM7YUFDMUI7U0FDSjthQUFNLElBQUksZ0JBQU0sQ0FBQyxZQUFhLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxJQUFJLEdBQUcsQ0FBQyxZQUFZLEdBQUcsZ0JBQU0sQ0FBQyxZQUFhLEVBQUU7WUFFbEYsZ0JBQU0sQ0FBQyxPQUFPLEdBQUcsRUFBRSxDQUFDO1lBQ3BCLGdCQUFNLENBQUMsY0FBYyxHQUFHLElBQUksQ0FBQztZQUM3QixFQUFFLENBQUMsYUFBYSxDQUFDO2dCQUNiLEdBQUcsRUFBRSxnQkFBTSxDQUFDLFdBQVk7Z0JBQ3hCLFFBQVEsRUFBRTtvQkFDTix3QkFBYyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFBO2dCQUMvQixDQUFDO2FBQ0osQ0FBQyxDQUFBO1NBQ0w7YUFBTSxJQUFJLGdCQUFNLENBQUMsY0FBZSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUV6QyxJQUFJLFFBQVEsR0FBRyxJQUFJLENBQUM7WUFDcEIsSUFBSTtnQkFDQSxRQUFRLEdBQUcsZ0JBQU0sQ0FBQyxXQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDO2FBQzVDO1lBQUMsT0FBTyxDQUFDLEVBQUU7Z0JBQ1IsT0FBTyxDQUFDLEtBQUssQ0FBQyxvQ0FBb0MsR0FBRyxDQUFDLENBQUMsQ0FBQzthQUMzRDtZQUNELElBQUcsQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFO2dCQUVsQixPQUFPLEdBQUcsQ0FBQyxPQUFPLEtBQUssVUFBVSxJQUFJLEdBQUcsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7YUFDOUQ7WUFFRCxzQkFBWSxDQUFDLEdBQUcsQ0FBQyxHQUFHLEVBQUUsUUFBUSxDQUFDLENBQUM7U0FDbkM7YUFBTTtZQUVILHNCQUFZLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO1NBQzFCO0tBQ0o7U0FBTTtRQUNILHNCQUFZLENBQUMsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDO0tBQzFCO0FBQ0wsQ0FBQztBQUVELGtCQUFlLFFBQVEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBjb25maWcgZnJvbSAnLi4vc3RvcmUvY29uZmlnJ1xyXG5pbXBvcnQgc3RhdHVzIGZyb20gJy4uL3N0b3JlL3N0YXR1cydcclxuaW1wb3J0IHJlcXVlc3RIYW5kbGVyIGZyb20gJy4vcmVxdWVzdEhhbmRsZXInXHJcbmltcG9ydCBlcnJvckhhbmRsZXIgZnJvbSAnLi9lcnJvckhhbmRsZXInXHJcbmltcG9ydCBjYWNoZU1hbmFnZXIgZnJvbSAnLi9jYWNoZU1hbmFnZXInXHJcbmltcG9ydCBkdXJhdGlvblJlcG9ydGVyIGZyb20gJy4vZHVyYXRpb25SZXBvcnRlcidcclxuXHJcbmZ1bmN0aW9uIHJlc3BvbnNlKHJlczogd3guUmVxdWVzdFN1Y2Nlc3NDYWxsYmFja1Jlc3VsdCB8IHd4LlVwbG9hZEZpbGVTdWNjZXNzQ2FsbGJhY2tSZXN1bHQsIG9iajogVE9ETywgbWV0aG9kOiBcInJlcXVlc3RcIiB8IFwidXBsb2FkRmlsZVwiKTogYW55IHtcclxuICAgIGlmIChyZXMuc3RhdHVzQ29kZSA9PT0gMjAwKSB7XHJcblxyXG4gICAgICAgIC8vIOWFvOWuuXVwbG9hZEZpbGXov5Tlm57nmoRyZXMuZGF0YeWPr+iDveaYr+Wtl+espuS4slxyXG4gICAgICAgIGlmKHR5cGVvZiByZXMuZGF0YSA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgcmVzLmRhdGEgPSBKU09OLnBhcnNlKHJlcy5kYXRhKTtcclxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgZXJyb3JIYW5kbGVyKG9iaiwgcmVzKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgZHVyYXRpb25SZXBvcnRlci5lbmQob2JqKTtcclxuXHJcbiAgICAgICAgaWYgKG9iai5pc0xvZ2luKSB7XHJcbiAgICAgICAgICAgIC8vIOeZu+W9leivt+axglxyXG4gICAgICAgICAgICBsZXQgcyA9IFwiXCI7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBzID0gY29uZmlnLmNvZGVUb1Nlc3Npb24uc3VjY2VzcyEocmVzLmRhdGEpO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHMpIHtcclxuICAgICAgICAgICAgICAgIG9iai5zdWNjZXNzKHMpO1xyXG4gICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZXJyb3JIYW5kbGVyKG9iaiwgcmVzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0gZWxzZSBpZiAoY29uZmlnLmxvZ2luVHJpZ2dlciEocmVzLmRhdGEpICYmIG9iai5yZUxvZ2luTGltaXQgPCBjb25maWcucmVMb2dpbkxpbWl0ISkge1xyXG4gICAgICAgICAgICAvLyDnmbvlvZXmgIHlpLHmlYjvvIzkuJTph43or5XmrKHmlbDkuI3otoXov4fphY3nva5cclxuICAgICAgICAgICAgc3RhdHVzLnNlc3Npb24gPSAnJztcclxuICAgICAgICAgICAgc3RhdHVzLnNlc3Npb25Jc0ZyZXNoID0gdHJ1ZTtcclxuICAgICAgICAgICAgd3gucmVtb3ZlU3RvcmFnZSh7XHJcbiAgICAgICAgICAgICAgICBrZXk6IGNvbmZpZy5zZXNzaW9uTmFtZSEsXHJcbiAgICAgICAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlcXVlc3RIYW5kbGVyW21ldGhvZF0ob2JqKVxyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgIH0gZWxzZSBpZiAoY29uZmlnLnN1Y2Nlc3NUcmlnZ2VyIShyZXMuZGF0YSkpIHtcclxuICAgICAgICAgICAgLy8g5o6l5Y+j6L+U5Zue5oiQ5Yqf56CBXHJcbiAgICAgICAgICAgIGxldCByZWFsRGF0YSA9IG51bGw7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICByZWFsRGF0YSA9IGNvbmZpZy5zdWNjZXNzRGF0YSEocmVzLmRhdGEpO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRnVuY3Rpb24gc3VjY2Vzc0RhdGEgb2NjdXIgZXJyb3I6IFwiICsgZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYoIW9iai5ub0NhY2hlRmxhc2gpIHtcclxuICAgICAgICAgICAgICAgIC8vIOWmguaenOS4uuS6huS/neivgemhtemdouS4jemXqueDge+8jOWImeS4jeWbnuiwg++8jOWPquaYr+e8k+WtmOacgOaWsOaVsOaNru+8jOW+heS4i+asoei/m+WFpeWGjeeUqFxyXG4gICAgICAgICAgICAgICAgdHlwZW9mIG9iai5zdWNjZXNzID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLnN1Y2Nlc3MocmVhbERhdGEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIC8vIOe8k+WtmOWtmOWCqFxyXG4gICAgICAgICAgICBjYWNoZU1hbmFnZXIuc2V0KG9iaiwgcmVhbERhdGEpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIC8vIOaOpeWPo+i/lOWbnuWksei0peeggVxyXG4gICAgICAgICAgICBlcnJvckhhbmRsZXIob2JqLCByZXMpO1xyXG4gICAgICAgIH1cclxuICAgIH0gZWxzZSB7XHJcbiAgICAgICAgZXJyb3JIYW5kbGVyKG9iaiwgcmVzKTtcclxuICAgIH1cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQgcmVzcG9uc2U7XHJcbiJdfQ== /***/ }), @@ -991,7 +985,56 @@ exports.default = { }; //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9hZGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2xvYWRpbmcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxTQUFTLElBQUksQ0FBQyxHQUFxQjtJQUMvQixFQUFFLENBQUMsU0FBUyxDQUFDO1FBQ1QsS0FBSyxFQUFFLE9BQU8sR0FBRyxLQUFLLFNBQVMsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHO1FBQzdDLElBQUksRUFBRSxTQUFTO1FBQ2YsSUFBSSxFQUFFLElBQUk7UUFDVixRQUFRLEVBQUUsS0FBSztLQUNsQixDQUFDLENBQUE7QUFDTixDQUFDO0FBRUQsU0FBUyxJQUFJO0lBQ1QsRUFBRSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztBQUNyQixDQUFDO0FBRUQsa0JBQWU7SUFDWCxJQUFJLE1BQUE7SUFDSixJQUFJLE1BQUE7Q0FDUCxDQUFBIiwic291cmNlc0NvbnRlbnQiOlsiZnVuY3Rpb24gc2hvdyh0eHQ6IGJvb2xlYW4gfCBzdHJpbmcpIHtcclxuICAgIHd4LnNob3dUb2FzdCh7XHJcbiAgICAgICAgdGl0bGU6IHR5cGVvZiB0eHQgPT09ICdib29sZWFuJyA/ICfliqDovb3kuK0nIDogdHh0LFxyXG4gICAgICAgIGljb246ICdsb2FkaW5nJyxcclxuICAgICAgICBtYXNrOiB0cnVlLFxyXG4gICAgICAgIGR1cmF0aW9uOiA2MDAwMFxyXG4gICAgfSlcclxufVxyXG5cclxuZnVuY3Rpb24gaGlkZSgpIHtcclxuICAgIHd4LmhpZGVUb2FzdCh7fSk7XHJcbn1cclxuXHJcbmV4cG9ydCBkZWZhdWx0IHtcclxuICAgIHNob3csXHJcbiAgICBoaWRlXHJcbn1cclxuIl19 +/***/ }), + +/***/ "./src/util/url.ts": +/*!*************************!*\ + !*** ./src/util/url.ts ***! + \*************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var __assign = (this && this.__assign) || function () { + __assign = Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; + }; + return __assign.apply(this, arguments); +}; +Object.defineProperty(exports, "__esModule", { value: true }); +function setParams(url, params) { + var queryStringIndex = url.indexOf('?'); + var kvp = {}; + if (queryStringIndex >= 0) { + var oldQueryString = url.substr(queryStringIndex + 1).split('&'); + for (var i = 0; i < oldQueryString.length; i++) { + var kv = oldQueryString[i].split('='); + kvp[kv[0]] = kv[1]; + } + } + kvp = __assign({}, kvp, params); + var queryString = Object.keys(kvp).map(function (key) { + return key + "=" + encodeURI(kvp[key]); + }).join('&'); + if (queryStringIndex >= 0) { + return url.substring(0, queryStringIndex + 1) + queryString; + } + else { + return url + "?" + queryString; + } +} +exports.default = { + setParams: setParams +}; +//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXJsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWwvdXJsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7QUFBQSxTQUFTLFNBQVMsQ0FBQyxHQUFXLEVBQUUsTUFBYztJQUMxQyxJQUFJLGdCQUFnQixHQUFHLEdBQUcsQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDeEMsSUFBSSxHQUFHLEdBQVEsRUFBRSxDQUFDO0lBQ2xCLElBQUksZ0JBQWdCLElBQUksQ0FBQyxFQUFFO1FBQ3ZCLElBQUksY0FBYyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsZ0JBQWdCLEdBQUcsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ2pFLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxjQUFjLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFO1lBQzVDLElBQUksRUFBRSxHQUFHLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDdEMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQTtTQUNyQjtLQUNKO0lBRUQsR0FBRyxnQkFBTyxHQUFHLEVBQUssTUFBTSxDQUFDLENBQUM7SUFFMUIsSUFBSSxXQUFXLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsVUFBQSxHQUFHO1FBQ3RDLE9BQVUsR0FBRyxTQUFJLFNBQVMsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUcsQ0FBQTtJQUMxQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFFYixJQUFJLGdCQUFnQixJQUFJLENBQUMsRUFBRTtRQUN2QixPQUFPLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLGdCQUFnQixHQUFHLENBQUMsQ0FBQyxHQUFHLFdBQVcsQ0FBQTtLQUM5RDtTQUFNO1FBQ0gsT0FBTyxHQUFHLEdBQUcsR0FBRyxHQUFHLFdBQVcsQ0FBQTtLQUNqQztBQUVMLENBQUM7QUFFRCxrQkFBZTtJQUNYLFNBQVMsV0FBQTtDQUNaLENBQUEiLCJzb3VyY2VzQ29udGVudCI6WyJmdW5jdGlvbiBzZXRQYXJhbXModXJsOiBzdHJpbmcsIHBhcmFtczogb2JqZWN0KSB7XHJcbiAgICBsZXQgcXVlcnlTdHJpbmdJbmRleCA9IHVybC5pbmRleE9mKCc/Jyk7XHJcbiAgICBsZXQga3ZwOiBhbnkgPSB7fTtcclxuICAgIGlmIChxdWVyeVN0cmluZ0luZGV4ID49IDApIHtcclxuICAgICAgICBsZXQgb2xkUXVlcnlTdHJpbmcgPSB1cmwuc3Vic3RyKHF1ZXJ5U3RyaW5nSW5kZXggKyAxKS5zcGxpdCgnJicpO1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgb2xkUXVlcnlTdHJpbmcubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgbGV0IGt2ID0gb2xkUXVlcnlTdHJpbmdbaV0uc3BsaXQoJz0nKTtcclxuICAgICAgICAgICAga3ZwW2t2WzBdXSA9IGt2WzFdXHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGt2cCA9IHsuLi5rdnAsIC4uLnBhcmFtc307XHJcblxyXG4gICAgbGV0IHF1ZXJ5U3RyaW5nID0gT2JqZWN0LmtleXMoa3ZwKS5tYXAoa2V5ID0+IHtcclxuICAgICAgICByZXR1cm4gYCR7a2V5fT0ke2VuY29kZVVSSShrdnBba2V5XSl9YFxyXG4gICAgfSkuam9pbignJicpO1xyXG5cclxuICAgIGlmIChxdWVyeVN0cmluZ0luZGV4ID49IDApIHtcclxuICAgICAgICByZXR1cm4gdXJsLnN1YnN0cmluZygwLCBxdWVyeVN0cmluZ0luZGV4ICsgMSkgKyBxdWVyeVN0cmluZ1xyXG4gICAgfSBlbHNlIHtcclxuICAgICAgICByZXR1cm4gdXJsICsgXCI/XCIgKyBxdWVyeVN0cmluZ1xyXG4gICAgfVxyXG5cclxufVxyXG5cclxuZXhwb3J0IGRlZmF1bHQge1xyXG4gICAgc2V0UGFyYW1zXHJcbn1cclxuIl19 + /***/ }) /******/ }); -//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly93ZVJlcXVlc3Qvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vd2VSZXF1ZXN0Ly4vc3JjL2FwaS9nZXRDb25maWcudHMiLCJ3ZWJwYWNrOi8vd2VSZXF1ZXN0Ly4vc3JjL2FwaS9nZXRTZXNzaW9uLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy9hcGkvaW5pdC50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvYXBpL2xvZ2luLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy9hcGkvcmVxdWVzdC50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvYXBpL3NldFNlc3Npb24udHMiLCJ3ZWJwYWNrOi8vd2VSZXF1ZXN0Ly4vc3JjL2FwaS91cGxvYWRGaWxlLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy9pbmRleC50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvbW9kdWxlL2NhY2hlTWFuYWdlci50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvbW9kdWxlL2R1cmF0aW9uUmVwb3J0ZXIudHMiLCJ3ZWJwYWNrOi8vd2VSZXF1ZXN0Ly4vc3JjL21vZHVsZS9lcnJvckhhbmRsZXIudHMiLCJ3ZWJwYWNrOi8vd2VSZXF1ZXN0Ly4vc3JjL21vZHVsZS9tb2NrTWFuYWdlci50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvbW9kdWxlL3JlcXVlc3RIYW5kbGVyLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy9tb2R1bGUvcmVzcG9uc2VIYW5kbGVyLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy9tb2R1bGUvc2Vzc2lvbk1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vd2VSZXF1ZXN0Ly4vc3JjL3N0b3JlL2NvbmZpZy50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvc3RvcmUvc3RhdHVzLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy91dGlsL2Zsb3cu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QUNMO0FBQ0E7QUFDQSwyQ0FBMkMsdWlZOzs7Ozs7Ozs7Ozs7QUNqSTlCO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0wscUJBQXFCO0FBQ3JCO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsS0FBSztBQUNMO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsbXdEOzs7Ozs7Ozs7Ozs7QUM1QjlCO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQ7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLDJDQUEyQywrZ0M7Ozs7Ozs7Ozs7OztBQ1Y5QjtBQUNiLDhDQUE4QyxjQUFjO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsbUJBQW1CLG1CQUFtQjtBQUN0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDLHUvRDs7Ozs7Ozs7Ozs7O0FDM0I5QjtBQUNiLDhDQUE4QyxjQUFjO0FBQzVEO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEtBQUs7QUFDTDtBQUNBO0FBQ0EsbUJBQW1CO0FBQ25CO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSwyQ0FBMkMsK2lDIiwiZmlsZSI6IndlUmVxdWVzdC5qcyIsInNvdXJjZXNDb250ZW50IjpbIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbiBcdFx0fVxuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuIFx0fTtcblxuIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4gXHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbiBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4gXHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbiBcdFx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcbiBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcbiBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4gXHRcdHJldHVybiBucztcbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSBcIi4vc3JjL2luZGV4LnRzXCIpO1xuIiwiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxudmFyIGNvbmZpZ18xID0gcmVxdWlyZShcIi4uL3N0b3JlL2NvbmZpZ1wiKTtcclxudmFyIHN0YXR1c18xID0gcmVxdWlyZShcIi4uL3N0b3JlL3N0YXR1c1wiKTtcclxuZXhwb3J0cy5kZWZhdWx0ID0gKGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciBjb25maWdSZXN1bHQgPSB7XHJcbiAgICAgICAgdXJsUGVyZml4OiBjb25maWdfMS5kZWZhdWx0LnVybFBlcmZpeCxcclxuICAgICAgICBzZXNzaW9uRXhwaXJlVGltZTogc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uRXhwaXJlVGltZSxcclxuICAgICAgICBzZXNzaW9uRXhwaXJlS2V5OiBjb25maWdfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmVLZXksXHJcbiAgICAgICAgc2Vzc2lvbkV4cGlyZTogc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uRXhwaXJlXHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIGNvbmZpZ1Jlc3VsdDtcclxufSk7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVoyVjBRMjl1Wm1sbkxtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpTGk0dkxpNHZjM0pqTDJGd2FTOW5aWFJEYjI1bWFXY3VkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanM3UVVGQlFTd3dRMEZCYjBNN1FVRkRjRU1zTUVOQlFXOURPMEZCWVhCRExHMUNRVUZsTzBsQlExZ3NTVUZCVFN4WlFVRlpMRWRCUVhGQ08xRkJRMjVETEZOQlFWTXNSVUZCUlN4blFrRkJUU3hEUVVGRExGTkJRVk03VVVGRE0wSXNhVUpCUVdsQ0xFVkJRVVVzWjBKQlFVMHNRMEZCUXl4cFFrRkJhVUk3VVVGRE0wTXNaMEpCUVdkQ0xFVkJRVVVzWjBKQlFVMHNRMEZCUXl4blFrRkJaMEk3VVVGRGVrTXNZVUZCWVN4RlFVRkZMR2RDUVVGTkxFTkJRVU1zWVVGQllUdExRVU4wUXl4RFFVRkJPMGxCUTBRc1QwRkJUeXhaUVVGWkxFTkJRVU03UVVGRGVFSXNRMEZCUXl4RlFVRkRJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJR052Ym1acFp5Qm1jbTl0SUNjdUxpOXpkRzl5WlM5amIyNW1hV2NuWEhKY2JtbHRjRzl5ZENCemRHRjBkWE1nWm5KdmJTQW5MaTR2YzNSdmNtVXZjM1JoZEhWekoxeHlYRzVjY2x4dVpYaHdiM0owSUdsdWRHVnlabUZqWlNCSlIyVjBRMjl1Wm1sblVtVnpkV3gwZTF4eVhHNGdJQ0FnTHlvZzVaeW81N3VFNUx1MjVZaWQ1YWVMNVl5VzVwZTI1THlnNVlXbDU1cUU2SyszNXJHQ1ZWSk01NXFFNVp1NjVhNmE1WW1ONTd5QUlDb3ZYSEpjYmlBZ0lDQjFjbXhRWlhKbWFYZy9PaUJ6ZEhKcGJtY2dmQ0FvS0NrZ1BUNGdjM1J5YVc1bktUdGNjbHh1SUNBZ0lDOHFJT1djcU9lN2hPUzd0dVdJbmVXbmkrV01sdWFYdHVTOG9PV0ZwZWVhaE9lVXFPYUl0K2VadSttWmh1YUFnZWl1dnVlOXJ1YWNyT1djc09lOGsrV3RtT2FYdHVtWHRDQXFMMXh5WEc0Z0lDQWdjMlZ6YzJsdmJrVjRjR2x5WlZScGJXVS9PaUJ1ZFcxaVpYSTdYSEpjYmlBZ0lDQXZLaURsbktqbnU0VGt1N2JsaUozbHA0dmxqSmJtbDdia3ZLRGxoYVhubW9UbmxLam1pTGZubWJ2cG1ZYm1nSUhtbkt6bG5MRG52SlBsclpqbWw3YnBsN1JUZEc5eVlXZGw1NXFFYTJWNUlDb3ZYSEpjYmlBZ0lDQnpaWE56YVc5dVJYaHdhWEpsUzJWNVB6b2djM1J5YVc1bk8xeHlYRzRnSUNBZ0x5b2c1NVNvNW9pMzU1bTc2Wm1HNW9DQjVweXM1Wnl3NTd5VDVhMlk2TCtINXB5ZjU1cUU1cGUyNlplMDVvaXpJQ292WEhKY2JpQWdJQ0J6WlhOemFXOXVSWGh3YVhKbFB6b2diblZ0WW1WeU8xeHlYRzRnSUgxY2NseHVYSEpjYm1WNGNHOXlkQ0JrWldaaGRXeDBJQ2dwSUQwK0lIdGNjbHh1SUNBZ0lHTnZibk4wSUdOdmJtWnBaMUpsYzNWc2RDQTZTVWRsZEVOdmJtWnBaMUpsYzNWc2RDQTlJSHRjY2x4dUlDQWdJQ0FnSUNCMWNteFFaWEptYVhnNklHTnZibVpwWnk1MWNteFFaWEptYVhnc1hISmNiaUFnSUNBZ0lDQWdjMlZ6YzJsdmJrVjRjR2x5WlZScGJXVTZJSE4wWVhSMWN5NXpaWE56YVc5dVJYaHdhWEpsVkdsdFpTeGNjbHh1SUNBZ0lDQWdJQ0J6WlhOemFXOXVSWGh3YVhKbFMyVjVPaUJqYjI1bWFXY3VjMlZ6YzJsdmJrVjRjR2x5WlV0bGVTeGNjbHh1SUNBZ0lDQWdJQ0J6WlhOemFXOXVSWGh3YVhKbE9pQnpkR0YwZFhNdWMyVnpjMmx2YmtWNGNHbHlaVnh5WEc0Z0lDQWdmVnh5WEc0Z0lDQWdjbVYwZFhKdUlHTnZibVpwWjFKbGMzVnNkRHRjY2x4dWZUdGNjbHh1SWwxOSIsIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbnZhciBzdGF0dXNfMSA9IHJlcXVpcmUoXCIuLi9zdG9yZS9zdGF0dXNcIik7XHJcbmV4cG9ydHMuZGVmYXVsdCA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICByZXR1cm4gc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uO1xyXG59KTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pWjJWMFUyVnpjMmx2Ymk1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUwzTnlZeTloY0drdloyVjBVMlZ6YzJsdmJpNTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenRCUVVGQkxEQkRRVUZ2UXp0QlFVVndReXh0UWtGQlpUdEpRVU5ZTEU5QlFVOHNaMEpCUVUwc1EwRkJReXhQUVVGUExFTkJRVUU3UVVGRGVrSXNRMEZCUXl4RlFVRkJJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJSE4wWVhSMWN5Qm1jbTl0SUNjdUxpOXpkRzl5WlM5emRHRjBkWE1uWEhKY2JseHlYRzVsZUhCdmNuUWdaR1ZtWVhWc2RDQW9LU0E5UGlCN1hISmNiaUFnSUNCeVpYUjFjbTRnYzNSaGRIVnpMbk5sYzNOcGIyNWNjbHh1ZlZ4eVhHNGlYWDA9IiwiXCJ1c2Ugc3RyaWN0XCI7XHJcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcclxuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XHJcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XHJcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcclxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdDtcclxuICAgIH07XHJcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxufTtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG52YXIgY29uZmlnXzEgPSByZXF1aXJlKFwiLi4vc3RvcmUvY29uZmlnXCIpO1xyXG52YXIgc3RhdHVzXzEgPSByZXF1aXJlKFwiLi4vc3RvcmUvc3RhdHVzXCIpO1xyXG5leHBvcnRzLmRlZmF1bHQgPSAoZnVuY3Rpb24gKHBhcmFtcykge1xyXG4gICAgdmFyIGNvbmZpZyA9IF9fYXNzaWduKHt9LCBwYXJhbXMsIGNvbmZpZ18xLmRlZmF1bHQpO1xyXG4gICAgaWYgKHBhcmFtcy5zZXNzaW9uTmFtZSkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbiA9IHd4LmdldFN0b3JhZ2VTeW5jKGNvbmZpZy5zZXNzaW9uTmFtZSkgfHwgJyc7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ3d4LmdldFN0b3JhZ2VTeW5jOmZhaWwsIGNhbiBub3QgZ2V0IHNlc3Npb24uJyk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgaWYgKHBhcmFtcy5zZXNzaW9uRXhwaXJlS2V5KSB7XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uRXhwaXJlID0gd3guZ2V0U3RvcmFnZVN5bmMoY29uZmlnLnNlc3Npb25FeHBpcmVLZXkpIHx8IEluZmluaXR5O1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCd3eC5nZXRTdG9yYWdlU3luYzpmYWlsLCBjYW4gbm90IGdldCBzZXNzaW9uRXhwaXJlLicpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufSk7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWFXNXBkQzVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYklpNHVMeTR1TDNOeVl5OWhjR2t2YVc1cGRDNTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenM3T3pzN096czdPenM3TzBGQlFVRXNNRU5CUVRKRE8wRkJRek5ETERCRFFVRnZRenRCUVhGRmNFTXNiVUpCUVdVc1ZVRkJReXhOUVVGdFFqdEpRVU12UWl4SlFVRk5MRTFCUVUwc1owSkJRVzlDTEUxQlFVMHNSVUZCU3l4blFrRkJZU3hEUVVGRExFTkJRVUU3U1VGRmVrUXNTVUZCU1N4TlFVRk5MRU5CUVVNc1YwRkJWeXhGUVVGRk8xRkJRM0JDTEVsQlFVazdXVUZEUVN4blFrRkJUU3hEUVVGRExFOUJRVThzUjBGQlJ5eEZRVUZGTEVOQlFVTXNZMEZCWXl4RFFVRkRMRTFCUVUwc1EwRkJReXhYUVVGWkxFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTTdVMEZEYWtVN1VVRkJReXhQUVVGUExFTkJRVU1zUlVGQlJUdFpRVU5TTEU5QlFVOHNRMEZCUXl4TFFVRkxMRU5CUVVNc09FTkJRVGhETEVOQlFVTXNRMEZCUVR0VFFVTm9SVHRMUVVOS08wbEJSVVFzU1VGQlNTeE5RVUZOTEVOQlFVTXNaMEpCUVdkQ0xFVkJRVVU3VVVGRGVrSXNTVUZCU1R0WlFVTkJMR2RDUVVGTkxFTkJRVU1zWVVGQllTeEhRVUZITEVWQlFVVXNRMEZCUXl4alFVRmpMRU5CUVVNc1RVRkJUU3hEUVVGRExHZENRVUZuUWl4RFFVRkRMRWxCUVVrc1VVRkJVU3hEUVVGRE8xTkJRMnBHTzFGQlFVTXNUMEZCVHl4RFFVRkRMRVZCUVVVN1dVRkRVaXhQUVVGUExFTkJRVU1zUzBGQlN5eERRVUZETEc5RVFVRnZSQ3hEUVVGRExFTkJRVUU3VTBGRGRFVTdTMEZEU2p0QlFVTk1MRU5CUVVNc1JVRkJRU0lzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0JrWldaaGRXeDBRMjl1Wm1sbklHWnliMjBnSnk0dUwzTjBiM0psTDJOdmJtWnBaeWRjY2x4dWFXMXdiM0owSUhOMFlYUjFjeUJtY205dElDY3VMaTl6ZEc5eVpTOXpkR0YwZFhNblhISmNibHh5WEc1bGVIQnZjblFnYVc1MFpYSm1ZV05sSUVsSmJtbDBUM0IwYVc5dUlIdGNjbHh1SUNBZ0lDOHFJT2VVcUdOdlpHWG1qYUxsajVaelpYTnphVzl1NTVxRVEwZEo2WVdONTcydUlDb3ZYSEpjYmlBZ0lDQmpiMlJsVkc5VFpYTnphVzl1T2lCSlEyOWtaVlJ2VTJWemMybHZiazl3ZEdsdmJuTTdYSEpjYmlBZ0lDQXZLaURsZ3FqbHJaamxuS2hzYjJOaGJGTjBiM0poWjJYbm1vUnpaWE56YVc5dTVaQ041NmV3Nzd5TTVMaVVRMGRKNksrMzVyR0M1NXFFWkdGMFllUzRyZVM4bXVpSHF1V0txT1c0cHVTNGl1UzdwZWF0cE9TNHV1V1FqZWVuc09lYWhITmxjM05wYjI3bGdMenZ2SnZsajYva3VJM3BoWTNudmE3dnZJenB1NWpvcnFUa3VMcHpaWE56YVc5dUlDb3ZYSEpjYmlBZ0lDQnpaWE56YVc5dVRtRnRaVDg2SUhOMGNtbHVaenRjY2x4dUlDQWdJQzhxSU9pdnQrYXhnbFZTVE9lYWhPV2J1dVd1bXVXSmplZThnTys4ak9XbWd1YWVuT21GamVlOXJ1UzZodSs4ak9XUWp1ZTdyZWl2dCtheGd1ZWFoRlZTVE9tRHZlUzhtdWlIcXVXS3FPV0tvT1M0aXVpL21lUzRxdVdKamVlOGdPKzhqT1dtZ3VhZW5PYVlyK1dIdmVhVnNPKzhqT1dJbWVTNHV1V0h2ZWFWc09lYWhPaS9sT1dibnVXQXZDQXFMMXh5WEc0Z0lDQWdkWEpzVUdWeVptbDRQem9nYzNSeWFXNW5JSHdnS0NncElEMCtJSE4wY21sdVp5azdYSEpjYmlBZ0lDQXZLaURtbUsvbGtLYnBuSURvcG9Ib3NJUG5sS2hqYUdWamExTmxjM05wYjI3dnZJenBxb3pvcjRIbHNJL25xSXZsdW8vbm1vVG5tYnZsdlpYbWdJSG92NGZtbkovdnZKdm9pNlhrdUpybGlxSGt1STNwbklEb3BvSGt2Yi9ubEtqbGlMQnpaWE56YVc5dVgydGxlZSs4ak9XSW1lV1ByK21GamVlOXJ1UzR1blJ5ZFdVZ0tpOWNjbHh1SUNBZ0lHUnZUbTkwUTJobFkydFRaWE56YVc5dVB6b2dZbTl2YkdWaGJqdGNjbHh1SUNBZ0lDOHFJT2VadStXOWxlbUhqZWl2bGVhc29lYVZzTys4ak9XOWsraS9udWU3cmVpdnQrYXhndWVadStXOWxlYU9wZVdQbytpL2xPV2JudVdrc2VpMHBlYXNvZWFWc09pMmhlaS9oK2kvbWVTNHF1YXNvZWFWc08rOGpPV3dodVM0amVXR2plbUhqZWl2bGVlWnUrVzlsU0FxTDF4eVhHNGdJQ0FnY21WTWIyZHBia3hwYldsMFB6b2diblZ0WW1WeU8xeHlYRzRnSUNBZ0x5b2c1YjJUNVllNjU0Nnc1bzZsNVkrajZZQzc2TDZSNlpTWjZLK3Y1cGUyNzd5TTVMeWE1b21uNktHTTU3dWY1TGlBNTVxRTVadWU2TENENVllOTVwV3c3N3lNNkwrWjZZZU01WSt2NUx1bDVZR2E1N3VmNUxpQTU1cUU2WlNaNksrdjVMaUs1b3FsNTYySjVhU0U1NUNHSUNvdlhISmNiaUFnSUNCbGNuSnZja05oYkd4aVlXTnJQem9nYm5Wc2JDQjhJRVoxYm1OMGFXOXVPMXh5WEc0Z0lDQWdMeW9nNW82bDVZK2o2TCtVNVp1ZTVvaVE1WXFmNUxtTDVaQ083N3lNNUx5YTVvbW42S0dNNTd1ZjVMaUE1NXFFNVp1ZTZMQ0Q1WWU5NXBXdzc3eU02TCtaNlllTTVZK3Y1THVsNVlHYTU3dWY1TGlBNTVxRTZJQ1g1cGUyNUxpSzVvcWw1NjJKNWFTRTU1Q0dJQ292WEhKY2JpQWdJQ0J5WlhCdmNuUkRSMGsvT2lCaWIyOXNaV0Z1SUh3Z0tDaGNjbHh1SUNBZ0lDQWdMeW9nNkxDRDU1U281NXFFNW82bDVZK2o1WkNONWEyWDc3eU01WSt2NVp5b2NtVnhkV1Z6ZE9hT3BlV1BvK2VhaEhKbGNHOXlkT1d0bCthdXRlbUZqZWU5cmlBcUwxeHlYRzRnSUNBZ0lDQnVZVzFsT2lCemRISnBibWNzWEhKY2JpQWdJQ0FnSUM4cUlPV1BrZWkxdCtpdnQrYXhndWFYdHVlYWhPYVh0dW1YdE9hSXN5QXFMMXh5WEc0Z0lDQWdJQ0J6ZEdGeWRGUnBiV1U2SUc1MWJXSmxjaXhjY2x4dUlDQWdJQ0FnTHlvZzZLKzM1ckdDNkwrVTVadWU1cGUyNTVxRTVwZTI2WmUwNW9peklDb3ZYSEpjYmlBZ0lDQWdJR1Z1WkZScGJXVTZJRzUxYldKbGNpeGNjbHh1SUNBZ0lDQWdMeW9nNksrMzVyR0M1cGE1NXJPVjc3eU01WSt2NTVTbzVMcU81TGlLNW9xbElDb3ZYSEpjYmlBZ0lDQWdJSEpsY1hWbGMzUS9PaUFvS1NBOVBpQjJiMmxrWEhKY2JpQWdJQ0FwSUQwK0lIWnZhV1FwTzF4eVhHNGdJQ0FnTHlvZ1hIVGxqNi9rdUxybWpxWGxqNlBtajVEa3ZwdHRiMk5yNXBXdzVvMnVJQ292WEhKY2JpQWdJQ0J0YjJOclNuTnZiajg2SUZSUFJFODdYSEpjYmlBZ0lDQXZLaW9nNW9tQTVweUo2SyszNXJHQzZZTzk1THlhNkllcTVZcW81YmltNUxpSzZMK1o2WWVNNTVxRTVZK0M1cFd3SUNvdlhISmNiaUFnSUNCbmJHOWlZV3hFWVhSaFB6b2dZbTl2YkdWaGJpQjhJRzlpYW1WamRDQjhJRVoxYm1OMGFXOXVPMXh5WEc0Z0lDQWdMeW9xSUhObGMzTnBiMjdsbktqbW5LemxuTERudkpQbHJaam5tb1JyWlhrZ0tpOWNjbHh1SUNBZ0lITmxjM05wYjI1RmVIQnBjbVZMWlhrNklITjBjbWx1Wnp0Y2NseHVJQ0FnSUM4cUlPaW5wdVdQa2VtSGplYVdzT2VadStXOWxlZWFoT2Fkb2VTN3R1KzhtK1dQZ3VhVnNPUzR1a05IU2VpL2xPV2JudWVhaE9hVnNPYU5ydSs4ak9pL2xPV2JudW1jZ09pbWdlbUhqZWFXc09lWnUrVzlsZWVhaE9hZG9lUzd0aUFxTDF4eVhHNGdJQ0FnYkc5bmFXNVVjbWxuWjJWeVB6b2dLSEpsY3pvZ2MzUnlhVzVuSUh3Z1NVRnVlVTlpYW1WamRDQjhJRUZ5Y21GNVFuVm1abVZ5S1NBOVBpQmliMjlzWldGdU8xeHlYRzRnSUNBZ0x5b2c2S2VtNVkrUjZLKzM1ckdDNW9pUTVZcWY1NXFFNXAyaDVMdTI3N3liNVkrQzVwV3c1TGk2UTBkSjZMK1U1WnVlNTVxRTVwV3c1bzJ1Nzd5TTZMK1U1WnVlNW82bDVZK2o2WUM3Nkw2UjVvaVE1WXFmNTVxRTVwMmg1THUySUNvdlhISmNiaUFnSUNCemRXTmpaWE56VkhKcFoyZGxjajg2SUNoeVpYTTZJSE4wY21sdVp5QjhJRWxCYm5sUFltcGxZM1FnZkNCQmNuSmhlVUoxWm1abGNpa2dQVDRnWW05dmJHVmhianRjY2x4dUlDQWdJQzhxSU9hSWtPV0tuK1M1aStXUWp1aS9sT1dibnVhVnNPYU5ydSs4bStXUGd1YVZzT1M0dWtOSFNlaS9sT1dibnVlYWhPYVZzT2FOcnUrOGpPaS9sT1dibnVtQXUraStrZW1jZ09pbWdlUzl2K2VVcU9lYWhPYVZzT2FOcmlBcUwxeHlYRzRnSUNBZ2MzVmpZMlZ6YzBSaGRHRS9PaUFvY21Wek9pQnpkSEpwYm1jZ2ZDQkpRVzU1VDJKcVpXTjBJSHdnUVhKeVlYbENkV1ptWlhJcElEMCtJR0p2YjJ4bFlXNDdYSEpjYmlBZ0lDQXZLaUJjZE9hT3BlV1BvK21BdStpK2tlV2tzZWkwcGVhWHR1KzhqT21VbWVpdnIrVzh1ZWVxbCtlYWhPYWdoK21pbUNBcUwxeHlYRzRnSUNBZ1pYSnliM0pVYVhSc1pUODZJSE4wY21sdVp5QjhJQ2dvY21Wek9pQnpkSEpwYm1jZ2ZDQkpRVzU1VDJKcVpXTjBJSHdnUVhKeVlYbENkV1ptWlhJcElEMCtJSE4wY21sdVp5azdYSEpjYmlBZ0lDQXZLaURtanFYbGo2UHBnTHZvdnBIbHBMSG90S1htbDdidnZJenBsSm5vcjYvbHZMbm5xcGZubW9UbGhvWGxycmtnS2k5Y2NseHVJQ0FnSUdWeWNtOXlRMjl1ZEdWdWREODZJSE4wY21sdVp5QjhJQ2dvY21Wek9pQnpkSEpwYm1jZ2ZDQkpRVzU1VDJKcVpXTjBJSHdnUVhKeVlYbENkV1ptWlhJcElEMCtJSE4wY21sdVp5azdYSEpjYmlBZ2ZWeHlYRzVjY2x4dUlDQmxlSEJ2Y25RZ2FXNTBaWEptWVdObElFbERiMlJsVkc5VFpYTnphVzl1VDNCMGFXOXVjM3RjY2x4dUlDQWdJQzhxSUVOSFNlZWFoSFZ5YkNBcUwxeHlYRzRnSUNBZ2RYSnNQem9nYzNSeWFXNW5PMXh5WEc0Z0lDQWdMeW9nNkxDRDU1U282SytsUTBkSjU1cUU1cGE1NXJPVklDb3ZYSEpjYmlBZ0lDQnRaWFJvYjJRL09pQW5UMUJVU1U5T1V5ZGNjbHh1SUNBZ0lId2dKMGRGVkNkY2NseHVJQ0FnSUh3Z0owaEZRVVFuWEhKY2JpQWdJQ0I4SUNkUVQxTlVKMXh5WEc0Z0lDQWdmQ0FuVUZWVUoxeHlYRzRnSUNBZ2ZDQW5SRVZNUlZSRkoxeHlYRzRnSUNBZ2ZDQW5WRkpCUTBVblhISmNiaUFnSUNCOElDZERUMDVPUlVOVUp5QjhJQ2R6ZEhKcGJtY25MRnh5WEc0Z0lDQWdMeW9nUTBkSjVMaXQ1THlnNVkrQzVwZTI3N3lNNWEyWTVwUytZMjlrWmVlYWhPV1FqZWVuc0NBcUwxeHlYRzRnSUNBZ1kyOWtaVTVoYldVL09pQnpkSEpwYm1jN1hISmNiaUFnSUNBdktpRG5tYnZsdlpYbWpxWGxqNlBwbklEb3BvSG5tb1RsaGJia3U1YmxqNExtbGJBZ0tpOWNjbHh1SUNBZ0lHUmhkR0UvT2lCemRISnBibWNnZkNCSlFXNTVUMkpxWldOMElId2dRWEp5WVhsQ2RXWm1aWEk3WEhKY2JpQWdJQ0F2S2lEbWpxWGxqNlBvdjVUbG01N21pSkRsaXAvbm1vVGxoNzNtbGJEdnZKdnBuSURvcG9Ib3Y1VGxtNTV6WlhOemFXOXU1NXFFNVlDOElDb3ZYSEpjYmlBZ0lDQnpkV05qWlhOelB6b2dSblZ1WTNScGIyNDdYSEpjYmlBZ0lDQXZLaUJqYjJSbDVvMmk1WStXYzJWemMybHZidWVhaE9hT3BlV1BvK21BdStpK2tlV0h1dW1VbWVhWHR1KzhqT2FKcCtpaGpPZWFoT1dIdmVhVnNPKzhqT2lMcGVtRmplZTlydVM2aHVhdHBPV0h2ZWFWc08rOGpPV0ltZVM0amVXR2plbTdtT2l1cE9XOHVlZXFsK2FLcGVtVW1TQXFMMXh5WEc0Z0lDQWdabUZwYkQ4NklFWjFibU4wYVc5dU8xeHlYRzRnSUNBZ0x5b2dZMjlrWlZSdlUyVnpjMmx2YnVlYWhPUzRpdWFLcGVXdGwrYXV0ZVdRalNBcUwxeHlYRzRnSUNBZ2NtVndiM0owUHpvZ2MzUnlhVzVuTzF4eVhHNGdJSDFjY2x4dUlDQmNjbHh1WEhKY2JtVjRjRzl5ZENCa1pXWmhkV3gwSUNod1lYSmhiWE02SUVsSmJtbDBUM0IwYVc5dUtTQTlQaUI3WEhKY2JpQWdJQ0JqYjI1emRDQmpiMjVtYVdjNklFbEpibWwwVDNCMGFXOXVJRDBnZXk0dUxuQmhjbUZ0Y3l3Z0xpNHVaR1ZtWVhWc2RFTnZibVpwWjMxY2NseHVJQ0FnSUM4dklPV21ndWFlbk9tRmplZTlydWFidE9hVXVlUzZobk5sYzNOcGIyN25tb1RsclpqbGdxamxrSTNsclpmdnZJemxpSm5waDQzbWxyRG9qcmZsajVia3VJRG1yS0Z6WlhOemFXOXVYSEpjYmlBZ0lDQnBaaUFvY0dGeVlXMXpMbk5sYzNOcGIyNU9ZVzFsS1NCN1hISmNiaUFnSUNBZ0lDQWdkSEo1SUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnYzNSaGRIVnpMbk5sYzNOcGIyNGdQU0IzZUM1blpYUlRkRzl5WVdkbFUzbHVZeWhqYjI1bWFXY3VjMlZ6YzJsdmJrNWhiV1VoS1NCOGZDQW5KenRjY2x4dUlDQWdJQ0FnSUNCOUlHTmhkR05vSUNobEtTQjdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lHTnZibk52YkdVdVpYSnliM0lvSjNkNExtZGxkRk4wYjNKaFoyVlRlVzVqT21aaGFXd3NJR05oYmlCdWIzUWdaMlYwSUhObGMzTnBiMjR1SnlsY2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQjlYSEpjYmlBZ0lDQXZMeURscG9MbW5wenBoWTNudmE3bW03VG1sTG5rdW9aelpYTnphVzl1NkwrSDVweWY1cGUyNlplMDU1cUU1YTJZNVlLbzVaQ041YTJYNzd5TTVZaVo2WWVONXBhdzZJNjM1WStXNUxpQTVxeWhjMlZ6YzJsdmJ1ZWFoT2kvaCthY24rYVh0dW1YdEZ4eVhHNGdJQ0FnYVdZZ0tIQmhjbUZ0Y3k1elpYTnphVzl1Ulhod2FYSmxTMlY1S1NCN1hISmNiaUFnSUNBZ0lDQWdkSEo1SUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnYzNSaGRIVnpMbk5sYzNOcGIyNUZlSEJwY21VZ1BTQjNlQzVuWlhSVGRHOXlZV2RsVTNsdVl5aGpiMjVtYVdjdWMyVnpjMmx2YmtWNGNHbHlaVXRsZVNrZ2ZId2dTVzVtYVc1cGRIazdYSEpjYmlBZ0lDQWdJQ0FnZlNCallYUmphQ0FvWlNrZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCamIyNXpiMnhsTG1WeWNtOXlLQ2QzZUM1blpYUlRkRzl5WVdkbFUzbHVZenBtWVdsc0xDQmpZVzRnYm05MElHZGxkQ0J6WlhOemFXOXVSWGh3YVhKbExpY3BYSEpjYmlBZ0lDQWdJQ0FnZlZ4eVhHNGdJQ0FnZlZ4eVhHNTlYSEpjYmlKZGZRPT0iLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG52YXIgc2Vzc2lvbk1hbmFnZXJfMSA9IHJlcXVpcmUoXCIuLi9tb2R1bGUvc2Vzc2lvbk1hbmFnZXJcIik7XHJcbmV4cG9ydHMuZGVmYXVsdCA9IChmdW5jdGlvbiAoY2FsbGJhY2spIHtcclxuICAgIHJldHVybiBzZXNzaW9uTWFuYWdlcl8xLmRlZmF1bHQoY2FsbGJhY2ssIHt9KTtcclxufSk7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWJHOW5hVzR1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SXVMaTh1TGk5emNtTXZZWEJwTDJ4dloybHVMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3TzBGQlFVRXNNa1JCUVcxRU8wRkJSVzVFTEcxQ1FVRmxMRlZCUVVNc1VVRkJhMEk3U1VGRE9VSXNUMEZCVHl4M1FrRkJXU3hEUVVGRExGRkJRVkVzUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUVR0QlFVTnlReXhEUVVGRExFVkJRVUVpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnWTJobFkydFRaWE56YVc5dUlHWnliMjBnSnk0dUwyMXZaSFZzWlM5elpYTnphVzl1VFdGdVlXZGxjaWRjY2x4dVhISmNibVY0Y0c5eWRDQmtaV1poZFd4MElDaGpZV3hzWW1GamF6b2dSblZ1WTNScGIyNHBJRDArSUh0Y2NseHVJQ0FnSUhKbGRIVnliaUJqYUdWamExTmxjM05wYjI0b1kyRnNiR0poWTJzc0lIdDlLVnh5WEc1OVhISmNiaUpkZlE9PSIsIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbnZhciByZXF1ZXN0SGFuZGxlcl8xID0gcmVxdWlyZShcIi4uL21vZHVsZS9yZXF1ZXN0SGFuZGxlclwiKTtcclxuZXhwb3J0cy5kZWZhdWx0ID0gKGZ1bmN0aW9uIChvYmopIHtcclxuICAgIHJlcXVlc3RIYW5kbGVyXzEuZGVmYXVsdC5yZXF1ZXN0KG9iaik7XHJcbn0pO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljbVZ4ZFdWemRDNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMM055WXk5aGNHa3ZjbVZ4ZFdWemRDNTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenRCUVVGQkxESkVRVUZ4UkR0QlFWZHlSQ3h0UWtGQlpTeFZRVUZETEVkQlFXMUNPMGxCUXk5Q0xIZENRVUZqTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGQk8wRkJReTlDTEVOQlFVTXNSVUZCUVNJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCeVpYRjFaWE4wU0dGdVpHeGxjaUJtY205dElDY3VMaTl0YjJSMWJHVXZjbVZ4ZFdWemRFaGhibVJzWlhJblhISmNibHh5WEc1bGVIQnZjblFnYVc1MFpYSm1ZV05sSUVsU1pYRjFaWE4wVDNCMGFXOXVJR1Y0ZEdWdVpITWdkM2d1VW1WeGRXVnpkRTl3ZEdsdmJpQjdYSEpjYmlBZ0lDQXZLaURsajVIb3RiZm9yN2Ztc1lMbGlZM21pYWZvb1l6bm1vVGxoNzNtbGJBZ0tpOWNjbHh1SUNBZ0lHSmxabTl5WlZObGJtUS9PaUJHZFc1amRHbHZianRjY2x4dUlDQWdJQzhxSU9pdnQrYXhndWkvaCtlb2krbWh0ZW1kb3VhWXIrV1FwdVd4bGVla3V1V0ZxT1d4aitlYWhHeHZZV1JwYm1jZ0tpOWNjbHh1SUNBZ0lITm9iM2RNYjJGa2FXNW5Qem9nWW05dmJHVmhiaUI4SUhOMGNtbHVaenRjY2x4dUlDQWdJQzhxSU9hT3BlV1BvK2l2dCtheGd1YUlrT1dLbitXUWp1V3dodWlIcXVXS3FPYUpwK2loakdsdWFYUW9LZVM0cmVtRmplZTlydWVhaEhKbGNHOXlkRU5IU2VXSHZlYVZzTys4ak9XRnR1UzRyZWVhaEc1aGJXWGxyWmZtcnJYbGdMemt1THJvdjVucGg0enBoWTNudmE3bm1vVGxnTHdnS2k5Y2NseHVJQ0FnSUhKbGNHOXlkRDg2SUhOMGNtbHVaenRjY2x4dUlDQjlYSEpjYmx4eVhHNWxlSEJ2Y25RZ1pHVm1ZWFZzZENBb2IySnFPaUJKVW1WeGRXVnpkRTl3ZEdsdmJpa2dQVDRnZTF4eVhHNGdJQ0FnY21WeGRXVnpkRWhoYm1Sc1pYSXVjbVZ4ZFdWemRDaHZZbW9wWEhKY2JuMWNjbHh1SWwxOSIsIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbnZhciBzdGF0dXNfMSA9IHJlcXVpcmUoXCIuLi9zdG9yZS9zdGF0dXNcIik7XHJcbmV4cG9ydHMuZGVmYXVsdCA9IChmdW5jdGlvbiAoc2Vzc2lvbikge1xyXG4gICAgc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uID0gc2Vzc2lvbjtcclxuICAgIHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbklzRnJlc2ggPSB0cnVlO1xyXG59KTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYzJWMFUyVnpjMmx2Ymk1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUwzTnlZeTloY0drdmMyVjBVMlZ6YzJsdmJpNTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenRCUVVGQkxEQkRRVUZ2UXp0QlFVVndReXh0UWtGQlpTeFZRVUZETEU5QlFXRTdTVUZEZWtJc1owSkJRVTBzUTBGQlF5eFBRVUZQTEVkQlFVY3NUMEZCVHl4RFFVRkRPMGxCUTNwQ0xHZENRVUZOTEVOQlFVTXNZMEZCWXl4SFFVRkhMRWxCUVVrc1EwRkJRenRCUVVOcVF5eERRVUZETEVWQlFVRWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhCdmNuUWdjM1JoZEhWeklHWnliMjBnSnk0dUwzTjBiM0psTDNOMFlYUjFjeWRjY2x4dVhISmNibVY0Y0c5eWRDQmtaV1poZFd4MElDaHpaWE56YVc5dU9pQlVUMFJQS1NBOVBpQjdYSEpjYmlBZ0lDQnpkR0YwZFhNdWMyVnpjMmx2YmlBOUlITmxjM05wYjI0N1hISmNiaUFnSUNCemRHRjBkWE11YzJWemMybHZia2x6Um5KbGMyZ2dQU0IwY25WbE8xeHlYRzU5WEhKY2JpSmRmUT09IiwiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxudmFyIHJlcXVlc3RIYW5kbGVyXzEgPSByZXF1aXJlKFwiLi4vbW9kdWxlL3JlcXVlc3RIYW5kbGVyXCIpO1xyXG5leHBvcnRzLmRlZmF1bHQgPSAoZnVuY3Rpb24gKG9iaikge1xyXG4gICAgcmVxdWVzdEhhbmRsZXJfMS5kZWZhdWx0LnVwbG9hZEZpbGUob2JqKTtcclxufSk7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWRYQnNiMkZrUm1sc1pTNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMM055WXk5aGNHa3ZkWEJzYjJGa1JtbHNaUzUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3p0QlFVRkJMREpFUVVGeFJEdEJRVVZ5UkN4dFFrRkJaU3hWUVVGRExFZEJRVk03U1VGRGNrSXNkMEpCUVdNc1EwRkJReXhWUVVGVkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVRTdRVUZEYkVNc1EwRkJReXhGUVVGQklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElISmxjWFZsYzNSSVlXNWtiR1Z5SUdaeWIyMGdKeTR1TDIxdlpIVnNaUzl5WlhGMVpYTjBTR0Z1Wkd4bGNpZGNjbHh1WEhKY2JtVjRjRzl5ZENCa1pXWmhkV3gwSUNodlltbzZJRlJQUkU4cElEMCtJSHRjY2x4dUlDQWdJSEpsY1hWbGMzUklZVzVrYkdWeUxuVndiRzloWkVacGJHVW9iMkpxS1Z4eVhHNTlYSEpjYmlKZGZRPT0iLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG52YXIgaW5pdF8xID0gcmVxdWlyZShcIi4vYXBpL2luaXRcIik7XHJcbnZhciByZXF1ZXN0XzEgPSByZXF1aXJlKFwiLi9hcGkvcmVxdWVzdFwiKTtcclxudmFyIHVwbG9hZEZpbGVfMSA9IHJlcXVpcmUoXCIuL2FwaS91cGxvYWRGaWxlXCIpO1xyXG52YXIgc2V0U2Vzc2lvbl8xID0gcmVxdWlyZShcIi4vYXBpL3NldFNlc3Npb25cIik7XHJcbnZhciBsb2dpbl8xID0gcmVxdWlyZShcIi4vYXBpL2xvZ2luXCIpO1xyXG52YXIgZ2V0U2Vzc2lvbl8xID0gcmVxdWlyZShcIi4vYXBpL2dldFNlc3Npb25cIik7XHJcbnZhciBnZXRDb25maWdfMSA9IHJlcXVpcmUoXCIuL2FwaS9nZXRDb25maWdcIik7XHJcbnZhciB3ZVJlcXVlc3RPYmplY3QgPSB7XHJcbiAgICBpbml0OiBpbml0XzEuZGVmYXVsdCxcclxuICAgIHJlcXVlc3Q6IHJlcXVlc3RfMS5kZWZhdWx0LFxyXG4gICAgdXBsb2FkRmlsZTogdXBsb2FkRmlsZV8xLmRlZmF1bHQsXHJcbiAgICBzZXRTZXNzaW9uOiBzZXRTZXNzaW9uXzEuZGVmYXVsdCxcclxuICAgIGxvZ2luOiBsb2dpbl8xLmRlZmF1bHQsXHJcbiAgICBnZXRTZXNzaW9uOiBnZXRTZXNzaW9uXzEuZGVmYXVsdCxcclxuICAgIGdldENvbmZpZzogZ2V0Q29uZmlnXzEuZGVmYXVsdFxyXG59O1xyXG5leHBvcnRzLmRlZmF1bHQgPSB3ZVJlcXVlc3RPYmplY3Q7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWFXNWtaWGd1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SXVMaTl6Y21NdmFXNWtaWGd1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN1FVRkJRU3h0UTBGQk9FSTdRVUZET1VJc2VVTkJRVzlETzBGQlEzQkRMQ3REUVVFd1F6dEJRVU14UXl3clEwRkJNRU03UVVGRE1VTXNjVU5CUVdkRE8wRkJRMmhETEN0RFFVRXdRenRCUVVNeFF5dzJRMEZCZDBNN1FVRjVRM2hETEVsQlFVMHNaVUZCWlN4SFFVRmpPMGxCUTJwRExFbEJRVWtzWjBKQlFVRTdTVUZEU2l4UFFVRlBMRzFDUVVGQk8wbEJRMUFzVlVGQlZTeHpRa0ZCUVR0SlFVTldMRlZCUVZVc2MwSkJRVUU3U1VGRFZpeExRVUZMTEdsQ1FVRkJPMGxCUTB3c1ZVRkJWU3h6UWtGQlFUdEpRVU5XTEZOQlFWTXNjVUpCUVVFN1EwRkRWaXhEUVVGRE8wRkJSVVlzYTBKQlFXVXNaVUZCWlN4RFFVRkRJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJR2x1YVhRZ1puSnZiU0JjSWk0dllYQnBMMmx1YVhSY0lqdGNjbHh1YVcxd2IzSjBJSEpsY1hWbGMzUWdabkp2YlNCY0lpNHZZWEJwTDNKbGNYVmxjM1JjSWp0Y2NseHVhVzF3YjNKMElIVndiRzloWkVacGJHVWdabkp2YlNCY0lpNHZZWEJwTDNWd2JHOWhaRVpwYkdWY0lqdGNjbHh1YVcxd2IzSjBJSE5sZEZObGMzTnBiMjRnWm5KdmJTQmNJaTR2WVhCcEwzTmxkRk5sYzNOcGIyNWNJanRjY2x4dWFXMXdiM0owSUd4dloybHVJR1p5YjIwZ1hDSXVMMkZ3YVM5c2IyZHBibHdpTzF4eVhHNXBiWEJ2Y25RZ1oyVjBVMlZ6YzJsdmJpQm1jbTl0SUZ3aUxpOWhjR2t2WjJWMFUyVnpjMmx2Ymx3aU8xeHlYRzVwYlhCdmNuUWdaMlYwUTI5dVptbG5JR1p5YjIwZ1hDSXVMMkZ3YVM5blpYUkRiMjVtYVdkY0lqdGNjbHh1YVcxd2IzSjBJSHNnU1VsdWFYUlBjSFJwYjI0Z2ZTQm1jbTl0SUZ3aUxpOWhjR2t2YVc1cGRGd2lPMXh5WEc1cGJYQnZjblFnZXlCSlVtVnhkV1Z6ZEU5d2RHbHZiaUI5SUdaeWIyMGdYQ0l1TDJGd2FTOXlaWEYxWlhOMFhDSTdYSEpjYmx4eVhHNWxlSEJ2Y25RZ2FXNTBaWEptWVdObElFbFZjR3h2WVdSR2FXeGxUM0IwYVc5dUlHVjRkR1Z1WkhNZ2QzZ3VWWEJzYjJGa1JtbHNaVTl3ZEdsdmJpQjdYSEpjYmlBZ0x5b2c1WStSNkxXMzZLKzM1ckdDNVltTjVvbW42S0dNNTVxRTVZZTk1cFd3SUNvdlhISmNiaUFnWW1WbWIzSmxVMlZ1WkQ4NklFWjFibU4wYVc5dU8xeHlYRzRnSUM4cUlPaXZ0K2F4Z3VpL2grZW9pK21odGVtZG91YVlyK1dRcHVXeGxlZWt1dVdGcU9XeGorZWFoR3h2WVdScGJtY2dLaTljY2x4dUlDQnphRzkzVEc5aFpHbHVaejg2SUdKdmIyeGxZVzRnZkNCemRISnBibWM3WEhKY2JpQWdMeW9nNW82bDVZK2o2SyszNXJHQzVvaVE1WXFmNVpDTzViQ0c2SWVxNVlxbzVvbW42S0dNYVc1cGRDZ3A1TGl0NllXTjU3MnU1NXFFY21Wd2IzSjBRMGRKNVllOTVwV3c3N3lNNVlXMjVMaXQ1NXFFYm1GdFplV3RsK2F1dGVXQXZPUzR1dWkvbWVtSGpPbUZqZWU5cnVlYWhPV0F2Q0FxTDF4eVhHNGdJSEpsY0c5eWREODZJSE4wY21sdVp6dGNjbHh1ZlZ4eVhHNWNjbHh1Wlhod2IzSjBJR2x1ZEdWeVptRmpaU0JKUjJWMFEyOXVabWxuVW1WemRXeDBJSHRjY2x4dUlDQXZLaURsbktqbnU0VGt1N2JsaUozbHA0dmxqSmJtbDdia3ZLRGxoYVhubW9Ub3I3Zm1zWUpWVWt6bm1vVGxtN3JscnBybGlZM252SUFnS2k5Y2NseHVJQ0IxY214UVpYSm1hWGcvT2lCemRISnBibWNnZkNBb0tDa2dQVDRnYzNSeWFXNW5LVHRjY2x4dUlDQXZLaURsbktqbnU0VGt1N2JsaUozbHA0dmxqSmJtbDdia3ZLRGxoYVhubW9UbmxLam1pTGZubWJ2cG1ZYm1nSUhvcnI3bnZhN21uS3psbkxEbnZKUGxyWmptbDdicGw3UWdLaTljY2x4dUlDQnpaWE56YVc5dVJYaHdhWEpsVkdsdFpUODZJRzUxYldKbGNqdGNjbHh1SUNBdktpRGxuS2pudTRUa3U3YmxpSjNscDR2bGpKYm1sN2JrdktEbGhhWG5tb1RubEtqbWlMZm5tYnZwbVlibWdJSG1uS3psbkxEbnZKUGxyWmptbDdicGw3UlRkRzl5WVdkbDU1cUVhMlY1SUNvdlhISmNiaUFnYzJWemMybHZia1Y0Y0dseVpVdGxlVDg2SUhOMGNtbHVaenRjY2x4dUlDQXZLaURubEtqbWlMZm5tYnZwbVlibWdJSG1uS3psbkxEbnZKUGxyWmpvdjRmbW5KL25tb1RtbDdicGw3VG1pTE1nS2k5Y2NseHVJQ0J6WlhOemFXOXVSWGh3YVhKbFB6b2diblZ0WW1WeU8xeHlYRzU5WEhKY2JseHlYRzVsZUhCdmNuUWdhVzUwWlhKbVlXTmxJSGRsVW1WeGRXVnpkQ0I3WEhKY2JpQWdMeW9xSU9Xd2orZW9pK1c2aitpMHB1V1B0K1Mvb2VhQnJ5QXFMMXh5WEc0Z0lHbHVhWFEvT2lBb2IySnFPaUJKU1c1cGRFOXdkR2x2YmlrZ1BUNGdkbTlwWkR0Y2NseHVJQ0F2S2lvZzVvK1M1THUyNkxTbTVZKzM1TCtoNW9Hdjc3eUk1THVGNVp5bzVvK1M1THUyNUxpdDZMQ0Q1NVNvNXBlMjVZeUY1WkNyNkwrWjVMaUE2YUc1Nzd5SklDb3ZYSEpjYmlBZ2NtVnhkV1Z6ZEQ4NklDaHZjSFJwYjI0NklFbFNaWEYxWlhOMFQzQjBhVzl1S1NBOVBpQjJiMmxrTzF4eVhHNGdJQzhxS2lEbWo1TGt1N2JvdEtibGo3Zmt2NkhtZ2EvdnZJamt1NFhsbktqbWo1TGt1N2JrdUszb3NJUG5sS2ptbDdibGpJWGxrS3ZvdjVua3VJRHBvYm52dklrZ0tpOWNjbHh1SUNCMWNHeHZZV1JHYVd4bFB6b2dLRzl3ZEdsdmJqb2dTVlZ3Ykc5aFpFWnBiR1ZQY0hScGIyNHBJRDArSUhadmFXUTdYSEpjYmlBZ0x5b2c2STYzNVkrVzVweXM1Wnl3NTd5VDVhMlk1TGl0NTVTbzVvaTM1NldvNW8ydTU1cUU1WUM4SUNvdlhISmNiaUFnWjJWMFUyVnpjMmx2Ymo4NklDZ3BJRDArSUhOMGNtbHVaenRjY2x4dUlDQXZLaURvanJmbGo1WjNaVkpsY1hWbGMzVG5tb1RwaFkzbnZhNGdLaTljY2x4dUlDQm5aWFJEYjI1bWFXYy9PaUFvS1NBOVBpQkpSMlYwUTI5dVptbG5VbVZ6ZFd4ME8xeHlYRzRnSUM4cUlGdmt1STNsdTdyb3JxN2t2Yi9ubEtoZElPV2NxT1M0amVXUGtlaTF0K1M0bXVXS29laXZ0K2F4Z3VlYWhPYURoZVdHdGVTNGkrKzhqT1dObGVlTHJPYUpwK2loak9lWnUrVzlsZW1BdStpK2tTQXFMMXh5WEc0Z0lHeHZaMmx1UHpvZ0tHTmhiR3hpWVdOck9pQkdkVzVqZEdsdmJpa2dQVDRnZG05cFpEdGNjbHh1SUNBdktpQmI1TGlONWJ1NjZLNnU1TDIvNTVTb1hTRG9ycjdudmE3bmxLam1pTGZucGFqbWphN25tb1RsZ0x3Z0tpOWNjbHh1SUNCelpYUlRaWE56YVc5dVB6b2dLSGc2SUhOMGNtbHVaeWtnUFQ0Z2RtOXBaRHRjY2x4dWZWeHlYRzVjY2x4dVkyOXVjM1FnZDJWU1pYRjFaWE4wVDJKcVpXTjBPaUIzWlZKbGNYVmxjM1FnUFNCN1hISmNiaUFnYVc1cGRDeGNjbHh1SUNCeVpYRjFaWE4wTEZ4eVhHNGdJSFZ3Ykc5aFpFWnBiR1VzWEhKY2JpQWdjMlYwVTJWemMybHZiaXhjY2x4dUlDQnNiMmRwYml4Y2NseHVJQ0JuWlhSVFpYTnphVzl1TEZ4eVhHNGdJR2RsZEVOdmJtWnBaMXh5WEc1OU8xeHlYRzVjY2x4dVpYaHdiM0owSUdSbFptRjFiSFFnZDJWU1pYRjFaWE4wVDJKcVpXTjBPMXh5WEc0aVhYMD0iLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG5mdW5jdGlvbiBnZXQob2JqKSB7XHJcbiAgICB3eC5nZXRTdG9yYWdlKHtcclxuICAgICAgICBrZXk6IG9iai5vcmlnaW5VcmwsXHJcbiAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKHJlcykge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIG9iai5jYWNoZSA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jYWNoZShyZXMuZGF0YSkpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb2JqLnN1Y2Nlc3MgPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgICAgICAgICAgICAgIG9iai5zdWNjZXNzKHJlcy5kYXRhLCB7IGlzQ2FjaGU6IHRydWUgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAob2JqLmNhY2hlID09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb2JqLnN1Y2Nlc3MgPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgICAgICAgICAgICAgIG9iai5zdWNjZXNzKHJlcy5kYXRhLCB7IGlzQ2FjaGU6IHRydWUgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdHlwZW9mIG9iai5jb21wbGV0ZSA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb21wbGV0ZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG59XHJcbmZ1bmN0aW9uIHNldChvYmosIHJlYWxEYXRhKSB7XHJcbiAgICBpZiAob2JqLmNhY2hlID09PSB0cnVlIHx8ICh0eXBlb2Ygb2JqLmNhY2hlID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNhY2hlKHJlYWxEYXRhKSkpIHtcclxuICAgICAgICB3eC5zZXRTdG9yYWdlKHtcclxuICAgICAgICAgICAga2V5OiBvYmoub3JpZ2luVXJsLFxyXG4gICAgICAgICAgICBkYXRhOiByZWFsRGF0YVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbmV4cG9ydHMuZGVmYXVsdCA9IHtcclxuICAgIGdldDogZ2V0LFxyXG4gICAgc2V0OiBzZXRcclxufTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pWTJGamFHVk5ZVzVoWjJWeUxtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpTGk0dkxpNHZjM0pqTDIxdlpIVnNaUzlqWVdOb1pVMWhibUZuWlhJdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdRVUZCUVN4VFFVRlRMRWRCUVVjc1EwRkJReXhIUVVGVE8wbEJRMnhDTEVWQlFVVXNRMEZCUXl4VlFVRlZMRU5CUVVNN1VVRkRWaXhIUVVGSExFVkJRVVVzUjBGQlJ5eERRVUZETEZOQlFWTTdVVUZEYkVJc1QwRkJUeXhGUVVGRkxGVkJRVlVzUjBGQlJ6dFpRVU5zUWl4SlFVRkpMRTlCUVU4c1IwRkJSeXhEUVVGRExFdEJRVXNzUzBGQlN5eFZRVUZWTEVsQlFVa3NSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVTdaMEpCUTNoRUxFbEJRVWtzVDBGQlR5eEhRVUZITEVOQlFVTXNUMEZCVHl4TFFVRkxMRlZCUVZVc1JVRkJSVHR2UWtGRGJrTXNSMEZCUnl4RFFVRkRMRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeEZRVUZGTEVWQlFVTXNUMEZCVHl4RlFVRkZMRWxCUVVrc1JVRkJReXhEUVVGRExFTkJRVUU3YVVKQlEzcERPMkZCUTBvN2FVSkJRVTBzU1VGQlNTeEhRVUZITEVOQlFVTXNTMEZCU3l4SlFVRkpMRWxCUVVrc1JVRkJSVHRuUWtGRE1VSXNTVUZCU1N4UFFVRlBMRWRCUVVjc1EwRkJReXhQUVVGUExFdEJRVXNzVlVGQlZTeEZRVUZGTzI5Q1FVTnVReXhIUVVGSExFTkJRVU1zVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRVZCUVVVc1JVRkJReXhQUVVGUExFVkJRVVVzU1VGQlNTeEZRVUZETEVOQlFVTXNRMEZCUVR0cFFrRkRla003WVVGRFNqdFpRVU5FTEU5QlFVOHNSMEZCUnl4RFFVRkRMRkZCUVZFc1MwRkJTeXhWUVVGVkxFbEJRVWtzUjBGQlJ5eERRVUZETEZGQlFWRXNSVUZCUlN4RFFVRkRPMUZCUTNwRUxFTkJRVU03UzBGRFNpeERRVUZETEVOQlFVRTdRVUZEVGl4RFFVRkRPMEZCUlVRc1UwRkJVeXhIUVVGSExFTkJRVU1zUjBGQlV5eEZRVUZITEZGQlFXTTdTVUZEYmtNc1NVRkJTU3hIUVVGSExFTkJRVU1zUzBGQlN5eExRVUZMTEVsQlFVa3NTVUZCU1N4RFFVRkRMRTlCUVU4c1IwRkJSeXhEUVVGRExFdEJRVXNzUzBGQlN5eFZRVUZWTEVsQlFVa3NSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eEZRVUZGTzFGQlEyaEdMRVZCUVVVc1EwRkJReXhWUVVGVkxFTkJRVU03V1VGRFZpeEhRVUZITEVWQlFVVXNSMEZCUnl4RFFVRkRMRk5CUVZNN1dVRkRiRUlzU1VGQlNTeEZRVUZGTEZGQlFWRTdVMEZEYWtJc1EwRkJReXhEUVVGQk8wdEJRMHc3UVVGRFRDeERRVUZETzBGQlJVUXNhMEpCUVdVN1NVRkRXQ3hIUVVGSExFdEJRVUU3U1VGRFNDeEhRVUZITEV0QlFVRTdRMEZEVGl4RFFVRkRJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpWm5WdVkzUnBiMjRnWjJWMEtHOWlham9nVkU5RVR5a2dlMXh5WEc0Z0lDQWdkM2d1WjJWMFUzUnZjbUZuWlNoN1hISmNiaUFnSUNBZ0lDQWdhMlY1T2lCdlltb3ViM0pwWjJsdVZYSnNMRnh5WEc0Z0lDQWdJQ0FnSUhOMVkyTmxjM002SUdaMWJtTjBhVzl1SUNoeVpYTXBJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hSNWNHVnZaaUJ2WW1vdVkyRmphR1VnUFQwOUlGd2lablZ1WTNScGIyNWNJaUFtSmlCdlltb3VZMkZqYUdVb2NtVnpMbVJoZEdFcEtTQjdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2RIbHdaVzltSUc5aWFpNXpkV05qWlhOeklEMDlQU0JjSW1aMWJtTjBhVzl1WENJcElIdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCdlltb3VjM1ZqWTJWemN5aHlaWE11WkdGMFlTd2dlMmx6UTJGamFHVTZJSFJ5ZFdWOUtWeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2FXWWdLRzlpYWk1allXTm9aU0E5UFNCMGNuVmxLU0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9kSGx3Wlc5bUlHOWlhaTV6ZFdOalpYTnpJRDA5UFNCY0ltWjFibU4wYVc5dVhDSXBJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnZZbW91YzNWalkyVnpjeWh5WlhNdVpHRjBZU3dnZTJselEyRmphR1U2SUhSeWRXVjlLVnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJSFI1Y0dWdlppQnZZbW91WTI5dGNHeGxkR1VnUFQwOUlGd2lablZ1WTNScGIyNWNJaUFtSmlCdlltb3VZMjl0Y0d4bGRHVW9LVHRjY2x4dUlDQWdJQ0FnSUNCOVhISmNiaUFnSUNCOUtWeHlYRzU5WEhKY2JseHlYRzVtZFc1amRHbHZiaUJ6WlhRb2IySnFPaUJVVDBSUElDd2djbVZoYkVSaGRHRTZJRlJQUkU4cElIdGNjbHh1SUNBZ0lHbG1JQ2h2WW1vdVkyRmphR1VnUFQwOUlIUnlkV1VnZkh3Z0tIUjVjR1Z2WmlCdlltb3VZMkZqYUdVZ1BUMDlJRndpWm5WdVkzUnBiMjVjSWlBbUppQnZZbW91WTJGamFHVW9jbVZoYkVSaGRHRXBLU2tnZTF4eVhHNGdJQ0FnSUNBZ0lIZDRMbk5sZEZOMGIzSmhaMlVvZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JyWlhrNklHOWlhaTV2Y21sbmFXNVZjbXdzWEhKY2JpQWdJQ0FnSUNBZ0lDQWdJR1JoZEdFNklISmxZV3hFWVhSaFhISmNiaUFnSUNBZ0lDQWdmU2xjY2x4dUlDQWdJSDFjY2x4dWZWeHlYRzVjY2x4dVpYaHdiM0owSUdSbFptRjFiSFFnZTF4eVhHNGdJQ0FnWjJWMExGeHlYRzRnSUNBZ2MyVjBYSEpjYm4wN1hISmNiaUpkZlE9PSIsIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbnZhciBjb25maWdfMSA9IHJlcXVpcmUoXCIuLi9zdG9yZS9jb25maWdcIik7XHJcbmZ1bmN0aW9uIHN0YXJ0KG9iaiwgbmFtZSkge1xyXG4gICAgc3dpdGNoIChuYW1lKSB7XHJcbiAgICAgICAgY2FzZSAnY2hlY2tTZXNzaW9uJzpcclxuICAgICAgICAgICAgb2JqLl9jaGVja1Nlc3Npb25TdGFydFRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnbG9naW4nOlxyXG4gICAgICAgICAgICBvYmouX2xvZ2luU3RhcnRUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIGlmIChvYmoucmVwb3J0KSB7XHJcbiAgICAgICAgICAgICAgICBvYmouX3JlcG9ydFN0YXJ0VGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZW5kKG9iaiwgbmFtZSkge1xyXG4gICAgc3dpdGNoIChuYW1lKSB7XHJcbiAgICAgICAgY2FzZSAnY2hlY2tTZXNzaW9uJzpcclxuICAgICAgICAgICAgb2JqLl9jaGVja1Nlc3Npb25FbmRUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY29uZmlnXzEuZGVmYXVsdC5yZXBvcnRDR0kgPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgICAgICAgICAgY29uZmlnXzEuZGVmYXVsdC5yZXBvcnRDR0koJ3d4X2NoZWNrU2Vzc2lvbicsIG9iai5fY2hlY2tTZXNzaW9uU3RhcnRUaW1lLCBvYmouX2NoZWNrU2Vzc2lvbkVuZFRpbWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2xvZ2luJzpcclxuICAgICAgICAgICAgb2JqLl9sb2dpbkVuZFRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBjb25maWdfMS5kZWZhdWx0LnJlcG9ydENHSSA9PT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICAgICAgICBjb25maWdfMS5kZWZhdWx0LnJlcG9ydENHSSgnd3hfbG9naW4nLCBvYmouX2xvZ2luU3RhcnRUaW1lLCBvYmouX2xvZ2luRW5kVGltZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgaWYgKG9iai5yZXBvcnQgJiYgdHlwZW9mIGNvbmZpZ18xLmRlZmF1bHQucmVwb3J0Q0dJID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICAgICAgICAgIG9iai5fcmVwb3J0RW5kVGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgICAgICAgICAgICAgY29uZmlnXzEuZGVmYXVsdC5yZXBvcnRDR0kob2JqLnJlcG9ydCwgb2JqLl9yZXBvcnRTdGFydFRpbWUsIG9iai5fcmVwb3J0RW5kVGltZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbn1cclxuZXhwb3J0cy5kZWZhdWx0ID0ge1xyXG4gICAgc3RhcnQ6IHN0YXJ0LFxyXG4gICAgZW5kOiBlbmRcclxufTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pWkhWeVlYUnBiMjVTWlhCdmNuUmxjaTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYklpNHVMeTR1TDNOeVl5OXRiMlIxYkdVdlpIVnlZWFJwYjI1U1pYQnZjblJsY2k1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU96dEJRVUZCTERCRFFVRnZRenRCUVVWd1F5eFRRVUZUTEV0QlFVc3NRMEZCUXl4SFFVRlRMRVZCUVVVc1NVRkJZVHRKUVVOdVF5eFJRVUZSTEVsQlFVa3NSVUZCUlR0UlFVTldMRXRCUVVzc1kwRkJZenRaUVVObUxFZEJRVWNzUTBGQlF5eHpRa0ZCYzBJc1IwRkJSeXhKUVVGSkxFbEJRVWtzUlVGQlJTeERRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRPMWxCUTJ4RUxFMUJRVTA3VVVGRFZpeExRVUZMTEU5QlFVODdXVUZEVWl4SFFVRkhMRU5CUVVNc1pVRkJaU3hIUVVGSExFbEJRVWtzU1VGQlNTeEZRVUZGTEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNN1dVRkRNME1zVFVGQlRUdFJRVU5XTzFsQlEwa3NTVUZCU1N4SFFVRkhMRU5CUVVNc1RVRkJUU3hGUVVGRk8yZENRVU5hTEVkQlFVY3NRMEZCUXl4blFrRkJaMElzUjBGQlJ5eEpRVUZKTEVsQlFVa3NSVUZCUlN4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRE8yRkJReTlETzB0QlExSTdRVUZEVEN4RFFVRkRPMEZCUlVRc1UwRkJVeXhIUVVGSExFTkJRVU1zUjBGQlV5eEZRVUZGTEVsQlFXRTdTVUZEYWtNc1VVRkJVU3hKUVVGSkxFVkJRVVU3VVVGRFZpeExRVUZMTEdOQlFXTTdXVUZGWml4SFFVRkhMRU5CUVVNc2IwSkJRVzlDTEVkQlFVY3NTVUZCU1N4SlFVRkpMRVZCUVVVc1EwRkJReXhQUVVGUExFVkJRVVVzUTBGQlF6dFpRVU5vUkN4SlFVRkpMRTlCUVU4c1owSkJRVTBzUTBGQlF5eFRRVUZUTEV0QlFVc3NWVUZCVlN4RlFVRkZPMmRDUVVONFF5eG5Ra0ZCVFN4RFFVRkRMRk5CUVZNc1EwRkJReXhwUWtGQmFVSXNSVUZCUlN4SFFVRkhMRU5CUVVNc2MwSkJRWE5DTEVWQlFVVXNSMEZCUnl4RFFVRkRMRzlDUVVGdlFpeERRVUZETEVOQlFVTTdZVUZETjBZN1dVRkRSQ3hOUVVGTk8xRkJRMVlzUzBGQlN5eFBRVUZQTzFsQlJWSXNSMEZCUnl4RFFVRkRMR0ZCUVdFc1IwRkJSeXhKUVVGSkxFbEJRVWtzUlVGQlJTeERRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRPMWxCUTNwRExFbEJRVWtzVDBGQlR5eG5Ra0ZCVFN4RFFVRkRMRk5CUVZNc1MwRkJTeXhWUVVGVkxFVkJRVVU3WjBKQlEzaERMR2RDUVVGTkxFTkJRVU1zVTBGQlV5eERRVUZETEZWQlFWVXNSVUZCUlN4SFFVRkhMRU5CUVVNc1pVRkJaU3hGUVVGRkxFZEJRVWNzUTBGQlF5eGhRVUZoTEVOQlFVTXNRMEZCUXp0aFFVTjRSVHRaUVVORUxFMUJRVTA3VVVGRFZqdFpRVVZKTEVsQlFVa3NSMEZCUnl4RFFVRkRMRTFCUVUwc1NVRkJTU3hQUVVGUExHZENRVUZOTEVOQlFVTXNVMEZCVXl4TFFVRkxMRlZCUVZVc1JVRkJSVHRuUWtGRGRFUXNSMEZCUnl4RFFVRkRMR05CUVdNc1IwRkJSeXhKUVVGSkxFbEJRVWtzUlVGQlJTeERRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRPMmRDUVVNeFF5eG5Ra0ZCVFN4RFFVRkRMRk5CUVZNc1EwRkJReXhIUVVGSExFTkJRVU1zVFVGQlRTeEZRVUZGTEVkQlFVY3NRMEZCUXl4blFrRkJaMElzUlVGQlJTeEhRVUZITEVOQlFVTXNZMEZCWXl4RFFVRkRMRU5CUVVNN1lVRkRNVVU3V1VGRFJDeE5RVUZOTzB0QlEySTdRVUZEVEN4RFFVRkRPMEZCUlVRc2EwSkJRV1U3U1VGRFdDeExRVUZMTEU5QlFVRTdTVUZEVEN4SFFVRkhMRXRCUVVFN1EwRkRUaXhEUVVGQklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElHTnZibVpwWnlCbWNtOXRJQ2N1TGk5emRHOXlaUzlqYjI1bWFXY25YSEpjYmx4eVhHNW1kVzVqZEdsdmJpQnpkR0Z5ZENodlltbzZJRlJQUkU4c0lHNWhiV1UvT2lCemRISnBibWNwSUh0Y2NseHVJQ0FnSUhOM2FYUmphQ0FvYm1GdFpTa2dlMXh5WEc0Z0lDQWdJQ0FnSUdOaGMyVWdKMk5vWldOclUyVnpjMmx2YmljNlhISmNiaUFnSUNBZ0lDQWdJQ0FnSUc5aWFpNWZZMmhsWTJ0VFpYTnphVzl1VTNSaGNuUlVhVzFsSUQwZ2JtVjNJRVJoZEdVb0tTNW5aWFJVYVcxbEtDazdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lHSnlaV0ZyTzF4eVhHNGdJQ0FnSUNBZ0lHTmhjMlVnSjJ4dloybHVKenBjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdiMkpxTGw5c2IyZHBibE4wWVhKMFZHbHRaU0E5SUc1bGR5QkVZWFJsS0NrdVoyVjBWR2x0WlNncE8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCaWNtVmhhenRjY2x4dUlDQWdJQ0FnSUNCa1pXWmhkV3gwT2x4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2IySnFMbkpsY0c5eWRDa2dlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYjJKcUxsOXlaWEJ2Y25SVGRHRnlkRlJwYldVZ1BTQnVaWGNnUkdGMFpTZ3BMbWRsZEZScGJXVW9LVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdmVnh5WEc1OVhISmNibHh5WEc1bWRXNWpkR2x2YmlCbGJtUW9iMkpxT2lCVVQwUlBMQ0J1WVcxbFB6b2djM1J5YVc1bktTQjdYSEpjYmlBZ0lDQnpkMmwwWTJnZ0tHNWhiV1VwSUh0Y2NseHVJQ0FnSUNBZ0lDQmpZWE5sSUNkamFHVmphMU5sYzNOcGIyNG5PbHh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQXZMeUIzZUM1amFHVmphMU5sYzNOcGIyNGc2SUNYNXBlMjVMaUs1b3FsWEhKY2JpQWdJQ0FnSUNBZ0lDQWdJRzlpYWk1ZlkyaGxZMnRUWlhOemFXOXVSVzVrVkdsdFpTQTlJRzVsZHlCRVlYUmxLQ2t1WjJWMFZHbHRaU2dwTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2RIbHdaVzltSUdOdmJtWnBaeTV5WlhCdmNuUkRSMGtnUFQwOUlGd2lablZ1WTNScGIyNWNJaWtnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyOXVabWxuTG5KbGNHOXlkRU5IU1NnbmQzaGZZMmhsWTJ0VFpYTnphVzl1Snl3Z2IySnFMbDlqYUdWamExTmxjM05wYjI1VGRHRnlkRlJwYldVc0lHOWlhaTVmWTJobFkydFRaWE56YVc5dVJXNWtWR2x0WlNrN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUNBZ0lDQWdJQ0FnWW5KbFlXczdYSEpjYmlBZ0lDQWdJQ0FnWTJGelpTQW5iRzluYVc0bk9seHlYRzRnSUNBZ0lDQWdJQ0FnSUNBdkx5QjNlQzVzYjJkcGJpRG9nSmZtbDdia3VJcm1pcVZjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdiMkpxTGw5c2IyZHBia1Z1WkZScGJXVWdQU0J1WlhjZ1JHRjBaU2dwTG1kbGRGUnBiV1VvS1R0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tIUjVjR1Z2WmlCamIyNW1hV2N1Y21Wd2IzSjBRMGRKSUQwOVBTQmNJbVoxYm1OMGFXOXVYQ0lwSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTnZibVpwWnk1eVpYQnZjblJEUjBrb0ozZDRYMnh2WjJsdUp5d2diMkpxTGw5c2IyZHBibE4wWVhKMFZHbHRaU3dnYjJKcUxsOXNiMmRwYmtWdVpGUnBiV1VwTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJR0p5WldGck8xeHlYRzRnSUNBZ0lDQWdJR1JsWm1GMWJIUTZYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDOHZJT1dGdHVTN2xrTkhTZWFPcGVXUG8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9iMkpxTG5KbGNHOXlkQ0FtSmlCMGVYQmxiMllnWTI5dVptbG5MbkpsY0c5eWRFTkhTU0E5UFQwZ1hDSm1kVzVqZEdsdmJsd2lLU0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCdlltb3VYM0psY0c5eWRFVnVaRlJwYldVZ1BTQnVaWGNnUkdGMFpTZ3BMbWRsZEZScGJXVW9LVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOdmJtWnBaeTV5WlhCdmNuUkRSMGtvYjJKcUxuSmxjRzl5ZEN3Z2IySnFMbDl5WlhCdmNuUlRkR0Z5ZEZScGJXVXNJRzlpYWk1ZmNtVndiM0owUlc1a1ZHbHRaU2s3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdZbkpsWVdzN1hISmNiaUFnSUNCOVhISmNibjFjY2x4dVhISmNibVY0Y0c5eWRDQmtaV1poZFd4MElIdGNjbHh1SUNBZ0lITjBZWEowTEZ4eVhHNGdJQ0FnWlc1a1hISmNibjFjY2x4dUlsMTkiLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG52YXIgY29uZmlnXzEgPSByZXF1aXJlKFwiLi4vc3RvcmUvY29uZmlnXCIpO1xyXG5leHBvcnRzLmRlZmF1bHQgPSAoZnVuY3Rpb24gKG9iaiwgcmVzKSB7XHJcbiAgICBpZiAodHlwZW9mIG9iai5mYWlsID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICBvYmouZmFpbChyZXMpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgdmFyIHRpdGxlID0gXCJcIjtcclxuICAgICAgICBpZiAodHlwZW9mIGNvbmZpZ18xLmRlZmF1bHQuZXJyb3JUaXRsZSA9PT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICB0aXRsZSA9IGNvbmZpZ18xLmRlZmF1bHQuZXJyb3JUaXRsZShyZXMuZGF0YSB8fCByZXMuZXJyTXNnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiBjb25maWdfMS5kZWZhdWx0LmVycm9yVGl0bGUgPT09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICAgICAgdGl0bGUgPSBjb25maWdfMS5kZWZhdWx0LmVycm9yVGl0bGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBjb250ZW50ID0gXCJcIjtcclxuICAgICAgICBpZiAodHlwZW9mIGNvbmZpZ18xLmRlZmF1bHQuZXJyb3JDb250ZW50ID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBjb25maWdfMS5kZWZhdWx0LmVycm9yQ29udGVudChyZXMuZGF0YSB8fCByZXMuZXJyTXNnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiBjb25maWdfMS5kZWZhdWx0LmVycm9yQ29udGVudCA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgICAgICBjb250ZW50ID0gY29uZmlnXzEuZGVmYXVsdC5lcnJvckNvbnRlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHd4LnNob3dNb2RhbCh7XHJcbiAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcclxuICAgICAgICAgICAgY29udGVudDogY29udGVudCB8fCBcIue9kee7nOaIluacjeWKoeW8guW4uO+8jOivt+eojeWQjumHjeivlVwiLFxyXG4gICAgICAgICAgICBzaG93Q2FuY2VsOiBmYWxzZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiBjb25maWdfMS5kZWZhdWx0LmVycm9yQ2FsbGJhY2sgPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgIGNvbmZpZ18xLmRlZmF1bHQuZXJyb3JDYWxsYmFjayhvYmosIHJlcyk7XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmVycm9yKHJlcyk7XHJcbn0pO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2laWEp5YjNKSVlXNWtiR1Z5TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lMaTR2TGk0dmMzSmpMMjF2WkhWc1pTOWxjbkp2Y2toaGJtUnNaWEl1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN1FVRkJRU3d3UTBGQmIwTTdRVUZGY0VNc2JVSkJRV1VzVlVGQlF5eEhRVUZUTEVWQlFVVXNSMEZCVXp0SlFVTm9ReXhKUVVGSkxFOUJRVThzUjBGQlJ5eERRVUZETEVsQlFVa3NTMEZCU3l4VlFVRlZMRVZCUVVVN1VVRkRhRU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRMUVVOcVFqdFRRVUZOTzFGQlEwZ3NTVUZCU1N4TFFVRkxMRWRCUVVjc1JVRkJSU3hEUVVGRE8xRkJRMllzU1VGQlNTeFBRVUZQTEdkQ1FVRk5MRU5CUVVNc1ZVRkJWU3hMUVVGTExGVkJRVlVzUlVGQlJUdFpRVU42UXl4SlFVRkpPMmRDUVVOQkxFdEJRVXNzUjBGQlJ5eG5Ra0ZCVFN4RFFVRkRMRlZCUVZVc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeEpRVUZKTEVkQlFVY3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRVHRoUVVOd1JEdFpRVUZETEU5QlFVOHNRMEZCUXl4RlFVRkZPMkZCUTFnN1UwRkRTanRoUVVGTkxFbEJRVWtzVDBGQlR5eG5Ra0ZCVFN4RFFVRkRMRlZCUVZVc1MwRkJTeXhSUVVGUkxFVkJRVVU3V1VGRE9VTXNTMEZCU3l4SFFVRkhMR2RDUVVGTkxFTkJRVU1zVlVGQlZTeERRVUZETzFOQlF6ZENPMUZCUlVRc1NVRkJTU3hQUVVGUExFZEJRVWNzUlVGQlJTeERRVUZETzFGQlEycENMRWxCUVVrc1QwRkJUeXhuUWtGQlRTeERRVUZETEZsQlFWa3NTMEZCU3l4VlFVRlZMRVZCUVVVN1dVRkRNME1zU1VGQlNUdG5Ra0ZEUVN4UFFVRlBMRWRCUVVjc1owSkJRVTBzUTBGQlF5eFpRVUZaTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1NVRkJTU3hIUVVGSExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVRTdZVUZEZUVRN1dVRkJReXhQUVVGUExFTkJRVU1zUlVGQlJUdGhRVU5ZTzFOQlEwbzdZVUZCVFN4SlFVRkpMRTlCUVU4c1owSkJRVTBzUTBGQlF5eFpRVUZaTEV0QlFVc3NVVUZCVVN4RlFVRkZPMWxCUTJoRUxFOUJRVThzUjBGQlJ5eG5Ra0ZCVFN4RFFVRkRMRmxCUVZrc1EwRkJRenRUUVVOcVF6dFJRVVZFTEVWQlFVVXNRMEZCUXl4VFFVRlRMRU5CUVVNN1dVRkRWQ3hMUVVGTExFVkJRVVVzUzBGQlN6dFpRVU5hTEU5QlFVOHNSVUZCUlN4UFFVRlBMRWxCUVVrc1pVRkJaVHRaUVVOdVF5eFZRVUZWTEVWQlFVVXNTMEZCU3p0VFFVTndRaXhEUVVGRExFTkJRVUU3UzBGRFREdEpRVWRFTEVsQlFVa3NUMEZCVHl4blFrRkJUU3hEUVVGRExHRkJRV0VzUzBGQlN5eFZRVUZWTEVWQlFVVTdVVUZETlVNc1owSkJRVTBzUTBGQlF5eGhRVUZoTEVOQlFVTXNSMEZCUnl4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRE8wdEJRMnhETzBsQlJVUXNUMEZCVHl4RFFVRkRMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dEJRVU4yUWl4RFFVRkRMRVZCUVVFaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ1kyOXVabWxuSUdaeWIyMGdKeTR1TDNOMGIzSmxMMk52Ym1acFp5ZGNjbHh1WEhKY2JtVjRjRzl5ZENCa1pXWmhkV3gwSUNodlltbzZJRlJQUkU4c0lISmxjem9nVkU5RVR5a2dQVDRnZTF4eVhHNGdJQ0FnYVdZZ0tIUjVjR1Z2WmlCdlltb3VabUZwYkNBOVBUMGdYQ0ptZFc1amRHbHZibHdpS1NCN1hISmNiaUFnSUNBZ0lDQWdiMkpxTG1aaGFXd29jbVZ6S1R0Y2NseHVJQ0FnSUgwZ1pXeHpaU0I3WEhKY2JpQWdJQ0FnSUNBZ2JHVjBJSFJwZEd4bElEMGdYQ0pjSWp0Y2NseHVJQ0FnSUNBZ0lDQnBaaUFvZEhsd1pXOW1JR052Ym1acFp5NWxjbkp2Y2xScGRHeGxJRDA5UFNCY0ltWjFibU4wYVc5dVhDSXBJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdkSEo1SUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIUnBkR3hsSUQwZ1kyOXVabWxuTG1WeWNtOXlWR2wwYkdVb2NtVnpMbVJoZEdFZ2ZId2djbVZ6TG1WeWNrMXpaeWxjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdmU0JqWVhSamFDQW9aU2tnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUNBZ2ZTQmxiSE5sSUdsbUlDaDBlWEJsYjJZZ1kyOXVabWxuTG1WeWNtOXlWR2wwYkdVZ1BUMDlJRndpYzNSeWFXNW5YQ0lwSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnZEdsMGJHVWdQU0JqYjI1bWFXY3VaWEp5YjNKVWFYUnNaVHRjY2x4dUlDQWdJQ0FnSUNCOVhISmNibHh5WEc0Z0lDQWdJQ0FnSUd4bGRDQmpiMjUwWlc1MElEMGdYQ0pjSWp0Y2NseHVJQ0FnSUNBZ0lDQnBaaUFvZEhsd1pXOW1JR052Ym1acFp5NWxjbkp2Y2tOdmJuUmxiblFnUFQwOUlGd2lablZ1WTNScGIyNWNJaWtnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0IwY25rZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMjl1ZEdWdWRDQTlJR052Ym1acFp5NWxjbkp2Y2tOdmJuUmxiblFvY21WekxtUmhkR0VnZkh3Z2NtVnpMbVZ5Y2sxelp5bGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2ZTQmpZWFJqYUNBb1pTa2dlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJQ0FnZlNCbGJITmxJR2xtSUNoMGVYQmxiMllnWTI5dVptbG5MbVZ5Y205eVEyOXVkR1Z1ZENBOVBUMGdYQ0p6ZEhKcGJtZGNJaWtnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JqYjI1MFpXNTBJRDBnWTI5dVptbG5MbVZ5Y205eVEyOXVkR1Z1ZER0Y2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSUNBZ0lIZDRMbk5vYjNkTmIyUmhiQ2g3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJSFJwZEd4bE9pQjBhWFJzWlN4Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnWTI5dWRHVnVkRG9nWTI5dWRHVnVkQ0I4ZkNCY0l1ZTlrZWU3bk9hSWx1YWNqZVdLb2VXOGd1VzR1Tys4ak9pdnQrZW9qZVdRanVtSGplaXZsVndpTEZ4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0J6YUc5M1EyRnVZMlZzT2lCbVlXeHpaVnh5WEc0Z0lDQWdJQ0FnSUgwcFhISmNiaUFnSUNCOVhISmNibHh5WEc0Z0lDQWdMeThnNWFhQzVwNmM1cHlKNllXTjU3MnU1N3VmNUxpQTZaU1o2Syt2NVp1ZTZMQ0Q1WWU5NXBXdzc3eU01WWlaNW9tbjZLR001YTZEWEhKY2JpQWdJQ0JwWmlBb2RIbHdaVzltSUdOdmJtWnBaeTVsY25KdmNrTmhiR3hpWVdOcklEMDlQU0JjSW1aMWJtTjBhVzl1WENJcElIdGNjbHh1SUNBZ0lDQWdJQ0JqYjI1bWFXY3VaWEp5YjNKRFlXeHNZbUZqYXlodlltb3NJSEpsY3lrN1hISmNiaUFnSUNCOVhISmNibHh5WEc0Z0lDQWdZMjl1YzI5c1pTNWxjbkp2Y2loeVpYTXBPMXh5WEc1OVhISmNiaUpkZlE9PSIsIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbnZhciBjb25maWdfMSA9IHJlcXVpcmUoXCIuLi9zdG9yZS9jb25maWdcIik7XHJcbnZhciByZXNwb25zZUhhbmRsZXJfMSA9IHJlcXVpcmUoXCIuL3Jlc3BvbnNlSGFuZGxlclwiKTtcclxuZnVuY3Rpb24gZ2V0KG9iaiwgbWV0aG9kKSB7XHJcbiAgICBpZiAoIWNvbmZpZ18xLmRlZmF1bHQubW9ja0pzb25bb2JqLnVybF0gJiYgIWNvbmZpZ18xLmRlZmF1bHQubW9ja0pzb25bb2JqLm9yaWdpblVybF0pIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdtb2NrIOayoeacieWvueW6lOaOpeWPo+eahOaVsOaNricpO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHZhciBkYXRhID0gY29uZmlnXzEuZGVmYXVsdC5tb2NrSnNvbltvYmoudXJsXSB8fCBjb25maWdfMS5kZWZhdWx0Lm1vY2tKc29uW29iai5vcmlnaW5VcmxdO1xyXG4gICAgZGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xyXG4gICAgdmFyIHJlcyA9IHtcclxuICAgICAgICBkYXRhOiBkYXRhLFxyXG4gICAgICAgIHN0YXR1c0NvZGU6IDIwMFxyXG4gICAgfTtcclxuICAgIHJlc3BvbnNlSGFuZGxlcl8xLmRlZmF1bHQocmVzLCBvYmosIG1ldGhvZCk7XHJcbn1cclxuZXhwb3J0cy5kZWZhdWx0ID0ge1xyXG4gICAgZ2V0OiBnZXRcclxufTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYlc5amEwMWhibUZuWlhJdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUl1TGk4dUxpOXpjbU12Ylc5a2RXeGxMMjF2WTJ0TllXNWhaMlZ5TG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN08wRkJRVUVzTUVOQlFXOURPMEZCUTNCRExIRkVRVUVyUXp0QlFVVXZReXhUUVVGVExFZEJRVWNzUTBGQlF5eEhRVUZUTEVWQlFVVXNUVUZCWjBNN1NVRkZjRVFzU1VGQlJ5eERRVUZETEdkQ1FVRk5MRU5CUVVNc1VVRkJVU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMR2RDUVVGTkxFTkJRVU1zVVVGQlVTeERRVUZETEVkQlFVY3NRMEZCUXl4VFFVRlRMRU5CUVVNc1JVRkJSVHRSUVVVM1JDeFBRVUZQTEVOQlFVTXNTMEZCU3l4RFFVRkRMR2RDUVVGblFpeERRVUZETEVOQlFVTTdVVUZEYUVNc1QwRkJUeXhMUVVGTExFTkJRVU03UzBGRGFFSTdTVUZGUkN4SlFVRkpMRWxCUVVrc1IwRkJSeXhuUWtGQlRTeERRVUZETEZGQlFWRXNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzWjBKQlFVMHNRMEZCUXl4UlFVRlJMRU5CUVVNc1IwRkJSeXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETzBsQlJYUkZMRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU40UXl4SlFVRkpMRWRCUVVjc1IwRkJSenRSUVVOT0xFbEJRVWtzUlVGQlJTeEpRVUZKTzFGQlExWXNWVUZCVlN4RlFVRkZMRWRCUVVjN1MwRkRiRUlzUTBGQlF6dEpRVVZHTEhsQ1FVRmxMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeE5RVUZOTEVOQlFVTXNRMEZCUVR0QlFVTnlReXhEUVVGRE8wRkJSVVFzYTBKQlFXVTdTVUZEV0N4SFFVRkhMRXRCUVVFN1EwRkRUaXhEUVVGQklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElHTnZibVpwWnlCbWNtOXRJQ2N1TGk5emRHOXlaUzlqYjI1bWFXY25YSEpjYm1sdGNHOXlkQ0J5WlhOd2IyNXpaVWhoYm1Sc1pYSWdabkp2YlNBbkxpOXlaWE53YjI1elpVaGhibVJzWlhJblhISmNibHh5WEc1bWRXNWpkR2x2YmlCblpYUW9iMkpxT2lCVVQwUlBMQ0J0WlhSb2IyUTZJRndpY21WeGRXVnpkRndpSUh3Z1hDSjFjR3h2WVdSR2FXeGxYQ0lwT2lCaGJua2dlMXh5WEc1Y2NseHVJQ0FnSUdsbUtDRmpiMjVtYVdjdWJXOWphMHB6YjI1YmIySnFMblZ5YkYwZ0ppWWdJV052Ym1acFp5NXRiMk5yU25OdmJsdHZZbW91YjNKcFoybHVWWEpzWFNrZ2UxeHlYRzRnSUNBZ0lDQWdJQzh2SUcxdlkyc2c1cktoNXB5SjVhKzU1YnFVNW82bDVZK2o1NXFFNXBXdzVvMnVYSEpjYmlBZ0lDQWdJQ0FnWTI5dWMyOXNaUzVsY25KdmNpZ25iVzlqYXlEbXNxSG1uSW5scjdubHVwVG1qcVhsajZQbm1vVG1sYkRtamE0bktUdGNjbHh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdabUZzYzJVN1hISmNiaUFnSUNCOVhISmNibHh5WEc0Z0lDQWdiR1YwSUdSaGRHRWdQU0JqYjI1bWFXY3ViVzlqYTBwemIyNWJiMkpxTG5WeWJGMGdmSHdnWTI5dVptbG5MbTF2WTJ0S2MyOXVXMjlpYWk1dmNtbG5hVzVWY214ZE8xeHlYRzRnSUNBZ0x5OGdaR1ZsY0NCamIzQjVYSEpjYmlBZ0lDQmtZWFJoSUQwZ1NsTlBUaTV3WVhKelpTaEtVMDlPTG5OMGNtbHVaMmxtZVNoa1lYUmhLU2s3WEhKY2JpQWdJQ0JzWlhRZ2NtVnpJRDBnZTF4eVhHNGdJQ0FnSUNBZ0lHUmhkR0U2SUdSaGRHRXNYSEpjYmlBZ0lDQWdJQ0FnYzNSaGRIVnpRMjlrWlRvZ01qQXdYSEpjYmlBZ0lDQjlPMXh5WEc1Y2NseHVJQ0FnSUhKbGMzQnZibk5sU0dGdVpHeGxjaWh5WlhNc0lHOWlhaXdnYldWMGFHOWtLVnh5WEc1OVhISmNibHh5WEc1bGVIQnZjblFnWkdWbVlYVnNkQ0I3WEhKY2JpQWdJQ0JuWlhSY2NseHVmVnh5WEc0aVhYMD0iLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG52YXIgbG9hZGluZ18xID0gcmVxdWlyZShcIi4uL3V0aWwvbG9hZGluZ1wiKTtcclxudmFyIGNvbmZpZ18xID0gcmVxdWlyZShcIi4uL3N0b3JlL2NvbmZpZ1wiKTtcclxudmFyIHN0YXR1c18xID0gcmVxdWlyZShcIi4uL3N0b3JlL3N0YXR1c1wiKTtcclxudmFyIG1vY2tNYW5hZ2VyXzEgPSByZXF1aXJlKFwiLi9tb2NrTWFuYWdlclwiKTtcclxudmFyIGNhY2hlTWFuYWdlcl8xID0gcmVxdWlyZShcIi4vY2FjaGVNYW5hZ2VyXCIpO1xyXG52YXIgc2Vzc2lvbk1hbmFnZXJfMSA9IHJlcXVpcmUoXCIuL3Nlc3Npb25NYW5hZ2VyXCIpO1xyXG52YXIgZXJyb3JIYW5kbGVyXzEgPSByZXF1aXJlKFwiLi9lcnJvckhhbmRsZXJcIik7XHJcbnZhciByZXNwb25zZUhhbmRsZXJfMSA9IHJlcXVpcmUoXCIuL3Jlc3BvbnNlSGFuZGxlclwiKTtcclxudmFyIGR1cmF0aW9uUmVwb3J0ZXJfMSA9IHJlcXVpcmUoXCIuL2R1cmF0aW9uUmVwb3J0ZXJcIik7XHJcbmZ1bmN0aW9uIGZvcm1hdCh1cmwpIHtcclxuICAgIGlmICh1cmwuc3RhcnRzV2l0aCgnaHR0cCcpKSB7XHJcbiAgICAgICAgcmV0dXJuIHVybDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHZhciB1cmxQZXJmaXggPSBjb25maWdfMS5kZWZhdWx0LnVybFBlcmZpeDtcclxuICAgICAgICBpZiAodHlwZW9mIGNvbmZpZ18xLmRlZmF1bHQudXJsUGVyZml4ID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICAgICAgdXJsUGVyZml4ID0gY29uZmlnXzEuZGVmYXVsdC51cmxQZXJmaXgoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHVybFBlcmZpeCArIHVybDtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBwcmVEbyhvYmopIHtcclxuICAgIHZhciBfdGhpcyA9IHRoaXM7XHJcbiAgICBpZiAodHlwZW9mIG9iai5iZWZvcmVTZW5kID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICBvYmouYmVmb3JlU2VuZCgpO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiBvYmoucmVMb2dpbkxpbWl0ID09PSBcInVuZGVmaW5lZFwiKSB7XHJcbiAgICAgICAgb2JqLnJlTG9naW5MaW1pdCA9IDA7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBvYmoucmVMb2dpbkxpbWl0Kys7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIG9iai5jb3VudCA9PT0gXCJ1bmRlZmluZWRcIikge1xyXG4gICAgICAgIG9iai5jb3VudCA9IDA7XHJcbiAgICB9XHJcbiAgICBpZiAob2JqLnNob3dMb2FkaW5nKSB7XHJcbiAgICAgICAgbG9hZGluZ18xLmRlZmF1bHQuc2hvdyhvYmouc2hvd0xvYWRpbmcpO1xyXG4gICAgICAgIG9iai5jb21wbGV0ZSA9IChmdW5jdGlvbiAoZm4pIHtcclxuICAgICAgICAgICAgdmFyIGFyZ3MgPSBbXTtcclxuICAgICAgICAgICAgZm9yICh2YXIgX2kgPSAxOyBfaSA8IGFyZ3VtZW50cy5sZW5ndGg7IF9pKyspIHtcclxuICAgICAgICAgICAgICAgIGFyZ3NbX2kgLSAxXSA9IGFyZ3VtZW50c1tfaV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIGxvYWRpbmdfMS5kZWZhdWx0LmhpZGUoKTtcclxuICAgICAgICAgICAgICAgIHR5cGVvZiBmbiA9PT0gXCJmdW5jdGlvblwiICYmIGZuLmFwcGx5LmFwcGx5KGZuLCBbX3RoaXNdLmNvbmNhdChhcmdzKSk7XHJcbiAgICAgICAgICAgIH07XHJcbiAgICAgICAgfSkob2JqLmNvbXBsZXRlKTtcclxuICAgIH1cclxuICAgIG9iai5vcmlnaW5VcmwgPSBvYmoudXJsO1xyXG4gICAgb2JqLnVybCA9IGZvcm1hdChvYmoudXJsKTtcclxuICAgIHJldHVybiBvYmo7XHJcbn1cclxuZnVuY3Rpb24gaW5pdGlhbGl6ZShvYmosIGNvbnRhaW5lcikge1xyXG4gICAgaWYgKCFvYmpbY29udGFpbmVyXSkge1xyXG4gICAgICAgIG9ialtjb250YWluZXJdID0ge307XHJcbiAgICB9XHJcbiAgICBpZiAob2JqLm9yaWdpblVybCAhPT0gY29uZmlnXzEuZGVmYXVsdC5jb2RlVG9TZXNzaW9uLnVybCAmJiBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb24pIHtcclxuICAgICAgICBvYmpbY29udGFpbmVyXVtjb25maWdfMS5kZWZhdWx0LnNlc3Npb25OYW1lXSA9IHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbjtcclxuICAgIH1cclxuICAgIHZhciBnZCA9IHt9O1xyXG4gICAgaWYgKHR5cGVvZiBjb25maWdfMS5kZWZhdWx0Lmdsb2JhbERhdGEgPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgIGdkID0gY29uZmlnXzEuZGVmYXVsdC5nbG9iYWxEYXRhKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0eXBlb2YgY29uZmlnXzEuZGVmYXVsdC5nbG9iYWxEYXRhID09PSBcIm9iamVjdFwiKSB7XHJcbiAgICAgICAgZ2QgPSBjb25maWdfMS5kZWZhdWx0Lmdsb2JhbERhdGE7XHJcbiAgICB9XHJcbiAgICBvYmpbY29udGFpbmVyXSA9IE9iamVjdC5hc3NpZ24oe30sIGdkLCBvYmpbY29udGFpbmVyXSk7XHJcbiAgICBvYmoubWV0aG9kID0gb2JqLm1ldGhvZCB8fCAnR0VUJztcclxuICAgIG9iai5kYXRhVHlwZSA9IG9iai5kYXRhVHlwZSB8fCAnanNvbic7XHJcbiAgICBpZiAob2JqLm1ldGhvZCAhPT0gXCJHRVRcIikge1xyXG4gICAgICAgIGlmIChzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb24pIHtcclxuICAgICAgICAgICAgaWYgKG9iai51cmwuaW5kZXhPZignPycpID49IDApIHtcclxuICAgICAgICAgICAgICAgIG9iai51cmwgKz0gJyYnICsgY29uZmlnXzEuZGVmYXVsdC5zZXNzaW9uTmFtZSArICc9JyArIGVuY29kZVVSSUNvbXBvbmVudChzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb24pO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgb2JqLnVybCArPSAnPycgKyBjb25maWdfMS5kZWZhdWx0LnNlc3Npb25OYW1lICsgJz0nICsgZW5jb2RlVVJJQ29tcG9uZW50KHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbik7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZm9yICh2YXIgaSBpbiBnZCkge1xyXG4gICAgICAgICAgICBpZiAob2JqLnVybC5pbmRleE9mKCc/JykgPj0gMCkge1xyXG4gICAgICAgICAgICAgICAgb2JqLnVybCArPSAnJicgKyBpICsgJz0nICsgZ2RbaV07XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgICBvYmoudXJsICs9ICc/JyArIGkgKyAnPScgKyBnZFtpXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGR1cmF0aW9uUmVwb3J0ZXJfMS5kZWZhdWx0LnN0YXJ0KG9iaik7XHJcbiAgICByZXR1cm4gb2JqO1xyXG59XHJcbmZ1bmN0aW9uIGRvUmVxdWVzdChvYmopIHtcclxuICAgIG9iaiA9IGluaXRpYWxpemUob2JqLCAnZGF0YScpO1xyXG4gICAgb2JqLmNvdW50Kys7XHJcbiAgICB3eC5yZXF1ZXN0KHtcclxuICAgICAgICB1cmw6IG9iai51cmwsXHJcbiAgICAgICAgZGF0YTogb2JqLmRhdGEsXHJcbiAgICAgICAgbWV0aG9kOiBvYmoubWV0aG9kLFxyXG4gICAgICAgIGhlYWRlcjogb2JqLmhlYWRlciB8fCB7fSxcclxuICAgICAgICBkYXRhVHlwZTogb2JqLmRhdGFUeXBlIHx8ICdqc29uJyxcclxuICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAocmVzKSB7XHJcbiAgICAgICAgICAgIHJlc3BvbnNlSGFuZGxlcl8xLmRlZmF1bHQocmVzLCBvYmosICdyZXF1ZXN0Jyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBmYWlsOiBmdW5jdGlvbiAocmVzKSB7XHJcbiAgICAgICAgICAgIGVycm9ySGFuZGxlcl8xLmRlZmF1bHQob2JqLCByZXMpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKHJlcyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBvYmouY291bnQtLTtcclxuICAgICAgICAgICAgdHlwZW9mIG9iai5jb21wbGV0ZSA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb3VudCA9PT0gMCAmJiBvYmouY29tcGxldGUoKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxufVxyXG5mdW5jdGlvbiBkb1VwbG9hZEZpbGUob2JqKSB7XHJcbiAgICBvYmouY291bnQrKztcclxuICAgIHd4LnVwbG9hZEZpbGUoe1xyXG4gICAgICAgIHVybDogb2JqLnVybCxcclxuICAgICAgICBmaWxlUGF0aDogb2JqLmZpbGVQYXRoIHx8ICcnLFxyXG4gICAgICAgIG5hbWU6IG9iai5uYW1lIHx8ICcnLFxyXG4gICAgICAgIGZvcm1EYXRhOiBvYmouZm9ybURhdGEsXHJcbiAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKHJlcykge1xyXG4gICAgICAgICAgICByZXNwb25zZUhhbmRsZXJfMS5kZWZhdWx0KHJlcywgb2JqLCAndXBsb2FkRmlsZScpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZmFpbDogZnVuY3Rpb24gKHJlcykge1xyXG4gICAgICAgICAgICBlcnJvckhhbmRsZXJfMS5kZWZhdWx0KG9iaiwgcmVzKTtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcihyZXMpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgb2JqLmNvdW50LS07XHJcbiAgICAgICAgICAgIHR5cGVvZiBvYmouY29tcGxldGUgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY291bnQgPT09IDAgJiYgb2JqLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfSk7XHJcbn1cclxuZnVuY3Rpb24gcmVxdWVzdChvYmopIHtcclxuICAgIG9iaiA9IHByZURvKG9iaik7XHJcbiAgICBpZiAoY29uZmlnXzEuZGVmYXVsdC5tb2NrSnNvbikge1xyXG4gICAgICAgIG1vY2tNYW5hZ2VyXzEuZGVmYXVsdC5nZXQob2JqLCAncmVxdWVzdCcpO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmIChvYmouY2FjaGUpIHtcclxuICAgICAgICBjYWNoZU1hbmFnZXJfMS5kZWZhdWx0LmdldChvYmopO1xyXG4gICAgfVxyXG4gICAgc2Vzc2lvbk1hbmFnZXJfMS5kZWZhdWx0KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBkb1JlcXVlc3Qob2JqKTtcclxuICAgIH0sIG9iaik7XHJcbn1cclxuZnVuY3Rpb24gdXBsb2FkRmlsZShvYmopIHtcclxuICAgIG9iaiA9IHByZURvKG9iaik7XHJcbiAgICBpZiAoY29uZmlnXzEuZGVmYXVsdC5tb2NrSnNvbikge1xyXG4gICAgICAgIG1vY2tNYW5hZ2VyXzEuZGVmYXVsdC5nZXQob2JqLCAndXBsb2FkRmlsZScpO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIGlmIChvYmouY2FjaGUpIHtcclxuICAgICAgICBjYWNoZU1hbmFnZXJfMS5kZWZhdWx0LmdldChvYmopO1xyXG4gICAgfVxyXG4gICAgc2Vzc2lvbk1hbmFnZXJfMS5kZWZhdWx0KGZ1bmN0aW9uICgpIHtcclxuICAgICAgICBkb1VwbG9hZEZpbGUob2JqKTtcclxuICAgIH0sIG9iaik7XHJcbn1cclxuZXhwb3J0cy5kZWZhdWx0ID0ge1xyXG4gICAgcmVxdWVzdDogcmVxdWVzdCxcclxuICAgIHVwbG9hZEZpbGU6IHVwbG9hZEZpbGVcclxufTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pY21WeGRXVnpkRWhoYm1Sc1pYSXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOHVMaTl6Y21NdmJXOWtkV3hsTDNKbGNYVmxjM1JJWVc1a2JHVnlMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3TzBGQlFVRXNNa05CUVhGRE8wRkJRM0pETERCRFFVRnZRenRCUVVOd1F5d3dRMEZCYjBNN1FVRkRjRU1zTmtOQlFYVkRPMEZCUTNaRExDdERRVUY1UXp0QlFVTjZReXh0UkVGQk5rTTdRVUZETjBNc0swTkJRWGxETzBGQlEzcERMSEZFUVVFclF6dEJRVU12UXl4MVJFRkJhMFE3UVVGSGJFUXNVMEZCVXl4TlFVRk5MRU5CUVVNc1IwRkJWenRKUVVOMlFpeEpRVUZKTEVkQlFVY3NRMEZCUXl4VlFVRlZMRU5CUVVNc1RVRkJUU3hEUVVGRExFVkJRVVU3VVVGRGVFSXNUMEZCVHl4SFFVRkhMRU5CUVVFN1MwRkRZanRUUVVGTk8xRkJRMGdzU1VGQlNTeFRRVUZUTEVkQlFVY3NaMEpCUVUwc1EwRkJReXhUUVVGVExFTkJRVU03VVVGRGFrTXNTVUZCU1N4UFFVRlBMR2RDUVVGTkxFTkJRVU1zVTBGQlV5eExRVUZMTEZWQlFWVXNSVUZCUlR0WlFVTjRReXhUUVVGVExFZEJRVWNzWjBKQlFVMHNRMEZCUXl4VFFVRlRMRVZCUVVVc1EwRkJRVHRUUVVOcVF6dFJRVU5FTEU5QlFVOHNVMEZCVXl4SFFVRkhMRWRCUVVjc1EwRkJRenRMUVVNeFFqdEJRVU5NTEVOQlFVTTdRVUZIUkN4VFFVRlRMRXRCUVVzc1EwRkJReXhIUVVGVE8wbEJRWGhDTEdsQ1FTdENRenRKUVRsQ1J5eEpRVUZITEU5QlFVOHNSMEZCUnl4RFFVRkRMRlZCUVZVc1MwRkJTeXhWUVVGVkxFVkJRVVU3VVVGRGNrTXNSMEZCUnl4RFFVRkRMRlZCUVZVc1JVRkJSU3hEUVVGRE8wdEJRM0JDTzBsQlJVUXNTVUZCU1N4UFFVRlBMRWRCUVVjc1EwRkJReXhaUVVGWkxFdEJRVXNzVjBGQlZ5eEZRVUZGTzFGQlEzcERMRWRCUVVjc1EwRkJReXhaUVVGWkxFZEJRVWNzUTBGQlF5eERRVUZETzB0QlEzaENPMU5CUVUwN1VVRkRTQ3hIUVVGSExFTkJRVU1zV1VGQldTeEZRVUZGTEVOQlFVTTdTMEZEZEVJN1NVRkZSQ3hKUVVGSkxFOUJRVThzUjBGQlJ5eERRVUZETEV0QlFVc3NTMEZCU3l4WFFVRlhMRVZCUVVVN1VVRkRiRU1zUjBGQlJ5eERRVUZETEV0QlFVc3NSMEZCUnl4RFFVRkRMRU5CUVVNN1MwRkRha0k3U1VGRlJDeEpRVUZKTEVkQlFVY3NRMEZCUXl4WFFVRlhMRVZCUVVVN1VVRkRha0lzYVVKQlFVOHNRMEZCUXl4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExGZEJRVmNzUTBGQlF5eERRVUZETzFGQlF6bENMRWRCUVVjc1EwRkJReXhSUVVGUkxFZEJRVWNzUTBGQlF5eFZRVUZETEVWQlFWazdXVUZCUlN4alFVRlBPMmxDUVVGUUxGVkJRVThzUlVGQlVDeHhRa0ZCVHl4RlFVRlFMRWxCUVU4N1owSkJRVkFzTmtKQlFVODdPMWxCUTJ4RExFOUJRVTg3WjBKQlJVZ3NhVUpCUVU4c1EwRkJReXhKUVVGSkxFVkJRVVVzUTBGQlF6dG5Ra0ZGWml4UFFVRlBMRVZCUVVVc1MwRkJTeXhWUVVGVkxFbEJRVWtzUlVGQlJTeERRVUZETEV0QlFVc3NUMEZCVWl4RlFVRkZMRWRCUVU4c1MwRkJTU3hUUVVGTExFbEJRVWtzUlVGQlF5eERRVUZETzFsQlEzaEVMRU5CUVVNc1EwRkJRVHRSUVVOTUxFTkJRVU1zUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4UlFVRlJMRU5CUVVNc1EwRkJRVHRMUVVOdVFqdEpRVVZFTEVkQlFVY3NRMEZCUXl4VFFVRlRMRWRCUVVjc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF6dEpRVU40UWl4SFFVRkhMRU5CUVVNc1IwRkJSeXhIUVVGSExFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1NVRkZNVUlzVDBGQlR5eEhRVUZITEVOQlFVTTdRVUZEWml4RFFVRkRPMEZCUjBRc1UwRkJVeXhWUVVGVkxFTkJRVU1zUjBGQlV5eEZRVUZGTEZOQlFXVTdTVUZETVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eFRRVUZUTEVOQlFVTXNSVUZCUlR0UlFVTnFRaXhIUVVGSExFTkJRVU1zVTBGQlV5eERRVUZETEVkQlFVY3NSVUZCUlN4RFFVRkRPMHRCUTNaQ08wbEJSVVFzU1VGQlNTeEhRVUZITEVOQlFVTXNVMEZCVXl4TFFVRkxMR2RDUVVGTkxFTkJRVU1zWVVGQllTeERRVUZETEVkQlFVY3NTVUZCU1N4blFrRkJUU3hEUVVGRExFOUJRVThzUlVGQlJUdFJRVU01UkN4SFFVRkhMRU5CUVVNc1UwRkJVeXhEUVVGRExFTkJRVU1zWjBKQlFVMHNRMEZCUXl4WFFVRlpMRU5CUVVNc1IwRkJSeXhuUWtGQlRTeERRVUZETEU5QlFVOHNRMEZCUXp0TFFVTjRSRHRKUVVkRUxFbEJRVWtzUlVGQlJTeEhRVUZSTEVWQlFVVXNRMEZCUXp0SlFVTnFRaXhKUVVGSkxFOUJRVThzWjBKQlFVMHNRMEZCUXl4VlFVRlZMRXRCUVVzc1ZVRkJWU3hGUVVGRk8xRkJRM3BETEVWQlFVVXNSMEZCUnl4blFrRkJUU3hEUVVGRExGVkJRVlVzUlVGQlJTeERRVUZETzB0QlF6VkNPMU5CUVUwc1NVRkJTU3hQUVVGUExHZENRVUZOTEVOQlFVTXNWVUZCVlN4TFFVRkxMRkZCUVZFc1JVRkJSVHRSUVVNNVF5eEZRVUZGTEVkQlFVY3NaMEpCUVUwc1EwRkJReXhWUVVGVkxFTkJRVU03UzBGRE1VSTdTVUZEUkN4SFFVRkhMRU5CUVVNc1UwRkJVeXhEUVVGRExFZEJRVWNzVFVGQlRTeERRVUZETEUxQlFVMHNRMEZCUXl4RlFVRkZMRVZCUVVVc1JVRkJSU3hGUVVGRkxFZEJRVWNzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RFFVRkRPMGxCUlhaRUxFZEJRVWNzUTBGQlF5eE5RVUZOTEVkQlFVY3NSMEZCUnl4RFFVRkRMRTFCUVUwc1NVRkJTU3hMUVVGTExFTkJRVU03U1VGRGFrTXNSMEZCUnl4RFFVRkRMRkZCUVZFc1IwRkJSeXhIUVVGSExFTkJRVU1zVVVGQlVTeEpRVUZKTEUxQlFVMHNRMEZCUXp0SlFVZDBReXhKUVVGSkxFZEJRVWNzUTBGQlF5eE5RVUZOTEV0QlFVc3NTMEZCU3l4RlFVRkZPMUZCUlhSQ0xFbEJRVWtzWjBKQlFVMHNRMEZCUXl4UFFVRlBMRVZCUVVVN1dVRkRhRUlzU1VGQlNTeEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVTdaMEpCUXpOQ0xFZEJRVWNzUTBGQlF5eEhRVUZITEVsQlFVa3NSMEZCUnl4SFFVRkhMR2RDUVVGTkxFTkJRVU1zVjBGQlZ5eEhRVUZITEVkQlFVY3NSMEZCUnl4clFrRkJhMElzUTBGQlF5eG5Ra0ZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8yRkJRMnhHTzJsQ1FVRk5PMmRDUVVOSUxFZEJRVWNzUTBGQlF5eEhRVUZITEVsQlFVa3NSMEZCUnl4SFFVRkhMR2RDUVVGTkxFTkJRVU1zVjBGQlZ5eEhRVUZITEVkQlFVY3NSMEZCUnl4clFrRkJhMElzUTBGQlF5eG5Ra0ZCVFN4RFFVRkRMRTlCUVU4c1EwRkJReXhEUVVGRE8yRkJRMnhHTzFOQlEwbzdVVUZIUkN4TFFVRkxMRWxCUVVrc1EwRkJReXhKUVVGSkxFVkJRVVVzUlVGQlJUdFpRVU5rTEVsQlFVa3NSMEZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4RlFVRkZPMmRDUVVNelFpeEhRVUZITEVOQlFVTXNSMEZCUnl4SlFVRkpMRWRCUVVjc1IwRkJSeXhEUVVGRExFZEJRVWNzUjBGQlJ5eEhRVUZITEVWQlFVVXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJRenRoUVVOd1F6dHBRa0ZCVFR0blFrRkRTQ3hIUVVGSExFTkJRVU1zUjBGQlJ5eEpRVUZKTEVkQlFVY3NSMEZCUnl4RFFVRkRMRWRCUVVjc1IwRkJSeXhIUVVGSExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXp0aFFVTndRenRUUVVOS08wdEJRMG83U1VGRlJDd3dRa0ZCWjBJc1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZGTlVJc1QwRkJUeXhIUVVGSExFTkJRVU03UVVGRFppeERRVUZETzBGQlJVUXNVMEZCVXl4VFFVRlRMRU5CUVVNc1IwRkJVenRKUVVONFFpeEhRVUZITEVkQlFVY3NWVUZCVlN4RFFVRkRMRWRCUVVjc1JVRkJSU3hOUVVGTkxFTkJRVU1zUTBGQlF6dEpRVU01UWl4SFFVRkhMRU5CUVVNc1MwRkJTeXhGUVVGRkxFTkJRVU03U1VGRFdpeEZRVUZGTEVOQlFVTXNUMEZCVHl4RFFVRkRPMUZCUTFBc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eEhRVUZITzFGQlExb3NTVUZCU1N4RlFVRkZMRWRCUVVjc1EwRkJReXhKUVVGSk8xRkJRMlFzVFVGQlRTeEZRVUZGTEVkQlFVY3NRMEZCUXl4TlFVRk5PMUZCUTJ4Q0xFMUJRVTBzUlVGQlJTeEhRVUZITEVOQlFVTXNUVUZCVFN4SlFVRkpMRVZCUVVVN1VVRkRlRUlzVVVGQlVTeEZRVUZGTEVkQlFVY3NRMEZCUXl4UlFVRlJMRWxCUVVrc1RVRkJUVHRSUVVOb1F5eFBRVUZQTEVWQlFVVXNWVUZCVlN4SFFVRnZRenRaUVVOdVJDeDVRa0ZCWlN4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFVkJRVVVzVTBGQlV5eERRVUZETEVOQlFVRTdVVUZEZUVNc1EwRkJRenRSUVVORUxFbEJRVWtzUlVGQlJTeFZRVUZWTEVkQlFUWkNPMWxCUTNwRExITkNRVUZaTEVOQlFVTXNSMEZCUnl4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRE8xbEJRM1pDTEU5QlFVOHNRMEZCUXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03VVVGRGRrSXNRMEZCUXp0UlFVTkVMRkZCUVZFc1JVRkJSVHRaUVVOT0xFZEJRVWNzUTBGQlF5eExRVUZMTEVWQlFVVXNRMEZCUXp0WlFVTmFMRTlCUVU4c1IwRkJSeXhEUVVGRExGRkJRVkVzUzBGQlN5eFZRVUZWTEVsQlFVa3NSMEZCUnl4RFFVRkRMRXRCUVVzc1MwRkJTeXhEUVVGRExFbEJRVWtzUjBGQlJ5eERRVUZETEZGQlFWRXNSVUZCUlN4RFFVRkRPMUZCUXpWRkxFTkJRVU03UzBGRFNpeERRVUZETEVOQlFVRTdRVUZEVGl4RFFVRkRPMEZCUlVRc1UwRkJVeXhaUVVGWkxFTkJRVU1zUjBGQlV6dEpRVU16UWl4SFFVRkhMRU5CUVVNc1MwRkJTeXhGUVVGRkxFTkJRVU03U1VGRFdpeEZRVUZGTEVOQlFVTXNWVUZCVlN4RFFVRkRPMUZCUTFZc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eEhRVUZITzFGQlExb3NVVUZCVVN4RlFVRkZMRWRCUVVjc1EwRkJReXhSUVVGUkxFbEJRVWtzUlVGQlJUdFJRVU0xUWl4SlFVRkpMRVZCUVVVc1IwRkJSeXhEUVVGRExFbEJRVWtzU1VGQlNTeEZRVUZGTzFGQlEzQkNMRkZCUVZFc1JVRkJSU3hIUVVGSExFTkJRVU1zVVVGQlVUdFJRVU4wUWl4UFFVRlBMRVZCUVVVc1ZVRkJWU3hIUVVGMVF6dFpRVU4wUkN4NVFrRkJaU3hEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVWQlFVVXNXVUZCV1N4RFFVRkRMRU5CUVVFN1VVRkRNME1zUTBGQlF6dFJRVU5FTEVsQlFVa3NSVUZCUlN4VlFVRlZMRWRCUVRaQ08xbEJRM3BETEhOQ1FVRlpMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETzFsQlEzWkNMRTlCUVU4c1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdVVUZEZGtJc1EwRkJRenRSUVVORUxGRkJRVkVzUlVGQlJUdFpRVU5PTEVkQlFVY3NRMEZCUXl4TFFVRkxMRVZCUVVVc1EwRkJRenRaUVVOYUxFOUJRVThzUjBGQlJ5eERRVUZETEZGQlFWRXNTMEZCU3l4VlFVRlZMRWxCUVVrc1IwRkJSeXhEUVVGRExFdEJRVXNzUzBGQlN5eERRVUZETEVsQlFVa3NSMEZCUnl4RFFVRkRMRkZCUVZFc1JVRkJSU3hEUVVGRE8xRkJRelZGTEVOQlFVTTdTMEZEU2l4RFFVRkRMRU5CUVVFN1FVRkRUaXhEUVVGRE8wRkJSVVFzVTBGQlV5eFBRVUZQTEVOQlFVTXNSMEZCVXp0SlFVTjBRaXhIUVVGSExFZEJRVWNzUzBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMGxCUTJwQ0xFbEJRVWNzWjBKQlFVMHNRMEZCUXl4UlFVRlJMRVZCUVVVN1VVRkRhRUlzY1VKQlFWY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhGUVVGRkxGTkJRVk1zUTBGQlF5eERRVUZETzFGQlEyaERMRTlCUVU4c1MwRkJTeXhEUVVGRE8wdEJRMmhDTzBsQlEwUXNTVUZCUnl4SFFVRkhMRU5CUVVNc1MwRkJTeXhGUVVGRk8xRkJRMVlzYzBKQlFWa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03UzBGRGVrSTdTVUZGUkN4M1FrRkJZeXhEUVVGRE8xRkJRMWdzVTBGQlV5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkJPMGxCUTJ4Q0xFTkJRVU1zUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUVR0QlFVTllMRU5CUVVNN1FVRkZSQ3hUUVVGVExGVkJRVlVzUTBGQlF5eEhRVUZUTzBsQlEzcENMRWRCUVVjc1IwRkJSeXhMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZEYWtJc1NVRkJSeXhuUWtGQlRTeERRVUZETEZGQlFWRXNSVUZCUlR0UlFVTm9RaXh4UWtGQlZ5eERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRVZCUVVVc1dVRkJXU3hEUVVGRExFTkJRVU03VVVGRGJrTXNUMEZCVHl4TFFVRkxMRU5CUVVNN1MwRkRhRUk3U1VGRFJDeEpRVUZITEVkQlFVY3NRMEZCUXl4TFFVRkxMRVZCUVVVN1VVRkRWaXh6UWtGQldTeERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRMUVVONlFqdEpRVVZFTEhkQ1FVRmpMRU5CUVVNN1VVRkRXQ3haUVVGWkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVRTdTVUZEY2tJc1EwRkJReXhGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZCTzBGQlExZ3NRMEZCUXp0QlFVVkVMR3RDUVVGbE8wbEJRMWdzVDBGQlR5eFRRVUZCTzBsQlExQXNWVUZCVlN4WlFVRkJPME5CUTJJc1EwRkJRU0lzSW5OdmRYSmpaWE5EYjI1MFpXNTBJanBiSW1sdGNHOXlkQ0JzYjJGa2FXNW5JR1p5YjIwZ0p5NHVMM1YwYVd3dmJHOWhaR2x1WnlkY2NseHVhVzF3YjNKMElHTnZibVpwWnlCbWNtOXRJQ2N1TGk5emRHOXlaUzlqYjI1bWFXY25YSEpjYm1sdGNHOXlkQ0J6ZEdGMGRYTWdabkp2YlNBbkxpNHZjM1J2Y21VdmMzUmhkSFZ6SjF4eVhHNXBiWEJ2Y25RZ2JXOWphMDFoYm1GblpYSWdabkp2YlNBbkxpOXRiMk5yVFdGdVlXZGxjaWRjY2x4dWFXMXdiM0owSUdOaFkyaGxUV0Z1WVdkbGNpQm1jbTl0SUNjdUwyTmhZMmhsVFdGdVlXZGxjaWRjY2x4dWFXMXdiM0owSUhObGMzTnBiMjVOWVc1aFoyVnlJR1p5YjIwZ0p5NHZjMlZ6YzJsdmJrMWhibUZuWlhJblhISmNibWx0Y0c5eWRDQmxjbkp2Y2toaGJtUnNaWElnWm5KdmJTQW5MaTlsY25KdmNraGhibVJzWlhJblhISmNibWx0Y0c5eWRDQnlaWE53YjI1elpVaGhibVJzWlhJZ1puSnZiU0FuTGk5eVpYTndiMjV6WlVoaGJtUnNaWEluWEhKY2JtbHRjRzl5ZENCa2RYSmhkR2x2YmxKbGNHOXlkR1Z5SUdaeWIyMGdYQ0l1TDJSMWNtRjBhVzl1VW1Wd2IzSjBaWEpjSWp0Y2NseHVYSEpjYmk4dklPYWd2T1c4aitXTWxuVnliRnh5WEc1bWRXNWpkR2x2YmlCbWIzSnRZWFFvZFhKc09pQnpkSEpwYm1jcElIdGNjbHh1SUNBZ0lHbG1JQ2gxY213dWMzUmhjblJ6VjJsMGFDZ25hSFIwY0NjcEtTQjdYSEpjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSFZ5YkZ4eVhHNGdJQ0FnZlNCbGJITmxJSHRjY2x4dUlDQWdJQ0FnSUNCc1pYUWdkWEpzVUdWeVptbDRJRDBnWTI5dVptbG5MblZ5YkZCbGNtWnBlRHRjY2x4dUlDQWdJQ0FnSUNCcFppQW9kSGx3Wlc5bUlHTnZibVpwWnk1MWNteFFaWEptYVhnZ1BUMDlJRndpWm5WdVkzUnBiMjVjSWlrZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCMWNteFFaWEptYVhnZ1BTQmpiMjVtYVdjdWRYSnNVR1Z5Wm1sNEtDbGNjbHh1SUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhWeWJGQmxjbVpwZUNBcklIVnliRHRjY2x4dUlDQWdJSDFjY2x4dWZWeHlYRzVjY2x4dUx5OGc1b21BNXB5SjZLKzM1ckdDNVkrUjVZZTY1WW1ONlp5QTZLYUI1WUdhNTVxRTVMcUw1b09GWEhKY2JtWjFibU4wYVc5dUlIQnlaVVJ2S0c5aWFqb2dWRTlFVHlrZ2UxeHlYRzRnSUNBZ2FXWW9kSGx3Wlc5bUlHOWlhaTVpWldadmNtVlRaVzVrSUQwOVBTQmNJbVoxYm1OMGFXOXVYQ0lwSUh0Y2NseHVJQ0FnSUNBZ0lDQnZZbW91WW1WbWIzSmxVMlZ1WkNncE8xeHlYRzRnSUNBZ2ZWeHlYRzRnSUNBZ0x5OGc1NW03NWIyVjVvQ0I1YVN4NXBXSTc3eU02WWVONWFTTjU1bTc1YjJWNks2aDVwV3dYSEpjYmlBZ0lDQnBaaUFvZEhsd1pXOW1JRzlpYWk1eVpVeHZaMmx1VEdsdGFYUWdQVDA5SUZ3aWRXNWtaV1pwYm1Wa1hDSXBJSHRjY2x4dUlDQWdJQ0FnSUNCdlltb3VjbVZNYjJkcGJreHBiV2wwSUQwZ01EdGNjbHh1SUNBZ0lIMGdaV3h6WlNCN1hISmNiaUFnSUNBZ0lDQWdiMkpxTG5KbFRHOW5hVzVNYVcxcGRDc3JPMXh5WEc0Z0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUdsbUlDaDBlWEJsYjJZZ2IySnFMbU52ZFc1MElEMDlQU0JjSW5WdVpHVm1hVzVsWkZ3aUtTQjdYSEpjYmlBZ0lDQWdJQ0FnYjJKcUxtTnZkVzUwSUQwZ01EdGNjbHh1SUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0JwWmlBb2IySnFMbk5vYjNkTWIyRmthVzVuS1NCN1hISmNiaUFnSUNBZ0lDQWdiRzloWkdsdVp5NXphRzkzS0c5aWFpNXphRzkzVEc5aFpHbHVaeWs3WEhKY2JpQWdJQ0FnSUNBZ2IySnFMbU52YlhCc1pYUmxJRDBnS0NobWJqb2dSblZ1WTNScGIyNHNJQzR1TG1GeVozTXBJRDArSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnY21WMGRYSnVJQ2dwUFQ0Z2UxeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdMeThnVkU5RVR5RGt2Yi9ubEtoUWNtOXRhWE5sNXBhNTVieVA1WkNPNzd5TTVZK3Y2SU85NUxpTjZaeUE2S2FCNkwrWjVMcWI1THFHWEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCc2IyRmthVzVuTG1ocFpHVW9LVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUM4dklFQjBjeTFwWjI1dmNtVmNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSFI1Y0dWdlppQm1iaUE5UFQwZ1hDSm1kVzVqZEdsdmJsd2lJQ1ltSUdadUxtRndjR3g1S0hSb2FYTXNJQzR1TG1GeVozTXBPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJQ0FnZlNrb2IySnFMbU52YlhCc1pYUmxLVnh5WEc0Z0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUc5aWFpNXZjbWxuYVc1VmNtd2dQU0J2WW1vdWRYSnNPMXh5WEc0Z0lDQWdiMkpxTG5WeWJDQTlJR1p2Y20xaGRDaHZZbW91ZFhKc0tUdGNjbHh1WEhKY2JpQWdJQ0J5WlhSMWNtNGdiMkpxTzF4eVhHNTlYSEpjYmx4eVhHNHZMeURtb0x6bHZJL2xqSmJscElUbmtJYm9yN2Ztc1lMbm1vUnZZbXJsaG9YbHJybGNjbHh1Wm5WdVkzUnBiMjRnYVc1cGRHbGhiR2w2WlNodlltbzZJRlJQUkU4c0lHTnZiblJoYVc1bGNqb2dWRTlFVHlrZ2UxeHlYRzRnSUNBZ2FXWWdLQ0Z2WW1wYlkyOXVkR0ZwYm1WeVhTa2dlMXh5WEc0Z0lDQWdJQ0FnSUc5aWFsdGpiMjUwWVdsdVpYSmRJRDBnZTMwN1hISmNiaUFnSUNCOVhISmNibHh5WEc0Z0lDQWdhV1lnS0c5aWFpNXZjbWxuYVc1VmNtd2dJVDA5SUdOdmJtWnBaeTVqYjJSbFZHOVRaWE56YVc5dUxuVnliQ0FtSmlCemRHRjBkWE11YzJWemMybHZiaWtnZTF4eVhHNGdJQ0FnSUNBZ0lHOWlhbHRqYjI1MFlXbHVaWEpkVzJOdmJtWnBaeTV6WlhOemFXOXVUbUZ0WlNGZElEMGdjM1JoZEhWekxuTmxjM05wYjI0N1hISmNiaUFnSUNCOVhISmNibHh5WEc0Z0lDQWdMeThnNWFhQzVwNmM1cHlKNVlXbzViR0E1WStDNXBXdzc3eU01WWlaNXJlNzVZcWdYSEpjYmlBZ0lDQnNaWFFnWjJRNklHRnVlU0E5SUh0OU8xeHlYRzRnSUNBZ2FXWWdLSFI1Y0dWdlppQmpiMjVtYVdjdVoyeHZZbUZzUkdGMFlTQTlQVDBnWENKbWRXNWpkR2x2Ymx3aUtTQjdYSEpjYmlBZ0lDQWdJQ0FnWjJRZ1BTQmpiMjVtYVdjdVoyeHZZbUZzUkdGMFlTZ3BPMXh5WEc0Z0lDQWdmU0JsYkhObElHbG1JQ2gwZVhCbGIyWWdZMjl1Wm1sbkxtZHNiMkpoYkVSaGRHRWdQVDA5SUZ3aWIySnFaV04wWENJcElIdGNjbHh1SUNBZ0lDQWdJQ0JuWkNBOUlHTnZibVpwWnk1bmJHOWlZV3hFWVhSaE8xeHlYRzRnSUNBZ2ZWeHlYRzRnSUNBZ2IySnFXMk52Ym5SaGFXNWxjbDBnUFNCUFltcGxZM1F1WVhOemFXZHVLSHQ5TENCblpDd2diMkpxVzJOdmJuUmhhVzVsY2wwcE8xeHlYRzVjY2x4dUlDQWdJRzlpYWk1dFpYUm9iMlFnUFNCdlltb3ViV1YwYUc5a0lIeDhJQ2RIUlZRbk8xeHlYRzRnSUNBZ2IySnFMbVJoZEdGVWVYQmxJRDBnYjJKcUxtUmhkR0ZVZVhCbElIeDhJQ2RxYzI5dUp6dGNjbHh1WEhKY2JpQWdJQ0F2THlEbHBvTG1ucHpvcjdmbXNZTGt1STNtbUs5SFJWVHZ2SXpsaUpubG5LaFZVa3prdUszb2g2cmxpcWpsaXFEa3VJcm5tYnZsdlpYbWdJSGxrb3psaGFqbHNZRGxqNExtbGJCY2NseHVJQ0FnSUdsbUlDaHZZbW91YldWMGFHOWtJQ0U5UFNCY0lrZEZWRndpS1NCN1hISmNibHh5WEc0Z0lDQWdJQ0FnSUdsbUlDaHpkR0YwZFhNdWMyVnpjMmx2YmlrZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9iMkpxTG5WeWJDNXBibVJsZUU5bUtDYy9KeWtnUGowZ01Da2dlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYjJKcUxuVnliQ0FyUFNBbkppY2dLeUJqYjI1bWFXY3VjMlZ6YzJsdmJrNWhiV1VnS3lBblBTY2dLeUJsYm1OdlpHVlZVa2xEYjIxd2IyNWxiblFvYzNSaGRIVnpMbk5sYzNOcGIyNHBPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiMkpxTG5WeWJDQXJQU0FuUHljZ0t5QmpiMjVtYVdjdWMyVnpjMmx2Yms1aGJXVWdLeUFuUFNjZ0t5QmxibU52WkdWVlVrbERiMjF3YjI1bGJuUW9jM1JoZEhWekxuTmxjM05wYjI0cE8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhISmNiaUFnSUNBZ0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUNBZ0lDQXZMeURscG9MbW5wem1uSW5saGFqbHNZRGxqNExtbGJEdnZJemxpSm5sbktoVlVremt1SzNtdDd2bGlxQmNjbHh1SUNBZ0lDQWdJQ0JtYjNJZ0tHeGxkQ0JwSUdsdUlHZGtLU0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJR2xtSUNodlltb3VkWEpzTG1sdVpHVjRUMllvSno4bktTQStQU0F3S1NCN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnZZbW91ZFhKc0lDczlJQ2NtSnlBcklHa2dLeUFuUFNjZ0t5Qm5aRnRwWFR0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnZlNCbGJITmxJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUc5aWFpNTFjbXdnS3owZ0p6OG5JQ3NnYVNBcklDYzlKeUFySUdka1cybGRPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJQ0FnZlZ4eVhHNGdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lHUjFjbUYwYVc5dVVtVndiM0owWlhJdWMzUmhjblFvYjJKcUtUdGNjbHh1WEhKY2JpQWdJQ0J5WlhSMWNtNGdiMkpxTzF4eVhHNTlYSEpjYmx4eVhHNW1kVzVqZEdsdmJpQmtiMUpsY1hWbGMzUW9iMkpxT2lCVVQwUlBLU0I3WEhKY2JpQWdJQ0J2WW1vZ1BTQnBibWwwYVdGc2FYcGxLRzlpYWl3Z0oyUmhkR0VuS1R0Y2NseHVJQ0FnSUc5aWFpNWpiM1Z1ZENzck8xeHlYRzRnSUNBZ2QzZ3VjbVZ4ZFdWemRDaDdYSEpjYmlBZ0lDQWdJQ0FnZFhKc09pQnZZbW91ZFhKc0xGeHlYRzRnSUNBZ0lDQWdJR1JoZEdFNklHOWlhaTVrWVhSaExGeHlYRzRnSUNBZ0lDQWdJRzFsZEdodlpEb2diMkpxTG0xbGRHaHZaQ3hjY2x4dUlDQWdJQ0FnSUNCb1pXRmtaWEk2SUc5aWFpNW9aV0ZrWlhJZ2ZId2dlMzBzWEhKY2JpQWdJQ0FnSUNBZ1pHRjBZVlI1Y0dVNklHOWlhaTVrWVhSaFZIbHdaU0I4ZkNBbmFuTnZiaWNzWEhKY2JpQWdJQ0FnSUNBZ2MzVmpZMlZ6Y3pvZ1puVnVZM1JwYjI0Z0tISmxjem9nZDNndVVtVnhkV1Z6ZEZOMVkyTmxjM05EWVd4c1ltRmphMUpsYzNWc2RDa2dlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnlaWE53YjI1elpVaGhibVJzWlhJb2NtVnpMQ0J2WW1vc0lDZHlaWEYxWlhOMEp5bGNjbHh1SUNBZ0lDQWdJQ0I5TEZ4eVhHNGdJQ0FnSUNBZ0lHWmhhV3c2SUdaMWJtTjBhVzl1SUNoeVpYTTZJSGQ0TGtkbGJtVnlZV3hEWVd4c1ltRmphMUpsYzNWc2RDa2dlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQmxjbkp2Y2toaGJtUnNaWElvYjJKcUxDQnlaWE1wTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emIyeGxMbVZ5Y205eUtISmxjeWs3WEhKY2JpQWdJQ0FnSUNBZ2ZTeGNjbHh1SUNBZ0lDQWdJQ0JqYjIxd2JHVjBaVG9nWm5WdVkzUnBiMjRnS0NrZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCdlltb3VZMjkxYm5RdExUdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2RIbHdaVzltSUc5aWFpNWpiMjF3YkdWMFpTQTlQVDBnWENKbWRXNWpkR2x2Ymx3aUlDWW1JRzlpYWk1amIzVnVkQ0E5UFQwZ01DQW1KaUJ2WW1vdVkyOXRjR3hsZEdVb0tUdGNjbHh1SUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0I5S1Z4eVhHNTlYSEpjYmx4eVhHNW1kVzVqZEdsdmJpQmtiMVZ3Ykc5aFpFWnBiR1VvYjJKcU9pQlVUMFJQS1NCN1hISmNiaUFnSUNCdlltb3VZMjkxYm5Rckt6dGNjbHh1SUNBZ0lIZDRMblZ3Ykc5aFpFWnBiR1VvZTF4eVhHNGdJQ0FnSUNBZ0lIVnliRG9nYjJKcUxuVnliQ3hjY2x4dUlDQWdJQ0FnSUNCbWFXeGxVR0YwYURvZ2IySnFMbVpwYkdWUVlYUm9JSHg4SUNjbkxGeHlYRzRnSUNBZ0lDQWdJRzVoYldVNklHOWlhaTV1WVcxbElIeDhJQ2NuTEZ4eVhHNGdJQ0FnSUNBZ0lHWnZjbTFFWVhSaE9pQnZZbW91Wm05eWJVUmhkR0VzWEhKY2JpQWdJQ0FnSUNBZ2MzVmpZMlZ6Y3pvZ1puVnVZM1JwYjI0Z0tISmxjem9nZDNndVZYQnNiMkZrUm1sc1pWTjFZMk5sYzNORFlXeHNZbUZqYTFKbGMzVnNkQ2tnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0J5WlhOd2IyNXpaVWhoYm1Sc1pYSW9jbVZ6TENCdlltb3NJQ2QxY0d4dllXUkdhV3hsSnlsY2NseHVJQ0FnSUNBZ0lDQjlMRnh5WEc0Z0lDQWdJQ0FnSUdaaGFXdzZJR1oxYm1OMGFXOXVJQ2h5WlhNNklIZDRMa2RsYm1WeVlXeERZV3hzWW1GamExSmxjM1ZzZENrZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCbGNuSnZja2hoYm1Sc1pYSW9iMkpxTENCeVpYTXBPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpiMjV6YjJ4bExtVnljbTl5S0hKbGN5azdYSEpjYmlBZ0lDQWdJQ0FnZlN4Y2NseHVJQ0FnSUNBZ0lDQmpiMjF3YkdWMFpUb2dablZ1WTNScGIyNGdLQ2tnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0J2WW1vdVkyOTFiblF0TFR0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnZEhsd1pXOW1JRzlpYWk1amIyMXdiR1YwWlNBOVBUMGdYQ0ptZFc1amRHbHZibHdpSUNZbUlHOWlhaTVqYjNWdWRDQTlQVDBnTUNBbUppQnZZbW91WTI5dGNHeGxkR1VvS1R0Y2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQjlLVnh5WEc1OVhISmNibHh5WEc1bWRXNWpkR2x2YmlCeVpYRjFaWE4wS0c5aWFqb2dWRTlFVHlrNklGUlBSRThnZTF4eVhHNGdJQ0FnYjJKcUlEMGdjSEpsUkc4b2IySnFLVHRjY2x4dUlDQWdJR2xtS0dOdmJtWnBaeTV0YjJOclNuTnZiaWtnZTF4eVhHNGdJQ0FnSUNBZ0lHMXZZMnROWVc1aFoyVnlMbWRsZENodlltb3NJQ2R5WlhGMVpYTjBKeWs3WEhKY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUdaaGJITmxPMXh5WEc0Z0lDQWdmVnh5WEc0Z0lDQWdhV1lvYjJKcUxtTmhZMmhsS1NCN1hISmNiaUFnSUNBZ0lDQWdZMkZqYUdWTllXNWhaMlZ5TG1kbGRDaHZZbW9wTzF4eVhHNGdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lITmxjM05wYjI1TllXNWhaMlZ5S0NncFBUNTdYSEpjYmlBZ0lDQWdJQ0FnWkc5U1pYRjFaWE4wS0c5aWFpbGNjbHh1SUNBZ0lIMHNJRzlpYWlsY2NseHVmVnh5WEc1Y2NseHVablZ1WTNScGIyNGdkWEJzYjJGa1JtbHNaU2h2WW1vNklGUlBSRThwT2lCVVQwUlBJSHRjY2x4dUlDQWdJRzlpYWlBOUlIQnlaVVJ2S0c5aWFpazdYSEpjYmlBZ0lDQnBaaWhqYjI1bWFXY3ViVzlqYTBwemIyNHBJSHRjY2x4dUlDQWdJQ0FnSUNCdGIyTnJUV0Z1WVdkbGNpNW5aWFFvYjJKcUxDQW5kWEJzYjJGa1JtbHNaU2NwTzF4eVhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCbVlXeHpaVHRjY2x4dUlDQWdJSDFjY2x4dUlDQWdJR2xtS0c5aWFpNWpZV05vWlNrZ2UxeHlYRzRnSUNBZ0lDQWdJR05oWTJobFRXRnVZV2RsY2k1blpYUW9iMkpxS1R0Y2NseHVJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQnpaWE56YVc5dVRXRnVZV2RsY2lnb0tUMCtlMXh5WEc0Z0lDQWdJQ0FnSUdSdlZYQnNiMkZrUm1sc1pTaHZZbW9wWEhKY2JpQWdJQ0I5TENCdlltb3BYSEpjYm4xY2NseHVYSEpjYm1WNGNHOXlkQ0JrWldaaGRXeDBJSHRjY2x4dUlDQWdJSEpsY1hWbGMzUXNYSEpjYmlBZ0lDQjFjR3h2WVdSR2FXeGxYSEpjYm4xY2NseHVJbDE5IiwiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxudmFyIGNvbmZpZ18xID0gcmVxdWlyZShcIi4uL3N0b3JlL2NvbmZpZ1wiKTtcclxudmFyIHN0YXR1c18xID0gcmVxdWlyZShcIi4uL3N0b3JlL3N0YXR1c1wiKTtcclxudmFyIHJlcXVlc3RIYW5kbGVyXzEgPSByZXF1aXJlKFwiLi9yZXF1ZXN0SGFuZGxlclwiKTtcclxudmFyIGVycm9ySGFuZGxlcl8xID0gcmVxdWlyZShcIi4vZXJyb3JIYW5kbGVyXCIpO1xyXG52YXIgY2FjaGVNYW5hZ2VyXzEgPSByZXF1aXJlKFwiLi9jYWNoZU1hbmFnZXJcIik7XHJcbnZhciBkdXJhdGlvblJlcG9ydGVyXzEgPSByZXF1aXJlKFwiLi9kdXJhdGlvblJlcG9ydGVyXCIpO1xyXG5mdW5jdGlvbiByZXNwb25zZShyZXMsIG9iaiwgbWV0aG9kKSB7XHJcbiAgICBpZiAocmVzLnN0YXR1c0NvZGUgPT09IDIwMCkge1xyXG4gICAgICAgIGlmICh0eXBlb2YgcmVzLmRhdGEgPT09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIHJlcy5kYXRhID0gSlNPTi5wYXJzZShyZXMuZGF0YSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIGVycm9ySGFuZGxlcl8xLmRlZmF1bHQob2JqLCByZXMpO1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGR1cmF0aW9uUmVwb3J0ZXJfMS5kZWZhdWx0LmVuZChvYmopO1xyXG4gICAgICAgIGlmIChvYmouaXNMb2dpbikge1xyXG4gICAgICAgICAgICB2YXIgcyA9IFwiXCI7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBzID0gY29uZmlnXzEuZGVmYXVsdC5jb2RlVG9TZXNzaW9uLnN1Y2Nlc3MocmVzLmRhdGEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKHMpIHtcclxuICAgICAgICAgICAgICAgIG9iai5zdWNjZXNzKHMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgZXJyb3JIYW5kbGVyXzEuZGVmYXVsdChvYmosIHJlcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoY29uZmlnXzEuZGVmYXVsdC5sb2dpblRyaWdnZXIocmVzLmRhdGEpICYmIG9iai5yZUxvZ2luTGltaXQgPCBjb25maWdfMS5kZWZhdWx0LnJlTG9naW5MaW1pdCkge1xyXG4gICAgICAgICAgICBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb24gPSAnJztcclxuICAgICAgICAgICAgc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uSXNGcmVzaCA9IHRydWU7XHJcbiAgICAgICAgICAgIHd4LnJlbW92ZVN0b3JhZ2Uoe1xyXG4gICAgICAgICAgICAgICAga2V5OiBjb25maWdfMS5kZWZhdWx0LnNlc3Npb25OYW1lLFxyXG4gICAgICAgICAgICAgICAgY29tcGxldGU6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgICAgICByZXF1ZXN0SGFuZGxlcl8xLmRlZmF1bHRbbWV0aG9kXShvYmopO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoY29uZmlnXzEuZGVmYXVsdC5zdWNjZXNzVHJpZ2dlcihyZXMuZGF0YSkgJiYgdHlwZW9mIG9iai5zdWNjZXNzID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICAgICAgdmFyIHJlYWxEYXRhID0gbnVsbDtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIHJlYWxEYXRhID0gY29uZmlnXzEuZGVmYXVsdC5zdWNjZXNzRGF0YShyZXMuZGF0YSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoXCJGdW5jdGlvbiBzdWNjZXNzRGF0YSBvY2N1ciBlcnJvcjogXCIgKyBlKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoIW9iai5ub0NhY2hlRmxhc2gpIHtcclxuICAgICAgICAgICAgICAgIG9iai5zdWNjZXNzKHJlYWxEYXRhKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYWNoZU1hbmFnZXJfMS5kZWZhdWx0LnNldChvYmosIHJlYWxEYXRhKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIGVycm9ySGFuZGxlcl8xLmRlZmF1bHQob2JqLCByZXMpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGVycm9ySGFuZGxlcl8xLmRlZmF1bHQob2JqLCByZXMpO1xyXG4gICAgfVxyXG59XHJcbmV4cG9ydHMuZGVmYXVsdCA9IHJlc3BvbnNlO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljbVZ6Y0c5dWMyVklZVzVrYkdWeUxtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpTGk0dkxpNHZjM0pqTDIxdlpIVnNaUzl5WlhOd2IyNXpaVWhoYm1Sc1pYSXVkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanM3UVVGQlFTd3dRMEZCYjBNN1FVRkRjRU1zTUVOQlFXOURPMEZCUTNCRExHMUVRVUUyUXp0QlFVTTNReXdyUTBGQmVVTTdRVUZEZWtNc0swTkJRWGxETzBGQlEzcERMSFZFUVVGcFJEdEJRVVZxUkN4VFFVRlRMRkZCUVZFc1EwRkJReXhIUVVGNVJTeEZRVUZGTEVkQlFWTXNSVUZCUlN4TlFVRm5RenRKUVVOd1NTeEpRVUZKTEVkQlFVY3NRMEZCUXl4VlFVRlZMRXRCUVVzc1IwRkJSeXhGUVVGRk8xRkJSM2hDTEVsQlFVY3NUMEZCVHl4SFFVRkhMRU5CUVVNc1NVRkJTU3hMUVVGTExGRkJRVkVzUlVGQlJUdFpRVU0zUWl4SlFVRkpPMmRDUVVOQkxFZEJRVWNzUTBGQlF5eEpRVUZKTEVkQlFVY3NTVUZCU1N4RFFVRkRMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdZVUZEYmtNN1dVRkJReXhQUVVGUExFTkJRVU1zUlVGQlJUdG5Ra0ZEVWl4elFrRkJXU3hEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXp0blFrRkRka0lzVDBGQlR5eExRVUZMTEVOQlFVTTdZVUZEYUVJN1UwRkRTanRSUVVWRUxEQkNRVUZuUWl4RFFVRkRMRWRCUVVjc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFJRVVV4UWl4SlFVRkpMRWRCUVVjc1EwRkJReXhQUVVGUExFVkJRVVU3V1VGRllpeEpRVUZKTEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNN1dVRkRXQ3hKUVVGSk8yZENRVU5CTEVOQlFVTXNSMEZCUnl4blFrRkJUU3hEUVVGRExHRkJRV0VzUTBGQlF5eFBRVUZSTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhEUVVGRE8yRkJReTlETzFsQlFVTXNUMEZCVHl4RFFVRkRMRVZCUVVVN1lVRkRXRHRaUVVORUxFbEJRVWtzUTBGQlF5eEZRVUZGTzJkQ1FVTklMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVU1zUTBGQlF5eERRVUZETEVOQlFVTTdZVUZEYkVJN2FVSkJRVTA3WjBKQlEwZ3NjMEpCUVZrc1EwRkJReXhIUVVGSExFVkJRVVVzUjBGQlJ5eERRVUZETEVOQlFVTTdZVUZETVVJN1UwRkRTanRoUVVGTkxFbEJRVWtzWjBKQlFVMHNRMEZCUXl4WlFVRmhMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eEpRVUZKTEVkQlFVY3NRMEZCUXl4WlFVRlpMRWRCUVVjc1owSkJRVTBzUTBGQlF5eFpRVUZoTEVWQlFVVTdXVUZGYkVZc1owSkJRVTBzUTBGQlF5eFBRVUZQTEVkQlFVY3NSVUZCUlN4RFFVRkRPMWxCUTNCQ0xHZENRVUZOTEVOQlFVTXNZMEZCWXl4SFFVRkhMRWxCUVVrc1EwRkJRenRaUVVNM1FpeEZRVUZGTEVOQlFVTXNZVUZCWVN4RFFVRkRPMmRDUVVOaUxFZEJRVWNzUlVGQlJTeG5Ra0ZCVFN4RFFVRkRMRmRCUVZrN1owSkJRM2hDTEZGQlFWRXNSVUZCUlR0dlFrRkRUaXgzUWtGQll5eERRVUZETEUxQlFVMHNRMEZCUXl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGQk8yZENRVU12UWl4RFFVRkRPMkZCUTBvc1EwRkJReXhEUVVGQk8xTkJRMHc3WVVGQlRTeEpRVUZKTEdkQ1FVRk5MRU5CUVVNc1kwRkJaU3hEUVVGRExFZEJRVWNzUTBGQlF5eEpRVUZKTEVOQlFVTXNTVUZCU1N4UFFVRlBMRWRCUVVjc1EwRkJReXhQUVVGUExFdEJRVXNzVlVGQlZTeEZRVUZGTzFsQlJUbEZMRWxCUVVrc1VVRkJVU3hIUVVGSExFbEJRVWtzUTBGQlF6dFpRVU53UWl4SlFVRkpPMmRDUVVOQkxGRkJRVkVzUjBGQlJ5eG5Ra0ZCVFN4RFFVRkRMRmRCUVZrc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEVOQlFVTTdZVUZETlVNN1dVRkJReXhQUVVGUExFTkJRVU1zUlVGQlJUdG5Ra0ZEVWl4UFFVRlBMRU5CUVVNc1MwRkJTeXhEUVVGRExHOURRVUZ2UXl4SFFVRkhMRU5CUVVNc1EwRkJReXhEUVVGRE8yRkJRek5FTzFsQlEwUXNTVUZCUnl4RFFVRkRMRWRCUVVjc1EwRkJReXhaUVVGWkxFVkJRVVU3WjBKQlJXeENMRWRCUVVjc1EwRkJReXhQUVVGUExFTkJRVU1zVVVGQlVTeERRVUZETEVOQlFVTTdZVUZEZWtJN1dVRkZSQ3h6UWtGQldTeERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRVZCUVVVc1VVRkJVU3hEUVVGRExFTkJRVU03VTBGRGJrTTdZVUZCVFR0WlFVVklMSE5DUVVGWkxFTkJRVU1zUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRPMU5CUXpGQ08wdEJRMG83VTBGQlRUdFJRVU5JTEhOQ1FVRlpMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETzB0QlF6RkNPMEZCUTB3c1EwRkJRenRCUVVWRUxHdENRVUZsTEZGQlFWRXNRMEZCUXlJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCamIyNW1hV2NnWm5KdmJTQW5MaTR2YzNSdmNtVXZZMjl1Wm1sbkoxeHlYRzVwYlhCdmNuUWdjM1JoZEhWeklHWnliMjBnSnk0dUwzTjBiM0psTDNOMFlYUjFjeWRjY2x4dWFXMXdiM0owSUhKbGNYVmxjM1JJWVc1a2JHVnlJR1p5YjIwZ0p5NHZjbVZ4ZFdWemRFaGhibVJzWlhJblhISmNibWx0Y0c5eWRDQmxjbkp2Y2toaGJtUnNaWElnWm5KdmJTQW5MaTlsY25KdmNraGhibVJzWlhJblhISmNibWx0Y0c5eWRDQmpZV05vWlUxaGJtRm5aWElnWm5KdmJTQW5MaTlqWVdOb1pVMWhibUZuWlhJblhISmNibWx0Y0c5eWRDQmtkWEpoZEdsdmJsSmxjRzl5ZEdWeUlHWnliMjBnSnk0dlpIVnlZWFJwYjI1U1pYQnZjblJsY2lkY2NseHVYSEpjYm1aMWJtTjBhVzl1SUhKbGMzQnZibk5sS0hKbGN6b2dkM2d1VW1WeGRXVnpkRk4xWTJObGMzTkRZV3hzWW1GamExSmxjM1ZzZENCOElIZDRMbFZ3Ykc5aFpFWnBiR1ZUZFdOalpYTnpRMkZzYkdKaFkydFNaWE4xYkhRc0lHOWlham9nVkU5RVR5d2diV1YwYUc5a09pQmNJbkpsY1hWbGMzUmNJaUI4SUZ3aWRYQnNiMkZrUm1sc1pWd2lLVG9nWVc1NUlIdGNjbHh1SUNBZ0lHbG1JQ2h5WlhNdWMzUmhkSFZ6UTI5a1pTQTlQVDBnTWpBd0tTQjdYSEpjYmx4eVhHNGdJQ0FnSUNBZ0lDOHZJT1dGdk9XdXVYVndiRzloWkVacGJHWG92NVRsbTU3bm1vUnlaWE11WkdGMFllV1ByK2lEdmVhWXIrV3RsK2VzcHVTNHNseHlYRzRnSUNBZ0lDQWdJR2xtS0hSNWNHVnZaaUJ5WlhNdVpHRjBZU0E5UFQwZ1hDSnpkSEpwYm1kY0lpa2dlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQjBjbmtnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2NtVnpMbVJoZEdFZ1BTQktVMDlPTG5CaGNuTmxLSEpsY3k1a1lYUmhLVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdmU0JqWVhSamFDQW9aU2tnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1pYSnliM0pJWVc1a2JHVnlLRzlpYWl3Z2NtVnpLVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGRIVnliaUJtWVd4elpUdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ0lDQWdJSDFjY2x4dVhISmNiaUFnSUNBZ0lDQWdaSFZ5WVhScGIyNVNaWEJ2Y25SbGNpNWxibVFvYjJKcUtUdGNjbHh1WEhKY2JpQWdJQ0FnSUNBZ2FXWWdLRzlpYWk1cGMweHZaMmx1S1NCN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUM4dklPZVp1K1c5bGVpdnQrYXhnbHh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnNaWFFnY3lBOUlGd2lYQ0k3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJSFJ5ZVNCN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnpJRDBnWTI5dVptbG5MbU52WkdWVWIxTmxjM05wYjI0dWMzVmpZMlZ6Y3lFb2NtVnpMbVJoZEdFcE8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCOUlHTmhkR05vSUNobEtTQjdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWWdLSE1wSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHOWlhaTV6ZFdOalpYTnpLSE1wTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0I5SUdWc2MyVWdlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWlhKeWIzSklZVzVrYkdWeUtHOWlhaXdnY21WektUdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ0lDQWdJSDBnWld4elpTQnBaaUFvWTI5dVptbG5MbXh2WjJsdVZISnBaMmRsY2lFb2NtVnpMbVJoZEdFcElDWW1JRzlpYWk1eVpVeHZaMmx1VEdsdGFYUWdQQ0JqYjI1bWFXY3VjbVZNYjJkcGJreHBiV2wwSVNrZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBdkx5RG5tYnZsdlpYbWdJSGxwTEhtbFlqdnZJemt1SlRwaDQzb3I1WG1yS0htbGJEa3VJM290b1hvdjRmcGhZM252YTVjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdjM1JoZEhWekxuTmxjM05wYjI0Z1BTQW5KenRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdjM1JoZEhWekxuTmxjM05wYjI1SmMwWnlaWE5vSUQwZ2RISjFaVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdkM2d1Y21WdGIzWmxVM1J2Y21GblpTaDdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JyWlhrNklHTnZibVpwWnk1elpYTnphVzl1VG1GdFpTRXNYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqYjIxd2JHVjBaVG9nWm5WdVkzUnBiMjRnS0NrZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhKbGNYVmxjM1JJWVc1a2JHVnlXMjFsZEdodlpGMG9iMkpxS1Z4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCOUtWeHlYRzRnSUNBZ0lDQWdJSDBnWld4elpTQnBaaUFvWTI5dVptbG5Mbk4xWTJObGMzTlVjbWxuWjJWeUlTaHlaWE11WkdGMFlTa2dKaVlnZEhsd1pXOW1JRzlpYWk1emRXTmpaWE56SUQwOVBTQmNJbVoxYm1OMGFXOXVYQ0lwSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnTHk4ZzVvNmw1WStqNkwrVTVadWU1b2lRNVlxZjU2Q0JYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lHeGxkQ0J5WldGc1JHRjBZU0E5SUc1MWJHdzdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lIUnllU0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpXRnNSR0YwWVNBOUlHTnZibVpwWnk1emRXTmpaWE56UkdGMFlTRW9jbVZ6TG1SaGRHRXBPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlJR05oZEdOb0lDaGxLU0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCamIyNXpiMnhsTG1WeWNtOXlLRndpUm5WdVkzUnBiMjRnYzNWalkyVnpjMFJoZEdFZ2IyTmpkWElnWlhKeWIzSTZJRndpSUNzZ1pTazdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWW9JVzlpYWk1dWIwTmhZMmhsUm14aGMyZ3BJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUM4dklPV21ndWFlbk9TNHV1UzZodVMvbmVpdmdlbWh0ZW1kb3VTNGplbVhxdWVEZ2UrOGpPV0ltZVM0amVXYm51aXdnKys4ak9XUHF1YVlyK2U4aytXdG1PYWNnT2FXc09hVnNPYU5ydSs4ak9XK2hlUzRpK2Fzb2VpL20rV0ZwZVdHamVlVXFGeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdiMkpxTG5OMVkyTmxjM01vY21WaGJFUmhkR0VwTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQzh2SU9lOGsrV3RtT1d0bU9XQ3FGeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCallXTm9aVTFoYm1GblpYSXVjMlYwS0c5aWFpd2djbVZoYkVSaGRHRXBPMXh5WEc0Z0lDQWdJQ0FnSUgwZ1pXeHpaU0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQzh2SU9hT3BlV1BvK2kvbE9XYm51V2tzZWkwcGVlZ2dWeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCbGNuSnZja2hoYm1Sc1pYSW9iMkpxTENCeVpYTXBPMXh5WEc0Z0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUgwZ1pXeHpaU0I3WEhKY2JpQWdJQ0FnSUNBZ1pYSnliM0pJWVc1a2JHVnlLRzlpYWl3Z2NtVnpLVHRjY2x4dUlDQWdJSDFjY2x4dWZWeHlYRzVjY2x4dVpYaHdiM0owSUdSbFptRjFiSFFnY21WemNHOXVjMlU3WEhKY2JpSmRmUT09IiwiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxudmFyIGZsb3dfMSA9IHJlcXVpcmUoXCIuLi91dGlsL2Zsb3dcIik7XHJcbnZhciBzdGF0dXNfMSA9IHJlcXVpcmUoXCIuLi9zdG9yZS9zdGF0dXNcIik7XHJcbnZhciBjb25maWdfMSA9IHJlcXVpcmUoXCIuLi9zdG9yZS9jb25maWdcIik7XHJcbnZhciByZXF1ZXN0SGFuZGxlcl8xID0gcmVxdWlyZShcIi4vcmVxdWVzdEhhbmRsZXJcIik7XHJcbnZhciBlcnJvckhhbmRsZXJfMSA9IHJlcXVpcmUoXCIuL2Vycm9ySGFuZGxlclwiKTtcclxudmFyIGR1cmF0aW9uUmVwb3J0ZXJfMSA9IHJlcXVpcmUoXCIuL2R1cmF0aW9uUmVwb3J0ZXJcIik7XHJcbmZ1bmN0aW9uIGNoZWNrU2Vzc2lvbihjYWxsYmFjaywgb2JqKSB7XHJcbiAgICBpZiAoc3RhdHVzXzEuZGVmYXVsdC5pc0NoZWNraW5nU2Vzc2lvbikge1xyXG4gICAgICAgIGZsb3dfMS5kZWZhdWx0LndhaXQoJ2NoZWNrU2Vzc2lvbkZpbmlzaGVkJywgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBjaGVja1Nlc3Npb24oY2FsbGJhY2ssIG9iaik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICghc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uSXNGcmVzaCAmJiBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb24pIHtcclxuICAgICAgICBzdGF0dXNfMS5kZWZhdWx0LmlzQ2hlY2tpbmdTZXNzaW9uID0gdHJ1ZTtcclxuICAgICAgICBvYmouY291bnQrKztcclxuICAgICAgICBkdXJhdGlvblJlcG9ydGVyXzEuZGVmYXVsdC5zdGFydChvYmosICdjaGVja1Nlc3Npb24nKTtcclxuICAgICAgICB3eC5jaGVja1Nlc3Npb24oe1xyXG4gICAgICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb25Jc0ZyZXNoID0gdHJ1ZTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgZmFpbDogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uID0gJyc7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBzdGF0dXNfMS5kZWZhdWx0LmlzQ2hlY2tpbmdTZXNzaW9uID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICBvYmouY291bnQtLTtcclxuICAgICAgICAgICAgICAgIGR1cmF0aW9uUmVwb3J0ZXJfMS5kZWZhdWx0LmVuZChvYmosICdjaGVja1Nlc3Npb24nKTtcclxuICAgICAgICAgICAgICAgIGRvTG9naW4oY2FsbGJhY2ssIG9iaik7XHJcbiAgICAgICAgICAgICAgICBmbG93XzEuZGVmYXVsdC5lbWl0KCdjaGVja1Nlc3Npb25GaW5pc2hlZCcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBkb0xvZ2luKGNhbGxiYWNrLCBvYmopO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIGRvTG9naW4oY2FsbGJhY2ssIG9iaikge1xyXG4gICAgaWYgKG9iai5pc0xvZ2luKSB7XHJcbiAgICAgICAgdHlwZW9mIGNhbGxiYWNrID09PSBcImZ1bmN0aW9uXCIgJiYgY2FsbGJhY2soKTtcclxuICAgIH1cclxuICAgIGVsc2UgaWYgKHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbikge1xyXG4gICAgICAgIGlmIChzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmVUaW1lICYmIG5ldyBEYXRlKCkuZ2V0VGltZSgpID4gc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uRXhwaXJlKSB7XHJcbiAgICAgICAgICAgIHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbiA9ICcnO1xyXG4gICAgICAgICAgICBkb0xvZ2luKGNhbGxiYWNrLCBvYmopO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgdHlwZW9mIGNhbGxiYWNrID09PSBcImZ1bmN0aW9uXCIgJiYgY2FsbGJhY2soKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChzdGF0dXNfMS5kZWZhdWx0LmxvZ2luaW5nKSB7XHJcbiAgICAgICAgZmxvd18xLmRlZmF1bHQud2FpdCgnZG9Mb2dpbkZpbmlzaGVkJywgZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBkb0xvZ2luKGNhbGxiYWNrLCBvYmopO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgc3RhdHVzXzEuZGVmYXVsdC5sb2dpbmluZyA9IHRydWU7XHJcbiAgICAgICAgb2JqLmNvdW50Kys7XHJcbiAgICAgICAgZHVyYXRpb25SZXBvcnRlcl8xLmRlZmF1bHQuc3RhcnQob2JqLCAnbG9naW4nKTtcclxuICAgICAgICBjb25zb2xlLmxvZygnd3gubG9naW4nKTtcclxuICAgICAgICB3eC5sb2dpbih7XHJcbiAgICAgICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICBvYmouY291bnQtLTtcclxuICAgICAgICAgICAgICAgIGR1cmF0aW9uUmVwb3J0ZXJfMS5kZWZhdWx0LmVuZChvYmosICdsb2dpbicpO1xyXG4gICAgICAgICAgICAgICAgdHlwZW9mIG9iai5jb21wbGV0ZSA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb3VudCA9PT0gMCAmJiBvYmouY29tcGxldGUoKTtcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKHJlcykge1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlcy5jb2RlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgY29kZTJTZXNzaW9uKG9iaiwgcmVzLmNvZGUsIGNhbGxiYWNrKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgIGVycm9ySGFuZGxlcl8xLmRlZmF1bHQob2JqLCByZXMpO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IocmVzKTtcclxuICAgICAgICAgICAgICAgICAgICBzdGF0dXNfMS5kZWZhdWx0LmxvZ2luaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgICAgICAgICAgZmxvd18xLmRlZmF1bHQuZW1pdCgnZG9Mb2dpbkZpbmlzaGVkJyk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGZhaWw6IGZ1bmN0aW9uIChyZXMpIHtcclxuICAgICAgICAgICAgICAgIGVycm9ySGFuZGxlcl8xLmRlZmF1bHQob2JqLCByZXMpO1xyXG4gICAgICAgICAgICAgICAgY29uc29sZS5lcnJvcihyZXMpO1xyXG4gICAgICAgICAgICAgICAgc3RhdHVzXzEuZGVmYXVsdC5sb2dpbmluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgZmxvd18xLmRlZmF1bHQuZW1pdCgnZG9Mb2dpbkZpbmlzaGVkJyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBjb2RlMlNlc3Npb24ob2JqLCBjb2RlLCBjYWxsYmFjaykge1xyXG4gICAgdmFyIGRhdGE7XHJcbiAgICBpZiAodHlwZW9mIGNvbmZpZ18xLmRlZmF1bHQuY29kZVRvU2Vzc2lvbi5kYXRhID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICBkYXRhID0gY29uZmlnXzEuZGVmYXVsdC5jb2RlVG9TZXNzaW9uLmRhdGEoKTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIGRhdGEgPSBjb25maWdfMS5kZWZhdWx0LmNvZGVUb1Nlc3Npb24uZGF0YSB8fCB7fTtcclxuICAgIH1cclxuICAgIGRhdGFbY29uZmlnXzEuZGVmYXVsdC5jb2RlVG9TZXNzaW9uLmNvZGVOYW1lXSA9IGNvZGU7XHJcbiAgICBvYmouY291bnQrKztcclxuICAgIHJlcXVlc3RIYW5kbGVyXzEuZGVmYXVsdC5yZXF1ZXN0KHtcclxuICAgICAgICB1cmw6IGNvbmZpZ18xLmRlZmF1bHQuY29kZVRvU2Vzc2lvbi51cmwsXHJcbiAgICAgICAgZGF0YTogZGF0YSxcclxuICAgICAgICBtZXRob2Q6IGNvbmZpZ18xLmRlZmF1bHQuY29kZVRvU2Vzc2lvbi5tZXRob2QgfHwgJ0dFVCcsXHJcbiAgICAgICAgaXNMb2dpbjogdHJ1ZSxcclxuICAgICAgICByZXBvcnQ6IGNvbmZpZ18xLmRlZmF1bHQuY29kZVRvU2Vzc2lvbi5yZXBvcnQgfHwgY29uZmlnXzEuZGVmYXVsdC5jb2RlVG9TZXNzaW9uLnVybCxcclxuICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAocykge1xyXG4gICAgICAgICAgICBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb24gPSBzO1xyXG4gICAgICAgICAgICBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb25Jc0ZyZXNoID0gdHJ1ZTtcclxuICAgICAgICAgICAgaWYgKHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZVRpbWUpIHtcclxuICAgICAgICAgICAgICAgIHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpICsgc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uRXhwaXJlVGltZTtcclxuICAgICAgICAgICAgICAgIHd4LnNldFN0b3JhZ2Uoe1xyXG4gICAgICAgICAgICAgICAgICAgIGtleTogY29uZmlnXzEuZGVmYXVsdC5zZXNzaW9uRXhwaXJlS2V5LFxyXG4gICAgICAgICAgICAgICAgICAgIGRhdGE6IFN0cmluZyhzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmUpXHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0eXBlb2YgY2FsbGJhY2sgPT09IFwiZnVuY3Rpb25cIiAmJiBjYWxsYmFjaygpO1xyXG4gICAgICAgICAgICB3eC5zZXRTdG9yYWdlKHtcclxuICAgICAgICAgICAgICAgIGtleTogY29uZmlnXzEuZGVmYXVsdC5zZXNzaW9uTmFtZSxcclxuICAgICAgICAgICAgICAgIGRhdGE6IHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvblxyXG4gICAgICAgICAgICB9KTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIG9iai5jb3VudC0tO1xyXG4gICAgICAgICAgICB0eXBlb2Ygb2JqLmNvbXBsZXRlID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvdW50ID09PSAwICYmIG9iai5jb21wbGV0ZSgpO1xyXG4gICAgICAgICAgICBzdGF0dXNfMS5kZWZhdWx0LmxvZ2luaW5nID0gZmFsc2U7XHJcbiAgICAgICAgICAgIGZsb3dfMS5kZWZhdWx0LmVtaXQoJ2RvTG9naW5GaW5pc2hlZCcpO1xyXG4gICAgICAgIH0sXHJcbiAgICAgICAgZmFpbDogY29uZmlnXzEuZGVmYXVsdC5jb2RlVG9TZXNzaW9uLmZhaWwgfHwgbnVsbFxyXG4gICAgfSk7XHJcbn1cclxuZXhwb3J0cy5kZWZhdWx0ID0gY2hlY2tTZXNzaW9uO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljMlZ6YzJsdmJrMWhibUZuWlhJdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUl1TGk4dUxpOXpjbU12Ylc5a2RXeGxMM05sYzNOcGIyNU5ZVzVoWjJWeUxuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdPMEZCUVVFc2NVTkJRU3RDTzBGQlF5OUNMREJEUVVGdlF6dEJRVU53UXl3d1EwRkJiME03UVVGRGNFTXNiVVJCUVRaRE8wRkJRemRETEN0RFFVRjVRenRCUVVONlF5eDFSRUZCYVVRN1FVRkZha1FzVTBGQlV5eFpRVUZaTEVOQlFVTXNVVUZCYTBJc1JVRkJSU3hIUVVGVE8wbEJReTlETEVsQlFVa3NaMEpCUVUwc1EwRkJReXhwUWtGQmFVSXNSVUZCUlR0UlFVTXhRaXhqUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEhOQ1FVRnpRaXhGUVVGRk8xbEJRemxDTEZsQlFWa3NRMEZCUXl4UlFVRlJMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVUU3VVVGREwwSXNRMEZCUXl4RFFVRkRMRU5CUVVFN1MwRkRURHRUUVVGTkxFbEJRVWtzUTBGQlF5eG5Ra0ZCVFN4RFFVRkRMR05CUVdNc1NVRkJTU3huUWtGQlRTeERRVUZETEU5QlFVOHNSVUZCUlR0UlFVVnFSQ3huUWtGQlRTeERRVUZETEdsQ1FVRnBRaXhIUVVGSExFbEJRVWtzUTBGQlF6dFJRVU5vUXl4SFFVRkhMRU5CUVVNc1MwRkJTeXhGUVVGRkxFTkJRVU03VVVGRFdpd3dRa0ZCWjBJc1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eEZRVUZGTEdOQlFXTXNRMEZCUXl4RFFVRkRPMUZCUXpWRExFVkJRVVVzUTBGQlF5eFpRVUZaTEVOQlFVTTdXVUZEV2l4UFFVRlBMRVZCUVVVN1owSkJSVXdzWjBKQlFVMHNRMEZCUXl4alFVRmpMRWRCUVVjc1NVRkJTU3hEUVVGRE8xbEJRMnBETEVOQlFVTTdXVUZEUkN4SlFVRkpMRVZCUVVVN1owSkJSVVlzWjBKQlFVMHNRMEZCUXl4UFFVRlBMRWRCUVVjc1JVRkJSU3hEUVVGRE8xbEJRM2hDTEVOQlFVTTdXVUZEUkN4UlFVRlJMRVZCUVVVN1owSkJRMDRzWjBKQlFVMHNRMEZCUXl4cFFrRkJhVUlzUjBGQlJ5eExRVUZMTEVOQlFVTTdaMEpCUTJwRExFZEJRVWNzUTBGQlF5eExRVUZMTEVWQlFVVXNRMEZCUXp0blFrRkRXaXd3UWtGQlowSXNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhGUVVGRkxHTkJRV01zUTBGQlF5eERRVUZETzJkQ1FVTXhReXhQUVVGUExFTkJRVU1zVVVGQlVTeEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRPMmRDUVVOMlFpeGpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMSE5DUVVGelFpeERRVUZETEVOQlFVTTdXVUZEZEVNc1EwRkJRenRUUVVOS0xFTkJRVU1zUTBGQlFUdExRVU5NTzFOQlFVMDdVVUZGU0N4UFFVRlBMRU5CUVVNc1VVRkJVU3hGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETzB0QlF6RkNPMEZCUTB3c1EwRkJRenRCUVVWRUxGTkJRVk1zVDBGQlR5eERRVUZETEZGQlFXdENMRVZCUVVVc1IwRkJVenRKUVVNeFF5eEpRVUZKTEVkQlFVY3NRMEZCUXl4UFFVRlBMRVZCUVVVN1VVRkZZaXhQUVVGUExGRkJRVkVzUzBGQlN5eFZRVUZWTEVsQlFVa3NVVUZCVVN4RlFVRkZMRU5CUVVNN1MwRkRhRVE3VTBGQlRTeEpRVUZKTEdkQ1FVRk5MRU5CUVVNc1QwRkJUeXhGUVVGRk8xRkJSWFpDTEVsQlFVa3NaMEpCUVUwc1EwRkJReXhwUWtGQmFVSXNTVUZCU1N4SlFVRkpMRWxCUVVrc1JVRkJSU3hEUVVGRExFOUJRVThzUlVGQlJTeEhRVUZITEdkQ1FVRk5MRU5CUVVNc1lVRkJZU3hGUVVGRk8xbEJSWHBGTEdkQ1FVRk5MRU5CUVVNc1QwRkJUeXhIUVVGSExFVkJRVVVzUTBGQlF6dFpRVU53UWl4UFFVRlBMRU5CUVVNc1VVRkJVU3hGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETzFOQlF6RkNPMkZCUVUwN1dVRkRTQ3hQUVVGUExGRkJRVkVzUzBGQlN5eFZRVUZWTEVsQlFVa3NVVUZCVVN4RlFVRkZMRU5CUVVNN1UwRkRhRVE3UzBGRFNqdFRRVUZOTEVsQlFVa3NaMEpCUVUwc1EwRkJReXhSUVVGUkxFVkJRVVU3VVVGRmVFSXNZMEZCU1N4RFFVRkRMRWxCUVVrc1EwRkJReXhwUWtGQmFVSXNSVUZCUlR0WlFVTjZRaXhQUVVGUExFTkJRVU1zVVVGQlVTeEZRVUZGTEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUXpOQ0xFTkJRVU1zUTBGQlF5eERRVUZCTzB0QlEwdzdVMEZCVFR0UlFVVklMR2RDUVVGTkxFTkJRVU1zVVVGQlVTeEhRVUZITEVsQlFVa3NRMEZCUXp0UlFVTjJRaXhIUVVGSExFTkJRVU1zUzBGQlN5eEZRVUZGTEVOQlFVTTdVVUZEV2l3d1FrRkJaMElzUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4RlFVRkZMRTlCUVU4c1EwRkJReXhEUVVGRE8xRkJRM0pETEU5QlFVOHNRMEZCUXl4SFFVRkhMRU5CUVVNc1ZVRkJWU3hEUVVGRExFTkJRVU03VVVGRGVFSXNSVUZCUlN4RFFVRkRMRXRCUVVzc1EwRkJRenRaUVVOTUxGRkJRVkVzUlVGQlJUdG5Ra0ZEVGl4SFFVRkhMRU5CUVVNc1MwRkJTeXhGUVVGRkxFTkJRVU03WjBKQlExb3NNRUpCUVdkQ0xFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NSVUZCUlN4UFFVRlBMRU5CUVVNc1EwRkJRenRuUWtGRGJrTXNUMEZCVHl4SFFVRkhMRU5CUVVNc1VVRkJVU3hMUVVGTExGVkJRVlVzU1VGQlNTeEhRVUZITEVOQlFVTXNTMEZCU3l4TFFVRkxMRU5CUVVNc1NVRkJTU3hIUVVGSExFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTTdXVUZETlVVc1EwRkJRenRaUVVORUxFOUJRVThzUlVGQlJTeFZRVUZWTEVkQlFVYzdaMEpCUTJ4Q0xFbEJRVWtzUjBGQlJ5eERRVUZETEVsQlFVa3NSVUZCUlR0dlFrRkRWaXhaUVVGWkxFTkJRVU1zUjBGQlJ5eEZRVUZGTEVkQlFVY3NRMEZCUXl4SlFVRkpMRVZCUVVVc1VVRkJVU3hEUVVGRExFTkJRVUU3YVVKQlEzaERPM0ZDUVVGTk8yOUNRVU5JTEhOQ1FVRlpMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETzI5Q1FVTjJRaXhQUVVGUExFTkJRVU1zUzBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMjlDUVVWdVFpeG5Ra0ZCVFN4RFFVRkRMRkZCUVZFc1IwRkJSeXhMUVVGTExFTkJRVU03YjBKQlEzaENMR05CUVVrc1EwRkJReXhKUVVGSkxFTkJRVU1zYVVKQlFXbENMRU5CUVVNc1EwRkJRenRwUWtGRGFFTTdXVUZEVEN4RFFVRkRPMWxCUTBRc1NVRkJTU3hGUVVGRkxGVkJRVlVzUjBGQlJ6dG5Ra0ZEWml4elFrRkJXU3hEUVVGRExFZEJRVWNzUlVGQlJTeEhRVUZITEVOQlFVTXNRMEZCUXp0blFrRkRka0lzVDBGQlR5eERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRuUWtGRmJrSXNaMEpCUVUwc1EwRkJReXhSUVVGUkxFZEJRVWNzUzBGQlN5eERRVUZETzJkQ1FVTjRRaXhqUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEdsQ1FVRnBRaXhEUVVGRExFTkJRVU03V1VGRGFrTXNRMEZCUXp0VFFVTktMRU5CUVVNc1EwRkJRVHRMUVVOTU8wRkJRMHdzUTBGQlF6dEJRVVZFTEZOQlFWTXNXVUZCV1N4RFFVRkRMRWRCUVZNc1JVRkJSU3hKUVVGVkxFVkJRVVVzVVVGQmEwSTdTVUZETTBRc1NVRkJTU3hKUVVGSkxFTkJRVU03U1VGRlZDeEpRVUZKTEU5QlFVOHNaMEpCUVUwc1EwRkJReXhoUVVGaExFTkJRVU1zU1VGQlNTeExRVUZMTEZWQlFWVXNSVUZCUlR0UlFVTnFSQ3hKUVVGSkxFZEJRVWNzWjBKQlFVMHNRMEZCUXl4aFFVRmhMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU03UzBGRGRFTTdVMEZCVFR0UlFVTklMRWxCUVVrc1IwRkJSeXhuUWtGQlRTeERRVUZETEdGQlFXRXNRMEZCUXl4SlFVRkpMRWxCUVVrc1JVRkJSU3hEUVVGRE8wdEJRekZETzBsQlEwUXNTVUZCU1N4RFFVRkRMR2RDUVVGTkxFTkJRVU1zWVVGQllTeERRVUZETEZGQlFWTXNRMEZCUXl4SFFVRkhMRWxCUVVrc1EwRkJRenRKUVVVMVF5eEhRVUZITEVOQlFVTXNTMEZCU3l4RlFVRkZMRU5CUVVNN1NVRkRXaXgzUWtGQll5eERRVUZETEU5QlFVOHNRMEZCUXp0UlFVTnVRaXhIUVVGSExFVkJRVVVzWjBKQlFVMHNRMEZCUXl4aFFVRmhMRU5CUVVNc1IwRkJSenRSUVVNM1FpeEpRVUZKTEVWQlFVVXNTVUZCU1R0UlFVTldMRTFCUVUwc1JVRkJSU3huUWtGQlRTeERRVUZETEdGQlFXRXNRMEZCUXl4TlFVRk5MRWxCUVVrc1MwRkJTenRSUVVNMVF5eFBRVUZQTEVWQlFVVXNTVUZCU1R0UlFVTmlMRTFCUVUwc1JVRkJSU3huUWtGQlRTeERRVUZETEdGQlFXRXNRMEZCUXl4TlFVRk5MRWxCUVVrc1owSkJRVTBzUTBGQlF5eGhRVUZoTEVOQlFVTXNSMEZCUnp0UlFVTXZSQ3hQUVVGUExFVkJRVVVzVlVGQlZTeERRVUZQTzFsQlEzUkNMR2RDUVVGTkxFTkJRVU1zVDBGQlR5eEhRVUZITEVOQlFVTXNRMEZCUXp0WlFVTnVRaXhuUWtGQlRTeERRVUZETEdOQlFXTXNSMEZCUnl4SlFVRkpMRU5CUVVNN1dVRkZOMElzU1VGQlNTeG5Ra0ZCVFN4RFFVRkRMR2xDUVVGcFFpeEZRVUZGTzJkQ1FVTXhRaXhuUWtGQlRTeERRVUZETEdGQlFXRXNSMEZCUnl4SlFVRkpMRWxCUVVrc1JVRkJSU3hEUVVGRExFOUJRVThzUlVGQlJTeEhRVUZITEdkQ1FVRk5MRU5CUVVNc2FVSkJRV2xDTEVOQlFVTTdaMEpCUTNaRkxFVkJRVVVzUTBGQlF5eFZRVUZWTEVOQlFVTTdiMEpCUTFZc1IwRkJSeXhGUVVGRkxHZENRVUZOTEVOQlFVTXNaMEpCUVdkQ08yOUNRVU0xUWl4SlFVRkpMRVZCUVVVc1RVRkJUU3hEUVVGRExHZENRVUZOTEVOQlFVTXNZVUZCWVN4RFFVRkRPMmxDUVVOeVF5eERRVUZETEVOQlFVRTdZVUZEVER0WlFVTkVMRTlCUVU4c1VVRkJVU3hMUVVGTExGVkJRVlVzU1VGQlNTeFJRVUZSTEVWQlFVVXNRMEZCUXp0WlFVTTNReXhGUVVGRkxFTkJRVU1zVlVGQlZTeERRVUZETzJkQ1FVTldMRWRCUVVjc1JVRkJSU3huUWtGQlRTeERRVUZETEZkQlFWazdaMEpCUTNoQ0xFbEJRVWtzUlVGQlJTeG5Ra0ZCVFN4RFFVRkRMRTlCUVU4N1lVRkRka0lzUTBGQlF5eERRVUZCTzFGQlEwNHNRMEZCUXp0UlFVTkVMRkZCUVZFc1JVRkJSVHRaUVVOT0xFZEJRVWNzUTBGQlF5eExRVUZMTEVWQlFVVXNRMEZCUXp0WlFVTmFMRTlCUVU4c1IwRkJSeXhEUVVGRExGRkJRVkVzUzBGQlN5eFZRVUZWTEVsQlFVa3NSMEZCUnl4RFFVRkRMRXRCUVVzc1MwRkJTeXhEUVVGRExFbEJRVWtzUjBGQlJ5eERRVUZETEZGQlFWRXNSVUZCUlN4RFFVRkRPMWxCUTNoRkxHZENRVUZOTEVOQlFVTXNVVUZCVVN4SFFVRkhMRXRCUVVzc1EwRkJRenRaUVVONFFpeGpRVUZKTEVOQlFVTXNTVUZCU1N4RFFVRkRMR2xDUVVGcFFpeERRVUZETEVOQlFVTTdVVUZEYWtNc1EwRkJRenRSUVVORUxFbEJRVWtzUlVGQlJTeG5Ra0ZCVFN4RFFVRkRMR0ZCUVdFc1EwRkJReXhKUVVGSkxFbEJRVWtzU1VGQlNUdExRVU14UXl4RFFVRkRMRU5CUVVFN1FVRkRUaXhEUVVGRE8wRkJSVVFzYTBKQlFXVXNXVUZCV1N4RFFVRkRJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJR1pzYjNjZ1puSnZiU0FuTGk0dmRYUnBiQzltYkc5M0oxeHlYRzVwYlhCdmNuUWdjM1JoZEhWeklHWnliMjBnSnk0dUwzTjBiM0psTDNOMFlYUjFjeWRjY2x4dWFXMXdiM0owSUdOdmJtWnBaeUJtY205dElDY3VMaTl6ZEc5eVpTOWpiMjVtYVdjblhISmNibWx0Y0c5eWRDQnlaWEYxWlhOMFNHRnVaR3hsY2lCbWNtOXRJQ2N1TDNKbGNYVmxjM1JJWVc1a2JHVnlKMXh5WEc1cGJYQnZjblFnWlhKeWIzSklZVzVrYkdWeUlHWnliMjBnSnk0dlpYSnliM0pJWVc1a2JHVnlKMXh5WEc1cGJYQnZjblFnWkhWeVlYUnBiMjVTWlhCdmNuUmxjaUJtY205dElDY3VMMlIxY21GMGFXOXVVbVZ3YjNKMFpYSW5YSEpjYmx4eVhHNW1kVzVqZEdsdmJpQmphR1ZqYTFObGMzTnBiMjRvWTJGc2JHSmhZMnM2SUVaMWJtTjBhVzl1TENCdlltbzZJRlJQUkU4cElIdGNjbHh1SUNBZ0lHbG1JQ2h6ZEdGMGRYTXVhWE5EYUdWamEybHVaMU5sYzNOcGIyNHBJSHRjY2x4dUlDQWdJQ0FnSUNCbWJHOTNMbmRoYVhRb0oyTm9aV05yVTJWemMybHZia1pwYm1semFHVmtKeXdnS0NrZ1BUNGdlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQmphR1ZqYTFObGMzTnBiMjRvWTJGc2JHSmhZMnNzSUc5aWFpbGNjbHh1SUNBZ0lDQWdJQ0I5S1Z4eVhHNGdJQ0FnZlNCbGJITmxJR2xtSUNnaGMzUmhkSFZ6TG5ObGMzTnBiMjVKYzBaeVpYTm9JQ1ltSUhOMFlYUjFjeTV6WlhOemFXOXVLU0I3WEhKY2JpQWdJQ0FnSUNBZ0x5OGc1YWFDNXA2YzVweXM1Wnl3NXB5SjU1bTc1YjJWNW9DQjc3eU01TDJHNkwrWTVyS2g1cU9BNmFxTTZMK0hjMlZ6YzJsdmJsOXJaWG5tbUsvbGtLYm1uSW5tbFlqdnZJemxpSm5wbklEb3BvSG1vNERwcW96a3VJRG1yS0ZjY2x4dUlDQWdJQ0FnSUNCemRHRjBkWE11YVhORGFHVmphMmx1WjFObGMzTnBiMjRnUFNCMGNuVmxPMXh5WEc0Z0lDQWdJQ0FnSUc5aWFpNWpiM1Z1ZENzck8xeHlYRzRnSUNBZ0lDQWdJR1IxY21GMGFXOXVVbVZ3YjNKMFpYSXVjM1JoY25Rb2IySnFMQ0FuWTJobFkydFRaWE56YVc5dUp5azdYSEpjYmlBZ0lDQWdJQ0FnZDNndVkyaGxZMnRUWlhOemFXOXVLSHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdjM1ZqWTJWemN6b2dablZ1WTNScGIyNGdLQ2tnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0x5OGc1NW03NWIyVjVvQ0I1cHlKNXBXSTc3eU01TGlVNVp5bzVweXM1NVNmNVpHOTVaR281cHlmNVlhRjVwZWc2YUc3NVlhTjVxT0E2YXFNNUxxR1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnpkR0YwZFhNdWMyVnpjMmx2YmtselJuSmxjMmdnUFNCMGNuVmxPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlMRnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQm1ZV2xzT2lCbWRXNWpkR2x2YmlBb0tTQjdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0F2THlEbm1idmx2WlhtZ0lIb3Y0Zm1uSjljY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhOMFlYUjFjeTV6WlhOemFXOXVJRDBnSnljN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUgwc1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUdOdmJYQnNaWFJsT2lCbWRXNWpkR2x2YmlBb0tTQjdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J6ZEdGMGRYTXVhWE5EYUdWamEybHVaMU5sYzNOcGIyNGdQU0JtWVd4elpUdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRzlpYWk1amIzVnVkQzB0TzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1pIVnlZWFJwYjI1U1pYQnZjblJsY2k1bGJtUW9iMkpxTENBblkyaGxZMnRUWlhOemFXOXVKeWs3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCa2IweHZaMmx1S0dOaGJHeGlZV05yTENCdlltb3BPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWm14dmR5NWxiV2wwS0NkamFHVmphMU5sYzNOcGIyNUdhVzVwYzJobFpDY3BPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJQ0FnZlNsY2NseHVJQ0FnSUgwZ1pXeHpaU0I3WEhKY2JpQWdJQ0FnSUNBZ0x5OGc1YmV5NTd1UDVxT0E2YXFNNkwrSDVMcUdYSEpjYmlBZ0lDQWdJQ0FnWkc5TWIyZHBiaWhqWVd4c1ltRmpheXdnYjJKcUtUdGNjbHh1SUNBZ0lIMWNjbHh1ZlZ4eVhHNWNjbHh1Wm5WdVkzUnBiMjRnWkc5TWIyZHBiaWhqWVd4c1ltRmphem9nUm5WdVkzUnBiMjRzSUc5aWFqb2dWRTlFVHlrZ2UxeHlYRzRnSUNBZ2FXWWdLRzlpYWk1cGMweHZaMmx1S1NCN1hISmNiaUFnSUNBZ0lDQWdMeThnNTVtNzViMlY1bzZsNVkrajc3eU01NXUwNW82bDVwUys2TCtIWEhKY2JpQWdJQ0FnSUNBZ2RIbHdaVzltSUdOaGJHeGlZV05ySUQwOVBTQmNJbVoxYm1OMGFXOXVYQ0lnSmlZZ1kyRnNiR0poWTJzb0tUdGNjbHh1SUNBZ0lIMGdaV3h6WlNCcFppQW9jM1JoZEhWekxuTmxjM05wYjI0cElIdGNjbHh1SUNBZ0lDQWdJQ0F2THlEbnZKUGxyWmprdUszbW5JbHpaWE56YVc5dVhISmNiaUFnSUNBZ0lDQWdhV1lnS0hOMFlYUjFjeTV6WlhOemFXOXVSWGh3YVhKbFZHbHRaU0FtSmlCdVpYY2dSR0YwWlNncExtZGxkRlJwYldVb0tTQStJSE4wWVhSMWN5NXpaWE56YVc5dVJYaHdhWEpsS1NCN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUM4dklPV21ndWFlbk9hY2llaXV2dWU5cnVhY3JPV2NzSE5sYzNOcGIyN252SlBsclpqbWw3YnBsN1R2dkl6a3VKVG52SlBsclpqbWw3YnBsN1RsdDdMbGlMQmNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2MzUmhkSFZ6TG5ObGMzTnBiMjRnUFNBbkp6dGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ1pHOU1iMmRwYmloallXeHNZbUZqYXl3Z2IySnFLVHRjY2x4dUlDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0IwZVhCbGIyWWdZMkZzYkdKaFkyc2dQVDA5SUZ3aVpuVnVZM1JwYjI1Y0lpQW1KaUJqWVd4c1ltRmpheWdwTzF4eVhHNGdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lIMGdaV3h6WlNCcFppQW9jM1JoZEhWekxteHZaMmx1YVc1bktTQjdYSEpjYmlBZ0lDQWdJQ0FnTHk4ZzVxMmo1WnlvNTVtNzViMlY1TGl0Nzd5TTZLKzM1ckdDNkwydTZLK2k1NmlONVpDTzc3eU02WUcvNVlXTjZZZU41YVNONkxDRDU1U281NW03NWIyVjVvNmw1WStqWEhKY2JpQWdJQ0FnSUNBZ1pteHZkeTUzWVdsMEtDZGtiMHh2WjJsdVJtbHVhWE5vWldRbkxDQm1kVzVqZEdsdmJpQW9LU0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJR1J2VEc5bmFXNG9ZMkZzYkdKaFkyc3NJRzlpYWlrN1hISmNiaUFnSUNBZ0lDQWdmU2xjY2x4dUlDQWdJSDBnWld4elpTQjdYSEpjYmlBZ0lDQWdJQ0FnTHk4ZzU3eVQ1YTJZNUxpdDVwZWdjMlZ6YzJsdmJseHlYRzRnSUNBZ0lDQWdJSE4wWVhSMWN5NXNiMmRwYm1sdVp5QTlJSFJ5ZFdVN1hISmNiaUFnSUNBZ0lDQWdiMkpxTG1OdmRXNTBLeXM3WEhKY2JpQWdJQ0FnSUNBZ1pIVnlZWFJwYjI1U1pYQnZjblJsY2k1emRHRnlkQ2h2WW1vc0lDZHNiMmRwYmljcE8xeHlYRzRnSUNBZ0lDQWdJR052Ym5OdmJHVXViRzluS0NkM2VDNXNiMmRwYmljcE8xeHlYRzRnSUNBZ0lDQWdJSGQ0TG14dloybHVLSHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdZMjl0Y0d4bGRHVTZJR1oxYm1OMGFXOXVJQ2dwSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHOWlhaTVqYjNWdWRDMHRPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWkhWeVlYUnBiMjVTWlhCdmNuUmxjaTVsYm1Rb2IySnFMQ0FuYkc5bmFXNG5LVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUhSNWNHVnZaaUJ2WW1vdVkyOXRjR3hsZEdVZ1BUMDlJRndpWm5WdVkzUnBiMjVjSWlBbUppQnZZbW91WTI5MWJuUWdQVDA5SURBZ0ppWWdiMkpxTG1OdmJYQnNaWFJsS0NrN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUgwc1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUhOMVkyTmxjM002SUdaMWJtTjBhVzl1SUNoeVpYTXBJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdsbUlDaHlaWE11WTI5a1pTa2dlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTnZaR1V5VTJWemMybHZiaWh2WW1vc0lISmxjeTVqYjJSbExDQmpZV3hzWW1GamF5bGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDBnWld4elpTQjdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1pYSnliM0pJWVc1a2JHVnlLRzlpYWl3Z2NtVnpLVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmpiMjV6YjJ4bExtVnljbTl5S0hKbGN5azdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0x5OGc1NW03NWIyVjVhU3g2TFNsNzd5TTZLZWo2Wm1rNlpTQjc3eU02Wml5NXEyaTVxMjc2WlNCWEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjM1JoZEhWekxteHZaMmx1YVc1bklEMGdabUZzYzJVN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWm14dmR5NWxiV2wwS0Nka2IweHZaMmx1Um1sdWFYTm9aV1FuS1R0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2ZTeGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ1ptRnBiRG9nWm5WdVkzUnBiMjRnS0hKbGN5a2dlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWlhKeWIzSklZVzVrYkdWeUtHOWlhaXdnY21WektUdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR052Ym5OdmJHVXVaWEp5YjNJb2NtVnpLVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUM4dklPZVp1K1c5bGVXa3NlaTBwZSs4ak9pbm8rbVpwT21VZ2UrOGpPbVlzdWF0b3VhdHUrbVVnVnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYzNSaGRIVnpMbXh2WjJsdWFXNW5JRDBnWm1Gc2MyVTdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JtYkc5M0xtVnRhWFFvSjJSdlRHOW5hVzVHYVc1cGMyaGxaQ2NwTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUNBZ2ZTbGNjbHh1SUNBZ0lIMWNjbHh1ZlZ4eVhHNWNjbHh1Wm5WdVkzUnBiMjRnWTI5a1pUSlRaWE56YVc5dUtHOWlham9nVkU5RVR5d2dZMjlrWlRvZ1ZFOUVUeXdnWTJGc2JHSmhZMnM2SUVaMWJtTjBhVzl1S1NCN1hISmNiaUFnSUNCc1pYUWdaR0YwWVR0Y2NseHVJQ0FnSUM4dklHTnZaR1ZVYjFObGMzTnBiMjR1WkdGMFllYVVyK2FNZ2VXSHZlYVZzRnh5WEc0Z0lDQWdhV1lnS0hSNWNHVnZaaUJqYjI1bWFXY3VZMjlrWlZSdlUyVnpjMmx2Ymk1a1lYUmhJRDA5UFNCY0ltWjFibU4wYVc5dVhDSXBJSHRjY2x4dUlDQWdJQ0FnSUNCa1lYUmhJRDBnWTI5dVptbG5MbU52WkdWVWIxTmxjM05wYjI0dVpHRjBZU2dwTzF4eVhHNGdJQ0FnZlNCbGJITmxJSHRjY2x4dUlDQWdJQ0FnSUNCa1lYUmhJRDBnWTI5dVptbG5MbU52WkdWVWIxTmxjM05wYjI0dVpHRjBZU0I4ZkNCN2ZUdGNjbHh1SUNBZ0lIMWNjbHh1SUNBZ0lHUmhkR0ZiWTI5dVptbG5MbU52WkdWVWIxTmxjM05wYjI0dVkyOWtaVTVoYldVaFhTQTlJR052WkdVN1hISmNibHh5WEc0Z0lDQWdiMkpxTG1OdmRXNTBLeXM3WEhKY2JpQWdJQ0J5WlhGMVpYTjBTR0Z1Wkd4bGNpNXlaWEYxWlhOMEtIdGNjbHh1SUNBZ0lDQWdJQ0IxY213NklHTnZibVpwWnk1amIyUmxWRzlUWlhOemFXOXVMblZ5YkN4Y2NseHVJQ0FnSUNBZ0lDQmtZWFJoT2lCa1lYUmhMRnh5WEc0Z0lDQWdJQ0FnSUcxbGRHaHZaRG9nWTI5dVptbG5MbU52WkdWVWIxTmxjM05wYjI0dWJXVjBhRzlrSUh4OElDZEhSVlFuTEZ4eVhHNGdJQ0FnSUNBZ0lHbHpURzluYVc0NklIUnlkV1VzWEhKY2JpQWdJQ0FnSUNBZ2NtVndiM0owT2lCamIyNW1hV2N1WTI5a1pWUnZVMlZ6YzJsdmJpNXlaWEJ2Y25RZ2ZId2dZMjl1Wm1sbkxtTnZaR1ZVYjFObGMzTnBiMjR1ZFhKc0xGeHlYRzRnSUNBZ0lDQWdJSE4xWTJObGMzTTZJR1oxYm1OMGFXOXVJQ2h6T2lCVVQwUlBLU0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJSE4wWVhSMWN5NXpaWE56YVc5dUlEMGdjenRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdjM1JoZEhWekxuTmxjM05wYjI1SmMwWnlaWE5vSUQwZ2RISjFaVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdMeThnNWFhQzVwNmM1cHlKNks2KzU3MnU1cHlzNVp5d2MyVnpjMmx2YnVpL2grYWNuK2FYdHVtWHRGeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9jM1JoZEhWekxuTmxjM05wYjI1RmVIQnBjbVZVYVcxbEtTQjdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J6ZEdGMGRYTXVjMlZ6YzJsdmJrVjRjR2x5WlNBOUlHNWxkeUJFWVhSbEtDa3VaMlYwVkdsdFpTZ3BJQ3NnYzNSaGRIVnpMbk5sYzNOcGIyNUZlSEJwY21WVWFXMWxPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZDNndWMyVjBVM1J2Y21GblpTaDdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2EyVjVPaUJqYjI1bWFXY3VjMlZ6YzJsdmJrVjRjR2x5WlV0bGVTeGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCa1lYUmhPaUJUZEhKcGJtY29jM1JoZEhWekxuTmxjM05wYjI1RmVIQnBjbVVwWEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCOUtWeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhISmNiaUFnSUNBZ0lDQWdJQ0FnSUhSNWNHVnZaaUJqWVd4c1ltRmpheUE5UFQwZ1hDSm1kVzVqZEdsdmJsd2lJQ1ltSUdOaGJHeGlZV05yS0NrN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUhkNExuTmxkRk4wYjNKaFoyVW9lMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYTJWNU9pQmpiMjVtYVdjdWMyVnpjMmx2Yms1aGJXVWhMRnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnWkdGMFlUb2djM1JoZEhWekxuTmxjM05wYjI1Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnZlNsY2NseHVJQ0FnSUNBZ0lDQjlMRnh5WEc0Z0lDQWdJQ0FnSUdOdmJYQnNaWFJsT2lCbWRXNWpkR2x2YmlBb0tTQjdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lHOWlhaTVqYjNWdWRDMHRPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQjBlWEJsYjJZZ2IySnFMbU52YlhCc1pYUmxJRDA5UFNCY0ltWjFibU4wYVc5dVhDSWdKaVlnYjJKcUxtTnZkVzUwSUQwOVBTQXdJQ1ltSUc5aWFpNWpiMjF3YkdWMFpTZ3BPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnpkR0YwZFhNdWJHOW5hVzVwYm1jZ1BTQm1ZV3h6WlR0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnWm14dmR5NWxiV2wwS0Nka2IweHZaMmx1Um1sdWFYTm9aV1FuS1R0Y2NseHVJQ0FnSUNBZ0lDQjlMRnh5WEc0Z0lDQWdJQ0FnSUdaaGFXdzZJR052Ym1acFp5NWpiMlJsVkc5VFpYTnphVzl1TG1aaGFXd2dmSHdnYm5Wc2JGeHlYRzRnSUNBZ2ZTbGNjbHh1ZlZ4eVhHNWNjbHh1Wlhod2IzSjBJR1JsWm1GMWJIUWdZMmhsWTJ0VFpYTnphVzl1TzF4eVhHNGlYWDA9IiwiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxudmFyIGRlZmF1bHRDb25maWcgPSB7XHJcbiAgICBzZXNzaW9uTmFtZTogXCJzZXNzaW9uXCIsXHJcbiAgICBsb2dpblRyaWdnZXI6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9LFxyXG4gICAgY29kZVRvU2Vzc2lvbjoge30sXHJcbiAgICBzdWNjZXNzVHJpZ2dlcjogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHJldHVybiB0cnVlO1xyXG4gICAgfSxcclxuICAgIHVybFBlcmZpeDogXCJcIixcclxuICAgIHN1Y2Nlc3NEYXRhOiBmdW5jdGlvbiAocmVzKSB7XHJcbiAgICAgICAgcmV0dXJuIHJlcztcclxuICAgIH0sXHJcbiAgICBkb05vdENoZWNrU2Vzc2lvbjogZmFsc2UsXHJcbiAgICBlcnJvclRpdGxlOiBcIuaTjeS9nOWksei0pVwiLFxyXG4gICAgZXJyb3JDb250ZW50OiBmdW5jdGlvbiAocmVzKSB7XHJcbiAgICAgICAgcmV0dXJuIHJlcztcclxuICAgIH0sXHJcbiAgICByZUxvZ2luTGltaXQ6IDMsXHJcbiAgICBlcnJvckNhbGxiYWNrOiBudWxsLFxyXG4gICAgcmVwb3J0Q0dJOiBmYWxzZSxcclxuICAgIG1vY2tKc29uOiBmYWxzZSxcclxuICAgIGdsb2JhbERhdGE6IGZhbHNlLFxyXG4gICAgc2Vzc2lvbkV4cGlyZUtleTogXCJzZXNzaW9uRXhwaXJlS2V5XCJcclxufTtcclxuZXhwb3J0cy5kZWZhdWx0ID0gZGVmYXVsdENvbmZpZztcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pWTI5dVptbG5MbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaUxpNHZMaTR2YzNKakwzTjBiM0psTDJOdmJtWnBaeTUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3p0QlFVTkJMRWxCUVUwc1lVRkJZU3hIUVVGblFqdEpRVU12UWl4WFFVRlhMRVZCUVVVc1UwRkJVenRKUVVOMFFpeFpRVUZaTzFGQlExSXNUMEZCVHl4TFFVRkxMRU5CUVVFN1NVRkRhRUlzUTBGQlF6dEpRVU5FTEdGQlFXRXNSVUZCUlN4RlFVRkZPMGxCUTJwQ0xHTkJRV003VVVGRFZpeFBRVUZQTEVsQlFVa3NRMEZCUVR0SlFVTm1MRU5CUVVNN1NVRkRSQ3hUUVVGVExFVkJRVVVzUlVGQlJUdEpRVU5pTEZkQlFWY3NXVUZCUXl4SFFVRlJPMUZCUTJoQ0xFOUJRVThzUjBGQlJ5eERRVUZCTzBsQlEyUXNRMEZCUXp0SlFVTkVMR2xDUVVGcFFpeEZRVUZGTEV0QlFVczdTVUZEZUVJc1ZVRkJWU3hGUVVGRkxFMUJRVTA3U1VGRGJFSXNXVUZCV1N4WlFVRkRMRWRCUVZFN1VVRkRha0lzVDBGQlR5eEhRVUZITEVOQlFVRTdTVUZEWkN4RFFVRkRPMGxCUTBRc1dVRkJXU3hGUVVGRkxFTkJRVU03U1VGRFppeGhRVUZoTEVWQlFVVXNTVUZCU1R0SlFVTnVRaXhUUVVGVExFVkJRVVVzUzBGQlN6dEpRVU5vUWl4UlFVRlJMRVZCUVVVc1MwRkJTenRKUVVObUxGVkJRVlVzUlVGQlJTeExRVUZMTzBsQlJXcENMR2RDUVVGblFpeEZRVUZGTEd0Q1FVRnJRanREUVVOMlF5eERRVUZCTzBGQlJVUXNhMEpCUVdVc1lVRkJZU3hEUVVGRElpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElIc2dTVWx1YVhSUGNIUnBiMjRnZlNCbWNtOXRJQ2N1TGk5aGNHa3ZhVzVwZENjN1hISmNibU52Ym5OMElHUmxabUYxYkhSRGIyNW1hV2M2SUVsSmJtbDBUM0IwYVc5dUlEMGdlMXh5WEc0Z0lDQWdjMlZ6YzJsdmJrNWhiV1U2SUZ3aWMyVnpjMmx2Ymx3aUxGeHlYRzRnSUNBZ2JHOW5hVzVVY21sbloyVnlLQ2tnZTF4eVhHNGdJQ0FnSUNBZ0lISmxkSFZ5YmlCbVlXeHpaVnh5WEc0Z0lDQWdmU3hjY2x4dUlDQWdJR052WkdWVWIxTmxjM05wYjI0NklIdDlMRnh5WEc0Z0lDQWdjM1ZqWTJWemMxUnlhV2RuWlhJb0tTQjdYSEpjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSFJ5ZFdWY2NseHVJQ0FnSUgwc1hISmNiaUFnSUNCMWNteFFaWEptYVhnNklGd2lYQ0lzWEhKY2JpQWdJQ0J6ZFdOalpYTnpSR0YwWVNoeVpYTTZJR0Z1ZVNrZ2UxeHlYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQnlaWE5jY2x4dUlDQWdJSDBzWEhKY2JpQWdJQ0JrYjA1dmRFTm9aV05yVTJWemMybHZiam9nWm1Gc2MyVXNYSEpjYmlBZ0lDQmxjbkp2Y2xScGRHeGxPaUJjSXVhVGplUzluT1drc2VpMHBWd2lMRnh5WEc0Z0lDQWdaWEp5YjNKRGIyNTBaVzUwS0hKbGN6b2dZVzU1S1NCN1hISmNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlISmxjMXh5WEc0Z0lDQWdmU3hjY2x4dUlDQWdJSEpsVEc5bmFXNU1hVzFwZERvZ015eGNjbHh1SUNBZ0lHVnljbTl5UTJGc2JHSmhZMnM2SUc1MWJHd3NYSEpjYmlBZ0lDQnlaWEJ2Y25SRFIwazZJR1poYkhObExGeHlYRzRnSUNBZ2JXOWphMHB6YjI0NklHWmhiSE5sTEZ4eVhHNGdJQ0FnWjJ4dlltRnNSR0YwWVRvZ1ptRnNjMlVzWEhKY2JpQWdJQ0F2THlCelpYTnphVzl1NVp5bzVweXM1Wnl3NTd5VDVhMlk1NXFFYTJWNVhISmNiaUFnSUNCelpYTnphVzl1Ulhod2FYSmxTMlY1T2lCY0luTmxjM05wYjI1RmVIQnBjbVZMWlhsY0lseHlYRzU5WEhKY2JseHlYRzVsZUhCdmNuUWdaR1ZtWVhWc2RDQmtaV1poZFd4MFEyOXVabWxuT3lKZGZRPT0iLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG5leHBvcnRzLmRlZmF1bHQgPSB7XHJcbiAgICBzZXNzaW9uOiAnJyxcclxuICAgIHNlc3Npb25FeHBpcmVUaW1lOiBudWxsLFxyXG4gICAgc2Vzc2lvbkV4cGlyZTogSW5maW5pdHksXHJcbiAgICBzZXNzaW9uSXNGcmVzaDogZmFsc2UsXHJcbiAgICBsb2dpbmluZzogZmFsc2UsXHJcbiAgICBpc0NoZWNraW5nU2Vzc2lvbjogZmFsc2VcclxufTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYzNSaGRIVnpMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaUxpNHZMaTR2YzNKakwzTjBiM0psTDNOMFlYUjFjeTUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3p0QlFVRkJMR3RDUVVGbE8wbEJRMWdzVDBGQlR5eEZRVUZGTEVWQlFWazdTVUZGY2tJc2FVSkJRV2xDTEVWQlFVVXNTVUZCU1R0SlFVVjJRaXhoUVVGaExFVkJRVVVzVVVGQlVUdEpRVU4yUWl4alFVRmpMRVZCUVVVc1MwRkJaMEk3U1VGRmFFTXNVVUZCVVN4RlFVRkZMRXRCUVdkQ08wbEJSVEZDTEdsQ1FVRnBRaXhGUVVGRkxFdEJRV2RDTzBOQlF5OUNMRU5CUVVFaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SmxlSEJ2Y25RZ1pHVm1ZWFZzZENCN1hISmNiaUFnSUNCelpYTnphVzl1T2lBbkp5QmhjeUJ6ZEhKcGJtY3NYSEpjYmlBZ0lDQXZMeUJ6WlhOemFXOXU1WnlvNXB5czVaeXc1N3lUNWEyWTU1cUU1cHlKNXBXSTVwZTI2WmUwWEhKY2JpQWdJQ0J6WlhOemFXOXVSWGh3YVhKbFZHbHRaVG9nYm5Wc2JDeGNjbHh1SUNBZ0lDOHZJSE5sYzNOcGIyN292NGZtbkovbm1vVG1sN2JwbDdUbmdybGNjbHh1SUNBZ0lITmxjM05wYjI1RmVIQnBjbVU2SUVsdVptbHVhWFI1TEZ4eVhHNGdJQ0FnYzJWemMybHZia2x6Um5KbGMyZzZJR1poYkhObElHRnpJR0p2YjJ4bFlXNHNYSEpjYmlBZ0lDQXZMeURtcmFQbG5Lam5tYnZsdlpYa3VLM3Z2SXpsaGJia3U1Ym9yN2Ztc1lMb3ZhN29yNkxucUkzbGtJN3Z2SXpwZ2IvbGhZM3BoNDNscEkzb3NJUG5sS2pubWJ2bHZaWG1qcVhsajZOY2NseHVJQ0FnSUd4dloybHVhVzVuT2lCbVlXeHpaU0JoY3lCaWIyOXNaV0Z1TEZ4eVhHNGdJQ0FnTHk4ZzVxMmo1WnlvNXArbDZLK2ljMlZ6YzJsdmJ1YWNpZWFWaU9hY24rUzRyZSs4ak9tQnYrV0ZqZW1IamVXa2plaXdnK2VVcU9hT3BlV1BvMXh5WEc0Z0lDQWdhWE5EYUdWamEybHVaMU5sYzNOcGIyNDZJR1poYkhObElHRnpJR0p2YjJ4bFlXNWNjbHh1ZlNCaGN5QmhibmxjY2x4dUlsMTkiLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG52YXIgc3RvcmUgPSB7fTtcclxuZnVuY3Rpb24gZW1pdChrZXkpIHtcclxuICAgIHZhciBmbG93ID0gZ2V0RmxvdyhrZXkpO1xyXG4gICAgdmFyIGN1cnJlbnRMZW5ndGggPSBmbG93LndhaXRpbmdMaXN0Lmxlbmd0aDtcclxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY3VycmVudExlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgdmFyIGNhbGxiYWNrID0gZmxvdy53YWl0aW5nTGlzdC5zaGlmdCgpO1xyXG4gICAgICAgIHR5cGVvZiBjYWxsYmFjayA9PSBcImZ1bmN0aW9uXCIgJiYgY2FsbGJhY2soKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiB3YWl0KGtleSwgY2FsbGJhY2spIHtcclxuICAgIHZhciBmbG93ID0gZ2V0RmxvdyhrZXkpO1xyXG4gICAgZmxvdy53YWl0aW5nTGlzdC5wdXNoKGNhbGxiYWNrKTtcclxufVxyXG5mdW5jdGlvbiBnZXRGbG93KGtleSkge1xyXG4gICAgaWYgKCFzdG9yZVtrZXldKSB7XHJcbiAgICAgICAgc3RvcmVba2V5XSA9IHtcclxuICAgICAgICAgICAgd2FpdGluZ0xpc3Q6IFtdXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuICAgIHJldHVybiBzdG9yZVtrZXldO1xyXG59XHJcbmV4cG9ydHMuZGVmYXVsdCA9IHtcclxuICAgIHdhaXQ6IHdhaXQsXHJcbiAgICBlbWl0OiBlbWl0XHJcbn07XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVpteHZkeTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYklpNHVMeTR1TDNOeVl5OTFkR2xzTDJac2IzY3VkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanM3UVVGQlFTeEpRVUZKTEV0QlFVc3NSMEZCVXl4RlFVRkZMRU5CUVVNN1FVRkZja0lzVTBGQlV5eEpRVUZKTEVOQlFVTXNSMEZCVXp0SlFVTnVRaXhKUVVGSkxFbEJRVWtzUjBGQlJ5eFBRVUZQTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1NVRkRlRUlzU1VGQlNTeGhRVUZoTEVkQlFVY3NTVUZCU1N4RFFVRkRMRmRCUVZjc1EwRkJReXhOUVVGTkxFTkJRVU03U1VGRE5VTXNTMEZCU3l4SlFVRkpMRU5CUVVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eEhRVUZITEdGQlFXRXNSVUZCUlN4RFFVRkRMRVZCUVVVc1JVRkJSVHRSUVVOd1F5eEpRVUZKTEZGQlFWRXNSMEZCUnl4SlFVRkpMRU5CUVVNc1YwRkJWeXhEUVVGRExFdEJRVXNzUlVGQlJTeERRVUZETzFGQlEzaERMRTlCUVU4c1VVRkJVU3hKUVVGSkxGVkJRVlVzU1VGQlNTeFJRVUZSTEVWQlFVVXNRMEZCUXp0TFFVTXZRenRCUVVOTUxFTkJRVU03UVVGRlJDeFRRVUZUTEVsQlFVa3NRMEZCUXl4SFFVRlRMRVZCUVVVc1VVRkJhMEk3U1VGRGRrTXNTVUZCU1N4SlFVRkpMRWRCUVVjc1QwRkJUeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzBsQlEzaENMRWxCUVVrc1EwRkJReXhYUVVGWExFTkJRVU1zU1VGQlNTeERRVUZETEZGQlFWRXNRMEZCUXl4RFFVRkJPMEZCUTI1RExFTkJRVU03UVVGRlJDeFRRVUZUTEU5QlFVOHNRMEZCUXl4SFFVRlRPMGxCUTNSQ0xFbEJRVWtzUTBGQlF5eExRVUZMTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVN1VVRkRZaXhMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVYzdXVUZEVkN4WFFVRlhMRVZCUVVVc1JVRkJSVHRUUVVOc1FpeERRVUZCTzB0QlEwbzdTVUZGUkN4UFFVRlBMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dEJRVU4wUWl4RFFVRkRPMEZCUlVRc2EwSkJRV1U3U1VGRFdDeEpRVUZKTEUxQlFVRTdTVUZEU2l4SlFVRkpMRTFCUVVFN1EwRkRVQ3hEUVVGQklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2liR1YwSUhOMGIzSmxPaUJVVDBSUElEMGdlMzA3WEhKY2JseHlYRzVtZFc1amRHbHZiaUJsYldsMEtHdGxlVG9nVkU5RVR5a2dlMXh5WEc0Z0lDQWdiR1YwSUdac2IzY2dQU0JuWlhSR2JHOTNLR3RsZVNrN1hISmNiaUFnSUNCc1pYUWdZM1Z5Y21WdWRFeGxibWQwYUNBOUlHWnNiM2N1ZDJGcGRHbHVaMHhwYzNRdWJHVnVaM1JvTzF4eVhHNGdJQ0FnWm05eUlDaHNaWFFnYVNBOUlEQTdJR2tnUENCamRYSnlaVzUwVEdWdVozUm9PeUJwS3lzcElIdGNjbHh1SUNBZ0lDQWdJQ0JzWlhRZ1kyRnNiR0poWTJzZ1BTQm1iRzkzTG5kaGFYUnBibWRNYVhOMExuTm9hV1owS0NrN1hISmNiaUFnSUNBZ0lDQWdkSGx3Wlc5bUlHTmhiR3hpWVdOcklEMDlJRndpWm5WdVkzUnBiMjVjSWlBbUppQmpZV3hzWW1GamF5Z3BPMXh5WEc0Z0lDQWdmVnh5WEc1OVhISmNibHh5WEc1bWRXNWpkR2x2YmlCM1lXbDBLR3RsZVRvZ1ZFOUVUeXdnWTJGc2JHSmhZMnM2SUVaMWJtTjBhVzl1S1NCN1hISmNiaUFnSUNCMllYSWdabXh2ZHlBOUlHZGxkRVpzYjNjb2EyVjVLVHRjY2x4dUlDQWdJR1pzYjNjdWQyRnBkR2x1WjB4cGMzUXVjSFZ6YUNoallXeHNZbUZqYXlsY2NseHVmVnh5WEc1Y2NseHVablZ1WTNScGIyNGdaMlYwUm14dmR5aHJaWGs2SUZSUFJFOHBJSHRjY2x4dUlDQWdJR2xtSUNnaGMzUnZjbVZiYTJWNVhTa2dlMXh5WEc0Z0lDQWdJQ0FnSUhOMGIzSmxXMnRsZVYwZ1BTQjdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lIZGhhWFJwYm1kTWFYTjBPaUJiWFZ4eVhHNGdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0J5WlhSMWNtNGdjM1J2Y21WYmEyVjVYVHRjY2x4dWZWeHlYRzVjY2x4dVpYaHdiM0owSUdSbFptRjFiSFFnZTF4eVhHNGdJQ0FnZDJGcGRDeGNjbHh1SUNBZ0lHVnRhWFJjY2x4dWZWeHlYRzRpWFgwPSIsIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbmZ1bmN0aW9uIHNob3codHh0KSB7XHJcbiAgICB3eC5zaG93VG9hc3Qoe1xyXG4gICAgICAgIHRpdGxlOiB0eXBlb2YgdHh0ID09PSAnYm9vbGVhbicgPyAn5Yqg6L295LitJyA6IHR4dCxcclxuICAgICAgICBpY29uOiAnbG9hZGluZycsXHJcbiAgICAgICAgbWFzazogdHJ1ZSxcclxuICAgICAgICBkdXJhdGlvbjogNjAwMDBcclxuICAgIH0pO1xyXG59XHJcbmZ1bmN0aW9uIGhpZGUoKSB7XHJcbiAgICB3eC5oaWRlVG9hc3Qoe30pO1xyXG59XHJcbmV4cG9ydHMuZGVmYXVsdCA9IHtcclxuICAgIHNob3c6IHNob3csXHJcbiAgICBoaWRlOiBoaWRlXHJcbn07XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWJHOWhaR2x1Wnk1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUwzTnlZeTkxZEdsc0wyeHZZV1JwYm1jdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdRVUZCUVN4VFFVRlRMRWxCUVVrc1EwRkJReXhIUVVGeFFqdEpRVU12UWl4RlFVRkZMRU5CUVVNc1UwRkJVeXhEUVVGRE8xRkJRMVFzUzBGQlN5eEZRVUZGTEU5QlFVOHNSMEZCUnl4TFFVRkxMRk5CUVZNc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhPMUZCUXpkRExFbEJRVWtzUlVGQlJTeFRRVUZUTzFGQlEyWXNTVUZCU1N4RlFVRkZMRWxCUVVrN1VVRkRWaXhSUVVGUkxFVkJRVVVzUzBGQlN6dExRVU5zUWl4RFFVRkRMRU5CUVVFN1FVRkRUaXhEUVVGRE8wRkJSVVFzVTBGQlV5eEpRVUZKTzBsQlExUXNSVUZCUlN4RFFVRkRMRk5CUVZNc1EwRkJReXhGUVVGRkxFTkJRVU1zUTBGQlF6dEJRVU55UWl4RFFVRkRPMEZCUlVRc2EwSkJRV1U3U1VGRFdDeEpRVUZKTEUxQlFVRTdTVUZEU2l4SlFVRkpMRTFCUVVFN1EwRkRVQ3hEUVVGQklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lablZ1WTNScGIyNGdjMmh2ZHloMGVIUTZJR0p2YjJ4bFlXNGdmQ0J6ZEhKcGJtY3BJSHRjY2x4dUlDQWdJSGQ0TG5Ob2IzZFViMkZ6ZENoN1hISmNiaUFnSUNBZ0lDQWdkR2wwYkdVNklIUjVjR1Z2WmlCMGVIUWdQVDA5SUNkaWIyOXNaV0Z1SnlBL0lDZmxpcURvdmIza3VLMG5JRG9nZEhoMExGeHlYRzRnSUNBZ0lDQWdJR2xqYjI0NklDZHNiMkZrYVc1bkp5eGNjbHh1SUNBZ0lDQWdJQ0J0WVhOck9pQjBjblZsTEZ4eVhHNGdJQ0FnSUNBZ0lHUjFjbUYwYVc5dU9pQTJNREF3TUZ4eVhHNGdJQ0FnZlNsY2NseHVmVnh5WEc1Y2NseHVablZ1WTNScGIyNGdhR2xrWlNncElIdGNjbHh1SUNBZ0lIZDRMbWhwWkdWVWIyRnpkQ2g3ZlNrN1hISmNibjFjY2x4dVhISmNibVY0Y0c5eWRDQmtaV1poZFd4MElIdGNjbHh1SUNBZ0lITm9iM2NzWEhKY2JpQWdJQ0JvYVdSbFhISmNibjFjY2x4dUlsMTkiXSwic291cmNlUm9vdCI6IiJ9 \ No newline at end of file +//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly93ZVJlcXVlc3Qvd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vd2VSZXF1ZXN0Ly4vc3JjL2FwaS9nZXRDb25maWcudHMiLCJ3ZWJwYWNrOi8vd2VSZXF1ZXN0Ly4vc3JjL2FwaS9nZXRTZXNzaW9uLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy9hcGkvaW5pdC50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvYXBpL2xvZ2luLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy9hcGkvcmVxdWVzdC50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvYXBpL3NldFNlc3Npb24udHMiLCJ3ZWJwYWNrOi8vd2VSZXF1ZXN0Ly4vc3JjL2FwaS91cGxvYWRGaWxlLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy9pbmRleC50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvbW9kdWxlL2NhY2hlTWFuYWdlci50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvbW9kdWxlL2R1cmF0aW9uUmVwb3J0ZXIudHMiLCJ3ZWJwYWNrOi8vd2VSZXF1ZXN0Ly4vc3JjL21vZHVsZS9lcnJvckhhbmRsZXIudHMiLCJ3ZWJwYWNrOi8vd2VSZXF1ZXN0Ly4vc3JjL21vZHVsZS9tb2NrTWFuYWdlci50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvbW9kdWxlL3JlcXVlc3RIYW5kbGVyLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy9tb2R1bGUvcmVzcG9uc2VIYW5kbGVyLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy9tb2R1bGUvc2Vzc2lvbk1hbmFnZXIudHMiLCJ3ZWJwYWNrOi8vd2VSZXF1ZXN0Ly4vc3JjL3N0b3JlL2NvbmZpZy50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvc3RvcmUvc3RhdHVzLnRzIiwid2VicGFjazovL3dlUmVxdWVzdC8uL3NyYy91dGlsL2Zsb3cudHMiLCJ3ZWJwYWNrOi8vd2VSZXF1ZXN0Ly4vc3JjL3V0aWwvbG9hZGluZy50cyIsIndlYnBhY2s6Ly93ZVJlcXVlc3QvLi9zcmMvdXRpbC91cmwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUE7QUFDQTs7QUFFQTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOztBQUVBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7OztBQUdBO0FBQ0E7O0FBRUE7QUFDQTs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxrREFBMEMsZ0NBQWdDO0FBQzFFO0FBQ0E7O0FBRUE7QUFDQTtBQUNBO0FBQ0EsZ0VBQXdELGtCQUFrQjtBQUMxRTtBQUNBLHlEQUFpRCxjQUFjO0FBQy9EOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxpREFBeUMsaUNBQWlDO0FBQzFFLHdIQUFnSCxtQkFBbUIsRUFBRTtBQUNySTtBQUNBOztBQUVBO0FBQ0E7QUFDQTtBQUNBLG1DQUEyQiwwQkFBMEIsRUFBRTtBQUN2RCx5Q0FBaUMsZUFBZTtBQUNoRDtBQUNBO0FBQ0E7O0FBRUE7QUFDQSw4REFBc0QsK0RBQStEOztBQUVySDtBQUNBOzs7QUFHQTtBQUNBOzs7Ozs7Ozs7Ozs7O0FDbEZhO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQsZUFBZSxtQkFBTyxDQUFDLDhDQUFpQjtBQUN4QyxlQUFlLG1CQUFPLENBQUMsOENBQWlCO0FBQ3hDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxDQUFDO0FBQ0QsMkNBQTJDLHVxRDs7Ozs7Ozs7Ozs7O0FDYjlCO0FBQ2IsOENBQThDLGNBQWM7QUFDNUQsZUFBZSxtQkFBTyxDQUFDLDhDQUFpQjtBQUN4QztBQUNBO0FBQ0EsQ0FBQztBQUNELDJDQUEyQywrYTs7Ozs7Ozs7Ozs7O0FDTjlCO0FBQ2I7QUFDQTtBQUNBLGdEQUFnRCxPQUFPO0FB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Q0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsMkNBQTJDLDI4RSIsImZpbGUiOiJ3ZVJlcXVlc3QuanMiLCJzb3VyY2VzQ29udGVudCI6WyIgXHQvLyBUaGUgbW9kdWxlIGNhY2hlXG4gXHR2YXIgaW5zdGFsbGVkTW9kdWxlcyA9IHt9O1xuXG4gXHQvLyBUaGUgcmVxdWlyZSBmdW5jdGlvblxuIFx0ZnVuY3Rpb24gX193ZWJwYWNrX3JlcXVpcmVfXyhtb2R1bGVJZCkge1xuXG4gXHRcdC8vIENoZWNrIGlmIG1vZHVsZSBpcyBpbiBjYWNoZVxuIFx0XHRpZihpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSkge1xuIFx0XHRcdHJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzO1xuIFx0XHR9XG4gXHRcdC8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpXG4gXHRcdHZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHtcbiBcdFx0XHRpOiBtb2R1bGVJZCxcbiBcdFx0XHRsOiBmYWxzZSxcbiBcdFx0XHRleHBvcnRzOiB7fVxuIFx0XHR9O1xuXG4gXHRcdC8vIEV4ZWN1dGUgdGhlIG1vZHVsZSBmdW5jdGlvblxuIFx0XHRtb2R1bGVzW21vZHVsZUlkXS5jYWxsKG1vZHVsZS5leHBvcnRzLCBtb2R1bGUsIG1vZHVsZS5leHBvcnRzLCBfX3dlYnBhY2tfcmVxdWlyZV9fKTtcblxuIFx0XHQvLyBGbGFnIHRoZSBtb2R1bGUgYXMgbG9hZGVkXG4gXHRcdG1vZHVsZS5sID0gdHJ1ZTtcblxuIFx0XHQvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZVxuIFx0XHRyZXR1cm4gbW9kdWxlLmV4cG9ydHM7XG4gXHR9XG5cblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXylcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubSA9IG1vZHVsZXM7XG5cbiBcdC8vIGV4cG9zZSB0aGUgbW9kdWxlIGNhY2hlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLmMgPSBpbnN0YWxsZWRNb2R1bGVzO1xuXG4gXHQvLyBkZWZpbmUgZ2V0dGVyIGZ1bmN0aW9uIGZvciBoYXJtb255IGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikge1xuIFx0XHRpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIG5hbWUsIHsgZW51bWVyYWJsZTogdHJ1ZSwgZ2V0OiBnZXR0ZXIgfSk7XG4gXHRcdH1cbiBcdH07XG5cbiBcdC8vIGRlZmluZSBfX2VzTW9kdWxlIG9uIGV4cG9ydHNcbiBcdF9fd2VicGFja19yZXF1aXJlX18uciA9IGZ1bmN0aW9uKGV4cG9ydHMpIHtcbiBcdFx0aWYodHlwZW9mIFN5bWJvbCAhPT0gJ3VuZGVmaW5lZCcgJiYgU3ltYm9sLnRvU3RyaW5nVGFnKSB7XG4gXHRcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFN5bWJvbC50b1N0cmluZ1RhZywgeyB2YWx1ZTogJ01vZHVsZScgfSk7XG4gXHRcdH1cbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsICdfX2VzTW9kdWxlJywgeyB2YWx1ZTogdHJ1ZSB9KTtcbiBcdH07XG5cbiBcdC8vIGNyZWF0ZSBhIGZha2UgbmFtZXNwYWNlIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDE6IHZhbHVlIGlzIGEgbW9kdWxlIGlkLCByZXF1aXJlIGl0XG4gXHQvLyBtb2RlICYgMjogbWVyZ2UgYWxsIHByb3BlcnRpZXMgb2YgdmFsdWUgaW50byB0aGUgbnNcbiBcdC8vIG1vZGUgJiA0OiByZXR1cm4gdmFsdWUgd2hlbiBhbHJlYWR5IG5zIG9iamVjdFxuIFx0Ly8gbW9kZSAmIDh8MTogYmVoYXZlIGxpa2UgcmVxdWlyZVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy50ID0gZnVuY3Rpb24odmFsdWUsIG1vZGUpIHtcbiBcdFx0aWYobW9kZSAmIDEpIHZhbHVlID0gX193ZWJwYWNrX3JlcXVpcmVfXyh2YWx1ZSk7XG4gXHRcdGlmKG1vZGUgJiA4KSByZXR1cm4gdmFsdWU7XG4gXHRcdGlmKChtb2RlICYgNCkgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJiB2YWx1ZSAmJiB2YWx1ZS5fX2VzTW9kdWxlKSByZXR1cm4gdmFsdWU7XG4gXHRcdHZhciBucyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gXHRcdF9fd2VicGFja19yZXF1aXJlX18ucihucyk7XG4gXHRcdE9iamVjdC5kZWZpbmVQcm9wZXJ0eShucywgJ2RlZmF1bHQnLCB7IGVudW1lcmFibGU6IHRydWUsIHZhbHVlOiB2YWx1ZSB9KTtcbiBcdFx0aWYobW9kZSAmIDIgJiYgdHlwZW9mIHZhbHVlICE9ICdzdHJpbmcnKSBmb3IodmFyIGtleSBpbiB2YWx1ZSkgX193ZWJwYWNrX3JlcXVpcmVfXy5kKG5zLCBrZXksIGZ1bmN0aW9uKGtleSkgeyByZXR1cm4gdmFsdWVba2V5XTsgfS5iaW5kKG51bGwsIGtleSkpO1xuIFx0XHRyZXR1cm4gbnM7XG4gXHR9O1xuXG4gXHQvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlc1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5uID0gZnVuY3Rpb24obW9kdWxlKSB7XG4gXHRcdHZhciBnZXR0ZXIgPSBtb2R1bGUgJiYgbW9kdWxlLl9fZXNNb2R1bGUgP1xuIFx0XHRcdGZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0TW9kdWxlRXhwb3J0cygpIHsgcmV0dXJuIG1vZHVsZTsgfTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kKGdldHRlciwgJ2EnLCBnZXR0ZXIpO1xuIFx0XHRyZXR1cm4gZ2V0dGVyO1xuIFx0fTtcblxuIFx0Ly8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm8gPSBmdW5jdGlvbihvYmplY3QsIHByb3BlcnR5KSB7IHJldHVybiBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwob2JqZWN0LCBwcm9wZXJ0eSk7IH07XG5cbiBcdC8vIF9fd2VicGFja19wdWJsaWNfcGF0aF9fXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnAgPSBcIlwiO1xuXG5cbiBcdC8vIExvYWQgZW50cnkgbW9kdWxlIGFuZCByZXR1cm4gZXhwb3J0c1xuIFx0cmV0dXJuIF9fd2VicGFja19yZXF1aXJlX18oX193ZWJwYWNrX3JlcXVpcmVfXy5zID0gXCIuL3NyYy9pbmRleC50c1wiKTtcbiIsIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbnZhciBjb25maWdfMSA9IHJlcXVpcmUoXCIuLi9zdG9yZS9jb25maWdcIik7XHJcbnZhciBzdGF0dXNfMSA9IHJlcXVpcmUoXCIuLi9zdG9yZS9zdGF0dXNcIik7XHJcbmV4cG9ydHMuZGVmYXVsdCA9IChmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgY29uZmlnUmVzdWx0ID0ge1xyXG4gICAgICAgIHVybFBlcmZpeDogY29uZmlnXzEuZGVmYXVsdC51cmxQZXJmaXgsXHJcbiAgICAgICAgc2Vzc2lvbkV4cGlyZVRpbWU6IHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZVRpbWUsXHJcbiAgICAgICAgc2Vzc2lvbkV4cGlyZUtleTogY29uZmlnXzEuZGVmYXVsdC5zZXNzaW9uRXhwaXJlS2V5LFxyXG4gICAgICAgIHNlc3Npb25FeHBpcmU6IHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZVxyXG4gICAgfTtcclxuICAgIHJldHVybiBjb25maWdSZXN1bHQ7XHJcbn0pO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2laMlYwUTI5dVptbG5MbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaUxpNHZMaTR2YzNKakwyRndhUzluWlhSRGIyNW1hV2N1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN1FVRkJRU3d3UTBGQmIwTTdRVUZEY0VNc01FTkJRVzlETzBGQllYQkRMRzFDUVVGbE8wbEJRMWdzU1VGQlRTeFpRVUZaTEVkQlFYRkNPMUZCUTI1RExGTkJRVk1zUlVGQlJTeG5Ra0ZCVFN4RFFVRkRMRk5CUVZNN1VVRkRNMElzYVVKQlFXbENMRVZCUVVVc1owSkJRVTBzUTBGQlF5eHBRa0ZCYVVJN1VVRkRNME1zWjBKQlFXZENMRVZCUVVVc1owSkJRVTBzUTBGQlF5eG5Ra0ZCWjBJN1VVRkRla01zWVVGQllTeEZRVUZGTEdkQ1FVRk5MRU5CUVVNc1lVRkJZVHRMUVVOMFF5eERRVUZCTzBsQlEwUXNUMEZCVHl4WlFVRlpMRU5CUVVNN1FVRkRlRUlzUTBGQlF5eEZRVUZESWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUdOdmJtWnBaeUJtY205dElDY3VMaTl6ZEc5eVpTOWpiMjVtYVdjblhISmNibWx0Y0c5eWRDQnpkR0YwZFhNZ1puSnZiU0FuTGk0dmMzUnZjbVV2YzNSaGRIVnpKMXh5WEc1Y2NseHVaWGh3YjNKMElHbHVkR1Z5Wm1GalpTQkpSMlYwUTI5dVptbG5VbVZ6ZFd4MGUxeHlYRzRnSUNBZ0x5b2c1WnlvNTd1RTVMdTI1WWlkNWFlTDVZeVc1cGUyNUx5ZzVZV2w1NXFFNksrMzVyR0NWVkpNNTVxRTVadTY1YTZhNVltTjU3eUFJQ292WEhKY2JpQWdJQ0IxY214UVpYSm1hWGcvT2lCemRISnBibWNnZkNBb0tDa2dQVDRnYzNSeWFXNW5LVHRjY2x4dUlDQWdJQzhxSU9XY3FPZTdoT1M3dHVXSW5lV25pK1dNbHVhWHR1UzhvT1dGcGVlYWhPZVVxT2FJdCtlWnUrbVpodWFBZ2VpdXZ1ZTlydWFjck9XY3NPZThrK1d0bU9hWHR1bVh0Q0FxTDF4eVhHNGdJQ0FnYzJWemMybHZia1Y0Y0dseVpWUnBiV1UvT2lCdWRXMWlaWEk3WEhKY2JpQWdJQ0F2S2lEbG5Lam51NFRrdTdibGlKM2xwNHZsakpibWw3Ymt2S0RsaGFYbm1vVG5sS2ptaUxmbm1idnBtWWJtZ0lIbW5LemxuTERudkpQbHJaam1sN2JwbDdSVGRHOXlZV2RsNTVxRWEyVjVJQ292WEhKY2JpQWdJQ0J6WlhOemFXOXVSWGh3YVhKbFMyVjVQem9nYzNSeWFXNW5PMXh5WEc0Z0lDQWdMeW9nNTVTbzVvaTM1NW03NlptRzVvQ0I1cHlzNVp5dzU3eVQ1YTJZNkwrSDVweWY1NXFFNXBlMjZaZTA1b2l6SUNvdlhISmNiaUFnSUNCelpYTnphVzl1Ulhod2FYSmxQem9nYm5WdFltVnlPMXh5WEc0Z0lIMWNjbHh1WEhKY2JtVjRjRzl5ZENCa1pXWmhkV3gwSUNncElEMCtJSHRjY2x4dUlDQWdJR052Ym5OMElHTnZibVpwWjFKbGMzVnNkQ0E2U1VkbGRFTnZibVpwWjFKbGMzVnNkQ0E5SUh0Y2NseHVJQ0FnSUNBZ0lDQjFjbXhRWlhKbWFYZzZJR052Ym1acFp5NTFjbXhRWlhKbWFYZ3NYSEpjYmlBZ0lDQWdJQ0FnYzJWemMybHZia1Y0Y0dseVpWUnBiV1U2SUhOMFlYUjFjeTV6WlhOemFXOXVSWGh3YVhKbFZHbHRaU3hjY2x4dUlDQWdJQ0FnSUNCelpYTnphVzl1Ulhod2FYSmxTMlY1T2lCamIyNW1hV2N1YzJWemMybHZia1Y0Y0dseVpVdGxlU3hjY2x4dUlDQWdJQ0FnSUNCelpYTnphVzl1Ulhod2FYSmxPaUJ6ZEdGMGRYTXVjMlZ6YzJsdmJrVjRjR2x5WlZ4eVhHNGdJQ0FnZlZ4eVhHNGdJQ0FnY21WMGRYSnVJR052Ym1acFoxSmxjM1ZzZER0Y2NseHVmVHRjY2x4dUlsMTkiLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG52YXIgc3RhdHVzXzEgPSByZXF1aXJlKFwiLi4vc3RvcmUvc3RhdHVzXCIpO1xyXG5leHBvcnRzLmRlZmF1bHQgPSAoZnVuY3Rpb24gKCkge1xyXG4gICAgcmV0dXJuIHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbjtcclxufSk7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVoyVjBVMlZ6YzJsdmJpNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMM055WXk5aGNHa3ZaMlYwVTJWemMybHZiaTUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3p0QlFVRkJMREJEUVVGdlF6dEJRVVZ3UXl4dFFrRkJaVHRKUVVOWUxFOUJRVThzWjBKQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVFN1FVRkRla0lzUTBGQlF5eEZRVUZCSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUhOMFlYUjFjeUJtY205dElDY3VMaTl6ZEc5eVpTOXpkR0YwZFhNblhISmNibHh5WEc1bGVIQnZjblFnWkdWbVlYVnNkQ0FvS1NBOVBpQjdYSEpjYmlBZ0lDQnlaWFIxY200Z2MzUmhkSFZ6TG5ObGMzTnBiMjVjY2x4dWZWeHlYRzRpWFgwPSIsIlwidXNlIHN0cmljdFwiO1xyXG52YXIgX19hc3NpZ24gPSAodGhpcyAmJiB0aGlzLl9fYXNzaWduKSB8fCBmdW5jdGlvbiAoKSB7XHJcbiAgICBfX2Fzc2lnbiA9IE9iamVjdC5hc3NpZ24gfHwgZnVuY3Rpb24odCkge1xyXG4gICAgICAgIGZvciAodmFyIHMsIGkgPSAxLCBuID0gYXJndW1lbnRzLmxlbmd0aDsgaSA8IG47IGkrKykge1xyXG4gICAgICAgICAgICBzID0gYXJndW1lbnRzW2ldO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBwIGluIHMpIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwocywgcCkpXHJcbiAgICAgICAgICAgICAgICB0W3BdID0gc1twXTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHQ7XHJcbiAgICB9O1xyXG4gICAgcmV0dXJuIF9fYXNzaWduLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XHJcbn07XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxudmFyIGNvbmZpZ18xID0gcmVxdWlyZShcIi4uL3N0b3JlL2NvbmZpZ1wiKTtcclxudmFyIHN0YXR1c18xID0gcmVxdWlyZShcIi4uL3N0b3JlL3N0YXR1c1wiKTtcclxuZXhwb3J0cy5kZWZhdWx0ID0gKGZ1bmN0aW9uIChwYXJhbXMpIHtcclxuICAgIHZhciBjb25maWcgPSBfX2Fzc2lnbih7fSwgcGFyYW1zLCBjb25maWdfMS5kZWZhdWx0KTtcclxuICAgIGlmIChwYXJhbXMuc2Vzc2lvbk5hbWUpIHtcclxuICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb24gPSB3eC5nZXRTdG9yYWdlU3luYyhjb25maWcuc2Vzc2lvbk5hbWUpIHx8ICcnO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCd3eC5nZXRTdG9yYWdlU3luYzpmYWlsLCBjYW4gbm90IGdldCBzZXNzaW9uLicpO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGlmIChwYXJhbXMuc2Vzc2lvbkV4cGlyZUtleSkge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZSA9IHd4LmdldFN0b3JhZ2VTeW5jKGNvbmZpZy5zZXNzaW9uRXhwaXJlS2V5KSB8fCBJbmZpbml0eTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgY29uc29sZS5lcnJvcignd3guZ2V0U3RvcmFnZVN5bmM6ZmFpbCwgY2FuIG5vdCBnZXQgc2Vzc2lvbkV4cGlyZS4nKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbn0pO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2lhVzVwZEM1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUwzTnlZeTloY0drdmFXNXBkQzUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3pzN096czdPenM3T3pzN08wRkJRVUVzTUVOQlFUSkRPMEZCUXpORExEQkRRVUZ2UXp0QlFYRkZjRU1zYlVKQlFXVXNWVUZCUXl4TlFVRnRRanRKUVVNdlFpeEpRVUZOTEUxQlFVMHNaMEpCUVc5Q0xFMUJRVTBzUlVGQlN5eG5Ra0ZCWVN4RFFVRkRMRU5CUVVFN1NVRkZla1FzU1VGQlNTeE5RVUZOTEVOQlFVTXNWMEZCVnl4RlFVRkZPMUZCUTNCQ0xFbEJRVWs3V1VGRFFTeG5Ra0ZCVFN4RFFVRkRMRTlCUVU4c1IwRkJSeXhGUVVGRkxFTkJRVU1zWTBGQll5eERRVUZETEUxQlFVMHNRMEZCUXl4WFFVRlpMRU5CUVVNc1NVRkJTU3hGUVVGRkxFTkJRVU03VTBGRGFrVTdVVUZCUXl4UFFVRlBMRU5CUVVNc1JVRkJSVHRaUVVOU0xFOUJRVThzUTBGQlF5eExRVUZMTEVOQlFVTXNPRU5CUVRoRExFTkJRVU1zUTBGQlFUdFRRVU5vUlR0TFFVTktPMGxCUlVRc1NVRkJTU3hOUVVGTkxFTkJRVU1zWjBKQlFXZENMRVZCUVVVN1VVRkRla0lzU1VGQlNUdFpRVU5CTEdkQ1FVRk5MRU5CUVVNc1lVRkJZU3hIUVVGSExFVkJRVVVzUTBGQlF5eGpRVUZqTEVOQlFVTXNUVUZCVFN4RFFVRkRMR2RDUVVGblFpeERRVUZETEVsQlFVa3NVVUZCVVN4RFFVRkRPMU5CUTJwR08xRkJRVU1zVDBGQlR5eERRVUZETEVWQlFVVTdXVUZEVWl4UFFVRlBMRU5CUVVNc1MwRkJTeXhEUVVGRExHOUVRVUZ2UkN4RFFVRkRMRU5CUVVFN1UwRkRkRVU3UzBGRFNqdEJRVU5NTEVOQlFVTXNSVUZCUVNJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCa1pXWmhkV3gwUTI5dVptbG5JR1p5YjIwZ0p5NHVMM04wYjNKbEwyTnZibVpwWnlkY2NseHVhVzF3YjNKMElITjBZWFIxY3lCbWNtOXRJQ2N1TGk5emRHOXlaUzl6ZEdGMGRYTW5YSEpjYmx4eVhHNWxlSEJ2Y25RZ2FXNTBaWEptWVdObElFbEpibWwwVDNCMGFXOXVJSHRjY2x4dUlDQWdJQzhxSU9lVXFHTnZaR1htamFMbGo1WnpaWE56YVc5dTU1cUVRMGRKNllXTjU3MnVJQ292WEhKY2JpQWdJQ0JqYjJSbFZHOVRaWE56YVc5dU9pQkpRMjlrWlZSdlUyVnpjMmx2Yms5d2RHbHZibk03WEhKY2JpQWdJQ0F2S2lEbGdxamxyWmpsbktoc2IyTmhiRk4wYjNKaFoyWG5tb1J6WlhOemFXOXU1WkNONTZldzc3eU01TGlVUTBkSjZLKzM1ckdDNTVxRVpHRjBZZVM0cmVTOG11aUhxdVdLcU9XNHB1UzRpdVM3cGVhdHBPUzR1dVdRamVlbnNPZWFoSE5sYzNOcGIyN2xnTHp2dkp2bGo2L2t1STNwaFkzbnZhN3Z2SXpwdTVqb3JxVGt1THB6WlhOemFXOXVJQ292WEhKY2JpQWdJQ0J6WlhOemFXOXVUbUZ0WlRvZ2MzUnlhVzVuTzF4eVhHNGdJQ0FnTHlvZzZLKzM1ckdDVlZKTTU1cUU1WnU2NWE2YTVZbU41N3lBNzd5TTVhYUM1cDZjNllXTjU3MnU1THFHNzd5TTVaQ081N3V0NksrMzVyR0M1NXFFVlZKTTZZTzk1THlhNkllcTVZcW81WXFnNUxpSzZMK1o1TGlxNVltTjU3eUE3N3lNNWFhQzVwNmM1cGl2NVllOTVwV3c3N3lNNVlpWjVMaTY1WWU5NXBXdzU1cUU2TCtVNVp1ZTVZQzhJQ292WEhKY2JpQWdJQ0IxY214UVpYSm1hWGcvT2lCemRISnBibWNnZkNBb0tDa2dQVDRnYzNSeWFXNW5LVHRjY2x4dUlDQWdJQzhxSU9hWXIrV1FwdW1jZ09pbWdlaXdnK2VVcUdOb1pXTnJVMlZ6YzJsdmJ1KzhqT21xak9pdmdlV3dqK2VvaStXNmorZWFoT2VadStXOWxlYUFnZWkvaCthY24rKzhtK2lMcGVTNG11V0tvZVM0amVtY2dPaW1nZVM5ditlVXFPV0lzSE5sYzNOcGIyNWZhMlY1Nzd5TTVZaVo1WSt2NllXTjU3MnU1TGk2ZEhKMVpTQXFMMXh5WEc0Z0lDQWdaRzlPYjNSRGFHVmphMU5sYzNOcGIyNC9PaUJpYjI5c1pXRnVPMXh5WEc0Z0lDQWdMeW9nNTVtNzViMlY2WWVONksrVjVxeWg1cFd3Nzd5TTViMlQ2TCtlNTd1dDZLKzM1ckdDNTVtNzViMlY1bzZsNVkrajZMK1U1WnVlNWFTeDZMU2w1cXloNXBXdzZMYUY2TCtINkwrWjVMaXE1cXloNXBXdzc3eU01YkNHNUxpTjVZYU42WWVONksrVjU1bTc1YjJWSUNvdlhISmNiaUFnSUNCeVpVeHZaMmx1VEdsdGFYUS9PaUJ1ZFcxaVpYSTdYSEpjYmlBZ0lDQXZLaURsdlpQbGg3cm5qckRtanFYbGo2UHBnTHZvdnBIcGxKbm9yNi9tbDdidnZJemt2SnJtaWFmb29Zem51NS9rdUlEbm1vVGxtNTdvc0lQbGg3M21sYkR2dkl6b3Y1bnBoNHpsajYva3U2WGxnWnJudTUva3VJRG5tb1RwbEpub3I2L2t1SXJtaXFYbnJZbmxwSVRua0lZZ0tpOWNjbHh1SUNBZ0lHVnljbTl5UTJGc2JHSmhZMnMvT2lCdWRXeHNJSHdnUm5WdVkzUnBiMjQ3WEhKY2JpQWdJQ0F2S2lEbWpxWGxqNlBvdjVUbG01N21pSkRsaXAva3VZdmxrSTd2dkl6a3ZKcm1pYWZvb1l6bnU1L2t1SURubW9UbG01N29zSVBsaDczbWxiRHZ2SXpvdjVucGg0emxqNi9rdTZYbGdacm51NS9rdUlEbm1vVG9nSmZtbDdia3VJcm1pcVhucllubHBJVG5rSVlnS2k5Y2NseHVJQ0FnSUhKbGNHOXlkRU5IU1Q4NklHSnZiMnhsWVc0Z2ZDQW9LRnh5WEc0Z0lDQWdJQ0F2S2lEb3NJUG5sS2pubW9UbWpxWGxqNlBsa0kzbHJaZnZ2SXpsajYvbG5LaHlaWEYxWlhOMDVvNmw1WStqNTVxRWNtVndiM0owNWEyWDVxNjE2WVdONTcydUlDb3ZYSEpjYmlBZ0lDQWdJRzVoYldVNklITjBjbWx1Wnl4Y2NseHVJQ0FnSUNBZ0x5b2c1WStSNkxXMzZLKzM1ckdDNXBlMjU1cUU1cGUyNlplMDVvaXpJQ292WEhKY2JpQWdJQ0FnSUhOMFlYSjBWR2x0WlRvZ2JuVnRZbVZ5TEZ4eVhHNGdJQ0FnSUNBdktpRG9yN2Ztc1lMb3Y1VGxtNTdtbDdibm1vVG1sN2JwbDdUbWlMTWdLaTljY2x4dUlDQWdJQ0FnWlc1a1ZHbHRaVG9nYm5WdFltVnlMRnh5WEc0Z0lDQWdJQ0F2S2lEb3I3Zm1zWUxtbHJubXM1WHZ2SXpsajYvbmxLamt1bzdrdUlybWlxVWdLaTljY2x4dUlDQWdJQ0FnY21WeGRXVnpkRDg2SUNncElEMCtJSFp2YVdSY2NseHVJQ0FnSUNrZ1BUNGdkbTlwWkNrN1hISmNiaUFnSUNBdktpQmNkT1dQcitTNHV1YU9wZVdQbythUGtPUyttMjF2WTJ2bWxiRG1qYTRnS2k5Y2NseHVJQ0FnSUcxdlkydEtjMjl1UHpvZ1ZFOUVUenRjY2x4dUlDQWdJQzhxS2lEbWlZRG1uSW5vcjdmbXNZTHBnNzNrdkpyb2g2cmxpcWpsdUtia3VJcm92NW5waDR6bm1vVGxqNExtbGJBZ0tpOWNjbHh1SUNBZ0lHZHNiMkpoYkVSaGRHRS9PaUJpYjI5c1pXRnVJSHdnYjJKcVpXTjBJSHdnUm5WdVkzUnBiMjQ3WEhKY2JpQWdJQ0F2S2lvZ2MyVnpjMmx2YnVXY3FPYWNyT1djc09lOGsrV3RtT2VhaEd0bGVTQXFMMXh5WEc0Z0lDQWdjMlZ6YzJsdmJrVjRjR2x5WlV0bGVUb2djM1J5YVc1bk8xeHlYRzRnSUNBZ0x5b2c2S2VtNVkrUjZZZU41cGF3NTVtNzViMlY1NXFFNXAyaDVMdTI3N3liNVkrQzVwV3c1TGk2UTBkSjZMK1U1WnVlNTVxRTVwV3c1bzJ1Nzd5TTZMK1U1WnVlNlp5QTZLYUI2WWVONXBhdzU1bTc1YjJWNTVxRTVwMmg1THUySUNvdlhISmNiaUFnSUNCc2IyZHBibFJ5YVdkblpYSS9PaUFvY21Wek9pQnpkSEpwYm1jZ2ZDQkpRVzU1VDJKcVpXTjBJSHdnUVhKeVlYbENkV1ptWlhJcElEMCtJR0p2YjJ4bFlXNDdYSEpjYmlBZ0lDQXZLaURvcDZibGo1SG9yN2Ztc1lMbWlKRGxpcC9ubW9UbW5hSGt1N2J2dkp2bGo0TG1sYkRrdUxwRFIwbm92NVRsbTU3bm1vVG1sYkRtamE3dnZJem92NVRsbTU3bWpxWGxqNlBwZ0x2b3ZwSG1pSkRsaXAvbm1vVG1uYUhrdTdZZ0tpOWNjbHh1SUNBZ0lITjFZMk5sYzNOVWNtbG5aMlZ5UHpvZ0tISmxjem9nYzNSeWFXNW5JSHdnU1VGdWVVOWlhbVZqZENCOElFRnljbUY1UW5WbVptVnlLU0E5UGlCaWIyOXNaV0Z1TzF4eVhHNGdJQ0FnTHlvZzVvaVE1WXFmNUxtTDVaQ082TCtVNVp1ZTVwV3c1bzJ1Nzd5YjVZK0M1cFd3NUxpNlEwZEo2TCtVNVp1ZTU1cUU1cFd3NW8ydTc3eU02TCtVNVp1ZTZZQzc2TDZSNlp5QTZLYUI1TDIvNTVTbzU1cUU1cFd3NW8ydUlDb3ZYSEpjYmlBZ0lDQnpkV05qWlhOelJHRjBZVDg2SUNoeVpYTTZJSE4wY21sdVp5QjhJRWxCYm5sUFltcGxZM1FnZkNCQmNuSmhlVUoxWm1abGNpa2dQVDRnWW05dmJHVmhianRjY2x4dUlDQWdJQzhxSUZ4MDVvNmw1WStqNllDNzZMNlI1YVN4NkxTbDVwZTI3N3lNNlpTWjZLK3Y1Ynk1NTZxWDU1cUU1cUNINmFLWUlDb3ZYSEpjYmlBZ0lDQmxjbkp2Y2xScGRHeGxQem9nYzNSeWFXNW5JSHdnS0NoeVpYTTZJSE4wY21sdVp5QjhJRWxCYm5sUFltcGxZM1FnZkNCQmNuSmhlVUoxWm1abGNpa2dQVDRnYzNSeWFXNW5LVHRjY2x4dUlDQWdJQzhxSU9hT3BlV1BvK21BdStpK2tlV2tzZWkwcGVhWHR1KzhqT21VbWVpdnIrVzh1ZWVxbCtlYWhPV0doZVd1dVNBcUwxeHlYRzRnSUNBZ1pYSnliM0pEYjI1MFpXNTBQem9nYzNSeWFXNW5JSHdnS0NoeVpYTTZJSE4wY21sdVp5QjhJRWxCYm5sUFltcGxZM1FnZkNCQmNuSmhlVUoxWm1abGNpa2dQVDRnYzNSeWFXNW5LVHRjY2x4dUlDQjlYSEpjYmx4eVhHNGdJR1Y0Y0c5eWRDQnBiblJsY21aaFkyVWdTVU52WkdWVWIxTmxjM05wYjI1UGNIUnBiMjV6ZTF4eVhHNGdJQ0FnTHlvZ1EwZEo1NXFFZFhKc0lDb3ZYSEpjYmlBZ0lDQjFjbXcvT2lCemRISnBibWM3WEhKY2JpQWdJQ0F2S2lEb3NJUG5sS2pvcjZWRFIwbm5tb1RtbHJubXM1VWdLaTljY2x4dUlDQWdJRzFsZEdodlpEODZJQ2RQVUZSSlQwNVRKMXh5WEc0Z0lDQWdmQ0FuUjBWVUoxeHlYRzRnSUNBZ2ZDQW5TRVZCUkNkY2NseHVJQ0FnSUh3Z0oxQlBVMVFuWEhKY2JpQWdJQ0I4SUNkUVZWUW5YSEpjYmlBZ0lDQjhJQ2RFUlV4RlZFVW5YSEpjYmlBZ0lDQjhJQ2RVVWtGRFJTZGNjbHh1SUNBZ0lId2dKME5QVGs1RlExUW5JSHdnSjNOMGNtbHVaeWNzWEhKY2JpQWdJQ0F2S2lCRFIwbmt1SzNrdktEbGo0TG1sN2J2dkl6bHJaam1sTDVqYjJSbDU1cUU1WkNONTZld0lDb3ZYSEpjYmlBZ0lDQmpiMlJsVG1GdFpUODZJSE4wY21sdVp6dGNjbHh1SUNBZ0lDOHFJT2VadStXOWxlYU9wZVdQbyttY2dPaW1nZWVhaE9XRnR1UzdsdVdQZ3VhVnNDQXFMMXh5WEc0Z0lDQWdaR0YwWVQ4NklITjBjbWx1WnlCOElFbEJibmxQWW1wbFkzUWdmQ0JCY25KaGVVSjFabVpsY2p0Y2NseHVJQ0FnSUM4cUlPYU9wZVdQbytpL2xPV2JudWFJa09XS24rZWFoT1dIdmVhVnNPKzhtK21jZ09pbWdlaS9sT1dibm5ObGMzTnBiMjdubW9UbGdMd2dLaTljY2x4dUlDQWdJSE4xWTJObGMzTS9PaUJHZFc1amRHbHZianRjY2x4dUlDQWdJQzhxSUdOdlpHWG1qYUxsajVaelpYTnphVzl1NTVxRTVvNmw1WStqNllDNzZMNlI1WWU2NlpTWjVwZTI3N3lNNW9tbjZLR001NXFFNVllOTVwV3c3N3lNNkl1bDZZV041NzJ1NUxxRzVxMms1WWU5NXBXdzc3eU01WWlaNUxpTjVZYU42YnVZNks2azVieTU1NnFYNW9xbDZaU1pJQ292WEhKY2JpQWdJQ0JtWVdsc1B6b2dSblZ1WTNScGIyNDdYSEpjYmlBZ0lDQXZLaUJqYjJSbFZHOVRaWE56YVc5dTU1cUU1TGlLNW9xbDVhMlg1cTYxNVpDTklDb3ZYSEpjYmlBZ0lDQnlaWEJ2Y25RL09pQnpkSEpwYm1jN1hISmNiaUFnZlZ4eVhHNWNjbHh1WEhKY2JtVjRjRzl5ZENCa1pXWmhkV3gwSUNod1lYSmhiWE02SUVsSmJtbDBUM0IwYVc5dUtTQTlQaUI3WEhKY2JpQWdJQ0JqYjI1emRDQmpiMjVtYVdjNklFbEpibWwwVDNCMGFXOXVJRDBnZXk0dUxuQmhjbUZ0Y3l3Z0xpNHVaR1ZtWVhWc2RFTnZibVpwWjMxY2NseHVJQ0FnSUM4dklPV21ndWFlbk9tRmplZTlydWFidE9hVXVlUzZobk5sYzNOcGIyN25tb1RsclpqbGdxamxrSTNsclpmdnZJemxpSm5waDQzbWxyRG9qcmZsajVia3VJRG1yS0Z6WlhOemFXOXVYSEpjYmlBZ0lDQnBaaUFvY0dGeVlXMXpMbk5sYzNOcGIyNU9ZVzFsS1NCN1hISmNiaUFnSUNBZ0lDQWdkSEo1SUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnYzNSaGRIVnpMbk5sYzNOcGIyNGdQU0IzZUM1blpYUlRkRzl5WVdkbFUzbHVZeWhqYjI1bWFXY3VjMlZ6YzJsdmJrNWhiV1VoS1NCOGZDQW5KenRjY2x4dUlDQWdJQ0FnSUNCOUlHTmhkR05vSUNobEtTQjdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lHTnZibk52YkdVdVpYSnliM0lvSjNkNExtZGxkRk4wYjNKaFoyVlRlVzVqT21aaGFXd3NJR05oYmlCdWIzUWdaMlYwSUhObGMzTnBiMjR1SnlsY2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQjlYSEpjYmlBZ0lDQXZMeURscG9MbW5wenBoWTNudmE3bW03VG1sTG5rdW9aelpYTnphVzl1NkwrSDVweWY1cGUyNlplMDU1cUU1YTJZNVlLbzVaQ041YTJYNzd5TTVZaVo2WWVONXBhdzZJNjM1WStXNUxpQTVxeWhjMlZ6YzJsdmJ1ZWFoT2kvaCthY24rYVh0dW1YdEZ4eVhHNGdJQ0FnYVdZZ0tIQmhjbUZ0Y3k1elpYTnphVzl1Ulhod2FYSmxTMlY1S1NCN1hISmNiaUFnSUNBZ0lDQWdkSEo1SUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnYzNSaGRIVnpMbk5sYzNOcGIyNUZlSEJwY21VZ1BTQjNlQzVuWlhSVGRHOXlZV2RsVTNsdVl5aGpiMjVtYVdjdWMyVnpjMmx2YmtWNGNHbHlaVXRsZVNrZ2ZId2dTVzVtYVc1cGRIazdYSEpjYmlBZ0lDQWdJQ0FnZlNCallYUmphQ0FvWlNrZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCamIyNXpiMnhsTG1WeWNtOXlLQ2QzZUM1blpYUlRkRzl5WVdkbFUzbHVZenBtWVdsc0xDQmpZVzRnYm05MElHZGxkQ0J6WlhOemFXOXVSWGh3YVhKbExpY3BYSEpjYmlBZ0lDQWdJQ0FnZlZ4eVhHNGdJQ0FnZlZ4eVhHNTlYSEpjYmlKZGZRPT0iLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG52YXIgc2Vzc2lvbk1hbmFnZXJfMSA9IHJlcXVpcmUoXCIuLi9tb2R1bGUvc2Vzc2lvbk1hbmFnZXJcIik7XHJcbmV4cG9ydHMuZGVmYXVsdCA9IChmdW5jdGlvbiAoY2FsbGJhY2spIHtcclxuICAgIHJldHVybiBzZXNzaW9uTWFuYWdlcl8xLmRlZmF1bHQoY2FsbGJhY2ssIHt9KTtcclxufSk7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWJHOW5hVzR1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SXVMaTh1TGk5emNtTXZZWEJwTDJ4dloybHVMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3TzBGQlFVRXNNa1JCUVcxRU8wRkJSVzVFTEcxQ1FVRmxMRlZCUVVNc1VVRkJhMEk3U1VGRE9VSXNUMEZCVHl4M1FrRkJXU3hEUVVGRExGRkJRVkVzUlVGQlJTeEZRVUZGTEVOQlFVTXNRMEZCUVR0QlFVTnlReXhEUVVGRExFVkJRVUVpTENKemIzVnlZMlZ6UTI5dWRHVnVkQ0k2V3lKcGJYQnZjblFnWTJobFkydFRaWE56YVc5dUlHWnliMjBnSnk0dUwyMXZaSFZzWlM5elpYTnphVzl1VFdGdVlXZGxjaWRjY2x4dVhISmNibVY0Y0c5eWRDQmtaV1poZFd4MElDaGpZV3hzWW1GamF6b2dSblZ1WTNScGIyNHBJRDArSUh0Y2NseHVJQ0FnSUhKbGRIVnliaUJqYUdWamExTmxjM05wYjI0b1kyRnNiR0poWTJzc0lIdDlLVnh5WEc1OVhISmNiaUpkZlE9PSIsIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbnZhciByZXF1ZXN0SGFuZGxlcl8xID0gcmVxdWlyZShcIi4uL21vZHVsZS9yZXF1ZXN0SGFuZGxlclwiKTtcclxuZXhwb3J0cy5kZWZhdWx0ID0gKGZ1bmN0aW9uIChvYmopIHtcclxuICAgIHJlcXVlc3RIYW5kbGVyXzEuZGVmYXVsdC5yZXF1ZXN0KG9iaik7XHJcbn0pO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljbVZ4ZFdWemRDNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMM055WXk5aGNHa3ZjbVZ4ZFdWemRDNTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenRCUVVGQkxESkVRVUZ4UkR0QlFWZHlSQ3h0UWtGQlpTeFZRVUZETEVkQlFXMUNPMGxCUXk5Q0xIZENRVUZqTEVOQlFVTXNUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGQk8wRkJReTlDTEVOQlFVTXNSVUZCUVNJc0luTnZkWEpqWlhORGIyNTBaVzUwSWpwYkltbHRjRzl5ZENCeVpYRjFaWE4wU0dGdVpHeGxjaUJtY205dElDY3VMaTl0YjJSMWJHVXZjbVZ4ZFdWemRFaGhibVJzWlhJblhISmNibHh5WEc1bGVIQnZjblFnYVc1MFpYSm1ZV05sSUVsU1pYRjFaWE4wVDNCMGFXOXVJR1Y0ZEdWdVpITWdkM2d1VW1WeGRXVnpkRTl3ZEdsdmJpQjdYSEpjYmlBZ0lDQXZLaURsajVIb3RiZm9yN2Ztc1lMbGlZM21pYWZvb1l6bm1vVGxoNzNtbGJBZ0tpOWNjbHh1SUNBZ0lHSmxabTl5WlZObGJtUS9PaUJHZFc1amRHbHZianRjY2x4dUlDQWdJQzhxSU9pdnQrYXhndWkvaCtlb2krbWh0ZW1kb3VhWXIrV1FwdVd4bGVla3V1V0ZxT1d4aitlYWhHeHZZV1JwYm1jZ0tpOWNjbHh1SUNBZ0lITm9iM2RNYjJGa2FXNW5Qem9nWW05dmJHVmhiaUI4SUhOMGNtbHVaenRjY2x4dUlDQWdJQzhxSU9hT3BlV1BvK2l2dCtheGd1YUlrT1dLbitXUWp1V3dodWlIcXVXS3FPYUpwK2loakdsdWFYUW9LZVM0cmVtRmplZTlydWVhaEhKbGNHOXlkRU5IU2VXSHZlYVZzTys4ak9XRnR1UzRyZWVhaEc1aGJXWGxyWmZtcnJYbGdMemt1THJvdjVucGg0enBoWTNudmE3bm1vVGxnTHdnS2k5Y2NseHVJQ0FnSUhKbGNHOXlkRDg2SUhOMGNtbHVaenRjY2x4dUlDQjlYSEpjYmx4eVhHNWxlSEJ2Y25RZ1pHVm1ZWFZzZENBb2IySnFPaUJKVW1WeGRXVnpkRTl3ZEdsdmJpa2dQVDRnZTF4eVhHNGdJQ0FnY21WeGRXVnpkRWhoYm1Sc1pYSXVjbVZ4ZFdWemRDaHZZbW9wWEhKY2JuMWNjbHh1SWwxOSIsIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbnZhciBzdGF0dXNfMSA9IHJlcXVpcmUoXCIuLi9zdG9yZS9zdGF0dXNcIik7XHJcbmV4cG9ydHMuZGVmYXVsdCA9IChmdW5jdGlvbiAoc2Vzc2lvbikge1xyXG4gICAgc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uID0gc2Vzc2lvbjtcclxuICAgIHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbklzRnJlc2ggPSB0cnVlO1xyXG59KTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYzJWMFUyVnpjMmx2Ymk1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUwzTnlZeTloY0drdmMyVjBVMlZ6YzJsdmJpNTBjeUpkTENKdVlXMWxjeUk2VzEwc0ltMWhjSEJwYm1keklqb2lPenRCUVVGQkxEQkRRVUZ2UXp0QlFVVndReXh0UWtGQlpTeFZRVUZETEU5QlFXRTdTVUZEZWtJc1owSkJRVTBzUTBGQlF5eFBRVUZQTEVkQlFVY3NUMEZCVHl4RFFVRkRPMGxCUTNwQ0xHZENRVUZOTEVOQlFVTXNZMEZCWXl4SFFVRkhMRWxCUVVrc1EwRkJRenRCUVVOcVF5eERRVUZETEVWQlFVRWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpwYlhCdmNuUWdjM1JoZEhWeklHWnliMjBnSnk0dUwzTjBiM0psTDNOMFlYUjFjeWRjY2x4dVhISmNibVY0Y0c5eWRDQmtaV1poZFd4MElDaHpaWE56YVc5dU9pQlVUMFJQS1NBOVBpQjdYSEpjYmlBZ0lDQnpkR0YwZFhNdWMyVnpjMmx2YmlBOUlITmxjM05wYjI0N1hISmNiaUFnSUNCemRHRjBkWE11YzJWemMybHZia2x6Um5KbGMyZ2dQU0IwY25WbE8xeHlYRzU5WEhKY2JpSmRmUT09IiwiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxudmFyIHJlcXVlc3RIYW5kbGVyXzEgPSByZXF1aXJlKFwiLi4vbW9kdWxlL3JlcXVlc3RIYW5kbGVyXCIpO1xyXG5leHBvcnRzLmRlZmF1bHQgPSAoZnVuY3Rpb24gKG9iaikge1xyXG4gICAgcmVxdWVzdEhhbmRsZXJfMS5kZWZhdWx0LnVwbG9hZEZpbGUob2JqKTtcclxufSk7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWRYQnNiMkZrUm1sc1pTNXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMM055WXk5aGNHa3ZkWEJzYjJGa1JtbHNaUzUwY3lKZExDSnVZVzFsY3lJNlcxMHNJbTFoY0hCcGJtZHpJam9pT3p0QlFVRkJMREpFUVVGeFJEdEJRVVZ5UkN4dFFrRkJaU3hWUVVGRExFZEJRVk03U1VGRGNrSXNkMEpCUVdNc1EwRkJReXhWUVVGVkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVRTdRVUZEYkVNc1EwRkJReXhGUVVGQklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElISmxjWFZsYzNSSVlXNWtiR1Z5SUdaeWIyMGdKeTR1TDIxdlpIVnNaUzl5WlhGMVpYTjBTR0Z1Wkd4bGNpZGNjbHh1WEhKY2JtVjRjRzl5ZENCa1pXWmhkV3gwSUNodlltbzZJRlJQUkU4cElEMCtJSHRjY2x4dUlDQWdJSEpsY1hWbGMzUklZVzVrYkdWeUxuVndiRzloWkVacGJHVW9iMkpxS1Z4eVhHNTlYSEpjYmlKZGZRPT0iLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG52YXIgaW5pdF8xID0gcmVxdWlyZShcIi4vYXBpL2luaXRcIik7XHJcbnZhciByZXF1ZXN0XzEgPSByZXF1aXJlKFwiLi9hcGkvcmVxdWVzdFwiKTtcclxudmFyIHVwbG9hZEZpbGVfMSA9IHJlcXVpcmUoXCIuL2FwaS91cGxvYWRGaWxlXCIpO1xyXG52YXIgc2V0U2Vzc2lvbl8xID0gcmVxdWlyZShcIi4vYXBpL3NldFNlc3Npb25cIik7XHJcbnZhciBsb2dpbl8xID0gcmVxdWlyZShcIi4vYXBpL2xvZ2luXCIpO1xyXG52YXIgZ2V0U2Vzc2lvbl8xID0gcmVxdWlyZShcIi4vYXBpL2dldFNlc3Npb25cIik7XHJcbnZhciBnZXRDb25maWdfMSA9IHJlcXVpcmUoXCIuL2FwaS9nZXRDb25maWdcIik7XHJcbnZhciB3ZVJlcXVlc3RPYmplY3QgPSB7XHJcbiAgICBpbml0OiBpbml0XzEuZGVmYXVsdCxcclxuICAgIHJlcXVlc3Q6IHJlcXVlc3RfMS5kZWZhdWx0LFxyXG4gICAgdXBsb2FkRmlsZTogdXBsb2FkRmlsZV8xLmRlZmF1bHQsXHJcbiAgICBzZXRTZXNzaW9uOiBzZXRTZXNzaW9uXzEuZGVmYXVsdCxcclxuICAgIGxvZ2luOiBsb2dpbl8xLmRlZmF1bHQsXHJcbiAgICBnZXRTZXNzaW9uOiBnZXRTZXNzaW9uXzEuZGVmYXVsdCxcclxuICAgIGdldENvbmZpZzogZ2V0Q29uZmlnXzEuZGVmYXVsdFxyXG59O1xyXG5leHBvcnRzLmRlZmF1bHQgPSB3ZVJlcXVlc3RPYmplY3Q7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWFXNWtaWGd1YW5NaUxDSnpiM1Z5WTJWU2IyOTBJam9pSWl3aWMyOTFjbU5sY3lJNld5SXVMaTl6Y21NdmFXNWtaWGd1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN1FVRkJRU3h0UTBGQk9FSTdRVUZET1VJc2VVTkJRVzlETzBGQlEzQkRMQ3REUVVFd1F6dEJRVU14UXl3clEwRkJNRU03UVVGRE1VTXNjVU5CUVdkRE8wRkJRMmhETEN0RFFVRXdRenRCUVVNeFF5dzJRMEZCZDBNN1FVRjVRM2hETEVsQlFVMHNaVUZCWlN4SFFVRmpPMGxCUTJwRExFbEJRVWtzWjBKQlFVRTdTVUZEU2l4UFFVRlBMRzFDUVVGQk8wbEJRMUFzVlVGQlZTeHpRa0ZCUVR0SlFVTldMRlZCUVZVc2MwSkJRVUU3U1VGRFZpeExRVUZMTEdsQ1FVRkJPMGxCUTB3c1ZVRkJWU3h6UWtGQlFUdEpRVU5XTEZOQlFWTXNjVUpCUVVFN1EwRkRWaXhEUVVGRE8wRkJSVVlzYTBKQlFXVXNaVUZCWlN4RFFVRkRJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJR2x1YVhRZ1puSnZiU0JjSWk0dllYQnBMMmx1YVhSY0lqdGNjbHh1YVcxd2IzSjBJSEpsY1hWbGMzUWdabkp2YlNCY0lpNHZZWEJwTDNKbGNYVmxjM1JjSWp0Y2NseHVhVzF3YjNKMElIVndiRzloWkVacGJHVWdabkp2YlNCY0lpNHZZWEJwTDNWd2JHOWhaRVpwYkdWY0lqdGNjbHh1YVcxd2IzSjBJSE5sZEZObGMzTnBiMjRnWm5KdmJTQmNJaTR2WVhCcEwzTmxkRk5sYzNOcGIyNWNJanRjY2x4dWFXMXdiM0owSUd4dloybHVJR1p5YjIwZ1hDSXVMMkZ3YVM5c2IyZHBibHdpTzF4eVhHNXBiWEJ2Y25RZ1oyVjBVMlZ6YzJsdmJpQm1jbTl0SUZ3aUxpOWhjR2t2WjJWMFUyVnpjMmx2Ymx3aU8xeHlYRzVwYlhCdmNuUWdaMlYwUTI5dVptbG5JR1p5YjIwZ1hDSXVMMkZ3YVM5blpYUkRiMjVtYVdkY0lqdGNjbHh1YVcxd2IzSjBJSHNnU1VsdWFYUlBjSFJwYjI0Z2ZTQm1jbTl0SUZ3aUxpOWhjR2t2YVc1cGRGd2lPMXh5WEc1cGJYQnZjblFnZXlCSlVtVnhkV1Z6ZEU5d2RHbHZiaUI5SUdaeWIyMGdYQ0l1TDJGd2FTOXlaWEYxWlhOMFhDSTdYSEpjYmx4eVhHNWxlSEJ2Y25RZ2FXNTBaWEptWVdObElFbFZjR3h2WVdSR2FXeGxUM0IwYVc5dUlHVjRkR1Z1WkhNZ2QzZ3VWWEJzYjJGa1JtbHNaVTl3ZEdsdmJpQjdYSEpjYmlBZ0x5b2c1WStSNkxXMzZLKzM1ckdDNVltTjVvbW42S0dNNTVxRTVZZTk1cFd3SUNvdlhISmNiaUFnWW1WbWIzSmxVMlZ1WkQ4NklFWjFibU4wYVc5dU8xeHlYRzRnSUM4cUlPaXZ0K2F4Z3VpL2grZW9pK21odGVtZG91YVlyK1dRcHVXeGxlZWt1dVdGcU9XeGorZWFoR3h2WVdScGJtY2dLaTljY2x4dUlDQnphRzkzVEc5aFpHbHVaejg2SUdKdmIyeGxZVzRnZkNCemRISnBibWM3WEhKY2JpQWdMeW9nNW82bDVZK2o2SyszNXJHQzVvaVE1WXFmNVpDTzViQ0c2SWVxNVlxbzVvbW42S0dNYVc1cGRDZ3A1TGl0NllXTjU3MnU1NXFFY21Wd2IzSjBRMGRKNVllOTVwV3c3N3lNNVlXMjVMaXQ1NXFFYm1GdFplV3RsK2F1dGVXQXZPUzR1dWkvbWVtSGpPbUZqZWU5cnVlYWhPV0F2Q0FxTDF4eVhHNGdJSEpsY0c5eWREODZJSE4wY21sdVp6dGNjbHh1ZlZ4eVhHNWNjbHh1Wlhod2IzSjBJR2x1ZEdWeVptRmpaU0JKUjJWMFEyOXVabWxuVW1WemRXeDBJSHRjY2x4dUlDQXZLaURsbktqbnU0VGt1N2JsaUozbHA0dmxqSmJtbDdia3ZLRGxoYVhubW9Ub3I3Zm1zWUpWVWt6bm1vVGxtN3JscnBybGlZM252SUFnS2k5Y2NseHVJQ0IxY214UVpYSm1hWGcvT2lCemRISnBibWNnZkNBb0tDa2dQVDRnYzNSeWFXNW5LVHRjY2x4dUlDQXZLaURsbktqbnU0VGt1N2JsaUozbHA0dmxqSmJtbDdia3ZLRGxoYVhubW9UbmxLam1pTGZubWJ2cG1ZYm1nSUhvcnI3bnZhN21uS3psbkxEbnZKUGxyWmptbDdicGw3UWdLaTljY2x4dUlDQnpaWE56YVc5dVJYaHdhWEpsVkdsdFpUODZJRzUxYldKbGNqdGNjbHh1SUNBdktpRGxuS2pudTRUa3U3YmxpSjNscDR2bGpKYm1sN2JrdktEbGhhWG5tb1RubEtqbWlMZm5tYnZwbVlibWdJSG1uS3psbkxEbnZKUGxyWmptbDdicGw3UlRkRzl5WVdkbDU1cUVhMlY1SUNvdlhISmNiaUFnYzJWemMybHZia1Y0Y0dseVpVdGxlVDg2SUhOMGNtbHVaenRjY2x4dUlDQXZLaURubEtqbWlMZm5tYnZwbVlibWdJSG1uS3psbkxEbnZKUGxyWmpvdjRmbW5KL25tb1RtbDdicGw3VG1pTE1nS2k5Y2NseHVJQ0J6WlhOemFXOXVSWGh3YVhKbFB6b2diblZ0WW1WeU8xeHlYRzU5WEhKY2JseHlYRzVsZUhCdmNuUWdhVzUwWlhKbVlXTmxJSGRsVW1WeGRXVnpkQ0I3WEhKY2JpQWdMeW9xSU9Xd2orZW9pK1c2aitpMHB1V1B0K1Mvb2VhQnJ5QXFMMXh5WEc0Z0lHbHVhWFEvT2lBb2IySnFPaUJKU1c1cGRFOXdkR2x2YmlrZ1BUNGdkbTlwWkR0Y2NseHVJQ0F2S2lvZzVvK1M1THUyNkxTbTVZKzM1TCtoNW9Hdjc3eUk1THVGNVp5bzVvK1M1THUyNUxpdDZMQ0Q1NVNvNXBlMjVZeUY1WkNyNkwrWjVMaUE2YUc1Nzd5SklDb3ZYSEpjYmlBZ2NtVnhkV1Z6ZEQ4NklDaHZjSFJwYjI0NklFbFNaWEYxWlhOMFQzQjBhVzl1S1NBOVBpQjJiMmxrTzF4eVhHNGdJQzhxS2lEbWo1TGt1N2JvdEtibGo3Zmt2NkhtZ2EvdnZJamt1NFhsbktqbWo1TGt1N2JrdUszb3NJUG5sS2ptbDdibGpJWGxrS3ZvdjVua3VJRHBvYm52dklrZ0tpOWNjbHh1SUNCMWNHeHZZV1JHYVd4bFB6b2dLRzl3ZEdsdmJqb2dTVlZ3Ykc5aFpFWnBiR1ZQY0hScGIyNHBJRDArSUhadmFXUTdYSEpjYmlBZ0x5b2c2STYzNVkrVzVweXM1Wnl3NTd5VDVhMlk1TGl0NTVTbzVvaTM1NldvNW8ydTU1cUU1WUM4SUNvdlhISmNiaUFnWjJWMFUyVnpjMmx2Ymo4NklDZ3BJRDArSUhOMGNtbHVaenRjY2x4dUlDQXZLaURvanJmbGo1WjNaVkpsY1hWbGMzVG5tb1RwaFkzbnZhNGdLaTljY2x4dUlDQm5aWFJEYjI1bWFXYy9PaUFvS1NBOVBpQkpSMlYwUTI5dVptbG5VbVZ6ZFd4ME8xeHlYRzRnSUM4cUlGdmt1STNsdTdyb3JxN2t2Yi9ubEtoZElPV2NxT1M0amVXUGtlaTF0K1M0bXVXS29laXZ0K2F4Z3VlYWhPYURoZVdHdGVTNGkrKzhqT1dObGVlTHJPYUpwK2loak9lWnUrVzlsZW1BdStpK2tTQXFMMXh5WEc0Z0lHeHZaMmx1UHpvZ0tHTmhiR3hpWVdOck9pQkdkVzVqZEdsdmJpa2dQVDRnZG05cFpEdGNjbHh1SUNBdktpQmI1TGlONWJ1NjZLNnU1TDIvNTVTb1hTRG9ycjdudmE3bmxLam1pTGZucGFqbWphN25tb1RsZ0x3Z0tpOWNjbHh1SUNCelpYUlRaWE56YVc5dVB6b2dLSGc2SUhOMGNtbHVaeWtnUFQ0Z2RtOXBaRHRjY2x4dWZWeHlYRzVjY2x4dVkyOXVjM1FnZDJWU1pYRjFaWE4wVDJKcVpXTjBPaUIzWlZKbGNYVmxjM1FnUFNCN1hISmNiaUFnYVc1cGRDeGNjbHh1SUNCeVpYRjFaWE4wTEZ4eVhHNGdJSFZ3Ykc5aFpFWnBiR1VzWEhKY2JpQWdjMlYwVTJWemMybHZiaXhjY2x4dUlDQnNiMmRwYml4Y2NseHVJQ0JuWlhSVFpYTnphVzl1TEZ4eVhHNGdJR2RsZEVOdmJtWnBaMXh5WEc1OU8xeHlYRzVjY2x4dVpYaHdiM0owSUdSbFptRjFiSFFnZDJWU1pYRjFaWE4wVDJKcVpXTjBPMXh5WEc0aVhYMD0iLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG5mdW5jdGlvbiBnZXQob2JqKSB7XHJcbiAgICB3eC5nZXRTdG9yYWdlKHtcclxuICAgICAgICBrZXk6IG9iai5vcmlnaW5VcmwsXHJcbiAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKHJlcykge1xyXG4gICAgICAgICAgICBpZiAodHlwZW9mIG9iai5jYWNoZSA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jYWNoZShyZXMuZGF0YSkpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb2JqLnN1Y2Nlc3MgPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgICAgICAgICAgICAgIG9iai5zdWNjZXNzKHJlcy5kYXRhLCB7IGlzQ2FjaGU6IHRydWUgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAob2JqLmNhY2hlID09IHRydWUpIHtcclxuICAgICAgICAgICAgICAgIGlmICh0eXBlb2Ygb2JqLnN1Y2Nlc3MgPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgICAgICAgICAgICAgIG9iai5zdWNjZXNzKHJlcy5kYXRhLCB7IGlzQ2FjaGU6IHRydWUgfSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdHlwZW9mIG9iai5jb21wbGV0ZSA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb21wbGV0ZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG59XHJcbmZ1bmN0aW9uIHNldChvYmosIHJlYWxEYXRhKSB7XHJcbiAgICBpZiAob2JqLmNhY2hlID09PSB0cnVlIHx8ICh0eXBlb2Ygb2JqLmNhY2hlID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNhY2hlKHJlYWxEYXRhKSkpIHtcclxuICAgICAgICB3eC5zZXRTdG9yYWdlKHtcclxuICAgICAgICAgICAga2V5OiBvYmoub3JpZ2luVXJsLFxyXG4gICAgICAgICAgICBkYXRhOiByZWFsRGF0YVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG59XHJcbmV4cG9ydHMuZGVmYXVsdCA9IHtcclxuICAgIGdldDogZ2V0LFxyXG4gICAgc2V0OiBzZXRcclxufTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pWTJGamFHVk5ZVzVoWjJWeUxtcHpJaXdpYzI5MWNtTmxVbTl2ZENJNklpSXNJbk52ZFhKalpYTWlPbHNpTGk0dkxpNHZjM0pqTDIxdlpIVnNaUzlqWVdOb1pVMWhibUZuWlhJdWRITWlYU3dpYm1GdFpYTWlPbHRkTENKdFlYQndhVzVuY3lJNklqczdRVUZCUVN4VFFVRlRMRWRCUVVjc1EwRkJReXhIUVVGVE8wbEJRMnhDTEVWQlFVVXNRMEZCUXl4VlFVRlZMRU5CUVVNN1VVRkRWaXhIUVVGSExFVkJRVVVzUjBGQlJ5eERRVUZETEZOQlFWTTdVVUZEYkVJc1QwRkJUeXhGUVVGRkxGVkJRVlVzUjBGQlJ6dFpRVU5zUWl4SlFVRkpMRTlCUVU4c1IwRkJSeXhEUVVGRExFdEJRVXNzUzBGQlN5eFZRVUZWTEVsQlFVa3NSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeERRVUZETEVWQlFVVTdaMEpCUTNoRUxFbEJRVWtzVDBGQlR5eEhRVUZITEVOQlFVTXNUMEZCVHl4TFFVRkxMRlZCUVZVc1JVRkJSVHR2UWtGRGJrTXNSMEZCUnl4RFFVRkRMRTlCUVU4c1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeEZRVUZGTEVWQlFVTXNUMEZCVHl4RlFVRkZMRWxCUVVrc1JVRkJReXhEUVVGRExFTkJRVUU3YVVKQlEzcERPMkZCUTBvN2FVSkJRVTBzU1VGQlNTeEhRVUZITEVOQlFVTXNTMEZCU3l4SlFVRkpMRWxCUVVrc1JVRkJSVHRuUWtGRE1VSXNTVUZCU1N4UFFVRlBMRWRCUVVjc1EwRkJReXhQUVVGUExFdEJRVXNzVlVGQlZTeEZRVUZGTzI5Q1FVTnVReXhIUVVGSExFTkJRVU1zVDBGQlR5eERRVUZETEVkQlFVY3NRMEZCUXl4SlFVRkpMRVZCUVVVc1JVRkJReXhQUVVGUExFVkJRVVVzU1VGQlNTeEZRVUZETEVOQlFVTXNRMEZCUVR0cFFrRkRla003WVVGRFNqdFpRVU5FTEU5QlFVOHNSMEZCUnl4RFFVRkRMRkZCUVZFc1MwRkJTeXhWUVVGVkxFbEJRVWtzUjBGQlJ5eERRVUZETEZGQlFWRXNSVUZCUlN4RFFVRkRPMUZCUTNwRUxFTkJRVU03UzBGRFNpeERRVUZETEVOQlFVRTdRVUZEVGl4RFFVRkRPMEZCUlVRc1UwRkJVeXhIUVVGSExFTkJRVU1zUjBGQlV5eEZRVUZITEZGQlFXTTdTVUZEYmtNc1NVRkJTU3hIUVVGSExFTkJRVU1zUzBGQlN5eExRVUZMTEVsQlFVa3NTVUZCU1N4RFFVRkRMRTlCUVU4c1IwRkJSeXhEUVVGRExFdEJRVXNzUzBGQlN5eFZRVUZWTEVsQlFVa3NSMEZCUnl4RFFVRkRMRXRCUVVzc1EwRkJReXhSUVVGUkxFTkJRVU1zUTBGQlF5eEZRVUZGTzFGQlEyaEdMRVZCUVVVc1EwRkJReXhWUVVGVkxFTkJRVU03V1VGRFZpeEhRVUZITEVWQlFVVXNSMEZCUnl4RFFVRkRMRk5CUVZNN1dVRkRiRUlzU1VGQlNTeEZRVUZGTEZGQlFWRTdVMEZEYWtJc1EwRkJReXhEUVVGQk8wdEJRMHc3UVVGRFRDeERRVUZETzBGQlJVUXNhMEpCUVdVN1NVRkRXQ3hIUVVGSExFdEJRVUU3U1VGRFNDeEhRVUZITEV0QlFVRTdRMEZEVGl4RFFVRkRJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpWm5WdVkzUnBiMjRnWjJWMEtHOWlham9nVkU5RVR5a2dlMXh5WEc0Z0lDQWdkM2d1WjJWMFUzUnZjbUZuWlNoN1hISmNiaUFnSUNBZ0lDQWdhMlY1T2lCdlltb3ViM0pwWjJsdVZYSnNMRnh5WEc0Z0lDQWdJQ0FnSUhOMVkyTmxjM002SUdaMWJtTjBhVzl1SUNoeVpYTXBJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hSNWNHVnZaaUJ2WW1vdVkyRmphR1VnUFQwOUlGd2lablZ1WTNScGIyNWNJaUFtSmlCdlltb3VZMkZqYUdVb2NtVnpMbVJoZEdFcEtTQjdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2RIbHdaVzltSUc5aWFpNXpkV05qWlhOeklEMDlQU0JjSW1aMWJtTjBhVzl1WENJcElIdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCdlltb3VjM1ZqWTJWemN5aHlaWE11WkdGMFlTd2dlMmx6UTJGamFHVTZJSFJ5ZFdWOUtWeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2FXWWdLRzlpYWk1allXTm9aU0E5UFNCMGNuVmxLU0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCcFppQW9kSGx3Wlc5bUlHOWlhaTV6ZFdOalpYTnpJRDA5UFNCY0ltWjFibU4wYVc5dVhDSXBJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQnZZbW91YzNWalkyVnpjeWh5WlhNdVpHRjBZU3dnZTJselEyRmphR1U2SUhSeWRXVjlLVnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnZlZ4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJSFI1Y0dWdlppQnZZbW91WTI5dGNHeGxkR1VnUFQwOUlGd2lablZ1WTNScGIyNWNJaUFtSmlCdlltb3VZMjl0Y0d4bGRHVW9LVHRjY2x4dUlDQWdJQ0FnSUNCOVhISmNiaUFnSUNCOUtWeHlYRzU5WEhKY2JseHlYRzVtZFc1amRHbHZiaUJ6WlhRb2IySnFPaUJVVDBSUElDd2djbVZoYkVSaGRHRTZJRlJQUkU4cElIdGNjbHh1SUNBZ0lHbG1JQ2h2WW1vdVkyRmphR1VnUFQwOUlIUnlkV1VnZkh3Z0tIUjVjR1Z2WmlCdlltb3VZMkZqYUdVZ1BUMDlJRndpWm5WdVkzUnBiMjVjSWlBbUppQnZZbW91WTJGamFHVW9jbVZoYkVSaGRHRXBLU2tnZTF4eVhHNGdJQ0FnSUNBZ0lIZDRMbk5sZEZOMGIzSmhaMlVvZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JyWlhrNklHOWlhaTV2Y21sbmFXNVZjbXdzWEhKY2JpQWdJQ0FnSUNBZ0lDQWdJR1JoZEdFNklISmxZV3hFWVhSaFhISmNiaUFnSUNBZ0lDQWdmU2xjY2x4dUlDQWdJSDFjY2x4dWZWeHlYRzVjY2x4dVpYaHdiM0owSUdSbFptRjFiSFFnZTF4eVhHNGdJQ0FnWjJWMExGeHlYRzRnSUNBZ2MyVjBYSEpjYm4wN1hISmNiaUpkZlE9PSIsIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbnZhciBjb25maWdfMSA9IHJlcXVpcmUoXCIuLi9zdG9yZS9jb25maWdcIik7XHJcbmZ1bmN0aW9uIHN0YXJ0KG9iaiwgbmFtZSkge1xyXG4gICAgc3dpdGNoIChuYW1lKSB7XHJcbiAgICAgICAgY2FzZSAnY2hlY2tTZXNzaW9uJzpcclxuICAgICAgICAgICAgb2JqLl9jaGVja1Nlc3Npb25TdGFydFRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgY2FzZSAnbG9naW4nOlxyXG4gICAgICAgICAgICBvYmouX2xvZ2luU3RhcnRUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIGlmIChvYmoucmVwb3J0KSB7XHJcbiAgICAgICAgICAgICAgICBvYmouX3JlcG9ydFN0YXJ0VGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gZW5kKG9iaiwgbmFtZSkge1xyXG4gICAgc3dpdGNoIChuYW1lKSB7XHJcbiAgICAgICAgY2FzZSAnY2hlY2tTZXNzaW9uJzpcclxuICAgICAgICAgICAgb2JqLl9jaGVja1Nlc3Npb25FbmRUaW1lID0gbmV3IERhdGUoKS5nZXRUaW1lKCk7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgY29uZmlnXzEuZGVmYXVsdC5yZXBvcnRDR0kgPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgICAgICAgICAgY29uZmlnXzEuZGVmYXVsdC5yZXBvcnRDR0koJ3d4X2NoZWNrU2Vzc2lvbicsIG9iai5fY2hlY2tTZXNzaW9uU3RhcnRUaW1lLCBvYmouX2NoZWNrU2Vzc2lvbkVuZFRpbWUpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgJ2xvZ2luJzpcclxuICAgICAgICAgICAgb2JqLl9sb2dpbkVuZFRpbWUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKTtcclxuICAgICAgICAgICAgaWYgKHR5cGVvZiBjb25maWdfMS5kZWZhdWx0LnJlcG9ydENHSSA9PT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICAgICAgICBjb25maWdfMS5kZWZhdWx0LnJlcG9ydENHSSgnd3hfbG9naW4nLCBvYmouX2xvZ2luU3RhcnRUaW1lLCBvYmouX2xvZ2luRW5kVGltZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgaWYgKG9iai5yZXBvcnQgJiYgdHlwZW9mIGNvbmZpZ18xLmRlZmF1bHQucmVwb3J0Q0dJID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICAgICAgICAgIG9iai5fcmVwb3J0RW5kVGltZSA9IG5ldyBEYXRlKCkuZ2V0VGltZSgpO1xyXG4gICAgICAgICAgICAgICAgY29uZmlnXzEuZGVmYXVsdC5yZXBvcnRDR0kob2JqLnJlcG9ydCwgb2JqLl9yZXBvcnRTdGFydFRpbWUsIG9iai5fcmVwb3J0RW5kVGltZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICB9XHJcbn1cclxuZXhwb3J0cy5kZWZhdWx0ID0ge1xyXG4gICAgc3RhcnQ6IHN0YXJ0LFxyXG4gICAgZW5kOiBlbmRcclxufTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pWkhWeVlYUnBiMjVTWlhCdmNuUmxjaTVxY3lJc0luTnZkWEpqWlZKdmIzUWlPaUlpTENKemIzVnlZMlZ6SWpwYklpNHVMeTR1TDNOeVl5OXRiMlIxYkdVdlpIVnlZWFJwYjI1U1pYQnZjblJsY2k1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU96dEJRVUZCTERCRFFVRnZRenRCUVVWd1F5eFRRVUZUTEV0QlFVc3NRMEZCUXl4SFFVRlRMRVZCUVVVc1NVRkJZVHRKUVVOdVF5eFJRVUZSTEVsQlFVa3NSVUZCUlR0UlFVTldMRXRCUVVzc1kwRkJZenRaUVVObUxFZEJRVWNzUTBGQlF5eHpRa0ZCYzBJc1IwRkJSeXhKUVVGSkxFbEJRVWtzUlVGQlJTeERRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRPMWxCUTJ4RUxFMUJRVTA3VVVGRFZpeExRVUZMTEU5QlFVODdXVUZEVWl4SFFVRkhMRU5CUVVNc1pVRkJaU3hIUVVGSExFbEJRVWtzU1VGQlNTeEZRVUZGTEVOQlFVTXNUMEZCVHl4RlFVRkZMRU5CUVVNN1dVRkRNME1zVFVGQlRUdFJRVU5XTzFsQlEwa3NTVUZCU1N4SFFVRkhMRU5CUVVNc1RVRkJUU3hGUVVGRk8yZENRVU5hTEVkQlFVY3NRMEZCUXl4blFrRkJaMElzUjBGQlJ5eEpRVUZKTEVsQlFVa3NSVUZCUlN4RFFVRkRMRTlCUVU4c1JVRkJSU3hEUVVGRE8yRkJReTlETzB0QlExSTdRVUZEVEN4RFFVRkRPMEZCUlVRc1UwRkJVeXhIUVVGSExFTkJRVU1zUjBGQlV5eEZRVUZGTEVsQlFXRTdTVUZEYWtNc1VVRkJVU3hKUVVGSkxFVkJRVVU3VVVGRFZpeExRVUZMTEdOQlFXTTdXVUZGWml4SFFVRkhMRU5CUVVNc2IwSkJRVzlDTEVkQlFVY3NTVUZCU1N4SlFVRkpMRVZCUVVVc1EwRkJReXhQUVVGUExFVkJRVVVzUTBGQlF6dFpRVU5vUkN4SlFVRkpMRTlCUVU4c1owSkJRVTBzUTBGQlF5eFRRVUZUTEV0QlFVc3NWVUZCVlN4RlFVRkZPMmRDUVVONFF5eG5Ra0ZCVFN4RFFVRkRMRk5CUVZNc1EwRkJReXhwUWtGQmFVSXNSVUZCUlN4SFFVRkhMRU5CUVVNc2MwSkJRWE5DTEVWQlFVVXNSMEZCUnl4RFFVRkRMRzlDUVVGdlFpeERRVUZETEVOQlFVTTdZVUZETjBZN1dVRkRSQ3hOUVVGTk8xRkJRMVlzUzBGQlN5eFBRVUZQTzFsQlJWSXNSMEZCUnl4RFFVRkRMR0ZCUVdFc1IwRkJSeXhKUVVGSkxFbEJRVWtzUlVGQlJTeERRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRPMWxCUTNwRExFbEJRVWtzVDBGQlR5eG5Ra0ZCVFN4RFFVRkRMRk5CUVZNc1MwRkJTeXhWUVVGVkxFVkJRVVU3WjBKQlEzaERMR2RDUVVGTkxFTkJRVU1zVTBGQlV5eERRVUZETEZWQlFWVXNSVUZCUlN4SFFVRkhMRU5CUVVNc1pVRkJaU3hGUVVGRkxFZEJRVWNzUTBGQlF5eGhRVUZoTEVOQlFVTXNRMEZCUXp0aFFVTjRSVHRaUVVORUxFMUJRVTA3VVVGRFZqdFpRVVZKTEVsQlFVa3NSMEZCUnl4RFFVRkRMRTFCUVUwc1NVRkJTU3hQUVVGUExHZENRVUZOTEVOQlFVTXNVMEZCVXl4TFFVRkxMRlZCUVZVc1JVRkJSVHRuUWtGRGRFUXNSMEZCUnl4RFFVRkRMR05CUVdNc1IwRkJSeXhKUVVGSkxFbEJRVWtzUlVGQlJTeERRVUZETEU5QlFVOHNSVUZCUlN4RFFVRkRPMmRDUVVNeFF5eG5Ra0ZCVFN4RFFVRkRMRk5CUVZNc1EwRkJReXhIUVVGSExFTkJRVU1zVFVGQlRTeEZRVUZGTEVkQlFVY3NRMEZCUXl4blFrRkJaMElzUlVGQlJTeEhRVUZITEVOQlFVTXNZMEZCWXl4RFFVRkRMRU5CUVVNN1lVRkRNVVU3V1VGRFJDeE5RVUZOTzB0QlEySTdRVUZEVEN4RFFVRkRPMEZCUlVRc2EwSkJRV1U3U1VGRFdDeExRVUZMTEU5QlFVRTdTVUZEVEN4SFFVRkhMRXRCUVVFN1EwRkRUaXhEUVVGQklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElHTnZibVpwWnlCbWNtOXRJQ2N1TGk5emRHOXlaUzlqYjI1bWFXY25YSEpjYmx4eVhHNW1kVzVqZEdsdmJpQnpkR0Z5ZENodlltbzZJRlJQUkU4c0lHNWhiV1UvT2lCemRISnBibWNwSUh0Y2NseHVJQ0FnSUhOM2FYUmphQ0FvYm1GdFpTa2dlMXh5WEc0Z0lDQWdJQ0FnSUdOaGMyVWdKMk5vWldOclUyVnpjMmx2YmljNlhISmNiaUFnSUNBZ0lDQWdJQ0FnSUc5aWFpNWZZMmhsWTJ0VFpYTnphVzl1VTNSaGNuUlVhVzFsSUQwZ2JtVjNJRVJoZEdVb0tTNW5aWFJVYVcxbEtDazdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lHSnlaV0ZyTzF4eVhHNGdJQ0FnSUNBZ0lHTmhjMlVnSjJ4dloybHVKenBjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdiMkpxTGw5c2IyZHBibE4wWVhKMFZHbHRaU0E5SUc1bGR5QkVZWFJsS0NrdVoyVjBWR2x0WlNncE8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCaWNtVmhhenRjY2x4dUlDQWdJQ0FnSUNCa1pXWmhkV3gwT2x4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2IySnFMbkpsY0c5eWRDa2dlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYjJKcUxsOXlaWEJ2Y25SVGRHRnlkRlJwYldVZ1BTQnVaWGNnUkdGMFpTZ3BMbWRsZEZScGJXVW9LVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdmVnh5WEc1OVhISmNibHh5WEc1bWRXNWpkR2x2YmlCbGJtUW9iMkpxT2lCVVQwUlBMQ0J1WVcxbFB6b2djM1J5YVc1bktTQjdYSEpjYmlBZ0lDQnpkMmwwWTJnZ0tHNWhiV1VwSUh0Y2NseHVJQ0FnSUNBZ0lDQmpZWE5sSUNkamFHVmphMU5sYzNOcGIyNG5PbHh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQXZMeUIzZUM1amFHVmphMU5sYzNOcGIyNGc2SUNYNXBlMjVMaUs1b3FsWEhKY2JpQWdJQ0FnSUNBZ0lDQWdJRzlpYWk1ZlkyaGxZMnRUWlhOemFXOXVSVzVrVkdsdFpTQTlJRzVsZHlCRVlYUmxLQ2t1WjJWMFZHbHRaU2dwTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JwWmlBb2RIbHdaVzltSUdOdmJtWnBaeTV5WlhCdmNuUkRSMGtnUFQwOUlGd2lablZ1WTNScGIyNWNJaWtnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1kyOXVabWxuTG5KbGNHOXlkRU5IU1NnbmQzaGZZMmhsWTJ0VFpYTnphVzl1Snl3Z2IySnFMbDlqYUdWamExTmxjM05wYjI1VGRHRnlkRlJwYldVc0lHOWlhaTVmWTJobFkydFRaWE56YVc5dVJXNWtWR2x0WlNrN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUgxY2NseHVJQ0FnSUNBZ0lDQWdJQ0FnWW5KbFlXczdYSEpjYmlBZ0lDQWdJQ0FnWTJGelpTQW5iRzluYVc0bk9seHlYRzRnSUNBZ0lDQWdJQ0FnSUNBdkx5QjNlQzVzYjJkcGJpRG9nSmZtbDdia3VJcm1pcVZjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdiMkpxTGw5c2IyZHBia1Z1WkZScGJXVWdQU0J1WlhjZ1JHRjBaU2dwTG1kbGRGUnBiV1VvS1R0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnYVdZZ0tIUjVjR1Z2WmlCamIyNW1hV2N1Y21Wd2IzSjBRMGRKSUQwOVBTQmNJbVoxYm1OMGFXOXVYQ0lwSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHTnZibVpwWnk1eVpYQnZjblJEUjBrb0ozZDRYMnh2WjJsdUp5d2diMkpxTGw5c2IyZHBibE4wWVhKMFZHbHRaU3dnYjJKcUxsOXNiMmRwYmtWdVpGUnBiV1VwTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJR0p5WldGck8xeHlYRzRnSUNBZ0lDQWdJR1JsWm1GMWJIUTZYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDOHZJT1dGdHVTN2xrTkhTZWFPcGVXUG8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCcFppQW9iMkpxTG5KbGNHOXlkQ0FtSmlCMGVYQmxiMllnWTI5dVptbG5MbkpsY0c5eWRFTkhTU0E5UFQwZ1hDSm1kVzVqZEdsdmJsd2lLU0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCdlltb3VYM0psY0c5eWRFVnVaRlJwYldVZ1BTQnVaWGNnUkdGMFpTZ3BMbWRsZEZScGJXVW9LVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOdmJtWnBaeTV5WlhCdmNuUkRSMGtvYjJKcUxuSmxjRzl5ZEN3Z2IySnFMbDl5WlhCdmNuUlRkR0Z5ZEZScGJXVXNJRzlpYWk1ZmNtVndiM0owUlc1a1ZHbHRaU2s3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdZbkpsWVdzN1hISmNiaUFnSUNCOVhISmNibjFjY2x4dVhISmNibVY0Y0c5eWRDQmtaV1poZFd4MElIdGNjbHh1SUNBZ0lITjBZWEowTEZ4eVhHNGdJQ0FnWlc1a1hISmNibjFjY2x4dUlsMTkiLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG52YXIgY29uZmlnXzEgPSByZXF1aXJlKFwiLi4vc3RvcmUvY29uZmlnXCIpO1xyXG5leHBvcnRzLmRlZmF1bHQgPSAoZnVuY3Rpb24gKG9iaiwgcmVzKSB7XHJcbiAgICBpZiAodHlwZW9mIG9iai5mYWlsID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICBvYmouZmFpbChyZXMpO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgdmFyIHRpdGxlID0gXCJcIjtcclxuICAgICAgICBpZiAodHlwZW9mIGNvbmZpZ18xLmRlZmF1bHQuZXJyb3JUaXRsZSA9PT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICB0aXRsZSA9IGNvbmZpZ18xLmRlZmF1bHQuZXJyb3JUaXRsZShyZXMuZGF0YSB8fCByZXMuZXJyTXNnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiBjb25maWdfMS5kZWZhdWx0LmVycm9yVGl0bGUgPT09IFwic3RyaW5nXCIpIHtcclxuICAgICAgICAgICAgdGl0bGUgPSBjb25maWdfMS5kZWZhdWx0LmVycm9yVGl0bGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciBjb250ZW50ID0gXCJcIjtcclxuICAgICAgICBpZiAodHlwZW9mIGNvbmZpZ18xLmRlZmF1bHQuZXJyb3JDb250ZW50ID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBjb25maWdfMS5kZWZhdWx0LmVycm9yQ29udGVudChyZXMuZGF0YSB8fCByZXMuZXJyTXNnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKHR5cGVvZiBjb25maWdfMS5kZWZhdWx0LmVycm9yQ29udGVudCA9PT0gXCJzdHJpbmdcIikge1xyXG4gICAgICAgICAgICBjb250ZW50ID0gY29uZmlnXzEuZGVmYXVsdC5lcnJvckNvbnRlbnQ7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHd4LnNob3dNb2RhbCh7XHJcbiAgICAgICAgICAgIHRpdGxlOiB0aXRsZSxcclxuICAgICAgICAgICAgY29udGVudDogY29udGVudCB8fCBcIue9kee7nOaIluacjeWKoeW8guW4uO+8jOivt+eojeWQjumHjeivlVwiLFxyXG4gICAgICAgICAgICBzaG93Q2FuY2VsOiBmYWxzZVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgaWYgKHR5cGVvZiBjb25maWdfMS5kZWZhdWx0LmVycm9yQ2FsbGJhY2sgPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgIGNvbmZpZ18xLmRlZmF1bHQuZXJyb3JDYWxsYmFjayhvYmosIHJlcyk7XHJcbiAgICB9XHJcbiAgICBjb25zb2xlLmVycm9yKHJlcyk7XHJcbn0pO1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2laWEp5YjNKSVlXNWtiR1Z5TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lMaTR2TGk0dmMzSmpMMjF2WkhWc1pTOWxjbkp2Y2toaGJtUnNaWEl1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN1FVRkJRU3d3UTBGQmIwTTdRVUZGY0VNc2JVSkJRV1VzVlVGQlF5eEhRVUZUTEVWQlFVVXNSMEZCVXp0SlFVTm9ReXhKUVVGSkxFOUJRVThzUjBGQlJ5eERRVUZETEVsQlFVa3NTMEZCU3l4VlFVRlZMRVZCUVVVN1VVRkRhRU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRMUVVOcVFqdFRRVUZOTzFGQlEwZ3NTVUZCU1N4TFFVRkxMRWRCUVVjc1JVRkJSU3hEUVVGRE8xRkJRMllzU1VGQlNTeFBRVUZQTEdkQ1FVRk5MRU5CUVVNc1ZVRkJWU3hMUVVGTExGVkJRVlVzUlVGQlJUdFpRVU42UXl4SlFVRkpPMmRDUVVOQkxFdEJRVXNzUjBGQlJ5eG5Ra0ZCVFN4RFFVRkRMRlZCUVZVc1EwRkJReXhIUVVGSExFTkJRVU1zU1VGQlNTeEpRVUZKTEVkQlFVY3NRMEZCUXl4TlFVRk5MRU5CUVVNc1EwRkJRVHRoUVVOd1JEdFpRVUZETEU5QlFVOHNRMEZCUXl4RlFVRkZPMkZCUTFnN1UwRkRTanRoUVVGTkxFbEJRVWtzVDBGQlR5eG5Ra0ZCVFN4RFFVRkRMRlZCUVZVc1MwRkJTeXhSUVVGUkxFVkJRVVU3V1VGRE9VTXNTMEZCU3l4SFFVRkhMR2RDUVVGTkxFTkJRVU1zVlVGQlZTeERRVUZETzFOQlF6ZENPMUZCUlVRc1NVRkJTU3hQUVVGUExFZEJRVWNzUlVGQlJTeERRVUZETzFGQlEycENMRWxCUVVrc1QwRkJUeXhuUWtGQlRTeERRVUZETEZsQlFWa3NTMEZCU3l4VlFVRlZMRVZCUVVVN1dVRkRNME1zU1VGQlNUdG5Ra0ZEUVN4UFFVRlBMRWRCUVVjc1owSkJRVTBzUTBGQlF5eFpRVUZaTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1NVRkJTU3hIUVVGSExFTkJRVU1zVFVGQlRTeERRVUZETEVOQlFVRTdZVUZEZUVRN1dVRkJReXhQUVVGUExFTkJRVU1zUlVGQlJUdGhRVU5ZTzFOQlEwbzdZVUZCVFN4SlFVRkpMRTlCUVU4c1owSkJRVTBzUTBGQlF5eFpRVUZaTEV0QlFVc3NVVUZCVVN4RlFVRkZPMWxCUTJoRUxFOUJRVThzUjBGQlJ5eG5Ra0ZCVFN4RFFVRkRMRmxCUVZrc1EwRkJRenRUUVVOcVF6dFJRVVZFTEVWQlFVVXNRMEZCUXl4VFFVRlRMRU5CUVVNN1dVRkRWQ3hMUVVGTExFVkJRVVVzUzBGQlN6dFpRVU5hTEU5QlFVOHNSVUZCUlN4UFFVRlBMRWxCUVVrc1pVRkJaVHRaUVVOdVF5eFZRVUZWTEVWQlFVVXNTMEZCU3p0VFFVTndRaXhEUVVGRExFTkJRVUU3UzBGRFREdEpRVWRFTEVsQlFVa3NUMEZCVHl4blFrRkJUU3hEUVVGRExHRkJRV0VzUzBGQlN5eFZRVUZWTEVWQlFVVTdVVUZETlVNc1owSkJRVTBzUTBGQlF5eGhRVUZoTEVOQlFVTXNSMEZCUnl4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRE8wdEJRMnhETzBsQlJVUXNUMEZCVHl4RFFVRkRMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dEJRVU4yUWl4RFFVRkRMRVZCUVVFaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5SnBiWEJ2Y25RZ1kyOXVabWxuSUdaeWIyMGdKeTR1TDNOMGIzSmxMMk52Ym1acFp5ZGNjbHh1WEhKY2JtVjRjRzl5ZENCa1pXWmhkV3gwSUNodlltbzZJRlJQUkU4c0lISmxjem9nVkU5RVR5a2dQVDRnZTF4eVhHNGdJQ0FnYVdZZ0tIUjVjR1Z2WmlCdlltb3VabUZwYkNBOVBUMGdYQ0ptZFc1amRHbHZibHdpS1NCN1hISmNiaUFnSUNBZ0lDQWdiMkpxTG1aaGFXd29jbVZ6S1R0Y2NseHVJQ0FnSUgwZ1pXeHpaU0I3WEhKY2JpQWdJQ0FnSUNBZ2JHVjBJSFJwZEd4bElEMGdYQ0pjSWp0Y2NseHVJQ0FnSUNBZ0lDQnBaaUFvZEhsd1pXOW1JR052Ym1acFp5NWxjbkp2Y2xScGRHeGxJRDA5UFNCY0ltWjFibU4wYVc5dVhDSXBJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdkSEo1SUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIUnBkR3hsSUQwZ1kyOXVabWxuTG1WeWNtOXlWR2wwYkdVb2NtVnpMbVJoZEdFZ2ZId2djbVZ6TG1WeWNrMXpaeWxjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdmU0JqWVhSamFDQW9aU2tnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUNBZ2ZTQmxiSE5sSUdsbUlDaDBlWEJsYjJZZ1kyOXVabWxuTG1WeWNtOXlWR2wwYkdVZ1BUMDlJRndpYzNSeWFXNW5YQ0lwSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnZEdsMGJHVWdQU0JqYjI1bWFXY3VaWEp5YjNKVWFYUnNaVHRjY2x4dUlDQWdJQ0FnSUNCOVhISmNibHh5WEc0Z0lDQWdJQ0FnSUd4bGRDQmpiMjUwWlc1MElEMGdYQ0pjSWp0Y2NseHVJQ0FnSUNBZ0lDQnBaaUFvZEhsd1pXOW1JR052Ym1acFp5NWxjbkp2Y2tOdmJuUmxiblFnUFQwOUlGd2lablZ1WTNScGIyNWNJaWtnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0IwY25rZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdZMjl1ZEdWdWRDQTlJR052Ym1acFp5NWxjbkp2Y2tOdmJuUmxiblFvY21WekxtUmhkR0VnZkh3Z2NtVnpMbVZ5Y2sxelp5bGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2ZTQmpZWFJqYUNBb1pTa2dlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJQ0FnZlNCbGJITmxJR2xtSUNoMGVYQmxiMllnWTI5dVptbG5MbVZ5Y205eVEyOXVkR1Z1ZENBOVBUMGdYQ0p6ZEhKcGJtZGNJaWtnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JqYjI1MFpXNTBJRDBnWTI5dVptbG5MbVZ5Y205eVEyOXVkR1Z1ZER0Y2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmx4eVhHNGdJQ0FnSUNBZ0lIZDRMbk5vYjNkTmIyUmhiQ2g3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJSFJwZEd4bE9pQjBhWFJzWlN4Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnWTI5dWRHVnVkRG9nWTI5dWRHVnVkQ0I4ZkNCY0l1ZTlrZWU3bk9hSWx1YWNqZVdLb2VXOGd1VzR1Tys4ak9pdnQrZW9qZVdRanVtSGplaXZsVndpTEZ4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0J6YUc5M1EyRnVZMlZzT2lCbVlXeHpaVnh5WEc0Z0lDQWdJQ0FnSUgwcFhISmNiaUFnSUNCOVhISmNibHh5WEc0Z0lDQWdMeThnNWFhQzVwNmM1cHlKNllXTjU3MnU1N3VmNUxpQTZaU1o2Syt2NVp1ZTZMQ0Q1WWU5NXBXdzc3eU01WWlaNW9tbjZLR001YTZEWEhKY2JpQWdJQ0JwWmlBb2RIbHdaVzltSUdOdmJtWnBaeTVsY25KdmNrTmhiR3hpWVdOcklEMDlQU0JjSW1aMWJtTjBhVzl1WENJcElIdGNjbHh1SUNBZ0lDQWdJQ0JqYjI1bWFXY3VaWEp5YjNKRFlXeHNZbUZqYXlodlltb3NJSEpsY3lrN1hISmNiaUFnSUNCOVhISmNibHh5WEc0Z0lDQWdZMjl1YzI5c1pTNWxjbkp2Y2loeVpYTXBPMXh5WEc1OVhISmNiaUpkZlE9PSIsIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbnZhciBjb25maWdfMSA9IHJlcXVpcmUoXCIuLi9zdG9yZS9jb25maWdcIik7XHJcbnZhciByZXNwb25zZUhhbmRsZXJfMSA9IHJlcXVpcmUoXCIuL3Jlc3BvbnNlSGFuZGxlclwiKTtcclxuZnVuY3Rpb24gZ2V0KG9iaiwgbWV0aG9kKSB7XHJcbiAgICBpZiAoIWNvbmZpZ18xLmRlZmF1bHQubW9ja0pzb25bb2JqLnVybF0gJiYgIWNvbmZpZ18xLmRlZmF1bHQubW9ja0pzb25bb2JqLm9yaWdpblVybF0pIHtcclxuICAgICAgICBjb25zb2xlLmVycm9yKCdtb2NrIOayoeacieWvueW6lOaOpeWPo+eahOaVsOaNricpO1xyXG4gICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgIH1cclxuICAgIHZhciBkYXRhID0gY29uZmlnXzEuZGVmYXVsdC5tb2NrSnNvbltvYmoudXJsXSB8fCBjb25maWdfMS5kZWZhdWx0Lm1vY2tKc29uW29iai5vcmlnaW5VcmxdO1xyXG4gICAgZGF0YSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkoZGF0YSkpO1xyXG4gICAgdmFyIHJlcyA9IHtcclxuICAgICAgICBkYXRhOiBkYXRhLFxyXG4gICAgICAgIHN0YXR1c0NvZGU6IDIwMFxyXG4gICAgfTtcclxuICAgIHJlc3BvbnNlSGFuZGxlcl8xLmRlZmF1bHQocmVzLCBvYmosIG1ldGhvZCk7XHJcbn1cclxuZXhwb3J0cy5kZWZhdWx0ID0ge1xyXG4gICAgZ2V0OiBnZXRcclxufTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYlc5amEwMWhibUZuWlhJdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUl1TGk4dUxpOXpjbU12Ylc5a2RXeGxMMjF2WTJ0TllXNWhaMlZ5TG5SeklsMHNJbTVoYldWeklqcGJYU3dpYldGd2NHbHVaM01pT2lJN08wRkJRVUVzTUVOQlFXOURPMEZCUTNCRExIRkVRVUVyUXp0QlFVVXZReXhUUVVGVExFZEJRVWNzUTBGQlF5eEhRVUZUTEVWQlFVVXNUVUZCWjBNN1NVRkZjRVFzU1VGQlJ5eERRVUZETEdkQ1FVRk5MRU5CUVVNc1VVRkJVU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNTVUZCU1N4RFFVRkRMR2RDUVVGTkxFTkJRVU1zVVVGQlVTeERRVUZETEVkQlFVY3NRMEZCUXl4VFFVRlRMRU5CUVVNc1JVRkJSVHRSUVVVM1JDeFBRVUZQTEVOQlFVTXNTMEZCU3l4RFFVRkRMR2RDUVVGblFpeERRVUZETEVOQlFVTTdVVUZEYUVNc1QwRkJUeXhMUVVGTExFTkJRVU03UzBGRGFFSTdTVUZGUkN4SlFVRkpMRWxCUVVrc1IwRkJSeXhuUWtGQlRTeERRVUZETEZGQlFWRXNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzWjBKQlFVMHNRMEZCUXl4UlFVRlJMRU5CUVVNc1IwRkJSeXhEUVVGRExGTkJRVk1zUTBGQlF5eERRVUZETzBsQlJYUkZMRWxCUVVrc1IwRkJSeXhKUVVGSkxFTkJRVU1zUzBGQlN5eERRVUZETEVsQlFVa3NRMEZCUXl4VFFVRlRMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU1zUTBGQlF6dEpRVU40UXl4SlFVRkpMRWRCUVVjc1IwRkJSenRSUVVOT0xFbEJRVWtzUlVGQlJTeEpRVUZKTzFGQlExWXNWVUZCVlN4RlFVRkZMRWRCUVVjN1MwRkRiRUlzUTBGQlF6dEpRVVZHTEhsQ1FVRmxMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeE5RVUZOTEVOQlFVTXNRMEZCUVR0QlFVTnlReXhEUVVGRE8wRkJSVVFzYTBKQlFXVTdTVUZEV0N4SFFVRkhMRXRCUVVFN1EwRkRUaXhEUVVGQklpd2ljMjkxY21ObGMwTnZiblJsYm5RaU9sc2lhVzF3YjNKMElHTnZibVpwWnlCbWNtOXRJQ2N1TGk5emRHOXlaUzlqYjI1bWFXY25YSEpjYm1sdGNHOXlkQ0J5WlhOd2IyNXpaVWhoYm1Sc1pYSWdabkp2YlNBbkxpOXlaWE53YjI1elpVaGhibVJzWlhJblhISmNibHh5WEc1bWRXNWpkR2x2YmlCblpYUW9iMkpxT2lCVVQwUlBMQ0J0WlhSb2IyUTZJRndpY21WeGRXVnpkRndpSUh3Z1hDSjFjR3h2WVdSR2FXeGxYQ0lwT2lCaGJua2dlMXh5WEc1Y2NseHVJQ0FnSUdsbUtDRmpiMjVtYVdjdWJXOWphMHB6YjI1YmIySnFMblZ5YkYwZ0ppWWdJV052Ym1acFp5NXRiMk5yU25OdmJsdHZZbW91YjNKcFoybHVWWEpzWFNrZ2UxeHlYRzRnSUNBZ0lDQWdJQzh2SUcxdlkyc2c1cktoNXB5SjVhKzU1YnFVNW82bDVZK2o1NXFFNXBXdzVvMnVYSEpjYmlBZ0lDQWdJQ0FnWTI5dWMyOXNaUzVsY25KdmNpZ25iVzlqYXlEbXNxSG1uSW5scjdubHVwVG1qcVhsajZQbm1vVG1sYkRtamE0bktUdGNjbHh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdabUZzYzJVN1hISmNiaUFnSUNCOVhISmNibHh5WEc0Z0lDQWdiR1YwSUdSaGRHRWdQU0JqYjI1bWFXY3ViVzlqYTBwemIyNWJiMkpxTG5WeWJGMGdmSHdnWTI5dVptbG5MbTF2WTJ0S2MyOXVXMjlpYWk1dmNtbG5hVzVWY214ZE8xeHlYRzRnSUNBZ0x5OGdaR1ZsY0NCamIzQjVYSEpjYmlBZ0lDQmtZWFJoSUQwZ1NsTlBUaTV3WVhKelpTaEtVMDlPTG5OMGNtbHVaMmxtZVNoa1lYUmhLU2s3WEhKY2JpQWdJQ0JzWlhRZ2NtVnpJRDBnZTF4eVhHNGdJQ0FnSUNBZ0lHUmhkR0U2SUdSaGRHRXNYSEpjYmlBZ0lDQWdJQ0FnYzNSaGRIVnpRMjlrWlRvZ01qQXdYSEpjYmlBZ0lDQjlPMXh5WEc1Y2NseHVJQ0FnSUhKbGMzQnZibk5sU0dGdVpHeGxjaWh5WlhNc0lHOWlhaXdnYldWMGFHOWtLVnh5WEc1OVhISmNibHh5WEc1bGVIQnZjblFnWkdWbVlYVnNkQ0I3WEhKY2JpQWdJQ0JuWlhSY2NseHVmVnh5WEc0aVhYMD0iLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG52YXIgbG9hZGluZ18xID0gcmVxdWlyZShcIi4uL3V0aWwvbG9hZGluZ1wiKTtcclxudmFyIGNvbmZpZ18xID0gcmVxdWlyZShcIi4uL3N0b3JlL2NvbmZpZ1wiKTtcclxudmFyIHN0YXR1c18xID0gcmVxdWlyZShcIi4uL3N0b3JlL3N0YXR1c1wiKTtcclxudmFyIG1vY2tNYW5hZ2VyXzEgPSByZXF1aXJlKFwiLi9tb2NrTWFuYWdlclwiKTtcclxudmFyIGNhY2hlTWFuYWdlcl8xID0gcmVxdWlyZShcIi4vY2FjaGVNYW5hZ2VyXCIpO1xyXG52YXIgc2Vzc2lvbk1hbmFnZXJfMSA9IHJlcXVpcmUoXCIuL3Nlc3Npb25NYW5hZ2VyXCIpO1xyXG52YXIgZXJyb3JIYW5kbGVyXzEgPSByZXF1aXJlKFwiLi9lcnJvckhhbmRsZXJcIik7XHJcbnZhciByZXNwb25zZUhhbmRsZXJfMSA9IHJlcXVpcmUoXCIuL3Jlc3BvbnNlSGFuZGxlclwiKTtcclxudmFyIGR1cmF0aW9uUmVwb3J0ZXJfMSA9IHJlcXVpcmUoXCIuL2R1cmF0aW9uUmVwb3J0ZXJcIik7XHJcbnZhciB1cmxfMSA9IHJlcXVpcmUoXCIuLi91dGlsL3VybFwiKTtcclxuZnVuY3Rpb24gZm9ybWF0KHVybCkge1xyXG4gICAgaWYgKHVybC5zdGFydHNXaXRoKCdodHRwJykpIHtcclxuICAgICAgICByZXR1cm4gdXJsO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgdmFyIHVybFBlcmZpeCA9IGNvbmZpZ18xLmRlZmF1bHQudXJsUGVyZml4O1xyXG4gICAgICAgIGlmICh0eXBlb2YgY29uZmlnXzEuZGVmYXVsdC51cmxQZXJmaXggPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgICAgICB1cmxQZXJmaXggPSBjb25maWdfMS5kZWZhdWx0LnVybFBlcmZpeCgpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdXJsUGVyZml4ICsgdXJsO1xyXG4gICAgfVxyXG59XHJcbmZ1bmN0aW9uIHByZURvKG9iaikge1xyXG4gICAgdmFyIF90aGlzID0gdGhpcztcclxuICAgIGlmICh0eXBlb2Ygb2JqLmJlZm9yZVNlbmQgPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgIG9iai5iZWZvcmVTZW5kKCk7XHJcbiAgICB9XHJcbiAgICBpZiAodHlwZW9mIG9iai5yZUxvZ2luTGltaXQgPT09IFwidW5kZWZpbmVkXCIpIHtcclxuICAgICAgICBvYmoucmVMb2dpbkxpbWl0ID0gMDtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIG9iai5yZUxvZ2luTGltaXQrKztcclxuICAgIH1cclxuICAgIGlmICh0eXBlb2Ygb2JqLmNvdW50ID09PSBcInVuZGVmaW5lZFwiKSB7XHJcbiAgICAgICAgb2JqLmNvdW50ID0gMDtcclxuICAgIH1cclxuICAgIGlmIChvYmouc2hvd0xvYWRpbmcpIHtcclxuICAgICAgICBsb2FkaW5nXzEuZGVmYXVsdC5zaG93KG9iai5zaG93TG9hZGluZyk7XHJcbiAgICAgICAgb2JqLmNvbXBsZXRlID0gKGZ1bmN0aW9uIChmbikge1xyXG4gICAgICAgICAgICB2YXIgYXJncyA9IFtdO1xyXG4gICAgICAgICAgICBmb3IgKHZhciBfaSA9IDE7IF9pIDwgYXJndW1lbnRzLmxlbmd0aDsgX2krKykge1xyXG4gICAgICAgICAgICAgICAgYXJnc1tfaSAtIDFdID0gYXJndW1lbnRzW19pXTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgbG9hZGluZ18xLmRlZmF1bHQuaGlkZSgpO1xyXG4gICAgICAgICAgICAgICAgdHlwZW9mIGZuID09PSBcImZ1bmN0aW9uXCIgJiYgZm4uYXBwbHkuYXBwbHkoZm4sIFtfdGhpc10uY29uY2F0KGFyZ3MpKTtcclxuICAgICAgICAgICAgfTtcclxuICAgICAgICB9KShvYmouY29tcGxldGUpO1xyXG4gICAgfVxyXG4gICAgaWYgKCFvYmoub3JpZ2luVXJsKSB7XHJcbiAgICAgICAgb2JqLm9yaWdpblVybCA9IG9iai51cmw7XHJcbiAgICAgICAgb2JqLnVybCA9IGZvcm1hdChvYmoudXJsKTtcclxuICAgIH1cclxuICAgIHJldHVybiBvYmo7XHJcbn1cclxuZnVuY3Rpb24gaW5pdGlhbGl6ZShvYmosIGNvbnRhaW5lcikge1xyXG4gICAgaWYgKCFvYmpbY29udGFpbmVyXSkge1xyXG4gICAgICAgIG9ialtjb250YWluZXJdID0ge307XHJcbiAgICB9XHJcbiAgICBpZiAob2JqLm9yaWdpblVybCAhPT0gY29uZmlnXzEuZGVmYXVsdC5jb2RlVG9TZXNzaW9uLnVybCAmJiBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb24pIHtcclxuICAgICAgICBvYmpbY29udGFpbmVyXVtjb25maWdfMS5kZWZhdWx0LnNlc3Npb25OYW1lXSA9IHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbjtcclxuICAgIH1cclxuICAgIHZhciBnZCA9IHt9O1xyXG4gICAgaWYgKHR5cGVvZiBjb25maWdfMS5kZWZhdWx0Lmdsb2JhbERhdGEgPT09IFwiZnVuY3Rpb25cIikge1xyXG4gICAgICAgIGdkID0gY29uZmlnXzEuZGVmYXVsdC5nbG9iYWxEYXRhKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICh0eXBlb2YgY29uZmlnXzEuZGVmYXVsdC5nbG9iYWxEYXRhID09PSBcIm9iamVjdFwiKSB7XHJcbiAgICAgICAgZ2QgPSBjb25maWdfMS5kZWZhdWx0Lmdsb2JhbERhdGE7XHJcbiAgICB9XHJcbiAgICBvYmpbY29udGFpbmVyXSA9IE9iamVjdC5hc3NpZ24oe30sIGdkLCBvYmpbY29udGFpbmVyXSk7XHJcbiAgICBvYmoubWV0aG9kID0gb2JqLm1ldGhvZCB8fCAnR0VUJztcclxuICAgIG9iai5kYXRhVHlwZSA9IG9iai5kYXRhVHlwZSB8fCAnanNvbic7XHJcbiAgICBpZiAob2JqLm1ldGhvZCAhPT0gXCJHRVRcIikge1xyXG4gICAgICAgIGlmIChzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb24pIHtcclxuICAgICAgICAgICAgdmFyIHBhcmFtcyA9IHt9O1xyXG4gICAgICAgICAgICBwYXJhbXNbY29uZmlnXzEuZGVmYXVsdC5zZXNzaW9uTmFtZV0gPSBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb247XHJcbiAgICAgICAgICAgIG9iai51cmwgPSB1cmxfMS5kZWZhdWx0LnNldFBhcmFtcyhvYmoudXJsLCBwYXJhbXMpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBvYmoudXJsID0gdXJsXzEuZGVmYXVsdC5zZXRQYXJhbXMob2JqLnVybCwgZ2QpO1xyXG4gICAgfVxyXG4gICAgZHVyYXRpb25SZXBvcnRlcl8xLmRlZmF1bHQuc3RhcnQob2JqKTtcclxuICAgIHJldHVybiBvYmo7XHJcbn1cclxuZnVuY3Rpb24gZG9SZXF1ZXN0KG9iaikge1xyXG4gICAgb2JqID0gaW5pdGlhbGl6ZShvYmosICdkYXRhJyk7XHJcbiAgICBvYmouY291bnQrKztcclxuICAgIHd4LnJlcXVlc3Qoe1xyXG4gICAgICAgIHVybDogb2JqLnVybCxcclxuICAgICAgICBkYXRhOiBvYmouZGF0YSxcclxuICAgICAgICBtZXRob2Q6IG9iai5tZXRob2QsXHJcbiAgICAgICAgaGVhZGVyOiBvYmouaGVhZGVyIHx8IHt9LFxyXG4gICAgICAgIGRhdGFUeXBlOiBvYmouZGF0YVR5cGUgfHwgJ2pzb24nLFxyXG4gICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChyZXMpIHtcclxuICAgICAgICAgICAgcmVzcG9uc2VIYW5kbGVyXzEuZGVmYXVsdChyZXMsIG9iaiwgJ3JlcXVlc3QnKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGZhaWw6IGZ1bmN0aW9uIChyZXMpIHtcclxuICAgICAgICAgICAgZXJyb3JIYW5kbGVyXzEuZGVmYXVsdChvYmosIHJlcyk7XHJcbiAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IocmVzKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgIG9iai5jb3VudC0tO1xyXG4gICAgICAgICAgICB0eXBlb2Ygb2JqLmNvbXBsZXRlID09PSBcImZ1bmN0aW9uXCIgJiYgb2JqLmNvdW50ID09PSAwICYmIG9iai5jb21wbGV0ZSgpO1xyXG4gICAgICAgIH1cclxuICAgIH0pO1xyXG59XHJcbmZ1bmN0aW9uIGRvVXBsb2FkRmlsZShvYmopIHtcclxuICAgIG9iaiA9IGluaXRpYWxpemUob2JqLCAnZm9ybURhdGEnKTtcclxuICAgIG9iai5jb3VudCsrO1xyXG4gICAgd3gudXBsb2FkRmlsZSh7XHJcbiAgICAgICAgdXJsOiBvYmoudXJsLFxyXG4gICAgICAgIGZpbGVQYXRoOiBvYmouZmlsZVBhdGggfHwgJycsXHJcbiAgICAgICAgbmFtZTogb2JqLm5hbWUgfHwgJycsXHJcbiAgICAgICAgZm9ybURhdGE6IG9iai5mb3JtRGF0YSxcclxuICAgICAgICBzdWNjZXNzOiBmdW5jdGlvbiAocmVzKSB7XHJcbiAgICAgICAgICAgIHJlc3BvbnNlSGFuZGxlcl8xLmRlZmF1bHQocmVzLCBvYmosICd1cGxvYWRGaWxlJyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBmYWlsOiBmdW5jdGlvbiAocmVzKSB7XHJcbiAgICAgICAgICAgIGVycm9ySGFuZGxlcl8xLmRlZmF1bHQob2JqLCByZXMpO1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKHJlcyk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBvYmouY291bnQtLTtcclxuICAgICAgICAgICAgdHlwZW9mIG9iai5jb21wbGV0ZSA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb3VudCA9PT0gMCAmJiBvYmouY29tcGxldGUoKTtcclxuICAgICAgICB9XHJcbiAgICB9KTtcclxufVxyXG5mdW5jdGlvbiByZXF1ZXN0KG9iaikge1xyXG4gICAgb2JqID0gcHJlRG8ob2JqKTtcclxuICAgIGlmIChjb25maWdfMS5kZWZhdWx0Lm1vY2tKc29uKSB7XHJcbiAgICAgICAgbW9ja01hbmFnZXJfMS5kZWZhdWx0LmdldChvYmosICdyZXF1ZXN0Jyk7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKG9iai5jYWNoZSkge1xyXG4gICAgICAgIGNhY2hlTWFuYWdlcl8xLmRlZmF1bHQuZ2V0KG9iaik7XHJcbiAgICB9XHJcbiAgICBzZXNzaW9uTWFuYWdlcl8xLmRlZmF1bHQoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGRvUmVxdWVzdChvYmopO1xyXG4gICAgfSwgb2JqKTtcclxufVxyXG5mdW5jdGlvbiB1cGxvYWRGaWxlKG9iaikge1xyXG4gICAgb2JqID0gcHJlRG8ob2JqKTtcclxuICAgIGlmIChjb25maWdfMS5kZWZhdWx0Lm1vY2tKc29uKSB7XHJcbiAgICAgICAgbW9ja01hbmFnZXJfMS5kZWZhdWx0LmdldChvYmosICd1cGxvYWRGaWxlJyk7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG4gICAgaWYgKG9iai5jYWNoZSkge1xyXG4gICAgICAgIGNhY2hlTWFuYWdlcl8xLmRlZmF1bHQuZ2V0KG9iaik7XHJcbiAgICB9XHJcbiAgICBzZXNzaW9uTWFuYWdlcl8xLmRlZmF1bHQoZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGRvVXBsb2FkRmlsZShvYmopO1xyXG4gICAgfSwgb2JqKTtcclxufVxyXG5leHBvcnRzLmRlZmF1bHQgPSB7XHJcbiAgICByZXF1ZXN0OiByZXF1ZXN0LFxyXG4gICAgdXBsb2FkRmlsZTogdXBsb2FkRmlsZVxyXG59O1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2ljbVZ4ZFdWemRFaGhibVJzWlhJdWFuTWlMQ0p6YjNWeVkyVlNiMjkwSWpvaUlpd2ljMjkxY21ObGN5STZXeUl1TGk4dUxpOXpjbU12Ylc5a2RXeGxMM0psY1hWbGMzUklZVzVrYkdWeUxuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdPMEZCUVVFc01rTkJRWEZETzBGQlEzSkRMREJEUVVGdlF6dEJRVU53UXl3d1EwRkJiME03UVVGRGNFTXNOa05CUVhWRE8wRkJRM1pETEN0RFFVRjVRenRCUVVONlF5eHRSRUZCTmtNN1FVRkROME1zSzBOQlFYbERPMEZCUTNwRExIRkVRVUVyUXp0QlFVTXZReXgxUkVGQmFVUTdRVUZEYWtRc2JVTkJRVFpDTzBGQlJ6ZENMRk5CUVZNc1RVRkJUU3hEUVVGRExFZEJRVmM3U1VGRGRrSXNTVUZCU1N4SFFVRkhMRU5CUVVNc1ZVRkJWU3hEUVVGRExFMUJRVTBzUTBGQlF5eEZRVUZGTzFGQlEzaENMRTlCUVU4c1IwRkJSeXhEUVVGQk8wdEJRMkk3VTBGQlRUdFJRVU5JTEVsQlFVa3NVMEZCVXl4SFFVRkhMR2RDUVVGTkxFTkJRVU1zVTBGQlV5eERRVUZETzFGQlEycERMRWxCUVVrc1QwRkJUeXhuUWtGQlRTeERRVUZETEZOQlFWTXNTMEZCU3l4VlFVRlZMRVZCUVVVN1dVRkRlRU1zVTBGQlV5eEhRVUZITEdkQ1FVRk5MRU5CUVVNc1UwRkJVeXhGUVVGRkxFTkJRVUU3VTBGRGFrTTdVVUZEUkN4UFFVRlBMRk5CUVZNc1IwRkJSeXhIUVVGSExFTkJRVU03UzBGRE1VSTdRVUZEVEN4RFFVRkRPMEZCUjBRc1UwRkJVeXhMUVVGTExFTkJRVU1zUjBGQlV6dEpRVUY0UWl4cFFrRnBRME03U1VGb1EwY3NTVUZCUnl4UFFVRlBMRWRCUVVjc1EwRkJReXhWUVVGVkxFdEJRVXNzVlVGQlZTeEZRVUZGTzFGQlEzSkRMRWRCUVVjc1EwRkJReXhWUVVGVkxFVkJRVVVzUTBGQlF6dExRVU53UWp0SlFVVkVMRWxCUVVrc1QwRkJUeXhIUVVGSExFTkJRVU1zV1VGQldTeExRVUZMTEZkQlFWY3NSVUZCUlR0UlFVTjZReXhIUVVGSExFTkJRVU1zV1VGQldTeEhRVUZITEVOQlFVTXNRMEZCUXp0TFFVTjRRanRUUVVGTk8xRkJRMGdzUjBGQlJ5eERRVUZETEZsQlFWa3NSVUZCUlN4RFFVRkRPMHRCUTNSQ08wbEJSVVFzU1VGQlNTeFBRVUZQTEVkQlFVY3NRMEZCUXl4TFFVRkxMRXRCUVVzc1YwRkJWeXhGUVVGRk8xRkJRMnhETEVkQlFVY3NRMEZCUXl4TFFVRkxMRWRCUVVjc1EwRkJReXhEUVVGRE8wdEJRMnBDTzBsQlJVUXNTVUZCU1N4SFFVRkhMRU5CUVVNc1YwRkJWeXhGUVVGRk8xRkJRMnBDTEdsQ1FVRlBMRU5CUVVNc1NVRkJTU3hEUVVGRExFZEJRVWNzUTBGQlF5eFhRVUZYTEVOQlFVTXNRMEZCUXp0UlFVTTVRaXhIUVVGSExFTkJRVU1zVVVGQlVTeEhRVUZITEVOQlFVTXNWVUZCUXl4RlFVRlpPMWxCUVVVc1kwRkJUenRwUWtGQlVDeFZRVUZQTEVWQlFWQXNjVUpCUVU4c1JVRkJVQ3hKUVVGUE8yZENRVUZRTERaQ1FVRlBPenRaUVVOc1F5eFBRVUZQTzJkQ1FVVklMR2xDUVVGUExFTkJRVU1zU1VGQlNTeEZRVUZGTEVOQlFVTTdaMEpCUldZc1QwRkJUeXhGUVVGRkxFdEJRVXNzVlVGQlZTeEpRVUZKTEVWQlFVVXNRMEZCUXl4TFFVRkxMRTlCUVZJc1JVRkJSU3hIUVVGUExFdEJRVWtzVTBGQlN5eEpRVUZKTEVWQlFVTXNRMEZCUXp0WlFVTjRSQ3hEUVVGRExFTkJRVUU3VVVGRFRDeERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVUU3UzBGRGJrSTdTVUZGUkN4SlFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExGTkJRVk1zUlVGQlJUdFJRVU5tTEVkQlFVY3NRMEZCUXl4VFFVRlRMRWRCUVVjc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF6dFJRVU40UWl4SFFVRkhMRU5CUVVNc1IwRkJSeXhIUVVGSExFMUJRVTBzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1MwRkROMEk3U1VGRlJDeFBRVUZQTEVkQlFVY3NRMEZCUXp0QlFVTm1MRU5CUVVNN1FVRkhSQ3hUUVVGVExGVkJRVlVzUTBGQlF5eEhRVUZUTEVWQlFVVXNVMEZCWlR0SlFVTXhReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEZOQlFWTXNRMEZCUXl4RlFVRkZPMUZCUTJwQ0xFZEJRVWNzUTBGQlF5eFRRVUZUTEVOQlFVTXNSMEZCUnl4RlFVRkZMRU5CUVVNN1MwRkRka0k3U1VGRlJDeEpRVUZKTEVkQlFVY3NRMEZCUXl4VFFVRlRMRXRCUVVzc1owSkJRVTBzUTBGQlF5eGhRVUZoTEVOQlFVTXNSMEZCUnl4SlFVRkpMR2RDUVVGTkxFTkJRVU1zVDBGQlR5eEZRVUZGTzFGQlF6bEVMRWRCUVVjc1EwRkJReXhUUVVGVExFTkJRVU1zUTBGQlF5eG5Ra0ZCVFN4RFFVRkRMRmRCUVZrc1EwRkJReXhIUVVGSExHZENRVUZOTEVOQlFVTXNUMEZCVHl4RFFVRkRPMHRCUTNoRU8wbEJSMFFzU1VGQlNTeEZRVUZGTEVkQlFWRXNSVUZCUlN4RFFVRkRPMGxCUTJwQ0xFbEJRVWtzVDBGQlR5eG5Ra0ZCVFN4RFFVRkRMRlZCUVZVc1MwRkJTeXhWUVVGVkxFVkJRVVU3VVVGRGVrTXNSVUZCUlN4SFFVRkhMR2RDUVVGTkxFTkJRVU1zVlVGQlZTeEZRVUZGTEVOQlFVTTdTMEZETlVJN1UwRkJUU3hKUVVGSkxFOUJRVThzWjBKQlFVMHNRMEZCUXl4VlFVRlZMRXRCUVVzc1VVRkJVU3hGUVVGRk8xRkJRemxETEVWQlFVVXNSMEZCUnl4blFrRkJUU3hEUVVGRExGVkJRVlVzUTBGQlF6dExRVU14UWp0SlFVTkVMRWRCUVVjc1EwRkJReXhUUVVGVExFTkJRVU1zUjBGQlJ5eE5RVUZOTEVOQlFVTXNUVUZCVFN4RFFVRkRMRVZCUVVVc1JVRkJSU3hGUVVGRkxFVkJRVVVzUjBGQlJ5eERRVUZETEZOQlFWTXNRMEZCUXl4RFFVRkRMRU5CUVVNN1NVRkZka1FzUjBGQlJ5eERRVUZETEUxQlFVMHNSMEZCUnl4SFFVRkhMRU5CUVVNc1RVRkJUU3hKUVVGSkxFdEJRVXNzUTBGQlF6dEpRVU5xUXl4SFFVRkhMRU5CUVVNc1VVRkJVU3hIUVVGSExFZEJRVWNzUTBGQlF5eFJRVUZSTEVsQlFVa3NUVUZCVFN4RFFVRkRPMGxCUjNSRExFbEJRVWtzUjBGQlJ5eERRVUZETEUxQlFVMHNTMEZCU3l4TFFVRkxMRVZCUVVVN1VVRkRkRUlzU1VGQlNTeG5Ra0ZCVFN4RFFVRkRMRTlCUVU4c1JVRkJSVHRaUVVOb1FpeEpRVUZKTEUxQlFVMHNSMEZCVVN4RlFVRkZMRU5CUVVNN1dVRkRja0lzVFVGQlRTeERRVUZETEdkQ1FVRk5MRU5CUVVNc1YwRkJWeXhEUVVGRExFZEJRVWNzWjBKQlFVMHNRMEZCUXl4UFFVRlBMRU5CUVVNN1dVRkROVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NSMEZCUnl4aFFVRkhMRU5CUVVNc1UwRkJVeXhEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVWQlFVVXNUVUZCVFN4RFFVRkRMRU5CUVVNN1UwRkROVU03VVVGRFJDeEhRVUZITEVOQlFVTXNSMEZCUnl4SFFVRkhMR0ZCUVVjc1EwRkJReXhUUVVGVExFTkJRVU1zUjBGQlJ5eERRVUZETEVkQlFVY3NSVUZCUlN4RlFVRkZMRU5CUVVNc1EwRkJRenRMUVVONFF6dEpRVVZFTERCQ1FVRm5RaXhEUVVGRExFdEJRVXNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0SlFVVTFRaXhQUVVGUExFZEJRVWNzUTBGQlF6dEJRVU5tTEVOQlFVTTdRVUZGUkN4VFFVRlRMRk5CUVZNc1EwRkJReXhIUVVGVE8wbEJRM2hDTEVkQlFVY3NSMEZCUnl4VlFVRlZMRU5CUVVNc1IwRkJSeXhGUVVGRkxFMUJRVTBzUTBGQlF5eERRVUZETzBsQlF6bENMRWRCUVVjc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF6dEpRVU5hTEVWQlFVVXNRMEZCUXl4UFFVRlBMRU5CUVVNN1VVRkRVQ3hIUVVGSExFVkJRVVVzUjBGQlJ5eERRVUZETEVkQlFVYzdVVUZEV2l4SlFVRkpMRVZCUVVVc1IwRkJSeXhEUVVGRExFbEJRVWs3VVVGRFpDeE5RVUZOTEVWQlFVVXNSMEZCUnl4RFFVRkRMRTFCUVUwN1VVRkRiRUlzVFVGQlRTeEZRVUZGTEVkQlFVY3NRMEZCUXl4TlFVRk5MRWxCUVVrc1JVRkJSVHRSUVVONFFpeFJRVUZSTEVWQlFVVXNSMEZCUnl4RFFVRkRMRkZCUVZFc1NVRkJTU3hOUVVGTk8xRkJRMmhETEU5QlFVOHNSVUZCUlN4VlFVRlZMRWRCUVc5RE8xbEJRMjVFTEhsQ1FVRmxMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUlVGQlJTeFRRVUZUTEVOQlFVTXNRMEZCUVR0UlFVTjRReXhEUVVGRE8xRkJRMFFzU1VGQlNTeEZRVUZGTEZWQlFWVXNSMEZCTmtJN1dVRkRla01zYzBKQlFWa3NRMEZCUXl4SFFVRkhMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU03V1VGRGRrSXNUMEZCVHl4RFFVRkRMRXRCUVVzc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF6dFJRVU4yUWl4RFFVRkRPMUZCUTBRc1VVRkJVU3hGUVVGRk8xbEJRMDRzUjBGQlJ5eERRVUZETEV0QlFVc3NSVUZCUlN4RFFVRkRPMWxCUTFvc1QwRkJUeXhIUVVGSExFTkJRVU1zVVVGQlVTeExRVUZMTEZWQlFWVXNTVUZCU1N4SFFVRkhMRU5CUVVNc1MwRkJTeXhMUVVGTExFTkJRVU1zU1VGQlNTeEhRVUZITEVOQlFVTXNVVUZCVVN4RlFVRkZMRU5CUVVNN1VVRkROVVVzUTBGQlF6dExRVU5LTEVOQlFVTXNRMEZCUVR0QlFVTk9MRU5CUVVNN1FVRkZSQ3hUUVVGVExGbEJRVmtzUTBGQlF5eEhRVUZUTzBsQlF6TkNMRWRCUVVjc1IwRkJSeXhWUVVGVkxFTkJRVU1zUjBGQlJ5eEZRVUZGTEZWQlFWVXNRMEZCUXl4RFFVRkRPMGxCUTJ4RExFZEJRVWNzUTBGQlF5eExRVUZMTEVWQlFVVXNRMEZCUXp0SlFVTmFMRVZCUVVVc1EwRkJReXhWUVVGVkxFTkJRVU03VVVGRFZpeEhRVUZITEVWQlFVVXNSMEZCUnl4RFFVRkRMRWRCUVVjN1VVRkRXaXhSUVVGUkxFVkJRVVVzUjBGQlJ5eERRVUZETEZGQlFWRXNTVUZCU1N4RlFVRkZPMUZCUXpWQ0xFbEJRVWtzUlVGQlJTeEhRVUZITEVOQlFVTXNTVUZCU1N4SlFVRkpMRVZCUVVVN1VVRkRjRUlzVVVGQlVTeEZRVUZGTEVkQlFVY3NRMEZCUXl4UlFVRlJPMUZCUTNSQ0xFOUJRVThzUlVGQlJTeFZRVUZWTEVkQlFYVkRPMWxCUTNSRUxIbENRVUZsTEVOQlFVTXNSMEZCUnl4RlFVRkZMRWRCUVVjc1JVRkJSU3haUVVGWkxFTkJRVU1zUTBGQlFUdFJRVU16UXl4RFFVRkRPMUZCUTBRc1NVRkJTU3hGUVVGRkxGVkJRVlVzUjBGQk5rSTdXVUZEZWtNc2MwSkJRVmtzUTBGQlF5eEhRVUZITEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVNN1dVRkRka0lzVDBGQlR5eERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVOMlFpeERRVUZETzFGQlEwUXNVVUZCVVN4RlFVRkZPMWxCUTA0c1IwRkJSeXhEUVVGRExFdEJRVXNzUlVGQlJTeERRVUZETzFsQlExb3NUMEZCVHl4SFFVRkhMRU5CUVVNc1VVRkJVU3hMUVVGTExGVkJRVlVzU1VGQlNTeEhRVUZITEVOQlFVTXNTMEZCU3l4TFFVRkxMRU5CUVVNc1NVRkJTU3hIUVVGSExFTkJRVU1zVVVGQlVTeEZRVUZGTEVOQlFVTTdVVUZETlVVc1EwRkJRenRMUVVOS0xFTkJRVU1zUTBGQlFUdEJRVU5PTEVOQlFVTTdRVUZGUkN4VFFVRlRMRTlCUVU4c1EwRkJReXhIUVVGVE8wbEJRM1JDTEVkQlFVY3NSMEZCUnl4TFFVRkxMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVU03U1VGRGFrSXNTVUZCUnl4blFrRkJUU3hEUVVGRExGRkJRVkVzUlVGQlJUdFJRVU5vUWl4eFFrRkJWeXhEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVWQlFVVXNVMEZCVXl4RFFVRkRMRU5CUVVNN1VVRkRhRU1zVDBGQlR5eExRVUZMTEVOQlFVTTdTMEZEYUVJN1NVRkRSQ3hKUVVGSExFZEJRVWNzUTBGQlF5eExRVUZMTEVWQlFVVTdVVUZEVml4elFrRkJXU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0TFFVTjZRanRKUVVWRUxIZENRVUZqTEVOQlFVTTdVVUZEV0N4VFFVRlRMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVUU3U1VGRGJFSXNRMEZCUXl4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGQk8wRkJRMWdzUTBGQlF6dEJRVVZFTEZOQlFWTXNWVUZCVlN4RFFVRkRMRWRCUVZNN1NVRkRla0lzUjBGQlJ5eEhRVUZITEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRKUVVOcVFpeEpRVUZITEdkQ1FVRk5MRU5CUVVNc1VVRkJVU3hGUVVGRk8xRkJRMmhDTEhGQ1FVRlhMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUlVGQlJTeFpRVUZaTEVOQlFVTXNRMEZCUXp0UlFVTnVReXhQUVVGUExFdEJRVXNzUTBGQlF6dExRVU5vUWp0SlFVTkVMRWxCUVVjc1IwRkJSeXhEUVVGRExFdEJRVXNzUlVGQlJUdFJRVU5XTEhOQ1FVRlpMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzB0QlEzcENPMGxCUlVRc2QwSkJRV01zUTBGQlF6dFJRVU5ZTEZsQlFWa3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRVHRKUVVOeVFpeERRVUZETEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVFN1FVRkRXQ3hEUVVGRE8wRkJSVVFzYTBKQlFXVTdTVUZEV0N4UFFVRlBMRk5CUVVFN1NVRkRVQ3hWUVVGVkxGbEJRVUU3UTBGRFlpeERRVUZCSWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUd4dllXUnBibWNnWm5KdmJTQW5MaTR2ZFhScGJDOXNiMkZrYVc1bkoxeHlYRzVwYlhCdmNuUWdZMjl1Wm1sbklHWnliMjBnSnk0dUwzTjBiM0psTDJOdmJtWnBaeWRjY2x4dWFXMXdiM0owSUhOMFlYUjFjeUJtY205dElDY3VMaTl6ZEc5eVpTOXpkR0YwZFhNblhISmNibWx0Y0c5eWRDQnRiMk5yVFdGdVlXZGxjaUJtY205dElDY3VMMjF2WTJ0TllXNWhaMlZ5SjF4eVhHNXBiWEJ2Y25RZ1kyRmphR1ZOWVc1aFoyVnlJR1p5YjIwZ0p5NHZZMkZqYUdWTllXNWhaMlZ5SjF4eVhHNXBiWEJ2Y25RZ2MyVnpjMmx2YmsxaGJtRm5aWElnWm5KdmJTQW5MaTl6WlhOemFXOXVUV0Z1WVdkbGNpZGNjbHh1YVcxd2IzSjBJR1Z5Y205eVNHRnVaR3hsY2lCbWNtOXRJQ2N1TDJWeWNtOXlTR0Z1Wkd4bGNpZGNjbHh1YVcxd2IzSjBJSEpsYzNCdmJuTmxTR0Z1Wkd4bGNpQm1jbTl0SUNjdUwzSmxjM0J2Ym5ObFNHRnVaR3hsY2lkY2NseHVhVzF3YjNKMElHUjFjbUYwYVc5dVVtVndiM0owWlhJZ1puSnZiU0JjSWk0dlpIVnlZWFJwYjI1U1pYQnZjblJsY2x3aVhISmNibWx0Y0c5eWRDQjFjbXdnWm5KdmJTQW5MaTR2ZFhScGJDOTFjbXduWEhKY2JseHlYRzR2THlEbW9Memx2SS9sakpaMWNteGNjbHh1Wm5WdVkzUnBiMjRnWm05eWJXRjBLSFZ5YkRvZ2MzUnlhVzVuS1NCN1hISmNiaUFnSUNCcFppQW9kWEpzTG5OMFlYSjBjMWRwZEdnb0oyaDBkSEFuS1NrZ2UxeHlYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQjFjbXhjY2x4dUlDQWdJSDBnWld4elpTQjdYSEpjYmlBZ0lDQWdJQ0FnYkdWMElIVnliRkJsY21acGVDQTlJR052Ym1acFp5NTFjbXhRWlhKbWFYZzdYSEpjYmlBZ0lDQWdJQ0FnYVdZZ0tIUjVjR1Z2WmlCamIyNW1hV2N1ZFhKc1VHVnlabWw0SUQwOVBTQmNJbVoxYm1OMGFXOXVYQ0lwSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnZFhKc1VHVnlabWw0SUQwZ1kyOXVabWxuTG5WeWJGQmxjbVpwZUNncFhISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUIxY214UVpYSm1hWGdnS3lCMWNtdzdYSEpjYmlBZ0lDQjlYSEpjYm4xY2NseHVYSEpjYmk4dklPYUpnT2FjaWVpdnQrYXhndVdQa2VXSHV1V0pqZW1jZ09pbWdlV0JtdWVhaE9TNmkrYURoVnh5WEc1bWRXNWpkR2x2YmlCd2NtVkVieWh2WW1vNklGUlBSRThwSUh0Y2NseHVJQ0FnSUdsbUtIUjVjR1Z2WmlCdlltb3VZbVZtYjNKbFUyVnVaQ0E5UFQwZ1hDSm1kVzVqZEdsdmJsd2lLU0I3WEhKY2JpQWdJQ0FnSUNBZ2IySnFMbUpsWm05eVpWTmxibVFvS1R0Y2NseHVJQ0FnSUgxY2NseHVJQ0FnSUM4dklPZVp1K1c5bGVhQWdlV2tzZWFWaU8rOGpPbUhqZVdramVlWnUrVzlsZWl1b2VhVnNGeHlYRzRnSUNBZ2FXWWdLSFI1Y0dWdlppQnZZbW91Y21WTWIyZHBia3hwYldsMElEMDlQU0JjSW5WdVpHVm1hVzVsWkZ3aUtTQjdYSEpjYmlBZ0lDQWdJQ0FnYjJKcUxuSmxURzluYVc1TWFXMXBkQ0E5SURBN1hISmNiaUFnSUNCOUlHVnNjMlVnZTF4eVhHNGdJQ0FnSUNBZ0lHOWlhaTV5WlV4dloybHVUR2x0YVhRckt6dGNjbHh1SUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0JwWmlBb2RIbHdaVzltSUc5aWFpNWpiM1Z1ZENBOVBUMGdYQ0oxYm1SbFptbHVaV1JjSWlrZ2UxeHlYRzRnSUNBZ0lDQWdJRzlpYWk1amIzVnVkQ0E5SURBN1hISmNiaUFnSUNCOVhISmNibHh5WEc0Z0lDQWdhV1lnS0c5aWFpNXphRzkzVEc5aFpHbHVaeWtnZTF4eVhHNGdJQ0FnSUNBZ0lHeHZZV1JwYm1jdWMyaHZkeWh2WW1vdWMyaHZkMHh2WVdScGJtY3BPMXh5WEc0Z0lDQWdJQ0FnSUc5aWFpNWpiMjF3YkdWMFpTQTlJQ2dvWm00NklFWjFibU4wYVc5dUxDQXVMaTVoY21kektTQTlQaUI3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJSEpsZEhWeWJpQW9LVDArSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDOHZJRlJQUkU4ZzVMMi81NVNvVUhKdmJXbHpaZWFXdWVXOGorV1FqdSs4ak9XUHIraUR2ZVM0amVtY2dPaW1nZWkvbWVTNm0rUzZobHh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYkc5aFpHbHVaeTVvYVdSbEtDazdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0F2THlCQWRITXRhV2R1YjNKbFhISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjBlWEJsYjJZZ1ptNGdQVDA5SUZ3aVpuVnVZM1JwYjI1Y0lpQW1KaUJtYmk1aGNIQnNlU2gwYUdsekxDQXVMaTVoY21kektUdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2ZWeHlYRzRnSUNBZ0lDQWdJSDBwS0c5aWFpNWpiMjF3YkdWMFpTbGNjbHh1SUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0JwWmlnaGIySnFMbTl5YVdkcGJsVnliQ2tnZTF4eVhHNGdJQ0FnSUNBZ0lHOWlhaTV2Y21sbmFXNVZjbXdnUFNCdlltb3VkWEpzTzF4eVhHNGdJQ0FnSUNBZ0lHOWlhaTUxY213Z1BTQm1iM0p0WVhRb2IySnFMblZ5YkNrN1hISmNiaUFnSUNCOVhISmNibHh5WEc0Z0lDQWdjbVYwZFhKdUlHOWlhanRjY2x4dWZWeHlYRzVjY2x4dUx5OGc1cUM4NWJ5UDVZeVc1YVNFNTVDRzZLKzM1ckdDNTVxRWIySnE1WWFGNWE2NVhISmNibVoxYm1OMGFXOXVJR2x1YVhScFlXeHBlbVVvYjJKcU9pQlVUMFJQTENCamIyNTBZV2x1WlhJNklGUlBSRThwSUh0Y2NseHVJQ0FnSUdsbUlDZ2hiMkpxVzJOdmJuUmhhVzVsY2wwcElIdGNjbHh1SUNBZ0lDQWdJQ0J2WW1wYlkyOXVkR0ZwYm1WeVhTQTlJSHQ5TzF4eVhHNGdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lHbG1JQ2h2WW1vdWIzSnBaMmx1VlhKc0lDRTlQU0JqYjI1bWFXY3VZMjlrWlZSdlUyVnpjMmx2Ymk1MWNtd2dKaVlnYzNSaGRIVnpMbk5sYzNOcGIyNHBJSHRjY2x4dUlDQWdJQ0FnSUNCdlltcGJZMjl1ZEdGcGJtVnlYVnRqYjI1bWFXY3VjMlZ6YzJsdmJrNWhiV1VoWFNBOUlITjBZWFIxY3k1elpYTnphVzl1TzF4eVhHNGdJQ0FnZlZ4eVhHNWNjbHh1SUNBZ0lDOHZJT1dtZ3VhZW5PYWNpZVdGcU9XeGdPV1BndWFWc08rOGpPV0ltZWEzdStXS29GeHlYRzRnSUNBZ2JHVjBJR2RrT2lCaGJua2dQU0I3ZlR0Y2NseHVJQ0FnSUdsbUlDaDBlWEJsYjJZZ1kyOXVabWxuTG1kc2IySmhiRVJoZEdFZ1BUMDlJRndpWm5WdVkzUnBiMjVjSWlrZ2UxeHlYRzRnSUNBZ0lDQWdJR2RrSUQwZ1kyOXVabWxuTG1kc2IySmhiRVJoZEdFb0tUdGNjbHh1SUNBZ0lIMGdaV3h6WlNCcFppQW9kSGx3Wlc5bUlHTnZibVpwWnk1bmJHOWlZV3hFWVhSaElEMDlQU0JjSW05aWFtVmpkRndpS1NCN1hISmNiaUFnSUNBZ0lDQWdaMlFnUFNCamIyNW1hV2N1WjJ4dlltRnNSR0YwWVR0Y2NseHVJQ0FnSUgxY2NseHVJQ0FnSUc5aWFsdGpiMjUwWVdsdVpYSmRJRDBnVDJKcVpXTjBMbUZ6YzJsbmJpaDdmU3dnWjJRc0lHOWlhbHRqYjI1MFlXbHVaWEpkS1R0Y2NseHVYSEpjYmlBZ0lDQnZZbW91YldWMGFHOWtJRDBnYjJKcUxtMWxkR2h2WkNCOGZDQW5SMFZVSnp0Y2NseHVJQ0FnSUc5aWFpNWtZWFJoVkhsd1pTQTlJRzlpYWk1a1lYUmhWSGx3WlNCOGZDQW5hbk52YmljN1hISmNibHh5WEc0Z0lDQWdMeThnNWFhQzVwNmM2SyszNXJHQzVMaU41cGl2UjBWVTc3eU01WWlaNVp5b1ZWSk01TGl0NkllcTVZcW81WXFnNUxpSzU1bTc1YjJWNW9DQjVaS001WVdvNWJHQTVZK0M1cFd3WEhKY2JpQWdJQ0JwWmlBb2IySnFMbTFsZEdodlpDQWhQVDBnWENKSFJWUmNJaWtnZTF4eVhHNGdJQ0FnSUNBZ0lHbG1JQ2h6ZEdGMGRYTXVjMlZ6YzJsdmJpa2dlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnNaWFFnY0dGeVlXMXpPaUJoYm5rZ1BTQjdmVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdjR0Z5WVcxelcyTnZibVpwWnk1elpYTnphVzl1VG1GdFpWMGdQU0J6ZEdGMGRYTXVjMlZ6YzJsdmJqdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2IySnFMblZ5YkNBOUlIVnliQzV6WlhSUVlYSmhiWE1vYjJKcUxuVnliQ3dnY0dGeVlXMXpLVHRjY2x4dUlDQWdJQ0FnSUNCOVhISmNiaUFnSUNBZ0lDQWdiMkpxTG5WeWJDQTlJSFZ5YkM1elpYUlFZWEpoYlhNb2IySnFMblZ5YkN3Z1oyUXBPMXh5WEc0Z0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUdSMWNtRjBhVzl1VW1Wd2IzSjBaWEl1YzNSaGNuUW9iMkpxS1R0Y2NseHVYSEpjYmlBZ0lDQnlaWFIxY200Z2IySnFPMXh5WEc1OVhISmNibHh5WEc1bWRXNWpkR2x2YmlCa2IxSmxjWFZsYzNRb2IySnFPaUJVVDBSUEtTQjdYSEpjYmlBZ0lDQnZZbW9nUFNCcGJtbDBhV0ZzYVhwbEtHOWlhaXdnSjJSaGRHRW5LVHRjY2x4dUlDQWdJRzlpYWk1amIzVnVkQ3NyTzF4eVhHNGdJQ0FnZDNndWNtVnhkV1Z6ZENoN1hISmNiaUFnSUNBZ0lDQWdkWEpzT2lCdlltb3VkWEpzTEZ4eVhHNGdJQ0FnSUNBZ0lHUmhkR0U2SUc5aWFpNWtZWFJoTEZ4eVhHNGdJQ0FnSUNBZ0lHMWxkR2h2WkRvZ2IySnFMbTFsZEdodlpDeGNjbHh1SUNBZ0lDQWdJQ0JvWldGa1pYSTZJRzlpYWk1b1pXRmtaWElnZkh3Z2UzMHNYSEpjYmlBZ0lDQWdJQ0FnWkdGMFlWUjVjR1U2SUc5aWFpNWtZWFJoVkhsd1pTQjhmQ0FuYW5OdmJpY3NYSEpjYmlBZ0lDQWdJQ0FnYzNWalkyVnpjem9nWm5WdVkzUnBiMjRnS0hKbGN6b2dkM2d1VW1WeGRXVnpkRk4xWTJObGMzTkRZV3hzWW1GamExSmxjM1ZzZENrZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYTndiMjV6WlVoaGJtUnNaWElvY21WekxDQnZZbW9zSUNkeVpYRjFaWE4wSnlsY2NseHVJQ0FnSUNBZ0lDQjlMRnh5WEc0Z0lDQWdJQ0FnSUdaaGFXdzZJR1oxYm1OMGFXOXVJQ2h5WlhNNklIZDRMa2RsYm1WeVlXeERZV3hzWW1GamExSmxjM1ZzZENrZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCbGNuSnZja2hoYm1Sc1pYSW9iMkpxTENCeVpYTXBPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpiMjV6YjJ4bExtVnljbTl5S0hKbGN5azdYSEpjYmlBZ0lDQWdJQ0FnZlN4Y2NseHVJQ0FnSUNBZ0lDQmpiMjF3YkdWMFpUb2dablZ1WTNScGIyNGdLQ2tnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0J2WW1vdVkyOTFiblF0TFR0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnZEhsd1pXOW1JRzlpYWk1amIyMXdiR1YwWlNBOVBUMGdYQ0ptZFc1amRHbHZibHdpSUNZbUlHOWlhaTVqYjNWdWRDQTlQVDBnTUNBbUppQnZZbW91WTI5dGNHeGxkR1VvS1R0Y2NseHVJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQjlLVnh5WEc1OVhISmNibHh5WEc1bWRXNWpkR2x2YmlCa2IxVndiRzloWkVacGJHVW9iMkpxT2lCVVQwUlBLU0I3WEhKY2JpQWdJQ0J2WW1vZ1BTQnBibWwwYVdGc2FYcGxLRzlpYWl3Z0oyWnZjbTFFWVhSaEp5azdYSEpjYmlBZ0lDQnZZbW91WTI5MWJuUXJLenRjY2x4dUlDQWdJSGQ0TG5Wd2JHOWhaRVpwYkdVb2UxeHlYRzRnSUNBZ0lDQWdJSFZ5YkRvZ2IySnFMblZ5YkN4Y2NseHVJQ0FnSUNBZ0lDQm1hV3hsVUdGMGFEb2diMkpxTG1acGJHVlFZWFJvSUh4OElDY25MRnh5WEc0Z0lDQWdJQ0FnSUc1aGJXVTZJRzlpYWk1dVlXMWxJSHg4SUNjbkxGeHlYRzRnSUNBZ0lDQWdJR1p2Y20xRVlYUmhPaUJ2WW1vdVptOXliVVJoZEdFc1hISmNiaUFnSUNBZ0lDQWdjM1ZqWTJWemN6b2dablZ1WTNScGIyNGdLSEpsY3pvZ2QzZ3VWWEJzYjJGa1JtbHNaVk4xWTJObGMzTkRZV3hzWW1GamExSmxjM1ZzZENrZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCeVpYTndiMjV6WlVoaGJtUnNaWElvY21WekxDQnZZbW9zSUNkMWNHeHZZV1JHYVd4bEp5bGNjbHh1SUNBZ0lDQWdJQ0I5TEZ4eVhHNGdJQ0FnSUNBZ0lHWmhhV3c2SUdaMWJtTjBhVzl1SUNoeVpYTTZJSGQ0TGtkbGJtVnlZV3hEWVd4c1ltRmphMUpsYzNWc2RDa2dlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQmxjbkp2Y2toaGJtUnNaWElvYjJKcUxDQnlaWE1wTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emIyeGxMbVZ5Y205eUtISmxjeWs3WEhKY2JpQWdJQ0FnSUNBZ2ZTeGNjbHh1SUNBZ0lDQWdJQ0JqYjIxd2JHVjBaVG9nWm5WdVkzUnBiMjRnS0NrZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCdlltb3VZMjkxYm5RdExUdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2RIbHdaVzltSUc5aWFpNWpiMjF3YkdWMFpTQTlQVDBnWENKbWRXNWpkR2x2Ymx3aUlDWW1JRzlpYWk1amIzVnVkQ0E5UFQwZ01DQW1KaUJ2WW1vdVkyOXRjR3hsZEdVb0tUdGNjbHh1SUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0I5S1Z4eVhHNTlYSEpjYmx4eVhHNW1kVzVqZEdsdmJpQnlaWEYxWlhOMEtHOWlham9nVkU5RVR5azZJRlJQUkU4Z2UxeHlYRzRnSUNBZ2IySnFJRDBnY0hKbFJHOG9iMkpxS1R0Y2NseHVJQ0FnSUdsbUtHTnZibVpwWnk1dGIyTnJTbk52YmlrZ2UxeHlYRzRnSUNBZ0lDQWdJRzF2WTJ0TllXNWhaMlZ5TG1kbGRDaHZZbW9zSUNkeVpYRjFaWE4wSnlrN1hISmNiaUFnSUNBZ0lDQWdjbVYwZFhKdUlHWmhiSE5sTzF4eVhHNGdJQ0FnZlZ4eVhHNGdJQ0FnYVdZb2IySnFMbU5oWTJobEtTQjdYSEpjYmlBZ0lDQWdJQ0FnWTJGamFHVk5ZVzVoWjJWeUxtZGxkQ2h2WW1vcE8xeHlYRzRnSUNBZ2ZWeHlYRzVjY2x4dUlDQWdJSE5sYzNOcGIyNU5ZVzVoWjJWeUtDZ3BQVDU3WEhKY2JpQWdJQ0FnSUNBZ1pHOVNaWEYxWlhOMEtHOWlhaWxjY2x4dUlDQWdJSDBzSUc5aWFpbGNjbHh1ZlZ4eVhHNWNjbHh1Wm5WdVkzUnBiMjRnZFhCc2IyRmtSbWxzWlNodlltbzZJRlJQUkU4cE9pQlVUMFJQSUh0Y2NseHVJQ0FnSUc5aWFpQTlJSEJ5WlVSdktHOWlhaWs3WEhKY2JpQWdJQ0JwWmloamIyNW1hV2N1Ylc5amEwcHpiMjRwSUh0Y2NseHVJQ0FnSUNBZ0lDQnRiMk5yVFdGdVlXZGxjaTVuWlhRb2IySnFMQ0FuZFhCc2IyRmtSbWxzWlNjcE8xeHlYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQm1ZV3h6WlR0Y2NseHVJQ0FnSUgxY2NseHVJQ0FnSUdsbUtHOWlhaTVqWVdOb1pTa2dlMXh5WEc0Z0lDQWdJQ0FnSUdOaFkyaGxUV0Z1WVdkbGNpNW5aWFFvYjJKcUtUdGNjbHh1SUNBZ0lIMWNjbHh1WEhKY2JpQWdJQ0J6WlhOemFXOXVUV0Z1WVdkbGNpZ29LVDArZTF4eVhHNGdJQ0FnSUNBZ0lHUnZWWEJzYjJGa1JtbHNaU2h2WW1vcFhISmNiaUFnSUNCOUxDQnZZbW9wWEhKY2JuMWNjbHh1WEhKY2JtVjRjRzl5ZENCa1pXWmhkV3gwSUh0Y2NseHVJQ0FnSUhKbGNYVmxjM1FzWEhKY2JpQWdJQ0IxY0d4dllXUkdhV3hsWEhKY2JuMWNjbHh1SWwxOSIsIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbnZhciBjb25maWdfMSA9IHJlcXVpcmUoXCIuLi9zdG9yZS9jb25maWdcIik7XHJcbnZhciBzdGF0dXNfMSA9IHJlcXVpcmUoXCIuLi9zdG9yZS9zdGF0dXNcIik7XHJcbnZhciByZXF1ZXN0SGFuZGxlcl8xID0gcmVxdWlyZShcIi4vcmVxdWVzdEhhbmRsZXJcIik7XHJcbnZhciBlcnJvckhhbmRsZXJfMSA9IHJlcXVpcmUoXCIuL2Vycm9ySGFuZGxlclwiKTtcclxudmFyIGNhY2hlTWFuYWdlcl8xID0gcmVxdWlyZShcIi4vY2FjaGVNYW5hZ2VyXCIpO1xyXG52YXIgZHVyYXRpb25SZXBvcnRlcl8xID0gcmVxdWlyZShcIi4vZHVyYXRpb25SZXBvcnRlclwiKTtcclxuZnVuY3Rpb24gcmVzcG9uc2UocmVzLCBvYmosIG1ldGhvZCkge1xyXG4gICAgaWYgKHJlcy5zdGF0dXNDb2RlID09PSAyMDApIHtcclxuICAgICAgICBpZiAodHlwZW9mIHJlcy5kYXRhID09PSBcInN0cmluZ1wiKSB7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICByZXMuZGF0YSA9IEpTT04ucGFyc2UocmVzLmRhdGEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICBlcnJvckhhbmRsZXJfMS5kZWZhdWx0KG9iaiwgcmVzKTtcclxuICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBkdXJhdGlvblJlcG9ydGVyXzEuZGVmYXVsdC5lbmQob2JqKTtcclxuICAgICAgICBpZiAob2JqLmlzTG9naW4pIHtcclxuICAgICAgICAgICAgdmFyIHMgPSBcIlwiO1xyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgcyA9IGNvbmZpZ18xLmRlZmF1bHQuY29kZVRvU2Vzc2lvbi5zdWNjZXNzKHJlcy5kYXRhKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChzKSB7XHJcbiAgICAgICAgICAgICAgICBvYmouc3VjY2VzcyhzKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgIGVycm9ySGFuZGxlcl8xLmRlZmF1bHQob2JqLCByZXMpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGNvbmZpZ18xLmRlZmF1bHQubG9naW5UcmlnZ2VyKHJlcy5kYXRhKSAmJiBvYmoucmVMb2dpbkxpbWl0IDwgY29uZmlnXzEuZGVmYXVsdC5yZUxvZ2luTGltaXQpIHtcclxuICAgICAgICAgICAgc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uID0gJyc7XHJcbiAgICAgICAgICAgIHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbklzRnJlc2ggPSB0cnVlO1xyXG4gICAgICAgICAgICB3eC5yZW1vdmVTdG9yYWdlKHtcclxuICAgICAgICAgICAgICAgIGtleTogY29uZmlnXzEuZGVmYXVsdC5zZXNzaW9uTmFtZSxcclxuICAgICAgICAgICAgICAgIGNvbXBsZXRlOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEhhbmRsZXJfMS5kZWZhdWx0W21ldGhvZF0ob2JqKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGNvbmZpZ18xLmRlZmF1bHQuc3VjY2Vzc1RyaWdnZXIocmVzLmRhdGEpKSB7XHJcbiAgICAgICAgICAgIHZhciByZWFsRGF0YSA9IG51bGw7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICByZWFsRGF0YSA9IGNvbmZpZ18xLmRlZmF1bHQuc3VjY2Vzc0RhdGEocmVzLmRhdGEpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRnVuY3Rpb24gc3VjY2Vzc0RhdGEgb2NjdXIgZXJyb3I6IFwiICsgZSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKCFvYmoubm9DYWNoZUZsYXNoKSB7XHJcbiAgICAgICAgICAgICAgICB0eXBlb2Ygb2JqLnN1Y2Nlc3MgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouc3VjY2VzcyhyZWFsRGF0YSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgY2FjaGVNYW5hZ2VyXzEuZGVmYXVsdC5zZXQob2JqLCByZWFsRGF0YSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBlcnJvckhhbmRsZXJfMS5kZWZhdWx0KG9iaiwgcmVzKTtcclxuICAgICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBlcnJvckhhbmRsZXJfMS5kZWZhdWx0KG9iaiwgcmVzKTtcclxuICAgIH1cclxufVxyXG5leHBvcnRzLmRlZmF1bHQgPSByZXNwb25zZTtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pY21WemNHOXVjMlZJWVc1a2JHVnlMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaUxpNHZMaTR2YzNKakwyMXZaSFZzWlM5eVpYTndiMjV6WlVoaGJtUnNaWEl1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN1FVRkJRU3d3UTBGQmIwTTdRVUZEY0VNc01FTkJRVzlETzBGQlEzQkRMRzFFUVVFMlF6dEJRVU0zUXl3clEwRkJlVU03UVVGRGVrTXNLME5CUVhsRE8wRkJRM3BETEhWRVFVRnBSRHRCUVVWcVJDeFRRVUZUTEZGQlFWRXNRMEZCUXl4SFFVRjVSU3hGUVVGRkxFZEJRVk1zUlVGQlJTeE5RVUZuUXp0SlFVTndTU3hKUVVGSkxFZEJRVWNzUTBGQlF5eFZRVUZWTEV0QlFVc3NSMEZCUnl4RlFVRkZPMUZCUjNoQ0xFbEJRVWNzVDBGQlR5eEhRVUZITEVOQlFVTXNTVUZCU1N4TFFVRkxMRkZCUVZFc1JVRkJSVHRaUVVNM1FpeEpRVUZKTzJkQ1FVTkJMRWRCUVVjc1EwRkJReXhKUVVGSkxFZEJRVWNzU1VGQlNTeERRVUZETEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1NVRkJTU3hEUVVGRExFTkJRVU03WVVGRGJrTTdXVUZCUXl4UFFVRlBMRU5CUVVNc1JVRkJSVHRuUWtGRFVpeHpRa0ZCV1N4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF6dG5Ra0ZEZGtJc1QwRkJUeXhMUVVGTExFTkJRVU03WVVGRGFFSTdVMEZEU2p0UlFVVkVMREJDUVVGblFpeERRVUZETEVkQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRSUVVVeFFpeEpRVUZKTEVkQlFVY3NRMEZCUXl4UFFVRlBMRVZCUVVVN1dVRkZZaXhKUVVGSkxFTkJRVU1zUjBGQlJ5eEZRVUZGTEVOQlFVTTdXVUZEV0N4SlFVRkpPMmRDUVVOQkxFTkJRVU1zUjBGQlJ5eG5Ra0ZCVFN4RFFVRkRMR0ZCUVdFc1EwRkJReXhQUVVGUkxFTkJRVU1zUjBGQlJ5eERRVUZETEVsQlFVa3NRMEZCUXl4RFFVRkRPMkZCUXk5RE8xbEJRVU1zVDBGQlR5eERRVUZETEVWQlFVVTdZVUZEV0R0WlFVTkVMRWxCUVVrc1EwRkJReXhGUVVGRk8yZENRVU5JTEVkQlFVY3NRMEZCUXl4UFFVRlBMRU5CUVVNc1EwRkJReXhEUVVGRExFTkJRVU03WVVGRGJFSTdhVUpCUVUwN1owSkJRMGdzYzBKQlFWa3NRMEZCUXl4SFFVRkhMRVZCUVVVc1IwRkJSeXhEUVVGRExFTkJRVU03WVVGRE1VSTdVMEZEU2p0aFFVRk5MRWxCUVVrc1owSkJRVTBzUTBGQlF5eFpRVUZoTEVOQlFVTXNSMEZCUnl4RFFVRkRMRWxCUVVrc1EwRkJReXhKUVVGSkxFZEJRVWNzUTBGQlF5eFpRVUZaTEVkQlFVY3NaMEpCUVUwc1EwRkJReXhaUVVGaExFVkJRVVU3V1VGRmJFWXNaMEpCUVUwc1EwRkJReXhQUVVGUExFZEJRVWNzUlVGQlJTeERRVUZETzFsQlEzQkNMR2RDUVVGTkxFTkJRVU1zWTBGQll5eEhRVUZITEVsQlFVa3NRMEZCUXp0WlFVTTNRaXhGUVVGRkxFTkJRVU1zWVVGQllTeERRVUZETzJkQ1FVTmlMRWRCUVVjc1JVRkJSU3huUWtGQlRTeERRVUZETEZkQlFWazdaMEpCUTNoQ0xGRkJRVkVzUlVGQlJUdHZRa0ZEVGl4M1FrRkJZeXhEUVVGRExFMUJRVTBzUTBGQlF5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkJPMmRDUVVNdlFpeERRVUZETzJGQlEwb3NRMEZCUXl4RFFVRkJPMU5CUTB3N1lVRkJUU3hKUVVGSkxHZENRVUZOTEVOQlFVTXNZMEZCWlN4RFFVRkRMRWRCUVVjc1EwRkJReXhKUVVGSkxFTkJRVU1zUlVGQlJUdFpRVVY2UXl4SlFVRkpMRkZCUVZFc1IwRkJSeXhKUVVGSkxFTkJRVU03V1VGRGNFSXNTVUZCU1R0blFrRkRRU3hSUVVGUkxFZEJRVWNzWjBKQlFVMHNRMEZCUXl4WFFVRlpMRU5CUVVNc1IwRkJSeXhEUVVGRExFbEJRVWtzUTBGQlF5eERRVUZETzJGQlF6VkRPMWxCUVVNc1QwRkJUeXhEUVVGRExFVkJRVVU3WjBKQlExSXNUMEZCVHl4RFFVRkRMRXRCUVVzc1EwRkJReXh2UTBGQmIwTXNSMEZCUnl4RFFVRkRMRU5CUVVNc1EwRkJRenRoUVVNelJEdFpRVU5FTEVsQlFVY3NRMEZCUXl4SFFVRkhMRU5CUVVNc1dVRkJXU3hGUVVGRk8yZENRVVZzUWl4UFFVRlBMRWRCUVVjc1EwRkJReXhQUVVGUExFdEJRVXNzVlVGQlZTeEpRVUZKTEVkQlFVY3NRMEZCUXl4UFFVRlBMRU5CUVVNc1VVRkJVU3hEUVVGRExFTkJRVU03WVVGRE9VUTdXVUZGUkN4elFrRkJXU3hEUVVGRExFZEJRVWNzUTBGQlF5eEhRVUZITEVWQlFVVXNVVUZCVVN4RFFVRkRMRU5CUVVNN1UwRkRia003WVVGQlRUdFpRVVZJTEhOQ1FVRlpMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETzFOQlF6RkNPMHRCUTBvN1UwRkJUVHRSUVVOSUxITkNRVUZaTEVOQlFVTXNSMEZCUnl4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRE8wdEJRekZDTzBGQlEwd3NRMEZCUXp0QlFVVkVMR3RDUVVGbExGRkJRVkVzUTBGQlF5SXNJbk52ZFhKalpYTkRiMjUwWlc1MElqcGJJbWx0Y0c5eWRDQmpiMjVtYVdjZ1puSnZiU0FuTGk0dmMzUnZjbVV2WTI5dVptbG5KMXh5WEc1cGJYQnZjblFnYzNSaGRIVnpJR1p5YjIwZ0p5NHVMM04wYjNKbEwzTjBZWFIxY3lkY2NseHVhVzF3YjNKMElISmxjWFZsYzNSSVlXNWtiR1Z5SUdaeWIyMGdKeTR2Y21WeGRXVnpkRWhoYm1Sc1pYSW5YSEpjYm1sdGNHOXlkQ0JsY25KdmNraGhibVJzWlhJZ1puSnZiU0FuTGk5bGNuSnZja2hoYm1Sc1pYSW5YSEpjYm1sdGNHOXlkQ0JqWVdOb1pVMWhibUZuWlhJZ1puSnZiU0FuTGk5allXTm9aVTFoYm1GblpYSW5YSEpjYm1sdGNHOXlkQ0JrZFhKaGRHbHZibEpsY0c5eWRHVnlJR1p5YjIwZ0p5NHZaSFZ5WVhScGIyNVNaWEJ2Y25SbGNpZGNjbHh1WEhKY2JtWjFibU4wYVc5dUlISmxjM0J2Ym5ObEtISmxjem9nZDNndVVtVnhkV1Z6ZEZOMVkyTmxjM05EWVd4c1ltRmphMUpsYzNWc2RDQjhJSGQ0TGxWd2JHOWhaRVpwYkdWVGRXTmpaWE56UTJGc2JHSmhZMnRTWlhOMWJIUXNJRzlpYWpvZ1ZFOUVUeXdnYldWMGFHOWtPaUJjSW5KbGNYVmxjM1JjSWlCOElGd2lkWEJzYjJGa1JtbHNaVndpS1RvZ1lXNTVJSHRjY2x4dUlDQWdJR2xtSUNoeVpYTXVjM1JoZEhWelEyOWtaU0E5UFQwZ01qQXdLU0I3WEhKY2JseHlYRzRnSUNBZ0lDQWdJQzh2SU9XRnZPV3V1WFZ3Ykc5aFpFWnBiR1hvdjVUbG01N25tb1J5WlhNdVpHRjBZZVdQcitpRHZlYVlyK1d0bCtlc3B1UzRzbHh5WEc0Z0lDQWdJQ0FnSUdsbUtIUjVjR1Z2WmlCeVpYTXVaR0YwWVNBOVBUMGdYQ0p6ZEhKcGJtZGNJaWtnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0IwY25rZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdjbVZ6TG1SaGRHRWdQU0JLVTA5T0xuQmhjbk5sS0hKbGN5NWtZWFJoS1R0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnZlNCallYUmphQ0FvWlNrZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdaWEp5YjNKSVlXNWtiR1Z5S0c5aWFpd2djbVZ6S1R0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxkSFZ5YmlCbVlXeHpaVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0FnSUgxY2NseHVYSEpjYmlBZ0lDQWdJQ0FnWkhWeVlYUnBiMjVTWlhCdmNuUmxjaTVsYm1Rb2IySnFLVHRjY2x4dVhISmNiaUFnSUNBZ0lDQWdhV1lnS0c5aWFpNXBjMHh2WjJsdUtTQjdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDOHZJT2VadStXOWxlaXZ0K2F4Z2x4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JzWlhRZ2N5QTlJRndpWENJN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUhSeWVTQjdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J6SUQwZ1kyOXVabWxuTG1OdlpHVlViMU5sYzNOcGIyNHVjM1ZqWTJWemN5RW9jbVZ6TG1SaGRHRXBPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlJR05oZEdOb0lDaGxLU0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdhV1lnS0hNcElIdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRzlpYWk1emRXTmpaWE56S0hNcE8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCOUlHVnNjMlVnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1pYSnliM0pJWVc1a2JHVnlLRzlpYWl3Z2NtVnpLVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0FnSUgwZ1pXeHpaU0JwWmlBb1kyOXVabWxuTG14dloybHVWSEpwWjJkbGNpRW9jbVZ6TG1SaGRHRXBJQ1ltSUc5aWFpNXlaVXh2WjJsdVRHbHRhWFFnUENCamIyNW1hV2N1Y21WTWIyZHBia3hwYldsMElTa2dlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQXZMeURubWJ2bHZaWG1nSUhscExIbWxZanZ2SXprdUpUcGg0M29yNVhtcktIbWxiRGt1STNvdG9Yb3Y0ZnBoWTNudmE1Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnYzNSaGRIVnpMbk5sYzNOcGIyNGdQU0FuSnp0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnYzNSaGRIVnpMbk5sYzNOcGIyNUpjMFp5WlhOb0lEMGdkSEoxWlR0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnZDNndWNtVnRiM1psVTNSdmNtRm5aU2g3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCclpYazZJR052Ym1acFp5NXpaWE56YVc5dVRtRnRaU0VzWEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCamIyMXdiR1YwWlRvZ1puVnVZM1JwYjI0Z0tDa2dlMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lISmxjWFZsYzNSSVlXNWtiR1Z5VzIxbGRHaHZaRjBvYjJKcUtWeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlLVnh5WEc0Z0lDQWdJQ0FnSUgwZ1pXeHpaU0JwWmlBb1kyOXVabWxuTG5OMVkyTmxjM05VY21sbloyVnlJU2h5WlhNdVpHRjBZU2twSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnTHk4ZzVvNmw1WStqNkwrVTVadWU1b2lRNVlxZjU2Q0JYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lHeGxkQ0J5WldGc1JHRjBZU0E5SUc1MWJHdzdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lIUnllU0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCeVpXRnNSR0YwWVNBOUlHTnZibVpwWnk1emRXTmpaWE56UkdGMFlTRW9jbVZ6TG1SaGRHRXBPMXh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlJR05oZEdOb0lDaGxLU0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCamIyNXpiMnhsTG1WeWNtOXlLRndpUm5WdVkzUnBiMjRnYzNWalkyVnpjMFJoZEdFZ2IyTmpkWElnWlhKeWIzSTZJRndpSUNzZ1pTazdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2FXWW9JVzlpYWk1dWIwTmhZMmhsUm14aGMyZ3BJSHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUM4dklPV21ndWFlbk9TNHV1UzZodVMvbmVpdmdlbWh0ZW1kb3VTNGplbVhxdWVEZ2UrOGpPV0ltZVM0amVXYm51aXdnKys4ak9XUHF1YVlyK2U4aytXdG1PYWNnT2FXc09hVnNPYU5ydSs4ak9XK2hlUzRpK2Fzb2VpL20rV0ZwZVdHamVlVXFGeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdkSGx3Wlc5bUlHOWlhaTV6ZFdOalpYTnpJRDA5UFNCY0ltWjFibU4wYVc5dVhDSWdKaVlnYjJKcUxuTjFZMk5sYzNNb2NtVmhiRVJoZEdFcE8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhISmNiaUFnSUNBZ0lDQWdJQ0FnSUM4dklPZThrK1d0bU9XdG1PV0NxRnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQmpZV05vWlUxaGJtRm5aWEl1YzJWMEtHOWlhaXdnY21WaGJFUmhkR0VwTzF4eVhHNGdJQ0FnSUNBZ0lIMGdaV3h6WlNCN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUM4dklPYU9wZVdQbytpL2xPV2JudVdrc2VpMHBlZWdnVnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQmxjbkp2Y2toaGJtUnNaWElvYjJKcUxDQnlaWE1wTzF4eVhHNGdJQ0FnSUNBZ0lIMWNjbHh1SUNBZ0lIMGdaV3h6WlNCN1hISmNiaUFnSUNBZ0lDQWdaWEp5YjNKSVlXNWtiR1Z5S0c5aWFpd2djbVZ6S1R0Y2NseHVJQ0FnSUgxY2NseHVmVnh5WEc1Y2NseHVaWGh3YjNKMElHUmxabUYxYkhRZ2NtVnpjRzl1YzJVN1hISmNiaUpkZlE9PSIsIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbnZhciBmbG93XzEgPSByZXF1aXJlKFwiLi4vdXRpbC9mbG93XCIpO1xyXG52YXIgc3RhdHVzXzEgPSByZXF1aXJlKFwiLi4vc3RvcmUvc3RhdHVzXCIpO1xyXG52YXIgY29uZmlnXzEgPSByZXF1aXJlKFwiLi4vc3RvcmUvY29uZmlnXCIpO1xyXG52YXIgcmVxdWVzdEhhbmRsZXJfMSA9IHJlcXVpcmUoXCIuL3JlcXVlc3RIYW5kbGVyXCIpO1xyXG52YXIgZXJyb3JIYW5kbGVyXzEgPSByZXF1aXJlKFwiLi9lcnJvckhhbmRsZXJcIik7XHJcbnZhciBkdXJhdGlvblJlcG9ydGVyXzEgPSByZXF1aXJlKFwiLi9kdXJhdGlvblJlcG9ydGVyXCIpO1xyXG5mdW5jdGlvbiBjaGVja1Nlc3Npb24oY2FsbGJhY2ssIG9iaikge1xyXG4gICAgaWYgKHN0YXR1c18xLmRlZmF1bHQuaXNDaGVja2luZ1Nlc3Npb24pIHtcclxuICAgICAgICBmbG93XzEuZGVmYXVsdC53YWl0KCdjaGVja1Nlc3Npb25GaW5pc2hlZCcsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgY2hlY2tTZXNzaW9uKGNhbGxiYWNrLCBvYmopO1xyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoIXN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbklzRnJlc2ggJiYgc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uKSB7XHJcbiAgICAgICAgc3RhdHVzXzEuZGVmYXVsdC5pc0NoZWNraW5nU2Vzc2lvbiA9IHRydWU7XHJcbiAgICAgICAgb2JqLmNvdW50Kys7XHJcbiAgICAgICAgZHVyYXRpb25SZXBvcnRlcl8xLmRlZmF1bHQuc3RhcnQob2JqLCAnY2hlY2tTZXNzaW9uJyk7XHJcbiAgICAgICAgd3guY2hlY2tTZXNzaW9uKHtcclxuICAgICAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uSXNGcmVzaCA9IHRydWU7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGZhaWw6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgICAgIHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbiA9ICcnO1xyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgc3RhdHVzXzEuZGVmYXVsdC5pc0NoZWNraW5nU2Vzc2lvbiA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgb2JqLmNvdW50LS07XHJcbiAgICAgICAgICAgICAgICBkdXJhdGlvblJlcG9ydGVyXzEuZGVmYXVsdC5lbmQob2JqLCAnY2hlY2tTZXNzaW9uJyk7XHJcbiAgICAgICAgICAgICAgICBkb0xvZ2luKGNhbGxiYWNrLCBvYmopO1xyXG4gICAgICAgICAgICAgICAgZmxvd18xLmRlZmF1bHQuZW1pdCgnY2hlY2tTZXNzaW9uRmluaXNoZWQnKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG4gICAgZWxzZSB7XHJcbiAgICAgICAgZG9Mb2dpbihjYWxsYmFjaywgb2JqKTtcclxuICAgIH1cclxufVxyXG5mdW5jdGlvbiBkb0xvZ2luKGNhbGxiYWNrLCBvYmopIHtcclxuICAgIGlmIChvYmouaXNMb2dpbikge1xyXG4gICAgICAgIHR5cGVvZiBjYWxsYmFjayA9PT0gXCJmdW5jdGlvblwiICYmIGNhbGxiYWNrKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmIChzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb24pIHtcclxuICAgICAgICBpZiAoc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uRXhwaXJlVGltZSAmJiBuZXcgRGF0ZSgpLmdldFRpbWUoKSA+IHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZSkge1xyXG4gICAgICAgICAgICBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb24gPSAnJztcclxuICAgICAgICAgICAgZG9Mb2dpbihjYWxsYmFjaywgb2JqKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIHR5cGVvZiBjYWxsYmFjayA9PT0gXCJmdW5jdGlvblwiICYmIGNhbGxiYWNrKCk7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG4gICAgZWxzZSBpZiAoc3RhdHVzXzEuZGVmYXVsdC5sb2dpbmluZykge1xyXG4gICAgICAgIGZsb3dfMS5kZWZhdWx0LndhaXQoJ2RvTG9naW5GaW5pc2hlZCcsIGZ1bmN0aW9uICgpIHtcclxuICAgICAgICAgICAgZG9Mb2dpbihjYWxsYmFjaywgb2JqKTtcclxuICAgICAgICB9KTtcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHN0YXR1c18xLmRlZmF1bHQubG9naW5pbmcgPSB0cnVlO1xyXG4gICAgICAgIG9iai5jb3VudCsrO1xyXG4gICAgICAgIGR1cmF0aW9uUmVwb3J0ZXJfMS5kZWZhdWx0LnN0YXJ0KG9iaiwgJ2xvZ2luJyk7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ3d4LmxvZ2luJyk7XHJcbiAgICAgICAgd3gubG9naW4oe1xyXG4gICAgICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICAgICAgb2JqLmNvdW50LS07XHJcbiAgICAgICAgICAgICAgICBkdXJhdGlvblJlcG9ydGVyXzEuZGVmYXVsdC5lbmQob2JqLCAnbG9naW4nKTtcclxuICAgICAgICAgICAgICAgIHR5cGVvZiBvYmouY29tcGxldGUgPT09IFwiZnVuY3Rpb25cIiAmJiBvYmouY291bnQgPT09IDAgJiYgb2JqLmNvbXBsZXRlKCk7XHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIHN1Y2Nlc3M6IGZ1bmN0aW9uIChyZXMpIHtcclxuICAgICAgICAgICAgICAgIGlmIChyZXMuY29kZSkge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvZGUyU2Vzc2lvbihvYmosIHJlcy5jb2RlLCBjYWxsYmFjayk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICBlbHNlIHtcclxuICAgICAgICAgICAgICAgICAgICBlcnJvckhhbmRsZXJfMS5kZWZhdWx0KG9iaiwgcmVzKTtcclxuICAgICAgICAgICAgICAgICAgICBjb25zb2xlLmVycm9yKHJlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgc3RhdHVzXzEuZGVmYXVsdC5sb2dpbmluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICAgICAgICAgIGZsb3dfMS5kZWZhdWx0LmVtaXQoJ2RvTG9naW5GaW5pc2hlZCcpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICBmYWlsOiBmdW5jdGlvbiAocmVzKSB7XHJcbiAgICAgICAgICAgICAgICBlcnJvckhhbmRsZXJfMS5kZWZhdWx0KG9iaiwgcmVzKTtcclxuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IocmVzKTtcclxuICAgICAgICAgICAgICAgIHN0YXR1c18xLmRlZmF1bHQubG9naW5pbmcgPSBmYWxzZTtcclxuICAgICAgICAgICAgICAgIGZsb3dfMS5kZWZhdWx0LmVtaXQoJ2RvTG9naW5GaW5pc2hlZCcpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gY29kZTJTZXNzaW9uKG9iaiwgY29kZSwgY2FsbGJhY2spIHtcclxuICAgIHZhciBkYXRhO1xyXG4gICAgaWYgKHR5cGVvZiBjb25maWdfMS5kZWZhdWx0LmNvZGVUb1Nlc3Npb24uZGF0YSA9PT0gXCJmdW5jdGlvblwiKSB7XHJcbiAgICAgICAgZGF0YSA9IGNvbmZpZ18xLmRlZmF1bHQuY29kZVRvU2Vzc2lvbi5kYXRhKCk7XHJcbiAgICB9XHJcbiAgICBlbHNlIHtcclxuICAgICAgICBkYXRhID0gY29uZmlnXzEuZGVmYXVsdC5jb2RlVG9TZXNzaW9uLmRhdGEgfHwge307XHJcbiAgICB9XHJcbiAgICBkYXRhW2NvbmZpZ18xLmRlZmF1bHQuY29kZVRvU2Vzc2lvbi5jb2RlTmFtZV0gPSBjb2RlO1xyXG4gICAgb2JqLmNvdW50Kys7XHJcbiAgICByZXF1ZXN0SGFuZGxlcl8xLmRlZmF1bHQucmVxdWVzdCh7XHJcbiAgICAgICAgdXJsOiBjb25maWdfMS5kZWZhdWx0LmNvZGVUb1Nlc3Npb24udXJsLFxyXG4gICAgICAgIGRhdGE6IGRhdGEsXHJcbiAgICAgICAgbWV0aG9kOiBjb25maWdfMS5kZWZhdWx0LmNvZGVUb1Nlc3Npb24ubWV0aG9kIHx8ICdHRVQnLFxyXG4gICAgICAgIGlzTG9naW46IHRydWUsXHJcbiAgICAgICAgcmVwb3J0OiBjb25maWdfMS5kZWZhdWx0LmNvZGVUb1Nlc3Npb24ucmVwb3J0IHx8IGNvbmZpZ18xLmRlZmF1bHQuY29kZVRvU2Vzc2lvbi51cmwsXHJcbiAgICAgICAgc3VjY2VzczogZnVuY3Rpb24gKHMpIHtcclxuICAgICAgICAgICAgc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uID0gcztcclxuICAgICAgICAgICAgc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uSXNGcmVzaCA9IHRydWU7XHJcbiAgICAgICAgICAgIGlmIChzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmVUaW1lKSB7XHJcbiAgICAgICAgICAgICAgICBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb25FeHBpcmUgPSBuZXcgRGF0ZSgpLmdldFRpbWUoKSArIHN0YXR1c18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZVRpbWU7XHJcbiAgICAgICAgICAgICAgICB3eC5zZXRTdG9yYWdlKHtcclxuICAgICAgICAgICAgICAgICAgICBrZXk6IGNvbmZpZ18xLmRlZmF1bHQuc2Vzc2lvbkV4cGlyZUtleSxcclxuICAgICAgICAgICAgICAgICAgICBkYXRhOiBTdHJpbmcoc3RhdHVzXzEuZGVmYXVsdC5zZXNzaW9uRXhwaXJlKVxyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgdHlwZW9mIGNhbGxiYWNrID09PSBcImZ1bmN0aW9uXCIgJiYgY2FsbGJhY2soKTtcclxuICAgICAgICAgICAgd3guc2V0U3RvcmFnZSh7XHJcbiAgICAgICAgICAgICAgICBrZXk6IGNvbmZpZ18xLmRlZmF1bHQuc2Vzc2lvbk5hbWUsXHJcbiAgICAgICAgICAgICAgICBkYXRhOiBzdGF0dXNfMS5kZWZhdWx0LnNlc3Npb25cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBjb21wbGV0ZTogZnVuY3Rpb24gKCkge1xyXG4gICAgICAgICAgICBvYmouY291bnQtLTtcclxuICAgICAgICAgICAgdHlwZW9mIG9iai5jb21wbGV0ZSA9PT0gXCJmdW5jdGlvblwiICYmIG9iai5jb3VudCA9PT0gMCAmJiBvYmouY29tcGxldGUoKTtcclxuICAgICAgICAgICAgc3RhdHVzXzEuZGVmYXVsdC5sb2dpbmluZyA9IGZhbHNlO1xyXG4gICAgICAgICAgICBmbG93XzEuZGVmYXVsdC5lbWl0KCdkb0xvZ2luRmluaXNoZWQnKTtcclxuICAgICAgICB9LFxyXG4gICAgICAgIGZhaWw6IGNvbmZpZ18xLmRlZmF1bHQuY29kZVRvU2Vzc2lvbi5mYWlsIHx8IG51bGxcclxuICAgIH0pO1xyXG59XHJcbmV4cG9ydHMuZGVmYXVsdCA9IGNoZWNrU2Vzc2lvbjtcclxuLy8jIHNvdXJjZU1hcHBpbmdVUkw9ZGF0YTphcHBsaWNhdGlvbi9qc29uO2Jhc2U2NCxleUoyWlhKemFXOXVJam96TENKbWFXeGxJam9pYzJWemMybHZiazFoYm1GblpYSXVhbk1pTENKemIzVnlZMlZTYjI5MElqb2lJaXdpYzI5MWNtTmxjeUk2V3lJdUxpOHVMaTl6Y21NdmJXOWtkV3hsTDNObGMzTnBiMjVOWVc1aFoyVnlMblJ6SWwwc0ltNWhiV1Z6SWpwYlhTd2liV0Z3Y0dsdVozTWlPaUk3TzBGQlFVRXNjVU5CUVN0Q08wRkJReTlDTERCRFFVRnZRenRCUVVOd1F5d3dRMEZCYjBNN1FVRkRjRU1zYlVSQlFUWkRPMEZCUXpkRExDdERRVUY1UXp0QlFVTjZReXgxUkVGQmFVUTdRVUZGYWtRc1UwRkJVeXhaUVVGWkxFTkJRVU1zVVVGQmEwSXNSVUZCUlN4SFFVRlRPMGxCUXk5RExFbEJRVWtzWjBKQlFVMHNRMEZCUXl4cFFrRkJhVUlzUlVGQlJUdFJRVU14UWl4alFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExITkNRVUZ6UWl4RlFVRkZPMWxCUXpsQ0xGbEJRVmtzUTBGQlF5eFJRVUZSTEVWQlFVVXNSMEZCUnl4RFFVRkRMRU5CUVVFN1VVRkRMMElzUTBGQlF5eERRVUZETEVOQlFVRTdTMEZEVER0VFFVRk5MRWxCUVVrc1EwRkJReXhuUWtGQlRTeERRVUZETEdOQlFXTXNTVUZCU1N4blFrRkJUU3hEUVVGRExFOUJRVThzUlVGQlJUdFJRVVZxUkN4blFrRkJUU3hEUVVGRExHbENRVUZwUWl4SFFVRkhMRWxCUVVrc1EwRkJRenRSUVVOb1F5eEhRVUZITEVOQlFVTXNTMEZCU3l4RlFVRkZMRU5CUVVNN1VVRkRXaXd3UWtGQlowSXNRMEZCUXl4TFFVRkxMRU5CUVVNc1IwRkJSeXhGUVVGRkxHTkJRV01zUTBGQlF5eERRVUZETzFGQlF6VkRMRVZCUVVVc1EwRkJReXhaUVVGWkxFTkJRVU03V1VGRFdpeFBRVUZQTEVWQlFVVTdaMEpCUlV3c1owSkJRVTBzUTBGQlF5eGpRVUZqTEVkQlFVY3NTVUZCU1N4RFFVRkRPMWxCUTJwRExFTkJRVU03V1VGRFJDeEpRVUZKTEVWQlFVVTdaMEpCUlVZc1owSkJRVTBzUTBGQlF5eFBRVUZQTEVkQlFVY3NSVUZCUlN4RFFVRkRPMWxCUTNoQ0xFTkJRVU03V1VGRFJDeFJRVUZSTEVWQlFVVTdaMEpCUTA0c1owSkJRVTBzUTBGQlF5eHBRa0ZCYVVJc1IwRkJSeXhMUVVGTExFTkJRVU03WjBKQlEycERMRWRCUVVjc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF6dG5Ra0ZEV2l3d1FrRkJaMElzUTBGQlF5eEhRVUZITEVOQlFVTXNSMEZCUnl4RlFVRkZMR05CUVdNc1EwRkJReXhEUVVGRE8yZENRVU14UXl4UFFVRlBMRU5CUVVNc1VVRkJVU3hGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETzJkQ1FVTjJRaXhqUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEhOQ1FVRnpRaXhEUVVGRExFTkJRVU03V1VGRGRFTXNRMEZCUXp0VFFVTktMRU5CUVVNc1EwRkJRVHRMUVVOTU8xTkJRVTA3VVVGRlNDeFBRVUZQTEVOQlFVTXNVVUZCVVN4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRE8wdEJRekZDTzBGQlEwd3NRMEZCUXp0QlFVVkVMRk5CUVZNc1QwRkJUeXhEUVVGRExGRkJRV3RDTEVWQlFVVXNSMEZCVXp0SlFVTXhReXhKUVVGSkxFZEJRVWNzUTBGQlF5eFBRVUZQTEVWQlFVVTdVVUZGWWl4UFFVRlBMRkZCUVZFc1MwRkJTeXhWUVVGVkxFbEJRVWtzVVVGQlVTeEZRVUZGTEVOQlFVTTdTMEZEYUVRN1UwRkJUU3hKUVVGSkxHZENRVUZOTEVOQlFVTXNUMEZCVHl4RlFVRkZPMUZCUlhaQ0xFbEJRVWtzWjBKQlFVMHNRMEZCUXl4cFFrRkJhVUlzU1VGQlNTeEpRVUZKTEVsQlFVa3NSVUZCUlN4RFFVRkRMRTlCUVU4c1JVRkJSU3hIUVVGSExHZENRVUZOTEVOQlFVTXNZVUZCWVN4RlFVRkZPMWxCUlhwRkxHZENRVUZOTEVOQlFVTXNUMEZCVHl4SFFVRkhMRVZCUVVVc1EwRkJRenRaUVVOd1FpeFBRVUZQTEVOQlFVTXNVVUZCVVN4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRE8xTkJRekZDTzJGQlFVMDdXVUZEU0N4UFFVRlBMRkZCUVZFc1MwRkJTeXhWUVVGVkxFbEJRVWtzVVVGQlVTeEZRVUZGTEVOQlFVTTdVMEZEYUVRN1MwRkRTanRUUVVGTkxFbEJRVWtzWjBKQlFVMHNRMEZCUXl4UlFVRlJMRVZCUVVVN1VVRkZlRUlzWTBGQlNTeERRVUZETEVsQlFVa3NRMEZCUXl4cFFrRkJhVUlzUlVGQlJUdFpRVU42UWl4UFFVRlBMRU5CUVVNc1VVRkJVU3hGUVVGRkxFZEJRVWNzUTBGQlF5eERRVUZETzFGQlF6TkNMRU5CUVVNc1EwRkJReXhEUVVGQk8wdEJRMHc3VTBGQlRUdFJRVVZJTEdkQ1FVRk5MRU5CUVVNc1VVRkJVU3hIUVVGSExFbEJRVWtzUTBGQlF6dFJRVU4yUWl4SFFVRkhMRU5CUVVNc1MwRkJTeXhGUVVGRkxFTkJRVU03VVVGRFdpd3dRa0ZCWjBJc1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eEZRVUZGTEU5QlFVOHNRMEZCUXl4RFFVRkRPMUZCUTNKRExFOUJRVThzUTBGQlF5eEhRVUZITEVOQlFVTXNWVUZCVlN4RFFVRkRMRU5CUVVNN1VVRkRlRUlzUlVGQlJTeERRVUZETEV0QlFVc3NRMEZCUXp0WlFVTk1MRkZCUVZFc1JVRkJSVHRuUWtGRFRpeEhRVUZITEVOQlFVTXNTMEZCU3l4RlFVRkZMRU5CUVVNN1owSkJRMW9zTUVKQlFXZENMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWNzUlVGQlJTeFBRVUZQTEVOQlFVTXNRMEZCUXp0blFrRkRia01zVDBGQlR5eEhRVUZITEVOQlFVTXNVVUZCVVN4TFFVRkxMRlZCUVZVc1NVRkJTU3hIUVVGSExFTkJRVU1zUzBGQlN5eExRVUZMTEVOQlFVTXNTVUZCU1N4SFFVRkhMRU5CUVVNc1VVRkJVU3hGUVVGRkxFTkJRVU03V1VGRE5VVXNRMEZCUXp0WlFVTkVMRTlCUVU4c1JVRkJSU3hWUVVGVkxFZEJRVWM3WjBKQlEyeENMRWxCUVVrc1IwRkJSeXhEUVVGRExFbEJRVWtzUlVGQlJUdHZRa0ZEVml4WlFVRlpMRU5CUVVNc1IwRkJSeXhGUVVGRkxFZEJRVWNzUTBGQlF5eEpRVUZKTEVWQlFVVXNVVUZCVVN4RFFVRkRMRU5CUVVFN2FVSkJRM2hETzNGQ1FVRk5PMjlDUVVOSUxITkNRVUZaTEVOQlFVTXNSMEZCUnl4RlFVRkZMRWRCUVVjc1EwRkJReXhEUVVGRE8yOUNRVU4yUWl4UFFVRlBMRU5CUVVNc1MwRkJTeXhEUVVGRExFZEJRVWNzUTBGQlF5eERRVUZETzI5Q1FVVnVRaXhuUWtGQlRTeERRVUZETEZGQlFWRXNSMEZCUnl4TFFVRkxMRU5CUVVNN2IwSkJRM2hDTEdOQlFVa3NRMEZCUXl4SlFVRkpMRU5CUVVNc2FVSkJRV2xDTEVOQlFVTXNRMEZCUXp0cFFrRkRhRU03V1VGRFRDeERRVUZETzFsQlEwUXNTVUZCU1N4RlFVRkZMRlZCUVZVc1IwRkJSenRuUWtGRFppeHpRa0ZCV1N4RFFVRkRMRWRCUVVjc1JVRkJSU3hIUVVGSExFTkJRVU1zUTBGQlF6dG5Ra0ZEZGtJc1QwRkJUeXhEUVVGRExFdEJRVXNzUTBGQlF5eEhRVUZITEVOQlFVTXNRMEZCUXp0blFrRkZia0lzWjBKQlFVMHNRMEZCUXl4UlFVRlJMRWRCUVVjc1MwRkJTeXhEUVVGRE8yZENRVU40UWl4alFVRkpMRU5CUVVNc1NVRkJTU3hEUVVGRExHbENRVUZwUWl4RFFVRkRMRU5CUVVNN1dVRkRha01zUTBGQlF6dFRRVU5LTEVOQlFVTXNRMEZCUVR0TFFVTk1PMEZCUTB3c1EwRkJRenRCUVVWRUxGTkJRVk1zV1VGQldTeERRVUZETEVkQlFWTXNSVUZCUlN4SlFVRlZMRVZCUVVVc1VVRkJhMEk3U1VGRE0wUXNTVUZCU1N4SlFVRkpMRU5CUVVNN1NVRkZWQ3hKUVVGSkxFOUJRVThzWjBKQlFVMHNRMEZCUXl4aFFVRmhMRU5CUVVNc1NVRkJTU3hMUVVGTExGVkJRVlVzUlVGQlJUdFJRVU5xUkN4SlFVRkpMRWRCUVVjc1owSkJRVTBzUTBGQlF5eGhRVUZoTEVOQlFVTXNTVUZCU1N4RlFVRkZMRU5CUVVNN1MwRkRkRU03VTBGQlRUdFJRVU5JTEVsQlFVa3NSMEZCUnl4blFrRkJUU3hEUVVGRExHRkJRV0VzUTBGQlF5eEpRVUZKTEVsQlFVa3NSVUZCUlN4RFFVRkRPMHRCUXpGRE8wbEJRMFFzU1VGQlNTeERRVUZETEdkQ1FVRk5MRU5CUVVNc1lVRkJZU3hEUVVGRExGRkJRVk1zUTBGQlF5eEhRVUZITEVsQlFVa3NRMEZCUXp0SlFVVTFReXhIUVVGSExFTkJRVU1zUzBGQlN5eEZRVUZGTEVOQlFVTTdTVUZEV2l4M1FrRkJZeXhEUVVGRExFOUJRVThzUTBGQlF6dFJRVU51UWl4SFFVRkhMRVZCUVVVc1owSkJRVTBzUTBGQlF5eGhRVUZoTEVOQlFVTXNSMEZCUnp0UlFVTTNRaXhKUVVGSkxFVkJRVVVzU1VGQlNUdFJRVU5XTEUxQlFVMHNSVUZCUlN4blFrRkJUU3hEUVVGRExHRkJRV0VzUTBGQlF5eE5RVUZOTEVsQlFVa3NTMEZCU3p0UlFVTTFReXhQUVVGUExFVkJRVVVzU1VGQlNUdFJRVU5pTEUxQlFVMHNSVUZCUlN4blFrRkJUU3hEUVVGRExHRkJRV0VzUTBGQlF5eE5RVUZOTEVsQlFVa3NaMEpCUVUwc1EwRkJReXhoUVVGaExFTkJRVU1zUjBGQlJ6dFJRVU12UkN4UFFVRlBMRVZCUVVVc1ZVRkJWU3hEUVVGUE8xbEJRM1JDTEdkQ1FVRk5MRU5CUVVNc1QwRkJUeXhIUVVGSExFTkJRVU1zUTBGQlF6dFpRVU51UWl4blFrRkJUU3hEUVVGRExHTkJRV01zUjBGQlJ5eEpRVUZKTEVOQlFVTTdXVUZGTjBJc1NVRkJTU3huUWtGQlRTeERRVUZETEdsQ1FVRnBRaXhGUVVGRk8yZENRVU14UWl4blFrRkJUU3hEUVVGRExHRkJRV0VzUjBGQlJ5eEpRVUZKTEVsQlFVa3NSVUZCUlN4RFFVRkRMRTlCUVU4c1JVRkJSU3hIUVVGSExHZENRVUZOTEVOQlFVTXNhVUpCUVdsQ0xFTkJRVU03WjBKQlEzWkZMRVZCUVVVc1EwRkJReXhWUVVGVkxFTkJRVU03YjBKQlExWXNSMEZCUnl4RlFVRkZMR2RDUVVGTkxFTkJRVU1zWjBKQlFXZENPMjlDUVVNMVFpeEpRVUZKTEVWQlFVVXNUVUZCVFN4RFFVRkRMR2RDUVVGTkxFTkJRVU1zWVVGQllTeERRVUZETzJsQ1FVTnlReXhEUVVGRExFTkJRVUU3WVVGRFREdFpRVU5FTEU5QlFVOHNVVUZCVVN4TFFVRkxMRlZCUVZVc1NVRkJTU3hSUVVGUkxFVkJRVVVzUTBGQlF6dFpRVU0zUXl4RlFVRkZMRU5CUVVNc1ZVRkJWU3hEUVVGRE8yZENRVU5XTEVkQlFVY3NSVUZCUlN4blFrRkJUU3hEUVVGRExGZEJRVms3WjBKQlEzaENMRWxCUVVrc1JVRkJSU3huUWtGQlRTeERRVUZETEU5QlFVODdZVUZEZGtJc1EwRkJReXhEUVVGQk8xRkJRMDRzUTBGQlF6dFJRVU5FTEZGQlFWRXNSVUZCUlR0WlFVTk9MRWRCUVVjc1EwRkJReXhMUVVGTExFVkJRVVVzUTBGQlF6dFpRVU5hTEU5QlFVOHNSMEZCUnl4RFFVRkRMRkZCUVZFc1MwRkJTeXhWUVVGVkxFbEJRVWtzUjBGQlJ5eERRVUZETEV0QlFVc3NTMEZCU3l4RFFVRkRMRWxCUVVrc1IwRkJSeXhEUVVGRExGRkJRVkVzUlVGQlJTeERRVUZETzFsQlEzaEZMR2RDUVVGTkxFTkJRVU1zVVVGQlVTeEhRVUZITEV0QlFVc3NRMEZCUXp0WlFVTjRRaXhqUVVGSkxFTkJRVU1zU1VGQlNTeERRVUZETEdsQ1FVRnBRaXhEUVVGRExFTkJRVU03VVVGRGFrTXNRMEZCUXp0UlFVTkVMRWxCUVVrc1JVRkJSU3huUWtGQlRTeERRVUZETEdGQlFXRXNRMEZCUXl4SlFVRkpMRWxCUVVrc1NVRkJTVHRMUVVNeFF5eERRVUZETEVOQlFVRTdRVUZEVGl4RFFVRkRPMEZCUlVRc2EwSkJRV1VzV1VGQldTeERRVUZESWl3aWMyOTFjbU5sYzBOdmJuUmxiblFpT2xzaWFXMXdiM0owSUdac2IzY2dabkp2YlNBbkxpNHZkWFJwYkM5bWJHOTNKMXh5WEc1cGJYQnZjblFnYzNSaGRIVnpJR1p5YjIwZ0p5NHVMM04wYjNKbEwzTjBZWFIxY3lkY2NseHVhVzF3YjNKMElHTnZibVpwWnlCbWNtOXRJQ2N1TGk5emRHOXlaUzlqYjI1bWFXY25YSEpjYm1sdGNHOXlkQ0J5WlhGMVpYTjBTR0Z1Wkd4bGNpQm1jbTl0SUNjdUwzSmxjWFZsYzNSSVlXNWtiR1Z5SjF4eVhHNXBiWEJ2Y25RZ1pYSnliM0pJWVc1a2JHVnlJR1p5YjIwZ0p5NHZaWEp5YjNKSVlXNWtiR1Z5SjF4eVhHNXBiWEJ2Y25RZ1pIVnlZWFJwYjI1U1pYQnZjblJsY2lCbWNtOXRJQ2N1TDJSMWNtRjBhVzl1VW1Wd2IzSjBaWEluWEhKY2JseHlYRzVtZFc1amRHbHZiaUJqYUdWamExTmxjM05wYjI0b1kyRnNiR0poWTJzNklFWjFibU4wYVc5dUxDQnZZbW82SUZSUFJFOHBJSHRjY2x4dUlDQWdJR2xtSUNoemRHRjBkWE11YVhORGFHVmphMmx1WjFObGMzTnBiMjRwSUh0Y2NseHVJQ0FnSUNBZ0lDQm1iRzkzTG5kaGFYUW9KMk5vWldOclUyVnpjMmx2YmtacGJtbHphR1ZrSnl3Z0tDa2dQVDRnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JqYUdWamExTmxjM05wYjI0b1kyRnNiR0poWTJzc0lHOWlhaWxjY2x4dUlDQWdJQ0FnSUNCOUtWeHlYRzRnSUNBZ2ZTQmxiSE5sSUdsbUlDZ2hjM1JoZEhWekxuTmxjM05wYjI1SmMwWnlaWE5vSUNZbUlITjBZWFIxY3k1elpYTnphVzl1S1NCN1hISmNiaUFnSUNBZ0lDQWdMeThnNWFhQzVwNmM1cHlzNVp5dzVweUo1NW03NWIyVjVvQ0I3N3lNNUwyRzZMK1k1cktoNXFPQTZhcU02TCtIYzJWemMybHZibDlyWlhubW1LL2xrS2JtbklubWxZanZ2SXpsaUpucG5JRG9wb0htbzREcHFvemt1SURtcktGY2NseHVJQ0FnSUNBZ0lDQnpkR0YwZFhNdWFYTkRhR1ZqYTJsdVoxTmxjM05wYjI0Z1BTQjBjblZsTzF4eVhHNGdJQ0FnSUNBZ0lHOWlhaTVqYjNWdWRDc3JPMXh5WEc0Z0lDQWdJQ0FnSUdSMWNtRjBhVzl1VW1Wd2IzSjBaWEl1YzNSaGNuUW9iMkpxTENBblkyaGxZMnRUWlhOemFXOXVKeWs3WEhKY2JpQWdJQ0FnSUNBZ2QzZ3VZMmhsWTJ0VFpYTnphVzl1S0h0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnYzNWalkyVnpjem9nWm5WdVkzUnBiMjRnS0NrZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdMeThnNTVtNzViMlY1b0NCNXB5SjVwV0k3N3lNNUxpVTVaeW81cHlzNTVTZjVaRzk1WkdvNXB5ZjVZYUY1cGVnNmFHNzVZYU41cU9BNmFxTTVMcUdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0J6ZEdGMGRYTXVjMlZ6YzJsdmJrbHpSbkpsYzJnZ1BTQjBjblZsTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0I5TEZ4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0JtWVdsc09pQm1kVzVqZEdsdmJpQW9LU0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBdkx5RG5tYnZsdlpYbWdJSG92NGZtbko5Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lITjBZWFIxY3k1elpYTnphVzl1SUQwZ0p5YzdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lIMHNYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lHTnZiWEJzWlhSbE9pQm1kVzVqZEdsdmJpQW9LU0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCemRHRjBkWE11YVhORGFHVmphMmx1WjFObGMzTnBiMjRnUFNCbVlXeHpaVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUc5aWFpNWpiM1Z1ZEMwdE8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdaSFZ5WVhScGIyNVNaWEJ2Y25SbGNpNWxibVFvYjJKcUxDQW5ZMmhsWTJ0VFpYTnphVzl1SnlrN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmtiMHh2WjJsdUtHTmhiR3hpWVdOckxDQnZZbW9wTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1pteHZkeTVsYldsMEtDZGphR1ZqYTFObGMzTnBiMjVHYVc1cGMyaGxaQ2NwTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0I5WEhKY2JpQWdJQ0FnSUNBZ2ZTbGNjbHh1SUNBZ0lIMGdaV3h6WlNCN1hISmNiaUFnSUNBZ0lDQWdMeThnNWJleTU3dVA1cU9BNmFxTTZMK0g1THFHWEhKY2JpQWdJQ0FnSUNBZ1pHOU1iMmRwYmloallXeHNZbUZqYXl3Z2IySnFLVHRjY2x4dUlDQWdJSDFjY2x4dWZWeHlYRzVjY2x4dVpuVnVZM1JwYjI0Z1pHOU1iMmRwYmloallXeHNZbUZqYXpvZ1JuVnVZM1JwYjI0c0lHOWlham9nVkU5RVR5a2dlMXh5WEc0Z0lDQWdhV1lnS0c5aWFpNXBjMHh2WjJsdUtTQjdYSEpjYmlBZ0lDQWdJQ0FnTHk4ZzU1bTc1YjJWNW82bDVZK2o3N3lNNTV1MDVvNmw1cFMrNkwrSFhISmNiaUFnSUNBZ0lDQWdkSGx3Wlc5bUlHTmhiR3hpWVdOcklEMDlQU0JjSW1aMWJtTjBhVzl1WENJZ0ppWWdZMkZzYkdKaFkyc29LVHRjY2x4dUlDQWdJSDBnWld4elpTQnBaaUFvYzNSaGRIVnpMbk5sYzNOcGIyNHBJSHRjY2x4dUlDQWdJQ0FnSUNBdkx5RG52SlBsclpqa3VLM21uSWx6WlhOemFXOXVYSEpjYmlBZ0lDQWdJQ0FnYVdZZ0tITjBZWFIxY3k1elpYTnphVzl1Ulhod2FYSmxWR2x0WlNBbUppQnVaWGNnUkdGMFpTZ3BMbWRsZEZScGJXVW9LU0ErSUhOMFlYUjFjeTV6WlhOemFXOXVSWGh3YVhKbEtTQjdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDOHZJT1dtZ3VhZW5PYWNpZWl1dnVlOXJ1YWNyT1djc0hObGMzTnBiMjdudkpQbHJaam1sN2JwbDdUdnZJemt1SlRudkpQbHJaam1sN2JwbDdUbHQ3TGxpTEJjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdjM1JoZEhWekxuTmxjM05wYjI0Z1BTQW5KenRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdaRzlNYjJkcGJpaGpZV3hzWW1GamF5d2diMkpxS1R0Y2NseHVJQ0FnSUNBZ0lDQjlJR1ZzYzJVZ2UxeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCMGVYQmxiMllnWTJGc2JHSmhZMnNnUFQwOUlGd2lablZ1WTNScGIyNWNJaUFtSmlCallXeHNZbUZqYXlncE8xeHlYRzRnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJSDBnWld4elpTQnBaaUFvYzNSaGRIVnpMbXh2WjJsdWFXNW5LU0I3WEhKY2JpQWdJQ0FnSUNBZ0x5OGc1cTJqNVp5bzU1bTc1YjJWNUxpdDc3eU02SyszNXJHQzZMMnU2SytpNTZpTjVaQ083N3lNNllHLzVZV042WWVONWFTTjZMQ0Q1NVNvNTVtNzViMlY1bzZsNVkralhISmNiaUFnSUNBZ0lDQWdabXh2ZHk1M1lXbDBLQ2RrYjB4dloybHVSbWx1YVhOb1pXUW5MQ0JtZFc1amRHbHZiaUFvS1NCN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUdSdlRHOW5hVzRvWTJGc2JHSmhZMnNzSUc5aWFpazdYSEpjYmlBZ0lDQWdJQ0FnZlNsY2NseHVJQ0FnSUgwZ1pXeHpaU0I3WEhKY2JpQWdJQ0FnSUNBZ0x5OGc1N3lUNWEyWTVMaXQ1cGVnYzJWemMybHZibHh5WEc0Z0lDQWdJQ0FnSUhOMFlYUjFjeTVzYjJkcGJtbHVaeUE5SUhSeWRXVTdYSEpjYmlBZ0lDQWdJQ0FnYjJKcUxtTnZkVzUwS3lzN1hISmNiaUFnSUNBZ0lDQWdaSFZ5WVhScGIyNVNaWEJ2Y25SbGNpNXpkR0Z5ZENodlltb3NJQ2RzYjJkcGJpY3BPMXh5WEc0Z0lDQWdJQ0FnSUdOdmJuTnZiR1V1Ykc5bktDZDNlQzVzYjJkcGJpY3BPMXh5WEc0Z0lDQWdJQ0FnSUhkNExteHZaMmx1S0h0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnWTI5dGNHeGxkR1U2SUdaMWJtTjBhVzl1SUNncElIdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJRzlpYWk1amIzVnVkQzB0TzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1pIVnlZWFJwYjI1U1pYQnZjblJsY2k1bGJtUW9iMkpxTENBbmJHOW5hVzRuS1R0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lIUjVjR1Z2WmlCdlltb3VZMjl0Y0d4bGRHVWdQVDA5SUZ3aVpuVnVZM1JwYjI1Y0lpQW1KaUJ2WW1vdVkyOTFiblFnUFQwOUlEQWdKaVlnYjJKcUxtTnZiWEJzWlhSbEtDazdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lIMHNYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lITjFZMk5sYzNNNklHWjFibU4wYVc5dUlDaHlaWE1wSUh0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lHbG1JQ2h5WlhNdVkyOWtaU2tnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJR052WkdVeVUyVnpjMmx2Ymlodlltb3NJSEpsY3k1amIyUmxMQ0JqWVd4c1ltRmpheWxjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUgwZ1pXeHpaU0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdaWEp5YjNKSVlXNWtiR1Z5S0c5aWFpd2djbVZ6S1R0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0JqYjI1emIyeGxMbVZ5Y205eUtISmxjeWs3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdMeThnNTVtNzViMlY1YVN4NkxTbDc3eU02S2VqNlptazZaU0I3N3lNNlppeTVxMmk1cTI3NlpTQlhISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnYzNSaGRIVnpMbXh2WjJsdWFXNW5JRDBnWm1Gc2MyVTdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1pteHZkeTVsYldsMEtDZGtiMHh2WjJsdVJtbHVhWE5vWldRbktUdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdmU3hjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdabUZwYkRvZ1puVnVZM1JwYjI0Z0tISmxjeWtnZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1pYSnliM0pJWVc1a2JHVnlLRzlpYWl3Z2NtVnpLVHRjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUdOdmJuTnZiR1V1WlhKeWIzSW9jbVZ6S1R0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDOHZJT2VadStXOWxlV2tzZWkwcGUrOGpPaW5vK21acE9tVWdlKzhqT21Zc3VhdG91YXR1K21VZ1Z4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2MzUmhkSFZ6TG14dloybHVhVzVuSUQwZ1ptRnNjMlU3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCbWJHOTNMbVZ0YVhRb0oyUnZURzluYVc1R2FXNXBjMmhsWkNjcE8xeHlYRzRnSUNBZ0lDQWdJQ0FnSUNCOVhISmNiaUFnSUNBZ0lDQWdmU2xjY2x4dUlDQWdJSDFjY2x4dWZWeHlYRzVjY2x4dVpuVnVZM1JwYjI0Z1kyOWtaVEpUWlhOemFXOXVLRzlpYWpvZ1ZFOUVUeXdnWTI5a1pUb2dWRTlFVHl3Z1kyRnNiR0poWTJzNklFWjFibU4wYVc5dUtTQjdYSEpjYmlBZ0lDQnNaWFFnWkdGMFlUdGNjbHh1SUNBZ0lDOHZJR052WkdWVWIxTmxjM05wYjI0dVpHRjBZZWFVcithTWdlV0h2ZWFWc0Z4eVhHNGdJQ0FnYVdZZ0tIUjVjR1Z2WmlCamIyNW1hV2N1WTI5a1pWUnZVMlZ6YzJsdmJpNWtZWFJoSUQwOVBTQmNJbVoxYm1OMGFXOXVYQ0lwSUh0Y2NseHVJQ0FnSUNBZ0lDQmtZWFJoSUQwZ1kyOXVabWxuTG1OdlpHVlViMU5sYzNOcGIyNHVaR0YwWVNncE8xeHlYRzRnSUNBZ2ZTQmxiSE5sSUh0Y2NseHVJQ0FnSUNBZ0lDQmtZWFJoSUQwZ1kyOXVabWxuTG1OdlpHVlViMU5sYzNOcGIyNHVaR0YwWVNCOGZDQjdmVHRjY2x4dUlDQWdJSDFjY2x4dUlDQWdJR1JoZEdGYlkyOXVabWxuTG1OdlpHVlViMU5sYzNOcGIyNHVZMjlrWlU1aGJXVWhYU0E5SUdOdlpHVTdYSEpjYmx4eVhHNGdJQ0FnYjJKcUxtTnZkVzUwS3lzN1hISmNiaUFnSUNCeVpYRjFaWE4wU0dGdVpHeGxjaTV5WlhGMVpYTjBLSHRjY2x4dUlDQWdJQ0FnSUNCMWNtdzZJR052Ym1acFp5NWpiMlJsVkc5VFpYTnphVzl1TG5WeWJDeGNjbHh1SUNBZ0lDQWdJQ0JrWVhSaE9pQmtZWFJoTEZ4eVhHNGdJQ0FnSUNBZ0lHMWxkR2h2WkRvZ1kyOXVabWxuTG1OdlpHVlViMU5sYzNOcGIyNHViV1YwYUc5a0lIeDhJQ2RIUlZRbkxGeHlYRzRnSUNBZ0lDQWdJR2x6VEc5bmFXNDZJSFJ5ZFdVc1hISmNiaUFnSUNBZ0lDQWdjbVZ3YjNKME9pQmpiMjVtYVdjdVkyOWtaVlJ2VTJWemMybHZiaTV5WlhCdmNuUWdmSHdnWTI5dVptbG5MbU52WkdWVWIxTmxjM05wYjI0dWRYSnNMRnh5WEc0Z0lDQWdJQ0FnSUhOMVkyTmxjM002SUdaMWJtTjBhVzl1SUNoek9pQlVUMFJQS1NCN1hISmNiaUFnSUNBZ0lDQWdJQ0FnSUhOMFlYUjFjeTV6WlhOemFXOXVJRDBnY3p0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnYzNSaGRIVnpMbk5sYzNOcGIyNUpjMFp5WlhOb0lEMGdkSEoxWlR0Y2NseHVJQ0FnSUNBZ0lDQWdJQ0FnTHk4ZzVhYUM1cDZjNXB5SjZLNis1NzJ1NXB5czVaeXdjMlZ6YzJsdmJ1aS9oK2FjbithWHR1bVh0Rnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQnBaaUFvYzNSaGRIVnpMbk5sYzNOcGIyNUZlSEJwY21WVWFXMWxLU0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNCemRHRjBkWE11YzJWemMybHZia1Y0Y0dseVpTQTlJRzVsZHlCRVlYUmxLQ2t1WjJWMFZHbHRaU2dwSUNzZ2MzUmhkSFZ6TG5ObGMzTnBiMjVGZUhCcGNtVlVhVzFsTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2QzZ3VjMlYwVTNSdmNtRm5aU2g3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQWdhMlY1T2lCamIyNW1hV2N1YzJWemMybHZia1Y0Y0dseVpVdGxlU3hjY2x4dUlDQWdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ0lDQmtZWFJoT2lCVGRISnBibWNvYzNSaGRIVnpMbk5sYzNOcGIyNUZlSEJwY21VcFhISmNiaUFnSUNBZ0lDQWdJQ0FnSUNBZ0lDQjlLVnh5WEc0Z0lDQWdJQ0FnSUNBZ0lDQjlYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lIUjVjR1Z2WmlCallXeHNZbUZqYXlBOVBUMGdYQ0ptZFc1amRHbHZibHdpSUNZbUlHTmhiR3hpWVdOcktDazdYSEpjYmlBZ0lDQWdJQ0FnSUNBZ0lIZDRMbk5sZEZOMGIzSmhaMlVvZTF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ2EyVjVPaUJqYjI1bWFXY3VjMlZ6YzJsdmJrNWhiV1VoTEZ4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0FnSUNBZ1pHRjBZVG9nYzNSaGRIVnpMbk5sYzNOcGIyNWNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2ZTbGNjbHh1SUNBZ0lDQWdJQ0I5TEZ4eVhHNGdJQ0FnSUNBZ0lHTnZiWEJzWlhSbE9pQm1kVzVqZEdsdmJpQW9LU0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJRzlpYWk1amIzVnVkQzB0TzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0IwZVhCbGIyWWdiMkpxTG1OdmJYQnNaWFJsSUQwOVBTQmNJbVoxYm1OMGFXOXVYQ0lnSmlZZ2IySnFMbU52ZFc1MElEMDlQU0F3SUNZbUlHOWlhaTVqYjIxd2JHVjBaU2dwTzF4eVhHNGdJQ0FnSUNBZ0lDQWdJQ0J6ZEdGMGRYTXViRzluYVc1cGJtY2dQU0JtWVd4elpUdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ1pteHZkeTVsYldsMEtDZGtiMHh2WjJsdVJtbHVhWE5vWldRbktUdGNjbHh1SUNBZ0lDQWdJQ0I5TEZ4eVhHNGdJQ0FnSUNBZ0lHWmhhV3c2SUdOdmJtWnBaeTVqYjJSbFZHOVRaWE56YVc5dUxtWmhhV3dnZkh3Z2JuVnNiRnh5WEc0Z0lDQWdmU2xjY2x4dWZWeHlYRzVjY2x4dVpYaHdiM0owSUdSbFptRjFiSFFnWTJobFkydFRaWE56YVc5dU8xeHlYRzRpWFgwPSIsIlwidXNlIHN0cmljdFwiO1xyXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgXCJfX2VzTW9kdWxlXCIsIHsgdmFsdWU6IHRydWUgfSk7XHJcbnZhciBkZWZhdWx0Q29uZmlnID0ge1xyXG4gICAgc2Vzc2lvbk5hbWU6IFwic2Vzc2lvblwiLFxyXG4gICAgbG9naW5UcmlnZ2VyOiBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfSxcclxuICAgIGNvZGVUb1Nlc3Npb246IHt9LFxyXG4gICAgc3VjY2Vzc1RyaWdnZXI6IGZ1bmN0aW9uICgpIHtcclxuICAgICAgICByZXR1cm4gdHJ1ZTtcclxuICAgIH0sXHJcbiAgICB1cmxQZXJmaXg6IFwiXCIsXHJcbiAgICBzdWNjZXNzRGF0YTogZnVuY3Rpb24gKHJlcykge1xyXG4gICAgICAgIHJldHVybiByZXM7XHJcbiAgICB9LFxyXG4gICAgZG9Ob3RDaGVja1Nlc3Npb246IGZhbHNlLFxyXG4gICAgZXJyb3JUaXRsZTogXCLmk43kvZzlpLHotKVcIixcclxuICAgIGVycm9yQ29udGVudDogZnVuY3Rpb24gKHJlcykge1xyXG4gICAgICAgIHJldHVybiByZXM7XHJcbiAgICB9LFxyXG4gICAgcmVMb2dpbkxpbWl0OiAzLFxyXG4gICAgZXJyb3JDYWxsYmFjazogbnVsbCxcclxuICAgIHJlcG9ydENHSTogZmFsc2UsXHJcbiAgICBtb2NrSnNvbjogZmFsc2UsXHJcbiAgICBnbG9iYWxEYXRhOiBmYWxzZSxcclxuICAgIHNlc3Npb25FeHBpcmVLZXk6IFwic2Vzc2lvbkV4cGlyZUtleVwiXHJcbn07XHJcbmV4cG9ydHMuZGVmYXVsdCA9IGRlZmF1bHRDb25maWc7XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaVkyOXVabWxuTG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lMaTR2TGk0dmMzSmpMM04wYjNKbEwyTnZibVpwWnk1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU96dEJRVU5CTEVsQlFVMHNZVUZCWVN4SFFVRm5RanRKUVVNdlFpeFhRVUZYTEVWQlFVVXNVMEZCVXp0SlFVTjBRaXhaUVVGWk8xRkJRMUlzVDBGQlR5eExRVUZMTEVOQlFVRTdTVUZEYUVJc1EwRkJRenRKUVVORUxHRkJRV0VzUlVGQlJTeEZRVUZGTzBsQlEycENMR05CUVdNN1VVRkRWaXhQUVVGUExFbEJRVWtzUTBGQlFUdEpRVU5tTEVOQlFVTTdTVUZEUkN4VFFVRlRMRVZCUVVVc1JVRkJSVHRKUVVOaUxGZEJRVmNzV1VGQlF5eEhRVUZSTzFGQlEyaENMRTlCUVU4c1IwRkJSeXhEUVVGQk8wbEJRMlFzUTBGQlF6dEpRVU5FTEdsQ1FVRnBRaXhGUVVGRkxFdEJRVXM3U1VGRGVFSXNWVUZCVlN4RlFVRkZMRTFCUVUwN1NVRkRiRUlzV1VGQldTeFpRVUZETEVkQlFWRTdVVUZEYWtJc1QwRkJUeXhIUVVGSExFTkJRVUU3U1VGRFpDeERRVUZETzBsQlEwUXNXVUZCV1N4RlFVRkZMRU5CUVVNN1NVRkRaaXhoUVVGaExFVkJRVVVzU1VGQlNUdEpRVU51UWl4VFFVRlRMRVZCUVVVc1MwRkJTenRKUVVOb1FpeFJRVUZSTEVWQlFVVXNTMEZCU3p0SlFVTm1MRlZCUVZVc1JVRkJSU3hMUVVGTE8wbEJSV3BDTEdkQ1FVRm5RaXhGUVVGRkxHdENRVUZyUWp0RFFVTjJReXhEUVVGQk8wRkJSVVFzYTBKQlFXVXNZVUZCWVN4RFFVRkRJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYVcxd2IzSjBJSHNnU1VsdWFYUlBjSFJwYjI0Z2ZTQm1jbTl0SUNjdUxpOWhjR2t2YVc1cGRDYzdYSEpjYm1OdmJuTjBJR1JsWm1GMWJIUkRiMjVtYVdjNklFbEpibWwwVDNCMGFXOXVJRDBnZTF4eVhHNGdJQ0FnYzJWemMybHZiazVoYldVNklGd2ljMlZ6YzJsdmJsd2lMRnh5WEc0Z0lDQWdiRzluYVc1VWNtbG5aMlZ5S0NrZ2UxeHlYRzRnSUNBZ0lDQWdJSEpsZEhWeWJpQm1ZV3h6WlZ4eVhHNGdJQ0FnZlN4Y2NseHVJQ0FnSUdOdlpHVlViMU5sYzNOcGIyNDZJSHQ5TEZ4eVhHNGdJQ0FnYzNWalkyVnpjMVJ5YVdkblpYSW9LU0I3WEhKY2JpQWdJQ0FnSUNBZ2NtVjBkWEp1SUhSeWRXVmNjbHh1SUNBZ0lIMHNYSEpjYmlBZ0lDQjFjbXhRWlhKbWFYZzZJRndpWENJc1hISmNiaUFnSUNCemRXTmpaWE56UkdGMFlTaHlaWE02SUdGdWVTa2dlMXh5WEc0Z0lDQWdJQ0FnSUhKbGRIVnliaUJ5WlhOY2NseHVJQ0FnSUgwc1hISmNiaUFnSUNCa2IwNXZkRU5vWldOclUyVnpjMmx2YmpvZ1ptRnNjMlVzWEhKY2JpQWdJQ0JsY25KdmNsUnBkR3hsT2lCY0l1YVRqZVM5bk9Xa3NlaTBwVndpTEZ4eVhHNGdJQ0FnWlhKeWIzSkRiMjUwWlc1MEtISmxjem9nWVc1NUtTQjdYSEpjYmlBZ0lDQWdJQ0FnY21WMGRYSnVJSEpsYzF4eVhHNGdJQ0FnZlN4Y2NseHVJQ0FnSUhKbFRHOW5hVzVNYVcxcGREb2dNeXhjY2x4dUlDQWdJR1Z5Y205eVEyRnNiR0poWTJzNklHNTFiR3dzWEhKY2JpQWdJQ0J5WlhCdmNuUkRSMGs2SUdaaGJITmxMRnh5WEc0Z0lDQWdiVzlqYTBwemIyNDZJR1poYkhObExGeHlYRzRnSUNBZ1oyeHZZbUZzUkdGMFlUb2dabUZzYzJVc1hISmNiaUFnSUNBdkx5QnpaWE56YVc5dTVaeW81cHlzNVp5dzU3eVQ1YTJZNTVxRWEyVjVYSEpjYmlBZ0lDQnpaWE56YVc5dVJYaHdhWEpsUzJWNU9pQmNJbk5sYzNOcGIyNUZlSEJwY21WTFpYbGNJbHh5WEc1OVhISmNibHh5WEc1bGVIQnZjblFnWkdWbVlYVnNkQ0JrWldaaGRXeDBRMjl1Wm1sbk95SmRmUT09IiwiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxuZXhwb3J0cy5kZWZhdWx0ID0ge1xyXG4gICAgc2Vzc2lvbjogJycsXHJcbiAgICBzZXNzaW9uRXhwaXJlVGltZTogbnVsbCxcclxuICAgIHNlc3Npb25FeHBpcmU6IEluZmluaXR5LFxyXG4gICAgc2Vzc2lvbklzRnJlc2g6IGZhbHNlLFxyXG4gICAgbG9naW5pbmc6IGZhbHNlLFxyXG4gICAgaXNDaGVja2luZ1Nlc3Npb246IGZhbHNlXHJcbn07XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWMzUmhkSFZ6TG1weklpd2ljMjkxY21ObFVtOXZkQ0k2SWlJc0luTnZkWEpqWlhNaU9sc2lMaTR2TGk0dmMzSmpMM04wYjNKbEwzTjBZWFIxY3k1MGN5SmRMQ0p1WVcxbGN5STZXMTBzSW0xaGNIQnBibWR6SWpvaU96dEJRVUZCTEd0Q1FVRmxPMGxCUTFnc1QwRkJUeXhGUVVGRkxFVkJRVms3U1VGRmNrSXNhVUpCUVdsQ0xFVkJRVVVzU1VGQlNUdEpRVVYyUWl4aFFVRmhMRVZCUVVVc1VVRkJVVHRKUVVOMlFpeGpRVUZqTEVWQlFVVXNTMEZCWjBJN1NVRkZhRU1zVVVGQlVTeEZRVUZGTEV0QlFXZENPMGxCUlRGQ0xHbENRVUZwUWl4RlFVRkZMRXRCUVdkQ08wTkJReTlDTEVOQlFVRWlMQ0p6YjNWeVkyVnpRMjl1ZEdWdWRDSTZXeUpsZUhCdmNuUWdaR1ZtWVhWc2RDQjdYSEpjYmlBZ0lDQnpaWE56YVc5dU9pQW5KeUJoY3lCemRISnBibWNzWEhKY2JpQWdJQ0F2THlCelpYTnphVzl1NVp5bzVweXM1Wnl3NTd5VDVhMlk1NXFFNXB5SjVwV0k1cGUyNlplMFhISmNiaUFnSUNCelpYTnphVzl1Ulhod2FYSmxWR2x0WlRvZ2JuVnNiQ3hjY2x4dUlDQWdJQzh2SUhObGMzTnBiMjdvdjRmbW5KL25tb1RtbDdicGw3VG5ncmxjY2x4dUlDQWdJSE5sYzNOcGIyNUZlSEJwY21VNklFbHVabWx1YVhSNUxGeHlYRzRnSUNBZ2MyVnpjMmx2YmtselJuSmxjMmc2SUdaaGJITmxJR0Z6SUdKdmIyeGxZVzRzWEhKY2JpQWdJQ0F2THlEbXJhUGxuS2pubWJ2bHZaWGt1SzN2dkl6bGhiYmt1NWJvcjdmbXNZTG92YTdvcjZMbnFJM2xrSTd2dkl6cGdiL2xoWTNwaDQzbHBJM29zSVBubEtqbm1idmx2WlhtanFYbGo2TmNjbHh1SUNBZ0lHeHZaMmx1YVc1bk9pQm1ZV3h6WlNCaGN5QmliMjlzWldGdUxGeHlYRzRnSUNBZ0x5OGc1cTJqNVp5bzVwK2w2SytpYzJWemMybHZidWFjaWVhVmlPYWNuK1M0cmUrOGpPbUJ2K1dGamVtSGplV2tqZWl3ZytlVXFPYU9wZVdQbzF4eVhHNGdJQ0FnYVhORGFHVmphMmx1WjFObGMzTnBiMjQ2SUdaaGJITmxJR0Z6SUdKdmIyeGxZVzVjY2x4dWZTQmhjeUJoYm5sY2NseHVJbDE5IiwiXCJ1c2Ugc3RyaWN0XCI7XHJcbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShleHBvcnRzLCBcIl9fZXNNb2R1bGVcIiwgeyB2YWx1ZTogdHJ1ZSB9KTtcclxudmFyIHN0b3JlID0ge307XHJcbmZ1bmN0aW9uIGVtaXQoa2V5KSB7XHJcbiAgICB2YXIgZmxvdyA9IGdldEZsb3coa2V5KTtcclxuICAgIHZhciBjdXJyZW50TGVuZ3RoID0gZmxvdy53YWl0aW5nTGlzdC5sZW5ndGg7XHJcbiAgICBmb3IgKHZhciBpID0gMDsgaSA8IGN1cnJlbnRMZW5ndGg7IGkrKykge1xyXG4gICAgICAgIHZhciBjYWxsYmFjayA9IGZsb3cud2FpdGluZ0xpc3Quc2hpZnQoKTtcclxuICAgICAgICB0eXBlb2YgY2FsbGJhY2sgPT0gXCJmdW5jdGlvblwiICYmIGNhbGxiYWNrKCk7XHJcbiAgICB9XHJcbn1cclxuZnVuY3Rpb24gd2FpdChrZXksIGNhbGxiYWNrKSB7XHJcbiAgICB2YXIgZmxvdyA9IGdldEZsb3coa2V5KTtcclxuICAgIGZsb3cud2FpdGluZ0xpc3QucHVzaChjYWxsYmFjayk7XHJcbn1cclxuZnVuY3Rpb24gZ2V0RmxvdyhrZXkpIHtcclxuICAgIGlmICghc3RvcmVba2V5XSkge1xyXG4gICAgICAgIHN0b3JlW2tleV0gPSB7XHJcbiAgICAgICAgICAgIHdhaXRpbmdMaXN0OiBbXVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcbiAgICByZXR1cm4gc3RvcmVba2V5XTtcclxufVxyXG5leHBvcnRzLmRlZmF1bHQgPSB7XHJcbiAgICB3YWl0OiB3YWl0LFxyXG4gICAgZW1pdDogZW1pdFxyXG59O1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2labXh2ZHk1cWN5SXNJbk52ZFhKalpWSnZiM1FpT2lJaUxDSnpiM1Z5WTJWeklqcGJJaTR1THk0dUwzTnlZeTkxZEdsc0wyWnNiM2N1ZEhNaVhTd2libUZ0WlhNaU9sdGRMQ0p0WVhCd2FXNW5jeUk2SWpzN1FVRkJRU3hKUVVGSkxFdEJRVXNzUjBGQlV5eEZRVUZGTEVOQlFVTTdRVUZGY2tJc1UwRkJVeXhKUVVGSkxFTkJRVU1zUjBGQlV6dEpRVU51UWl4SlFVRkpMRWxCUVVrc1IwRkJSeXhQUVVGUExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZEZUVJc1NVRkJTU3hoUVVGaExFZEJRVWNzU1VGQlNTeERRVUZETEZkQlFWY3NRMEZCUXl4TlFVRk5MRU5CUVVNN1NVRkROVU1zUzBGQlN5eEpRVUZKTEVOQlFVTXNSMEZCUnl4RFFVRkRMRVZCUVVVc1EwRkJReXhIUVVGSExHRkJRV0VzUlVGQlJTeERRVUZETEVWQlFVVXNSVUZCUlR0UlFVTndReXhKUVVGSkxGRkJRVkVzUjBGQlJ5eEpRVUZKTEVOQlFVTXNWMEZCVnl4RFFVRkRMRXRCUVVzc1JVRkJSU3hEUVVGRE8xRkJRM2hETEU5QlFVOHNVVUZCVVN4SlFVRkpMRlZCUVZVc1NVRkJTU3hSUVVGUkxFVkJRVVVzUTBGQlF6dExRVU12UXp0QlFVTk1MRU5CUVVNN1FVRkZSQ3hUUVVGVExFbEJRVWtzUTBGQlF5eEhRVUZUTEVWQlFVVXNVVUZCYTBJN1NVRkRka01zU1VGQlNTeEpRVUZKTEVkQlFVY3NUMEZCVHl4RFFVRkRMRWRCUVVjc1EwRkJReXhEUVVGRE8wbEJRM2hDTEVsQlFVa3NRMEZCUXl4WFFVRlhMRU5CUVVNc1NVRkJTU3hEUVVGRExGRkJRVkVzUTBGQlF5eERRVUZCTzBGQlEyNURMRU5CUVVNN1FVRkZSQ3hUUVVGVExFOUJRVThzUTBGQlF5eEhRVUZUTzBsQlEzUkNMRWxCUVVrc1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEVWQlFVVTdVVUZEWWl4TFFVRkxMRU5CUVVNc1IwRkJSeXhEUVVGRExFZEJRVWM3V1VGRFZDeFhRVUZYTEVWQlFVVXNSVUZCUlR0VFFVTnNRaXhEUVVGQk8wdEJRMG83U1VGRlJDeFBRVUZQTEV0QlFVc3NRMEZCUXl4SFFVRkhMRU5CUVVNc1EwRkJRenRCUVVOMFFpeERRVUZETzBGQlJVUXNhMEpCUVdVN1NVRkRXQ3hKUVVGSkxFMUJRVUU3U1VGRFNpeEpRVUZKTEUxQlFVRTdRMEZEVUN4RFFVRkJJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpYkdWMElITjBiM0psT2lCVVQwUlBJRDBnZTMwN1hISmNibHh5WEc1bWRXNWpkR2x2YmlCbGJXbDBLR3RsZVRvZ1ZFOUVUeWtnZTF4eVhHNGdJQ0FnYkdWMElHWnNiM2NnUFNCblpYUkdiRzkzS0d0bGVTazdYSEpjYmlBZ0lDQnNaWFFnWTNWeWNtVnVkRXhsYm1kMGFDQTlJR1pzYjNjdWQyRnBkR2x1WjB4cGMzUXViR1Z1WjNSb08xeHlYRzRnSUNBZ1ptOXlJQ2hzWlhRZ2FTQTlJREE3SUdrZ1BDQmpkWEp5Wlc1MFRHVnVaM1JvT3lCcEt5c3BJSHRjY2x4dUlDQWdJQ0FnSUNCc1pYUWdZMkZzYkdKaFkyc2dQU0JtYkc5M0xuZGhhWFJwYm1kTWFYTjBMbk5vYVdaMEtDazdYSEpjYmlBZ0lDQWdJQ0FnZEhsd1pXOW1JR05oYkd4aVlXTnJJRDA5SUZ3aVpuVnVZM1JwYjI1Y0lpQW1KaUJqWVd4c1ltRmpheWdwTzF4eVhHNGdJQ0FnZlZ4eVhHNTlYSEpjYmx4eVhHNW1kVzVqZEdsdmJpQjNZV2wwS0d0bGVUb2dWRTlFVHl3Z1kyRnNiR0poWTJzNklFWjFibU4wYVc5dUtTQjdYSEpjYmlBZ0lDQjJZWElnWm14dmR5QTlJR2RsZEVac2IzY29hMlY1S1R0Y2NseHVJQ0FnSUdac2IzY3VkMkZwZEdsdVoweHBjM1F1Y0hWemFDaGpZV3hzWW1GamF5bGNjbHh1ZlZ4eVhHNWNjbHh1Wm5WdVkzUnBiMjRnWjJWMFJteHZkeWhyWlhrNklGUlBSRThwSUh0Y2NseHVJQ0FnSUdsbUlDZ2hjM1J2Y21WYmEyVjVYU2tnZTF4eVhHNGdJQ0FnSUNBZ0lITjBiM0psVzJ0bGVWMGdQU0I3WEhKY2JpQWdJQ0FnSUNBZ0lDQWdJSGRoYVhScGJtZE1hWE4wT2lCYlhWeHlYRzRnSUNBZ0lDQWdJSDFjY2x4dUlDQWdJSDFjY2x4dVhISmNiaUFnSUNCeVpYUjFjbTRnYzNSdmNtVmJhMlY1WFR0Y2NseHVmVnh5WEc1Y2NseHVaWGh3YjNKMElHUmxabUYxYkhRZ2UxeHlYRzRnSUNBZ2QyRnBkQ3hjY2x4dUlDQWdJR1Z0YVhSY2NseHVmVnh5WEc0aVhYMD0iLCJcInVzZSBzdHJpY3RcIjtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG5mdW5jdGlvbiBzaG93KHR4dCkge1xyXG4gICAgd3guc2hvd1RvYXN0KHtcclxuICAgICAgICB0aXRsZTogdHlwZW9mIHR4dCA9PT0gJ2Jvb2xlYW4nID8gJ+WKoOi9veS4rScgOiB0eHQsXHJcbiAgICAgICAgaWNvbjogJ2xvYWRpbmcnLFxyXG4gICAgICAgIG1hc2s6IHRydWUsXHJcbiAgICAgICAgZHVyYXRpb246IDYwMDAwXHJcbiAgICB9KTtcclxufVxyXG5mdW5jdGlvbiBoaWRlKCkge1xyXG4gICAgd3guaGlkZVRvYXN0KHt9KTtcclxufVxyXG5leHBvcnRzLmRlZmF1bHQgPSB7XHJcbiAgICBzaG93OiBzaG93LFxyXG4gICAgaGlkZTogaGlkZVxyXG59O1xyXG4vLyMgc291cmNlTWFwcGluZ1VSTD1kYXRhOmFwcGxpY2F0aW9uL2pzb247YmFzZTY0LGV5SjJaWEp6YVc5dUlqb3pMQ0ptYVd4bElqb2liRzloWkdsdVp5NXFjeUlzSW5OdmRYSmpaVkp2YjNRaU9pSWlMQ0p6YjNWeVkyVnpJanBiSWk0dUx5NHVMM055WXk5MWRHbHNMMnh2WVdScGJtY3VkSE1pWFN3aWJtRnRaWE1pT2x0ZExDSnRZWEJ3YVc1bmN5STZJanM3UVVGQlFTeFRRVUZUTEVsQlFVa3NRMEZCUXl4SFFVRnhRanRKUVVNdlFpeEZRVUZGTEVOQlFVTXNVMEZCVXl4RFFVRkRPMUZCUTFRc1MwRkJTeXhGUVVGRkxFOUJRVThzUjBGQlJ5eExRVUZMTEZOQlFWTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1MwRkJTeXhEUVVGRExFTkJRVU1zUTBGQlF5eEhRVUZITzFGQlF6ZERMRWxCUVVrc1JVRkJSU3hUUVVGVE8xRkJRMllzU1VGQlNTeEZRVUZGTEVsQlFVazdVVUZEVml4UlFVRlJMRVZCUVVVc1MwRkJTenRMUVVOc1FpeERRVUZETEVOQlFVRTdRVUZEVGl4RFFVRkRPMEZCUlVRc1UwRkJVeXhKUVVGSk8wbEJRMVFzUlVGQlJTeERRVUZETEZOQlFWTXNRMEZCUXl4RlFVRkZMRU5CUVVNc1EwRkJRenRCUVVOeVFpeERRVUZETzBGQlJVUXNhMEpCUVdVN1NVRkRXQ3hKUVVGSkxFMUJRVUU3U1VGRFNpeEpRVUZKTEUxQlFVRTdRMEZEVUN4RFFVRkJJaXdpYzI5MWNtTmxjME52Ym5SbGJuUWlPbHNpWm5WdVkzUnBiMjRnYzJodmR5aDBlSFE2SUdKdmIyeGxZVzRnZkNCemRISnBibWNwSUh0Y2NseHVJQ0FnSUhkNExuTm9iM2RVYjJGemRDaDdYSEpjYmlBZ0lDQWdJQ0FnZEdsMGJHVTZJSFI1Y0dWdlppQjBlSFFnUFQwOUlDZGliMjlzWldGdUp5QS9JQ2ZsaXFEb3ZiM2t1SzBuSURvZ2RIaDBMRnh5WEc0Z0lDQWdJQ0FnSUdsamIyNDZJQ2RzYjJGa2FXNW5KeXhjY2x4dUlDQWdJQ0FnSUNCdFlYTnJPaUIwY25WbExGeHlYRzRnSUNBZ0lDQWdJR1IxY21GMGFXOXVPaUEyTURBd01GeHlYRzRnSUNBZ2ZTbGNjbHh1ZlZ4eVhHNWNjbHh1Wm5WdVkzUnBiMjRnYUdsa1pTZ3BJSHRjY2x4dUlDQWdJSGQ0TG1ocFpHVlViMkZ6ZENoN2ZTazdYSEpjYm4xY2NseHVYSEpjYm1WNGNHOXlkQ0JrWldaaGRXeDBJSHRjY2x4dUlDQWdJSE5vYjNjc1hISmNiaUFnSUNCb2FXUmxYSEpjYm4xY2NseHVJbDE5IiwiXCJ1c2Ugc3RyaWN0XCI7XHJcbnZhciBfX2Fzc2lnbiA9ICh0aGlzICYmIHRoaXMuX19hc3NpZ24pIHx8IGZ1bmN0aW9uICgpIHtcclxuICAgIF9fYXNzaWduID0gT2JqZWN0LmFzc2lnbiB8fCBmdW5jdGlvbih0KSB7XHJcbiAgICAgICAgZm9yICh2YXIgcywgaSA9IDEsIG4gPSBhcmd1bWVudHMubGVuZ3RoOyBpIDwgbjsgaSsrKSB7XHJcbiAgICAgICAgICAgIHMgPSBhcmd1bWVudHNbaV07XHJcbiAgICAgICAgICAgIGZvciAodmFyIHAgaW4gcykgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChzLCBwKSlcclxuICAgICAgICAgICAgICAgIHRbcF0gPSBzW3BdO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdDtcclxuICAgIH07XHJcbiAgICByZXR1cm4gX19hc3NpZ24uYXBwbHkodGhpcywgYXJndW1lbnRzKTtcclxufTtcclxuT2JqZWN0LmRlZmluZVByb3BlcnR5KGV4cG9ydHMsIFwiX19lc01vZHVsZVwiLCB7IHZhbHVlOiB0cnVlIH0pO1xyXG5mdW5jdGlvbiBzZXRQYXJhbXModXJsLCBwYXJhbXMpIHtcclxuICAgIHZhciBxdWVyeVN0cmluZ0luZGV4ID0gdXJsLmluZGV4T2YoJz8nKTtcclxuICAgIHZhciBrdnAgPSB7fTtcclxuICAgIGlmIChxdWVyeVN0cmluZ0luZGV4ID49IDApIHtcclxuICAgICAgICB2YXIgb2xkUXVlcnlTdHJpbmcgPSB1cmwuc3Vic3RyKHF1ZXJ5U3RyaW5nSW5kZXggKyAxKS5zcGxpdCgnJicpO1xyXG4gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb2xkUXVlcnlTdHJpbmcubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgdmFyIGt2ID0gb2xkUXVlcnlTdHJpbmdbaV0uc3BsaXQoJz0nKTtcclxuICAgICAgICAgICAga3ZwW2t2WzBdXSA9IGt2WzFdO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxuICAgIGt2cCA9IF9fYXNzaWduKHt9LCBrdnAsIHBhcmFtcyk7XHJcbiAgICB2YXIgcXVlcnlTdHJpbmcgPSBPYmplY3Qua2V5cyhrdnApLm1hcChmdW5jdGlvbiAoa2V5KSB7XHJcbiAgICAgICAgcmV0dXJuIGtleSArIFwiPVwiICsgZW5jb2RlVVJJKGt2cFtrZXldKTtcclxuICAgIH0pLmpvaW4oJyYnKTtcclxuICAgIGlmIChxdWVyeVN0cmluZ0luZGV4ID49IDApIHtcclxuICAgICAgICByZXR1cm4gdXJsLnN1YnN0cmluZygwLCBxdWVyeVN0cmluZ0luZGV4ICsgMSkgKyBxdWVyeVN0cmluZztcclxuICAgIH1cclxuICAgIGVsc2Uge1xyXG4gICAgICAgIHJldHVybiB1cmwgKyBcIj9cIiArIHF1ZXJ5U3RyaW5nO1xyXG4gICAgfVxyXG59XHJcbmV4cG9ydHMuZGVmYXVsdCA9IHtcclxuICAgIHNldFBhcmFtczogc2V0UGFyYW1zXHJcbn07XHJcbi8vIyBzb3VyY2VNYXBwaW5nVVJMPWRhdGE6YXBwbGljYXRpb24vanNvbjtiYXNlNjQsZXlKMlpYSnphVzl1SWpvekxDSm1hV3hsSWpvaWRYSnNMbXB6SWl3aWMyOTFjbU5sVW05dmRDSTZJaUlzSW5OdmRYSmpaWE1pT2xzaUxpNHZMaTR2YzNKakwzVjBhV3d2ZFhKc0xuUnpJbDBzSW01aGJXVnpJanBiWFN3aWJXRndjR2x1WjNNaU9pSTdPenM3T3pzN096czdPenM3UVVGQlFTeFRRVUZUTEZOQlFWTXNRMEZCUXl4SFFVRlhMRVZCUVVVc1RVRkJZenRKUVVNeFF5eEpRVUZKTEdkQ1FVRm5RaXhIUVVGSExFZEJRVWNzUTBGQlF5eFBRVUZQTEVOQlFVTXNSMEZCUnl4RFFVRkRMRU5CUVVNN1NVRkRlRU1zU1VGQlNTeEhRVUZITEVkQlFWRXNSVUZCUlN4RFFVRkRPMGxCUTJ4Q0xFbEJRVWtzWjBKQlFXZENMRWxCUVVrc1EwRkJReXhGUVVGRk8xRkJRM1pDTEVsQlFVa3NZMEZCWXl4SFFVRkhMRWRCUVVjc1EwRkJReXhOUVVGTkxFTkJRVU1zWjBKQlFXZENMRWRCUVVjc1EwRkJReXhEUVVGRExFTkJRVU1zUzBGQlN5eERRVUZETEVkQlFVY3NRMEZCUXl4RFFVRkRPMUZCUTJwRkxFdEJRVXNzU1VGQlNTeERRVUZETEVkQlFVY3NRMEZCUXl4RlFVRkZMRU5CUVVNc1IwRkJSeXhqUVVGakxFTkJRVU1zVFVGQlRTeEZRVUZGTEVOQlFVTXNSVUZCUlN4RlFVRkZPMWxCUXpWRExFbEJRVWtzUlVGQlJTeEhRVUZITEdOQlFXTXNRMEZCUXl4RFFVRkRMRU5CUVVNc1EwRkJReXhMUVVGTExFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdXVUZEZEVNc1IwRkJSeXhEUVVGRExFVkJRVVVzUTBGQlF5eERRVUZETEVOQlFVTXNRMEZCUXl4SFFVRkhMRVZCUVVVc1EwRkJReXhEUVVGRExFTkJRVU1zUTBGQlFUdFRRVU55UWp0TFFVTktPMGxCUlVRc1IwRkJSeXhuUWtGQlR5eEhRVUZITEVWQlFVc3NUVUZCVFN4RFFVRkRMRU5CUVVNN1NVRkZNVUlzU1VGQlNTeFhRVUZYTEVkQlFVY3NUVUZCVFN4RFFVRkRMRWxCUVVrc1EwRkJReXhIUVVGSExFTkJRVU1zUTBGQlF5eEhRVUZITEVOQlFVTXNWVUZCUVN4SFFVRkhPMUZCUTNSRExFOUJRVlVzUjBGQlJ5eFRRVUZKTEZOQlFWTXNRMEZCUXl4SFFVRkhMRU5CUVVNc1IwRkJSeXhEUVVGRExFTkJRVWNzUTBGQlFUdEpRVU14UXl4RFFVRkRMRU5CUVVNc1EwRkJReXhKUVVGSkxFTkJRVU1zUjBGQlJ5eERRVUZETEVOQlFVTTdTVUZGWWl4SlFVRkpMR2RDUVVGblFpeEpRVUZKTEVOQlFVTXNSVUZCUlR0UlFVTjJRaXhQUVVGUExFZEJRVWNzUTBGQlF5eFRRVUZUTEVOQlFVTXNRMEZCUXl4RlFVRkZMR2RDUVVGblFpeEhRVUZITEVOQlFVTXNRMEZCUXl4SFFVRkhMRmRCUVZjc1EwRkJRVHRMUVVNNVJEdFRRVUZOTzFGQlEwZ3NUMEZCVHl4SFFVRkhMRWRCUVVjc1IwRkJSeXhIUVVGSExGZEJRVmNzUTBGQlFUdExRVU5xUXp0QlFVVk1MRU5CUVVNN1FVRkZSQ3hyUWtGQlpUdEpRVU5ZTEZOQlFWTXNWMEZCUVR0RFFVTmFMRU5CUVVFaUxDSnpiM1Z5WTJWelEyOXVkR1Z1ZENJNld5Sm1kVzVqZEdsdmJpQnpaWFJRWVhKaGJYTW9kWEpzT2lCemRISnBibWNzSUhCaGNtRnRjem9nYjJKcVpXTjBLU0I3WEhKY2JpQWdJQ0JzWlhRZ2NYVmxjbmxUZEhKcGJtZEpibVJsZUNBOUlIVnliQzVwYm1SbGVFOW1LQ2MvSnlrN1hISmNiaUFnSUNCc1pYUWdhM1p3T2lCaGJua2dQU0I3ZlR0Y2NseHVJQ0FnSUdsbUlDaHhkV1Z5ZVZOMGNtbHVaMGx1WkdWNElENDlJREFwSUh0Y2NseHVJQ0FnSUNBZ0lDQnNaWFFnYjJ4a1VYVmxjbmxUZEhKcGJtY2dQU0IxY213dWMzVmljM1J5S0hGMVpYSjVVM1J5YVc1blNXNWtaWGdnS3lBeEtTNXpjR3hwZENnbkppY3BPMXh5WEc0Z0lDQWdJQ0FnSUdadmNpQW9iR1YwSUdrZ1BTQXdPeUJwSUR3Z2IyeGtVWFZsY25sVGRISnBibWN1YkdWdVozUm9PeUJwS3lzcElIdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2JHVjBJR3QySUQwZ2IyeGtVWFZsY25sVGRISnBibWRiYVYwdWMzQnNhWFFvSnowbktUdGNjbHh1SUNBZ0lDQWdJQ0FnSUNBZ2EzWndXMnQyV3pCZFhTQTlJR3QyV3pGZFhISmNiaUFnSUNBZ0lDQWdmVnh5WEc0Z0lDQWdmVnh5WEc1Y2NseHVJQ0FnSUd0MmNDQTlJSHN1TGk1cmRuQXNJQzR1TG5CaGNtRnRjMzA3WEhKY2JseHlYRzRnSUNBZ2JHVjBJSEYxWlhKNVUzUnlhVzVuSUQwZ1QySnFaV04wTG10bGVYTW9hM1p3S1M1dFlYQW9hMlY1SUQwK0lIdGNjbHh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdZQ1I3YTJWNWZUMGtlMlZ1WTI5a1pWVlNTU2hyZG5CYmEyVjVYU2w5WUZ4eVhHNGdJQ0FnZlNrdWFtOXBiaWduSmljcE8xeHlYRzVjY2x4dUlDQWdJR2xtSUNoeGRXVnllVk4wY21sdVowbHVaR1Y0SUQ0OUlEQXBJSHRjY2x4dUlDQWdJQ0FnSUNCeVpYUjFjbTRnZFhKc0xuTjFZbk4wY21sdVp5Z3dMQ0J4ZFdWeWVWTjBjbWx1WjBsdVpHVjRJQ3NnTVNrZ0t5QnhkV1Z5ZVZOMGNtbHVaMXh5WEc0Z0lDQWdmU0JsYkhObElIdGNjbHh1SUNBZ0lDQWdJQ0J5WlhSMWNtNGdkWEpzSUNzZ1hDSS9YQ0lnS3lCeGRXVnllVk4wY21sdVoxeHlYRzRnSUNBZ2ZWeHlYRzVjY2x4dWZWeHlYRzVjY2x4dVpYaHdiM0owSUdSbFptRjFiSFFnZTF4eVhHNGdJQ0FnYzJWMFVHRnlZVzF6WEhKY2JuMWNjbHh1SWwxOSJdLCJzb3VyY2VSb290IjoiIn0= \ No newline at end of file diff --git a/build/weRequest.min.js b/build/weRequest.min.js index b35ab5e..f1b166f 100644 --- a/build/weRequest.min.js +++ b/build/weRequest.min.js @@ -1,5 +1,5 @@ /*! - * weRequest 1.0.9 + * weRequest 1.2.0 * https://github.com/IvinWu/weRequest */ -module.exports=function(e){var t={};function n(i){if(t[i])return t[i].exports;var o=t[i]={i:i,l:!1,exports:{}};return e[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(i,o,function(t){return e[t]}.bind(null,o));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=8)}([function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});t.default={sessionName:"session",loginTrigger:function(){return!1},codeToSession:{},successTrigger:function(){return!0},urlPerfix:"",successData:function(e){return e},doNotCheckSession:!1,errorTitle:"操作失败",errorContent:function(e){return e},reLoginLimit:3,errorCallback:null,reportCGI:!1,mockJson:!1,globalData:!1,sessionExpireKey:"sessionExpireKey"}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default={session:"",sessionExpireTime:null,sessionExpire:1/0,sessionIsFresh:!1,logining:!1,isCheckingSession:!1}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(11),o=n(0),u=n(1),f=n(12),s=n(6),l=n(7),c=n(3),d=n(5),r=n(4);function a(e){var t=this;return"function"==typeof e.beforeSend&&e.beforeSend(),void 0===e.reLoginLimit?e.reLoginLimit=0:e.reLoginLimit++,void 0===e.count&&(e.count=0),e.showLoading&&(i.default.show(e.showLoading),e.complete=function(e){for(var n=[],o=1;o=0?e.url+="&"+o.default.sessionName+"="+encodeURIComponent(u.default.session):e.url+="?"+o.default.sessionName+"="+encodeURIComponent(u.default.session)),n)e.url.indexOf("?")>=0?e.url+="&"+i+"="+n[i]:e.url+="?"+i+"="+n[i];return r.default.start(e),e}(e,"data")).count++,wx.request({url:e.url,data:e.data,method:e.method,header:e.header||{},dataType:e.dataType||"json",success:function(t){d.default(t,e,"request")},fail:function(t){c.default(e,t),console.error(t)},complete:function(){e.count--,"function"==typeof e.complete&&0===e.count&&e.complete()}})}t.default={request:function(e){if(e=a(e),o.default.mockJson)return f.default.get(e,"request"),!1;e.cache&&s.default.get(e),l.default(function(){p(e)},e)},uploadFile:function(e){if(e=a(e),o.default.mockJson)return f.default.get(e,"uploadFile"),!1;e.cache&&s.default.get(e),l.default(function(){!function(e){e.count++,wx.uploadFile({url:e.url,filePath:e.filePath||"",name:e.name||"",formData:e.formData,success:function(t){d.default(t,e,"uploadFile")},fail:function(t){c.default(e,t),console.error(t)},complete:function(){e.count--,"function"==typeof e.complete&&0===e.count&&e.complete()}})}(e)},e)}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(0);t.default=function(e,t){if("function"==typeof e.fail)e.fail(t);else{var n="";if("function"==typeof i.default.errorTitle)try{n=i.default.errorTitle(t.data||t.errMsg)}catch(e){}else"string"==typeof i.default.errorTitle&&(n=i.default.errorTitle);var o="";if("function"==typeof i.default.errorContent)try{o=i.default.errorContent(t.data||t.errMsg)}catch(e){}else"string"==typeof i.default.errorContent&&(o=i.default.errorContent);wx.showModal({title:n,content:o||"网络或服务异常,请稍后重试",showCancel:!1})}"function"==typeof i.default.errorCallback&&i.default.errorCallback(e,t),console.error(t)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(0);t.default={start:function(e,t){switch(t){case"checkSession":e._checkSessionStartTime=(new Date).getTime();break;case"login":e._loginStartTime=(new Date).getTime();break;default:e.report&&(e._reportStartTime=(new Date).getTime())}},end:function(e,t){switch(t){case"checkSession":e._checkSessionEndTime=(new Date).getTime(),"function"==typeof i.default.reportCGI&&i.default.reportCGI("wx_checkSession",e._checkSessionStartTime,e._checkSessionEndTime);break;case"login":e._loginEndTime=(new Date).getTime(),"function"==typeof i.default.reportCGI&&i.default.reportCGI("wx_login",e._loginStartTime,e._loginEndTime);break;default:e.report&&"function"==typeof i.default.reportCGI&&(e._reportEndTime=(new Date).getTime(),i.default.reportCGI(e.report,e._reportStartTime,e._reportEndTime))}}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(0),o=n(1),u=n(2),f=n(3),s=n(6),l=n(4);t.default=function(e,t,n){if(200===e.statusCode){if("string"==typeof e.data)try{e.data=JSON.parse(e.data)}catch(n){return f.default(t,e),!1}if(l.default.end(t),t.isLogin){var c="";try{c=i.default.codeToSession.success(e.data)}catch(e){}c?t.success(c):f.default(t,e)}else if(i.default.loginTrigger(e.data)&&t.reLoginLimito.default.sessionExpire?(o.default.session="",c(e,t)):"function"==typeof e&&e():o.default.logining?i.default.wait("doLoginFinished",function(){c(e,t)}):(o.default.logining=!0,t.count++,l.default.start(t,"login"),console.log("wx.login"),wx.login({complete:function(){t.count--,l.default.end(t,"login"),"function"==typeof t.complete&&0===t.count&&t.complete()},success:function(n){n.code?function(e,t,n){var s;s="function"==typeof u.default.codeToSession.data?u.default.codeToSession.data():u.default.codeToSession.data||{};s[u.default.codeToSession.codeName]=t,e.count++,f.default.request({url:u.default.codeToSession.url,data:s,method:u.default.codeToSession.method||"GET",isLogin:!0,report:u.default.codeToSession.report||u.default.codeToSession.url,success:function(e){o.default.session=e,o.default.sessionIsFresh=!0,o.default.sessionExpireTime&&(o.default.sessionExpire=(new Date).getTime()+o.default.sessionExpireTime,wx.setStorage({key:u.default.sessionExpireKey,data:String(o.default.sessionExpire)})),"function"==typeof n&&n(),wx.setStorage({key:u.default.sessionName,data:o.default.session})},complete:function(){e.count--,"function"==typeof e.complete&&0===e.count&&e.complete(),o.default.logining=!1,i.default.emit("doLoginFinished")},fail:u.default.codeToSession.fail||null})}(t,n.code,e):(s.default(t,n),console.error(n),o.default.logining=!1,i.default.emit("doLoginFinished"))},fail:function(e){s.default(t,e),console.error(e),o.default.logining=!1,i.default.emit("doLoginFinished")}}))}t.default=function e(t,n){o.default.isCheckingSession?i.default.wait("checkSessionFinished",function(){e(t,n)}):!o.default.sessionIsFresh&&o.default.session?(o.default.isCheckingSession=!0,n.count++,l.default.start(n,"checkSession"),wx.checkSession({success:function(){o.default.sessionIsFresh=!0},fail:function(){o.default.session=""},complete:function(){o.default.isCheckingSession=!1,n.count--,l.default.end(n,"checkSession"),c(t,n),i.default.emit("checkSessionFinished")}})):c(t,n)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(9),o=n(10),u=n(14),f=n(15),s=n(16),l=n(17),c=n(18),d={init:i.default,request:o.default,uploadFile:u.default,setSession:f.default,login:s.default,getSession:l.default,getConfig:c.default};t.default=d},function(e,t,n){"use strict";var i=this&&this.__assign||function(){return(i=Object.assign||function(e){for(var t,n=1,i=arguments.length;no.default.sessionExpire?(o.default.session="",c(e,t)):"function"==typeof e&&e():o.default.logining?i.default.wait("doLoginFinished",function(){c(e,t)}):(o.default.logining=!0,t.count++,l.default.start(t,"login"),console.log("wx.login"),wx.login({complete:function(){t.count--,l.default.end(t,"login"),"function"==typeof t.complete&&0===t.count&&t.complete()},success:function(n){n.code?function(e,t,n){var f;f="function"==typeof u.default.codeToSession.data?u.default.codeToSession.data():u.default.codeToSession.data||{};f[u.default.codeToSession.codeName]=t,e.count++,s.default.request({url:u.default.codeToSession.url,data:f,method:u.default.codeToSession.method||"GET",isLogin:!0,report:u.default.codeToSession.report||u.default.codeToSession.url,success:function(e){o.default.session=e,o.default.sessionIsFresh=!0,o.default.sessionExpireTime&&(o.default.sessionExpire=(new Date).getTime()+o.default.sessionExpireTime,wx.setStorage({key:u.default.sessionExpireKey,data:String(o.default.sessionExpire)})),"function"==typeof n&&n(),wx.setStorage({key:u.default.sessionName,data:o.default.session})},complete:function(){e.count--,"function"==typeof e.complete&&0===e.count&&e.complete(),o.default.logining=!1,i.default.emit("doLoginFinished")},fail:u.default.codeToSession.fail||null})}(t,n.code,e):(f.default(t,n),console.error(n),o.default.logining=!1,i.default.emit("doLoginFinished"))},fail:function(e){f.default(t,e),console.error(e),o.default.logining=!1,i.default.emit("doLoginFinished")}}))}t.default=function e(t,n){o.default.isCheckingSession?i.default.wait("checkSessionFinished",function(){e(t,n)}):!o.default.sessionIsFresh&&o.default.session?(o.default.isCheckingSession=!0,n.count++,l.default.start(n,"checkSession"),wx.checkSession({success:function(){o.default.sessionIsFresh=!0},fail:function(){o.default.session=""},complete:function(){o.default.isCheckingSession=!1,n.count--,l.default.end(n,"checkSession"),c(t,n),i.default.emit("checkSessionFinished")}})):c(t,n)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(9),o=n(10),u=n(15),s=n(16),f=n(17),l=n(18),c=n(19),r={init:i.default,request:o.default,uploadFile:u.default,setSession:s.default,login:f.default,getSession:l.default,getConfig:c.default};t.default=r},function(e,t,n){"use strict";var i=this&&this.__assign||function(){return(i=Object.assign||function(e){for(var t,n=1,i=arguments.length;n=0)for(var u=e.substr(n+1).split("&"),s=0;s=0?e.substring(0,n+1)+l:e+"?"+l}}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(2);t.default=function(e){i.default.uploadFile(e)}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(1);t.default=function(e){i.default.session=e,i.default.sessionIsFresh=!0}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(7);t.default=function(e){return i.default(e,{})}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(1);t.default=function(){return i.default.session}},function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(0),o=n(1);t.default=function(){return{urlPerfix:i.default.urlPerfix,sessionExpireTime:o.default.sessionExpireTime,sessionExpireKey:i.default.sessionExpireKey,sessionExpire:o.default.sessionExpire}}}]); \ No newline at end of file diff --git a/package.json b/package.json index e3c2b55..f694ce9 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { - "name": "wxapp-session-request", - "version": "1.1.0", + "name": "we-request", + "version": "1.2.0", "description": "本工具通过拓展小程序的wx.request,让开发者通过简单的配置,实现自动管理登录态等功能", "keywords": [ "登录态", diff --git a/src/api/init.ts b/src/api/init.ts index 2a99f1d..7812fc7 100644 --- a/src/api/init.ts +++ b/src/api/init.ts @@ -5,7 +5,7 @@ export interface IInitOption { /* 用code换取session的CGI配置 */ codeToSession: ICodeToSessionOptions; /* 储存在localStorage的session名称,且CGI请求的data中会自动带上以此为名称的session值;可不配置,默认为session */ - sessionName?: string; + sessionName: string; /* 请求URL的固定前缀,如果配置了,后续请求的URL都会自动加上这个前缀,如果是函数,则为函数的返回值 */ urlPerfix?: string | (() => string); /* 是否需要调用checkSession,验证小程序的登录态过期;若业务不需要使用到session_key,则可配置为true */ @@ -66,7 +66,7 @@ export interface IInitOption { /* codeToSession的上报字段名 */ report?: string; } - + export default (params: IInitOption) => { const config: IInitOption = {...params, ...defaultConfig} diff --git a/src/module/requestHandler.ts b/src/module/requestHandler.ts index aaa6180..fed4a0d 100644 --- a/src/module/requestHandler.ts +++ b/src/module/requestHandler.ts @@ -6,7 +6,8 @@ import cacheManager from './cacheManager' import sessionManager from './sessionManager' import errorHandler from './errorHandler' import responseHandler from './responseHandler' -import durationReporter from "./durationReporter"; +import durationReporter from "./durationReporter" +import url from '../util/url' // 格式化url function format(url: string) { @@ -49,8 +50,10 @@ function preDo(obj: TODO) { })(obj.complete) } - obj.originUrl = obj.url; - obj.url = format(obj.url); + if(!obj.originUrl) { + obj.originUrl = obj.url; + obj.url = format(obj.url); + } return obj; } @@ -79,23 +82,12 @@ function initialize(obj: TODO, container: TODO) { // 如果请求不是GET,则在URL中自动加上登录态和全局参数 if (obj.method !== "GET") { - if (status.session) { - if (obj.url.indexOf('?') >= 0) { - obj.url += '&' + config.sessionName + '=' + encodeURIComponent(status.session); - } else { - obj.url += '?' + config.sessionName + '=' + encodeURIComponent(status.session); - } - } - - // 如果有全局参数,则在URL中添加 - for (let i in gd) { - if (obj.url.indexOf('?') >= 0) { - obj.url += '&' + i + '=' + gd[i]; - } else { - obj.url += '?' + i + '=' + gd[i]; - } + let params: any = {}; + params[config.sessionName] = status.session; + obj.url = url.setParams(obj.url, params); } + obj.url = url.setParams(obj.url, gd); } durationReporter.start(obj); @@ -127,6 +119,7 @@ function doRequest(obj: TODO) { } function doUploadFile(obj: TODO) { + obj = initialize(obj, 'formData'); obj.count++; wx.uploadFile({ url: obj.url, diff --git a/src/module/responseHandler.ts b/src/module/responseHandler.ts index 350013f..5e3b0df 100644 --- a/src/module/responseHandler.ts +++ b/src/module/responseHandler.ts @@ -42,7 +42,7 @@ function response(res: wx.RequestSuccessCallbackResult | wx.UploadFileSuccessCal requestHandler[method](obj) } }) - } else if (config.successTrigger!(res.data) && typeof obj.success === "function") { + } else if (config.successTrigger!(res.data)) { // 接口返回成功码 let realData = null; try { @@ -52,7 +52,7 @@ function response(res: wx.RequestSuccessCallbackResult | wx.UploadFileSuccessCal } if(!obj.noCacheFlash) { // 如果为了保证页面不闪烁,则不回调,只是缓存最新数据,待下次进入再用 - obj.success(realData); + typeof obj.success === "function" && obj.success(realData); } // 缓存存储 cacheManager.set(obj, realData); diff --git a/src/util/url.ts b/src/util/url.ts new file mode 100644 index 0000000..8f5e493 --- /dev/null +++ b/src/util/url.ts @@ -0,0 +1,28 @@ +function setParams(url: string, params: object) { + let queryStringIndex = url.indexOf('?'); + let kvp: any = {}; + if (queryStringIndex >= 0) { + let oldQueryString = url.substr(queryStringIndex + 1).split('&'); + for (let i = 0; i < oldQueryString.length; i++) { + let kv = oldQueryString[i].split('='); + kvp[kv[0]] = kv[1] + } + } + + kvp = {...kvp, ...params}; + + let queryString = Object.keys(kvp).map(key => { + return `${key}=${encodeURI(kvp[key])}` + }).join('&'); + + if (queryStringIndex >= 0) { + return url.substring(0, queryStringIndex + 1) + queryString + } else { + return url + "?" + queryString + } + +} + +export default { + setParams +}