UNPKG

@activejs/core

Version:

Pragmatic, Reactive State Management for JavaScript Apps

383 lines 32.2 kB
// ____________________________ Common Events ____________________________ // // _______________________________________________________________________ // /** * An event that gets emitted on successful replay by using the `replay` method. * @event * @category Common */ export class EventReplay { /** * @param value The current value that got replayed. */ constructor(value) { this.value = value; } } // _________________________ Common Units Events _________________________ // // _______________________________________________________________________ // /** * An event that gets emitted on successful dispatch by using the Units' `dispatch` method. * @event * @category Common Units */ export class EventUnitDispatch { /** * @param value The value that was passed to the dispatch method. * @param options The options that were passed to the dispatch method. */ constructor(value, options) { this.value = value; this.options = options; } } /** * All the reasons for why a Unit dispatch might fail. */ export var DispatchFailReason; (function (DispatchFailReason) { /** * The first reason, if the Unit is frozen. */ DispatchFailReason["FROZEN_UNIT"] = "FROZEN_UNIT"; /** * The second reason, if the dispatched value is invalid. */ DispatchFailReason["INVALID_VALUE"] = "INVALID_VALUE"; /** * The third reason, if {@link UnitConfig.customDispatchCheck} returns a `falsy` value. */ DispatchFailReason["CUSTOM_DISPATCH_CHECK"] = "CUSTOM_DISPATCH_CHECK"; /** * The fourth reason, if {@link UnitConfig.distinctDispatchCheck} is not `false` and the dispatched value is same as current value. */ DispatchFailReason["DISTINCT_CHECK"] = "DISTINCT_CHECK"; })(DispatchFailReason || (DispatchFailReason = {})); /** * An event that gets emitted on failed dispatch using the Units' `dispatch` method. * @event * @category Common Units */ export class EventUnitDispatchFail { /** * @param value The value that was passed to the dispatch method. * @param reason The reason for why the dispatch failed. * @param options The options that were passed to the dispatch method. */ constructor(value, reason, options) { this.value = value; this.reason = reason; this.options = options; } } /** * An event that gets emitted on successful unmute using the Units' `unmute` method. * @event * @category Common Units */ export class EventUnitUnmute { } /** * An event that gets emitted when a Unit gets frozen. * @event * @category Common Units */ export class EventUnitFreeze { } /** * An event that gets emitted when a Unit gets unfrozen after being frozen. * @event * @category Common Units */ export class EventUnitUnfreeze { } /** * An event that gets emitted on successful cache-navigation, * using the Units' several cache-navigation methods like `goBack`, `goForward`, `jump`, etc. * @event * @category Common Units */ export class EventUnitJump { /** * @param steps The number of steps jumped represented as a number, * positive for forward navigation and negative for backwards. * @param newCacheIndex The new `cacheIndex` of the emitted value. */ constructor(steps, newCacheIndex) { this.steps = steps; this.newCacheIndex = newCacheIndex; } } /** * An event that gets emitted on successful execution of Units' `clearCache` method. * @event * @category Common Units */ export class EventUnitClearCache { /** * @param options The options that were directly or indirectly passed to the `clearCache` method. */ constructor(options) { this.options = options; } } /** * An event that gets emitted on successful execution of Units' `clearValue` method. * @event * @category Common Units */ export class EventUnitClearValue { } /** * An event that gets emitted on successful execution of Units' `clear` method. * @event * @category Common Units */ export class EventUnitClear { /** * @param options The options that were passed for the implicitly called `clearCache` method. */ constructor(options) { this.options = options; } } /** * An event that gets emitted on successful execution of Units' `resetValue` method. * @event * @category Common Units */ export class EventUnitResetValue { } /** * An event that gets emitted on successful execution of Units' `reset` method. * @event * @category Common Units */ export class EventUnitReset { /** * @param options The options that were passed for the implicitly called `clearCache` method. */ constructor(options) { this.options = options; } } /** * An event that gets emitted on successful execution of Units' `clearPersistentValue` method. * @event * @category Common Units */ export class EventUnitClearPersistedValue { } // ____________________________ DictUnit Events ____________________________ // // _________________________________________________________________________ // /** * An event that gets emitted on successful execution of DictUnit's `set` method. * @event * @category DictUnit */ export class EventDictUnitSet { /** * @param key The name of the property that was passed to the `set` method. * @param value The value of the property that was passed to the `set` method. */ constructor(key, value) { this.key = key; this.value = value; } } /** * An event that gets emitted on successful execution of DictUnit's `assign` method. * @event * @category DictUnit */ export class EventDictUnitAssign { /** * @param sources The source objects that were passed to the `assign` method. * @param newProps The new properties that finally got added to the DictUnit's value. */ constructor(sources, newProps) { this.sources = sources; this.newProps = newProps; } } /** * An event that gets emitted on successful execution of DictUnit's `delete` or `deleteIf` method. * @event * @category DictUnit */ export class EventDictUnitDelete { /** * @param deletedProps The properties that were deleted by the `delete` or `deleteIf` method. */ constructor(deletedProps) { this.deletedProps = deletedProps; } } // ____________________________ ListUnit Events ____________________________ // // _________________________________________________________________________ // /** * An event that gets emitted on successful execution of ListUnit's `set` method. * @event * @category ListUnit */ export class EventListUnitSet { /** * @param index The index for the item passed to the `set` method. * @param item The item passed to the `set` method. */ constructor(index, item) { this.index = index; this.item = item; } } /** * An event that gets emitted on successful execution of ListUnit's `pop` method. * @event * @category ListUnit */ export class EventListUnitPop { /** * @param item The item that got popped from the ListUnit's value. */ constructor(item) { this.item = item; } } /** * An event that gets emitted on successful execution of ListUnit's `push` method. * @event * @category ListUnit */ export class EventListUnitPush { /** * @param items The items that were passed to the `push` method. */ constructor(items) { this.items = items; } } /** * An event that gets emitted on successful execution of ListUnit's `shift` method. * @event * @category ListUnit */ export class EventListUnitShift { /** * @param item The item that got shifted out. */ constructor(item) { this.item = item; } } /** * An event that gets emitted on successful execution of ListUnit's `unshift` method. * @event * @category ListUnit */ export class EventListUnitUnshift { /** * @param items The items that were passed to the `unshift` method. */ constructor(items) { this.items = items; } } /** * An event that gets emitted on successful execution of ListUnit's `delete` or `deleteIf` method. * @event * @category ListUnit */ export class EventListUnitDelete { /** * @param indices The indices that were passed to the `delete` method explicitly, * or implicitly by `deleteIf` method. * @param deletedItems The items that got deleted from the ListUnit's value. */ constructor(indices, deletedItems) { this.indices = indices; this.deletedItems = deletedItems; } } /** * An event that gets emitted on successful execution of ListUnit's `remove` or `removeIf` method. * @event * @category ListUnit */ export class EventListUnitRemove { /** * @param indices The indices that were passed to the `remove` method explicitly, * or implicitly by `removeIf` method. * @param removedItems The items that got removed from the ListUnit's value. */ constructor(indices, removedItems) { this.indices = indices; this.removedItems = removedItems; } } /** * An event that gets emitted on successful execution of ListUnit's `splice` or `insert` method. * @event * @category ListUnit */ export class EventListUnitSplice { /** * @param start The zero-based location that was passed to the `splice` method. * @param deleteCount The number of items that were to be removed. * @param removedItems The items that got removed. * @param addedItems The items that were passed as `items` to be added. */ constructor(start, deleteCount, removedItems, addedItems) { this.start = start; this.deleteCount = deleteCount; this.removedItems = removedItems; this.addedItems = addedItems; } } /** * An event that gets emitted on successful execution of ListUnit's `fill` method. * @event * @category ListUnit */ export class EventListUnitFill { /** * @param item The item that was passed to the `fill` method. * @param start The starting position where the filling started. * @param end The last position where the filling stopped. */ constructor(item, start, end) { this.item = item; this.start = start; this.end = end; } } /** * An event that gets emitted on successful execution of ListUnit's `copyWithin` method. * @event * @category ListUnit */ export class EventListUnitCopyWithin { /** * @param target The target position from where the copied section starts replacing. * @param start The starting position of the copied section. * @param end The ending position of the copied section. */ constructor(target, start, end) { this.target = target; this.start = start; this.end = end; } } /** * An event that gets emitted on successful execution of ListUnit's `reverse` method. * @event * @category ListUnit */ export class EventListUnitReverse { } /** * An event that gets emitted on successful execution of ListUnit's `sort` method. * @event * @category ListUnit */ export class EventListUnitSort { } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZlbnRzLmpzIiwic291cmNlUm9vdCI6Ii9ob21lL3J1bm5lci93b3JrL2FjdGl2ZWpzL2FjdGl2ZWpzL3BhY2thZ2VzL2NvcmUvc3JjLyIsInNvdXJjZXMiOlsibW9kZWxzL2V2ZW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUE2REEsNkVBQTZFO0FBQzdFLDZFQUE2RTtBQUU3RTs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLFdBQVc7SUFDdEI7O09BRUc7SUFDSCxZQUFtQixLQUFRO1FBQVIsVUFBSyxHQUFMLEtBQUssQ0FBRztJQUFHLENBQUM7Q0FDaEM7QUFFRCw2RUFBNkU7QUFDN0UsNkVBQTZFO0FBRTdFOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8saUJBQWlCO0lBQzVCOzs7T0FHRztJQUNILFlBQW1CLEtBQVEsRUFBUyxPQUF5QjtRQUExQyxVQUFLLEdBQUwsS0FBSyxDQUFHO1FBQVMsWUFBTyxHQUFQLE9BQU8sQ0FBa0I7SUFBRyxDQUFDO0NBQ2xFO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQU4sSUFBWSxrQkFpQlg7QUFqQkQsV0FBWSxrQkFBa0I7SUFDNUI7O09BRUc7SUFDSCxpREFBMkIsQ0FBQTtJQUMzQjs7T0FFRztJQUNILHFEQUErQixDQUFBO0lBQy9COztPQUVHO0lBQ0gscUVBQStDLENBQUE7SUFDL0M7O09BRUc7SUFDSCx1REFBaUMsQ0FBQTtBQUNuQyxDQUFDLEVBakJXLGtCQUFrQixLQUFsQixrQkFBa0IsUUFpQjdCO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxxQkFBcUI7SUFDaEM7Ozs7T0FJRztJQUNILFlBQ1MsS0FBUSxFQUNSLE1BQTBCLEVBQzFCLE9BQXlCO1FBRnpCLFVBQUssR0FBTCxLQUFLLENBQUc7UUFDUixXQUFNLEdBQU4sTUFBTSxDQUFvQjtRQUMxQixZQUFPLEdBQVAsT0FBTyxDQUFrQjtJQUMvQixDQUFDO0NBQ0w7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLGVBQWU7Q0FBRztBQUUvQjs7OztH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Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxtQkFBbUI7SUFDOUI7Ozs7T0FJRztJQUNILFlBQW1CLE9BQWlCLEVBQVMsWUFBb0I7UUFBOUMsWUFBTyxHQUFQLE9BQU8sQ0FBVTtRQUFTLGlCQUFZLEdBQVosWUFBWSxDQUFRO0lBQUcsQ0FBQztDQUN0RTtBQUVEOzs7O0dBSUc7QUFDSCxNQUFNLE9BQU8sbUJBQW1CO0lBQzlCOzs7OztPQUtHO0lBQ0gsWUFDUyxLQUFhLEVBQ2IsV0FBbUIsRUFDbkIsWUFBb0IsRUFDcEIsVUFBa0I7UUFIbEIsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUNiLGdCQUFXLEdBQVgsV0FBVyxDQUFRO1FBQ25CLGlCQUFZLEdBQVosWUFBWSxDQUFRO1FBQ3BCLGVBQVUsR0FBVixVQUFVLENBQVE7SUFDeEIsQ0FBQztDQUNMO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxpQkFBaUI7SUFDNUI7Ozs7T0FJRztJQUNILFlBQW1CLElBQVUsRUFBUyxLQUFjLEVBQVMsR0FBWTtRQUF0RCxTQUFJLEdBQUosSUFBSSxDQUFNO1FBQVMsVUFBSyxHQUFMLEtBQUssQ0FBUztRQUFTLFFBQUcsR0FBSCxHQUFHLENBQVM7SUFBRyxDQUFDO0NBQzlFO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyx1QkFBdUI7SUFDbEM7Ozs7T0FJRztJQUNILFlBQW1CLE1BQWMsRUFBUyxLQUFhLEVBQVMsR0FBWTtRQUF6RCxXQUFNLEdBQU4sTUFBTSxDQUFRO1FBQVMsVUFBSyxHQUFMLEtBQUssQ0FBUTtRQUFTLFFBQUcsR0FBSCxHQUFHLENBQVM7SUFBRyxDQUFDO0NBQ2pGO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxvQkFBb0I7Q0FBRztBQUVwQzs7OztHQUlHO0FBQ0gsTUFBTSxPQUFPLGlCQUFpQjtDQUFHIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtEaWN0VmFsdWV9IGZyb20gJy4vdW5pdHMnO1xuaW1wb3J0IHtDbGVhckNhY2hlT3B0aW9ucywgRGlzcGF0Y2hPcHRpb25zfSBmcm9tICcuL29wZXJhdGlvbnMnO1xuXG4vKipcbiAqIFRoZSBjb21tb24gZXZlbnRzIHRoYXQgZXZlcnkgZnVuZGFtZW50YWwgQWN0aXZlSlMgY29uc3RydWN0IChVbml0cywgU3lzdGVtcywgQWN0aW9uIGFuZCBDbHVzdGVyKSBlbWl0cy5cbiAqIEBldmVudFxuICogQGNhdGVnb3J5IENvbW1vblxuICovXG5leHBvcnQgdHlwZSBCYXNlRXZlbnRzPFQ+ID0gRXZlbnRSZXBsYXk8VD47XG5cbi8qKlxuICogVGhlIGNvbW1vbiBldmVudHMgdGhhdCBhcmUgZW1pdHRlZCBieSBhbGwgdGhlIFVuaXRzLlxuICogQGV2ZW50XG4gKiBAY2F0ZWdvcnkgQ29tbW9uIFVuaXRzXG4gKi9cbmV4cG9ydCB0eXBlIFVuaXRFdmVudHM8VD4gPVxuICB8IEJhc2VFdmVudHM8VD5cbiAgfCBFdmVudFVuaXREaXNwYXRjaDxUPlxuICB8IEV2ZW50VW5pdERpc3BhdGNoRmFpbDxUPlxuICB8IEV2ZW50VW5pdFVubXV0ZVxuICB8IEV2ZW50VW5pdEZyZWV6ZVxuICB8IEV2ZW50VW5pdFVuZnJlZXplXG4gIHwgRXZlbnRVbml0SnVtcFxuICB8IEV2ZW50VW5pdENsZWFyQ2FjaGVcbiAgfCBFdmVudFVuaXRDbGVhclZhbHVlXG4gIHwgRXZlbnRVbml0Q2xlYXJcbiAgfCBFdmVudFVuaXRSZXNldFZhbHVlXG4gIHwgRXZlbnRVbml0UmVzZXRcbiAgfCBFdmVudFVuaXRDbGVhclBlcnNpc3RlZFZhbHVlO1xuXG4vKipcbiAqIFRoZSBldmVudHMgdGhhdCBhcmUgdHJpZ2dlcmVkIGJ5IGEgRGljdFVuaXQuXG4gKiBAZXZlbnRcbiAqIEBjYXRlZ29yeSBEaWN0VW5pdFxuICovXG5leHBvcnQgdHlwZSBEaWN0VW5pdEV2ZW50czxcbiAgVCBleHRlbmRzIERpY3RWYWx1ZTxhbnk+LFxuICBLIGV4dGVuZHMga2V5b2YgVCA9IGtleW9mIFQsXG4gIFYgZXh0ZW5kcyBUW0tdID0gVFtLXVxuPiA9IFVuaXRFdmVudHM8VD4gfCBFdmVudERpY3RVbml0U2V0PEssIFY+IHwgRXZlbnREaWN0VW5pdERlbGV0ZTxUPiB8IEV2ZW50RGljdFVuaXRBc3NpZ248VD47XG5cbi8qKlxuICogVGhlIGV2ZW50cyB0aGF0IGFyZSBlbWl0dGVkIGJ5IGEgTGlzdFVuaXQuXG4gKiBAZXZlbnRcbiAqIEBjYXRlZ29yeSBMaXN0VW5pdFxuICovXG5leHBvcnQgdHlwZSBMaXN0VW5pdEV2ZW50czxJdGVtPiA9XG4gIHwgVW5pdEV2ZW50czxJdGVtW10+XG4gIHwgRXZlbnRMaXN0VW5pdFNldDxJdGVtPlxuICB8IEV2ZW50TGlzdFVuaXRQb3A8SXRlbT5cbiAgfCBFdmVudExpc3RVbml0UHVzaDxJdGVtPlxuICB8IEV2ZW50TGlzdFVuaXRTaGlmdDxJdGVtPlxuICB8IEV2ZW50TGlzdFVuaXRVbnNoaWZ0PEl0ZW0+XG4gIHwgRXZlbnRMaXN0VW5pdERlbGV0ZTxJdGVtPlxuICB8IEV2ZW50TGlzdFVuaXRSZW1vdmU8SXRlbT5cbiAgfCBFdmVudExpc3RVbml0U3BsaWNlPEl0ZW0+XG4gIHwgRXZlbnRMaXN0VW5pdEZpbGw8SXRlbT5cbiAgfCBFdmVudExpc3RVbml0Q29weVdpdGhpbjxJdGVtPlxuICB8IEV2ZW50TGlzdFVuaXRSZXZlcnNlXG4gIHwgRXZlbnRMaXN0VW5pdFNvcnQ7XG5cbi8vIF9fX19fX19fX19fX19fX19fX19fX19fX19fX18gQ29tbW9uIEV2ZW50cyBfX19fX19fX19fX19fX19fX19fX19fX19fX19fIC8vXG4vLyBfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyAvL1xuXG4vKipcbiAqIEFuIGV2ZW50IHRoYXQgZ2V0cyBlbWl0dGVkIG9uIHN1Y2Nlc3NmdWwgcmVwbGF5IGJ5IHVzaW5nIHRoZSBgcmVwbGF5YCBtZXRob2QuXG4gKiBAZXZlbnRcbiAqIEBjYXRlZ29yeSBDb21tb25cbiAqL1xuZXhwb3J0IGNsYXNzIEV2ZW50UmVwbGF5PFQ+IHtcbiAgLyoqXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgY3VycmVudCB2YWx1ZSB0aGF0IGdvdCByZXBsYXllZC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyB2YWx1ZTogVCkge31cbn1cblxuLy8gX19fX19fX19fX19fX19fX19fX19fX19fXyBDb21tb24gVW5pdHMgRXZlbnRzIF9fX19fX19fX19fX19fX19fX19fX19fX18gLy9cbi8vIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fIC8vXG5cbi8qKlxuICogQW4gZXZlbnQgdGhhdCBnZXRzIGVtaXR0ZWQgb24gc3VjY2Vzc2Z1bCBkaXNwYXRjaCBieSB1c2luZyB0aGUgVW5pdHMnIGBkaXNwYXRjaGAgbWV0aG9kLlxuICogQGV2ZW50XG4gKiBAY2F0ZWdvcnkgQ29tbW9uIFVuaXRzXG4gKi9cbmV4cG9ydCBjbGFzcyBFdmVudFVuaXREaXNwYXRjaDxUPiB7XG4gIC8qKlxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRoYXQgd2FzIHBhc3NlZCB0byB0aGUgZGlzcGF0Y2ggbWV0aG9kLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyB0aGF0IHdlcmUgcGFzc2VkIHRvIHRoZSBkaXNwYXRjaCBtZXRob2QuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdmFsdWU6IFQsIHB1YmxpYyBvcHRpb25zPzogRGlzcGF0Y2hPcHRpb25zKSB7fVxufVxuXG4vKipcbiAqIEFsbCB0aGUgcmVhc29ucyBmb3Igd2h5IGEgVW5pdCBkaXNwYXRjaCBtaWdodCBmYWlsLlxuICovXG5leHBvcnQgZW51bSBEaXNwYXRjaEZhaWxSZWFzb24ge1xuICAvKipcbiAgICogVGhlIGZpcnN0IHJlYXNvbiwgaWYgdGhlIFVuaXQgaXMgZnJvemVuLlxuICAgKi9cbiAgRlJPWkVOX1VOSVQgPSAnRlJPWkVOX1VOSVQnLFxuICAvKipcbiAgICogVGhlIHNlY29uZCByZWFzb24sIGlmIHRoZSBkaXNwYXRjaGVkIHZhbHVlIGlzIGludmFsaWQuXG4gICAqL1xuICBJTlZBTElEX1ZBTFVFID0gJ0lOVkFMSURfVkFMVUUnLFxuICAvKipcbiAgICogVGhlIHRoaXJkIHJlYXNvbiwgaWYge0BsaW5rIFVuaXRDb25maWcuY3VzdG9tRGlzcGF0Y2hDaGVja30gcmV0dXJucyBhIGBmYWxzeWAgdmFsdWUuXG4gICAqL1xuICBDVVNUT01fRElTUEFUQ0hfQ0hFQ0sgPSAnQ1VTVE9NX0RJU1BBVENIX0NIRUNLJyxcbiAgLyoqXG4gICAqIFRoZSBmb3VydGggcmVhc29uLCBpZiB7QGxpbmsgVW5pdENvbmZpZy5kaXN0aW5jdERpc3BhdGNoQ2hlY2t9IGlzIG5vdCBgZmFsc2VgIGFuZCB0aGUgZGlzcGF0Y2hlZCB2YWx1ZSBpcyBzYW1lIGFzIGN1cnJlbnQgdmFsdWUuXG4gICAqL1xuICBESVNUSU5DVF9DSEVDSyA9ICdESVNUSU5DVF9DSEVDSycsXG59XG5cbi8qKlxuICogQW4gZXZlbnQgdGhhdCBnZXRzIGVtaXR0ZWQgb24gZmFpbGVkIGRpc3BhdGNoIHVzaW5nIHRoZSBVbml0cycgYGRpc3BhdGNoYCBtZXRob2QuXG4gKiBAZXZlbnRcbiAqIEBjYXRlZ29yeSBDb21tb24gVW5pdHNcbiAqL1xuZXhwb3J0IGNsYXNzIEV2ZW50VW5pdERpc3BhdGNoRmFpbDxUPiB7XG4gIC8qKlxuICAgKiBAcGFyYW0gdmFsdWUgVGhlIHZhbHVlIHRoYXQgd2FzIHBhc3NlZCB0byB0aGUgZGlzcGF0Y2ggbWV0aG9kLlxuICAgKiBAcGFyYW0gcmVhc29uIFRoZSByZWFzb24gZm9yIHdoeSB0aGUgZGlzcGF0Y2ggZmFpbGVkLlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyB0aGF0IHdlcmUgcGFzc2VkIHRvIHRoZSBkaXNwYXRjaCBtZXRob2QuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgdmFsdWU6IFQsXG4gICAgcHVibGljIHJlYXNvbjogRGlzcGF0Y2hGYWlsUmVhc29uLFxuICAgIHB1YmxpYyBvcHRpb25zPzogRGlzcGF0Y2hPcHRpb25zXG4gICkge31cbn1cblxuLyoqXG4gKiBBbiBldmVudCB0aGF0IGdldHMgZW1pdHRlZCBvbiBzdWNjZXNzZnVsIHVubXV0ZSB1c2luZyB0aGUgVW5pdHMnIGB1bm11dGVgIG1ldGhvZC5cbiAqIEBldmVudFxuICogQGNhdGVnb3J5IENvbW1vbiBVbml0c1xuICovXG5leHBvcnQgY2xhc3MgRXZlbnRVbml0VW5tdXRlIHt9XG5cbi8qKlxuICogQW4gZXZlbnQgdGhhdCBnZXRzIGVtaXR0ZWQgd2hlbiBhIFVuaXQgZ2V0cyBmcm96ZW4uXG4gKiBAZXZlbnRcbiAqIEBjYXRlZ29yeSBDb21tb24gVW5pdHNcbiAqL1xuZXhwb3J0IGNsYXNzIEV2ZW50VW5pdEZyZWV6ZSB7fVxuXG4vKipcbiAqIEFuIGV2ZW50IHRoYXQgZ2V0cyBlbWl0dGVkIHdoZW4gYSBVbml0IGdldHMgdW5mcm96ZW4gYWZ0ZXIgYmVpbmcgZnJvemVuLlxuICogQGV2ZW50XG4gKiBAY2F0ZWdvcnkgQ29tbW9uIFVuaXRzXG4gKi9cbmV4cG9ydCBjbGFzcyBFdmVudFVuaXRVbmZyZWV6ZSB7fVxuXG4vKipcbiAqIEFuIGV2ZW50IHRoYXQgZ2V0cyBlbWl0dGVkIG9uIHN1Y2Nlc3NmdWwgY2FjaGUtbmF2aWdhdGlvbixcbiAqIHVzaW5nIHRoZSBVbml0cycgc2V2ZXJhbCBjYWNoZS1uYXZpZ2F0aW9uIG1ldGhvZHMgbGlrZSBgZ29CYWNrYCwgYGdvRm9yd2FyZGAsIGBqdW1wYCwgZXRjLlxuICogQGV2ZW50XG4gKiBAY2F0ZWdvcnkgQ29tbW9uIFVuaXRzXG4gKi9cbmV4cG9ydCBjbGFzcyBFdmVudFVuaXRKdW1wIHtcbiAgLyoqXG4gICAqIEBwYXJhbSBzdGVwcyBUaGUgbnVtYmVyIG9mIHN0ZXBzIGp1bXBlZCByZXByZXNlbnRlZCBhcyBhIG51bWJlcixcbiAgICogcG9zaXRpdmUgZm9yIGZvcndhcmQgbmF2aWdhdGlvbiBhbmQgbmVnYXRpdmUgZm9yIGJhY2t3YXJkcy5cbiAgICogQHBhcmFtIG5ld0NhY2hlSW5kZXggVGhlIG5ldyBgY2FjaGVJbmRleGAgb2YgdGhlIGVtaXR0ZWQgdmFsdWUuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgc3RlcHM6IG51bWJlciwgcHVibGljIG5ld0NhY2hlSW5kZXg6IG51bWJlcikge31cbn1cblxuLyoqXG4gKiBBbiBldmVudCB0aGF0IGdldHMgZW1pdHRlZCBvbiBzdWNjZXNzZnVsIGV4ZWN1dGlvbiBvZiBVbml0cycgYGNsZWFyQ2FjaGVgIG1ldGhvZC5cbiAqIEBldmVudFxuICogQGNhdGVnb3J5IENvbW1vbiBVbml0c1xuICovXG5leHBvcnQgY2xhc3MgRXZlbnRVbml0Q2xlYXJDYWNoZSB7XG4gIC8qKlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyB0aGF0IHdlcmUgZGlyZWN0bHkgb3IgaW5kaXJlY3RseSBwYXNzZWQgdG8gdGhlIGBjbGVhckNhY2hlYCBtZXRob2QuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgb3B0aW9ucz86IENsZWFyQ2FjaGVPcHRpb25zKSB7fVxufVxuXG4vKipcbiAqIEFuIGV2ZW50IHRoYXQgZ2V0cyBlbWl0dGVkIG9uIHN1Y2Nlc3NmdWwgZXhlY3V0aW9uIG9mIFVuaXRzJyBgY2xlYXJWYWx1ZWAgbWV0aG9kLlxuICogQGV2ZW50XG4gKiBAY2F0ZWdvcnkgQ29tbW9uIFVuaXRzXG4gKi9cbmV4cG9ydCBjbGFzcyBFdmVudFVuaXRDbGVhclZhbHVlIHt9XG5cbi8qKlxuICogQW4gZXZlbnQgdGhhdCBnZXRzIGVtaXR0ZWQgb24gc3VjY2Vzc2Z1bCBleGVjdXRpb24gb2YgVW5pdHMnIGBjbGVhcmAgbWV0aG9kLlxuICogQGV2ZW50XG4gKiBAY2F0ZWdvcnkgQ29tbW9uIFVuaXRzXG4gKi9cbmV4cG9ydCBjbGFzcyBFdmVudFVuaXRDbGVhciB7XG4gIC8qKlxuICAgKiBAcGFyYW0gb3B0aW9ucyBUaGUgb3B0aW9ucyB0aGF0IHdlcmUgcGFzc2VkIGZvciB0aGUgaW1wbGljaXRseSBjYWxsZWQgYGNsZWFyQ2FjaGVgIG1ldGhvZC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBvcHRpb25zPzogQ2xlYXJDYWNoZU9wdGlvbnMpIHt9XG59XG5cbi8qKlxuICogQW4gZXZlbnQgdGhhdCBnZXRzIGVtaXR0ZWQgb24gc3VjY2Vzc2Z1bCBleGVjdXRpb24gb2YgVW5pdHMnIGByZXNldFZhbHVlYCBtZXRob2QuXG4gKiBAZXZlbnRcbiAqIEBjYXRlZ29yeSBDb21tb24gVW5pdHNcbiAqL1xuZXhwb3J0IGNsYXNzIEV2ZW50VW5pdFJlc2V0VmFsdWUge31cblxuLyoqXG4gKiBBbiBldmVudCB0aGF0IGdldHMgZW1pdHRlZCBvbiBzdWNjZXNzZnVsIGV4ZWN1dGlvbiBvZiBVbml0cycgYHJlc2V0YCBtZXRob2QuXG4gKiBAZXZlbnRcbiAqIEBjYXRlZ29yeSBDb21tb24gVW5pdHNcbiAqL1xuZXhwb3J0IGNsYXNzIEV2ZW50VW5pdFJlc2V0IHtcbiAgLyoqXG4gICAqIEBwYXJhbSBvcHRpb25zIFRoZSBvcHRpb25zIHRoYXQgd2VyZSBwYXNzZWQgZm9yIHRoZSBpbXBsaWNpdGx5IGNhbGxlZCBgY2xlYXJDYWNoZWAgbWV0aG9kLlxuICAgKi9cbiAgY29uc3RydWN0b3IocHVibGljIG9wdGlvbnM/OiBDbGVhckNhY2hlT3B0aW9ucykge31cbn1cblxuLyoqXG4gKiBBbiBldmVudCB0aGF0IGdldHMgZW1pdHRlZCBvbiBzdWNjZXNzZnVsIGV4ZWN1dGlvbiBvZiBVbml0cycgYGNsZWFyUGVyc2lzdGVudFZhbHVlYCBtZXRob2QuXG4gKiBAZXZlbnRcbiAqIEBjYXRlZ29yeSBDb21tb24gVW5pdHNcbiAqL1xuZXhwb3J0IGNsYXNzIEV2ZW50VW5pdENsZWFyUGVyc2lzdGVkVmFsdWUge31cblxuLy8gX19fX19fX19fX19fX19fX19fX19fX19fX19fXyBEaWN0VW5pdCBFdmVudHMgX19fX19fX19fX19fX19fX19fX19fX19fX19fXyAvL1xuLy8gX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXyAvL1xuXG4vKipcbiAqIEFuIGV2ZW50IHRoYXQgZ2V0cyBlbWl0dGVkIG9uIHN1Y2Nlc3NmdWwgZXhlY3V0aW9uIG9mIERpY3RVbml0J3MgYHNldGAgbWV0aG9kLlxuICogQGV2ZW50XG4gKiBAY2F0ZWdvcnkgRGljdFVuaXRcbiAqL1xuZXhwb3J0IGNsYXNzIEV2ZW50RGljdFVuaXRTZXQ8SywgVj4ge1xuICAvKipcbiAgICogQHBhcmFtIGtleSBUaGUgbmFtZSBvZiB0aGUgcHJvcGVydHkgdGhhdCB3YXMgcGFzc2VkIHRvIHRoZSBgc2V0YCBtZXRob2QuXG4gICAqIEBwYXJhbSB2YWx1ZSBUaGUgdmFsdWUgb2YgdGhlIHByb3BlcnR5IHRoYXQgd2FzIHBhc3NlZCB0byB0aGUgYHNldGAgbWV0aG9kLlxuICAgKi9cbiAgY29uc3RydWN0b3IocHVibGljIGtleTogSywgcHVibGljIHZhbHVlOiBWKSB7fVxufVxuXG4vKipcbiAqIEFuIGV2ZW50IHRoYXQgZ2V0cyBlbWl0dGVkIG9uIHN1Y2Nlc3NmdWwgZXhlY3V0aW9uIG9mIERpY3RVbml0J3MgYGFzc2lnbmAgbWV0aG9kLlxuICogQGV2ZW50XG4gKiBAY2F0ZWdvcnkgRGljdFVuaXRcbiAqL1xuZXhwb3J0IGNsYXNzIEV2ZW50RGljdFVuaXRBc3NpZ248VD4ge1xuICAvKipcbiAgICogQHBhcmFtIHNvdXJjZXMgVGhlIHNvdXJjZSBvYmplY3RzIHRoYXQgd2VyZSBwYXNzZWQgdG8gdGhlIGBhc3NpZ25gIG1ldGhvZC5cbiAgICogQHBhcmFtIG5ld1Byb3BzIFRoZSBuZXcgcHJvcGVydGllcyB0aGF0IGZpbmFsbHkgZ290IGFkZGVkIHRvIHRoZSBEaWN0VW5pdCdzIHZhbHVlLlxuICAgKi9cbiAgY29uc3RydWN0b3IocHVibGljIHNvdXJjZXM6IFRbXSwgcHVibGljIG5ld1Byb3BzOiBUKSB7fVxufVxuXG4vKipcbiAqIEFuIGV2ZW50IHRoYXQgZ2V0cyBlbWl0dGVkIG9uIHN1Y2Nlc3NmdWwgZXhlY3V0aW9uIG9mIERpY3RVbml0J3MgYGRlbGV0ZWAgb3IgYGRlbGV0ZUlmYCBtZXRob2QuXG4gKiBAZXZlbnRcbiAqIEBjYXRlZ29yeSBEaWN0VW5pdFxuICovXG5leHBvcnQgY2xhc3MgRXZlbnREaWN0VW5pdERlbGV0ZTxUPiB7XG4gIC8qKlxuICAgKiBAcGFyYW0gZGVsZXRlZFByb3BzIFRoZSBwcm9wZXJ0aWVzIHRoYXQgd2VyZSBkZWxldGVkIGJ5IHRoZSBgZGVsZXRlYCBvciBgZGVsZXRlSWZgIG1ldGhvZC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBkZWxldGVkUHJvcHM6IFQpIHt9XG59XG5cbi8vIF9fX19fX19fX19fX19fX19fX19fX19fX19fX18gTGlzdFVuaXQgRXZlbnRzIF9fX19fX19fX19fX19fX19fX19fX19fX19fX18gLy9cbi8vIF9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18gLy9cblxuLyoqXG4gKiBBbiBldmVudCB0aGF0IGdldHMgZW1pdHRlZCBvbiBzdWNjZXNzZnVsIGV4ZWN1dGlvbiBvZiBMaXN0VW5pdCdzIGBzZXRgIG1ldGhvZC5cbiAqIEBldmVudFxuICogQGNhdGVnb3J5IExpc3RVbml0XG4gKi9cbmV4cG9ydCBjbGFzcyBFdmVudExpc3RVbml0U2V0PEl0ZW0+IHtcbiAgLyoqXG4gICAqIEBwYXJhbSBpbmRleCBUaGUgaW5kZXggZm9yIHRoZSBpdGVtIHBhc3NlZCB0byB0aGUgYHNldGAgbWV0aG9kLlxuICAgKiBAcGFyYW0gaXRlbSBUaGUgaXRlbSBwYXNzZWQgdG8gdGhlIGBzZXRgIG1ldGhvZC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBpbmRleDogbnVtYmVyLCBwdWJsaWMgaXRlbTogSXRlbSkge31cbn1cblxuLyoqXG4gKiBBbiBldmVudCB0aGF0IGdldHMgZW1pdHRlZCBvbiBzdWNjZXNzZnVsIGV4ZWN1dGlvbiBvZiBMaXN0VW5pdCdzIGBwb3BgIG1ldGhvZC5cbiAqIEBldmVudFxuICogQGNhdGVnb3J5IExpc3RVbml0XG4gKi9cbmV4cG9ydCBjbGFzcyBFdmVudExpc3RVbml0UG9wPEl0ZW0+IHtcbiAgLyoqXG4gICAqIEBwYXJhbSBpdGVtIFRoZSBpdGVtIHRoYXQgZ290IHBvcHBlZCBmcm9tIHRoZSBMaXN0VW5pdCdzIHZhbHVlLlxuICAgKi9cbiAgY29uc3RydWN0b3IocHVibGljIGl0ZW06IEl0ZW0pIHt9XG59XG5cbi8qKlxuICogQW4gZXZlbnQgdGhhdCBnZXRzIGVtaXR0ZWQgb24gc3VjY2Vzc2Z1bCBleGVjdXRpb24gb2YgTGlzdFVuaXQncyBgcHVzaGAgbWV0aG9kLlxuICogQGV2ZW50XG4gKiBAY2F0ZWdvcnkgTGlzdFVuaXRcbiAqL1xuZXhwb3J0IGNsYXNzIEV2ZW50TGlzdFVuaXRQdXNoPEl0ZW0+IHtcbiAgLyoqXG4gICAqIEBwYXJhbSBpdGVtcyBUaGUgaXRlbXMgdGhhdCB3ZXJlIHBhc3NlZCB0byB0aGUgYHB1c2hgIG1ldGhvZC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBpdGVtczogSXRlbVtdKSB7fVxufVxuXG4vKipcbiAqIEFuIGV2ZW50IHRoYXQgZ2V0cyBlbWl0dGVkIG9uIHN1Y2Nlc3NmdWwgZXhlY3V0aW9uIG9mIExpc3RVbml0J3MgYHNoaWZ0YCBtZXRob2QuXG4gKiBAZXZlbnRcbiAqIEBjYXRlZ29yeSBMaXN0VW5pdFxuICovXG5leHBvcnQgY2xhc3MgRXZlbnRMaXN0VW5pdFNoaWZ0PEl0ZW0+IHtcbiAgLyoqXG4gICAqIEBwYXJhbSBpdGVtIFRoZSBpdGVtIHRoYXQgZ290IHNoaWZ0ZWQgb3V0LlxuICAgKi9cbiAgY29uc3RydWN0b3IocHVibGljIGl0ZW06IEl0ZW0pIHt9XG59XG5cbi8qKlxuICogQW4gZXZlbnQgdGhhdCBnZXRzIGVtaXR0ZWQgb24gc3VjY2Vzc2Z1bCBleGVjdXRpb24gb2YgTGlzdFVuaXQncyBgdW5zaGlmdGAgbWV0aG9kLlxuICogQGV2ZW50XG4gKiBAY2F0ZWdvcnkgTGlzdFVuaXRcbiAqL1xuZXhwb3J0IGNsYXNzIEV2ZW50TGlzdFVuaXRVbnNoaWZ0PEl0ZW0+IHtcbiAgLyoqXG4gICAqIEBwYXJhbSBpdGVtcyBUaGUgaXRlbXMgdGhhdCB3ZXJlIHBhc3NlZCB0byB0aGUgYHVuc2hpZnRgIG1ldGhvZC5cbiAgICovXG4gIGNvbnN0cnVjdG9yKHB1YmxpYyBpdGVtczogSXRlbVtdKSB7fVxufVxuXG4vKipcbiAqIEFuIGV2ZW50IHRoYXQgZ2V0cyBlbWl0dGVkIG9uIHN1Y2Nlc3NmdWwgZXhlY3V0aW9uIG9mIExpc3RVbml0J3MgYGRlbGV0ZWAgb3IgYGRlbGV0ZUlmYCBtZXRob2QuXG4gKiBAZXZlbnRcbiAqIEBjYXRlZ29yeSBMaXN0VW5pdFxuICovXG5leHBvcnQgY2xhc3MgRXZlbnRMaXN0VW5pdERlbGV0ZTxJdGVtPiB7XG4gIC8qKlxuICAgKiBAcGFyYW0gaW5kaWNlcyBUaGUgaW5kaWNlcyB0aGF0IHdlcmUgcGFzc2VkIHRvIHRoZSBgZGVsZXRlYCBtZXRob2QgZXhwbGljaXRseSxcbiAgICogb3IgaW1wbGljaXRseSBieSBgZGVsZXRlSWZgIG1ldGhvZC5cbiAgICogQHBhcmFtIGRlbGV0ZWRJdGVtcyBUaGUgaXRlbXMgdGhhdCBnb3QgZGVsZXRlZCBmcm9tIHRoZSBMaXN0VW5pdCdzIHZhbHVlLlxuICAgKi9cbiAgY29uc3RydWN0b3IocHVibGljIGluZGljZXM6IG51bWJlcltdLCBwdWJsaWMgZGVsZXRlZEl0ZW1zOiBJdGVtW10pIHt9XG59XG5cbi8qKlxuICogQW4gZXZlbnQgdGhhdCBnZXRzIGVtaXR0ZWQgb24gc3VjY2Vzc2Z1bCBleGVjdXRpb24gb2YgTGlzdFVuaXQncyBgcmVtb3ZlYCBvciBgcmVtb3ZlSWZgIG1ldGhvZC5cbiAqIEBldmVudFxuICogQGNhdGVnb3J5IExpc3RVbml0XG4gKi9cbmV4cG9ydCBjbGFzcyBFdmVudExpc3RVbml0UmVtb3ZlPEl0ZW0+IHtcbiAgLyoqXG4gICAqIEBwYXJhbSBpbmRpY2VzIFRoZSBpbmRpY2VzIHRoYXQgd2VyZSBwYXNzZWQgdG8gdGhlIGByZW1vdmVgIG1ldGhvZCBleHBsaWNpdGx5LFxuICAgKiBvciBpbXBsaWNpdGx5IGJ5IGByZW1vdmVJZmAgbWV0aG9kLlxuICAgKiBAcGFyYW0gcmVtb3ZlZEl0ZW1zIFRoZSBpdGVtcyB0aGF0IGdvdCByZW1vdmVkIGZyb20gdGhlIExpc3RVbml0J3MgdmFsdWUuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgaW5kaWNlczogbnVtYmVyW10sIHB1YmxpYyByZW1vdmVkSXRlbXM6IEl0ZW1bXSkge31cbn1cblxuLyoqXG4gKiBBbiBldmVudCB0aGF0IGdldHMgZW1pdHRlZCBvbiBzdWNjZXNzZnVsIGV4ZWN1dGlvbiBvZiBMaXN0VW5pdCdzIGBzcGxpY2VgIG9yIGBpbnNlcnRgIG1ldGhvZC5cbiAqIEBldmVudFxuICogQGNhdGVnb3J5IExpc3RVbml0XG4gKi9cbmV4cG9ydCBjbGFzcyBFdmVudExpc3RVbml0U3BsaWNlPEl0ZW0+IHtcbiAgLyoqXG4gICAqIEBwYXJhbSBzdGFydCBUaGUgemVyby1iYXNlZCBsb2NhdGlvbiB0aGF0IHdhcyBwYXNzZWQgdG8gdGhlIGBzcGxpY2VgIG1ldGhvZC5cbiAgICogQHBhcmFtIGRlbGV0ZUNvdW50IFRoZSBudW1iZXIgb2YgaXRlbXMgdGhhdCB3ZXJlIHRvIGJlIHJlbW92ZWQuXG4gICAqIEBwYXJhbSByZW1vdmVkSXRlbXMgVGhlIGl0ZW1zIHRoYXQgZ290IHJlbW92ZWQuXG4gICAqIEBwYXJhbSBhZGRlZEl0ZW1zIFRoZSBpdGVtcyB0aGF0IHdlcmUgcGFzc2VkIGFzIGBpdGVtc2AgdG8gYmUgYWRkZWQuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgc3RhcnQ6IG51bWJlcixcbiAgICBwdWJsaWMgZGVsZXRlQ291bnQ6IG51bWJlcixcbiAgICBwdWJsaWMgcmVtb3ZlZEl0ZW1zOiBJdGVtW10sXG4gICAgcHVibGljIGFkZGVkSXRlbXM6IEl0ZW1bXVxuICApIHt9XG59XG5cbi8qKlxuICogQW4gZXZlbnQgdGhhdCBnZXRzIGVtaXR0ZWQgb24gc3VjY2Vzc2Z1bCBleGVjdXRpb24gb2YgTGlzdFVuaXQncyBgZmlsbGAgbWV0aG9kLlxuICogQGV2ZW50XG4gKiBAY2F0ZWdvcnkgTGlzdFVuaXRcbiAqL1xuZXhwb3J0IGNsYXNzIEV2ZW50TGlzdFVuaXRGaWxsPEl0ZW0+IHtcbiAgLyoqXG4gICAqIEBwYXJhbSBpdGVtIFRoZSBpdGVtIHRoYXQgd2FzIHBhc3NlZCB0byB0aGUgYGZpbGxgIG1ldGhvZC5cbiAgICogQHBhcmFtIHN0YXJ0IFRoZSBzdGFydGluZyBwb3NpdGlvbiB3aGVyZSB0aGUgZmlsbGluZyBzdGFydGVkLlxuICAgKiBAcGFyYW0gZW5kIFRoZSBsYXN0IHBvc2l0aW9uIHdoZXJlIHRoZSBmaWxsaW5nIHN0b3BwZWQuXG4gICAqL1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgaXRlbTogSXRlbSwgcHVibGljIHN0YXJ0PzogbnVtYmVyLCBwdWJsaWMgZW5kPzogbnVtYmVyKSB7fVxufVxuXG4vKipcbiAqIEFuIGV2ZW50IHRoYXQgZ2V0cyBlbWl0dGVkIG9uIHN1Y2Nlc3NmdWwgZXhlY3V0aW9uIG9mIExpc3RVbml0J3MgYGNvcHlXaXRoaW5gIG1ldGhvZC5cbiAqIEBldmVudFxuICogQGNhdGVnb3J5IExpc3RVbml0XG4gKi9cbmV4cG9ydCBjbGFzcyBFdmVudExpc3RVbml0Q29weVdpdGhpbjxJdGVtPiB7XG4gIC8qKlxuICAgKiBAcGFyYW0gdGFyZ2V0IFRoZSB0YXJnZXQgcG9zaXRpb24gZnJvbSB3aGVyZSB0aGUgY29waWVkIHNlY3Rpb24gc3RhcnRzIHJlcGxhY2luZy5cbiAgICogQHBhcmFtIHN0YXJ0IFRoZSBzdGFydGluZyBwb3NpdGlvbiBvZiB0aGUgY29waWVkIHNlY3Rpb24uXG4gICAqIEBwYXJhbSBlbmQgVGhlIGVuZGluZyBwb3NpdGlvbiBvZiB0aGUgY29waWVkIHNlY3Rpb24uXG4gICAqL1xuICBjb25zdHJ1Y3RvcihwdWJsaWMgdGFyZ2V0OiBudW1iZXIsIHB1YmxpYyBzdGFydDogbnVtYmVyLCBwdWJsaWMgZW5kPzogbnVtYmVyKSB7fVxufVxuXG4vKipcbiAqIEFuIGV2ZW50IHRoYXQgZ2V0cyBlbWl0dGVkIG9uIHN1Y2Nlc3NmdWwgZXhlY3V0aW9uIG9mIExpc3RVbml0J3MgYHJldmVyc2VgIG1ldGhvZC5cbiAqIEBldmVudFxuICogQGNhdGVnb3J5IExpc3RVbml0XG4gKi9cbmV4cG9ydCBjbGFzcyBFdmVudExpc3RVbml0UmV2ZXJzZSB7fVxuXG4vKipcbiAqIEFuIGV2ZW50IHRoYXQgZ2V0cyBlbWl0dGVkIG9uIHN1Y2Nlc3NmdWwgZXhlY3V0aW9uIG9mIExpc3RVbml0J3MgYHNvcnRgIG1ldGhvZC5cbiAqIEBldmVudFxuICogQGNhdGVnb3J5IExpc3RVbml0XG4gKi9cbmV4cG9ydCBjbGFzcyBFdmVudExpc3RVbml0U29ydCB7fVxuIl19