UNPKG

@rx-angular/cdk

Version:

@rx-angular/cdk is a Component Development Kit for ergonomic and highly performant angular applications. It helps to to build Large scale applications, UI libs, state management, rendering systems and much more. Furthermore the unique way of mixing reacti

1 lines 78.2 kB
{"version":3,"file":"cdk-zone-configurations.mjs","sources":["../tmp-esm2022/zone-configurations/lib/event-names.js","../tmp-esm2022/zone-configurations/lib/convenience-methods.js","../tmp-esm2022/zone-configurations/lib/model/configurations.types.js","../tmp-esm2022/zone-configurations/lib/zone-config.js","../tmp-esm2022/zone-configurations/cdk-zone-configurations.js"],"sourcesContent":["// Standard Events\n// Focus Events\nexport const focusEvents = ['blur', 'focus', 'focusin', 'focusout'];\n/**\n * Mouse Events\n * (MouseEvent)[https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent]\n */\nexport const mouseEvents = [\n 'mousedown',\n 'dblclick',\n 'mouseenter',\n 'mouseleave',\n 'mousemove',\n 'mouseout',\n 'mouseover',\n 'mouseup',\n 'click',\n];\n/**\n * Wheel Events\n * (WheelEvent)[https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent]\n */\nexport const wheelEvents = [\n // (WheelEvent)[https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent]\n 'wheel',\n 'mousewheel',\n];\n// Input Events\nexport const inputEvents = [\n 'input',\n 'invalid',\n 'change',\n 'reset',\n 'select',\n 'submit',\n];\n/**\n * @deprecated\n */\nexport const formControlsEvents = inputEvents;\n// [KeyboardEvent](https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent)\nexport const keyboardEvents = ['keydown', 'keypress', 'keyup'];\n// [VR]()\nexport const vrEvents = [\n 'vrdisplayactivate',\n 'vrdisplayblur',\n 'vrdisplayconnect',\n 'vrdisplaydeactivate',\n 'vrdisplaydisconnect',\n 'vrdisplayfocus',\n 'vrdisplaypointerrestricted',\n 'vrdisplaypointerunrestricted',\n 'vrdisplaypresentchange',\n];\n// [MSGesture]()\nexport const mSGestureEvents = [\n 'MSGestureChange',\n 'MSGestureDoubleTap',\n 'MSGestureEnd',\n 'MSGestureHold',\n 'MSGestureStart',\n 'MSGestureTap',\n 'MSInertiaStart',\n 'MSPointerCancel',\n 'MSPointerDown',\n 'MSPointerEnter',\n 'MSPointerLeave',\n 'MSPointerMove',\n 'MSPointerOut',\n 'MSPointerOver',\n 'MSPointerUp',\n];\n// [xPrint](https://developer.mozilla.org/en-US/docs/Web/API/Window/afterprint_event)\nexport const printEvents = ['afterprint', 'beforeprint'];\n// [network]()\nexport const networkEvents = ['offline', 'online'];\n// [network]()\nexport const audioEvents = [\n 'canplay',\n 'canplaythrough',\n 'pause',\n 'play',\n 'playing',\n 'volumechange',\n];\n// Composition Events\nexport const compositionEvents = [\n 'compositionstart',\n 'compositionupdate',\n 'compositionend',\n];\n/**\n * Touch Events\n * [PointerEvent](https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent)\n * [TouchEvent](https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent)\n */\nexport const touchEvents = [\n // [PointerEvent](https://developer.mozilla.org/en-US/docs/Web/API/PointerEvent)\n 'pointerover',\n 'pointerenter',\n 'pointerdown',\n 'pointermove',\n // 'pointerrawupdate',\n 'pointerup',\n 'pointercancel',\n 'pointerout',\n 'pointerleave',\n 'gotpointercapture',\n 'lostpointercapture',\n 'pointerup',\n // [TouchEvent](https://developer.mozilla.org/en-US/docs/Web/API/TouchEvent)\n 'touchstart',\n 'touchend',\n 'touchmove',\n 'touchcancel',\n // [DragEvent](https://developer.mozilla.org/en-US/docs/Web/API/DragEvent)\n 'drag',\n 'dragend',\n 'dragexit',\n 'dragenter',\n 'dragleave',\n 'dragover',\n 'dragstart',\n 'drop',\n];\nexport const globalEvents = [\n 'contextmenu',\n 'resize',\n 'scroll',\n 'abort',\n 'load',\n 'loadeddata',\n 'loadedmetadata',\n 'loadstart',\n 'unload',\n 'error',\n];\nexport const websocketEvents = ['close', 'error', 'message', 'open'];\n/**\n * Basic XHR Events\n * [Load](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/load_event)\n * [Error](https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest/error_event)\n * There are more events you may want to unpatch https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest\n */\n// XHREvent (group is here to make it easier to target XHR in angular applications. It contains redundant events e.g. 'error')\nexport const xhrEvents = ['load', 'error'];\n// @TODO\nexport const windowEvents = [\n 'compassneedscalibration',\n 'durationchange',\n 'emptied',\n 'ended',\n 'orientationchange',\n 'ratechange',\n 'seeked',\n 'seeking',\n 'stalled',\n 'suspend',\n 'timeupdate',\n 'waiting',\n];\n/**\n * All Events combined\n */\nexport const allEvents = Array.from(new Set([\n ...focusEvents,\n ...mouseEvents,\n ...wheelEvents,\n ...inputEvents,\n ...keyboardEvents,\n ...inputEvents,\n ...vrEvents,\n ...mSGestureEvents,\n ...printEvents,\n ...networkEvents,\n ...audioEvents,\n ...compositionEvents,\n ...touchEvents,\n ...globalEvents,\n ...websocketEvents,\n ...xhrEvents,\n ...windowEvents,\n]));\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnQtbmFtZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay96b25lLWNvbmZpZ3VyYXRpb25zL3NyYy9saWIvZXZlbnQtbmFtZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsa0JBQWtCO0FBRWxCLGVBQWU7QUFDZixNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQyxNQUFNLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxVQUFVLENBQVUsQ0FBQztBQUU3RTs7O0dBR0c7QUFDSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUc7SUFDekIsV0FBVztJQUNYLFVBQVU7SUFDVixZQUFZO0lBQ1osWUFBWTtJQUNaLFdBQVc7SUFDWCxVQUFVO0lBQ1YsV0FBVztJQUNYLFNBQVM7SUFDVCxPQUFPO0NBQ0MsQ0FBQztBQUVYOzs7R0FHRztBQUNILE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRztJQUN6Qiw0RUFBNEU7SUFDNUUsT0FBTztJQUNQLFlBQVk7Q0FDSixDQUFDO0FBRVgsZUFBZTtBQUNmLE1BQU0sQ0FBQyxNQUFNLFdBQVcsR0FBRztJQUN6QixPQUFPO0lBQ1AsU0FBUztJQUNULFFBQVE7SUFDUixPQUFPO0lBQ1AsUUFBUTtJQUNSLFFBQVE7Q0FDQSxDQUFDO0FBRVg7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxrQkFBa0IsR0FBRyxXQUFXLENBQUM7QUFFOUMsa0ZBQWtGO0FBQ2xGLE1BQU0sQ0FBQyxNQUFNLGNBQWMsR0FBRyxDQUFDLFNBQVMsRUFBRSxVQUFVLEVBQUUsT0FBTyxDQUFVLENBQUM7QUFFeEUsU0FBUztBQUNULE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRztJQUN0QixtQkFBbUI7SUFDbkIsZUFBZTtJQUNmLGtCQUFrQjtJQUNsQixxQkFBcUI7SUFDckIscUJBQXFCO0lBQ3JCLGdCQUFnQjtJQUNoQiw0QkFBNEI7SUFDNUIsOEJBQThCO0lBQzlCLHdCQUF3QjtDQUNo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Ly8gU3RhbmRhcmQgRXZlbnRzXG5cbi8vIEZvY3VzIEV2ZW50c1xuZXhwb3J0IGNvbnN0IGZvY3VzRXZlbnRzID0gWydibHVyJywgJ2ZvY3VzJywgJ2ZvY3VzaW4nLCAnZm9jdXNvdXQnXSBhcyBjb25zdDtcblxuLyoqXG4gKiBNb3VzZSBFdmVudHNcbiAqIChNb3VzZUV2ZW50KVtodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvTW91c2VFdmVudF1cbiAqL1xuZXhwb3J0IGNvbnN0IG1vdXNlRXZlbnRzID0gW1xuICAnbW91c2Vkb3duJyxcbiAgJ2RibGNsaWNrJyxcbiAgJ21vdXNlZW50ZXInLFxuICAnbW91c2VsZWF2ZScsXG4gICdtb3VzZW1vdmUnLFxuICAnbW91c2VvdXQnLFxuICAnbW91c2VvdmVyJyxcbiAgJ21vdXNldXAnLFxuICAnY2xpY2snLFxuXSBhcyBjb25zdDtcblxuLyoqXG4gKiBXaGVlbCBFdmVudHNcbiAqIChXaGVlbEV2ZW50KVtodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvV2hlZWxFdmVudF1cbiAqL1xuZXhwb3J0IGNvbnN0IHdoZWVsRXZlbnRzID0gW1xuICAvLyAoV2hlZWxFdmVudClbaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1doZWVsRXZlbnRdXG4gICd3aGVlbCcsXG4gICdtb3VzZXdoZWVsJyxcbl0gYXMgY29uc3Q7XG5cbi8vIElucHV0IEV2ZW50c1xuZXhwb3J0IGNvbnN0IGlucHV0RXZlbnRzID0gW1xuICAnaW5wdXQnLFxuICAnaW52YWxpZCcsXG4gICdjaGFuZ2UnLFxuICAncmVzZXQnLFxuICAnc2VsZWN0JyxcbiAgJ3N1Ym1pdCcsXG5dIGFzIGNvbnN0O1xuXG4vKipcbiAqIEBkZXByZWNhdGVkXG4gKi9cbmV4cG9ydCBjb25zdCBmb3JtQ29udHJvbHNFdmVudHMgPSBpbnB1dEV2ZW50cztcblxuLy8gW0tleWJvYXJkRXZlbnRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9LZXlib2FyZEV2ZW50KVxuZXhwb3J0IGNvbnN0IGtleWJvYXJkRXZlbnRzID0gWydrZXlkb3duJywgJ2tleXByZXNzJywgJ2tleXVwJ10gYXMgY29uc3Q7XG5cbi8vIFtWUl0oKVxuZXhwb3J0IGNvbnN0IHZyRXZlbnRzID0gW1xuICAndnJkaXNwbGF5YWN0aXZhdGUnLFxuICAndnJkaXNwbGF5Ymx1cicsXG4gICd2cmRpc3BsYXljb25uZWN0JyxcbiAgJ3ZyZGlzcGxheWRlYWN0aXZhdGUnLFxuICAndnJkaXNwbGF5ZGlzY29ubmVjdCcsXG4gICd2cmRpc3BsYXlmb2N1cycsXG4gICd2cmRpc3BsYXlwb2ludGVycmVzdHJpY3RlZCcsXG4gICd2cmRpc3BsYXlwb2ludGVydW5yZXN0cmljdGVkJyxcbiAgJ3ZyZGlzcGxheXByZXNlbnRjaGFuZ2UnLFxuXSBhcyBjb25zdDtcblxuLy8gW01TR2VzdHVyZV0oKVxuZXhwb3J0IGNvbnN0IG1TR2VzdHVyZUV2ZW50cyA9IFtcbiAgJ01TR2VzdHVyZUNoYW5nZScsXG4gICdNU0dlc3R1cmVEb3VibGVUYXAnLFxuICAnTVNHZXN0dXJlRW5kJyxcbiAgJ01TR2VzdHVyZUhvbGQnLFxuICAnTVNHZXN0dXJlU3RhcnQnLFxuICAnTVNHZXN0dXJlVGFwJyxcbiAgJ01TSW5lcnRpYVN0YXJ0JyxcbiAgJ01TUG9pbnRlckNhbmNlbCcsXG4gICdNU1BvaW50ZXJEb3duJyxcbiAgJ01TUG9pbnRlckVudGVyJyxcbiAgJ01TUG9pbnRlckxlYXZlJyxcbiAgJ01TUG9pbnRlck1vdmUnLFxuICAnTVNQb2ludGVyT3V0JyxcbiAgJ01TUG9pbnRlck92ZXInLFxuICAnTVNQb2ludGVyVXAnLFxuXSBhcyBjb25zdDtcblxuLy8gW3hQcmludF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1dpbmRvdy9hZnRlcnByaW50X2V2ZW50KVxuZXhwb3J0IGNvbnN0IHByaW50RXZlbnRzID0gWydhZnRlcnByaW50JywgJ2JlZm9yZXByaW50J10gYXMgY29uc3Q7XG4vLyBbbmV0d29ya10oKVxuZXhwb3J0IGNvbnN0IG5ldHdvcmtFdmVudHMgPSBbJ29mZmxpbmUnLCAnb25saW5lJ10gYXMgY29uc3Q7XG5cbi8vIFtuZXR3b3JrXSgpXG5leHBvcnQgY29uc3QgYXVkaW9FdmVudHMgPSBbXG4gICdjYW5wbGF5JyxcbiAgJ2NhbnBsYXl0aHJvdWdoJyxcbiAgJ3BhdXNlJyxcbiAgJ3BsYXknLFxuICAncGxheWluZycsXG4gICd2b2x1bWVjaGFuZ2UnLFxuXSBhcyBjb25zdDtcblxuLy8gQ29tcG9zaXRpb24gRXZlbnRzXG5leHBvcnQgY29uc3QgY29tcG9zaXRpb25FdmVudHMgPSBbXG4gICdjb21wb3NpdGlvbnN0YXJ0JyxcbiAgJ2NvbXBvc2l0aW9udXBkYXRlJyxcbiAgJ2NvbXBvc2l0aW9uZW5kJyxcbl0gYXMgY29uc3Q7XG5cbi8qKlxuICogVG91Y2ggRXZlbnRzXG4gKiBbUG9pbnRlckV2ZW50XShodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvUG9pbnRlckV2ZW50KVxuICogW1RvdWNoRXZlbnRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9Ub3VjaEV2ZW50KVxuICovXG5leHBvcnQgY29uc3QgdG91Y2hFdmVudHMgPSBbXG4gIC8vIFtQb2ludGVyRXZlbnRdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9Qb2ludGVyRXZlbnQpXG4gICdwb2ludGVyb3ZlcicsXG4gICdwb2ludGVyZW50ZXInLFxuICAncG9pbnRlcmRvd24nLFxuICAncG9pbnRlcm1vdmUnLFxuICAvLyAncG9pbnRlcnJhd3VwZGF0ZScsXG4gICdwb2ludGVydXAnLFxuICAncG9pbnRlcmNhbmNlbCcsXG4gICdwb2ludGVyb3V0JyxcbiAgJ3BvaW50ZXJsZWF2ZScsXG4gICdnb3Rwb2ludGVyY2FwdHVyZScsXG4gICdsb3N0cG9pbnRlcmNhcHR1cmUnLFxuICAncG9pbnRlcnVwJyxcblxuICAvLyBbVG91Y2hFdmVudF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1RvdWNoRXZlbnQpXG4gICd0b3VjaHN0YXJ0JyxcbiAgJ3RvdWNoZW5kJyxcbiAgJ3RvdWNobW92ZScsXG4gICd0b3VjaGNhbmNlbCcsXG5cbiAgLy8gW0RyYWdFdmVudF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL0RyYWdFdmVudClcbiAgJ2RyYWcnLFxuICAnZHJhZ2VuZCcsXG4gICdkcmFnZXhpdCcsXG4gICdkcmFnZW50ZXInLFxuICAnZHJhZ2xlYXZlJyxcbiAgJ2RyYWdvdmVyJyxcbiAgJ2RyYWdzdGFydCcsXG4gICdkcm9wJyxcbl0gYXMgY29uc3Q7XG5cbmV4cG9ydCBjb25zdCBnbG9iYWxFdmVudHMgPSBbXG4gICdjb250ZXh0bWVudScsXG4gICdyZXNpemUnLFxuICAnc2Nyb2xsJyxcblxuICAnYWJvcnQnLFxuICAnbG9hZCcsXG4gICdsb2FkZWRkYXRhJyxcbiAgJ2xvYWRlZG1ldGFkYXRhJyxcbiAgJ2xvYWRzdGFydCcsXG4gICd1bmxvYWQnLFxuXG4gICdlcnJvcicsXG5dIGFzIGNvbnN0O1xuXG5leHBvcnQgY29uc3Qgd2Vic29ja2V0RXZlbnRzID0gWydjbG9zZScsICdlcnJvcicsICdtZXNzYWdlJywgJ29wZW4nXSBhcyBjb25zdDtcblxuLyoqXG4gKiBCYXNpYyBYSFIgRXZlbnRzXG4gKiBbTG9hZF0oaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9XZWIvQVBJL1hNTEh0dHBSZXF1ZXN0L2xvYWRfZXZlbnQpXG4gKiBbRXJyb3JdKGh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvV2ViL0FQSS9YTUxIdHRwUmVxdWVzdC9lcnJvcl9ldmVudClcbiAqIFRoZXJlIGFyZSBtb3JlIGV2ZW50cyB5b3UgbWF5IHdhbnQgdG8gdW5wYXRjaCBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL1dlYi9BUEkvWE1MSHR0cFJlcXVlc3RcbiAqL1xuLy8gWEhSRXZlbnQgKGdyb3VwIGlzIGhlcmUgdG8gbWFrZSBpdCBlYXNpZXIgdG8gdGFyZ2V0IFhIUiBpbiBhbmd1bGFyIGFwcGxpY2F0aW9ucy4gSXQgY29udGFpbnMgcmVkdW5kYW50IGV2ZW50cyBlLmcuICdlcnJvcicpXG5leHBvcnQgY29uc3QgeGhyRXZlbnRzID0gWydsb2FkJywgJ2Vycm9yJ10gYXMgY29uc3Q7XG5cbi8vIEBUT0RPXG5leHBvcnQgY29uc3Qgd2luZG93RXZlbnRzID0gW1xuICAnY29tcGFzc25lZWRzY2FsaWJyYXRpb24nLFxuICAnZHVyYXRpb25jaGFuZ2UnLFxuICAnZW1wdGllZCcsXG4gICdlbmRlZCcsXG5cbiAgJ29yaWVudGF0aW9uY2hhbmdlJyxcblxuICAncmF0ZWNoYW5nZScsXG5cbiAgJ3NlZWtlZCcsXG4gICdzZWVraW5nJyxcbiAgJ3N0YWxsZWQnLFxuXG4gICdzdXNwZW5kJyxcbiAgJ3RpbWV1cGRhdGUnLFxuICAnd2FpdGluZycsXG5dIGFzIGNvbnN0O1xuXG4vKipcbiAqIEFsbCBFdmVudHMgY29tYmluZWRcbiAqL1xuZXhwb3J0IGNvbnN0IGFsbEV2ZW50cyA9IEFycmF5LmZyb20oXG4gIG5ldyBTZXQoW1xuICAgIC4uLmZvY3VzRXZlbnRzLFxuICAgIC4uLm1vdXNlRXZlbnRzLFxuICAgIC4uLndoZWVsRXZlbnRzLFxuICAgIC4uLmlucHV0RXZlbnRzLFxuICAgIC4uLmtleWJvYXJkRXZlbnRzLFxuICAgIC4uLmlucHV0RXZlbnRzLFxuICAgIC4uLnZyRXZlbnRzLFxuICAgIC4uLm1TR2VzdHVyZUV2ZW50cyxcbiAgICAuLi5wcmludEV2ZW50cyxcbiAgICAuLi5uZXR3b3JrRXZlbnRzLFxuICAgIC4uLmF1ZGlvRXZlbnRzLFxuICAgIC4uLmNvbXBvc2l0aW9uRXZlbnRzLFxuICAgIC4uLnRvdWNoRXZlbnRzLFxuICAgIC4uLmdsb2JhbEV2ZW50cyxcbiAgICAuLi53ZWJzb2NrZXRFdmVudHMsXG4gICAgLi4ueGhyRXZlbnRzLFxuICAgIC4uLndpbmRvd0V2ZW50cyxcbiAgXSlcbik7XG4iXX0=","import { xhrEvents } from './event-names';\nexport const convenienceMethods = (config) => ({\n unpatchXHR: () => {\n config.global.disable.XHR();\n config.events.disable.UNPATCHED_EVENTS([...xhrEvents]);\n },\n useUnpatchedPassiveScrollEvents: () => {\n config.events.disable.PASSIVE_EVENTS(['scroll']);\n config.events.disable.UNPATCHED_EVENTS(['scroll']);\n },\n});\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udmVuaWVuY2UtbWV0aG9kcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvY2RrL3pvbmUtY29uZmlndXJhdGlvbnMvc3JjL2xpYi9jb252ZW5pZW5jZS1tZXRob2RzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFNMUMsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsQ0FDaEMsTUFBaUMsRUFDRCxFQUFFLENBQUMsQ0FBQztJQUNwQyxVQUFVLEVBQUUsR0FBRyxFQUFFO1FBQ2YsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsR0FBRyxFQUFFLENBQUM7UUFDNUIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsZ0JBQWdCLENBQUMsQ0FBQyxHQUFHLFNBQVMsQ0FBQyxDQUFDLENBQUM7SUFDekQsQ0FBQztJQUNELCtCQUErQixFQUFFLEdBQUcsRUFBRTtRQUNwQyxNQUFNLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxjQUFjLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO1FBQ2pELE1BQU0sQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLGdCQUFnQixDQUFDLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0NBQ0YsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgeGhyRXZlbnRzIH0gZnJvbSAnLi9ldmVudC1uYW1lcyc7XG5pbXBvcnQge1xuICBSeFpvbmVDb25maWdDb25maWd1cmF0aW9uLFxuICBSeFpvbmVDb25maWdDb252ZW5pZW5jZU1ldGhvZHMsXG59IGZyb20gJy4vbW9kZWwvem9uZS1jb25maWcudHlwZXMnO1xuXG5leHBvcnQgY29uc3QgY29udmVuaWVuY2VNZXRob2RzID0gKFxuICBjb25maWc6IFJ4Wm9uZUNvbmZpZ0NvbmZpZ3VyYXRpb25cbik6IFJ4Wm9uZUNvbmZpZ0NvbnZlbmllbmNlTWV0aG9kcyA9PiAoe1xuICB1bnBhdGNoWEhSOiAoKSA9PiB7XG4gICAgY29uZmlnLmdsb2JhbC5kaXNhYmxlLlhIUigpO1xuICAgIGNvbmZpZy5ldmVudHMuZGlzYWJsZS5VTlBBVENIRURfRVZFTlRTKFsuLi54aHJFdmVudHNdKTtcbiAgfSxcbiAgdXNlVW5wYXRjaGVkUGFzc2l2ZVNjcm9sbEV2ZW50czogKCkgPT4ge1xuICAgIGNvbmZpZy5ldmVudHMuZGlzYWJsZS5QQVNTSVZFX0VWRU5UUyhbJ3Njcm9sbCddKTtcbiAgICBjb25maWcuZXZlbnRzLmRpc2FibGUuVU5QQVRDSEVEX0VWRU5UUyhbJ3Njcm9sbCddKTtcbiAgfSxcbn0pO1xuIl19","export const zoneGlobalDisableConfigurationsKeys = [\n 'EventEmitter',\n 'fs',\n 'node_timers',\n 'nextTick',\n 'crypto',\n 'defineProperty',\n 'registerElement',\n 'EventTargetLegacy',\n 'timers',\n 'requestAnimationFrame',\n 'blocking',\n 'EventTarget',\n 'FileReader',\n 'MutationObserver',\n 'IntersectionObserver',\n 'on_property',\n 'customElements',\n 'XHR',\n 'geolocation',\n 'canvas',\n 'ZoneAwarePromise',\n];\nexport const zoneGlobalEventsConfigurationsKeys = ['UNPATCHED_EVENTS', 'PASSIVE_EVENTS'];\nexport const zoneGlobalSettingsConfigurationsKeys = ['DISABLE_WRAPPING_UNCAUGHT_PROMISE_REJECTION'];\nexport const zoneRuntimeConfigurationsKeys = [\n 'ignoreConsoleErrorUncaughtError',\n];\nexport const zoneTestDisableConfigurationsKeys = ['jasmine', 'mocha', 'jest'];\nexport const zoneTestSettingsConfigurationsKeys = [\n 'fakeAsyncDisablePatchingClock',\n 'fakeAsyncAutoFakeAsyncWhenClockPatched',\n 'supportWaitUnResolvedChainedPromise',\n];\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlndXJhdGlvbnMudHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL2Nkay96b25lLWNvbmZpZ3VyYXRpb25zL3NyYy9saWIvbW9kZWwvY29uZmlndXJhdGlvbnMudHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBcWVBLE1BQU0sQ0FBQyxNQUFNLG1DQUFtQyxHQUM5QztJQUNFLGNBQWM7SUFDZCxJQUFJO0lBQ0osYUFBYTtJQUNiLFVBQVU7SUFDVixRQUFRO0lBQ1IsZ0JBQWdCO0lBQ2hCLGlCQUFpQjtJQUNqQixtQkFBbUI7SUFDbkIsUUFBUTtJQUNSLHVCQUF1QjtJQUN2QixVQUFVO0lBQ1YsYUFBYTtJQUNiLFlBQVk7SUFDWixrQkFBa0I7SUFDbEIsc0JBQXNCO0lBQ3RCLGFBQWE7SUFDYixnQkFBZ0I7SUFDaEIsS0FBSztJQUNMLGFBQWE7SUFDYixRQUFRO0lBQ1Isa0JBQWtCO0NBQ25CLENBQUM7QUFvQ0osTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQzdDLENBQUMsa0JBQWtCLEVBQUUsZ0JBQWdCLENBQUMsQ0FBQztBQWlCekMsTUFBTSxDQUFDLE1BQU0sb0NBQW9DLEdBQy9DLENBQUMsNkNBQTZDLENBQUMsQ0FBQztBQU9sRCxNQUFNLENBQUMsTUFBTSw2QkFBNkIsR0FBcUM7SUFDN0UsaUNBQWlDO0NBQ2xDLENBQUM7QUEwREYsTUFBTSxDQUFDLE1BQU0saUNBQWlDLEdBQzVDLENBQUMsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUMsQ0FBQztBQXVIL0IsTUFBTSxDQUFDLE1BQU0sa0NBQWtDLEdBQzdDO0lBQ0UsK0JBQStCO0lBQy9CLHdDQUF3QztJQUN4QyxxQ0FBcUM7Q0FDdEMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIHByZWZpeDogX19ab25lX2Rpc2FibGVfXG5leHBvcnQgaW50ZXJmYWNlIFJ4Wm9uZUdsb2JhbERpc2FibGVDb25maWd1cmF0aW9ucyB7XG4gIC8qKlxuICAgKiBEaXNhYmxlIHRoZSBtb25rZXkgcGF0Y2ggb2YgdGhlIGBOb2RlLmpzYCBgRXZlbnRFbWl0dGVyYCBBUEkuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIGB6b25lLmpzYCBtb25rZXkgcGF0Y2hlcyB0aGUgYE5vZGUuanNgIGBFdmVudEVtaXR0ZXJgIEFQSXMgdG8gbWFrZSBhc3luY2hyb25vdXNcbiAgICogY2FsbGJhY2tzIG9mIHRob3NlIEFQSXMgaW4gdGhlIHNhbWUgem9uZSB3aGVuIHNjaGVkdWxlZC5cbiAgICpcbiAgICogQ29uc2lkZXIgdGhlIGZvbGxvd2luZyBleGFtcGxlOlxuICAgKlxuICAgKiBgYGBcbiAgICogY29uc3QgRXZlbnRFbWl0dGVyID0gcmVxdWlyZSgnZXZlbnRzJyk7XG4gICAqIGNsYXNzIE15RW1pdHRlciBleHRlbmRzIEV2ZW50RW1pdHRlciB7fVxuICAgKiBjb25zdCBteUVtaXR0ZXIgPSBuZXcgTXlFbWl0dGVyKCk7XG4gICAqXG4gICAqIGNvbnN0IHpvbmUgPSBab25lLmN1cnJlbnQuZm9yayh7bmFtZTogJ215Wm9uZSd9KTtcbiAgICogem9uZS5ydW4oKCkgPT4ge1xuICAgKiAgIG15RW1pdHRlci5vbignZXZlbnQnLCAoKSA9PiB7XG4gICAqICAgICBjb25zb2xlLmxvZygnYW4gZXZlbnQgb2NjdXJzIGluIHRoZSB6b25lJywgWm9uZS5jdXJyZW50Lm5hbWUpO1xuICAgKiAgICAgLy8gdGhlIGNhbGxiYWNrIHJ1bnMgaW4gdGhlIHpvbmUgd2hlbiBpdCBpcyBzY2hlZHVsZWQsXG4gICAqICAgICAvLyBzbyB0aGUgb3V0cHV0IGlzICdhbiBldmVudCBvY2N1cnMgaW4gdGhlIHpvbmUgbXlab25lJy5cbiAgICogICB9KTtcbiAgICogfSk7XG4gICAqIG15RW1pdHRlci5lbWl0KCdldmVudCcpO1xuICAgKiBgYGBcbiAgICpcbiAgICogSWYgeW91IHNldCBgX19ab25lX2Rpc2FibGVfRXZlbnRFbWl0dGVyID0gdHJ1ZWAgYmVmb3JlIGltcG9ydGluZyBgem9uZS5qc2AsXG4gICAqIGB6b25lLmpzYCBkb2VzIG5vdCBtb25rZXkgcGF0Y2ggdGhlIGBFdmVudEVtaXR0ZXJgIEFQSXMgYW5kIHRoZSBhYm92ZSBjb2RlXG4gICAqIG91dHB1dHMgJ2FuIGV2ZW50IG9jY3VycmVkIDxyb290PicuXG4gICAqL1xuICBFdmVudEVtaXR0ZXI/OiBib29sZWFuO1xuICAvKipcbiAgICogRGlzYWJsZSB0aGUgbW9ua2V5IHBhdGNoIG9mIHRoZSBgTm9kZS5qc2AgYGZzYCBBUEkuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIGB6b25lLmpzYCBtb25rZXkgcGF0Y2hlcyBgTm9kZS5qc2AgYGZzYCBBUElzIHRvIG1ha2UgYXN5bmNocm9ub3VzIGNhbGxiYWNrcyBvZlxuICAgKiB0aG9zZSBBUElzIGluIHRoZSBzYW1lIHpvbmUgd2hlbiBzY2hlZHVsZWQuXG4gICAqXG4gICAqIENvbnNpZGVyIHRoZSBmb2xsb3dpbmcgZXhhbXBsZTpcbiAgICpcbiAgICogYGBgXG4gICAqIGNvbnN0IGZzID0gcmVxdWlyZSgnZnMnKTtcbiAgICpcbiAgICogY29uc3Qgem9uZSA9IFpvbmUuY3VycmVudC5mb3JrKHtuYW1lOiAnbXlab25lJ30pO1xuICAgKiB6b25lLnJ1bigoKSA9PiB7XG4gICAqICAgZnMuc3RhdCgnL3RtcC93b3JsZCcsIChlcnIsIHN0YXRzKSA9PiB7XG4gICAqICAgICBjb25zb2xlLmxvZygnZnMuc3RhdHMoKSBjYWxsYmFjayBpcyBpbnZva2VkIGluIHRoZSB6b25lJywgWm9uZS5jdXJyZW50Lm5hbWUpO1xuICAgKiAgICAgLy8gc2luY2UgdGhlIGNhbGxiYWNrIG9mIHRoZSBgZnMuc3RhdCgpYCBydW5zIGluIHRoZSBzYW1lIHpvbmVcbiAgICogICAgIC8vIHdoZW4gaXQgaXMgY2FsbGVkLCBzbyB0aGUgb3V0cHV0IGlzICdmcy5zdGF0cygpIGNhbGxiYWNrIGlzIGludm9rZWQgaW4gdGhlIHpvbmUgbXlab25lJy5cbiAgICogICB9KTtcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBJZiB5b3Ugc2V0IGBfX1pvbmVfZGlzYWJsZV9mcyA9IHRydWVgIGJlZm9yZSBpbXBvcnRpbmcgYHpvbmUuanNgLFxuICAgKiBgem9uZS5qc2AgZG9lcyBub3QgbW9ua2V5IHBhdGNoIHRoZSBgZnNgIEFQSSBhbmQgdGhlIGFib3ZlIGNvZGVcbiAgICogb3V0cHV0cyAnZ2V0IHN0YXRzIG9jY3VycmVkIDxyb290PicuXG4gICAqL1xuICBmcz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBEaXNhYmxlIHRoZSBtb25rZXkgcGF0Y2ggb2YgdGhlIGBOb2RlLmpzYCBgdGltZXJgIEFQSS5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgYHpvbmUuanNgIG1vbmtleSBwYXRjaGVzIHRoZSBgTm9kZS5qc2AgYHRpbWVyYCBBUElzIHRvIG1ha2UgYXN5bmNocm9ub3VzXG4gICAqIGNhbGxiYWNrcyBvZiB0aG9zZSBBUElzIGluIHRoZSBzYW1lIHpvbmUgd2hlbiBzY2hlZHVsZWQuXG4gICAqXG4gICAqIENvbnNpZGVyIHRoZSBmb2xsb3dpbmcgZXhhbXBsZTpcbiAgICpcbiAgICogYGBgXG4gICAqIGNvbnN0IHpvbmUgPSBab25lLmN1cnJlbnQuZm9yayh7bmFtZTogJ215Wm9uZSd9KTtcbiAgICogem9uZS5ydW4oKCkgPT4ge1xuICAgKiAgIHNldFRpbWVvdXQoKCkgPT4ge1xuICAgKiAgICAgY29uc29sZS5sb2coJ3NldFRpbWVvdXQoKSBjYWxsYmFjayBpcyBpbnZva2VkIGluIHRoZSB6b25lJywgWm9uZS5jdXJyZW50Lm5hbWUpO1xuICAgKiAgICAgLy8gc2luY2UgdGhlIGNhbGxiYWNrIG9mIGBzZXRUaW1lb3V0KClgIHJ1bnMgaW4gdGhlIHNhbWUgem9uZVxuICAgKiAgICAgLy8gd2hlbiBpdCBpcyBzY2hlZHVsZWQsIHNvIHRoZSBvdXRwdXQgaXMgJ3NldFRpbWVvdXQoKSBjYWxsYmFjayBpcyBpbnZva2VkIGluIHRoZSB6b25lXG4gICAqICAgICAvLyBteVpvbmUnLlxuICAgKiAgIH0pO1xuICAgKiB9KTtcbiAgICogYGBgXG4gICAqXG4gICAqIElmIHlvdSBzZXQgYF9fWm9uZV9kaXNhYmxlX3RpbWVycyA9IHRydWVgIGJlZm9yZSBpbXBvcnRpbmcgYHpvbmUuanNgLFxuICAgKiBgem9uZS5qc2AgZG9lcyBub3QgbW9ua2V5IHBhdGNoIHRoZSBgdGltZXJgIEFQSXMgYW5kIHRoZSBhYm92ZSBjb2RlXG4gICAqIG91dHB1dHMgJ3RpbWVvdXQgPHJvb3Q+Jy5cbiAgICovXG4gIG5vZGVfdGltZXJzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIERpc2FibGUgdGhlIG1vbmtleSBwYXRjaCBvZiB0aGUgYE5vZGUuanNgIGBwcm9jZXNzLm5leHRUaWNrKClgIEFQSS5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgYHpvbmUuanNgIG1vbmtleSBwYXRjaGVzIHRoZSBgTm9kZS5qc2AgYHByb2Nlc3MubmV4dFRpY2soKWAgQVBJIHRvIG1ha2UgdGhlXG4gICAqIGNhbGxiYWNrIGluIHRoZSBzYW1lIHpvbmUgd2hlbiBjYWxsaW5nIGBwcm9jZXNzLm5leHRUaWNrKClgLlxuICAgKlxuICAgKiBDb25zaWRlciB0aGUgZm9sbG93aW5nIGV4YW1wbGU6XG4gICAqXG4gICAqIGBgYFxuICAgKiBjb25zdCB6b25lID0gWm9uZS5jdXJyZW50LmZvcmsoe25hbWU6ICdteVpvbmUnfSk7XG4gICAqIHpvbmUucnVuKCgpID0+IHtcbiAgICogICBwcm9jZXNzLm5leHRUaWNrKCgpID0+IHtcbiAgICogICAgIGNvbnNvbGUubG9nKCdwcm9jZXNzLm5leHRUaWNrKCkgY2FsbGJhY2sgaXMgaW52b2tlZCBpbiB0aGUgem9uZScsIFpvbmUuY3VycmVudC5uYW1lKTtcbiAgICogICAgIC8vIHNpbmNlIHRoZSBjYWxsYmFjayBvZiBgcHJvY2Vzcy5uZXh0VGljaygpYCBydW5zIGluIHRoZSBzYW1lIHpvbmVcbiAgICogICAgIC8vIHdoZW4gaXQgaXMgc2NoZWR1bGVkLCBzbyB0aGUgb3V0cHV0IGlzICdwcm9jZXNzLm5leHRUaWNrKCkgY2FsbGJhY2sgaXMgaW52b2tlZCBpbiB0aGVcbiAgICogICAgIC8vIHpvbmUgbXlab25lJy5cbiAgICogICB9KTtcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBJZiB5b3Ugc2V0IGBfX1pvbmVfZGlzYWJsZV9uZXh0VGljayA9IHRydWVgIGJlZm9yZSBpbXBvcnRpbmcgYHpvbmUuanNgLFxuICAgKiBgem9uZS5qc2AgZG9lcyBub3QgbW9ua2V5IHBhdGNoIHRoZSBgcHJvY2Vzcy5uZXh0VGljaygpYCBBUEkgYW5kIHRoZSBhYm92ZSBjb2RlXG4gICAqIG91dHB1dHMgJ25leHRUaWNrIDxyb290PicuXG4gICAqL1xuICBuZXh0VGljaz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBEaXNhYmxlIHRoZSBtb25rZXkgcGF0Y2ggb2YgdGhlIGBOb2RlLmpzYCBgY3J5cHRvYCBBUEkuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIGB6b25lLmpzYCBtb25rZXkgcGF0Y2hlcyB0aGUgYE5vZGUuanNgIGBjcnlwdG9gIEFQSXMgdG8gbWFrZSBhc3luY2hyb25vdXMgY2FsbGJhY2tzXG4gICAqIG9mIHRob3NlIEFQSXMgaW4gdGhlIHNhbWUgem9uZSB3aGVuIGNhbGxlZC5cbiAgICpcbiAgICogQ29uc2lkZXIgdGhlIGZvbGxvd2luZyBleGFtcGxlOlxuICAgKlxuICAgKiBgYGBcbiAgICogY29uc3QgY3J5cHRvID0gcmVxdWlyZSgnY3J5cHRvJyk7XG4gICAqXG4gICAqIGNvbnN0IHpvbmUgPSBab25lLmN1cnJlbnQuZm9yayh7bmFtZTogJ215Wm9uZSd9KTtcbiAgICogem9uZS5ydW4oKCkgPT4ge1xuICAgKiAgIGNyeXB0by5yYW5kb21CeXRlcygoKSA9PiB7XG4gICAqICAgICBjb25zb2xlLmxvZygnY3J5cHRvLnJhbmRvbUJ5dGVzKCkgY2FsbGJhY2sgaXMgaW52b2tlZCBpbiB0aGUgem9uZScsIFpvbmUuY3VycmVudC5uYW1lKTtcbiAgICogICAgIC8vIHNpbmNlIHRoZSBjYWxsYmFjayBvZiBgY3J5cHRvLnJhbmRvbUJ5dGVzKClgIHJ1bnMgaW4gdGhlIHNhbWUgem9uZVxuICAgKiAgICAgLy8gd2hlbiBpdCBpcyBjYWxsZWQsIHNvIHRoZSBvdXRwdXQgaXMgJ2NyeXB0by5yYW5kb21CeXRlcygpIGNhbGxiYWNrIGlzIGludm9rZWQgaW4gdGhlXG4gICAqICAgICAvLyB6b25lIG15Wm9uZScuXG4gICAqICAgfSk7XG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICpcbiAgICogSWYgeW91IHNldCBgX19ab25lX2Rpc2FibGVfY3J5cHRvID0gdHJ1ZWAgYmVmb3JlIGltcG9ydGluZyBgem9uZS5qc2AsXG4gICAqIGB6b25lLmpzYCBkb2VzIG5vdCBtb25rZXkgcGF0Y2ggdGhlIGBjcnlwdG9gIEFQSSBhbmQgdGhlIGFib3ZlIGNvZGVcbiAgICogb3V0cHV0cyAnY3J5cHRvIDxyb290PicuXG4gICAqL1xuICBjcnlwdG8/OiBib29sZWFuO1xuICAvKipcbiAgICogRGlzYWJsZSB0aGUgbW9ua2V5IHBhdGNoIG9mIHRoZSBgT2JqZWN0LmRlZmluZVByb3BlcnR5KClgIEFQSS5cbiAgICpcbiAgICogTm90ZTogVGhpcyBjb25maWd1cmF0aW9uIGlzIGF2YWlsYWJsZSBvbmx5IGluIHRoZSBsZWdhY3kgYnVuZGxlIChkaXN0L3pvbmUuanMpLiBUaGlzIG1vZHVsZSBpc1xuICAgKiBub3QgYXZhaWxhYmxlIGluIHRoZSBldmVyZ3JlZW4gYnVuZGxlICh6b25lLWV2ZXJncmVlbi5qcykuXG4gICAqXG4gICAqIEluIHRoZSBsZWdhY3kgYnJvd3NlciwgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgYHpvbmUuanNgIGlzIHRvIG1vbmtleSBwYXRjaFxuICAgKiBgT2JqZWN0LmRlZmluZVByb3BlcnR5KClgIGFuZCBgT2JqZWN0LmNyZWF0ZSgpYCB0byB0cnkgdG8gZW5zdXJlIFByb3BlcnR5RGVzY3JpcHRvciBwYXJhbWV0ZXInc1xuICAgKiBjb25maWd1cmFibGUgcHJvcGVydHkgdG8gYmUgdHJ1ZS4gVGhpcyBwYXRjaCBpcyBvbmx5IG5lZWRlZCBpbiBzb21lIG9sZCBtb2JpbGUgYnJvd3NlcnMuXG4gICAqXG4gICAqIElmIHlvdSBzZXQgYF9fWm9uZV9kaXNhYmxlX2RlZmluZVByb3BlcnR5ID0gdHJ1ZWAgYmVmb3JlIGltcG9ydGluZyBgem9uZS5qc2AsXG4gICAqIGB6b25lLmpzYCBkb2VzIG5vdCBtb25rZXkgcGF0Y2ggdGhlIGBPYmplY3QuZGVmaW5lUHJvcGVydHkoKWAgQVBJIGFuZCBkb2VzIG5vdFxuICAgKiBtb2RpZnkgZGVzYy5jb25maWd1cmFibGUgdG8gdHJ1ZS5cbiAgICpcbiAgICovXG4gIGRlZmluZVByb3BlcnR5PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIERpc2FibGUgdGhlIG1vbmtleSBwYXRjaCBvZiB0aGUgYnJvd3NlciBgcmVnaXN0ZXJFbGVtZW50KClgIEFQSS5cbiAgICpcbiAgICogTk9URTogVGhpcyBjb25maWd1cmF0aW9uIGlzIG9ubHkgYXZhaWxhYmxlIGluIHRoZSBsZWdhY3kgYnVuZGxlIChkaXN0L3pvbmUuanMpLCB0aGlzXG4gICAqIG1vZHVsZSBpcyBub3QgYXZhaWxhYmxlIGluIHRoZSBldmVyZ3JlZW4gYnVuZGxlICh6b25lLWV2ZXJncmVlbi5qcykuXG4gICAqXG4gICAqIEluIHRoZSBsZWdhY3kgYnJvd3NlciwgdGhlIGRlZmF1bHQgYmVoYXZpb3Igb2YgYHpvbmUuanNgIGlzIHRvIG1vbmtleSBwYXRjaCB0aGVcbiAgICogYHJlZ2lzdGVyRWxlbWVudCgpYCBBUEkgdG8gbWFrZSBhc3luY2hyb25vdXMgY2FsbGJhY2tzIG9mIHRoZSBBUEkgaW4gdGhlIHNhbWUgem9uZSB3aGVuXG4gICAqIGByZWdpc3RlckVsZW1lbnQoKWAgaXMgY2FsbGVkLlxuICAgKlxuICAgKiBDb25zaWRlciB0aGUgZm9sbG93aW5nIGV4YW1wbGU6XG4gICAqXG4gICAqIGBgYFxuICAgKiBjb25zdCBwcm90byA9IE9iamVjdC5jcmVhdGUoSFRNTEVsZW1lbnQucHJvdG90eXBlKTtcbiAgICogcHJvdG8uY3JlYXRlZENhbGxiYWNrID0gZnVuY3Rpb24oKSB7XG4gICAqICAgY29uc29sZS5sb2coJ2NyZWF0ZWRDYWxsYmFjayBpcyBpbnZva2VkIGluIHRoZSB6b25lJywgWm9uZS5jdXJyZW50Lm5hbWUpO1xuICAgKiB9O1xuICAgKiBwcm90by5hdHRhY2hlZENhbGxiYWNrID0gZnVuY3Rpb24oKSB7XG4gICAqICAgY29uc29sZS5sb2coJ2F0dGFjaGVkQ2FsbGJhY2sgaXMgaW52b2tlZCBpbiB0aGUgem9uZScsIFpvbmUuY3VycmVudC5uYW1lKTtcbiAgICogfTtcbiAgICogcHJvdG8uZGV0YWNoZWRDYWxsYmFjayA9IGZ1bmN0aW9uKCkge1xuICAgKiAgIGNvbnNvbGUubG9nKCdkZXRhY2hlZENhbGxiYWNrIGlzIGludm9rZWQgaW4gdGhlIHpvbmUnLCBab25lLmN1cnJlbnQubmFtZSk7XG4gICAqIH07XG4gICAqIHByb3RvLmF0dHJpYnV0ZUNoYW5nZWRDYWxsYmFjayA9IGZ1bmN0aW9uKCkge1xuICAgKiAgIGNvbnNvbGUubG9nKCdhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2sgaXMgaW52b2tlZCBpbiB0aGUgem9uZScsIFpvbmUuY3VycmVudC5uYW1lKTtcbiAgICogfTtcbiAgICpcbiAgICogY29uc3Qgem9uZSA9IFpvbmUuY3VycmVudC5mb3JrKHtuYW1lOiAnbXlab25lJ30pO1xuICAgKiB6b25lLnJ1bigoKSA9PiB7XG4gICAqICAgZG9jdW1lbnQucmVnaXN0ZXJFbGVtZW50KCd4LWVsZW0nLCB7cHJvdG90eXBlOiBwcm90b30pO1xuICAgKiB9KTtcbiAgICogYGBgXG4gICAqXG4gICAqIFdoZW4gdGhlc2UgY2FsbGJhY2tzIGFyZSBpbnZva2VkLCB0aG9zZSBjYWxsYmFja3Mgd2lsbCBiZSBpbiB0aGUgem9uZSB3aGVuXG4gICAqIGByZWdpc3RlckVsZW1lbnQoKWAgaXMgY2FsbGVkLlxuICAgKlxuICAgKiBJZiB5b3Ugc2V0IGBfX1pvbmVfZGlzYWJsZV9yZWdpc3RlckVsZW1lbnQgPSB0cnVlYCBiZWZvcmUgaW1wb3J0aW5nIGB6b25lLmpzYCxcbiAgICogYHpvbmUuanNgIGRvZXMgbm90IG1vbmtleSBwYXRjaCBgcmVnaXN0ZXJFbGVtZW50KClgIEFQSSBhbmQgdGhlIGFib3ZlIGNvZGVcbiAgICogb3V0cHV0cyAnPHJvb3Q+Jy5cbiAgICovXG4gIHJlZ2lzdGVyRWxlbWVudD86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBEaXNhYmxlIHRoZSBtb25rZXkgcGF0Y2ggb2YgdGhlIGJyb3dzZXIgbGVnYWN5IGBFdmVudFRhcmdldGAgQVBJLlxuICAgKlxuICAgKiBOT1RFOiBUaGlzIGNvbmZpZ3VyYXRpb24gaXMgb25seSBhdmFpbGFibGUgaW4gdGhlIGxlZ2FjeSBidW5kbGUgKGRpc3Qvem9uZS5qcyksIHRoaXMgbW9kdWxlXG4gICAqIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhlIGV2ZXJncmVlbiBidW5kbGUgKHpvbmUtZXZlcmdyZWVuLmpzKS5cbiAgICpcbiAgICogSW4gc29tZSBvbGQgYnJvd3NlcnMsIHRoZSBgRXZlbnRUYXJnZXRgIGlzIG5vdCBhdmFpbGFibGUsIHNvIGB6b25lLmpzYCBjYW5ub3QgZGlyZWN0bHkgbW9ua2V5XG4gICAqIHBhdGNoIHRoZSBgRXZlbnRUYXJnZXRgLiBJbnN0ZWFkLCBgem9uZS5qc2AgcGF0Y2hlcyBhbGwga25vd24gSFRNTCBlbGVtZW50cycgcHJvdG90eXBlcyAoc3VjaFxuICAgKiBhcyBgSHRtbERpdkVsZW1lbnRgKS4gVGhlIGNhbGxiYWNrIG9mIHRoZSBgYWRkRXZlbnRMaXN0ZW5lcigpYCB3aWxsIGJlIGluIHRoZSBzYW1lIHpvbmUgd2hlblxuICAgKiB0aGUgYGFkZEV2ZW50TGlzdGVuZXIoKWAgaXMgY2FsbGVkLlxuICAgKlxuICAgKiBDb25zaWRlciB0aGUgZm9sbG93aW5nIGV4YW1wbGU6XG4gICAqXG4gICAqIGBgYFxuICAgKiBjb25zdCB6b25lID0gWm9uZS5jdXJyZW50LmZvcmsoe25hbWU6ICdteVpvbmUnfSk7XG4gICAqIHpvbmUucnVuKCgpID0+IHtcbiAgICogICBkaXYuYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCAoKSA9PiB7XG4gICAqICAgICBjb25zb2xlLmxvZygnZGl2IGNsaWNrIGV2ZW50IGxpc3RlbmVyIGlzIGludm9rZWQgaW4gdGhlIHpvbmUnLCBab25lLmN1cnJlbnQubmFtZSk7XG4gICAqICAgICAvLyB0aGUgb3V0cHV0IGlzICdkaXYgY2xpY2sgZXZlbnQgbGlzdGVuZXIgaXMgaW52b2tlZCBpbiB0aGUgem9uZSBteVpvbmUnLlxuICAgKiAgIH0pO1xuICAgKiB9KTtcbiAgICogYGBgXG4gICAqXG4gICAqIElmIHlvdSBzZXQgYF9fWm9uZV9kaXNhYmxlX0V2ZW50VGFyZ2V0TGVnYWN5ID0gdHJ1ZWAgYmVmb3JlIGltcG9ydGluZyBgem9uZS5qc2BcbiAgICogSW4gc29tZSBvbGQgYnJvd3NlcnMsIHdoZXJlIGBFdmVudFRhcmdldGAgaXMgbm90IGF2YWlsYWJsZSwgaWYgeW91IHNldFxuICAgKiBgX19ab25lX2Rpc2FibGVfRXZlbnRUYXJnZXRMZWdhY3kgPSB0cnVlYCBiZWZvcmUgaW1wb3J0aW5nIGB6b25lLmpzYCwgYHpvbmUuanNgIGRvZXMgbm90IG1vbmtleVxuICAgKiBwYXRjaCBhbGwgSFRNTCBlbGVtZW50IEFQSXMgYW5kIHRoZSBhYm92ZSBjb2RlIG91dHB1dHMgJ2NsaWNrZWQgPHJvb3Q+Jy5cbiAgICovXG4gIEV2ZW50VGFyZ2V0TGVnYWN5PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIERpc2FibGUgdGhlIG1vbmtleSBwYXRjaCBvZiB0aGUgYnJvd3NlciBgdGltZXJgIEFQSXMuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIGB6b25lLmpzYCBtb25rZXkgcGF0Y2hlcyBicm93c2VyIHRpbWVyXG4gICAqIEFQSXMgKGBzZXRUaW1lb3V0KClgL2BzZXRJbnRlcnZhbCgpYC9gc2V0SW1tZWRpYXRlKClgKSB0byBtYWtlIGFzeW5jaHJvbm91cyBjYWxsYmFja3Mgb2YgdGhvc2VcbiAgICogQVBJcyBpbiB0aGUgc2FtZSB6b25lIHdoZW4gc2NoZWR1bGVkLlxuICAgKlxuICAgKiBDb25zaWRlciB0aGUgZm9sbG93aW5nIGV4YW1wbGU6XG4gICAqXG4gICAqIGBgYFxuICAgKiBjb25zdCB6b25lID0gWm9uZS5jdXJyZW50LmZvcmsoe25hbWU6ICdteVpvbmUnfSk7XG4gICAqIHpvbmUucnVuKCgpID0+IHtcbiAgICogICBzZXRUaW1lb3V0KCgpID0+IHtcbiAgICogICAgIGNvbnNvbGUubG9nKCdzZXRUaW1lb3V0KCkgY2FsbGJhY2sgaXMgaW52b2tlZCBpbiB0aGUgem9uZScsIFpvbmUuY3VycmVudC5uYW1lKTtcbiAgICogICAgIC8vIHNpbmNlIHRoZSBjYWxsYmFjayBvZiBgc2V0VGltZW91dCgpYCBydW5zIGluIHRoZSBzYW1lIHpvbmVcbiAgICogICAgIC8vIHdoZW4gaXQgaXMgc2NoZWR1bGVkLCBzbyB0aGUgb3V0cHV0IGlzICdzZXRUaW1lb3V0KCkgY2FsbGJhY2sgaXMgaW52b2tlZCBpbiB0aGUgem9uZVxuICAgKiAgICAgLy8gbXlab25lJy5cbiAgICogICB9KTtcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBJZiB5b3Ugc2V0IGBfX1pvbmVfZGlzYWJsZV90aW1lcnMgPSB0cnVlYCBiZWZvcmUgaW1wb3J0aW5nIGB6b25lLmpzYCxcbiAgICogYHpvbmUuanNgIGRvZXMgbm90IG1vbmtleSBwYXRjaCBgdGltZXJgIEFQSSBhbmQgdGhlIGFib3ZlIGNvZGVcbiAgICogb3V0cHV0cyAndGltZW91dCA8cm9vdD4nLlxuICAgKlxuICAgKi9cbiAgdGltZXJzPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIERpc2FibGUgdGhlIG1vbmtleSBwYXRjaCBvZiB0aGUgYnJvd3NlciBgcmVxdWVzdEFuaW1hdGlvbkZyYW1lKClgIEFQSS5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgYHpvbmUuanNgIG1vbmtleSBwYXRjaGVzIHRoZSBicm93c2VyIGByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKWAgQVBJXG4gICAqIHRvIG1ha2UgdGhlIGFzeW5jaHJvbm91cyBjYWxsYmFjayBvZiB0aGUgYHJlcXVlc3RBbmltYXRpb25GcmFtZSgpYCBpbiB0aGUgc2FtZSB6b25lIHdoZW5cbiAgICogc2NoZWR1bGVkLlxuICAgKlxuICAgKiBDb25zaWRlciB0aGUgZm9sbG93aW5nIGV4YW1wbGU6XG4gICAqXG4gICAqIGBgYFxuICAgKiBjb25zdCB6b25lID0gWm9uZS5jdXJyZW50LmZvcmsoe25hbWU6ICdteVpvbmUnfSk7XG4gICAqIHpvbmUucnVuKCgpID0+IHtcbiAgICogICByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoKCkgPT4ge1xuICAgKiAgICAgY29uc29sZS5sb2coJ3JlcXVlc3RBbmltYXRpb25GcmFtZSgpIGNhbGxiYWNrIGlzIGludm9rZWQgaW4gdGhlIHpvbmUnLCBab25lLmN1cnJlbnQubmFtZSk7XG4gICAqICAgICAvLyBzaW5jZSB0aGUgY2FsbGJhY2sgb2YgYHJlcXVlc3RBbmltYXRpb25GcmFtZSgpYCB3aWxsIGJlIGluIHRoZSBzYW1lIHpvbmVcbiAgICogICAgIC8vIHdoZW4gaXQgaXMgc2NoZWR1bGVkLCBzbyB0aGUgb3V0cHV0IHdpbGwgYmUgJ3JlcXVlc3RBbmltYXRpb25GcmFtZSgpIGNhbGxiYWNrIGlzIGludm9rZWRcbiAgICogICAgIC8vIGluIHRoZSB6b25lIG15Wm9uZSdcbiAgICogICB9KTtcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBJZiB5b3Ugc2V0IGBfX1pvbmVfZGlzYWJsZV9yZXF1ZXN0QW5pbWF0aW9uRnJhbWUgPSB0cnVlYCBiZWZvcmUgaW1wb3J0aW5nIGB6b25lLmpzYCxcbiAgICogYHpvbmUuanNgIGRvZXMgbm90IG1vbmtleSBwYXRjaCB0aGUgYHJlcXVlc3RBbmltYXRpb25GcmFtZSgpYCBBUEkgYW5kIHRoZSBhYm92ZSBjb2RlXG4gICAqIG91dHB1dHMgJ3JhZiA8cm9vdD4nLlxuICAgKi9cbiAgcmVxdWVzdEFuaW1hdGlvbkZyYW1lPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqXG4gICAqIERpc2FibGUgdGhlIG1vbmtleSBwYXRjaCBvZiB0aGUgYnJvd3NlciBibG9ja2luZyBBUElzKGBhbGVydCgpYC9gcHJvbXB0KClgL2Bjb25maXJtKClgKS5cbiAgICovXG4gIGJsb2NraW5nPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIERpc2FibGUgdGhlIG1vbmtleSBwYXRjaCBvZiB0aGUgYnJvd3NlciBgRXZlbnRUYXJnZXRgIEFQSXMuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIGB6b25lLmpzYCBtb25rZXkgcGF0Y2hlcyBFdmVudFRhcmdldCBBUElzLiBUaGUgY2FsbGJhY2tzIG9mIHRoZVxuICAgKiBgYWRkRXZlbnRMaXN0ZW5lcigpYCBydW4gaW4gdGhlIHNhbWUgem9uZSB3aGVuIHRoZSBgYWRkRXZlbnRMaXN0ZW5lcigpYCBpcyBjYWxsZWQuXG4gICAqXG4gICAqIENvbnNpZGVyIHRoZSBmb2xsb3dpbmcgZXhhbXBsZTpcbiAgICpcbiAgICogYGBgXG4gICAqIGNvbnN0IHpvbmUgPSBab25lLmN1cnJlbnQuZm9yayh7bmFtZTogJ215Wm9uZSd9KTtcbiAgICogem9uZS5ydW4oKCkgPT4ge1xuICAgKiAgIGRpdi5hZGRFdmVudExpc3RlbmVyKCdjbGljaycsICgpID0+IHtcbiAgICogICAgIGNvbnNvbGUubG9nKCdkaXYgZXZlbnQgbGlzdGVuZXIgaXMgaW52b2tlZCBpbiB0aGUgem9uZScsIFpvbmUuY3VycmVudC5uYW1lKTtcbiAgICogICAgIC8vIHRoZSBvdXRwdXQgaXMgJ2RpdiBldmVudCBsaXN0ZW5lciBpcyBpbnZva2VkIGluIHRoZSB6b25lIG15Wm9uZScuXG4gICAqICAgfSk7XG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICpcbiAgICogSWYgeW91IHNldCBgX19ab25lX2Rpc2FibGVfRXZlbnRUYXJnZXQgPSB0cnVlYCBiZWZvcmUgaW1wb3J0aW5nIGB6b25lLmpzYCxcbiAgICogYHpvbmUuanNgIGRvZXMgbm90IG1vbmtleSBwYXRjaCBFdmVudFRhcmdldCBBUEkgYW5kIHRoZSBhYm92ZSBjb2RlXG4gICAqIG91dHB1dHMgJ2NsaWNrZWQgPHJvb3Q+Jy5cbiAgICpcbiAgICovXG4gIEV2ZW50VGFyZ2V0PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIERpc2FibGUgdGhlIG1vbmtleSBwYXRjaCBvZiB0aGUgYnJvd3NlciBgRmlsZVJlYWRlcmAgQVBJcy5cbiAgICovXG4gIEZpbGVSZWFkZXI/OiBib29sZWFuO1xuICAvKipcbiAgICogRGlzYWJsZSB0aGUgbW9ua2V5IHBhdGNoIG9mIHRoZSBicm93c2VyIGBNdXRhdGlvbk9ic2VydmVyYCBBUElzLlxuICAgKi9cbiAgTXV0YXRpb25PYnNlcnZlcj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBEaXNhYmxlIHRoZSBtb25rZXkgcGF0Y2ggb2YgdGhlIGJyb3dzZXIgYEludGVyc2VjdGlvbk9ic2VydmVyYCBBUElzLlxuICAgKi9cbiAgSW50ZXJzZWN0aW9uT2JzZXJ2ZXI/OiBib29sZWFuO1xuICAvKipcbiAgICogRGlzYWJsZSB0aGUgbW9ua2V5IHBhdGNoIG9mIHRoZSBicm93c2VyIG9uUHJvcGVydHkgQVBJcyhzdWNoIGFzIG9uY2xpY2spLlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCBgem9uZS5qc2AgbW9ua2V5IHBhdGNoZXMgb25YWFggcHJvcGVydGllcyAoc3VjaCBhcyBvbmNsaWNrKS4gVGhlIGNhbGxiYWNrcyBvZiBvblhYWFxuICAgKiBwcm9wZXJ0aWVzIHJ1biBpbiB0aGUgc2FtZSB6b25lIHdoZW4gdGhlIG9uWFhYIHByb3BlcnRpZXMgaXMgc2V0LlxuICAgKlxuICAgKiBDb25zaWRlciB0aGUgZm9sbG93aW5nIGV4YW1wbGU6XG4gICAqXG4gICAqIGBgYFxuICAgKiBjb25zdCB6b25lID0gWm9uZS5jdXJyZW50LmZvcmsoe25hbWU6ICdteVpvbmUnfSk7XG4gICAqIHpvbmUucnVuKCgpID0+IHtcbiAgICogICBkaXYub25jbGljayA9ICgpID0+IHtcbiAgICogICAgIGNvbnNvbGUubG9nKCdkaXYgY2xpY2sgZXZlbnQgbGlzdGVuZXIgaXMgaW52b2tlZCBpbiB0aGUgem9uZScsIFpvbmUuY3VycmVudC5uYW1lKTtcbiAgICogICAgIC8vIHRoZSBvdXRwdXQgd2lsbCBiZSAnZGl2IGNsaWNrIGV2ZW50IGxpc3RlbmVyIGlzIGludm9rZWQgaW4gdGhlIHpvbmUgbXlab25lJ1xuICAgKiAgIH1cbiAgICogfSk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBJZiB5b3Ugc2V0IGBfX1pvbmVfZGlzYWJsZV9vbl9wcm9wZXJ0eSA9IHRydWVgIGJlZm9yZSBpbXBvcnRpbmcgYHpvbmUuanNgLFxuICAgKiBgem9uZS5qc2AgZG9lcyBub3QgbW9ua2V5IHBhdGNoIG9uWFhYIHByb3BlcnRpZXMgYW5kIHRoZSBhYm92ZSBjb2RlXG4gICAqIG91dHB1dHMgJ2NsaWNrZWQgPHJvb3Q+Jy5cbiAgICpcbiAgICovXG4gIG9uX3Byb3BlcnR5PzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIERpc2FibGUgdGhlIG1vbmtleSBwYXRjaCBvZiB0aGUgYnJvd3NlciBgY3VzdG9tRWxlbWVudHNgIEFQSXMuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIGB6b25lLmpzYCBtb25rZXkgcGF0Y2hlcyBgY3VzdG9tRWxlbWVudHNgIEFQSXMgdG8gbWFrZSBjYWxsYmFja3MgcnVuIGluIHRoZVxuICAgKiBzYW1lIHpvbmUgd2hlbiB0aGUgYGN1c3RvbUVsZW1lbnRzLmRlZmluZSgpYCBpcyBjYWxsZWQuXG4gICAqXG4gICAqIENvbnNpZGVyIHRoZSBmb2xsb3dpbmcgZXhhbXBsZTpcbiAgICpcbiAgICogYGBgXG4gICAqIGNsYXNzIFRlc3RDdXN0b21FbGVtZW50IGV4dGVuZHMgSFRNTEVsZW1lbnQge1xuICAgKiAgIGNvbnN0cnVjdG9yKCkgeyBzdXBlcigpOyB9XG4gICAqICAgY29ubmVjdGVkQ2FsbGJhY2soKSB7fVxuICAgKiAgIGRpc2Nvbm5lY3RlZENhbGxiYWNrKCkge31cbiAgICogICBhdHRyaWJ1dGVDaGFuZ2VkQ2FsbGJhY2soYXR0ck5hbWUsIG9sZFZhbCwgbmV3VmFsKSB7fVxuICAgKiAgIGFkb3B0ZWRDYWxsYmFjaygpIHt9XG4gICAqIH1cbiAgICpcbiAgICogY29uc3Qgem9uZSA9IFpvbmUuZm9yayh7bmFtZTogJ215Wm9uZSd9KTtcbiAgICogem9uZS5ydW4oKCkgPT4ge1xuICAgKiAgIGN1c3RvbUVsZW1lbnRzLmRlZmluZSgneC1lbGVtJywgVGVzdEN1c3RvbUVsZW1lbnQpO1xuICAgKiB9KTtcbiAgICogYGBgXG4gICAqXG4gICAqIEFsbCB0aG9zZSBjYWxsYmFja3MgZGVmaW5lZCBpbiBUZXN0Q3VzdG9tRWxlbWVudCBydW5zIGluIHRoZSB6b25lIHdoZW5cbiAgICogdGhlIGBjdXN0b21FbGVtZW50cy5kZWZpbmUoKWAgaXMgY2FsbGVkLlxuICAgKlxuICAgKiBJZiB5b3Ugc2V0IGBfX1pvbmVfZGlzYWJsZV9jdXN0b21FbGVtZW50cyA9IHRydWVgIGJlZm9yZSBpbXBvcnRpbmcgYHpvbmUuanNgLFxuICAgKiBgem9uZS5qc2AgZG9lcyBub3QgbW9ua2V5IHBhdGNoIGBjdXN0b21FbGVtZW50c2AgQVBJcyBhbmQgdGhlIGFib3ZlIGNvZGVcbiAgICogcnVucyBpbnNpZGUgPHJvb3Q+IHpvbmUuXG4gICAqL1xuICBjdXN0b21FbGVtZW50cz86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBEaXNhYmxlIHRoZSBtb25rZXkgcGF0Y2ggb2YgdGhlIGJyb3dzZXIgYFhNTEh0dHBSZXF1ZXN0YCBBUElzLlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCBgem9uZS5qc2AgbW9ua2V5IHBhdGNoZXMgYFhNTEh0dHBSZXF1ZXN0YCBBUElzIHRvIG1ha2UgWE1MSHR0cFJlcXVlc3QgYWN0XG4gICAqIGFzIG1hY3JvVGFzay5cbiAgICpcbiAgICogQ29uc2lkZXIgdGhlIGZvbGxvd2luZyBleGFtcGxlOlxuICAgKlxuICAgKiBgYGBcbiAgICogY29uc3Qgem9uZSA9IFpvbmUuY3VycmVudC5mb3JrKHtcbiAgICogICBuYW1lOiAnbXlab25lJyxcbiAgICogICBvblNjaGVkdWxlVGFzazogKGRlbGVnYXRlLCBjdXJyLCB0YXJnZXQsIHRhc2spID0+IHtcbiAgICogICAgIGNvbnNvbGUubG9nKCd0YXNrIGlzIHNjaGVkdWxlZCcsIHRhc2sudHlwZSwgdGFzay5zb3VyY2UsIHRhc2suem9uZS5uYW1lKTtcbiAgICogICAgIHJldHVybiBkZWxlZ2F0ZS5zY2hlZHVsZVRhc2sodGFyZ2V0LCB0YXNrKTtcbiAgICogICB9XG4gICAqIH0pXG4gICAqIGNvbnN0IHhociA9IG5ldyBYTUxIdHRwUmVxdWVzdCgpO1xuICAgKiB6b25lLnJ1bigoKSA9PiB7XG4gICAqICAgeGhyLm9ubG9hZCA9IGZ1bmN0aW9uKCkge307XG4gICAqICAgeGhyLm9wZW4oJ2dldCcsICcvJywgdHJ1ZSk7XG4gICAqICAgeGhyLnNlbmQoKTtcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBJbiB0aGlzIGV4YW1wbGUsIHRoZSBpbnN0YW5jZSBvZiBYTUxIdHRwUmVxdWVzdCBydW5zIGluIHRoZSB6b25lIGFuZCBhY3RzIGFzIGEgbWFjcm9UYXNrLiBUaGVcbiAgICogb3V0cHV0IGlzICd0YXNrIGlzIHNjaGVkdWxlZCBtYWNyb1Rhc2ssIFhNTEh0dHBSZXF1ZXN0LnNlbmQsIHpvbmUnLlxuICAgKlxuICAgKiBJZiB5b3Ugc2V0IGBfX1pvbmVfZGlzYWJsZV9YSFIgPSB0cnVlYCBiZWZvcmUgaW1wb3J0aW5nIGB6b25lLmpzYCxcbiAgICogYHpvbmUuanNgIGRvZXMgbm90IG1vbmtleSBwYXRjaCBgWE1MSHR0cFJlcXVlc3RgIEFQSXMgYW5kIHRoZSBhYm92ZSBvblNjaGVkdWxlVGFzayBjYWxsYmFja1xuICAgKiB3aWxsIG5vdCBiZSBjYWxsZWQuXG4gICAqXG4gICAqL1xuICBYSFI/OiBib29sZWFuO1xuICAvKipcbiAgICogRGlzYWJsZSB0aGUgbW9ua2V5IHBhdGNoIG9mIHRoZSBicm93c2VyIGdlb2xvY2F0aW9uIEFQSXMuXG4gICAqXG4gICAqIEJ5IGRlZmF1bHQsIGB6b25lLmpzYCBtb25rZXkgcGF0Y2hlcyBnZW9sb2NhdGlvbiBBUElzIHRvIG1ha2UgY2FsbGJhY2tzIHJ1biBpbiB0aGUgc2FtZSB6b25lXG4gICAqIHdoZW4gdGhvc2UgQVBJcyBhcmUgY2FsbGVkLlxuICAgKlxuICAgKiBDb25zaWRlciB0aGUgZm9sbG93aW5nIGV4YW1wbGVzOlxuICAgKlxuICAgKiBgYGBcbiAgICogY29uc3Qgem9uZSA9IFpvbmUuY3VycmVudC5mb3JrKHtcbiAgICogICBuYW1lOiAnbXlab25lJ1xuICAgKiB9KTtcbiAgICpcbiAgICogem9uZS5ydW4oKCkgPT4ge1xuICAgKiAgIG5hdmlnYXRvci5nZW9sb2NhdGlvbi5nZXRDdXJyZW50UG9zaXRpb24ocG9zID0+IHtcbiAgICogICAgIGNvbnNvbGUubG9nKCduYXZpZ2F0b3IuZ2V0Q3VycmVudFBvc2l0aW9uKCkgY2FsbGJhY2sgaXMgaW52b2tlZCBpbiB0aGUgem9uZScsXG4gICAqICAgICBab25lLmN1cnJlbnQubmFtZSk7XG4gICAqICAgICAvLyBvdXRwdXQgaXMgJ25hdmlnYXRvci5nZXRDdXJyZW50UG9zaXRpb24oKSBjYWxsYmFjayBpcyBpbnZva2VkIGluIHRoZSB6b25lIG15Wm9uZScuXG4gICAqICAgfVxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqXG4gICAqIElmIHNldCB5b3UgYF9fWm9uZV9kaXNhYmxlX2dlb2xvY2F0aW9uID0gdHJ1ZWAgYmVmb3JlIGltcG9ydGluZyBgem9uZS5qc2AsXG4gICAqIGB6b25lLmpzYCBkb2VzIG5vdCBtb25rZXkgcGF0Y2ggZ2VvbG9jYXRpb24gQVBJcyBhbmQgdGhlIGFib3ZlIGNvZGVcbiAgICogb3V0cHV0cyAnZ2V0Q3VycmVudFBvc2l0aW9uIDxyb290PicuXG4gICAqXG4gICAqL1xuICBnZW9sb2NhdGlvbj86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBEaXNhYmxlIHRoZSBtb25rZXkgcGF0Y2ggb2YgdGhlIGJyb3dzZXIgYGNhbnZhc2AgQVBJcy5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgYHpvbmUuanNgIG1vbmtleSBwYXRjaGVzIGBjYW52YXNgIEFQSXMgdG8gbWFrZSBjYWxsYmFja3MgcnVuIGluIHRoZSBzYW1lIHpvbmUgd2hlblxuICAgKiB0aG9zZSBBUElzIGFyZSBjYWxsZWQuXG4gICAqXG4gICAqIENvbnNpZGVyIHRoZSBmb2xsb3dpbmcgZXhhbXBsZTpcbiAgICpcbiAgICogYGBgXG4gICAqIGNvbnN0IHpvbmUgPSBab25lLmN1cnJlbnQuZm9yayh7XG4gICAqICAgbmFtZTogJ215Wm9uZSdcbiAgICogfSk7XG4gICAqXG4gICAqIHpvbmUucnVuKCgpID0+IHtcbiAgICogICBjYW52YXMudG9CbG9iKGJsb2cgPT4ge1xuICAgKiAgICAgY29uc29sZS5sb2coJ2NhbnZhcy50b0Jsb2IoKSBjYWxsYmFjayBpcyBpbnZva2VkIGluIHRoZSB6b25lJywgWm9uZS5jdXJyZW50Lm5hbWUpO1xuICAgKiAgICAgLy8gb3V0cHV0IGlzICdjYW52YXMudG9CbG9iKCkgY2FsbGJhY2sgaXMgaW52b2tlZCBpbiB0aGUgem9uZSBteVpvbmUnLlxuICAgKiAgIH1cbiAgICogfSk7XG4gICAqIGBgYFxuICAgKlxuICAgKiBJZiB5b3Ugc2V0IGBfX1pvbmVfZGlzYWJsZV9jYW52YXMgPSB0cnVlYCBiZWZvcmUgaW1wb3J0aW5nIGB6b25lLmpzYCxcbiAgICogYHpvbmUuanNgIGRvZXMgbm90IG1vbmtleSBwYXRjaCBgY2FudmFzYCBBUElzIGFuZCB0aGUgYWJvdmUgY29kZVxuICAgKiBvdXRwdXRzICdjYW52YXMudG9CbG9iIDxyb290PicuXG4gICAqL1xuICBjYW52YXM/OiBib29sZWFuO1xuICAvKipcbiAgICogRGlzYWJsZSB0aGUgYFByb21pc2VgIG1vbmtleSBwYXRjaC5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgYHpvbmUuanNgIG1vbmtleSBwYXRjaGVzIGBQcm9taXNlYCBBUElzIHRvIG1ha2UgdGhlIGB0aGVuKCkvY2F0Y2goKWAgY2FsbGJhY2tzIGluXG4gICAqIHRoZSBzYW1lIHpvbmUgd2hlbiB0aG9zZSBjYWxsYmFja3MgYXJlIGNhbGxlZC5cbiAgICpcbiAgICogQ29uc2lkZXIgdGhlIGZvbGxvd2luZyBleGFtcGxlczpcbiAgICpcbiAgICogYGBgXG4gICAqIGNvbnN0IHpvbmUgPSBab25lLmN1cnJlbnQuZm9yayh7bmFtZTogJ215Wm9uZSd9KTtcbiAgICpcbiAgICogY29uc3QgcCA9IFByb21pc2UucmVzb2x2ZSgxKTtcbiAgICpcbiAgICogem9uZS5ydW4oKCkgPT4ge1xuICAgKiAgIHAudGhlbigoKSA9PiB7XG4gICAqICAgICBjb25zb2xlLmxvZygndGhlbigpIGNhbGxiYWNrIGlzIGludm9rZWQgaW4gdGhlIHpvbmUnLCBab25lLmN1cnJlbnQubmFtZSk7XG4gICAqICAgICAvLyBvdXRwdXQgaXMgJ3RoZW4oKSBjYWxsYmFjayBpcyBpbnZva2VkIGluIHRoZSB6b25lIG15Wm9uZScuXG4gICAqICAgfSk7XG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICpcbiAgICogSWYgeW91IHNldCBgX19ab25lX2Rpc2FibGVfWm9uZUF3YXJlUHJvbWlzZSA9IHRydWVgIGJlZm9yZSBpbXBvcnRpbmcgYHpvbmUuanNgLFxuICAgKiBgem9uZS5qc2AgZG9lcyBub3QgbW9ua2V5IHBhdGNoIGBQcm9taXNlYCBBUElzIGFuZCB0aGUgYWJvdmUgY29kZVxuICAgKiBvdXRwdXRzICdwcm9taXNlIHRoZW4gY2FsbGJhY2sgPHJvb3Q+Jy5cbiAgICovXG4gIFpvbmVBd2FyZVByb21pc2U/OiBib29sZWFuO1xufVxuZXhwb3J0IHR5cGUgUnhab25lR2xvYmFsRGlzYWJsZUNvbmZpZ3VyYXRpb25zS2V5ID1cbiAga2V5b2YgUnhab25lR2xvYmFsRGlzYWJsZUNvbmZpZ3VyYXRpb25zO1xuZXhwb3J0IGNvbnN0IHpvbmVHbG9iYWxEaXNhYmxlQ29uZmlndXJhdGlvbnNLZXlzOiBSeFpvbmVHbG9iYWxEaXNhYmxlQ29uZmlndXJhdGlvbnNLZXlbXSA9XG4gIFtcbiAgICAnRXZlbnRFbWl0dGVyJyxcbiAgICAnZnMnLFxuICAgICdub2RlX3RpbWVycycsXG4gICAgJ25leHRUaWNrJyxcbiAgICAnY3J5cHRvJyxcbiAgICAnZGVmaW5lUHJvcGVydHknLFxuICAgICdyZWdpc3RlckVsZW1lbnQnLFxuICAgICdFdmVudFRhcmdldExlZ2FjeScsXG4gICAgJ3RpbWVycycsXG4gICAgJ3JlcXVlc3RBbmltYXRpb25GcmFtZScsXG4gICAgJ2Jsb2NraW5nJyxcbiAgICAnRXZlbnRUYXJnZXQnLFxuICAgICdGaWxlUmVhZGVyJyxcbiAgICAnTXV0YXRpb25PYnNlcnZlcicsXG4gICAgJ0ludGVyc2VjdGlvbk9ic2VydmVyJyxcbiAgICAnb25fcHJvcGVydHknLFxuICAgICdjdXN0b21FbGVtZW50cycsXG4gICAgJ1hIUicsXG4gICAgJ2dlb2xvY2F0aW9uJyxcbiAgICAnY2FudmFzJyxcbiAgICAnWm9uZUF3YXJlUHJvbWlzZScsXG4gIF07XG5cbi8vIHByZWZpeDogX196b25lX3N5bWJvbF9fXG5leHBvcnQgaW50ZXJmYWNlIFJ4Wm9uZUdsb2JhbEV2ZW50c0NvbmZpZ3VyYXRpb25zIHtcbiAgLyoqXG4gICAqIERlZmluZSBldmVudCBuYW1lcyB0aGF0IHVzZXJzIGRvbid0IHdhbnQgbW9ua2V5IHBhdGNoZWQgYnkgdGhlIGB6b25lLmpzYC5cbiAgICpcbiAgICogQnkgZGVmYXVsdCwgYHpvbmUuanNgIG1vbmtleSBwYXRjaGVzIEV2ZW50VGFyZ2V0LmFkZEV2ZW50TGlzdGVuZXIoKS4gVGhlIGV2ZW50IGxpc3RlbmVyXG4gICAqIGNhbGxiYWNrIHJ1bnMgaW4gdGhlIHNhbWUgem9uZSB3aGVuIHRoZSBhZGRFdmVudExpc3RlbmVyKCkgaXMgY2FsbGVkLlxuICAgKlxuICAgKiBTb21ldGltZXMsIHlvdSBkb24ndCB3YW50IGFsbCBvZiB0aGUgZXZlbnQgbmFtZXMgdXNlZCBpbiB0aGlzIHBhdGNoZWQgdmVyc2lvbiBiZWNhdXNlIGl0XG4gICAqIGltcGFjdHMgcGVyZm9ybWFuY2UuIEZvciBleGFtcGxlLCB5b3UgbWlnaHQgd2FudCBgc2Nyb2xsYCBvciBgbW91c2Vtb3ZlYCBldmVudCBsaXN0ZW5lcnMgdG8gcnVuXG4gICAqIHRoZSBuYXRpdmUgYGFkZEV2ZW50TGlzdGVuZXIoKWAgZm9yIGJldHRlciBwZXJmb3JtYW5jZS5cbiAgICpcbiAgICogVXNlcnMgY2FuIGFjaGlldmUgdGhpcyBnb2FsIGJ5IGRlZmluaW5nIGBfX3pvbmVfc3ltYm9sX19VTlBBVENIRURfRVZFTlRTID0gWydzY3JvbGwnLFxuICAgKiAnbW91c2Vtb3ZlJ107YCBiZWZvcmUgaW1wb3J0aW5nIGB6b25lLmpzYC5cbiAgICovXG4gIFVOUEFUQ0hFRF9FVkVOVFM/OiBzdHJpbmdbXTtcbiAgLyoqXG4gICAqIERlZmluZSB0aGUgZXZlbnQgbmFtZXMgb2YgdGhlIHBhc3NpdmUgbGlzdGVuZXJzLlxuICAgKlxuICAgKiBUbyBhZGQgcGFzc2l2ZSBldmVudCBsaXN0ZW5lcnMsIHlvdSBjYW4gdXNlIGBlbGVtLmFkZEV2ZW50TGlzdGVuZXIoJ3Njcm9sbCcsIGxpc3RlbmVyLFxuICAgKiB7cGFzc2l2ZTogdHJ1ZX0pO2Agb3IgaW1wbGVtZW50IHlvdXIgb3duIGBFdmVudE1hbmFnZXJQbHVnaW5gLlxuICAgKlxuICAgKiBZb3UgY2FuIGFsc28gZGVmaW5lIGEgZ2xvYmFsIHZhcmlhYmxlIGFzIGZvbGxvd3M6XG4gICAqXG4gICAqIGBgYFxuICAgKiBfX3pvbmVfc3ltYm9sX19QQVNTSVZFX0VWRU5UUyA9IFsnc2Nyb2xsJ107XG4gICAqIGBgYFxuICAgKlxuICAgKiBUaGUgcHJlY2VkaW5nIGNvZGUgbWFrZXMgYWxsIHNjcm9sbCBldmVudCBsaXN0ZW5lcnMgcGFzc2l2ZS5cbiAgICovXG4gIFBBU1NJVkVfRVZFTlRTPzogc3RyaW5nW107XG59XG5leHBvcnQgdHlwZSBSeFpvbmVHbG9iYWxFdmVudHNDb25maWd1cmF0aW9uc0tleSA9XG4gIGtleW9mIFJ4Wm9uZUdsb2JhbEV2ZW50c0NvbmZpZ3VyYXRpb25zO1xuZXhwb3J0IGNvbnN0IHpvbmVHbG9iYWxFdmVudHNDb25maWd1cmF0aW9uc0tleXM6IFJ4Wm9uZUdsb2JhbEV2ZW50c0NvbmZpZ3VyYXRpb25zS2V5W10gPVxuICBbJ1VOUEFUQ0hFRF9FVkVOVFMnLCAnUEFTU0lWRV9FVkVOVFMnXTtcblxuLy8gcHJlZml4OiBfX3pvbmVfc3ltYm9sX19cbmV4cG9ydCBpbnRlcmZhY2UgUnhab25lR2xvYmFsU2V0dGluZ3NDb25maWd1cmF0aW9ucyB7XG4gIC8qKlxuICAgKiBEaXNhYmxlIHdyYXBwaW5nIHVuY2F1Z2h0IHByb21pc2UgcmVqZWN0aW9uLlxuICAgKlxuICAgKiBCeSBkZWZhdWx0LCBgem9uZS5qc2Agd3JhcHMgdGhlIHVuY2F1Z2h0IHByb21pc2UgcmVqZWN0aW9uIGluIGEgbmV3IGBFcnJvcmAgb2JqZWN0XG4gICAqIHdoaWNoIGNvbnRhaW5zIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gc3VjaCBhcyBhIHZhbHVlIG9mIHRoZSByZWplY3Rpb24gYW5kIGEgc3RhY2sgdHJhY2UuXG4gICAqXG4gICAqIElmIHlvdSBzZXQgYF9fem9uZV9zeW1ib2xfX0RJU0FCTEVfV1JBUFBJTkdfVU5DQVVHSFRfUFJPTUlTRV9SRUpFQ1RJT04gPSB0cnVlO2AgYmVmb3JlXG4gICAqIGltcG9ydGluZyBgem9uZS5qc2AsIGB6b25lLmpzYCB3aWxsIG5vdCB3cmFwIHRoZSB1bmNhdWdodCBwcm9taXNlIHJlamVjdGlvbi5cbiAgICovXG4gIERJU0FCTEVfV1JBUFBJTkdfVU5DQVVHSFRfUFJPTUlTRV9SRUpFQ1RJT04/OiBib29sZWFuO1xufVxuZXhwb3J0IHR5cGUgUnhab25lR2xvYmFsU2V0dGluZ3NDb25maWd1cmF0aW9uc0tleSA9XG4gIGtleW9mIFJ4Wm9uZUdsb2JhbFNldHRpbmdzQ29uZmlndXJhdGlvbnM7XG5leHBvcnQgY29uc3Qgem9uZUdsb2JhbFNldHRpbmdzQ29uZmlndXJhdGlvbnNLZXlzOiBSeFpvbmVHbG9iYWxTZXR0aW5nc0NvbmZpZ3VyYXRpb25zS2V5W10gPVxuICBbJ0RJU0FCTEVfV1JBUFBJTkdfVU5DQVVHSFRfUFJPTUlTRV9SRUpFQ1RJT04nXTtcblxuLy8gcHJlZml4OiBfX3pvbmVfc3ltYm9sX19cbmV4cG9ydCBpbnRlcmZhY2UgUnhab25lUnVudGltZUNvbmZpZ3VyYXRpb25zIHtcbiAgaWdub3JlQ29uc29sZUVycm9yVW5jYXVnaHRFcnJvcj86IGJvb2xlYW47XG59XG5leHBvcnQgdHlwZSBSeFpvbmVSdW50aW1lQ29uZmlndXJhdGlvbnNLZXkgPSBrZXlvZiBSeFpvbmVSdW50aW1lQ29uZmlndXJhdGlvbnM7XG5leHBvcnQgY29uc3Qgem9uZVJ1bnRpbWVDb25maWd1cmF0aW9uc0tleXM6IFJ4Wm9uZVJ1bnRpbWVDb25maWd1cmF0aW9uc0tleVtdID0gW1xuICAnaWdub3JlQ29uc29sZUVycm9yVW5jYXVnaHRFcnJvcicsXG5dO1xuXG4vLyBwcmVmaXg6IF9fWm9uZV9kaXNhYmxlX1xuZXhwb3J0IGludGVyZmFjZSBSeFpvbmVUZXN0RGlzYWJsZUNvbmZpZ3VyYXRpb25zIHtcbiAgLyoqXG4gICAqIERpc2FibGUgdGhlIEphc21pbmUgaW50ZWdyYXRpb24uXG4gICAqXG4gICAqIEluIHRoZSBgem9uZS10ZXN0aW5nLmpzYCBidW5kbGUsIGJ5IGRlZmF1bHQsIGB6b25lLXRlc3RpbmcuanNgIG1vbmtleSBwYXRjaGVzIEphc21pbmUgQVBJc1xuICAgKiB0byBtYWtlIEphc21pbmUgQVBJcyBydW4gaW4gc3BlY2lmaWVkIHpvbmUuXG4gICAqXG4gICAqIDEuIE1ha2UgdGhlIGBkZXNjcmliZSgpYC9geGRlc2NyaWJlKClgL2BmZGVzY3JpYmUoKWAgbWV0aG9kcyBydW4gaW4gdGhlIHN5bmNUZXN0Wm9uZS5cbiAgICogMi4gTWFrZSB0aGUgYGl0KClgL2B4aXQoKWAvYGZpdCgpYC9gYmVmb3JlRWFjaCgpYC9gYWZ0ZXJFYWNoKClgL2BiZWZvcmVBbGwoKWAvYGFmdGVyQWxsKClgXG4gICAqIG1ldGhvZHMgcnVuIGluIHRoZSBQcm94eVpvbmUuXG4gICAqXG4gICAqIFdpdGggdGhpcyBwYXRjaCwgYGFzeW5jKClgL2BmYWtlQXN5bmMoKWAgY2FuIHdvcmsgd2l0aCB0aGUgSmFzbWluZSBydW5uZXIuXG4gICAqXG4gICAqIElmIHlvdSBzZXQgYF9fWm9uZV9kaXNhYmxlX2phc21pbmUgPSB0cnVlYCBiZWZvcmUgaW1wb3J0aW5nIGB6b25lLXRlc3RpbmcuanNgLFxuICAgKiBgem9uZS10ZXN0aW5nLmpzYCBkb2VzIG5vdCBtb25rZXkgcGF0Y2ggdGhlIGphc21pbmUgQVBJcyBhbmQgdGhlIGBhc3luYygpYC9gZmFrZUFzeW5jKClgIGNhbm5vdFxuICAgKiB3b3JrIHdpdGggdGhlIEphc21pbmUgcnVubmVyIGFueSBsb25nZXIuXG4gICAqL1xuICBqYXNtaW5lPzogYm9vbGVhbjtcbiAgLyoqXG4gICAqIERpc2FibGUgdGhlIE1vY2hhIGludGVncmF0aW9uLlxuICAgKlxuICAgKiBJbiB0aGUgYHpvbmUtdGVzdGluZy5qc2AgYnVuZGxlLCBieSBkZWZhdWx0LCBgem9uZS10ZXN0aW5nLmpzYCBtb25rZXkgcGF0Y2hlcyB0aGUgTW9jaGEgQVBJc1xuICAgKiB0byBtYWtlIE1vY2hhIEFQSXMgcnVuIGluIHRoZSBzcGVjaWZpZWQgem9uZS5cbiAgICpcbiAgICogMS4gTWFrZSB0aGUgYGRlc2NyaWJlKClgL2B4ZGVzY3JpYmUoKWAvYGZkZXNjcmliZSgpYCBtZXRob2RzIHJ1biBpbiB0aGUgc3luY1Rlc3Rab25lLlxuICAgKiAyLiBNYWtlIHRoZSBgaXQoKWAvYHhpdCgpYC9gZml0KClgL2BiZWZvcmVFYWNoKClgL2BhZnRlckVhY2goKWAvYGJlZm9yZUFsbCgpYC9gYWZ0ZXJBbGwoKWBcbiAgICogbWV0aG9kcyBydW4gaW4gdGhlIFByb3h5Wm9uZS5cbiAgICpcbiAgICogV2l0aCB0aGlzIHBhdGNoLCBgYXN5bmMoKWAvYGZha2VBc3luYygpYCBjYW4gd29yayB3aXRoIHRoZSBNb2NoYSBydW5uZXIuXG4gICAqXG4gICAqIElmIHlvdSBzZXQgYF9fWm9uZV9kaXNhYmxlX21vY2hhID0gdHJ1ZWAgYmVmb3JlIGltcG9ydGluZyBgem9uZS10ZXN0aW5nLmpzYCxcbiAgICogYHpvbmUtdGVzdGluZy5qc2AgZG9lcyBub3QgbW9ua2V5IHBhdGNoIHRoZSBNb2NoYSBBUElzIGFuZCB0aGUgYGFzeW5jKCkvYGZha2VBc3luYygpYCBjYW4gbm90XG4gICAqIHdvcmsgd2l0aCB0aGUgTW9jaGEgcnVubmVyIGFueSBsb25nZXIuXG4gICAqL1xuICBtb2NoYT86IGJvb2xlYW47XG4gIC8qKlxuICAgKiBEaXNhYmxlIHRoZSBKZXN0IGludGVncmF0aW9uLlxuICAgKlxuICAgKiBJbiB0aGUgYHpvbmUtdGVzdGluZy5qc2AgYnVuZGxlLCBieSBkZWZhdWx0LCBgem9uZS10ZXN0aW5nLmpzYCBtb25rZXkgcGF0Y2hlcyBKZXN0IEFQSXNcbiAgICogdG8gbWFrZSBKZXN0IEFQSXMgcnVuIGluIHRoZSBzcGVjaWZpZWQgem9uZS5cbiAgICpcbiAgICogMS4gTWFrZSB0aGUgYGRlc2NyaWJlKClgL2B4ZGVzY3JpYmUoKWAv