@ruvector/ruvllm 2.5.5 → 2.5.7

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.
@@ -6,10 +6,7 @@
6
6
  * This measures the actual value proposition for Claude Code workflows.
7
7
  */
8
8
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.ROUTING_TEST_CASES = exports.AGENT_TYPES = void 0;
10
- exports.baselineKeywordRouter = baselineKeywordRouter;
11
- exports.runRoutingBenchmark = runRoutingBenchmark;
12
- exports.formatRoutingResults = formatRoutingResults;
9
+ exports.formatRoutingResults = exports.runRoutingBenchmark = exports.baselineKeywordRouter = exports.ROUTING_TEST_CASES = exports.AGENT_TYPES = void 0;
13
10
  /**
14
11
  * Agent types in Claude Code / claude-flow ecosystem
15
12
  */
@@ -181,6 +178,7 @@ function baselineKeywordRouter(task) {
181
178
  confidence: Math.min(bestMatch.score / 3, 1), // Normalize to 0-1
182
179
  };
183
180
  }
181
+ exports.baselineKeywordRouter = baselineKeywordRouter;
184
182
  /**
185
183
  * Run the routing benchmark
186
184
  */
@@ -236,6 +234,7 @@ function runRoutingBenchmark(router) {
236
234
  results,
237
235
  };
238
236
  }
237
+ exports.runRoutingBenchmark = runRoutingBenchmark;
239
238
  /**
240
239
  * Format benchmark results for display
241
240
  */
@@ -279,6 +278,7 @@ function formatRoutingResults(results) {
279
278
  }
280
279
  return lines.join('\n');
281
280
  }
281
+ exports.formatRoutingResults = formatRoutingResults;
282
282
  exports.default = {
283
283
  ROUTING_TEST_CASES: exports.ROUTING_TEST_CASES,
284
284
  AGENT_TYPES: exports.AGENT_TYPES,
@@ -286,4 +286,4 @@ exports.default = {
286
286
  runRoutingBenchmark,
287
287
  formatRoutingResults,
288
288
  };
289
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGluZy1iZW5jaG1hcmsuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmVuY2htYXJrcy9yb3V0aW5nLWJlbmNobWFyay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7O0dBS0c7OztBQTBMSCxzREFxQ0M7QUFLRCxrREE2REM7QUFLRCxvREE4Q0M7QUFwVEQ7O0dBRUc7QUFDVSxRQUFBLFdBQVcsR0FBRztJQUN6QixPQUFPO0lBQ1AsWUFBWTtJQUNaLFVBQVU7SUFDVixRQUFRO0lBQ1IsV0FBVztJQUNYLG9CQUFvQjtJQUNwQixVQUFVO0lBQ1YsWUFBWTtJQUNaLFlBQVk7SUFDWixXQUFXO0lBQ1gsUUFBUTtJQUNSLFVBQVU7SUFDVixTQUFTO0NBQ0QsQ0FBQztBQUlYOzs7R0FHRztBQUNVLFFBQUEsa0JBQWtCLEdBQXNCO0lBQ25ELHVDQUF1QztJQUN2QyxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLGtEQUFrRCxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7SUFDaEosRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxpREFBaUQsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFO0lBQ2pKLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsa0RBQWtELEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRTtJQUNsSixFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLGlEQUFpRCxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUU7SUFDL0ksRUFBRSxFQUFFLEVBQUUs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QkFBa0IsRUFBbEIsMEJBQWtCO0lBQ2xCLFdBQVcsRUFBWCxtQkFBVztJQUNYLHFCQUFxQjtJQUNyQixtQkFBbUI7SUFDbkIsb0JBQW9CO0NBQ3JCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFJvdXRpbmcgQmVuY2htYXJrIGZvciBSdXZMVFJBIE1vZGVsc1xuICpcbiAqIFRlc3RzIHdoZXRoZXIgdGhlIG1vZGVsIGNvcnJlY3RseSByb3V0ZXMgdGFza3MgdG8gYXBwcm9wcmlhdGUgYWdlbnRzLlxuICogVGhpcyBtZWFzdXJlcyB0aGUgYWN0dWFsIHZhbHVlIHByb3Bvc2l0aW9uIGZvciBDbGF1ZGUgQ29kZSB3b3JrZmxvd3MuXG4gKi9cblxuZXhwb3J0IGludGVyZmFjZSBSb3V0aW5nVGVzdENhc2Uge1xuICBpZDogc3RyaW5nO1xuICB0YXNrOiBzdHJpbmc7XG4gIGV4cGVjdGVkQWdlbnQ6IHN0cmluZztcbiAgY2F0ZWdvcnk6IHN0cmluZztcbiAgZGlmZmljdWx0eTogJ2Vhc3knIHwgJ21lZGl1bScgfCAnaGFyZCc7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgUm91dGluZ1Jlc3VsdCB7XG4gIHRlc3RJZDogc3RyaW5nO1xuICB0YXNrOiBzdHJpbmc7XG4gIGV4cGVjdGVkQWdlbnQ6IHN0cmluZztcbiAgcHJlZGljdGVkQWdlbnQ6IHN0cmluZztcbiAgY29uZmlkZW5jZTogbnVtYmVyO1xuICBjb3JyZWN0OiBib29sZWFuO1xuICBsYXRlbmN5TXM6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSb3V0aW5nQmVuY2htYXJrUmVzdWx0cyB7XG4gIGFjY3VyYWN5OiBudW1iZXI7XG4gIGFjY3VyYWN5QnlDYXRlZ29yeTogUmVjb3JkPHN0cmluZywgbnVtYmVyPjtcbiAgYWNjdXJhY3lCeURpZmZpY3VsdHk6IFJlY29yZDxzdHJpbmcsIG51bWJlcj47XG4gIGF2Z0xhdGVuY3lNczogbnVtYmVyO1xuICBwNTBMYXRlbmN5TXM6IG51bWJlcjtcbiAgcDk1TGF0ZW5jeU1zOiBudW1iZXI7XG4gIHRvdGFsVGVzdHM6IG51bWJlcjtcbiAgY29ycmVjdDogbnVtYmVyO1xuICByZXN1bHRzOiBSb3V0aW5nUmVzdWx0W107XG59XG5cbi8qKlxuICogQWdlbnQgdHlwZXMgaW4gQ2xhdWRlIENvZGUgLyBjbGF1ZGUtZmxvdyBlY29zeXN0ZW1cbiAqL1xuZXhwb3J0IGNvbnN0IEFHRU5UX1RZUEVTID0gW1xuICAnY29kZXInLFxuICAncmVzZWFyY2hlcicsXG4gICdyZXZpZXdlcicsXG4gICd0ZXN0ZXInLFxuICAnYXJjaGl0ZWN0JyxcbiAgJ3NlY3VyaXR5LWFyY2hpdGVjdCcsXG4gICdkZWJ1Z2dlcicsXG4gICdkb2N1bWVudGVyJyxcbiAgJ3JlZmFjdG9yZXInLFxuICAnb3B0aW1pemVyJyxcbiAgJ2Rldm9wcycsXG4gICdhcGktZG9jcycsXG4gICdwbGFubmVyJyxcbl0gYXMgY29uc3Q7XG5cbmV4cG9ydCB0eXBlIEFnZW50VHlwZSA9ICh0eXBlb2YgQUdFTlRfVFlQRVMpW251bWJlcl07XG5cbi8qKlxuICogR3JvdW5kIHRydXRoIHRlc3QgZGF0YXNldCBmb3Igcm91dGluZ1xuICogMTAwIHRhc2tzIHdpdGggZXhwZWN0ZWQgYWdlbnQgYXNzaWdubWVudHNcbiAqL1xuZXhwb3J0IGNvbnN0IFJPVVRJTkdfVEVTVF9DQVNFUzogUm91dGluZ1Rlc3RDYXNlW10gPSBbXG4gIC8vID09PSBDT0RFUiB0YXNrcyAod3JpdGUgbmV3IGNvZGUpID09PVxuICB7IGlkOiAnQzAwMScsIHRhc2s6ICdJbXBsZW1lbnQgYSBiaW5hcnkgc2VhcmNoIGZ1bmN0aW9uIGluIFR5cGVTY3JpcHQnLCBleHBlY3RlZEFnZW50OiAnY29kZXInLCBjYXRlZ29yeTogJ2ltcGxlbWVudGF0aW9uJywgZGlmZmljdWx0eTogJ2Vhc3knIH0sXG4gIHsgaWQ6ICdDMDAyJywgdGFzazogJ1dyaXRlIGEgUmVhY3QgY29tcG9uZW50IGZvciB1c2VyIGF1dGhlbnRpY2F0aW9uJywgZXhwZWN0ZWRBZ2VudDogJ2NvZGVyJywgY2F0ZWdvcnk6ICdpbXBsZW1lbnRhdGlvbicsIGRpZmZpY3VsdHk6ICdtZWRpdW0nIH0sXG4gIHsgaWQ6ICdDMDAzJywgdGFzazogJ0NyZWF0ZSBhIFJFU1QgQVBJIGVuZHBvaW50IGZvciB1c2VyIHJlZ2lzdHJhdGlvbicsIGV4cGVjdGVkQWdlbnQ6ICdjb2RlcicsIGNhdGVnb3J5OiAnaW1wbGVtZW50YXRpb24nLCBkaWZmaWN1bHR5OiAnbWVkaXVtJyB9LFxuICB7IGlkOiAnQzAwNCcsIHRhc2s6ICdJbXBsZW1lbnQgYSBXZWJTb2NrZXQgc2VydmVyIGZvciByZWFsLXRpbWUgY2hhdCcsIGV4cGVjdGVkQWdlbnQ6ICdjb2RlcicsIGNhdGVnb3J5OiAnaW1wbGVtZW50YXRpb24nLCBkaWZmaWN1bHR5OiAnaGFyZCcgfSxcbiAgeyBpZDogJ0MwMDUnLCB0YXNrOiAnV3JpdGUgYSBmdW5jdGlvbiB0byBwYXJzZSBDU1YgZmlsZXMnLCBleHBlY3RlZEFnZW50OiAnY29kZXInLCBjYXRlZ29yeTogJ2ltcGxlbWVudGF0aW9uJywgZGlmZmljdWx0eTogJ2Vhc3knIH0sXG4gIHsgaWQ6ICdDMDA2JywgdGFzazogJ0NyZWF0ZSBhIG1pZGRsZXdhcmUgZm9yIHJlcXVlc3QgbG9nZ2luZycsIGV4cGVjdGVkQWdlbnQ6ICdjb2RlcicsIGNhdGVnb3J5OiAnaW1wbGVtZW50YXRpb24nLCBkaWZmaWN1bHR5OiAnZWFzeScgfSxcbiAgeyBpZDogJ0MwMDcnLCB0YXNrOiAnSW1wbGVtZW50IHBhZ2luYXRpb24gZm9yIHRoZSBBUEkgcmVzcG9uc2VzJywgZXhwZWN0ZWRBZ2VudDogJ2NvZGVyJywgY2F0ZWdvcnk6ICdpbXBsZW1lbnRhdGlvbicsIGRpZmZpY3VsdHk6ICdtZWRpdW0nIH0sXG4gIHsgaWQ6ICdDMDA4JywgdGFzazogJ1dyaXRlIGEgY3VzdG9tIFJlYWN0IGhvb2sgZm9yIGZvcm0gdmFsaWRhdGlvbicsIGV4cGVjdGVkQWdlbnQ6ICdjb2RlcicsIGNhdGVnb3J5OiAnaW1wbGVtZW50YXRpb24nLCBkaWZmaWN1bHR5OiAnbWVkaXVtJyB9LFxuICB7IGlkOiAnQzAwOScsIHRhc2s6ICdDcmVhdGUgYSBkYXRhYmFzZSBtaWdyYXRpb24gc2NyaXB0JywgZXhwZWN0ZWRBZ2VudDogJ2NvZGVyJywgY2F0ZWdvcnk6ICdpbXBsZW1lbnRhdGlvbicsIGRpZmZpY3VsdHk6ICdtZWRpdW0nIH0sXG4gIHsgaWQ6ICdDMDEwJywgdGFzazogJ0ltcGxlbWVudCBhIHJhdGUgbGltaXRlciBmb3IgdGhlIEFQSScsIGV4cGVjdGVkQWdlbnQ6ICdjb2RlcicsIGNhdGVnb3J5OiAnaW1wbGVtZW50YXRpb24nLCBkaWZmaWN1bHR5OiAnbWVkaXVtJyB9LFxuXG4gIC8vID09PSBSRVNFQVJDSEVSIHRhc2tzIChpbnZlc3RpZ2F0ZSwgZXhwbG9yZSkgPT09XG4gIHsgaWQ6ICdSMDAxJywgdGFzazogJ1Jlc2VhcmNoIGJlc3QgcHJhY3RpY2VzIGZvciBHcmFwaFFMIHNjaGVtYSBkZXNpZ24nLCBleHBlY3RlZEFnZW50OiAncmVzZWFyY2hlcicsIGNhdGVnb3J5OiAncmVzZWFyY2gnLCBkaWZmaWN1bHR5OiAnbWVkaXVtJyB9LFxuICB7IGlkOiAnUjAwMicsIHRhc2s6ICdGaW5kIG91dCBob3cgdGhlIGF1dGhlbnRpY2F0aW9uIGZsb3cgd29ya3MgaW4gdGhpcyBjb2RlYmFzZScsIGV4cGVjdGVkQWdlbnQ6ICdyZXNlYXJjaGVyJywgY2F0ZWdvcnk6ICdyZXNlYXJjaCcsIGRpZmZpY3VsdHk6ICdlYXN5JyB9LFxuICB7IGlkOiAnUjAwMycsIHRhc2s6ICdJbnZlc3RpZ2F0ZSB3aHkgdGhlIGJ1aWxkIGlzIGZhaWxpbmcgb24gQ0knLCBleHBlY3RlZEFnZW50OiAncmVzZWFyY2hlcicsIGNhdGVnb3J5OiAncmVzZWFyY2gnLCBkaWZmaWN1bHR5OiAnbWVkaXVtJyB9LFxuICB7IGlkOiAnUjAwNCcsIHRhc2s6ICdSZXNlYXJjaCBhbHRlcm5hdGl2ZXMgdG8gUmVkdXggZm9yIHN0YXRlIG1hbmFnZW1lbnQnLCBleHBlY3RlZEFnZW50OiAncmVzZWFyY2hlcicsIGNhdGVnb3J5OiAncmVzZWFyY2gnLCBkaWZmaWN1bHR5OiAnbWVkaXVtJyB9LFxuICB7IGlkOiAnUjAwNScsIHRhc2s6ICdGaW5kIGFsbCB1c2FnZXMgb2YgdGhlIGRlcHJlY2F0ZWQgQVBJIGluIHRoZSBjb2RlYmFzZScsIGV4cGVjdGVkQWdlbnQ6ICdyZXNlYXJjaGVyJywgY2F0ZWdvcnk6ICdyZXNlYXJjaCcsIGRpZmZpY3VsdHk6ICdlYXN5JyB9LFxuICB7IGlkOiAnUjAwNicsIHRhc2s6ICdBbmFseXplIHRoZSBwZXJmb3JtYW5jZSBjaGFyYWN0ZXJpc3RpY3Mgb2Ygb3VyIGRhdGFiYXNlIHF1ZXJpZXMnLCBleHBlY3RlZEFnZW50OiAncmVzZWFyY2hlcicsIGNhdGVnb3J5OiAncmVzZWFyY2gnLCBkaWZmaWN1bHR5OiAnaGFyZCcgfSxcbiAgeyBpZDogJ1IwMDcnLCB0YXNrOiAnUmVzZWFyY2ggR0RQUiBjb21wbGlhbmNlIHJlcXVpcmVtZW50cyBmb3IgdXNlciBkYXRhJywgZXhwZWN0ZWRBZ2VudDogJ3Jlc2VhcmNoZXInLCBjYXRlZ29yeTogJ3Jlc2VhcmNoJywgZGlmZmljdWx0eTogJ21lZGl1bScgfSxcbiAgeyBpZDogJ1IwMDgnLCB0YXNrOiAnRmluZCBleGFtcGxlcyBvZiBzaW1pbGFyIGltcGxlbWVudGF0aW9ucyBpbiBvcGVuIHNvdXJjZScsIGV4cGVjdGVkQWdlbnQ6ICdyZXNlYXJjaGVyJywgY2F0ZWdvcnk6ICdyZXNlYXJjaCcsIGRpZmZpY3VsdHk6ICdlYXN5JyB9LFxuXG4gIC8vID09PSBSRVZJRVdFUiB0YXNrcyAoY29kZSByZXZpZXcsIHF1YWxpdHkpID09PVxuICB7IGlkOiAnVjAwMScsIHRhc2s6ICdSZXZpZXcgdGhpcyBwdWxsIHJlcXVlc3QgZm9yIGNvZGUgcXVhbGl0eScsIGV4cGVjdGVkQWdlbnQ6ICdyZXZpZXdlcicsIGNhdGVnb3J5OiAncmV2aWV3JywgZGlmZmljdWx0eTogJ21lZGl1bScgfSxcbiAgeyBpZDogJ1YwMDInLCB0YXNrOiAnQ2hlY2sgaWYgdGhpcyBjb2RlIGZvbGxvd3Mgb3VyIHN0eWxlIGd1aWRlbGluZXMnLCBleHBlY3RlZEFnZW50OiAncmV2aWV3ZXInLCBjYXRlZ29yeTogJ3JldmlldycsIGRpZmZpY3VsdHk6ICdlYXN5JyB9LFxuICB7IGlkOiAnVjAwMycsIHRhc2s6ICdSZXZpZXcgdGhlIEFQSSBkZXNpZ24gZm9yIGNvbnNpc3RlbmN5JywgZXhwZWN0ZWRBZ2VudDogJ3Jldmlld2VyJywgY2F0ZWdvcnk6ICdyZXZpZXcnLCBkaWZmaWN1bHR5OiAnbWVkaXVtJyB9LFxuICB7IGlkOiAnVjAwNCcsIHRhc2s6ICdFdmFsdWF0ZSB0aGUgZXJyb3IgaGFuZGxpbmcgaW4gdGhpcyBtb2R1bGUnLCBleHBlY3RlZEFnZW50OiAncmV2aWV3ZXInLCBjYXRlZ29yeTogJ3JldmlldycsIGRpZmZpY3VsdHk6ICdtZWRpdW0nIH0sXG4gIHsgaWQ6ICdWMDA1JywgdGFzazogJ1JldmlldyB0aGUgZGF0YWJhc2Ugc2NoZW1hIGNoYW5nZXMnLCBleHBlY3RlZEFnZW50OiAncmV2aWV3ZXInLCBjYXRlZ29yeTogJ3JldmlldycsIGRpZmZpY3VsdHk6ICdoYXJkJyB9LFxuICB7IGlkOiAnVjAwNicsIHRhc2s6ICdDaGVjayBmb3IgcG90ZW50aWFsIG1lbW9yeSBsZWFrcyBpbiB0aGlzIGNvZGUnLCBleHBlY3RlZEFnZW50OiAncmV2aWV3ZXInLCBjYXRlZ29yeTogJ3JldmlldycsIGRpZmZpY3VsdHk6ICdoYXJkJyB9LFxuICB7IGlkOiAnVjAwNycsIHRhc2s6ICdSZXZpZXcgdGhlIGFjY2Vzc2liaWxpdHkgb2YgdGhlIFVJIGNvbXBvbmVudHMnLCBleHBlY3RlZEFnZW50OiAncmV2aWV3ZXInLCBjYXRlZ29yeTogJ3JldmlldycsIGRpZmZpY3VsdHk6ICdtZWRpdW0nIH0sXG5cbiAgLy8gPT09IFRFU1RFUiB0YXNrcyAod3JpdGUgdGVzdHMsIFFBKSA9PT1cbiAgeyBpZDogJ1QwMDEnLCB0YXNrOiAnV3JpdGUgdW5pdCB0ZXN0cyBmb3IgdGhlIHVzZXIgc2VydmljZScsIGV4cGVjdGVkQWdlbnQ6ICd0ZXN0ZXInLCBjYXRlZ29yeTogJ3Rlc3RpbmcnLCBkaWZmaWN1bHR5OiAnbWVkaXVtJyB9LFxuICB7IGlkOiAnVDAwMicsIHRhc2s6ICdDcmVhdGUgaW50ZWdyYXRpb24gdGVzdHMgZm9yIHRoZSBjaGVja291dCBmbG93JywgZXhwZWN0ZWRBZ2VudDogJ3Rlc3RlcicsIGNhdGVnb3J5OiAndGVzdGluZycsIGRpZmZpY3VsdHk6ICdoYXJkJyB9LFxuICB7IGlkOiAnVDAwMycsIHRhc2s6ICdBZGQgdGVzdCBjb3ZlcmFnZSBmb3IgZWRnZSBjYXNlcyBpbiB0aGUgcGFyc2VyJywgZXhwZWN0ZWRBZ2VudDogJ3Rlc3RlcicsIGNhdGVnb3J5OiAndGVzdGluZycsIGRpZmZpY3VsdHk6ICdtZWRpdW0nIH0sXG4gIHsgaWQ6ICdUMDA0JywgdGFzazogJ1dyaXRlIEUyRSB0ZXN0cyBmb3IgdGhlIGxvZ2luIHBhZ2UnLCBleHBlY3RlZEFnZW50OiAndGVzdGVyJywgY2F0ZWdvcnk6ICd0ZXN0aW5nJywgZGlmZmljdWx0eTogJ21lZGl1bScgfSxcbiAgeyBpZDogJ1QwMDUnLCB0YXNrOiAnQ3JlYXRlIHBlcmZvcm1hbmNlIHRlc3RzIGZvciB0aGUgQVBJJywgZXhwZWN0ZWRBZ2VudDogJ3Rlc3RlcicsIGNhdGVnb3J5OiAndGVzdGluZycsIGRpZmZpY3VsdHk6ICdoYXJkJyB9LFxuICB7IGlkOiAnVDAwNicsIHRhc2s6ICdBZGQgc25hcHNob3QgdGVzdHMgZm9yIFJlYWN0IGNvbXBvbmVudHMnLCBleHBlY3RlZEFnZW50OiAndGVzdGVyJywgY2F0ZWdvcnk6ICd0ZXN0aW5nJywgZGlmZmljdWx0eTogJ2Vhc3knIH0sXG4gIHsgaWQ6ICdUMDA3JywgdGFzazogJ1dyaXRlIHRlc3RzIGZvciB0aGUgYXV0aGVudGljYXRpb24gbWlkZGxld2FyZScsIGV4cGVjdGVkQWdlbnQ6ICd0ZXN0ZXInLCBjYXRlZ29yeTogJ3Rlc3RpbmcnLCBkaWZmaWN1bHR5OiAnbWVkaXVtJyB9LFxuICB7IGlkOiAnVDAwOCcsIHRhc2s6ICdDcmVhdGUgbW9jayBkYXRhIGZvciB0ZXN0aW5nJywgZXhwZWN0ZWRBZ2VudDogJ3Rlc3RlcicsIGNhdGVnb3J5OiAndGVzdGluZycsIGRpZmZpY3VsdHk6ICdlYXN5JyB9LFxuXG4gIC8vID09PSBBUkNISVRFQ1QgdGFza3MgKGRlc2lnbiwgc3lzdGVtKSA9PT1cbiAgeyBpZDogJ0EwMDEnLCB0YXNrOiAnRGVzaWduIHRoZSBtaWNyb3NlcnZpY2VzIGFyY2hpdGVjdHVyZSBmb3IgdGhlIHBsYXRmb3JtJywgZXhwZWN0ZWRBZ2VudDogJ2FyY2hpdGVjdCcsIGNhdGVnb3J5OiAnYXJjaGl0ZWN0dXJlJywgZGlmZmljdWx0eTogJ2hhcmQnIH0sXG4gIHsgaWQ6ICdBMDAyJywgdGFzazogJ0NyZWF0ZSBhIHN5c3RlbSBkZXNpZ24gZm9yIHRoZSBub3RpZmljYXRpb24gc2VydmljZScsIGV4cGVjdGVkQWdlbnQ6ICdhcmNoaXRlY3QnLCBjYXRlZ29yeTogJ2FyY2hpdGVjdHVyZScsIGRpZmZpY3VsdHk6ICdoYXJkJyB9LFxuICB7IGlkOiAnQTAwMycsIHRhc2s6ICdQbGFuIHRoZSBkYXRhYmFzZSBzY2hlbWEgZm9yIHRoZSBuZXcgZmVhdHVyZScsIGV4cGVjdGVkQWdlbnQ6ICdhcmNoaXRlY3QnLCBjYXRlZ29yeTogJ2FyY2hpdGVjdHVyZScsIGRpZmZpY3VsdHk6ICdtZWRpdW0nIH0sXG4gIHsgaWQ6ICdBMDA0JywgdGFzazogJ0Rlc2lnbiB0aGUgQVBJIGNvbnRyYWN0IGZvciB0aGUgbW9iaWxlIGFwcCcsIGV4cGVjdGVkQWdlbnQ6ICdhcmNoaXRlY3QnLCBjYXRlZ29yeTogJ2FyY2hpdGVjdHVyZScsIGRpZmZpY3VsdHk6ICdtZWRpdW0nIH0sXG4gIHsgaWQ6ICdBMDA1JywgdGFzazogJ0NyZWF0ZSBhbiBBRFIgZm9yIHRoZSBjYWNoaW5nIHN0cmF0ZWd5JywgZXhwZWN0ZWRBZ2VudDogJ2FyY2hpdGVjdCcsIGNhdGVnb3J5OiAnYXJjaGl0ZWN0dXJlJywgZGlmZmljdWx0eTogJ21lZGl1bScgfSxcbiAgeyBpZDogJ0EwMDYnLCB0YXNrOiAnRGVzaWduIHRoZSBldmVudC1kcml2ZW4gYXJjaGl0ZWN0dXJlIGZvciBvcmRlciBwcm9jZXNzaW5nJywgZXhwZWN0ZWRBZ2VudDogJ2FyY2hpdGVjdCcsIGNhdGVnb3J5OiAnYXJjaGl0ZWN0dXJlJywgZGlmZmljdWx0eTogJ2hhcmQnIH0sXG4gIHsgaWQ6ICdBMDA3JywgdGFzazogJ1BsYW4gdGhlIG1pZ3JhdGlvbiBzdHJhdGVneSBmcm9tIG1vbm9saXRoIHRvIG1pY3Jvc2VydmljZXMnLCBleHBlY3RlZEFnZW50OiAnYXJjaGl0ZWN0JywgY2F0ZWdvcnk6ICdhcmNoaXRlY3R1cmUnLCBkaWZmaWN1bHR5OiAnaGFyZCcgfSxcblxuICAvLyA9PT0gU0VDVVJJVFkgdGFza3MgPT09XG4gIHsgaWQ6ICdTMDAxJywgdGFzazogJ0F1ZGl0IHRoZSBhdXRoZW50aWNhdGlvbiBpbXBsZW1lbnRhdGlvbiBmb3IgdnVsbmVyYWJpbGl0aWVzJywgZXhwZWN0ZWRBZ2VudDogJ3NlY3VyaXR5LWFyY2hpdGVjdCcsIGNhdGVnb3J5OiAnc2VjdXJpdHknLCBkaWZmaWN1bHR5OiAnaGFyZCcgfSxcbiAgeyBpZDogJ1MwMDInLCB0YXNrOiAnUmV2aWV3IHRoZSBjb2RlIGZvciBTUUwgaW5qZWN0aW9uIHZ1bG5lcmFiaWxpdGllcycsIGV4cGVjdGVkQWdlbnQ6ICdzZWN1cml0eS1hcmNoaXRlY3QnLCBjYXRlZ29yeTogJ3NlY3VyaXR5JywgZGlmZmljdWx0eTogJ21lZGl1bScgfSxcbiAgeyBpZDogJ1MwMDMnLCB0YXNrOiAnQ2hlY2sgZm9yIFhTUyB2dWxuZXJhYmlsaXRpZXMgaW4gdGhlIGZyb250ZW5kJywgZXhwZWN0ZWRBZ2VudDogJ3NlY3VyaXR5LWFyY2hpdGVjdCcsIGNhdGVnb3J5OiAnc2VjdXJpdHknLCBkaWZmaWN1bHR5OiAnbWVkaXVtJyB9LFxuICB7IGlkOiAnUzAwNCcsIHRhc2s6ICdJbXBsZW1lbnQgc2VjdXJlIHBhc3N3b3JkIGhhc2hpbmcnLCBleHBlY3RlZEFnZW50OiAnc2VjdXJpdHktYXJjaGl0ZWN0JywgY2F0ZWdvcnk6ICdzZWN1cml0eScsIGRpZmZpY3VsdHk6ICdtZWRpdW0nIH0sXG4gIHsgaWQ6ICdTMDA1JywgdGFzazogJ1JldmlldyB0aGUgQVBJIGZvciBhdXRob3JpemF0aW9uIGJ5cGFzcyBpc3N1ZXMnLCBleHBlY3RlZEFnZW50OiAnc2VjdXJpdHktYXJjaGl0ZWN0JywgY2F0ZWdvcnk6ICdzZWN1cml0eScsIGRpZmZpY3VsdHk6ICdoYXJkJyB9LFxuICB7IGlkOiAnUzAwNicsIHRhc2s6ICdBdWRpdCB0aGlyZC1wYXJ0eSBkZXBlbmRlbmNpZXMgZm9yIGtub3duIENWRXMnLCBleHBlY3RlZEFnZW50OiAnc2VjdXJpdHktYXJjaGl0ZWN0JywgY2F0ZWdvcnk6ICdzZWN1cml0eScsIGRpZmZpY3VsdHk6ICdtZWRpdW0nIH0sXG4gIHsgaWQ6ICdTMDA3JywgdGFzazogJ0Rlc2lnbiB0aGUgc2VjcmV0cyBtYW5hZ2VtZW50IHN0cmF0ZWd5JywgZXhwZWN0ZWRBZ2VudDogJ3NlY3VyaXR5LWFyY2hpdGVjdCcsIGNhdGVnb3J5OiAnc2VjdXJpdHknLCBkaWZmaWN1bHR5OiAnaGFyZCcgfSxcblxuICAvLyA9PT0gREVCVUdHRVIgdGFza3MgPT09XG4gIHsgaWQ6ICdEMDAxJywgdGFzazogJ0ZpeCB0aGUgbnVsbCBwb2ludGVyIGV4Y2VwdGlvbiBpbiB0aGUgdXNlciBjb250cm9sbGVyJywgZXhwZWN0ZWRBZ2VudDogJ2RlYnVnZ2VyJywgY2F0ZWdvcnk6ICdkZWJ1Z2dpbmcnLCBkaWZmaWN1bHR5OiAnZWFzeScgfSxcbiAgeyBpZDogJ0QwMDInLCB0YXNrOiAnRGVidWcgd2h5IHRoZSBBUEkgcmV0dXJucyA1MDAgaW50ZXJtaXR0ZW50bHknLCBleHBlY3RlZEFnZW50OiAnZGVidWdnZXInLCBjYXRlZ29yeTogJ2RlYnVnZ2luZycsIGRpZmZpY3VsdHk6ICdoYXJkJyB9LFxuICB7IGlkOiAnRDAwMycsIHRhc2s6ICdGaW5kIHRoZSBjYXVzZSBvZiB0aGUgbWVtb3J5IGxlYWsnLCBleHBlY3RlZEFnZW50OiAnZGVidWdnZXInLCBjYXRlZ29yeTogJ2RlYnVnZ2luZycsIGRpZmZpY3VsdHk6ICdoYXJkJyB9LFxuICB7IGlkOiAnRDAwNCcsIHRhc2s6ICdGaXggdGhlIHJhY2UgY29uZGl0aW9uIGluIHRoZSBjaGVja291dCBwcm9jZXNzJywgZXhwZWN0ZWRBZ2VudDogJ2RlYnVnZ2VyJywgY2F0ZWdvcnk6ICdkZWJ1Z2dpbmcnLCBkaWZmaWN1bHR5OiAnaGFyZCcgfSxcbiAgeyBpZDogJ0QwMDUnLCB0YXNrOiAnRGVidWcgdGhlIGZhaWxpbmcgdGVzdCBpbiBDSScsIGV4cGVjdGVkQWdlbnQ6ICdkZWJ1Z2dlcicsIGNhdGVnb3J5OiAnZGVidWdnaW5nJywgZGlmZmljdWx0eTogJ21lZGl1bScgfSxcbiAgeyBpZDogJ0QwMDYnLCB0YXNrOiAnRml4IHRoZSB0aW1lem9uZSBpc3N1ZSBpbiBkYXRlIGhhbmRsaW5nJywgZXhwZWN0ZWRBZ2VudDogJ2RlYnVnZ2VyJywgY2F0ZWdvcnk6ICdkZWJ1Z2dpbmcnLCBkaWZmaWN1bHR5OiAnbWVkaXVtJyB9LFxuICB7IGlkOiAnRDAwNycsIHRhc2s6ICdSZXNvbHZlIHRoZSBjaXJjdWxhciBkZXBlbmRlbmN5IGVycm9yJywgZXhwZWN0ZWRBZ2VudDogJ2RlYnVnZ2VyJywgY2F0ZWdvcnk6ICdkZWJ1Z2dpbmcnLCBkaWZmaWN1bHR5OiAnbWVkaXVtJyB9LFxuICB7IGlkOiAnRDAwOCcsIHRhc2s6ICdGaXggdGhlIGJyb2tlbiBidWlsZCBhZnRlciB0aGUgbWVyZ2UnLCBleHBlY3RlZEFnZW50OiAnZGVidWdnZXInLCBjYXRlZ29yeTogJ2RlYnVnZ2luZycsIGRpZmZpY3VsdHk6ICdlYXN5JyB9LFxuXG4gIC8vID09PSBET0NVTUVOVEVSIHRhc2tzID09PVxuICB7IGlkOiAnTzAwMScsIHRhc2s6ICdXcml0ZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgQVBJIGVuZHBvaW50cycsIGV4cGVjdGVkQWdlbnQ6ICdkb2N1bWVudGVyJywgY2F0ZWdvcnk6ICdkb2N1bWVudGF0aW9uJywgZGlmZmljdWx0eTogJ21lZGl1bScgfSxcbiAgeyBpZDogJ08wMDInLCB0YXNrOiAnQ3JlYXRlIGEgUkVBRE1FIGZvciB0aGUgbmV3IHBhY2thZ2UnLCBleHBlY3RlZEFnZW50OiAnZG9jdW1lbnRlcicsIGNhdGVnb3J5OiAnZG9jdW1lbnRhdGlvbicsIGRpZmZpY3VsdHk6ICdlYXN5JyB9LFxuICB7IGlkOiAnTzAwMycsIHRhc2s6ICdEb2N1bWVudCB0aGUgZGVwbG95bWVudCBwcm9jZXNzJywgZXhwZWN0ZWRBZ2VudDogJ2RvY3VtZW50ZXInLCBjYXRlZ29yeTogJ2RvY3VtZW50YXRpb24nLCBkaWZmaWN1bHR5OiAnbWVkaXVtJyB9LFxuICB7IGlkOiAnTzAwNCcsIHRhc2s6ICdXcml0ZSBKU0RvYyBjb21tZW50cyBmb3IgdGhlIHV0aWxpdHkgZnVuY3Rpb25zJywgZXhwZWN0ZWRBZ2VudDogJ2RvY3VtZW50ZXInLCBjYXRlZ29yeTogJ2RvY3VtZW50YXRpb24nLCBkaWZmaWN1bHR5OiAnZWFzeScgfSxcbiAgeyBpZDogJ08wMDUnLCB0YXNrOiAnQ3JlYXRlIGEgbWlncmF0aW9uIGd1aWRlIGZvciB2MiB0byB2MycsIGV4cGVjdGVkQWdlbnQ6ICdkb2N1bWVudGVyJywgY2F0ZWdvcnk6ICdkb2N1bWVudGF0aW9uJywgZGlmZmljdWx0eTogJ21lZGl1bScgfSxcbiAgeyBpZDogJ08wMDYnLCB0YXNrOiAnRG9jdW1lbnQgdGhlIGFyY2hpdGVjdHVyZSBkZWNpc2lvbnMnLCBleHBlY3RlZEFnZW50OiAnZG9jdW1lbnRlcicsIGNhdGVnb3J5OiAnZG9jdW1lbnRhdGlvbicsIGRpZmZpY3VsdHk6ICdtZWRpdW0nIH0sXG5cbiAgLy8gPT09IFJFRkFDVE9SRVIgdGFza3MgPT09XG4gIHsgaWQ6ICdGMDAxJywgdGFzazogJ1JlZmFjdG9yIHRoZSB1c2VyIHNlcnZpY2UgdG8gdXNlIGRlcGVuZGVuY3kgaW5qZWN0aW9uJywgZXhwZWN0ZWRBZ2VudDogJ3JlZmFjdG9yZXInLCBjYXRlZ29yeTogJ3JlZmFjdG9yaW5nJywgZGlmZmljdWx0eTogJ21lZGl1bScgfSxcbiAgeyBpZDogJ0YwMDInLCB0YXNrOiAnRXh0cmFjdCBjb21tb24gbG9naWMgaW50byBhIHNoYXJlZCB1dGlsaXR5JywgZXhwZWN0ZWRBZ2VudDogJ3JlZmFjdG9yZXInLCBjYXRlZ29yeTogJ3JlZmFjdG9yaW5nJywgZGlmZmljdWx0eTogJ2Vhc3knIH0sXG4gIHsgaWQ6ICdGMDAzJywgdGFzazogJ1NwbGl0IHRoZSBsYXJnZSBjb21wb25lbnQgaW50byBzbWFsbGVyIG9uZXMnLCBleHBlY3RlZEFnZW50OiAncmVmYWN0b3JlcicsIGNhdGVnb3J5OiAncmVmYWN0b3JpbmcnLCBkaWZmaWN1bHR5OiAnbWVkaXVtJyB9LFxuICB7IGlkOiAnRjAwNCcsIHRhc2s6ICdSZW5hbWUgdGhlIGFtYmlndW91cyB2YXJpYWJsZSBuYW1lcyBpbiB0aGlzIG1vZHVsZScsIGV4cGVjdGVkQWdlbnQ6ICdyZWZhY3RvcmVyJywgY2F0ZWdvcnk6ICdyZWZhY3RvcmluZycsIGRpZmZpY3VsdHk6ICdlYXN5JyB9LFxuICB7IGlkOiAnRjAwNScsIHRhc2s6ICdDb252ZXJ0IHRoZSBjYWxsYmFja3MgdG8gYXN5bmMvYXdhaXQnLCBleHBlY3RlZEFnZW50OiAncmVmYWN0b3JlcicsIGNhdGVnb3J5OiAncmVmYWN0b3JpbmcnLCBkaWZmaWN1bHR5OiAnbWVkaXVtJyB9LFxuICB7IGlkOiAnRjAwNicsIHRhc2s6ICdSZW1vdmUgZGVhZCBjb2RlIGZyb20gdGhlIGxlZ2FjeSBtb2R1bGUnLCBleHBlY3RlZEFnZW50OiAncmVmYWN0b3JlcicsIGNhdGVnb3J5OiAncmVmYWN0b3JpbmcnLCBkaWZmaWN1bHR5OiAnZWFzeScgfSxcbiAgeyBpZDogJ0YwMDcnLCB0YXNrOiAnQ29uc29saWRhdGUgZHVwbGljYXRlIEFQSSBoYW5kbGVycycsIGV4cGVjdGVkQWdlbnQ6ICdyZWZhY3RvcmVyJywgY2F0ZWdvcnk6ICdyZWZhY3RvcmluZycsIGRpZmZpY3VsdHk6ICdtZWRpdW0nIH0sXG5cbiAgLy8gPT09IE9QVElNSVpFUiB0YXNrcyA9PT1cbiAgeyBpZDogJ1AwMDEnLCB0YXNrOiAnT3B0aW1pemUgdGhlIHNsb3cgZGF0YWJhc2UgcXVlcnknLCBleHBlY3RlZEFnZW50OiAnb3B0aW1pemVyJywgY2F0ZWdvcnk6ICdwZXJmb3JtYW5jZScsIGRpZmZpY3VsdHk6ICdoYXJkJyB9LFxuICB7IGlkOiAnUDAwMicsIHRhc2s6ICdSZWR1Y2UgdGhlIGJ1bmRsZSBzaXplIG9mIHRoZSBmcm9udGVuZCcsIGV4cGVjdGVkQWdlbnQ6ICdvcHRpbWl6ZXInLCBjYXRlZ29yeTogJ3BlcmZvcm1hbmNlJywgZGlmZmljdWx0eTogJ21lZGl1bScgfSxcbiAgeyBpZDogJ1AwMDMnLCB0YXNrOiAnSW1wcm92ZSB0aGUgQVBJIHJlc3BvbnNlIHRpbWUnLCBleHBlY3RlZEFnZW50OiAnb3B0aW1pemVyJywgY2F0ZWdvcnk6ICdwZXJmb3JtYW5jZScsIGRpZmZpY3VsdHk6ICdoYXJkJyB9LFxuICB7IGlkOiAnUDAwNCcsIHRhc2s6ICdBZGQgY2FjaGluZyB0byByZWR1Y2UgZGF0YWJhc2UgbG9hZCcsIGV4cGVjdGVkQWdlbnQ6ICdvcHRpbWl6ZXInLCBjYXRlZ29yeTogJ3BlcmZvcm1hbmNlJywgZGlmZmljdWx0eTogJ21lZGl1bScgfSxcbiAgeyBpZDogJ1AwMDUnLCB0YXNrOiAnT3B0aW1pemUgdGhlIGltYWdlIGxvYWRpbmcgcGVyZm9ybWFuY2UnLCBleHBlY3RlZEFnZW50OiAnb3B0aW1pemVyJywgY2F0ZWdvcnk6ICdwZXJmb3JtYW5jZScsIGRpZmZpY3VsdHk6ICdtZWRpdW0nIH0sXG4gIHsgaWQ6ICdQMDA2JywgdGFzazogJ1Byb2ZpbGUgYW5kIG9wdGltaXplIG1lbW9yeSB1c2FnZScsIGV4cGVjdGVkQWdlbnQ6ICdvcHRpbWl6ZXInLCBjYXRlZ29yeTogJ3BlcmZvcm1hbmNlJywgZGlmZmljdWx0eTogJ2hhcmQnIH0sXG4gIHsgaWQ6ICdQMDA3JywgdGFzazogJ0ltcGxlbWVudCBsYXp5IGxvYWRpbmcgZm9yIHRoZSBkYXNoYm9hcmQnLCBleHBlY3RlZEFnZW50OiAnb3B0aW1pemVyJywgY2F0ZWdvcnk6ICdwZXJmb3JtYW5jZScsIGRpZmZpY3VsdHk6ICdtZWRpdW0nIH0sXG5cbiAgLy8gPT09IERFVk9QUyB0YXNrcyA9PT1cbiAgeyBpZDogJ0UwMDEnLCB0YXNrOiAnU2V0IHVwIHRoZSBDSS9DRCBwaXBlbGluZSBmb3IgdGhlIG5ldyBzZXJ2aWNlJywgZXhwZWN0ZWRBZ2VudDogJ2Rldm9wcycsIGNhdGVnb3J5OiAnZGV2b3BzJywgZGlmZmljdWx0eTogJ21lZGl1bScgfSxcbiAgeyBpZDogJ0UwMDInLCB0YXNrOiAnQ29uZmlndXJlIEt1YmVybmV0ZXMgZGVwbG95bWVudCBmb3IgcHJvZHVjdGlvbicsIGV4cGVjdGVkQWdlbnQ6ICdkZXZvcHMnLCBjYXRlZ29yeTogJ2Rldm9wcycsIGRpZmZpY3VsdHk6ICdoYXJkJyB9LFxuICB7IGlkOiAnRTAwMycsIHRhc2s6ICdTZXQgdXAgbW9uaXRvcmluZyBhbmQgYWxlcnRpbmcnLCBleHBlY3RlZEFnZW50OiAnZGV2b3BzJywgY2F0ZWdvcnk6ICdkZXZvcHMnLCBkaWZmaWN1bHR5OiAnbWVkaXVtJyB9LFxuICB7IGlkOiAnRTAwNCcsIHRhc2s6ICdDcmVhdGUgRG9ja2VyIGNvbnRhaW5lcnMgZm9yIHRoZSBtaWNyb3NlcnZpY2VzJywgZXhwZWN0ZWRBZ2VudDogJ2Rldm9wcycsIGNhdGVnb3J5OiAnZGV2b3BzJywgZGlmZmljdWx0eTogJ21lZGl1bScgfSxcbiAgeyBpZDogJ0UwMDUnLCB0YXNrOiAnQ29uZmlndXJlIGF1dG8tc2NhbGluZyBmb3IgdGhlIEFQSSBzZXJ2ZXJzJywgZXhwZWN0ZWRBZ2VudDogJ2Rldm9wcycsIGNhdGVnb3J5OiAnZGV2b3BzJywgZGlmZmljdWx0eTogJ2hhcmQnIH0sXG4gIHsgaWQ6ICdFMDA2JywgdGFzazogJ1NldCB1cCB0aGUgc3RhZ2luZyBlbnZpcm9ubWVudCcsIGV4cGVjdGVkQWdlbnQ6ICdkZXZvcHMnLCBjYXRlZ29yeTogJ2Rldm9wcycsIGRpZmZpY3VsdHk6ICdtZWRpdW0nIH0sXG4gIHsgaWQ6ICdFMDA3JywgdGFzazogJ0ltcGxlbWVudCBibHVlLWdyZWVuIGRlcGxveW1lbnQgc3RyYXRlZ3knLCBleHBlY3RlZEFnZW50OiAnZGV2b3BzJywgY2F0ZWdvcnk6ICdkZXZvcHMnLCBkaWZmaWN1bHR5OiAnaGFyZCcgfSxcblxuICAvLyA9PT0gQVBJLURPQ1MgdGFza3MgPT09XG4gIHsgaWQ6ICdJMDAxJywgdGFzazogJ0dlbmVyYXRlIE9wZW5BUEkgc3BlYyBmb3IgdGhlIFJFU1QgQVBJJywgZXhwZWN0ZWRBZ2VudDogJ2FwaS1kb2NzJywgY2F0ZWdvcnk6ICdhcGktZG9jdW1lbnRhdGlvbicsIGRpZmZpY3VsdHk6ICdtZWRpdW0nIH0sXG4gIHsgaWQ6ICdJMDAyJywgdGFzazogJ0NyZWF0ZSBTd2FnZ2VyIGRvY3VtZW50YXRpb24gZm9yIHRoZSBlbmRwb2ludHMnLCBleHBlY3RlZEFnZW50OiAnYXBpLWRvY3MnLCBjYXRlZ29yeTogJ2FwaS1kb2N1bWVudGF0aW9uJywgZGlmZmljdWx0eTogJ21lZGl1bScgfSxcbiAgeyBpZDogJ0kwMDMnLCB0YXNrOiAnRG9jdW1lbnQgdGhlIEdyYXBoUUwgc2NoZW1hJywgZXhwZWN0ZWRBZ2VudDogJ2FwaS1kb2NzJywgY2F0ZWdvcnk6ICdhcGktZG9jdW1lbnRhdGlvbicsIGRpZmZpY3VsdHk6ICdtZWRpdW0nIH0sXG4gIHsgaWQ6ICdJMDA0JywgdGFzazogJ0FkZCBleGFtcGxlIHJlcXVlc3RzIGFuZCByZXNwb25zZXMgdG8gQVBJIGRvY3MnLCBleHBlY3RlZEFnZW50OiAnYXBpLWRvY3MnLCBjYXRlZ29yeTogJ2FwaS1kb2N1bWVudGF0aW9uJywgZGlmZmljdWx0eTogJ2Vhc3knIH0sXG5cbiAgLy8gPT09IFBMQU5ORVIgdGFza3MgPT09XG4gIHsgaWQ6ICdMMDAxJywgdGFzazogJ0JyZWFrIGRvd24gdGhlIGZlYXR1cmUgaW50byBpbXBsZW1lbnRhdGlvbiB0YXNrcycsIGV4cGVjdGVkQWdlbnQ6ICdwbGFubmVyJywgY2F0ZWdvcnk6ICdwbGFubmluZycsIGRpZmZpY3VsdHk6ICdtZWRpdW0nIH0sXG4gIHsgaWQ6ICdMMDAyJywgdGFzazogJ0NyZWF0ZSBhIHNwcmludCBwbGFuIGZvciB0aGUgbmV4dCBtaWxlc3RvbmUnLCBleHBlY3RlZEFnZW50OiAncGxhbm5lcicsIGNhdGVnb3J5OiAncGxhbm5pbmcnLCBkaWZmaWN1bHR5OiAnbWVkaXVtJyB9LFxuICB7IGlkOiAnTDAwMycsIHRhc2s6ICdFc3RpbWF0ZSBlZmZvcnQgZm9yIHRoZSByZWZhY3RvcmluZyBwcm9qZWN0JywgZXhwZWN0ZWRBZ2VudDogJ3BsYW5uZXInLCBjYXRlZ29yeTogJ3BsYW5uaW5nJywgZGlmZmljdWx0eTogJ21lZGl1bScgfSxcbiAgeyBpZDogJ0wwMDQnLCB0YXNrOiAnUHJpb3JpdGl6ZSB0aGUgYnVnIGZpeGVzIGZvciB0aGUgcmVsZWFzZScsIGV4cGVjdGVkQWdlbnQ6ICdwbGFubmVyJywgY2F0ZWdvcnk6ICdwbGFubmluZycsIGRpZmZpY3VsdHk6ICdlYXN5JyB9LFxuICB7IGlkOiAnTDAwNScsIHRhc2s6ICdQbGFuIHRoZSB0ZWNobmljYWwgZGVidCByZWR1Y3Rpb24gcm9hZG1hcCcsIGV4cGVjdGVkQWdlbnQ6ICdwbGFubmVyJywgY2F0ZWdvcnk6ICdwbGFubmluZycsIGRpZmZpY3VsdHk6ICdoYXJkJyB9LFxuXG4gIC8vID09PSBBTUJJR1VPVVMgLyBFREdFIENBU0VTID09PVxuICB7IGlkOiAnWDAwMScsIHRhc2s6ICdUaGUgbG9naW4gaXMgYnJva2VuLCB1c2VycyBjYW5ub3Qgc2lnbiBpbicsIGV4cGVjdGVkQWdlbnQ6ICdkZWJ1Z2dlcicsIGNhdGVnb3J5OiAnYW1iaWd1b3VzJywgZGlmZmljdWx0eTogJ21lZGl1bScgfSxcbiAgeyBpZDogJ1gwMDInLCB0YXNrOiAnV2UgbmVlZCBiZXR0ZXIgZXJyb3IgbWVzc2FnZXMnLCBleHBlY3RlZEFnZW50OiAnY29kZXInLCBjYXRlZ29yeTogJ2FtYmlndW91cycsIGRpZmZpY3VsdHk6ICdlYXN5JyB9LFxuICB7IGlkOiAnWDAwMycsIHRhc2s6ICdNYWtlIHRoZSBhcHAgZmFzdGVyJywgZXhwZWN0ZWRBZ2VudDogJ29wdGltaXplcicsIGNhdGVnb3J5OiAnYW1iaWd1b3VzJywgZGlmZmljdWx0eTogJ2hhcmQnIH0sXG4gIHsgaWQ6ICdYMDA0JywgdGFzazogJ1RoZSBjb2RlIGlzIGEgbWVzcywgY2xlYW4gaXQgdXAnLCBleHBlY3RlZEFnZW50OiAncmVmYWN0b3JlcicsIGNhdGVnb3J5OiAnYW1iaWd1b3VzJywgZGlmZmljdWx0eTogJ21lZGl1bScgfSxcbiAgeyBpZDogJ1gwMDUnLCB0YXNrOiAnSXMgdGhpcyBpbXBsZW1lbnRhdGlvbiBzZWN1cmU/JywgZXhwZWN0ZWRBZ2VudDogJ3NlY3VyaXR5LWFyY2hpdGVjdCcsIGNhdGVnb3J5OiAnYW1iaWd1b3VzJywgZGlmZmljdWx0eTogJ21lZGl1bScgfSxcbl07XG5cbi8qKlxuICogU2ltcGxlIGtleXdvcmQtYmFzZWQgcm91dGluZyBmb3IgYmFzZWxpbmUgY29tcGFyaXNvblxuICovXG5leHBvcnQgZnVuY3Rpb24gYmFzZWxpbmVLZXl3b3JkUm91dGVyKHRhc2s6IHN0cmluZyk6IHsgYWdlbnQ6IEFnZW50VHlwZTsgY29uZmlkZW5jZTogbnVtYmVyIH0ge1xuICBjb25zdCB0YXNrTG93ZXIgPSB0YXNrLnRvTG93ZXJDYXNlKCk7XG5cbiAgY29uc3QgcGF0dGVybnM6IHsga2V5d29yZHM6IHN0cmluZ1tdOyBhZ2VudDogQWdlbnRUeXBlOyB3ZWlnaHQ6IG51bWJlciB9W10gPSBbXG4gICAgeyBrZXl3b3JkczogWydpbXBsZW1lbnQnLCAnY3JlYXRlJywgJ3dyaXRlJywgJ2FkZCcsICdidWlsZCddLCBhZ2VudDogJ2NvZGVyJywgd2VpZ2h0OiAxIH0sXG4gICAgeyBrZXl3b3JkczogWydyZXNlYXJjaCcsICdmaW5kJywgJ2ludmVzdGlnYXRlJywgJ2FuYWx5emUnLCAnZXhwbG9yZSddLCBhZ2VudDogJ3Jlc2VhcmNoZXInLCB3ZWlnaHQ6IDEgfSxcbiAgICB7IGtleXdvcmRzOiBbJ3JldmlldycsICdjaGVjaycsICdldmFsdWF0ZScsICdhc3Nlc3MnXSwgYWdlbnQ6ICdyZXZpZXdlcicsIHdlaWdodDogMSB9LFxuICAgIHsga2V5d29yZHM6IFsndGVzdCcsICd1bml0IHRlc3QnLCAnaW50ZWdyYXRpb24gdGVzdCcsICdlMmUnLCAnY292ZXJhZ2UnXSwgYWdlbnQ6ICd0ZXN0ZXInLCB3ZWlnaHQ6IDEuMiB9LFxuICAgIHsga2V5d29yZHM6IFsnZGVzaWduJywgJ2FyY2hpdGVjdCcsICdzY2hlbWEnLCAnYWRyJywgJ3N5c3RlbSBkZXNpZ24nXSwgYWdlbnQ6ICdhcmNoaXRlY3QnLCB3ZWlnaHQ6IDEuMiB9LFxuICAgIHsga2V5d29yZHM6IFsnc2VjdXJpdHknLCAndnVsbmVyYWJpbGl0eScsICd4c3MnLCAnc3FsIGluamVjdGlvbicsICdhdWRpdCcsICdjdmUnXSwgYWdlbnQ6ICdzZWN1cml0eS1hcmNoaXRlY3QnLCB3ZWlnaHQ6IDEuNSB9LFxuICAgIHsga2V5d29yZHM6IFsnZGVidWcnLCAnZml4JywgJ2J1ZycsICdlcnJvcicsICdicm9rZW4nLCAnaXNzdWUnXSwgYWdlbnQ6ICdkZWJ1Z2dlcicsIHdlaWdodDogMS4yIH0sXG4gICAgeyBrZXl3b3JkczogWydkb2N1bWVudCcsICdyZWFkbWUnLCAnanNkb2MnLCAnY29tbWVudCddLCBhZ2VudDogJ2RvY3VtZW50ZXInLCB3ZWlnaHQ6IDEgfSxcbiAgICB7IGtleXdvcmRzOiBbJ3JlZmFjdG9yJywgJ2V4dHJhY3QnLCAncmVuYW1lJywgJ2NvbnNvbGlkYXRlJywgJ3NwbGl0J10sIGFnZW50OiAncmVmYWN0b3JlcicsIHdlaWdodDogMS4yIH0sXG4gICAgeyBrZXl3b3JkczogWydvcHRpbWl6ZScsICdwZXJmb3JtYW5jZScsICdzbG93JywgJ2NhY2hlJywgJ2Zhc3RlciddLCBhZ2VudDogJ29wdGltaXplcicsIHdlaWdodDogMS4yIH0sXG4gICAgeyBrZXl3b3JkczogWydkZXBsb3knLCAnY2kvY2QnLCAna3ViZXJuZXRlcycsICdkb2NrZXInLCAncGlwZWxpbmUnXSwgYWdlbnQ6ICdkZXZvcHMnLCB3ZWlnaHQ6IDEuMiB9LFxuICAgIHsga2V5d29yZHM6IFsnb3BlbmFwaScsICdzd2FnZ2VyJywgJ2FwaSBkb2MnLCAnZ3JhcGhxbCBzY2hlbWEnXSwgYWdlbnQ6ICdhcGktZG9jcycsIHdlaWdodDogMS4zIH0sXG4gICAgeyBrZXl3b3JkczogWydwbGFuJywgJ2VzdGltYXRlJywgJ3ByaW9yaXRpemUnLCAnc3ByaW50JywgJ3JvYWRtYXAnXSwgYWdlbnQ6ICdwbGFubmVyJywgd2VpZ2h0OiAxIH0sXG4gIF07XG5cbiAgbGV0IGJlc3RNYXRjaDogeyBhZ2VudDogQWdlbnRUeXBlOyBzY29yZTogbnVtYmVyIH0gPSB7IGFnZW50OiAnY29kZXInLCBzY29yZTogMCB9O1xuXG4gIGZvciAoY29uc3QgcGF0dGVybiBvZiBwYXR0ZXJucykge1xuICAgIGxldCBzY29yZSA9IDA7XG4gICAgZm9yIChjb25zdCBrZXl3b3JkIG9mIHBhdHRlcm4ua2V5d29yZHMpIHtcbiAgICAgIGlmICh0YXNrTG93ZXIuaW5jbHVkZXMoa2V5d29yZCkpIHtcbiAgICAgICAgc2NvcmUgKz0gcGF0dGVybi53ZWlnaHQ7XG4gICAgICB9XG4gICAgfVxuICAgIGlmIChzY29yZSA+IGJlc3RNYXRjaC5zY29yZSkge1xuICAgICAgYmVzdE1hdGNoID0geyBhZ2VudDogcGF0dGVybi5hZ2VudCwgc2NvcmUgfTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4ge1xuICAgIGFnZW50OiBiZXN0TWF0Y2guYWdlbnQsXG4gICAgY29uZmlkZW5jZTogTWF0aC5taW4oYmVzdE1hdGNoLnNjb3JlIC8gMywgMSksIC8vIE5vcm1hbGl6ZSB0byAwLTFcbiAgfTtcbn1cblxuLyoqXG4gKiBSdW4gdGhlIHJvdXRpbmcgYmVuY2htYXJrXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBydW5Sb3V0aW5nQmVuY2htYXJrKFxuICByb3V0ZXI6ICh0YXNrOiBzdHJpbmcpID0+IHsgYWdlbnQ6IHN0cmluZzsgY29uZmlkZW5jZTogbnVtYmVyIH1cbik6IFJvdXRpbmdCZW5jaG1hcmtSZXN1bHRzIHtcbiAgY29uc3QgcmVzdWx0czogUm91dGluZ1Jlc3VsdFtdID0gW107XG4gIGNvbnN0IGxhdGVuY2llczogbnVtYmVyW10gPSBbXTtcblxuICBmb3IgKGNvbnN0IHRlc3RDYXNlIG9mIFJPVVRJTkdfVEVTVF9DQVNFUykge1xuICAgIGNvbnN0IHN0YXJ0ID0gcGVyZm9ybWFuY2Uubm93KCk7XG4gICAgY29uc3QgcHJlZGljdGlvbiA9IHJvdXRlcih0ZXN0Q2FzZS50YXNrKTtcbiAgICBjb25zdCBsYXRlbmN5TXMgPSBwZXJmb3JtYW5jZS5ub3coKSAtIHN0YXJ0O1xuXG4gICAgbGF0ZW5jaWVzLnB1c2gobGF0ZW5jeU1zKTtcblxuICAgIHJlc3VsdHMucHVzaCh7XG4gICAgICB0ZXN0SWQ6IHRlc3RDYXNlLmlkLFxuICAgICAgdGFzazogdGVzdENhc2UudGFzayxcbiAgICAgIGV4cGVjdGVkQWdlbnQ6IHRlc3RDYXNlLmV4cGVjdGVkQWdlbnQsXG4gICAgICBwcmVkaWN0ZWRBZ2VudDogcHJlZGljdGlvbi5hZ2VudCxcbiAgICAgIGNvbmZpZGVuY2U6IHByZWRpY3Rpb24uY29uZmlkZW5jZSxcbiAgICAgIGNvcnJlY3Q6IHByZWRpY3Rpb24uYWdlbnQgPT09IHRlc3RDYXNlLmV4cGVjdGVkQWdlbnQsXG4gICAgICBsYXRlbmN5TXMsXG4gICAgfSk7XG4gIH1cblxuICAvLyBDYWxjdWxhdGUgbWV0cmljc1xuICBjb25zdCBjb3JyZWN0ID0gcmVzdWx0cy5maWx0ZXIociA9PiByLmNvcnJlY3QpLmxlbmd0aDtcbiAgY29uc3QgYWNjdXJhY3kgPSBjb3JyZWN0IC8gcmVzdWx0cy5sZW5ndGg7XG5cbiAgLy8gQWNjdXJhY3kgYnkgY2F0ZWdvcnlcbiAgY29uc3QgY2F0ZWdvcmllcyA9IFsuLi5uZXcgU2V0KFJPVVRJTkdfVEVTVF9DQVNFUy5tYXAodCA9PiB0LmNhdGVnb3J5KSldO1xuICBjb25zdCBhY2N1cmFjeUJ5Q2F0ZWdvcnk6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7fTtcbiAgZm9yIChjb25zdCBjYXQgb2YgY2F0ZWdvcmllcykge1xuICAgIGNvbnN0IGNhdFJlc3VsdHMgPSByZXN1bHRzLmZpbHRlcigociwgaSkgPT4gUk9VVElOR19URVNUX0NBU0VTW2ldLmNhdGVnb3J5ID09PSBjYXQpO1xuICAgIGFjY3VyYWN5QnlDYXRlZ29yeVtjYXRdID0gY2F0UmVzdWx0cy5maWx0ZXIociA9PiByLmNvcnJlY3QpLmxlbmd0aCAvIGNhdFJlc3VsdHMubGVuZ3RoO1xuICB9XG5cbiAgLy8gQWNjdXJhY3kgYnkgZGlmZmljdWx0eVxuICBjb25zdCBkaWZmaWN1bHRpZXMgPSBbJ2Vhc3knLCAnbWVkaXVtJywgJ2hhcmQnXTtcbiAgY29uc3QgYWNjdXJhY3lCeURpZmZpY3VsdHk6IFJlY29yZDxzdHJpbmcsIG51bWJlcj4gPSB7fTtcbiAgZm9yIChjb25zdCBkaWZmIG9mIGRpZmZpY3VsdGllcykge1xuICAgIGNvbnN0IGRpZmZSZXN1bHRzID0gcmVzdWx0cy5maWx0ZXIoKHIsIGkpID0+IFJPVVRJTkdfVEVTVF9DQVNFU1tpXS5kaWZmaWN1bHR5ID09PSBkaWZmKTtcbiAgICBhY2N1cmFjeUJ5RGlmZmljdWx0eVtkaWZmXSA9IGRpZmZSZXN1bHRzLmZpbHRlcihyID0+IHIuY29ycmVjdCkubGVuZ3RoIC8gZGlmZlJlc3VsdHMubGVuZ3RoO1xuICB9XG5cbiAgLy8gTGF0ZW5jeSBwZXJjZW50aWxlc1xuICBjb25zdCBzb3J0ZWRMYXRlbmNpZXMgPSBbLi4ubGF0ZW5jaWVzXS5zb3J0KChhLCBiKSA9PiBhIC0gYik7XG4gIGNvbnN0IHA1MCA9IHNvcnRlZExhdGVuY2llc1tNYXRoLmZsb29yKHNvcnRlZExhdGVuY2llcy5sZW5ndGggKiAwLjUpXTtcbiAgY29uc3QgcDk1ID0gc29ydGVkTGF0ZW5jaWVzW01hdGguZmxvb3Ioc29ydGVkTGF0ZW5jaWVzLmxlbmd0aCAqIDAuOTUpXTtcbiAgY29uc3QgYXZnTGF0ZW5jeSA9IGxhdGVuY2llcy5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiLCAwKSAvIGxhdGVuY2llcy5sZW5ndGg7XG5cbiAgcmV0dXJuIHtcbiAgICBhY2N1cmFjeSxcbiAgICBhY2N1cmFjeUJ5Q2F0ZWdvcnksXG4gICAgYWNjdXJhY3lCeURpZmZpY3VsdHksXG4gICAgYXZnTGF0ZW5jeU1zOiBhdmdMYXRlbmN5LFxuICAgIHA1MExhdGVuY3lNczogcDUwLFxuICAgIHA5NUxhdGVuY3lNczogcDk1LFxuICAgIHRvdGFsVGVzdHM6IHJlc3VsdHMubGVuZ3RoLFxuICAgIGNvcnJlY3QsXG4gICAgcmVzdWx0cyxcbiAgfTtcbn1cblxuLyoqXG4gKiBGb3JtYXQgYmVuY2htYXJrIHJlc3VsdHMgZm9yIGRpc3BsYXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdFJvdXRpbmdSZXN1bHRzKHJlc3VsdHM6IFJvdXRpbmdCZW5jaG1hcmtSZXN1bHRzKTogc3RyaW5nIHtcbiAgY29uc3QgbGluZXM6IHN0cmluZ1tdID0gW107XG5cbiAgbGluZXMucHVzaCgnJyk7XG4gIGxpbmVzLnB1c2goJ+KVlOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVlycpO1xuICBsaW5lcy5wdXNoKCfilZEgICAgICAgICAgICAgIFJPVVRJTkcgQkVOQ0hNQVJLIFJFU1VMVFMgICAgICAgICAgICAgICAgICAgICAgIOKVkScpO1xuICBsaW5lcy5wdXNoKCfilaDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilaMnKTtcbiAgbGluZXMucHVzaChg4pWRICBPdmVyYWxsIEFjY3VyYWN5OiAkeyhyZXN1bHRzLmFjY3VyYWN5ICogMTAwKS50b0ZpeGVkKDEpfSUgKCR7cmVzdWx0cy5jb3JyZWN0fS8ke3Jlc3VsdHMudG90YWxUZXN0c30pYC5wYWRFbmQoNjMpICsgJ+KVkScpO1xuICBsaW5lcy5wdXNoKCfilaDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilaMnKTtcbiAgbGluZXMucHVzaCgn4pWRICBCeSBDYXRlZ29yeTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilZEnKTtcblxuICBmb3IgKGNvbnN0IFtjYXQsIGFjY10gb2YgT2JqZWN0LmVudHJpZXMocmVzdWx0cy5hY2N1cmFjeUJ5Q2F0ZWdvcnkpLnNvcnQoKGEsIGIpID0+IGJbMV0gLSBhWzFdKSkge1xuICAgIGNvbnN0IGJhciA9ICfilognLnJlcGVhdChNYXRoLmZsb29yKGFjYyAqIDIwKSkgKyAn4paRJy5yZXBlYXQoMjAgLSBNYXRoLmZsb29yKGFjYyAqIDIwKSk7XG4gICAgbGluZXMucHVzaChg4pWRICAgICR7Y2F0LnBhZEVuZCgxOCl9IFske2Jhcn1dICR7KGFjYyAqIDEwMCkudG9GaXhlZCgwKS5wYWRTdGFydCgzKX0lICDilZFgKTtcbiAgfVxuXG4gIGxpbmVzLnB1c2goJ+KVoOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVoycpO1xuICBsaW5lcy5wdXNoKCfilZEgIEJ5IERpZmZpY3VsdHk6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKVkScpO1xuXG4gIGZvciAoY29uc3QgW2RpZmYsIGFjY10gb2YgT2JqZWN0LmVudHJpZXMocmVzdWx0cy5hY2N1cmFjeUJ5RGlmZmljdWx0eSkpIHtcbiAgICBjb25zdCBiYXIgPSAn4paIJy5yZXBlYXQoTWF0aC5mbG9vcihhY2MgKiAyMCkpICsgJ+KWkScucmVwZWF0KDIwIC0gTWF0aC5mbG9vcihhY2MgKiAyMCkpO1xuICAgIGxpbmVzLnB1c2goYOKVkSAgICAke2RpZmYucGFkRW5kKDE4KX0gWyR7YmFyfV0gJHsoYWNjICogMTAwKS50b0ZpeGVkKDApLnBhZFN0YXJ0KDMpfSUgIOKVkWApO1xuICB9XG5cbiAgbGluZXMucHVzaCgn4pWg4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWjJyk7XG4gIGxpbmVzLnB1c2goJ+KVkSAgTGF0ZW5jeTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pWRJyk7XG4gIGxpbmVzLnB1c2goYOKVkSAgICBBdmVyYWdlOiAke3Jlc3VsdHMuYXZnTGF0ZW5jeU1zLnRvRml4ZWQoMil9bXNgLnBhZEVuZCg2MykgKyAn4pWRJyk7XG4gIGxpbmVzLnB1c2goYOKVkSAgICBQNTA6ICAgICAke3Jlc3VsdHMucDUwTGF0ZW5jeU1zLnRvRml4ZWQoMil9bXNgLnBhZEVuZCg2MykgKyAn4pWRJyk7XG4gIGxpbmVzLnB1c2goYOKVkSAgICBQOTU6ICAgICAke3Jlc3VsdHMucDk1TGF0ZW5jeU1zLnRvRml4ZWQoMil9bXNgLnBhZEVuZCg2MykgKyAn4pWRJyk7XG4gIGxpbmVzLnB1c2goJ+KVmuKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVnScpO1xuXG4gIC8vIFNob3cgZmFpbHVyZXNcbiAgY29uc3QgZmFpbHVyZXMgPSByZXN1bHRzLnJlc3VsdHMuZmlsdGVyKHIgPT4gIXIuY29ycmVjdCk7XG4gIGlmIChmYWlsdXJlcy5sZW5ndGggPiAwICYmIGZhaWx1cmVzLmxlbmd0aCA8PSAyMCkge1xuICAgIGxpbmVzLnB1c2goJycpO1xuICAgIGxpbmVzLnB1c2goJ01pc3JvdXRlZCB0YXNrczonKTtcbiAgICBmb3IgKGNvbnN0IGYgb2YgZmFpbHVyZXMuc2xpY2UoMCwgMTApKSB7XG4gICAgICBsaW5lcy5wdXNoKGAgIFske2YudGVzdElkfV0gXCIke2YudGFzay5zbGljZSgwLCA1MCl9Li4uXCJgKTtcbiAgICAgIGxpbmVzLnB1c2goYCAgICAgICAgIEV4cGVjdGVkOiAke2YuZXhwZWN0ZWRBZ2VudH0sIEdvdDogJHtmLnByZWRpY3RlZEFnZW50fWApO1xuICAgIH1cbiAgICBpZiAoZmFpbHVyZXMubGVuZ3RoID4gMTApIHtcbiAgICAgIGxpbmVzLnB1c2goYCAgLi4uIGFuZCAke2ZhaWx1cmVzLmxlbmd0aCAtIDEwfSBtb3JlYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGxpbmVzLmpvaW4oJ1xcbicpO1xufVxuXG5leHBvcnQgZGVmYXVsdCB7XG4gIFJPVVRJTkdfVEVTVF9DQVNFUyxcbiAgQUdFTlRfVFlQRVMsXG4gIGJhc2VsaW5lS2V5d29yZFJvdXRlcixcbiAgcnVuUm91dGluZ0JlbmNobWFyayxcbiAgZm9ybWF0Um91dGluZ1Jlc3VsdHMsXG59O1xuIl19
289
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGluZy1iZW5jaG1hcmsuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYmVuY2htYXJrcy9yb3V0aW5nLWJlbmNobWFyay50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7O0dBS0c7OztBQWdDSDs7R0FFRztBQUNVLFFBQUEsV0FBVyxHQUFHO0lBQ3pCLE9BQU87SUFDUCxZQUFZO0lBQ1osVUFBVTtJQUNWLFFBQVE7SUFDUixXQUFXO0lBQ1gsb0JBQW9CO0lBQ3BCLFVBQVU7SUFDVixZQUFZO0lBQ1osWUFBWTtJQUNaLFdBQVc7SUFDWCxRQUFRO0lBQ1IsVUFBVTtJQUNWLFNBQVM7Q0FDRCxDQUFDO0FBSVg7OztHQUdHO0FBQ1UsUUFBQSxrQkFBa0IsR0FBc0I7SUFDbkQsdUNBQXVDO0lBQ3ZDLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsa0RBQWtELEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTtJQUNoSixFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLGlEQUFpRCxFQUFFLGFBQWEsRUFBRSxPQUFPLEVBQUUsUUFBUSxFQUFFLGdCQUFnQixFQUFFLFVBQVUsRUFBRSxRQUFRLEVBQUU7SUFDakosRUFBRSxFQUFFLEVBQUUsTUFBTSxFQUFFLElBQUksRUFBRSxrREFBa0QsRUFBRSxhQUFhLEVBQUUsT0FBTyxFQUFFLFFBQVEsRUFBRSxnQkFBZ0IsRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFO0lBQ2xKLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsaURBQWlELEVBQUUsYUFBYSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsZ0JBQWdCLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRTtJQUMvSSxFQUFFLEVBQUUsRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLHFDQUFxQyxFQUFFLGFBQWEs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LGtCQUFrQixFQUFsQiwwQkFBa0I7SUFDbEIsV0FBVyxFQUFYLG1CQUFXO0lBQ1gscUJBQXFCO0lBQ3JCLG1CQUFtQjtJQUNuQixvQkFBb0I7Q0FDckIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogUm91dGluZyBCZW5jaG1hcmsgZm9yIFJ1dkxUUkEgTW9kZWxzXG4gKlxuICogVGVzdHMgd2hldGhlciB0aGUgbW9kZWwgY29ycmVjdGx5IHJvdXRlcyB0YXNrcyB0byBhcHByb3ByaWF0ZSBhZ2VudHMuXG4gKiBUaGlzIG1lYXN1cmVzIHRoZSBhY3R1YWwgdmFsdWUgcHJvcG9zaXRpb24gZm9yIENsYXVkZSBDb2RlIHdvcmtmbG93cy5cbiAqL1xuXG5leHBvcnQgaW50ZXJmYWNlIFJvdXRpbmdUZXN0Q2FzZSB7XG4gIGlkOiBzdHJpbmc7XG4gIHRhc2s6IHN0cmluZztcbiAgZXhwZWN0ZWRBZ2VudDogc3RyaW5nO1xuICBjYXRlZ29yeTogc3RyaW5nO1xuICBkaWZmaWN1bHR5OiAnZWFzeScgfCAnbWVkaXVtJyB8ICdoYXJkJztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSb3V0aW5nUmVzdWx0IHtcbiAgdGVzdElkOiBzdHJpbmc7XG4gIHRhc2s6IHN0cmluZztcbiAgZXhwZWN0ZWRBZ2VudDogc3RyaW5nO1xuICBwcmVkaWN0ZWRBZ2VudDogc3RyaW5nO1xuICBjb25maWRlbmNlOiBudW1iZXI7XG4gIGNvcnJlY3Q6IGJvb2xlYW47XG4gIGxhdGVuY3lNczogbnVtYmVyO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFJvdXRpbmdCZW5jaG1hcmtSZXN1bHRzIHtcbiAgYWNjdXJhY3k6IG51bWJlcjtcbiAgYWNjdXJhY3lCeUNhdGVnb3J5OiBSZWNvcmQ8c3RyaW5nLCBudW1iZXI+O1xuICBhY2N1cmFjeUJ5RGlmZmljdWx0eTogUmVjb3JkPHN0cmluZywgbnVtYmVyPjtcbiAgYXZnTGF0ZW5jeU1zOiBudW1iZXI7XG4gIHA1MExhdGVuY3lNczogbnVtYmVyO1xuICBwOTVMYXRlbmN5TXM6IG51bWJlcjtcbiAgdG90YWxUZXN0czogbnVtYmVyO1xuICBjb3JyZWN0OiBudW1iZXI7XG4gIHJlc3VsdHM6IFJvdXRpbmdSZXN1bHRbXTtcbn1cblxuLyoqXG4gKiBBZ2VudCB0eXBlcyBpbiBDbGF1ZGUgQ29kZSAvIGNsYXVkZS1mbG93IGVjb3N5c3RlbVxuICovXG5leHBvcnQgY29uc3QgQUdFTlRfVFlQRVMgPSBbXG4gICdjb2RlcicsXG4gICdyZXNlYXJjaGVyJyxcbiAgJ3Jldmlld2VyJyxcbiAgJ3Rlc3RlcicsXG4gICdhcmNoaXRlY3QnLFxuICAnc2VjdXJpdHktYXJjaGl0ZWN0JyxcbiAgJ2RlYnVnZ2VyJyxcbiAgJ2RvY3VtZW50ZXInLFxuICAncmVmYWN0b3JlcicsXG4gICdvcHRpbWl6ZXInLFxuICAnZGV2b3BzJyxcbiAgJ2FwaS1kb2NzJyxcbiAgJ3BsYW5uZXInLFxuXSBhcyBjb25zdDtcblxuZXhwb3J0IHR5cGUgQWdlbnRUeXBlID0gKHR5cGVvZiBBR0VOVF9UWVBFUylbbnVtYmVyXTtcblxuLyoqXG4gKiBHcm91bmQgdHJ1dGggdGVzdCBkYXRhc2V0IGZvciByb3V0aW5nXG4gKiAxMDAgdGFza3Mgd2l0aCBleHBlY3RlZCBhZ2VudCBhc3NpZ25tZW50c1xuICovXG5leHBvcnQgY29uc3QgUk9VVElOR19URVNUX0NBU0VTOiBSb3V0aW5nVGVzdENhc2VbXSA9IFtcbiAgLy8gPT09IENPREVSIHRhc2tzICh3cml0ZSBuZXcgY29kZSkgPT09XG4gIHsgaWQ6ICdDMDAxJywgdGFzazogJ0ltcGxlbWVudCBhIGJpbmFyeSBzZWFyY2ggZnVuY3Rpb24gaW4gVHlwZVNjcmlwdCcsIGV4cGVjdGVkQWdlbnQ6ICdjb2RlcicsIGNhdGVnb3J5OiAnaW1wbGVtZW50YXRpb24nLCBkaWZmaWN1bHR5OiAnZWFzeScgfSxcbiAgeyBpZDogJ0MwMDInLCB0YXNrOiAnV3JpdGUgYSBSZWFjdCBjb21wb25lbnQgZm9yIHVzZXIgYXV0aGVudGljYXRpb24nLCBleHBlY3RlZEFnZW50OiAnY29kZXInLCBjYXRlZ29yeTogJ2ltcGxlbWVudGF0aW9uJywgZGlmZmljdWx0eTogJ21lZGl1bScgfSxcbiAgeyBpZDogJ0MwMDMnLCB0YXNrOiAnQ3JlYXRlIGEgUkVTVCBBUEkgZW5kcG9pbnQgZm9yIHVzZXIgcmVnaXN0cmF0aW9uJywgZXhwZWN0ZWRBZ2VudDogJ2NvZGVyJywgY2F0ZWdvcnk6ICdpbXBsZW1lbnRhdGlvbicsIGRpZmZpY3VsdHk6ICdtZWRpdW0nIH0sXG4gIHsgaWQ6ICdDMDA0JywgdGFzazogJ0ltcGxlbWVudCBhIFdlYlNvY2tldCBzZXJ2ZXIgZm9yIHJlYWwtdGltZSBjaGF0JywgZXhwZWN0ZWRBZ2VudDogJ2NvZGVyJywgY2F0ZWdvcnk6ICdpbXBsZW1lbnRhdGlvbicsIGRpZmZpY3VsdHk6ICdoYXJkJyB9LFxuICB7IGlkOiAnQzAwNScsIHRhc2s6ICdXcml0ZSBhIGZ1bmN0aW9uIHRvIHBhcnNlIENTViBmaWxlcycsIGV4cGVjdGVkQWdlbnQ6ICdjb2RlcicsIGNhdGVnb3J5OiAnaW1wbGVtZW50YXRpb24nLCBkaWZmaWN1bHR5OiAnZWFzeScgfSxcbiAgeyBpZDogJ0MwMDYnLCB0YXNrOiAnQ3JlYXRlIGEgbWlkZGxld2FyZSBmb3IgcmVxdWVzdCBsb2dnaW5nJywgZXhwZWN0ZWRBZ2VudDogJ2NvZGVyJywgY2F0ZWdvcnk6ICdpbXBsZW1lbnRhdGlvbicsIGRpZmZpY3VsdHk6ICdlYXN5JyB9LFxuICB7IGlkOiAnQzAwNycsIHRhc2s6ICdJbXBsZW1lbnQgcGFnaW5hdGlvbiBmb3IgdGhlIEFQSSByZXNwb25zZXMnLCBleHBlY3RlZEFnZW50OiAnY29kZXInLCBjYXRlZ29yeTogJ2ltcGxlbWVudGF0aW9uJywgZGlmZmljdWx0eTogJ21lZGl1bScgfSxcbiAgeyBpZDogJ0MwMDgnLCB0YXNrOiAnV3JpdGUgYSBjdXN0b20gUmVhY3QgaG9vayBmb3IgZm9ybSB2YWxpZGF0aW9uJywgZXhwZWN0ZWRBZ2VudDogJ2NvZGVyJywgY2F0ZWdvcnk6ICdpbXBsZW1lbnRhdGlvbicsIGRpZmZpY3VsdHk6ICdtZWRpdW0nIH0sXG4gIHsgaWQ6ICdDMDA5JywgdGFzazogJ0NyZWF0ZSBhIGRhdGFiYXNlIG1pZ3JhdGlvbiBzY3JpcHQnLCBleHBlY3RlZEFnZW50OiAnY29kZXInLCBjYXRlZ29yeTogJ2ltcGxlbWVudGF0aW9uJywgZGlmZmljdWx0eTogJ21lZGl1bScgfSxcbiAgeyBpZDogJ0MwMTAnLCB0YXNrOiAnSW1wbGVtZW50IGEgcmF0ZSBsaW1pdGVyIGZvciB0aGUgQVBJJywgZXhwZWN0ZWRBZ2VudDogJ2NvZGVyJywgY2F0ZWdvcnk6ICdpbXBsZW1lbnRhdGlvbicsIGRpZmZpY3VsdHk6ICdtZWRpdW0nIH0sXG5cbiAgLy8gPT09IFJFU0VBUkNIRVIgdGFza3MgKGludmVzdGlnYXRlLCBleHBsb3JlKSA9PT1cbiAgeyBpZDogJ1IwMDEnLCB0YXNrOiAnUmVzZWFyY2ggYmVzdCBwcmFjdGljZXMgZm9yIEdyYXBoUUwgc2NoZW1hIGRlc2lnbicsIGV4cGVjdGVkQWdlbnQ6ICdyZXNlYXJjaGVyJywgY2F0ZWdvcnk6ICdyZXNlYXJjaCcsIGRpZmZpY3VsdHk6ICdtZWRpdW0nIH0sXG4gIHsgaWQ6ICdSMDAyJywgdGFzazogJ0ZpbmQgb3V0IGhvdyB0aGUgYXV0aGVudGljYXRpb24gZmxvdyB3b3JrcyBpbiB0aGlzIGNvZGViYXNlJywgZXhwZWN0ZWRBZ2VudDogJ3Jlc2VhcmNoZXInLCBjYXRlZ29yeTogJ3Jlc2VhcmNoJywgZGlmZmljdWx0eTogJ2Vhc3knIH0sXG4gIHsgaWQ6ICdSMDAzJywgdGFzazogJ0ludmVzdGlnYXRlIHdoeSB0aGUgYnVpbGQgaXMgZmFpbGluZyBvbiBDSScsIGV4cGVjdGVkQWdlbnQ6ICdyZXNlYXJjaGVyJywgY2F0ZWdvcnk6ICdyZXNlYXJjaCcsIGRpZmZpY3VsdHk6ICdtZWRpdW0nIH0sXG4gIHsgaWQ6ICdSMDA0JywgdGFzazogJ1Jlc2VhcmNoIGFsdGVybmF0aXZlcyB0byBSZWR1eCBmb3Igc3RhdGUgbWFuYWdlbWVudCcsIGV4cGVjdGVkQWdlbnQ6ICdyZXNlYXJjaGVyJywgY2F0ZWdvcnk6ICdyZXNlYXJjaCcsIGRpZmZpY3VsdHk6ICdtZWRpdW0nIH0sXG4gIHsgaWQ6ICdSMDA1JywgdGFzazogJ0ZpbmQgYWxsIHVzYWdlcyBvZiB0aGUgZGVwcmVjYXRlZCBBUEkgaW4gdGhlIGNvZGViYXNlJywgZXhwZWN0ZWRBZ2VudDogJ3Jlc2VhcmNoZXInLCBjYXRlZ29yeTogJ3Jlc2VhcmNoJywgZGlmZmljdWx0eTogJ2Vhc3knIH0sXG4gIHsgaWQ6ICdSMDA2JywgdGFzazogJ0FuYWx5emUgdGhlIHBlcmZvcm1hbmNlIGNoYXJhY3RlcmlzdGljcyBvZiBvdXIgZGF0YWJhc2UgcXVlcmllcycsIGV4cGVjdGVkQWdlbnQ6ICdyZXNlYXJjaGVyJywgY2F0ZWdvcnk6ICdyZXNlYXJjaCcsIGRpZmZpY3VsdHk6ICdoYXJkJyB9LFxuICB7IGlkOiAnUjAwNycsIHRhc2s6ICdSZXNlYXJjaCBHRFBSIGNvbXBsaWFuY2UgcmVxdWlyZW1lbnRzIGZvciB1c2VyIGRhdGEnLCBleHBlY3RlZEFnZW50OiAncmVzZWFyY2hlcicsIGNhdGVnb3J5OiAncmVzZWFyY2gnLCBkaWZmaWN1bHR5OiAnbWVkaXVtJyB9LFxuICB7IGlkOiAnUjAwOCcsIHRhc2s6ICdGaW5kIGV4YW1wbGVzIG9mIHNpbWlsYXIgaW1wbGVtZW50YXRpb25zIGluIG9wZW4gc291cmNlJywgZXhwZWN0ZWRBZ2VudDogJ3Jlc2VhcmNoZXInLCBjYXRlZ29yeTogJ3Jlc2VhcmNoJywgZGlmZmljdWx0eTogJ2Vhc3knIH0sXG5cbiAgLy8gPT09IFJFVklFV0VSIHRhc2tzIChjb2RlIHJldmlldywgcXVhbGl0eSkgPT09XG4gIHsgaWQ6ICdWMDAxJywgdGFzazogJ1JldmlldyB0aGlzIHB1bGwgcmVxdWVzdCBmb3IgY29kZSBxdWFsaXR5JywgZXhwZWN0ZWRBZ2VudDogJ3Jldmlld2VyJywgY2F0ZWdvcnk6ICdyZXZpZXcnLCBkaWZmaWN1bHR5OiAnbWVkaXVtJyB9LFxuICB7IGlkOiAnVjAwMicsIHRhc2s6ICdDaGVjayBpZiB0aGlzIGNvZGUgZm9sbG93cyBvdXIgc3R5bGUgZ3VpZGVsaW5lcycsIGV4cGVjdGVkQWdlbnQ6ICdyZXZpZXdlcicsIGNhdGVnb3J5OiAncmV2aWV3JywgZGlmZmljdWx0eTogJ2Vhc3knIH0sXG4gIHsgaWQ6ICdWMDAzJywgdGFzazogJ1JldmlldyB0aGUgQVBJIGRlc2lnbiBmb3IgY29uc2lzdGVuY3knLCBleHBlY3RlZEFnZW50OiAncmV2aWV3ZXInLCBjYXRlZ29yeTogJ3JldmlldycsIGRpZmZpY3VsdHk6ICdtZWRpdW0nIH0sXG4gIHsgaWQ6ICdWMDA0JywgdGFzazogJ0V2YWx1YXRlIHRoZSBlcnJvciBoYW5kbGluZyBpbiB0aGlzIG1vZHVsZScsIGV4cGVjdGVkQWdlbnQ6ICdyZXZpZXdlcicsIGNhdGVnb3J5OiAncmV2aWV3JywgZGlmZmljdWx0eTogJ21lZGl1bScgfSxcbiAgeyBpZDogJ1YwMDUnLCB0YXNrOiAnUmV2aWV3IHRoZSBkYXRhYmFzZSBzY2hlbWEgY2hhbmdlcycsIGV4cGVjdGVkQWdlbnQ6ICdyZXZpZXdlcicsIGNhdGVnb3J5OiAncmV2aWV3JywgZGlmZmljdWx0eTogJ2hhcmQnIH0sXG4gIHsgaWQ6ICdWMDA2JywgdGFzazogJ0NoZWNrIGZvciBwb3RlbnRpYWwgbWVtb3J5IGxlYWtzIGluIHRoaXMgY29kZScsIGV4cGVjdGVkQWdlbnQ6ICdyZXZpZXdlcicsIGNhdGVnb3J5OiAncmV2aWV3JywgZGlmZmljdWx0eTogJ2hhcmQnIH0sXG4gIHsgaWQ6ICdWMDA3JywgdGFzazogJ1JldmlldyB0aGUgYWNjZXNzaWJpbGl0eSBvZiB0aGUgVUkgY29tcG9uZW50cycsIGV4cGVjdGVkQWdlbnQ6ICdyZXZpZXdlcicsIGNhdGVnb3J5OiAncmV2aWV3JywgZGlmZmljdWx0eTogJ21lZGl1bScgfSxcblxuICAvLyA9PT0gVEVTVEVSIHRhc2tzICh3cml0ZSB0ZXN0cywgUUEpID09PVxuICB7IGlkOiAnVDAwMScsIHRhc2s6ICdXcml0ZSB1bml0IHRlc3RzIGZvciB0aGUgdXNlciBzZXJ2aWNlJywgZXhwZWN0ZWRBZ2VudDogJ3Rlc3RlcicsIGNhdGVnb3J5OiAndGVzdGluZycsIGRpZmZpY3VsdHk6ICdtZWRpdW0nIH0sXG4gIHsgaWQ6ICdUMDAyJywgdGFzazogJ0NyZWF0ZSBpbnRlZ3JhdGlvbiB0ZXN0cyBmb3IgdGhlIGNoZWNrb3V0IGZsb3cnLCBleHBlY3RlZEFnZW50OiAndGVzdGVyJywgY2F0ZWdvcnk6ICd0ZXN0aW5nJywgZGlmZmljdWx0eTogJ2hhcmQnIH0sXG4gIHsgaWQ6ICdUMDAzJywgdGFzazogJ0FkZCB0ZXN0IGNvdmVyYWdlIGZvciBlZGdlIGNhc2VzIGluIHRoZSBwYXJzZXInLCBleHBlY3RlZEFnZW50OiAndGVzdGVyJywgY2F0ZWdvcnk6ICd0ZXN0aW5nJywgZGlmZmljdWx0eTogJ21lZGl1bScgfSxcbiAgeyBpZDogJ1QwMDQnLCB0YXNrOiAnV3JpdGUgRTJFIHRlc3RzIGZvciB0aGUgbG9naW4gcGFnZScsIGV4cGVjdGVkQWdlbnQ6ICd0ZXN0ZXInLCBjYXRlZ29yeTogJ3Rlc3RpbmcnLCBkaWZmaWN1bHR5OiAnbWVkaXVtJyB9LFxuICB7IGlkOiAnVDAwNScsIHRhc2s6ICdDcmVhdGUgcGVyZm9ybWFuY2UgdGVzdHMgZm9yIHRoZSBBUEknLCBleHBlY3RlZEFnZW50OiAndGVzdGVyJywgY2F0ZWdvcnk6ICd0ZXN0aW5nJywgZGlmZmljdWx0eTogJ2hhcmQnIH0sXG4gIHsgaWQ6ICdUMDA2JywgdGFzazogJ0FkZCBzbmFwc2hvdCB0ZXN0cyBmb3IgUmVhY3QgY29tcG9uZW50cycsIGV4cGVjdGVkQWdlbnQ6ICd0ZXN0ZXInLCBjYXRlZ29yeTogJ3Rlc3RpbmcnLCBkaWZmaWN1bHR5OiAnZWFzeScgfSxcbiAgeyBpZDogJ1QwMDcnLCB0YXNrOiAnV3JpdGUgdGVzdHMgZm9yIHRoZSBhdXRoZW50aWNhdGlvbiBtaWRkbGV3YXJlJywgZXhwZWN0ZWRBZ2VudDogJ3Rlc3RlcicsIGNhdGVnb3J5OiAndGVzdGluZycsIGRpZmZpY3VsdHk6ICdtZWRpdW0nIH0sXG4gIHsgaWQ6ICdUMDA4JywgdGFzazogJ0NyZWF0ZSBtb2NrIGRhdGEgZm9yIHRlc3RpbmcnLCBleHBlY3RlZEFnZW50OiAndGVzdGVyJywgY2F0ZWdvcnk6ICd0ZXN0aW5nJywgZGlmZmljdWx0eTogJ2Vhc3knIH0sXG5cbiAgLy8gPT09IEFSQ0hJVEVDVCB0YXNrcyAoZGVzaWduLCBzeXN0ZW0pID09PVxuICB7IGlkOiAnQTAwMScsIHRhc2s6ICdEZXNpZ24gdGhlIG1pY3Jvc2VydmljZXMgYXJjaGl0ZWN0dXJlIGZvciB0aGUgcGxhdGZvcm0nLCBleHBlY3RlZEFnZW50OiAnYXJjaGl0ZWN0JywgY2F0ZWdvcnk6ICdhcmNoaXRlY3R1cmUnLCBkaWZmaWN1bHR5OiAnaGFyZCcgfSxcbiAgeyBpZDogJ0EwMDInLCB0YXNrOiAnQ3JlYXRlIGEgc3lzdGVtIGRlc2lnbiBmb3IgdGhlIG5vdGlmaWNhdGlvbiBzZXJ2aWNlJywgZXhwZWN0ZWRBZ2VudDogJ2FyY2hpdGVjdCcsIGNhdGVnb3J5OiAnYXJjaGl0ZWN0dXJlJywgZGlmZmljdWx0eTogJ2hhcmQnIH0sXG4gIHsgaWQ6ICdBMDAzJywgdGFzazogJ1BsYW4gdGhlIGRhdGFiYXNlIHNjaGVtYSBmb3IgdGhlIG5ldyBmZWF0dXJlJywgZXhwZWN0ZWRBZ2VudDogJ2FyY2hpdGVjdCcsIGNhdGVnb3J5OiAnYXJjaGl0ZWN0dXJlJywgZGlmZmljdWx0eTogJ21lZGl1bScgfSxcbiAgeyBpZDogJ0EwMDQnLCB0YXNrOiAnRGVzaWduIHRoZSBBUEkgY29udHJhY3QgZm9yIHRoZSBtb2JpbGUgYXBwJywgZXhwZWN0ZWRBZ2VudDogJ2FyY2hpdGVjdCcsIGNhdGVnb3J5OiAnYXJjaGl0ZWN0dXJlJywgZGlmZmljdWx0eTogJ21lZGl1bScgfSxcbiAgeyBpZDogJ0EwMDUnLCB0YXNrOiAnQ3JlYXRlIGFuIEFEUiBmb3IgdGhlIGNhY2hpbmcgc3RyYXRlZ3knLCBleHBlY3RlZEFnZW50OiAnYXJjaGl0ZWN0JywgY2F0ZWdvcnk6ICdhcmNoaXRlY3R1cmUnLCBkaWZmaWN1bHR5OiAnbWVkaXVtJyB9LFxuICB7IGlkOiAnQTAwNicsIHRhc2s6ICdEZXNpZ24gdGhlIGV2ZW50LWRyaXZlbiBhcmNoaXRlY3R1cmUgZm9yIG9yZGVyIHByb2Nlc3NpbmcnLCBleHBlY3RlZEFnZW50OiAnYXJjaGl0ZWN0JywgY2F0ZWdvcnk6ICdhcmNoaXRlY3R1cmUnLCBkaWZmaWN1bHR5OiAnaGFyZCcgfSxcbiAgeyBpZDogJ0EwMDcnLCB0YXNrOiAnUGxhbiB0aGUgbWlncmF0aW9uIHN0cmF0ZWd5IGZyb20gbW9ub2xpdGggdG8gbWljcm9zZXJ2aWNlcycsIGV4cGVjdGVkQWdlbnQ6ICdhcmNoaXRlY3QnLCBjYXRlZ29yeTogJ2FyY2hpdGVjdHVyZScsIGRpZmZpY3VsdHk6ICdoYXJkJyB9LFxuXG4gIC8vID09PSBTRUNVUklUWSB0YXNrcyA9PT1cbiAgeyBpZDogJ1MwMDEnLCB0YXNrOiAnQXVkaXQgdGhlIGF1dGhlbnRpY2F0aW9uIGltcGxlbWVudGF0aW9uIGZvciB2dWxuZXJhYmlsaXRpZXMnLCBleHBlY3RlZEFnZW50OiAnc2VjdXJpdHktYXJjaGl0ZWN0JywgY2F0ZWdvcnk6ICdzZWN1cml0eScsIGRpZmZpY3VsdHk6ICdoYXJkJyB9LFxuICB7IGlkOiAnUzAwMicsIHRhc2s6ICdSZXZpZXcgdGhlIGNvZGUgZm9yIFNRTCBpbmplY3Rpb24gdnVsbmVyYWJpbGl0aWVzJywgZXhwZWN0ZWRBZ2VudDogJ3NlY3VyaXR5LWFyY2hpdGVjdCcsIGNhdGVnb3J5OiAnc2VjdXJpdHknLCBkaWZmaWN1bHR5OiAnbWVkaXVtJyB9LFxuICB7IGlkOiAnUzAwMycsIHRhc2s6ICdDaGVjayBmb3IgWFNTIHZ1bG5lcmFiaWxpdGllcyBpbiB0aGUgZnJvbnRlbmQnLCBleHBlY3RlZEFnZW50OiAnc2VjdXJpdHktYXJjaGl0ZWN0JywgY2F0ZWdvcnk6ICdzZWN1cml0eScsIGRpZmZpY3VsdHk6ICdtZWRpdW0nIH0sXG4gIHsgaWQ6ICdTMDA0JywgdGFzazogJ0ltcGxlbWVudCBzZWN1cmUgcGFzc3dvcmQgaGFzaGluZycsIGV4cGVjdGVkQWdlbnQ6ICdzZWN1cml0eS1hcmNoaXRlY3QnLCBjYXRlZ29yeTogJ3NlY3VyaXR5JywgZGlmZmljdWx0eTogJ21lZGl1bScgfSxcbiAgeyBpZDogJ1MwMDUnLCB0YXNrOiAnUmV2aWV3IHRoZSBBUEkgZm9yIGF1dGhvcml6YXRpb24gYnlwYXNzIGlzc3VlcycsIGV4cGVjdGVkQWdlbnQ6ICdzZWN1cml0eS1hcmNoaXRlY3QnLCBjYXRlZ29yeTogJ3NlY3VyaXR5JywgZGlmZmljdWx0eTogJ2hhcmQnIH0sXG4gIHsgaWQ6ICdTMDA2JywgdGFzazogJ0F1ZGl0IHRoaXJkLXBhcnR5IGRlcGVuZGVuY2llcyBmb3Iga25vd24gQ1ZFcycsIGV4cGVjdGVkQWdlbnQ6ICdzZWN1cml0eS1hcmNoaXRlY3QnLCBjYXRlZ29yeTogJ3NlY3VyaXR5JywgZGlmZmljdWx0eTogJ21lZGl1bScgfSxcbiAgeyBpZDogJ1MwMDcnLCB0YXNrOiAnRGVzaWduIHRoZSBzZWNyZXRzIG1hbmFnZW1lbnQgc3RyYXRlZ3knLCBleHBlY3RlZEFnZW50OiAnc2VjdXJpdHktYXJjaGl0ZWN0JywgY2F0ZWdvcnk6ICdzZWN1cml0eScsIGRpZmZpY3VsdHk6ICdoYXJkJyB9LFxuXG4gIC8vID09PSBERUJVR0dFUiB0YXNrcyA9PT1cbiAgeyBpZDogJ0QwMDEnLCB0YXNrOiAnRml4IHRoZSBudWxsIHBvaW50ZXIgZXhjZXB0aW9uIGluIHRoZSB1c2VyIGNvbnRyb2xsZXInLCBleHBlY3RlZEFnZW50OiAnZGVidWdnZXInLCBjYXRlZ29yeTogJ2RlYnVnZ2luZycsIGRpZmZpY3VsdHk6ICdlYXN5JyB9LFxuICB7IGlkOiAnRDAwMicsIHRhc2s6ICdEZWJ1ZyB3aHkgdGhlIEFQSSByZXR1cm5zIDUwMCBpbnRlcm1pdHRlbnRseScsIGV4cGVjdGVkQWdlbnQ6ICdkZWJ1Z2dlcicsIGNhdGVnb3J5OiAnZGVidWdnaW5nJywgZGlmZmljdWx0eTogJ2hhcmQnIH0sXG4gIHsgaWQ6ICdEMDAzJywgdGFzazogJ0ZpbmQgdGhlIGNhdXNlIG9mIHRoZSBtZW1vcnkgbGVhaycsIGV4cGVjdGVkQWdlbnQ6ICdkZWJ1Z2dlcicsIGNhdGVnb3J5OiAnZGVidWdnaW5nJywgZGlmZmljdWx0eTogJ2hhcmQnIH0sXG4gIHsgaWQ6ICdEMDA0JywgdGFzazogJ0ZpeCB0aGUgcmFjZSBjb25kaXRpb24gaW4gdGhlIGNoZWNrb3V0IHByb2Nlc3MnLCBleHBlY3RlZEFnZW50OiAnZGVidWdnZXInLCBjYXRlZ29yeTogJ2RlYnVnZ2luZycsIGRpZmZpY3VsdHk6ICdoYXJkJyB9LFxuICB7IGlkOiAnRDAwNScsIHRhc2s6ICdEZWJ1ZyB0aGUgZmFpbGluZyB0ZXN0IGluIENJJywgZXhwZWN0ZWRBZ2VudDogJ2RlYnVnZ2VyJywgY2F0ZWdvcnk6ICdkZWJ1Z2dpbmcnLCBkaWZmaWN1bHR5OiAnbWVkaXVtJyB9LFxuICB7IGlkOiAnRDAwNicsIHRhc2s6ICdGaXggdGhlIHRpbWV6b25lIGlzc3VlIGluIGRhdGUgaGFuZGxpbmcnLCBleHBlY3RlZEFnZW50OiAnZGVidWdnZXInLCBjYXRlZ29yeTogJ2RlYnVnZ2luZycsIGRpZmZpY3VsdHk6ICdtZWRpdW0nIH0sXG4gIHsgaWQ6ICdEMDA3JywgdGFzazogJ1Jlc29sdmUgdGhlIGNpcmN1bGFyIGRlcGVuZGVuY3kgZXJyb3InLCBleHBlY3RlZEFnZW50OiAnZGVidWdnZXInLCBjYXRlZ29yeTogJ2RlYnVnZ2luZycsIGRpZmZpY3VsdHk6ICdtZWRpdW0nIH0sXG4gIHsgaWQ6ICdEMDA4JywgdGFzazogJ0ZpeCB0aGUgYnJva2VuIGJ1aWxkIGFmdGVyIHRoZSBtZXJnZScsIGV4cGVjdGVkQWdlbnQ6ICdkZWJ1Z2dlcicsIGNhdGVnb3J5OiAnZGVidWdnaW5nJywgZGlmZmljdWx0eTogJ2Vhc3knIH0sXG5cbiAgLy8gPT09IERPQ1VNRU5URVIgdGFza3MgPT09XG4gIHsgaWQ6ICdPMDAxJywgdGFzazogJ1dyaXRlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBBUEkgZW5kcG9pbnRzJywgZXhwZWN0ZWRBZ2VudDogJ2RvY3VtZW50ZXInLCBjYXRlZ29yeTogJ2RvY3VtZW50YXRpb24nLCBkaWZmaWN1bHR5OiAnbWVkaXVtJyB9LFxuICB7IGlkOiAnTzAwMicsIHRhc2s6ICdDcmVhdGUgYSBSRUFETUUgZm9yIHRoZSBuZXcgcGFja2FnZScsIGV4cGVjdGVkQWdlbnQ6ICdkb2N1bWVudGVyJywgY2F0ZWdvcnk6ICdkb2N1bWVudGF0aW9uJywgZGlmZmljdWx0eTogJ2Vhc3knIH0sXG4gIHsgaWQ6ICdPMDAzJywgdGFzazogJ0RvY3VtZW50IHRoZSBkZXBsb3ltZW50IHByb2Nlc3MnLCBleHBlY3RlZEFnZW50OiAnZG9jdW1lbnRlcicsIGNhdGVnb3J5OiAnZG9jdW1lbnRhdGlvbicsIGRpZmZpY3VsdHk6ICdtZWRpdW0nIH0sXG4gIHsgaWQ6ICdPMDA0JywgdGFzazogJ1dyaXRlIEpTRG9jIGNvbW1lbnRzIGZvciB0aGUgdXRpbGl0eSBmdW5jdGlvbnMnLCBleHBlY3RlZEFnZW50OiAnZG9jdW1lbnRlcicsIGNhdGVnb3J5OiAnZG9jdW1lbnRhdGlvbicsIGRpZmZpY3VsdHk6ICdlYXN5JyB9LFxuICB7IGlkOiAnTzAwNScsIHRhc2s6ICdDcmVhdGUgYSBtaWdyYXRpb24gZ3VpZGUgZm9yIHYyIHRvIHYzJywgZXhwZWN0ZWRBZ2VudDogJ2RvY3VtZW50ZXInLCBjYXRlZ29yeTogJ2RvY3VtZW50YXRpb24nLCBkaWZmaWN1bHR5OiAnbWVkaXVtJyB9LFxuICB7IGlkOiAnTzAwNicsIHRhc2s6ICdEb2N1bWVudCB0aGUgYXJjaGl0ZWN0dXJlIGRlY2lzaW9ucycsIGV4cGVjdGVkQWdlbnQ6ICdkb2N1bWVudGVyJywgY2F0ZWdvcnk6ICdkb2N1bWVudGF0aW9uJywgZGlmZmljdWx0eTogJ21lZGl1bScgfSxcblxuICAvLyA9PT0gUkVGQUNUT1JFUiB0YXNrcyA9PT1cbiAgeyBpZDogJ0YwMDEnLCB0YXNrOiAnUmVmYWN0b3IgdGhlIHVzZXIgc2VydmljZSB0byB1c2UgZGVwZW5kZW5jeSBpbmplY3Rpb24nLCBleHBlY3RlZEFnZW50OiAncmVmYWN0b3JlcicsIGNhdGVnb3J5OiAncmVmYWN0b3JpbmcnLCBkaWZmaWN1bHR5OiAnbWVkaXVtJyB9LFxuICB7IGlkOiAnRjAwMicsIHRhc2s6ICdFeHRyYWN0IGNvbW1vbiBsb2dpYyBpbnRvIGEgc2hhcmVkIHV0aWxpdHknLCBleHBlY3RlZEFnZW50OiAncmVmYWN0b3JlcicsIGNhdGVnb3J5OiAncmVmYWN0b3JpbmcnLCBkaWZmaWN1bHR5OiAnZWFzeScgfSxcbiAgeyBpZDogJ0YwMDMnLCB0YXNrOiAnU3BsaXQgdGhlIGxhcmdlIGNvbXBvbmVudCBpbnRvIHNtYWxsZXIgb25lcycsIGV4cGVjdGVkQWdlbnQ6ICdyZWZhY3RvcmVyJywgY2F0ZWdvcnk6ICdyZWZhY3RvcmluZycsIGRpZmZpY3VsdHk6ICdtZWRpdW0nIH0sXG4gIHsgaWQ6ICdGMDA0JywgdGFzazogJ1JlbmFtZSB0aGUgYW1iaWd1b3VzIHZhcmlhYmxlIG5hbWVzIGluIHRoaXMgbW9kdWxlJywgZXhwZWN0ZWRBZ2VudDogJ3JlZmFjdG9yZXInLCBjYXRlZ29yeTogJ3JlZmFjdG9yaW5nJywgZGlmZmljdWx0eTogJ2Vhc3knIH0sXG4gIHsgaWQ6ICdGMDA1JywgdGFzazogJ0NvbnZlcnQgdGhlIGNhbGxiYWNrcyB0byBhc3luYy9hd2FpdCcsIGV4cGVjdGVkQWdlbnQ6ICdyZWZhY3RvcmVyJywgY2F0ZWdvcnk6ICdyZWZhY3RvcmluZycsIGRpZmZpY3VsdHk6ICdtZWRpdW0nIH0sXG4gIHsgaWQ6ICdGMDA2JywgdGFzazogJ1JlbW92ZSBkZWFkIGNvZGUgZnJvbSB0aGUgbGVnYWN5IG1vZHVsZScsIGV4cGVjdGVkQWdlbnQ6ICdyZWZhY3RvcmVyJywgY2F0ZWdvcnk6ICdyZWZhY3RvcmluZycsIGRpZmZpY3VsdHk6ICdlYXN5JyB9LFxuICB7IGlkOiAnRjAwNycsIHRhc2s6ICdDb25zb2xpZGF0ZSBkdXBsaWNhdGUgQVBJIGhhbmRsZXJzJywgZXhwZWN0ZWRBZ2VudDogJ3JlZmFjdG9yZXInLCBjYXRlZ29yeTogJ3JlZmFjdG9yaW5nJywgZGlmZmljdWx0eTogJ21lZGl1bScgfSxcblxuICAvLyA9PT0gT1BUSU1JWkVSIHRhc2tzID09PVxuICB7IGlkOiAnUDAwMScsIHRhc2s6ICdPcHRpbWl6ZSB0aGUgc2xvdyBkYXRhYmFzZSBxdWVyeScsIGV4cGVjdGVkQWdlbnQ6ICdvcHRpbWl6ZXInLCBjYXRlZ29yeTogJ3BlcmZvcm1hbmNlJywgZGlmZmljdWx0eTogJ2hhcmQnIH0sXG4gIHsgaWQ6ICdQMDAyJywgdGFzazogJ1JlZHVjZSB0aGUgYnVuZGxlIHNpemUgb2YgdGhlIGZyb250ZW5kJywgZXhwZWN0ZWRBZ2VudDogJ29wdGltaXplcicsIGNhdGVnb3J5OiAncGVyZm9ybWFuY2UnLCBkaWZmaWN1bHR5OiAnbWVkaXVtJyB9LFxuICB7IGlkOiAnUDAwMycsIHRhc2s6ICdJbXByb3ZlIHRoZSBBUEkgcmVzcG9uc2UgdGltZScsIGV4cGVjdGVkQWdlbnQ6ICdvcHRpbWl6ZXInLCBjYXRlZ29yeTogJ3BlcmZvcm1hbmNlJywgZGlmZmljdWx0eTogJ2hhcmQnIH0sXG4gIHsgaWQ6ICdQMDA0JywgdGFzazogJ0FkZCBjYWNoaW5nIHRvIHJlZHVjZSBkYXRhYmFzZSBsb2FkJywgZXhwZWN0ZWRBZ2VudDogJ29wdGltaXplcicsIGNhdGVnb3J5OiAncGVyZm9ybWFuY2UnLCBkaWZmaWN1bHR5OiAnbWVkaXVtJyB9LFxuICB7IGlkOiAnUDAwNScsIHRhc2s6ICdPcHRpbWl6ZSB0aGUgaW1hZ2UgbG9hZGluZyBwZXJmb3JtYW5jZScsIGV4cGVjdGVkQWdlbnQ6ICdvcHRpbWl6ZXInLCBjYXRlZ29yeTogJ3BlcmZvcm1hbmNlJywgZGlmZmljdWx0eTogJ21lZGl1bScgfSxcbiAgeyBpZDogJ1AwMDYnLCB0YXNrOiAnUHJvZmlsZSBhbmQgb3B0aW1pemUgbWVtb3J5IHVzYWdlJywgZXhwZWN0ZWRBZ2VudDogJ29wdGltaXplcicsIGNhdGVnb3J5OiAncGVyZm9ybWFuY2UnLCBkaWZmaWN1bHR5OiAnaGFyZCcgfSxcbiAgeyBpZDogJ1AwMDcnLCB0YXNrOiAnSW1wbGVtZW50IGxhenkgbG9hZGluZyBmb3IgdGhlIGRhc2hib2FyZCcsIGV4cGVjdGVkQWdlbnQ6ICdvcHRpbWl6ZXInLCBjYXRlZ29yeTogJ3BlcmZvcm1hbmNlJywgZGlmZmljdWx0eTogJ21lZGl1bScgfSxcblxuICAvLyA9PT0gREVWT1BTIHRhc2tzID09PVxuICB7IGlkOiAnRTAwMScsIHRhc2s6ICdTZXQgdXAgdGhlIENJL0NEIHBpcGVsaW5lIGZvciB0aGUgbmV3IHNlcnZpY2UnLCBleHBlY3RlZEFnZW50OiAnZGV2b3BzJywgY2F0ZWdvcnk6ICdkZXZvcHMnLCBkaWZmaWN1bHR5OiAnbWVkaXVtJyB9LFxuICB7IGlkOiAnRTAwMicsIHRhc2s6ICdDb25maWd1cmUgS3ViZXJuZXRlcyBkZXBsb3ltZW50IGZvciBwcm9kdWN0aW9uJywgZXhwZWN0ZWRBZ2VudDogJ2Rldm9wcycsIGNhdGVnb3J5OiAnZGV2b3BzJywgZGlmZmljdWx0eTogJ2hhcmQnIH0sXG4gIHsgaWQ6ICdFMDAzJywgdGFzazogJ1NldCB1cCBtb25pdG9yaW5nIGFuZCBhbGVydGluZycsIGV4cGVjdGVkQWdlbnQ6ICdkZXZvcHMnLCBjYXRlZ29yeTogJ2Rldm9wcycsIGRpZmZpY3VsdHk6ICdtZWRpdW0nIH0sXG4gIHsgaWQ6ICdFMDA0JywgdGFzazogJ0NyZWF0ZSBEb2NrZXIgY29udGFpbmVycyBmb3IgdGhlIG1pY3Jvc2VydmljZXMnLCBleHBlY3RlZEFnZW50OiAnZGV2b3BzJywgY2F0ZWdvcnk6ICdkZXZvcHMnLCBkaWZmaWN1bHR5OiAnbWVkaXVtJyB9LFxuICB7IGlkOiAnRTAwNScsIHRhc2s6ICdDb25maWd1cmUgYXV0by1zY2FsaW5nIGZvciB0aGUgQVBJIHNlcnZlcnMnLCBleHBlY3RlZEFnZW50OiAnZGV2b3BzJywgY2F0ZWdvcnk6ICdkZXZvcHMnLCBkaWZmaWN1bHR5OiAnaGFyZCcgfSxcbiAgeyBpZDogJ0UwMDYnLCB0YXNrOiAnU2V0IHVwIHRoZSBzdGFnaW5nIGVudmlyb25tZW50JywgZXhwZWN0ZWRBZ2VudDogJ2Rldm9wcycsIGNhdGVnb3J5OiAnZGV2b3BzJywgZGlmZmljdWx0eTogJ21lZGl1bScgfSxcbiAgeyBpZDogJ0UwMDcnLCB0YXNrOiAnSW1wbGVtZW50IGJsdWUtZ3JlZW4gZGVwbG95bWVudCBzdHJhdGVneScsIGV4cGVjdGVkQWdlbnQ6ICdkZXZvcHMnLCBjYXRlZ29yeTogJ2Rldm9wcycsIGRpZmZpY3VsdHk6ICdoYXJkJyB9LFxuXG4gIC8vID09PSBBUEktRE9DUyB0YXNrcyA9PT1cbiAgeyBpZDogJ0kwMDEnLCB0YXNrOiAnR2VuZXJhdGUgT3BlbkFQSSBzcGVjIGZvciB0aGUgUkVTVCBBUEknLCBleHBlY3RlZEFnZW50OiAnYXBpLWRvY3MnLCBjYXRlZ29yeTogJ2FwaS1kb2N1bWVudGF0aW9uJywgZGlmZmljdWx0eTogJ21lZGl1bScgfSxcbiAgeyBpZDogJ0kwMDInLCB0YXNrOiAnQ3JlYXRlIFN3YWdnZXIgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGVuZHBvaW50cycsIGV4cGVjdGVkQWdlbnQ6ICdhcGktZG9jcycsIGNhdGVnb3J5OiAnYXBpLWRvY3VtZW50YXRpb24nLCBkaWZmaWN1bHR5OiAnbWVkaXVtJyB9LFxuICB7IGlkOiAnSTAwMycsIHRhc2s6ICdEb2N1bWVudCB0aGUgR3JhcGhRTCBzY2hlbWEnLCBleHBlY3RlZEFnZW50OiAnYXBpLWRvY3MnLCBjYXRlZ29yeTogJ2FwaS1kb2N1bWVudGF0aW9uJywgZGlmZmljdWx0eTogJ21lZGl1bScgfSxcbiAgeyBpZDogJ0kwMDQnLCB0YXNrOiAnQWRkIGV4YW1wbGUgcmVxdWVzdHMgYW5kIHJlc3BvbnNlcyB0byBBUEkgZG9jcycsIGV4cGVjdGVkQWdlbnQ6ICdhcGktZG9jcycsIGNhdGVnb3J5OiAnYXBpLWRvY3VtZW50YXRpb24nLCBkaWZmaWN1bHR5OiAnZWFzeScgfSxcblxuICAvLyA9PT0gUExBTk5FUiB0YXNrcyA9PT1cbiAgeyBpZDogJ0wwMDEnLCB0YXNrOiAnQnJlYWsgZG93biB0aGUgZmVhdHVyZSBpbnRvIGltcGxlbWVudGF0aW9uIHRhc2tzJywgZXhwZWN0ZWRBZ2VudDogJ3BsYW5uZXInLCBjYXRlZ29yeTogJ3BsYW5uaW5nJywgZGlmZmljdWx0eTogJ21lZGl1bScgfSxcbiAgeyBpZDogJ0wwMDInLCB0YXNrOiAnQ3JlYXRlIGEgc3ByaW50IHBsYW4gZm9yIHRoZSBuZXh0IG1pbGVzdG9uZScsIGV4cGVjdGVkQWdlbnQ6ICdwbGFubmVyJywgY2F0ZWdvcnk6ICdwbGFubmluZycsIGRpZmZpY3VsdHk6ICdtZWRpdW0nIH0sXG4gIHsgaWQ6ICdMMDAzJywgdGFzazogJ0VzdGltYXRlIGVmZm9ydCBmb3IgdGhlIHJlZmFjdG9yaW5nIHByb2plY3QnLCBleHBlY3RlZEFnZW50OiAncGxhbm5lcicsIGNhdGVnb3J5OiAncGxhbm5pbmcnLCBkaWZmaWN1bHR5OiAnbWVkaXVtJyB9LFxuICB7IGlkOiAnTDAwNCcsIHRhc2s6ICdQcmlvcml0aXplIHRoZSBidWcgZml4ZXMgZm9yIHRoZSByZWxlYXNlJywgZXhwZWN0ZWRBZ2VudDogJ3BsYW5uZXInLCBjYXRlZ29yeTogJ3BsYW5uaW5nJywgZGlmZmljdWx0eTogJ2Vhc3knIH0sXG4gIHsgaWQ6ICdMMDA1JywgdGFzazogJ1BsYW4gdGhlIHRlY2huaWNhbCBkZWJ0IHJlZHVjdGlvbiByb2FkbWFwJywgZXhwZWN0ZWRBZ2VudDogJ3BsYW5uZXInLCBjYXRlZ29yeTogJ3BsYW5uaW5nJywgZGlmZmljdWx0eTogJ2hhcmQnIH0sXG5cbiAgLy8gPT09IEFNQklHVU9VUyAvIEVER0UgQ0FTRVMgPT09XG4gIHsgaWQ6ICdYMDAxJywgdGFzazogJ1RoZSBsb2dpbiBpcyBicm9rZW4sIHVzZXJzIGNhbm5vdCBzaWduIGluJywgZXhwZWN0ZWRBZ2VudDogJ2RlYnVnZ2VyJywgY2F0ZWdvcnk6ICdhbWJpZ3VvdXMnLCBkaWZmaWN1bHR5OiAnbWVkaXVtJyB9LFxuICB7IGlkOiAnWDAwMicsIHRhc2s6ICdXZSBuZWVkIGJldHRlciBlcnJvciBtZXNzYWdlcycsIGV4cGVjdGVkQWdlbnQ6ICdjb2RlcicsIGNhdGVnb3J5OiAnYW1iaWd1b3VzJywgZGlmZmljdWx0eTogJ2Vhc3knIH0sXG4gIHsgaWQ6ICdYMDAzJywgdGFzazogJ01ha2UgdGhlIGFwcCBmYXN0ZXInLCBleHBlY3RlZEFnZW50OiAnb3B0aW1pemVyJywgY2F0ZWdvcnk6ICdhbWJpZ3VvdXMnLCBkaWZmaWN1bHR5OiAnaGFyZCcgfSxcbiAgeyBpZDogJ1gwMDQnLCB0YXNrOiAnVGhlIGNvZGUgaXMgYSBtZXNzLCBjbGVhbiBpdCB1cCcsIGV4cGVjdGVkQWdlbnQ6ICdyZWZhY3RvcmVyJywgY2F0ZWdvcnk6ICdhbWJpZ3VvdXMnLCBkaWZmaWN1bHR5OiAnbWVkaXVtJyB9LFxuICB7IGlkOiAnWDAwNScsIHRhc2s6ICdJcyB0aGlzIGltcGxlbWVudGF0aW9uIHNlY3VyZT8nLCBleHBlY3RlZEFnZW50OiAnc2VjdXJpdHktYXJjaGl0ZWN0JywgY2F0ZWdvcnk6ICdhbWJpZ3VvdXMnLCBkaWZmaWN1bHR5OiAnbWVkaXVtJyB9LFxuXTtcblxuLyoqXG4gKiBTaW1wbGUga2V5d29yZC1iYXNlZCByb3V0aW5nIGZvciBiYXNlbGluZSBjb21wYXJpc29uXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBiYXNlbGluZUtleXdvcmRSb3V0ZXIodGFzazogc3RyaW5nKTogeyBhZ2VudDogQWdlbnRUeXBlOyBjb25maWRlbmNlOiBudW1iZXIgfSB7XG4gIGNvbnN0IHRhc2tMb3dlciA9IHRhc2sudG9Mb3dlckNhc2UoKTtcblxuICBjb25zdCBwYXR0ZXJuczogeyBrZXl3b3Jkczogc3RyaW5nW107IGFnZW50OiBBZ2VudFR5cGU7IHdlaWdodDogbnVtYmVyIH1bXSA9IFtcbiAgICB7IGtleXdvcmRzOiBbJ2ltcGxlbWVudCcsICdjcmVhdGUnLCAnd3JpdGUnLCAnYWRkJywgJ2J1aWxkJ10sIGFnZW50OiAnY29kZXInLCB3ZWlnaHQ6IDEgfSxcbiAgICB7IGtleXdvcmRzOiBbJ3Jlc2VhcmNoJywgJ2ZpbmQnLCAnaW52ZXN0aWdhdGUnLCAnYW5hbHl6ZScsICdleHBsb3JlJ10sIGFnZW50OiAncmVzZWFyY2hlcicsIHdlaWdodDogMSB9LFxuICAgIHsga2V5d29yZHM6IFsncmV2aWV3JywgJ2NoZWNrJywgJ2V2YWx1YXRlJywgJ2Fzc2VzcyddLCBhZ2VudDogJ3Jldmlld2VyJywgd2VpZ2h0OiAxIH0sXG4gICAgeyBrZXl3b3JkczogWyd0ZXN0JywgJ3VuaXQgdGVzdCcsICdpbnRlZ3JhdGlvbiB0ZXN0JywgJ2UyZScsICdjb3ZlcmFnZSddLCBhZ2VudDogJ3Rlc3RlcicsIHdlaWdodDogMS4yIH0sXG4gICAgeyBrZXl3b3JkczogWydkZXNpZ24nLCAnYXJjaGl0ZWN0JywgJ3NjaGVtYScsICdhZHInLCAnc3lzdGVtIGRlc2lnbiddLCBhZ2VudDogJ2FyY2hpdGVjdCcsIHdlaWdodDogMS4yIH0sXG4gICAgeyBrZXl3b3JkczogWydzZWN1cml0eScsICd2dWxuZXJhYmlsaXR5JywgJ3hzcycsICdzcWwgaW5qZWN0aW9uJywgJ2F1ZGl0JywgJ2N2ZSddLCBhZ2VudDogJ3NlY3VyaXR5LWFyY2hpdGVjdCcsIHdlaWdodDogMS41IH0sXG4gICAgeyBrZXl3b3JkczogWydkZWJ1ZycsICdmaXgnLCAnYnVnJywgJ2Vycm9yJywgJ2Jyb2tlbicsICdpc3N1ZSddLCBhZ2VudDogJ2RlYnVnZ2VyJywgd2VpZ2h0OiAxLjIgfSxcbiAgICB7IGtleXdvcmRzOiBbJ2RvY3VtZW50JywgJ3JlYWRtZScsICdqc2RvYycsICdjb21tZW50J10sIGFnZW50OiAnZG9jdW1lbnRlcicsIHdlaWdodDogMSB9LFxuICAgIHsga2V5d29yZHM6IFsncmVmYWN0b3InLCAnZXh0cmFjdCcsICdyZW5hbWUnLCAnY29uc29saWRhdGUnLCAnc3BsaXQnXSwgYWdlbnQ6ICdyZWZhY3RvcmVyJywgd2VpZ2h0OiAxLjIgfSxcbiAgICB7IGtleXdvcmRzOiBbJ29wdGltaXplJywgJ3BlcmZvcm1hbmNlJywgJ3Nsb3cnLCAnY2FjaGUnLCAnZmFzdGVyJ10sIGFnZW50OiAnb3B0aW1pemVyJywgd2VpZ2h0OiAxLjIgfSxcbiAgICB7IGtleXdvcmRzOiBbJ2RlcGxveScsICdjaS9jZCcsICdrdWJlcm5ldGVzJywgJ2RvY2tlcicsICdwaXBlbGluZSddLCBhZ2VudDogJ2Rldm9wcycsIHdlaWdodDogMS4yIH0sXG4gICAgeyBrZXl3b3JkczogWydvcGVuYXBpJywgJ3N3YWdnZXInLCAnYXBpIGRvYycsICdncmFwaHFsIHNjaGVtYSddLCBhZ2VudDogJ2FwaS1kb2NzJywgd2VpZ2h0OiAxLjMgfSxcbiAgICB7IGtleXdvcmRzOiBbJ3BsYW4nLCAnZXN0aW1hdGUnLCAncHJpb3JpdGl6ZScsICdzcHJpbnQnLCAncm9hZG1hcCddLCBhZ2VudDogJ3BsYW5uZXInLCB3ZWlnaHQ6IDEgfSxcbiAgXTtcblxuICBsZXQgYmVzdE1hdGNoOiB7IGFnZW50OiBBZ2VudFR5cGU7IHNjb3JlOiBudW1iZXIgfSA9IHsgYWdlbnQ6ICdjb2RlcicsIHNjb3JlOiAwIH07XG5cbiAgZm9yIChjb25zdCBwYXR0ZXJuIG9mIHBhdHRlcm5zKSB7XG4gICAgbGV0IHNjb3JlID0gMDtcbiAgICBmb3IgKGNvbnN0IGtleXdvcmQgb2YgcGF0dGVybi5rZXl3b3Jkcykge1xuICAgICAgaWYgKHRhc2tMb3dlci5pbmNsdWRlcyhrZXl3b3JkKSkge1xuICAgICAgICBzY29yZSArPSBwYXR0ZXJuLndlaWdodDtcbiAgICAgIH1cbiAgICB9XG4gICAgaWYgKHNjb3JlID4gYmVzdE1hdGNoLnNjb3JlKSB7XG4gICAgICBiZXN0TWF0Y2ggPSB7IGFnZW50OiBwYXR0ZXJuLmFnZW50LCBzY29yZSB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgYWdlbnQ6IGJlc3RNYXRjaC5hZ2VudCxcbiAgICBjb25maWRlbmNlOiBNYXRoLm1pbihiZXN0TWF0Y2guc2NvcmUgLyAzLCAxKSwgLy8gTm9ybWFsaXplIHRvIDAtMVxuICB9O1xufVxuXG4vKipcbiAqIFJ1biB0aGUgcm91dGluZyBiZW5jaG1hcmtcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJ1blJvdXRpbmdCZW5jaG1hcmsoXG4gIHJvdXRlcjogKHRhc2s6IHN0cmluZykgPT4geyBhZ2VudDogc3RyaW5nOyBjb25maWRlbmNlOiBudW1iZXIgfVxuKTogUm91dGluZ0JlbmNobWFya1Jlc3VsdHMge1xuICBjb25zdCByZXN1bHRzOiBSb3V0aW5nUmVzdWx0W10gPSBbXTtcbiAgY29uc3QgbGF0ZW5jaWVzOiBudW1iZXJbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgdGVzdENhc2Ugb2YgUk9VVElOR19URVNUX0NBU0VTKSB7XG4gICAgY29uc3Qgc3RhcnQgPSBwZXJmb3JtYW5jZS5ub3coKTtcbiAgICBjb25zdCBwcmVkaWN0aW9uID0gcm91dGVyKHRlc3RDYXNlLnRhc2spO1xuICAgIGNvbnN0IGxhdGVuY3lNcyA9IHBlcmZvcm1hbmNlLm5vdygpIC0gc3RhcnQ7XG5cbiAgICBsYXRlbmNpZXMucHVzaChsYXRlbmN5TXMpO1xuXG4gICAgcmVzdWx0cy5wdXNoKHtcbiAgICAgIHRlc3RJZDogdGVzdENhc2UuaWQsXG4gICAgICB0YXNrOiB0ZXN0Q2FzZS50YXNrLFxuICAgICAgZXhwZWN0ZWRBZ2VudDogdGVzdENhc2UuZXhwZWN0ZWRBZ2VudCxcbiAgICAgIHByZWRpY3RlZEFnZW50OiBwcmVkaWN0aW9uLmFnZW50LFxuICAgICAgY29uZmlkZW5jZTogcHJlZGljdGlvbi5jb25maWRlbmNlLFxuICAgICAgY29ycmVjdDogcHJlZGljdGlvbi5hZ2VudCA9PT0gdGVzdENhc2UuZXhwZWN0ZWRBZ2VudCxcbiAgICAgIGxhdGVuY3lNcyxcbiAgICB9KTtcbiAgfVxuXG4gIC8vIENhbGN1bGF0ZSBtZXRyaWNzXG4gIGNvbnN0IGNvcnJlY3QgPSByZXN1bHRzLmZpbHRlcihyID0+IHIuY29ycmVjdCkubGVuZ3RoO1xuICBjb25zdCBhY2N1cmFjeSA9IGNvcnJlY3QgLyByZXN1bHRzLmxlbmd0aDtcblxuICAvLyBBY2N1cmFjeSBieSBjYXRlZ29yeVxuICBjb25zdCBjYXRlZ29yaWVzID0gWy4uLm5ldyBTZXQoUk9VVElOR19URVNUX0NBU0VTLm1hcCh0ID0+IHQuY2F0ZWdvcnkpKV07XG4gIGNvbnN0IGFjY3VyYWN5QnlDYXRlZ29yeTogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHt9O1xuICBmb3IgKGNvbnN0IGNhdCBvZiBjYXRlZ29yaWVzKSB7XG4gICAgY29uc3QgY2F0UmVzdWx0cyA9IHJlc3VsdHMuZmlsdGVyKChyLCBpKSA9PiBST1VUSU5HX1RFU1RfQ0FTRVNbaV0uY2F0ZWdvcnkgPT09IGNhdCk7XG4gICAgYWNjdXJhY3lCeUNhdGVnb3J5W2NhdF0gPSBjYXRSZXN1bHRzLmZpbHRlcihyID0+IHIuY29ycmVjdCkubGVuZ3RoIC8gY2F0UmVzdWx0cy5sZW5ndGg7XG4gIH1cblxuICAvLyBBY2N1cmFjeSBieSBkaWZmaWN1bHR5XG4gIGNvbnN0IGRpZmZpY3VsdGllcyA9IFsnZWFzeScsICdtZWRpdW0nLCAnaGFyZCddO1xuICBjb25zdCBhY2N1cmFjeUJ5RGlmZmljdWx0eTogUmVjb3JkPHN0cmluZywgbnVtYmVyPiA9IHt9O1xuICBmb3IgKGNvbnN0IGRpZmYgb2YgZGlmZmljdWx0aWVzKSB7XG4gICAgY29uc3QgZGlmZlJlc3VsdHMgPSByZXN1bHRzLmZpbHRlcigociwgaSkgPT4gUk9VVElOR19URVNUX0NBU0VTW2ldLmRpZmZpY3VsdHkgPT09IGRpZmYpO1xuICAgIGFjY3VyYWN5QnlEaWZmaWN1bHR5W2RpZmZdID0gZGlmZlJlc3VsdHMuZmlsdGVyKHIgPT4gci5jb3JyZWN0KS5sZW5ndGggLyBkaWZmUmVzdWx0cy5sZW5ndGg7XG4gIH1cblxuICAvLyBMYXRlbmN5IHBlcmNlbnRpbGVzXG4gIGNvbnN0IHNvcnRlZExhdGVuY2llcyA9IFsuLi5sYXRlbmNpZXNdLnNvcnQoKGEsIGIpID0+IGEgLSBiKTtcbiAgY29uc3QgcDUwID0gc29ydGVkTGF0ZW5jaWVzW01hdGguZmxvb3Ioc29ydGVkTGF0ZW5jaWVzLmxlbmd0aCAqIDAuNSldO1xuICBjb25zdCBwOTUgPSBzb3J0ZWRMYXRlbmNpZXNbTWF0aC5mbG9vcihzb3J0ZWRMYXRlbmNpZXMubGVuZ3RoICogMC45NSldO1xuICBjb25zdCBhdmdMYXRlbmN5ID0gbGF0ZW5jaWVzLnJlZHVjZSgoYSwgYikgPT4gYSArIGIsIDApIC8gbGF0ZW5jaWVzLmxlbmd0aDtcblxuICByZXR1cm4ge1xuICAgIGFjY3VyYWN5LFxuICAgIGFjY3VyYWN5QnlDYXRlZ29yeSxcbiAgICBhY2N1cmFjeUJ5RGlmZmljdWx0eSxcbiAgICBhdmdMYXRlbmN5TXM6IGF2Z0xhdGVuY3ksXG4gICAgcDUwTGF0ZW5jeU1zOiBwNTAsXG4gICAgcDk1TGF0ZW5jeU1zOiBwOTUsXG4gICAgdG90YWxUZXN0czogcmVzdWx0cy5sZW5ndGgsXG4gICAgY29ycmVjdCxcbiAgICByZXN1bHRzLFxuICB9O1xufVxuXG4vKipcbiAqIEZvcm1hdCBiZW5jaG1hcmsgcmVzdWx0cyBmb3IgZGlzcGxheVxuICovXG5leHBvcnQgZnVuY3Rpb24gZm9ybWF0Um91dGluZ1Jlc3VsdHMocmVzdWx0czogUm91dGluZ0JlbmNobWFya1Jlc3VsdHMpOiBzdHJpbmcge1xuICBjb25zdCBsaW5lczogc3RyaW5nW10gPSBbXTtcblxuICBsaW5lcy5wdXNoKCcnKTtcbiAgbGluZXMucHVzaCgn4pWU4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWXJyk7XG4gIGxpbmVzLnB1c2goJ+KVkSAgICAgICAgICAgICAgUk9VVElORyBCRU5DSE1BUksgUkVTVUxUUyAgICAgICAgICAgICAgICAgICAgICAg4pWRJyk7XG4gIGxpbmVzLnB1c2goJ+KVoOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVoycpO1xuICBsaW5lcy5wdXNoKGDilZEgIE92ZXJhbGwgQWNjdXJhY3k6ICR7KHJlc3VsdHMuYWNjdXJhY3kgKiAxMDApLnRvRml4ZWQoMSl9JSAoJHtyZXN1bHRzLmNvcnJlY3R9LyR7cmVzdWx0cy50b3RhbFRlc3RzfSlgLnBhZEVuZCg2MykgKyAn4pWRJyk7XG4gIGxpbmVzLnB1c2goJ+KVoOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVkOKVoycpO1xuICBsaW5lcy5wdXNoKCfilZEgIEJ5IENhdGVnb3J5OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIOKVkScpO1xuXG4gIGZvciAoY29uc3QgW2NhdCwgYWNjXSBvZiBPYmplY3QuZW50cmllcyhyZXN1bHRzLmFjY3VyYWN5QnlDYXRlZ29yeSkuc29ydCgoYSwgYikgPT4gYlsxXSAtIGFbMV0pKSB7XG4gICAgY29uc3QgYmFyID0gJ+KWiCcucmVwZWF0KE1hdGguZmxvb3IoYWNjICogMjApKSArICfilpEnLnJlcGVhdCgyMCAtIE1hdGguZmxvb3IoYWNjICogMjApKTtcbiAgICBsaW5lcy5wdXNoKGDilZEgICAgJHtjYXQucGFkRW5kKDE4KX0gWyR7YmFyfV0gJHsoYWNjICogMTAwKS50b0ZpeGVkKDApLnBhZFN0YXJ0KDMpfSUgIOKVkWApO1xuICB9XG5cbiAgbGluZXMucHVzaCgn4pWg4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWjJyk7XG4gIGxpbmVzLnB1c2goJ+KVkSAgQnkgRGlmZmljdWx0eTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg4pWRJyk7XG5cbiAgZm9yIChjb25zdCBbZGlmZiwgYWNjXSBvZiBPYmplY3QuZW50cmllcyhyZXN1bHRzLmFjY3VyYWN5QnlEaWZmaWN1bHR5KSkge1xuICAgIGNvbnN0IGJhciA9ICfilognLnJlcGVhdChNYXRoLmZsb29yKGFjYyAqIDIwKSkgKyAn4paRJy5yZXBlYXQoMjAgLSBNYXRoLmZsb29yKGFjYyAqIDIwKSk7XG4gICAgbGluZXMucHVzaChg4pWRICAgICR7ZGlmZi5wYWRFbmQoMTgpfSBbJHtiYXJ9XSAkeyhhY2MgKiAxMDApLnRvRml4ZWQoMCkucGFkU3RhcnQoMyl9JSAg4pWRYCk7XG4gIH1cblxuICBsaW5lcy5wdXNoKCfilaDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilZDilaMnKTtcbiAgbGluZXMucHVzaCgn4pWRICBMYXRlbmN5OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICDilZEnKTtcbiAgbGluZXMucHVzaChg4pWRICAgIEF2ZXJhZ2U6ICR7cmVzdWx0cy5hdmdMYXRlbmN5TXMudG9GaXhlZCgyKX1tc2AucGFkRW5kKDYzKSArICfilZEnKTtcbiAgbGluZXMucHVzaChg4pWRICAgIFA1MDogICAgICR7cmVzdWx0cy5wNTBMYXRlbmN5TXMudG9GaXhlZCgyKX1tc2AucGFkRW5kKDYzKSArICfilZEnKTtcbiAgbGluZXMucHVzaChg4pWRICAgIFA5NTogICAgICR7cmVzdWx0cy5wOTVMYXRlbmN5TXMudG9GaXhlZCgyKX1tc2AucGFkRW5kKDYzKSArICfilZEnKTtcbiAgbGluZXMucHVzaCgn4pWa4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWQ4pWdJyk7XG5cbiAgLy8gU2hvdyBmYWlsdXJlc1xuICBjb25zdCBmYWlsdXJlcyA9IHJlc3VsdHMucmVzdWx0cy5maWx0ZXIociA9PiAhci5jb3JyZWN0KTtcbiAgaWYgKGZhaWx1cmVzLmxlbmd0aCA+IDAgJiYgZmFpbHVyZXMubGVuZ3RoIDw9IDIwKSB7XG4gICAgbGluZXMucHVzaCgnJyk7XG4gICAgbGluZXMucHVzaCgnTWlzcm91dGVkIHRhc2tzOicpO1xuICAgIGZvciAoY29uc3QgZiBvZiBmYWlsdXJlcy5zbGljZSgwLCAxMCkpIHtcbiAgICAgIGxpbmVzLnB1c2goYCAgWyR7Zi50ZXN0SWR9XSBcIiR7Zi50YXNrLnNsaWNlKDAsIDUwKX0uLi5cImApO1xuICAgICAgbGluZXMucHVzaChgICAgICAgICAgRXhwZWN0ZWQ6ICR7Zi5leHBlY3RlZEFnZW50fSwgR290OiAke2YucHJlZGljdGVkQWdlbnR9YCk7XG4gICAgfVxuICAgIGlmIChmYWlsdXJlcy5sZW5ndGggPiAxMCkge1xuICAgICAgbGluZXMucHVzaChgICAuLi4gYW5kICR7ZmFpbHVyZXMubGVuZ3RoIC0gMTB9IG1vcmVgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbGluZXMuam9pbignXFxuJyk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IHtcbiAgUk9VVElOR19URVNUX0NBU0VTLFxuICBBR0VOVF9UWVBFUyxcbiAgYmFzZWxpbmVLZXl3b3JkUm91dGVyLFxuICBydW5Sb3V0aW5nQmVuY2htYXJrLFxuICBmb3JtYXRSb3V0aW5nUmVzdWx0cyxcbn07XG4iXX0=
@@ -28,14 +28,7 @@
28
28
  * ```
29
29
  */
30
30
  Object.defineProperty(exports, "__esModule", { value: true });
31
- exports.AGENT_TRAINING_DATA = exports.ContrastiveTrainer = void 0;
32
- exports.cosineSimilarity = cosineSimilarity;
33
- exports.tripletLoss = tripletLoss;
34
- exports.infoNCELoss = infoNCELoss;
35
- exports.computeGradient = computeGradient;
36
- exports.generateTrainingDataset = generateTrainingDataset;
37
- exports.generateContrastivePairs = generateContrastivePairs;
38
- exports.getDatasetStats = getDatasetStats;
31
+ exports.getDatasetStats = exports.generateContrastivePairs = exports.generateTrainingDataset = exports.AGENT_TRAINING_DATA = exports.ContrastiveTrainer = exports.computeGradient = exports.infoNCELoss = exports.tripletLoss = exports.cosineSimilarity = void 0;
39
32
  const fs_1 = require("fs");
40
33
  const path_1 = require("path");
41
34
  /**
@@ -64,6 +57,7 @@ function cosineSimilarity(a, b) {
64
57
  }
65
58
  return dot / (Math.sqrt(normA) * Math.sqrt(normB) || 1);
66
59
  }
60
+ exports.cosineSimilarity = cosineSimilarity;
67
61
  /**
68
62
  * Compute triplet loss
69
63
  * L = max(0, margin + d(anchor, positive) - d(anchor, negative))
@@ -73,6 +67,7 @@ function tripletLoss(anchorEmb, positiveEmb, negativeEmb, margin = 0.5) {
73
67
  const negDist = 1 - cosineSimilarity(anchorEmb, negativeEmb);
74
68
  return Math.max(0, margin + posDist - negDist);
75
69
  }
70
+ exports.tripletLoss = tripletLoss;
76
71
  /**
77
72
  * Compute InfoNCE loss (contrastive)
78
73
  */
@@ -87,6 +82,7 @@ function infoNCELoss(anchorEmb, positiveEmb, negativeEmbs, temperature = 0.07) {
87
82
  // Cross-entropy loss
88
83
  return -Math.log(expPos / denominator);
89
84
  }
85
+ exports.infoNCELoss = infoNCELoss;
90
86
  /**
91
87
  * Compute gradient for embedding update (simplified)
92
88
  */
@@ -103,6 +99,7 @@ function computeGradient(anchorEmb, positiveEmb, negativeEmb, lr = 0.0001) {
103
99
  }
104
100
  return gradient;
105
101
  }
102
+ exports.computeGradient = computeGradient;
106
103
  /**
107
104
  * Contrastive Trainer for RuvLTRA models
108
105
  *
@@ -539,6 +536,7 @@ function generateTrainingDataset() {
539
536
  }
540
537
  return examples;
541
538
  }
539
+ exports.generateTrainingDataset = generateTrainingDataset;
542
540
  /**
543
541
  * Generate contrastive pairs for training
544
542
  */
@@ -572,6 +570,7 @@ function generateContrastivePairs() {
572
570
  }
573
571
  return pairs;
574
572
  }
573
+ exports.generateContrastivePairs = generateContrastivePairs;
575
574
  /**
576
575
  * Get dataset statistics
577
576
  */
@@ -586,4 +585,5 @@ function getDatasetStats() {
586
585
  agents,
587
586
  };
588
587
  }
589
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhc3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhc3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQkc7OztBQTRHSCw0Q0FTQztBQU1ELGtDQVNDO0FBS0Qsa0NBaUJDO0FBS0QsMENBb0JDO0FBbWVELDBEQXNDQztBQUtELDREQXFDQztBQUtELDBDQVdDO0FBcHZCRCwyQkFBMEQ7QUFDMUQsK0JBQTRCO0FBeUY1Qjs7R0FFRztBQUNILE1BQU0sMEJBQTBCLEdBQWdDO0lBQzlELE1BQU0sRUFBRSxFQUFFO0lBQ1YsU0FBUyxFQUFFLEVBQUU7SUFDYixZQUFZLEVBQUUsTUFBTTtJQUNwQixNQUFNLEVBQUUsR0FBRztJQUNYLFdBQVcsRUFBRSxJQUFJO0lBQ2pCLGlCQUFpQixFQUFFLEdBQUc7SUFDdEIsVUFBVSxFQUFFLG1CQUFtQjtDQUNoQyxDQUFDO0FBRUY7O0dBRUc7QUFDSCxTQUFnQixnQkFBZ0IsQ0FBQyxDQUFZLEVBQUUsQ0FBWTtJQUN6RCxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxNQUFNLEtBQUssQ0FBQyxDQUFDLE1BQU07UUFBRSxPQUFPLENBQUMsQ0FBQztJQUNoRCxJQUFJLEdBQUcsR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxDQUFDO0lBQ2xDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDbEMsR0FBRyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDbkIsS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDckIs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QUssR0FBRyx3QkFBd0IsRUFBRSxDQUFDO0lBQ3pDLE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsMkJBQW1CLENBQUMsQ0FBQztJQUVoRCxPQUFPO1FBQ0wsYUFBYSxFQUFFLFFBQVEsQ0FBQyxNQUFNO1FBQzlCLGdCQUFnQixFQUFFLEtBQUssQ0FBQyxNQUFNO1FBQzlCLFVBQVUsRUFBRSxNQUFNLENBQUMsTUFBTTtRQUN6QixNQUFNO0tBQ1AsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbnRyYXN0aXZlIEZpbmUtdHVuaW5nIGZvciBSdXZMVFJBIENsYXVkZSBDb2RlIFJvdXRlclxuICpcbiAqIFVzZXMgdHJpcGxldCBsb3NzIHRvIGZpbmUtdHVuZSBlbWJlZGRpbmdzOlxuICogLSBBbmNob3I6IHRhc2sgZGVzY3JpcHRpb25cbiAqIC0gUG9zaXRpdmU6IGNvcnJlY3QgYWdlbnQgZGVzY3JpcHRpb25cbiAqIC0gTmVnYXRpdmU6IHdyb25nIGFnZW50IGRlc2NyaXB0aW9uIChoYXJkIG5lZ2F0aXZlKVxuICpcbiAqIEdvYWw6IG1pbmltaXplIGRpc3RhbmNlKGFuY2hvciwgcG9zaXRpdmUpIGFuZCBtYXhpbWl6ZSBkaXN0YW5jZShhbmNob3IsIG5lZ2F0aXZlKVxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBDb250cmFzdGl2ZVRyYWluZXIsIHRyaXBsZXRMb3NzLCBpbmZvTkNFTG9zcyB9IGZyb20gJ0BydXZlY3Rvci9ydXZsbG0nO1xuICpcbiAqIGNvbnN0IHRyYWluZXIgPSBuZXcgQ29udHJhc3RpdmVUcmFpbmVyKHtcbiAqICAgZXBvY2hzOiAxMCxcbiAqICAgYmF0Y2hTaXplOiAxNixcbiAqICAgbWFyZ2luOiAwLjUsXG4gKiB9KTtcbiAqXG4gKiAvLyBBZGQgdHJpcGxldHNcbiAqIHRyYWluZXIuYWRkVHJpcGxldChhbmNob3JFbWIsIHBvc2l0aXZlRW1iLCBuZWdhdGl2ZUVtYiwgdHJ1ZSk7XG4gKlxuICogLy8gVHJhaW4gYW5kIGV4cG9ydFxuICogY29uc3QgcmVzdWx0cyA9IHRyYWluZXIudHJhaW4oKTtcbiAqIHRyYWluZXIuZXhwb3J0VHJhaW5pbmdEYXRhKCcuL291dHB1dCcpO1xuICogYGBgXG4gKi9cblxuaW1wb3J0IHsgd3JpdGVGaWxlU3luYywgbWtkaXJTeW5jLCBleGlzdHNTeW5jIH0gZnJvbSAnZnMnO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgRW1iZWRkaW5nIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogQ29udHJhc3RpdmUgdHJhaW5pbmcgY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRyYXN0aXZlQ29uZmlnIHtcbiAgLyoqIE51bWJlciBvZiB0cmFpbmluZyBlcG9jaHMgKGRlZmF1bHQ6IDEwKSAqL1xuICBlcG9jaHM/OiBudW1iZXI7XG4gIC8qKiBCYXRjaCBzaXplIChkZWZhdWx0OiAxNikgKi9cbiAgYmF0Y2hTaXplPzogbnVtYmVyO1xuICAvKiogTGVhcm5pbmcgcmF0ZSAoZGVmYXVsdDogMC4wMDAxKSAqL1xuICBsZWFybmluZ1JhdGU/OiBudW1iZXI7XG4gIC8qKiBUcmlwbGV0IGxvc3MgbWFyZ2luIChkZWZhdWx0OiAwLjUpICovXG4gIG1hcmdpbj86IG51bWJlcjtcbiAgLyoqIEluZm9OQ0UgdGVtcGVyYXR1cmUgKGRlZmF1bHQ6IDAuMDcpICovXG4gIHRlbXBlcmF0dXJlPzogbnVtYmVyO1xuICAvKiogUmF0aW8gb2YgaGFyZCBuZWdhdGl2ZXMgKGRlZmF1bHQ6IDAuNykgKi9cbiAgaGFyZE5lZ2F0aXZlUmF0aW8/OiBudW1iZXI7XG4gIC8qKiBPdXRwdXQgZGlyZWN0b3J5IGZvciB0cmFpbmluZyBkYXRhICovXG4gIG91dHB1dFBhdGg/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVHJhaW5pbmcgdHJpcGxldFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYWluaW5nVHJpcGxldCB7XG4gIC8qKiBBbmNob3IgZW1iZWRkaW5nICh0YXNrKSAqL1xuICBhbmNob3I6IHN0cmluZztcbiAgYW5jaG9yRW1iOiBFbWJlZGRpbmc7XG4gIC8qKiBQb3NpdGl2ZSBleGFtcGxlIChjb3JyZWN0IGFnZW50KSAqL1xuICBwb3NpdGl2ZTogc3RyaW5nO1xuICBwb3NpdGl2ZUVtYjogRW1iZWRkaW5nO1xuICAvKiogTmVnYXRpdmUgZXhhbXBsZSAod3JvbmcgYWdlbnQpICovXG4gIG5lZ2F0aXZlOiBzdHJpbmc7XG4gIG5lZ2F0aXZlRW1iOiBFbWJlZGRpbmc7XG4gIC8qKiBXaGV0aGVyIHRoaXMgaXMgYSBoYXJkIG5lZ2F0aXZlICovXG4gIGlzSGFyZDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBUcmFpbmluZyBoaXN0b3J5IGVudHJ5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhaW5pbmdIaXN0b3J5RW50cnkge1xuICBlcG9jaDogbnVtYmVyO1xuICBsb3NzOiBudW1iZXI7XG59XG5cbi8qKlxuICogQ29udHJhc3RpdmUgdHJhaW5pbmcgcmVzdWx0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRyYXN0aXZlVHJhaW5pbmdSZXN1bHQge1xuICAvKiogVG90YWwgdHJpcGxldHMgdHJhaW5lZCBvbiAqL1xuICB0cmlwbGV0Q291bnQ6IG51bWJlcjtcbiAgLyoqIEZpbmFsIGxvc3MgdmFsdWUgKi9cbiAgZmluYWxMb3NzOiBudW1iZXI7XG4gIC8qKiBJbml0aWFsIGxvc3MgdmFsdWUgKi9cbiAgaW5pdGlhbExvc3M6IG51bWJlcjtcbiAgLyoqIEltcHJvdmVtZW50IHBlcmNlbnRhZ2UgKi9cbiAgaW1wcm92ZW1lbnQ6IG51bWJlcjtcbiAgLyoqIFRyYWluaW5nIGhpc3RvcnkgKi9cbiAgaGlzdG9yeTogVHJhaW5pbmdIaXN0b3J5RW50cnlbXTtcbiAgLyoqIER1cmF0aW9uIGluIG1zICovXG4gIGR1cmF0aW9uTXM6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBMb1JBIGNvbmZpZ3VyYXRpb24gZm9yIGZpbmUtdHVuaW5nXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9SQUV4cG9ydENvbmZpZyB7XG4gIG1vZGVsX3R5cGU6IHN0cmluZztcbiAgYmFzZV9tb2RlbDogc3RyaW5nO1xuICBvdXRwdXRfZGlyOiBzdHJpbmc7XG4gIGxvcmFfcjogbnVtYmVyO1xuICBsb3JhX2FscGhhOiBudW1iZXI7XG4gIGxvcmFfZHJvcG91dDogbnVtYmVyO1xuICB0YXJnZXRfbW9kdWxlczogc3RyaW5nW107XG4gIGxlYXJuaW5nX3JhdGU6IG51bWJlcjtcbiAgbnVtX3RyYWluX2Vwb2NoczogbnVtYmVyO1xuICBwZXJfZGV2aWNlX3RyYWluX2JhdGNoX3NpemU6IG51bWJlcjtcbiAgZ3JhZGllbnRfYWNjdW11bGF0aW9uX3N0ZXBzOiBudW1iZXI7XG4gIHdhcm11cF9yYXRpbzogbnVtYmVyO1xuICBsb3NzX3R5cGU6IHN0cmluZztcbiAgbWFyZ2luOiBudW1iZXI7XG4gIHRlbXBlcmF0dXJlOiBudW1iZXI7XG4gIHRyYWluX2RhdGE6IHN0cmluZztcbiAgZXZhbF9kYXRhOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGVmYXVsdCBjb250cmFzdGl2ZSBjb25maWdcbiAqL1xuY29uc3QgREVGQVVMVF9DT05UUkFTVElWRV9DT05GSUc6IFJlcXVpcmVkPENvbnRyYXN0aXZlQ29uZmlnPiA9IHtcbiAgZXBvY2hzOiAxMCxcbiAgYmF0Y2hTaXplOiAxNixcbiAgbGVhcm5pbmdSYXRlOiAwLjAwMDEsXG4gIG1hcmdpbjogMC41LFxuICB0ZW1wZXJhdHVyZTogMC4wNyxcbiAgaGFyZE5lZ2F0aXZlUmF0aW86IDAuNyxcbiAgb3V0cHV0UGF0aDogJy4vdHJhaW5pbmctb3V0cHV0Jyxcbn07XG5cbi8qKlxuICogQ29tcHV0ZSBjb3NpbmUgc2ltaWxhcml0eSBiZXR3ZWVuIHR3byBlbWJlZGRpbmdzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb3NpbmVTaW1pbGFyaXR5KGE6IEVtYmVkZGluZywgYjogRW1iZWRkaW5nKTogbnVtYmVyIHtcbiAgaWYgKCFhIHx8ICFiIHx8IGEubGVuZ3RoICE9PSBiLmxlbmd0aCkgcmV0dXJuIDA7XG4gIGxldCBkb3QgPSAwLCBub3JtQSA9IDAsIG5vcm1CID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgZG90ICs9IGFbaV0gKiBiW2ldO1xuICAgIG5vcm1BICs9IGFbaV0gKiBhW2ldO1xuICAgIG5vcm1CICs9IGJbaV0gKiBiW2ldO1xuICB9XG4gIHJldHVybiBkb3QgLyAoTWF0aC5zcXJ0KG5vcm1BKSAqIE1hdGguc3FydChub3JtQikgfHwgMSk7XG59XG5cbi8qKlxuICogQ29tcHV0ZSB0cmlwbGV0IGxvc3NcbiAqIEwgPSBtYXgoMCwgbWFyZ2luICsgZChhbmNob3IsIHBvc2l0aXZlKSAtIGQoYW5jaG9yLCBuZWdhdGl2ZSkpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmlwbGV0TG9zcyhcbiAgYW5jaG9yRW1iOiBFbWJlZGRpbmcsXG4gIHBvc2l0aXZlRW1iOiBFbWJlZGRpbmcsXG4gIG5lZ2F0aXZlRW1iOiBFbWJlZGRpbmcsXG4gIG1hcmdpbjogbnVtYmVyID0gMC41XG4pOiBudW1iZXIge1xuICBjb25zdCBwb3NEaXN0ID0gMSAtIGNvc2luZVNpbWlsYXJpdHkoYW5jaG9yRW1iLCBwb3NpdGl2ZUVtYik7XG4gIGNvbnN0IG5lZ0Rpc3QgPSAxIC0gY29zaW5lU2ltaWxhcml0eShhbmNob3JFbWIsIG5lZ2F0aXZlRW1iKTtcbiAgcmV0dXJuIE1hdGgubWF4KDAsIG1hcmdpbiArIHBvc0Rpc3QgLSBuZWdEaXN0KTtcbn1cblxuLyoqXG4gKiBDb21wdXRlIEluZm9OQ0UgbG9zcyAoY29udHJhc3RpdmUpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmZvTkNFTG9zcyhcbiAgYW5jaG9yRW1iOiBFbWJlZGRpbmcsXG4gIHBvc2l0aXZlRW1iOiBFbWJlZGRpbmcsXG4gIG5lZ2F0aXZlRW1iczogRW1iZWRkaW5nW10sXG4gIHRlbXBlcmF0dXJlOiBudW1iZXIgPSAwLjA3XG4pOiBudW1iZXIge1xuICBjb25zdCBwb3NTaW0gPSBjb3NpbmVTaW1pbGFyaXR5KGFuY2hvckVtYiwgcG9zaXRpdmVFbWIpIC8gdGVtcGVyYXR1cmU7XG4gIGNvbnN0IG5lZ1NpbXMgPSBuZWdhdGl2ZUVtYnMubWFwKG5lZyA9PiBjb3NpbmVTaW1pbGFyaXR5KGFuY2hvckVtYiwgbmVnKSAvIHRlbXBlcmF0dXJlKTtcblxuICAvLyBTb2Z0bWF4IGRlbm9taW5hdG9yXG4gIGNvbnN0IG1heFNpbSA9IE1hdGgubWF4KHBvc1NpbSwgLi4ubmVnU2ltcyk7XG4gIGNvbnN0IGV4cFBvcyA9IE1hdGguZXhwKHBvc1NpbSAtIG1heFNpbSk7XG4gIGNvbnN0IGV4cE5lZ3MgPSBuZWdTaW1zLm1hcChzaW0gPT4gTWF0aC5leHAoc2ltIC0gbWF4U2ltKSk7XG4gIGNvbnN0IGRlbm9taW5hdG9yID0gZXhwUG9zICsgZXhwTmVncy5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiLCAwKTtcblxuICAvLyBDcm9zcy1lbnRyb3B5IGxvc3NcbiAgcmV0dXJuIC1NYXRoLmxvZyhleHBQb3MgLyBkZW5vbWluYXRvcik7XG59XG5cbi8qKlxuICogQ29tcHV0ZSBncmFkaWVudCBmb3IgZW1iZWRkaW5nIHVwZGF0ZSAoc2ltcGxpZmllZClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVHcmFkaWVudChcbiAgYW5jaG9yRW1iOiBFbWJlZGRpbmcsXG4gIHBvc2l0aXZlRW1iOiBFbWJlZGRpbmcsXG4gIG5lZ2F0aXZlRW1iOiBFbWJlZGRpbmcsXG4gIGxyOiBudW1iZXIgPSAwLjAwMDFcbik6IEVtYmVkZGluZyB7XG4gIGNvbnN0IGRpbSA9IGFuY2hvckVtYi5sZW5ndGg7XG4gIGNvbnN0IGdyYWRpZW50OiBudW1iZXJbXSA9IG5ldyBBcnJheShkaW0pLmZpbGwoMCk7XG5cbiAgLy8gUHVsbCBhbmNob3IgdG93YXJkcyBwb3NpdGl2ZVxuICBmb3IgKGxldCBpID0gMDsgaSA8IGRpbTsgaSsrKSB7XG4gICAgZ3JhZGllbnRbaV0gKz0gbHIgKiAocG9zaXRpdmVFbWJbaV0gLSBhbmNob3JFbWJbaV0pO1xuICB9XG5cbiAgLy8gUHVzaCBhbmNob3IgYXdheSBmcm9tIG5lZ2F0aXZlXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGltOyBpKyspIHtcbiAgICBncmFkaWVudFtpXSAtPSBsciAqIDAuNSAqIChuZWdhdGl2ZUVtYltpXSAtIGFuY2hvckVtYltpXSk7XG4gIH1cblxuICByZXR1cm4gZ3JhZGllbnQ7XG59XG5cbi8qKlxuICogQ29udHJhc3RpdmUgVHJhaW5lciBmb3IgUnV2TFRSQSBtb2RlbHNcbiAqXG4gKiBJbXBsZW1lbnRzIHRyaXBsZXQgbG9zcyBhbmQgSW5mb05DRSBsb3NzIGZvciBlbWJlZGRpbmcgZmluZS10dW5pbmcuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb250cmFzdGl2ZVRyYWluZXIge1xuICBwcml2YXRlIGNvbmZpZzogUmVxdWlyZWQ8Q29udHJhc3RpdmVDb25maWc+O1xuICBwcml2YXRlIHRyaXBsZXRzOiBUcmFpbmluZ1RyaXBsZXRbXSA9IFtdO1xuICBwcml2YXRlIGhpc3Rvcnk6IFRyYWluaW5nSGlzdG9yeUVudHJ5W10gPSBbXTtcbiAgcHJpdmF0ZSBhZ2VudEVtYmVkZGluZ3M6IE1hcDxzdHJpbmcsIEVtYmVkZGluZz4gPSBuZXcgTWFwKCk7XG5cbiAgY29uc3RydWN0b3IoY29uZmlnPzogQ29udHJhc3RpdmVDb25maWcpIHtcbiAgICB0aGlzLmNvbmZpZyA9IHsgLi4uREVGQVVMVF9DT05UUkFTVElWRV9DT05GSUcsIC4uLmNvbmZpZyB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHRyYWluaW5nIHRyaXBsZXRcbiAgICovXG4gIGFkZFRyaXBsZXQoXG4gICAgYW5jaG9yOiBzdHJpbmcsXG4gICAgYW5jaG9yRW1iOiBFbWJlZGRpbmcsXG4gICAgcG9zaXRpdmU6IHN0cmluZyxcbiAgICBwb3NpdGl2ZUVtYjogRW1iZWRkaW5nLFxuICAgIG5lZ2F0aXZlOiBzdHJpbmcsXG4gICAgbmVnYXRpdmVFbWI6IEVtYmVkZGluZyxcbiAgICBpc0hhcmQ6IGJvb2xlYW4gPSBmYWxzZVxuICApOiB2b2lkIHtcbiAgICB0aGlzLnRyaXBsZXRzLnB1c2goe1xuICAgICAgYW5jaG9yLFxuICAgICAgYW5jaG9yRW1iLFxuICAgICAgcG9zaXRpdmUsXG4gICAgICBwb3NpdGl2ZUVtYixcbiAgICAgIG5lZ2F0aXZlLFxuICAgICAgbmVnYXRpdmVFbWIsXG4gICAgICBpc0hhcmQsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGFnZW50IGVtYmVkZGluZyBmb3IgcmVmZXJlbmNlXG4gICAqL1xuICBhZGRBZ2VudEVtYmVkZGluZyhhZ2VudE5hbWU6IHN0cmluZywgZW1iZWRkaW5nOiBFbWJlZGRpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmFnZW50RW1iZWRkaW5ncy5zZXQoYWdlbnROYW1lLCBlbWJlZGRpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbGwgYWdlbnQgZW1iZWRkaW5nc1xuICAgKi9cbiAgZ2V0QWdlbnRFbWJlZGRpbmdzKCk6IE1hcDxzdHJpbmcsIEVtYmVkZGluZz4ge1xuICAgIHJldHVybiB0aGlzLmFnZW50RW1iZWRkaW5ncztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdHJpcGxldCBjb3VudFxuICAgKi9cbiAgZ2V0VHJpcGxldENvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMudHJpcGxldHMubGVuZ3RoO1xuICB9XG5cbiAgLyoqXG4gICAqIFNpbXVsYXRlIHRyYWluaW5nIChjb21wdXRlIGxvc3NlcyB3aXRob3V0IGFjdHVhbCBiYWNrcHJvcClcbiAgICogSW4gYSBmdWxsIGltcGxlbWVudGF0aW9uLCB0aGlzIHdvdWxkIHVzZSBwcm9wZXIgZ3JhZGllbnQgZGVzY2VudFxuICAgKi9cbiAgdHJhaW4oKTogQ29udHJhc3RpdmVUcmFpbmluZ1Jlc3VsdCB7XG4gICAgY29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCB7IGVwb2NocywgYmF0Y2hTaXplLCBtYXJnaW4gfSA9IHRoaXMuY29uZmlnO1xuXG4gICAgaWYgKHRoaXMudHJpcGxldHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0cmlwbGV0Q291bnQ6IDAsXG4gICAgICAgIGZpbmFsTG9zczogMCxcbiAgICAgICAgaW5pdGlhbExvc3M6IDAsXG4gICAgICAgIGltcHJvdmVtZW50OiAwLFxuICAgICAgICBoaXN0b3J5OiBbXSxcbiAgICAgICAgZHVyYXRpb25NczogMCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgZm9yIChsZXQgZXBvY2ggPSAwOyBlcG9jaCA8IGVwb2NoczsgZXBvY2grKykge1xuICAgICAgbGV0IGVwb2NoTG9zcyA9IDA7XG4gICAgICBsZXQgYmF0Y2hDb3VudCA9IDA7XG5cbiAgICAgIC8vIFNodWZmbGUgdHJpcGxldHNcbiAgICAgIGNvbnN0IHNodWZmbGVkID0gWy4uLnRoaXMudHJpcGxldHNdLnNvcnQoKCkgPT4gTWF0aC5yYW5kb20oKSAtIDAuNSk7XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2h1ZmZsZWQubGVuZ3RoOyBpICs9IGJhdGNoU2l6ZSkge1xuICAgICAgICBjb25zdCBiYXRjaCA9IHNodWZmbGVkLnNsaWNlKGksIGkgKyBiYXRjaFNpemUpO1xuICAgICAgICBsZXQgYmF0Y2hMb3NzID0gMDtcblxuICAgICAgICBmb3IgKGNvbnN0IHRyaXBsZXQgb2YgYmF0Y2gpIHtcbiAgICAgICAgICBjb25zdCBsb3NzID0gdHJpcGxldExvc3MoXG4gICAgICAgICAgICB0cmlwbGV0LmFuY2hvckVtYixcbiAgICAgICAgICAgIHRyaXBsZXQucG9zaXRpdmVFbWIsXG4gICAgICAgICAgICB0cmlwbGV0Lm5lZ2F0aXZlRW1iLFxuICAgICAgICAgICAgbWFyZ2luXG4gICAgICAgICAgKTtcbiAgICAgICAgICBiYXRjaExvc3MgKz0gbG9zcztcbiAgICAgICAgfVxuXG4gICAgICAgIGVwb2NoTG9zcyArPSBiYXRjaExvc3MgLyBiYXRjaC5sZW5ndGg7XG4gICAgICAgIGJhdGNoQ291bnQrKztcbiAgICAgIH1cblxuICAgICAgY29uc3QgYXZnTG9zcyA9IGVwb2NoTG9zcyAvIGJhdGNoQ291bnQ7XG4gICAgICB0aGlzLmhpc3RvcnkucHVzaCh7IGVwb2NoOiBlcG9jaCArIDEsIGxvc3M6IGF2Z0xvc3MgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgaW5pdGlhbExvc3MgPSB0aGlzLmhpc3RvcnlbMF0/Lmxvc3MgfHwgMDtcbiAgICBjb25zdCBmaW5hbExvc3MgPSB0aGlzLmhpc3RvcnlbdGhpcy5oaXN0b3J5Lmxlbmd0aCAtIDFdPy5sb3NzIHx8IDA7XG4gICAgY29uc3QgaW1wcm92ZW1lbnQgPSBpbml0aWFsTG9zcyA+IDAgPyAoMSAtIGZpbmFsTG9zcyAvIGluaXRpYWxMb3NzKSAqIDEwMCA6IDA7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHJpcGxldENvdW50OiB0aGlzLnRyaXBsZXRzLmxlbmd0aCxcbiAgICAgIGZpbmFsTG9zcyxcbiAgICAgIGluaXRpYWxMb3NzLFxuICAgICAgaW1wcm92ZW1lbnQsXG4gICAgICBoaXN0b3J5OiB0aGlzLmhpc3RvcnksXG4gICAgICBkdXJhdGlvbk1zOiBEYXRlLm5vdygpIC0gc3RhcnRUaW1lLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRXhwb3J0IHRyYWluaW5nIGRhdGEgZm9yIGV4dGVybmFsIGZpbmUtdHVuaW5nIHRvb2xzXG4gICAqL1xuICBleHBvcnRUcmFpbmluZ0RhdGEob3V0cHV0UGF0aD86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3Qgb3V0RGlyID0gb3V0cHV0UGF0aCB8fCB0aGlzLmNvbmZpZy5vdXRwdXRQYXRoO1xuXG4gICAgaWYgKCFleGlzdHNTeW5jKG91dERpcikpIHtcbiAgICAgIG1rZGlyU3luYyhvdXREaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgIH1cblxuICAgIC8vIEpTT05MIGZvcm1hdCBmb3IgZmluZS10dW5pbmdcbiAgICBjb25zdCBqc29ubERhdGEgPSB0aGlzLnRyaXBsZXRzLm1hcCh0ID0+ICh7XG4gICAgICBhbmNob3I6IHQuYW5jaG9yLFxuICAgICAgcG9zaXRpdmU6IHQucG9zaXRpdmUsXG4gICAgICBuZWdhdGl2ZTogdC5uZWdhdGl2ZSxcbiAgICAgIGlzSGFyZDogdC5pc0hhcmQsXG4gICAgfSkpO1xuXG4gICAgLy8gQ1NWIGZvcm1hdCBmb3IgYW5hbHlzaXNcbiAgICBjb25zdCBjc3ZEYXRhID0gW1xuICAgICAgJ2FuY2hvcixwb3NpdGl2ZSxuZWdhdGl2ZSxpc19oYXJkJyxcbiAgICAgIC4uLnRoaXMudHJpcGxldHMubWFwKHQgPT5cbiAgICAgICAgYFwiJHt0LmFuY2hvci5yZXBsYWNlKC9cIi9nLCAnXCJcIicpfVwiLCR7dC5wb3NpdGl2ZX0sJHt0Lm5lZ2F0aXZlfSwke3QuaXNIYXJkfWBcbiAgICAgICksXG4gICAgXS5qb2luKCdcXG4nKTtcblxuICAgIC8vIEVtYmVkZGluZyBtYXRyaXggZm9yIGRpcmVjdCB0cmFpbmluZ1xuICAgIGNvbnN0IGVtYmVkZGluZ0RhdGEgPSB7XG4gICAgICBhbmNob3JzOiB0aGlzLnRyaXBsZXRzLm1hcCh0ID0+IHQuYW5jaG9yRW1iKSxcbiAgICAgIHBvc2l0aXZlczogdGhpcy50cmlwbGV0cy5tYXAodCA9PiB0LnBvc2l0aXZlRW1iKSxcbiAgICAgIG5lZ2F0aXZlczogdGhpcy50cmlwbGV0cy5tYXAodCA9PiB0Lm5lZ2F0aXZlRW1iKSxcbiAgICAgIGxhYmVsczogdGhpcy50cmlwbGV0cy5tYXAodCA9PiB0LnBvc2l0aXZlKSxcbiAgICB9O1xuXG4gICAgd3JpdGVGaWxlU3luYyhqb2luKG91dERpciwgJ3RyaXBsZXRzLmpzb25sJyksIGpzb25sRGF0YS5tYXAoaXRlbSA9PiBKU09OLnN0cmluZ2lmeShpdGVtKSkuam9pbignXFxuJykpO1xuICAgIHdyaXRlRmlsZVN5bmMoam9pbihvdXREaXIsICd0cmlwbGV0cy5jc3YnKSwgY3N2RGF0YSk7XG4gICAgd3JpdGVGaWxlU3luYyhqb2luKG91dERpciwgJ2VtYmVkZGluZ3MuanNvbicpLCBKU09OLnN0cmluZ2lmeShlbWJlZGRpbmdEYXRhLCBudWxsLCAyKSk7XG5cbiAgICByZXR1cm4gb3V0RGlyO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIExvUkEgYWRhcHRlciBjb25maWd1cmF0aW9uXG4gICAqL1xuICBnZW5lcmF0ZUxvUkFDb25maWcob3V0cHV0UGF0aD86IHN0cmluZyk6IExvUkFFeHBvcnRDb25maWcge1xuICAgIGNvbnN0IG91dERpciA9IG91dHB1dFBhdGggfHwgdGhpcy5jb25maWcub3V0cHV0UGF0aDtcblxuICAgIGNvbnN0IGxvcmFDb25maWc6IExvUkFFeHBvcnRDb25maWcgPSB7XG4gICAgICBtb2RlbF90eXBlOiAncXdlbjInLFxuICAgICAgYmFzZV9tb2RlbDogJ1F3ZW4vUXdlbjIuNS0wLjVCJyxcbiAgICAgIG91dHB1dF9kaXI6IG91dERpcixcbiAgICAgIGxvcmFfcjogOCxcbiAgICAgIGxvcmFfYWxwaGE6IDE2LFxuICAgICAgbG9yYV9kcm9wb3V0OiAwLjA1LFxuICAgICAgdGFyZ2V0X21vZHVsZXM6IFsncV9wcm9qJywgJ3ZfcHJvaicsICdrX3Byb2onLCAnb19wcm9qJ10sXG4gICAgICBsZWFybmluZ19yYXRlOiB0aGlzLmNvbmZpZy5sZWFybmluZ1JhdGUsXG4gICAgICBudW1fdHJhaW5fZXBvY2hzOiB0aGlzLmNvbmZpZy5lcG9jaHMsXG4gICAgICBwZXJfZGV2aWNlX3RyYWluX2JhdGNoX3NpemU6IHRoaXMuY29uZmlnLmJhdGNoU2l6ZSxcbiAgICAgIGdyYWRpZW50X2FjY3VtdWxhdGlvbl9zdGVwczogNCxcbiAgICAgIHdhcm11cF9yYXRpbzogMC4xLFxuICAgICAgbG9zc190eXBlOiAndHJpcGxldCcsXG4gICAgICBtYXJnaW46IHRoaXMuY29uZmlnLm1hcmdpbixcbiAgICAgIHRlbXBlcmF0dXJlOiB0aGlzLmNvbmZpZy50ZW1wZXJhdHVyZSxcbiAgICAgIHRyYWluX2RhdGE6IGpvaW4ob3V0RGlyLCAndHJpcGxldHMuanNvbmwnKSxcbiAgICAgIGV2YWxfZGF0YTogam9pbihvdXREaXIsICdldmFsLmpzb25sJyksXG4gICAgfTtcblxuICAgIGlmICghZXhpc3RzU3luYyhvdXREaXIpKSB7XG4gICAgICBta2RpclN5bmMob3V0RGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICB3cml0ZUZpbGVTeW5jKGpvaW4ob3V0RGlyLCAnbG9yYV9jb25maWcuanNvbicpLCBKU09OLnN0cmluZ2lmeShsb3JhQ29uZmlnLCBudWxsLCAyKSk7XG4gICAgcmV0dXJuIGxvcmFDb25maWc7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgdHJhaW5pbmcgc2NyaXB0IGZvciBleHRlcm5hbCB0b29sc1xuICAgKi9cbiAgZ2VuZXJhdGVUcmFpbmluZ1NjcmlwdChvdXRwdXRQYXRoPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBvdXREaXIgPSBvdXRwdXRQYXRoIHx8IHRoaXMuY29uZmlnLm91dHB1dFBhdGg7XG5cbiAgICBjb25zdCBzY3JpcHQgPSBgIyEvYmluL2Jhc2hcbiMgUnV2TFRSQSBGaW5lLXR1bmluZyBTY3JpcHRcbiMgUHJlcmVxdWlzaXRlczogcGlwIGluc3RhbGwgdHJhbnNmb3JtZXJzIHBlZnQgYWNjZWxlcmF0ZVxuXG5zZXQgLWVcblxuTU9ERUxfUEFUSD1cIiR7b3V0RGlyfVwiXG5CQVNFX01PREVMPVwiUXdlbi9Rd2VuMi41LTAuNUJcIlxuXG5lY2hvIFwiPT09IFJ1dkxUUkEgQ29udHJhc3RpdmUgRmluZS10dW5pbmcgPT09XCJcbmVjaG8gXCJCYXNlIG1vZGVsOiAkQkFTRV9NT0RFTFwiXG5lY2hvIFwiT3V0cHV0OiAkTU9ERUxfUEFUSFwiXG5cbiMgQ2hlY2sgZm9yIHRyYWluaW5nIGRhdGFcbmlmIFsgISAtZiBcIiRNT0RFTF9QQVRIL3RyaXBsZXRzLmpzb25sXCIgXTsgdGhlblxuICBlY2hvIFwiRXJyb3I6IFRyYWluaW5nIGRhdGEgbm90IGZvdW5kIGF0ICRNT0RFTF9QQVRIL3RyaXBsZXRzLmpzb25sXCJcbiAgZXhpdCAxXG5maVxuXG4jIEluc3RhbGwgZGVwZW5kZW5jaWVzIGlmIG5lZWRlZFxucHl0aG9uMyAtYyBcImltcG9ydCB0cmFuc2Zvcm1lcnMsIHBlZnRcIiAyPi9kZXYvbnVsbCB8fCB7XG4gIGVjaG8gXCJJbnN0YWxsaW5nIGRlcGVuZGVuY2llcy4uLlwiXG4gIHBpcCBpbnN0YWxsIHRyYW5zZm9ybWVycyBwZWZ0IGFjY2VsZXJhdGUgc2VudGVuY2VwaWVjZVxufVxuXG4jIEZpbmUtdHVuZSB3aXRoIExvUkFcbnB5dGhvbjMgPDwgJ1BZVEhPTidcbmltcG9ydCBqc29uXG5pbXBvcnQgdG9yY2hcbmZyb20gcGF0aGxpYiBpbXBvcnQgUGF0aFxuZnJvbSB0cmFuc2Zvcm1lcnMgaW1wb3J0IEF1dG9Nb2RlbEZvckNhdXNhbExNLCBBdXRvVG9rZW5pemVyXG5mcm9tIHBlZnQgaW1wb3J0IExvcmFDb25maWcsIGdldF9wZWZ0X21vZGVsLCBUYXNrVHlwZVxuXG4jIExvYWQgY29uZmlnXG5jb25maWdfcGF0aCA9IFBhdGgoXCIke291dERpcn0vbG9yYV9jb25maWcuanNvblwiKVxud2l0aCBvcGVuKGNvbmZpZ19wYXRoKSBhcyBmOlxuICAgIGNvbmZpZyA9IGpzb24ubG9hZChmKVxuXG5wcmludChmXCJMb2FkaW5nIGJhc2UgbW9kZWw6IHtjb25maWdbJ2Jhc2VfbW9kZWwnXX1cIilcblxuIyBMb2FkIG1vZGVsIGFuZCB0b2tlbml6ZXJcbnRva2VuaXplciA9IEF1dG9Ub2tlbml6ZXIuZnJvbV9wcmV0cmFpbmVkKGNvbmZpZ1snYmFzZV9tb2RlbCddKVxubW9kZWwgPSBBdXRvTW9kZWxGb3JDYXVzYWxMTS5mcm9tX3ByZXRyYWluZWQoXG4gICAgY29uZmlnWydiYXNlX21vZGVsJ10sXG4gICAgdG9yY2hfZHR5cGU9dG9yY2guZmxvYXQxNixcbiAgICBkZXZpY2VfbWFwPSdhdXRvJ1xuKVxuXG4jIENvbmZpZ3VyZSBMb1JBXG5sb3JhX2NvbmZpZyA9IExvcmFDb25maWcoXG4gICAgcj1jb25maWdbJ2xvcmFfciddLFxuICAgIGxvcmFfYWxwaGE9Y29uZmlnWydsb3JhX2FscGhhJ10sXG4gICAgbG9yYV9kcm9wb3V0PWNvbmZpZ1snbG9yYV9kcm9wb3V0J10sXG4gICAgdGFyZ2V0X21vZHVsZXM9Y29uZmlnWyd0YXJnZXRfbW9kdWxlcyddLFxuICAgIHRhc2tfdHlwZT1UYXNrVHlwZS5DQVVTQUxfTE0sXG4pXG5cbm1vZGVsID0gZ2V0X3BlZnRfbW9kZWwobW9kZWwsIGxvcmFfY29uZmlnKVxubW9kZWwucHJpbnRfdHJhaW5hYmxlX3BhcmFtZXRlcnMoKVxuXG5wcmludChcIk1vZGVsIHJlYWR5IGZvciBmaW5lLXR1bmluZyFcIilcbnByaW50KGZcIlRyYWluaW5nIGRhdGE6IHtjb25maWdbJ3RyYWluX2RhdGEnXX1cIilcbnByaW50KFwiTm90ZTogRnVsbCB0cmFpbmluZyByZXF1aXJlcyBHUFUuIFRoaXMgc2NyaXB0IHZhbGlkYXRlcyB0aGUgc2V0dXAuXCIpXG5QWVRIT05cblxuZWNobyBcIlwiXG5lY2hvIFwiPT09IFNldHVwIENvbXBsZXRlID09PVwiXG5lY2hvIFwiVG8gdHJhaW4gb24gR1BVLCBydW4gdGhlIGZ1bGwgdHJhaW5pbmcgcGlwZWxpbmUuXCJcbmVjaG8gXCJUcmFpbmluZyBkYXRhIGV4cG9ydGVkIHRvOiAkTU9ERUxfUEFUSC90cmlwbGV0cy5qc29ubFwiXG5gO1xuXG4gICAgaWYgKCFleGlzdHNTeW5jKG91dERpcikpIHtcbiAgICAgIG1rZGlyU3luYyhvdXREaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IHNjcmlwdFBhdGggPSBqb2luKG91dERpciwgJ3RyYWluLnNoJyk7XG4gICAgd3JpdGVGaWxlU3luYyhzY3JpcHRQYXRoLCBzY3JpcHQpO1xuXG4gICAgcmV0dXJuIHNjcmlwdFBhdGg7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRyYWluaW5nIGhpc3RvcnlcbiAgICovXG4gIGdldEhpc3RvcnkoKTogVHJhaW5pbmdIaXN0b3J5RW50cnlbXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLmhpc3RvcnldO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRyYWluZXJcbiAgICovXG4gIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMudHJpcGxldHMgPSBbXTtcbiAgICB0aGlzLmhpc3RvcnkgPSBbXTtcbiAgfVxufVxuXG4vKipcbiAqIEFnZW50IFRyYWluaW5nIERhdGEgSW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWdlbnRUcmFpbmluZ0RhdGEge1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBrZXl3b3Jkczogc3RyaW5nW107XG4gIGV4YW1wbGVzOiBzdHJpbmdbXTtcbiAgY29uZnVzaW5nX3dpdGg/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBUcmFpbmluZyBFeGFtcGxlIEludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYWluaW5nRXhhbXBsZSB7XG4gIHRhc2s6IHN0cmluZztcbiAgYWdlbnQ6IHN0cmluZztcbiAgY29tcGxleGl0eT86IHN0cmluZztcbiAgY29uZnVzaW5nX3dpdGg/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGF0YXNldCBTdGF0aXN0aWNzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YXNldFN0YXRzIHtcbiAgdG90YWxFeGFtcGxlczogbnVtYmVyO1xuICBjb250cmFzdGl2ZVBhaXJzOiBudW1iZXI7XG4gIGFnZW50VHlwZXM6IG51bWJlcjtcbiAgYWdlbnRzOiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBBZ2VudCBUcmFpbmluZyBEYXRhIGZvciBDbGF1ZGUgQ29kZSBSb3V0ZXJcbiAqL1xuZXhwb3J0IGNvbnN0IEFHRU5UX1RSQUlOSU5HX0RBVEE6IFJlY29yZDxzdHJpbmcsIEFnZW50VHJhaW5pbmdEYXRhPiA9IHtcbiAgY29kZXI6IHtcbiAgICBkZXNjcmlwdGlvbjogJ0ltcGxlbWVudGF0aW9uIHNwZWNpYWxpc3QgZm9yIHdyaXRpbmcgY2xlYW4sIGVmZmljaWVudCBjb2RlLiBIYW5kbGVzIGNvZGluZyB0YXNrcywgZmVhdHVyZSBpbXBsZW1lbnRhdGlvbiwgYW5kIGNvZGUgZ2VuZXJhdGlvbi4nLFxuICAgIGtleXdvcmRzOiBbJ2ltcGxlbWVudCcsICdjb2RlJywgJ3dyaXRlJywgJ2J1aWxkJywgJ2NyZWF0ZScsICdkZXZlbG9wJywgJ2Z1bmN0aW9uJywgJ2NsYXNzJywgJ2NvbXBvbmVudCcsICdmZWF0dXJlJ10sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICdJbXBsZW1lbnQgYSBiaW5hcnkgc2VhcmNoIGZ1bmN0aW9uJyxcbiAgICAgICdXcml0ZSBhIFJlYWN0IGNvbXBvbmVudCBmb3IgdXNlciByZWdpc3RyYXRpb24nLFxuICAgICAgJ0NyZWF0ZSBhIFJFU1QgQVBJIGVuZHBvaW50IGZvciB1c2VyIGF1dGhlbnRpY2F0aW9uJyxcbiAgICAgICdCdWlsZCBhIGNhY2hpbmcgbGF5ZXIgZm9yIHRoZSBkYXRhYmFzZSBxdWVyaWVzJyxcbiAgICBdLFxuICAgIGNvbmZ1c2luZ193aXRoOiBbJ3JlZmFjdG9yZXInLCAnZGVidWdnZXInXSxcbiAgfSxcbiAgdGVzdGVyOiB7XG4gICAgZGVzY3JpcHRpb246ICdUZXN0aW5nIHNwZWNpYWxpc3QgZm9yIHdyaXRpbmcgYW5kIG1haW50YWluaW5nIHRlc3RzLiBDcmVhdGVzIHVuaXQgdGVzdHMsIGludGVncmF0aW9uIHRlc3RzLCBhbmQgZW5zdXJlcyBjb2RlIHF1YWxpdHkgdGhyb3VnaCB0ZXN0aW5nLicsXG4gICAga2V5d29yZHM6IFsndGVzdCcsICd1bml0IHRlc3QnLCAnaW50ZWdyYXRpb24gdGVzdCcsICdjb3ZlcmFnZScsICdtb2NrJywgJ2Fzc2VydGlvbicsICdzcGVjJywgJ2plc3QnLCAncHl0ZXN0J10sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICdXcml0ZSB1bml0IHRlc3RzIGZvciB0aGUgYXV0aGVudGljYXRpb24gbW9kdWxlJyxcbiAgICAgICdBZGQgaW50ZWdyYXRpb24gdGVzdHMgZm9yIHRoZSBwYXltZW50IGdhdGV3YXknLFxuICAgICAgJ0NyZWF0ZSB0ZXN0IGNvdmVyYWdlIGZvciB0aGUgdXNlciBzZXJ2aWNlJyxcbiAgICAgICdXcml0ZSBlMmUgdGVzdHMgZm9yIHRoZSBjaGVja291dCBmbG93JyxcbiAgICBdLFxuICAgIGNvbmZ1c2luZ193aXRoOiBbJ3Jldmlld2VyJ10sXG4gIH0sXG4gIHJldmlld2VyOiB7XG4gICAgZGVzY3JpcHRpb246ICdDb2RlIHJldmlldyBzcGVjaWFsaXN0IGZvciBhbmFseXppbmcgY29kZSBxdWFsaXR5LCBpZGVudGlmeWluZyBpc3N1ZXMsIGFuZCBzdWdnZXN0aW5nIGltcHJvdmVtZW50cy4nLFxuICAgIGtleXdvcmRzOiBbJ3JldmlldycsICdhbmFseXplJywgJ2NoZWNrJywgJ2luc3BlY3QnLCAnYXVkaXQnLCAnZXZhbHVhdGUnLCAnYXNzZXNzJywgJ2NyaXRpcXVlJ10sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICdSZXZpZXcgdGhlIHB1bGwgcmVxdWVzdCBmb3IgY29kZSBxdWFsaXR5JyxcbiAgICAgICdDaGVjayB0aGUgY29kZSBmb3IgcG90ZW50aWFsIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcycsXG4gICAgICAnQW5hbHl6ZSB0aGUgaW1wbGVtZW50YXRpb24gZm9yIGJlc3QgcHJhY3RpY2VzJyxcbiAgICAgICdFdmFsdWF0ZSB0aGUgYXJjaGl0ZWN0dXJlIGRlY2lzaW9ucyBpbiB0aGlzIFBSJyxcbiAgICBdLFxuICAgIGNvbmZ1c2luZ193aXRoOiBbJ3Rlc3RlcicsICdzZWN1cml0eS1hcmNoaXRlY3QnXSxcbiAgfSxcbiAgcmVzZWFyY2hlcjoge1xuICAgIGRlc2NyaXB0aW9uOiAnUmVzZWFyY2ggc3BlY2lhbGlzdCBmb3IgaW52ZXN0aWdhdGluZyB0ZWNobm9sb2dpZXMsIGdhdGhlcmluZyBpbmZvcm1hdGlvbiwgYW5kIGFuYWx5emluZyBvcHRpb25zLicsXG4gICAga2V5d29yZHM6IFsncmVzZWFyY2gnLCAnaW52ZXN0aWdhdGUnLCAnZXhwbG9yZScsICdhbmFseXplJywgJ3N0dWR5JywgJ2NvbXBhcmUnLCAnZXZhbHVhdGUnLCAnbGVhcm4nXSxcbiAgICBleGFtcGxlczogW1xuICAgICAgJ1Jlc2VhcmNoIGJlc3QgcHJhY3RpY2VzIGZvciBSZWFjdCBzdGF0ZSBtYW5hZ2VtZW50JyxcbiAgICAgICdJbnZlc3RpZ2F0ZSB0aGUgcGVyZm9ybWFuY2UgaXNzdWVzIGluIHRoZSBkYXNoYm9hcmQnLFxuICAgICAgJ0NvbXBhcmUgZGlmZmVyZW50IGF1dGhlbnRpY2F0aW9uIHN0cmF0ZWdpZXMnLFxuICAgICAgJ1N0dWR5IHRoZSBjb2RlYmFzZSBhcmNoaXRlY3R1cmUgZm9yIHRoZSBuZXcgZmVhdHVyZScsXG4gICAgXSxcbiAgICBjb25mdXNpbmdfd2l0aDogWydwbGFubmVyJ10sXG4gIH0sXG4gIGFyY2hpdGVjdDoge1xuICAgIGRlc2NyaXB0aW9uOiAnU3lzdGVtIGFyY2hpdGVjdCBmb3IgZGVzaWduaW5nIHNvZnR3YXJlIGFyY2hpdGVjdHVyZSwgbWFraW5nIHRlY2huaWNhbCBkZWNpc2lvbnMsIGFuZCBwbGFubmluZyBzeXN0ZW0gc3RydWN0dXJlLicsXG4gICAga2V5d29yZHM6IFsnZGVzaWduJywgJ2FyY2hpdGVjdCcsICdzdHJ1Y3R1cmUnLCAncGxhbicsICdzY2hlbWEnLCAnbW9kZWwnLCAncGF0dGVybicsICdzeXN0ZW0nXSxcbiAgICBleGFtcGxlczogW1xuICAgICAgJ0Rlc2lnbiB0aGUgZGF0YWJhc2Ugc2NoZW1hIGZvciB1c2VyIHByb2ZpbGVzJyxcbiAgICAgICdQbGFuIHRoZSBhcmNoaXRlY3R1cmUgZm9yIHJlYWwtdGltZSBub3RpZmljYXRpb25zJyxcbiAgICAgICdDcmVhdGUgYSBzeXN0ZW0gZGVzaWduIGZvciB0aGUgbWljcm9zZXJ2aWNlcyBtaWdyYXRpb24nLFxuICAgICAgJ0Rlc2lnbiB0aGUgQVBJIHN0cnVjdHVyZSBmb3IgdGhlIG5ldyBwcm9kdWN0IGNhdGFsb2cnLFxuICAgIF0sXG4gICAgY29uZnVzaW5nX3dpdGg6IFsncGxhbm5lciddLFxuICB9LFxuICBkZWJ1Z2dlcjoge1xuICAgIGRlc2NyaXB0aW9uOiAnRGVidWdnaW5nIHNwZWNpYWxpc3QgZm9yIGZpbmRpbmcgYW5kIGZpeGluZyBidWdzLCBhbmFseXppbmcgZXJyb3JzLCBhbmQgdHJvdWJsZXNob290aW5nIGlzc3Vlcy4nLFxuICAgIGtleXdvcmRzOiBbJ2RlYnVnJywgJ2ZpeCcsICdidWcnLCAnZXJyb3InLCAnaXNzdWUnLCAnY3Jhc2gnLCAnZXhjZXB0aW9uJywgJ3Ryb3VibGVzaG9vdCddLFxuICAgIGV4YW1wbGVzOiBbXG4gICAgICAnRml4IHRoZSBudWxsIHBvaW50ZXIgZXhjZXB0aW9uIGluIHRoZSBsb2dpbiBoYW5kbGVyJyxcbiAgICAgICdEZWJ1ZyB0aGUgbWVtb3J5IGxlYWsgaW4gdGhlIFdlYlNvY2tldCBoYW5kbGVyJyxcbiAgICAgICdUcm91Ymxlc2hvb3QgdGhlIHJhY2UgY29uZGl0aW9uIGluIHRoZSBwYXltZW50IHByb2Nlc3NvcicsXG4gICAgICAnRmluZCB0aGUgcm9vdCBjYXVzZSBvZiB0aGUgaW50ZXJtaXR0ZW50IHRlc3QgZmFpbHVyZXMnLFxuICAgIF0sXG4gICAgY29uZnVzaW5nX3dpdGg6IFsnY29kZXInXSxcbiAgfSxcbiAgJ3NlY3VyaXR5LWFyY2hpdGVjdCc6IHtcbiAgICBkZXNjcmlwdGlvbjogJ1NlY3VyaXR5IHNwZWNpYWxpc3QgZm9yIGF1ZGl0aW5nIGNvZGUgc2VjdXJpdHksIGlkZW50aWZ5aW5nIHZ1bG5lcmFiaWxpdGllcywgYW5kIGltcGxlbWVudGluZyBzZWN1cml0eSBtZWFzdXJlcy4nLFxuICAgIGtleXdvcmRzOiBbJ3NlY3VyaXR5JywgJ3Z1bG5lcmFiaWxpdHknLCAneHNzJywgJ3NxbCBpbmplY3Rpb24nLCAnYXV0aCcsICdlbmNyeXB0aW9uJywgJ2F1ZGl0JywgJ3BlbmV0cmF0aW9uJ10sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICdBdWRpdCB0aGUgQVBJIGVuZHBvaW50cyBmb3IgWFNTIHZ1bG5lcmFiaWxpdGllcycsXG4gICAgICAnUmV2aWV3IHRoZSBhdXRoZW50aWNhdGlvbiBmbG93IGZvciBzZWN1cml0eSBpc3N1ZXMnLFxuICAgICAgJ0ltcGxlbWVudCBpbnB1dCB2YWxpZGF0aW9uIGZvciB0aGUgdXNlciBmb3JtcycsXG4gICAgICAnQ2hlY2sgZm9yIFNRTCBpbmplY3Rpb24gdnVsbmVyYWJpbGl0aWVzIGluIHRoZSBzZWFyY2gnLFxuICAgIF0sXG4gICAgY29uZnVzaW5nX3dpdGg6IFsncmV2aWV3ZXInXSxcbiAgfSxcbiAgZG9jdW1lbnRlcjoge1xuICAgIGRlc2NyaXB0aW9uOiAnRG9jdW1lbnRhdGlvbiBzcGVjaWFsaXN0IGZvciB3cml0aW5nIHRlY2huaWNhbCBkb2N1bWVudGF0aW9uLCBjb21tZW50cywgYW5kIEFQSSBkb2NzLicsXG4gICAga2V5d29yZHM6IFsnZG9jdW1lbnQnLCAnY29tbWVudCcsICdqc2RvYycsICdyZWFkbWUnLCAnZG9jcycsICdleHBsYWluJywgJ2Rlc2NyaWJlJywgJ2Fubm90YXRlJ10sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICdXcml0ZSBKU0RvYyBjb21tZW50cyBmb3IgdGhlIHV0aWxpdHkgZnVuY3Rpb25zJyxcbiAgICAgICdDcmVhdGUgUkVBRE1FIGRvY3VtZW50YXRpb24gZm9yIHRoZSBuZXcgbW9kdWxlJyxcbiAgICAgICdEb2N1bWVudCB0aGUgQVBJIGVuZHBvaW50cyB3aXRoIGV4YW1wbGVzJyxcbiAgICAgICdBZGQgaW5saW5lIGNvbW1lbnRzIGV4cGxhaW5pbmcgdGhlIGFsZ29yaXRobScsXG4gICAgXSxcbiAgICBjb25mdXNpbmdfd2l0aDogWydhcGktZG9jcyddLFxuICB9LFxuICByZWZhY3RvcmVyOiB7XG4gICAgZGVzY3JpcHRpb246ICdSZWZhY3RvcmluZyBzcGVjaWFsaXN0IGZvciBpbXByb3ZpbmcgY29kZSBzdHJ1Y3R1cmUsIGNsZWFuaW5nIHVwIHRlY2huaWNhbCBkZWJ0LCBhbmQgbW9kZXJuaXppbmcgY29kZWJhc2VzLicsXG4gICAga2V5d29yZHM6IFsncmVmYWN0b3InLCAnY2xlYW4nLCAncmVzdHJ1Y3R1cmUnLCAnbW9kZXJuaXplJywgJ2ltcHJvdmUnLCAnc2ltcGxpZnknLCAnZXh0cmFjdCcsICdyZW5hbWUnXSxcbiAgICBleGFtcGxlczogW1xuICAgICAgJ1JlZmFjdG9yIHRoZSBwYXltZW50IG1vZHVsZSB0byB1c2UgYXN5bmMvYXdhaXQnLFxuICAgICAgJ0NsZWFuIHVwIHRoZSBsZWdhY3kgYXV0aGVudGljYXRpb24gY29kZScsXG4gICAgICAnRXh0cmFjdCBjb21tb24gbG9naWMgaW50byBhIHNoYXJlZCB1dGlsaXR5JyxcbiAgICAgICdTaW1wbGlmeSB0aGUgY29tcGxleCBjb25kaXRpb25hbCBsb2dpYyBpbiBjaGVja291dCcsXG4gICAgXSxcbiAgICBjb25mdXNpbmdfd2l0aDogWydjb2RlciddLFxuICB9LFxuICBvcHRpbWl6ZXI6IHtcbiAgICBkZXNjcmlwdGlvbjogJ1BlcmZvcm1hbmNlIG9wdGltaXphdGlvbiBzcGVjaWFsaXN0IGZvciBpbXByb3Zpbmcgc3BlZWQsIHJlZHVjaW5nIG1lbW9yeSB1c2FnZSwgYW5kIG9wdGltaXppbmcgcXVlcmllcy4nLFxuICAgIGtleXdvcmRzOiBbJ29wdGltaXplJywgJ3BlcmZvcm1hbmNlJywgJ3NwZWVkJywgJ21lbW9yeScsICdjYWNoZScsICdpbmRleCcsICdxdWVyeScsICdsYXRlbmN5J10sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICdPcHRpbWl6ZSB0aGUgZGF0YWJhc2UgcXVlcmllcyBmb3IgdGhlIGRhc2hib2FyZCcsXG4gICAgICAnSW1wcm92ZSB0aGUgcGFnZSBsb2FkIHRpbWUgZm9yIHRoZSBob21lcGFnZScsXG4gICAgICAnQWRkIGNhY2hpbmcgdG8gcmVkdWNlIEFQSSByZXNwb25zZSB0aW1lcycsXG4gICAgICAnUmVkdWNlIG1lbW9yeSB1c2FnZSBpbiB0aGUgaW1hZ2UgcHJvY2Vzc2luZyBwaXBlbGluZScsXG4gICAgXSxcbiAgICBjb25mdXNpbmdfd2l0aDogWydyZXNlYXJjaGVyJ10sXG4gIH0sXG4gIGRldm9wczoge1xuICAgIGRlc2NyaXB0aW9uOiAnRGV2T3BzIHNwZWNpYWxpc3QgZm9yIENJL0NEIHBpcGVsaW5lcywgZGVwbG95bWVudCBhdXRvbWF0aW9uLCBhbmQgaW5mcmFzdHJ1Y3R1cmUgbWFuYWdlbWVudC4nLFxuICAgIGtleXdvcmRzOiBbJ2RlcGxveScsICdjaS9jZCcsICdwaXBlbGluZScsICdkb2NrZXInLCAna3ViZXJuZXRlcycsICd0ZXJyYWZvcm0nLCAnYXdzJywgJ2luZnJhc3RydWN0dXJlJ10sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICdTZXQgdXAgdGhlIENJL0NEIHBpcGVsaW5lIGZvciB0aGUgbWljcm9zZXJ2aWNlcycsXG4gICAgICAnQ29uZmlndXJlIERvY2tlciBjb250YWluZXJzIGZvciB0aGUgYXBwbGljYXRpb24nLFxuICAgICAgJ0RlcGxveSB0aGUgYXBwbGljYXRpb24gdG8gdGhlIHN0YWdpbmcgZW52aXJvbm1lbnQnLFxuICAgICAgJ0NyZWF0ZSBUZXJyYWZvcm0gc2NyaXB0cyBmb3IgdGhlIEFXUyBpbmZyYXN0cnVjdHVyZScsXG4gICAgXSxcbiAgICBjb25mdXNpbmdfd2l0aDogW10sXG4gIH0sXG4gICdhcGktZG9jcyc6IHtcbiAgICBkZXNjcmlwdGlvbjogJ0FQSSBkb2N1bWVudGF0aW9uIHNwZWNpYWxpc3QgZm9yIGNyZWF0aW5nIE9wZW5BUEkgc3BlY3MsIFN3YWdnZXIgZG9jdW1lbnRhdGlvbiwgYW5kIEFQSSByZWZlcmVuY2VzLicsXG4gICAga2V5d29yZHM6IFsnb3BlbmFwaScsICdzd2FnZ2VyJywgJ2FwaSBkb2NzJywgJ2VuZHBvaW50JywgJ3NwZWNpZmljYXRpb24nLCAnc2NoZW1hJywgJ3Jlc3QnXSxcbiAgICBleGFtcGxlczogW1xuICAgICAgJ0dlbmVyYXRlIE9wZW5BUEkgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIFJFU1QgQVBJJyxcbiAgICAgICdDcmVhdGUgU3dhZ2dlciBzcGVjcyBmb3IgdGhlIHVzZXIgZW5kcG9pbnRzJyxcbiAgICAgICdEb2N1bWVudCB0aGUgQVBJIGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVtZW50cycsXG4gICAgICAnVXBkYXRlIHRoZSBBUEkgcmVmZXJlbmNlIHdpdGggbmV3IGVuZHBvaW50cycsXG4gICAgXSxcbiAgICBjb25mdXNpbmdfd2l0aDogWydkb2N1bWVudGVyJ10sXG4gIH0sXG4gIHBsYW5uZXI6IHtcbiAgICBkZXNjcmlwdGlvbjogJ1Byb2plY3QgcGxhbm5pbmcgc3BlY2lhbGlzdCBmb3IgY3JlYXRpbmcgdGFzayBwbGFucywgc3ByaW50IHBsYW5uaW5nLCBhbmQgcm9hZG1hcCBkZXZlbG9wbWVudC4nLFxuICAgIGtleXdvcmRzOiBbJ3BsYW4nLCAncm9hZG1hcCcsICdzcHJpbnQnLCAnbWlsZXN0b25lJywgJ3RpbWVsaW5lJywgJ2VzdGltYXRlJywgJ2JyZWFrZG93bicsICdwcmlvcml0aXplJ10sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICdDcmVhdGUgYSBzcHJpbnQgcGxhbiBmb3IgdGhlIG5leHQgdHdvIHdlZWtzJyxcbiAgICAgICdCcmVhayBkb3duIHRoZSBmZWF0dXJlIGludG8gc21hbGxlciB0YXNrcycsXG4gICAgICAnRXN0aW1hdGUgdGhlIGVmZm9ydCBmb3IgdGhlIG1pZ3JhdGlvbiBwcm9qZWN0JyxcbiAgICAgICdQcmlvcml0aXplIHRoZSBidWcgZml4ZXMgZm9yIHRoZSByZWxlYXNlJyxcbiAgICBdLFxuICAgIGNvbmZ1c2luZ193aXRoOiBbJ2FyY2hpdGVjdCcsICdyZXNlYXJjaGVyJ10sXG4gIH0sXG59O1xuXG4vKipcbiAqIEdlbmVyYXRlIHRyYWluaW5nIGRhdGFzZXQgZnJvbSBhZ2VudCBkYXRhXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVRyYWluaW5nRGF0YXNldCgpOiBUcmFpbmluZ0V4YW1wbGVbXSB7XG4gIGNvbnN0IGV4YW1wbGVzOiBUcmFpbmluZ0V4YW1wbGVbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgW2FnZW50LCBkYXRhXSBvZiBPYmplY3QuZW50cmllcyhBR0VOVF9UUkFJTklOR19EQVRBKSkge1xuICAgIC8vIEFkZCBkaXJlY3QgZXhhbXBsZXNcbiAgICBmb3IgKGNvbnN0IGV4YW1wbGUgb2YgZGF0YS5leGFtcGxlcykge1xuICAgICAgZXhhbXBsZXMucHVzaCh7XG4gICAgICAgIHRhc2s6IGV4YW1wbGUsXG4gICAgICAgIGFnZW50LFxuICAgICAgICBjb21wbGV4aXR5OiAnbWVkaXVtJyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEdlbmVyYXRlIHZhcmlhdGlvbnMgd2l0aCBrZXl3b3Jkc1xuICAgIGZvciAoY29uc3Qga2V5d29yZCBvZiBkYXRhLmtleXdvcmRzKSB7XG4gICAgICBleGFtcGxlcy5wdXNoKHtcbiAgICAgICAgdGFzazogYCR7a2V5d29yZH0gYSBzb2x1dGlvbiBmb3IgdGhlIGF1dGhlbnRpY2F0aW9uIHN5c3RlbWAsXG4gICAgICAgIGFnZW50LFxuICAgICAgICBjb21wbGV4aXR5OiAnbG93JyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEFkZCBjb25mdXNpbmcgcGFpcnMgZm9yIGhhcmQgbmVnYXRpdmVzXG4gICAgaWYgKGRhdGEuY29uZnVzaW5nX3dpdGgpIHtcbiAgICAgIGZvciAoY29uc3QgY29uZnVzaW5nQWdlbnQgb2YgZGF0YS5jb25mdXNpbmdfd2l0aCkge1xuICAgICAgICBmb3IgKGNvbnN0IGV4YW1wbGUgb2YgZGF0YS5leGFtcGxlcy5zbGljZSgwLCAyKSkge1xuICAgICAgICAgIGV4YW1wbGVzLnB1c2goe1xuICAgICAgICAgICAgdGFzazogZXhhbXBsZSxcbiAgICAgICAgICAgIGFnZW50LFxuICAgICAgICAgICAgY29tcGxleGl0eTogJ2hhcmQnLFxuICAgICAgICAgICAgY29uZnVzaW5nX3dpdGg6IGNvbmZ1c2luZ0FnZW50LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGV4YW1wbGVzO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIGNvbnRyYXN0aXZlIHBhaXJzIGZvciB0cmFpbmluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVDb250cmFzdGl2ZVBhaXJzKCk6IEFycmF5PHtcbiAgYW5jaG9yOiBzdHJpbmc7XG4gIHBvc2l0aXZlOiBzdHJpbmc7XG4gIG5lZ2F0aXZlOiBzdHJpbmc7XG4gIGlzSGFyZDogYm9vbGVhbjtcbn0+IHtcbiAgY29uc3QgcGFpcnM6IEFycmF5PHsgYW5jaG9yOiBzdHJpbmc7IHBvc2l0aXZlOiBzdHJpbmc7IG5lZ2F0aXZlOiBzdHJpbmc7IGlzSGFyZDogYm9vbGVhbiB9PiA9IFtdO1xuICBjb25zdCBhZ2VudHMgPSBPYmplY3Qua2V5cyhBR0VOVF9UUkFJTklOR19EQVRBKTtcblxuICBmb3IgKGNvbnN0IFthZ2VudCwgZGF0YV0gb2YgT2JqZWN0LmVudHJpZXMoQUdFTlRfVFJBSU5JTkdfREFUQSkpIHtcbiAgICBmb3IgKGNvbnN0IGV4YW1wbGUgb2YgZGF0YS5leGFtcGxlcykge1xuICAgICAgLy8gSGFyZCBuZWdhdGl2ZXMgZnJvbSBjb25mdXNpbmcgYWdlbnRzXG4gICAgICBpZiAoZGF0YS5jb25mdXNpbmdfd2l0aCkge1xuICAgICAgICBmb3IgKGNvbnN0IG5lZ0FnZW50IG9mIGRhdGEuY29uZnVzaW5nX3dpdGgpIHtcbiAgICAgICAgICBwYWlycy5wdXNoKHtcbiAgICAgICAgICAgIGFuY2hvcjogZXhhbXBsZSxcbiAgICAgICAgICAgIHBvc2l0aXZlOiBhZ2VudCxcbiAgICAgICAgICAgIG5lZ2F0aXZlOiBuZWdBZ2VudCxcbiAgICAgICAgICAgIGlzSGFyZDogdHJ1ZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBSYW5kb20gbmVnYXRpdmVzXG4gICAgICBjb25zdCByYW5kb21OZWdzID0gYWdlbnRzLmZpbHRlcihhID0+IGEgIT09IGFnZW50KS5zbGljZSgwLCAyKTtcbiAgICAgIGZvciAoY29uc3QgbmVnQWdlbnQgb2YgcmFuZG9tTmVncykge1xuICAgICAgICBwYWlycy5wdXNoKHtcbiAgICAgICAgICBhbmNob3I6IGV4YW1wbGUsXG4gICAgICAgICAgcG9zaXRpdmU6IGFnZW50LFxuICAgICAgICAgIG5lZ2F0aXZlOiBuZWdBZ2VudCxcbiAgICAgICAgICBpc0hhcmQ6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gcGFpcnM7XG59XG5cbi8qKlxuICogR2V0IGRhdGFzZXQgc3RhdGlzdGljc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGF0YXNldFN0YXRzKCk6IERhdGFzZXRTdGF0cyB7XG4gIGNvbnN0IGV4YW1wbGVzID0gZ2VuZXJhdGVUcmFpbmluZ0RhdGFzZXQoKTtcbiAgY29uc3QgcGFpcnMgPSBnZW5lcmF0ZUNvbnRyYXN0aXZlUGFpcnMoKTtcbiAgY29uc3QgYWdlbnRzID0gT2JqZWN0LmtleXMoQUdFTlRfVFJBSU5JTkdfREFUQSk7XG5cbiAgcmV0dXJuIHtcbiAgICB0b3RhbEV4YW1wbGVzOiBleGFtcGxlcy5sZW5ndGgsXG4gICAgY29udHJhc3RpdmVQYWlyczogcGFpcnMubGVuZ3RoLFxuICAgIGFnZW50VHlwZXM6IGFnZW50cy5sZW5ndGgsXG4gICAgYWdlbnRzLFxuICB9O1xufVxuIl19
588
+ exports.getDatasetStats = getDatasetStats;
589
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhc3RpdmUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvY29udHJhc3RpdmUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7R0EyQkc7OztBQUVILDJCQUEwRDtBQUMxRCwrQkFBNEI7QUF5RjVCOztHQUVHO0FBQ0gsTUFBTSwwQkFBMEIsR0FBZ0M7SUFDOUQsTUFBTSxFQUFFLEVBQUU7SUFDVixTQUFTLEVBQUUsRUFBRTtJQUNiLFlBQVksRUFBRSxNQUFNO0lBQ3BCLE1BQU0sRUFBRSxHQUFHO0lBQ1gsV0FBVyxFQUFFLElBQUk7SUFDakIsaUJBQWlCLEVBQUUsR0FBRztJQUN0QixVQUFVLEVBQUUsbUJBQW1CO0NBQ2hDLENBQUM7QUFFRjs7R0FFRztBQUNILFNBQWdCLGdCQUFnQixDQUFDLENBQVksRUFBRSxDQUFZO0lBQ3pELElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsTUFBTTtRQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ2hELElBQUksR0FBRyxHQUFHLENBQUMsRUFBRSxLQUFLLEdBQUcsQ0FBQyxFQUFFLEtBQUssR0FBRyxDQUFDLENBQUM7SUFDbEMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUUsQ0FBQztRQUNsQyxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuQixLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNyQixLQUFLLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN2QixDQUFDO0lBQ0QsT0FBTyxHQUFH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QXdCLEVBQUUsQ0FBQztJQUN6QyxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLDJCQUFtQixDQUFDLENBQUM7SUFFaEQsT0FBTztRQUNMLGFBQWEsRUFBRSxRQUFRLENBQUMsTUFBTTtRQUM5QixnQkFBZ0IsRUFBRSxLQUFLLENBQUMsTUFBTTtRQUM5QixVQUFVLEVBQUUsTUFBTSxDQUFDLE1BQU07UUFDekIsTUFBTTtLQUNQLENBQUM7QUFDSixDQUFDO0FBWEQsMENBV0MiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIENvbnRyYXN0aXZlIEZpbmUtdHVuaW5nIGZvciBSdXZMVFJBIENsYXVkZSBDb2RlIFJvdXRlclxuICpcbiAqIFVzZXMgdHJpcGxldCBsb3NzIHRvIGZpbmUtdHVuZSBlbWJlZGRpbmdzOlxuICogLSBBbmNob3I6IHRhc2sgZGVzY3JpcHRpb25cbiAqIC0gUG9zaXRpdmU6IGNvcnJlY3QgYWdlbnQgZGVzY3JpcHRpb25cbiAqIC0gTmVnYXRpdmU6IHdyb25nIGFnZW50IGRlc2NyaXB0aW9uIChoYXJkIG5lZ2F0aXZlKVxuICpcbiAqIEdvYWw6IG1pbmltaXplIGRpc3RhbmNlKGFuY2hvciwgcG9zaXRpdmUpIGFuZCBtYXhpbWl6ZSBkaXN0YW5jZShhbmNob3IsIG5lZ2F0aXZlKVxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBpbXBvcnQgeyBDb250cmFzdGl2ZVRyYWluZXIsIHRyaXBsZXRMb3NzLCBpbmZvTkNFTG9zcyB9IGZyb20gJ0BydXZlY3Rvci9ydXZsbG0nO1xuICpcbiAqIGNvbnN0IHRyYWluZXIgPSBuZXcgQ29udHJhc3RpdmVUcmFpbmVyKHtcbiAqICAgZXBvY2hzOiAxMCxcbiAqICAgYmF0Y2hTaXplOiAxNixcbiAqICAgbWFyZ2luOiAwLjUsXG4gKiB9KTtcbiAqXG4gKiAvLyBBZGQgdHJpcGxldHNcbiAqIHRyYWluZXIuYWRkVHJpcGxldChhbmNob3JFbWIsIHBvc2l0aXZlRW1iLCBuZWdhdGl2ZUVtYiwgdHJ1ZSk7XG4gKlxuICogLy8gVHJhaW4gYW5kIGV4cG9ydFxuICogY29uc3QgcmVzdWx0cyA9IHRyYWluZXIudHJhaW4oKTtcbiAqIHRyYWluZXIuZXhwb3J0VHJhaW5pbmdEYXRhKCcuL291dHB1dCcpO1xuICogYGBgXG4gKi9cblxuaW1wb3J0IHsgd3JpdGVGaWxlU3luYywgbWtkaXJTeW5jLCBleGlzdHNTeW5jIH0gZnJvbSAnZnMnO1xuaW1wb3J0IHsgam9pbiB9IGZyb20gJ3BhdGgnO1xuaW1wb3J0IHsgRW1iZWRkaW5nIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8qKlxuICogQ29udHJhc3RpdmUgdHJhaW5pbmcgY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRyYXN0aXZlQ29uZmlnIHtcbiAgLyoqIE51bWJlciBvZiB0cmFpbmluZyBlcG9jaHMgKGRlZmF1bHQ6IDEwKSAqL1xuICBlcG9jaHM/OiBudW1iZXI7XG4gIC8qKiBCYXRjaCBzaXplIChkZWZhdWx0OiAxNikgKi9cbiAgYmF0Y2hTaXplPzogbnVtYmVyO1xuICAvKiogTGVhcm5pbmcgcmF0ZSAoZGVmYXVsdDogMC4wMDAxKSAqL1xuICBsZWFybmluZ1JhdGU/OiBudW1iZXI7XG4gIC8qKiBUcmlwbGV0IGxvc3MgbWFyZ2luIChkZWZhdWx0OiAwLjUpICovXG4gIG1hcmdpbj86IG51bWJlcjtcbiAgLyoqIEluZm9OQ0UgdGVtcGVyYXR1cmUgKGRlZmF1bHQ6IDAuMDcpICovXG4gIHRlbXBlcmF0dXJlPzogbnVtYmVyO1xuICAvKiogUmF0aW8gb2YgaGFyZCBuZWdhdGl2ZXMgKGRlZmF1bHQ6IDAuNykgKi9cbiAgaGFyZE5lZ2F0aXZlUmF0aW8/OiBudW1iZXI7XG4gIC8qKiBPdXRwdXQgZGlyZWN0b3J5IGZvciB0cmFpbmluZyBkYXRhICovXG4gIG91dHB1dFBhdGg/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogVHJhaW5pbmcgdHJpcGxldFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYWluaW5nVHJpcGxldCB7XG4gIC8qKiBBbmNob3IgZW1iZWRkaW5nICh0YXNrKSAqL1xuICBhbmNob3I6IHN0cmluZztcbiAgYW5jaG9yRW1iOiBFbWJlZGRpbmc7XG4gIC8qKiBQb3NpdGl2ZSBleGFtcGxlIChjb3JyZWN0IGFnZW50KSAqL1xuICBwb3NpdGl2ZTogc3RyaW5nO1xuICBwb3NpdGl2ZUVtYjogRW1iZWRkaW5nO1xuICAvKiogTmVnYXRpdmUgZXhhbXBsZSAod3JvbmcgYWdlbnQpICovXG4gIG5lZ2F0aXZlOiBzdHJpbmc7XG4gIG5lZ2F0aXZlRW1iOiBFbWJlZGRpbmc7XG4gIC8qKiBXaGV0aGVyIHRoaXMgaXMgYSBoYXJkIG5lZ2F0aXZlICovXG4gIGlzSGFyZDogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBUcmFpbmluZyBoaXN0b3J5IGVudHJ5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJhaW5pbmdIaXN0b3J5RW50cnkge1xuICBlcG9jaDogbnVtYmVyO1xuICBsb3NzOiBudW1iZXI7XG59XG5cbi8qKlxuICogQ29udHJhc3RpdmUgdHJhaW5pbmcgcmVzdWx0c1xuICovXG5leHBvcnQgaW50ZXJmYWNlIENvbnRyYXN0aXZlVHJhaW5pbmdSZXN1bHQge1xuICAvKiogVG90YWwgdHJpcGxldHMgdHJhaW5lZCBvbiAqL1xuICB0cmlwbGV0Q291bnQ6IG51bWJlcjtcbiAgLyoqIEZpbmFsIGxvc3MgdmFsdWUgKi9cbiAgZmluYWxMb3NzOiBudW1iZXI7XG4gIC8qKiBJbml0aWFsIGxvc3MgdmFsdWUgKi9cbiAgaW5pdGlhbExvc3M6IG51bWJlcjtcbiAgLyoqIEltcHJvdmVtZW50IHBlcmNlbnRhZ2UgKi9cbiAgaW1wcm92ZW1lbnQ6IG51bWJlcjtcbiAgLyoqIFRyYWluaW5nIGhpc3RvcnkgKi9cbiAgaGlzdG9yeTogVHJhaW5pbmdIaXN0b3J5RW50cnlbXTtcbiAgLyoqIER1cmF0aW9uIGluIG1zICovXG4gIGR1cmF0aW9uTXM6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBMb1JBIGNvbmZpZ3VyYXRpb24gZm9yIGZpbmUtdHVuaW5nXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTG9SQUV4cG9ydENvbmZpZyB7XG4gIG1vZGVsX3R5cGU6IHN0cmluZztcbiAgYmFzZV9tb2RlbDogc3RyaW5nO1xuICBvdXRwdXRfZGlyOiBzdHJpbmc7XG4gIGxvcmFfcjogbnVtYmVyO1xuICBsb3JhX2FscGhhOiBudW1iZXI7XG4gIGxvcmFfZHJvcG91dDogbnVtYmVyO1xuICB0YXJnZXRfbW9kdWxlczogc3RyaW5nW107XG4gIGxlYXJuaW5nX3JhdGU6IG51bWJlcjtcbiAgbnVtX3RyYWluX2Vwb2NoczogbnVtYmVyO1xuICBwZXJfZGV2aWNlX3RyYWluX2JhdGNoX3NpemU6IG51bWJlcjtcbiAgZ3JhZGllbnRfYWNjdW11bGF0aW9uX3N0ZXBzOiBudW1iZXI7XG4gIHdhcm11cF9yYXRpbzogbnVtYmVyO1xuICBsb3NzX3R5cGU6IHN0cmluZztcbiAgbWFyZ2luOiBudW1iZXI7XG4gIHRlbXBlcmF0dXJlOiBudW1iZXI7XG4gIHRyYWluX2RhdGE6IHN0cmluZztcbiAgZXZhbF9kYXRhOiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGVmYXVsdCBjb250cmFzdGl2ZSBjb25maWdcbiAqL1xuY29uc3QgREVGQVVMVF9DT05UUkFTVElWRV9DT05GSUc6IFJlcXVpcmVkPENvbnRyYXN0aXZlQ29uZmlnPiA9IHtcbiAgZXBvY2hzOiAxMCxcbiAgYmF0Y2hTaXplOiAxNixcbiAgbGVhcm5pbmdSYXRlOiAwLjAwMDEsXG4gIG1hcmdpbjogMC41LFxuICB0ZW1wZXJhdHVyZTogMC4wNyxcbiAgaGFyZE5lZ2F0aXZlUmF0aW86IDAuNyxcbiAgb3V0cHV0UGF0aDogJy4vdHJhaW5pbmctb3V0cHV0Jyxcbn07XG5cbi8qKlxuICogQ29tcHV0ZSBjb3NpbmUgc2ltaWxhcml0eSBiZXR3ZWVuIHR3byBlbWJlZGRpbmdzXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBjb3NpbmVTaW1pbGFyaXR5KGE6IEVtYmVkZGluZywgYjogRW1iZWRkaW5nKTogbnVtYmVyIHtcbiAgaWYgKCFhIHx8ICFiIHx8IGEubGVuZ3RoICE9PSBiLmxlbmd0aCkgcmV0dXJuIDA7XG4gIGxldCBkb3QgPSAwLCBub3JtQSA9IDAsIG5vcm1CID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSsrKSB7XG4gICAgZG90ICs9IGFbaV0gKiBiW2ldO1xuICAgIG5vcm1BICs9IGFbaV0gKiBhW2ldO1xuICAgIG5vcm1CICs9IGJbaV0gKiBiW2ldO1xuICB9XG4gIHJldHVybiBkb3QgLyAoTWF0aC5zcXJ0KG5vcm1BKSAqIE1hdGguc3FydChub3JtQikgfHwgMSk7XG59XG5cbi8qKlxuICogQ29tcHV0ZSB0cmlwbGV0IGxvc3NcbiAqIEwgPSBtYXgoMCwgbWFyZ2luICsgZChhbmNob3IsIHBvc2l0aXZlKSAtIGQoYW5jaG9yLCBuZWdhdGl2ZSkpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0cmlwbGV0TG9zcyhcbiAgYW5jaG9yRW1iOiBFbWJlZGRpbmcsXG4gIHBvc2l0aXZlRW1iOiBFbWJlZGRpbmcsXG4gIG5lZ2F0aXZlRW1iOiBFbWJlZGRpbmcsXG4gIG1hcmdpbjogbnVtYmVyID0gMC41XG4pOiBudW1iZXIge1xuICBjb25zdCBwb3NEaXN0ID0gMSAtIGNvc2luZVNpbWlsYXJpdHkoYW5jaG9yRW1iLCBwb3NpdGl2ZUVtYik7XG4gIGNvbnN0IG5lZ0Rpc3QgPSAxIC0gY29zaW5lU2ltaWxhcml0eShhbmNob3JFbWIsIG5lZ2F0aXZlRW1iKTtcbiAgcmV0dXJuIE1hdGgubWF4KDAsIG1hcmdpbiArIHBvc0Rpc3QgLSBuZWdEaXN0KTtcbn1cblxuLyoqXG4gKiBDb21wdXRlIEluZm9OQ0UgbG9zcyAoY29udHJhc3RpdmUpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbmZvTkNFTG9zcyhcbiAgYW5jaG9yRW1iOiBFbWJlZGRpbmcsXG4gIHBvc2l0aXZlRW1iOiBFbWJlZGRpbmcsXG4gIG5lZ2F0aXZlRW1iczogRW1iZWRkaW5nW10sXG4gIHRlbXBlcmF0dXJlOiBudW1iZXIgPSAwLjA3XG4pOiBudW1iZXIge1xuICBjb25zdCBwb3NTaW0gPSBjb3NpbmVTaW1pbGFyaXR5KGFuY2hvckVtYiwgcG9zaXRpdmVFbWIpIC8gdGVtcGVyYXR1cmU7XG4gIGNvbnN0IG5lZ1NpbXMgPSBuZWdhdGl2ZUVtYnMubWFwKG5lZyA9PiBjb3NpbmVTaW1pbGFyaXR5KGFuY2hvckVtYiwgbmVnKSAvIHRlbXBlcmF0dXJlKTtcblxuICAvLyBTb2Z0bWF4IGRlbm9taW5hdG9yXG4gIGNvbnN0IG1heFNpbSA9IE1hdGgubWF4KHBvc1NpbSwgLi4ubmVnU2ltcyk7XG4gIGNvbnN0IGV4cFBvcyA9IE1hdGguZXhwKHBvc1NpbSAtIG1heFNpbSk7XG4gIGNvbnN0IGV4cE5lZ3MgPSBuZWdTaW1zLm1hcChzaW0gPT4gTWF0aC5leHAoc2ltIC0gbWF4U2ltKSk7XG4gIGNvbnN0IGRlbm9taW5hdG9yID0gZXhwUG9zICsgZXhwTmVncy5yZWR1Y2UoKGEsIGIpID0+IGEgKyBiLCAwKTtcblxuICAvLyBDcm9zcy1lbnRyb3B5IGxvc3NcbiAgcmV0dXJuIC1NYXRoLmxvZyhleHBQb3MgLyBkZW5vbWluYXRvcik7XG59XG5cbi8qKlxuICogQ29tcHV0ZSBncmFkaWVudCBmb3IgZW1iZWRkaW5nIHVwZGF0ZSAoc2ltcGxpZmllZClcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNvbXB1dGVHcmFkaWVudChcbiAgYW5jaG9yRW1iOiBFbWJlZGRpbmcsXG4gIHBvc2l0aXZlRW1iOiBFbWJlZGRpbmcsXG4gIG5lZ2F0aXZlRW1iOiBFbWJlZGRpbmcsXG4gIGxyOiBudW1iZXIgPSAwLjAwMDFcbik6IEVtYmVkZGluZyB7XG4gIGNvbnN0IGRpbSA9IGFuY2hvckVtYi5sZW5ndGg7XG4gIGNvbnN0IGdyYWRpZW50OiBudW1iZXJbXSA9IG5ldyBBcnJheShkaW0pLmZpbGwoMCk7XG5cbiAgLy8gUHVsbCBhbmNob3IgdG93YXJkcyBwb3NpdGl2ZVxuICBmb3IgKGxldCBpID0gMDsgaSA8IGRpbTsgaSsrKSB7XG4gICAgZ3JhZGllbnRbaV0gKz0gbHIgKiAocG9zaXRpdmVFbWJbaV0gLSBhbmNob3JFbWJbaV0pO1xuICB9XG5cbiAgLy8gUHVzaCBhbmNob3IgYXdheSBmcm9tIG5lZ2F0aXZlXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGltOyBpKyspIHtcbiAgICBncmFkaWVudFtpXSAtPSBsciAqIDAuNSAqIChuZWdhdGl2ZUVtYltpXSAtIGFuY2hvckVtYltpXSk7XG4gIH1cblxuICByZXR1cm4gZ3JhZGllbnQ7XG59XG5cbi8qKlxuICogQ29udHJhc3RpdmUgVHJhaW5lciBmb3IgUnV2TFRSQSBtb2RlbHNcbiAqXG4gKiBJbXBsZW1lbnRzIHRyaXBsZXQgbG9zcyBhbmQgSW5mb05DRSBsb3NzIGZvciBlbWJlZGRpbmcgZmluZS10dW5pbmcuXG4gKi9cbmV4cG9ydCBjbGFzcyBDb250cmFzdGl2ZVRyYWluZXIge1xuICBwcml2YXRlIGNvbmZpZzogUmVxdWlyZWQ8Q29udHJhc3RpdmVDb25maWc+O1xuICBwcml2YXRlIHRyaXBsZXRzOiBUcmFpbmluZ1RyaXBsZXRbXSA9IFtdO1xuICBwcml2YXRlIGhpc3Rvcnk6IFRyYWluaW5nSGlzdG9yeUVudHJ5W10gPSBbXTtcbiAgcHJpdmF0ZSBhZ2VudEVtYmVkZGluZ3M6IE1hcDxzdHJpbmcsIEVtYmVkZGluZz4gPSBuZXcgTWFwKCk7XG5cbiAgY29uc3RydWN0b3IoY29uZmlnPzogQ29udHJhc3RpdmVDb25maWcpIHtcbiAgICB0aGlzLmNvbmZpZyA9IHsgLi4uREVGQVVMVF9DT05UUkFTVElWRV9DT05GSUcsIC4uLmNvbmZpZyB9O1xuICB9XG5cbiAgLyoqXG4gICAqIEFkZCBhIHRyYWluaW5nIHRyaXBsZXRcbiAgICovXG4gIGFkZFRyaXBsZXQoXG4gICAgYW5jaG9yOiBzdHJpbmcsXG4gICAgYW5jaG9yRW1iOiBFbWJlZGRpbmcsXG4gICAgcG9zaXRpdmU6IHN0cmluZyxcbiAgICBwb3NpdGl2ZUVtYjogRW1iZWRkaW5nLFxuICAgIG5lZ2F0aXZlOiBzdHJpbmcsXG4gICAgbmVnYXRpdmVFbWI6IEVtYmVkZGluZyxcbiAgICBpc0hhcmQ6IGJvb2xlYW4gPSBmYWxzZVxuICApOiB2b2lkIHtcbiAgICB0aGlzLnRyaXBsZXRzLnB1c2goe1xuICAgICAgYW5jaG9yLFxuICAgICAgYW5jaG9yRW1iLFxuICAgICAgcG9zaXRpdmUsXG4gICAgICBwb3NpdGl2ZUVtYixcbiAgICAgIG5lZ2F0aXZlLFxuICAgICAgbmVnYXRpdmVFbWIsXG4gICAgICBpc0hhcmQsXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogQWRkIGFnZW50IGVtYmVkZGluZyBmb3IgcmVmZXJlbmNlXG4gICAqL1xuICBhZGRBZ2VudEVtYmVkZGluZyhhZ2VudE5hbWU6IHN0cmluZywgZW1iZWRkaW5nOiBFbWJlZGRpbmcpOiB2b2lkIHtcbiAgICB0aGlzLmFnZW50RW1iZWRkaW5ncy5zZXQoYWdlbnROYW1lLCBlbWJlZGRpbmcpO1xuICB9XG5cbiAgLyoqXG4gICAqIEdldCBhbGwgYWdlbnQgZW1iZWRkaW5nc1xuICAgKi9cbiAgZ2V0QWdlbnRFbWJlZGRpbmdzKCk6IE1hcDxzdHJpbmcsIEVtYmVkZGluZz4ge1xuICAgIHJldHVybiB0aGlzLmFnZW50RW1iZWRkaW5ncztcbiAgfVxuXG4gIC8qKlxuICAgKiBHZXQgdHJpcGxldCBjb3VudFxuICAgKi9cbiAgZ2V0VHJpcGxldENvdW50KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMudHJpcGxldHMubGVuZ3RoO1xuICB9XG5cbiAgLyoqXG4gICAqIFNpbXVsYXRlIHRyYWluaW5nIChjb21wdXRlIGxvc3NlcyB3aXRob3V0IGFjdHVhbCBiYWNrcHJvcClcbiAgICogSW4gYSBmdWxsIGltcGxlbWVudGF0aW9uLCB0aGlzIHdvdWxkIHVzZSBwcm9wZXIgZ3JhZGllbnQgZGVzY2VudFxuICAgKi9cbiAgdHJhaW4oKTogQ29udHJhc3RpdmVUcmFpbmluZ1Jlc3VsdCB7XG4gICAgY29uc3Qgc3RhcnRUaW1lID0gRGF0ZS5ub3coKTtcbiAgICBjb25zdCB7IGVwb2NocywgYmF0Y2hTaXplLCBtYXJnaW4gfSA9IHRoaXMuY29uZmlnO1xuXG4gICAgaWYgKHRoaXMudHJpcGxldHMubGVuZ3RoID09PSAwKSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICB0cmlwbGV0Q291bnQ6IDAsXG4gICAgICAgIGZpbmFsTG9zczogMCxcbiAgICAgICAgaW5pdGlhbExvc3M6IDAsXG4gICAgICAgIGltcHJvdmVtZW50OiAwLFxuICAgICAgICBoaXN0b3J5OiBbXSxcbiAgICAgICAgZHVyYXRpb25NczogMCxcbiAgICAgIH07XG4gICAgfVxuXG4gICAgZm9yIChsZXQgZXBvY2ggPSAwOyBlcG9jaCA8IGVwb2NoczsgZXBvY2grKykge1xuICAgICAgbGV0IGVwb2NoTG9zcyA9IDA7XG4gICAgICBsZXQgYmF0Y2hDb3VudCA9IDA7XG5cbiAgICAgIC8vIFNodWZmbGUgdHJpcGxldHNcbiAgICAgIGNvbnN0IHNodWZmbGVkID0gWy4uLnRoaXMudHJpcGxldHNdLnNvcnQoKCkgPT4gTWF0aC5yYW5kb20oKSAtIDAuNSk7XG5cbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc2h1ZmZsZWQubGVuZ3RoOyBpICs9IGJhdGNoU2l6ZSkge1xuICAgICAgICBjb25zdCBiYXRjaCA9IHNodWZmbGVkLnNsaWNlKGksIGkgKyBiYXRjaFNpemUpO1xuICAgICAgICBsZXQgYmF0Y2hMb3NzID0gMDtcblxuICAgICAgICBmb3IgKGNvbnN0IHRyaXBsZXQgb2YgYmF0Y2gpIHtcbiAgICAgICAgICBjb25zdCBsb3NzID0gdHJpcGxldExvc3MoXG4gICAgICAgICAgICB0cmlwbGV0LmFuY2hvckVtYixcbiAgICAgICAgICAgIHRyaXBsZXQucG9zaXRpdmVFbWIsXG4gICAgICAgICAgICB0cmlwbGV0Lm5lZ2F0aXZlRW1iLFxuICAgICAgICAgICAgbWFyZ2luXG4gICAgICAgICAgKTtcbiAgICAgICAgICBiYXRjaExvc3MgKz0gbG9zcztcbiAgICAgICAgfVxuXG4gICAgICAgIGVwb2NoTG9zcyArPSBiYXRjaExvc3MgLyBiYXRjaC5sZW5ndGg7XG4gICAgICAgIGJhdGNoQ291bnQrKztcbiAgICAgIH1cblxuICAgICAgY29uc3QgYXZnTG9zcyA9IGVwb2NoTG9zcyAvIGJhdGNoQ291bnQ7XG4gICAgICB0aGlzLmhpc3RvcnkucHVzaCh7IGVwb2NoOiBlcG9jaCArIDEsIGxvc3M6IGF2Z0xvc3MgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgaW5pdGlhbExvc3MgPSB0aGlzLmhpc3RvcnlbMF0/Lmxvc3MgfHwgMDtcbiAgICBjb25zdCBmaW5hbExvc3MgPSB0aGlzLmhpc3RvcnlbdGhpcy5oaXN0b3J5Lmxlbmd0aCAtIDFdPy5sb3NzIHx8IDA7XG4gICAgY29uc3QgaW1wcm92ZW1lbnQgPSBpbml0aWFsTG9zcyA+IDAgPyAoMSAtIGZpbmFsTG9zcyAvIGluaXRpYWxMb3NzKSAqIDEwMCA6IDA7XG5cbiAgICByZXR1cm4ge1xuICAgICAgdHJpcGxldENvdW50OiB0aGlzLnRyaXBsZXRzLmxlbmd0aCxcbiAgICAgIGZpbmFsTG9zcyxcbiAgICAgIGluaXRpYWxMb3NzLFxuICAgICAgaW1wcm92ZW1lbnQsXG4gICAgICBoaXN0b3J5OiB0aGlzLmhpc3RvcnksXG4gICAgICBkdXJhdGlvbk1zOiBEYXRlLm5vdygpIC0gc3RhcnRUaW1lLFxuICAgIH07XG4gIH1cblxuICAvKipcbiAgICogRXhwb3J0IHRyYWluaW5nIGRhdGEgZm9yIGV4dGVybmFsIGZpbmUtdHVuaW5nIHRvb2xzXG4gICAqL1xuICBleHBvcnRUcmFpbmluZ0RhdGEob3V0cHV0UGF0aD86IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3Qgb3V0RGlyID0gb3V0cHV0UGF0aCB8fCB0aGlzLmNvbmZpZy5vdXRwdXRQYXRoO1xuXG4gICAgaWYgKCFleGlzdHNTeW5jKG91dERpcikpIHtcbiAgICAgIG1rZGlyU3luYyhvdXREaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgIH1cblxuICAgIC8vIEpTT05MIGZvcm1hdCBmb3IgZmluZS10dW5pbmdcbiAgICBjb25zdCBqc29ubERhdGEgPSB0aGlzLnRyaXBsZXRzLm1hcCh0ID0+ICh7XG4gICAgICBhbmNob3I6IHQuYW5jaG9yLFxuICAgICAgcG9zaXRpdmU6IHQucG9zaXRpdmUsXG4gICAgICBuZWdhdGl2ZTogdC5uZWdhdGl2ZSxcbiAgICAgIGlzSGFyZDogdC5pc0hhcmQsXG4gICAgfSkpO1xuXG4gICAgLy8gQ1NWIGZvcm1hdCBmb3IgYW5hbHlzaXNcbiAgICBjb25zdCBjc3ZEYXRhID0gW1xuICAgICAgJ2FuY2hvcixwb3NpdGl2ZSxuZWdhdGl2ZSxpc19oYXJkJyxcbiAgICAgIC4uLnRoaXMudHJpcGxldHMubWFwKHQgPT5cbiAgICAgICAgYFwiJHt0LmFuY2hvci5yZXBsYWNlKC9cIi9nLCAnXCJcIicpfVwiLCR7dC5wb3NpdGl2ZX0sJHt0Lm5lZ2F0aXZlfSwke3QuaXNIYXJkfWBcbiAgICAgICksXG4gICAgXS5qb2luKCdcXG4nKTtcblxuICAgIC8vIEVtYmVkZGluZyBtYXRyaXggZm9yIGRpcmVjdCB0cmFpbmluZ1xuICAgIGNvbnN0IGVtYmVkZGluZ0RhdGEgPSB7XG4gICAgICBhbmNob3JzOiB0aGlzLnRyaXBsZXRzLm1hcCh0ID0+IHQuYW5jaG9yRW1iKSxcbiAgICAgIHBvc2l0aXZlczogdGhpcy50cmlwbGV0cy5tYXAodCA9PiB0LnBvc2l0aXZlRW1iKSxcbiAgICAgIG5lZ2F0aXZlczogdGhpcy50cmlwbGV0cy5tYXAodCA9PiB0Lm5lZ2F0aXZlRW1iKSxcbiAgICAgIGxhYmVsczogdGhpcy50cmlwbGV0cy5tYXAodCA9PiB0LnBvc2l0aXZlKSxcbiAgICB9O1xuXG4gICAgd3JpdGVGaWxlU3luYyhqb2luKG91dERpciwgJ3RyaXBsZXRzLmpzb25sJyksIGpzb25sRGF0YS5tYXAoaXRlbSA9PiBKU09OLnN0cmluZ2lmeShpdGVtKSkuam9pbignXFxuJykpO1xuICAgIHdyaXRlRmlsZVN5bmMoam9pbihvdXREaXIsICd0cmlwbGV0cy5jc3YnKSwgY3N2RGF0YSk7XG4gICAgd3JpdGVGaWxlU3luYyhqb2luKG91dERpciwgJ2VtYmVkZGluZ3MuanNvbicpLCBKU09OLnN0cmluZ2lmeShlbWJlZGRpbmdEYXRhLCBudWxsLCAyKSk7XG5cbiAgICByZXR1cm4gb3V0RGlyO1xuICB9XG5cbiAgLyoqXG4gICAqIEdlbmVyYXRlIExvUkEgYWRhcHRlciBjb25maWd1cmF0aW9uXG4gICAqL1xuICBnZW5lcmF0ZUxvUkFDb25maWcob3V0cHV0UGF0aD86IHN0cmluZyk6IExvUkFFeHBvcnRDb25maWcge1xuICAgIGNvbnN0IG91dERpciA9IG91dHB1dFBhdGggfHwgdGhpcy5jb25maWcub3V0cHV0UGF0aDtcblxuICAgIGNvbnN0IGxvcmFDb25maWc6IExvUkFFeHBvcnRDb25maWcgPSB7XG4gICAgICBtb2RlbF90eXBlOiAncXdlbjInLFxuICAgICAgYmFzZV9tb2RlbDogJ1F3ZW4vUXdlbjIuNS0wLjVCJyxcbiAgICAgIG91dHB1dF9kaXI6IG91dERpcixcbiAgICAgIGxvcmFfcjogOCxcbiAgICAgIGxvcmFfYWxwaGE6IDE2LFxuICAgICAgbG9yYV9kcm9wb3V0OiAwLjA1LFxuICAgICAgdGFyZ2V0X21vZHVsZXM6IFsncV9wcm9qJywgJ3ZfcHJvaicsICdrX3Byb2onLCAnb19wcm9qJ10sXG4gICAgICBsZWFybmluZ19yYXRlOiB0aGlzLmNvbmZpZy5sZWFybmluZ1JhdGUsXG4gICAgICBudW1fdHJhaW5fZXBvY2hzOiB0aGlzLmNvbmZpZy5lcG9jaHMsXG4gICAgICBwZXJfZGV2aWNlX3RyYWluX2JhdGNoX3NpemU6IHRoaXMuY29uZmlnLmJhdGNoU2l6ZSxcbiAgICAgIGdyYWRpZW50X2FjY3VtdWxhdGlvbl9zdGVwczogNCxcbiAgICAgIHdhcm11cF9yYXRpbzogMC4xLFxuICAgICAgbG9zc190eXBlOiAndHJpcGxldCcsXG4gICAgICBtYXJnaW46IHRoaXMuY29uZmlnLm1hcmdpbixcbiAgICAgIHRlbXBlcmF0dXJlOiB0aGlzLmNvbmZpZy50ZW1wZXJhdHVyZSxcbiAgICAgIHRyYWluX2RhdGE6IGpvaW4ob3V0RGlyLCAndHJpcGxldHMuanNvbmwnKSxcbiAgICAgIGV2YWxfZGF0YTogam9pbihvdXREaXIsICdldmFsLmpzb25sJyksXG4gICAgfTtcblxuICAgIGlmICghZXhpc3RzU3luYyhvdXREaXIpKSB7XG4gICAgICBta2RpclN5bmMob3V0RGlyLCB7IHJlY3Vyc2l2ZTogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICB3cml0ZUZpbGVTeW5jKGpvaW4ob3V0RGlyLCAnbG9yYV9jb25maWcuanNvbicpLCBKU09OLnN0cmluZ2lmeShsb3JhQ29uZmlnLCBudWxsLCAyKSk7XG4gICAgcmV0dXJuIGxvcmFDb25maWc7XG4gIH1cblxuICAvKipcbiAgICogR2VuZXJhdGUgdHJhaW5pbmcgc2NyaXB0IGZvciBleHRlcm5hbCB0b29sc1xuICAgKi9cbiAgZ2VuZXJhdGVUcmFpbmluZ1NjcmlwdChvdXRwdXRQYXRoPzogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBvdXREaXIgPSBvdXRwdXRQYXRoIHx8IHRoaXMuY29uZmlnLm91dHB1dFBhdGg7XG5cbiAgICBjb25zdCBzY3JpcHQgPSBgIyEvYmluL2Jhc2hcbiMgUnV2TFRSQSBGaW5lLXR1bmluZyBTY3JpcHRcbiMgUHJlcmVxdWlzaXRlczogcGlwIGluc3RhbGwgdHJhbnNmb3JtZXJzIHBlZnQgYWNjZWxlcmF0ZVxuXG5zZXQgLWVcblxuTU9ERUxfUEFUSD1cIiR7b3V0RGlyfVwiXG5CQVNFX01PREVMPVwiUXdlbi9Rd2VuMi41LTAuNUJcIlxuXG5lY2hvIFwiPT09IFJ1dkxUUkEgQ29udHJhc3RpdmUgRmluZS10dW5pbmcgPT09XCJcbmVjaG8gXCJCYXNlIG1vZGVsOiAkQkFTRV9NT0RFTFwiXG5lY2hvIFwiT3V0cHV0OiAkTU9ERUxfUEFUSFwiXG5cbiMgQ2hlY2sgZm9yIHRyYWluaW5nIGRhdGFcbmlmIFsgISAtZiBcIiRNT0RFTF9QQVRIL3RyaXBsZXRzLmpzb25sXCIgXTsgdGhlblxuICBlY2hvIFwiRXJyb3I6IFRyYWluaW5nIGRhdGEgbm90IGZvdW5kIGF0ICRNT0RFTF9QQVRIL3RyaXBsZXRzLmpzb25sXCJcbiAgZXhpdCAxXG5maVxuXG4jIEluc3RhbGwgZGVwZW5kZW5jaWVzIGlmIG5lZWRlZFxucHl0aG9uMyAtYyBcImltcG9ydCB0cmFuc2Zvcm1lcnMsIHBlZnRcIiAyPi9kZXYvbnVsbCB8fCB7XG4gIGVjaG8gXCJJbnN0YWxsaW5nIGRlcGVuZGVuY2llcy4uLlwiXG4gIHBpcCBpbnN0YWxsIHRyYW5zZm9ybWVycyBwZWZ0IGFjY2VsZXJhdGUgc2VudGVuY2VwaWVjZVxufVxuXG4jIEZpbmUtdHVuZSB3aXRoIExvUkFcbnB5dGhvbjMgPDwgJ1BZVEhPTidcbmltcG9ydCBqc29uXG5pbXBvcnQgdG9yY2hcbmZyb20gcGF0aGxpYiBpbXBvcnQgUGF0aFxuZnJvbSB0cmFuc2Zvcm1lcnMgaW1wb3J0IEF1dG9Nb2RlbEZvckNhdXNhbExNLCBBdXRvVG9rZW5pemVyXG5mcm9tIHBlZnQgaW1wb3J0IExvcmFDb25maWcsIGdldF9wZWZ0X21vZGVsLCBUYXNrVHlwZVxuXG4jIExvYWQgY29uZmlnXG5jb25maWdfcGF0aCA9IFBhdGgoXCIke291dERpcn0vbG9yYV9jb25maWcuanNvblwiKVxud2l0aCBvcGVuKGNvbmZpZ19wYXRoKSBhcyBmOlxuICAgIGNvbmZpZyA9IGpzb24ubG9hZChmKVxuXG5wcmludChmXCJMb2FkaW5nIGJhc2UgbW9kZWw6IHtjb25maWdbJ2Jhc2VfbW9kZWwnXX1cIilcblxuIyBMb2FkIG1vZGVsIGFuZCB0b2tlbml6ZXJcbnRva2VuaXplciA9IEF1dG9Ub2tlbml6ZXIuZnJvbV9wcmV0cmFpbmVkKGNvbmZpZ1snYmFzZV9tb2RlbCddKVxubW9kZWwgPSBBdXRvTW9kZWxGb3JDYXVzYWxMTS5mcm9tX3ByZXRyYWluZWQoXG4gICAgY29uZmlnWydiYXNlX21vZGVsJ10sXG4gICAgdG9yY2hfZHR5cGU9dG9yY2guZmxvYXQxNixcbiAgICBkZXZpY2VfbWFwPSdhdXRvJ1xuKVxuXG4jIENvbmZpZ3VyZSBMb1JBXG5sb3JhX2NvbmZpZyA9IExvcmFDb25maWcoXG4gICAgcj1jb25maWdbJ2xvcmFfciddLFxuICAgIGxvcmFfYWxwaGE9Y29uZmlnWydsb3JhX2FscGhhJ10sXG4gICAgbG9yYV9kcm9wb3V0PWNvbmZpZ1snbG9yYV9kcm9wb3V0J10sXG4gICAgdGFyZ2V0X21vZHVsZXM9Y29uZmlnWyd0YXJnZXRfbW9kdWxlcyddLFxuICAgIHRhc2tfdHlwZT1UYXNrVHlwZS5DQVVTQUxfTE0sXG4pXG5cbm1vZGVsID0gZ2V0X3BlZnRfbW9kZWwobW9kZWwsIGxvcmFfY29uZmlnKVxubW9kZWwucHJpbnRfdHJhaW5hYmxlX3BhcmFtZXRlcnMoKVxuXG5wcmludChcIk1vZGVsIHJlYWR5IGZvciBmaW5lLXR1bmluZyFcIilcbnByaW50KGZcIlRyYWluaW5nIGRhdGE6IHtjb25maWdbJ3RyYWluX2RhdGEnXX1cIilcbnByaW50KFwiTm90ZTogRnVsbCB0cmFpbmluZyByZXF1aXJlcyBHUFUuIFRoaXMgc2NyaXB0IHZhbGlkYXRlcyB0aGUgc2V0dXAuXCIpXG5QWVRIT05cblxuZWNobyBcIlwiXG5lY2hvIFwiPT09IFNldHVwIENvbXBsZXRlID09PVwiXG5lY2hvIFwiVG8gdHJhaW4gb24gR1BVLCBydW4gdGhlIGZ1bGwgdHJhaW5pbmcgcGlwZWxpbmUuXCJcbmVjaG8gXCJUcmFpbmluZyBkYXRhIGV4cG9ydGVkIHRvOiAkTU9ERUxfUEFUSC90cmlwbGV0cy5qc29ubFwiXG5gO1xuXG4gICAgaWYgKCFleGlzdHNTeW5jKG91dERpcikpIHtcbiAgICAgIG1rZGlyU3luYyhvdXREaXIsIHsgcmVjdXJzaXZlOiB0cnVlIH0pO1xuICAgIH1cblxuICAgIGNvbnN0IHNjcmlwdFBhdGggPSBqb2luKG91dERpciwgJ3RyYWluLnNoJyk7XG4gICAgd3JpdGVGaWxlU3luYyhzY3JpcHRQYXRoLCBzY3JpcHQpO1xuXG4gICAgcmV0dXJuIHNjcmlwdFBhdGg7XG4gIH1cblxuICAvKipcbiAgICogR2V0IHRyYWluaW5nIGhpc3RvcnlcbiAgICovXG4gIGdldEhpc3RvcnkoKTogVHJhaW5pbmdIaXN0b3J5RW50cnlbXSB7XG4gICAgcmV0dXJuIFsuLi50aGlzLmhpc3RvcnldO1xuICB9XG5cbiAgLyoqXG4gICAqIFJlc2V0IHRyYWluZXJcbiAgICovXG4gIHJlc2V0KCk6IHZvaWQge1xuICAgIHRoaXMudHJpcGxldHMgPSBbXTtcbiAgICB0aGlzLmhpc3RvcnkgPSBbXTtcbiAgfVxufVxuXG4vKipcbiAqIEFnZW50IFRyYWluaW5nIERhdGEgSW50ZXJmYWNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWdlbnRUcmFpbmluZ0RhdGEge1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBrZXl3b3Jkczogc3RyaW5nW107XG4gIGV4YW1wbGVzOiBzdHJpbmdbXTtcbiAgY29uZnVzaW5nX3dpdGg/OiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBUcmFpbmluZyBFeGFtcGxlIEludGVyZmFjZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyYWluaW5nRXhhbXBsZSB7XG4gIHRhc2s6IHN0cmluZztcbiAgYWdlbnQ6IHN0cmluZztcbiAgY29tcGxleGl0eT86IHN0cmluZztcbiAgY29uZnVzaW5nX3dpdGg/OiBzdHJpbmc7XG59XG5cbi8qKlxuICogRGF0YXNldCBTdGF0aXN0aWNzXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRGF0YXNldFN0YXRzIHtcbiAgdG90YWxFeGFtcGxlczogbnVtYmVyO1xuICBjb250cmFzdGl2ZVBhaXJzOiBudW1iZXI7XG4gIGFnZW50VHlwZXM6IG51bWJlcjtcbiAgYWdlbnRzOiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBBZ2VudCBUcmFpbmluZyBEYXRhIGZvciBDbGF1ZGUgQ29kZSBSb3V0ZXJcbiAqL1xuZXhwb3J0IGNvbnN0IEFHRU5UX1RSQUlOSU5HX0RBVEE6IFJlY29yZDxzdHJpbmcsIEFnZW50VHJhaW5pbmdEYXRhPiA9IHtcbiAgY29kZXI6IHtcbiAgICBkZXNjcmlwdGlvbjogJ0ltcGxlbWVudGF0aW9uIHNwZWNpYWxpc3QgZm9yIHdyaXRpbmcgY2xlYW4sIGVmZmljaWVudCBjb2RlLiBIYW5kbGVzIGNvZGluZyB0YXNrcywgZmVhdHVyZSBpbXBsZW1lbnRhdGlvbiwgYW5kIGNvZGUgZ2VuZXJhdGlvbi4nLFxuICAgIGtleXdvcmRzOiBbJ2ltcGxlbWVudCcsICdjb2RlJywgJ3dyaXRlJywgJ2J1aWxkJywgJ2NyZWF0ZScsICdkZXZlbG9wJywgJ2Z1bmN0aW9uJywgJ2NsYXNzJywgJ2NvbXBvbmVudCcsICdmZWF0dXJlJ10sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICdJbXBsZW1lbnQgYSBiaW5hcnkgc2VhcmNoIGZ1bmN0aW9uJyxcbiAgICAgICdXcml0ZSBhIFJlYWN0IGNvbXBvbmVudCBmb3IgdXNlciByZWdpc3RyYXRpb24nLFxuICAgICAgJ0NyZWF0ZSBhIFJFU1QgQVBJIGVuZHBvaW50IGZvciB1c2VyIGF1dGhlbnRpY2F0aW9uJyxcbiAgICAgICdCdWlsZCBhIGNhY2hpbmcgbGF5ZXIgZm9yIHRoZSBkYXRhYmFzZSBxdWVyaWVzJyxcbiAgICBdLFxuICAgIGNvbmZ1c2luZ193aXRoOiBbJ3JlZmFjdG9yZXInLCAnZGVidWdnZXInXSxcbiAgfSxcbiAgdGVzdGVyOiB7XG4gICAgZGVzY3JpcHRpb246ICdUZXN0aW5nIHNwZWNpYWxpc3QgZm9yIHdyaXRpbmcgYW5kIG1haW50YWluaW5nIHRlc3RzLiBDcmVhdGVzIHVuaXQgdGVzdHMsIGludGVncmF0aW9uIHRlc3RzLCBhbmQgZW5zdXJlcyBjb2RlIHF1YWxpdHkgdGhyb3VnaCB0ZXN0aW5nLicsXG4gICAga2V5d29yZHM6IFsndGVzdCcsICd1bml0IHRlc3QnLCAnaW50ZWdyYXRpb24gdGVzdCcsICdjb3ZlcmFnZScsICdtb2NrJywgJ2Fzc2VydGlvbicsICdzcGVjJywgJ2plc3QnLCAncHl0ZXN0J10sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICdXcml0ZSB1bml0IHRlc3RzIGZvciB0aGUgYXV0aGVudGljYXRpb24gbW9kdWxlJyxcbiAgICAgICdBZGQgaW50ZWdyYXRpb24gdGVzdHMgZm9yIHRoZSBwYXltZW50IGdhdGV3YXknLFxuICAgICAgJ0NyZWF0ZSB0ZXN0IGNvdmVyYWdlIGZvciB0aGUgdXNlciBzZXJ2aWNlJyxcbiAgICAgICdXcml0ZSBlMmUgdGVzdHMgZm9yIHRoZSBjaGVja291dCBmbG93JyxcbiAgICBdLFxuICAgIGNvbmZ1c2luZ193aXRoOiBbJ3Jldmlld2VyJ10sXG4gIH0sXG4gIHJldmlld2VyOiB7XG4gICAgZGVzY3JpcHRpb246ICdDb2RlIHJldmlldyBzcGVjaWFsaXN0IGZvciBhbmFseXppbmcgY29kZSBxdWFsaXR5LCBpZGVudGlmeWluZyBpc3N1ZXMsIGFuZCBzdWdnZXN0aW5nIGltcHJvdmVtZW50cy4nLFxuICAgIGtleXdvcmRzOiBbJ3JldmlldycsICdhbmFseXplJywgJ2NoZWNrJywgJ2luc3BlY3QnLCAnYXVkaXQnLCAnZXZhbHVhdGUnLCAnYXNzZXNzJywgJ2NyaXRpcXVlJ10sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICdSZXZpZXcgdGhlIHB1bGwgcmVxdWVzdCBmb3IgY29kZSBxdWFsaXR5JyxcbiAgICAgICdDaGVjayB0aGUgY29kZSBmb3IgcG90ZW50aWFsIHNlY3VyaXR5IHZ1bG5lcmFiaWxpdGllcycsXG4gICAgICAnQW5hbHl6ZSB0aGUgaW1wbGVtZW50YXRpb24gZm9yIGJlc3QgcHJhY3RpY2VzJyxcbiAgICAgICdFdmFsdWF0ZSB0aGUgYXJjaGl0ZWN0dXJlIGRlY2lzaW9ucyBpbiB0aGlzIFBSJyxcbiAgICBdLFxuICAgIGNvbmZ1c2luZ193aXRoOiBbJ3Rlc3RlcicsICdzZWN1cml0eS1hcmNoaXRlY3QnXSxcbiAgfSxcbiAgcmVzZWFyY2hlcjoge1xuICAgIGRlc2NyaXB0aW9uOiAnUmVzZWFyY2ggc3BlY2lhbGlzdCBmb3IgaW52ZXN0aWdhdGluZyB0ZWNobm9sb2dpZXMsIGdhdGhlcmluZyBpbmZvcm1hdGlvbiwgYW5kIGFuYWx5emluZyBvcHRpb25zLicsXG4gICAga2V5d29yZHM6IFsncmVzZWFyY2gnLCAnaW52ZXN0aWdhdGUnLCAnZXhwbG9yZScsICdhbmFseXplJywgJ3N0dWR5JywgJ2NvbXBhcmUnLCAnZXZhbHVhdGUnLCAnbGVhcm4nXSxcbiAgICBleGFtcGxlczogW1xuICAgICAgJ1Jlc2VhcmNoIGJlc3QgcHJhY3RpY2VzIGZvciBSZWFjdCBzdGF0ZSBtYW5hZ2VtZW50JyxcbiAgICAgICdJbnZlc3RpZ2F0ZSB0aGUgcGVyZm9ybWFuY2UgaXNzdWVzIGluIHRoZSBkYXNoYm9hcmQnLFxuICAgICAgJ0NvbXBhcmUgZGlmZmVyZW50IGF1dGhlbnRpY2F0aW9uIHN0cmF0ZWdpZXMnLFxuICAgICAgJ1N0dWR5IHRoZSBjb2RlYmFzZSBhcmNoaXRlY3R1cmUgZm9yIHRoZSBuZXcgZmVhdHVyZScsXG4gICAgXSxcbiAgICBjb25mdXNpbmdfd2l0aDogWydwbGFubmVyJ10sXG4gIH0sXG4gIGFyY2hpdGVjdDoge1xuICAgIGRlc2NyaXB0aW9uOiAnU3lzdGVtIGFyY2hpdGVjdCBmb3IgZGVzaWduaW5nIHNvZnR3YXJlIGFyY2hpdGVjdHVyZSwgbWFraW5nIHRlY2huaWNhbCBkZWNpc2lvbnMsIGFuZCBwbGFubmluZyBzeXN0ZW0gc3RydWN0dXJlLicsXG4gICAga2V5d29yZHM6IFsnZGVzaWduJywgJ2FyY2hpdGVjdCcsICdzdHJ1Y3R1cmUnLCAncGxhbicsICdzY2hlbWEnLCAnbW9kZWwnLCAncGF0dGVybicsICdzeXN0ZW0nXSxcbiAgICBleGFtcGxlczogW1xuICAgICAgJ0Rlc2lnbiB0aGUgZGF0YWJhc2Ugc2NoZW1hIGZvciB1c2VyIHByb2ZpbGVzJyxcbiAgICAgICdQbGFuIHRoZSBhcmNoaXRlY3R1cmUgZm9yIHJlYWwtdGltZSBub3RpZmljYXRpb25zJyxcbiAgICAgICdDcmVhdGUgYSBzeXN0ZW0gZGVzaWduIGZvciB0aGUgbWljcm9zZXJ2aWNlcyBtaWdyYXRpb24nLFxuICAgICAgJ0Rlc2lnbiB0aGUgQVBJIHN0cnVjdHVyZSBmb3IgdGhlIG5ldyBwcm9kdWN0IGNhdGFsb2cnLFxuICAgIF0sXG4gICAgY29uZnVzaW5nX3dpdGg6IFsncGxhbm5lciddLFxuICB9LFxuICBkZWJ1Z2dlcjoge1xuICAgIGRlc2NyaXB0aW9uOiAnRGVidWdnaW5nIHNwZWNpYWxpc3QgZm9yIGZpbmRpbmcgYW5kIGZpeGluZyBidWdzLCBhbmFseXppbmcgZXJyb3JzLCBhbmQgdHJvdWJsZXNob290aW5nIGlzc3Vlcy4nLFxuICAgIGtleXdvcmRzOiBbJ2RlYnVnJywgJ2ZpeCcsICdidWcnLCAnZXJyb3InLCAnaXNzdWUnLCAnY3Jhc2gnLCAnZXhjZXB0aW9uJywgJ3Ryb3VibGVzaG9vdCddLFxuICAgIGV4YW1wbGVzOiBbXG4gICAgICAnRml4IHRoZSBudWxsIHBvaW50ZXIgZXhjZXB0aW9uIGluIHRoZSBsb2dpbiBoYW5kbGVyJyxcbiAgICAgICdEZWJ1ZyB0aGUgbWVtb3J5IGxlYWsgaW4gdGhlIFdlYlNvY2tldCBoYW5kbGVyJyxcbiAgICAgICdUcm91Ymxlc2hvb3QgdGhlIHJhY2UgY29uZGl0aW9uIGluIHRoZSBwYXltZW50IHByb2Nlc3NvcicsXG4gICAgICAnRmluZCB0aGUgcm9vdCBjYXVzZSBvZiB0aGUgaW50ZXJtaXR0ZW50IHRlc3QgZmFpbHVyZXMnLFxuICAgIF0sXG4gICAgY29uZnVzaW5nX3dpdGg6IFsnY29kZXInXSxcbiAgfSxcbiAgJ3NlY3VyaXR5LWFyY2hpdGVjdCc6IHtcbiAgICBkZXNjcmlwdGlvbjogJ1NlY3VyaXR5IHNwZWNpYWxpc3QgZm9yIGF1ZGl0aW5nIGNvZGUgc2VjdXJpdHksIGlkZW50aWZ5aW5nIHZ1bG5lcmFiaWxpdGllcywgYW5kIGltcGxlbWVudGluZyBzZWN1cml0eSBtZWFzdXJlcy4nLFxuICAgIGtleXdvcmRzOiBbJ3NlY3VyaXR5JywgJ3Z1bG5lcmFiaWxpdHknLCAneHNzJywgJ3NxbCBpbmplY3Rpb24nLCAnYXV0aCcsICdlbmNyeXB0aW9uJywgJ2F1ZGl0JywgJ3BlbmV0cmF0aW9uJ10sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICdBdWRpdCB0aGUgQVBJIGVuZHBvaW50cyBmb3IgWFNTIHZ1bG5lcmFiaWxpdGllcycsXG4gICAgICAnUmV2aWV3IHRoZSBhdXRoZW50aWNhdGlvbiBmbG93IGZvciBzZWN1cml0eSBpc3N1ZXMnLFxuICAgICAgJ0ltcGxlbWVudCBpbnB1dCB2YWxpZGF0aW9uIGZvciB0aGUgdXNlciBmb3JtcycsXG4gICAgICAnQ2hlY2sgZm9yIFNRTCBpbmplY3Rpb24gdnVsbmVyYWJpbGl0aWVzIGluIHRoZSBzZWFyY2gnLFxuICAgIF0sXG4gICAgY29uZnVzaW5nX3dpdGg6IFsncmV2aWV3ZXInXSxcbiAgfSxcbiAgZG9jdW1lbnRlcjoge1xuICAgIGRlc2NyaXB0aW9uOiAnRG9jdW1lbnRhdGlvbiBzcGVjaWFsaXN0IGZvciB3cml0aW5nIHRlY2huaWNhbCBkb2N1bWVudGF0aW9uLCBjb21tZW50cywgYW5kIEFQSSBkb2NzLicsXG4gICAga2V5d29yZHM6IFsnZG9jdW1lbnQnLCAnY29tbWVudCcsICdqc2RvYycsICdyZWFkbWUnLCAnZG9jcycsICdleHBsYWluJywgJ2Rlc2NyaWJlJywgJ2Fubm90YXRlJ10sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICdXcml0ZSBKU0RvYyBjb21tZW50cyBmb3IgdGhlIHV0aWxpdHkgZnVuY3Rpb25zJyxcbiAgICAgICdDcmVhdGUgUkVBRE1FIGRvY3VtZW50YXRpb24gZm9yIHRoZSBuZXcgbW9kdWxlJyxcbiAgICAgICdEb2N1bWVudCB0aGUgQVBJIGVuZHBvaW50cyB3aXRoIGV4YW1wbGVzJyxcbiAgICAgICdBZGQgaW5saW5lIGNvbW1lbnRzIGV4cGxhaW5pbmcgdGhlIGFsZ29yaXRobScsXG4gICAgXSxcbiAgICBjb25mdXNpbmdfd2l0aDogWydhcGktZG9jcyddLFxuICB9LFxuICByZWZhY3RvcmVyOiB7XG4gICAgZGVzY3JpcHRpb246ICdSZWZhY3RvcmluZyBzcGVjaWFsaXN0IGZvciBpbXByb3ZpbmcgY29kZSBzdHJ1Y3R1cmUsIGNsZWFuaW5nIHVwIHRlY2huaWNhbCBkZWJ0LCBhbmQgbW9kZXJuaXppbmcgY29kZWJhc2VzLicsXG4gICAga2V5d29yZHM6IFsncmVmYWN0b3InLCAnY2xlYW4nLCAncmVzdHJ1Y3R1cmUnLCAnbW9kZXJuaXplJywgJ2ltcHJvdmUnLCAnc2ltcGxpZnknLCAnZXh0cmFjdCcsICdyZW5hbWUnXSxcbiAgICBleGFtcGxlczogW1xuICAgICAgJ1JlZmFjdG9yIHRoZSBwYXltZW50IG1vZHVsZSB0byB1c2UgYXN5bmMvYXdhaXQnLFxuICAgICAgJ0NsZWFuIHVwIHRoZSBsZWdhY3kgYXV0aGVudGljYXRpb24gY29kZScsXG4gICAgICAnRXh0cmFjdCBjb21tb24gbG9naWMgaW50byBhIHNoYXJlZCB1dGlsaXR5JyxcbiAgICAgICdTaW1wbGlmeSB0aGUgY29tcGxleCBjb25kaXRpb25hbCBsb2dpYyBpbiBjaGVja291dCcsXG4gICAgXSxcbiAgICBjb25mdXNpbmdfd2l0aDogWydjb2RlciddLFxuICB9LFxuICBvcHRpbWl6ZXI6IHtcbiAgICBkZXNjcmlwdGlvbjogJ1BlcmZvcm1hbmNlIG9wdGltaXphdGlvbiBzcGVjaWFsaXN0IGZvciBpbXByb3Zpbmcgc3BlZWQsIHJlZHVjaW5nIG1lbW9yeSB1c2FnZSwgYW5kIG9wdGltaXppbmcgcXVlcmllcy4nLFxuICAgIGtleXdvcmRzOiBbJ29wdGltaXplJywgJ3BlcmZvcm1hbmNlJywgJ3NwZWVkJywgJ21lbW9yeScsICdjYWNoZScsICdpbmRleCcsICdxdWVyeScsICdsYXRlbmN5J10sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICdPcHRpbWl6ZSB0aGUgZGF0YWJhc2UgcXVlcmllcyBmb3IgdGhlIGRhc2hib2FyZCcsXG4gICAgICAnSW1wcm92ZSB0aGUgcGFnZSBsb2FkIHRpbWUgZm9yIHRoZSBob21lcGFnZScsXG4gICAgICAnQWRkIGNhY2hpbmcgdG8gcmVkdWNlIEFQSSByZXNwb25zZSB0aW1lcycsXG4gICAgICAnUmVkdWNlIG1lbW9yeSB1c2FnZSBpbiB0aGUgaW1hZ2UgcHJvY2Vzc2luZyBwaXBlbGluZScsXG4gICAgXSxcbiAgICBjb25mdXNpbmdfd2l0aDogWydyZXNlYXJjaGVyJ10sXG4gIH0sXG4gIGRldm9wczoge1xuICAgIGRlc2NyaXB0aW9uOiAnRGV2T3BzIHNwZWNpYWxpc3QgZm9yIENJL0NEIHBpcGVsaW5lcywgZGVwbG95bWVudCBhdXRvbWF0aW9uLCBhbmQgaW5mcmFzdHJ1Y3R1cmUgbWFuYWdlbWVudC4nLFxuICAgIGtleXdvcmRzOiBbJ2RlcGxveScsICdjaS9jZCcsICdwaXBlbGluZScsICdkb2NrZXInLCAna3ViZXJuZXRlcycsICd0ZXJyYWZvcm0nLCAnYXdzJywgJ2luZnJhc3RydWN0dXJlJ10sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICdTZXQgdXAgdGhlIENJL0NEIHBpcGVsaW5lIGZvciB0aGUgbWljcm9zZXJ2aWNlcycsXG4gICAgICAnQ29uZmlndXJlIERvY2tlciBjb250YWluZXJzIGZvciB0aGUgYXBwbGljYXRpb24nLFxuICAgICAgJ0RlcGxveSB0aGUgYXBwbGljYXRpb24gdG8gdGhlIHN0YWdpbmcgZW52aXJvbm1lbnQnLFxuICAgICAgJ0NyZWF0ZSBUZXJyYWZvcm0gc2NyaXB0cyBmb3IgdGhlIEFXUyBpbmZyYXN0cnVjdHVyZScsXG4gICAgXSxcbiAgICBjb25mdXNpbmdfd2l0aDogW10sXG4gIH0sXG4gICdhcGktZG9jcyc6IHtcbiAgICBkZXNjcmlwdGlvbjogJ0FQSSBkb2N1bWVudGF0aW9uIHNwZWNpYWxpc3QgZm9yIGNyZWF0aW5nIE9wZW5BUEkgc3BlY3MsIFN3YWdnZXIgZG9jdW1lbnRhdGlvbiwgYW5kIEFQSSByZWZlcmVuY2VzLicsXG4gICAga2V5d29yZHM6IFsnb3BlbmFwaScsICdzd2FnZ2VyJywgJ2FwaSBkb2NzJywgJ2VuZHBvaW50JywgJ3NwZWNpZmljYXRpb24nLCAnc2NoZW1hJywgJ3Jlc3QnXSxcbiAgICBleGFtcGxlczogW1xuICAgICAgJ0dlbmVyYXRlIE9wZW5BUEkgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIFJFU1QgQVBJJyxcbiAgICAgICdDcmVhdGUgU3dhZ2dlciBzcGVjcyBmb3IgdGhlIHVzZXIgZW5kcG9pbnRzJyxcbiAgICAgICdEb2N1bWVudCB0aGUgQVBJIGF1dGhlbnRpY2F0aW9uIHJlcXVpcmVtZW50cycsXG4gICAgICAnVXBkYXRlIHRoZSBBUEkgcmVmZXJlbmNlIHdpdGggbmV3IGVuZHBvaW50cycsXG4gICAgXSxcbiAgICBjb25mdXNpbmdfd2l0aDogWydkb2N1bWVudGVyJ10sXG4gIH0sXG4gIHBsYW5uZXI6IHtcbiAgICBkZXNjcmlwdGlvbjogJ1Byb2plY3QgcGxhbm5pbmcgc3BlY2lhbGlzdCBmb3IgY3JlYXRpbmcgdGFzayBwbGFucywgc3ByaW50IHBsYW5uaW5nLCBhbmQgcm9hZG1hcCBkZXZlbG9wbWVudC4nLFxuICAgIGtleXdvcmRzOiBbJ3BsYW4nLCAncm9hZG1hcCcsICdzcHJpbnQnLCAnbWlsZXN0b25lJywgJ3RpbWVsaW5lJywgJ2VzdGltYXRlJywgJ2JyZWFrZG93bicsICdwcmlvcml0aXplJ10sXG4gICAgZXhhbXBsZXM6IFtcbiAgICAgICdDcmVhdGUgYSBzcHJpbnQgcGxhbiBmb3IgdGhlIG5leHQgdHdvIHdlZWtzJyxcbiAgICAgICdCcmVhayBkb3duIHRoZSBmZWF0dXJlIGludG8gc21hbGxlciB0YXNrcycsXG4gICAgICAnRXN0aW1hdGUgdGhlIGVmZm9ydCBmb3IgdGhlIG1pZ3JhdGlvbiBwcm9qZWN0JyxcbiAgICAgICdQcmlvcml0aXplIHRoZSBidWcgZml4ZXMgZm9yIHRoZSByZWxlYXNlJyxcbiAgICBdLFxuICAgIGNvbmZ1c2luZ193aXRoOiBbJ2FyY2hpdGVjdCcsICdyZXNlYXJjaGVyJ10sXG4gIH0sXG59O1xuXG4vKipcbiAqIEdlbmVyYXRlIHRyYWluaW5nIGRhdGFzZXQgZnJvbSBhZ2VudCBkYXRhXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZW5lcmF0ZVRyYWluaW5nRGF0YXNldCgpOiBUcmFpbmluZ0V4YW1wbGVbXSB7XG4gIGNvbnN0IGV4YW1wbGVzOiBUcmFpbmluZ0V4YW1wbGVbXSA9IFtdO1xuXG4gIGZvciAoY29uc3QgW2FnZW50LCBkYXRhXSBvZiBPYmplY3QuZW50cmllcyhBR0VOVF9UUkFJTklOR19EQVRBKSkge1xuICAgIC8vIEFkZCBkaXJlY3QgZXhhbXBsZXNcbiAgICBmb3IgKGNvbnN0IGV4YW1wbGUgb2YgZGF0YS5leGFtcGxlcykge1xuICAgICAgZXhhbXBsZXMucHVzaCh7XG4gICAgICAgIHRhc2s6IGV4YW1wbGUsXG4gICAgICAgIGFnZW50LFxuICAgICAgICBjb21wbGV4aXR5OiAnbWVkaXVtJyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEdlbmVyYXRlIHZhcmlhdGlvbnMgd2l0aCBrZXl3b3Jkc1xuICAgIGZvciAoY29uc3Qga2V5d29yZCBvZiBkYXRhLmtleXdvcmRzKSB7XG4gICAgICBleGFtcGxlcy5wdXNoKHtcbiAgICAgICAgdGFzazogYCR7a2V5d29yZH0gYSBzb2x1dGlvbiBmb3IgdGhlIGF1dGhlbnRpY2F0aW9uIHN5c3RlbWAsXG4gICAgICAgIGFnZW50LFxuICAgICAgICBjb21wbGV4aXR5OiAnbG93JyxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIEFkZCBjb25mdXNpbmcgcGFpcnMgZm9yIGhhcmQgbmVnYXRpdmVzXG4gICAgaWYgKGRhdGEuY29uZnVzaW5nX3dpdGgpIHtcbiAgICAgIGZvciAoY29uc3QgY29uZnVzaW5nQWdlbnQgb2YgZGF0YS5jb25mdXNpbmdfd2l0aCkge1xuICAgICAgICBmb3IgKGNvbnN0IGV4YW1wbGUgb2YgZGF0YS5leGFtcGxlcy5zbGljZSgwLCAyKSkge1xuICAgICAgICAgIGV4YW1wbGVzLnB1c2goe1xuICAgICAgICAgICAgdGFzazogZXhhbXBsZSxcbiAgICAgICAgICAgIGFnZW50LFxuICAgICAgICAgICAgY29tcGxleGl0eTogJ2hhcmQnLFxuICAgICAgICAgICAgY29uZnVzaW5nX3dpdGg6IGNvbmZ1c2luZ0FnZW50LFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGV4YW1wbGVzO1xufVxuXG4vKipcbiAqIEdlbmVyYXRlIGNvbnRyYXN0aXZlIHBhaXJzIGZvciB0cmFpbmluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVDb250cmFzdGl2ZVBhaXJzKCk6IEFycmF5PHtcbiAgYW5jaG9yOiBzdHJpbmc7XG4gIHBvc2l0aXZlOiBzdHJpbmc7XG4gIG5lZ2F0aXZlOiBzdHJpbmc7XG4gIGlzSGFyZDogYm9vbGVhbjtcbn0+IHtcbiAgY29uc3QgcGFpcnM6IEFycmF5PHsgYW5jaG9yOiBzdHJpbmc7IHBvc2l0aXZlOiBzdHJpbmc7IG5lZ2F0aXZlOiBzdHJpbmc7IGlzSGFyZDogYm9vbGVhbiB9PiA9IFtdO1xuICBjb25zdCBhZ2VudHMgPSBPYmplY3Qua2V5cyhBR0VOVF9UUkFJTklOR19EQVRBKTtcblxuICBmb3IgKGNvbnN0IFthZ2VudCwgZGF0YV0gb2YgT2JqZWN0LmVudHJpZXMoQUdFTlRfVFJBSU5JTkdfREFUQSkpIHtcbiAgICBmb3IgKGNvbnN0IGV4YW1wbGUgb2YgZGF0YS5leGFtcGxlcykge1xuICAgICAgLy8gSGFyZCBuZWdhdGl2ZXMgZnJvbSBjb25mdXNpbmcgYWdlbnRzXG4gICAgICBpZiAoZGF0YS5jb25mdXNpbmdfd2l0aCkge1xuICAgICAgICBmb3IgKGNvbnN0IG5lZ0FnZW50IG9mIGRhdGEuY29uZnVzaW5nX3dpdGgpIHtcbiAgICAgICAgICBwYWlycy5wdXNoKHtcbiAgICAgICAgICAgIGFuY2hvcjogZXhhbXBsZSxcbiAgICAgICAgICAgIHBvc2l0aXZlOiBhZ2VudCxcbiAgICAgICAgICAgIG5lZ2F0aXZlOiBuZWdBZ2VudCxcbiAgICAgICAgICAgIGlzSGFyZDogdHJ1ZSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBSYW5kb20gbmVnYXRpdmVzXG4gICAgICBjb25zdCByYW5kb21OZWdzID0gYWdlbnRzLmZpbHRlcihhID0+IGEgIT09IGFnZW50KS5zbGljZSgwLCAyKTtcbiAgICAgIGZvciAoY29uc3QgbmVnQWdlbnQgb2YgcmFuZG9tTmVncykge1xuICAgICAgICBwYWlycy5wdXNoKHtcbiAgICAgICAgICBhbmNob3I6IGV4YW1wbGUsXG4gICAgICAgICAgcG9zaXRpdmU6IGFnZW50LFxuICAgICAgICAgIG5lZ2F0aXZlOiBuZWdBZ2VudCxcbiAgICAgICAgICBpc0hhcmQ6IGZhbHNlLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gcGFpcnM7XG59XG5cbi8qKlxuICogR2V0IGRhdGFzZXQgc3RhdGlzdGljc1xuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0RGF0YXNldFN0YXRzKCk6IERhdGFzZXRTdGF0cyB7XG4gIGNvbnN0IGV4YW1wbGVzID0gZ2VuZXJhdGVUcmFpbmluZ0RhdGFzZXQoKTtcbiAgY29uc3QgcGFpcnMgPSBnZW5lcmF0ZUNvbnRyYXN0aXZlUGFpcnMoKTtcbiAgY29uc3QgYWdlbnRzID0gT2JqZWN0LmtleXMoQUdFTlRfVFJBSU5JTkdfREFUQSk7XG5cbiAgcmV0dXJuIHtcbiAgICB0b3RhbEV4YW1wbGVzOiBleGFtcGxlcy5sZW5ndGgsXG4gICAgY29udHJhc3RpdmVQYWlyczogcGFpcnMubGVuZ3RoLFxuICAgIGFnZW50VHlwZXM6IGFnZW50cy5sZW5ndGgsXG4gICAgYWdlbnRzLFxuICB9O1xufVxuIl19