@rdfc/js-runner 3.1.0-alpha.1 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/__tests__/channels.test.ts +9 -5
- package/lib/reader.js +2 -1
- package/lib/runner.js +2 -2
- package/lib/testUtils/index.js +7 -3
- package/lib/tsconfig.tsbuildinfo +1 -1
- package/lib/writer.d.ts +5 -8
- package/lib/writer.js +39 -72
- package/package.json +2 -2
- package/src/reader.ts +2 -0
- package/src/runner.ts +1 -1
- package/src/testUtils/index.ts +6 -2
- package/src/writer.ts +104 -111
- package/dist/args.d.ts +0 -4
- package/dist/args.js +0 -58
- package/dist/connectors/file.d.ts +0 -15
- package/dist/connectors/file.js +0 -89
- package/dist/connectors/http.d.ts +0 -14
- package/dist/connectors/http.js +0 -82
- package/dist/connectors/kafka.d.ts +0 -48
- package/dist/connectors/kafka.js +0 -68
- package/dist/connectors/ws.d.ts +0 -10
- package/dist/connectors/ws.js +0 -72
- package/dist/connectors.d.ts +0 -73
- package/dist/connectors.js +0 -168
- package/dist/index.cjs +0 -732
- package/dist/index.d.ts +0 -42
- package/dist/index.js +0 -83
- package/dist/tsconfig.tsbuildinfo +0 -1
- package/dist/util.d.ts +0 -71
- package/dist/util.js +0 -92
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { describe, expect, test, vi } from 'vitest'
|
|
2
|
-
import {
|
|
2
|
+
import { channel, createRunner, StreamMsgMock } from '../src/testUtils'
|
|
3
3
|
import { WriterInstance } from '../src/writer'
|
|
4
4
|
import { FromRunner, StreamIdentify } from '@rdfc/proto'
|
|
5
5
|
import { createLogger, transports } from 'winston'
|
|
@@ -171,7 +171,7 @@ describe('Writer', async () => {
|
|
|
171
171
|
writer.on('cancel', onCancel)
|
|
172
172
|
await reader.cancel()
|
|
173
173
|
|
|
174
|
-
expect(onCancel).
|
|
174
|
+
expect(onCancel).toHaveBeenCalledTimes(1)
|
|
175
175
|
})
|
|
176
176
|
|
|
177
177
|
test('does not emit a cancel event on a local close', async () => {
|
|
@@ -185,7 +185,7 @@ describe('Writer', async () => {
|
|
|
185
185
|
writer.on('cancel', onCancel)
|
|
186
186
|
await writer.close()
|
|
187
187
|
|
|
188
|
-
expect(onCancel).not.
|
|
188
|
+
expect(onCancel).not.toHaveBeenCalled()
|
|
189
189
|
})
|
|
190
190
|
|
|
191
191
|
test('throws when writing to a canceled writer', async () => {
|
|
@@ -210,9 +210,13 @@ describe('Writer', async () => {
|
|
|
210
210
|
// Register a reader consumer without draining it so the writer waits for processed.
|
|
211
211
|
reader.strings()
|
|
212
212
|
|
|
213
|
-
|
|
214
|
-
|
|
213
|
+
// Set reader to canceled, without informing the writer of it, mimicking race condition where reader cancels while writer is writing, but before the writer receives the cancel message.
|
|
214
|
+
// @ts-ignore
|
|
215
|
+
reader['canceled'] = true
|
|
216
|
+
// @ts-ignore
|
|
217
|
+
reader['closed'] = true
|
|
215
218
|
|
|
219
|
+
const pendingWrite = writer.string('hello')
|
|
216
220
|
await expect(pendingWrite).rejects.toThrow(/canceled/i)
|
|
217
221
|
})
|
|
218
222
|
})
|
package/lib/reader.js
CHANGED
|
@@ -107,6 +107,7 @@ export class ReaderInstance {
|
|
|
107
107
|
processed: {
|
|
108
108
|
globalSequenceNumber: msg.globalSequenceNumber,
|
|
109
109
|
channel: this.uri,
|
|
110
|
+
error: 'reader is canceled; message has not been processed by the processor',
|
|
110
111
|
},
|
|
111
112
|
});
|
|
112
113
|
return;
|
|
@@ -253,4 +254,4 @@ function fanoutStream(stream, numConsumers, onAllHandled) {
|
|
|
253
254
|
const rawIterables = Array.from({ length: numConsumers }, makeIterable);
|
|
254
255
|
return rawIterables.map(wrap);
|
|
255
256
|
}
|
|
256
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3JlYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxPQUFPLEVBQ0wsWUFBWSxFQUVaLFdBQVcsRUFDWCxlQUFlLEVBQ2YsZUFBZSxHQUNoQixNQUFNLGFBQWEsQ0FBQTtBQUVwQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBMkJoQyxNQUFNLE1BQU07SUFDRixTQUFTLENBQWM7SUFDdkIsS0FBSyxHQUEwQixFQUFFLENBQUE7SUFDakMsV0FBVyxHQUF3QyxJQUFJLENBQUE7SUFDdkQsTUFBTSxHQUFHLEtBQUssQ0FBQTtJQUV0QixZQUFZLFNBQXVCO1FBQ2pDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFBO0lBQzVCLENBQUM7SUFFRCxJQUFJLENBQUMsTUFBa0IsRUFBRSxVQUFzQjtRQUM3QyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixVQUFVLEVBQUUsQ0FBQTtZQUNaLE9BQU07UUFDUixDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDeEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQTtRQUNyQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1lBQzNCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFBO1FBQ3pCLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQXNCO1FBQzFCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLFVBQVUsRUFBRSxDQUFBO1lBQ1osT0FBTTtRQUNSLENBQUM7UUFFRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FBQTtRQUNsQixJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxTQUFTLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQTtRQUNoRCxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1lBQzNCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFBO1FBQ3pCLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQVUsQ0FBQyxNQUFnQyxFQUFFLFVBQXNCO1FBQ3ZFLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLFVBQVUsRUFBRSxDQUFBO1lBQ1osT0FBTTtRQUNSLENBQUM7UUFHRCxNQUFNLE1BQU0sR0FBRyxDQUFDLEtBQUssU0FBUyxDQUFDLEVBQUUsTUFBTTtZQUNyQyxJQUFJLEtBQUssRUFBRSxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUUsQ0FBQztnQkFDakMsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFBO1lBQ2xCLENBQUM7UUFDSCxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQTtRQUVWLE1BQU0sSUFBSSxHQUFHLE1BQU0sSUFBSSxDQUFDLFNBQVMsQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDcEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQTtRQUNyQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1lBQzNCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFBO1FBQ3pCLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsYUFBYSxDQUFDO1FBQzNCLE9BQU8sSUFBSSxFQUFFLENBQUM7WUFDWixJQUFJLElBQUksQ0FBQyxLQUFLLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUMxQixNQUFNLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsS0FBSyxFQUFHLENBQUE7Z0JBQ2hELElBQUksSUFBSSxLQUFLLFNBQVMsRUFBRSxDQUFDO29CQUN2QixVQUFVLEVBQUUsQ0FBQTtvQkFDWixNQUFLO2dCQUNQLENBQUM7Z0JBQ0QsTUFBTSxJQUFJLENBQUE7Z0JBR1YsVUFBVSxFQUFFLENBQUE7WUFDZCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sTUFBTSxJQUFJLE9BQU8sQ0FBWSxDQUFDLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsV0FBVyxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUE7WUFDekUsQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0NBQ0Y7QUFFRCxNQUFNLE9BQU8sY0FBYztJQUNqQixNQUFNLENBQWM7SUFDbkIsR0FBRyxDQUFRO0lBQ1osTUFBTSxDQUFRO0lBQ0wsa0JBQWtCLENBQVU7SUFFckMsU0FBUyxHQUFzQixFQUFFLENBQUE7SUFDakMsTUFBTSxHQUFHLEtBQUssQ0FBQTtJQUNkLFFBQVEsR0FBRyxLQUFLLENBQUE7SUFFeEIsWUFDRSxHQUFXLEVBQ1gsTUFBb0IsRUFDcEIsa0JBQTRCLEVBQzVCLE1BQWM7UUFFZCxJQUFJLENBQUMsR0FBRyxHQUFHLEdBQUcsQ0FBQTtRQUNkLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO1FBQ3BCLElBQUksQ0FBQyxNQUFNLEdBQUcsTUFBTSxDQUFBO1FBQ3BCLElBQUksQ0FBQyxrQkFBa0IsR0FBRyxrQkFBa0IsQ0FBQTtJQUM5QyxDQUFDO0lBRUQsSUFBSTtRQUNGLE1BQU0sSUFBSSxHQUFHLElBQUksTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFBO1FBQ3JDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3pCLE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUVELE9BQU87UUFDTCxNQUFNLElBQUksR0FBRyxJQUFJLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQTtRQUN4QyxJQUFJLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtRQUN6QixPQUFPLElBQUksQ0FBQTtJQUNiLENBQUM7SUFFRCxPQUFPO1FBQ0wsTUFBTSxJQUFJLEdBQUcsSUFBSSxNQUFNLENBQUMsV0FBVyxDQUFDLENBQUE7UUFDcEMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUE7UUFDekIsT0FBTyxJQUFJLENBQUE7SUFDYixDQUFDO0lBRUQsT0FBTztRQUNMLE1BQU0sSUFBSSxHQUFHLElBQUksTUFBTSxDQUFDLGVBQWUsQ0FBQyxDQUFBO1FBQ3hDLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFBO1FBQ3pCLE9BQU8sSUFBSSxDQUFBO0lBQ2IsQ0FBQztJQUVELFNBQVMsQ0FBQyxHQUFxQjtRQUM3QixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxHQUFHLElBQUksQ0FBQyxHQUFHLG1CQUFtQixDQUFDLENBQUE7UUFFakQsSUFBSSxJQUFJLENBQUMsTUFBTSxFQUFFLENBQUM7WUFDaEIsSUFBSSxDQUFDLGtCQUFrQixDQUFDO2dCQUN0QixTQUFTLEVBQUU7b0JBQ1Qsb0JBQW9CLEVBQUUsR0FBRyxDQUFDLG9CQUFvQjtvQkFDOUMsT0FBTyxFQUFFLElBQUksQ0FBQyxHQUFHO2lCQUNsQjthQUNGLENBQUMsQ0FBQTtZQUNGLE9BQU07UUFDUixDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsRUFBRSxDQUFBO1FBQ25CLEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2xDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxPQUFPLENBQUMsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUE7UUFDM0UsQ0FBQztRQUVELE9BQU8sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUM5QixJQUFJLENBQUMsa0JBQWtCLENBQUM7WUFDdEIsU0FBUyxFQUFFO2dCQUNULG9CQUFvQixFQUFFLEdBQUcsQ0FBQyxvQkFBb0I7Z0JBQzlDLE9BQU8sRUFBRSxJQUFJLENBQUMsR0FBRzthQUNsQjtTQUNGLENBQUMsQ0FDSCxDQUFBO0lBQ0gsQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixPQUFNO1FBQ1IsQ0FBQztRQUVELElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFBO1FBQ2xCLEtBQUssTUFBTSxJQUFJLElBQUksSUFBSSxDQUFDLFNBQVMsRUFBRSxDQUFDO1lBQ2xDLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDLENBQUE7UUFDdEIsQ0FBQztJQUNILENBQUM7SUFFRCxLQUFLLENBQUMsTUFBTTtRQUNWLElBQUksSUFBSSxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBQ2xCLE9BQU07UUFDUixDQUFDO1FBRUQsSUFBSSxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUE7UUFDcEIsSUFBSSxDQUFDLEtBQUssRUFBRSxDQUFBO1FBQ1osTUFBTSxJQUFJLENBQUMsa0JBQWtCLENBQUM7WUFDNUIsS0FBSyxFQUFFLEVBQUUsT0FBTyxFQUFFLElBQUksQ0FBQyxHQUFHLEVBQUU7U0FDN0IsQ0FBQyxDQUFBO0lBQ0osQ0FBQztJQUdELEtBQUssQ0FBQyxzQkFBc0IsQ0FBQyxFQUMzQixPQUFPLEVBQ1Asb0JBQW9CLEdBQ0c7UUFDdkIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsR0FBRyxJQUFJLENBQUMsR0FBRyw2QkFBNkIsQ0FBQyxDQUFBO1FBRTNELElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLE1BQU0sSUFBSSxDQUFDLGtCQUFrQixDQUFDO2dCQUM1QixTQUFTLEVBQUUsRUFBRSxvQkFBb0IsRUFBRSxPQUFPLEVBQUU7YUFDN0MsQ0FBQyxDQUFBO1lBQ0YsT0FBTTtRQUNSLENBQUM7UUFFRCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLG9CQUFvQixFQUFFLENBQUE7UUFDakQsTUFBTSxtQkFBbUIsR0FBRyxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQTtRQUNoRSxNQUFNLGlCQUFpQixHQUFHLEVBQUUsQ0FBQTtRQUc1QixJQUFJLEdBQUcsR0FBRyxDQUFDLENBQUE7UUFDWCxNQUFNLGdCQUFnQixHQUFHLFlBQVksQ0FDbkMsTUFBTSxFQUNOLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxFQUNyQixLQUFLLElBQUksRUFBRTtZQUNULE1BQU0sbUJBQW1CLENBQUMsRUFBRSxvQkFBb0IsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFDLENBQUE7UUFDNUQsQ0FBQyxDQUNGLENBQUE7UUFFRCxLQUFLLE1BQU0sUUFBUSxJQUFJLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN0QyxpQkFBaUIsQ0FBQyxJQUFJLENBQ3BCLElBQUksT0FBTyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FDbEIsUUFBUSxDQUFDLFVBQVUsQ0FBQyxnQkFBZ0IsQ0FBQyxHQUFHLEVBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FDOUQsQ0FDRixDQUFBO1FBQ0gsQ0FBQztRQUVELE1BQU0sbUJBQW1CLENBQUMsRUFBRSxvQkFBb0IsRUFBRSxDQUFDLENBQUE7UUFFbkQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLEVBQUU7WUFDdkMsT0FBTyxDQUFDLEdBQUcsQ0FBQyx5Q0FBeUMsQ0FBQyxDQUFBO1lBQ3RELElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLG9CQUFvQixFQUFFLE9BQU8sRUFBRSxFQUFFLENBQUMsQ0FBQTtRQUMzRSxDQUFDLENBQUMsQ0FBQTtJQUNKLENBQUM7Q0FDRjtBQU1ELFNBQVMsWUFBWSxDQUNuQixNQUErQixFQUMvQixZQUFvQixFQUNwQixZQUF3QztJQUl4QyxJQUFJLEtBQUssR0FBRyxLQUFLLENBQUE7SUFDakIsTUFBTSxNQUFNLEdBQVEsRUFBRSxDQUFBO0lBQ3RCLE1BQU0sT0FBTyxHQUFhLEVBQUUsQ0FBQTtJQUM1QixJQUFJLGVBQWUsR0FBRyxZQUFZLENBQUE7SUFHbEMsSUFBSSxXQUFXLEdBQUcsQ0FBQyxDQUFBO0lBRW5CLFNBQVMsU0FBUyxDQUFDLEtBQVE7UUFDekIsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQTtRQUNsQixLQUFLLEVBQUUsQ0FBQTtJQUNULENBQUM7SUFFRCxTQUFTLEtBQUs7UUFDWixPQUFPLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxJQUFJLE9BQU8sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7WUFDL0MsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFBO1lBQ3ZCLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxLQUFLLEVBQUcsQ0FBQTtZQUMvQixNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsS0FBSyxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFBO1lBQ3JDLFdBQVcsRUFBRSxDQUFBO1FBQ2YsQ0FBQztJQUNILENBQUM7SUFFRCxTQUFTLEdBQUc7UUFDVixLQUFLLEdBQUcsSUFBSSxDQUFBO1FBQ1osT0FBTyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzFCLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxLQUFLLEVBQUcsQ0FBQTtZQUMvQixNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBQzFDLENBQUM7SUFDSCxDQUFDO0lBRUQsTUFBTSxDQUFDLEVBQUUsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxLQUFRLEVBQUUsRUFBRTtRQUM3QixTQUFTLENBQUMsS0FBSyxDQUFDLENBQUE7SUFDbEIsQ0FBQyxDQUFDLENBQUE7SUFFRixNQUFNLENBQUMsRUFBRSxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUU7UUFDcEIsR0FBRyxFQUFFLENBQUE7SUFDUCxDQUFDLENBQUMsQ0FBQTtJQUVGLE1BQU0sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLENBQUMsR0FBRyxFQUFFLEVBQUU7UUFDekIsT0FBTyxPQUFPLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzFCLE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxLQUFLLEVBQUcsQ0FBQTtZQUMvQixNQUFNLENBQUMsRUFBRSxLQUFLLEVBQUUsU0FBUyxFQUFFLElBQUksRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFBO1FBQzFDLENBQUM7UUFDRCxNQUFNLEdBQUcsQ0FBQTtJQUNYLENBQUMsQ0FBQyxDQUFBO0lBRUYsU0FBUyxZQUFZO1FBQ25CLE9BQU87WUFDTCxDQUFDLE1BQU0sQ0FBQyxhQUFhLENBQUM7Z0JBQ3BCLE9BQU87b0JBQ0wsSUFBSTt3QkFDRixJQUFJLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7NEJBQ3RCLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQTs0QkFDdkIsV0FBVyxFQUFFLENBQUE7NEJBQ2IsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLENBQUMsQ0FBQTt3QkFDdkQsQ0FBQzt3QkFDRCxJQUFJLEtBQUssRUFBRSxDQUFDOzRCQUNWLE9BQU8sT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssRUFBRSxTQUFTLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLENBQUE7d0JBQzFELENBQUM7d0JBQ0QsT0FBTyxJQUFJLE9BQU8sQ0FBQyxDQUFDLE9BQU8sRUFBRSxFQUFFOzRCQUM3QixPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFBO3dCQUN2QixDQUFDLENBQUMsQ0FBQTtvQkFDSixDQUFDO29CQUNELEtBQUssQ0FBQyxNQUFNO3dCQUNWLGVBQWUsRUFBRSxDQUFBO3dCQUNqQixJQUFJLGVBQWUsS0FBSyxDQUFDLEVBQUUsQ0FBQzs0QkFDMUIsR0FBRyxFQUFFLENBQUE7d0JBQ1AsQ0FBQzt3QkFDRCxPQUFPLEVBQUUsS0FBSyxFQUFFLFNBQVMsRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUE7b0JBQ3pDLENBQUM7aUJBQ0YsQ0FBQTtZQUNILENBQUM7U0FDRixDQUFBO0lBQ0gsQ0FBQztJQUVELEtBQUssVUFBVSxHQUFHO1FBQ2hCLFdBQVcsRUFBRSxDQUFBO1FBQ2IsSUFBSSxXQUFXLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFFdEIsTUFBTSxDQUFDLEtBQUssRUFBRSxDQUFBO1lBQ2QsTUFBTSxZQUFZLEVBQUUsQ0FBQTtZQUNwQixLQUFLLEVBQUUsQ0FBQTtRQUNULENBQUM7SUFDSCxDQUFDO0lBR0QsU0FBUyxJQUFJLENBQUMsUUFBMEI7UUFDdEMsT0FBTztZQUNMLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQztnQkFDM0IsSUFBSSxLQUFLLEVBQUUsTUFBTSxJQUFJLElBQUksUUFBUSxFQUFFLENBQUM7b0JBQ2xDLE1BQU0sSUFBSSxDQUFBO29CQUNWLE1BQU0sR0FBRyxFQUFFLENBQUE7Z0JBQ2IsQ0FBQztZQUNILENBQUM7U0FDRixDQUFBO0lBQ0gsQ0FBQztJQUVELE1BQU0sWUFBWSxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxNQUFNLEVBQUUsWUFBWSxFQUFFLEVBQUUsWUFBWSxDQUFDLENBQUE7SUFDdkUsT0FBTyxZQUFZLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFBO0FBQy9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDbGllbnRSZWFkYWJsZVN0cmVhbSB9IGZyb20gJ0BncnBjL2dycGMtanMnXG5pbXBvcnQge1xuICBEYXRhQ2h1bmssXG4gIFJlY2VpdmluZ01lc3NhZ2UsXG4gIFJlY2VpdmluZ1N0cmVhbU1lc3NhZ2UsXG4gIFJ1bm5lckNsaWVudCxcbn0gZnJvbSAnQHJkZmMvcHJvdG8nXG5pbXBvcnQgeyBMb2dnZXIgfSBmcm9tICd3aW5zdG9uJ1xuaW1wb3J0IHtcbiAgQW55Q29udmVydG9yLFxuICBDb252ZXJ0b3IsXG4gIE5vQ29udmVydG9yLFxuICBTdHJlYW1Db252ZXJ0b3IsXG4gIFN0cmluZ0NvbnZlcnRvcixcbn0gZnJvbSAnLi9jb252ZXJ0b3InXG5pbXBvcnQgeyBXcml0YWJsZSB9IGZyb20gJy4vcnVubmVyJ1xuaW1wb3J0IHsgcHJvbWlzaWZ5IH0gZnJvbSAndXRpbCdcblxuZXhwb3J0IHR5cGUgQW55ID1cbiAgfCB7XG4gICAgICBzdHJpbmc6IHN0cmluZ1xuICAgIH1cbiAgfCB7XG4gICAgICBzdHJlYW06IEFzeW5jR2VuZXJhdG9yPFVpbnQ4QXJyYXk+XG4gICAgfVxuICB8IHtcbiAgICAgIGJ1ZmZlcjogVWludDhBcnJheVxuICAgIH1cblxuZXhwb3J0IGludGVyZmFjZSBSZWFkZXIge1xuICByZWFkb25seSB1cmk6IHN0cmluZ1xuICBzdHJpbmdzKCk6IEFzeW5jSXRlcmFibGU8c3RyaW5nPlxuICBzdHJlYW1zKCk6IEFzeW5jSXRlcmFibGU8QXN5bmNHZW5lcmF0b3I8VWludDhBcnJheT4+XG4gIGJ1ZmZlcnMoKTogQXN5bmNJdGVyYWJsZTxVaW50OEFycmF5PlxuICBhbnlzKCk6IEFzeW5jSXRlcmFibGU8QW55PlxuICBjYW5jZWwoKTogUHJvbWlzZTx2b2lkPlxufVxuXG50eXBlIFRvZG88VD4gPSB7XG4gIGl0ZW06IFRcbiAgb25Db21wbGV0ZTogKCkgPT4gdm9pZFxufVxuXG5jbGFzcyBNeUl0ZXI8VD4gaW1wbGVtZW50cyBBc3luY0l0ZXJhYmxlPFQ+IHtcbiAgcHJpdmF0ZSBjb252ZXJ0b3I6IENvbnZlcnRvcjxUPlxuICBwcml2YXRlIHF1ZXVlOiBUb2RvPFQgfCB1bmRlZmluZWQ+W10gPSBbXVxuICBwcml2YXRlIHJlc29sdmVOZXh0OiAoKHZhbHVlOiB1bmRlZmluZWQpID0+IHZvaWQpIHwgbnVsbCA9IG51bGxcbiAgcHJpdmF0ZSBjbG9zZWQgPSBmYWxzZVxuXG4gIGNvbnN0cnVjdG9yKGNvbnZlcnRvcjogQ29udmVydG9yPFQ+KSB7XG4gICAgdGhpcy5jb252ZXJ0b3IgPSBjb252ZXJ0b3JcbiAgfVxuXG4gIHB1c2goYnVmZmVyOiBVaW50OEFycmF5LCBvbkNvbXBsZXRlOiAoKSA9PiB2b2lkKSB7XG4gICAgaWYgKHRoaXMuY2xvc2VkKSB7XG4gICAgICBvbkNvbXBsZXRlKClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmNvbnZlcnRvci5mcm9tKGJ1ZmZlcilcbiAgICB0aGlzLnF1ZXVlLnB1c2goeyBpdGVtLCBvbkNvbXBsZXRlIH0pXG4gICAgaWYgKHRoaXMucmVzb2x2ZU5leHQpIHtcbiAgICAgIHRoaXMucmVzb2x2ZU5leHQodW5kZWZpbmVkKVxuICAgICAgdGhpcy5yZXNvbHZlTmV4dCA9IG51bGxcbiAgICB9XG4gIH1cblxuICBjbG9zZShvbkNvbXBsZXRlOiAoKSA9PiB2b2lkKSB7XG4gICAgaWYgKHRoaXMuY2xvc2VkKSB7XG4gICAgICBvbkNvbXBsZXRlKClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMuY2xvc2VkID0gdHJ1ZVxuICAgIHRoaXMucXVldWUucHVzaCh7IGl0ZW06IHVuZGVmaW5lZCwgb25Db21wbGV0ZSB9KVxuICAgIGlmICh0aGlzLnJlc29sdmVOZXh0KSB7XG4gICAgICB0aGlzLnJlc29sdmVOZXh0KHVuZGVmaW5lZClcbiAgICAgIHRoaXMucmVzb2x2ZU5leHQgPSBudWxsXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcHVzaFN0cmVhbShjaHVua3M6IEFzeW5jSXRlcmFibGU8RGF0YUNodW5rPiwgb25Db21wbGV0ZTogKCkgPT4gdm9pZCkge1xuICAgIGlmICh0aGlzLmNsb3NlZCkge1xuICAgICAgb25Db21wbGV0ZSgpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBUaGlzIGlzIGFuIGFzeW5jIGdlbmVyYXRvciB0aGF0IHRyYW5zZm9ybXMgRGF0YUNodW5rcyB0byBCdWZmZXJzXG4gICAgY29uc3Qgc3RyZWFtID0gKGFzeW5jIGZ1bmN0aW9uKiAoc3RyZWFtKSB7XG4gICAgICBmb3IgYXdhaXQgKGNvbnN0IGNodW5rIG9mIHN0cmVhbSkge1xuICAgICAgICB5aWVsZCBjaHVuay5kYXRhXG4gICAgICB9XG4gICAgfSkoY2h1bmtzKVxuXG4gICAgY29uc3QgaXRlbSA9IGF3YWl0IHRoaXMuY29udmVydG9yLmZyb21TdHJlYW0oc3RyZWFtKVxuICAgIHRoaXMucXVldWUucHVzaCh7IGl0ZW0sIG9uQ29tcGxldGUgfSlcbiAgICBpZiAodGhpcy5yZXNvbHZlTmV4dCkge1xuICAgICAgdGhpcy5yZXNvbHZlTmV4dCh1bmRlZmluZWQpXG4gICAgICB0aGlzLnJlc29sdmVOZXh0ID0gbnVsbFxuICAgIH1cbiAgfVxuXG4gIGFzeW5jICpbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCkge1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBpZiAodGhpcy5xdWV1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHsgaXRlbSwgb25Db21wbGV0ZSB9ID0gdGhpcy5xdWV1ZS5zaGlmdCgpIVxuICAgICAgICBpZiAoaXRlbSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgb25Db21wbGV0ZSgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgICB5aWVsZCBpdGVtXG4gICAgICAgIC8vIE5vdGU6IGV4ZWN1dGlvbiBwYXVzZXMgYXQgYHlpZWxkYCB1bnRpbCB0aGUgY29uc3VtZXIgY2FsbHMgYC5uZXh0KClgIGFnYWluLlxuICAgICAgICAvLyBXZSBjYWxsIG9uQ29tcGxldGUgKmFmdGVyKiByZXN1bWluZywgc28gdGhlIHByb2R1Y2VyIGtub3dzIHRoZSBpdGVtIHdhcyBhY3R1YWxseSBjb25zdW1lZC5cbiAgICAgICAgb25Db21wbGV0ZSgpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZTx1bmRlZmluZWQ+KChyZXNvbHZlKSA9PiAodGhpcy5yZXNvbHZlTmV4dCA9IHJlc29sdmUpKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUmVhZGVySW5zdGFuY2UgaW1wbGVtZW50cyBSZWFkZXIge1xuICBwcml2YXRlIGNsaWVudDogUnVubmVyQ2xpZW50XG4gIHJlYWRvbmx5IHVyaTogc3RyaW5nXG4gIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXJcbiAgcHJpdmF0ZSByZWFkb25seSBub3RpZnlPcmNoZXN0cmF0b3I6IFdyaXRhYmxlXG5cbiAgcHJpdmF0ZSBjb25zdW1lcnM6IE15SXRlcjx1bmtub3duPltdID0gW11cbiAgcHJpdmF0ZSBjbG9zZWQgPSBmYWxzZVxuICBwcml2YXRlIGNhbmNlbGVkID0gZmFsc2VcblxuICBjb25zdHJ1Y3RvcihcbiAgICB1cmk6IHN0cmluZyxcbiAgICBjbGllbnQ6IFJ1bm5lckNsaWVudCxcbiAgICBub3RpZnlPcmNoZXN0cmF0b3I6IFdyaXRhYmxlLFxuICAgIGxvZ2dlcjogTG9nZ2VyLFxuICApIHtcbiAgICB0aGlzLnVyaSA9IHVyaVxuICAgIHRoaXMuY2xpZW50ID0gY2xpZW50XG4gICAgdGhpcy5sb2dnZXIgPSBsb2dnZXJcbiAgICB0aGlzLm5vdGlmeU9yY2hlc3RyYXRvciA9IG5vdGlmeU9yY2hlc3RyYXRvclxuICB9XG5cbiAgYW55cygpOiBBc3luY0l0ZXJhYmxlPEFueT4ge1xuICAgIGNvbnN0IGl0ZXIgPSBuZXcgTXlJdGVyKEFueUNvbnZlcnRvcilcbiAgICB0aGlzLmNvbnN1bWVycy5wdXNoKGl0ZXIpXG4gICAgcmV0dXJuIGl0ZXJcbiAgfVxuXG4gIHN0cmluZ3MoKTogQXN5bmNJdGVyYWJsZTxzdHJpbmc+IHtcbiAgICBjb25zdCBpdGVyID0gbmV3IE15SXRlcihTdHJpbmdDb252ZXJ0b3IpXG4gICAgdGhpcy5jb25zdW1lcnMucHVzaChpdGVyKVxuICAgIHJldHVybiBpdGVyXG4gIH1cblxuICBidWZmZXJzKCk6IEFzeW5jSXRlcmFibGU8VWludDhBcnJheT4ge1xuICAgIGNvbnN0IGl0ZXIgPSBuZXcgTXlJdGVyKE5vQ29udmVydG9yKVxuICAgIHRoaXMuY29uc3VtZXJzLnB1c2goaXRlcilcbiAgICByZXR1cm4gaXRlclxuICB9XG5cbiAgc3RyZWFtcygpOiBBc3luY0l0ZXJhYmxlPEFzeW5jR2VuZXJhdG9yPFVpbnQ4QXJyYXk+PiB7XG4gICAgY29uc3QgaXRlciA9IG5ldyBNeUl0ZXIoU3RyZWFtQ29udmVydG9yKVxuICAgIHRoaXMuY29uc3VtZXJzLnB1c2goaXRlcilcbiAgICByZXR1cm4gaXRlclxuICB9XG5cbiAgaGFuZGxlTXNnKG1zZzogUmVjZWl2aW5nTWVzc2FnZSkge1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKGAke3RoaXMudXJpfSBoYW5kbGluZyBtZXNzYWdlYClcblxuICAgIGlmICh0aGlzLmNsb3NlZCkge1xuICAgICAgdGhpcy5ub3RpZnlPcmNoZXN0cmF0b3Ioe1xuICAgICAgICBwcm9jZXNzZWQ6IHtcbiAgICAgICAgICBnbG9iYWxTZXF1ZW5jZU51bWJlcjogbXNnLmdsb2JhbFNlcXVlbmNlTnVtYmVyLFxuICAgICAgICAgIGNoYW5uZWw6IHRoaXMudXJpLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IHByb21pc2VzID0gW11cbiAgICBmb3IgKGNvbnN0IGl0ZXIgb2YgdGhpcy5jb25zdW1lcnMpIHtcbiAgICAgIHByb21pc2VzLnB1c2gobmV3IFByb21pc2UoKHJlcykgPT4gaXRlci5wdXNoKG1zZy5kYXRhLCAoKSA9PiByZXMobnVsbCkpKSlcbiAgICB9XG5cbiAgICBQcm9taXNlLmFsbChwcm9taXNlcykudGhlbigoKSA9PlxuICAgICAgdGhpcy5ub3RpZnlPcmNoZXN0cmF0b3Ioe1xuICAgICAgICBwcm9jZXNzZWQ6IHtcbiAgICAgICAgICBnbG9iYWxTZXF1ZW5jZU51bWJlcjogbXNnLmdsb2JhbFNlcXVlbmNlTnVtYmVyLFxuICAgICAgICAgIGNoYW5uZWw6IHRoaXMudXJpLFxuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgKVxuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgaWYgKHRoaXMuY2xvc2VkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLmNsb3NlZCA9IHRydWVcbiAgICBmb3IgKGNvbnN0IGl0ZXIgb2YgdGhpcy5jb25zdW1lcnMpIHtcbiAgICAgIGl0ZXIuY2xvc2UoKCkgPT4ge30pXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgY2FuY2VsKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmNhbmNlbGVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLmNhbmNlbGVkID0gdHJ1ZVxuICAgIHRoaXMuY2xvc2UoKVxuICAgIGF3YWl0IHRoaXMubm90aWZ5T3JjaGVzdHJhdG9yKHtcbiAgICAgIGNsb3NlOiB7IGNoYW5uZWw6IHRoaXMudXJpIH0sXG4gICAgfSlcbiAgfVxuXG4gIC8vIFRoZXJlIGlzIGEgc3RyZWFtIG1lc3NhZ2UgYXZhaWxhYmxlIGZvciB0aGlzIHJlYWRlclxuICBhc3luYyBoYW5kbGVTdHJlYW1pbmdNZXNzYWdlKHtcbiAgICBjaGFubmVsLFxuICAgIGdsb2JhbFNlcXVlbmNlTnVtYmVyLFxuICB9OiBSZWNlaXZpbmdTdHJlYW1NZXNzYWdlKSB7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoYCR7dGhpcy51cml9IGhhbmRsaW5nIHN0cmVhbWluZyBtZXNzYWdlYClcblxuICAgIGlmICh0aGlzLmNsb3NlZCkge1xuICAgICAgYXdhaXQgdGhpcy5ub3RpZnlPcmNoZXN0cmF0b3Ioe1xuICAgICAgICBwcm9jZXNzZWQ6IHsgZ2xvYmFsU2VxdWVuY2VOdW1iZXIsIGNoYW5uZWwgfSxcbiAgICAgIH0pXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBjaHVua3MgPSB0aGlzLmNsaWVudC5yZWNlaXZlU3RyZWFtTWVzc2FnZSgpXG4gICAgY29uc3Qgd3JpdGVDb250cm9sTWVzc2FnZSA9IHByb21pc2lmeShjaHVua3Mud3JpdGUuYmluZChjaHVua3MpKVxuICAgIGNvbnN0IGNvbnN1bWVyc0NvbnN1bWVkID0gW11cblxuICAgIC8vIEFmdGVyIGVhY2ggY2h1bmsgaXMgaGFuZGxlZCBieSBhbGwgY29uc3VtZXIsIGVtaXQgYSBwcm9jZXNzZWQgbWVzc2FnZVxuICAgIGxldCBpZHggPSAwXG4gICAgY29uc3QgbWVzc2FnZUl0ZXJhdG9ycyA9IGZhbm91dFN0cmVhbShcbiAgICAgIGNodW5rcyxcbiAgICAgIHRoaXMuY29uc3VtZXJzLmxlbmd0aCxcbiAgICAgIGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgd3JpdGVDb250cm9sTWVzc2FnZSh7IHN0cmVhbVNlcXVlbmNlTnVtYmVyOiBpZHgrKyB9KVxuICAgICAgfSxcbiAgICApXG5cbiAgICBmb3IgKGNvbnN0IGNvbnN1bWVyIG9mIHRoaXMuY29uc3VtZXJzKSB7XG4gICAgICBjb25zdW1lcnNDb25zdW1lZC5wdXNoKFxuICAgICAgICBuZXcgUHJvbWlzZSgocmVzKSA9PlxuICAgICAgICAgIGNvbnN1bWVyLnB1c2hTdHJlYW0obWVzc2FnZUl0ZXJhdG9ycy5wb3AoKSEsICgpID0+IHJlcyhudWxsKSksXG4gICAgICAgICksXG4gICAgICApXG4gICAgfVxuXG4gICAgYXdhaXQgd3JpdGVDb250cm9sTWVzc2FnZSh7IGdsb2JhbFNlcXVlbmNlTnVtYmVyIH0pXG5cbiAgICBQcm9taXNlLmFsbChjb25zdW1lcnNDb25zdW1lZCkudGhlbigoKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZygnV3JpdGluZyBwcm9jZXNzZWQgZm9yIHN0cmVhbWluZyBtZXNzYWdlJylcbiAgICAgIHRoaXMubm90aWZ5T3JjaGVzdHJhdG9yKHsgcHJvY2Vzc2VkOiB7IGdsb2JhbFNlcXVlbmNlTnVtYmVyLCBjaGFubmVsIH0gfSlcbiAgICB9KVxuICB9XG59XG5cbi8qKlxuICogSGVscGVyIGZ1bmN0aW9uIHRvIHRlZSBhIHN0cmVhbSBgbnVtQ29uc3VtZXJzYCB0aW1lc1xuICogV2hlbiBlYWNoIHRlZSdkIHN0cmVhbSBoYXMgaGFuZGxlZCBhIGNodW5rLCBjYWxsIHtAbGluayBvbkFsbEhhbmRsZWR9XG4gKi9cbmZ1bmN0aW9uIGZhbm91dFN0cmVhbTxUPihcbiAgc3RyZWFtOiBDbGllbnRSZWFkYWJsZVN0cmVhbTxUPixcbiAgbnVtQ29uc3VtZXJzOiBudW1iZXIsXG4gIG9uQWxsSGFuZGxlZDogKCkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD4sXG4pOiBBc3luY0l0ZXJhYmxlPFQ+W10ge1xuICB0eXBlIFdhaXRlciA9ICh2YWx1ZTogSXRlcmF0b3JSZXN1bHQ8VD4pID0+IHZvaWRcblxuICBsZXQgZW5kZWQgPSBmYWxzZVxuICBjb25zdCBidWZmZXI6IFRbXSA9IFtdXG4gIGNvbnN0IHBlbmRpbmc6IFdhaXRlcltdID0gW11cbiAgbGV0IGFjdGl2ZUNvbnN1bWVycyA9IG51bUNvbnN1bWVyc1xuXG4gIC8vIGNvbnN1bWVyIGJvb2trZWVwaW5nXG4gIGxldCBhd2FpdGluZ0FjayA9IDBcblxuICBmdW5jdGlvbiBwdXNoQ2h1bmsoY2h1bms6IFQpIHtcbiAgICBidWZmZXIucHVzaChjaHVuaylcbiAgICBmbHVzaCgpXG4gIH1cblxuICBmdW5jdGlvbiBmbHVzaCgpIHtcbiAgICB3aGlsZSAoYnVmZmVyLmxlbmd0aCA+IDAgJiYgcGVuZGluZy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBjaHVuayA9IGJ1ZmZlclswXSAvLyBrZWVwIHVudGlsIGFsbCBjb25zdW1lcnMgYWNrXG4gICAgICBjb25zdCB3YWl0ZXIgPSBwZW5kaW5nLnNoaWZ0KCkhXG4gICAgICB3YWl0ZXIoeyB2YWx1ZTogY2h1bmssIGRvbmU6IGZhbHNlIH0pXG4gICAgICBhd2FpdGluZ0FjaysrXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZW5kKCkge1xuICAgIGVuZGVkID0gdHJ1ZVxuICAgIHdoaWxlIChwZW5kaW5nLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHdhaXRlciA9IHBlbmRpbmcuc2hpZnQoKSFcbiAgICAgIHdhaXRlcih7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSlcbiAgICB9XG4gIH1cblxuICBzdHJlYW0ub24oJ2RhdGEnLCAoY2h1bms6IFQpID0+IHtcbiAgICBwdXNoQ2h1bmsoY2h1bmspXG4gIH0pXG5cbiAgc3RyZWFtLm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgZW5kKClcbiAgfSlcblxuICBzdHJlYW0ub24oJ2Vycm9yJywgKGVycikgPT4ge1xuICAgIHdoaWxlIChwZW5kaW5nLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHdhaXRlciA9IHBlbmRpbmcuc2hpZnQoKSFcbiAgICAgIHdhaXRlcih7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSlcbiAgICB9XG4gICAgdGhyb3cgZXJyXG4gIH0pXG5cbiAgZnVuY3Rpb24gbWFrZUl0ZXJhYmxlKCk6IEFzeW5jSXRlcmFibGU8VD4ge1xuICAgIHJldHVybiB7XG4gICAgICBbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5leHQoKTogUHJvbWlzZTxJdGVyYXRvclJlc3VsdDxUPj4ge1xuICAgICAgICAgICAgaWYgKGJ1ZmZlci5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNodW5rID0gYnVmZmVyWzBdXG4gICAgICAgICAgICAgIGF3YWl0aW5nQWNrKytcbiAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7IHZhbHVlOiBjaHVuaywgZG9uZTogZmFsc2UgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlbmRlZCkge1xuICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICAgIHBlbmRpbmcucHVzaChyZXNvbHZlKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9LFxuICAgICAgICAgIGFzeW5jIHJldHVybigpIHtcbiAgICAgICAgICAgIGFjdGl2ZUNvbnN1bWVycy0tXG4gICAgICAgICAgICBpZiAoYWN0aXZlQ29uc3VtZXJzID09PSAwKSB7XG4gICAgICAgICAgICAgIGVuZCgpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH1cbiAgICAgICAgICB9LFxuICAgICAgICB9XG4gICAgICB9LFxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGFjaygpIHtcbiAgICBhd2FpdGluZ0Fjay0tXG4gICAgaWYgKGF3YWl0aW5nQWNrID09PSAwKSB7XG4gICAgICAvLyBhbGwgY29uc3VtZXJzIGRvbmUgd2l0aCB0aGUgY3VycmVudCBjaHVua1xuICAgICAgYnVmZmVyLnNoaWZ0KCkgLy8gZHJvcCBpdFxuICAgICAgYXdhaXQgb25BbGxIYW5kbGVkKClcbiAgICAgIGZsdXNoKCkgLy8gY29udGludWUgd2l0aCBuZXh0IGNodW5rXG4gICAgfVxuICB9XG5cbiAgLy8gd3JhcCBjb25zdW1lciBzbyB0aGV5ICptdXN0KiBjYWxsIGFjaygpIGFmdGVyIHByb2Nlc3NpbmdcbiAgZnVuY3Rpb24gd3JhcChpdGVyYWJsZTogQXN5bmNJdGVyYWJsZTxUPik6IEFzeW5jSXRlcmFibGU8VD4ge1xuICAgIHJldHVybiB7XG4gICAgICBhc3luYyAqW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpIHtcbiAgICAgICAgZm9yIGF3YWl0IChjb25zdCBpdGVtIG9mIGl0ZXJhYmxlKSB7XG4gICAgICAgICAgeWllbGQgaXRlbVxuICAgICAgICAgIGF3YWl0IGFjaygpXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmF3SXRlcmFibGVzID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogbnVtQ29uc3VtZXJzIH0sIG1ha2VJdGVyYWJsZSlcbiAgcmV0dXJuIHJhd0l0ZXJhYmxlcy5tYXAod3JhcClcbn1cbiJdfQ==
|
|
257
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVhZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3JlYWRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFRQSxPQUFPLEVBQ0wsWUFBWSxFQUVaLFdBQVcsRUFDWCxlQUFlLEVBQ2YsZUFBZSxHQUNoQixNQUFNLGFBQWEsQ0FBQTtBQUVwQixPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBMkJoQyxNQUFNLE1BQU07SUFDRixTQUFTLENBQWM7SUFDdkIsS0FBSyxHQUEwQixFQUFFLENBQUE7SUFDakMsV0FBVyxHQUF3QyxJQUFJLENBQUE7SUFDdkQsTUFBTSxHQUFHLEtBQUssQ0FBQTtJQUV0QixZQUFZLFNBQXVCO1FBQ2pDLElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFBO0lBQzVCLENBQUM7SUFFRCxJQUFJLENBQUMsTUFBa0IsRUFBRSxVQUFzQjtRQUM3QyxJQUFJLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNoQixVQUFVLEVBQUUsQ0FBQTtZQUNaLE9BQU07UUFDUixDQUFDO1FBRUQsTUFBTSxJQUFJLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUE7UUFDeEMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLENBQUMsQ0FBQTtRQUNyQyxJQUFJLElBQUksQ0FBQyxXQUFXLEVBQUUsQ0FBQztZQUNyQixJQUFJLENBQUMsV0FBVyxDQUFDLFNBQVMsQ0FBQyxDQUFBO1lBQzNCLElBQUksQ0FBQyxXQUFXLEdBQUcsSUFBSSxDQUFBO1FBQ3pCLENBQUM7SUFDSCxDQUFDO0lBRUQsS0FBSyxDQUFDLFVBQXNCO1FBQzFCLElBQUksSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2hCLFVBQVUsRUFBRSxDQUFBO1lBQ1osT0FBTTtRQUNSLENBQUM7UUFFRCxJQUFJLENBQUMsTUFBTSxHQUFHLElBQUksQ0FB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QUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDbGllbnRSZWFkYWJsZVN0cmVhbSB9IGZyb20gJ0BncnBjL2dycGMtanMnXG5pbXBvcnQge1xuICBEYXRhQ2h1bmssXG4gIFJlY2VpdmluZ01lc3NhZ2UsXG4gIFJlY2VpdmluZ1N0cmVhbU1lc3NhZ2UsXG4gIFJ1bm5lckNsaWVudCxcbn0gZnJvbSAnQHJkZmMvcHJvdG8nXG5pbXBvcnQgeyBMb2dnZXIgfSBmcm9tICd3aW5zdG9uJ1xuaW1wb3J0IHtcbiAgQW55Q29udmVydG9yLFxuICBDb252ZXJ0b3IsXG4gIE5vQ29udmVydG9yLFxuICBTdHJlYW1Db252ZXJ0b3IsXG4gIFN0cmluZ0NvbnZlcnRvcixcbn0gZnJvbSAnLi9jb252ZXJ0b3InXG5pbXBvcnQgeyBXcml0YWJsZSB9IGZyb20gJy4vcnVubmVyJ1xuaW1wb3J0IHsgcHJvbWlzaWZ5IH0gZnJvbSAndXRpbCdcblxuZXhwb3J0IHR5cGUgQW55ID1cbiAgfCB7XG4gICAgICBzdHJpbmc6IHN0cmluZ1xuICAgIH1cbiAgfCB7XG4gICAgICBzdHJlYW06IEFzeW5jR2VuZXJhdG9yPFVpbnQ4QXJyYXk+XG4gICAgfVxuICB8IHtcbiAgICAgIGJ1ZmZlcjogVWludDhBcnJheVxuICAgIH1cblxuZXhwb3J0IGludGVyZmFjZSBSZWFkZXIge1xuICByZWFkb25seSB1cmk6IHN0cmluZ1xuICBzdHJpbmdzKCk6IEFzeW5jSXRlcmFibGU8c3RyaW5nPlxuICBzdHJlYW1zKCk6IEFzeW5jSXRlcmFibGU8QXN5bmNHZW5lcmF0b3I8VWludDhBcnJheT4+XG4gIGJ1ZmZlcnMoKTogQXN5bmNJdGVyYWJsZTxVaW50OEFycmF5PlxuICBhbnlzKCk6IEFzeW5jSXRlcmFibGU8QW55PlxuICBjYW5jZWwoKTogUHJvbWlzZTx2b2lkPlxufVxuXG50eXBlIFRvZG88VD4gPSB7XG4gIGl0ZW06IFRcbiAgb25Db21wbGV0ZTogKCkgPT4gdm9pZFxufVxuXG5jbGFzcyBNeUl0ZXI8VD4gaW1wbGVtZW50cyBBc3luY0l0ZXJhYmxlPFQ+IHtcbiAgcHJpdmF0ZSBjb252ZXJ0b3I6IENvbnZlcnRvcjxUPlxuICBwcml2YXRlIHF1ZXVlOiBUb2RvPFQgfCB1bmRlZmluZWQ+W10gPSBbXVxuICBwcml2YXRlIHJlc29sdmVOZXh0OiAoKHZhbHVlOiB1bmRlZmluZWQpID0+IHZvaWQpIHwgbnVsbCA9IG51bGxcbiAgcHJpdmF0ZSBjbG9zZWQgPSBmYWxzZVxuXG4gIGNvbnN0cnVjdG9yKGNvbnZlcnRvcjogQ29udmVydG9yPFQ+KSB7XG4gICAgdGhpcy5jb252ZXJ0b3IgPSBjb252ZXJ0b3JcbiAgfVxuXG4gIHB1c2goYnVmZmVyOiBVaW50OEFycmF5LCBvbkNvbXBsZXRlOiAoKSA9PiB2b2lkKSB7XG4gICAgaWYgKHRoaXMuY2xvc2VkKSB7XG4gICAgICBvbkNvbXBsZXRlKClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IGl0ZW0gPSB0aGlzLmNvbnZlcnRvci5mcm9tKGJ1ZmZlcilcbiAgICB0aGlzLnF1ZXVlLnB1c2goeyBpdGVtLCBvbkNvbXBsZXRlIH0pXG4gICAgaWYgKHRoaXMucmVzb2x2ZU5leHQpIHtcbiAgICAgIHRoaXMucmVzb2x2ZU5leHQodW5kZWZpbmVkKVxuICAgICAgdGhpcy5yZXNvbHZlTmV4dCA9IG51bGxcbiAgICB9XG4gIH1cblxuICBjbG9zZShvbkNvbXBsZXRlOiAoKSA9PiB2b2lkKSB7XG4gICAgaWYgKHRoaXMuY2xvc2VkKSB7XG4gICAgICBvbkNvbXBsZXRlKClcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIHRoaXMuY2xvc2VkID0gdHJ1ZVxuICAgIHRoaXMucXVldWUucHVzaCh7IGl0ZW06IHVuZGVmaW5lZCwgb25Db21wbGV0ZSB9KVxuICAgIGlmICh0aGlzLnJlc29sdmVOZXh0KSB7XG4gICAgICB0aGlzLnJlc29sdmVOZXh0KHVuZGVmaW5lZClcbiAgICAgIHRoaXMucmVzb2x2ZU5leHQgPSBudWxsXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgcHVzaFN0cmVhbShjaHVua3M6IEFzeW5jSXRlcmFibGU8RGF0YUNodW5rPiwgb25Db21wbGV0ZTogKCkgPT4gdm9pZCkge1xuICAgIGlmICh0aGlzLmNsb3NlZCkge1xuICAgICAgb25Db21wbGV0ZSgpXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICAvLyBUaGlzIGlzIGFuIGFzeW5jIGdlbmVyYXRvciB0aGF0IHRyYW5zZm9ybXMgRGF0YUNodW5rcyB0byBCdWZmZXJzXG4gICAgY29uc3Qgc3RyZWFtID0gKGFzeW5jIGZ1bmN0aW9uKiAoc3RyZWFtKSB7XG4gICAgICBmb3IgYXdhaXQgKGNvbnN0IGNodW5rIG9mIHN0cmVhbSkge1xuICAgICAgICB5aWVsZCBjaHVuay5kYXRhXG4gICAgICB9XG4gICAgfSkoY2h1bmtzKVxuXG4gICAgY29uc3QgaXRlbSA9IGF3YWl0IHRoaXMuY29udmVydG9yLmZyb21TdHJlYW0oc3RyZWFtKVxuICAgIHRoaXMucXVldWUucHVzaCh7IGl0ZW0sIG9uQ29tcGxldGUgfSlcbiAgICBpZiAodGhpcy5yZXNvbHZlTmV4dCkge1xuICAgICAgdGhpcy5yZXNvbHZlTmV4dCh1bmRlZmluZWQpXG4gICAgICB0aGlzLnJlc29sdmVOZXh0ID0gbnVsbFxuICAgIH1cbiAgfVxuXG4gIGFzeW5jICpbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCkge1xuICAgIHdoaWxlICh0cnVlKSB7XG4gICAgICBpZiAodGhpcy5xdWV1ZS5sZW5ndGggPiAwKSB7XG4gICAgICAgIGNvbnN0IHsgaXRlbSwgb25Db21wbGV0ZSB9ID0gdGhpcy5xdWV1ZS5zaGlmdCgpIVxuICAgICAgICBpZiAoaXRlbSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgb25Db21wbGV0ZSgpXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgICB5aWVsZCBpdGVtXG4gICAgICAgIC8vIE5vdGU6IGV4ZWN1dGlvbiBwYXVzZXMgYXQgYHlpZWxkYCB1bnRpbCB0aGUgY29uc3VtZXIgY2FsbHMgYC5uZXh0KClgIGFnYWluLlxuICAgICAgICAvLyBXZSBjYWxsIG9uQ29tcGxldGUgKmFmdGVyKiByZXN1bWluZywgc28gdGhlIHByb2R1Y2VyIGtub3dzIHRoZSBpdGVtIHdhcyBhY3R1YWxseSBjb25zdW1lZC5cbiAgICAgICAgb25Db21wbGV0ZSgpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICBhd2FpdCBuZXcgUHJvbWlzZTx1bmRlZmluZWQ+KChyZXNvbHZlKSA9PiAodGhpcy5yZXNvbHZlTmV4dCA9IHJlc29sdmUpKVxuICAgICAgfVxuICAgIH1cbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgUmVhZGVySW5zdGFuY2UgaW1wbGVtZW50cyBSZWFkZXIge1xuICBwcml2YXRlIGNsaWVudDogUnVubmVyQ2xpZW50XG4gIHJlYWRvbmx5IHVyaTogc3RyaW5nXG4gIHByaXZhdGUgbG9nZ2VyOiBMb2dnZXJcbiAgcHJpdmF0ZSByZWFkb25seSBub3RpZnlPcmNoZXN0cmF0b3I6IFdyaXRhYmxlXG5cbiAgcHJpdmF0ZSBjb25zdW1lcnM6IE15SXRlcjx1bmtub3duPltdID0gW11cbiAgcHJpdmF0ZSBjbG9zZWQgPSBmYWxzZVxuICBwcml2YXRlIGNhbmNlbGVkID0gZmFsc2VcblxuICBjb25zdHJ1Y3RvcihcbiAgICB1cmk6IHN0cmluZyxcbiAgICBjbGllbnQ6IFJ1bm5lckNsaWVudCxcbiAgICBub3RpZnlPcmNoZXN0cmF0b3I6IFdyaXRhYmxlLFxuICAgIGxvZ2dlcjogTG9nZ2VyLFxuICApIHtcbiAgICB0aGlzLnVyaSA9IHVyaVxuICAgIHRoaXMuY2xpZW50ID0gY2xpZW50XG4gICAgdGhpcy5sb2dnZXIgPSBsb2dnZXJcbiAgICB0aGlzLm5vdGlmeU9yY2hlc3RyYXRvciA9IG5vdGlmeU9yY2hlc3RyYXRvclxuICB9XG5cbiAgYW55cygpOiBBc3luY0l0ZXJhYmxlPEFueT4ge1xuICAgIGNvbnN0IGl0ZXIgPSBuZXcgTXlJdGVyKEFueUNvbnZlcnRvcilcbiAgICB0aGlzLmNvbnN1bWVycy5wdXNoKGl0ZXIpXG4gICAgcmV0dXJuIGl0ZXJcbiAgfVxuXG4gIHN0cmluZ3MoKTogQXN5bmNJdGVyYWJsZTxzdHJpbmc+IHtcbiAgICBjb25zdCBpdGVyID0gbmV3IE15SXRlcihTdHJpbmdDb252ZXJ0b3IpXG4gICAgdGhpcy5jb25zdW1lcnMucHVzaChpdGVyKVxuICAgIHJldHVybiBpdGVyXG4gIH1cblxuICBidWZmZXJzKCk6IEFzeW5jSXRlcmFibGU8VWludDhBcnJheT4ge1xuICAgIGNvbnN0IGl0ZXIgPSBuZXcgTXlJdGVyKE5vQ29udmVydG9yKVxuICAgIHRoaXMuY29uc3VtZXJzLnB1c2goaXRlcilcbiAgICByZXR1cm4gaXRlclxuICB9XG5cbiAgc3RyZWFtcygpOiBBc3luY0l0ZXJhYmxlPEFzeW5jR2VuZXJhdG9yPFVpbnQ4QXJyYXk+PiB7XG4gICAgY29uc3QgaXRlciA9IG5ldyBNeUl0ZXIoU3RyZWFtQ29udmVydG9yKVxuICAgIHRoaXMuY29uc3VtZXJzLnB1c2goaXRlcilcbiAgICByZXR1cm4gaXRlclxuICB9XG5cbiAgaGFuZGxlTXNnKG1zZzogUmVjZWl2aW5nTWVzc2FnZSkge1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKGAke3RoaXMudXJpfSBoYW5kbGluZyBtZXNzYWdlYClcblxuICAgIGlmICh0aGlzLmNsb3NlZCkge1xuICAgICAgdGhpcy5ub3RpZnlPcmNoZXN0cmF0b3Ioe1xuICAgICAgICBwcm9jZXNzZWQ6IHtcbiAgICAgICAgICBnbG9iYWxTZXF1ZW5jZU51bWJlcjogbXNnLmdsb2JhbFNlcXVlbmNlTnVtYmVyLFxuICAgICAgICAgIGNoYW5uZWw6IHRoaXMudXJpLFxuICAgICAgICAgIGVycm9yOlxuICAgICAgICAgICAgJ3JlYWRlciBpcyBjYW5jZWxlZDsgbWVzc2FnZSBoYXMgbm90IGJlZW4gcHJvY2Vzc2VkIGJ5IHRoZSBwcm9jZXNzb3InLFxuICAgICAgICB9LFxuICAgICAgfSlcbiAgICAgIHJldHVyblxuICAgIH1cblxuICAgIGNvbnN0IHByb21pc2VzID0gW11cbiAgICBmb3IgKGNvbnN0IGl0ZXIgb2YgdGhpcy5jb25zdW1lcnMpIHtcbiAgICAgIHByb21pc2VzLnB1c2gobmV3IFByb21pc2UoKHJlcykgPT4gaXRlci5wdXNoKG1zZy5kYXRhLCAoKSA9PiByZXMobnVsbCkpKSlcbiAgICB9XG5cbiAgICBQcm9taXNlLmFsbChwcm9taXNlcykudGhlbigoKSA9PlxuICAgICAgdGhpcy5ub3RpZnlPcmNoZXN0cmF0b3Ioe1xuICAgICAgICBwcm9jZXNzZWQ6IHtcbiAgICAgICAgICBnbG9iYWxTZXF1ZW5jZU51bWJlcjogbXNnLmdsb2JhbFNlcXVlbmNlTnVtYmVyLFxuICAgICAgICAgIGNoYW5uZWw6IHRoaXMudXJpLFxuICAgICAgICB9LFxuICAgICAgfSksXG4gICAgKVxuICB9XG5cbiAgY2xvc2UoKSB7XG4gICAgaWYgKHRoaXMuY2xvc2VkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLmNsb3NlZCA9IHRydWVcbiAgICBmb3IgKGNvbnN0IGl0ZXIgb2YgdGhpcy5jb25zdW1lcnMpIHtcbiAgICAgIGl0ZXIuY2xvc2UoKCkgPT4ge30pXG4gICAgfVxuICB9XG5cbiAgYXN5bmMgY2FuY2VsKCk6IFByb21pc2U8dm9pZD4ge1xuICAgIGlmICh0aGlzLmNhbmNlbGVkKSB7XG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICB0aGlzLmNhbmNlbGVkID0gdHJ1ZVxuICAgIHRoaXMuY2xvc2UoKVxuICAgIGF3YWl0IHRoaXMubm90aWZ5T3JjaGVzdHJhdG9yKHtcbiAgICAgIGNsb3NlOiB7IGNoYW5uZWw6IHRoaXMudXJpIH0sXG4gICAgfSlcbiAgfVxuXG4gIC8vIFRoZXJlIGlzIGEgc3RyZWFtIG1lc3NhZ2UgYXZhaWxhYmxlIGZvciB0aGlzIHJlYWRlclxuICBhc3luYyBoYW5kbGVTdHJlYW1pbmdNZXNzYWdlKHtcbiAgICBjaGFubmVsLFxuICAgIGdsb2JhbFNlcXVlbmNlTnVtYmVyLFxuICB9OiBSZWNlaXZpbmdTdHJlYW1NZXNzYWdlKSB7XG4gICAgdGhpcy5sb2dnZXIuZGVidWcoYCR7dGhpcy51cml9IGhhbmRsaW5nIHN0cmVhbWluZyBtZXNzYWdlYClcblxuICAgIGlmICh0aGlzLmNsb3NlZCkge1xuICAgICAgYXdhaXQgdGhpcy5ub3RpZnlPcmNoZXN0cmF0b3Ioe1xuICAgICAgICBwcm9jZXNzZWQ6IHsgZ2xvYmFsU2VxdWVuY2VOdW1iZXIsIGNoYW5uZWwgfSxcbiAgICAgIH0pXG4gICAgICByZXR1cm5cbiAgICB9XG5cbiAgICBjb25zdCBjaHVua3MgPSB0aGlzLmNsaWVudC5yZWNlaXZlU3RyZWFtTWVzc2FnZSgpXG4gICAgY29uc3Qgd3JpdGVDb250cm9sTWVzc2FnZSA9IHByb21pc2lmeShjaHVua3Mud3JpdGUuYmluZChjaHVua3MpKVxuICAgIGNvbnN0IGNvbnN1bWVyc0NvbnN1bWVkID0gW11cblxuICAgIC8vIEFmdGVyIGVhY2ggY2h1bmsgaXMgaGFuZGxlZCBieSBhbGwgY29uc3VtZXIsIGVtaXQgYSBwcm9jZXNzZWQgbWVzc2FnZVxuICAgIGxldCBpZHggPSAwXG4gICAgY29uc3QgbWVzc2FnZUl0ZXJhdG9ycyA9IGZhbm91dFN0cmVhbShcbiAgICAgIGNodW5rcyxcbiAgICAgIHRoaXMuY29uc3VtZXJzLmxlbmd0aCxcbiAgICAgIGFzeW5jICgpID0+IHtcbiAgICAgICAgYXdhaXQgd3JpdGVDb250cm9sTWVzc2FnZSh7IHN0cmVhbVNlcXVlbmNlTnVtYmVyOiBpZHgrKyB9KVxuICAgICAgfSxcbiAgICApXG5cbiAgICBmb3IgKGNvbnN0IGNvbnN1bWVyIG9mIHRoaXMuY29uc3VtZXJzKSB7XG4gICAgICBjb25zdW1lcnNDb25zdW1lZC5wdXNoKFxuICAgICAgICBuZXcgUHJvbWlzZSgocmVzKSA9PlxuICAgICAgICAgIGNvbnN1bWVyLnB1c2hTdHJlYW0obWVzc2FnZUl0ZXJhdG9ycy5wb3AoKSEsICgpID0+IHJlcyhudWxsKSksXG4gICAgICAgICksXG4gICAgICApXG4gICAgfVxuXG4gICAgYXdhaXQgd3JpdGVDb250cm9sTWVzc2FnZSh7IGdsb2JhbFNlcXVlbmNlTnVtYmVyIH0pXG5cbiAgICBQcm9taXNlLmFsbChjb25zdW1lcnNDb25zdW1lZCkudGhlbigoKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZygnV3JpdGluZyBwcm9jZXNzZWQgZm9yIHN0cmVhbWluZyBtZXNzYWdlJylcbiAgICAgIHRoaXMubm90aWZ5T3JjaGVzdHJhdG9yKHsgcHJvY2Vzc2VkOiB7IGdsb2JhbFNlcXVlbmNlTnVtYmVyLCBjaGFubmVsIH0gfSlcbiAgICB9KVxuICB9XG59XG5cbi8qKlxuICogSGVscGVyIGZ1bmN0aW9uIHRvIHRlZSBhIHN0cmVhbSBgbnVtQ29uc3VtZXJzYCB0aW1lc1xuICogV2hlbiBlYWNoIHRlZSdkIHN0cmVhbSBoYXMgaGFuZGxlZCBhIGNodW5rLCBjYWxsIHtAbGluayBvbkFsbEhhbmRsZWR9XG4gKi9cbmZ1bmN0aW9uIGZhbm91dFN0cmVhbTxUPihcbiAgc3RyZWFtOiBDbGllbnRSZWFkYWJsZVN0cmVhbTxUPixcbiAgbnVtQ29uc3VtZXJzOiBudW1iZXIsXG4gIG9uQWxsSGFuZGxlZDogKCkgPT4gdm9pZCB8IFByb21pc2U8dm9pZD4sXG4pOiBBc3luY0l0ZXJhYmxlPFQ+W10ge1xuICB0eXBlIFdhaXRlciA9ICh2YWx1ZTogSXRlcmF0b3JSZXN1bHQ8VD4pID0+IHZvaWRcblxuICBsZXQgZW5kZWQgPSBmYWxzZVxuICBjb25zdCBidWZmZXI6IFRbXSA9IFtdXG4gIGNvbnN0IHBlbmRpbmc6IFdhaXRlcltdID0gW11cbiAgbGV0IGFjdGl2ZUNvbnN1bWVycyA9IG51bUNvbnN1bWVyc1xuXG4gIC8vIGNvbnN1bWVyIGJvb2trZWVwaW5nXG4gIGxldCBhd2FpdGluZ0FjayA9IDBcblxuICBmdW5jdGlvbiBwdXNoQ2h1bmsoY2h1bms6IFQpIHtcbiAgICBidWZmZXIucHVzaChjaHVuaylcbiAgICBmbHVzaCgpXG4gIH1cblxuICBmdW5jdGlvbiBmbHVzaCgpIHtcbiAgICB3aGlsZSAoYnVmZmVyLmxlbmd0aCA+IDAgJiYgcGVuZGluZy5sZW5ndGggPiAwKSB7XG4gICAgICBjb25zdCBjaHVuayA9IGJ1ZmZlclswXSAvLyBrZWVwIHVudGlsIGFsbCBjb25zdW1lcnMgYWNrXG4gICAgICBjb25zdCB3YWl0ZXIgPSBwZW5kaW5nLnNoaWZ0KCkhXG4gICAgICB3YWl0ZXIoeyB2YWx1ZTogY2h1bmssIGRvbmU6IGZhbHNlIH0pXG4gICAgICBhd2FpdGluZ0FjaysrXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gZW5kKCkge1xuICAgIGVuZGVkID0gdHJ1ZVxuICAgIHdoaWxlIChwZW5kaW5nLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHdhaXRlciA9IHBlbmRpbmcuc2hpZnQoKSFcbiAgICAgIHdhaXRlcih7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSlcbiAgICB9XG4gIH1cblxuICBzdHJlYW0ub24oJ2RhdGEnLCAoY2h1bms6IFQpID0+IHtcbiAgICBwdXNoQ2h1bmsoY2h1bmspXG4gIH0pXG5cbiAgc3RyZWFtLm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgZW5kKClcbiAgfSlcblxuICBzdHJlYW0ub24oJ2Vycm9yJywgKGVycikgPT4ge1xuICAgIHdoaWxlIChwZW5kaW5nLmxlbmd0aCA+IDApIHtcbiAgICAgIGNvbnN0IHdhaXRlciA9IHBlbmRpbmcuc2hpZnQoKSFcbiAgICAgIHdhaXRlcih7IHZhbHVlOiB1bmRlZmluZWQsIGRvbmU6IHRydWUgfSlcbiAgICB9XG4gICAgdGhyb3cgZXJyXG4gIH0pXG5cbiAgZnVuY3Rpb24gbWFrZUl0ZXJhYmxlKCk6IEFzeW5jSXRlcmFibGU8VD4ge1xuICAgIHJldHVybiB7XG4gICAgICBbU3ltYm9sLmFzeW5jSXRlcmF0b3JdKCkge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIG5leHQoKTogUHJvbWlzZTxJdGVyYXRvclJlc3VsdDxUPj4ge1xuICAgICAgICAgICAgaWYgKGJ1ZmZlci5sZW5ndGggPiAwKSB7XG4gICAgICAgICAgICAgIGNvbnN0IGNodW5rID0gYnVmZmVyWzBdXG4gICAgICAgICAgICAgIGF3YWl0aW5nQWNrKytcbiAgICAgICAgICAgICAgcmV0dXJuIFByb21pc2UucmVzb2x2ZSh7IHZhbHVlOiBjaHVuaywgZG9uZTogZmFsc2UgfSlcbiAgICAgICAgICAgIH1cbiAgICAgICAgICAgIGlmIChlbmRlZCkge1xuICAgICAgICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHsgdmFsdWU6IHVuZGVmaW5lZCwgZG9uZTogdHJ1ZSB9KVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiB7XG4gICAgICAgICAgICAgIHBlbmRpbmcucHVzaChyZXNvbHZlKVxuICAgICAgICAgICAgfSlcbiAgICAgICAgICB9LFxuICAgICAgICAgIGFzeW5jIHJldHVybigpIHtcbiAgICAgICAgICAgIGFjdGl2ZUNvbnN1bWVycy0tXG4gICAgICAgICAgICBpZiAoYWN0aXZlQ29uc3VtZXJzID09PSAwKSB7XG4gICAgICAgICAgICAgIGVuZCgpXG4gICAgICAgICAgICB9XG4gICAgICAgICAgICByZXR1cm4geyB2YWx1ZTogdW5kZWZpbmVkLCBkb25lOiB0cnVlIH1cbiAgICAgICAgICB9LFxuICAgICAgICB9XG4gICAgICB9LFxuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZ1bmN0aW9uIGFjaygpIHtcbiAgICBhd2FpdGluZ0Fjay0tXG4gICAgaWYgKGF3YWl0aW5nQWNrID09PSAwKSB7XG4gICAgICAvLyBhbGwgY29uc3VtZXJzIGRvbmUgd2l0aCB0aGUgY3VycmVudCBjaHVua1xuICAgICAgYnVmZmVyLnNoaWZ0KCkgLy8gZHJvcCBpdFxuICAgICAgYXdhaXQgb25BbGxIYW5kbGVkKClcbiAgICAgIGZsdXNoKCkgLy8gY29udGludWUgd2l0aCBuZXh0IGNodW5rXG4gICAgfVxuICB9XG5cbiAgLy8gd3JhcCBjb25zdW1lciBzbyB0aGV5ICptdXN0KiBjYWxsIGFjaygpIGFmdGVyIHByb2Nlc3NpbmdcbiAgZnVuY3Rpb24gd3JhcChpdGVyYWJsZTogQXN5bmNJdGVyYWJsZTxUPik6IEFzeW5jSXRlcmFibGU8VD4ge1xuICAgIHJldHVybiB7XG4gICAgICBhc3luYyAqW1N5bWJvbC5hc3luY0l0ZXJhdG9yXSgpIHtcbiAgICAgICAgZm9yIGF3YWl0IChjb25zdCBpdGVtIG9mIGl0ZXJhYmxlKSB7XG4gICAgICAgICAgeWllbGQgaXRlbVxuICAgICAgICAgIGF3YWl0IGFjaygpXG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgfVxuICB9XG5cbiAgY29uc3QgcmF3SXRlcmFibGVzID0gQXJyYXkuZnJvbSh7IGxlbmd0aDogbnVtQ29uc3VtZXJzIH0sIG1ha2VJdGVyYWJsZSlcbiAgcmV0dXJuIHJhd0l0ZXJhYmxlcy5tYXAod3JhcClcbn1cbiJdfQ==
|
package/lib/runner.js
CHANGED
|
@@ -155,11 +155,11 @@ export class Runner {
|
|
|
155
155
|
handleProcessed(processed) {
|
|
156
156
|
const writer = this.writers[processed.channel];
|
|
157
157
|
if (writer) {
|
|
158
|
-
writer.handled();
|
|
158
|
+
writer.handled(processed.error);
|
|
159
159
|
}
|
|
160
160
|
else {
|
|
161
161
|
this.logger.error(`Received processed message for channel ${processed.channel}, but no writer was present.`);
|
|
162
162
|
}
|
|
163
163
|
}
|
|
164
164
|
}
|
|
165
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVubmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3J1bm5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxPQUFPLEVBQVUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQ2pELE9BQU8sRUFBVSxjQUFjLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFFakQsT0FBTyxFQUFFLFlBQVksRUFBVSxNQUFNLFNBQVMsQ0FBQTtBQUU5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQ3ZDLE9BQU8sRUFBUSxLQUFLLEVBQUUsYUFBYSxFQUFVLE1BQU0sVUFBVSxDQUFBO0FBQzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFBSSxDQUFBO0FBQ3RDLE9BQU8sRUFBRSxlQUFlLEVBQUUseUJBQXlCLEVBQUUsR0FBRyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRy9FLE1BQU0sSUFBSSxHQUFHLHlCQUF5QixDQUNwQyxxQ0FBcUMsRUFDckMsS0FBSyxFQUNMLE1BQU0sRUFDTixVQUFVLEVBQ1YsU0FBUyxFQUNULGNBQWMsRUFDZCxhQUFhLEVBQ2IsUUFBUSxFQUNSLFlBQVksRUFDWixVQUFVLENBQ1gsQ0FBQTtBQUVELE1BQU0sSUFBSSxHQUFHLGVBQWUsQ0FDMUIsK0JBQStCLEVBQy9CLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQ1IsUUFBUSxFQUNSLFFBQVEsQ0FDVCxDQUFBO0FBV0QsTUFBTSxPQUFPLE1BQU07SUFDQSxPQUFPLEdBQXNDLEVBQUUsQ0FBQTtJQUMvQyxPQUFPLEdBQXNDLEVBQUUsQ0FBQTtJQUMvQyxNQUFNLENBQWM7SUFDcEIsa0JBQWtCLENBQVU7SUFDNUIsTUFBTSxDQUFRO0lBQ3ZCLE1BQU0sQ0FBUTtJQUNkLEtBQUssR0FBVyxFQUFFLENBQUE7SUFFVCxHQUFHLENBQVE7SUFFWCxVQUFVLEdBQW9CLEVBQUUsQ0FBQTtJQUNoQyxtQkFBbUIsR0FBdUIs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QzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FDZiwwQ0FBMEMsU0FBUyxDQUFDLE9BQU8sOEJBQThCLENBQzFGLENBQUE7UUFDSCxDQUFDO0lBQ0gsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtcbiAgQ2xvc2UsXG4gIEZyb21SdW5uZXIsXG4gIFByb2Nlc3NvcixcbiAgUnVubmVyQ2xpZW50LFxuICBUb1J1bm5lcixcbiAgTG9jYWxBY2ssXG4gIFJlY2VpdmluZ01lc3NhZ2UsXG4gIFJlY2VpdmluZ1N0cmVhbU1lc3NhZ2UsXG59IGZyb20gJ0ByZGZjL3Byb3RvJ1xuaW1wb3J0IHsgUmVhZGVyLCBSZWFkZXJJbnN0YW5jZSB9IGZyb20gJy4vcmVhZGVyJ1xuaW1wb3J0IHsgV3JpdGVyLCBXcml0ZXJJbnN0YW5jZSB9IGZyb20gJy4vd3JpdGVyJ1xuaW1wb3J0IHsgUHJvY2Vzc29yIGFzIFByb2MgfSBmcm9tICcuL3Byb2Nlc3NvcidcbmltcG9ydCB7IGNyZWF0ZUxvZ2dlciwgTG9nZ2VyIH0gZnJvbSAnd2luc3RvbidcblxuaW1wb3J0IHsgUnBjVHJhbnNwb3J0IH0gZnJvbSAnLi9sb2dnZXInXG5pbXBvcnQgeyBDb250LCBlbXB0eSwgZXh0cmFjdFNoYXBlcywgU2hhcGVzIH0gZnJvbSAncmRmLWxlbnMnXG5pbXBvcnQgeyBOYW1lZE5vZGUsIFBhcnNlciB9IGZyb20gJ24zJ1xuaW1wb3J0IHsgY3JlYXRlTmFtZXNwYWNlLCBjcmVhdGVVcmlBbmRUZXJtTmFtZXNwYWNlLCBSREYgfSBmcm9tICdAdHJlZWNnL3R5cGVzJ1xuaW1wb3J0IHsgUXVhZCwgVGVybSB9IGZyb20gJ0ByZGZqcy90eXBlcydcblxuY29uc3QgUkRGTCA9IGNyZWF0ZVVyaUFuZFRlcm1OYW1lc3BhY2UoXG4gICdodHRwczovL3czaWQub3JnL3JkZi1sZW5zL29udG9sb2d5IycsXG4gICdDQkQnLFxuICAnUGF0aCcsXG4gICdQYXRoTGVucycsXG4gICdDb250ZXh0JyxcbiAgJ1R5cGVkRXh0cmFjdCcsXG4gICdFbnZWYXJpYWJsZScsXG4gICdlbnZLZXknLFxuICAnZW52RGVmYXVsdCcsXG4gICdkYXRhdHlwZScsXG4pXG5cbmNvbnN0IFJERkMgPSBjcmVhdGVOYW1lc3BhY2UoXG4gICdodHRwczovL3czaWQub3JnL3JkZi1jb25uZWN0IycsXG4gICh4KSA9PiB4LFxuICAnUmVhZGVyJyxcbiAgJ1dyaXRlcicsXG4pXG5cbmV4cG9ydCB0eXBlIFdyaXRhYmxlID0gKG1zZzogRnJvbVJ1bm5lcikgPT4gUHJvbWlzZTx1bmtub3duPlxuXG50eXBlIFByb2Nlc3NvckNvbmZpZyA9IHtcbiAgbG9jYXRpb246IHN0cmluZ1xuICBmaWxlOiBzdHJpbmdcbiAgY2xheno/OiBzdHJpbmdcbn1cblxuZXhwb3J0IHR5cGUgRnVsbFByb2M8Qz4gPSBDIGV4dGVuZHMgUHJvYzxpbmZlciBUPiA/IFQgJiBDIDogbmV2ZXJcbmV4cG9ydCBjbGFzcyBSdW5uZXIge1xuICBwcml2YXRlIHJlYWRvbmx5IHJlYWRlcnM6IHsgW3VyaTogc3RyaW5nXTogUmVhZGVySW5zdGFuY2UgfSA9IHt9XG4gIHByaXZhdGUgcmVhZG9ubHkgd3JpdGVyczogeyBbdXJpOiBzdHJpbmddOiBXcml0ZXJJbnN0YW5jZSB9ID0ge31cbiAgcHJpdmF0ZSByZWFkb25seSBjbGllbnQ6IFJ1bm5lckNsaWVudFxuICBwcml2YXRlIHJlYWRvbmx5IG5vdGlmeU9yY2hlc3RyYXRvcjogV3JpdGFibGVcbiAgcHJpdmF0ZSByZWFkb25seSBsb2dnZXI6IExvZ2dlclxuICBwcml2YXRlIHNoYXBlczogU2hhcGVzXG4gIHByaXZhdGUgcXVhZHM6IFF1YWRbXSA9IFtdXG5cbiAgcHJpdmF0ZSByZWFkb25seSB1cmk6IHN0cmluZ1xuXG4gIHByaXZhdGUgcmVhZG9ubHkgcHJvY2Vzc29yczogUHJvYzx1bmtub3duPltdID0gW11cbiAgcHJpdmF0ZSByZWFkb25seSBwcm9jZXNzb3JUcmFuc2Zvcm1zOiBQcm9taXNlPHVua25vd24+W10gPSBbXVxuXG4gIGNvbnN0cnVjdG9yKFxuICAgIGNsaWVudDogUnVubmVyQ2xpZW50LFxuICAgIG5vdGlmeU9yY2hlc3RyYXRvcjogV3JpdGFibGUsXG4gICAgdXJpOiBzdHJpbmcsXG4gICAgbG9nZ2VyOiBMb2dnZXIsXG4gICkge1xuICAgIHRoaXMuY2xpZW50ID0gY2xpZW50XG4gICAgdGhpcy5ub3RpZnlPcmNoZXN0cmF0b3IgPSBub3RpZnlPcmNoZXN0cmF0b3JcbiAgICB0aGlzLnVyaSA9IHVyaVxuICAgIHRoaXMubG9nZ2VyID0gbG9nZ2VyXG4gIH1cblxuICBhc3luYyBjcmVhdGVQcm9jZXNzb3I8UCBleHRlbmRzIFByb2M8dW5rbm93bj4+KFxuICAgIHByb2M6IFByb2Nlc3NvcixcbiAgKTogUHJvbWlzZTxGdWxsUHJvYzxQPj4ge1xuICAgIGNvbnN0IHByb2NMb2dnZXIgPSBjcmVhdGVMb2dnZXIoe1xuICAgICAgdHJhbnNwb3J0czogW1xuICAgICAgICBuZXcgUnBjVHJhbnNwb3J0KHtcbiAgICAgICAgICBlbnRpdGllczogW3Byb2MudXJpLCB0aGlzLnVyaV0sXG4gICAgICAgICAgc3RyZWFtOiB0aGlzLmNsaWVudC5sb2dTdHJlYW0oKCkgPT4ge30pLFxuICAgICAgICB9KSxcbiAgICAgIF0sXG4gICAgfSlcblxuICAgIGNvbnN0IHR5ID0gdGhpcy5xdWFkc1xuICAgICAgLmZpbHRlcihcbiAgICAgICAgKHgpID0+XG4gICAgICAgICAgeC5zdWJqZWN0LnZhbHVlID09PSBwcm9jLnVyaSAmJiB4LnByZWRpY2F0ZS5lcXVhbHMoUkRGLnRlcm1zLnR5cGUpLFxuICAgICAgKVxuICAgICAgLm1hcCgoeCkgPT4geC5vYmplY3QudmFsdWUpXG5cbiAgICB0aGlzLmxvZ2dlci5pbmZvKFxuICAgICAgYFBhcnNpbmcgcHJvY2Vzc29yICcke3Byb2MudXJpfScgb2YgdHlwZShzKSBbJHt0eS5qb2luKCcsICcpfV1gLFxuICAgIClcbiAgICBjb25zdCBhcmdzID0gdGhpcy5zaGFwZXMubGVuc2VzW1JERkwuVHlwZWRFeHRyYWN0XS5leGVjdXRlKHtcbiAgICAgIGlkOiBuZXcgTmFtZWROb2RlKHByb2MudXJpKSxcbiAgICAgIHF1YWRzOiB0aGlzLnF1YWRzLFxuICAgIH0pXG5cbiAgICBjb25zdCBjb25maWc6IFByb2Nlc3NvckNvbmZpZyA9IEpTT04ucGFyc2UocHJvYy5jb25maWcpXG4gICAgY29uc3QganNQcm9ncmFtID0gYXdhaXQgaW1wb3J0KGNvbmZpZy5maWxlKVxuICAgIGNvbnN0IGNsYXp6ID0ganNQcm9ncmFtW2NvbmZpZy5jbGF6eiB8fCAnZGVmYXVsdCddXG4gICAgY29uc3QgaW5zdGFuY2U6IFByb2M8dW5rbm93bj4gPSBuZXcgY2xhenooYXJncywgcHJvY0xvZ2dlcilcblxuICAgIHJldHVybiA8RnVsbFByb2M8UD4+aW5zdGFuY2VcbiAgfVxuXG4gIGFzeW5jIGFkZFByb2Nlc3NvcjxQIGV4dGVuZHMgUHJvYzx1bmtub3duPj4oXG4gICAgcHJvYzogUHJvY2Vzc29yLFxuICApOiBQcm9taXNlPEZ1bGxQcm9jPFA+PiB7XG4gICAgY29uc3QgaW5zdGFuY2UgPSBhd2FpdCB0aGlzLmNyZWF0ZVByb2Nlc3NvcjxQPihwcm9jKVxuXG4gICAgYXdhaXQgaW5zdGFuY2UuaW5pdCgpXG5cbiAgICB0aGlzLmxvZ2dlci5pbmZvKGBJbml0aWF0ZWQgcHJvY2Vzc29yICcke3Byb2MudXJpfSdgKVxuXG4gICAgdGhpcy5wcm9jZXNzb3JzLnB1c2goaW5zdGFuY2UpXG4gICAgdGhpcy5wcm9jZXNzb3JUcmFuc2Zvcm1zLnB1c2goaW5zdGFuY2UudHJhbnNmb3JtKCkpXG5cbiAgICBhd2FpdCB0aGlzLm5vdGlmeU9yY2hlc3RyYXRvcih7IGluaXRpYWxpemVkOiB7IHVyaTogcHJvYy51cmkgfSB9KVxuXG4gICAgcmV0dXJuIDxGdWxsUHJvYzxQPj5pbnN0YW5jZVxuICB9XG5cbiAgYXN5bmMgc3RhcnQoKSB7XG4gICAgdHJ5IHtcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKHRoaXMucHJvY2Vzc29ycy5tYXAoKHgpID0+IHgucHJvZHVjZSgpKSlcbiAgICAgIGF3YWl0IFByb21pc2UuYWxsKHRoaXMucHJvY2Vzc29yVHJhbnNmb3JtcylcbiAgICB9IGNhdGNoIChleDogdW5rbm93bikge1xuICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ1N0YXJ0IGZhaWxlZDogJyArIEpTT04uc3RyaW5naWZ5KGV4KSlcbiAgICB9XG4gIH1cblxuICBjcmVhdGVXcml0ZXIodXJpOiBUZXJtKTogV3JpdGVyIHtcbiAgICBjb25zdCBpZCA9IHVyaS52YWx1ZVxuXG4gICAgaWYgKHRoaXMud3JpdGVyc1tpZF0gIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRoaXMud3JpdGVyc1tpZF1cbiAgICB9XG4gICAgY29uc3Qgd3JpdGVyID0gbmV3IFdyaXRlckluc3RhbmNlKFxuICAgICAgaWQsXG4gICAgICB0aGlzLmNsaWVudCxcbiAgICAgIHRoaXMubm90aWZ5T3JjaGVzdHJhdG9yLFxuICAgICAgdGhpcy51cmksXG4gICAgICB0aGlzLmxvZ2dlcixcbiAgICApXG4gICAgdGhpcy53cml0ZXJzW2lkXSA9IHdyaXRlclxuICAgIHJldHVybiB3cml0ZXJcbiAgfVxuXG4gIGNyZWF0ZVJlYWRlcih1cmk6IFRlcm0pOiBSZWFkZXIge1xuICAgIGNvbnN0IGlkcyA9IHVyaS52YWx1ZVxuXG4gICAgaWYgKHRoaXMucmVhZGVyc1tpZHNdICE9PSB1bmRlZmluZWQpIHtcbiAgICAgIHJldHVybiB0aGlzLnJlYWRlcnNbaWRzXVxuICAgIH1cbiAgICBjb25zdCByZWFkZXIgPSBuZXcgUmVhZGVySW5zdGFuY2UoXG4gICAgICBpZHMsXG4gICAgICB0aGlzLmNsaWVudCxcbiAgICAgIHRoaXMubm90aWZ5T3JjaGVzdHJhdG9yLFxuICAgICAgdGhpcy5sb2dnZXIsXG4gICAgKVxuICAgIHRoaXMucmVhZGVyc1tpZHNdID0gcmVhZGVyXG4gICAgcmV0dXJuIHJlYWRlclxuICB9XG5cbiAgYXN5bmMgaGFuZGxlT3JjaE1lc3NhZ2UobXNnOiBUb1J1bm5lcikge1xuICAgIGlmIChtc2cubXNnKSB7XG4gICAgICB0aGlzLmhhbmRsZU1zZyhtc2cubXNnKVxuICAgIH1cblxuICAgIGlmIChtc2cuc3RyZWFtTXNnKSB7XG4gICAgICBhd2FpdCB0aGlzLmhhbmRsZVN0cmVhbU1zZyhtc2cuc3RyZWFtTXNnKVxuICAgIH1cblxuICAgIGlmIChtc2cuY2xvc2UpIHtcbiAgICAgIGF3YWl0IHRoaXMuaGFuZGxlQ2xvc2UobXNnLmNsb3NlKVxuICAgIH1cblxuICAgIGlmIChtc2cucGlwZWxpbmUpIHtcbiAgICAgIHRoaXMuaGFuZGxlUGlwZWxpbmUobXNnLnBpcGVsaW5lKVxuICAgIH1cblxuICAgIGlmIChtc2cucHJvY2Vzc2VkKSB7XG4gICAgICB0aGlzLmhhbmRsZVByb2Nlc3NlZChtc2cucHJvY2Vzc2VkKVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgaGFuZGxlQ2xvc2UoY2xvc2U6IENsb3NlKSB7XG4gICAgY29uc3QgdXJpID0gY2xvc2UuY2hhbm5lbFxuICAgIGNvbnN0IHIgPSB0aGlzLnJlYWRlcnNbdXJpXVxuXG4gICAgbGV0IGNsb3NlZCA9IGZhbHNlXG4gICAgaWYgKHIpIHtcbiAgICAgIHIuY2xvc2UoKVxuICAgICAgY2xvc2VkID0gdHJ1ZVxuICAgIH1cbiAgICBjb25zdCB3ID0gdGhpcy53cml0ZXJzW3VyaV1cbiAgICBpZiAodykge1xuICAgICAgY2xvc2VkID0gdHJ1ZVxuICAgICAgYXdhaXQgdy5jbG9zZSh0cnVlKVxuICAgIH1cblxuICAgIGlmICghY2xvc2VkKSB7XG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcihcbiAgICAgICAgYFJlY2VpdmVkIGEgY2xvc2UgZXZlbnQgZm9yIGNoYW5uZWwgJHt1cml9LCBidXQgbmVpdGhlciByZWFkZXIgbm9yIHdyaXRlciBpcyBwcmVzZW50LmAsXG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVQaXBlbGluZShwaXBlbGluZTogc3RyaW5nKSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHF1YWRzID0gbmV3IFBhcnNlcigpLnBhcnNlKHBpcGVsaW5lKVxuICAgICAgdGhpcy5zaGFwZXMgPSBleHRyYWN0U2hhcGVzKFxuICAgICAgICBxdWFkcyxcbiAgICAgICAge1xuICAgICAgICAgIFtSREZDLlJlYWRlcl06ICh4OiBDb250KSA9PiB0aGlzLmNyZWF0ZVJlYWRlcih4LmlkKSxcbiAgICAgICAgICBbUkRGQy5Xcml0ZXJdOiAoeDogQ29udCkgPT4gdGhpcy5jcmVhdGVXcml0ZXIoeC5pZCksXG4gICAgICAgIH0sXG4gICAgICAgIHtcbiAgICAgICAgICBbUkRGQy5SZWFkZXJdOiBlbXB0eTxDb250PigpLFxuICAgICAgICAgIFtSREZDLldyaXRlcl06IGVtcHR5PENvbnQ+KCksXG4gICAgICAgIH0sXG4gICAgICApXG4gICAgICB0aGlzLnF1YWRzID0gcXVhZHNcbiAgICB9IGNhdGNoIChleDogdW5rbm93bikge1xuICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoJ1BpcGVsaW5lIGZhaWxlZDogJyArIEpTT04uc3RyaW5naWZ5KGV4KSlcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZU1zZyhtc2c6IFJlY2VpdmluZ01lc3NhZ2UpIHtcbiAgICB0aGlzLmxvZ2dlci5kZWJ1ZygnSGFuZGxpbmcgZGF0YSBtc2cgZm9yICcgKyBtc2cuY2hhbm5lbClcbiAgICBjb25zdCByID0gdGhpcy5yZWFkZXJzW21zZy5jaGFubmVsXVxuXG4gICAgaWYgKHIpIHtcbiAgICAgIHIuaGFuZGxlTXNnKG1zZylcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXG4gICAgICAgIGBSZWNlaXZlZCBtZXNzYWdlIGZvciBjaGFubmVsICR7bXNnLmNoYW5uZWx9LCBidXQgbm8gcmVhZGVyIHdhcyBwcmVzZW50LmAsXG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVTdHJlYW1Nc2coc3RyZWFtTXNnOiBSZWNlaXZpbmdTdHJlYW1NZXNzYWdlKSB7XG4gICAgY29uc3QgciA9IHRoaXMucmVhZGVyc1tzdHJlYW1Nc2cuY2hhbm5lbF1cblxuICAgIGlmIChyKSB7XG4gICAgICBhd2FpdCByLmhhbmRsZVN0cmVhbWluZ01lc3NhZ2Uoc3RyZWFtTXNnKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcihcbiAgICAgICAgYFJlY2VpdmVkIHN0cmVhbSBtZXNzYWdlIGZvciBjaGFubmVsICR7c3RyZWFtTXNnLmNoYW5uZWx9LCBidXQgbm8gcmVhZGVyIHdhcyBwcmVzZW50LmAsXG4gICAgICApXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBoYW5kbGVQcm9jZXNzZWQocHJvY2Vzc2VkOiBMb2NhbEFjaykge1xuICAgIGNvbnN0IHdyaXRlciA9IHRoaXMud3JpdGVyc1twcm9jZXNzZWQuY2hhbm5lbF1cbiAgICBpZiAod3JpdGVyKSB7XG4gICAgICB3cml0ZXIuaGFuZGxlZCgpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFxuICAgICAgICBgUmVjZWl2ZWQgcHJvY2Vzc2VkIG1lc3NhZ2UgZm9yIGNoYW5uZWwgJHtwcm9jZXNzZWQuY2hhbm5lbH0sIGJ1dCBubyB3cml0ZXIgd2FzIHByZXNlbnQuYCxcbiAgICAgIClcbiAgICB9XG4gIH1cbn1cbiJdfQ==
|
|
165
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVubmVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL3J1bm5lci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFVQSxPQUFPLEVBQVUsY0FBYyxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQ2pELE9BQU8sRUFBVSxjQUFjLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFFakQsT0FBTyxFQUFFLFlBQVksRUFBVSxNQUFNLFNBQVMsQ0FBQTtBQUU5QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQ3ZDLE9BQU8sRUFBUSxLQUFLLEVBQUUsYUFBYSxFQUFVLE1BQU0sVUFBVSxDQUFBO0FBQzdELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLE1BQU0sSUFBSSxDQUFBO0FBQ3RDLE9BQU8sRUFBRSxlQUFlLEVBQUUseUJBQXlCLEVBQUUsR0FBRyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRy9FLE1BQU0sSUFBSSxHQUFHLHlCQUF5QixDQUNwQyxxQ0FBcUMsRUFDckMsS0FBSyxFQUNMLE1BQU0sRUFDTixVQUFVLEVBQ1YsU0FBUyxFQUNULGNBQWMsRUFDZCxhQUFhLEVBQ2IsUUFBUSxFQUNSLFlBQVksRUFDWixVQUFVLENBQ1gsQ0FBQTtBQUVELE1BQU0sSUFBSSxHQUFHLGVBQWUsQ0FDMUIsK0JBQStCLEVBQy9CLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQ1IsUUFBUSxFQUNSLFFBQVEsQ0FDVCxDQUFBO0FBV0QsTUFBTSxPQUFPLE1BQU07SUFDQSxPQUFPLEdBQXNDLEVBQUUsQ0FBQTtJQUMvQyxPQUFPLEdBQXNDLEVBQUUsQ0FBQTtJQUMvQyxNQUFNLENBQWM7SUFDcEIsa0JBQWtCLENBQVU7SUFDNUIsTUFBTSxDQUFRO0lBQ3ZCLE1BQU0sQ0FBUTtJQUNkLEtBQUssR0FBVyxFQUFFLENBQUE7SUFFVCxHQUFHLENBQVE7SUFFWCxVQUFVLEdBQW9CLEVBQUUsQ0FBQTtJQUNoQyxtQkFBbUIsR0FBdUIs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LENBQUMsQ0FBQTtRQUNqQyxDQUFDO2FBQU0sQ0FBQztZQUNOLElBQUksQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUNmLDBDQUEwQyxTQUFTLENBQUMsT0FBTyw4QkFBOEIsQ0FDMUYsQ0FBQTtRQUNILENBQUM7SUFDSCxDQUFDO0NBQ0YiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICBDbG9zZSxcbiAgRnJvbVJ1bm5lcixcbiAgUHJvY2Vzc29yLFxuICBSdW5uZXJDbGllbnQsXG4gIFRvUnVubmVyLFxuICBMb2NhbEFjayxcbiAgUmVjZWl2aW5nTWVzc2FnZSxcbiAgUmVjZWl2aW5nU3RyZWFtTWVzc2FnZSxcbn0gZnJvbSAnQHJkZmMvcHJvdG8nXG5pbXBvcnQgeyBSZWFkZXIsIFJlYWRlckluc3RhbmNlIH0gZnJvbSAnLi9yZWFkZXInXG5pbXBvcnQgeyBXcml0ZXIsIFdyaXRlckluc3RhbmNlIH0gZnJvbSAnLi93cml0ZXInXG5pbXBvcnQgeyBQcm9jZXNzb3IgYXMgUHJvYyB9IGZyb20gJy4vcHJvY2Vzc29yJ1xuaW1wb3J0IHsgY3JlYXRlTG9nZ2VyLCBMb2dnZXIgfSBmcm9tICd3aW5zdG9uJ1xuXG5pbXBvcnQgeyBScGNUcmFuc3BvcnQgfSBmcm9tICcuL2xvZ2dlcidcbmltcG9ydCB7IENvbnQsIGVtcHR5LCBleHRyYWN0U2hhcGVzLCBTaGFwZXMgfSBmcm9tICdyZGYtbGVucydcbmltcG9ydCB7IE5hbWVkTm9kZSwgUGFyc2VyIH0gZnJvbSAnbjMnXG5pbXBvcnQgeyBjcmVhdGVOYW1lc3BhY2UsIGNyZWF0ZVVyaUFuZFRlcm1OYW1lc3BhY2UsIFJERiB9IGZyb20gJ0B0cmVlY2cvdHlwZXMnXG5pbXBvcnQgeyBRdWFkLCBUZXJtIH0gZnJvbSAnQHJkZmpzL3R5cGVzJ1xuXG5jb25zdCBSREZMID0gY3JlYXRlVXJpQW5kVGVybU5hbWVzcGFjZShcbiAgJ2h0dHBzOi8vdzNpZC5vcmcvcmRmLWxlbnMvb250b2xvZ3kjJyxcbiAgJ0NCRCcsXG4gICdQYXRoJyxcbiAgJ1BhdGhMZW5zJyxcbiAgJ0NvbnRleHQnLFxuICAnVHlwZWRFeHRyYWN0JyxcbiAgJ0VudlZhcmlhYmxlJyxcbiAgJ2VudktleScsXG4gICdlbnZEZWZhdWx0JyxcbiAgJ2RhdGF0eXBlJyxcbilcblxuY29uc3QgUkRGQyA9IGNyZWF0ZU5hbWVzcGFjZShcbiAgJ2h0dHBzOi8vdzNpZC5vcmcvcmRmLWNvbm5lY3QjJyxcbiAgKHgpID0+IHgsXG4gICdSZWFkZXInLFxuICAnV3JpdGVyJyxcbilcblxuZXhwb3J0IHR5cGUgV3JpdGFibGUgPSAobXNnOiBGcm9tUnVubmVyKSA9PiBQcm9taXNlPHVua25vd24+XG5cbnR5cGUgUHJvY2Vzc29yQ29uZmlnID0ge1xuICBsb2NhdGlvbjogc3RyaW5nXG4gIGZpbGU6IHN0cmluZ1xuICBjbGF6ej86IHN0cmluZ1xufVxuXG5leHBvcnQgdHlwZSBGdWxsUHJvYzxDPiA9IEMgZXh0ZW5kcyBQcm9jPGluZmVyIFQ+ID8gVCAmIEMgOiBuZXZlclxuZXhwb3J0IGNsYXNzIFJ1bm5lciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgcmVhZGVyczogeyBbdXJpOiBzdHJpbmddOiBSZWFkZXJJbnN0YW5jZSB9ID0ge31cbiAgcHJpdmF0ZSByZWFkb25seSB3cml0ZXJzOiB7IFt1cmk6IHN0cmluZ106IFdyaXRlckluc3RhbmNlIH0gPSB7fVxuICBwcml2YXRlIHJlYWRvbmx5IGNsaWVudDogUnVubmVyQ2xpZW50XG4gIHByaXZhdGUgcmVhZG9ubHkgbm90aWZ5T3JjaGVzdHJhdG9yOiBXcml0YWJsZVxuICBwcml2YXRlIHJlYWRvbmx5IGxvZ2dlcjogTG9nZ2VyXG4gIHByaXZhdGUgc2hhcGVzOiBTaGFwZXNcbiAgcHJpdmF0ZSBxdWFkczogUXVhZFtdID0gW11cblxuICBwcml2YXRlIHJlYWRvbmx5IHVyaTogc3RyaW5nXG5cbiAgcHJpdmF0ZSByZWFkb25seSBwcm9jZXNzb3JzOiBQcm9jPHVua25vd24+W10gPSBbXVxuICBwcml2YXRlIHJlYWRvbmx5IHByb2Nlc3NvclRyYW5zZm9ybXM6IFByb21pc2U8dW5rbm93bj5bXSA9IFtdXG5cbiAgY29uc3RydWN0b3IoXG4gICAgY2xpZW50OiBSdW5uZXJDbGllbnQsXG4gICAgbm90aWZ5T3JjaGVzdHJhdG9yOiBXcml0YWJsZSxcbiAgICB1cmk6IHN0cmluZyxcbiAgICBsb2dnZXI6IExvZ2dlcixcbiAgKSB7XG4gICAgdGhpcy5jbGllbnQgPSBjbGllbnRcbiAgICB0aGlzLm5vdGlmeU9yY2hlc3RyYXRvciA9IG5vdGlmeU9yY2hlc3RyYXRvclxuICAgIHRoaXMudXJpID0gdXJpXG4gICAgdGhpcy5sb2dnZXIgPSBsb2dnZXJcbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZVByb2Nlc3NvcjxQIGV4dGVuZHMgUHJvYzx1bmtub3duPj4oXG4gICAgcHJvYzogUHJvY2Vzc29yLFxuICApOiBQcm9taXNlPEZ1bGxQcm9jPFA+PiB7XG4gICAgY29uc3QgcHJvY0xvZ2dlciA9IGNyZWF0ZUxvZ2dlcih7XG4gICAgICB0cmFuc3BvcnRzOiBbXG4gICAgICAgIG5ldyBScGNUcmFuc3BvcnQoe1xuICAgICAgICAgIGVudGl0aWVzOiBbcHJvYy51cmksIHRoaXMudXJpXSxcbiAgICAgICAgICBzdHJlYW06IHRoaXMuY2xpZW50LmxvZ1N0cmVhbSgoKSA9PiB7fSksXG4gICAgICAgIH0pLFxuICAgICAgXSxcbiAgICB9KVxuXG4gICAgY29uc3QgdHkgPSB0aGlzLnF1YWRzXG4gICAgICAuZmlsdGVyKFxuICAgICAgICAoeCkgPT5cbiAgICAgICAgICB4LnN1YmplY3QudmFsdWUgPT09IHByb2MudXJpICYmIHgucHJlZGljYXRlLmVxdWFscyhSREYudGVybXMudHlwZSksXG4gICAgICApXG4gICAgICAubWFwKCh4KSA9PiB4Lm9iamVjdC52YWx1ZSlcblxuICAgIHRoaXMubG9nZ2VyLmluZm8oXG4gICAgICBgUGFyc2luZyBwcm9jZXNzb3IgJyR7cHJvYy51cml9JyBvZiB0eXBlKHMpIFske3R5LmpvaW4oJywgJyl9XWAsXG4gICAgKVxuICAgIGNvbnN0IGFyZ3MgPSB0aGlzLnNoYXBlcy5sZW5zZXNbUkRGTC5UeXBlZEV4dHJhY3RdLmV4ZWN1dGUoe1xuICAgICAgaWQ6IG5ldyBOYW1lZE5vZGUocHJvYy51cmkpLFxuICAgICAgcXVhZHM6IHRoaXMucXVhZHMsXG4gICAgfSlcblxuICAgIGNvbnN0IGNvbmZpZzogUHJvY2Vzc29yQ29uZmlnID0gSlNPTi5wYXJzZShwcm9jLmNvbmZpZylcbiAgICBjb25zdCBqc1Byb2dyYW0gPSBhd2FpdCBpbXBvcnQoY29uZmlnLmZpbGUpXG4gICAgY29uc3QgY2xhenogPSBqc1Byb2dyYW1bY29uZmlnLmNsYXp6IHx8ICdkZWZhdWx0J11cbiAgICBjb25zdCBpbnN0YW5jZTogUHJvYzx1bmtub3duPiA9IG5ldyBjbGF6eihhcmdzLCBwcm9jTG9nZ2VyKVxuXG4gICAgcmV0dXJuIDxGdWxsUHJvYzxQPj5pbnN0YW5jZVxuICB9XG5cbiAgYXN5bmMgYWRkUHJvY2Vzc29yPFAgZXh0ZW5kcyBQcm9jPHVua25vd24+PihcbiAgICBwcm9jOiBQcm9jZXNzb3IsXG4gICk6IFByb21pc2U8RnVsbFByb2M8UD4+IHtcbiAgICBjb25zdCBpbnN0YW5jZSA9IGF3YWl0IHRoaXMuY3JlYXRlUHJvY2Vzc29yPFA+KHByb2MpXG5cbiAgICBhd2FpdCBpbnN0YW5jZS5pbml0KClcblxuICAgIHRoaXMubG9nZ2VyLmluZm8oYEluaXRpYXRlZCBwcm9jZXNzb3IgJyR7cHJvYy51cml9J2ApXG5cbiAgICB0aGlzLnByb2Nlc3NvcnMucHVzaChpbnN0YW5jZSlcbiAgICB0aGlzLnByb2Nlc3NvclRyYW5zZm9ybXMucHVzaChpbnN0YW5jZS50cmFuc2Zvcm0oKSlcblxuICAgIGF3YWl0IHRoaXMubm90aWZ5T3JjaGVzdHJhdG9yKHsgaW5pdGlhbGl6ZWQ6IHsgdXJpOiBwcm9jLnVyaSB9IH0pXG5cbiAgICByZXR1cm4gPEZ1bGxQcm9jPFA+Pmluc3RhbmNlXG4gIH1cblxuICBhc3luYyBzdGFydCgpIHtcbiAgICB0cnkge1xuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwodGhpcy5wcm9jZXNzb3JzLm1hcCgoeCkgPT4geC5wcm9kdWNlKCkpKVxuICAgICAgYXdhaXQgUHJvbWlzZS5hbGwodGhpcy5wcm9jZXNzb3JUcmFuc2Zvcm1zKVxuICAgIH0gY2F0Y2ggKGV4OiB1bmtub3duKSB7XG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcignU3RhcnQgZmFpbGVkOiAnICsgSlNPTi5zdHJpbmdpZnkoZXgpKVxuICAgIH1cbiAgfVxuXG4gIGNyZWF0ZVdyaXRlcih1cmk6IFRlcm0pOiBXcml0ZXIge1xuICAgIGNvbnN0IGlkID0gdXJpLnZhbHVlXG5cbiAgICBpZiAodGhpcy53cml0ZXJzW2lkXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gdGhpcy53cml0ZXJzW2lkXVxuICAgIH1cbiAgICBjb25zdCB3cml0ZXIgPSBuZXcgV3JpdGVySW5zdGFuY2UoXG4gICAgICBpZCxcbiAgICAgIHRoaXMuY2xpZW50LFxuICAgICAgdGhpcy5ub3RpZnlPcmNoZXN0cmF0b3IsXG4gICAgICB0aGlzLnVyaSxcbiAgICAgIHRoaXMubG9nZ2VyLFxuICAgIClcbiAgICB0aGlzLndyaXRlcnNbaWRdID0gd3JpdGVyXG4gICAgcmV0dXJuIHdyaXRlclxuICB9XG5cbiAgY3JlYXRlUmVhZGVyKHVyaTogVGVybSk6IFJlYWRlciB7XG4gICAgY29uc3QgaWRzID0gdXJpLnZhbHVlXG5cbiAgICBpZiAodGhpcy5yZWFkZXJzW2lkc10gIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIHRoaXMucmVhZGVyc1tpZHNdXG4gICAgfVxuICAgIGNvbnN0IHJlYWRlciA9IG5ldyBSZWFkZXJJbnN0YW5jZShcbiAgICAgIGlkcyxcbiAgICAgIHRoaXMuY2xpZW50LFxuICAgICAgdGhpcy5ub3RpZnlPcmNoZXN0cmF0b3IsXG4gICAgICB0aGlzLmxvZ2dlcixcbiAgICApXG4gICAgdGhpcy5yZWFkZXJzW2lkc10gPSByZWFkZXJcbiAgICByZXR1cm4gcmVhZGVyXG4gIH1cblxuICBhc3luYyBoYW5kbGVPcmNoTWVzc2FnZShtc2c6IFRvUnVubmVyKSB7XG4gICAgaWYgKG1zZy5tc2cpIHtcbiAgICAgIHRoaXMuaGFuZGxlTXNnKG1zZy5tc2cpXG4gICAgfVxuXG4gICAgaWYgKG1zZy5zdHJlYW1Nc2cpIHtcbiAgICAgIGF3YWl0IHRoaXMuaGFuZGxlU3RyZWFtTXNnKG1zZy5zdHJlYW1Nc2cpXG4gICAgfVxuXG4gICAgaWYgKG1zZy5jbG9zZSkge1xuICAgICAgYXdhaXQgdGhpcy5oYW5kbGVDbG9zZShtc2cuY2xvc2UpXG4gICAgfVxuXG4gICAgaWYgKG1zZy5waXBlbGluZSkge1xuICAgICAgdGhpcy5oYW5kbGVQaXBlbGluZShtc2cucGlwZWxpbmUpXG4gICAgfVxuXG4gICAgaWYgKG1zZy5wcm9jZXNzZWQpIHtcbiAgICAgIHRoaXMuaGFuZGxlUHJvY2Vzc2VkKG1zZy5wcm9jZXNzZWQpXG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBhc3luYyBoYW5kbGVDbG9zZShjbG9zZTogQ2xvc2UpIHtcbiAgICBjb25zdCB1cmkgPSBjbG9zZS5jaGFubmVsXG4gICAgY29uc3QgciA9IHRoaXMucmVhZGVyc1t1cmldXG5cbiAgICBsZXQgY2xvc2VkID0gZmFsc2VcbiAgICBpZiAocikge1xuICAgICAgci5jbG9zZSgpXG4gICAgICBjbG9zZWQgPSB0cnVlXG4gICAgfVxuICAgIGNvbnN0IHcgPSB0aGlzLndyaXRlcnNbdXJpXVxuICAgIGlmICh3KSB7XG4gICAgICBjbG9zZWQgPSB0cnVlXG4gICAgICBhd2FpdCB3LmNsb3NlKHRydWUpXG4gICAgfVxuXG4gICAgaWYgKCFjbG9zZWQpIHtcbiAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFxuICAgICAgICBgUmVjZWl2ZWQgYSBjbG9zZSBldmVudCBmb3IgY2hhbm5lbCAke3VyaX0sIGJ1dCBuZWl0aGVyIHJlYWRlciBub3Igd3JpdGVyIGlzIHByZXNlbnQuYCxcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVBpcGVsaW5lKHBpcGVsaW5lOiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgcXVhZHMgPSBuZXcgUGFyc2VyKCkucGFyc2UocGlwZWxpbmUpXG4gICAgICB0aGlzLnNoYXBlcyA9IGV4dHJhY3RTaGFwZXMoXG4gICAgICAgIHF1YWRzLFxuICAgICAgICB7XG4gICAgICAgICAgW1JERkMuUmVhZGVyXTogKHg6IENvbnQpID0+IHRoaXMuY3JlYXRlUmVhZGVyKHguaWQpLFxuICAgICAgICAgIFtSREZDLldyaXRlcl06ICh4OiBDb250KSA9PiB0aGlzLmNyZWF0ZVdyaXRlcih4LmlkKSxcbiAgICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAgIFtSREZDLlJlYWRlcl06IGVtcHR5PENvbnQ+KCksXG4gICAgICAgICAgW1JERkMuV3JpdGVyXTogZW1wdHk8Q29udD4oKSxcbiAgICAgICAgfSxcbiAgICAgIClcbiAgICAgIHRoaXMucXVhZHMgPSBxdWFkc1xuICAgIH0gY2F0Y2ggKGV4OiB1bmtub3duKSB7XG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcignUGlwZWxpbmUgZmFpbGVkOiAnICsgSlNPTi5zdHJpbmdpZnkoZXgpKVxuICAgIH1cbiAgfVxuXG4gIHByaXZhdGUgaGFuZGxlTXNnKG1zZzogUmVjZWl2aW5nTWVzc2FnZSkge1xuICAgIHRoaXMubG9nZ2VyLmRlYnVnKCdIYW5kbGluZyBkYXRhIG1zZyBmb3IgJyArIG1zZy5jaGFubmVsKVxuICAgIGNvbnN0IHIgPSB0aGlzLnJlYWRlcnNbbXNnLmNoYW5uZWxdXG5cbiAgICBpZiAocikge1xuICAgICAgci5oYW5kbGVNc2cobXNnKVxuICAgIH0gZWxzZSB7XG4gICAgICB0aGlzLmxvZ2dlci5lcnJvcihcbiAgICAgICAgYFJlY2VpdmVkIG1lc3NhZ2UgZm9yIGNoYW5uZWwgJHttc2cuY2hhbm5lbH0sIGJ1dCBubyByZWFkZXIgd2FzIHByZXNlbnQuYCxcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIGhhbmRsZVN0cmVhbU1zZyhzdHJlYW1Nc2c6IFJlY2VpdmluZ1N0cmVhbU1lc3NhZ2UpIHtcbiAgICBjb25zdCByID0gdGhpcy5yZWFkZXJzW3N0cmVhbU1zZy5jaGFubmVsXVxuXG4gICAgaWYgKHIpIHtcbiAgICAgIGF3YWl0IHIuaGFuZGxlU3RyZWFtaW5nTWVzc2FnZShzdHJlYW1Nc2cpXG4gICAgfSBlbHNlIHtcbiAgICAgIHRoaXMubG9nZ2VyLmVycm9yKFxuICAgICAgICBgUmVjZWl2ZWQgc3RyZWFtIG1lc3NhZ2UgZm9yIGNoYW5uZWwgJHtzdHJlYW1Nc2cuY2hhbm5lbH0sIGJ1dCBubyByZWFkZXIgd2FzIHByZXNlbnQuYCxcbiAgICAgIClcbiAgICB9XG4gIH1cblxuICBwcml2YXRlIGhhbmRsZVByb2Nlc3NlZChwcm9jZXNzZWQ6IExvY2FsQWNrKSB7XG4gICAgY29uc3Qgd3JpdGVyID0gdGhpcy53cml0ZXJzW3Byb2Nlc3NlZC5jaGFubmVsXVxuICAgIGlmICh3cml0ZXIpIHtcbiAgICAgIHdyaXRlci5oYW5kbGVkKHByb2Nlc3NlZC5lcnJvcilcbiAgICB9IGVsc2Uge1xuICAgICAgdGhpcy5sb2dnZXIuZXJyb3IoXG4gICAgICAgIGBSZWNlaXZlZCBwcm9jZXNzZWQgbWVzc2FnZSBmb3IgY2hhbm5lbCAke3Byb2Nlc3NlZC5jaGFubmVsfSwgYnV0IG5vIHdyaXRlciB3YXMgcHJlc2VudC5gLFxuICAgICAgKVxuICAgIH1cbiAgfVxufVxuIl19
|
package/lib/testUtils/index.js
CHANGED
|
@@ -35,9 +35,13 @@ export class OrchestratorMock {
|
|
|
35
35
|
streamMsgCount = 0;
|
|
36
36
|
connect() {
|
|
37
37
|
const connectStream = new MockClientDuplexStream();
|
|
38
|
-
connectStream.register((msg) => msg.processed, ({ channel, globalSequenceNumber }, send) => {
|
|
38
|
+
connectStream.register((msg) => msg.processed, ({ channel, globalSequenceNumber, error }, send) => {
|
|
39
39
|
send({
|
|
40
|
-
processed: {
|
|
40
|
+
processed: {
|
|
41
|
+
channel,
|
|
42
|
+
localSequenceNumber: globalSequenceNumber,
|
|
43
|
+
error,
|
|
44
|
+
},
|
|
41
45
|
});
|
|
42
46
|
});
|
|
43
47
|
connectStream.register((msg) => msg.msg, ({ localSequenceNumber, data, channel }, send) => {
|
|
@@ -239,4 +243,4 @@ export async function getProc(config, ty, runner, configLocation, uri = 'http://
|
|
|
239
243
|
});
|
|
240
244
|
return proc;
|
|
241
245
|
}
|
|
242
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdFV0aWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDeEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLFFBQVEsRUFBRSxNQUFNLElBQUksQ0FBQTtBQUMxRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3RDLE9BQU8sT0FBTyxFQUFFLEVBQUUsWUFBWSxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBRS9DLE9BQU8sRUFBWSxNQUFNLEVBQVksTUFBTSxXQUFXLENBQUE7QUFFdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBT25ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBSWhDLE1BQU0sVUFBVSxPQUFPLENBQUMsTUFBYyxFQUFFLElBQVk7SUFDbEQsTUFBTSxDQUFDLEdBQUcsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDN0IsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNyQyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBRXJDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUE7QUFDekIsQ0FBQztBQUVELE1BQU0sT0FBTyxhQUFhO0lBQ3hCLElBQUksR0FBZ0IsRUFBRSxDQUFBO0lBRUwsU0FBUyxDQUFnQztJQUUxRCxZQUFZLFNBQXlDO1FBQ25ELElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFBO0lBQzVCLENBQUM7SUFFRCxpQkFBaUI7UUFJZixNQUFNLGFBQWEsR0FBRyxJ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QixHQUFHLEdBQUcsaUNBQWlDO0lBRXZDLE1BQU0sV0FBVyxHQUFHLE1BQU0sVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFBO0lBQ3BELE1BQU0sVUFBVSxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDcEUsRUFBRSxFQUFFLElBQUksU0FBUyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDNUIsS0FBSyxFQUFFLFdBQVc7S0FDbkIsQ0FBQyxDQUFBO0lBRUYsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUE7SUFDL0MsTUFBTSxNQUFNLENBQUMsaUJBQWlCLENBQUM7UUFDN0IsUUFBUSxFQUFFLElBQUksUUFBUSxFQUFFLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQztLQUNwRCxDQUFDLENBQUE7SUFFRixNQUFNLElBQUksR0FBRyxNQUFNLE1BQU0sQ0FBQyxZQUFZLENBQUk7UUFDeEMsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDO1FBQ2xDLFNBQVMsRUFBRSxFQUFFO1FBQ2IsR0FBRztLQUNKLENBQUMsQ0FBQTtJQUVGLE9BQU8sSUFBSSxDQUFBO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERhdGFDaHVuayxcbiAgRnJvbVJ1bm5lcixcbiAgTG9nTWVzc2FnZSxcbiAgUHJvY2Vzc29yIGFzIFByb2NDb25maWcsXG4gIFRvUnVubmVyLFxufSBmcm9tICdAcmRmYy9wcm90bydcbmltcG9ydCB7IGV4dHJhY3RTaGFwZXMgfSBmcm9tICdyZGYtbGVucydcbmltcG9ydCB7IE5hbWVkTm9kZSwgUGFyc2VyLCBXcml0ZXIgYXMgTjNXcml0ZXIgfSBmcm9tICduMydcbmltcG9ydCB7IHJlYWRGaWxlIH0gZnJvbSAnZnMvcHJvbWlzZXMnXG5pbXBvcnQgd2luc3RvbiwgeyBjcmVhdGVMb2dnZXIgfSBmcm9tICd3aW5zdG9uJ1xuaW1wb3J0IHsgUHJvY2Vzc29yIH0gZnJvbSAnLi4vcHJvY2Vzc29yJ1xuaW1wb3J0IHsgRnVsbFByb2MsIFJ1bm5lciwgV3JpdGFibGUgfSBmcm9tICcuLi9ydW5uZXInXG5pbXBvcnQgeyBRdWFkIH0gZnJvbSAnQHJkZmpzL3R5cGVzJ1xuaW1wb3J0IHsgY3JlYXRlVGVybU5hbWVzcGFjZSB9IGZyb20gJ0B0cmVlY2cvdHlwZXMnXG5pbXBvcnQge1xuICBSZWNlaXZpbmdTdHJlYW1Db250cm9sLFxuICBTZW5kaW5nU3RyZWFtQ29udHJvbCxcbiAgU3RyZWFtQ2h1bmssXG4gIFN0cmVhbUlkZW50aWZ5LFxufSBmcm9tICdAcmRmYy9wcm90by9saWIvZ2VuZXJhdGVkL2NvbW1vbidcbmltcG9ydCB7IE1vY2tDbGllbnREdXBsZXhTdHJlYW0gfSBmcm9tICcuL2R1cGxleCdcbmltcG9ydCB7IHByb21pc2lmeSB9IGZyb20gJ3V0aWwnXG5pbXBvcnQgeyBSZWFkZXIgfSBmcm9tICcuLi9yZWFkZXInXG5pbXBvcnQgeyBXcml0ZXIgfSBmcm9tICcuLi93cml0ZXInXG5cbmV4cG9ydCBmdW5jdGlvbiBjaGFubmVsKHJ1bm5lcjogUnVubmVyLCBuYW1lOiBzdHJpbmcpOiBbV3JpdGVyLCBSZWFkZXJdIHtcbiAgY29uc3QgbiA9IG5ldyBOYW1lZE5vZGUobmFtZSlcbiAgY29uc3QgcmVhZGVyID0gcnVubmVyLmNyZWF0ZVJlYWRlcihuKVxuICBjb25zdCB3cml0ZXIgPSBydW5uZXIuY3JlYXRlV3JpdGVyKG4pXG5cbiAgcmV0dXJuIFt3cml0ZXIsIHJlYWRlcl1cbn1cblxuZXhwb3J0IGNsYXNzIFN0cmVhbU1zZ01vY2sge1xuICBkYXRhOiBEYXRhQ2h1bmtbXSA9IFtdXG5cbiAgcHJpdmF0ZSByZWFkb25seSByZXNvbHZlSWQ6IChpZDogU3RyZWFtSWRlbnRpZnkpID0+IG51bWJlclxuXG4gIGNvbnN0cnVjdG9yKHJlc29sdmVJZDogKGlkOiBTdHJlYW1JZGVudGlmeSkgPT4gbnVtYmVyKSB7XG4gICAgdGhpcy5yZXNvbHZlSWQgPSByZXNvbHZlSWRcbiAgfVxuXG4gIHNlbmRTdHJlYW1NZXNzYWdlKCk6IE1vY2tDbGllbnREdXBsZXhTdHJlYW08XG4gICAgU3RyZWFtQ2h1bmssXG4gICAgUmVjZWl2aW5nU3RyZWFtQ29udHJvbFxuICA+IHtcbiAgICBjb25zdCBzZW5kaW5nU3RyZWFtID0gbmV3IE1vY2tDbGllbnREdXBsZXhTdHJlYW08XG4gICAgICBTdHJlYW1DaHVuayxcbiAgICAgIFJlY2VpdmluZ1N0cmVhbUNvbnRyb2xcbiAgICA+KClcblxuICAgIGxldCBhdCA9IDBcbiAgICBzZW5kaW5nU3RyZWFtLnJlZ2lzdGVyKFxuICAgICAgKHgpID0+IHguZGF0YSxcbiAgICAgIChkLCBzZW5kKSA9PiB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gc2VuZCh7IHN0cmVhbVNlcXVlbmNlTnVtYmVyOiArK2F0IH0pLCAyMClcbiAgICAgICAgdGhpcy5kYXRhLnB1c2goZClcbiAgICAgIH0sXG4gICAgKVxuICAgIHNlbmRpbmdTdHJlYW0ucmVnaXN0ZXIoXG4gICAgICAoeCkgPT4geC5pZCxcbiAgICAgIChkLCBzZW5kKSA9PiBzZW5kKHsgc3RyZWFtU2VxdWVuY2VOdW1iZXI6IHRoaXMucmVzb2x2ZUlkKGQpIH0pLFxuICAgIClcbiAgICByZXR1cm4gc2VuZGluZ1N0cmVhbVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPcmNoZXN0cmF0b3JNb2NrIHtcbiAgY29ubmVjdFN0cmVhbTogTW9ja0NsaWVudER1cGxleFN0cmVhbTxGcm9tUnVubmVyLCBUb1J1bm5lcj5cblxuICBzdHJlYW1Nc2dzOiB7XG4gICAgW2lkOiBzdHJpbmddOiB7XG4gICAgICB0b1Byb2R1Y2luZ1N0cmVhbTogKGlkOiBSZWNlaXZpbmdTdHJlYW1Db250cm9sKSA9PiB2b2lkXG4gICAgICByZWNlaXZpbmdTdHJlYW0/OiBNb2NrQ2xpZW50RHVwbGV4U3RyZWFtPFNlbmRpbmdTdHJlYW1Db250cm9sLCBEYXRhQ2h1bms+XG4gICAgfVxuICB9ID0ge31cblxuICBzdHJlYW1Nc2dDb3VudCA9IDBcblxuICBjb25uZWN0KCk6IE1vY2tDbGllbnREdXBsZXhTdHJlYW08RnJvbVJ1bm5lciwgVG9SdW5uZXI+IHtcbiAgICBjb25zdCBjb25uZWN0U3RyZWFtID0gbmV3IE1vY2tDbGllbnREdXBsZXhTdHJlYW08RnJvbVJ1bm5lciwgVG9SdW5uZXI+KClcbiAgICAvLyBBbHdheXMgYm91bmNlIHByb2Nlc3NlZCBtc2dzIGJhY2sgdG8gdGhlIHJ1bm5lclxuICAgIGNvbm5lY3RTdHJlYW0ucmVnaXN0ZXIoXG4gICAgICAobXNnKSA9PiBtc2cucHJvY2Vzc2VkLFxuICAgICAgKHsgY2hhbm5lbCwgZ2xvYmFsU2VxdWVuY2VOdW1iZXIgfSwgc2VuZCkgPT4ge1xuICAgICAgICBzZW5kKHtcbiAgICAgICAgICBwcm9jZXNzZWQ6IHsgY2hhbm5lbCwgbG9jYWxTZXF1ZW5jZU51bWJlcjogZ2xvYmFsU2VxdWVuY2VOdW1iZXIgfSxcbiAgICAgICAgfSlcbiAgICAgIH0sXG4gICAgKVxuXG4gICAgLy8gQWx3YXlzIGJvdW5jZSBkYXRhIG1zZ3MgYmFjayB0byB0aGUgcnVubmVyXG4gICAgY29ubmVjdFN0cmVhbS5yZWdpc3RlcihcbiAgICAgIChtc2cpID0+IG1zZy5tc2csXG4gICAgICAoeyBsb2NhbFNlcXVlbmNlTnVtYmVyLCBkYXRhLCBjaGFubmVsIH0sIHNlbmQpID0+IHtcbiAgICAgICAgc2VuZCh7XG4gICAgICAgICAgbXNnOiB7IGdsb2JhbFNlcXVlbmNlTnVtYmVyOiBsb2NhbFNlcXVlbmNlTnVtYmVyLCBjaGFubmVsLCBkYXRhIH0sXG4gICAgICAgIH0pXG4gICAgICB9LFxuICAgIClcblxuICAgIC8vIEFsd2F5cyBib3VuY2UgY2xvc2UgbXNncyBiYWNrIHRvIHRoZSBydW5uZXJcbiAgICBjb25uZWN0U3RyZWFtLnJlZ2lzdGVyKFxuICAgICAgKG1zZykgPT4gbXNnLmNsb3NlLFxuICAgICAgKGNsb3NlLCBzZW5kKSA9PiB7XG4gICAgICAgIHNlbmQoeyBjbG9zZSB9KVxuICAgICAgfSxcbiAgICApXG5cbiAgICB0aGlzLmNvbm5lY3RTdHJlYW0gPSBjb25uZWN0U3RyZWFtXG4gICAgcmV0dXJuIGNvbm5lY3RTdHJlYW1cbiAgfVxuXG4gIHNlbmRTdHJlYW1NZXNzYWdlKCk6IE1vY2tDbGllbnREdXBsZXhTdHJlYW08XG4gICAgU3RyZWFtQ2h1bmssXG4gICAgUmVjZWl2aW5nU3RyZWFtQ29udHJvbFxuICA+IHtcbiAgICBjb25zdCBvdXQgPSBuZXcgTW9ja0NsaWVudER1cGxleFN0cmVhbTxcbiAgICAgIFN0cmVhbUNodW5rLFxuICAgICAgUmVjZWl2aW5nU3RyZWFtQ29udHJvbFxuICAgID4oKVxuICAgIGNvbnN0IGlkID0gdGhpcy5zdHJlYW1Nc2dDb3VudFxuICAgIHRoaXMuc3RyZWFtTXNnQ291bnQrK1xuXG4gICAgb3V0LnJlZ2lzdGVyT25jZShcbiAgICAgICh4KSA9PiB4LmlkLFxuICAgICAgKHsgY2hhbm5lbCB9LCB0b1Byb2R1Y2luZ1N0cmVhbSkgPT4ge1xuICAgICAgICB0aGlzLnN0cmVhbU1zZ3NbaWRdID0geyB0b1Byb2R1Y2luZ1N0cmVhbSB9XG5cbiAgICAgICAgLy8gTm90aWZ5IHN0cmVhbSBtZXNzYWdlXG4gICAgICAgIHRoaXMuY29ubmVjdFN0cmVhbS5zZW5kKHtcbiAgICAgICAgICBzdHJlYW1Nc2c6IHsgY2hhbm5lbCwgZ2xvYmFsU2VxdWVuY2VOdW1iZXI6IGlkIH0sXG4gICAgICAgIH0pXG4gICAgICB9LFxuICAgIClcblxuICAgIG91dC5yZWdpc3RlcihcbiAgICAgICh4KSA9PiB4LmRhdGEsXG4gICAgICAoZGF0YSkgPT4ge1xuICAgICAgICAvLyBib3VuY2UgZGF0YSB0byByZWNlaXZpbmcgc3RyZWFtXG4gICAgICAgIHRoaXMuc3RyZWFtTXNnc1tpZF0ucmVjZWl2aW5nU3RyZWFtIS5zZW5kKGRhdGEpXG4gICAgICB9LFxuICAgIClcblxuICAgIG91dC5vbignZW5kJywgKCkgPT4ge1xuICAgICAgLy8gZW5kIHJlY2VpdmluZyBzdHJlYW1cbiAgICAgIHRoaXMuc3RyZWFtTXNnc1tpZF0ucmVjZWl2aW5nU3RyZWFtIS5lbmQoKVxuICAgIH0pXG5cbiAgICByZXR1cm4gb3V0XG4gIH1cblxuICByZWNlaXZlU3RyZWFtTWVzc2FnZSgpOiBNb2NrQ2xpZW50RHVwbGV4U3RyZWFtPFxuICAgIFNlbmRpbmdTdHJlYW1Db250cm9sLFxuICAgIERhdGFDaHVua1xuICA+IHtcbiAgICBjb25zdCByZWNlaXZpbmdTdHJlYW0gPSBuZXcgTW9ja0NsaWVudER1cGxleFN0cmVhbTxcbiAgICAgIFNlbmRpbmdTdHJlYW1Db250cm9sLFxuICAgICAgRGF0YUNodW5rXG4gICAgPigpXG4gICAgbGV0IHN0cmVhbUlkID0gMFxuXG4gICAgcmVjZWl2aW5nU3RyZWFtLnJlZ2lzdGVyT25jZShcbiAgICAgICh4KSA9PiB4Lmdsb2JhbFNlcXVlbmNlTnVtYmVyLFxuICAgICAgKGlkKSA9PiB7XG4gICAgICAgIHN0cmVhbUlkID0gaWRcbiAgICAgICAgdGhpcy5zdHJlYW1Nc2dzW2lkXS5yZWNlaXZpbmdTdHJlYW0gPSByZWNlaXZpbmdTdHJlYW1cbiAgICAgICAgdGhpcy5zdHJlYW1Nc2dzW2lkXS50b1Byb2R1Y2luZ1N0cmVhbSh7IHN0cmVhbVNlcXVlbmNlTnVtYmVyOiAwIH0pXG4gICAgICB9LFxuICAgIClcblxuICAgIHJlY2VpdmluZ1N0cmVhbS5yZWdpc3RlcihcbiAgICAgICh4KSA9PiB4LnN0cmVhbVNlcXVlbmNlTnVtYmVyLFxuICAgICAgKHN0cmVhbVNlcXVlbmNlTnVtYmVyKSA9PiB7XG4gICAgICAgIC8vIEJvdW5jZSBwcm9jZXNzZWQgbWVzc2FnZSB0byBwcm9kdWNpbmcgc3RyZWFtXG4gICAgICAgIHRoaXMuc3RyZWFtTXNnc1tzdHJlYW1JZF0udG9Qcm9kdWNpbmdTdHJlYW0oeyBzdHJlYW1TZXF1ZW5jZU51bWJlciB9KVxuICAgICAgfSxcbiAgICApXG5cbiAgICByZXR1cm4gcmVjZWl2aW5nU3RyZWFtXG4gIH1cblxuICBsb2dTdHJlYW0oKTogTW9ja0NsaWVudER1cGxleFN0cmVhbTxMb2dNZXNzYWdlLCBudWxsPiB7XG4gICAgY29uc3QgbG9nU3RyZWFtID0gbmV3IE1vY2tDbGllbnREdXBsZXhTdHJlYW08TG9nTWVzc2FnZSwgbnVsbD4oKVxuICAgIGxvZ1N0cmVhbS5yZWdpc3RlcigoeCkgPT4geCwgY29uc29sZS5sb2cpXG4gICAgcmV0dXJuIGxvZ1N0cmVhbVxuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVSdW5uZXIodXJpID0gJ2h0dHA6Ly9leGFtcGxlLmNvbS9ucyMnKSB7XG4gIGNvbnN0IGxvZ2dlciA9IGNyZWF0ZUxvZ2dlcih7XG4gICAgdHJhbnNwb3J0czogbmV3IHdpbnN0b24udHJhbnNwb3J0cy5Db25zb2xlKHtcbiAgICAgIGxldmVsOiBwcm9jZXNzLmVudlsnREVCVUcnXSB8fCAnaW5mbycsXG4gICAgfSksXG4gIH0pXG5cbiAgLy8gTW9jayB0aGUgR1JQQ1xuICBjb25zdCBjbGllbnQgPSBuZXcgT3JjaGVzdHJhdG9yTW9jaygpXG5cbiAgLy8gQ29ubmVjdCBqdXN0IGxpa2UgY2xpZW50LnRzOnN0YXJ0KClcbiAgY29uc3Qgc3RyZWFtID0gY2xpZW50LmNvbm5lY3QoKVxuICBjb25zdCB3cml0YWJsZSA9IHByb21pc2lmeShzdHJlYW0ud3JpdGUuYmluZChzdHJlYW0pKVxuXG4gIGNvbnN0IHJ1bm5lciA9IG5ldyBSdW5uZXIoXG4gICAgLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWV4cGxpY2l0LWFueSAqL1xuICAgIGNsaWVudCBhcyBhbnksIC8vIFR5cGUgYXNzZXJ0aW9uIGZvciB0ZXN0aW5nXG4gICAgd3JpdGFibGUgYXMgV3JpdGFibGUsXG4gICAgdXJpLFxuICAgIGxvZ2dlcixcbiAgKVxuXG4gIHN0cmVhbS5vbignZGF0YScsIChtc2c6IFRvUnVubmVyKSA9PiBydW5uZXIuaGFuZGxlT3JjaE1lc3NhZ2UobXNnKSlcblxuICByZXR1cm4gcnVubmVyXG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBvbmU8VD4oaXRlcjogQXN5bmNJdGVyYWJsZTxUPik6IFByb21pc2U8VCB8IHVuZGVmaW5lZD4ge1xuICBmb3IgYXdhaXQgKGNvbnN0IGl0ZW0gb2YgaXRlcikge1xuICAgIHJldHVybiBpdGVtXG4gIH1cbn1cblxuY29uc3Qgc2hhcGVRdWFkcyA9IGBcbkBwcmVmaXggcmRmYzogPGh0dHBzOi8vdzNpZC5vcmcvcmRmLWNvbm5lY3QjPi5cbkBwcmVmaXggeHNkOiA8aHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEjPi5cbkBwcmVmaXggc2g6IDxodHRwOi8vd3d3LnczLm9yZy9ucy9zaGFjbCM+LlxuWyBdIGEgc2g6Tm9kZVNoYXBlO1xuICBzaDp0YXJnZXRDbGFzcyA8SnNQcm9jZXNzb3JTaGFwZT47XG4gIHNoOnByb3BlcnR5IFtcbiAgICBzaDpwYXRoIHJkZmM6ZW50cnlwb2ludDtcbiAgICBzaDpuYW1lIFwibG9jYXRpb25cIjtcbiAgICBzaDptaW5Db3VudCAxO1xuICAgIHNoOm1heENvdW50IDE7XG4gICAgc2g6ZGF0YXR5cGUgeHNkOnN0cmluZztcbiAgXSwgW1xuICAgIHNoOnBhdGggcmRmYzpmaWxlO1xuICAgIHNoOm5hbWUgXCJmaWxlXCI7XG4gICAgc2g6bWluQ291bnQgMTtcbiAgICBzaDptYXhDb3VudCAxO1xuICAgIHNoOmRhdGF0eXBlIHhzZDpzdHJpbmc7XG4gIF0sIFtcbiAgICBzaDpwYXRoIHJkZmM6Y2xhc3M7XG4gICAgc2g6bmFtZSBcImNsYXp6XCI7XG4gICAgc2g6bWF4Q291bnQgMTtcbiAgICBzaDpkYXRhdHlwZSB4c2Q6c3RyaW5nO1xuICBdLlxuYFxuZXhwb3J0IHR5cGUgQ29uZmlnVHlwZSA9IHtcbiAgbG9jYXRpb246IHN0cmluZ1xuICBmaWxlOiBzdHJpbmdcbiAgY2xheno6IHN0cmluZ1xufVxuXG5jb25zdCBPV0wgPSBjcmVhdGVUZXJtTmFtZXNwYWNlKCdodHRwOi8vd3d3LnczLm9yZy8yMDAyLzA3L293bCMnLCAnaW1wb3J0cycpXG5jb25zdCBwcm9jZXNzb3JTaGFwZXMgPSBleHRyYWN0U2hhcGVzKG5ldyBQYXJzZXIoKS5wYXJzZShzaGFwZVF1YWRzKSlcbmNvbnN0IGJhc2UgPSAnaHR0cHM6Ly93M2lkLm9yZy9yZGYtY29ubmVjdCMnXG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBpbXBvcnRGaWxlKFxuICBmaWxlOiBzdHJpbmcsXG4gIGNvbnRlbnQ/OiBzdHJpbmcsXG4pOiBQcm9taXNlPFF1YWRbXT4ge1xuICBjb25zdCBkb25lID0gbmV3IFNldDxzdHJpbmc+KClcblxuICBjb25zdCBxdWFkczogUXVhZFtdID0gW11cbiAgY29uc3QgdG9kbzogVVJMW10gPSBbXVxuXG4gIGNvbnN0IHBhcnNlID0gKGNvbnRlbnQ6IHN0cmluZywgYmFzZUlSSTogVVJMKSA9PiB7XG4gICAgZG9uZS5hZGQoYmFzZUlSSS50b1N0cmluZygpKVxuXG4gICAgY29uc3QgZXh0cmFzID0gbmV3IFBhcnNlcih7IGJhc2VJUkk6IGJhc2VJUkkudG9TdHJpbmcoKSB9KS5wYXJzZShjb250ZW50KVxuXG4gICAgZm9yIChjb25zdCBvIG9mIGV4dHJhc1xuICAgICAgLmZpbHRlcihcbiAgICAgICAgKHgpID0+XG4gICAgICAgICAgeC5zdWJqZWN0LnZhbHVlID09PSBiYXNlSVJJPy50b1N0cmluZygpICYmXG4gICAgICAgICAgeC5wcmVkaWNhdGUuZXF1YWxzKE9XTC5pbXBvcnRzKSxcbiAgICAgIClcbiAgICAgIC5tYXAoKHgpID0+IHgub2JqZWN0LnZhbHVlKSkge1xuICAgICAgdG9kby5wdXNoKG5ldyBVUkwobykpXG4gICAgfVxuXG4gICAgcXVhZHMucHVzaCguLi5leHRyYXMpXG4gIH1cblxuICBpZiAoY29udGVudCkge1xuICAgIHBhcnNlKGNvbnRlbnQsIG5ldyBVUkwoJ2ZpbGU6Ly8nICsgZmlsZSkpXG4gIH0gZWxzZSB7XG4gICAgdG9kby5wdXNoKG5ldyBVUkwoJ2ZpbGU6Ly8nICsgZmlsZSkpXG4gIH1cblxuICBsZXQgaXRlbSA9IHRvZG8ucG9wKClcbiAgd2hpbGUgKGl0ZW0gIT09IHVuZGVmaW5lZCkge1xuICAgIGlmIChkb25lLmhhcyhpdGVtLnRvU3RyaW5nKCkpKSB7XG4gICAgICBpdGVtID0gdG9kby5wb3AoKVxuICAgICAgY29udGludWVcbiAgICB9XG5cbiAgICBpZiAoaXRlbS5wcm90b2NvbCAhPT0gJ2ZpbGU6Jykge1xuICAgICAgdGhyb3cgJ05vIHN1cHBvcnRlZCBwcm90b2NvbCAnICsgaXRlbS5wcm90b2NvbFxuICAgIH1cbiAgICBjb25zdCB0eHQgPSBhd2FpdCByZWFkRmlsZShpdGVtLnBhdGhuYW1lLCB7IGVuY29kaW5nOiAndXRmOCcgfSlcbiAgICBwYXJzZSh0eHQsIGl0ZW0pXG5cbiAgICBpdGVtID0gdG9kby5wb3AoKVxuICB9XG5cbiAgcmV0dXJuIHF1YWRzXG59XG5cbi8qKlxuICogSGVscGVyIGNsYXNzIHRvIGdyYWR1YWxseSB0ZXN0IHlvdXIgcHJvY2Vzc29ycy5cbiAqIFBvc3NpYmxlIGZsb3c6XG4gKiAtIGltcG9ydCB0aGUgSnNSdW5uZXIgaW5kZXggZmlsZVxuICogLSBpbXBvcnQgeW91ciBwcm9jZXNzb3IgY29uZmlnIGZpbGVcbiAqIC0gdGVzdCBpZiB0aGUgY29uZmlnIGlzIGFzIHlvdSB3b3VsZCBleHBlY3QgKGZyb20gZ2V0Q29uZmlnKCkpXG4gKiAtIGltcG9ydCB5b3VyIHByb2Nlc3NvciBkZWZpbml0aW9uIChpbmxpbmUpXG4gKiAtIGJ1aWxkIHlvdXIgcHJvY2Vzc29yXG4gKiAtIHRlc3QgeW91ciBwcm9jZXNzb3JcbiAqL1xuZXhwb3J0IGNsYXNzIFByb2NIZWxwZXI8VCBleHRlbmRzIFByb2Nlc3Nvcjx1bmtub3duPj4ge1xuICBydW5uZXI6IFJ1bm5lclxuICBxdWFkczogUXVhZFtdID0gW11cbiAgY29uZmlnOiBDb25maWdUeXBlXG4gIHByb2M6IEZ1bGxQcm9jPFQ+XG5cbiAgY29uc3RydWN0b3IodXJpPzogc3RyaW5nKSB7XG4gICAgdGhpcy5ydW5uZXIgPSBjcmVhdGVSdW5uZXIodXJpKVxuICB9XG5cbiAgYXN5bmMgaW1wb3J0SW5saW5lKGJhc2VJUkk6IHN0cmluZywgY29uZmlnOiBzdHJpbmcpIHtcbiAgICBjb25zdCBjb25maWdRdWFkcyA9IGF3YWl0IGltcG9ydEZpbGUoYmFzZUlSSSwgY29uZmlnKVxuICAgIHRoaXMucXVhZHMucHVzaCguLi5jb25maWdRdWFkcylcbiAgfVxuXG4gIGFzeW5jIGltcG9ydEZpbGUoZmlsZTogc3RyaW5nKSB7XG4gICAgY29uc3QgY29uZmlnUXVhZHMgPSBhd2FpdCBpbXBvcnRGaWxlKGZpbGUpXG4gICAgdGhpcy5xdWFkcy5wdXNoKC4uLmNvbmZpZ1F1YWRzKVxuICB9XG5cbiAgZ2V0Q29uZmlnKHR5OiBzdHJpbmcgfCBOYW1lZE5vZGUpOiBDb25maWdUeXBlIHtcbiAgICBjb25zdCBpZCA9IHR5cGVvZiB0eSA9PT0gJ3N0cmluZycgPyBuZXcgTmFtZWROb2RlKGJhc2UgKyB0eSkgOiB0eVxuICAgIGNvbnN0IHByb2NDb25maWcgPSA8Q29uZmlnVHlwZT5wcm9jZXNzb3JTaGFwZXMubGVuc2VzW1xuICAgICAgJ0pzUHJvY2Vzc29yU2hhcGUnXG4gICAgXS5leGVjdXRlKHtcbiAgICAgIGlkLFxuICAgICAgcXVhZHM6IHRoaXMucXVhZHMsXG4gICAgfSlcblxuICAgIHRoaXMuY29uZmlnID0gcHJvY0NvbmZpZ1xuICAgIHJldHVybiBwcm9jQ29uZmlnXG4gIH1cblxuICBhc3luYyBnZXRQcm9jZXNzb3IoXG4gICAgdXJpOiBzdHJpbmcgPSAnaHR0cDovL2V4YW1wbGUuY29tL25zI3Byb2Nlc3NvcicsXG4gICk6IFByb21pc2U8RnVsbFByb2M8VD4+IHtcbiAgICBhd2FpdCB0aGlzLnJ1bm5lci5oYW5kbGVPcmNoTWVzc2FnZSh7XG4gICAgICBwaXBlbGluZTogbmV3IE4zV3JpdGVyKCkucXVhZHNUb1N0cmluZyh0aGlzLnF1YWRzKSxcbiAgICB9KVxuXG4gICAgcmV0dXJuIGF3YWl0IHRoaXMucnVubmVyLmNyZWF0ZVByb2Nlc3NvcjxUPih7XG4gICAgICBjb25maWc6IEpTT04uc3RyaW5naWZ5KHRoaXMuY29uZmlnKSxcbiAgICAgIGFyZ3VtZW50czogJycsXG4gICAgICB1cmksXG4gICAgfSlcbiAgfVxufVxuXG4vKipcbiAqIEBkZXByZWNhdGVkIHVzZSB7QGxpbmsgUHJvY0hlbHBlcn1cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGdldFByb2NJbmxpbmU8VCBleHRlbmRzIFByb2Nlc3Nvcjx1bmtub3duPj4oXG4gIGNvbmZpZzogc3RyaW5nLFxuICB0eTogc3RyaW5nLFxuICBydW5uZXI6IFJ1bm5lcixcbiAgYmFzZUlSSTogc3RyaW5nLFxuICB1cmkgPSAnaHR0cDovL2V4YW1wbGUuY29tL25zI3Byb2Nlc3NvcicsXG4pOiBQcm9taXNlPEZ1bGxQcm9jPFQ+PiB7XG4gIGNvbnN0IGNvbmZpZ1F1YWRzID0gYXdhaXQgaW1wb3J0RmlsZShiYXNlSVJJLCBjb25maWcpXG4gIGNvbnN0IHByb2NDb25maWcgPSA8UHJvY0NvbmZpZz5wcm9jZXNzb3JTaGFwZXMubGVuc2VzW1xuICAgICdKc1Byb2Nlc3NvclNoYXBlJ1xuICBdLmV4ZWN1dGUoe1xuICAgIGlkOiBuZXcgTmFtZWROb2RlKGJhc2UgKyB0eSksXG4gICAgcXVhZHM6IGNvbmZpZ1F1YWRzLFxuICB9KVxuXG4gIGF3YWl0IHJ1bm5lci5oYW5kbGVPcmNoTWVzc2FnZSh7XG4gICAgcGlwZWxpbmU6IG5ldyBOM1dyaXRlcigpLnF1YWRzVG9TdHJpbmcoY29uZmlnUXVhZHMpLFxuICB9KVxuXG4gIGNvbnN0IHByb2MgPSBhd2FpdCBydW5uZXIuYWRkUHJvY2Vzc29yPFQ+KHtcbiAgICBjb25maWc6IEpTT04uc3RyaW5naWZ5KHByb2NDb25maWcpLFxuICAgIGFyZ3VtZW50czogJycsXG4gICAgdXJpLFxuICB9KVxuXG4gIHJldHVybiBwcm9jXG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgdXNlIHtAbGluayBQcm9jSGVscGVyfVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0UHJvYzxUIGV4dGVuZHMgUHJvY2Vzc29yPHVua25vd24+PihcbiAgY29uZmlnOiBzdHJpbmcsXG4gIHR5OiBzdHJpbmcsXG4gIHJ1bm5lcjogUnVubmVyLFxuICBjb25maWdMb2NhdGlvbjogc3RyaW5nLFxuICB1cmkgPSAnaHR0cDovL2V4YW1wbGUuY29tL25zI3Byb2Nlc3NvcicsXG4pOiBQcm9taXNlPEZ1bGxQcm9jPFQ+PiB7XG4gIGNvbnN0IGNvbmZpZ1F1YWRzID0gYXdhaXQgaW1wb3J0RmlsZShjb25maWdMb2NhdGlvbilcbiAgY29uc3QgcHJvY0NvbmZpZyA9IHByb2Nlc3NvclNoYXBlcy5sZW5zZXNbJ0pzUHJvY2Vzc29yU2hhcGUnXS5leGVjdXRlKHtcbiAgICBpZDogbmV3IE5hbWVkTm9kZShiYXNlICsgdHkpLFxuICAgIHF1YWRzOiBjb25maWdRdWFkcyxcbiAgfSlcblxuICBjb25maWdRdWFkcy5wdXNoKC4uLm5ldyBQYXJzZXIoKS5wYXJzZShjb25maWcpKVxuICBhd2FpdCBydW5uZXIuaGFuZGxlT3JjaE1lc3NhZ2Uoe1xuICAgIHBpcGVsaW5lOiBuZXcgTjNXcml0ZXIoKS5xdWFkc1RvU3RyaW5nKGNvbmZpZ1F1YWRzKSxcbiAgfSlcblxuICBjb25zdCBwcm9jID0gYXdhaXQgcnVubmVyLmFkZFByb2Nlc3NvcjxUPih7XG4gICAgY29uZmlnOiBKU09OLnN0cmluZ2lmeShwcm9jQ29uZmlnKSxcbiAgICBhcmd1bWVudHM6ICcnLFxuICAgIHVyaSxcbiAgfSlcblxuICByZXR1cm4gcHJvY1xufVxuIl19
|
|
246
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdGVzdFV0aWxzL2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQU9BLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDeEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxNQUFNLEVBQUUsTUFBTSxJQUFJLFFBQVEsRUFBRSxNQUFNLElBQUksQ0FBQTtBQUMxRCxPQUFPLEVBQUUsUUFBUSxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3RDLE9BQU8sT0FBTyxFQUFFLEVBQUUsWUFBWSxFQUFFLE1BQU0sU0FBUyxDQUFBO0FBRS9DLE9BQU8sRUFBWSxNQUFNLEVBQVksTUFBTSxXQUFXLENBQUE7QUFFdEQsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sZUFBZSxDQUFBO0FBT25ELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQUNqRCxPQUFPLEVBQUUsU0FBUyxFQUFFLE1BQU0sTUFBTSxDQUFBO0FBSWhDLE1BQU0sVUFBVSxPQUFPLENBQUMsTUFBYyxFQUFFLElBQVk7SUFDbEQsTUFBTSxDQUFDLEdBQUcsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUE7SUFDN0IsTUFBTSxNQUFNLEdBQUcsTUFBTSxDQUFDLFlBQVksQ0FBQyxDQUFDLENBQUMsQ0FBQTtJQUNyQyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsWUFBWSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBRXJDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsTUFBTSxDQUFDLENBQUE7QUFDekIsQ0FBQztBQUVELE1BQU0sT0FBTyxhQUFhO0lBQ3hCLElBQUksR0FBZ0IsRUFBRSxDQUFBO0lBRUwsU0FBUyxDQUFnQztJQUUxRCxZQUFZLFNBQXlDO1FBQ25ELElBQUksQ0FBQyxTQUFTLEdBQUcsU0FBUyxDQUFBO0lBQzVCLENBQUM7SUFFRCxpQkFBaUI7UUFJZixNQUFNLGFBQWEsR0FBRyxJ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QUNWLE1BQWMsRUFDZCxjQUFzQixFQUN0QixHQUFHLEdBQUcsaUNBQWlDO0lBRXZDLE1BQU0sV0FBVyxHQUFHLE1BQU0sVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFBO0lBQ3BELE1BQU0sVUFBVSxHQUFHLGVBQWUsQ0FBQyxNQUFNLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxPQUFPLENBQUM7UUFDcEUsRUFBRSxFQUFFLElBQUksU0FBUyxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDNUIsS0FBSyxFQUFFLFdBQVc7S0FDbkIsQ0FBQyxDQUFBO0lBRUYsV0FBVyxDQUFDLElBQUksQ0FBQyxHQUFHLElBQUksTUFBTSxFQUFFLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUE7SUFDL0MsTUFBTSxNQUFNLENBQUMsaUJBQWlCLENBQUM7UUFDN0IsUUFBUSxFQUFFLElBQUksUUFBUSxFQUFFLENBQUMsYUFBYSxDQUFDLFdBQVcsQ0FBQztLQUNwRCxDQUFDLENBQUE7SUFFRixNQUFNLElBQUksR0FBRyxNQUFNLE1BQU0sQ0FBQyxZQUFZLENBQUk7UUFDeEMsTUFBTSxFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsVUFBVSxDQUFDO1FBQ2xDLFNBQVMsRUFBRSxFQUFFO1FBQ2IsR0FBRztLQUNKLENBQUMsQ0FBQTtJQUVGLE9BQU8sSUFBSSxDQUFBO0FBQ2IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7XG4gIERhdGFDaHVuayxcbiAgRnJvbVJ1bm5lcixcbiAgTG9nTWVzc2FnZSxcbiAgUHJvY2Vzc29yIGFzIFByb2NDb25maWcsXG4gIFRvUnVubmVyLFxufSBmcm9tICdAcmRmYy9wcm90bydcbmltcG9ydCB7IGV4dHJhY3RTaGFwZXMgfSBmcm9tICdyZGYtbGVucydcbmltcG9ydCB7IE5hbWVkTm9kZSwgUGFyc2VyLCBXcml0ZXIgYXMgTjNXcml0ZXIgfSBmcm9tICduMydcbmltcG9ydCB7IHJlYWRGaWxlIH0gZnJvbSAnZnMvcHJvbWlzZXMnXG5pbXBvcnQgd2luc3RvbiwgeyBjcmVhdGVMb2dnZXIgfSBmcm9tICd3aW5zdG9uJ1xuaW1wb3J0IHsgUHJvY2Vzc29yIH0gZnJvbSAnLi4vcHJvY2Vzc29yJ1xuaW1wb3J0IHsgRnVsbFByb2MsIFJ1bm5lciwgV3JpdGFibGUgfSBmcm9tICcuLi9ydW5uZXInXG5pbXBvcnQgeyBRdWFkIH0gZnJvbSAnQHJkZmpzL3R5cGVzJ1xuaW1wb3J0IHsgY3JlYXRlVGVybU5hbWVzcGFjZSB9IGZyb20gJ0B0cmVlY2cvdHlwZXMnXG5pbXBvcnQge1xuICBSZWNlaXZpbmdTdHJlYW1Db250cm9sLFxuICBTZW5kaW5nU3RyZWFtQ29udHJvbCxcbiAgU3RyZWFtQ2h1bmssXG4gIFN0cmVhbUlkZW50aWZ5LFxufSBmcm9tICdAcmRmYy9wcm90by9saWIvZ2VuZXJhdGVkL2NvbW1vbidcbmltcG9ydCB7IE1vY2tDbGllbnREdXBsZXhTdHJlYW0gfSBmcm9tICcuL2R1cGxleCdcbmltcG9ydCB7IHByb21pc2lmeSB9IGZyb20gJ3V0aWwnXG5pbXBvcnQgeyBSZWFkZXIgfSBmcm9tICcuLi9yZWFkZXInXG5pbXBvcnQgeyBXcml0ZXIgfSBmcm9tICcuLi93cml0ZXInXG5cbmV4cG9ydCBmdW5jdGlvbiBjaGFubmVsKHJ1bm5lcjogUnVubmVyLCBuYW1lOiBzdHJpbmcpOiBbV3JpdGVyLCBSZWFkZXJdIHtcbiAgY29uc3QgbiA9IG5ldyBOYW1lZE5vZGUobmFtZSlcbiAgY29uc3QgcmVhZGVyID0gcnVubmVyLmNyZWF0ZVJlYWRlcihuKVxuICBjb25zdCB3cml0ZXIgPSBydW5uZXIuY3JlYXRlV3JpdGVyKG4pXG5cbiAgcmV0dXJuIFt3cml0ZXIsIHJlYWRlcl1cbn1cblxuZXhwb3J0IGNsYXNzIFN0cmVhbU1zZ01vY2sge1xuICBkYXRhOiBEYXRhQ2h1bmtbXSA9IFtdXG5cbiAgcHJpdmF0ZSByZWFkb25seSByZXNvbHZlSWQ6IChpZDogU3RyZWFtSWRlbnRpZnkpID0+IG51bWJlclxuXG4gIGNvbnN0cnVjdG9yKHJlc29sdmVJZDogKGlkOiBTdHJlYW1JZGVudGlmeSkgPT4gbnVtYmVyKSB7XG4gICAgdGhpcy5yZXNvbHZlSWQgPSByZXNvbHZlSWRcbiAgfVxuXG4gIHNlbmRTdHJlYW1NZXNzYWdlKCk6IE1vY2tDbGllbnREdXBsZXhTdHJlYW08XG4gICAgU3RyZWFtQ2h1bmssXG4gICAgUmVjZWl2aW5nU3RyZWFtQ29udHJvbFxuICA+IHtcbiAgICBjb25zdCBzZW5kaW5nU3RyZWFtID0gbmV3IE1vY2tDbGllbnREdXBsZXhTdHJlYW08XG4gICAgICBTdHJlYW1DaHVuayxcbiAgICAgIFJlY2VpdmluZ1N0cmVhbUNvbnRyb2xcbiAgICA+KClcblxuICAgIGxldCBhdCA9IDBcbiAgICBzZW5kaW5nU3RyZWFtLnJlZ2lzdGVyKFxuICAgICAgKHgpID0+IHguZGF0YSxcbiAgICAgIChkLCBzZW5kKSA9PiB7XG4gICAgICAgIHNldFRpbWVvdXQoKCkgPT4gc2VuZCh7IHN0cmVhbVNlcXVlbmNlTnVtYmVyOiArK2F0IH0pLCAyMClcbiAgICAgICAgdGhpcy5kYXRhLnB1c2goZClcbiAgICAgIH0sXG4gICAgKVxuICAgIHNlbmRpbmdTdHJlYW0ucmVnaXN0ZXIoXG4gICAgICAoeCkgPT4geC5pZCxcbiAgICAgIChkLCBzZW5kKSA9PiBzZW5kKHsgc3RyZWFtU2VxdWVuY2VOdW1iZXI6IHRoaXMucmVzb2x2ZUlkKGQpIH0pLFxuICAgIClcbiAgICByZXR1cm4gc2VuZGluZ1N0cmVhbVxuICB9XG59XG5cbmV4cG9ydCBjbGFzcyBPcmNoZXN0cmF0b3JNb2NrIHtcbiAgY29ubmVjdFN0cmVhbTogTW9ja0NsaWVudER1cGxleFN0cmVhbTxGcm9tUnVubmVyLCBUb1J1bm5lcj5cblxuICBzdHJlYW1Nc2dzOiB7XG4gICAgW2lkOiBzdHJpbmddOiB7XG4gICAgICB0b1Byb2R1Y2luZ1N0cmVhbTogKGlkOiBSZWNlaXZpbmdTdHJlYW1Db250cm9sKSA9PiB2b2lkXG4gICAgICByZWNlaXZpbmdTdHJlYW0/OiBNb2NrQ2xpZW50RHVwbGV4U3RyZWFtPFNlbmRpbmdTdHJlYW1Db250cm9sLCBEYXRhQ2h1bms+XG4gICAgfVxuICB9ID0ge31cblxuICBzdHJlYW1Nc2dDb3VudCA9IDBcblxuICBjb25uZWN0KCk6IE1vY2tDbGllbnREdXBsZXhTdHJlYW08RnJvbVJ1bm5lciwgVG9SdW5uZXI+IHtcbiAgICBjb25zdCBjb25uZWN0U3RyZWFtID0gbmV3IE1vY2tDbGllbnREdXBsZXhTdHJlYW08RnJvbVJ1bm5lciwgVG9SdW5uZXI+KClcbiAgICAvLyBBbHdheXMgYm91bmNlIHByb2Nlc3NlZCBtc2dzIGJhY2sgdG8gdGhlIHJ1bm5lclxuICAgIGNvbm5lY3RTdHJlYW0ucmVnaXN0ZXIoXG4gICAgICAobXNnKSA9PiBtc2cucHJvY2Vzc2VkLFxuICAgICAgKHsgY2hhbm5lbCwgZ2xvYmFsU2VxdWVuY2VOdW1iZXIsIGVycm9yIH0sIHNlbmQpID0+IHtcbiAgICAgICAgc2VuZCh7XG4gICAgICAgICAgcHJvY2Vzc2VkOiB7XG4gICAgICAgICAgICBjaGFubmVsLFxuICAgICAgICAgICAgbG9jYWxTZXF1ZW5jZU51bWJlcjogZ2xvYmFsU2VxdWVuY2VOdW1iZXIsXG4gICAgICAgICAgICBlcnJvcixcbiAgICAgICAgICB9LFxuICAgICAgICB9KVxuICAgICAgfSxcbiAgICApXG5cbiAgICAvLyBBbHdheXMgYm91bmNlIGRhdGEgbXNncyBiYWNrIHRvIHRoZSBydW5uZXJcbiAgICBjb25uZWN0U3RyZWFtLnJlZ2lzdGVyKFxuICAgICAgKG1zZykgPT4gbXNnLm1zZyxcbiAgICAgICh7IGxvY2FsU2VxdWVuY2VOdW1iZXIsIGRhdGEsIGNoYW5uZWwgfSwgc2VuZCkgPT4ge1xuICAgICAgICBzZW5kKHtcbiAgICAgICAgICBtc2c6IHsgZ2xvYmFsU2VxdWVuY2VOdW1iZXI6IGxvY2FsU2VxdWVuY2VOdW1iZXIsIGNoYW5uZWwsIGRhdGEgfSxcbiAgICAgICAgfSlcbiAgICAgIH0sXG4gICAgKVxuXG4gICAgLy8gQWx3YXlzIGJvdW5jZSBjbG9zZSBtc2dzIGJhY2sgdG8gdGhlIHJ1bm5lclxuICAgIGNvbm5lY3RTdHJlYW0ucmVnaXN0ZXIoXG4gICAgICAobXNnKSA9PiBtc2cuY2xvc2UsXG4gICAgICAoY2xvc2UsIHNlbmQpID0+IHtcbiAgICAgICAgc2VuZCh7IGNsb3NlIH0pXG4gICAgICB9LFxuICAgIClcblxuICAgIHRoaXMuY29ubmVjdFN0cmVhbSA9IGNvbm5lY3RTdHJlYW1cbiAgICByZXR1cm4gY29ubmVjdFN0cmVhbVxuICB9XG5cbiAgc2VuZFN0cmVhbU1lc3NhZ2UoKTogTW9ja0NsaWVudER1cGxleFN0cmVhbTxcbiAgICBTdHJlYW1DaHVuayxcbiAgICBSZWNlaXZpbmdTdHJlYW1Db250cm9sXG4gID4ge1xuICAgIGNvbnN0IG91dCA9IG5ldyBNb2NrQ2xpZW50RHVwbGV4U3RyZWFtPFxuICAgICAgU3RyZWFtQ2h1bmssXG4gICAgICBSZWNlaXZpbmdTdHJlYW1Db250cm9sXG4gICAgPigpXG4gICAgY29uc3QgaWQgPSB0aGlzLnN0cmVhbU1zZ0NvdW50XG4gICAgdGhpcy5zdHJlYW1Nc2dDb3VudCsrXG5cbiAgICBvdXQucmVnaXN0ZXJPbmNlKFxuICAgICAgKHgpID0+IHguaWQsXG4gICAgICAoeyBjaGFubmVsIH0sIHRvUHJvZHVjaW5nU3RyZWFtKSA9PiB7XG4gICAgICAgIHRoaXMuc3RyZWFtTXNnc1tpZF0gPSB7IHRvUHJvZHVjaW5nU3RyZWFtIH1cblxuICAgICAgICAvLyBOb3RpZnkgc3RyZWFtIG1lc3NhZ2VcbiAgICAgICAgdGhpcy5jb25uZWN0U3RyZWFtLnNlbmQoe1xuICAgICAgICAgIHN0cmVhbU1zZzogeyBjaGFubmVsLCBnbG9iYWxTZXF1ZW5jZU51bWJlcjogaWQgfSxcbiAgICAgICAgfSlcbiAgICAgIH0sXG4gICAgKVxuXG4gICAgb3V0LnJlZ2lzdGVyKFxuICAgICAgKHgpID0+IHguZGF0YSxcbiAgICAgIChkYXRhKSA9PiB7XG4gICAgICAgIC8vIGJvdW5jZSBkYXRhIHRvIHJlY2VpdmluZyBzdHJlYW1cbiAgICAgICAgdGhpcy5zdHJlYW1Nc2dzW2lkXS5yZWNlaXZpbmdTdHJlYW0hLnNlbmQoZGF0YSlcbiAgICAgIH0sXG4gICAgKVxuXG4gICAgb3V0Lm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICAvLyBlbmQgcmVjZWl2aW5nIHN0cmVhbVxuICAgICAgdGhpcy5zdHJlYW1Nc2dzW2lkXS5yZWNlaXZpbmdTdHJlYW0hLmVuZCgpXG4gICAgfSlcblxuICAgIHJldHVybiBvdXRcbiAgfVxuXG4gIHJlY2VpdmVTdHJlYW1NZXNzYWdlKCk6IE1vY2tDbGllbnREdXBsZXhTdHJlYW08XG4gICAgU2VuZGluZ1N0cmVhbUNvbnRyb2wsXG4gICAgRGF0YUNodW5rXG4gID4ge1xuICAgIGNvbnN0IHJlY2VpdmluZ1N0cmVhbSA9IG5ldyBNb2NrQ2xpZW50RHVwbGV4U3RyZWFtPFxuICAgICAgU2VuZGluZ1N0cmVhbUNvbnRyb2wsXG4gICAgICBEYXRhQ2h1bmtcbiAgICA+KClcbiAgICBsZXQgc3RyZWFtSWQgPSAwXG5cbiAgICByZWNlaXZpbmdTdHJlYW0ucmVnaXN0ZXJPbmNlKFxuICAgICAgKHgpID0+IHguZ2xvYmFsU2VxdWVuY2VOdW1iZXIsXG4gICAgICAoaWQpID0+IHtcbiAgICAgICAgc3RyZWFtSWQgPSBpZFxuICAgICAgICB0aGlzLnN0cmVhbU1zZ3NbaWRdLnJlY2VpdmluZ1N0cmVhbSA9IHJlY2VpdmluZ1N0cmVhbVxuICAgICAgICB0aGlzLnN0cmVhbU1zZ3NbaWRdLnRvUHJvZHVjaW5nU3RyZWFtKHsgc3RyZWFtU2VxdWVuY2VOdW1iZXI6IDAgfSlcbiAgICAgIH0sXG4gICAgKVxuXG4gICAgcmVjZWl2aW5nU3RyZWFtLnJlZ2lzdGVyKFxuICAgICAgKHgpID0+IHguc3RyZWFtU2VxdWVuY2VOdW1iZXIsXG4gICAgICAoc3RyZWFtU2VxdWVuY2VOdW1iZXIpID0+IHtcbiAgICAgICAgLy8gQm91bmNlIHByb2Nlc3NlZCBtZXNzYWdlIHRvIHByb2R1Y2luZyBzdHJlYW1cbiAgICAgICAgdGhpcy5zdHJlYW1Nc2dzW3N0cmVhbUlkXS50b1Byb2R1Y2luZ1N0cmVhbSh7IHN0cmVhbVNlcXVlbmNlTnVtYmVyIH0pXG4gICAgICB9LFxuICAgIClcblxuICAgIHJldHVybiByZWNlaXZpbmdTdHJlYW1cbiAgfVxuXG4gIGxvZ1N0cmVhbSgpOiBNb2NrQ2xpZW50RHVwbGV4U3RyZWFtPExvZ01lc3NhZ2UsIG51bGw+IHtcbiAgICBjb25zdCBsb2dTdHJlYW0gPSBuZXcgTW9ja0NsaWVudER1cGxleFN0cmVhbTxMb2dNZXNzYWdlLCBudWxsPigpXG4gICAgbG9nU3RyZWFtLnJlZ2lzdGVyKCh4KSA9PiB4LCBjb25zb2xlLmxvZylcbiAgICByZXR1cm4gbG9nU3RyZWFtXG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJ1bm5lcih1cmkgPSAnaHR0cDovL2V4YW1wbGUuY29tL25zIycpIHtcbiAgY29uc3QgbG9nZ2VyID0gY3JlYXRlTG9nZ2VyKHtcbiAgICB0cmFuc3BvcnRzOiBuZXcgd2luc3Rvbi50cmFuc3BvcnRzLkNvbnNvbGUoe1xuICAgICAgbGV2ZWw6IHByb2Nlc3MuZW52WydERUJVRyddIHx8ICdpbmZvJyxcbiAgICB9KSxcbiAgfSlcblxuICAvLyBNb2NrIHRoZSBHUlBDXG4gIGNvbnN0IGNsaWVudCA9IG5ldyBPcmNoZXN0cmF0b3JNb2NrKClcblxuICAvLyBDb25uZWN0IGp1c3QgbGlrZSBjbGllbnQudHM6c3RhcnQoKVxuICBjb25zdCBzdHJlYW0gPSBjbGllbnQuY29ubmVjdCgpXG4gIGNvbnN0IHdyaXRhYmxlID0gcHJvbWlzaWZ5KHN0cmVhbS53cml0ZS5iaW5kKHN0cmVhbSkpXG5cbiAgY29uc3QgcnVubmVyID0gbmV3IFJ1bm5lcihcbiAgICAvKiBlc2xpbnQtZGlzYWJsZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZXhwbGljaXQtYW55ICovXG4gICAgY2xpZW50IGFzIGFueSwgLy8gVHlwZSBhc3NlcnRpb24gZm9yIHRlc3RpbmdcbiAgICB3cml0YWJsZSBhcyBXcml0YWJsZSxcbiAgICB1cmksXG4gICAgbG9nZ2VyLFxuICApXG5cbiAgc3RyZWFtLm9uKCdkYXRhJywgKG1zZzogVG9SdW5uZXIpID0+IHJ1bm5lci5oYW5kbGVPcmNoTWVzc2FnZShtc2cpKVxuXG4gIHJldHVybiBydW5uZXJcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIG9uZTxUPihpdGVyOiBBc3luY0l0ZXJhYmxlPFQ+KTogUHJvbWlzZTxUIHwgdW5kZWZpbmVkPiB7XG4gIGZvciBhd2FpdCAoY29uc3QgaXRlbSBvZiBpdGVyKSB7XG4gICAgcmV0dXJuIGl0ZW1cbiAgfVxufVxuXG5jb25zdCBzaGFwZVF1YWRzID0gYFxuQHByZWZpeCByZGZjOiA8aHR0cHM6Ly93M2lkLm9yZy9yZGYtY29ubmVjdCM+LlxuQHByZWZpeCB4c2Q6IDxodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYSM+LlxuQHByZWZpeCBzaDogPGh0dHA6Ly93d3cudzMub3JnL25zL3NoYWNsIz4uXG5bIF0gYSBzaDpOb2RlU2hhcGU7XG4gIHNoOnRhcmdldENsYXNzIDxKc1Byb2Nlc3NvclNoYXBlPjtcbiAgc2g6cHJvcGVydHkgW1xuICAgIHNoOnBhdGggcmRmYzplbnRyeXBvaW50O1xuICAgIHNoOm5hbWUgXCJsb2NhdGlvblwiO1xuICAgIHNoOm1pbkNvdW50IDE7XG4gICAgc2g6bWF4Q291bnQgMTtcbiAgICBzaDpkYXRhdHlwZSB4c2Q6c3RyaW5nO1xuICBdLCBbXG4gICAgc2g6cGF0aCByZGZjOmZpbGU7XG4gICAgc2g6bmFtZSBcImZpbGVcIjtcbiAgICBzaDptaW5Db3VudCAxO1xuICAgIHNoOm1heENvdW50IDE7XG4gICAgc2g6ZGF0YXR5cGUgeHNkOnN0cmluZztcbiAgXSwgW1xuICAgIHNoOnBhdGggcmRmYzpjbGFzcztcbiAgICBzaDpuYW1lIFwiY2xhenpcIjtcbiAgICBzaDptYXhDb3VudCAxO1xuICAgIHNoOmRhdGF0eXBlIHhzZDpzdHJpbmc7XG4gIF0uXG5gXG5leHBvcnQgdHlwZSBDb25maWdUeXBlID0ge1xuICBsb2NhdGlvbjogc3RyaW5nXG4gIGZpbGU6IHN0cmluZ1xuICBjbGF6ejogc3RyaW5nXG59XG5cbmNvbnN0IE9XTCA9IGNyZWF0ZVRlcm1OYW1lc3BhY2UoJ2h0dHA6Ly93d3cudzMub3JnLzIwMDIvMDcvb3dsIycsICdpbXBvcnRzJylcbmNvbnN0IHByb2Nlc3NvclNoYXBlcyA9IGV4dHJhY3RTaGFwZXMobmV3IFBhcnNlcigpLnBhcnNlKHNoYXBlUXVhZHMpKVxuY29uc3QgYmFzZSA9ICdodHRwczovL3czaWQub3JnL3JkZi1jb25uZWN0IydcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGltcG9ydEZpbGUoXG4gIGZpbGU6IHN0cmluZyxcbiAgY29udGVudD86IHN0cmluZyxcbik6IFByb21pc2U8UXVhZFtdPiB7XG4gIGNvbnN0IGRvbmUgPSBuZXcgU2V0PHN0cmluZz4oKVxuXG4gIGNvbnN0IHF1YWRzOiBRdWFkW10gPSBbXVxuICBjb25zdCB0b2RvOiBVUkxbXSA9IFtdXG5cbiAgY29uc3QgcGFyc2UgPSAoY29udGVudDogc3RyaW5nLCBiYXNlSVJJOiBVUkwpID0+IHtcbiAgICBkb25lLmFkZChiYXNlSVJJLnRvU3RyaW5nKCkpXG5cbiAgICBjb25zdCBleHRyYXMgPSBuZXcgUGFyc2VyKHsgYmFzZUlSSTogYmFzZUlSSS50b1N0cmluZygpIH0pLnBhcnNlKGNvbnRlbnQpXG5cbiAgICBmb3IgKGNvbnN0IG8gb2YgZXh0cmFzXG4gICAgICAuZmlsdGVyKFxuICAgICAgICAoeCkgPT5cbiAgICAgICAgICB4LnN1YmplY3QudmFsdWUgPT09IGJhc2VJUkk/LnRvU3RyaW5nKCkgJiZcbiAgICAgICAgICB4LnByZWRpY2F0ZS5lcXVhbHMoT1dMLmltcG9ydHMpLFxuICAgICAgKVxuICAgICAgLm1hcCgoeCkgPT4geC5vYmplY3QudmFsdWUpKSB7XG4gICAgICB0b2RvLnB1c2gobmV3IFVSTChvKSlcbiAgICB9XG5cbiAgICBxdWFkcy5wdXNoKC4uLmV4dHJhcylcbiAgfVxuXG4gIGlmIChjb250ZW50KSB7XG4gICAgcGFyc2UoY29udGVudCwgbmV3IFVSTCgnZmlsZTovLycgKyBmaWxlKSlcbiAgfSBlbHNlIHtcbiAgICB0b2RvLnB1c2gobmV3IFVSTCgnZmlsZTovLycgKyBmaWxlKSlcbiAgfVxuXG4gIGxldCBpdGVtID0gdG9kby5wb3AoKVxuICB3aGlsZSAoaXRlbSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaWYgKGRvbmUuaGFzKGl0ZW0udG9TdHJpbmcoKSkpIHtcbiAgICAgIGl0ZW0gPSB0b2RvLnBvcCgpXG4gICAgICBjb250aW51ZVxuICAgIH1cblxuICAgIGlmIChpdGVtLnByb3RvY29sICE9PSAnZmlsZTonKSB7XG4gICAgICB0aHJvdyAnTm8gc3VwcG9ydGVkIHByb3RvY29sICcgKyBpdGVtLnByb3RvY29sXG4gICAgfVxuICAgIGNvbnN0IHR4dCA9IGF3YWl0IHJlYWRGaWxlKGl0ZW0ucGF0aG5hbWUsIHsgZW5jb2Rpbmc6ICd1dGY4JyB9KVxuICAgIHBhcnNlKHR4dCwgaXRlbSlcblxuICAgIGl0ZW0gPSB0b2RvLnBvcCgpXG4gIH1cblxuICByZXR1cm4gcXVhZHNcbn1cblxuLyoqXG4gKiBIZWxwZXIgY2xhc3MgdG8gZ3JhZHVhbGx5IHRlc3QgeW91ciBwcm9jZXNzb3JzLlxuICogUG9zc2libGUgZmxvdzpcbiAqIC0gaW1wb3J0IHRoZSBKc1J1bm5lciBpbmRleCBmaWxlXG4gKiAtIGltcG9ydCB5b3VyIHByb2Nlc3NvciBjb25maWcgZmlsZVxuICogLSB0ZXN0IGlmIHRoZSBjb25maWcgaXMgYXMgeW91IHdvdWxkIGV4cGVjdCAoZnJvbSBnZXRDb25maWcoKSlcbiAqIC0gaW1wb3J0IHlvdXIgcHJvY2Vzc29yIGRlZmluaXRpb24gKGlubGluZSlcbiAqIC0gYnVpbGQgeW91ciBwcm9jZXNzb3JcbiAqIC0gdGVzdCB5b3VyIHByb2Nlc3NvclxuICovXG5leHBvcnQgY2xhc3MgUHJvY0hlbHBlcjxUIGV4dGVuZHMgUHJvY2Vzc29yPHVua25vd24+PiB7XG4gIHJ1bm5lcjogUnVubmVyXG4gIHF1YWRzOiBRdWFkW10gPSBbXVxuICBjb25maWc6IENvbmZpZ1R5cGVcbiAgcHJvYzogRnVsbFByb2M8VD5cblxuICBjb25zdHJ1Y3Rvcih1cmk/OiBzdHJpbmcpIHtcbiAgICB0aGlzLnJ1bm5lciA9IGNyZWF0ZVJ1bm5lcih1cmkpXG4gIH1cblxuICBhc3luYyBpbXBvcnRJbmxpbmUoYmFzZUlSSTogc3RyaW5nLCBjb25maWc6IHN0cmluZykge1xuICAgIGNvbnN0IGNvbmZpZ1F1YWRzID0gYXdhaXQgaW1wb3J0RmlsZShiYXNlSVJJLCBjb25maWcpXG4gICAgdGhpcy5xdWFkcy5wdXNoKC4uLmNvbmZpZ1F1YWRzKVxuICB9XG5cbiAgYXN5bmMgaW1wb3J0RmlsZShmaWxlOiBzdHJpbmcpIHtcbiAgICBjb25zdCBjb25maWdRdWFkcyA9IGF3YWl0IGltcG9ydEZpbGUoZmlsZSlcbiAgICB0aGlzLnF1YWRzLnB1c2goLi4uY29uZmlnUXVhZHMpXG4gIH1cblxuICBnZXRDb25maWcodHk6IHN0cmluZyB8IE5hbWVkTm9kZSk6IENvbmZpZ1R5cGUge1xuICAgIGNvbnN0IGlkID0gdHlwZW9mIHR5ID09PSAnc3RyaW5nJyA/IG5ldyBOYW1lZE5vZGUoYmFzZSArIHR5KSA6IHR5XG4gICAgY29uc3QgcHJvY0NvbmZpZyA9IDxDb25maWdUeXBlPnByb2Nlc3NvclNoYXBlcy5sZW5zZXNbXG4gICAgICAnSnNQcm9jZXNzb3JTaGFwZSdcbiAgICBdLmV4ZWN1dGUoe1xuICAgICAgaWQsXG4gICAgICBxdWFkczogdGhpcy5xdWFkcyxcbiAgICB9KVxuXG4gICAgdGhpcy5jb25maWcgPSBwcm9jQ29uZmlnXG4gICAgcmV0dXJuIHByb2NDb25maWdcbiAgfVxuXG4gIGFzeW5jIGdldFByb2Nlc3NvcihcbiAgICB1cmk6IHN0cmluZyA9ICdodHRwOi8vZXhhbXBsZS5jb20vbnMjcHJvY2Vzc29yJyxcbiAgKTogUHJvbWlzZTxGdWxsUHJvYzxUPj4ge1xuICAgIGF3YWl0IHRoaXMucnVubmVyLmhhbmRsZU9yY2hNZXNzYWdlKHtcbiAgICAgIHBpcGVsaW5lOiBuZXcgTjNXcml0ZXIoKS5xdWFkc1RvU3RyaW5nKHRoaXMucXVhZHMpLFxuICAgIH0pXG5cbiAgICByZXR1cm4gYXdhaXQgdGhpcy5ydW5uZXIuY3JlYXRlUHJvY2Vzc29yPFQ+KHtcbiAgICAgIGNvbmZpZzogSlNPTi5zdHJpbmdpZnkodGhpcy5jb25maWcpLFxuICAgICAgYXJndW1lbnRzOiAnJyxcbiAgICAgIHVyaSxcbiAgICB9KVxuICB9XG59XG5cbi8qKlxuICogQGRlcHJlY2F0ZWQgdXNlIHtAbGluayBQcm9jSGVscGVyfVxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gZ2V0UHJvY0lubGluZTxUIGV4dGVuZHMgUHJvY2Vzc29yPHVua25vd24+PihcbiAgY29uZmlnOiBzdHJpbmcsXG4gIHR5OiBzdHJpbmcsXG4gIHJ1bm5lcjogUnVubmVyLFxuICBiYXNlSVJJOiBzdHJpbmcsXG4gIHVyaSA9ICdodHRwOi8vZXhhbXBsZS5jb20vbnMjcHJvY2Vzc29yJyxcbik6IFByb21pc2U8RnVsbFByb2M8VD4+IHtcbiAgY29uc3QgY29uZmlnUXVhZHMgPSBhd2FpdCBpbXBvcnRGaWxlKGJhc2VJUkksIGNvbmZpZylcbiAgY29uc3QgcHJvY0NvbmZpZyA9IDxQcm9jQ29uZmlnPnByb2Nlc3NvclNoYXBlcy5sZW5zZXNbXG4gICAgJ0pzUHJvY2Vzc29yU2hhcGUnXG4gIF0uZXhlY3V0ZSh7XG4gICAgaWQ6IG5ldyBOYW1lZE5vZGUoYmFzZSArIHR5KSxcbiAgICBxdWFkczogY29uZmlnUXVhZHMsXG4gIH0pXG5cbiAgYXdhaXQgcnVubmVyLmhhbmRsZU9yY2hNZXNzYWdlKHtcbiAgICBwaXBlbGluZTogbmV3IE4zV3JpdGVyKCkucXVhZHNUb1N0cmluZyhjb25maWdRdWFkcyksXG4gIH0pXG5cbiAgY29uc3QgcHJvYyA9IGF3YWl0IHJ1bm5lci5hZGRQcm9jZXNzb3I8VD4oe1xuICAgIGNvbmZpZzogSlNPTi5zdHJpbmdpZnkocHJvY0NvbmZpZyksXG4gICAgYXJndW1lbnRzOiAnJyxcbiAgICB1cmksXG4gIH0pXG5cbiAgcmV0dXJuIHByb2Ncbn1cblxuLyoqXG4gKiBAZGVwcmVjYXRlZCB1c2Uge0BsaW5rIFByb2NIZWxwZXJ9XG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBnZXRQcm9jPFQgZXh0ZW5kcyBQcm9jZXNzb3I8dW5rbm93bj4+KFxuICBjb25maWc6IHN0cmluZyxcbiAgdHk6IHN0cmluZyxcbiAgcnVubmVyOiBSdW5uZXIsXG4gIGNvbmZpZ0xvY2F0aW9uOiBzdHJpbmcsXG4gIHVyaSA9ICdodHRwOi8vZXhhbXBsZS5jb20vbnMjcHJvY2Vzc29yJyxcbik6IFByb21pc2U8RnVsbFByb2M8VD4+IHtcbiAgY29uc3QgY29uZmlnUXVhZHMgPSBhd2FpdCBpbXBvcnRGaWxlKGNvbmZpZ0xvY2F0aW9uKVxuICBjb25zdCBwcm9jQ29uZmlnID0gcHJvY2Vzc29yU2hhcGVzLmxlbnNlc1snSnNQcm9jZXNzb3JTaGFwZSddLmV4ZWN1dGUoe1xuICAgIGlkOiBuZXcgTmFtZWROb2RlKGJhc2UgKyB0eSksXG4gICAgcXVhZHM6IGNvbmZpZ1F1YWRzLFxuICB9KVxuXG4gIGNvbmZpZ1F1YWRzLnB1c2goLi4ubmV3IFBhcnNlcigpLnBhcnNlKGNvbmZpZykpXG4gIGF3YWl0IHJ1bm5lci5oYW5kbGVPcmNoTWVzc2FnZSh7XG4gICAgcGlwZWxpbmU6IG5ldyBOM1dyaXRlcigpLnF1YWRzVG9TdHJpbmcoY29uZmlnUXVhZHMpLFxuICB9KVxuXG4gIGNvbnN0IHByb2MgPSBhd2FpdCBydW5uZXIuYWRkUHJvY2Vzc29yPFQ+KHtcbiAgICBjb25maWc6IEpTT04uc3RyaW5naWZ5KHByb2NDb25maWcpLFxuICAgIGFyZ3VtZW50czogJycsXG4gICAgdXJpLFxuICB9KVxuXG4gIHJldHVybiBwcm9jXG59XG4iXX0=
|