@magic-xpa/engine 4.801.0-dev481.234 → 4.801.0-dev481.235
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundles/magic-xpa-engine.umd.js +153 -167
- package/bundles/magic-xpa-engine.umd.js.map +1 -1
- package/bundles/magic-xpa-engine.umd.min.js +1 -1
- package/bundles/magic-xpa-engine.umd.min.js.map +1 -1
- package/esm2015/src/ClientManager.js +2 -2
- package/esm2015/src/CurrentClientVersion.js +2 -2
- package/esm2015/src/GUIManager.js +2 -2
- package/esm2015/src/GuiEventsProcessor.js +5 -5
- package/esm2015/src/commands/ClientToServer/BrowserEscEventCommand.js +2 -2
- package/esm2015/src/commands/ClientToServer/ClientOriginatedCommand.js +2 -2
- package/esm2015/src/commands/ClientToServer/ClientOriginatedCommandSerializer.js +3 -3
- package/esm2015/src/commands/ClientToServer/ColumnSortEventCommand.js +2 -2
- package/esm2015/src/commands/ClientToServer/ComputeEventCommand.js +2 -2
- package/esm2015/src/commands/ClientToServer/ContextTerminationEventCommand.js +2 -2
- package/esm2015/src/commands/ClientToServer/ContextTimeoutResetCommand.js +2 -2
- package/esm2015/src/commands/ClientToServer/DataviewCommand.js +2 -2
- package/esm2015/src/commands/ClientToServer/EvaluateCommand.js +2 -2
- package/esm2015/src/commands/ClientToServer/EventCommand.js +2 -2
- package/esm2015/src/commands/ClientToServer/ExecOperCommand.js +2 -2
- package/esm2015/src/commands/ClientToServer/FetchDataControlValuesEventCommand.js +2 -2
- package/esm2015/src/commands/ClientToServer/IndexChangeEventCommand.js +2 -2
- package/esm2015/src/commands/ClientToServer/IniputForceWriteCommand.js +2 -2
- package/esm2015/src/commands/ClientToServer/NonReversibleExitEventCommand.js +2 -2
- package/esm2015/src/commands/ClientToServer/QueryCommand.js +2 -2
- package/esm2015/src/commands/ClientToServer/RecomputeCommand.js +2 -2
- package/esm2015/src/commands/ClientToServer/RefreshEventCommand.js +2 -2
- package/esm2015/src/commands/ClientToServer/RefreshScreenEventCommand.js +2 -2
- package/esm2015/src/commands/ClientToServer/RollbackEventCommand.js +2 -2
- package/esm2015/src/commands/ClientToServer/SubformOpenEventCommand.js +2 -2
- package/esm2015/src/commands/ClientToServer/SubformRefreshEventCommand.js +2 -2
- package/esm2015/src/commands/ClientToServer/TransactionCommand.js +2 -2
- package/esm2015/src/commands/ClientToServer/WriteMessageToServerLogCommand.js +2 -2
- package/esm2015/src/data/DataView.js +2 -2
- package/esm2015/src/data/Field.js +2 -2
- package/esm2015/src/data/Record.js +4 -4
- package/esm2015/src/data/RecordsTable.js +2 -2
- package/esm2015/src/data/TaskTransactionManager.js +2 -2
- package/esm2015/src/data/XMLBasedDcValuesBuilder.js +3 -3
- package/esm2015/src/env/Environment.js +1 -7
- package/esm2015/src/event/Event.js +6 -14
- package/esm2015/src/event/EventsManager.js +32 -32
- package/esm2015/src/event/IEventsManager.js +1 -1
- package/esm2015/src/event/RunTimeEvent.js +7 -7
- package/esm2015/src/exp/ExpressionEvaluator.js +21 -21
- package/esm2015/src/exp/ExpressionLocalJpn.js +3 -3
- package/esm2015/src/gui/MgControl.js +1 -1
- package/esm2015/src/gui/MgForm.js +9 -9
- package/esm2015/src/http/client/HttpClientAsync.js +4 -4
- package/esm2015/src/http/client/HttpClientBase.js +4 -4
- package/esm2015/src/http/client/HttpClientSync.js +3 -3
- package/esm2015/src/remote/RemoteCommandsProcessor.js +7 -8
- package/esm2015/src/rt/Boundary.js +4 -4
- package/esm2015/src/rt/DataviewHeaderBase.js +1 -1
- package/esm2015/src/rt/DataviewHeaderFactory.js +2 -2
- package/esm2015/src/rt/DataviewHeadersSaxHandler.js +2 -2
- package/esm2015/src/rt/Operation.js +5 -5
- package/esm2015/src/rt/RemoteDataviewHeader.js +6 -6
- package/esm2015/src/rt/Transaction.js +2 -2
- package/esm2015/src/tasks/MGDataCollection.js +3 -3
- package/esm2015/src/tasks/RemoteTaskService.js +3 -3
- package/esm2015/src/tasks/Task.js +9 -9
- package/esm2015/src/tasks/TaskServiceBase.js +1 -1
- package/esm2015/src/tasks/sort/SortCollection.js +4 -4
- package/esm2015/src/util/FlowMonitorQueue.js +2 -2
- package/esm2015/src/util/Process.js +2 -2
- package/esm2015/src/util/ReturnResult.js +3 -3
- package/fesm2015/magic-xpa-engine.js +153 -167
- package/fesm2015/magic-xpa-engine.js.map +1 -1
- package/package.json +4 -4
- package/src/GuiEventsProcessor.d.ts +1 -1
- package/src/commands/ClientToServer/BrowserEscEventCommand.d.ts +1 -2
- package/src/commands/ClientToServer/ClientOriginatedCommand.d.ts +1 -2
- package/src/commands/ClientToServer/ColumnSortEventCommand.d.ts +1 -2
- package/src/commands/ClientToServer/ComputeEventCommand.d.ts +1 -2
- package/src/commands/ClientToServer/ContextTerminationEventCommand.d.ts +1 -2
- package/src/commands/ClientToServer/ContextTimeoutResetCommand.d.ts +1 -2
- package/src/commands/ClientToServer/DataviewCommand.d.ts +1 -2
- package/src/commands/ClientToServer/EvaluateCommand.d.ts +1 -2
- package/src/commands/ClientToServer/EventCommand.d.ts +1 -2
- package/src/commands/ClientToServer/ExecOperCommand.d.ts +1 -2
- package/src/commands/ClientToServer/FetchDataControlValuesEventCommand.d.ts +1 -2
- package/src/commands/ClientToServer/IndexChangeEventCommand.d.ts +1 -2
- package/src/commands/ClientToServer/IniputForceWriteCommand.d.ts +1 -2
- package/src/commands/ClientToServer/NonReversibleExitEventCommand.d.ts +1 -2
- package/src/commands/ClientToServer/QueryCommand.d.ts +1 -2
- package/src/commands/ClientToServer/RecomputeCommand.d.ts +1 -2
- package/src/commands/ClientToServer/RefreshEventCommand.d.ts +1 -2
- package/src/commands/ClientToServer/RefreshScreenEventCommand.d.ts +1 -2
- package/src/commands/ClientToServer/RollbackEventCommand.d.ts +1 -2
- package/src/commands/ClientToServer/SubformOpenEventCommand.d.ts +1 -2
- package/src/commands/ClientToServer/SubformRefreshEventCommand.d.ts +1 -2
- package/src/commands/ClientToServer/TransactionCommand.d.ts +1 -2
- package/src/commands/ClientToServer/WriteMessageToServerLogCommand.d.ts +1 -2
- package/src/data/RecordsTable.d.ts +1 -2
- package/src/data/XMLBasedDcValuesBuilder.d.ts +1 -1
- package/src/env/Environment.d.ts +0 -3
- package/src/event/Event.d.ts +0 -3
- package/src/event/EventsManager.d.ts +7 -8
- package/src/event/IEventsManager.d.ts +5 -6
- package/src/exp/ExpressionEvaluator.d.ts +2 -2
- package/src/exp/ExpressionLocalJpn.d.ts +2 -2
- package/src/gui/MgForm.d.ts +4 -4
- package/src/http/client/HttpClientAsync.d.ts +2 -2
- package/src/http/client/HttpClientBase.d.ts +2 -2
- package/src/http/client/HttpClientSync.d.ts +2 -2
- package/src/remote/RemoteCommandsProcessor.d.ts +1 -1
- package/src/rt/DataviewHeaderBase.d.ts +1 -1
- package/src/rt/DataviewHeaderFactory.d.ts +1 -1
- package/src/rt/Operation.d.ts +1 -1
- package/src/rt/RemoteDataviewHeader.d.ts +1 -2
- package/src/rt/Transaction.d.ts +1 -1
- package/src/tasks/RemoteTaskService.d.ts +2 -3
- package/src/tasks/Task.d.ts +1 -1
- package/src/tasks/TaskServiceBase.d.ts +2 -4
- package/src/tasks/sort/SortCollection.d.ts +2 -3
- package/src/util/FlowMonitorQueue.d.ts +1 -1
- package/src/util/Process.d.ts +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { StringBuilder } from "@magic-xpa/mscorelib";
|
|
2
|
-
import {
|
|
2
|
+
import { StorageAttribute, StrUtil, UtilDateJpn } from "@magic-xpa/utils";
|
|
3
3
|
import { Manager } from "@magic-xpa/gui";
|
|
4
4
|
export class ExpressionLocalJpn {
|
|
5
5
|
constructor(expressionEvaluator) {
|
|
@@ -110,7 +110,7 @@ export class ExpressionLocalJpn {
|
|
|
110
110
|
strbufZenkaku = null;
|
|
111
111
|
return strRet;
|
|
112
112
|
}
|
|
113
|
-
eval_op_zimeread(
|
|
113
|
+
eval_op_zimeread() {
|
|
114
114
|
let strRet = null;
|
|
115
115
|
let utilImeJpn = Manager.UtilImeJpn;
|
|
116
116
|
if (utilImeJpn !== null)
|
|
@@ -311,4 +311,4 @@ ExpressionLocalJpn.tableHan2Zen = [
|
|
|
311
311
|
String.fromCharCode(0x30ec), String.fromCharCode(0x30ed), String.fromCharCode(0x30ef),
|
|
312
312
|
String.fromCharCode(0x30f3), String.fromCharCode(0x309b), String.fromCharCode(0x309c)
|
|
313
313
|
];
|
|
314
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXhwcmVzc2lvbkxvY2FsSnBuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW5naW5lL3NyYy9leHAvRXhwcmVzc2lvbkxvY2FsSnBuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsT0FBTyxFQUFjLGdCQUFnQixFQUFFLFdBQVcsRUFBQyxNQUFNLGtCQUFrQixDQUFDO0FBQ3BGLE9BQU8sRUFBUyxPQUFPLEVBQTZCLE1BQU0sZ0JBQWdCLENBQUM7QUFRM0UsTUFBTSxPQUFPLGtCQUFrQjtJQTZKN0IsWUFBWSxtQkFBd0M7UUFGNUMseUJBQW9CLEdBQXdCLElBQUksQ0FBQztRQUd2RCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsbUJBQW1CLENBQUM7SUFDbEQsQ0FBQztJQVNELFdBQVcsQ0FBQyxNQUFjO1FBQ3hCLElBQUksYUFBYSxHQUFrQixJQUFJLGFBQWEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDNUUsSUFBSSxhQUFhLEdBQWtCLElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hELElBQUksTUFBTSxHQUFXLElBQUksQ0FBQztRQUUxQixLQUFLLElBQUksQ0FBQyxHQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUMzRCxJQUFJLE9BQU8sR0FBVyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBR2hELElBQUksTUFBTSxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FB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QUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUMxRCxDQUFDLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsQ0FBQztDQUMzRCxDQUFDO0FBV0cscUNBQWtCLEdBQ3ZCO0lBQ0UsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7Q0FDM0QsQ0FBQztBQVVHLCtCQUFZLEdBQ2pCO0lBQ0UsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO0lBQ3JGLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztJQUNyRixNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7SUFDckYsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO0lBQ3JGLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztJQUNyRixNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7SUFDckYsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO0lBQ3JGLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztJQUNyRixNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7SUFDckYsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO0lBQ3JGLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztJQUNyRixNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7SUFDckYsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO0lBQ3JGLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztJQUNyRixNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7SUFDckYsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO0lBQ3JGLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztJQUNyRixNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7SUFDckYsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO0lBQ3JGLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztJQUNyRixNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7Q0FDdEYsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7U3RyaW5nQnVpbGRlcn0gZnJvbSBcIkBtYWdpYy14cGEvbXNjb3JlbGliXCI7XHJcbmltcG9ydCB7U3RyVXRpbCwgVXRpbEltZUpwbiwgU3RvcmFnZUF0dHJpYnV0ZSwgVXRpbERhdGVKcG59IGZyb20gXCJAbWFnaWMteHBhL3V0aWxzXCI7XHJcbmltcG9ydCB7RXhwVmFsLCBNYW5hZ2VyLCBOVU1fVFlQRSwgRGlzcGxheUNvbnZlcnRvcn0gZnJvbSBcIkBtYWdpYy14cGEvZ3VpXCI7XHJcbmltcG9ydCB7RXhwcmVzc2lvbkV2YWx1YXRvcn0gZnJvbSBcIi4vRXhwcmVzc2lvbkV2YWx1YXRvclwiO1xyXG5cclxuLy8vIDxzdW1tYXJ5PlxyXG4vLy8gICBKUE46IENsYXNzIGZvciBKYXBhbmVzZSBleHRlbmRlZCBmdW5jdGlvbnNcclxuLy8vIDwvc3VtbWFyeT5cclxuLy8vIDxhdXRob3I+ICBUb3NoaXJvIE5ha2F5b3NoaSAoTVNKKVxyXG4vLy8gPC9hdXRob3I+XHJcbmV4cG9ydCBjbGFzcyBFeHByZXNzaW9uTG9jYWxKcG4ge1xyXG4gIHN0YXRpYyB0YWJsZVplbjJIYW46IHN0cmluZ1tdW10gPVxyXG4gICAgW1xyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOWUpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOWYpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwOWQpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwOWUpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwOWYpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwYTApLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmNjcpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmNzEpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmNjgpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmNzIpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmNjkpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmNzMpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmNmEpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmNzQpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmNmIpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmNzUpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmNzYpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmNzYpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZmY5ZSldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmNzcpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmNzcpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZmY5ZSldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmNzgpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmNzgpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZmY5ZSldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmNzkpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmNzkpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZmY5ZSldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmN2EpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmN2EpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZmY5ZSldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmN2IpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmN2IpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZmY5ZSldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmN2MpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmN2MpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZmY5ZSldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmN2QpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmN2QpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZmY5ZSldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmN2UpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmN2UpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZmY5ZSldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmN2YpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmN2YpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZmY5ZSldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmODApLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmODApLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZmY5ZSldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmODEpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmODEpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZmY5ZSldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmNmYpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmODIpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmODIpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZmY5ZSldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmODMpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmODMpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZmY5ZSldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmODQpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmODQpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZmY5ZSldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmODUpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmODYpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmODcpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmODgpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmODkpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOGEpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOGEpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZmY5ZSldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOGEpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZmY5ZildLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOGIpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOGIpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZmY5ZSldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOGIpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZmY5ZildLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOGMpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOGMpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZmY5ZSldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOGMpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZmY5ZildLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOGQpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOGQpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZmY5ZSldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOGQpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZmY5ZildLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOGUpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOGUpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZmY5ZSldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOGUpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZmY5ZildLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOGYpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOTApLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOTEpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOTIpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOTMpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmNmMpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOTQpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmNmQpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOTUpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmNmUpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOTYpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOTcpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOTgpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOTkpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOWEpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOWIpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwZWUpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOWMpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwZjApLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwZjEpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmNjYpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOWQpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmNzMpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZmY5ZSldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmNzYpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmNzkpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCldXHJcbiAgICBdO1xyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIG1hcHBpbmcgdGFibGUgb2YgSmFwYW5lc2UgY2hhcmFjdGVycyAjMlxyXG4gIC8vLyAgIGNvbnZlcnQgZnJvbSB6ZW5rYWt1IChleGNlcHRpb25hbCkgdG8gaGFua2FrdVxyXG4gIC8vL1xyXG4gIC8vLyAgIHJvdyBpbmRleDogbm8gc3BlY2lhbCBtZWFuaW5nXHJcbiAgLy8vICAgY29sdW1uICMxOiB6ZW5rYWt1KGZ1bGwtd2lkdGgpIGNvZGVcclxuICAvLy8gICBjb2x1bW4gIzI6IGhhbmtha3UoaGFsZi13aWR0aCkgY29kZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc3RhdGljIHRhYmxlRXhjZXB0WmVuMkhhbjogc3RyaW5nW11bXSA9XHJcbiAgICBbXHJcbiAgICAgIFtTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MjAxOCksIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDYwKV0sXHJcbiAgICAgIFtTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MjAxOSksIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDI3KV0sXHJcbiAgICAgIFtTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MjAxRCksIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDIyKV0sXHJcbiAgICAgIFtTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzAwMCksIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDIwKV0sXHJcbiAgICAgIFtTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzAwMSksIFN0cmluZy5mcm9tQ2hhckNvZGUoMHhGRjY0KV0sXHJcbiAgICAgIFtTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzAwMiksIFN0cmluZy5mcm9tQ2hhckNvZGUoMHhGRjYxKV0sXHJcbiAgICAgIFtTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzAwQyksIFN0cmluZy5mcm9tQ2hhckNvZGUoMHhGRjYyKV0sXHJcbiAgICAgIFtTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzAwRCksIFN0cmluZy5mcm9tQ2hhckNvZGUoMHhGRjYzKV0sXHJcbiAgICAgIFtTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzBGQiksIFN0cmluZy5mcm9tQ2hhckNvZGUoMHhGRjY1KV0sXHJcbiAgICAgIFtTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzBGQyksIFN0cmluZy5mcm9tQ2hhckNvZGUoMHhGRjcwKV0sXHJcbiAgICAgIFtTdHJpbmcuZnJvbUNoYXJDb2RlKDB4RkZFNSksIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDVDKV1cclxuICAgIF07XHJcblxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgbWFwcGluZyB0YWJsZSBvZiBKYXBhbmVzZSBjaGFyYWN0ZXJzICMzXHJcbiAgLy8vICAgY29udmVydCBmcm9tIGhhbmtha3UgKDB4ZmY2MSB+IDB4ZmY5ZikgdG8gemVua2FrdVxyXG4gIC8vL1xyXG4gIC8vLyAgIHJvdyBpbmRleDogaGFua2FrdShoYWxmLXdpZHRoKSBjb2RlIC0obWludXMpIDB4ZmY2MVxyXG4gIC8vLyAgIGNvbHVtbjogICAgemVua2FrdShmdWxsLXdpZHRoKSBjb2RlXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBzdGF0aWMgdGFibGVIYW4yWmVuOiBzdHJpbmdbXSA9XHJcbiAgICBbXHJcbiAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMDAyKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwMGMpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzAwZCksXHJcbiAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMDAxKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwZmIpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzBmMiksXHJcbiAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMGExKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwYTMpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzBhNSksXHJcbiAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMGE3KSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwYTkpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzBlMyksXHJcbiAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMGU1KSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwZTcpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzBjMyksXHJcbiAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMGZjKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwYTIpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzBhNCksXHJcbiAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMGE2KSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwYTgpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzBhYSksXHJcbiAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMGFiKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwYWQpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzBhZiksXHJcbiAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMGIxKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwYjMpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzBiNSksXHJcbiAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMGI3KSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwYjkpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzBiYiksXHJcbiAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMGJkKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwYmYpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzBjMSksXHJcbiAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMGM0KSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwYzYpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzBjOCksXHJcbiAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMGNhKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwY2IpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzBjYyksXHJcbiAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMGNkKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwY2UpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzBjZiksXHJcbiAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMGQyKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwZDUpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzBkOCksXHJcbiAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMGRiKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwZGUpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzBkZiksXHJcbiAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMGUwKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwZTEpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzBlMiksXHJcbiAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMGU0KSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwZTYpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzBlOCksXHJcbiAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMGU5KSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwZWEpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzBlYiksXHJcbiAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMGVjKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwZWQpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzBlZiksXHJcbiAgICAgIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMGYzKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwOWIpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzA5YylcclxuICAgIF07XHJcblxyXG5cclxuICBwcml2YXRlIF9leHByZXNzaW9uRXZhbHVhdG9yOiBFeHByZXNzaW9uRXZhbHVhdG9yID0gbnVsbDtcclxuXHJcbiAgY29uc3RydWN0b3IoZXhwcmVzc2lvbkV2YWx1YXRvcjogRXhwcmVzc2lvbkV2YWx1YXRvcikge1xyXG4gICAgdGhpcy5fZXhwcmVzc2lvbkV2YWx1YXRvciA9IGV4cHJlc3Npb25FdmFsdWF0b3I7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgSEFOOiBDb252ZXJ0IGEgc3RyaW5nIGZyb20gemVua2FrdShmdWxsLXdpZHRoKSB0byBoYW5rYWt1KGhhbGYtd2lkdGgpXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInN0clZhbDpcIj56ZW5rYWt1IHN0cmluZ1xyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4gaGFuYWtha3Ugc3RyaW5nXHJcbiAgLy8vIDwvcmV0dXJucz5cclxuICBldmFsX29wX2hhbihzdHJWYWw6IHN0cmluZyk6IHN0cmluZyB7XHJcbiAgICBsZXQgc3RyYnVmWmVua2FrdTogU3RyaW5nQnVpbGRlciA9IG5ldyBTdHJpbmdCdWlsZGVyKFN0clV0aWwucnRyaW0oc3RyVmFsKSk7XHJcbiAgICBsZXQgc3RyYnVmSGFua2FrdTogU3RyaW5nQnVpbGRlciA9IG5ldyBTdHJpbmdCdWlsZGVyKDApO1xyXG4gICAgbGV0IHN0clJldDogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgc3RyYnVmWmVua2FrdS5MZW5ndGg7IGkgPSBpICsgMSkge1xyXG4gICAgICBsZXQgY0xldHRlcjogc3RyaW5nID0gc3RyYnVmWmVua2FrdS5nZXRfSXRlbShpKTtcclxuXHJcbiAgICAgIC8vIGRpZ2l0LCBhbHBoYWJldCBhbmQgZXRjLlxyXG4gICAgICBpZiAoMHhmZjAxIDw9IGNMZXR0ZXIuY2hhckNvZGVBdCgwKSAmJiBjTGV0dGVyLmNoYXJDb2RlQXQoMCkgPD0gMHhmZjVlICYmIGNMZXR0ZXIuY2hhckNvZGVBdCgwKSAhPT0gMHhmZjNjICYmIGNMZXR0ZXIuY2hhckNvZGVBdCgwKSAhPT0gMHhmZjQwKSB7XHJcbiAgICAgICAgc3RyYnVmSGFua2FrdS5BcHBlbmQoU3RyaW5nLmZyb21DaGFyQ29kZShjTGV0dGVyLmNoYXJDb2RlQXQoMCkgLSAweGZlZTApKTtcclxuICAgICAgfVxyXG4gICAgICAvLyBrYXRha2FuYVxyXG4gICAgICBlbHNlIGlmICgweDMwOWIgPD0gY0xldHRlci5jaGFyQ29kZUF0KDApICYmIGNMZXR0ZXIuY2hhckNvZGVBdCgwKSA8PSAweDMwZjYpIHtcclxuICAgICAgICBzdHJidWZIYW5rYWt1LkFwcGVuZChFeHByZXNzaW9uTG9jYWxKcG4udGFibGVaZW4ySGFuW2NMZXR0ZXIuY2hhckNvZGVBdCgwKSAtIDB4MzA5Yl1bMF0pO1xyXG5cclxuICAgICAgICBpZiAoRXhwcmVzc2lvbkxvY2FsSnBuLnRhYmxlWmVuMkhhbltjTGV0dGVyLmNoYXJDb2RlQXQoMCkgLSAweDMwOWJdWzFdLmNoYXJDb2RlQXQoMCkgPiAweDAwMDApIHtcclxuICAgICAgICAgIHN0cmJ1Zkhhbmtha3UuQXBwZW5kKEV4cHJlc3Npb25Mb2NhbEpwbi50YWJsZVplbjJIYW5bY0xldHRlci5jaGFyQ29kZUF0KDApIC0gMHgzMDliXVsxXSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC8vIG90aGVyc1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBsZXQgajogbnVtYmVyO1xyXG4gICAgICAgIGZvciAoaiA9IDA7IGogPCBFeHByZXNzaW9uTG9jYWxKcG4udGFibGVFeGNlcHRaZW4ySGFuLmxlbmd0aDsgaisrKSB7XHJcbiAgICAgICAgICBpZiAoY0xldHRlciA9PT0gRXhwcmVzc2lvbkxvY2FsSnBuLnRhYmxlRXhjZXB0WmVuMkhhbltqXVswXSkge1xyXG4gICAgICAgICAgICBzdHJidWZIYW5rYWt1LkFwcGVuZChFeHByZXNzaW9uTG9jYWxKcG4udGFibGVFeGNlcHRaZW4ySGFuW2pdWzFdKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgICB9XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGlmIChqID09PSBFeHByZXNzaW9uTG9jYWxKcG4udGFibGVFeGNlcHRaZW4ySGFuLmxlbmd0aClcclxuICAgICAgICAgIHN0cmJ1Zkhhbmtha3UuQXBwZW5kKGNMZXR0ZXIpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc3RyUmV0ID0gc3RyYnVmSGFua2FrdS5Ub1N0cmluZygpO1xyXG5cclxuICAgIHN0cmJ1Zlplbmtha3UgPSBudWxsO1xyXG4gICAgc3RyYnVmSGFua2FrdSA9IG51bGw7XHJcblxyXG4gICAgcmV0dXJuIHN0clJldDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBaRU4vWkVOUzogQ29udmVydCBhIHN0cmluZyBmcm9tIGhhbmtha3UoaGFsZi13aWR0aCkgdG8gemVua2FrdShmdWxsLXdpZHRoKVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzdHJWYWw6XCI+aGFua2FrdSBzdHJpbmdcclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcIm1vZGU6XCI+c3BlY2lmeSBob3cgdG8gY29udmVydCBhIGhhbmtha3Ugc3BhY2VcclxuICAvLy8gICAwID0gdG8gaGFua2FrdSBzcGFjZSB4IDFcclxuICAvLy8gICAxID0gdG8gemVua2FrdSBzcGFjZSB4IDFcclxuICAvLy8gICAyID0gdG8gaGFua2FrdSBzcGFjZSB4IDJcclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IHplbmtha3Ugc3RyaW5nXHJcbiAgLy8vIDwvcmV0dXJucz5cclxuICBldmFsX29wX3plbnMoc3RyVmFsOiBzdHJpbmcsIG1vZGU6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBsZXQgc3RyYnVmSGFua2FrdTogU3RyaW5nQnVpbGRlciA9IG5ldyBTdHJpbmdCdWlsZGVyKFN0clV0aWwucnRyaW0oc3RyVmFsKSk7XHJcbiAgICBsZXQgc3RyYnVmWmVua2FrdTogU3RyaW5nQnVpbGRlciA9IG5ldyBTdHJpbmdCdWlsZGVyKDApO1xyXG4gICAgbGV0IHN0clJldDogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgc3RyYnVmSGFua2FrdS5MZW5ndGg7IGkgPSBpICsgMSkge1xyXG4gICAgICBsZXQgY0xldHRlcjogc3RyaW5nID0gc3RyYnVmSGFua2FrdS5nZXRfSXRlbShpKTtcclxuXHJcbiAgICAgIC8vIHNwYWNlLCBkaWdpdCwgYWxwaGFiZXQgYW5kIGV0Yy5cclxuICAgICAgaWYgKDB4MDAyMCA8PSBjTGV0dGVyLmNoYXJDb2RlQXQoMCkgJiYgY0xldHRlci5jaGFyQ29kZUF0KDApIDw9IDB4MDA3ZSkge1xyXG5cclxuICAgICAgICBzd2l0Y2ggKGNMZXR0ZXIpIHtcclxuICAgICAgICAgIGNhc2UgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMjApOiAvLyBzcGFjZVxyXG4gICAgICAgICAgICBpZiAobW9kZSA9PT0gMSkge1xyXG4gICAgICAgICAgICAgIHN0cmJ1Zlplbmtha3UuQXBwZW5kKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMDAwKSk7IC8vIHplbmtha3Ugc3BhY2UgeCAxL0Jyb3dzZXJDbGllbnQvXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgZWxzZSBpZiAobW9kZSA9PT0gMikge1xyXG4gICAgICAgICAgICAgIHN0cmJ1Zlplbmtha3UuQXBwZW5kKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDIwKSk7IC8vIGhhbmtha3Ugc3BhY2UgeCAyXHJcbiAgICAgICAgICAgICAgc3RyYnVmWmVua2FrdS5BcHBlbmQoU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMjApKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAvKiBtb2RlID09IDAgKi9cclxuICAgICAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgICAgc3RyYnVmWmVua2FrdS5BcHBlbmQoU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMjApKTsgLy8gaGFua2FrdSBzcGFjZSB4IDFcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcblxyXG4gICAgICAgICAgY2FzZSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAyMik6IC8vIFwiXHJcbiAgICAgICAgICAgIHN0cmJ1Zlplbmtha3UuQXBwZW5kKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgyMDFkKSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuXHJcbiAgICAgICAgICBjYXNlIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDI3KTogLy8gJ1xyXG4gICAgICAgICAgICBzdHJidWZaZW5rYWt1LkFwcGVuZChTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MjAxOSkpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcblxyXG4gICAgICAgICAgY2FzZSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDA1Yyk6IC8vIFxcXHJcbiAgICAgICAgICAgIHN0cmJ1Zlplbmtha3UuQXBwZW5kKFN0cmluZy5mcm9tQ2hhckNvZGUoMHhmZmU1KSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG5cclxuXHJcbiAgICAgICAgICBjYXNlIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDYwKTogLy8gYFxyXG4gICAgICAgICAgICBzdHJidWZaZW5rYWt1LkFwcGVuZChTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MjAxOCkpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcblxyXG4gICAgICAgICAgZGVmYXVsdDpcclxuICAgICAgICAgICAgc3RyYnVmWmVua2FrdS5BcHBlbmQoU3RyaW5nLmZyb21DaGFyQ29kZShjTGV0dGVyLmNoYXJDb2RlQXQoMCkgKyAweGZlZTApKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICAgIC8vIGt1dG91dGVuLCBrYXRha2FuYSBhbmQgZXRjLlxyXG4gICAgICBlbHNlIGlmICgweGZmNjEgPD0gY0xldHRlci5jaGFyQ29kZUF0KDApICYmIGNMZXR0ZXIuY2hhckNvZGVBdCgwKSA8PSAweGZmOWYpIHtcclxuICAgICAgICBsZXQgY0NvbWJpbmU6IHN0cmluZyA9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDAwKTsgLy8gZmxhZyBvZiBkYWt1b24gb3IgaGFuLWRha3VvblxyXG5cclxuICAgICAgICBpZiAoKGkgKyAxKSA8IHN0cmJ1Zkhhbmtha3UuTGVuZ3RoKSB7XHJcbiAgICAgICAgICAvLyBjaGVjayB0aGUgbmV4dCBsZXR0ZXJcclxuICAgICAgICAgIGNDb21iaW5lID0gc3RyYnVmSGFua2FrdS5nZXRfSXRlbShpICsgMSk7XHJcbiAgICAgICAgICBpZiAoY0NvbWJpbmUuY2hhckNvZGVBdCgwKSAhPT0gMHhmZjllICYmIGNDb21iaW5lLmNoYXJDb2RlQXQoMCkgIT09IDB4ZmY5ZilcclxuICAgICAgICAgICAgY0NvbWJpbmUgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY0NvbWJpbmUuY2hhckNvZGVBdCgwKSA9PT0gMHhmZjllKVxyXG4gICAgICAgIC8vIHN5bWJvbCBvZiBkYWt1b25cclxuICAgICAgICB7XHJcbiAgICAgICAgICBpZiAoMHhmZjc2IDw9IGNMZXR0ZXIuY2hhckNvZGVBdCgwKSAmJiBjTGV0dGVyLmNoYXJDb2RlQXQoMCkgPD0gMHhmZjg0IHx8IDB4ZmY4YSA8PSBjTGV0dGVyLmNoYXJDb2RlQXQoMCkgJiYgY0xldHRlci5jaGFyQ29kZUF0KDApIDw9IDB4ZmY4ZSlcclxuICAgICAgICAgICAgc3RyYnVmWmVua2FrdS5BcHBlbmQoKEV4cHJlc3Npb25Mb2NhbEpwbi50YWJsZUhhbjJaZW5bY0xldHRlci5jaGFyQ29kZUF0KDApIC0gMHhmZjYxXSArIDB4MDAxKSk7XHJcbiAgICAgICAgICBlbHNlIGlmIChjTGV0dGVyLmNoYXJDb2RlQXQoMCkgPT09IDB4ZmY3MylcclxuICAgICAgICAgICAgc3RyYnVmWmVua2FrdS5BcHBlbmQoU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwZjQpKTtcclxuICAgICAgICAgIGVsc2VcclxuICAgICAgICAgICAgY0NvbWJpbmUgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCk7IC8vIHRoZSBzeW1ib2wgaXMgaW5kZXBlbmRlbnRcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoY0NvbWJpbmUuY2hhckNvZGVBdCgwKSA9PT0gMHhmZjlmKVxyXG4gICAgICAgIC8vIHN5bWJvbCBvZiBoYW4tZGFrdW9uXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaWYgKDB4ZmY4YSA8PSBjTGV0dGVyLmNoYXJDb2RlQXQoMCkgJiYgY0xldHRlci5jaGFyQ29kZUF0KDApIDw9IDB4ZmY4ZSlcclxuICAgICAgICAgICAgc3RyYnVmWmVua2FrdS5BcHBlbmQoKEV4cHJlc3Npb25Mb2NhbEpwbi50YWJsZUhhbjJaZW5bY0xldHRlci5jaGFyQ29kZUF0KDApIC0gMHhmZjYxXSArIDB4MDAyKSk7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIGNDb21iaW5lID0gU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApOyAvLyB0aGUgc3ltYm9sIGlzIGluZGVwZW5kZW50XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAoY0NvbWJpbmUuY2hhckNvZGVBdCgwKSAhPT0gMHgwMDAwKVxyXG4gICAgICAgICAgaSsrO1xyXG4gICAgICAgIGVsc2VcclxuICAgICAgICAgIHN0cmJ1Zlplbmtha3UuQXBwZW5kKEV4cHJlc3Npb25Mb2NhbEpwbi50YWJsZUhhbjJaZW5bY0xldHRlci5jaGFyQ29kZUF0KDApIC0gMHhmZjYxXSk7XHJcbiAgICAgIH1cclxuICAgICAgLy8gb3RoZXJzXHJcbiAgICAgIGVsc2Uge1xyXG4gICAgICAgIHN0cmJ1Zlplbmtha3UuQXBwZW5kKGNMZXR0ZXIpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcblxyXG4gICAgc3RyUmV0ID0gc3RyYnVmWmVua2FrdS5Ub1N0cmluZygpO1xyXG5cclxuICAgIHN0cmJ1Zkhhbmtha3UgPSBudWxsO1xyXG4gICAgc3RyYnVmWmVua2FrdSA9IG51bGw7XHJcblxyXG4gICAgcmV0dXJuIHN0clJldDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBaSU1FUmVhZDogcmV0dXJuIGNvbXBvc2l0aW9uIHN0cmluZyBpbiBJTUVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGV2YWxfb3BfemltZXJlYWQoZHVtbXk6IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICBsZXQgc3RyUmV0OiBzdHJpbmcgPSBudWxsO1xyXG4gICAgbGV0IHV0aWxJbWVKcG46IFV0aWxJbWVKcG4gPSBNYW5hZ2VyLlV0aWxJbWVKcG47XHJcblxyXG4gICAgaWYgKHV0aWxJbWVKcG4gIT09IG51bGwpXHJcbiAgICAgIHN0clJldCA9IHV0aWxJbWVKcG4uU3RySW1lUmVhZDtcclxuXHJcbiAgICByZXR1cm4gc3RyUmV0O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIFpLQU5BOiBDb252ZXJ0IGEgc3RyaW5nIGZyb20gaGlyYWdhbmEgdG8ga2F0YWthbmEgKGFuZCB2aWNlIHZlcnNhKVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzdHJWYWw6XCI+aGFua2FrdShvciBrYXRha2FuYSkgc3RyaW5nXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJtb2RlOlwiPnNwZWNpZnkgdGhlIGRpcmVjdGlvbiBvZiBjb252ZXJzaW9uXHJcbiAgLy8vICAgMCA9IGZyb20gaGlyYWdhbmEgdG8ga2F0YWthbmFcclxuICAvLy8gICAxID0gZnJvbSBrYXRha2FuYSB0byBoaXJhZ2FuYVxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4ga2F0YWthbmEob3IgaGlyYWdhbmEpIHN0cmluZ1xyXG4gIC8vLyA8L3JldHVybnM+XHJcbiAgZXZhbF9vcF96a2FuYShzdHJWYWw6IHN0cmluZywgbW9kZTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGxldCBzdHJidWZDb252ZXJ0ZWQ6IFN0cmluZ0J1aWxkZXIgPSBuZXcgU3RyaW5nQnVpbGRlcihTdHJVdGlsLnJ0cmltKHN0clZhbCkpO1xyXG4gICAgbGV0IHN0clJldDogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgc3RyYnVmQ29udmVydGVkLkxlbmd0aDsgaSA9IGkgKyAxKSB7XHJcbiAgICAgIGxldCBjTGV0dGVyOiBzdHJpbmcgPSBzdHJidWZDb252ZXJ0ZWQuZ2V0X0l0ZW0oaSk7XHJcblxyXG4gICAgICBpZiAobW9kZSA9PT0gMCkge1xyXG4gICAgICAgIC8vIGhpcmFnYW5hIC0tPiBrYXRha2FuYVxyXG4gICAgICAgIGlmICgweDMwNDEgPD0gY0xldHRlci5jaGFyQ29kZUF0KDApICYmIGNMZXR0ZXIuY2hhckNvZGVBdCgwKSA8PSAweDMwOTMpXHJcbiAgICAgICAgICBzdHJidWZDb252ZXJ0ZWQuc2V0X0l0ZW0oaSwgU3RyaW5nLmZyb21DaGFyQ29kZShjTGV0dGVyLmNoYXJDb2RlQXQoMCkgKyAweDAwNjApKTtcclxuICAgICAgfVxyXG4gICAgICAvLyBrYXRha2FuYSAtLT4gaGlyYWdhbmFcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKDB4MzBBMSA8PSBjTGV0dGVyLmNoYXJDb2RlQXQoMCkgJiYgY0xldHRlci5jaGFyQ29kZUF0KDApIDw9IDB4MzBmMylcclxuICAgICAgICAgIHN0cmJ1ZkNvbnZlcnRlZC5zZXRfSXRlbShpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKGNMZXR0ZXIuY2hhckNvZGVBdCgwKSAtIDB4MDA2MCkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBzdHJSZXQgPSBzdHJidWZDb252ZXJ0ZWQuVG9TdHJpbmcoKTtcclxuICAgIHN0cmJ1ZkNvbnZlcnRlZCA9IG51bGw7XHJcblxyXG4gICAgcmV0dXJuIHN0clJldDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBKQ0RPVzogSmFwYW5lc2UgdmVyc2lvbiBvZiBDRE9XXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBldmFsX29wX2pjZG93KHJlc1ZhbDogRXhwVmFsLCB2YWwxOiBOVU1fVFlQRSwgZGlzcGxheUNvbnZlcnRvcjogRGlzcGxheUNvbnZlcnRvcik6IHZvaWQge1xyXG4gICAgdGhpcy5fZXhwcmVzc2lvbkV2YWx1YXRvci5ldmFsX29wX2RhdGVfc3RyKHJlc1ZhbCwgdmFsMSwgXCJTU1NTU1NUXCIsIGRpc3BsYXlDb252ZXJ0b3IpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIEpNT05USDogSmFwYW5lc2UgdmVyc2lvbiBvZiBOTU9OVEhcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGV2YWxfb3Bfam1vbnRoKHJlc1ZhbDogRXhwVmFsLCB2YWwxOiBFeHBWYWwpOiB2b2lkIHtcclxuICAgIGlmICh2YWwxLk1nTnVtVmFsID09PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuX2V4cHJlc3Npb25FdmFsdWF0b3IuU2V0TlVMTChyZXNWYWwsIFN0b3JhZ2VBdHRyaWJ1dGUuQUxQSEEpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdmFsMS5NZ051bVZhbCA9IHRoaXMuX2V4cHJlc3Npb25FdmFsdWF0b3IubXVsX2FkZCh2YWwxLk1nTnVtVmFsLCAzMSwgLTMwKTtcclxuICAgIHRoaXMuX2V4cHJlc3Npb25FdmFsdWF0b3IuZXZhbF9vcF9tb250aChyZXNWYWwsIHZhbDEpO1xyXG4gICAgbGV0IG1vbnRoOiBudW1iZXIgPSByZXNWYWwuTWdOdW1WYWwuTlVNXzJfTE9ORygpO1xyXG5cclxuICAgIHJlc1ZhbC5BdHRyID0gU3RvcmFnZUF0dHJpYnV0ZS5BTFBIQTtcclxuICAgIHJlc1ZhbC5TdHJWYWwgPSBVdGlsRGF0ZUpwbi5jb252ZXJ0U3RyTW9udGgobW9udGgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIEpORE9XOiBKYXBhbmVzZSB2ZXJzaW9uIG9mIE5ET1dcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGV2YWxfb3Bfam5kb3cocmVzVmFsOiBFeHBWYWwsIHZhbDE6IEV4cFZhbCwgZGlzcGxheUNvbnZlcnRvcjogRGlzcGxheUNvbnZlcnRvcik6IHZvaWQge1xyXG4gICAgaWYgKHZhbDEuTWdOdW1WYWwgPT09IG51bGwpIHtcclxuICAgICAgdGhpcy5fZXhwcmVzc2lvbkV2YWx1YXRvci5TZXROVUxMKHJlc1ZhbCwgU3RvcmFnZUF0dHJpYnV0ZS5BTFBIQSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB2YWwxLk1nTnVtVmFsID0gdGhpcy5fZXhwcmVzc2lvbkV2YWx1YXRvci5tdWxfYWRkKHZhbDEuTWdOdW1WYWwsIDAsIDYpO1xyXG4gICAgdGhpcy5ldmFsX29wX2pjZG93KHJlc1ZhbCwgdmFsMS5NZ051bVZhbCwgZGlzcGxheUNvbnZlcnRvcik7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgSllFQVI6IFJldHVybiBKYXBhbmVzZSB5ZWFyIG9mIGFuIGVyYVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZXZhbF9vcF9qeWVhcihyZXNWYWw6IEV4cFZhbCwgdmFsMTogRXhwVmFsKTogdm9pZCB7XHJcbiAgICB0aGlzLl9leHByZXNzaW9uRXZhbHVhdG9yLmV2YWxfb3BfZGF0ZV9icmsocmVzVmFsLCB2YWwxLk1nTnVtVmFsLCA0KTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBKR0VOR086IFJldHVybiBKYXBhbmVzZSBnZW5nbyAodGhlIG5hbWUgb2YgYW4gZXJhKVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZXZhbF9vcF9qZ2VuZ28ocmVzVmFsOiBFeHBWYWwsIHZhbDE6IE5VTV9UWVBFLCB2YWwyOiBOVU1fVFlQRSwgZGlzcGxheUNvbnZlcnRvcjogRGlzcGxheUNvbnZlcnRvcik6IHZvaWQge1xyXG4gICAgbGV0IHN0ckZvcm1hdDogc3RyaW5nO1xyXG5cclxuICAgIHJlc1ZhbC5BdHRyID0gU3RvcmFnZUF0dHJpYnV0ZS5BTFBIQTtcclxuXHJcbiAgICBpZiAodmFsMSA9PT0gbnVsbCB8fCB2YWwyID09PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuX2V4cHJlc3Npb25FdmFsdWF0b3IuU2V0TlVMTChyZXNWYWwsIFN0b3JhZ2VBdHRyaWJ1dGUuQUxQSEEpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGludFR5cGU6IG51bWJlciA9IHZhbDIuTlVNXzJfTE9ORygpO1xyXG5cclxuICAgIGlmIChpbnRUeXBlID49IDQpXHJcbiAgICAgIHN0ckZvcm1hdCA9IFwiSkpKSlwiO1xyXG4gICAgZWxzZSBpZiAoaW50VHlwZSA+PSAyKVxyXG4gICAgICBzdHJGb3JtYXQgPSBcIkpKXCI7XHJcbiAgICBlbHNlIGlmIChpbnRUeXBlID49IDEpXHJcbiAgICAgIHN0ckZvcm1hdCA9IFwiSlwiO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJlc1ZhbC5TdHJWYWwgPSBcIlwiO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fZXhwcmVzc2lvbkV2YWx1YXRvci5ldmFsX29wX2RhdGVfc3RyKHJlc1ZhbCwgdmFsMSwgc3RyRm9ybWF0LCBkaXNwbGF5Q29udmVydG9yKTtcclxuICB9XHJcbn1cclxuIl19
|
|
314
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiRXhwcmVzc2lvbkxvY2FsSnBuLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW5naW5lL3NyYy9leHAvRXhwcmVzc2lvbkxvY2FsSnBuLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBQyxhQUFhLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNuRCxPQUFPLEVBQUMsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLFdBQVcsRUFBYSxNQUFNLGtCQUFrQixDQUFDO0FBQ3BGLE9BQU8sRUFBMkIsT0FBTyxFQUFXLE1BQU0sZ0JBQWdCLENBQUM7QUFRM0UsTUFBTSxPQUFPLGtCQUFrQjtJQTZKN0IsWUFBWSxtQkFBd0M7UUFGNUMseUJBQW9CLEdBQXdCLElBQUksQ0FBQztRQUd2RCxJQUFJLENBQUMsb0JBQW9CLEdBQUcsbUJBQW1CLENBQUM7SUFDbEQsQ0FBQztJQVNELFdBQVcsQ0FBQyxNQUFjO1FBQ3hCLElBQUksYUFBYSxHQUFrQixJQUFJLGFBQWEsQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFDNUUsSUFBSSxhQUFhLEdBQWtCLElBQUksYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3hELElBQUksTUFBTSxHQUFXLElBQUksQ0FBQztRQUUxQixLQUFLLElBQUksQ0FBQyxHQUFXLENBQUMsRUFBRSxDQUFDLEdBQUcsYUFBYSxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsRUFBRTtZQUMzRCxJQUFJLE9BQU8sR0FBVyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBR2hELElBQUksTUFBTSxJQUFJLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsSUFBSSxNQUFNLElBQUksT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FB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QU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDMUQsQ0FBQyxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLENBQUM7Q0FDM0QsQ0FBQztBQVdHLHFDQUFrQixHQUN2QjtJQUNFLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFELENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFELENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFELENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFELENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFELENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFELENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFELENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFELENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFELENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQzFELENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0NBQzNELENBQUM7QUFVRywrQkFBWSxHQUNqQjtJQUNFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztJQUNyRixNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7SUFDckYsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO0lBQ3JGLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztJQUNyRixNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7SUFDckYsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO0lBQ3JGLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztJQUNyRixNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7SUFDckYsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO0lBQ3JGLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztJQUNyRixNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7SUFDckYsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO0lBQ3JGLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztJQUNyRixNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7SUFDckYsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO0lBQ3JGLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztJQUNyRixNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7SUFDckYsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO0lBQ3JGLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQztJQUNyRixNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDLEVBQUUsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUM7SUFDckYsTUFBTSxDQUFDLFlBQVksQ0FBQyxNQUFNLENBQUMsRUFBRSxNQUFNLENBQUMsWUFBWSxDQUFDLE1BQU0sQ0FBQyxFQUFFLE1BQU0sQ0FBQyxZQUFZLENBQUMsTUFBTSxDQUFDO0NBQ3RGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1N0cmluZ0J1aWxkZXJ9IGZyb20gXCJAbWFnaWMteHBhL21zY29yZWxpYlwiO1xyXG5pbXBvcnQge1N0b3JhZ2VBdHRyaWJ1dGUsIFN0clV0aWwsIFV0aWxEYXRlSnBuLCBVdGlsSW1lSnBufSBmcm9tIFwiQG1hZ2ljLXhwYS91dGlsc1wiO1xyXG5pbXBvcnQge0Rpc3BsYXlDb252ZXJ0b3IsIEV4cFZhbCwgTWFuYWdlciwgTlVNX1RZUEV9IGZyb20gXCJAbWFnaWMteHBhL2d1aVwiO1xyXG5pbXBvcnQge0V4cHJlc3Npb25FdmFsdWF0b3J9IGZyb20gXCIuL0V4cHJlc3Npb25FdmFsdWF0b3JcIjtcclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vICAgSlBOOiBDbGFzcyBmb3IgSmFwYW5lc2UgZXh0ZW5kZWQgZnVuY3Rpb25zXHJcbi8vLyA8L3N1bW1hcnk+XHJcbi8vLyA8YXV0aG9yPiAgVG9zaGlybyBOYWtheW9zaGkgKE1TSilcclxuLy8vIDwvYXV0aG9yPlxyXG5leHBvcnQgY2xhc3MgRXhwcmVzc2lvbkxvY2FsSnBuIHtcclxuICBzdGF0aWMgdGFibGVaZW4ySGFuOiBzdHJpbmdbXVtdID1cclxuICAgIFtcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjllKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjlmKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHgzMDlkKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHgzMDllKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHgzMDlmKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHgzMGEwKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjY3KSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjcxKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjY4KSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjcyKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjY5KSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjczKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjZhKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjc0KSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjZiKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjc1KSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjc2KSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjc2KSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOWUpXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjc3KSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjc3KSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOWUpXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjc4KSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjc4KSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOWUpXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjc5KSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjc5KSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOWUpXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjdhKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjdhKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOWUpXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjdiKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjdiKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOWUpXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjdjKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjdjKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOWUpXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjdkKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjdkKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOWUpXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjdlKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjdlKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOWUpXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjdmKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjdmKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOWUpXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjgwKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjgwKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOWUpXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjgxKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjgxKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOWUpXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjZmKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjgyKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjgyKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOWUpXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjgzKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjgzKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOWUpXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjg0KSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjg0KSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOWUpXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjg1KSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjg2KSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjg3KSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjg4KSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjg5KSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjhhKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjhhKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOWUpXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjhhKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOWYpXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjhiKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjhiKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOWUpXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjhiKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOWYpXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjhjKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjhjKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOWUpXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjhjKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOWYpXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjhkKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjhkKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOWUpXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjhkKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOWYpXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjhlKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjhlKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOWUpXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjhlKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOWYpXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjhmKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjkwKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjkxKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjkyKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjkzKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjZjKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjk0KSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjZkKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjk1KSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjZlKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjk2KSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjk3KSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjk4KSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjk5KSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjlhKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjliKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHgzMGVlKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjljKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHgzMGYwKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHgzMGYxKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjY2KSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjlkKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjczKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweGZmOWUpXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjc2KSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXSxcclxuICAgICAgW1N0cmluZy5mcm9tQ2hhckNvZGUoMHhmZjc5KSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApXVxyXG4gICAgXTtcclxuXHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBtYXBwaW5nIHRhYmxlIG9mIEphcGFuZXNlIGNoYXJhY3RlcnMgIzJcclxuICAvLy8gICBjb252ZXJ0IGZyb20gemVua2FrdSAoZXhjZXB0aW9uYWwpIHRvIGhhbmtha3VcclxuICAvLy9cclxuICAvLy8gICByb3cgaW5kZXg6IG5vIHNwZWNpYWwgbWVhbmluZ1xyXG4gIC8vLyAgIGNvbHVtbiAjMTogemVua2FrdShmdWxsLXdpZHRoKSBjb2RlXHJcbiAgLy8vICAgY29sdW1uICMyOiBoYW5rYWt1KGhhbGYtd2lkdGgpIGNvZGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyB0YWJsZUV4Y2VwdFplbjJIYW46IHN0cmluZ1tdW10gPVxyXG4gICAgW1xyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweDIwMTgpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDA2MCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweDIwMTkpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAyNyldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweDIwMUQpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAyMildLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwMDApLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAyMCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwMDEpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4RkY2NCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwMDIpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4RkY2MSldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwMEMpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4RkY2MildLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwMEQpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4RkY2MyldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwRkIpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4RkY2NSldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwRkMpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4RkY3MCldLFxyXG4gICAgICBbU3RyaW5nLmZyb21DaGFyQ29kZSgweEZGRTUpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDA1QyldXHJcbiAgICBdO1xyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIG1hcHBpbmcgdGFibGUgb2YgSmFwYW5lc2UgY2hhcmFjdGVycyAjM1xyXG4gIC8vLyAgIGNvbnZlcnQgZnJvbSBoYW5rYWt1ICgweGZmNjEgfiAweGZmOWYpIHRvIHplbmtha3VcclxuICAvLy9cclxuICAvLy8gICByb3cgaW5kZXg6IGhhbmtha3UoaGFsZi13aWR0aCkgY29kZSAtKG1pbnVzKSAweGZmNjFcclxuICAvLy8gICBjb2x1bW46ICAgIHplbmtha3UoZnVsbC13aWR0aCkgY29kZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgc3RhdGljIHRhYmxlSGFuMlplbjogc3RyaW5nW10gPVxyXG4gICAgW1xyXG4gICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzAwMiksIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMDBjKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwMGQpLFxyXG4gICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzAwMSksIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMGZiKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwZjIpLFxyXG4gICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzBhMSksIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMGEzKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwYTUpLFxyXG4gICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzBhNyksIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMGE5KSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwZTMpLFxyXG4gICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzBlNSksIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMGU3KSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwYzMpLFxyXG4gICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzBmYyksIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMGEyKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwYTQpLFxyXG4gICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzBhNiksIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMGE4KSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwYWEpLFxyXG4gICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzBhYiksIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMGFkKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwYWYpLFxyXG4gICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzBiMSksIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMGIzKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwYjUpLFxyXG4gICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzBiNyksIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMGI5KSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwYmIpLFxyXG4gICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzBiZCksIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMGJmKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwYzEpLFxyXG4gICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzBjNCksIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMGM2KSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwYzgpLFxyXG4gICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzBjYSksIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMGNiKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwY2MpLFxyXG4gICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzBjZCksIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMGNlKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwY2YpLFxyXG4gICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzBkMiksIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMGQ1KSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwZDgpLFxyXG4gICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzBkYiksIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMGRlKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwZGYpLFxyXG4gICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzBlMCksIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMGUxKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwZTIpLFxyXG4gICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzBlNCksIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMGU2KSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwZTgpLFxyXG4gICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzBlOSksIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMGVhKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwZWIpLFxyXG4gICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzBlYyksIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMGVkKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwZWYpLFxyXG4gICAgICBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzBmMyksIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMDliKSwgU3RyaW5nLmZyb21DaGFyQ29kZSgweDMwOWMpXHJcbiAgICBdO1xyXG5cclxuXHJcbiAgcHJpdmF0ZSBfZXhwcmVzc2lvbkV2YWx1YXRvcjogRXhwcmVzc2lvbkV2YWx1YXRvciA9IG51bGw7XHJcblxyXG4gIGNvbnN0cnVjdG9yKGV4cHJlc3Npb25FdmFsdWF0b3I6IEV4cHJlc3Npb25FdmFsdWF0b3IpIHtcclxuICAgIHRoaXMuX2V4cHJlc3Npb25FdmFsdWF0b3IgPSBleHByZXNzaW9uRXZhbHVhdG9yO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIEhBTjogQ29udmVydCBhIHN0cmluZyBmcm9tIHplbmtha3UoZnVsbC13aWR0aCkgdG8gaGFua2FrdShoYWxmLXdpZHRoKVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzdHJWYWw6XCI+emVua2FrdSBzdHJpbmdcclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+IGhhbmFrYWt1IHN0cmluZ1xyXG4gIC8vLyA8L3JldHVybnM+XHJcbiAgZXZhbF9vcF9oYW4oc3RyVmFsOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgbGV0IHN0cmJ1Zlplbmtha3U6IFN0cmluZ0J1aWxkZXIgPSBuZXcgU3RyaW5nQnVpbGRlcihTdHJVdGlsLnJ0cmltKHN0clZhbCkpO1xyXG4gICAgbGV0IHN0cmJ1Zkhhbmtha3U6IFN0cmluZ0J1aWxkZXIgPSBuZXcgU3RyaW5nQnVpbGRlcigwKTtcclxuICAgIGxldCBzdHJSZXQ6IHN0cmluZyA9IG51bGw7XHJcblxyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IHN0cmJ1Zlplbmtha3UuTGVuZ3RoOyBpID0gaSArIDEpIHtcclxuICAgICAgbGV0IGNMZXR0ZXI6IHN0cmluZyA9IHN0cmJ1Zlplbmtha3UuZ2V0X0l0ZW0oaSk7XHJcblxyXG4gICAgICAvLyBkaWdpdCwgYWxwaGFiZXQgYW5kIGV0Yy5cclxuICAgICAgaWYgKDB4ZmYwMSA8PSBjTGV0dGVyLmNoYXJDb2RlQXQoMCkgJiYgY0xldHRlci5jaGFyQ29kZUF0KDApIDw9IDB4ZmY1ZSAmJiBjTGV0dGVyLmNoYXJDb2RlQXQoMCkgIT09IDB4ZmYzYyAmJiBjTGV0dGVyLmNoYXJDb2RlQXQoMCkgIT09IDB4ZmY0MCkge1xyXG4gICAgICAgIHN0cmJ1Zkhhbmtha3UuQXBwZW5kKFN0cmluZy5mcm9tQ2hhckNvZGUoY0xldHRlci5jaGFyQ29kZUF0KDApIC0gMHhmZWUwKSk7XHJcbiAgICAgIH1cclxuICAgICAgLy8ga2F0YWthbmFcclxuICAgICAgZWxzZSBpZiAoMHgzMDliIDw9IGNMZXR0ZXIuY2hhckNvZGVBdCgwKSAmJiBjTGV0dGVyLmNoYXJDb2RlQXQoMCkgPD0gMHgzMGY2KSB7XHJcbiAgICAgICAgc3RyYnVmSGFua2FrdS5BcHBlbmQoRXhwcmVzc2lvbkxvY2FsSnBuLnRhYmxlWmVuMkhhbltjTGV0dGVyLmNoYXJDb2RlQXQoMCkgLSAweDMwOWJdWzBdKTtcclxuXHJcbiAgICAgICAgaWYgKEV4cHJlc3Npb25Mb2NhbEpwbi50YWJsZVplbjJIYW5bY0xldHRlci5jaGFyQ29kZUF0KDApIC0gMHgzMDliXVsxXS5jaGFyQ29kZUF0KDApID4gMHgwMDAwKSB7XHJcbiAgICAgICAgICBzdHJidWZIYW5rYWt1LkFwcGVuZChFeHByZXNzaW9uTG9jYWxKcG4udGFibGVaZW4ySGFuW2NMZXR0ZXIuY2hhckNvZGVBdCgwKSAtIDB4MzA5Yl1bMV0pO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAvLyBvdGhlcnNcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgbGV0IGo6IG51bWJlcjtcclxuICAgICAgICBmb3IgKGogPSAwOyBqIDwgRXhwcmVzc2lvbkxvY2FsSnBuLnRhYmxlRXhjZXB0WmVuMkhhbi5sZW5ndGg7IGorKykge1xyXG4gICAgICAgICAgaWYgKGNMZXR0ZXIgPT09IEV4cHJlc3Npb25Mb2NhbEpwbi50YWJsZUV4Y2VwdFplbjJIYW5bal1bMF0pIHtcclxuICAgICAgICAgICAgc3RyYnVmSGFua2FrdS5BcHBlbmQoRXhwcmVzc2lvbkxvY2FsSnBuLnRhYmxlRXhjZXB0WmVuMkhhbltqXVsxXSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgICAgICBpZiAoaiA9PT0gRXhwcmVzc2lvbkxvY2FsSnBuLnRhYmxlRXhjZXB0WmVuMkhhbi5sZW5ndGgpXHJcbiAgICAgICAgICBzdHJidWZIYW5rYWt1LkFwcGVuZChjTGV0dGVyKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0clJldCA9IHN0cmJ1Zkhhbmtha3UuVG9TdHJpbmcoKTtcclxuXHJcbiAgICBzdHJidWZaZW5rYWt1ID0gbnVsbDtcclxuICAgIHN0cmJ1Zkhhbmtha3UgPSBudWxsO1xyXG5cclxuICAgIHJldHVybiBzdHJSZXQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgWkVOL1pFTlM6IENvbnZlcnQgYSBzdHJpbmcgZnJvbSBoYW5rYWt1KGhhbGYtd2lkdGgpIHRvIHplbmtha3UoZnVsbC13aWR0aClcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwic3RyVmFsOlwiPmhhbmtha3Ugc3RyaW5nXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJtb2RlOlwiPnNwZWNpZnkgaG93IHRvIGNvbnZlcnQgYSBoYW5rYWt1IHNwYWNlXHJcbiAgLy8vICAgMCA9IHRvIGhhbmtha3Ugc3BhY2UgeCAxXHJcbiAgLy8vICAgMSA9IHRvIHplbmtha3Ugc3BhY2UgeCAxXHJcbiAgLy8vICAgMiA9IHRvIGhhbmtha3Ugc3BhY2UgeCAyXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPiB6ZW5rYWt1IHN0cmluZ1xyXG4gIC8vLyA8L3JldHVybnM+XHJcbiAgZXZhbF9vcF96ZW5zKHN0clZhbDogc3RyaW5nLCBtb2RlOiBudW1iZXIpOiBzdHJpbmcge1xyXG4gICAgbGV0IHN0cmJ1Zkhhbmtha3U6IFN0cmluZ0J1aWxkZXIgPSBuZXcgU3RyaW5nQnVpbGRlcihTdHJVdGlsLnJ0cmltKHN0clZhbCkpO1xyXG4gICAgbGV0IHN0cmJ1Zlplbmtha3U6IFN0cmluZ0J1aWxkZXIgPSBuZXcgU3RyaW5nQnVpbGRlcigwKTtcclxuICAgIGxldCBzdHJSZXQ6IHN0cmluZyA9IG51bGw7XHJcblxyXG4gICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IHN0cmJ1Zkhhbmtha3UuTGVuZ3RoOyBpID0gaSArIDEpIHtcclxuICAgICAgbGV0IGNMZXR0ZXI6IHN0cmluZyA9IHN0cmJ1Zkhhbmtha3UuZ2V0X0l0ZW0oaSk7XHJcblxyXG4gICAgICAvLyBzcGFjZSwgZGlnaXQsIGFscGhhYmV0IGFuZCBldGMuXHJcbiAgICAgIGlmICgweDAwMjAgPD0gY0xldHRlci5jaGFyQ29kZUF0KDApICYmIGNMZXR0ZXIuY2hhckNvZGVBdCgwKSA8PSAweDAwN2UpIHtcclxuXHJcbiAgICAgICAgc3dpdGNoIChjTGV0dGVyKSB7XHJcbiAgICAgICAgICBjYXNlIFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDIwKTogLy8gc3BhY2VcclxuICAgICAgICAgICAgaWYgKG1vZGUgPT09IDEpIHtcclxuICAgICAgICAgICAgICBzdHJidWZaZW5rYWt1LkFwcGVuZChTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MzAwMCkpOyAvLyB6ZW5rYWt1IHNwYWNlIHggMS9Ccm93c2VyQ2xpZW50L1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2UgaWYgKG1vZGUgPT09IDIpIHtcclxuICAgICAgICAgICAgICBzdHJidWZaZW5rYWt1LkFwcGVuZChTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAyMCkpOyAvLyBoYW5rYWt1IHNwYWNlIHggMlxyXG4gICAgICAgICAgICAgIHN0cmJ1Zlplbmtha3UuQXBwZW5kKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDIwKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgLyogbW9kZSA9PSAwICovXHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgIHN0cmJ1Zlplbmtha3UuQXBwZW5kKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDIwKSk7IC8vIGhhbmtha3Ugc3BhY2UgeCAxXHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG5cclxuICAgICAgICAgIGNhc2UgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMjIpOiAvLyBcIlxyXG4gICAgICAgICAgICBzdHJidWZaZW5rYWt1LkFwcGVuZChTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MjAxZCkpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcblxyXG4gICAgICAgICAgY2FzZSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAyNyk6IC8vICdcclxuICAgICAgICAgICAgc3RyYnVmWmVua2FrdS5BcHBlbmQoU3RyaW5nLmZyb21DaGFyQ29kZSgweDIwMTkpKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG5cclxuICAgICAgICAgIGNhc2UgU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwNWMpOiAvLyBcXFxyXG4gICAgICAgICAgICBzdHJidWZaZW5rYWt1LkFwcGVuZChTdHJpbmcuZnJvbUNoYXJDb2RlKDB4ZmZlNSkpO1xyXG4gICAgICAgICAgICBicmVhaztcclxuXHJcblxyXG4gICAgICAgICAgY2FzZSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDA2MCk6IC8vIGBcclxuICAgICAgICAgICAgc3RyYnVmWmVua2FrdS5BcHBlbmQoU3RyaW5nLmZyb21DaGFyQ29kZSgweDIwMTgpKTtcclxuICAgICAgICAgICAgYnJlYWs7XHJcblxyXG5cclxuICAgICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICAgIHN0cmJ1Zlplbmtha3UuQXBwZW5kKFN0cmluZy5mcm9tQ2hhckNvZGUoY0xldHRlci5jaGFyQ29kZUF0KDApICsgMHhmZWUwKSk7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG4gICAgICAvLyBrdXRvdXRlbiwga2F0YWthbmEgYW5kIGV0Yy5cclxuICAgICAgZWxzZSBpZiAoMHhmZjYxIDw9IGNMZXR0ZXIuY2hhckNvZGVBdCgwKSAmJiBjTGV0dGVyLmNoYXJDb2RlQXQoMCkgPD0gMHhmZjlmKSB7XHJcbiAgICAgICAgbGV0IGNDb21iaW5lOiBzdHJpbmcgPSBTdHJpbmcuZnJvbUNoYXJDb2RlKDB4MDAwMCk7IC8vIGZsYWcgb2YgZGFrdW9uIG9yIGhhbi1kYWt1b25cclxuXHJcbiAgICAgICAgaWYgKChpICsgMSkgPCBzdHJidWZIYW5rYWt1Lkxlbmd0aCkge1xyXG4gICAgICAgICAgLy8gY2hlY2sgdGhlIG5leHQgbGV0dGVyXHJcbiAgICAgICAgICBjQ29tYmluZSA9IHN0cmJ1Zkhhbmtha3UuZ2V0X0l0ZW0oaSArIDEpO1xyXG4gICAgICAgICAgaWYgKGNDb21iaW5lLmNoYXJDb2RlQXQoMCkgIT09IDB4ZmY5ZSAmJiBjQ29tYmluZS5jaGFyQ29kZUF0KDApICE9PSAweGZmOWYpXHJcbiAgICAgICAgICAgIGNDb21iaW5lID0gU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNDb21iaW5lLmNoYXJDb2RlQXQoMCkgPT09IDB4ZmY5ZSlcclxuICAgICAgICAvLyBzeW1ib2wgb2YgZGFrdW9uXHJcbiAgICAgICAge1xyXG4gICAgICAgICAgaWYgKDB4ZmY3NiA8PSBjTGV0dGVyLmNoYXJDb2RlQXQoMCkgJiYgY0xldHRlci5jaGFyQ29kZUF0KDApIDw9IDB4ZmY4NCB8fCAweGZmOGEgPD0gY0xldHRlci5jaGFyQ29kZUF0KDApICYmIGNMZXR0ZXIuY2hhckNvZGVBdCgwKSA8PSAweGZmOGUpXHJcbiAgICAgICAgICAgIHN0cmJ1Zlplbmtha3UuQXBwZW5kKChFeHByZXNzaW9uTG9jYWxKcG4udGFibGVIYW4yWmVuW2NMZXR0ZXIuY2hhckNvZGVBdCgwKSAtIDB4ZmY2MV0gKyAweDAwMSkpO1xyXG4gICAgICAgICAgZWxzZSBpZiAoY0xldHRlci5jaGFyQ29kZUF0KDApID09PSAweGZmNzMpXHJcbiAgICAgICAgICAgIHN0cmJ1Zlplbmtha3UuQXBwZW5kKFN0cmluZy5mcm9tQ2hhckNvZGUoMHgzMGY0KSk7XHJcbiAgICAgICAgICBlbHNlXHJcbiAgICAgICAgICAgIGNDb21iaW5lID0gU3RyaW5nLmZyb21DaGFyQ29kZSgweDAwMDApOyAvLyB0aGUgc3ltYm9sIGlzIGluZGVwZW5kZW50XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGNDb21iaW5lLmNoYXJDb2RlQXQoMCkgPT09IDB4ZmY5ZilcclxuICAgICAgICAvLyBzeW1ib2wgb2YgaGFuLWRha3VvblxyXG4gICAgICAgIHtcclxuICAgICAgICAgIGlmICgweGZmOGEgPD0gY0xldHRlci5jaGFyQ29kZUF0KDApICYmIGNMZXR0ZXIuY2hhckNvZGVBdCgwKSA8PSAweGZmOGUpXHJcbiAgICAgICAgICAgIHN0cmJ1Zlplbmtha3UuQXBwZW5kKChFeHByZXNzaW9uTG9jYWxKcG4udGFibGVIYW4yWmVuW2NMZXR0ZXIuY2hhckNvZGVBdCgwKSAtIDB4ZmY2MV0gKyAweDAwMikpO1xyXG4gICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICBjQ29tYmluZSA9IFN0cmluZy5mcm9tQ2hhckNvZGUoMHgwMDAwKTsgLy8gdGhlIHN5bWJvbCBpcyBpbmRlcGVuZGVudFxyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKGNDb21iaW5lLmNoYXJDb2RlQXQoMCkgIT09IDB4MDAwMClcclxuICAgICAgICAgIGkrKztcclxuICAgICAgICBlbHNlXHJcbiAgICAgICAgICBzdHJidWZaZW5rYWt1LkFwcGVuZChFeHByZXNzaW9uTG9jYWxKcG4udGFibGVIYW4yWmVuW2NMZXR0ZXIuY2hhckNvZGVBdCgwKSAtIDB4ZmY2MV0pO1xyXG4gICAgICB9XHJcbiAgICAgIC8vIG90aGVyc1xyXG4gICAgICBlbHNlIHtcclxuICAgICAgICBzdHJidWZaZW5rYWt1LkFwcGVuZChjTGV0dGVyKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIHN0clJldCA9IHN0cmJ1Zlplbmtha3UuVG9TdHJpbmcoKTtcclxuXHJcbiAgICBzdHJidWZIYW5rYWt1ID0gbnVsbDtcclxuICAgIHN0cmJ1Zlplbmtha3UgPSBudWxsO1xyXG5cclxuICAgIHJldHVybiBzdHJSZXQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgWklNRVJlYWQ6IHJldHVybiBjb21wb3NpdGlvbiBzdHJpbmcgaW4gSU1FXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBldmFsX29wX3ppbWVyZWFkKCk6IHN0cmluZyB7XHJcbiAgICBsZXQgc3RyUmV0OiBzdHJpbmcgPSBudWxsO1xyXG4gICAgbGV0IHV0aWxJbWVKcG46IFV0aWxJbWVKcG4gPSBNYW5hZ2VyLlV0aWxJbWVKcG47XHJcblxyXG4gICAgaWYgKHV0aWxJbWVKcG4gIT09IG51bGwpXHJcbiAgICAgIHN0clJldCA9IHV0aWxJbWVKcG4uU3RySW1lUmVhZDtcclxuXHJcbiAgICByZXR1cm4gc3RyUmV0O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIFpLQU5BOiBDb252ZXJ0IGEgc3RyaW5nIGZyb20gaGlyYWdhbmEgdG8ga2F0YWthbmEgKGFuZCB2aWNlIHZlcnNhKVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJzdHJWYWw6XCI+aGFua2FrdShvciBrYXRha2FuYSkgc3RyaW5nXHJcbiAgLy8vIDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJtb2RlOlwiPnNwZWNpZnkgdGhlIGRpcmVjdGlvbiBvZiBjb252ZXJzaW9uXHJcbiAgLy8vICAgMCA9IGZyb20gaGlyYWdhbmEgdG8ga2F0YWthbmFcclxuICAvLy8gICAxID0gZnJvbSBrYXRha2FuYSB0byBoaXJhZ2FuYVxyXG4gIC8vLyA8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz4ga2F0YWthbmEob3IgaGlyYWdhbmEpIHN0cmluZ1xyXG4gIC8vLyA8L3JldHVybnM+XHJcbiAgZXZhbF9vcF96a2FuYShzdHJWYWw6IHN0cmluZywgbW9kZTogbnVtYmVyKTogc3RyaW5nIHtcclxuICAgIGxldCBzdHJidWZDb252ZXJ0ZWQ6IFN0cmluZ0J1aWxkZXIgPSBuZXcgU3RyaW5nQnVpbGRlcihTdHJVdGlsLnJ0cmltKHN0clZhbCkpO1xyXG4gICAgbGV0IHN0clJldDogc3RyaW5nID0gbnVsbDtcclxuXHJcbiAgICBmb3IgKGxldCBpOiBudW1iZXIgPSAwOyBpIDwgc3RyYnVmQ29udmVydGVkLkxlbmd0aDsgaSA9IGkgKyAxKSB7XHJcbiAgICAgIGxldCBjTGV0dGVyOiBzdHJpbmcgPSBzdHJidWZDb252ZXJ0ZWQuZ2V0X0l0ZW0oaSk7XHJcblxyXG4gICAgICBpZiAobW9kZSA9PT0gMCkge1xyXG4gICAgICAgIC8vIGhpcmFnYW5hIC0tPiBrYXRha2FuYVxyXG4gICAgICAgIGlmICgweDMwNDEgPD0gY0xldHRlci5jaGFyQ29kZUF0KDApICYmIGNMZXR0ZXIuY2hhckNvZGVBdCgwKSA8PSAweDMwOTMpXHJcbiAgICAgICAgICBzdHJidWZDb252ZXJ0ZWQuc2V0X0l0ZW0oaSwgU3RyaW5nLmZyb21DaGFyQ29kZShjTGV0dGVyLmNoYXJDb2RlQXQoMCkgKyAweDAwNjApKTtcclxuICAgICAgfVxyXG4gICAgICAvLyBrYXRha2FuYSAtLT4gaGlyYWdhbmFcclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgaWYgKDB4MzBBMSA8PSBjTGV0dGVyLmNoYXJDb2RlQXQoMCkgJiYgY0xldHRlci5jaGFyQ29kZUF0KDApIDw9IDB4MzBmMylcclxuICAgICAgICAgIHN0cmJ1ZkNvbnZlcnRlZC5zZXRfSXRlbShpLCBTdHJpbmcuZnJvbUNoYXJDb2RlKGNMZXR0ZXIuY2hhckNvZGVBdCgwKSAtIDB4MDA2MCkpO1xyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBzdHJSZXQgPSBzdHJidWZDb252ZXJ0ZWQuVG9TdHJpbmcoKTtcclxuICAgIHN0cmJ1ZkNvbnZlcnRlZCA9IG51bGw7XHJcblxyXG4gICAgcmV0dXJuIHN0clJldDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBKQ0RPVzogSmFwYW5lc2UgdmVyc2lvbiBvZiBDRE9XXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBldmFsX29wX2pjZG93KHJlc1ZhbDogRXhwVmFsLCB2YWwxOiBOVU1fVFlQRSwgZGlzcGxheUNvbnZlcnRvcjogRGlzcGxheUNvbnZlcnRvcik6IHZvaWQge1xyXG4gICAgdGhpcy5fZXhwcmVzc2lvbkV2YWx1YXRvci5ldmFsX29wX2RhdGVfc3RyKHJlc1ZhbCwgdmFsMSwgXCJTU1NTU1NUXCIsIGRpc3BsYXlDb252ZXJ0b3IpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIEpNT05USDogSmFwYW5lc2UgdmVyc2lvbiBvZiBOTU9OVEhcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGV2YWxfb3Bfam1vbnRoKHJlc1ZhbDogRXhwVmFsLCB2YWwxOiBFeHBWYWwpOiB2b2lkIHtcclxuICAgIGlmICh2YWwxLk1nTnVtVmFsID09PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuX2V4cHJlc3Npb25FdmFsdWF0b3IuU2V0TlVMTChyZXNWYWwsIFN0b3JhZ2VBdHRyaWJ1dGUuQUxQSEEpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdmFsMS5NZ051bVZhbCA9IHRoaXMuX2V4cHJlc3Npb25FdmFsdWF0b3IubXVsX2FkZCh2YWwxLk1nTnVtVmFsLCAzMSwgLTMwKTtcclxuICAgIHRoaXMuX2V4cHJlc3Npb25FdmFsdWF0b3IuZXZhbF9vcF9tb250aChyZXNWYWwsIHZhbDEpO1xyXG4gICAgbGV0IG1vbnRoOiBudW1iZXIgPSByZXNWYWwuTWdOdW1WYWwuTlVNXzJfTE9ORygpO1xyXG5cclxuICAgIHJlc1ZhbC5BdHRyID0gU3RvcmFnZUF0dHJpYnV0ZS5BTFBIQTtcclxuICAgIHJlc1ZhbC5TdHJWYWwgPSBVdGlsRGF0ZUpwbi5jb252ZXJ0U3RyTW9udGgobW9udGgpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIEpORE9XOiBKYXBhbmVzZSB2ZXJzaW9uIG9mIE5ET1dcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGV2YWxfb3Bfam5kb3cocmVzVmFsOiBFeHBWYWwsIHZhbDE6IEV4cFZhbCwgZGlzcGxheUNvbnZlcnRvcjogRGlzcGxheUNvbnZlcnRvcik6IHZvaWQge1xyXG4gICAgaWYgKHZhbDEuTWdOdW1WYWwgPT09IG51bGwpIHtcclxuICAgICAgdGhpcy5fZXhwcmVzc2lvbkV2YWx1YXRvci5TZXROVUxMKHJlc1ZhbCwgU3RvcmFnZUF0dHJpYnV0ZS5BTFBIQSk7XHJcbiAgICAgIHJldHVybjtcclxuICAgIH1cclxuXHJcbiAgICB2YWwxLk1nTnVtVmFsID0gdGhpcy5fZXhwcmVzc2lvbkV2YWx1YXRvci5tdWxfYWRkKHZhbDEuTWdOdW1WYWwsIDAsIDYpO1xyXG4gICAgdGhpcy5ldmFsX29wX2pjZG93KHJlc1ZhbCwgdmFsMS5NZ051bVZhbCwgZGlzcGxheUNvbnZlcnRvcik7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgSllFQVI6IFJldHVybiBKYXBhbmVzZSB5ZWFyIG9mIGFuIGVyYVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZXZhbF9vcF9qeWVhcihyZXNWYWw6IEV4cFZhbCwgdmFsMTogRXhwVmFsKTogdm9pZCB7XHJcbiAgICB0aGlzLl9leHByZXNzaW9uRXZhbHVhdG9yLmV2YWxfb3BfZGF0ZV9icmsocmVzVmFsLCB2YWwxLk1nTnVtVmFsLCA0KTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBKR0VOR086IFJldHVybiBKYXBhbmVzZSBnZW5nbyAodGhlIG5hbWUgb2YgYW4gZXJhKVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZXZhbF9vcF9qZ2VuZ28ocmVzVmFsOiBFeHBWYWwsIHZhbDE6IE5VTV9UWVBFLCB2YWwyOiBOVU1fVFlQRSwgZGlzcGxheUNvbnZlcnRvcjogRGlzcGxheUNvbnZlcnRvcik6IHZvaWQge1xyXG4gICAgbGV0IHN0ckZvcm1hdDogc3RyaW5nO1xyXG5cclxuICAgIHJlc1ZhbC5BdHRyID0gU3RvcmFnZUF0dHJpYnV0ZS5BTFBIQTtcclxuXHJcbiAgICBpZiAodmFsMSA9PT0gbnVsbCB8fCB2YWwyID09PSBudWxsKSB7XHJcbiAgICAgIHRoaXMuX2V4cHJlc3Npb25FdmFsdWF0b3IuU2V0TlVMTChyZXNWYWwsIFN0b3JhZ2VBdHRyaWJ1dGUuQUxQSEEpO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IGludFR5cGU6IG51bWJlciA9IHZhbDIuTlVNXzJfTE9ORygpO1xyXG5cclxuICAgIGlmIChpbnRUeXBlID49IDQpXHJcbiAgICAgIHN0ckZvcm1hdCA9IFwiSkpKSlwiO1xyXG4gICAgZWxzZSBpZiAoaW50VHlwZSA+PSAyKVxyXG4gICAgICBzdHJGb3JtYXQgPSBcIkpKXCI7XHJcbiAgICBlbHNlIGlmIChpbnRUeXBlID49IDEpXHJcbiAgICAgIHN0ckZvcm1hdCA9IFwiSlwiO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIHJlc1ZhbC5TdHJWYWwgPSBcIlwiO1xyXG4gICAgICByZXR1cm47XHJcbiAgICB9XHJcblxyXG4gICAgdGhpcy5fZXhwcmVzc2lvbkV2YWx1YXRvci5ldmFsX29wX2RhdGVfc3RyKHJlc1ZhbCwgdmFsMSwgc3RyRm9ybWF0LCBkaXNwbGF5Q29udmVydG9yKTtcclxuICB9XHJcbn1cclxuIl19
|
|
@@ -421,4 +421,4 @@ export class MgControl extends MgControlBase {
|
|
|
421
421
|
}
|
|
422
422
|
}
|
|
423
423
|
MgControl.ReturnToCtrl = null;
|
|
424
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWdDb250cm9sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW5naW5lL3NyYy9ndWkvTWdDb250cm9sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsUUFBUSxFQUNSLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsY0FBYyxFQUNkLGFBQWEsRUFHYixhQUFhLEVBR2QsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBRUwsaUJBQWlCLEVBQ2pCLE1BQU0sRUFDTixhQUFhLEVBQ2Isa0JBQWtCLEVBQ2xCLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gsY0FBYyxFQUVmLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUN0RCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBSzdDLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUM5RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFRL0MsTUFBTSxPQUFPLFNBQVUsU0FBUSxhQUFhO0lBb0MxQyxZQUFZLElBQW9CLEVBQUUsa0JBQXdCLEVBQUUsK0JBQXdDO1FBQ2xHLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQ3hCLEtBQUssRUFBRSxDQUFDO2FBQ0wsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixLQUFLLElBQUksSUFBSSxrQkFBa0IsWUFBWSxRQUFRLENBQUMs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T0FBTyxLQUFLLENBQUM7YUFDZDtZQUVELElBQUksTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUM1RCxJQUFJLENBQUMsTUFBTTtnQkFDVCxNQUFNLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLGtDQUFrQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBRWpHLElBQUksY0FBYyxFQUFFO2dCQUNsQixRQUFRLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7Z0JBQ25FLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQzthQUNuQjtZQUdELE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7S0FBQTs7QUEva0JNLHNCQUFZLEdBQWMsSUFBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21tYW5kcyxcclxuICBDb21tYW5kVHlwZSxcclxuICBHdWlEYXRhQ29sbGVjdGlvbixcclxuICBIdG1sUHJvcGVydGllcyxcclxuICBNZ0NvbnRyb2xCYXNlLFxyXG4gIE1nRm9ybUJhc2UsXHJcbiAgUHJvcGVydHksXHJcbiAgUHJvcEludGVyZmFjZSxcclxuICBQcm9wUGFyZW50SW50ZXJmYWNlLFxyXG4gIFZhbGlkYXRpb25EZXRhaWxzXHJcbn0gZnJvbSAnQG1hZ2ljLXhwYS9ndWknO1xyXG5pbXBvcnQge1xyXG4gIENvbnN0YW50cyxcclxuICBJbnRlcm5hbEludGVyZmFjZSxcclxuICBMb2dnZXIsXHJcbiAgTWdDb250cm9sVHlwZSxcclxuICBTY3JvbGxCYXJUaHVtYlR5cGUsXHJcbiAgU3RvcmFnZUF0dHJpYnV0ZSxcclxuICBTdWJmb3JtVHlwZSxcclxuICBUYWJsZUJlaGF2aW91cixcclxuICBYbWxQYXJzZXJcclxufSBmcm9tICdAbWFnaWMteHBhL3V0aWxzJztcclxuaW1wb3J0IHsgRGVidWcsIE5TdHJpbmcgfSBmcm9tICdAbWFnaWMteHBhL21zY29yZWxpYic7XHJcbmltcG9ydCB7IEFyZ3VtZW50c0xpc3QgfSBmcm9tICcuLi9ydC9Bcmd1bWVudHNMaXN0JztcclxuaW1wb3J0IHsgVGFza0Jhc2UgfSBmcm9tICcuLi90YXNrcy9UYXNrQmFzZSc7XHJcbmltcG9ydCB7IE1nRm9ybSB9IGZyb20gJy4vTWdGb3JtJztcclxuaW1wb3J0IHsgRmllbGQgfSBmcm9tICcuLi9kYXRhL0ZpZWxkJztcclxuaW1wb3J0IHsgRGF0YVZpZXcgfSBmcm9tICcuLi9kYXRhL0RhdGFWaWV3JztcclxuaW1wb3J0IHsgUmVjb3JkIH0gZnJvbSAnLi4vZGF0YS9SZWNvcmQnO1xyXG5pbXBvcnQgeyBDb25zdEludGVyZmFjZSB9IGZyb20gJy4uL0NvbnN0SW50ZXJmYWNlJztcclxuaW1wb3J0IHsgTGFzdEZvY3VzZWRNYW5hZ2VyIH0gZnJvbSAnLi4vcnQvTGFzdEZvY3VzZWRNYW5hZ2VyJztcclxuaW1wb3J0IHsgQWNjZXNzSGVscGVyIH0gZnJvbSAnLi4vQWNjZXNzSGVscGVyJztcclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vICAgZGF0YSBmb3IgPGNvbnRyb2w+IC4uLjwvY29udHJvbD4gdGFnXHJcbi8vLyA8L3N1bW1hcnk+XHJcbi8vLyA8YXV0aG9yPiAgZWh1ZG1cclxuLy8vXHJcbi8vLyA8L2F1dGhvcj5cclxuZXhwb3J0IGNsYXNzIE1nQ29udHJvbCBleHRlbmRzIE1nQ29udHJvbEJhc2UgaW1wbGVtZW50cyBQcm9wUGFyZW50SW50ZXJmYWNlIHtcclxuICBwcml2YXRlIF9mb2N1c2VkU3RvcEV4ZWN1dGlvbjogYm9vbGVhbjsgLy8gdXNlZCB0byByZW1lbWJlciBzdG9wRXhlY3V0aW9uIGZsYWcgaW4gdGhlIGVuZCBvZlxyXG4gIHByaXZhdGUgX2luQ29udHJvbFN1ZmZpeDogYm9vbGVhbjsgLy8gdHJ1ZSwgaXMgY29udHJvbCBpcyBpbiBjb250cm9sIHN1ZmZpeFxyXG4gIHByaXZhdGUgX3J0RXZ0VGFzazogVGFza0Jhc2U7XHJcblxyXG4gIHByaXZhdGUgX3N1YmZvcm1UYXNrSWQ6IHN0cmluZzsgLy8gdGhlIHRhc2sgaWQgb2YgdGhlIHN1YiBmb3JtIHRhc2sgKGlmIHRoaXNcclxuICBwcml2YXRlIF9zdWJmb3JtVGFzazogVGFza0Jhc2U7IC8vIHJlZmVyZW5jZSB0byB0YXNrIG9mIHRoZSBzdWIgZm9ybSB0YXNrXHJcblxyXG4gIElzSW50ZXJhY3RpdmVVcGRhdGU6IGJvb2xlYW47IC8vIHRydWUgaWYgdGhpcyBjb250cm9sIHdhcyBtb2RpZmllZCBieSB1c2VyXHJcbiAgcHJpdmF0ZSByZWZyZXNoT25TdHJpbmc6IHN0cmluZzsgLy8gT25seSBmb3Igb2ZmbGluZS4gR2V0IGl0IGZyb20gWE1MIGFuZCBwdXQgaXQgb24gdGhlIHN1YmZvcm0gdGFzayB3aGVuIHRoZSBzdWJmb3JtIHRhc2sgaXMgb3BlbmVkXHJcbiAgU3ViZm9ybUxvYWRlZDogYm9vbGVhbjsgLy8gdHJ1ZSwgaWYgdGhlIHN1YmZvcm0gdGFzayB3YXMgbG9hZGVkIGFscmVhZHlcclxuICBIYXNab29tSGFuZGxlcjogYm9vbGVhbjsgLy8gaWYgVFJVRSwgdGhlcmUgaXMgYSB6b29tIGhhbmRsZXIgb24gdGhpcyBjdHJsXHJcbiAgQXJnTGlzdDogQXJndW1lbnRzTGlzdDsgLy8gYXJndW1lbnQgbGlzdCBidWlsdCBmcm9tIHRoZSBwcm9wZXJ0eVxyXG5cclxuICBzdGF0aWMgUmV0dXJuVG9DdHJsOiBNZ0NvbnRyb2wgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIGluaXRpYWxpemUoKSB7XHJcbiAgICB0aGlzLl9mb2N1c2VkU3RvcEV4ZWN1dGlvbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5faW5Db250cm9sU3VmZml4ID0gZmFsc2U7XHJcbiAgICB0aGlzLl9ydEV2dFRhc2sgPSBudWxsO1xyXG4gICAgdGhpcy5fc3ViZm9ybVRhc2tJZCA9IG51bGw7XHJcbiAgICB0aGlzLl9zdWJmb3JtVGFzayA9IG51bGw7XHJcbiAgICB0aGlzLklzSW50ZXJhY3RpdmVVcGRhdGUgPSBmYWxzZTtcclxuICAgIHRoaXMucmVmcmVzaE9uU3RyaW5nID0gbnVsbDtcclxuICAgIHRoaXMuU3ViZm9ybUxvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5IYXNab29tSGFuZGxlciA9IGZhbHNlO1xyXG4gICAgdGhpcy5BcmdMaXN0ID0gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBDVE9SXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBjb25zdHJ1Y3RvcigpO1xyXG4gIGNvbnN0cnVjdG9yKHR5cGU6IE1nQ29udHJvbFR5cGUpO1xyXG4gIGNvbnN0cnVjdG9yKHR5cGU6IE1nQ29udHJvbFR5cGUsIHRhc2s6IFRhc2tCYXNlLCBwYXJlbnRDb250cm9sOiBudW1iZXIpO1xyXG4gIGNvbnN0cnVjdG9yKHR5cGU6IE1nQ29udHJvbFR5cGUsIHBhcmVudE1nRm9ybTogTWdGb3JtQmFzZSwgcGFyZW50Q29udHJvbElkeDogbnVtYmVyKTtcclxuICBjb25zdHJ1Y3Rvcih0eXBlPzogTWdDb250cm9sVHlwZSwgdGFza09yUGFyZW50TWdGb3JtPzogYW55LCBwYXJlbnRDb250cm9sT3JQYXJlbnRDb250cm9sSWR4PzogbnVtYmVyKSB7XHJcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMClcclxuICAgICAgc3VwZXIoKTtcclxuICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDMgJiYgKHR5cGUgPT09IG51bGwgfHwgdHlwZS5jb25zdHJ1Y3RvciA9PT0gTnVtYmVyKSAmJiAodGFza09yUGFyZW50TWdGb3JtID09PSBudWxsIHx8IHRhc2tPclBhcmVudE1nRm9ybSBpbnN0YW5jZW9mIFRhc2tCYXNlKSAmJiAocGFyZW50Q29udHJvbE9yUGFyZW50Q29udHJvbElkeCA9PT0gbnVsbCB8fCBwYXJlbnRDb250cm9sT3JQYXJlbnRDb250cm9sSWR4LmNvbnN0cnVjdG9yID09PSBOdW1iZXIpKVxyXG4gICAgICBzdXBlcih0eXBlLCB0YXNrT3JQYXJlbnRNZ0Zvcm0uZ2V0Rm9ybSgpLCBwYXJlbnRDb250cm9sT3JQYXJlbnRDb250cm9sSWR4KTtcclxuICAgIGVsc2VcclxuICAgICAgc3VwZXIodHlwZSwgdGFza09yUGFyZW50TWdGb3JtLCBwYXJlbnRDb250cm9sT3JQYXJlbnRDb250cm9sSWR4KTtcclxuXHJcbiAgICB0aGlzLmluaXRpYWxpemUoKTtcclxuICB9XHJcblxyXG4gIEdldFZhckluZGV4KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gKDxEYXRhVmlldz5zdXBlci5nZXRGb3JtKCkuZ2V0VGFzaygpLkRhdGFWaWV3KS5EdmNvdW50ICsgdGhpcy52ZWVJbmR4O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBTZXQgYXJndW1lbnRzIGZyb20gdGhlIHByb3BlcnR5XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJtZ0Zvcm1cIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImRpdElkeFwiPjwvcGFyYW0+XHJcbiAgYXN5bmMgZmlsbERhdGEobWdGb3JtOiBNZ0Zvcm1CYXNlLCBkaXRJZHg6IG51bWJlciwgcGFyc2VyOiBYbWxQYXJzZXIpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHN1cGVyLmZpbGxEYXRhKG1nRm9ybSwgZGl0SWR4LCBwYXJzZXIpO1xyXG4gICAgdGhpcy5BcmdMaXN0ID0gYXdhaXQgdGhpcy5HZXRBcmd1bWVudExpc3QoKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgdGhlIGNvbnRyb2wgYXR0cmlidXRlc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgU2V0QXR0cmlidXRlKGF0dHJpYnV0ZTogc3RyaW5nLCB2YWx1ZVN0cjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgaXNUYWdQcm9jZXNzZWQ6IGJvb2xlYW4gPSBzdXBlci5TZXRBdHRyaWJ1dGUoYXR0cmlidXRlLCB2YWx1ZVN0cik7XHJcbiAgICBpZiAoIWlzVGFnUHJvY2Vzc2VkKSB7XHJcbiAgICAgIHN3aXRjaCAoYXR0cmlidXRlKSB7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX1NVQkZPUk1fVEFTSzpcclxuICAgICAgICAgIHRoaXMuX3N1YmZvcm1UYXNrSWQgPSB2YWx1ZVN0cjtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9SRUZSRVNIT046XHJcbiAgICAgICAgICB0aGlzLnJlZnJlc2hPblN0cmluZyA9IHZhbHVlU3RyLnRyaW0oKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBpc1RhZ1Byb2Nlc3NlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlRXhjZXB0aW9uVG9Mb2dXaXRoTXNnKE5TdHJpbmcuRm9ybWF0KFwiVW5yZWNvZ25pemVkIGF0dHJpYnV0ZTogJ3swfSdcIiwgYXR0cmlidXRlKSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGlzVGFnUHJvY2Vzc2VkO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBidWlsZCBBcmd1bWVudCBsaXN0IGZyb20gdGhlIHByb3BlcnR5XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIGFzeW5jIEdldEFyZ3VtZW50TGlzdCgpOiBQcm9taXNlPEFyZ3VtZW50c0xpc3Q+IHtcclxuICAgIGxldCBhcmdMaXN0OiBBcmd1bWVudHNMaXN0ID0gbnVsbDtcclxuICAgIGlmICh0aGlzLl9wcm9wVGFiID09PSBudWxsKVxyXG4gICAgICByZXR1cm4gYXJnTGlzdDtcclxuICAgIGxldCBBcmdMaXN0UHJvcDogUHJvcGVydHkgPSB0aGlzLl9wcm9wVGFiLmdldFByb3BCeUlkKFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1BBUkFNRVRFUlMpO1xyXG4gICAgaWYgKEFyZ0xpc3RQcm9wID09PSBudWxsKVxyXG4gICAgICByZXR1cm4gYXJnTGlzdDtcclxuXHJcbiAgICBsZXQgcGFybXM6IHN0cmluZyA9IGF3YWl0IEFyZ0xpc3RQcm9wLmdldFZhbHVlKCk7XHJcbiAgICBpZiAocGFybXMgIT09IG51bGwpIHtcclxuICAgICAgYXJnTGlzdCA9IG5ldyBBcmd1bWVudHNMaXN0KCk7XHJcbiAgICAgIGFyZ0xpc3QuZmlsbExpc3QocGFybXMsIDxUYXNrQmFzZT5zdXBlci5nZXRGb3JtKCkuZ2V0VGFzaygpKTtcclxuICAgICAgaWYgKHRoaXMucmVmcmVzaE9uU3RyaW5nICE9PSBudWxsKVxyXG4gICAgICAgIGFyZ0xpc3QuUmVmcmVzaE9uU3RyaW5nID0gdGhpcy5yZWZyZXNoT25TdHJpbmc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXJnTGlzdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm4gdHJ1ZSBpZiB0aGlzIGNvbnRyb2wgaXMgZGVzY2VuZGFudCBvZiB0aGUgcGFyZW50Rm9ybVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJwYXJlbnRGb3JtXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIGlzRGVzY2VuZGVudChwYXJlbnRGb3JtOiBNZ0Zvcm0pOiBib29sZWFuIHtcclxuICAgIGxldCBpc0Rlc2NlbmRlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGxldCBjaGVja0N1cnJlbnRGb3JtOiBNZ0Zvcm0gPSA8TWdGb3JtPnN1cGVyLmdldEZvcm0oKTtcclxuXHJcbiAgICBEZWJ1Zy5Bc3NlcnQocGFyZW50Rm9ybSAhPT0gbnVsbCk7XHJcblxyXG4gICAgd2hpbGUgKCFpc0Rlc2NlbmRlbnQgJiYgY2hlY2tDdXJyZW50Rm9ybSAhPT0gbnVsbCkge1xyXG4gICAgICBpZiAocGFyZW50Rm9ybSA9PT0gY2hlY2tDdXJyZW50Rm9ybSlcclxuICAgICAgICBpc0Rlc2NlbmRlbnQgPSB0cnVlO1xyXG5cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgbGV0IGN1cnJUYXNrOiBUYXNrQmFzZSA9IDxUYXNrQmFzZT5jaGVja0N1cnJlbnRGb3JtLmdldFRhc2soKTtcclxuICAgICAgICBpZiAoY3VyclRhc2suZ2V0UGFyZW50KCkgIT09IG51bGwpXHJcbiAgICAgICAgICBjaGVja0N1cnJlbnRGb3JtID0gPE1nRm9ybT5jdXJyVGFzay5nZXRQYXJlbnQoKS5nZXRGb3JtKCk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBpc0Rlc2NlbmRlbnQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgUmVmcmVzaCBjb250cm9sIGRpc3BsYXkgaWYgaXQgaGFzIGEgcHJvcGVydHkgd2hpY2ggaXMgYW4gZXhwcmVzc2lvblxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHVibGljIGFzeW5jIHJlZnJlc2hPbkV4cHJlc3Npb24oKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBsZXQgaTogbnVtYmVyO1xyXG4gICAgbGV0IHNpemU6IG51bWJlciA9ICh0aGlzLl9wcm9wVGFiID09PSBudWxsID8gMCA6IHRoaXMuX3Byb3BUYWIuZ2V0U2l6ZSgpKTtcclxuICAgIGxldCBwcm9wOiBQcm9wZXJ0eTtcclxuICAgIGxldCByZWZyZXNoOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgZm9yIChpID0gMDsgaSA8IHNpemUgJiYgIXJlZnJlc2g7IGkrKykge1xyXG4gICAgICBwcm9wID0gdGhpcy5fcHJvcFRhYi5nZXRQcm9wKGkpO1xyXG5cclxuICAgICAgc3dpdGNoIChwcm9wLmdldElEKCkpIHtcclxuICAgICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0RBVEE6XHJcbiAgICAgICAgICBpZiAoIXByb3AuaXNFeHByZXNzaW9uKCkgJiYgdGhpcy5fZmllbGQgIT09IG51bGwgJiYgdGhpcy5fZmllbGQuZ2V0VGFzaygpICE9PSB0aGlzLmdldEZvcm0oKS5nZXRUYXNrKCkpIHtcclxuICAgICAgICAgICAgcmVmcmVzaCA9IHRydWU7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIC8qICBmYWxscyB0aHJvdWdoICovXHJcbiAgICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9GT1JNQVQ6XHJcbiAgICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9WSVNJQkxFOlxyXG4gICAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfRU5BQkxFRDpcclxuICAgICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1JBTkdFOlxyXG4gICAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfVFJBTlNMQVRPUjpcclxuICAgICAgICAgIGlmIChwcm9wLmlzRXhwcmVzc2lvbigpKVxyXG4gICAgICAgICAgICByZWZyZXNoID0gdHJ1ZTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBpZiAocmVmcmVzaClcclxuICAgICAgICBhd2FpdCB0aGlzLlJlZnJlc2hEaXNwbGF5KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBpbnZva2UoKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICBsZXQgaW52b2tlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8vIGlmIHRoZSBjb250cm9sIGlzIG5vdCB2aXNpYmxlLCBub3QgZW5hYmxlZCBvciBub3QgcGFya2FibGUgc2tpcCB0aGlzIGNvbnRyb2xcclxuICAgIGlmIChhd2FpdCB0aGlzLmlzUGFya2FibGUodHJ1ZSkpIHtcclxuICAgICAgYXdhaXQgQWNjZXNzSGVscGVyLmV2ZW50c01hbmFnZXIuaGFuZGxlSW50ZXJuYWxFdmVudFdpdGhNZ0NvbnRyb2xCYXNlKHRoaXMsIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX1BSRUZJWCk7XHJcbiAgICAgIGludm9rZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGludm9rZWQ7XHJcbiAgfVxyXG5cclxuICBhc3luYyBpc1BhcmthYmxlKGNoZWNrRW5hYmxlZEFuZFZpc2libGU6IGJvb2xlYW4pOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGxldCByZXN1bHQ6IGJvb2xlYW4gPSAhc3VwZXIuaXNJbWFnZUNvbnRyb2woKTtcclxuICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgYXdhaXQgc3VwZXIuY2hlY2tQcm9wKFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0VOQUJMRUQsIHRydWUpO1xyXG5cclxuICAgICAgYXdhaXQgc3VwZXIuY2hlY2tQcm9wKFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1ZJU0lCTEUsIHRydWUpO1xyXG4gICAgICByZXN1bHQgPSBhd2FpdCBzdXBlci5pc1BhcmthYmxlKGNoZWNrRW5hYmxlZEFuZFZpc2libGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUgc3ViZm9ybSB0YXNrIGlkIG9mIHRoZSBjb250cm9sXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRTdWJmb3JtVGFza0lkKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fc3ViZm9ybVRhc2tJZDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBmaW5kIHRoZSBzdWJmb3JtIHRhc2sgYWNjb3JkaW5nIHRvIGl0cyBpZCBhbmQgc2F2ZSBpdFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgaW5pdFN1YmZvcm1UYXNrKCk6IHZvaWQge1xyXG4gICAgaWYgKHN1cGVyLmlzU3ViZm9ybSgpKVxyXG4gICAgICB0aGlzLl9zdWJmb3JtVGFzayA9IDxUYXNrQmFzZT5HdWlEYXRhQ29sbGVjdGlvbi5NR0RhdGFUYWJsZS5HZXRUYXNrQnlJRCh0aGlzLl9zdWJmb3JtVGFza0lkKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgdGhlIGNvbnRyb2wncyBwYXJlbnRUYWJsZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0UGFyZW50VGFibGUoKTogTWdDb250cm9sIHtcclxuICAgIHJldHVybiA8TWdDb250cm9sPnRoaXMuX3BhcmVudFRhYmxlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJlc3RvcmUgYW5kIGRpc3BsYXkgdGhlIG9sZCB2YWx1ZSBvZiB0aGUgY29udHJvbCB1c2VkIHdoZW4gdGhlIGNvbnRyb2wgaXMgbm90IG1vZGlmaWFibGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGFzeW5jIHJlc3RvcmVPbGRWYWx1ZSgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICh0aGlzLl9maWVsZCAhPT0gbnVsbClcclxuICAgICAgYXdhaXQgKDxGaWVsZD50aGlzLl9maWVsZCkudXBkYXRlRGlzcGxheSgpO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIHN1cGVyLnJlc2V0UHJldlZhbCgpO1xyXG4gICAgICBhd2FpdCBzdXBlci5TZXRBbmRSZWZyZXNoRGlzcGxheVZhbHVlKGF3YWl0IHRoaXMuZ2V0TWdWYWx1ZSh0aGlzLlZhbHVlKSwgdGhpcy5Jc051bGwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldHMgdGhlIGV2ZW50IHRhc2tcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHNldFJ0RXZ0VGFzayhjdXJUYXNrOiBUYXNrQmFzZSk6IHZvaWQge1xyXG4gICAgdGhpcy5fcnRFdnRUYXNrID0gY3VyVGFzaztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSBldmVudCB0YXNrXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRSdEV2dFRhc2soKTogVGFza0Jhc2Uge1xyXG4gICAgcmV0dXJuIHRoaXMuX3J0RXZ0VGFzaztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXRzIHRoZSBzdWJmb3JtIHRhc2sgaWQgb2YgdGhlIGNvbnRyb2xcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHNldFN1YmZvcm1UYXNrSWQodGFza0lkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuX3N1YmZvcm1UYXNrSWQgPSB0YXNrSWQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyBzdG9wRXhlY3V0aW9uIGZsYWcgaW4gdGhlIGVuZCBvZiBoYW5kbGUgZm9jdXMgb24gdGhlIGNvbnRyb2xcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgaXNGb2N1c2VkU3RvcEV4ZWN1dGlvbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9mb2N1c2VkU3RvcEV4ZWN1dGlvbjtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZW1lbWJlciBzdG9wRXhlY3V0aW9uIGZsYWcgaW4gdGhlIGVuZCBvZiBoYW5kbGUgZm9jdXMgb24gdGhlIGNvbnRyb2xcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZm9jdXNlZFN0b3BFeGVjdXRpb25cIj48L3BhcmFtPlxyXG4gIHNldEZvY3VzZWRTdG9wRXhlY3V0aW9uKGZvY3VzZWRTdG9wRXhlY3V0aW9uOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLl9mb2N1c2VkU3RvcEV4ZWN1dGlvbiA9IGZvY3VzZWRTdG9wRXhlY3V0aW9uO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjdHJsLVwiPlRoZSBjdHJsIHRvIGNoZWNrLiBjYW4gYmUgZnJhbWUgZm9ybSBhbmQgYWxzbyBzdWJmb3JtIGNvbnRyb2xcclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIG9uVGhlU2FtZVN1YkZvcm1Db250cm9sKGN0cmw6IE1nQ29udHJvbCk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHJldFZhbHVlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBpZiAoY3RybCAhPT0gbnVsbCkge1xyXG4gICAgICBpZiAoc3VwZXIuZ2V0Rm9ybSgpLmlzU3ViRm9ybSgpICYmIGN0cmwuZ2V0Rm9ybSgpLmlzU3ViRm9ybSgpKSB7XHJcbiAgICAgICAgaWYgKHN1cGVyLmdldEZvcm0oKS5nZXRUYXNrKCkgPT09IGN0cmwuZ2V0Rm9ybSgpLmdldFRhc2soKSlcclxuICAgICAgICAgIHJldFZhbHVlID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJldFZhbHVlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHRydWUgaWYgdGhlIGN0cmxzIGFyZSBvbiBkaWZmZXJlbnQgZm9ybXNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiY3RybFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBvbkRpZmZGb3JtKGN0cmw6IE1nQ29udHJvbCk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGlzU3ViZm9ybTogYm9vbGVhbiA9IHN1cGVyLmdldEZvcm0oKS5pc1N1YkZvcm0oKSB8fCBjdHJsLmdldEZvcm0oKS5pc1N1YkZvcm0oKTtcclxuICAgIGxldCBpc09uRGlmZkZvcm06IGJvb2xlYW4gPSAoaXNTdWJmb3JtICkgJiYgIXRoaXMub25UaGVTYW1lU3ViRm9ybUNvbnRyb2woY3RybCk7XHJcblxyXG4gICAgcmV0dXJuIGlzT25EaWZmRm9ybTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICB0cnVlIGlmIGNvbnRyb2wgaXMgaW4gY29udHJvbCBzdWZmaXhcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgaXNJbkNvbnRyb2xTdWZmaXgoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5faW5Db250cm9sU3VmZml4O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldCB0cnVlIGlmIGNvbnRyb2wgaXMgaW4gY29udHJvbCBzdWZmaXhcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaW5Db250cm9sU3VmZml4XCI+PC9wYXJhbT5cclxuICBzZXRJbkNvbnRyb2xTdWZmaXgoaW5Db250cm9sU3VmZml4OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLl9pbkNvbnRyb2xTdWZmaXggPSBpbkNvbnRyb2xTdWZmaXg7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJuIHRydWUgaWYgdGhlIGNvbnRyb2wgaGFzIHNlbGVjdCBwcm9ncmFtXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBIYXNTZWxlY3RQcm9ncmFtKCk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IEhhc1NlbGVjdFByb2dyYW06IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGxldCBzZWxlY3RQcm9nUHJvcDogUHJvcGVydHkgPSBzdXBlci5HZXRDb21wdXRlZFByb3BlcnR5KFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1NFTEVDVF9QUk9HUkFNKTtcclxuICAgIGlmIChzZWxlY3RQcm9nUHJvcCAhPT0gbnVsbCAmJiBzZWxlY3RQcm9nUHJvcC5HZXRDb21wdXRlZFZhbHVlKCkgIT09IG51bGwpXHJcbiAgICAgIEhhc1NlbGVjdFByb2dyYW0gPSB0cnVlO1xyXG5cclxuICAgIHJldHVybiBIYXNTZWxlY3RQcm9ncmFtO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybiB0cnVlIGlmIHRoZSBjb250cm9sIHVzZSB0aGUgaGFuZGxlciBaT09NIChmb3Igc2VsZWN0IHByb2dyYW0gb3IgWm9vbSBoYW5kbGVyKVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICB1c2Vab29tSGFuZGxlcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLkhhc1pvb21IYW5kbGVyIHx8IChzdXBlci5nZXRGaWVsZCgpICE9PSBudWxsICYmICgoPEZpZWxkPnN1cGVyLmdldEZpZWxkKCkpLmdldEhhc1pvb21IYW5kbGVyKCkgfHwgKHRoaXMuSGFzU2VsZWN0UHJvZ3JhbSgpKSkpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIFVwZGF0ZSBib29sZWFuIHByb3BlcnR5KGV4OnZpc2libGVcXGVuYWJsZSkgb2YgY29udHJvbCBhbmQgaXQncyBjaGlsZHJlblxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJwcm9wSWRcIj5wcm9wZXJ0eSBpZCA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiY29tbWFuZFR5cGVcIj5jb21tYW5kIHR5cGUgdGhhdCBiZWxvbmcgdG8gdGhlIHByb3AgaWQ8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidmFsXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInVwZGF0ZVRoaXNcIj48L3BhcmFtPlxyXG4gIGFzeW5jIHVwZGF0ZVByb3BlcnR5TG9naWNOZXN0aW5nKHByb3BJZDogbnVtYmVyLCBjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUsIHZhbDogYm9vbGVhbiwgdXBkYXRlVGhpczogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKHZhbCAmJiBzdXBlci5oYXZlVG9DaGVja1BhcmVudFZhbHVlKCkpXHJcbiAgICAgIHZhbCA9IHN1cGVyLmlzUGFyZW50UHJvcFZhbHVlKHByb3BJZCk7XHJcblxyXG4gICAgLy8gaWYgdGhlIHN1YmZvcm0gbXVzdCBiZSBpbnZpc2libGUgKENUUkxfU1VCRk9STV9OT05FKSB3ZSBjaGFuZ2UgaXRzIHZpc2liaWxpdHkgdG8gZmFsc2VcclxuICAgIGlmICh2YWwgJiYgc3VwZXIuaXNTdWJmb3JtKCkgJiYgY29tbWFuZFR5cGUgPT09IENvbW1hbmRUeXBlLlBST1BfU0VUX1ZJU0lCTEUgJiYgdGhpcy5TaG91bGRTZXRTdWJmb3JtSW52aXNpYmxlKCkpXHJcbiAgICAgIHZhbCA9IGZhbHNlO1xyXG5cclxuICAgIGlmICh1cGRhdGVUaGlzKSB7XHJcbiAgICAgIENvbW1hbmRzLmFkZE9wZXJhdGlvbldpdGhMaW5lKENvbW1hbmRUeXBlLlNFVF9QUk9QRVJUWSwgdGhpcywgc3VwZXIuZ2V0RGlzcGxheUxpbmUoZmFsc2UpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kVHlwZSA9PT0gQ29tbWFuZFR5cGUuUFJPUF9TRVRfVklTSUJMRSA/IEh0bWxQcm9wZXJ0aWVzLlZpc2libGUgOiBIdG1sUHJvcGVydGllcy5FbmFibGVkLCB2YWwpO1xyXG5cclxuICAgIH1cclxuICAgIGF3YWl0IHN1cGVyLnVwZGF0ZUNoaWxkcmVuUHJvcFZhbHVlKHByb3BJZCwgY29tbWFuZFR5cGUsIHZhbCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIElmIHRoZSBzdWJmb3JtIG11c3QgYmUgaW52aXNpYmxlIChmb3IgZXhhbXBsZSBDVFJMX1NVQkZPUk1fTk9ORSkgcmV0dXJucyB0cnVlLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBwcml2YXRlIFNob3VsZFNldFN1YmZvcm1JbnZpc2libGUoKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgc2V0SW52aXNpYmxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBsZXQgc3ViZm9ybVR5cGU6IFN1YmZvcm1UeXBlID0gPFN1YmZvcm1UeXBlPnN1cGVyLkdldENvbXB1dGVkUHJvcGVydHkoUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfU1VCRk9STV9UWVBFKS5HZXRDb21wdXRlZFZhbHVlSW50ZWdlcigpO1xyXG4gICAgaWYgKHN1YmZvcm1UeXBlID09PSBTdWJmb3JtVHlwZS5Ob25lICYmIHRoaXMuZ2V0U3ViZm9ybVRhc2tJZCgpID09PSBudWxsKVxyXG4gICAgICBzZXRJbnZpc2libGUgPSB0cnVlO1xyXG4gICAgcmV0dXJuIHNldEludmlzaWJsZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBVcGRhdGVzIHZpc2liaWxpdHkgb3IgZW5hYmxlIHByb3BlcnR5IG9mIHN1YmZvcm0gY29udHJvbHNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwicHJvcElkXCI+SWQgb2YgdmlzaWJpbGl0eSBvciBlbmFibGUgcHJvcGVydHk8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiY29tbWFuZFR5cGVcIj50eXBlIG9mIHRoZSBHVUkgY29tbWFuZDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ2YWxcIj52YWx1ZSBmb3IgdGhlIHByb3BlcnR5PC9wYXJhbT5cclxuICBhc3luYyB1cGRhdGVTdWJmb3JtQ2hpbGRyZW5Qcm9wVmFsdWUocHJvcElkOiBudW1iZXIsIGNvbW1hbmRUeXBlOiBDb21tYW5kVHlwZSwgdmFsOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBEZWJ1Zy5Bc3NlcnQoc3VwZXIuaXNTdWJmb3JtKCkpO1xyXG5cclxuICAgIGlmICghKDxUYXNrQmFzZT5zdXBlci5nZXRGb3JtKCkuZ2V0VGFzaygpKS5BZnRlckZpcnN0UmVjb3JkUHJlZml4KVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgbGV0IHN1YmZvcm1UeXBlOiBTdWJmb3JtVHlwZSA9IDxTdWJmb3JtVHlwZT5zdXBlci5HZXRDb21wdXRlZFByb3BlcnR5KFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1NVQkZPUk1fVFlQRSkuR2V0Q29tcHV0ZWRWYWx1ZUludGVnZXIoKTtcclxuICAgIGlmICh0aGlzLl9zdWJmb3JtVGFza0lkICE9PSBudWxsIHx8IHN1YmZvcm1UeXBlID09PSBTdWJmb3JtVHlwZS5Ob25lKSB7XHJcbiAgICAgIGlmICh0aGlzLl9zdWJmb3JtVGFzayAhPT0gbnVsbCAmJiB0aGlzLl9zdWJmb3JtVGFzay5pc1N0YXJ0ZWQoKSkge1xyXG4gICAgICAgIHRoaXMuU3ViZm9ybUxvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgaWYgKGNvbW1hbmRUeXBlID09PSBDb21tYW5kVHlwZS5QUk9QX1NFVF9WSVNJQkxFICYmIHZhbCAmJiB0aGlzLlJlZnJlc2hPblZpc2libGUpIHtcclxuICAgICAgICAgIHRoaXMuUmVmcmVzaE9uVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgYXdhaXQgKDxUYXNrQmFzZT5zdXBlci5nZXRGb3JtKCkuZ2V0VGFzaygpKS5TdWJmb3JtUmVmcmVzaCh0aGlzLl9zdWJmb3JtVGFzaywgdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgc3ViZm9ybUZvcm06IE1nRm9ybUJhc2UgPSB0aGlzLl9zdWJmb3JtVGFzay5nZXRGb3JtKCk7XHJcbiAgICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IHN1YmZvcm1Gb3JtLmdldEN0cmxDb3VudCgpOyBpKyspIHtcclxuICAgICAgICAgIGxldCBjaGlsZDogTWdDb250cm9sQmFzZSA9IHN1YmZvcm1Gb3JtLmdldEN0cmwoaSk7XHJcbiAgICAgICAgICAvLyBRQ1IgIzk4MTU1NSwgV2Ugc2hvdWxkIG5vdCBhZmZlY3QgdmlzaWJpbGl0eSBvZiB0aGUgVGFibGVDb2x1bW5zIHNpbmNlIGl0IGlzIG1hbmFnZWQgYnkgdGhlIHRhYmxlLlNldHRpbmcgdmlzaWJpbGl0eVxyXG4gICAgICAgICAgLy8gb2YgYWxsIGNvbHVtbnMgdG8gZmFsc2UgcHJldmVudHMgdGFibGUgcGxhY2VtZW50XHJcbiAgICAgICAgICBpZiAoIWNoaWxkLmlzQ29sdW1uQ29udHJvbCgpKVxyXG4gICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgIGxldCBjaGlsZFZhbHVlOiBib29sZWFuID0gYXdhaXQgY2hpbGQuY2hlY2tQcm9wKHByb3BJZCwgdHJ1ZSkgJiYgdmFsO1xyXG4gICAgICAgICAgaWYgKGNoaWxkVmFsdWUpXHJcbiAgICAgICAgICAgIGNoaWxkVmFsdWUgPSBjaGlsZC5pc1BhcmVudFByb3BWYWx1ZShwcm9wSWQpO1xyXG5cclxuICAgICAgICAgIC8vIGlmICh0aGlzLl9zdWJmb3JtVGFzay5pc1N0YXJ0ZWQoKSlcclxuICAgICAgICAgIC8vICAgQ29tbWFuZHMuYWRkQXN5bmMoY29tbWFuZFR5cGUsIGNoaWxkLCBjaGlsZC5nZXREaXNwbGF5TGluZShmYWxzZSksIGNoaWxkVmFsdWUpO1xyXG4gICAgICAgICAgYXdhaXQgY2hpbGQudXBkYXRlQ2hpbGRyZW5Qcm9wVmFsdWUocHJvcElkLCBjb21tYW5kVHlwZSwgY2hpbGRWYWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICgoY29tbWFuZFR5cGUgPT09IENvbW1hbmRUeXBlLlBST1BfU0VUX1ZJU0lCTEUgJiYgdmFsKSAmJiAhdGhpcy5TdWJmb3JtTG9hZGVkKSB7XHJcbiAgICAgIHRoaXMuU3ViZm9ybUxvYWRlZCA9IHRydWU7XHJcbiAgICAgIGF3YWl0IEFjY2Vzc0hlbHBlci5ldmVudHNNYW5hZ2VyLmhhbmRsZUludGVybmFsRXZlbnRXaXRoTWdDb250cm9sQmFzZSh0aGlzLCBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfU1VCRk9STV9PUEVOKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gU2V0IHN1YmZvcm0gdGFzayBpZCBmb3IgYSBzdWJmb3JtIGNvbnRyb2xcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIEluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmluaXRTdWJmb3JtVGFzaygpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBnZXQgdGhlIGJlaGF2aW91ciBmb3IgdGhlIHRhYmxlIGNvbnRyb2xcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgR2V0VGFibGVCZWhhdmlvdXIoKTogVGFibGVCZWhhdmlvdXIge1xyXG4gICAgcmV0dXJuIFRhYmxlQmVoYXZpb3VyLlVubGltaXRlZEl0ZW1zO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHZhbGlkYXRlIHRoZSB2YWx1ZSBvZiB0aGUgY29udHJvbCBhbmQgc2V0IGl0J3MgdmFsdWVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiTmV3VmFsdWVcIj50aGUgdmFsdWUgb2YgdGhlIGNvbnRyb2w8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidXBkYXRlQ3RybFwiPmlmIHRydWUgdGhlbiB0aGUgY29udHJvbCB3aWxsIGJlIHVwZGF0ZWQgdXBvbiBzdWNjZXNzZnVsIGNoZWNrPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+cmV0dXJucyBpZiB2YWxpZGF0aW9uIGlzIHN1Y2Nlc3NmdWw8L3JldHVybnM+XHJcbiAgYXN5bmMgdmFsaWRhdGVBbmRTZXRWYWx1ZShOZXdWYWx1ZTogYW55LCB1cGRhdGVDdHJsOiBib29sZWFuKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICBzdXBlci5VcGRhdGVNb2RpZmllZEJ5VXNlcihOZXdWYWx1ZSk7XHJcblxyXG4gICAgLy8gaWYgdGhlIHZhbHVlIG9mIHRoZSBjb250cm9sIGlzIG51bGwgb3Igd2FzIGNoYW5nZWRcclxuICAgIC8vIGNoZWNrIHZhbGlkYXRpb24gYW5kIHVwZGF0ZSB0aGUgY29udHJvbCB2YWx1ZVxyXG4gICAgaWYgKHRoaXMuTW9kaWZpZWRCeVVzZXIpIHtcclxuICAgICAgbGV0IGN0cmxDdXJyVmFsdWU6IGFueSA9IHRoaXMuVmFsdWU7XHJcbiAgICAgIGxldCB2ZDogVmFsaWRhdGlvbkRldGFpbHM7XHJcblxyXG4gICAgICBpZiAoc3VwZXIuZ2V0UElDKCkgPT09IG51bGwpXHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIHZkID0gc3VwZXIuYnVpbGRQaWN0dXJlKGN0cmxDdXJyVmFsdWUsIE5ld1ZhbHVlKTtcclxuXHJcbiAgICAgIHZkLmV2YWx1YXRlKCk7XHJcblxyXG4gICAgICAvLyB0aGUgdmFsaWRhdGlvbiBvZiB0aGUgZmllbGRzIHZhbHVlIHdhcyB3cm9uZ1xyXG4gICAgICBpZiAodmQuVmFsaWRhdGlvbkZhaWxlZCkge1xyXG4gICAgICAgIHRoaXMuTW9kaWZpZWRCeVVzZXIgPSBmYWxzZTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuSXNJbnRlcmFjdGl2ZVVwZGF0ZSA9IHRydWU7XHJcblxyXG4gICAgICBzdXBlci5nZXRGb3JtKCkuZ2V0VGFzaygpLnNldERhdGFTeW5jZWQoZmFsc2UpO1xyXG5cclxuICAgICAgLy8gc2V0IHRoZSB2YWx1ZSAoaGFuZGxlIHJlY29tcHV0ZSwgZXRjLilcclxuICAgICAgaWYgKHVwZGF0ZUN0cmwpIHtcclxuICAgICAgICAvLyBRQ1IjNDQxMDIwOkFmdGVyIHZhbGlkYXRpbmcgZGlzcGxheSB2YWx1ZSwgdGFrZSB0aGUgc2FtZSBjdHJsJ3MgdmFsdWUgZm9yIG1nIHZhbHVlIGNvbnZlcnNpb24uXHJcbiAgICAgICAgLy8gVXNpbmcgZGlzcGxheSB2YWx1ZSBnZW5lcmF0ZWQgZnJvbSBNZ1ZhbHVlLCBtaWdodCBoYXZlIHByb2JsZW0gdG8gY29udmVydCBiYWNrIHRvIE1nVmFsIHVzaW5nIHBpY3R1cmUgZHVlIHRvIGFsaWdubWVudCAoY2hhbmdlZCBhbGlnbm1lbnQgKS5cclxuICAgICAgICAvLyBUaGlzIHByb2JsZW0gb2NjdXJzIGZvciBudW1lcmljLlxyXG4gICAgICAgIC8vIFRoZSBmaXggc2hvdWxkIGJlIGFwcGxpY2FibGUgZm9yIG51bWVyaWMgdHlwZSBvbmx5LiBCZWNhdXNlIGRhdGUgYW5kIHRpbWUgZmllbGQgd2l0aCBjb21wbGV4IG1hc2tpbmcgaGF2ZSBwcm9ibGVtIG9uIHVzaW5nIGN0cmwncyB2YWx1ZS5cclxuICAgICAgICAvLyBSZWZlciBkYXRlIHFjcnM6ICMyOTE2NjYsICMzMDczNTMsICM0MzQyNDEgYW5kIGZvciB0aW1lLCBjaGVjayBkZWZhdWx0IHZhbHVlIHdoZW4gZm9ybWF0IGlzICdISC1NTS1TUyBQTVpAJ1xyXG4gICAgICAgIGlmICh0aGlzLl9maWVsZCAhPT0gbnVsbCAmJiB0aGlzLl9maWVsZC5nZXRUeXBlKCkgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuTlVNRVJJQyAmJiB0eXBlb2YgTmV3VmFsdWUgPT09ICdzdHJpbmcnICYmIE5ld1ZhbHVlLnRyaW0oKS5sZW5ndGggPiAwKVxyXG4gICAgICAgICAgdmQuc2V0VmFsdWUoTmV3VmFsdWUpO1xyXG5cclxuICAgICAgICBhd2FpdCB0aGlzLnNldFZhbHVlKHZkKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IHRoZSB2YWx1ZSByZWNlaXZlZCBmcm9tIHRoZSB1c2VyIGlucHV0IGFmdGVyIHZhbGlkYXRpb24gYW5kIHVwZGF0ZSB0aGUgZmllbGQgY29ubmVjdGVkIHRvIHRoaXNcclxuICAvLy8gICBjb250cm9sIChpZiBleGlzdHMpXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInZkXCI+dGhlIHZhbGlkYXRpb24gZGV0YWlscyBvYmplY3Q8L3BhcmFtPlxyXG4gIHByaXZhdGUgYXN5bmMgc2V0VmFsdWUodmQ6IFZhbGlkYXRpb25EZXRhaWxzKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBsZXQgaXNOdWxsOiBib29sZWFuID0gdmQuZ2V0SXNOdWxsKCk7XHJcbiAgICBsZXQgbmV3VmFsdWU6IGFueSA9IHZkLmdldERpc3BWYWx1ZSgpO1xyXG4gICAgbGV0IG1nVmFsOiBzdHJpbmc7XHJcblxyXG4gICAgaWYgKCFpc051bGwgfHwgIXRoaXMuX2ZpZWxkLmhhc051bGxEaXNwbGF5VmFsdWUoKSlcclxuICAgICAgbWdWYWwgPSBhd2FpdCBzdXBlci5nZXRNZ1ZhbHVlKG5ld1ZhbHVlKTtcclxuICAgIC8vIGl0J3MgaW5uZXIgdmFsdWUgLT4gdHJhbnNsYXRlIGl0IHRvIHRoZSBkaXNwbGF5XHJcbiAgICBlbHNlXHJcbiAgICAgIG1nVmFsID0gKCh0aGlzLl9maWVsZC5nZXRUeXBlKCkgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuQkxPQl9WRUNUT1IpID8gdGhpcy5fZmllbGQuZ2V0Q2VsbERlZnVhbHRWYWx1ZSgpIDogdGhpcy5fZmllbGQuZ2V0RGVmYXVsdFZhbHVlKCkpO1xyXG4gICAgaWYgKG1nVmFsICE9PSBudWxsKSB7XHJcbiAgICAgIGlmICh0aGlzLl9maWVsZCAhPT0gbnVsbCAmJiAoIShuZXdWYWx1ZSA9PT0gdGhpcy5WYWx1ZSkgfHwgdGhpcy5LZXlTdHJva2VPbiB8fCB0aGlzLklzTnVsbCAhPT0gaXNOdWxsKSkge1xyXG4gICAgICAgIGF3YWl0ICg8RmllbGQ+dGhpcy5fZmllbGQpLnNldFZhbHVlQW5kU3RhcnRSZWNvbXB1dGUobWdWYWwsIGlzTnVsbCwgdHJ1ZSwgdHJ1ZSwgZmFsc2UpO1xyXG5cclxuICAgICAgICAvLyBkZWZlY3QgMTI3NzM0IDogdmFsdWUgb2YgdGhlIGZpZWxkIG1pZ2h0IGJlIGNoYW5nZWQgYWxyZWFkeSBpbnNpZGUgYSBjb250cm9sIGNoYW5nZSBoYW5kbGVyXHJcbiAgICAgICAgLy8gdG8gYXZvaWQgdXBkYXRpbmcgb2xkIHZhbHVlIGFuZCBvdmVycnVubmluZyB0aGUgdmFsdWUgZnIwbSB0aGUgY29udHJvbCBjaGFuZ2VcclxuICAgICAgICAvLyBnZXQgdGhlIHZhbHVlIGZyb20gdGhlIGZpZWxkLiAobmVlZCB0byBiZSBkb25lIGZvciBjb21ibyBhbmQgbGlzdCBib3gsIGJ1dCBpdCdzIHRvbyByaXNreVxyXG4gICAgICAgIC8vIGFuZCB1bmxpa2VseSB0byBoYXBwZW4sIHNvIHRoZSBmaXggd2lsbCBiZSBmb3IgY2hlY2sgYm94IG9ubHkpXHJcblxyXG4gICAgICAgIGlmIChzdXBlci5pc0NoZWNrQm94KCkpIHtcclxuICAgICAgICAgIHRoaXMuZm9yY2VSZWZyZXNoID0gdHJ1ZTtcclxuICAgICAgICAgIG1nVmFsID0gKDxGaWVsZD50aGlzLl9maWVsZCkuZ2V0VmFsdWUoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gaWYgZmllbGQgdmFsdWUgaXMgbnVsbCAmIGhhcyBudWxsIGRpc3BsYXkgdmFsdWUsIHRha2UgZXZhbHVhdGVkIG51bGwgZGlzcGxheSB2YWx1ZS5cclxuICAgICAgaWYgKCh0aGlzLl9maWVsZCAhPT0gbnVsbCAmJiBpc051bGwpICYmIHRoaXMuX2ZpZWxkLmhhc051bGxEaXNwbGF5VmFsdWUoKSlcclxuICAgICAgICBtZ1ZhbCA9IG5ld1ZhbHVlO1xyXG5cclxuICAgICAgYXdhaXQgc3VwZXIuU2V0QW5kUmVmcmVzaERpc3BsYXlWYWx1ZShtZ1ZhbCwgaXNOdWxsKTtcclxuICAgICAgdGhpcy5mb3JjZVJlZnJlc2ggPSBmYWxzZTtcclxuICAgICAgLy8gUUNSICM0Mzg3NTMuIFByZXZlbnQgUlAmUlMgY3ljbGUsIHdoZW4gaXQncyBub3QgbmVlZGVkLlxyXG4gICAgICB0aGlzLktleVN0cm9rZU9uID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IHJlZnJlc2ggdGhlIGl0ZW0gbGlzdCBvZiByYWRpbyBidXR0b24gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImV4ZWNDb21wdXRlQ2hvaWNlXCI+PC9wYXJhbT5cclxuICBhc3luYyByZWZyZXNoQW5kU2V0SXRlbXNMaXN0Rm9yUmFkaW9CdXR0b24obGluZTogbnVtYmVyLCBleGVjQ29tcHV0ZUNob2ljZTogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgYXdhaXQgc3VwZXIucmVmcmVzaEFuZFNldEl0ZW1zTGlzdEZvclJhZGlvQnV0dG9uKGxpbmUsIGV4ZWNDb21wdXRlQ2hvaWNlKTtcclxuXHJcbiAgICAvLyBJZiB0aGUgcGFya2luZyB3YXMgb24gdGhlIHJhZGlvIGNvbnRyb2wsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGZvY3VzIGJlY2F1c2VcclxuICAgIC8vIHRoZSBvbGQgY29udHJvbHMgd2VyZSBkaXNwb3NlZCBhbmQgdGhlIG5ldyBvbmVzIGFyZSBjcmVhdGVkLlxyXG4gICAgbGV0IGxhc3RGb2N1c2VkVGFzazogVGFza0Jhc2UgPSBMYXN0Rm9jdXNlZE1hbmFnZXIuSW5zdGFuY2UuZ2V0TGFzdEZvY3VzZWRUYXNrKCg8VGFza0Jhc2U+c3VwZXIuZ2V0Rm9ybSgpLmdldFRhc2soKSkuZ2V0TWdkSUQoKSk7XHJcbiAgICAvLyBpZiAobGFzdEZvY3VzZWRUYXNrICE9PSBudWxsICYmIHRoaXMgPT09IGxhc3RGb2N1c2VkVGFzay5nZXRMYXN0UGFya2VkQ3RybCgpKVxyXG4gICAgLy8gICBDb21tYW5kcy5hZGRBc3luYyhDb21tYW5kVHlwZS5TRVRfRk9DVVMsIHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdGhlIHN1YmZvcm0gdGFzayBvZiB0aGlzIHN1YmZvcm0gY29udHJvbFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0U3ViZm9ybVRhc2soKTogVGFza0Jhc2Uge1xyXG4gICAgcmV0dXJuIHRoaXMuX3N1YmZvcm1UYXNrO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdGhlIHN1YmZvcm0gdGFzayBvZiB0aGlzIHN1YmZvcm0gY29udHJvbFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcmVzZXRTdWJmb3JtVGFzaygpOiB2b2lkIHtcclxuICAgIHRoaXMuX3N1YmZvcm1UYXNrID0gbnVsbDtcclxuICAgIHRoaXMuX3N1YmZvcm1UYXNrSWQgPSBcIjBcIjtcclxuICB9XHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyByZXR1cm5zIE1nRm9ybSBvZiB0aGUgc3ViZm9ybSBjb250cm9sIHRhc2tcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIEdldFN1YmZvcm1NZ0Zvcm0oKTogTWdGb3JtQmFzZSB7XHJcbiAgICBsZXQgZm9ybTogTWdGb3JtQmFzZSA9IG51bGw7XHJcbiAgICBpZiAodGhpcy5fc3ViZm9ybVRhc2sgIT09IG51bGwpXHJcbiAgICAgIGZvcm0gPSB0aGlzLl9zdWJmb3JtVGFzay5nZXRGb3JtKCk7XHJcbiAgICByZXR1cm4gZm9ybTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gQ2hlY2sgd2hldGhlciB0YWJsZSBiZWluZyB1c2VkIHdpdGggYWJzb2x1dGUgc2Nyb2xsYmFyIHRodW1iLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgSXNUYWJsZVdpdGhBYnNvbHV0ZVNjcm9sbGJhcigpOiBib29sZWFuIHtcclxuICAgIGxldCB0YWJsZVdpdGhBYnNvbHV0ZVNjcm9sbGJhcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgRGVidWcuQXNzZXJ0KHRoaXMuVHlwZSA9PT0gTWdDb250cm9sVHlwZS5DVFJMX1RZUEVfVEFCTEUsIFwiSW4gTWdDb250cm9sLklzVGFibGVXaXRoQWJzb2x1dGVTY3JvbGxiYXIoKTogTm90IGEgdGFibGUgY29udHJvbC5cIik7XHJcbiAgICBpZiAodGhpcy5fcHJvcFRhYi5wcm9wRXhpc3RzKFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1NDUk9MTF9CQVJfVEhVTUIpKVxyXG4gICAgICB0YWJsZVdpdGhBYnNvbHV0ZVNjcm9sbGJhciA9ICh0aGlzLl9wcm9wVGFiLmdldFByb3BCeUlkKFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1NDUk9MTF9CQVJfVEhVTUIpLkdldENvbXB1dGVkVmFsdWVJbnRlZ2VyKCkgPT09IDxudW1iZXI+U2Nyb2xsQmFyVGh1bWJUeXBlLkFic29sdXRlKTtcclxuXHJcbiAgICByZXR1cm4gdGFibGVXaXRoQWJzb2x1dGVTY3JvbGxiYXI7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBjaGVjayBpZiB0aGUgcmV0dXJuLXRvLWNvbnRyb2wgcG9pbnRzIHRvIGFuIGV4aXN0aW5nIHRhc2suPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyB2YWxpZFJldHVyblRvQ3RybCgpOiBib29sZWFuIHtcclxuICAgIGlmIChNZ0NvbnRyb2wuUmV0dXJuVG9DdHJsICE9PSBudWxsICYmIE1nQ29udHJvbC5SZXR1cm5Ub0N0cmwuZ2V0Rm9ybSgpLmdldFRhc2soKS5pc0Fib3J0aW5nKCkpXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gY2hlY2sgaWYgb25lIG1heSBkaXJlY3RseSAobm90IHZpYSB0aGUgZ3VpKSBzZXQgYSB2YWx1ZSBvbiB0aGlzIGNvbnRyb2wuPC9zdW1tYXJ5PlxyXG4gIG1heVNldFZhbHVlKCk6IGJvb2xlYW4ge1xyXG4gICAgc3dpdGNoICh0aGlzLlR5cGUpIHtcclxuICAgICAgY2FzZSBNZ0NvbnRyb2xUeXBlLkNUUkxfVFlQRV9DSEVDS0JPWDpcclxuICAgICAgY2FzZSBNZ0NvbnRyb2xUeXBlLkNUUkxfVFlQRV9URVhUOlxyXG4gICAgICBjYXNlIE1nQ29udHJvbFR5cGUuQ1RSTF9UWVBFX0NPTUJPOlxyXG4gICAgICBjYXNlIE1nQ29udHJvbFR5cGUuQ1RSTF9UWVBFX0xJU1Q6XHJcbiAgICAgIGNhc2UgTWdDb250cm9sVHlwZS5DVFJMX1RZUEVfUkFESU86XHJcbiAgICAgIGNhc2UgTWdDb250cm9sVHlwZS5DVFJMX1RZUEVfVEFCOlxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gcHJldmVudCB2YWx1ZSBzZXR0aW5nIGlmIHRoZSBjb250cm9sIGRvZXNuJ3QgaGF2ZSBhIGZpZWxkLCBvciBpZiBpdCBnZXRzIGl0cyB2YWx1ZSBmcm9tIGFuIGV4cHJlc3Npb25cclxuICAgIGlmICh0aGlzLl9maWVsZCA9PT0gbnVsbCB8fCB0aGlzLl92YWxFeHBJZCA+IDApXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5pc01vZGlmaWFibGUoKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBDaGVja3MgaWYgYSB2YWx1ZSBtYXkgYmUgc2V0LCBhbmQgdHJpZXMgdG8gc2V0IHRoZSB2YWx1ZSBvZiB0aGUgY29udHJvbFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJOZXdWYWx1ZVwiPnRoZSB2YWx1ZSBvZiB0aGUgY29udHJvbDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ1cGRhdGVDdHJsXCI+aWYgdHJ1ZSB0aGVuIHRoZSBjb250cm9sIHdpbGwgYmUgdXBkYXRlZCB1cG9uIHN1Y2Nlc3NmdWwgY2hlY2s8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz5yZXR1cm5zIGlmIHZhbHVlIHNldHRpbmcgd2FzIHN1Y2Nlc3NmdWwgPC9yZXR1cm5zPlxyXG4gIGFzeW5jIHZhbGlkYXRlQW5kU2V0VmFsdWVJZkFsbG93ZWQoTmV3VmFsdWU6IGFueSwgcmVmcmVzaERpc3BsYXk6IGJvb2xlYW4pOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGlmICghdGhpcy5tYXlTZXRWYWx1ZSgpKSB7XHJcbiAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZUVycm9yVG9Mb2coTlN0cmluZy5Gb3JtYXQoXCJVbmFibGUgdG8gY2hhbmdlIHZhbHVlIG9mIGNvbnRyb2wgezB9OiBUaGUgY29udHJvbCBpcyByZWFkLW9ubHkuXCIsIHRoaXMuTmFtZSkpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHJldFZhbCA9IGF3YWl0IHRoaXMudmFsaWRhdGVBbmRTZXRWYWx1ZShOZXdWYWx1ZSwgdHJ1ZSk7XHJcbiAgICBpZiAoIXJldFZhbClcclxuICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlRXJyb3JUb0xvZyhOU3RyaW5nLkZvcm1hdChcIlZhbHVlIHZhbGlkYXRpb24gZmFpbGVkIGZvciB7MH0uXCIsIHRoaXMuTmFtZSkpO1xyXG5cclxuICAgIGlmIChyZWZyZXNoRGlzcGxheSkge1xyXG4gICAgICBDb21tYW5kcy5hZGROb1BhcmFtZXRlcnMoQ29tbWFuZFR5cGUuUkVGUkVTSF9UQVNLLCB0aGlzLmdldEZvcm0oKSk7XHJcbiAgICAgIENvbW1hbmRzLmludm9rZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vcmVmcmVzaCB0YXNrXHJcbiAgICByZXR1cm4gcmV0VmFsO1xyXG4gIH1cclxufVxyXG4iXX0=
|
|
424
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTWdDb250cm9sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvZW5naW5lL3NyYy9ndWkvTWdDb250cm9sLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQSxPQUFPLEVBQ0wsUUFBUSxFQUNSLFdBQVcsRUFDWCxpQkFBaUIsRUFDakIsY0FBYyxFQUNkLGFBQWEsRUFHYixhQUFhLEVBR2QsTUFBTSxnQkFBZ0IsQ0FBQztBQUN4QixPQUFPLEVBQ0wsaUJBQWlCLEVBQ2pCLE1BQU0sRUFDTixhQUFhLEVBQ2Isa0JBQWtCLEVBQ2xCLGdCQUFnQixFQUNoQixXQUFXLEVBQ1gsY0FBYyxFQUVmLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFDLEtBQUssRUFBRSxPQUFPLEVBQUMsTUFBTSxzQkFBc0IsQ0FBQztBQUNwRCxPQUFPLEVBQUMsYUFBYSxFQUFDLE1BQU0scUJBQXFCLENBQUM7QUFDbEQsT0FBTyxFQUFDLFFBQVEsRUFBQyxNQUFNLG1CQUFtQixDQUFDO0FBSzNDLE9BQU8sRUFBQyxjQUFjLEVBQUMsTUFBTSxtQkFBbUIsQ0FBQztBQUNqRCxPQUFPLEVBQUMsa0JBQWtCLEVBQUMsTUFBTSwwQkFBMEIsQ0FBQztBQUM1RCxPQUFPLEVBQUMsWUFBWSxFQUFDLE1BQU0saUJBQWlCLENBQUM7QUFRN0MsTUFBTSxPQUFPLFNBQVUsU0FBUSxhQUFhO0lBb0MxQyxZQUFZLElBQW9CLEVBQUUsa0JBQXdCLEVBQUUsK0JBQXdDO1FBQ2xHLElBQUksU0FBUyxDQUFDLE1BQU0sS0FBSyxDQUFDO1lBQ3hCLEtBQUssRUFBRSxDQUFDO2FBQ0wsSUFBSSxTQUFTLENBQUMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxJQUFJLElBQUksSUFBSSxDQUFDLFdBQVcsS0FBSyxNQUFNLENBQUMsSUFBSSxDQUFDLGtCQUFrQixLQUFLLElBQUksSUFBSSxrQkFBa0IsWUFBWSxRQUFRLENBQUMs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T0FBTyxLQUFLLENBQUM7YUFDZDtZQUVELElBQUksTUFBTSxHQUFHLE1BQU0sSUFBSSxDQUFDLG1CQUFtQixDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsQ0FBQztZQUM1RCxJQUFJLENBQUMsTUFBTTtnQkFDVCxNQUFNLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLGtDQUFrQyxFQUFFLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBRWpHLElBQUksY0FBYyxFQUFFO2dCQUNsQixRQUFRLENBQUMsZUFBZSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLE9BQU8sRUFBRSxDQUFDLENBQUM7Z0JBQ25FLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQzthQUNuQjtZQUdELE9BQU8sTUFBTSxDQUFDO1FBQ2hCLENBQUM7S0FBQTs7QUEva0JNLHNCQUFZLEdBQWMsSUFBSSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcclxuICBDb21tYW5kcyxcclxuICBDb21tYW5kVHlwZSxcclxuICBHdWlEYXRhQ29sbGVjdGlvbixcclxuICBIdG1sUHJvcGVydGllcyxcclxuICBNZ0NvbnRyb2xCYXNlLFxyXG4gIE1nRm9ybUJhc2UsXHJcbiAgUHJvcGVydHksXHJcbiAgUHJvcEludGVyZmFjZSxcclxuICBQcm9wUGFyZW50SW50ZXJmYWNlLFxyXG4gIFZhbGlkYXRpb25EZXRhaWxzXHJcbn0gZnJvbSAnQG1hZ2ljLXhwYS9ndWknO1xyXG5pbXBvcnQge1xyXG4gIEludGVybmFsSW50ZXJmYWNlLFxyXG4gIExvZ2dlcixcclxuICBNZ0NvbnRyb2xUeXBlLFxyXG4gIFNjcm9sbEJhclRodW1iVHlwZSxcclxuICBTdG9yYWdlQXR0cmlidXRlLFxyXG4gIFN1YmZvcm1UeXBlLFxyXG4gIFRhYmxlQmVoYXZpb3VyLFxyXG4gIFhtbFBhcnNlclxyXG59IGZyb20gJ0BtYWdpYy14cGEvdXRpbHMnO1xyXG5pbXBvcnQge0RlYnVnLCBOU3RyaW5nfSBmcm9tICdAbWFnaWMteHBhL21zY29yZWxpYic7XHJcbmltcG9ydCB7QXJndW1lbnRzTGlzdH0gZnJvbSAnLi4vcnQvQXJndW1lbnRzTGlzdCc7XHJcbmltcG9ydCB7VGFza0Jhc2V9IGZyb20gJy4uL3Rhc2tzL1Rhc2tCYXNlJztcclxuaW1wb3J0IHtNZ0Zvcm19IGZyb20gJy4vTWdGb3JtJztcclxuaW1wb3J0IHtGaWVsZH0gZnJvbSAnLi4vZGF0YS9GaWVsZCc7XHJcbmltcG9ydCB7RGF0YVZpZXd9IGZyb20gJy4uL2RhdGEvRGF0YVZpZXcnO1xyXG5pbXBvcnQge1JlY29yZH0gZnJvbSAnLi4vZGF0YS9SZWNvcmQnO1xyXG5pbXBvcnQge0NvbnN0SW50ZXJmYWNlfSBmcm9tICcuLi9Db25zdEludGVyZmFjZSc7XHJcbmltcG9ydCB7TGFzdEZvY3VzZWRNYW5hZ2VyfSBmcm9tICcuLi9ydC9MYXN0Rm9jdXNlZE1hbmFnZXInO1xyXG5pbXBvcnQge0FjY2Vzc0hlbHBlcn0gZnJvbSAnLi4vQWNjZXNzSGVscGVyJztcclxuXHJcbi8vLyA8c3VtbWFyeT5cclxuLy8vICAgZGF0YSBmb3IgPGNvbnRyb2w+IC4uLjwvY29udHJvbD4gdGFnXHJcbi8vLyA8L3N1bW1hcnk+XHJcbi8vLyA8YXV0aG9yPiAgZWh1ZG1cclxuLy8vXHJcbi8vLyA8L2F1dGhvcj5cclxuZXhwb3J0IGNsYXNzIE1nQ29udHJvbCBleHRlbmRzIE1nQ29udHJvbEJhc2UgaW1wbGVtZW50cyBQcm9wUGFyZW50SW50ZXJmYWNlIHtcclxuICBwcml2YXRlIF9mb2N1c2VkU3RvcEV4ZWN1dGlvbjogYm9vbGVhbjsgLy8gdXNlZCB0byByZW1lbWJlciBzdG9wRXhlY3V0aW9uIGZsYWcgaW4gdGhlIGVuZCBvZlxyXG4gIHByaXZhdGUgX2luQ29udHJvbFN1ZmZpeDogYm9vbGVhbjsgLy8gdHJ1ZSwgaXMgY29udHJvbCBpcyBpbiBjb250cm9sIHN1ZmZpeFxyXG4gIHByaXZhdGUgX3J0RXZ0VGFzazogVGFza0Jhc2U7XHJcblxyXG4gIHByaXZhdGUgX3N1YmZvcm1UYXNrSWQ6IHN0cmluZzsgLy8gdGhlIHRhc2sgaWQgb2YgdGhlIHN1YiBmb3JtIHRhc2sgKGlmIHRoaXNcclxuICBwcml2YXRlIF9zdWJmb3JtVGFzazogVGFza0Jhc2U7IC8vIHJlZmVyZW5jZSB0byB0YXNrIG9mIHRoZSBzdWIgZm9ybSB0YXNrXHJcblxyXG4gIElzSW50ZXJhY3RpdmVVcGRhdGU6IGJvb2xlYW47IC8vIHRydWUgaWYgdGhpcyBjb250cm9sIHdhcyBtb2RpZmllZCBieSB1c2VyXHJcbiAgcHJpdmF0ZSByZWZyZXNoT25TdHJpbmc6IHN0cmluZzsgLy8gT25seSBmb3Igb2ZmbGluZS4gR2V0IGl0IGZyb20gWE1MIGFuZCBwdXQgaXQgb24gdGhlIHN1YmZvcm0gdGFzayB3aGVuIHRoZSBzdWJmb3JtIHRhc2sgaXMgb3BlbmVkXHJcbiAgU3ViZm9ybUxvYWRlZDogYm9vbGVhbjsgLy8gdHJ1ZSwgaWYgdGhlIHN1YmZvcm0gdGFzayB3YXMgbG9hZGVkIGFscmVhZHlcclxuICBIYXNab29tSGFuZGxlcjogYm9vbGVhbjsgLy8gaWYgVFJVRSwgdGhlcmUgaXMgYSB6b29tIGhhbmRsZXIgb24gdGhpcyBjdHJsXHJcbiAgQXJnTGlzdDogQXJndW1lbnRzTGlzdDsgLy8gYXJndW1lbnQgbGlzdCBidWlsdCBmcm9tIHRoZSBwcm9wZXJ0eVxyXG5cclxuICBzdGF0aWMgUmV0dXJuVG9DdHJsOiBNZ0NvbnRyb2wgPSBudWxsO1xyXG5cclxuICBwcml2YXRlIGluaXRpYWxpemUoKSB7XHJcbiAgICB0aGlzLl9mb2N1c2VkU3RvcEV4ZWN1dGlvbiA9IGZhbHNlO1xyXG4gICAgdGhpcy5faW5Db250cm9sU3VmZml4ID0gZmFsc2U7XHJcbiAgICB0aGlzLl9ydEV2dFRhc2sgPSBudWxsO1xyXG4gICAgdGhpcy5fc3ViZm9ybVRhc2tJZCA9IG51bGw7XHJcbiAgICB0aGlzLl9zdWJmb3JtVGFzayA9IG51bGw7XHJcbiAgICB0aGlzLklzSW50ZXJhY3RpdmVVcGRhdGUgPSBmYWxzZTtcclxuICAgIHRoaXMucmVmcmVzaE9uU3RyaW5nID0gbnVsbDtcclxuICAgIHRoaXMuU3ViZm9ybUxvYWRlZCA9IGZhbHNlO1xyXG4gICAgdGhpcy5IYXNab29tSGFuZGxlciA9IGZhbHNlO1xyXG4gICAgdGhpcy5BcmdMaXN0ID0gbnVsbDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBDVE9SXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBjb25zdHJ1Y3RvcigpO1xyXG4gIGNvbnN0cnVjdG9yKHR5cGU6IE1nQ29udHJvbFR5cGUpO1xyXG4gIGNvbnN0cnVjdG9yKHR5cGU6IE1nQ29udHJvbFR5cGUsIHRhc2s6IFRhc2tCYXNlLCBwYXJlbnRDb250cm9sOiBudW1iZXIpO1xyXG4gIGNvbnN0cnVjdG9yKHR5cGU6IE1nQ29udHJvbFR5cGUsIHBhcmVudE1nRm9ybTogTWdGb3JtQmFzZSwgcGFyZW50Q29udHJvbElkeDogbnVtYmVyKTtcclxuICBjb25zdHJ1Y3Rvcih0eXBlPzogTWdDb250cm9sVHlwZSwgdGFza09yUGFyZW50TWdGb3JtPzogYW55LCBwYXJlbnRDb250cm9sT3JQYXJlbnRDb250cm9sSWR4PzogbnVtYmVyKSB7XHJcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMClcclxuICAgICAgc3VwZXIoKTtcclxuICAgIGVsc2UgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDMgJiYgKHR5cGUgPT09IG51bGwgfHwgdHlwZS5jb25zdHJ1Y3RvciA9PT0gTnVtYmVyKSAmJiAodGFza09yUGFyZW50TWdGb3JtID09PSBudWxsIHx8IHRhc2tPclBhcmVudE1nRm9ybSBpbnN0YW5jZW9mIFRhc2tCYXNlKSAmJiAocGFyZW50Q29udHJvbE9yUGFyZW50Q29udHJvbElkeCA9PT0gbnVsbCB8fCBwYXJlbnRDb250cm9sT3JQYXJlbnRDb250cm9sSWR4LmNvbnN0cnVjdG9yID09PSBOdW1iZXIpKVxyXG4gICAgICBzdXBlcih0eXBlLCB0YXNrT3JQYXJlbnRNZ0Zvcm0uZ2V0Rm9ybSgpLCBwYXJlbnRDb250cm9sT3JQYXJlbnRDb250cm9sSWR4KTtcclxuICAgIGVsc2VcclxuICAgICAgc3VwZXIodHlwZSwgdGFza09yUGFyZW50TWdGb3JtLCBwYXJlbnRDb250cm9sT3JQYXJlbnRDb250cm9sSWR4KTtcclxuXHJcbiAgICB0aGlzLmluaXRpYWxpemUoKTtcclxuICB9XHJcblxyXG4gIEdldFZhckluZGV4KCk6IG51bWJlciB7XHJcbiAgICByZXR1cm4gKDxEYXRhVmlldz5zdXBlci5nZXRGb3JtKCkuZ2V0VGFzaygpLkRhdGFWaWV3KS5EdmNvdW50ICsgdGhpcy52ZWVJbmR4O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBTZXQgYXJndW1lbnRzIGZyb20gdGhlIHByb3BlcnR5XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWU9XCJtZ0Zvcm1cIj48L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImRpdElkeFwiPjwvcGFyYW0+XHJcbiAgYXN5bmMgZmlsbERhdGEobWdGb3JtOiBNZ0Zvcm1CYXNlLCBkaXRJZHg6IG51bWJlciwgcGFyc2VyOiBYbWxQYXJzZXIpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIHN1cGVyLmZpbGxEYXRhKG1nRm9ybSwgZGl0SWR4LCBwYXJzZXIpO1xyXG4gICAgdGhpcy5BcmdMaXN0ID0gYXdhaXQgdGhpcy5HZXRBcmd1bWVudExpc3QoKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXQgdGhlIGNvbnRyb2wgYXR0cmlidXRlc1xyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgU2V0QXR0cmlidXRlKGF0dHJpYnV0ZTogc3RyaW5nLCB2YWx1ZVN0cjogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgaXNUYWdQcm9jZXNzZWQ6IGJvb2xlYW4gPSBzdXBlci5TZXRBdHRyaWJ1dGUoYXR0cmlidXRlLCB2YWx1ZVN0cik7XHJcbiAgICBpZiAoIWlzVGFnUHJvY2Vzc2VkKSB7XHJcbiAgICAgIHN3aXRjaCAoYXR0cmlidXRlKSB7XHJcbiAgICAgICAgY2FzZSBDb25zdEludGVyZmFjZS5NR19BVFRSX1NVQkZPUk1fVEFTSzpcclxuICAgICAgICAgIHRoaXMuX3N1YmZvcm1UYXNrSWQgPSB2YWx1ZVN0cjtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGNhc2UgQ29uc3RJbnRlcmZhY2UuTUdfQVRUUl9SRUZSRVNIT046XHJcbiAgICAgICAgICB0aGlzLnJlZnJlc2hPblN0cmluZyA9IHZhbHVlU3RyLnRyaW0oKTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBpc1RhZ1Byb2Nlc3NlZCA9IGZhbHNlO1xyXG4gICAgICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlRXhjZXB0aW9uVG9Mb2dXaXRoTXNnKE5TdHJpbmcuRm9ybWF0KFwiVW5yZWNvZ25pemVkIGF0dHJpYnV0ZTogJ3swfSdcIiwgYXR0cmlidXRlKSk7XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIGlzVGFnUHJvY2Vzc2VkO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBidWlsZCBBcmd1bWVudCBsaXN0IGZyb20gdGhlIHByb3BlcnR5XHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBwcml2YXRlIGFzeW5jIEdldEFyZ3VtZW50TGlzdCgpOiBQcm9taXNlPEFyZ3VtZW50c0xpc3Q+IHtcclxuICAgIGxldCBhcmdMaXN0OiBBcmd1bWVudHNMaXN0ID0gbnVsbDtcclxuICAgIGlmICh0aGlzLl9wcm9wVGFiID09PSBudWxsKVxyXG4gICAgICByZXR1cm4gYXJnTGlzdDtcclxuICAgIGxldCBBcmdMaXN0UHJvcDogUHJvcGVydHkgPSB0aGlzLl9wcm9wVGFiLmdldFByb3BCeUlkKFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1BBUkFNRVRFUlMpO1xyXG4gICAgaWYgKEFyZ0xpc3RQcm9wID09PSBudWxsKVxyXG4gICAgICByZXR1cm4gYXJnTGlzdDtcclxuXHJcbiAgICBsZXQgcGFybXM6IHN0cmluZyA9IGF3YWl0IEFyZ0xpc3RQcm9wLmdldFZhbHVlKCk7XHJcbiAgICBpZiAocGFybXMgIT09IG51bGwpIHtcclxuICAgICAgYXJnTGlzdCA9IG5ldyBBcmd1bWVudHNMaXN0KCk7XHJcbiAgICAgIGFyZ0xpc3QuZmlsbExpc3QocGFybXMsIDxUYXNrQmFzZT5zdXBlci5nZXRGb3JtKCkuZ2V0VGFzaygpKTtcclxuICAgICAgaWYgKHRoaXMucmVmcmVzaE9uU3RyaW5nICE9PSBudWxsKVxyXG4gICAgICAgIGFyZ0xpc3QuUmVmcmVzaE9uU3RyaW5nID0gdGhpcy5yZWZyZXNoT25TdHJpbmc7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gYXJnTGlzdDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm4gdHJ1ZSBpZiB0aGlzIGNvbnRyb2wgaXMgZGVzY2VuZGFudCBvZiB0aGUgcGFyZW50Rm9ybVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJwYXJlbnRGb3JtXCI+PC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIGlzRGVzY2VuZGVudChwYXJlbnRGb3JtOiBNZ0Zvcm0pOiBib29sZWFuIHtcclxuICAgIGxldCBpc0Rlc2NlbmRlbnQ6IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGxldCBjaGVja0N1cnJlbnRGb3JtOiBNZ0Zvcm0gPSA8TWdGb3JtPnN1cGVyLmdldEZvcm0oKTtcclxuXHJcbiAgICBEZWJ1Zy5Bc3NlcnQocGFyZW50Rm9ybSAhPT0gbnVsbCk7XHJcblxyXG4gICAgd2hpbGUgKCFpc0Rlc2NlbmRlbnQgJiYgY2hlY2tDdXJyZW50Rm9ybSAhPT0gbnVsbCkge1xyXG4gICAgICBpZiAocGFyZW50Rm9ybSA9PT0gY2hlY2tDdXJyZW50Rm9ybSlcclxuICAgICAgICBpc0Rlc2NlbmRlbnQgPSB0cnVlO1xyXG5cclxuICAgICAgZWxzZSB7XHJcbiAgICAgICAgbGV0IGN1cnJUYXNrOiBUYXNrQmFzZSA9IDxUYXNrQmFzZT5jaGVja0N1cnJlbnRGb3JtLmdldFRhc2soKTtcclxuICAgICAgICBpZiAoY3VyclRhc2suZ2V0UGFyZW50KCkgIT09IG51bGwpXHJcbiAgICAgICAgICBjaGVja0N1cnJlbnRGb3JtID0gPE1nRm9ybT5jdXJyVGFzay5nZXRQYXJlbnQoKS5nZXRGb3JtKCk7XHJcbiAgICAgICAgZWxzZVxyXG4gICAgICAgICAgYnJlYWs7XHJcbiAgICAgIH1cclxuICAgIH1cclxuICAgIHJldHVybiBpc0Rlc2NlbmRlbnQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgUmVmcmVzaCBjb250cm9sIGRpc3BsYXkgaWYgaXQgaGFzIGEgcHJvcGVydHkgd2hpY2ggaXMgYW4gZXhwcmVzc2lvblxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcHVibGljIGFzeW5jIHJlZnJlc2hPbkV4cHJlc3Npb24oKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBsZXQgaTogbnVtYmVyO1xyXG4gICAgbGV0IHNpemU6IG51bWJlciA9ICh0aGlzLl9wcm9wVGFiID09PSBudWxsID8gMCA6IHRoaXMuX3Byb3BUYWIuZ2V0U2l6ZSgpKTtcclxuICAgIGxldCBwcm9wOiBQcm9wZXJ0eTtcclxuICAgIGxldCByZWZyZXNoOiBib29sZWFuID0gZmFsc2U7XHJcblxyXG4gICAgZm9yIChpID0gMDsgaSA8IHNpemUgJiYgIXJlZnJlc2g7IGkrKykge1xyXG4gICAgICBwcm9wID0gdGhpcy5fcHJvcFRhYi5nZXRQcm9wKGkpO1xyXG5cclxuICAgICAgc3dpdGNoIChwcm9wLmdldElEKCkpIHtcclxuICAgICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0RBVEE6XHJcbiAgICAgICAgICBpZiAoIXByb3AuaXNFeHByZXNzaW9uKCkgJiYgdGhpcy5fZmllbGQgIT09IG51bGwgJiYgdGhpcy5fZmllbGQuZ2V0VGFzaygpICE9PSB0aGlzLmdldEZvcm0oKS5nZXRUYXNrKCkpIHtcclxuICAgICAgICAgICAgcmVmcmVzaCA9IHRydWU7XHJcbiAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgfVxyXG4gICAgICAgIC8qICBmYWxscyB0aHJvdWdoICovXHJcbiAgICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9GT1JNQVQ6XHJcbiAgICAgICAgY2FzZSBQcm9wSW50ZXJmYWNlLlBST1BfVFlQRV9WSVNJQkxFOlxyXG4gICAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfRU5BQkxFRDpcclxuICAgICAgICBjYXNlIFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1JBTkdFOlxyXG4gICAgICAgIGNhc2UgUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfVFJBTlNMQVRPUjpcclxuICAgICAgICAgIGlmIChwcm9wLmlzRXhwcmVzc2lvbigpKVxyXG4gICAgICAgICAgICByZWZyZXNoID0gdHJ1ZTtcclxuICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgIGRlZmF1bHQ6XHJcbiAgICAgICAgICBicmVhaztcclxuICAgICAgfVxyXG4gICAgICBpZiAocmVmcmVzaClcclxuICAgICAgICBhd2FpdCB0aGlzLlJlZnJlc2hEaXNwbGF5KCk7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICBhc3luYyBpbnZva2UoKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICBsZXQgaW52b2tlZDogYm9vbGVhbiA9IGZhbHNlO1xyXG5cclxuICAgIC8vIGlmIHRoZSBjb250cm9sIGlzIG5vdCB2aXNpYmxlLCBub3QgZW5hYmxlZCBvciBub3QgcGFya2FibGUgc2tpcCB0aGlzIGNvbnRyb2xcclxuICAgIGlmIChhd2FpdCB0aGlzLmlzUGFya2FibGUodHJ1ZSkpIHtcclxuICAgICAgYXdhaXQgQWNjZXNzSGVscGVyLmV2ZW50c01hbmFnZXIuaGFuZGxlSW50ZXJuYWxFdmVudFdpdGhNZ0NvbnRyb2xCYXNlKHRoaXMsIEludGVybmFsSW50ZXJmYWNlLk1HX0FDVF9DVFJMX1BSRUZJWCk7XHJcbiAgICAgIGludm9rZWQgPSB0cnVlO1xyXG4gICAgfVxyXG4gICAgcmV0dXJuIGludm9rZWQ7XHJcbiAgfVxyXG5cclxuICBhc3luYyBpc1BhcmthYmxlKGNoZWNrRW5hYmxlZEFuZFZpc2libGU6IGJvb2xlYW4pOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGxldCByZXN1bHQ6IGJvb2xlYW4gPSAhc3VwZXIuaXNJbWFnZUNvbnRyb2woKTtcclxuICAgIGlmIChyZXN1bHQpIHtcclxuICAgICAgYXdhaXQgc3VwZXIuY2hlY2tQcm9wKFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX0VOQUJMRUQsIHRydWUpO1xyXG5cclxuICAgICAgYXdhaXQgc3VwZXIuY2hlY2tQcm9wKFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1ZJU0lCTEUsIHRydWUpO1xyXG4gICAgICByZXN1bHQgPSBhd2FpdCBzdXBlci5pc1BhcmthYmxlKGNoZWNrRW5hYmxlZEFuZFZpc2libGUpO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiByZXN1bHQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyB0aGUgc3ViZm9ybSB0YXNrIGlkIG9mIHRoZSBjb250cm9sXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRTdWJmb3JtVGFza0lkKCk6IHN0cmluZyB7XHJcbiAgICByZXR1cm4gdGhpcy5fc3ViZm9ybVRhc2tJZDtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBmaW5kIHRoZSBzdWJmb3JtIHRhc2sgYWNjb3JkaW5nIHRvIGl0cyBpZCBhbmQgc2F2ZSBpdFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgaW5pdFN1YmZvcm1UYXNrKCk6IHZvaWQge1xyXG4gICAgaWYgKHN1cGVyLmlzU3ViZm9ybSgpKVxyXG4gICAgICB0aGlzLl9zdWJmb3JtVGFzayA9IDxUYXNrQmFzZT5HdWlEYXRhQ29sbGVjdGlvbi5NR0RhdGFUYWJsZS5HZXRUYXNrQnlJRCh0aGlzLl9zdWJmb3JtVGFza0lkKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBnZXQgdGhlIGNvbnRyb2wncyBwYXJlbnRUYWJsZVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0UGFyZW50VGFibGUoKTogTWdDb250cm9sIHtcclxuICAgIHJldHVybiA8TWdDb250cm9sPnRoaXMuX3BhcmVudFRhYmxlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJlc3RvcmUgYW5kIGRpc3BsYXkgdGhlIG9sZCB2YWx1ZSBvZiB0aGUgY29udHJvbCB1c2VkIHdoZW4gdGhlIGNvbnRyb2wgaXMgbm90IG1vZGlmaWFibGVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIGFzeW5jIHJlc3RvcmVPbGRWYWx1ZSgpOiBQcm9taXNlPHZvaWQ+IHtcclxuICAgIGlmICh0aGlzLl9maWVsZCAhPT0gbnVsbClcclxuICAgICAgYXdhaXQgKDxGaWVsZD50aGlzLl9maWVsZCkudXBkYXRlRGlzcGxheSgpO1xyXG4gICAgZWxzZSB7XHJcbiAgICAgIHN1cGVyLnJlc2V0UHJldlZhbCgpO1xyXG4gICAgICBhd2FpdCBzdXBlci5TZXRBbmRSZWZyZXNoRGlzcGxheVZhbHVlKGF3YWl0IHRoaXMuZ2V0TWdWYWx1ZSh0aGlzLlZhbHVlKSwgdGhpcy5Jc051bGwpO1xyXG4gICAgfVxyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldHMgdGhlIGV2ZW50IHRhc2tcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHNldFJ0RXZ0VGFzayhjdXJUYXNrOiBUYXNrQmFzZSk6IHZvaWQge1xyXG4gICAgdGhpcy5fcnRFdnRUYXNrID0gY3VyVGFzaztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZXR1cm5zIHRoZSBldmVudCB0YXNrXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBnZXRSdEV2dFRhc2soKTogVGFza0Jhc2Uge1xyXG4gICAgcmV0dXJuIHRoaXMuX3J0RXZ0VGFzaztcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBzZXRzIHRoZSBzdWJmb3JtIHRhc2sgaWQgb2YgdGhlIGNvbnRyb2xcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIHNldFN1YmZvcm1UYXNrSWQodGFza0lkOiBzdHJpbmcpOiB2b2lkIHtcclxuICAgIHRoaXMuX3N1YmZvcm1UYXNrSWQgPSB0YXNrSWQ7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJucyBzdG9wRXhlY3V0aW9uIGZsYWcgaW4gdGhlIGVuZCBvZiBoYW5kbGUgZm9jdXMgb24gdGhlIGNvbnRyb2xcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgaXNGb2N1c2VkU3RvcEV4ZWN1dGlvbigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLl9mb2N1c2VkU3RvcEV4ZWN1dGlvbjtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICByZW1lbWJlciBzdG9wRXhlY3V0aW9uIGZsYWcgaW4gdGhlIGVuZCBvZiBoYW5kbGUgZm9jdXMgb24gdGhlIGNvbnRyb2xcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiZm9jdXNlZFN0b3BFeGVjdXRpb25cIj48L3BhcmFtPlxyXG4gIHNldEZvY3VzZWRTdG9wRXhlY3V0aW9uKGZvY3VzZWRTdG9wRXhlY3V0aW9uOiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLl9mb2N1c2VkU3RvcEV4ZWN1dGlvbiA9IGZvY3VzZWRTdG9wRXhlY3V0aW9uO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJjdHJsLVwiPlRoZSBjdHJsIHRvIGNoZWNrLiBjYW4gYmUgZnJhbWUgZm9ybSBhbmQgYWxzbyBzdWJmb3JtIGNvbnRyb2xcclxuICAvLy8gPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+PC9yZXR1cm5zPlxyXG4gIG9uVGhlU2FtZVN1YkZvcm1Db250cm9sKGN0cmw6IE1nQ29udHJvbCk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IHJldFZhbHVlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBpZiAoY3RybCAhPT0gbnVsbCkge1xyXG4gICAgICBpZiAoc3VwZXIuZ2V0Rm9ybSgpLmlzU3ViRm9ybSgpICYmIGN0cmwuZ2V0Rm9ybSgpLmlzU3ViRm9ybSgpKSB7XHJcbiAgICAgICAgaWYgKHN1cGVyLmdldEZvcm0oKS5nZXRUYXNrKCkgPT09IGN0cmwuZ2V0Rm9ybSgpLmdldFRhc2soKSlcclxuICAgICAgICAgIHJldFZhbHVlID0gdHJ1ZTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHJldFZhbHVlO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHRydWUgaWYgdGhlIGN0cmxzIGFyZSBvbiBkaWZmZXJlbnQgZm9ybXNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiY3RybFwiPjwvcGFyYW0+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBvbkRpZmZGb3JtKGN0cmw6IE1nQ29udHJvbCk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IGlzU3ViZm9ybTogYm9vbGVhbiA9IHN1cGVyLmdldEZvcm0oKS5pc1N1YkZvcm0oKSB8fCBjdHJsLmdldEZvcm0oKS5pc1N1YkZvcm0oKTtcclxuICAgIGxldCBpc09uRGlmZkZvcm06IGJvb2xlYW4gPSAoaXNTdWJmb3JtICkgJiYgIXRoaXMub25UaGVTYW1lU3ViRm9ybUNvbnRyb2woY3RybCk7XHJcblxyXG4gICAgcmV0dXJuIGlzT25EaWZmRm9ybTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICB0cnVlIGlmIGNvbnRyb2wgaXMgaW4gY29udHJvbCBzdWZmaXhcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgaXNJbkNvbnRyb2xTdWZmaXgoKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5faW5Db250cm9sU3VmZml4O1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHNldCB0cnVlIGlmIGNvbnRyb2wgaXMgaW4gY29udHJvbCBzdWZmaXhcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiaW5Db250cm9sU3VmZml4XCI+PC9wYXJhbT5cclxuICBzZXRJbkNvbnRyb2xTdWZmaXgoaW5Db250cm9sU3VmZml4OiBib29sZWFuKTogdm9pZCB7XHJcbiAgICB0aGlzLl9pbkNvbnRyb2xTdWZmaXggPSBpbkNvbnRyb2xTdWZmaXg7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgcmV0dXJuIHRydWUgaWYgdGhlIGNvbnRyb2wgaGFzIHNlbGVjdCBwcm9ncmFtXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICBIYXNTZWxlY3RQcm9ncmFtKCk6IGJvb2xlYW4ge1xyXG4gICAgbGV0IEhhc1NlbGVjdFByb2dyYW06IGJvb2xlYW4gPSBmYWxzZTtcclxuICAgIGxldCBzZWxlY3RQcm9nUHJvcDogUHJvcGVydHkgPSBzdXBlci5HZXRDb21wdXRlZFByb3BlcnR5KFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1NFTEVDVF9QUk9HUkFNKTtcclxuICAgIGlmIChzZWxlY3RQcm9nUHJvcCAhPT0gbnVsbCAmJiBzZWxlY3RQcm9nUHJvcC5HZXRDb21wdXRlZFZhbHVlKCkgIT09IG51bGwpXHJcbiAgICAgIEhhc1NlbGVjdFByb2dyYW0gPSB0cnVlO1xyXG5cclxuICAgIHJldHVybiBIYXNTZWxlY3RQcm9ncmFtO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybiB0cnVlIGlmIHRoZSBjb250cm9sIHVzZSB0aGUgaGFuZGxlciBaT09NIChmb3Igc2VsZWN0IHByb2dyYW0gb3IgWm9vbSBoYW5kbGVyKVxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICB1c2Vab29tSGFuZGxlcigpOiBib29sZWFuIHtcclxuICAgIHJldHVybiB0aGlzLkhhc1pvb21IYW5kbGVyIHx8IChzdXBlci5nZXRGaWVsZCgpICE9PSBudWxsICYmICgoPEZpZWxkPnN1cGVyLmdldEZpZWxkKCkpLmdldEhhc1pvb21IYW5kbGVyKCkgfHwgKHRoaXMuSGFzU2VsZWN0UHJvZ3JhbSgpKSkpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIFVwZGF0ZSBib29sZWFuIHByb3BlcnR5KGV4OnZpc2libGVcXGVuYWJsZSkgb2YgY29udHJvbCBhbmQgaXQncyBjaGlsZHJlblxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJwcm9wSWRcIj5wcm9wZXJ0eSBpZCA8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiY29tbWFuZFR5cGVcIj5jb21tYW5kIHR5cGUgdGhhdCBiZWxvbmcgdG8gdGhlIHByb3AgaWQ8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidmFsXCI+PC9wYXJhbT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInVwZGF0ZVRoaXNcIj48L3BhcmFtPlxyXG4gIGFzeW5jIHVwZGF0ZVByb3BlcnR5TG9naWNOZXN0aW5nKHByb3BJZDogbnVtYmVyLCBjb21tYW5kVHlwZTogQ29tbWFuZFR5cGUsIHZhbDogYm9vbGVhbiwgdXBkYXRlVGhpczogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgaWYgKHZhbCAmJiBzdXBlci5oYXZlVG9DaGVja1BhcmVudFZhbHVlKCkpXHJcbiAgICAgIHZhbCA9IHN1cGVyLmlzUGFyZW50UHJvcFZhbHVlKHByb3BJZCk7XHJcblxyXG4gICAgLy8gaWYgdGhlIHN1YmZvcm0gbXVzdCBiZSBpbnZpc2libGUgKENUUkxfU1VCRk9STV9OT05FKSB3ZSBjaGFuZ2UgaXRzIHZpc2liaWxpdHkgdG8gZmFsc2VcclxuICAgIGlmICh2YWwgJiYgc3VwZXIuaXNTdWJmb3JtKCkgJiYgY29tbWFuZFR5cGUgPT09IENvbW1hbmRUeXBlLlBST1BfU0VUX1ZJU0lCTEUgJiYgdGhpcy5TaG91bGRTZXRTdWJmb3JtSW52aXNpYmxlKCkpXHJcbiAgICAgIHZhbCA9IGZhbHNlO1xyXG5cclxuICAgIGlmICh1cGRhdGVUaGlzKSB7XHJcbiAgICAgIENvbW1hbmRzLmFkZE9wZXJhdGlvbldpdGhMaW5lKENvbW1hbmRUeXBlLlNFVF9QUk9QRVJUWSwgdGhpcywgc3VwZXIuZ2V0RGlzcGxheUxpbmUoZmFsc2UpLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kVHlwZSA9PT0gQ29tbWFuZFR5cGUuUFJPUF9TRVRfVklTSUJMRSA/IEh0bWxQcm9wZXJ0aWVzLlZpc2libGUgOiBIdG1sUHJvcGVydGllcy5FbmFibGVkLCB2YWwpO1xyXG5cclxuICAgIH1cclxuICAgIGF3YWl0IHN1cGVyLnVwZGF0ZUNoaWxkcmVuUHJvcFZhbHVlKHByb3BJZCwgY29tbWFuZFR5cGUsIHZhbCk7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vIElmIHRoZSBzdWJmb3JtIG11c3QgYmUgaW52aXNpYmxlIChmb3IgZXhhbXBsZSBDVFJMX1NVQkZPUk1fTk9ORSkgcmV0dXJucyB0cnVlLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxyZXR1cm5zPjwvcmV0dXJucz5cclxuICBwcml2YXRlIFNob3VsZFNldFN1YmZvcm1JbnZpc2libGUoKTogYm9vbGVhbiB7XHJcbiAgICBsZXQgc2V0SW52aXNpYmxlOiBib29sZWFuID0gZmFsc2U7XHJcbiAgICBsZXQgc3ViZm9ybVR5cGU6IFN1YmZvcm1UeXBlID0gPFN1YmZvcm1UeXBlPnN1cGVyLkdldENvbXB1dGVkUHJvcGVydHkoUHJvcEludGVyZmFjZS5QUk9QX1RZUEVfU1VCRk9STV9UWVBFKS5HZXRDb21wdXRlZFZhbHVlSW50ZWdlcigpO1xyXG4gICAgaWYgKHN1YmZvcm1UeXBlID09PSBTdWJmb3JtVHlwZS5Ob25lICYmIHRoaXMuZ2V0U3ViZm9ybVRhc2tJZCgpID09PSBudWxsKVxyXG4gICAgICBzZXRJbnZpc2libGUgPSB0cnVlO1xyXG4gICAgcmV0dXJuIHNldEludmlzaWJsZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBVcGRhdGVzIHZpc2liaWxpdHkgb3IgZW5hYmxlIHByb3BlcnR5IG9mIHN1YmZvcm0gY29udHJvbHNcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwicHJvcElkXCI+SWQgb2YgdmlzaWJpbGl0eSBvciBlbmFibGUgcHJvcGVydHk8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiY29tbWFuZFR5cGVcIj50eXBlIG9mIHRoZSBHVUkgY29tbWFuZDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ2YWxcIj52YWx1ZSBmb3IgdGhlIHByb3BlcnR5PC9wYXJhbT5cclxuICBhc3luYyB1cGRhdGVTdWJmb3JtQ2hpbGRyZW5Qcm9wVmFsdWUocHJvcElkOiBudW1iZXIsIGNvbW1hbmRUeXBlOiBDb21tYW5kVHlwZSwgdmFsOiBib29sZWFuKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBEZWJ1Zy5Bc3NlcnQoc3VwZXIuaXNTdWJmb3JtKCkpO1xyXG5cclxuICAgIGlmICghKDxUYXNrQmFzZT5zdXBlci5nZXRGb3JtKCkuZ2V0VGFzaygpKS5BZnRlckZpcnN0UmVjb3JkUHJlZml4KVxyXG4gICAgICByZXR1cm47XHJcblxyXG4gICAgbGV0IHN1YmZvcm1UeXBlOiBTdWJmb3JtVHlwZSA9IDxTdWJmb3JtVHlwZT5zdXBlci5HZXRDb21wdXRlZFByb3BlcnR5KFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1NVQkZPUk1fVFlQRSkuR2V0Q29tcHV0ZWRWYWx1ZUludGVnZXIoKTtcclxuICAgIGlmICh0aGlzLl9zdWJmb3JtVGFza0lkICE9PSBudWxsIHx8IHN1YmZvcm1UeXBlID09PSBTdWJmb3JtVHlwZS5Ob25lKSB7XHJcbiAgICAgIGlmICh0aGlzLl9zdWJmb3JtVGFzayAhPT0gbnVsbCAmJiB0aGlzLl9zdWJmb3JtVGFzay5pc1N0YXJ0ZWQoKSkge1xyXG4gICAgICAgIHRoaXMuU3ViZm9ybUxvYWRlZCA9IHRydWU7XHJcbiAgICAgICAgaWYgKGNvbW1hbmRUeXBlID09PSBDb21tYW5kVHlwZS5QUk9QX1NFVF9WSVNJQkxFICYmIHZhbCAmJiB0aGlzLlJlZnJlc2hPblZpc2libGUpIHtcclxuICAgICAgICAgIHRoaXMuUmVmcmVzaE9uVmlzaWJsZSA9IGZhbHNlO1xyXG4gICAgICAgICAgYXdhaXQgKDxUYXNrQmFzZT5zdXBlci5nZXRGb3JtKCkuZ2V0VGFzaygpKS5TdWJmb3JtUmVmcmVzaCh0aGlzLl9zdWJmb3JtVGFzaywgdHJ1ZSk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBsZXQgc3ViZm9ybUZvcm06IE1nRm9ybUJhc2UgPSB0aGlzLl9zdWJmb3JtVGFzay5nZXRGb3JtKCk7XHJcbiAgICAgICAgZm9yIChsZXQgaTogbnVtYmVyID0gMDsgaSA8IHN1YmZvcm1Gb3JtLmdldEN0cmxDb3VudCgpOyBpKyspIHtcclxuICAgICAgICAgIGxldCBjaGlsZDogTWdDb250cm9sQmFzZSA9IHN1YmZvcm1Gb3JtLmdldEN0cmwoaSk7XHJcbiAgICAgICAgICAvLyBRQ1IgIzk4MTU1NSwgV2Ugc2hvdWxkIG5vdCBhZmZlY3QgdmlzaWJpbGl0eSBvZiB0aGUgVGFibGVDb2x1bW5zIHNpbmNlIGl0IGlzIG1hbmFnZWQgYnkgdGhlIHRhYmxlLlNldHRpbmcgdmlzaWJpbGl0eVxyXG4gICAgICAgICAgLy8gb2YgYWxsIGNvbHVtbnMgdG8gZmFsc2UgcHJldmVudHMgdGFibGUgcGxhY2VtZW50XHJcbiAgICAgICAgICBpZiAoIWNoaWxkLmlzQ29sdW1uQ29udHJvbCgpKVxyXG4gICAgICAgICAgICBjb250aW51ZTtcclxuICAgICAgICAgIGxldCBjaGlsZFZhbHVlOiBib29sZWFuID0gYXdhaXQgY2hpbGQuY2hlY2tQcm9wKHByb3BJZCwgdHJ1ZSkgJiYgdmFsO1xyXG4gICAgICAgICAgaWYgKGNoaWxkVmFsdWUpXHJcbiAgICAgICAgICAgIGNoaWxkVmFsdWUgPSBjaGlsZC5pc1BhcmVudFByb3BWYWx1ZShwcm9wSWQpO1xyXG5cclxuICAgICAgICAgIC8vIGlmICh0aGlzLl9zdWJmb3JtVGFzay5pc1N0YXJ0ZWQoKSlcclxuICAgICAgICAgIC8vICAgQ29tbWFuZHMuYWRkQXN5bmMoY29tbWFuZFR5cGUsIGNoaWxkLCBjaGlsZC5nZXREaXNwbGF5TGluZShmYWxzZSksIGNoaWxkVmFsdWUpO1xyXG4gICAgICAgICAgYXdhaXQgY2hpbGQudXBkYXRlQ2hpbGRyZW5Qcm9wVmFsdWUocHJvcElkLCBjb21tYW5kVHlwZSwgY2hpbGRWYWx1ZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9XHJcbiAgICB9XHJcbiAgICBlbHNlIGlmICgoY29tbWFuZFR5cGUgPT09IENvbW1hbmRUeXBlLlBST1BfU0VUX1ZJU0lCTEUgJiYgdmFsKSAmJiAhdGhpcy5TdWJmb3JtTG9hZGVkKSB7XHJcbiAgICAgIHRoaXMuU3ViZm9ybUxvYWRlZCA9IHRydWU7XHJcbiAgICAgIGF3YWl0IEFjY2Vzc0hlbHBlci5ldmVudHNNYW5hZ2VyLmhhbmRsZUludGVybmFsRXZlbnRXaXRoTWdDb250cm9sQmFzZSh0aGlzLCBJbnRlcm5hbEludGVyZmFjZS5NR19BQ1RfU1VCRk9STV9PUEVOKTtcclxuICAgIH1cclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gU2V0IHN1YmZvcm0gdGFzayBpZCBmb3IgYSBzdWJmb3JtIGNvbnRyb2xcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIEluaXQoKTogdm9pZCB7XHJcbiAgICB0aGlzLmluaXRTdWJmb3JtVGFzaygpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyBnZXQgdGhlIGJlaGF2aW91ciBmb3IgdGhlIHRhYmxlIGNvbnRyb2xcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cmV0dXJucz48L3JldHVybnM+XHJcbiAgR2V0VGFibGVCZWhhdmlvdXIoKTogVGFibGVCZWhhdmlvdXIge1xyXG4gICAgcmV0dXJuIFRhYmxlQmVoYXZpb3VyLlVubGltaXRlZEl0ZW1zO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHZhbGlkYXRlIHRoZSB2YWx1ZSBvZiB0aGUgY29udHJvbCBhbmQgc2V0IGl0J3MgdmFsdWVcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwiTmV3VmFsdWVcIj50aGUgdmFsdWUgb2YgdGhlIGNvbnRyb2w8L3BhcmFtPlxyXG4gIC8vLyA8cGFyYW0gbmFtZSA9IFwidXBkYXRlQ3RybFwiPmlmIHRydWUgdGhlbiB0aGUgY29udHJvbCB3aWxsIGJlIHVwZGF0ZWQgdXBvbiBzdWNjZXNzZnVsIGNoZWNrPC9wYXJhbT5cclxuICAvLy8gPHJldHVybnM+cmV0dXJucyBpZiB2YWxpZGF0aW9uIGlzIHN1Y2Nlc3NmdWw8L3JldHVybnM+XHJcbiAgYXN5bmMgdmFsaWRhdGVBbmRTZXRWYWx1ZShOZXdWYWx1ZTogYW55LCB1cGRhdGVDdHJsOiBib29sZWFuKTogUHJvbWlzZTxib29sZWFuPiB7XHJcbiAgICBzdXBlci5VcGRhdGVNb2RpZmllZEJ5VXNlcihOZXdWYWx1ZSk7XHJcblxyXG4gICAgLy8gaWYgdGhlIHZhbHVlIG9mIHRoZSBjb250cm9sIGlzIG51bGwgb3Igd2FzIGNoYW5nZWRcclxuICAgIC8vIGNoZWNrIHZhbGlkYXRpb24gYW5kIHVwZGF0ZSB0aGUgY29udHJvbCB2YWx1ZVxyXG4gICAgaWYgKHRoaXMuTW9kaWZpZWRCeVVzZXIpIHtcclxuICAgICAgbGV0IGN0cmxDdXJyVmFsdWU6IGFueSA9IHRoaXMuVmFsdWU7XHJcbiAgICAgIGxldCB2ZDogVmFsaWRhdGlvbkRldGFpbHM7XHJcblxyXG4gICAgICBpZiAoc3VwZXIuZ2V0UElDKCkgPT09IG51bGwpXHJcbiAgICAgICAgcmV0dXJuIHRydWU7XHJcbiAgICAgIHZkID0gc3VwZXIuYnVpbGRQaWN0dXJlKGN0cmxDdXJyVmFsdWUsIE5ld1ZhbHVlKTtcclxuXHJcbiAgICAgIHZkLmV2YWx1YXRlKCk7XHJcblxyXG4gICAgICAvLyB0aGUgdmFsaWRhdGlvbiBvZiB0aGUgZmllbGRzIHZhbHVlIHdhcyB3cm9uZ1xyXG4gICAgICBpZiAodmQuVmFsaWRhdGlvbkZhaWxlZCkge1xyXG4gICAgICAgIHRoaXMuTW9kaWZpZWRCeVVzZXIgPSBmYWxzZTtcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICAgIH1cclxuXHJcbiAgICAgIHRoaXMuSXNJbnRlcmFjdGl2ZVVwZGF0ZSA9IHRydWU7XHJcblxyXG4gICAgICBzdXBlci5nZXRGb3JtKCkuZ2V0VGFzaygpLnNldERhdGFTeW5jZWQoZmFsc2UpO1xyXG5cclxuICAgICAgLy8gc2V0IHRoZSB2YWx1ZSAoaGFuZGxlIHJlY29tcHV0ZSwgZXRjLilcclxuICAgICAgaWYgKHVwZGF0ZUN0cmwpIHtcclxuICAgICAgICAvLyBRQ1IjNDQxMDIwOkFmdGVyIHZhbGlkYXRpbmcgZGlzcGxheSB2YWx1ZSwgdGFrZSB0aGUgc2FtZSBjdHJsJ3MgdmFsdWUgZm9yIG1nIHZhbHVlIGNvbnZlcnNpb24uXHJcbiAgICAgICAgLy8gVXNpbmcgZGlzcGxheSB2YWx1ZSBnZW5lcmF0ZWQgZnJvbSBNZ1ZhbHVlLCBtaWdodCBoYXZlIHByb2JsZW0gdG8gY29udmVydCBiYWNrIHRvIE1nVmFsIHVzaW5nIHBpY3R1cmUgZHVlIHRvIGFsaWdubWVudCAoY2hhbmdlZCBhbGlnbm1lbnQgKS5cclxuICAgICAgICAvLyBUaGlzIHByb2JsZW0gb2NjdXJzIGZvciBudW1lcmljLlxyXG4gICAgICAgIC8vIFRoZSBmaXggc2hvdWxkIGJlIGFwcGxpY2FibGUgZm9yIG51bWVyaWMgdHlwZSBvbmx5LiBCZWNhdXNlIGRhdGUgYW5kIHRpbWUgZmllbGQgd2l0aCBjb21wbGV4IG1hc2tpbmcgaGF2ZSBwcm9ibGVtIG9uIHVzaW5nIGN0cmwncyB2YWx1ZS5cclxuICAgICAgICAvLyBSZWZlciBkYXRlIHFjcnM6ICMyOTE2NjYsICMzMDczNTMsICM0MzQyNDEgYW5kIGZvciB0aW1lLCBjaGVjayBkZWZhdWx0IHZhbHVlIHdoZW4gZm9ybWF0IGlzICdISC1NTS1TUyBQTVpAJ1xyXG4gICAgICAgIGlmICh0aGlzLl9maWVsZCAhPT0gbnVsbCAmJiB0aGlzLl9maWVsZC5nZXRUeXBlKCkgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuTlVNRVJJQyAmJiB0eXBlb2YgTmV3VmFsdWUgPT09ICdzdHJpbmcnICYmIE5ld1ZhbHVlLnRyaW0oKS5sZW5ndGggPiAwKVxyXG4gICAgICAgICAgdmQuc2V0VmFsdWUoTmV3VmFsdWUpO1xyXG5cclxuICAgICAgICBhd2FpdCB0aGlzLnNldFZhbHVlKHZkKTtcclxuICAgICAgfVxyXG4gICAgfVxyXG4gICAgcmV0dXJuIHRydWU7XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+XHJcbiAgLy8vICAgc2V0IHRoZSB2YWx1ZSByZWNlaXZlZCBmcm9tIHRoZSB1c2VyIGlucHV0IGFmdGVyIHZhbGlkYXRpb24gYW5kIHVwZGF0ZSB0aGUgZmllbGQgY29ubmVjdGVkIHRvIHRoaXNcclxuICAvLy8gICBjb250cm9sIChpZiBleGlzdHMpXHJcbiAgLy8vIDwvc3VtbWFyeT5cclxuICAvLy8gPHBhcmFtIG5hbWUgPSBcInZkXCI+dGhlIHZhbGlkYXRpb24gZGV0YWlscyBvYmplY3Q8L3BhcmFtPlxyXG4gIHByaXZhdGUgYXN5bmMgc2V0VmFsdWUodmQ6IFZhbGlkYXRpb25EZXRhaWxzKTogUHJvbWlzZTx2b2lkPiB7XHJcbiAgICBsZXQgaXNOdWxsOiBib29sZWFuID0gdmQuZ2V0SXNOdWxsKCk7XHJcbiAgICBsZXQgbmV3VmFsdWU6IGFueSA9IHZkLmdldERpc3BWYWx1ZSgpO1xyXG4gICAgbGV0IG1nVmFsOiBzdHJpbmc7XHJcblxyXG4gICAgaWYgKCFpc051bGwgfHwgIXRoaXMuX2ZpZWxkLmhhc051bGxEaXNwbGF5VmFsdWUoKSlcclxuICAgICAgbWdWYWwgPSBhd2FpdCBzdXBlci5nZXRNZ1ZhbHVlKG5ld1ZhbHVlKTtcclxuICAgIC8vIGl0J3MgaW5uZXIgdmFsdWUgLT4gdHJhbnNsYXRlIGl0IHRvIHRoZSBkaXNwbGF5XHJcbiAgICBlbHNlXHJcbiAgICAgIG1nVmFsID0gKCh0aGlzLl9maWVsZC5nZXRUeXBlKCkgPT09IFN0b3JhZ2VBdHRyaWJ1dGUuQkxPQl9WRUNUT1IpID8gdGhpcy5fZmllbGQuZ2V0Q2VsbERlZnVhbHRWYWx1ZSgpIDogdGhpcy5fZmllbGQuZ2V0RGVmYXVsdFZhbHVlKCkpO1xyXG4gICAgaWYgKG1nVmFsICE9PSBudWxsKSB7XHJcbiAgICAgIGlmICh0aGlzLl9maWVsZCAhPT0gbnVsbCAmJiAoIShuZXdWYWx1ZSA9PT0gdGhpcy5WYWx1ZSkgfHwgdGhpcy5LZXlTdHJva2VPbiB8fCB0aGlzLklzTnVsbCAhPT0gaXNOdWxsKSkge1xyXG4gICAgICAgIGF3YWl0ICg8RmllbGQ+dGhpcy5fZmllbGQpLnNldFZhbHVlQW5kU3RhcnRSZWNvbXB1dGUobWdWYWwsIGlzTnVsbCwgdHJ1ZSwgdHJ1ZSwgZmFsc2UpO1xyXG5cclxuICAgICAgICAvLyBkZWZlY3QgMTI3NzM0IDogdmFsdWUgb2YgdGhlIGZpZWxkIG1pZ2h0IGJlIGNoYW5nZWQgYWxyZWFkeSBpbnNpZGUgYSBjb250cm9sIGNoYW5nZSBoYW5kbGVyXHJcbiAgICAgICAgLy8gdG8gYXZvaWQgdXBkYXRpbmcgb2xkIHZhbHVlIGFuZCBvdmVycnVubmluZyB0aGUgdmFsdWUgZnIwbSB0aGUgY29udHJvbCBjaGFuZ2VcclxuICAgICAgICAvLyBnZXQgdGhlIHZhbHVlIGZyb20gdGhlIGZpZWxkLiAobmVlZCB0byBiZSBkb25lIGZvciBjb21ibyBhbmQgbGlzdCBib3gsIGJ1dCBpdCdzIHRvbyByaXNreVxyXG4gICAgICAgIC8vIGFuZCB1bmxpa2VseSB0byBoYXBwZW4sIHNvIHRoZSBmaXggd2lsbCBiZSBmb3IgY2hlY2sgYm94IG9ubHkpXHJcblxyXG4gICAgICAgIGlmIChzdXBlci5pc0NoZWNrQm94KCkpIHtcclxuICAgICAgICAgIHRoaXMuZm9yY2VSZWZyZXNoID0gdHJ1ZTtcclxuICAgICAgICAgIG1nVmFsID0gKDxGaWVsZD50aGlzLl9maWVsZCkuZ2V0VmFsdWUoZmFsc2UpO1xyXG4gICAgICAgIH1cclxuICAgICAgfVxyXG5cclxuICAgICAgLy8gaWYgZmllbGQgdmFsdWUgaXMgbnVsbCAmIGhhcyBudWxsIGRpc3BsYXkgdmFsdWUsIHRha2UgZXZhbHVhdGVkIG51bGwgZGlzcGxheSB2YWx1ZS5cclxuICAgICAgaWYgKCh0aGlzLl9maWVsZCAhPT0gbnVsbCAmJiBpc051bGwpICYmIHRoaXMuX2ZpZWxkLmhhc051bGxEaXNwbGF5VmFsdWUoKSlcclxuICAgICAgICBtZ1ZhbCA9IG5ld1ZhbHVlO1xyXG5cclxuICAgICAgYXdhaXQgc3VwZXIuU2V0QW5kUmVmcmVzaERpc3BsYXlWYWx1ZShtZ1ZhbCwgaXNOdWxsKTtcclxuICAgICAgdGhpcy5mb3JjZVJlZnJlc2ggPSBmYWxzZTtcclxuICAgICAgLy8gUUNSICM0Mzg3NTMuIFByZXZlbnQgUlAmUlMgY3ljbGUsIHdoZW4gaXQncyBub3QgbmVlZGVkLlxyXG4gICAgICB0aGlzLktleVN0cm9rZU9uID0gZmFsc2U7XHJcbiAgICB9XHJcbiAgfVxyXG5cclxuICAvLy8gPHN1bW1hcnk+IHJlZnJlc2ggdGhlIGl0ZW0gbGlzdCBvZiByYWRpbyBidXR0b24gPC9zdW1tYXJ5PlxyXG4gIC8vLyA8cGFyYW0gbmFtZT1cImV4ZWNDb21wdXRlQ2hvaWNlXCI+PC9wYXJhbT5cclxuICBhc3luYyByZWZyZXNoQW5kU2V0SXRlbXNMaXN0Rm9yUmFkaW9CdXR0b24obGluZTogbnVtYmVyLCBleGVjQ29tcHV0ZUNob2ljZTogYm9vbGVhbik6IFByb21pc2U8dm9pZD4ge1xyXG4gICAgYXdhaXQgc3VwZXIucmVmcmVzaEFuZFNldEl0ZW1zTGlzdEZvclJhZGlvQnV0dG9uKGxpbmUsIGV4ZWNDb21wdXRlQ2hvaWNlKTtcclxuXHJcbiAgICAvLyBJZiB0aGUgcGFya2luZyB3YXMgb24gdGhlIHJhZGlvIGNvbnRyb2wsIHdlIG5lZWQgdG8gcmVzZXQgdGhlIGZvY3VzIGJlY2F1c2VcclxuICAgIC8vIHRoZSBvbGQgY29udHJvbHMgd2VyZSBkaXNwb3NlZCBhbmQgdGhlIG5ldyBvbmVzIGFyZSBjcmVhdGVkLlxyXG4gICAgbGV0IGxhc3RGb2N1c2VkVGFzazogVGFza0Jhc2UgPSBMYXN0Rm9jdXNlZE1hbmFnZXIuSW5zdGFuY2UuZ2V0TGFzdEZvY3VzZWRUYXNrKCg8VGFza0Jhc2U+c3VwZXIuZ2V0Rm9ybSgpLmdldFRhc2soKSkuZ2V0TWdkSUQoKSk7XHJcbiAgICAvLyBpZiAobGFzdEZvY3VzZWRUYXNrICE9PSBudWxsICYmIHRoaXMgPT09IGxhc3RGb2N1c2VkVGFzay5nZXRMYXN0UGFya2VkQ3RybCgpKVxyXG4gICAgLy8gICBDb21tYW5kcy5hZGRBc3luYyhDb21tYW5kVHlwZS5TRVRfRk9DVVMsIHRoaXMpO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdGhlIHN1YmZvcm0gdGFzayBvZiB0aGlzIHN1YmZvcm0gY29udHJvbFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgZ2V0U3ViZm9ybVRhc2soKTogVGFza0Jhc2Uge1xyXG4gICAgcmV0dXJuIHRoaXMuX3N1YmZvcm1UYXNrO1xyXG4gIH1cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyAgIHJldHVybnMgdGhlIHN1YmZvcm0gdGFzayBvZiB0aGlzIHN1YmZvcm0gY29udHJvbFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgcmVzZXRTdWJmb3JtVGFzaygpOiB2b2lkIHtcclxuICAgIHRoaXMuX3N1YmZvcm1UYXNrID0gbnVsbDtcclxuICAgIHRoaXMuX3N1YmZvcm1UYXNrSWQgPSBcIjBcIjtcclxuICB9XHJcbiAgLy8vIDxzdW1tYXJ5PlxyXG4gIC8vLyByZXR1cm5zIE1nRm9ybSBvZiB0aGUgc3ViZm9ybSBjb250cm9sIHRhc2tcclxuICAvLy8gPC9zdW1tYXJ5PlxyXG4gIEdldFN1YmZvcm1NZ0Zvcm0oKTogTWdGb3JtQmFzZSB7XHJcbiAgICBsZXQgZm9ybTogTWdGb3JtQmFzZSA9IG51bGw7XHJcbiAgICBpZiAodGhpcy5fc3ViZm9ybVRhc2sgIT09IG51bGwpXHJcbiAgICAgIGZvcm0gPSB0aGlzLl9zdWJmb3JtVGFzay5nZXRGb3JtKCk7XHJcbiAgICByZXR1cm4gZm9ybTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gQ2hlY2sgd2hldGhlciB0YWJsZSBiZWluZyB1c2VkIHdpdGggYWJzb2x1dGUgc2Nyb2xsYmFyIHRodW1iLlxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgSXNUYWJsZVdpdGhBYnNvbHV0ZVNjcm9sbGJhcigpOiBib29sZWFuIHtcclxuICAgIGxldCB0YWJsZVdpdGhBYnNvbHV0ZVNjcm9sbGJhcjogYm9vbGVhbiA9IGZhbHNlO1xyXG4gICAgRGVidWcuQXNzZXJ0KHRoaXMuVHlwZSA9PT0gTWdDb250cm9sVHlwZS5DVFJMX1RZUEVfVEFCTEUsIFwiSW4gTWdDb250cm9sLklzVGFibGVXaXRoQWJzb2x1dGVTY3JvbGxiYXIoKTogTm90IGEgdGFibGUgY29udHJvbC5cIik7XHJcbiAgICBpZiAodGhpcy5fcHJvcFRhYi5wcm9wRXhpc3RzKFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1NDUk9MTF9CQVJfVEhVTUIpKVxyXG4gICAgICB0YWJsZVdpdGhBYnNvbHV0ZVNjcm9sbGJhciA9ICh0aGlzLl9wcm9wVGFiLmdldFByb3BCeUlkKFByb3BJbnRlcmZhY2UuUFJPUF9UWVBFX1NDUk9MTF9CQVJfVEhVTUIpLkdldENvbXB1dGVkVmFsdWVJbnRlZ2VyKCkgPT09IDxudW1iZXI+U2Nyb2xsQmFyVGh1bWJUeXBlLkFic29sdXRlKTtcclxuXHJcbiAgICByZXR1cm4gdGFibGVXaXRoQWJzb2x1dGVTY3JvbGxiYXI7XHJcbiAgfVxyXG5cclxuXHJcbiAgLy8vIDxzdW1tYXJ5PiBjaGVjayBpZiB0aGUgcmV0dXJuLXRvLWNvbnRyb2wgcG9pbnRzIHRvIGFuIGV4aXN0aW5nIHRhc2suPC9zdW1tYXJ5PlxyXG4gIHN0YXRpYyB2YWxpZFJldHVyblRvQ3RybCgpOiBib29sZWFuIHtcclxuICAgIGlmIChNZ0NvbnRyb2wuUmV0dXJuVG9DdHJsICE9PSBudWxsICYmIE1nQ29udHJvbC5SZXR1cm5Ub0N0cmwuZ2V0Rm9ybSgpLmdldFRhc2soKS5pc0Fib3J0aW5nKCkpXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICByZXR1cm4gdHJ1ZTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT4gY2hlY2sgaWYgb25lIG1heSBkaXJlY3RseSAobm90IHZpYSB0aGUgZ3VpKSBzZXQgYSB2YWx1ZSBvbiB0aGlzIGNvbnRyb2wuPC9zdW1tYXJ5PlxyXG4gIG1heVNldFZhbHVlKCk6IGJvb2xlYW4ge1xyXG4gICAgc3dpdGNoICh0aGlzLlR5cGUpIHtcclxuICAgICAgY2FzZSBNZ0NvbnRyb2xUeXBlLkNUUkxfVFlQRV9DSEVDS0JPWDpcclxuICAgICAgY2FzZSBNZ0NvbnRyb2xUeXBlLkNUUkxfVFlQRV9URVhUOlxyXG4gICAgICBjYXNlIE1nQ29udHJvbFR5cGUuQ1RSTF9UWVBFX0NPTUJPOlxyXG4gICAgICBjYXNlIE1nQ29udHJvbFR5cGUuQ1RSTF9UWVBFX0xJU1Q6XHJcbiAgICAgIGNhc2UgTWdDb250cm9sVHlwZS5DVFJMX1RZUEVfUkFESU86XHJcbiAgICAgIGNhc2UgTWdDb250cm9sVHlwZS5DVFJMX1RZUEVfVEFCOlxyXG4gICAgICAgIGJyZWFrO1xyXG5cclxuICAgICAgZGVmYXVsdDpcclxuICAgICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgLy8gcHJldmVudCB2YWx1ZSBzZXR0aW5nIGlmIHRoZSBjb250cm9sIGRvZXNuJ3QgaGF2ZSBhIGZpZWxkLCBvciBpZiBpdCBnZXRzIGl0cyB2YWx1ZSBmcm9tIGFuIGV4cHJlc3Npb25cclxuICAgIGlmICh0aGlzLl9maWVsZCA9PT0gbnVsbCB8fCB0aGlzLl92YWxFeHBJZCA+IDApXHJcbiAgICAgIHJldHVybiBmYWxzZTtcclxuXHJcbiAgICByZXR1cm4gdGhpcy5pc01vZGlmaWFibGUoKTtcclxuICB9XHJcblxyXG4gIC8vLyA8c3VtbWFyeT5cclxuICAvLy8gICBDaGVja3MgaWYgYSB2YWx1ZSBtYXkgYmUgc2V0LCBhbmQgdHJpZXMgdG8gc2V0IHRoZSB2YWx1ZSBvZiB0aGUgY29udHJvbFxyXG4gIC8vLyA8L3N1bW1hcnk+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJOZXdWYWx1ZVwiPnRoZSB2YWx1ZSBvZiB0aGUgY29udHJvbDwvcGFyYW0+XHJcbiAgLy8vIDxwYXJhbSBuYW1lID0gXCJ1cGRhdGVDdHJsXCI+aWYgdHJ1ZSB0aGVuIHRoZSBjb250cm9sIHdpbGwgYmUgdXBkYXRlZCB1cG9uIHN1Y2Nlc3NmdWwgY2hlY2s8L3BhcmFtPlxyXG4gIC8vLyA8cmV0dXJucz5yZXR1cm5zIGlmIHZhbHVlIHNldHRpbmcgd2FzIHN1Y2Nlc3NmdWwgPC9yZXR1cm5zPlxyXG4gIGFzeW5jIHZhbGlkYXRlQW5kU2V0VmFsdWVJZkFsbG93ZWQoTmV3VmFsdWU6IGFueSwgcmVmcmVzaERpc3BsYXk6IGJvb2xlYW4pOiBQcm9taXNlPGJvb2xlYW4+IHtcclxuICAgIGlmICghdGhpcy5tYXlTZXRWYWx1ZSgpKSB7XHJcbiAgICAgIExvZ2dlci5JbnN0YW5jZS5Xcml0ZUVycm9yVG9Mb2coTlN0cmluZy5Gb3JtYXQoXCJVbmFibGUgdG8gY2hhbmdlIHZhbHVlIG9mIGNvbnRyb2wgezB9OiBUaGUgY29udHJvbCBpcyByZWFkLW9ubHkuXCIsIHRoaXMuTmFtZSkpO1xyXG4gICAgICByZXR1cm4gZmFsc2U7XHJcbiAgICB9XHJcblxyXG4gICAgbGV0IHJldFZhbCA9IGF3YWl0IHRoaXMudmFsaWRhdGVBbmRTZXRWYWx1ZShOZXdWYWx1ZSwgdHJ1ZSk7XHJcbiAgICBpZiAoIXJldFZhbClcclxuICAgICAgTG9nZ2VyLkluc3RhbmNlLldyaXRlRXJyb3JUb0xvZyhOU3RyaW5nLkZvcm1hdChcIlZhbHVlIHZhbGlkYXRpb24gZmFpbGVkIGZvciB7MH0uXCIsIHRoaXMuTmFtZSkpO1xyXG5cclxuICAgIGlmIChyZWZyZXNoRGlzcGxheSkge1xyXG4gICAgICBDb21tYW5kcy5hZGROb1BhcmFtZXRlcnMoQ29tbWFuZFR5cGUuUkVGUkVTSF9UQVNLLCB0aGlzLmdldEZvcm0oKSk7XHJcbiAgICAgIENvbW1hbmRzLmludm9rZSgpO1xyXG4gICAgfVxyXG5cclxuICAgIC8vcmVmcmVzaCB0YXNrXHJcbiAgICByZXR1cm4gcmV0VmFsO1xyXG4gIH1cclxufVxyXG4iXX0=
|