browserscale-ts 1.3.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -5
- package/dist/browser.d.ts +1 -1
- package/dist/browserscale.browser.js +40 -15
- package/dist/client.d.ts +30 -14
- package/dist/client.js +45 -13
- package/dist/gen/wrc_pb.d.ts +71 -11
- package/dist/gen/wrc_pb.js +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/internal/convert.js +1 -0
- package/dist/options.d.ts +50 -2
- package/dist/types.d.ts +7 -9
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -60,10 +60,11 @@ Rent an isolated browser session in seconds, automate it with human-like input,
|
|
|
60
60
|
through. Wait for, block, mock or modify requests and responses without
|
|
61
61
|
leaving the SDK; mark repeated assets as static with `setStaticPaths` to
|
|
62
62
|
serve them from a server-side cache and cut proxy bandwidth on repeat runs.
|
|
63
|
-
- **Agent-friendly observation** — `getObservation` returns
|
|
64
|
-
|
|
65
|
-
with
|
|
66
|
-
|
|
63
|
+
- **Agent-friendly observation** — `getObservation` returns one line per visible
|
|
64
|
+
element across every frame, under headers carrying the URL, title and scroll
|
|
65
|
+
offset, with live form state (typed values, checkbox state, `<select>`
|
|
66
|
+
options) and a node handle to act on. A model reasons over what matters
|
|
67
|
+
instead of raw HTML, and doesn't need a JS round-trip to ask where it is.
|
|
67
68
|
- **Flow-optimized TypeScript** — fully typed promise-based API, `wait` races
|
|
68
69
|
multiple outcomes, JS locators target elements by page logic when CSS is
|
|
69
70
|
not enough. Runs in Node.js (native gRPC) and the browser (WebSocket via
|
|
@@ -124,7 +125,7 @@ reports the element that occluded the click.
|
|
|
124
125
|
| `browser.click(target, opts?)` | Human-like click; throws a rich `ClickError` on failure. |
|
|
125
126
|
| `browser.fill(target, text, opts?)` | Per-key typing that fires real input events; `insertText` for bulk commit. |
|
|
126
127
|
| `browser.evaluate(expr)` | Run JS in the page/frame and get a typed value back. |
|
|
127
|
-
| `browser.getObservation(opts?)` | Compact, node-handle-tagged view of
|
|
128
|
+
| `browser.getObservation(opts?)` | Compact, node-handle-tagged view of the visible page across frames; `opts` tunes budgets and format. |
|
|
128
129
|
| `browser.solveCaptcha(opts?)` | Solve an interactive challenge in the live browser. |
|
|
129
130
|
| `browser.stopBrowser()` | Release the rental. |
|
|
130
131
|
|
package/dist/browser.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ export { BrowserConfig } from "./config.ts";
|
|
|
5
5
|
export { Locator, css, js, node, at, AllFrames } from "./locator.ts";
|
|
6
6
|
export { DefaultWaitTimeoutMs, DefaultVisible, DefaultSteadyMs, } from "./defaults.ts";
|
|
7
7
|
export { BrowserScaleError, ClickError, FillError, DragError, ScrollError, MoveError, SelectOptionError, WaitError, } from "./errors.ts";
|
|
8
|
-
export type { Rect, FrameInfo, PageInfo, Header, InterceptedRequest, InterceptedResponse, WaitResult, WaitConditionStatus, OccluderInfo, ElementRef, NavigateResult, EvaluateResult, ElementResult, DragResult, SelectOptionResult,
|
|
8
|
+
export type { Rect, FrameInfo, PageInfo, Header, InterceptedRequest, InterceptedResponse, WaitResult, WaitConditionStatus, OccluderInfo, ElementRef, NavigateResult, EvaluateResult, ElementResult, DragResult, SelectOptionResult, ScreenshotResult, ReadCanvasResult, DOMResult, InspectResult, RentResponse, } from "./types.ts";
|
|
9
9
|
export type { Button, ClickAction, ClickOpts, FillOpts, SelectOpts, WaitOpts, WaitUntil, NavigateOpts, LoadHTMLOpts, GetDOMOpts, GetObservationOpts, ScreenshotOpts, ReadCanvasOpts, } from "./options.ts";
|
|
10
10
|
export { type RequestPattern, type HeaderModification, type HeaderModificationAction, } from "./network.ts";
|
|
11
11
|
export type { CookieParam } from "./cookies.ts";
|
|
@@ -3799,7 +3799,7 @@ function serviceDesc(file, path, ...paths) {
|
|
|
3799
3799
|
}
|
|
3800
3800
|
|
|
3801
3801
|
// src/gen/wrc_pb.ts
|
|
3802
|
-
var file_wrc = /* @__PURE__ */ fileDesc("Cgl3cmMucHJvdG8SD2Jyb3dzZXJzY2FsZS52MSI7CgRSZWN0EgkKAXgYASABKAESCQoBeRgCIAEoARINCgV3aWR0aBgDIAEoARIOCgZoZWlnaHQYBCABKAEihgIKCUZyYW1lSW5mbxIQCghmcmFtZV9pZBgBIAEoCRILCgN1cmwYAiABKAkSEAoIaXNfb29waWYYAyABKAgSFgoOaGFzX2pzX2NvbnRleHQYBCABKAgSEgoKaXNfbG9hZGluZxgFIAEoCBISCgppc192aXNpYmxlGAYgASgIEiwKDWFic29sdXRlX3JlY3QYByABKAsyFS5icm93c2Vyc2NhbGUudjEuUmVjdBIsCg1yZWxhdGl2ZV9yZWN0GAggASgLMhUuYnJvd3NlcnNjYWxlLnYxLlJlY3QSLAoIY2hpbGRyZW4YCSADKAsyGi5icm93c2Vyc2NhbGUudjEuRnJhbWVJbmZvIqwBCghQYWdlSW5mbxIPCgdwYWdlX2lkGAEgASgJEhoKEmJyb3dzZXJfY29udGV4dF9pZBgCIAEoCRILCgN1cmwYAyABKAkSDQoFdGl0bGUYBCABKAkSJwoIdmlld3BvcnQYBSABKAsyFS5icm93c2Vyc2NhbGUudjEuUmVjdBIuCgpmcmFtZV90cmVlGAYgASgLMhouYnJvd3NlcnNjYWxlLnYxLkZyYW1lSW5mbyIlCgZIZWFkZXISDAoEbmFtZRgBIAEoCRINCgV2YWx1ZRgCIAEoCSKAAQoSSW50ZXJjZXB0ZWRSZXF1ZXN0Eg4KBm1ldGhvZBgBIAEoCRILCgN1cmwYAiABKAkSKAoHaGVhZGVycxgDIAMoCzIXLmJyb3dzZXJzY2FsZS52MS5IZWFkZXISDAoEYm9keRgEIAEoCRIVCg1yZXNvdXJjZV90eXBlGAUgASgJIm8KE0ludGVyY2VwdGVkUmVzcG9uc2USCwoDdXJsGAEgASgJEhMKC3N0YXR1c19jb2RlGAIgASgFEigKB2hlYWRlcnMYAyADKAsyFy5icm93c2Vyc2NhbGUudjEuSGVhZGVyEgwKBGJvZHkYBCABKAkijgEKEkhlYWRlck1vZGlmaWNhdGlvbhIMCgRuYW1lGAEgASgJEhIKBXZhbHVlGAIgASgJSACIAQESDgoGYWN0aW9uGAMgASgJEhMKBmJlZm9yZRgEIAEoCUgBiAEBEhIKBWFmdGVyGAUgASgJSAKIAQFCCAoGX3ZhbHVlQgkKB19iZWZvcmVCCAoGX2FmdGVyIk0KEkNvb2tpZVBhcnRpdGlvbktleRIWCg50b3BfbGV2ZWxfc2l0ZRgBIAEoCRIfChdoYXNfY3Jvc3Nfc2l0ZV9hbmNlc3RvchgCIAEoCCK/AwoLQ29va2llUGFyYW0SDAoEbmFtZRgBIAEoCRINCgV2YWx1ZRgCIAEoCRIQCgN1cmwYAyABKAlIAIgBARIOCgZkb21haW4YBCABKAkSDAoEcGF0aBgFIAEoCRITCgZzZWN1cmUYBiABKAhIAYgBARIWCglodHRwX29ubHkYByABKAhIAogBARIWCglzYW1lX3NpdGUYCCABKAlIA4gBARIUCgdleHBpcmVzGAkgASgBSASIAQESFQoIcHJpb3JpdHkYCiABKAlIBYgBARIaCg1zb3VyY2Vfc2NoZW1lGAsgASgJSAaIAQESGAoLc291cmNlX3BvcnQYDCABKAVIB4gBARI/Cg1wYXJ0aXRpb25fa2V5GA0gASgLMiMuYnJvd3NlcnNjYWxlLnYxLkNvb2tpZVBhcnRpdGlvbktleUgIiAEBQgYKBF91cmxCCQoHX3NlY3VyZUIMCgpfaHR0cF9vbmx5QgwKCl9zYW1lX3NpdGVCCgoIX2V4cGlyZXNCCwoJX3ByaW9yaXR5QhAKDl9zb3VyY2Vfc2NoZW1lQg4KDF9zb3VyY2VfcG9ydEIQCg5fcGFydGl0aW9uX2tleSKtAQoNV2FpdENvbmRpdGlvbhIVCghzZWxlY3RvchgBIAEoCUgAiAEBEhoKDWpzX2V4cHJlc3Npb24YAiABKAlIAYgBARIUCgd2aXNpYmxlGAMgASgISAKIAQESGAoLc3RlYWR5X3RpbWUYBCABKAFIA4gBAUILCglfc2VsZWN0b3JCEAoOX2pzX2V4cHJlc3Npb25CCgoIX3Zpc2libGVCDgoMX3N0ZWFkeV90aW1lIrsBCgpXYWl0UmVzdWx0Eg0KBWluZGV4GAEgASgFEhAKCGZyYW1lX2lkGAIgASgJEhcKD2JhY2tlbmRfbm9kZV9pZBgDIAEoBRISCgppc192aXNpYmxlGAQgASgIEiUKBmJvdW5kcxgFIAEoCzIVLmJyb3dzZXJzY2FsZS52MS5SZWN0Ei4KBWVycm9yGAYgASgLMhouYnJvd3NlcnNjYWxlLnYxLldhaXRFcnJvckgAiAEBQggKBl9lcnJvciLsAQoTV2FpdENvbmRpdGlvblN0YXR1cxINCgVpbmRleBgBIAEoBRINCgVzdGF0ZRgCIAEoCRIXCg9iYWNrZW5kX25vZGVfaWQYAyABKAUSEAoIZnJhbWVfaWQYBCABKAkSEgoKaXNfdmlzaWJsZRgFIAEoCBIqCgZib3VuZHMYBiABKAsyFS5icm93c2Vyc2NhbGUudjEuUmVjdEgAiAEBEjQKCG9jY2x1ZGVyGAcgASgLMh0uYnJvd3NlcnNjYWxlLnYxLk9jY2x1ZGVySW5mb0gBiAEBQgkKB19ib3VuZHNCCwoJX29jY2x1ZGVyImQKCVdhaXRFcnJvchIMCgRjb2RlGAEgASgJEg8KB21lc3NhZ2UYAiABKAkSOAoKY29uZGl0aW9ucxgDIAMoCzIkLmJyb3dzZXJzY2FsZS52MS5XYWl0Q29uZGl0aW9uU3RhdHVzIqYBCg1FbGVtZW50UmVzdWx0Eg8KB3N1Y2Nlc3MYASABKAgSEAoIZnJhbWVfaWQYAiABKAkSFwoPYmFja2VuZF9ub2RlX2lkGAMgASgFEhIKCmlzX3Zpc2libGUYBCABKAgSJQoGYm91bmRzGAUgASgLMhUuYnJvd3NlcnNjYWxlLnYxLlJlY3QSDgoGcm9vdF94GAYgASgBEg4KBnJvb3RfeRgHIAEoASKuAwoMT2NjbHVkZXJJbmZvEhcKD2JhY2tlbmRfbm9kZV9pZBgBIAEoBRIQCghmcmFtZV9pZBgCIAEoCRIQCgh0YWdfbmFtZRgDIAEoCRIPCgJpZBgEIAEoCUgAiAEBEhcKCmNsYXNzX25hbWUYBSABKAlIAYgBARIRCgR0ZXh0GAYgASgJSAKIAQESJQoGYm91bmRzGAcgASgLMhUuYnJvd3NlcnNjYWxlLnYxLlJlY3QSGwoOcG9pbnRlcl9ldmVudHMYCCABKAlIA4gBARIXCgp2aXNpYmlsaXR5GAkgASgJSASIAQESFAoHb3BhY2l0eRgKIAEoAUgFiAEBEhQKB3pfaW5kZXgYCyABKAlIBogBARIlChhoaXR0YWJsZV93aGlsZV9pbnZpc2libGUYDCABKAhIB4gBAUIFCgNfaWRCDQoLX2NsYXNzX25hbWVCBwoFX3RleHRCEQoPX3BvaW50ZXJfZXZlbnRzQg0KC192aXNpYmlsaXR5QgoKCF9vcGFjaXR5QgoKCF96X2luZGV4QhsKGV9oaXR0YWJsZV93aGlsZV9pbnZpc2libGUioAEKCkNsaWNrRXJyb3ISDAoEY29kZRgBIAEoCRIPCgdtZXNzYWdlGAIgASgJEjQKCG9jY2x1ZGVyGAMgASgLMh0uYnJvd3NlcnNjYWxlLnYxLk9jY2x1ZGVySW5mb0gAiAEBEhwKD2V2YWRlX2F0dGVtcHRlZBgEIAEoCEgBiAEBQgsKCV9vY2NsdWRlckISChBfZXZhZGVfYXR0ZW1wdGVkIt8BCgtDbGlja1Jlc3VsdBIPCgdzdWNjZXNzGAEgASgIEhAKCGZyYW1lX2lkGAIgASgJEhcKD2JhY2tlbmRfbm9kZV9pZBgDIAEoBRISCgppc192aXNpYmxlGAQgASgIEiUKBmJvdW5kcxgFIAEoCzIVLmJyb3dzZXJzY2FsZS52MS5SZWN0Eg4KBnJvb3RfeBgGIAEoARIOCgZyb290X3kYByABKAESLwoFZXJyb3IYCCABKAsyGy5icm93c2Vyc2NhbGUudjEuQ2xpY2tFcnJvckgAiAEBQggKBl9lcnJvciKeAgoMUmVhY3Rpb25JbmZvEhMKC3JlYWN0aW9uX2lkGAEgASgJEhsKDm1hdGNoX3NlbGVjdG9yGAIgASgJSACIAQESIAoTbWF0Y2hfanNfZXhwcmVzc2lvbhgDIAEoCUgBiAEBEhwKD2FjdGlvbl9zZWxlY3RvchgEIAEoCUgCiAEBEiEKFGFjdGlvbl9qc19leHByZXNzaW9uGAUgASgJSAOIAQESEAoIZnJhbWVfaWQYBiABKAkSDwoHdmlzaWJsZRgHIAEoCEIRCg9fbWF0Y2hfc2VsZWN0b3JCFgoUX21hdGNoX2pzX2V4cHJlc3Npb25CEgoQX2FjdGlvbl9zZWxlY3RvckIXChVfYWN0aW9uX2pzX2V4cHJlc3Npb24i1gMKEkFkZFJlYWN0aW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIbCg5tYXRjaF9zZWxlY3RvchgEIAEoCUgAiAEBEiAKE21hdGNoX2pzX2V4cHJlc3Npb24YBSABKAlIAYgBARIVCghmcmFtZV9pZBgGIAEoCUgCiAEBEhQKB3Zpc2libGUYByABKAhIA4gBARIcCg9hY3Rpb25fc2VsZWN0b3IYCCABKAlIBIgBARIhChRhY3Rpb25fanNfZXhwcmVzc2lvbhgJIAEoCUgFiAEBEhMKBmJ1dHRvbhgKIAEoCUgGiAEBEhgKC2NsaWNrX2NvdW50GAsgASgFSAeIAQESFQoIaW50ZXJ2YWwYDCABKAFICIgBAUIRCg9fbWF0Y2hfc2VsZWN0b3JCFgoUX21hdGNoX2pzX2V4cHJlc3Npb25CCwoJX2ZyYW1lX2lkQgoKCF92aXNpYmxlQhIKEF9hY3Rpb25fc2VsZWN0b3JCFwoVX2FjdGlvbl9qc19leHByZXNzaW9uQgkKB19idXR0b25CDgoMX2NsaWNrX2NvdW50QgsKCV9pbnRlcnZhbCIqChNBZGRSZWFjdGlvblJlc3BvbnNlEhMKC3JlYWN0aW9uX2lkGAEgASgJIlEKFVJlbW92ZVJlYWN0aW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSEwoLcmVhY3Rpb25faWQYAyABKAkiKQoWUmVtb3ZlUmVhY3Rpb25SZXNwb25zZRIPCgdyZW1vdmVkGAEgASgIIkwKFExpc3RSZWFjdGlvbnNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJIkkKFUxpc3RSZWFjdGlvbnNSZXNwb25zZRIwCglyZWFjdGlvbnMYASADKAsyHS5icm93c2Vyc2NhbGUudjEuUmVhY3Rpb25JbmZvIukBCgpFbGVtZW50UmVmEhcKD2JhY2tlbmRfbm9kZV9pZBgBIAEoBRIQCgh0YWdfbmFtZRgCIAEoCRIPCgJpZBgDIAEoCUgAiAEBEhEKBG5hbWUYBCABKAlIAYgBARIXCgpjbGFzc19uYW1lGAUgASgJSAKIAQESFwoKaW5wdXRfdHlwZRgGIAEoCUgDiAEBEhEKBHRleHQYByABKAlIBIgBARIQCghlZGl0YWJsZRgIIAEoCEIFCgNfaWRCBwoFX25hbWVCDQoLX2NsYXNzX25hbWVCDQoLX2lucHV0X3R5cGVCBwoFX3RleHQi7gIKCUZpbGxFcnJvchIMCgRjb2RlGAEgASgJEg8KB21lc3NhZ2UYAiABKAkSNQoLY2xpY2tfZXJyb3IYAyABKAsyGy5icm93c2Vyc2NhbGUudjEuQ2xpY2tFcnJvckgAiAEBEiQKF2ZvY3VzZWRfYmFja2VuZF9ub2RlX2lkGAQgASgFSAGIAQESOQoPZm9jdXNlZF9lbGVtZW50GAUgASgLMhsuYnJvd3NlcnNjYWxlLnYxLkVsZW1lbnRSZWZIAogBARIcCg90YXJnZXRfZWRpdGFibGUYBiABKAhIA4gBARIgChN0YXJnZXRfdmFsdWVfbGVuZ3RoGAcgASgFSASIAQFCDgoMX2NsaWNrX2Vycm9yQhoKGF9mb2N1c2VkX2JhY2tlbmRfbm9kZV9pZEISChBfZm9jdXNlZF9lbGVtZW50QhIKEF90YXJnZXRfZWRpdGFibGVCFgoUX3RhcmdldF92YWx1ZV9sZW5ndGgiogEKCkZpbGxSZXN1bHQSDwoHc3VjY2VzcxgBIAEoCBIQCghmcmFtZV9pZBgCIAEoCRIXCg9iYWNrZW5kX25vZGVfaWQYAyABKAUSDgoGcm9vdF94GAYgASgBEg4KBnJvb3RfeRgHIAEoARIuCgVlcnJvchgIIAEoCzIaLmJyb3dzZXJzY2FsZS52MS5GaWxsRXJyb3JIAIgBAUIICgZfZXJyb3IiwgEKCkRyYWdSZXN1bHQSDwoHc3VjY2VzcxgBIAEoCBIQCghmcmFtZV9pZBgCIAEoCRIXCg9iYWNrZW5kX25vZGVfaWQYAyABKAUSDwoHc3RhcnRfeBgEIAEoARIPCgdzdGFydF95GAUgASgBEg0KBWVuZF94GAYgASgBEg0KBWVuZF95GAcgASgBEi4KBWVycm9yGAggASgLMhouYnJvd3NlcnNjYWxlLnYxLkRyYWdFcnJvckgAiAEBQggKBl9lcnJvciJxCglEcmFnRXJyb3ISDAoEY29kZRgBIAEoCRIPCgdtZXNzYWdlGAIgASgJEjUKC2NsaWNrX2Vycm9yGAMgASgLMhsuYnJvd3NlcnNjYWxlLnYxLkNsaWNrRXJyb3JIAIgBAUIOCgxfY2xpY2tfZXJyb3IirgEKElNlbGVjdE9wdGlvblJlc3VsdBIWCg5zZWxlY3RlZF9pbmRleBgBIAEoBRIWCg5zZWxlY3RlZF92YWx1ZRgCIAEoCRIVCg1zZWxlY3RlZF90ZXh0GAMgASgJEg8KB3N1Y2Nlc3MYBCABKAgSNgoFZXJyb3IYBSABKAsyIi5icm93c2Vyc2NhbGUudjEuU2VsZWN0T3B0aW9uRXJyb3JIAIgBAUIICgZfZXJyb3IiMgoRU2VsZWN0T3B0aW9uRXJyb3ISDAoEY29kZRgBIAEoCRIPCgdtZXNzYWdlGAIgASgJIsEBCgxTY3JvbGxSZXN1bHQSDwoHc3VjY2VzcxgBIAEoCBIQCghmcmFtZV9pZBgCIAEoCRIXCg9iYWNrZW5kX25vZGVfaWQYAyABKAUSEgoKaXNfdmlzaWJsZRgEIAEoCBIlCgZib3VuZHMYBSABKAsyFS5icm93c2Vyc2NhbGUudjEuUmVjdBIwCgVlcnJvchgIIAEoCzIcLmJyb3dzZXJzY2FsZS52MS5TY3JvbGxFcnJvckgAiAEBQggKBl9lcnJvciIsCgtTY3JvbGxFcnJvchIMCgRjb2RlGAEgASgJEg8KB21lc3NhZ2UYAiABKAki3QEKCk1vdmVSZXN1bHQSDwoHc3VjY2VzcxgBIAEoCBIQCghmcmFtZV9pZBgCIAEoCRIXCg9iYWNrZW5kX25vZGVfaWQYAyABKAUSEgoKaXNfdmlzaWJsZRgEIAEoCBIlCgZib3VuZHMYBSABKAsyFS5icm93c2Vyc2NhbGUudjEuUmVjdBIOCgZyb290X3gYBiABKAESDgoGcm9vdF95GAcgASgBEi4KBWVycm9yGAggASgLMhouYnJvd3NlcnNjYWxlLnYxLk1vdmVFcnJvckgAiAEBQggKBl9lcnJvciIqCglNb3ZlRXJyb3ISDAoEY29kZRgBIAEoCRIPCgdtZXNzYWdlGAIgASgJIuYBCg9TZXRQcm94eVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhcKCnByb3h5X2hvc3QYAyABKAlIAIgBARIXCgpwcm94eV9wb3J0GAQgASgFSAGIAQESGwoOcHJveHlfdXNlcm5hbWUYBSABKAlIAogBARIbCg5wcm94eV9wYXNzd29yZBgGIAEoCUgDiAEBQg0KC19wcm94eV9ob3N0Qg0KC19wcm94eV9wb3J0QhEKD19wcm94eV91c2VybmFtZUIRCg9fcHJveHlfcGFzc3dvcmQiNgoPR2V0UGFnZXNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCSI8ChBHZXRQYWdlc1Jlc3BvbnNlEigKBXBhZ2VzGAEgAygLMhkuYnJvd3NlcnNjYWxlLnYxLlBhZ2VJbmZvIpoBCg9OYXZpZ2F0ZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSCwoDdXJsGAQgASgJEhUKCHJlZmVycmVyGAUgASgJSACIAQESFAoHdGltZW91dBgGIAEoAUgBiAEBQgsKCV9yZWZlcnJlckIKCghfdGltZW91dCIxChBOYXZpZ2F0ZVJlc3BvbnNlEhAKCGZyYW1lX2lkGAEgASgJEgsKA3VybBgCIAEoCSK2AQoPTG9hZEhUTUxSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEgsKA3VybBgEIAEoCRIMCgRodG1sGAUgASgJEigKB2hlYWRlcnMYBiADKAsyFy5icm93c2Vyc2NhbGUudjEuSGVhZGVyEhgKC3N0YXR1c19jb2RlGAcgASgFSACIAQFCDgoMX3N0YXR1c19jb2RlIn8KD0V2YWx1YXRlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRISCgpleHByZXNzaW9uGAQgASgJEhUKCGZyYW1lX2lkGAUgASgJSACIAQFCCwoJX2ZyYW1lX2lkInYKEEV2YWx1YXRlUmVzcG9uc2USDgoGcmVzdWx0GAEgASgJEhcKD2JhY2tlbmRfbm9kZV9pZBgCIAEoBRISCgppc192aXNpYmxlGAMgASgIEiUKBmJvdW5kcxgEIAEoCzIVLmJyb3dzZXJzY2FsZS52MS5SZWN0ImMKClJ1blJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg4KBnNvdXJjZRgDIAEoCRIUCgdwYWdlX2lkGAQgASgJSACIAQFCCgoIX3BhZ2VfaWQiLgoLUnVuUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIOCgZyZXN1bHQYAiABKAkiwgEKEFdhaXRGb3JBbnlQYXJhbXMSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSMgoKY29uZGl0aW9ucxgEIAMoCzIeLmJyb3dzZXJzY2FsZS52MS5XYWl0Q29uZGl0aW9uEhUKCGZyYW1lX2lkGAUgASgJSACIAQESFAoHdGltZW91dBgGIAEoAUgBiAEBQgsKCV9mcmFtZV9pZEIKCghfdGltZW91dCL1AgoTU2VsZWN0T3B0aW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIcCg9iYWNrZW5kX25vZGVfaWQYBCABKAVIAIgBARIVCghzZWxlY3RvchgFIAEoCUgBiAEBEhoKDWpzX2V4cHJlc3Npb24YBiABKAlIAogBARIVCghmcmFtZV9pZBgHIAEoCUgDiAEBEhIKBWluZGV4GAggASgFSASIAQESEgoFdmFsdWUYCSABKAlIBYgBARIRCgR0ZXh0GAogASgJSAaIAQESGAoLZmlyZV9ldmVudHMYCyABKAhIB4gBAUISChBfYmFja2VuZF9ub2RlX2lkQgsKCV9zZWxlY3RvckIQCg5fanNfZXhwcmVzc2lvbkILCglfZnJhbWVfaWRCCAoGX2luZGV4QggKBl92YWx1ZUIHCgVfdGV4dEIOCgxfZmlyZV9ldmVudHMi7wEKD1Njcm9sbFRvUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIcCg9iYWNrZW5kX25vZGVfaWQYBCABKAVIAIgBARIVCghzZWxlY3RvchgFIAEoCUgBiAEBEhoKDWpzX2V4cHJlc3Npb24YBiABKAlIAogBARIVCghmcmFtZV9pZBgHIAEoCUgDiAEBQhIKEF9iYWNrZW5kX25vZGVfaWRCCwoJX3NlbGVjdG9yQhAKDl9qc19leHByZXNzaW9uQgsKCV9mcmFtZV9pZCKZAgoNTW92ZVRvUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIcCg9iYWNrZW5kX25vZGVfaWQYBCABKAVIAIgBARIVCghzZWxlY3RvchgFIAEoCUgBiAEBEhoKDWpzX2V4cHJlc3Npb24YBiABKAlIAogBARIVCghmcmFtZV9pZBgHIAEoCUgDiAEBEg4KAXgYCCABKAFIBIgBARIOCgF5GAkgASgBSAWIAQFCEgoQX2JhY2tlbmRfbm9kZV9pZEILCglfc2VsZWN0b3JCEAoOX2pzX2V4cHJlc3Npb25CCwoJX2ZyYW1lX2lkQgQKAl94QgQKAl95IoIDCgxDbGlja1JlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSHAoPYmFja2VuZF9ub2RlX2lkGAQgASgFSACIAQESFQoIc2VsZWN0b3IYBSABKAlIAYgBARIaCg1qc19leHByZXNzaW9uGAYgASgJSAKIAQESFQoIZnJhbWVfaWQYByABKAlIA4gBARITCgZidXR0b24YCCABKAlIBIgBARIYCgtjbGlja19jb3VudBgJIAEoBUgFiAEBEg4KAXgYCiABKAFIBogBARIOCgF5GAsgASgBSAeIAQESEwoGYWN0aW9uGAwgASgJSAiIAQFCEgoQX2JhY2tlbmRfbm9kZV9pZEILCglfc2VsZWN0b3JCEAoOX2pzX2V4cHJlc3Npb25CCwoJX2ZyYW1lX2lkQgkKB19idXR0b25CDgoMX2NsaWNrX2NvdW50QgQKAl94QgQKAl95QgkKB19hY3Rpb24igwMKC0RyYWdSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEhwKD2JhY2tlbmRfbm9kZV9pZBgEIAEoBUgAiAEBEhUKCHNlbGVjdG9yGAUgASgJSAGIAQESGgoNanNfZXhwcmVzc2lvbhgGIAEoCUgCiAEBEhUKCGZyYW1lX2lkGAcgASgJSAOIAQESFQoIb2Zmc2V0X3gYCCABKAFIBIgBARIVCghvZmZzZXRfeRgJIAEoAUgFiAEBEhcKCmFic29sdXRlX3gYCiABKAFIBogBARIXCgphYnNvbHV0ZV95GAsgASgBSAeIAQFCEgoQX2JhY2tlbmRfbm9kZV9pZEILCglfc2VsZWN0b3JCEAoOX2pzX2V4cHJlc3Npb25CCwoJX2ZyYW1lX2lkQgsKCV9vZmZzZXRfeEILCglfb2Zmc2V0X3lCDQoLX2Fic29sdXRlX3hCDQoLX2Fic29sdXRlX3ki7wIKC0ZpbGxSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEhwKD2JhY2tlbmRfbm9kZV9pZBgEIAEoBUgAiAEBEhUKCHNlbGVjdG9yGAUgASgJSAGIAQESGgoNanNfZXhwcmVzc2lvbhgGIAEoCUgCiAEBEhUKCGZyYW1lX2lkGAcgASgJSAOIAQESDAoEdGV4dBgIIAEoCRIYCgtjbGVhcl9maXJzdBgJIAEoCEgEiAEBEhQKB3RpbWVvdXQYCiABKAFIBYgBARIYCgtzdGVhZHlfdGltZRgLIAEoAUgGiAEBQhIKEF9iYWNrZW5kX25vZGVfaWRCCwoJX3NlbGVjdG9yQhAKDl9qc19leHByZXNzaW9uQgsKCV9mcmFtZV9pZEIOCgxfY2xlYXJfZmlyc3RCCgoIX3RpbWVvdXRCDgoMX3N0ZWFkeV90aW1lIkwKE1NldEJsb2NrTGlzdFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhAKCHBhdHRlcm5zGAMgAygJImEKFVNldFN0YXRpY1BhdGhzUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSEAoIcGF0dGVybnMYAyADKAkSEQoJYmxvYl9uYW1lGAQgASgJIogBChhXYWl0Rm9yQW55UmVxdWVzdFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhAKCHBhdHRlcm5zGAMgAygJEhMKC2Fib3J0X2ZsYWdzGAQgAygFEhQKB3RpbWVvdXQYBSABKAFIAIgBAUIKCghfdGltZW91dCJgChlXYWl0Rm9yQW55UmVxdWVzdFJlc3BvbnNlEg0KBWluZGV4GAEgASgFEjQKB3JlcXVlc3QYAiABKAsyIy5icm93c2Vyc2NhbGUudjEuSW50ZXJjZXB0ZWRSZXF1ZXN0IokBChlXYWl0Rm9yQW55UmVzcG9uc2VSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIQCghwYXR0ZXJucxgDIAMoCRITCgthYm9ydF9mbGFncxgEIAMoBRIUCgd0aW1lb3V0GAUgASgBSACIAQFCCgoIX3RpbWVvdXQiYwoaV2FpdEZvckFueVJlc3BvbnNlUmVzcG9uc2USDQoFaW5kZXgYASABKAUSNgoIcmVzcG9uc2UYAiABKAsyJC5icm93c2Vyc2NhbGUudjEuSW50ZXJjZXB0ZWRSZXNwb25zZSLKAQoUTW9kaWZ5UmVxdWVzdFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhMKC3VybF9wYXR0ZXJuGAMgASgJEjoKDW1vZGlmaWNhdGlvbnMYBCADKAsyIy5icm93c2Vyc2NhbGUudjEuSGVhZGVyTW9kaWZpY2F0aW9uEhEKBGJvZHkYBSABKAlIAIgBARIUCgd0aW1lb3V0GAYgASgBSAGIAQFCBwoFX2JvZHlCCgoIX3RpbWVvdXQiTQoVTW9kaWZ5UmVxdWVzdFJlc3BvbnNlEjQKB3JlcXVlc3QYASABKAsyIy5icm93c2Vyc2NhbGUudjEuSW50ZXJjZXB0ZWRSZXF1ZXN0IjgKEUdldENvb2tpZXNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCSJDChJHZXRDb29raWVzUmVzcG9uc2USLQoHY29va2llcxgBIAMoCzIcLmJyb3dzZXJzY2FsZS52MS5Db29raWVQYXJhbSJnChFTZXRDb29raWVzUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSLQoHY29va2llcxgDIAMoCzIcLmJyb3dzZXJzY2FsZS52MS5Db29raWVQYXJhbSI6ChNDbGVhckNvb2tpZXNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCSIpCgtTdG9yYWdlSXRlbRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAkiUQoSU3RvcmFnZU9yaWdpbkVudHJ5Eg4KBm9yaWdpbhgBIAEoCRIrCgVpdGVtcxgCIAMoCzIcLmJyb3dzZXJzY2FsZS52MS5TdG9yYWdlSXRlbSJYChFHZXRTdG9yYWdlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSEwoGb3JpZ2luGAMgASgJSACIAQFCCQoHX29yaWdpbiJKChJHZXRTdG9yYWdlUmVzcG9uc2USNAoHc3RvcmFnZRgBIAMoCzIjLmJyb3dzZXJzY2FsZS52MS5TdG9yYWdlT3JpZ2luRW50cnkimAEKEVNldFN0b3JhZ2VSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRI0CgdzdG9yYWdlGAMgAygLMiMuYnJvd3NlcnNjYWxlLnYxLlN0b3JhZ2VPcmlnaW5FbnRyeRIYCgtjbGVhcl9maXJzdBgEIAEoCEgAiAEBQg4KDF9jbGVhcl9maXJzdCJaChNDbGVhclN0b3JhZ2VSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRITCgZvcmlnaW4YAyABKAlIAIgBAUIJCgdfb3JpZ2luIocBCg1HZXRET01SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEhUKCGZyYW1lX2lkGAQgASgJSACIAQESEgoFZGVwdGgYBSABKAVIAYgBAUILCglfZnJhbWVfaWRCCAoGX2RlcHRoIh0KDkdldERPTVJlc3BvbnNlEgsKA2RvbRgBIAEoCSK/AQoVR2V0T2JzZXJ2YXRpb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEiMKFm1heF9lbGVtZW50c19wZXJfZnJhbWUYBCABKAVIAIgBARIcCg9tYXhfdGV4dF9sZW5ndGgYBSABKAVIAYgBAUIZChdfbWF4X2VsZW1lbnRzX3Blcl9mcmFtZUISChBfbWF4X3RleHRfbGVuZ3RoIkwKFkdldE9ic2VydmF0aW9uUmVzcG9uc2USGAoQb2JzZXJ2YXRpb25fdGV4dBgBIAEoCRIYChBvYnNlcnZhdGlvbl9qc29uGAIgASgJIm0KEUdldERPTUhhc2hSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEhUKCGZyYW1lX2lkGAQgASgJSACIAQFCCwoJX2ZyYW1lX2lkIiIKEkdldERPTUhhc2hSZXNwb25zZRIMCgRoYXNoGAEgASgJImYKGEluc3BlY3RBdFBvc2l0aW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIJCgF4GAQgASgBEgkKAXkYBSABKAEiqQEKGUluc3BlY3RBdFBvc2l0aW9uUmVzcG9uc2USFwoPYmFja2VuZF9ub2RlX2lkGAEgASgFEhAKCGZyYW1lX2lkGAIgASgJEhAKCHRhZ19uYW1lGAMgASgJEhQKDHRleHRfY29udGVudBgEIAEoCRISCgppc192aXNpYmxlGAUgASgIEiUKBmJvdW5kcxgGIAEoCzIVLmJyb3dzZXJzY2FsZS52MS5SZWN0IokBChRIaWdobGlnaHROb2RlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIXCg9iYWNrZW5kX25vZGVfaWQYBCABKAUSFQoIZnJhbWVfaWQYBSABKAlIAIgBAUILCglfZnJhbWVfaWQiVwoRSW5zZXJ0VGV4dFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSDAoEdGV4dBgEIAEoCSJ7CgtUeXBlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIMCgR0ZXh0GAQgASgJEhgKC2NsZWFyX2ZpcnN0GAUgASgISACIAQFCDgoMX2NsZWFyX2ZpcnN0IroBCg9QcmVzc0tleVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSCwoDa2V5GAQgASgJEhEKBGNvZGUYBSABKAlIAIgBARIWCgltb2RpZmllcnMYBiABKAVIAYgBARIVCghsb2NhdGlvbhgHIAEoBUgCiAEBQgcKBV9jb2RlQgwKCl9tb2RpZmllcnNCCwoJX2xvY2F0aW9uIrwBChFSZWxlYXNlS2V5UmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRILCgNrZXkYBCABKAkSEQoEY29kZRgFIAEoCUgAiAEBEhYKCW1vZGlmaWVycxgGIAEoBUgBiAEBEhUKCGxvY2F0aW9uGAcgASgFSAKIAQFCBwoFX2NvZGVCDAoKX21vZGlmaWVyc0ILCglfbG9jYXRpb24iSwoTR2V0U2VsZWN0aW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCSIkChRHZXRTZWxlY3Rpb25SZXNwb25zZRIMCgR0ZXh0GAEgASgJIosBChFTY3JlZW5zaG90UmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRITCgZmb3JtYXQYBCABKAlIAIgBARIUCgdxdWFsaXR5GAUgASgFSAGIAQFCCQoHX2Zvcm1hdEIKCghfcXVhbGl0eSJIChJTY3JlZW5zaG90UmVzcG9uc2USEwoLZGF0YV9iYXNlNjQYASABKAkSDQoFd2lkdGgYAiABKAUSDgoGaGVpZ2h0GAMgASgFIpMDChFSZWFkQ2FudmFzUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIcCg9iYWNrZW5kX25vZGVfaWQYBCABKAVIAIgBARIVCghzZWxlY3RvchgFIAEoCUgBiAEBEhoKDWpzX2V4cHJlc3Npb24YBiABKAlIAogBARIVCghmcmFtZV9pZBgHIAEoCUgDiAEBEhMKBmZvcm1hdBgIIAEoCUgEiAEBEhQKB3F1YWxpdHkYCSABKAVIBYgBARIPCgJzeBgKIAEoBUgGiAEBEg8KAnN5GAsgASgFSAeIAQESDwoCc3cYDCABKAVICIgBARIPCgJzaBgNIAEoBUgJiAEBQhIKEF9iYWNrZW5kX25vZGVfaWRCCwoJX3NlbGVjdG9yQhAKDl9qc19leHByZXNzaW9uQgsKCV9mcmFtZV9pZEIJCgdfZm9ybWF0QgoKCF9xdWFsaXR5QgUKA19zeEIFCgNfc3lCBQoDX3N3QgUKA19zaCKaAQoSUmVhZENhbnZhc1Jlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSEAoIZnJhbWVfaWQYAiABKAkSFwoPYmFja2VuZF9ub2RlX2lkGAMgASgFEhMKC2RhdGFfYmFzZTY0GAQgASgJEg0KBXdpZHRoGAUgASgFEg4KBmhlaWdodBgGIAEoBRIUCgxvcmlnaW5fY2xlYW4YByABKAgiZAoTU29sdmVDYXB0Y2hhUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSEgoKdGltZW91dF9tcxgDIAEoBRIUCgxyZXRyeV9hbW91bnQYBCABKAUiJgoUU29sdmVDYXB0Y2hhUmVzcG9uc2USDgoGcmVzdWx0GAEgASgJImUKCUljZVNlcnZlchIMCgR1cmxzGAEgAygJEhUKCHVzZXJuYW1lGAIgASgJSACIAQESFwoKY3JlZGVudGlhbBgDIAEoCUgBiAEBQgsKCV91c2VybmFtZUINCgtfY3JlZGVudGlhbCI9ChZHZXRTdHJlYW1Db25maWdSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCSJKChdHZXRTdHJlYW1Db25maWdSZXNwb25zZRIvCgtpY2Vfc2VydmVycxgBIAMoCzIaLmJyb3dzZXJzY2FsZS52MS5JY2VTZXJ2ZXIiTAoSU3RhcnRTdHJlYW1SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIRCglvZmZlcl9zZHAYAyABKAkiKQoTU3RhcnRTdHJlYW1SZXNwb25zZRISCgphbnN3ZXJfc2RwGAEgASgJIjgKEVN0b3BTdHJlYW1SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCSIUChJTdG9wU3RyZWFtUmVzcG9uc2UygRwKB0Jyb3dzZXISRAoIU2V0UHJveHkSIC5icm93c2Vyc2NhbGUudjEuU2V0UHJveHlSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5Ek8KCEdldFBhZ2VzEiAuYnJvd3NlcnNjYWxlLnYxLkdldFBhZ2VzUmVxdWVzdBohLmJyb3dzZXJzY2FsZS52MS5HZXRQYWdlc1Jlc3BvbnNlEk8KCE5hdmlnYXRlEiAuYnJvd3NlcnNjYWxlLnYxLk5hdmlnYXRlUmVxdWVzdBohLmJyb3dzZXJzY2FsZS52MS5OYXZpZ2F0ZVJlc3BvbnNlEkQKCExvYWRIVE1MEiAuYnJvd3NlcnNjYWxlLnYxLkxvYWRIVE1MUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRJPCghFdmFsdWF0ZRIgLmJyb3dzZXJzY2FsZS52MS5FdmFsdWF0ZVJlcXVlc3QaIS5icm93c2Vyc2NhbGUudjEuRXZhbHVhdGVSZXNwb25zZRJACgNSdW4SGy5icm93c2Vyc2NhbGUudjEuUnVuUmVxdWVzdBocLmJyb3dzZXJzY2FsZS52MS5SdW5SZXNwb25zZRJMCgpXYWl0Rm9yQW55EiEuYnJvd3NlcnNjYWxlLnYxLldhaXRGb3JBbnlQYXJhbXMaGy5icm93c2Vyc2NhbGUudjEuV2FpdFJlc3VsdBJZCgxTZWxlY3RPcHRpb24SJC5icm93c2Vyc2NhbGUudjEuU2VsZWN0T3B0aW9uUmVxdWVzdBojLmJyb3dzZXJzY2FsZS52MS5TZWxlY3RPcHRpb25SZXN1bHQSSwoIU2Nyb2xsVG8SIC5icm93c2Vyc2NhbGUudjEuU2Nyb2xsVG9SZXF1ZXN0Gh0uYnJvd3NlcnNjYWxlLnYxLlNjcm9sbFJlc3VsdBJFCgZNb3ZlVG8SHi5icm93c2Vyc2NhbGUudjEuTW92ZVRvUmVxdWVzdBobLmJyb3dzZXJzY2FsZS52MS5Nb3ZlUmVzdWx0EkQKBUNsaWNrEh0uYnJvd3NlcnNjYWxlLnYxLkNsaWNrUmVxdWVzdBocLmJyb3dzZXJzY2FsZS52MS5DbGlja1Jlc3VsdBJBCgREcmFnEhwuYnJvd3NlcnNjYWxlLnYxLkRyYWdSZXF1ZXN0GhsuYnJvd3NlcnNjYWxlLnYxLkRyYWdSZXN1bHQSQQoERmlsbBIcLmJyb3dzZXJzY2FsZS52MS5GaWxsUmVxdWVzdBobLmJyb3dzZXJzY2FsZS52MS5GaWxsUmVzdWx0ElgKC0FkZFJlYWN0aW9uEiMuYnJvd3NlcnNjYWxlLnYxLkFkZFJlYWN0aW9uUmVxdWVzdBokLmJyb3dzZXJzY2FsZS52MS5BZGRSZWFjdGlvblJlc3BvbnNlEmEKDlJlbW92ZVJlYWN0aW9uEiYuYnJvd3NlcnNjYWxlLnYxLlJlbW92ZVJlYWN0aW9uUmVxdWVzdBonLmJyb3dzZXJzY2FsZS52MS5SZW1vdmVSZWFjdGlvblJlc3BvbnNlEl4KDUxpc3RSZWFjdGlvbnMSJS5icm93c2Vyc2NhbGUudjEuTGlzdFJlYWN0aW9uc1JlcXVlc3QaJi5icm93c2Vyc2NhbGUudjEuTGlzdFJlYWN0aW9uc1Jlc3BvbnNlEkwKDFNldEJsb2NrTGlzdBIkLmJyb3dzZXJzY2FsZS52MS5TZXRCbG9ja0xpc3RSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5ElAKDlNldFN0YXRpY1BhdGhzEiYuYnJvd3NlcnNjYWxlLnYxLlNldFN0YXRpY1BhdGhzUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRJqChFXYWl0Rm9yQW55UmVxdWVzdBIpLmJyb3dzZXJzY2FsZS52MS5XYWl0Rm9yQW55UmVxdWVzdFJlcXVlc3QaKi5icm93c2Vyc2NhbGUudjEuV2FpdEZvckFueVJlcXVlc3RSZXNwb25zZRJtChJXYWl0Rm9yQW55UmVzcG9uc2USKi5icm93c2Vyc2NhbGUudjEuV2FpdEZvckFueVJlc3BvbnNlUmVxdWVzdBorLmJyb3dzZXJzY2FsZS52MS5XYWl0Rm9yQW55UmVzcG9uc2VSZXNwb25zZRJeCg1Nb2RpZnlSZXF1ZXN0EiUuYnJvd3NlcnNjYWxlLnYxLk1vZGlmeVJlcXVlc3RSZXF1ZXN0GiYuYnJvd3NlcnNjYWxlLnYxLk1vZGlmeVJlcXVlc3RSZXNwb25zZRJVCgpHZXRDb29raWVzEiIuYnJvd3NlcnNjYWxlLnYxLkdldENvb2tpZXNSZXF1ZXN0GiMuYnJvd3NlcnNjYWxlLnYxLkdldENvb2tpZXNSZXNwb25zZRJICgpTZXRDb29raWVzEiIuYnJvd3NlcnNjYWxlLnYxLlNldENvb2tpZXNSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5EkwKDENsZWFyQ29va2llcxIkLmJyb3dzZXJzY2FsZS52MS5DbGVhckNvb2tpZXNSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5ElUKCkdldFN0b3JhZ2USIi5icm93c2Vyc2NhbGUudjEuR2V0U3RvcmFnZVJlcXVlc3QaIy5icm93c2Vyc2NhbGUudjEuR2V0U3RvcmFnZVJlc3BvbnNlEkgKClNldFN0b3JhZ2USIi5icm93c2Vyc2NhbGUudjEuU2V0U3RvcmFnZVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSTAoMQ2xlYXJTdG9yYWdlEiQuYnJvd3NlcnNjYWxlLnYxLkNsZWFyU3RvcmFnZVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSSQoGR2V0RE9NEh4uYnJvd3NlcnNjYWxlLnYxLkdldERPTVJlcXVlc3QaHy5icm93c2Vyc2NhbGUudjEuR2V0RE9NUmVzcG9uc2USVQoKR2V0RE9NSGFzaBIiLmJyb3dzZXJzY2FsZS52MS5HZXRET01IYXNoUmVxdWVzdBojLmJyb3dzZXJzY2FsZS52MS5HZXRET01IYXNoUmVzcG9uc2USYQoOR2V0T2JzZXJ2YXRpb24SJi5icm93c2Vyc2NhbGUudjEuR2V0T2JzZXJ2YXRpb25SZXF1ZXN0GicuYnJvd3NlcnNjYWxlLnYxLkdldE9ic2VydmF0aW9uUmVzcG9uc2USagoRSW5zcGVjdEF0UG9zaXRpb24SKS5icm93c2Vyc2NhbGUudjEuSW5zcGVjdEF0UG9zaXRpb25SZXF1ZXN0GiouYnJvd3NlcnNjYWxlLnYxLkluc3BlY3RBdFBvc2l0aW9uUmVzcG9uc2USTgoNSGlnaGxpZ2h0Tm9kZRIlLmJyb3dzZXJzY2FsZS52MS5IaWdobGlnaHROb2RlUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRJVCgpTY3JlZW5zaG90EiIuYnJvd3NlcnNjYWxlLnYxLlNjcmVlbnNob3RSZXF1ZXN0GiMuYnJvd3NlcnNjYWxlLnYxLlNjcmVlbnNob3RSZXNwb25zZRJVCgpSZWFkQ2FudmFzEiIuYnJvd3NlcnNjYWxlLnYxLlJlYWRDYW52YXNSZXF1ZXN0GiMuYnJvd3NlcnNjYWxlLnYxLlJlYWRDYW52YXNSZXNwb25zZRJICgpJbnNlcnRUZXh0EiIuYnJvd3NlcnNjYWxlLnYxLkluc2VydFRleHRSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5EjwKBFR5cGUSHC5icm93c2Vyc2NhbGUudjEuVHlwZVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSRAoIUHJlc3NLZXkSIC5icm93c2Vyc2NhbGUudjEuUHJlc3NLZXlSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5EkgKClJlbGVhc2VLZXkSIi5icm93c2Vyc2NhbGUudjEuUmVsZWFzZUtleVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSWwoMR2V0U2VsZWN0aW9uEiQuYnJvd3NlcnNjYWxlLnYxLkdldFNlbGVjdGlvblJlcXVlc3QaJS5icm93c2Vyc2NhbGUudjEuR2V0U2VsZWN0aW9uUmVzcG9uc2USWwoMU29sdmVDYXB0Y2hhEiQuYnJvd3NlcnNjYWxlLnYxLlNvbHZlQ2FwdGNoYVJlcXVlc3QaJS5icm93c2Vyc2NhbGUudjEuU29sdmVDYXB0Y2hhUmVzcG9uc2USZAoPR2V0U3RyZWFtQ29uZmlnEicuYnJvd3NlcnNjYWxlLnYxLkdldFN0cmVhbUNvbmZpZ1JlcXVlc3QaKC5icm93c2Vyc2NhbGUudjEuR2V0U3RyZWFtQ29uZmlnUmVzcG9uc2USWAoLU3RhcnRTdHJlYW0SIy5icm93c2Vyc2NhbGUudjEuU3RhcnRTdHJlYW1SZXF1ZXN0GiQuYnJvd3NlcnNjYWxlLnYxLlN0YXJ0U3RyZWFtUmVzcG9uc2USVQoKU3RvcFN0cmVhbRIiLmJyb3dzZXJzY2FsZS52MS5TdG9wU3RyZWFtUmVxdWVzdBojLmJyb3dzZXJzY2FsZS52MS5TdG9wU3RyZWFtUmVzcG9uc2VCM1oxZ2l0aHViLmNvbS9icm93c2Vyc2NhbGUvYnJvd3NlcnNjYWxlLWdvL2dlbmVyYXRlZGIGcHJvdG8z", [file_google_protobuf_empty]);
|
|
3802
|
+
var file_wrc = /* @__PURE__ */ fileDesc("Cgl3cmMucHJvdG8SD2Jyb3dzZXJzY2FsZS52MSI7CgRSZWN0EgkKAXgYASABKAESCQoBeRgCIAEoARINCgV3aWR0aBgDIAEoARIOCgZoZWlnaHQYBCABKAEihgIKCUZyYW1lSW5mbxIQCghmcmFtZV9pZBgBIAEoCRILCgN1cmwYAiABKAkSEAoIaXNfb29waWYYAyABKAgSFgoOaGFzX2pzX2NvbnRleHQYBCABKAgSEgoKaXNfbG9hZGluZxgFIAEoCBISCgppc192aXNpYmxlGAYgASgIEiwKDWFic29sdXRlX3JlY3QYByABKAsyFS5icm93c2Vyc2NhbGUudjEuUmVjdBIsCg1yZWxhdGl2ZV9yZWN0GAggASgLMhUuYnJvd3NlcnNjYWxlLnYxLlJlY3QSLAoIY2hpbGRyZW4YCSADKAsyGi5icm93c2Vyc2NhbGUudjEuRnJhbWVJbmZvIqwBCghQYWdlSW5mbxIPCgdwYWdlX2lkGAEgASgJEhoKEmJyb3dzZXJfY29udGV4dF9pZBgCIAEoCRILCgN1cmwYAyABKAkSDQoFdGl0bGUYBCABKAkSJwoIdmlld3BvcnQYBSABKAsyFS5icm93c2Vyc2NhbGUudjEuUmVjdBIuCgpmcmFtZV90cmVlGAYgASgLMhouYnJvd3NlcnNjYWxlLnYxLkZyYW1lSW5mbyIlCgZIZWFkZXISDAoEbmFtZRgBIAEoCRINCgV2YWx1ZRgCIAEoCSKAAQoSSW50ZXJjZXB0ZWRSZXF1ZXN0Eg4KBm1ldGhvZBgBIAEoCRILCgN1cmwYAiABKAkSKAoHaGVhZGVycxgDIAMoCzIXLmJyb3dzZXJzY2FsZS52MS5IZWFkZXISDAoEYm9keRgEIAEoCRIVCg1yZXNvdXJjZV90eXBlGAUgASgJIm8KE0ludGVyY2VwdGVkUmVzcG9uc2USCwoDdXJsGAEgASgJEhMKC3N0YXR1c19jb2RlGAIgASgFEigKB2hlYWRlcnMYAyADKAsyFy5icm93c2Vyc2NhbGUudjEuSGVhZGVyEgwKBGJvZHkYBCABKAkijgEKEkhlYWRlck1vZGlmaWNhdGlvbhIMCgRuYW1lGAEgASgJEhIKBXZhbHVlGAIgASgJSACIAQESDgoGYWN0aW9uGAMgASgJEhMKBmJlZm9yZRgEIAEoCUgBiAEBEhIKBWFmdGVyGAUgASgJSAKIAQFCCAoGX3ZhbHVlQgkKB19iZWZvcmVCCAoGX2FmdGVyIk0KEkNvb2tpZVBhcnRpdGlvbktleRIWCg50b3BfbGV2ZWxfc2l0ZRgBIAEoCRIfChdoYXNfY3Jvc3Nfc2l0ZV9hbmNlc3RvchgCIAEoCCK/AwoLQ29va2llUGFyYW0SDAoEbmFtZRgBIAEoCRINCgV2YWx1ZRgCIAEoCRIQCgN1cmwYAyABKAlIAIgBARIOCgZkb21haW4YBCABKAkSDAoEcGF0aBgFIAEoCRITCgZzZWN1cmUYBiABKAhIAYgBARIWCglodHRwX29ubHkYByABKAhIAogBARIWCglzYW1lX3NpdGUYCCABKAlIA4gBARIUCgdleHBpcmVzGAkgASgBSASIAQESFQoIcHJpb3JpdHkYCiABKAlIBYgBARIaCg1zb3VyY2Vfc2NoZW1lGAsgASgJSAaIAQESGAoLc291cmNlX3BvcnQYDCABKAVIB4gBARI/Cg1wYXJ0aXRpb25fa2V5GA0gASgLMiMuYnJvd3NlcnNjYWxlLnYxLkNvb2tpZVBhcnRpdGlvbktleUgIiAEBQgYKBF91cmxCCQoHX3NlY3VyZUIMCgpfaHR0cF9vbmx5QgwKCl9zYW1lX3NpdGVCCgoIX2V4cGlyZXNCCwoJX3ByaW9yaXR5QhAKDl9zb3VyY2Vfc2NoZW1lQg4KDF9zb3VyY2VfcG9ydEIQCg5fcGFydGl0aW9uX2tleSKtAQoNV2FpdENvbmRpdGlvbhIVCghzZWxlY3RvchgBIAEoCUgAiAEBEhoKDWpzX2V4cHJlc3Npb24YAiABKAlIAYgBARIUCgd2aXNpYmxlGAMgASgISAKIAQESGAoLc3RlYWR5X3RpbWUYBCABKAFIA4gBAUILCglfc2VsZWN0b3JCEAoOX2pzX2V4cHJlc3Npb25CCgoIX3Zpc2libGVCDgoMX3N0ZWFkeV90aW1lIrsBCgpXYWl0UmVzdWx0Eg0KBWluZGV4GAEgASgFEhAKCGZyYW1lX2lkGAIgASgJEhcKD2JhY2tlbmRfbm9kZV9pZBgDIAEoBRISCgppc192aXNpYmxlGAQgASgIEiUKBmJvdW5kcxgFIAEoCzIVLmJyb3dzZXJzY2FsZS52MS5SZWN0Ei4KBWVycm9yGAYgASgLMhouYnJvd3NlcnNjYWxlLnYxLldhaXRFcnJvckgAiAEBQggKBl9lcnJvciLsAQoTV2FpdENvbmRpdGlvblN0YXR1cxINCgVpbmRleBgBIAEoBRINCgVzdGF0ZRgCIAEoCRIXCg9iYWNrZW5kX25vZGVfaWQYAyABKAUSEAoIZnJhbWVfaWQYBCABKAkSEgoKaXNfdmlzaWJsZRgFIAEoCBIqCgZib3VuZHMYBiABKAsyFS5icm93c2Vyc2NhbGUudjEuUmVjdEgAiAEBEjQKCG9jY2x1ZGVyGAcgASgLMh0uYnJvd3NlcnNjYWxlLnYxLk9jY2x1ZGVySW5mb0gBiAEBQgkKB19ib3VuZHNCCwoJX29jY2x1ZGVyImQKCVdhaXRFcnJvchIMCgRjb2RlGAEgASgJEg8KB21lc3NhZ2UYAiABKAkSOAoKY29uZGl0aW9ucxgDIAMoCzIkLmJyb3dzZXJzY2FsZS52MS5XYWl0Q29uZGl0aW9uU3RhdHVzIqYBCg1FbGVtZW50UmVzdWx0Eg8KB3N1Y2Nlc3MYASABKAgSEAoIZnJhbWVfaWQYAiABKAkSFwoPYmFja2VuZF9ub2RlX2lkGAMgASgFEhIKCmlzX3Zpc2libGUYBCABKAgSJQoGYm91bmRzGAUgASgLMhUuYnJvd3NlcnNjYWxlLnYxLlJlY3QSDgoGcm9vdF94GAYgASgBEg4KBnJvb3RfeRgHIAEoASLSAwoMT2NjbHVkZXJJbmZvEhcKD2JhY2tlbmRfbm9kZV9pZBgBIAEoBRIQCghmcmFtZV9pZBgCIAEoCRIQCgh0YWdfbmFtZRgDIAEoCRIPCgJpZBgEIAEoCUgAiAEBEhcKCmNsYXNzX25hbWUYBSABKAlIAYgBARIRCgR0ZXh0GAYgASgJSAKIAQESJQoGYm91bmRzGAcgASgLMhUuYnJvd3NlcnNjYWxlLnYxLlJlY3QSGwoOcG9pbnRlcl9ldmVudHMYCCABKAlIA4gBARIXCgp2aXNpYmlsaXR5GAkgASgJSASIAQESFAoHb3BhY2l0eRgKIAEoAUgFiAEBEhQKB3pfaW5kZXgYCyABKAlIBogBARIlChhoaXR0YWJsZV93aGlsZV9pbnZpc2libGUYDCABKAhIB4gBARIVCghwb3NpdGlvbhgNIAEoCUgIiAEBQgUKA19pZEINCgtfY2xhc3NfbmFtZUIHCgVfdGV4dEIRCg9fcG9pbnRlcl9ldmVudHNCDQoLX3Zpc2liaWxpdHlCCgoIX29wYWNpdHlCCgoIX3pfaW5kZXhCGwoZX2hpdHRhYmxlX3doaWxlX2ludmlzaWJsZUILCglfcG9zaXRpb24ioAEKCkNsaWNrRXJyb3ISDAoEY29kZRgBIAEoCRIPCgdtZXNzYWdlGAIgASgJEjQKCG9jY2x1ZGVyGAMgASgLMh0uYnJvd3NlcnNjYWxlLnYxLk9jY2x1ZGVySW5mb0gAiAEBEhwKD2V2YWRlX2F0dGVtcHRlZBgEIAEoCEgBiAEBQgsKCV9vY2NsdWRlckISChBfZXZhZGVfYXR0ZW1wdGVkIt8BCgtDbGlja1Jlc3VsdBIPCgdzdWNjZXNzGAEgASgIEhAKCGZyYW1lX2lkGAIgASgJEhcKD2JhY2tlbmRfbm9kZV9pZBgDIAEoBRISCgppc192aXNpYmxlGAQgASgIEiUKBmJvdW5kcxgFIAEoCzIVLmJyb3dzZXJzY2FsZS52MS5SZWN0Eg4KBnJvb3RfeBgGIAEoARIOCgZyb290X3kYByABKAESLwoFZXJyb3IYCCABKAsyGy5icm93c2Vyc2NhbGUudjEuQ2xpY2tFcnJvckgAiAEBQggKBl9lcnJvciKeAgoMUmVhY3Rpb25JbmZvEhMKC3JlYWN0aW9uX2lkGAEgASgJEhsKDm1hdGNoX3NlbGVjdG9yGAIgASgJSACIAQESIAoTbWF0Y2hfanNfZXhwcmVzc2lvbhgDIAEoCUgBiAEBEhwKD2FjdGlvbl9zZWxlY3RvchgEIAEoCUgCiAEBEiEKFGFjdGlvbl9qc19leHByZXNzaW9uGAUgASgJSAOIAQESEAoIZnJhbWVfaWQYBiABKAkSDwoHdmlzaWJsZRgHIAEoCEIRCg9fbWF0Y2hfc2VsZWN0b3JCFgoUX21hdGNoX2pzX2V4cHJlc3Npb25CEgoQX2FjdGlvbl9zZWxlY3RvckIXChVfYWN0aW9uX2pzX2V4cHJlc3Npb24i1gMKEkFkZFJlYWN0aW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIbCg5tYXRjaF9zZWxlY3RvchgEIAEoCUgAiAEBEiAKE21hdGNoX2pzX2V4cHJlc3Npb24YBSABKAlIAYgBARIVCghmcmFtZV9pZBgGIAEoCUgCiAEBEhQKB3Zpc2libGUYByABKAhIA4gBARIcCg9hY3Rpb25fc2VsZWN0b3IYCCABKAlIBIgBARIhChRhY3Rpb25fanNfZXhwcmVzc2lvbhgJIAEoCUgFiAEBEhMKBmJ1dHRvbhgKIAEoCUgGiAEBEhgKC2NsaWNrX2NvdW50GAsgASgFSAeIAQESFQoIaW50ZXJ2YWwYDCABKAFICIgBAUIRCg9fbWF0Y2hfc2VsZWN0b3JCFgoUX21hdGNoX2pzX2V4cHJlc3Npb25CCwoJX2ZyYW1lX2lkQgoKCF92aXNpYmxlQhIKEF9hY3Rpb25fc2VsZWN0b3JCFwoVX2FjdGlvbl9qc19leHByZXNzaW9uQgkKB19idXR0b25CDgoMX2NsaWNrX2NvdW50QgsKCV9pbnRlcnZhbCIqChNBZGRSZWFjdGlvblJlc3BvbnNlEhMKC3JlYWN0aW9uX2lkGAEgASgJIlEKFVJlbW92ZVJlYWN0aW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSEwoLcmVhY3Rpb25faWQYAyABKAkiKQoWUmVtb3ZlUmVhY3Rpb25SZXNwb25zZRIPCgdyZW1vdmVkGAEgASgIIkwKFExpc3RSZWFjdGlvbnNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJIkkKFUxpc3RSZWFjdGlvbnNSZXNwb25zZRIwCglyZWFjdGlvbnMYASADKAsyHS5icm93c2Vyc2NhbGUudjEuUmVhY3Rpb25JbmZvIukBCgpFbGVtZW50UmVmEhcKD2JhY2tlbmRfbm9kZV9pZBgBIAEoBRIQCgh0YWdfbmFtZRgCIAEoCRIPCgJpZBgDIAEoCUgAiAEBEhEKBG5hbWUYBCABKAlIAYgBARIXCgpjbGFzc19uYW1lGAUgASgJSAKIAQESFwoKaW5wdXRfdHlwZRgGIAEoCUgDiAEBEhEKBHRleHQYByABKAlIBIgBARIQCghlZGl0YWJsZRgIIAEoCEIFCgNfaWRCBwoFX25hbWVCDQoLX2NsYXNzX25hbWVCDQoLX2lucHV0X3R5cGVCBwoFX3RleHQi7gIKCUZpbGxFcnJvchIMCgRjb2RlGAEgASgJEg8KB21lc3NhZ2UYAiABKAkSNQoLY2xpY2tfZXJyb3IYAyABKAsyGy5icm93c2Vyc2NhbGUudjEuQ2xpY2tFcnJvckgAiAEBEiQKF2ZvY3VzZWRfYmFja2VuZF9ub2RlX2lkGAQgASgFSAGIAQESOQoPZm9jdXNlZF9lbGVtZW50GAUgASgLMhsuYnJvd3NlcnNjYWxlLnYxLkVsZW1lbnRSZWZIAogBARIcCg90YXJnZXRfZWRpdGFibGUYBiABKAhIA4gBARIgChN0YXJnZXRfdmFsdWVfbGVuZ3RoGAcgASgFSASIAQFCDgoMX2NsaWNrX2Vycm9yQhoKGF9mb2N1c2VkX2JhY2tlbmRfbm9kZV9pZEISChBfZm9jdXNlZF9lbGVtZW50QhIKEF90YXJnZXRfZWRpdGFibGVCFgoUX3RhcmdldF92YWx1ZV9sZW5ndGgiogEKCkZpbGxSZXN1bHQSDwoHc3VjY2VzcxgBIAEoCBIQCghmcmFtZV9pZBgCIAEoCRIXCg9iYWNrZW5kX25vZGVfaWQYAyABKAUSDgoGcm9vdF94GAYgASgBEg4KBnJvb3RfeRgHIAEoARIuCgVlcnJvchgIIAEoCzIaLmJyb3dzZXJzY2FsZS52MS5GaWxsRXJyb3JIAIgBAUIICgZfZXJyb3IiwgEKCkRyYWdSZXN1bHQSDwoHc3VjY2VzcxgBIAEoCBIQCghmcmFtZV9pZBgCIAEoCRIXCg9iYWNrZW5kX25vZGVfaWQYAyABKAUSDwoHc3RhcnRfeBgEIAEoARIPCgdzdGFydF95GAUgASgBEg0KBWVuZF94GAYgASgBEg0KBWVuZF95GAcgASgBEi4KBWVycm9yGAggASgLMhouYnJvd3NlcnNjYWxlLnYxLkRyYWdFcnJvckgAiAEBQggKBl9lcnJvciJxCglEcmFnRXJyb3ISDAoEY29kZRgBIAEoCRIPCgdtZXNzYWdlGAIgASgJEjUKC2NsaWNrX2Vycm9yGAMgASgLMhsuYnJvd3NlcnNjYWxlLnYxLkNsaWNrRXJyb3JIAIgBAUIOCgxfY2xpY2tfZXJyb3IirgEKElNlbGVjdE9wdGlvblJlc3VsdBIWCg5zZWxlY3RlZF9pbmRleBgBIAEoBRIWCg5zZWxlY3RlZF92YWx1ZRgCIAEoCRIVCg1zZWxlY3RlZF90ZXh0GAMgASgJEg8KB3N1Y2Nlc3MYBCABKAgSNgoFZXJyb3IYBSABKAsyIi5icm93c2Vyc2NhbGUudjEuU2VsZWN0T3B0aW9uRXJyb3JIAIgBAUIICgZfZXJyb3IiMgoRU2VsZWN0T3B0aW9uRXJyb3ISDAoEY29kZRgBIAEoCRIPCgdtZXNzYWdlGAIgASgJIsEBCgxTY3JvbGxSZXN1bHQSDwoHc3VjY2VzcxgBIAEoCBIQCghmcmFtZV9pZBgCIAEoCRIXCg9iYWNrZW5kX25vZGVfaWQYAyABKAUSEgoKaXNfdmlzaWJsZRgEIAEoCBIlCgZib3VuZHMYBSABKAsyFS5icm93c2Vyc2NhbGUudjEuUmVjdBIwCgVlcnJvchgIIAEoCzIcLmJyb3dzZXJzY2FsZS52MS5TY3JvbGxFcnJvckgAiAEBQggKBl9lcnJvciIsCgtTY3JvbGxFcnJvchIMCgRjb2RlGAEgASgJEg8KB21lc3NhZ2UYAiABKAki3QEKCk1vdmVSZXN1bHQSDwoHc3VjY2VzcxgBIAEoCBIQCghmcmFtZV9pZBgCIAEoCRIXCg9iYWNrZW5kX25vZGVfaWQYAyABKAUSEgoKaXNfdmlzaWJsZRgEIAEoCBIlCgZib3VuZHMYBSABKAsyFS5icm93c2Vyc2NhbGUudjEuUmVjdBIOCgZyb290X3gYBiABKAESDgoGcm9vdF95GAcgASgBEi4KBWVycm9yGAggASgLMhouYnJvd3NlcnNjYWxlLnYxLk1vdmVFcnJvckgAiAEBQggKBl9lcnJvciIqCglNb3ZlRXJyb3ISDAoEY29kZRgBIAEoCRIPCgdtZXNzYWdlGAIgASgJIuYBCg9TZXRQcm94eVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhcKCnByb3h5X2hvc3QYAyABKAlIAIgBARIXCgpwcm94eV9wb3J0GAQgASgFSAGIAQESGwoOcHJveHlfdXNlcm5hbWUYBSABKAlIAogBARIbCg5wcm94eV9wYXNzd29yZBgGIAEoCUgDiAEBQg0KC19wcm94eV9ob3N0Qg0KC19wcm94eV9wb3J0QhEKD19wcm94eV91c2VybmFtZUIRCg9fcHJveHlfcGFzc3dvcmQiNgoPR2V0UGFnZXNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCSI8ChBHZXRQYWdlc1Jlc3BvbnNlEigKBXBhZ2VzGAEgAygLMhkuYnJvd3NlcnNjYWxlLnYxLlBhZ2VJbmZvIpoBCg9OYXZpZ2F0ZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSCwoDdXJsGAQgASgJEhUKCHJlZmVycmVyGAUgASgJSACIAQESFAoHdGltZW91dBgGIAEoAUgBiAEBQgsKCV9yZWZlcnJlckIKCghfdGltZW91dCIxChBOYXZpZ2F0ZVJlc3BvbnNlEhAKCGZyYW1lX2lkGAEgASgJEgsKA3VybBgCIAEoCSK2AQoPTG9hZEhUTUxSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEgsKA3VybBgEIAEoCRIMCgRodG1sGAUgASgJEigKB2hlYWRlcnMYBiADKAsyFy5icm93c2Vyc2NhbGUudjEuSGVhZGVyEhgKC3N0YXR1c19jb2RlGAcgASgFSACIAQFCDgoMX3N0YXR1c19jb2RlIn8KD0V2YWx1YXRlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRISCgpleHByZXNzaW9uGAQgASgJEhUKCGZyYW1lX2lkGAUgASgJSACIAQFCCwoJX2ZyYW1lX2lkInYKEEV2YWx1YXRlUmVzcG9uc2USDgoGcmVzdWx0GAEgASgJEhcKD2JhY2tlbmRfbm9kZV9pZBgCIAEoBRISCgppc192aXNpYmxlGAMgASgIEiUKBmJvdW5kcxgEIAEoCzIVLmJyb3dzZXJzY2FsZS52MS5SZWN0ImMKClJ1blJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg4KBnNvdXJjZRgDIAEoCRIUCgdwYWdlX2lkGAQgASgJSACIAQFCCgoIX3BhZ2VfaWQiLgoLUnVuUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIOCgZyZXN1bHQYAiABKAkiwgEKEFdhaXRGb3JBbnlQYXJhbXMSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSMgoKY29uZGl0aW9ucxgEIAMoCzIeLmJyb3dzZXJzY2FsZS52MS5XYWl0Q29uZGl0aW9uEhUKCGZyYW1lX2lkGAUgASgJSACIAQESFAoHdGltZW91dBgGIAEoAUgBiAEBQgsKCV9mcmFtZV9pZEIKCghfdGltZW91dCL1AgoTU2VsZWN0T3B0aW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIcCg9iYWNrZW5kX25vZGVfaWQYBCABKAVIAIgBARIVCghzZWxlY3RvchgFIAEoCUgBiAEBEhoKDWpzX2V4cHJlc3Npb24YBiABKAlIAogBARIVCghmcmFtZV9pZBgHIAEoCUgDiAEBEhIKBWluZGV4GAggASgFSASIAQESEgoFdmFsdWUYCSABKAlIBYgBARIRCgR0ZXh0GAogASgJSAaIAQESGAoLZmlyZV9ldmVudHMYCyABKAhIB4gBAUISChBfYmFja2VuZF9ub2RlX2lkQgsKCV9zZWxlY3RvckIQCg5fanNfZXhwcmVzc2lvbkILCglfZnJhbWVfaWRCCAoGX2luZGV4QggKBl92YWx1ZUIHCgVfdGV4dEIOCgxfZmlyZV9ldmVudHMi7wEKD1Njcm9sbFRvUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIcCg9iYWNrZW5kX25vZGVfaWQYBCABKAVIAIgBARIVCghzZWxlY3RvchgFIAEoCUgBiAEBEhoKDWpzX2V4cHJlc3Npb24YBiABKAlIAogBARIVCghmcmFtZV9pZBgHIAEoCUgDiAEBQhIKEF9iYWNrZW5kX25vZGVfaWRCCwoJX3NlbGVjdG9yQhAKDl9qc19leHByZXNzaW9uQgsKCV9mcmFtZV9pZCKZAgoNTW92ZVRvUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIcCg9iYWNrZW5kX25vZGVfaWQYBCABKAVIAIgBARIVCghzZWxlY3RvchgFIAEoCUgBiAEBEhoKDWpzX2V4cHJlc3Npb24YBiABKAlIAogBARIVCghmcmFtZV9pZBgHIAEoCUgDiAEBEg4KAXgYCCABKAFIBIgBARIOCgF5GAkgASgBSAWIAQFCEgoQX2JhY2tlbmRfbm9kZV9pZEILCglfc2VsZWN0b3JCEAoOX2pzX2V4cHJlc3Npb25CCwoJX2ZyYW1lX2lkQgQKAl94QgQKAl95IoIDCgxDbGlja1JlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSHAoPYmFja2VuZF9ub2RlX2lkGAQgASgFSACIAQESFQoIc2VsZWN0b3IYBSABKAlIAYgBARIaCg1qc19leHByZXNzaW9uGAYgASgJSAKIAQESFQoIZnJhbWVfaWQYByABKAlIA4gBARITCgZidXR0b24YCCABKAlIBIgBARIYCgtjbGlja19jb3VudBgJIAEoBUgFiAEBEg4KAXgYCiABKAFIBogBARIOCgF5GAsgASgBSAeIAQESEwoGYWN0aW9uGAwgASgJSAiIAQFCEgoQX2JhY2tlbmRfbm9kZV9pZEILCglfc2VsZWN0b3JCEAoOX2pzX2V4cHJlc3Npb25CCwoJX2ZyYW1lX2lkQgkKB19idXR0b25CDgoMX2NsaWNrX2NvdW50QgQKAl94QgQKAl95QgkKB19hY3Rpb24igwMKC0RyYWdSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEhwKD2JhY2tlbmRfbm9kZV9pZBgEIAEoBUgAiAEBEhUKCHNlbGVjdG9yGAUgASgJSAGIAQESGgoNanNfZXhwcmVzc2lvbhgGIAEoCUgCiAEBEhUKCGZyYW1lX2lkGAcgASgJSAOIAQESFQoIb2Zmc2V0X3gYCCABKAFIBIgBARIVCghvZmZzZXRfeRgJIAEoAUgFiAEBEhcKCmFic29sdXRlX3gYCiABKAFIBogBARIXCgphYnNvbHV0ZV95GAsgASgBSAeIAQFCEgoQX2JhY2tlbmRfbm9kZV9pZEILCglfc2VsZWN0b3JCEAoOX2pzX2V4cHJlc3Npb25CCwoJX2ZyYW1lX2lkQgsKCV9vZmZzZXRfeEILCglfb2Zmc2V0X3lCDQoLX2Fic29sdXRlX3hCDQoLX2Fic29sdXRlX3ki7wIKC0ZpbGxSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEhwKD2JhY2tlbmRfbm9kZV9pZBgEIAEoBUgAiAEBEhUKCHNlbGVjdG9yGAUgASgJSAGIAQESGgoNanNfZXhwcmVzc2lvbhgGIAEoCUgCiAEBEhUKCGZyYW1lX2lkGAcgASgJSAOIAQESDAoEdGV4dBgIIAEoCRIYCgtjbGVhcl9maXJzdBgJIAEoCEgEiAEBEhQKB3RpbWVvdXQYCiABKAFIBYgBARIYCgtzdGVhZHlfdGltZRgLIAEoAUgGiAEBQhIKEF9iYWNrZW5kX25vZGVfaWRCCwoJX3NlbGVjdG9yQhAKDl9qc19leHByZXNzaW9uQgsKCV9mcmFtZV9pZEIOCgxfY2xlYXJfZmlyc3RCCgoIX3RpbWVvdXRCDgoMX3N0ZWFkeV90aW1lIkwKE1NldEJsb2NrTGlzdFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhAKCHBhdHRlcm5zGAMgAygJImEKFVNldFN0YXRpY1BhdGhzUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSEAoIcGF0dGVybnMYAyADKAkSEQoJYmxvYl9uYW1lGAQgASgJIogBChhXYWl0Rm9yQW55UmVxdWVzdFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhAKCHBhdHRlcm5zGAMgAygJEhMKC2Fib3J0X2ZsYWdzGAQgAygFEhQKB3RpbWVvdXQYBSABKAFIAIgBAUIKCghfdGltZW91dCJgChlXYWl0Rm9yQW55UmVxdWVzdFJlc3BvbnNlEg0KBWluZGV4GAEgASgFEjQKB3JlcXVlc3QYAiABKAsyIy5icm93c2Vyc2NhbGUudjEuSW50ZXJjZXB0ZWRSZXF1ZXN0IokBChlXYWl0Rm9yQW55UmVzcG9uc2VSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIQCghwYXR0ZXJucxgDIAMoCRITCgthYm9ydF9mbGFncxgEIAMoBRIUCgd0aW1lb3V0GAUgASgBSACIAQFCCgoIX3RpbWVvdXQiYwoaV2FpdEZvckFueVJlc3BvbnNlUmVzcG9uc2USDQoFaW5kZXgYASABKAUSNgoIcmVzcG9uc2UYAiABKAsyJC5icm93c2Vyc2NhbGUudjEuSW50ZXJjZXB0ZWRSZXNwb25zZSLKAQoUTW9kaWZ5UmVxdWVzdFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhMKC3VybF9wYXR0ZXJuGAMgASgJEjoKDW1vZGlmaWNhdGlvbnMYBCADKAsyIy5icm93c2Vyc2NhbGUudjEuSGVhZGVyTW9kaWZpY2F0aW9uEhEKBGJvZHkYBSABKAlIAIgBARIUCgd0aW1lb3V0GAYgASgBSAGIAQFCBwoFX2JvZHlCCgoIX3RpbWVvdXQiTQoVTW9kaWZ5UmVxdWVzdFJlc3BvbnNlEjQKB3JlcXVlc3QYASABKAsyIy5icm93c2Vyc2NhbGUudjEuSW50ZXJjZXB0ZWRSZXF1ZXN0IjgKEUdldENvb2tpZXNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCSJDChJHZXRDb29raWVzUmVzcG9uc2USLQoHY29va2llcxgBIAMoCzIcLmJyb3dzZXJzY2FsZS52MS5Db29raWVQYXJhbSJnChFTZXRDb29raWVzUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSLQoHY29va2llcxgDIAMoCzIcLmJyb3dzZXJzY2FsZS52MS5Db29raWVQYXJhbSI6ChNDbGVhckNvb2tpZXNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCSIpCgtTdG9yYWdlSXRlbRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAkiUQoSU3RvcmFnZU9yaWdpbkVudHJ5Eg4KBm9yaWdpbhgBIAEoCRIrCgVpdGVtcxgCIAMoCzIcLmJyb3dzZXJzY2FsZS52MS5TdG9yYWdlSXRlbSJYChFHZXRTdG9yYWdlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSEwoGb3JpZ2luGAMgASgJSACIAQFCCQoHX29yaWdpbiJKChJHZXRTdG9yYWdlUmVzcG9uc2USNAoHc3RvcmFnZRgBIAMoCzIjLmJyb3dzZXJzY2FsZS52MS5TdG9yYWdlT3JpZ2luRW50cnkimAEKEVNldFN0b3JhZ2VSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRI0CgdzdG9yYWdlGAMgAygLMiMuYnJvd3NlcnNjYWxlLnYxLlN0b3JhZ2VPcmlnaW5FbnRyeRIYCgtjbGVhcl9maXJzdBgEIAEoCEgAiAEBQg4KDF9jbGVhcl9maXJzdCJaChNDbGVhclN0b3JhZ2VSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRITCgZvcmlnaW4YAyABKAlIAIgBAUIJCgdfb3JpZ2luIocBCg1HZXRET01SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEhUKCGZyYW1lX2lkGAQgASgJSACIAQESEgoFZGVwdGgYBSABKAVIAYgBAUILCglfZnJhbWVfaWRCCAoGX2RlcHRoIh0KDkdldERPTVJlc3BvbnNlEgsKA2RvbRgBIAEoCSKZBAoVR2V0T2JzZXJ2YXRpb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEiMKFm1heF9lbGVtZW50c19wZXJfZnJhbWUYBCABKAVIAIgBARIcCg9tYXhfdGV4dF9sZW5ndGgYBSABKAVIAYgBARITCgZmb3JtYXQYBiABKAlIAogBARIdChBtYXhfdG90YWxfdG9rZW5zGAcgASgFSAOIAQESGwoOaW5jbHVkZV9ib3VuZHMYCCABKAhIBIgBARIaCg12aWV3cG9ydF9vbmx5GAkgASgISAWIAQESHAoPYmFja2VuZF9ub2RlX2lkGAogASgFSAaIAQESFQoIc2VsZWN0b3IYCyABKAlIB4gBARIaCg1qc19leHByZXNzaW9uGAwgASgJSAiIAQESFQoIZnJhbWVfaWQYDSABKAlICYgBAUIZChdfbWF4X2VsZW1lbnRzX3Blcl9mcmFtZUISChBfbWF4X3RleHRfbGVuZ3RoQgkKB19mb3JtYXRCEwoRX21heF90b3RhbF90b2tlbnNCEQoPX2luY2x1ZGVfYm91bmRzQhAKDl92aWV3cG9ydF9vbmx5QhIKEF9iYWNrZW5kX25vZGVfaWRCCwoJX3NlbGVjdG9yQhAKDl9qc19leHByZXNzaW9uQgsKCV9mcmFtZV9pZCJFChZHZXRPYnNlcnZhdGlvblJlc3BvbnNlEhMKC29ic2VydmF0aW9uGAEgASgJSgQIAhADUhBvYnNlcnZhdGlvbl9qc29uIm0KEUdldERPTUhhc2hSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEhUKCGZyYW1lX2lkGAQgASgJSACIAQFCCwoJX2ZyYW1lX2lkIiIKEkdldERPTUhhc2hSZXNwb25zZRIMCgRoYXNoGAEgASgJImYKGEluc3BlY3RBdFBvc2l0aW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIJCgF4GAQgASgBEgkKAXkYBSABKAEiqQEKGUluc3BlY3RBdFBvc2l0aW9uUmVzcG9uc2USFwoPYmFja2VuZF9ub2RlX2lkGAEgASgFEhAKCGZyYW1lX2lkGAIgASgJEhAKCHRhZ19uYW1lGAMgASgJEhQKDHRleHRfY29udGVudBgEIAEoCRISCgppc192aXNpYmxlGAUgASgIEiUKBmJvdW5kcxgGIAEoCzIVLmJyb3dzZXJzY2FsZS52MS5SZWN0IokBChRIaWdobGlnaHROb2RlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIXCg9iYWNrZW5kX25vZGVfaWQYBCABKAUSFQoIZnJhbWVfaWQYBSABKAlIAIgBAUILCglfZnJhbWVfaWQiVwoRSW5zZXJ0VGV4dFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSDAoEdGV4dBgEIAEoCSJ7CgtUeXBlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIMCgR0ZXh0GAQgASgJEhgKC2NsZWFyX2ZpcnN0GAUgASgISACIAQFCDgoMX2NsZWFyX2ZpcnN0IroBCg9QcmVzc0tleVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSCwoDa2V5GAQgASgJEhEKBGNvZGUYBSABKAlIAIgBARIWCgltb2RpZmllcnMYBiABKAVIAYgBARIVCghsb2NhdGlvbhgHIAEoBUgCiAEBQgcKBV9jb2RlQgwKCl9tb2RpZmllcnNCCwoJX2xvY2F0aW9uIrwBChFSZWxlYXNlS2V5UmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRILCgNrZXkYBCABKAkSEQoEY29kZRgFIAEoCUgAiAEBEhYKCW1vZGlmaWVycxgGIAEoBUgBiAEBEhUKCGxvY2F0aW9uGAcgASgFSAKIAQFCBwoFX2NvZGVCDAoKX21vZGlmaWVyc0ILCglfbG9jYXRpb24iSwoTR2V0U2VsZWN0aW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCSIkChRHZXRTZWxlY3Rpb25SZXNwb25zZRIMCgR0ZXh0GAEgASgJIosBChFTY3JlZW5zaG90UmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRITCgZmb3JtYXQYBCABKAlIAIgBARIUCgdxdWFsaXR5GAUgASgFSAGIAQFCCQoHX2Zvcm1hdEIKCghfcXVhbGl0eSJIChJTY3JlZW5zaG90UmVzcG9uc2USEwoLZGF0YV9iYXNlNjQYASABKAkSDQoFd2lkdGgYAiABKAUSDgoGaGVpZ2h0GAMgASgFIpMDChFSZWFkQ2FudmFzUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIcCg9iYWNrZW5kX25vZGVfaWQYBCABKAVIAIgBARIVCghzZWxlY3RvchgFIAEoCUgBiAEBEhoKDWpzX2V4cHJlc3Npb24YBiABKAlIAogBARIVCghmcmFtZV9pZBgHIAEoCUgDiAEBEhMKBmZvcm1hdBgIIAEoCUgEiAEBEhQKB3F1YWxpdHkYCSABKAVIBYgBARIPCgJzeBgKIAEoBUgGiAEBEg8KAnN5GAsgASgFSAeIAQESDwoCc3cYDCABKAVICIgBARIPCgJzaBgNIAEoBUgJiAEBQhIKEF9iYWNrZW5kX25vZGVfaWRCCwoJX3NlbGVjdG9yQhAKDl9qc19leHByZXNzaW9uQgsKCV9mcmFtZV9pZEIJCgdfZm9ybWF0QgoKCF9xdWFsaXR5QgUKA19zeEIFCgNfc3lCBQoDX3N3QgUKA19zaCKaAQoSUmVhZENhbnZhc1Jlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSEAoIZnJhbWVfaWQYAiABKAkSFwoPYmFja2VuZF9ub2RlX2lkGAMgASgFEhMKC2RhdGFfYmFzZTY0GAQgASgJEg0KBXdpZHRoGAUgASgFEg4KBmhlaWdodBgGIAEoBRIUCgxvcmlnaW5fY2xlYW4YByABKAgiZAoTU29sdmVDYXB0Y2hhUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSEgoKdGltZW91dF9tcxgDIAEoBRIUCgxyZXRyeV9hbW91bnQYBCABKAUiJgoUU29sdmVDYXB0Y2hhUmVzcG9uc2USDgoGcmVzdWx0GAEgASgJImUKCUljZVNlcnZlchIMCgR1cmxzGAEgAygJEhUKCHVzZXJuYW1lGAIgASgJSACIAQESFwoKY3JlZGVudGlhbBgDIAEoCUgBiAEBQgsKCV91c2VybmFtZUINCgtfY3JlZGVudGlhbCI9ChZHZXRTdHJlYW1Db25maWdSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCSJKChdHZXRTdHJlYW1Db25maWdSZXNwb25zZRIvCgtpY2Vfc2VydmVycxgBIAMoCzIaLmJyb3dzZXJzY2FsZS52MS5JY2VTZXJ2ZXIiTAoSU3RhcnRTdHJlYW1SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIRCglvZmZlcl9zZHAYAyABKAkiKQoTU3RhcnRTdHJlYW1SZXNwb25zZRISCgphbnN3ZXJfc2RwGAEgASgJIjgKEVN0b3BTdHJlYW1SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCSIUChJTdG9wU3RyZWFtUmVzcG9uc2UygRwKB0Jyb3dzZXISRAoIU2V0UHJveHkSIC5icm93c2Vyc2NhbGUudjEuU2V0UHJveHlSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5Ek8KCEdldFBhZ2VzEiAuYnJvd3NlcnNjYWxlLnYxLkdldFBhZ2VzUmVxdWVzdBohLmJyb3dzZXJzY2FsZS52MS5HZXRQYWdlc1Jlc3BvbnNlEk8KCE5hdmlnYXRlEiAuYnJvd3NlcnNjYWxlLnYxLk5hdmlnYXRlUmVxdWVzdBohLmJyb3dzZXJzY2FsZS52MS5OYXZpZ2F0ZVJlc3BvbnNlEkQKCExvYWRIVE1MEiAuYnJvd3NlcnNjYWxlLnYxLkxvYWRIVE1MUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRJPCghFdmFsdWF0ZRIgLmJyb3dzZXJzY2FsZS52MS5FdmFsdWF0ZVJlcXVlc3QaIS5icm93c2Vyc2NhbGUudjEuRXZhbHVhdGVSZXNwb25zZRJACgNSdW4SGy5icm93c2Vyc2NhbGUudjEuUnVuUmVxdWVzdBocLmJyb3dzZXJzY2FsZS52MS5SdW5SZXNwb25zZRJMCgpXYWl0Rm9yQW55EiEuYnJvd3NlcnNjYWxlLnYxLldhaXRGb3JBbnlQYXJhbXMaGy5icm93c2Vyc2NhbGUudjEuV2FpdFJlc3VsdBJZCgxTZWxlY3RPcHRpb24SJC5icm93c2Vyc2NhbGUudjEuU2VsZWN0T3B0aW9uUmVxdWVzdBojLmJyb3dzZXJzY2FsZS52MS5TZWxlY3RPcHRpb25SZXN1bHQSSwoIU2Nyb2xsVG8SIC5icm93c2Vyc2NhbGUudjEuU2Nyb2xsVG9SZXF1ZXN0Gh0uYnJvd3NlcnNjYWxlLnYxLlNjcm9sbFJlc3VsdBJFCgZNb3ZlVG8SHi5icm93c2Vyc2NhbGUudjEuTW92ZVRvUmVxdWVzdBobLmJyb3dzZXJzY2FsZS52MS5Nb3ZlUmVzdWx0EkQKBUNsaWNrEh0uYnJvd3NlcnNjYWxlLnYxLkNsaWNrUmVxdWVzdBocLmJyb3dzZXJzY2FsZS52MS5DbGlja1Jlc3VsdBJBCgREcmFnEhwuYnJvd3NlcnNjYWxlLnYxLkRyYWdSZXF1ZXN0GhsuYnJvd3NlcnNjYWxlLnYxLkRyYWdSZXN1bHQSQQoERmlsbBIcLmJyb3dzZXJzY2FsZS52MS5GaWxsUmVxdWVzdBobLmJyb3dzZXJzY2FsZS52MS5GaWxsUmVzdWx0ElgKC0FkZFJlYWN0aW9uEiMuYnJvd3NlcnNjYWxlLnYxLkFkZFJlYWN0aW9uUmVxdWVzdBokLmJyb3dzZXJzY2FsZS52MS5BZGRSZWFjdGlvblJlc3BvbnNlEmEKDlJlbW92ZVJlYWN0aW9uEiYuYnJvd3NlcnNjYWxlLnYxLlJlbW92ZVJlYWN0aW9uUmVxdWVzdBonLmJyb3dzZXJzY2FsZS52MS5SZW1vdmVSZWFjdGlvblJlc3BvbnNlEl4KDUxpc3RSZWFjdGlvbnMSJS5icm93c2Vyc2NhbGUudjEuTGlzdFJlYWN0aW9uc1JlcXVlc3QaJi5icm93c2Vyc2NhbGUudjEuTGlzdFJlYWN0aW9uc1Jlc3BvbnNlEkwKDFNldEJsb2NrTGlzdBIkLmJyb3dzZXJzY2FsZS52MS5TZXRCbG9ja0xpc3RSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5ElAKDlNldFN0YXRpY1BhdGhzEiYuYnJvd3NlcnNjYWxlLnYxLlNldFN0YXRpY1BhdGhzUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRJqChFXYWl0Rm9yQW55UmVxdWVzdBIpLmJyb3dzZXJzY2FsZS52MS5XYWl0Rm9yQW55UmVxdWVzdFJlcXVlc3QaKi5icm93c2Vyc2NhbGUudjEuV2FpdEZvckFueVJlcXVlc3RSZXNwb25zZRJtChJXYWl0Rm9yQW55UmVzcG9uc2USKi5icm93c2Vyc2NhbGUudjEuV2FpdEZvckFueVJlc3BvbnNlUmVxdWVzdBorLmJyb3dzZXJzY2FsZS52MS5XYWl0Rm9yQW55UmVzcG9uc2VSZXNwb25zZRJeCg1Nb2RpZnlSZXF1ZXN0EiUuYnJvd3NlcnNjYWxlLnYxLk1vZGlmeVJlcXVlc3RSZXF1ZXN0GiYuYnJvd3NlcnNjYWxlLnYxLk1vZGlmeVJlcXVlc3RSZXNwb25zZRJVCgpHZXRDb29raWVzEiIuYnJvd3NlcnNjYWxlLnYxLkdldENvb2tpZXNSZXF1ZXN0GiMuYnJvd3NlcnNjYWxlLnYxLkdldENvb2tpZXNSZXNwb25zZRJICgpTZXRDb29raWVzEiIuYnJvd3NlcnNjYWxlLnYxLlNldENvb2tpZXNSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5EkwKDENsZWFyQ29va2llcxIkLmJyb3dzZXJzY2FsZS52MS5DbGVhckNvb2tpZXNSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5ElUKCkdldFN0b3JhZ2USIi5icm93c2Vyc2NhbGUudjEuR2V0U3RvcmFnZVJlcXVlc3QaIy5icm93c2Vyc2NhbGUudjEuR2V0U3RvcmFnZVJlc3BvbnNlEkgKClNldFN0b3JhZ2USIi5icm93c2Vyc2NhbGUudjEuU2V0U3RvcmFnZVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSTAoMQ2xlYXJTdG9yYWdlEiQuYnJvd3NlcnNjYWxlLnYxLkNsZWFyU3RvcmFnZVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSSQoGR2V0RE9NEh4uYnJvd3NlcnNjYWxlLnYxLkdldERPTVJlcXVlc3QaHy5icm93c2Vyc2NhbGUudjEuR2V0RE9NUmVzcG9uc2USVQoKR2V0RE9NSGFzaBIiLmJyb3dzZXJzY2FsZS52MS5HZXRET01IYXNoUmVxdWVzdBojLmJyb3dzZXJzY2FsZS52MS5HZXRET01IYXNoUmVzcG9uc2USYQoOR2V0T2JzZXJ2YXRpb24SJi5icm93c2Vyc2NhbGUudjEuR2V0T2JzZXJ2YXRpb25SZXF1ZXN0GicuYnJvd3NlcnNjYWxlLnYxLkdldE9ic2VydmF0aW9uUmVzcG9uc2USagoRSW5zcGVjdEF0UG9zaXRpb24SKS5icm93c2Vyc2NhbGUudjEuSW5zcGVjdEF0UG9zaXRpb25SZXF1ZXN0GiouYnJvd3NlcnNjYWxlLnYxLkluc3BlY3RBdFBvc2l0aW9uUmVzcG9uc2USTgoNSGlnaGxpZ2h0Tm9kZRIlLmJyb3dzZXJzY2FsZS52MS5IaWdobGlnaHROb2RlUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRJVCgpTY3JlZW5zaG90EiIuYnJvd3NlcnNjYWxlLnYxLlNjcmVlbnNob3RSZXF1ZXN0GiMuYnJvd3NlcnNjYWxlLnYxLlNjcmVlbnNob3RSZXNwb25zZRJVCgpSZWFkQ2FudmFzEiIuYnJvd3NlcnNjYWxlLnYxLlJlYWRDYW52YXNSZXF1ZXN0GiMuYnJvd3NlcnNjYWxlLnYxLlJlYWRDYW52YXNSZXNwb25zZRJICgpJbnNlcnRUZXh0EiIuYnJvd3NlcnNjYWxlLnYxLkluc2VydFRleHRSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5EjwKBFR5cGUSHC5icm93c2Vyc2NhbGUudjEuVHlwZVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSRAoIUHJlc3NLZXkSIC5icm93c2Vyc2NhbGUudjEuUHJlc3NLZXlSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5EkgKClJlbGVhc2VLZXkSIi5icm93c2Vyc2NhbGUudjEuUmVsZWFzZUtleVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSWwoMR2V0U2VsZWN0aW9uEiQuYnJvd3NlcnNjYWxlLnYxLkdldFNlbGVjdGlvblJlcXVlc3QaJS5icm93c2Vyc2NhbGUudjEuR2V0U2VsZWN0aW9uUmVzcG9uc2USWwoMU29sdmVDYXB0Y2hhEiQuYnJvd3NlcnNjYWxlLnYxLlNvbHZlQ2FwdGNoYVJlcXVlc3QaJS5icm93c2Vyc2NhbGUudjEuU29sdmVDYXB0Y2hhUmVzcG9uc2USZAoPR2V0U3RyZWFtQ29uZmlnEicuYnJvd3NlcnNjYWxlLnYxLkdldFN0cmVhbUNvbmZpZ1JlcXVlc3QaKC5icm93c2Vyc2NhbGUudjEuR2V0U3RyZWFtQ29uZmlnUmVzcG9uc2USWAoLU3RhcnRTdHJlYW0SIy5icm93c2Vyc2NhbGUudjEuU3RhcnRTdHJlYW1SZXF1ZXN0GiQuYnJvd3NlcnNjYWxlLnYxLlN0YXJ0U3RyZWFtUmVzcG9uc2USVQoKU3RvcFN0cmVhbRIiLmJyb3dzZXJzY2FsZS52MS5TdG9wU3RyZWFtUmVxdWVzdBojLmJyb3dzZXJzY2FsZS52MS5TdG9wU3RyZWFtUmVzcG9uc2VCM1oxZ2l0aHViLmNvbS9icm93c2Vyc2NhbGUvYnJvd3NlcnNjYWxlLWdvL2dlbmVyYXRlZGIGcHJvdG8z", [file_google_protobuf_empty]);
|
|
3803
3803
|
var HeaderSchema = /* @__PURE__ */ messageDesc(file_wrc, 3);
|
|
3804
3804
|
var HeaderModificationSchema = /* @__PURE__ */ messageDesc(file_wrc, 6);
|
|
3805
3805
|
var CookiePartitionKeySchema = /* @__PURE__ */ messageDesc(file_wrc, 7);
|
|
@@ -4128,7 +4128,8 @@ function occluderFromProto(o) {
|
|
|
4128
4128
|
visibility: o.visibility ?? "",
|
|
4129
4129
|
opacity: o.opacity ?? 0,
|
|
4130
4130
|
zIndex: o.zIndex ?? "",
|
|
4131
|
-
hittableWhileInvisible: o.hittableWhileInvisible ?? false
|
|
4131
|
+
hittableWhileInvisible: o.hittableWhileInvisible ?? false,
|
|
4132
|
+
position: o.position ?? ""
|
|
4132
4133
|
};
|
|
4133
4134
|
}
|
|
4134
4135
|
function clickDetailFromProto(e) {
|
|
@@ -5071,37 +5072,61 @@ var CloudBrowser = class {
|
|
|
5071
5072
|
return resp.hash;
|
|
5072
5073
|
}
|
|
5073
5074
|
/**
|
|
5074
|
-
* Returns a compact,
|
|
5075
|
-
*
|
|
5076
|
-
*
|
|
5075
|
+
* Returns a compact, frame-aware view of the visible page — the first thing
|
|
5076
|
+
* to reach for on an unfamiliar page, and the cheapest way to re-read the
|
|
5077
|
+
* current state afterwards.
|
|
5077
5078
|
*
|
|
5078
|
-
*
|
|
5079
|
-
*
|
|
5080
|
-
* visible and interactable.
|
|
5079
|
+
* Each frame opens with header lines carrying the URL, the title and the
|
|
5080
|
+
* scroll position, then one line per visible element:
|
|
5081
5081
|
*
|
|
5082
|
-
*
|
|
5083
|
-
*
|
|
5082
|
+
* ```
|
|
5083
|
+
* input#email[47] type="email" name="loginId" value="a@b.com" required click "E-Mail"
|
|
5084
|
+
* ```
|
|
5084
5085
|
*
|
|
5085
|
-
*
|
|
5086
|
-
*
|
|
5086
|
+
* It spans every frame, pierces open and closed shadow roots, enumerates
|
|
5087
|
+
* `<select>` options, and reports live form state: `value=` is what is typed
|
|
5088
|
+
* in right now (passwords as a length), `checked=` for boxes. The trailing
|
|
5089
|
+
* quoted string is always the label or text, never the value, so an empty and
|
|
5090
|
+
* a prefilled field stay distinguishable. Because the headers already carry
|
|
5091
|
+
* URL, title and scroll offset, this replaces the usual handful of
|
|
5092
|
+
* {@link evaluate} probes after each step.
|
|
5093
|
+
*
|
|
5094
|
+
* On what to do with the result: backendNodeId (the `47` above) is a handle
|
|
5095
|
+
* for this session and can be passed straight to click/fill via
|
|
5096
|
+
* {@link node}. It does not survive a new document, so for anything you write
|
|
5097
|
+
* into a script, target with {@link css} or {@link js} instead — those calls
|
|
5098
|
+
* return the backendNodeId they resolved to, which lets you confirm the
|
|
5099
|
+
* durable anchor hits the element you saw.
|
|
5100
|
+
*
|
|
5101
|
+
* @param opts - optional format and budget overrides; see {@link GetObservationOpts}
|
|
5102
|
+
*
|
|
5103
|
+
* @returns the observation in the requested format, ready to hand to a model
|
|
5087
5104
|
*
|
|
5088
5105
|
* @throws UNKNOWN_ERROR - the observation could not be produced
|
|
5089
5106
|
*
|
|
5090
5107
|
* @example
|
|
5091
|
-
* const obs = await browser.getObservation(
|
|
5092
|
-
* console.log(obs
|
|
5108
|
+
* const obs = await browser.getObservation();
|
|
5109
|
+
* console.log(obs);
|
|
5093
5110
|
*/
|
|
5094
5111
|
async getObservation(opts) {
|
|
5095
5112
|
const req = create(GetObservationRequestSchema, {
|
|
5096
5113
|
sessionId: this.sessionId,
|
|
5097
5114
|
apiKey: this.apiKey
|
|
5098
5115
|
});
|
|
5116
|
+
if (opts?.format !== void 0) req.format = opts.format;
|
|
5099
5117
|
if (opts?.maxElementsPerFrame !== void 0) {
|
|
5100
5118
|
req.maxElementsPerFrame = opts.maxElementsPerFrame;
|
|
5101
5119
|
}
|
|
5102
5120
|
if (opts?.maxTextLength !== void 0) req.maxTextLength = opts.maxTextLength;
|
|
5121
|
+
if (opts?.maxTotalTokens !== void 0) req.maxTotalTokens = opts.maxTotalTokens;
|
|
5122
|
+
if (opts?.includeBounds !== void 0) req.includeBounds = opts.includeBounds;
|
|
5123
|
+
if (opts?.viewportOnly !== void 0) req.viewportOnly = opts.viewportOnly;
|
|
5124
|
+
if (opts?.backendNodeId !== void 0) req.backendNodeId = opts.backendNodeId;
|
|
5125
|
+
if (opts?.selector !== void 0) req.selector = opts.selector;
|
|
5126
|
+
if (opts?.jsExpression !== void 0) req.jsExpression = opts.jsExpression;
|
|
5127
|
+
if (opts?.frameId !== void 0) req.frameId = opts.frameId;
|
|
5103
5128
|
const resp = await this.client.getObservation(req);
|
|
5104
|
-
return
|
|
5129
|
+
return resp.observation;
|
|
5105
5130
|
}
|
|
5106
5131
|
/**
|
|
5107
5132
|
* Captures a single image of the page's current frame and returns it as
|
package/dist/client.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Transport } from "@connectrpc/connect";
|
|
2
2
|
import type { Locator } from "./locator.ts";
|
|
3
|
-
import type { DOMResult, DragResult, ElementResult, EvaluateResult, InterceptedRequest, InterceptedResponse, InspectResult, NavigateResult,
|
|
3
|
+
import type { DOMResult, DragResult, ElementResult, EvaluateResult, InterceptedRequest, InterceptedResponse, InspectResult, NavigateResult, PageInfo, ScreenshotResult, ReadCanvasResult, SelectOptionResult, WaitResult, IceServer, ReactionInfo } from "./types.ts";
|
|
4
4
|
import type { ClickOpts, FillOpts, GetDOMOpts, GetObservationOpts, LoadHTMLOpts, NavigateOpts, ReactionOpts, ScreenshotOpts, ReadCanvasOpts, SelectOpts, WaitOpts } from "./options.ts";
|
|
5
5
|
import type { HeaderModification, RequestPattern } from "./network.ts";
|
|
6
6
|
import type { CookieParam } from "./cookies.ts";
|
|
@@ -462,27 +462,43 @@ export declare class CloudBrowser {
|
|
|
462
462
|
*/
|
|
463
463
|
getDOMHash(frameId?: string): Promise<string>;
|
|
464
464
|
/**
|
|
465
|
-
* Returns a compact,
|
|
466
|
-
*
|
|
467
|
-
*
|
|
465
|
+
* Returns a compact, frame-aware view of the visible page — the first thing
|
|
466
|
+
* to reach for on an unfamiliar page, and the cheapest way to re-read the
|
|
467
|
+
* current state afterwards.
|
|
468
468
|
*
|
|
469
|
-
*
|
|
470
|
-
*
|
|
471
|
-
* visible and interactable.
|
|
469
|
+
* Each frame opens with header lines carrying the URL, the title and the
|
|
470
|
+
* scroll position, then one line per visible element:
|
|
472
471
|
*
|
|
473
|
-
*
|
|
474
|
-
*
|
|
472
|
+
* ```
|
|
473
|
+
* input#email[47] type="email" name="loginId" value="a@b.com" required click "E-Mail"
|
|
474
|
+
* ```
|
|
475
475
|
*
|
|
476
|
-
*
|
|
477
|
-
*
|
|
476
|
+
* It spans every frame, pierces open and closed shadow roots, enumerates
|
|
477
|
+
* `<select>` options, and reports live form state: `value=` is what is typed
|
|
478
|
+
* in right now (passwords as a length), `checked=` for boxes. The trailing
|
|
479
|
+
* quoted string is always the label or text, never the value, so an empty and
|
|
480
|
+
* a prefilled field stay distinguishable. Because the headers already carry
|
|
481
|
+
* URL, title and scroll offset, this replaces the usual handful of
|
|
482
|
+
* {@link evaluate} probes after each step.
|
|
483
|
+
*
|
|
484
|
+
* On what to do with the result: backendNodeId (the `47` above) is a handle
|
|
485
|
+
* for this session and can be passed straight to click/fill via
|
|
486
|
+
* {@link node}. It does not survive a new document, so for anything you write
|
|
487
|
+
* into a script, target with {@link css} or {@link js} instead — those calls
|
|
488
|
+
* return the backendNodeId they resolved to, which lets you confirm the
|
|
489
|
+
* durable anchor hits the element you saw.
|
|
490
|
+
*
|
|
491
|
+
* @param opts - optional format and budget overrides; see {@link GetObservationOpts}
|
|
492
|
+
*
|
|
493
|
+
* @returns the observation in the requested format, ready to hand to a model
|
|
478
494
|
*
|
|
479
495
|
* @throws UNKNOWN_ERROR - the observation could not be produced
|
|
480
496
|
*
|
|
481
497
|
* @example
|
|
482
|
-
* const obs = await browser.getObservation(
|
|
483
|
-
* console.log(obs
|
|
498
|
+
* const obs = await browser.getObservation();
|
|
499
|
+
* console.log(obs);
|
|
484
500
|
*/
|
|
485
|
-
getObservation(opts?: GetObservationOpts): Promise<
|
|
501
|
+
getObservation(opts?: GetObservationOpts): Promise<string>;
|
|
486
502
|
/**
|
|
487
503
|
* Captures a single image of the page's current frame and returns it as
|
|
488
504
|
* base64-encoded image bytes.
|
package/dist/client.js
CHANGED
|
@@ -705,38 +705,70 @@ export class CloudBrowser {
|
|
|
705
705
|
return resp.hash;
|
|
706
706
|
}
|
|
707
707
|
/**
|
|
708
|
-
* Returns a compact,
|
|
709
|
-
*
|
|
710
|
-
*
|
|
708
|
+
* Returns a compact, frame-aware view of the visible page — the first thing
|
|
709
|
+
* to reach for on an unfamiliar page, and the cheapest way to re-read the
|
|
710
|
+
* current state afterwards.
|
|
711
711
|
*
|
|
712
|
-
*
|
|
713
|
-
*
|
|
714
|
-
* visible and interactable.
|
|
712
|
+
* Each frame opens with header lines carrying the URL, the title and the
|
|
713
|
+
* scroll position, then one line per visible element:
|
|
715
714
|
*
|
|
716
|
-
*
|
|
717
|
-
*
|
|
715
|
+
* ```
|
|
716
|
+
* input#email[47] type="email" name="loginId" value="a@b.com" required click "E-Mail"
|
|
717
|
+
* ```
|
|
718
718
|
*
|
|
719
|
-
*
|
|
720
|
-
*
|
|
719
|
+
* It spans every frame, pierces open and closed shadow roots, enumerates
|
|
720
|
+
* `<select>` options, and reports live form state: `value=` is what is typed
|
|
721
|
+
* in right now (passwords as a length), `checked=` for boxes. The trailing
|
|
722
|
+
* quoted string is always the label or text, never the value, so an empty and
|
|
723
|
+
* a prefilled field stay distinguishable. Because the headers already carry
|
|
724
|
+
* URL, title and scroll offset, this replaces the usual handful of
|
|
725
|
+
* {@link evaluate} probes after each step.
|
|
726
|
+
*
|
|
727
|
+
* On what to do with the result: backendNodeId (the `47` above) is a handle
|
|
728
|
+
* for this session and can be passed straight to click/fill via
|
|
729
|
+
* {@link node}. It does not survive a new document, so for anything you write
|
|
730
|
+
* into a script, target with {@link css} or {@link js} instead — those calls
|
|
731
|
+
* return the backendNodeId they resolved to, which lets you confirm the
|
|
732
|
+
* durable anchor hits the element you saw.
|
|
733
|
+
*
|
|
734
|
+
* @param opts - optional format and budget overrides; see {@link GetObservationOpts}
|
|
735
|
+
*
|
|
736
|
+
* @returns the observation in the requested format, ready to hand to a model
|
|
721
737
|
*
|
|
722
738
|
* @throws UNKNOWN_ERROR - the observation could not be produced
|
|
723
739
|
*
|
|
724
740
|
* @example
|
|
725
|
-
* const obs = await browser.getObservation(
|
|
726
|
-
* console.log(obs
|
|
741
|
+
* const obs = await browser.getObservation();
|
|
742
|
+
* console.log(obs);
|
|
727
743
|
*/
|
|
728
744
|
async getObservation(opts) {
|
|
729
745
|
const req = create(GetObservationRequestSchema, {
|
|
730
746
|
sessionId: this.sessionId,
|
|
731
747
|
apiKey: this.apiKey,
|
|
732
748
|
});
|
|
749
|
+
if (opts?.format !== undefined)
|
|
750
|
+
req.format = opts.format;
|
|
733
751
|
if (opts?.maxElementsPerFrame !== undefined) {
|
|
734
752
|
req.maxElementsPerFrame = opts.maxElementsPerFrame;
|
|
735
753
|
}
|
|
736
754
|
if (opts?.maxTextLength !== undefined)
|
|
737
755
|
req.maxTextLength = opts.maxTextLength;
|
|
756
|
+
if (opts?.maxTotalTokens !== undefined)
|
|
757
|
+
req.maxTotalTokens = opts.maxTotalTokens;
|
|
758
|
+
if (opts?.includeBounds !== undefined)
|
|
759
|
+
req.includeBounds = opts.includeBounds;
|
|
760
|
+
if (opts?.viewportOnly !== undefined)
|
|
761
|
+
req.viewportOnly = opts.viewportOnly;
|
|
762
|
+
if (opts?.backendNodeId !== undefined)
|
|
763
|
+
req.backendNodeId = opts.backendNodeId;
|
|
764
|
+
if (opts?.selector !== undefined)
|
|
765
|
+
req.selector = opts.selector;
|
|
766
|
+
if (opts?.jsExpression !== undefined)
|
|
767
|
+
req.jsExpression = opts.jsExpression;
|
|
768
|
+
if (opts?.frameId !== undefined)
|
|
769
|
+
req.frameId = opts.frameId;
|
|
738
770
|
const resp = await this.client.getObservation(req);
|
|
739
|
-
return
|
|
771
|
+
return resp.observation;
|
|
740
772
|
}
|
|
741
773
|
/**
|
|
742
774
|
* Captures a single image of the page's current frame and returns it as
|
package/dist/gen/wrc_pb.d.ts
CHANGED
|
@@ -548,6 +548,15 @@ export type OccluderInfo = Message<"browserscale.v1.OccluderInfo"> & {
|
|
|
548
548
|
* @generated from field: optional bool hittable_while_invisible = 12;
|
|
549
549
|
*/
|
|
550
550
|
hittableWhileInvisible?: boolean;
|
|
551
|
+
/**
|
|
552
|
+
* Computed position keyword. Reports "fixed"/"sticky" when the element is
|
|
553
|
+
* pinned by itself or by an ancestor — pinned blockers stay put no matter
|
|
554
|
+
* where the pointer goes and can only be cleared by scrolling the target out
|
|
555
|
+
* from under them; ordinary overlays often collapse once the pointer leaves.
|
|
556
|
+
*
|
|
557
|
+
* @generated from field: optional string position = 13;
|
|
558
|
+
*/
|
|
559
|
+
position?: string;
|
|
551
560
|
};
|
|
552
561
|
/**
|
|
553
562
|
* Describes the message browserscale.v1.OccluderInfo.
|
|
@@ -2397,17 +2406,74 @@ export type GetObservationRequest = Message<"browserscale.v1.GetObservationReque
|
|
|
2397
2406
|
*/
|
|
2398
2407
|
pageId: string;
|
|
2399
2408
|
/**
|
|
2400
|
-
*
|
|
2409
|
+
* Safety net against runaway documents; max_total_tokens is the limit that
|
|
2410
|
+
* normally binds. Default 800.
|
|
2401
2411
|
*
|
|
2402
2412
|
* @generated from field: optional int32 max_elements_per_frame = 4;
|
|
2403
2413
|
*/
|
|
2404
2414
|
maxElementsPerFrame?: number;
|
|
2405
2415
|
/**
|
|
2406
|
-
* Default
|
|
2416
|
+
* Max length of human-readable strings (labels, text, values). Default 300.
|
|
2417
|
+
* Identifier-like attributes have their own shorter cap.
|
|
2407
2418
|
*
|
|
2408
2419
|
* @generated from field: optional int32 max_text_length = 5;
|
|
2409
2420
|
*/
|
|
2410
2421
|
maxTextLength?: number;
|
|
2422
|
+
/**
|
|
2423
|
+
* "text" (default) for the compact line format, "json" for the structured
|
|
2424
|
+
* form. Only the requested representation is built.
|
|
2425
|
+
*
|
|
2426
|
+
* @generated from field: optional string format = 6;
|
|
2427
|
+
*/
|
|
2428
|
+
format?: string;
|
|
2429
|
+
/**
|
|
2430
|
+
* Budget across ALL frames, in estimated tokens rather than characters.
|
|
2431
|
+
* Default 8000.
|
|
2432
|
+
*
|
|
2433
|
+
* @generated from field: optional int32 max_total_tokens = 7;
|
|
2434
|
+
*/
|
|
2435
|
+
maxTotalTokens?: number;
|
|
2436
|
+
/**
|
|
2437
|
+
* Include element bounds as bounds="x,y,w,h".
|
|
2438
|
+
*
|
|
2439
|
+
* @generated from field: optional bool include_bounds = 8;
|
|
2440
|
+
*/
|
|
2441
|
+
includeBounds?: boolean;
|
|
2442
|
+
/**
|
|
2443
|
+
* Only emit elements intersecting the frame's current viewport.
|
|
2444
|
+
*
|
|
2445
|
+
* @generated from field: optional bool viewport_only = 9;
|
|
2446
|
+
*/
|
|
2447
|
+
viewportOnly?: boolean;
|
|
2448
|
+
/**
|
|
2449
|
+
* Scope root by backend node ID from a previous wait/getObservation.
|
|
2450
|
+
* Requires frame_id. At most one of backend_node_id, selector, js_expression.
|
|
2451
|
+
* Omit all three for the whole page.
|
|
2452
|
+
*
|
|
2453
|
+
* @generated from field: optional int32 backend_node_id = 10;
|
|
2454
|
+
*/
|
|
2455
|
+
backendNodeId?: number;
|
|
2456
|
+
/**
|
|
2457
|
+
* Scope root by CSS selector.
|
|
2458
|
+
*
|
|
2459
|
+
* @generated from field: optional string selector = 11;
|
|
2460
|
+
*/
|
|
2461
|
+
selector?: string;
|
|
2462
|
+
/**
|
|
2463
|
+
* Scope root by JS expression that evaluates to a DOM Element
|
|
2464
|
+
* (including __wrc.shadow(...) for closed shadow roots).
|
|
2465
|
+
*
|
|
2466
|
+
* @generated from field: optional string js_expression = 12;
|
|
2467
|
+
*/
|
|
2468
|
+
jsExpression?: string;
|
|
2469
|
+
/**
|
|
2470
|
+
* Where to look up the scope root: a specific frameId, empty/omitted for
|
|
2471
|
+
* the main frame, or "ALL_FRAMES" to search every frame until found.
|
|
2472
|
+
* Ignored when observing the whole page.
|
|
2473
|
+
*
|
|
2474
|
+
* @generated from field: optional string frame_id = 13;
|
|
2475
|
+
*/
|
|
2476
|
+
frameId?: string;
|
|
2411
2477
|
};
|
|
2412
2478
|
/**
|
|
2413
2479
|
* Describes the message browserscale.v1.GetObservationRequest.
|
|
@@ -2419,17 +2485,11 @@ export declare const GetObservationRequestSchema: GenMessage<GetObservationReque
|
|
|
2419
2485
|
*/
|
|
2420
2486
|
export type GetObservationResponse = Message<"browserscale.v1.GetObservationResponse"> & {
|
|
2421
2487
|
/**
|
|
2422
|
-
*
|
|
2423
|
-
*
|
|
2424
|
-
* @generated from field: string observation_text = 1;
|
|
2425
|
-
*/
|
|
2426
|
-
observationText: string;
|
|
2427
|
-
/**
|
|
2428
|
-
* Structured JSON with frames, elements, counts, and limits.
|
|
2488
|
+
* The observation in the requested format.
|
|
2429
2489
|
*
|
|
2430
|
-
* @generated from field: string
|
|
2490
|
+
* @generated from field: string observation = 1;
|
|
2431
2491
|
*/
|
|
2432
|
-
|
|
2492
|
+
observation: string;
|
|
2433
2493
|
};
|
|
2434
2494
|
/**
|
|
2435
2495
|
* Describes the message browserscale.v1.GetObservationResponse.
|
package/dist/gen/wrc_pb.js
CHANGED
|
@@ -6,7 +6,7 @@ import { file_google_protobuf_empty } from "@bufbuild/protobuf/wkt";
|
|
|
6
6
|
/**
|
|
7
7
|
* Describes the file wrc.proto.
|
|
8
8
|
*/
|
|
9
|
-
export const file_wrc = /*@__PURE__*/ fileDesc("Cgl3cmMucHJvdG8SD2Jyb3dzZXJzY2FsZS52MSI7CgRSZWN0EgkKAXgYASABKAESCQoBeRgCIAEoARINCgV3aWR0aBgDIAEoARIOCgZoZWlnaHQYBCABKAEihgIKCUZyYW1lSW5mbxIQCghmcmFtZV9pZBgBIAEoCRILCgN1cmwYAiABKAkSEAoIaXNfb29waWYYAyABKAgSFgoOaGFzX2pzX2NvbnRleHQYBCABKAgSEgoKaXNfbG9hZGluZxgFIAEoCBISCgppc192aXNpYmxlGAYgASgIEiwKDWFic29sdXRlX3JlY3QYByABKAsyFS5icm93c2Vyc2NhbGUudjEuUmVjdBIsCg1yZWxhdGl2ZV9yZWN0GAggASgLMhUuYnJvd3NlcnNjYWxlLnYxLlJlY3QSLAoIY2hpbGRyZW4YCSADKAsyGi5icm93c2Vyc2NhbGUudjEuRnJhbWVJbmZvIqwBCghQYWdlSW5mbxIPCgdwYWdlX2lkGAEgASgJEhoKEmJyb3dzZXJfY29udGV4dF9pZBgCIAEoCRILCgN1cmwYAyABKAkSDQoFdGl0bGUYBCABKAkSJwoIdmlld3BvcnQYBSABKAsyFS5icm93c2Vyc2NhbGUudjEuUmVjdBIuCgpmcmFtZV90cmVlGAYgASgLMhouYnJvd3NlcnNjYWxlLnYxLkZyYW1lSW5mbyIlCgZIZWFkZXISDAoEbmFtZRgBIAEoCRINCgV2YWx1ZRgCIAEoCSKAAQoSSW50ZXJjZXB0ZWRSZXF1ZXN0Eg4KBm1ldGhvZBgBIAEoCRILCgN1cmwYAiABKAkSKAoHaGVhZGVycxgDIAMoCzIXLmJyb3dzZXJzY2FsZS52MS5IZWFkZXISDAoEYm9keRgEIAEoCRIVCg1yZXNvdXJjZV90eXBlGAUgASgJIm8KE0ludGVyY2VwdGVkUmVzcG9uc2USCwoDdXJsGAEgASgJEhMKC3N0YXR1c19jb2RlGAIgASgFEigKB2hlYWRlcnMYAyADKAsyFy5icm93c2Vyc2NhbGUudjEuSGVhZGVyEgwKBGJvZHkYBCABKAkijgEKEkhlYWRlck1vZGlmaWNhdGlvbhIMCgRuYW1lGAEgASgJEhIKBXZhbHVlGAIgASgJSACIAQESDgoGYWN0aW9uGAMgASgJEhMKBmJlZm9yZRgEIAEoCUgBiAEBEhIKBWFmdGVyGAUgASgJSAKIAQFCCAoGX3ZhbHVlQgkKB19iZWZvcmVCCAoGX2FmdGVyIk0KEkNvb2tpZVBhcnRpdGlvbktleRIWCg50b3BfbGV2ZWxfc2l0ZRgBIAEoCRIfChdoYXNfY3Jvc3Nfc2l0ZV9hbmNlc3RvchgCIAEoCCK/AwoLQ29va2llUGFyYW0SDAoEbmFtZRgBIAEoCRINCgV2YWx1ZRgCIAEoCRIQCgN1cmwYAyABKAlIAIgBARIOCgZkb21haW4YBCABKAkSDAoEcGF0aBgFIAEoCRITCgZzZWN1cmUYBiABKAhIAYgBARIWCglodHRwX29ubHkYByABKAhIAogBARIWCglzYW1lX3NpdGUYCCABKAlIA4gBARIUCgdleHBpcmVzGAkgASgBSASIAQESFQoIcHJpb3JpdHkYCiABKAlIBYgBARIaCg1zb3VyY2Vfc2NoZW1lGAsgASgJSAaIAQESGAoLc291cmNlX3BvcnQYDCABKAVIB4gBARI/Cg1wYXJ0aXRpb25fa2V5GA0gASgLMiMuYnJvd3NlcnNjYWxlLnYxLkNvb2tpZVBhcnRpdGlvbktleUgIiAEBQgYKBF91cmxCCQoHX3NlY3VyZUIMCgpfaHR0cF9vbmx5QgwKCl9zYW1lX3NpdGVCCgoIX2V4cGlyZXNCCwoJX3ByaW9yaXR5QhAKDl9zb3VyY2Vfc2NoZW1lQg4KDF9zb3VyY2VfcG9ydEIQCg5fcGFydGl0aW9uX2tleSKtAQoNV2FpdENvbmRpdGlvbhIVCghzZWxlY3RvchgBIAEoCUgAiAEBEhoKDWpzX2V4cHJlc3Npb24YAiABKAlIAYgBARIUCgd2aXNpYmxlGAMgASgISAKIAQESGAoLc3RlYWR5X3RpbWUYBCABKAFIA4gBAUILCglfc2VsZWN0b3JCEAoOX2pzX2V4cHJlc3Npb25CCgoIX3Zpc2libGVCDgoMX3N0ZWFkeV90aW1lIrsBCgpXYWl0UmVzdWx0Eg0KBWluZGV4GAEgASgFEhAKCGZyYW1lX2lkGAIgASgJEhcKD2JhY2tlbmRfbm9kZV9pZBgDIAEoBRISCgppc192aXNpYmxlGAQgASgIEiUKBmJvdW5kcxgFIAEoCzIVLmJyb3dzZXJzY2FsZS52MS5SZWN0Ei4KBWVycm9yGAYgASgLMhouYnJvd3NlcnNjYWxlLnYxLldhaXRFcnJvckgAiAEBQggKBl9lcnJvciLsAQoTV2FpdENvbmRpdGlvblN0YXR1cxINCgVpbmRleBgBIAEoBRINCgVzdGF0ZRgCIAEoCRIXCg9iYWNrZW5kX25vZGVfaWQYAyABKAUSEAoIZnJhbWVfaWQYBCABKAkSEgoKaXNfdmlzaWJsZRgFIAEoCBIqCgZib3VuZHMYBiABKAsyFS5icm93c2Vyc2NhbGUudjEuUmVjdEgAiAEBEjQKCG9jY2x1ZGVyGAcgASgLMh0uYnJvd3NlcnNjYWxlLnYxLk9jY2x1ZGVySW5mb0gBiAEBQgkKB19ib3VuZHNCCwoJX29jY2x1ZGVyImQKCVdhaXRFcnJvchIMCgRjb2RlGAEgASgJEg8KB21lc3NhZ2UYAiABKAkSOAoKY29uZGl0aW9ucxgDIAMoCzIkLmJyb3dzZXJzY2FsZS52MS5XYWl0Q29uZGl0aW9uU3RhdHVzIqYBCg1FbGVtZW50UmVzdWx0Eg8KB3N1Y2Nlc3MYASABKAgSEAoIZnJhbWVfaWQYAiABKAkSFwoPYmFja2VuZF9ub2RlX2lkGAMgASgFEhIKCmlzX3Zpc2libGUYBCABKAgSJQoGYm91bmRzGAUgASgLMhUuYnJvd3NlcnNjYWxlLnYxLlJlY3QSDgoGcm9vdF94GAYgASgBEg4KBnJvb3RfeRgHIAEoASKuAwoMT2NjbHVkZXJJbmZvEhcKD2JhY2tlbmRfbm9kZV9pZBgBIAEoBRIQCghmcmFtZV9pZBgCIAEoCRIQCgh0YWdfbmFtZRgDIAEoCRIPCgJpZBgEIAEoCUgAiAEBEhcKCmNsYXNzX25hbWUYBSABKAlIAYgBARIRCgR0ZXh0GAYgASgJSAKIAQESJQoGYm91bmRzGAcgASgLMhUuYnJvd3NlcnNjYWxlLnYxLlJlY3QSGwoOcG9pbnRlcl9ldmVudHMYCCABKAlIA4gBARIXCgp2aXNpYmlsaXR5GAkgASgJSASIAQESFAoHb3BhY2l0eRgKIAEoAUgFiAEBEhQKB3pfaW5kZXgYCyABKAlIBogBARIlChhoaXR0YWJsZV93aGlsZV9pbnZpc2libGUYDCABKAhIB4gBAUIFCgNfaWRCDQoLX2NsYXNzX25hbWVCBwoFX3RleHRCEQoPX3BvaW50ZXJfZXZlbnRzQg0KC192aXNpYmlsaXR5QgoKCF9vcGFjaXR5QgoKCF96X2luZGV4QhsKGV9oaXR0YWJsZV93aGlsZV9pbnZpc2libGUioAEKCkNsaWNrRXJyb3ISDAoEY29kZRgBIAEoCRIPCgdtZXNzYWdlGAIgASgJEjQKCG9jY2x1ZGVyGAMgASgLMh0uYnJvd3NlcnNjYWxlLnYxLk9jY2x1ZGVySW5mb0gAiAEBEhwKD2V2YWRlX2F0dGVtcHRlZBgEIAEoCEgBiAEBQgsKCV9vY2NsdWRlckISChBfZXZhZGVfYXR0ZW1wdGVkIt8BCgtDbGlja1Jlc3VsdBIPCgdzdWNjZXNzGAEgASgIEhAKCGZyYW1lX2lkGAIgASgJEhcKD2JhY2tlbmRfbm9kZV9pZBgDIAEoBRISCgppc192aXNpYmxlGAQgASgIEiUKBmJvdW5kcxgFIAEoCzIVLmJyb3dzZXJzY2FsZS52MS5SZWN0Eg4KBnJvb3RfeBgGIAEoARIOCgZyb290X3kYByABKAESLwoFZXJyb3IYCCABKAsyGy5icm93c2Vyc2NhbGUudjEuQ2xpY2tFcnJvckgAiAEBQggKBl9lcnJvciKeAgoMUmVhY3Rpb25JbmZvEhMKC3JlYWN0aW9uX2lkGAEgASgJEhsKDm1hdGNoX3NlbGVjdG9yGAIgASgJSACIAQESIAoTbWF0Y2hfanNfZXhwcmVzc2lvbhgDIAEoCUgBiAEBEhwKD2FjdGlvbl9zZWxlY3RvchgEIAEoCUgCiAEBEiEKFGFjdGlvbl9qc19leHByZXNzaW9uGAUgASgJSAOIAQESEAoIZnJhbWVfaWQYBiABKAkSDwoHdmlzaWJsZRgHIAEoCEIRCg9fbWF0Y2hfc2VsZWN0b3JCFgoUX21hdGNoX2pzX2V4cHJlc3Npb25CEgoQX2FjdGlvbl9zZWxlY3RvckIXChVfYWN0aW9uX2pzX2V4cHJlc3Npb24i1gMKEkFkZFJlYWN0aW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIbCg5tYXRjaF9zZWxlY3RvchgEIAEoCUgAiAEBEiAKE21hdGNoX2pzX2V4cHJlc3Npb24YBSABKAlIAYgBARIVCghmcmFtZV9pZBgGIAEoCUgCiAEBEhQKB3Zpc2libGUYByABKAhIA4gBARIcCg9hY3Rpb25fc2VsZWN0b3IYCCABKAlIBIgBARIhChRhY3Rpb25fanNfZXhwcmVzc2lvbhgJIAEoCUgFiAEBEhMKBmJ1dHRvbhgKIAEoCUgGiAEBEhgKC2NsaWNrX2NvdW50GAsgASgFSAeIAQESFQoIaW50ZXJ2YWwYDCABKAFICIgBAUIRCg9fbWF0Y2hfc2VsZWN0b3JCFgoUX21hdGNoX2pzX2V4cHJlc3Npb25CCwoJX2ZyYW1lX2lkQgoKCF92aXNpYmxlQhIKEF9hY3Rpb25fc2VsZWN0b3JCFwoVX2FjdGlvbl9qc19leHByZXNzaW9uQgkKB19idXR0b25CDgoMX2NsaWNrX2NvdW50QgsKCV9pbnRlcnZhbCIqChNBZGRSZWFjdGlvblJlc3BvbnNlEhMKC3JlYWN0aW9uX2lkGAEgASgJIlEKFVJlbW92ZVJlYWN0aW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSEwoLcmVhY3Rpb25faWQYAyABKAkiKQoWUmVtb3ZlUmVhY3Rpb25SZXNwb25zZRIPCgdyZW1vdmVkGAEgASgIIkwKFExpc3RSZWFjdGlvbnNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJIkkKFUxpc3RSZWFjdGlvbnNSZXNwb25zZRIwCglyZWFjdGlvbnMYASADKAsyHS5icm93c2Vyc2NhbGUudjEuUmVhY3Rpb25JbmZvIukBCgpFbGVtZW50UmVmEhcKD2JhY2tlbmRfbm9kZV9pZBgBIAEoBRIQCgh0YWdfbmFtZRgCIAEoCRIPCgJpZBgDIAEoCUgAiAEBEhEKBG5hbWUYBCABKAlIAYgBARIXCgpjbGFzc19uYW1lGAUgASgJSAKIAQESFwoKaW5wdXRfdHlwZRgGIAEoCUgDiAEBEhEKBHRleHQYByABKAlIBIgBARIQCghlZGl0YWJsZRgIIAEoCEIFCgNfaWRCBwoFX25hbWVCDQoLX2NsYXNzX25hbWVCDQoLX2lucHV0X3R5cGVCBwoFX3RleHQi7gIKCUZpbGxFcnJvchIMCgRjb2RlGAEgASgJEg8KB21lc3NhZ2UYAiABKAkSNQoLY2xpY2tfZXJyb3IYAyABKAsyGy5icm93c2Vyc2NhbGUudjEuQ2xpY2tFcnJvckgAiAEBEiQKF2ZvY3VzZWRfYmFja2VuZF9ub2RlX2lkGAQgASgFSAGIAQESOQoPZm9jdXNlZF9lbGVtZW50GAUgASgLMhsuYnJvd3NlcnNjYWxlLnYxLkVsZW1lbnRSZWZIAogBARIcCg90YXJnZXRfZWRpdGFibGUYBiABKAhIA4gBARIgChN0YXJnZXRfdmFsdWVfbGVuZ3RoGAcgASgFSASIAQFCDgoMX2NsaWNrX2Vycm9yQhoKGF9mb2N1c2VkX2JhY2tlbmRfbm9kZV9pZEISChBfZm9jdXNlZF9lbGVtZW50QhIKEF90YXJnZXRfZWRpdGFibGVCFgoUX3RhcmdldF92YWx1ZV9sZW5ndGgiogEKCkZpbGxSZXN1bHQSDwoHc3VjY2VzcxgBIAEoCBIQCghmcmFtZV9pZBgCIAEoCRIXCg9iYWNrZW5kX25vZGVfaWQYAyABKAUSDgoGcm9vdF94GAYgASgBEg4KBnJvb3RfeRgHIAEoARIuCgVlcnJvchgIIAEoCzIaLmJyb3dzZXJzY2FsZS52MS5GaWxsRXJyb3JIAIgBAUIICgZfZXJyb3IiwgEKCkRyYWdSZXN1bHQSDwoHc3VjY2VzcxgBIAEoCBIQCghmcmFtZV9pZBgCIAEoCRIXCg9iYWNrZW5kX25vZGVfaWQYAyABKAUSDwoHc3RhcnRfeBgEIAEoARIPCgdzdGFydF95GAUgASgBEg0KBWVuZF94GAYgASgBEg0KBWVuZF95GAcgASgBEi4KBWVycm9yGAggASgLMhouYnJvd3NlcnNjYWxlLnYxLkRyYWdFcnJvckgAiAEBQggKBl9lcnJvciJxCglEcmFnRXJyb3ISDAoEY29kZRgBIAEoCRIPCgdtZXNzYWdlGAIgASgJEjUKC2NsaWNrX2Vycm9yGAMgASgLMhsuYnJvd3NlcnNjYWxlLnYxLkNsaWNrRXJyb3JIAIgBAUIOCgxfY2xpY2tfZXJyb3IirgEKElNlbGVjdE9wdGlvblJlc3VsdBIWCg5zZWxlY3RlZF9pbmRleBgBIAEoBRIWCg5zZWxlY3RlZF92YWx1ZRgCIAEoCRIVCg1zZWxlY3RlZF90ZXh0GAMgASgJEg8KB3N1Y2Nlc3MYBCABKAgSNgoFZXJyb3IYBSABKAsyIi5icm93c2Vyc2NhbGUudjEuU2VsZWN0T3B0aW9uRXJyb3JIAIgBAUIICgZfZXJyb3IiMgoRU2VsZWN0T3B0aW9uRXJyb3ISDAoEY29kZRgBIAEoCRIPCgdtZXNzYWdlGAIgASgJIsEBCgxTY3JvbGxSZXN1bHQSDwoHc3VjY2VzcxgBIAEoCBIQCghmcmFtZV9pZBgCIAEoCRIXCg9iYWNrZW5kX25vZGVfaWQYAyABKAUSEgoKaXNfdmlzaWJsZRgEIAEoCBIlCgZib3VuZHMYBSABKAsyFS5icm93c2Vyc2NhbGUudjEuUmVjdBIwCgVlcnJvchgIIAEoCzIcLmJyb3dzZXJzY2FsZS52MS5TY3JvbGxFcnJvckgAiAEBQggKBl9lcnJvciIsCgtTY3JvbGxFcnJvchIMCgRjb2RlGAEgASgJEg8KB21lc3NhZ2UYAiABKAki3QEKCk1vdmVSZXN1bHQSDwoHc3VjY2VzcxgBIAEoCBIQCghmcmFtZV9pZBgCIAEoCRIXCg9iYWNrZW5kX25vZGVfaWQYAyABKAUSEgoKaXNfdmlzaWJsZRgEIAEoCBIlCgZib3VuZHMYBSABKAsyFS5icm93c2Vyc2NhbGUudjEuUmVjdBIOCgZyb290X3gYBiABKAESDgoGcm9vdF95GAcgASgBEi4KBWVycm9yGAggASgLMhouYnJvd3NlcnNjYWxlLnYxLk1vdmVFcnJvckgAiAEBQggKBl9lcnJvciIqCglNb3ZlRXJyb3ISDAoEY29kZRgBIAEoCRIPCgdtZXNzYWdlGAIgASgJIuYBCg9TZXRQcm94eVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhcKCnByb3h5X2hvc3QYAyABKAlIAIgBARIXCgpwcm94eV9wb3J0GAQgASgFSAGIAQESGwoOcHJveHlfdXNlcm5hbWUYBSABKAlIAogBARIbCg5wcm94eV9wYXNzd29yZBgGIAEoCUgDiAEBQg0KC19wcm94eV9ob3N0Qg0KC19wcm94eV9wb3J0QhEKD19wcm94eV91c2VybmFtZUIRCg9fcHJveHlfcGFzc3dvcmQiNgoPR2V0UGFnZXNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCSI8ChBHZXRQYWdlc1Jlc3BvbnNlEigKBXBhZ2VzGAEgAygLMhkuYnJvd3NlcnNjYWxlLnYxLlBhZ2VJbmZvIpoBCg9OYXZpZ2F0ZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSCwoDdXJsGAQgASgJEhUKCHJlZmVycmVyGAUgASgJSACIAQESFAoHdGltZW91dBgGIAEoAUgBiAEBQgsKCV9yZWZlcnJlckIKCghfdGltZW91dCIxChBOYXZpZ2F0ZVJlc3BvbnNlEhAKCGZyYW1lX2lkGAEgASgJEgsKA3VybBgCIAEoCSK2AQoPTG9hZEhUTUxSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEgsKA3VybBgEIAEoCRIMCgRodG1sGAUgASgJEigKB2hlYWRlcnMYBiADKAsyFy5icm93c2Vyc2NhbGUudjEuSGVhZGVyEhgKC3N0YXR1c19jb2RlGAcgASgFSACIAQFCDgoMX3N0YXR1c19jb2RlIn8KD0V2YWx1YXRlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRISCgpleHByZXNzaW9uGAQgASgJEhUKCGZyYW1lX2lkGAUgASgJSACIAQFCCwoJX2ZyYW1lX2lkInYKEEV2YWx1YXRlUmVzcG9uc2USDgoGcmVzdWx0GAEgASgJEhcKD2JhY2tlbmRfbm9kZV9pZBgCIAEoBRISCgppc192aXNpYmxlGAMgASgIEiUKBmJvdW5kcxgEIAEoCzIVLmJyb3dzZXJzY2FsZS52MS5SZWN0ImMKClJ1blJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg4KBnNvdXJjZRgDIAEoCRIUCgdwYWdlX2lkGAQgASgJSACIAQFCCgoIX3BhZ2VfaWQiLgoLUnVuUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIOCgZyZXN1bHQYAiABKAkiwgEKEFdhaXRGb3JBbnlQYXJhbXMSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSMgoKY29uZGl0aW9ucxgEIAMoCzIeLmJyb3dzZXJzY2FsZS52MS5XYWl0Q29uZGl0aW9uEhUKCGZyYW1lX2lkGAUgASgJSACIAQESFAoHdGltZW91dBgGIAEoAUgBiAEBQgsKCV9mcmFtZV9pZEIKCghfdGltZW91dCL1AgoTU2VsZWN0T3B0aW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIcCg9iYWNrZW5kX25vZGVfaWQYBCABKAVIAIgBARIVCghzZWxlY3RvchgFIAEoCUgBiAEBEhoKDWpzX2V4cHJlc3Npb24YBiABKAlIAogBARIVCghmcmFtZV9pZBgHIAEoCUgDiAEBEhIKBWluZGV4GAggASgFSASIAQESEgoFdmFsdWUYCSABKAlIBYgBARIRCgR0ZXh0GAogASgJSAaIAQESGAoLZmlyZV9ldmVudHMYCyABKAhIB4gBAUISChBfYmFja2VuZF9ub2RlX2lkQgsKCV9zZWxlY3RvckIQCg5fanNfZXhwcmVzc2lvbkILCglfZnJhbWVfaWRCCAoGX2luZGV4QggKBl92YWx1ZUIHCgVfdGV4dEIOCgxfZmlyZV9ldmVudHMi7wEKD1Njcm9sbFRvUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIcCg9iYWNrZW5kX25vZGVfaWQYBCABKAVIAIgBARIVCghzZWxlY3RvchgFIAEoCUgBiAEBEhoKDWpzX2V4cHJlc3Npb24YBiABKAlIAogBARIVCghmcmFtZV9pZBgHIAEoCUgDiAEBQhIKEF9iYWNrZW5kX25vZGVfaWRCCwoJX3NlbGVjdG9yQhAKDl9qc19leHByZXNzaW9uQgsKCV9mcmFtZV9pZCKZAgoNTW92ZVRvUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIcCg9iYWNrZW5kX25vZGVfaWQYBCABKAVIAIgBARIVCghzZWxlY3RvchgFIAEoCUgBiAEBEhoKDWpzX2V4cHJlc3Npb24YBiABKAlIAogBARIVCghmcmFtZV9pZBgHIAEoCUgDiAEBEg4KAXgYCCABKAFIBIgBARIOCgF5GAkgASgBSAWIAQFCEgoQX2JhY2tlbmRfbm9kZV9pZEILCglfc2VsZWN0b3JCEAoOX2pzX2V4cHJlc3Npb25CCwoJX2ZyYW1lX2lkQgQKAl94QgQKAl95IoIDCgxDbGlja1JlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSHAoPYmFja2VuZF9ub2RlX2lkGAQgASgFSACIAQESFQoIc2VsZWN0b3IYBSABKAlIAYgBARIaCg1qc19leHByZXNzaW9uGAYgASgJSAKIAQESFQoIZnJhbWVfaWQYByABKAlIA4gBARITCgZidXR0b24YCCABKAlIBIgBARIYCgtjbGlja19jb3VudBgJIAEoBUgFiAEBEg4KAXgYCiABKAFIBogBARIOCgF5GAsgASgBSAeIAQESEwoGYWN0aW9uGAwgASgJSAiIAQFCEgoQX2JhY2tlbmRfbm9kZV9pZEILCglfc2VsZWN0b3JCEAoOX2pzX2V4cHJlc3Npb25CCwoJX2ZyYW1lX2lkQgkKB19idXR0b25CDgoMX2NsaWNrX2NvdW50QgQKAl94QgQKAl95QgkKB19hY3Rpb24igwMKC0RyYWdSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEhwKD2JhY2tlbmRfbm9kZV9pZBgEIAEoBUgAiAEBEhUKCHNlbGVjdG9yGAUgASgJSAGIAQESGgoNanNfZXhwcmVzc2lvbhgGIAEoCUgCiAEBEhUKCGZyYW1lX2lkGAcgASgJSAOIAQESFQoIb2Zmc2V0X3gYCCABKAFIBIgBARIVCghvZmZzZXRfeRgJIAEoAUgFiAEBEhcKCmFic29sdXRlX3gYCiABKAFIBogBARIXCgphYnNvbHV0ZV95GAsgASgBSAeIAQFCEgoQX2JhY2tlbmRfbm9kZV9pZEILCglfc2VsZWN0b3JCEAoOX2pzX2V4cHJlc3Npb25CCwoJX2ZyYW1lX2lkQgsKCV9vZmZzZXRfeEILCglfb2Zmc2V0X3lCDQoLX2Fic29sdXRlX3hCDQoLX2Fic29sdXRlX3ki7wIKC0ZpbGxSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEhwKD2JhY2tlbmRfbm9kZV9pZBgEIAEoBUgAiAEBEhUKCHNlbGVjdG9yGAUgASgJSAGIAQESGgoNanNfZXhwcmVzc2lvbhgGIAEoCUgCiAEBEhUKCGZyYW1lX2lkGAcgASgJSAOIAQESDAoEdGV4dBgIIAEoCRIYCgtjbGVhcl9maXJzdBgJIAEoCEgEiAEBEhQKB3RpbWVvdXQYCiABKAFIBYgBARIYCgtzdGVhZHlfdGltZRgLIAEoAUgGiAEBQhIKEF9iYWNrZW5kX25vZGVfaWRCCwoJX3NlbGVjdG9yQhAKDl9qc19leHByZXNzaW9uQgsKCV9mcmFtZV9pZEIOCgxfY2xlYXJfZmlyc3RCCgoIX3RpbWVvdXRCDgoMX3N0ZWFkeV90aW1lIkwKE1NldEJsb2NrTGlzdFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhAKCHBhdHRlcm5zGAMgAygJImEKFVNldFN0YXRpY1BhdGhzUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSEAoIcGF0dGVybnMYAyADKAkSEQoJYmxvYl9uYW1lGAQgASgJIogBChhXYWl0Rm9yQW55UmVxdWVzdFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhAKCHBhdHRlcm5zGAMgAygJEhMKC2Fib3J0X2ZsYWdzGAQgAygFEhQKB3RpbWVvdXQYBSABKAFIAIgBAUIKCghfdGltZW91dCJgChlXYWl0Rm9yQW55UmVxdWVzdFJlc3BvbnNlEg0KBWluZGV4GAEgASgFEjQKB3JlcXVlc3QYAiABKAsyIy5icm93c2Vyc2NhbGUudjEuSW50ZXJjZXB0ZWRSZXF1ZXN0IokBChlXYWl0Rm9yQW55UmVzcG9uc2VSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIQCghwYXR0ZXJucxgDIAMoCRITCgthYm9ydF9mbGFncxgEIAMoBRIUCgd0aW1lb3V0GAUgASgBSACIAQFCCgoIX3RpbWVvdXQiYwoaV2FpdEZvckFueVJlc3BvbnNlUmVzcG9uc2USDQoFaW5kZXgYASABKAUSNgoIcmVzcG9uc2UYAiABKAsyJC5icm93c2Vyc2NhbGUudjEuSW50ZXJjZXB0ZWRSZXNwb25zZSLKAQoUTW9kaWZ5UmVxdWVzdFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhMKC3VybF9wYXR0ZXJuGAMgASgJEjoKDW1vZGlmaWNhdGlvbnMYBCADKAsyIy5icm93c2Vyc2NhbGUudjEuSGVhZGVyTW9kaWZpY2F0aW9uEhEKBGJvZHkYBSABKAlIAIgBARIUCgd0aW1lb3V0GAYgASgBSAGIAQFCBwoFX2JvZHlCCgoIX3RpbWVvdXQiTQoVTW9kaWZ5UmVxdWVzdFJlc3BvbnNlEjQKB3JlcXVlc3QYASABKAsyIy5icm93c2Vyc2NhbGUudjEuSW50ZXJjZXB0ZWRSZXF1ZXN0IjgKEUdldENvb2tpZXNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCSJDChJHZXRDb29raWVzUmVzcG9uc2USLQoHY29va2llcxgBIAMoCzIcLmJyb3dzZXJzY2FsZS52MS5Db29raWVQYXJhbSJnChFTZXRDb29raWVzUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSLQoHY29va2llcxgDIAMoCzIcLmJyb3dzZXJzY2FsZS52MS5Db29raWVQYXJhbSI6ChNDbGVhckNvb2tpZXNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCSIpCgtTdG9yYWdlSXRlbRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAkiUQoSU3RvcmFnZU9yaWdpbkVudHJ5Eg4KBm9yaWdpbhgBIAEoCRIrCgVpdGVtcxgCIAMoCzIcLmJyb3dzZXJzY2FsZS52MS5TdG9yYWdlSXRlbSJYChFHZXRTdG9yYWdlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSEwoGb3JpZ2luGAMgASgJSACIAQFCCQoHX29yaWdpbiJKChJHZXRTdG9yYWdlUmVzcG9uc2USNAoHc3RvcmFnZRgBIAMoCzIjLmJyb3dzZXJzY2FsZS52MS5TdG9yYWdlT3JpZ2luRW50cnkimAEKEVNldFN0b3JhZ2VSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRI0CgdzdG9yYWdlGAMgAygLMiMuYnJvd3NlcnNjYWxlLnYxLlN0b3JhZ2VPcmlnaW5FbnRyeRIYCgtjbGVhcl9maXJzdBgEIAEoCEgAiAEBQg4KDF9jbGVhcl9maXJzdCJaChNDbGVhclN0b3JhZ2VSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRITCgZvcmlnaW4YAyABKAlIAIgBAUIJCgdfb3JpZ2luIocBCg1HZXRET01SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEhUKCGZyYW1lX2lkGAQgASgJSACIAQESEgoFZGVwdGgYBSABKAVIAYgBAUILCglfZnJhbWVfaWRCCAoGX2RlcHRoIh0KDkdldERPTVJlc3BvbnNlEgsKA2RvbRgBIAEoCSK/AQoVR2V0T2JzZXJ2YXRpb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEiMKFm1heF9lbGVtZW50c19wZXJfZnJhbWUYBCABKAVIAIgBARIcCg9tYXhfdGV4dF9sZW5ndGgYBSABKAVIAYgBAUIZChdfbWF4X2VsZW1lbnRzX3Blcl9mcmFtZUISChBfbWF4X3RleHRfbGVuZ3RoIkwKFkdldE9ic2VydmF0aW9uUmVzcG9uc2USGAoQb2JzZXJ2YXRpb25fdGV4dBgBIAEoCRIYChBvYnNlcnZhdGlvbl9qc29uGAIgASgJIm0KEUdldERPTUhhc2hSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEhUKCGZyYW1lX2lkGAQgASgJSACIAQFCCwoJX2ZyYW1lX2lkIiIKEkdldERPTUhhc2hSZXNwb25zZRIMCgRoYXNoGAEgASgJImYKGEluc3BlY3RBdFBvc2l0aW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIJCgF4GAQgASgBEgkKAXkYBSABKAEiqQEKGUluc3BlY3RBdFBvc2l0aW9uUmVzcG9uc2USFwoPYmFja2VuZF9ub2RlX2lkGAEgASgFEhAKCGZyYW1lX2lkGAIgASgJEhAKCHRhZ19uYW1lGAMgASgJEhQKDHRleHRfY29udGVudBgEIAEoCRISCgppc192aXNpYmxlGAUgASgIEiUKBmJvdW5kcxgGIAEoCzIVLmJyb3dzZXJzY2FsZS52MS5SZWN0IokBChRIaWdobGlnaHROb2RlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIXCg9iYWNrZW5kX25vZGVfaWQYBCABKAUSFQoIZnJhbWVfaWQYBSABKAlIAIgBAUILCglfZnJhbWVfaWQiVwoRSW5zZXJ0VGV4dFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSDAoEdGV4dBgEIAEoCSJ7CgtUeXBlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIMCgR0ZXh0GAQgASgJEhgKC2NsZWFyX2ZpcnN0GAUgASgISACIAQFCDgoMX2NsZWFyX2ZpcnN0IroBCg9QcmVzc0tleVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSCwoDa2V5GAQgASgJEhEKBGNvZGUYBSABKAlIAIgBARIWCgltb2RpZmllcnMYBiABKAVIAYgBARIVCghsb2NhdGlvbhgHIAEoBUgCiAEBQgcKBV9jb2RlQgwKCl9tb2RpZmllcnNCCwoJX2xvY2F0aW9uIrwBChFSZWxlYXNlS2V5UmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRILCgNrZXkYBCABKAkSEQoEY29kZRgFIAEoCUgAiAEBEhYKCW1vZGlmaWVycxgGIAEoBUgBiAEBEhUKCGxvY2F0aW9uGAcgASgFSAKIAQFCBwoFX2NvZGVCDAoKX21vZGlmaWVyc0ILCglfbG9jYXRpb24iSwoTR2V0U2VsZWN0aW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCSIkChRHZXRTZWxlY3Rpb25SZXNwb25zZRIMCgR0ZXh0GAEgASgJIosBChFTY3JlZW5zaG90UmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRITCgZmb3JtYXQYBCABKAlIAIgBARIUCgdxdWFsaXR5GAUgASgFSAGIAQFCCQoHX2Zvcm1hdEIKCghfcXVhbGl0eSJIChJTY3JlZW5zaG90UmVzcG9uc2USEwoLZGF0YV9iYXNlNjQYASABKAkSDQoFd2lkdGgYAiABKAUSDgoGaGVpZ2h0GAMgASgFIpMDChFSZWFkQ2FudmFzUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIcCg9iYWNrZW5kX25vZGVfaWQYBCABKAVIAIgBARIVCghzZWxlY3RvchgFIAEoCUgBiAEBEhoKDWpzX2V4cHJlc3Npb24YBiABKAlIAogBARIVCghmcmFtZV9pZBgHIAEoCUgDiAEBEhMKBmZvcm1hdBgIIAEoCUgEiAEBEhQKB3F1YWxpdHkYCSABKAVIBYgBARIPCgJzeBgKIAEoBUgGiAEBEg8KAnN5GAsgASgFSAeIAQESDwoCc3cYDCABKAVICIgBARIPCgJzaBgNIAEoBUgJiAEBQhIKEF9iYWNrZW5kX25vZGVfaWRCCwoJX3NlbGVjdG9yQhAKDl9qc19leHByZXNzaW9uQgsKCV9mcmFtZV9pZEIJCgdfZm9ybWF0QgoKCF9xdWFsaXR5QgUKA19zeEIFCgNfc3lCBQoDX3N3QgUKA19zaCKaAQoSUmVhZENhbnZhc1Jlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSEAoIZnJhbWVfaWQYAiABKAkSFwoPYmFja2VuZF9ub2RlX2lkGAMgASgFEhMKC2RhdGFfYmFzZTY0GAQgASgJEg0KBXdpZHRoGAUgASgFEg4KBmhlaWdodBgGIAEoBRIUCgxvcmlnaW5fY2xlYW4YByABKAgiZAoTU29sdmVDYXB0Y2hhUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSEgoKdGltZW91dF9tcxgDIAEoBRIUCgxyZXRyeV9hbW91bnQYBCABKAUiJgoUU29sdmVDYXB0Y2hhUmVzcG9uc2USDgoGcmVzdWx0GAEgASgJImUKCUljZVNlcnZlchIMCgR1cmxzGAEgAygJEhUKCHVzZXJuYW1lGAIgASgJSACIAQESFwoKY3JlZGVudGlhbBgDIAEoCUgBiAEBQgsKCV91c2VybmFtZUINCgtfY3JlZGVudGlhbCI9ChZHZXRTdHJlYW1Db25maWdSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCSJKChdHZXRTdHJlYW1Db25maWdSZXNwb25zZRIvCgtpY2Vfc2VydmVycxgBIAMoCzIaLmJyb3dzZXJzY2FsZS52MS5JY2VTZXJ2ZXIiTAoSU3RhcnRTdHJlYW1SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIRCglvZmZlcl9zZHAYAyABKAkiKQoTU3RhcnRTdHJlYW1SZXNwb25zZRISCgphbnN3ZXJfc2RwGAEgASgJIjgKEVN0b3BTdHJlYW1SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCSIUChJTdG9wU3RyZWFtUmVzcG9uc2UygRwKB0Jyb3dzZXISRAoIU2V0UHJveHkSIC5icm93c2Vyc2NhbGUudjEuU2V0UHJveHlSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5Ek8KCEdldFBhZ2VzEiAuYnJvd3NlcnNjYWxlLnYxLkdldFBhZ2VzUmVxdWVzdBohLmJyb3dzZXJzY2FsZS52MS5HZXRQYWdlc1Jlc3BvbnNlEk8KCE5hdmlnYXRlEiAuYnJvd3NlcnNjYWxlLnYxLk5hdmlnYXRlUmVxdWVzdBohLmJyb3dzZXJzY2FsZS52MS5OYXZpZ2F0ZVJlc3BvbnNlEkQKCExvYWRIVE1MEiAuYnJvd3NlcnNjYWxlLnYxLkxvYWRIVE1MUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRJPCghFdmFsdWF0ZRIgLmJyb3dzZXJzY2FsZS52MS5FdmFsdWF0ZVJlcXVlc3QaIS5icm93c2Vyc2NhbGUudjEuRXZhbHVhdGVSZXNwb25zZRJACgNSdW4SGy5icm93c2Vyc2NhbGUudjEuUnVuUmVxdWVzdBocLmJyb3dzZXJzY2FsZS52MS5SdW5SZXNwb25zZRJMCgpXYWl0Rm9yQW55EiEuYnJvd3NlcnNjYWxlLnYxLldhaXRGb3JBbnlQYXJhbXMaGy5icm93c2Vyc2NhbGUudjEuV2FpdFJlc3VsdBJZCgxTZWxlY3RPcHRpb24SJC5icm93c2Vyc2NhbGUudjEuU2VsZWN0T3B0aW9uUmVxdWVzdBojLmJyb3dzZXJzY2FsZS52MS5TZWxlY3RPcHRpb25SZXN1bHQSSwoIU2Nyb2xsVG8SIC5icm93c2Vyc2NhbGUudjEuU2Nyb2xsVG9SZXF1ZXN0Gh0uYnJvd3NlcnNjYWxlLnYxLlNjcm9sbFJlc3VsdBJFCgZNb3ZlVG8SHi5icm93c2Vyc2NhbGUudjEuTW92ZVRvUmVxdWVzdBobLmJyb3dzZXJzY2FsZS52MS5Nb3ZlUmVzdWx0EkQKBUNsaWNrEh0uYnJvd3NlcnNjYWxlLnYxLkNsaWNrUmVxdWVzdBocLmJyb3dzZXJzY2FsZS52MS5DbGlja1Jlc3VsdBJBCgREcmFnEhwuYnJvd3NlcnNjYWxlLnYxLkRyYWdSZXF1ZXN0GhsuYnJvd3NlcnNjYWxlLnYxLkRyYWdSZXN1bHQSQQoERmlsbBIcLmJyb3dzZXJzY2FsZS52MS5GaWxsUmVxdWVzdBobLmJyb3dzZXJzY2FsZS52MS5GaWxsUmVzdWx0ElgKC0FkZFJlYWN0aW9uEiMuYnJvd3NlcnNjYWxlLnYxLkFkZFJlYWN0aW9uUmVxdWVzdBokLmJyb3dzZXJzY2FsZS52MS5BZGRSZWFjdGlvblJlc3BvbnNlEmEKDlJlbW92ZVJlYWN0aW9uEiYuYnJvd3NlcnNjYWxlLnYxLlJlbW92ZVJlYWN0aW9uUmVxdWVzdBonLmJyb3dzZXJzY2FsZS52MS5SZW1vdmVSZWFjdGlvblJlc3BvbnNlEl4KDUxpc3RSZWFjdGlvbnMSJS5icm93c2Vyc2NhbGUudjEuTGlzdFJlYWN0aW9uc1JlcXVlc3QaJi5icm93c2Vyc2NhbGUudjEuTGlzdFJlYWN0aW9uc1Jlc3BvbnNlEkwKDFNldEJsb2NrTGlzdBIkLmJyb3dzZXJzY2FsZS52MS5TZXRCbG9ja0xpc3RSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5ElAKDlNldFN0YXRpY1BhdGhzEiYuYnJvd3NlcnNjYWxlLnYxLlNldFN0YXRpY1BhdGhzUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRJqChFXYWl0Rm9yQW55UmVxdWVzdBIpLmJyb3dzZXJzY2FsZS52MS5XYWl0Rm9yQW55UmVxdWVzdFJlcXVlc3QaKi5icm93c2Vyc2NhbGUudjEuV2FpdEZvckFueVJlcXVlc3RSZXNwb25zZRJtChJXYWl0Rm9yQW55UmVzcG9uc2USKi5icm93c2Vyc2NhbGUudjEuV2FpdEZvckFueVJlc3BvbnNlUmVxdWVzdBorLmJyb3dzZXJzY2FsZS52MS5XYWl0Rm9yQW55UmVzcG9uc2VSZXNwb25zZRJeCg1Nb2RpZnlSZXF1ZXN0EiUuYnJvd3NlcnNjYWxlLnYxLk1vZGlmeVJlcXVlc3RSZXF1ZXN0GiYuYnJvd3NlcnNjYWxlLnYxLk1vZGlmeVJlcXVlc3RSZXNwb25zZRJVCgpHZXRDb29raWVzEiIuYnJvd3NlcnNjYWxlLnYxLkdldENvb2tpZXNSZXF1ZXN0GiMuYnJvd3NlcnNjYWxlLnYxLkdldENvb2tpZXNSZXNwb25zZRJICgpTZXRDb29raWVzEiIuYnJvd3NlcnNjYWxlLnYxLlNldENvb2tpZXNSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5EkwKDENsZWFyQ29va2llcxIkLmJyb3dzZXJzY2FsZS52MS5DbGVhckNvb2tpZXNSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5ElUKCkdldFN0b3JhZ2USIi5icm93c2Vyc2NhbGUudjEuR2V0U3RvcmFnZVJlcXVlc3QaIy5icm93c2Vyc2NhbGUudjEuR2V0U3RvcmFnZVJlc3BvbnNlEkgKClNldFN0b3JhZ2USIi5icm93c2Vyc2NhbGUudjEuU2V0U3RvcmFnZVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSTAoMQ2xlYXJTdG9yYWdlEiQuYnJvd3NlcnNjYWxlLnYxLkNsZWFyU3RvcmFnZVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSSQoGR2V0RE9NEh4uYnJvd3NlcnNjYWxlLnYxLkdldERPTVJlcXVlc3QaHy5icm93c2Vyc2NhbGUudjEuR2V0RE9NUmVzcG9uc2USVQoKR2V0RE9NSGFzaBIiLmJyb3dzZXJzY2FsZS52MS5HZXRET01IYXNoUmVxdWVzdBojLmJyb3dzZXJzY2FsZS52MS5HZXRET01IYXNoUmVzcG9uc2USYQoOR2V0T2JzZXJ2YXRpb24SJi5icm93c2Vyc2NhbGUudjEuR2V0T2JzZXJ2YXRpb25SZXF1ZXN0GicuYnJvd3NlcnNjYWxlLnYxLkdldE9ic2VydmF0aW9uUmVzcG9uc2USagoRSW5zcGVjdEF0UG9zaXRpb24SKS5icm93c2Vyc2NhbGUudjEuSW5zcGVjdEF0UG9zaXRpb25SZXF1ZXN0GiouYnJvd3NlcnNjYWxlLnYxLkluc3BlY3RBdFBvc2l0aW9uUmVzcG9uc2USTgoNSGlnaGxpZ2h0Tm9kZRIlLmJyb3dzZXJzY2FsZS52MS5IaWdobGlnaHROb2RlUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRJVCgpTY3JlZW5zaG90EiIuYnJvd3NlcnNjYWxlLnYxLlNjcmVlbnNob3RSZXF1ZXN0GiMuYnJvd3NlcnNjYWxlLnYxLlNjcmVlbnNob3RSZXNwb25zZRJVCgpSZWFkQ2FudmFzEiIuYnJvd3NlcnNjYWxlLnYxLlJlYWRDYW52YXNSZXF1ZXN0GiMuYnJvd3NlcnNjYWxlLnYxLlJlYWRDYW52YXNSZXNwb25zZRJICgpJbnNlcnRUZXh0EiIuYnJvd3NlcnNjYWxlLnYxLkluc2VydFRleHRSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5EjwKBFR5cGUSHC5icm93c2Vyc2NhbGUudjEuVHlwZVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSRAoIUHJlc3NLZXkSIC5icm93c2Vyc2NhbGUudjEuUHJlc3NLZXlSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5EkgKClJlbGVhc2VLZXkSIi5icm93c2Vyc2NhbGUudjEuUmVsZWFzZUtleVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSWwoMR2V0U2VsZWN0aW9uEiQuYnJvd3NlcnNjYWxlLnYxLkdldFNlbGVjdGlvblJlcXVlc3QaJS5icm93c2Vyc2NhbGUudjEuR2V0U2VsZWN0aW9uUmVzcG9uc2USWwoMU29sdmVDYXB0Y2hhEiQuYnJvd3NlcnNjYWxlLnYxLlNvbHZlQ2FwdGNoYVJlcXVlc3QaJS5icm93c2Vyc2NhbGUudjEuU29sdmVDYXB0Y2hhUmVzcG9uc2USZAoPR2V0U3RyZWFtQ29uZmlnEicuYnJvd3NlcnNjYWxlLnYxLkdldFN0cmVhbUNvbmZpZ1JlcXVlc3QaKC5icm93c2Vyc2NhbGUudjEuR2V0U3RyZWFtQ29uZmlnUmVzcG9uc2USWAoLU3RhcnRTdHJlYW0SIy5icm93c2Vyc2NhbGUudjEuU3RhcnRTdHJlYW1SZXF1ZXN0GiQuYnJvd3NlcnNjYWxlLnYxLlN0YXJ0U3RyZWFtUmVzcG9uc2USVQoKU3RvcFN0cmVhbRIiLmJyb3dzZXJzY2FsZS52MS5TdG9wU3RyZWFtUmVxdWVzdBojLmJyb3dzZXJzY2FsZS52MS5TdG9wU3RyZWFtUmVzcG9uc2VCM1oxZ2l0aHViLmNvbS9icm93c2Vyc2NhbGUvYnJvd3NlcnNjYWxlLWdvL2dlbmVyYXRlZGIGcHJvdG8z", [file_google_protobuf_empty]);
|
|
9
|
+
export const file_wrc = /*@__PURE__*/ fileDesc("Cgl3cmMucHJvdG8SD2Jyb3dzZXJzY2FsZS52MSI7CgRSZWN0EgkKAXgYASABKAESCQoBeRgCIAEoARINCgV3aWR0aBgDIAEoARIOCgZoZWlnaHQYBCABKAEihgIKCUZyYW1lSW5mbxIQCghmcmFtZV9pZBgBIAEoCRILCgN1cmwYAiABKAkSEAoIaXNfb29waWYYAyABKAgSFgoOaGFzX2pzX2NvbnRleHQYBCABKAgSEgoKaXNfbG9hZGluZxgFIAEoCBISCgppc192aXNpYmxlGAYgASgIEiwKDWFic29sdXRlX3JlY3QYByABKAsyFS5icm93c2Vyc2NhbGUudjEuUmVjdBIsCg1yZWxhdGl2ZV9yZWN0GAggASgLMhUuYnJvd3NlcnNjYWxlLnYxLlJlY3QSLAoIY2hpbGRyZW4YCSADKAsyGi5icm93c2Vyc2NhbGUudjEuRnJhbWVJbmZvIqwBCghQYWdlSW5mbxIPCgdwYWdlX2lkGAEgASgJEhoKEmJyb3dzZXJfY29udGV4dF9pZBgCIAEoCRILCgN1cmwYAyABKAkSDQoFdGl0bGUYBCABKAkSJwoIdmlld3BvcnQYBSABKAsyFS5icm93c2Vyc2NhbGUudjEuUmVjdBIuCgpmcmFtZV90cmVlGAYgASgLMhouYnJvd3NlcnNjYWxlLnYxLkZyYW1lSW5mbyIlCgZIZWFkZXISDAoEbmFtZRgBIAEoCRINCgV2YWx1ZRgCIAEoCSKAAQoSSW50ZXJjZXB0ZWRSZXF1ZXN0Eg4KBm1ldGhvZBgBIAEoCRILCgN1cmwYAiABKAkSKAoHaGVhZGVycxgDIAMoCzIXLmJyb3dzZXJzY2FsZS52MS5IZWFkZXISDAoEYm9keRgEIAEoCRIVCg1yZXNvdXJjZV90eXBlGAUgASgJIm8KE0ludGVyY2VwdGVkUmVzcG9uc2USCwoDdXJsGAEgASgJEhMKC3N0YXR1c19jb2RlGAIgASgFEigKB2hlYWRlcnMYAyADKAsyFy5icm93c2Vyc2NhbGUudjEuSGVhZGVyEgwKBGJvZHkYBCABKAkijgEKEkhlYWRlck1vZGlmaWNhdGlvbhIMCgRuYW1lGAEgASgJEhIKBXZhbHVlGAIgASgJSACIAQESDgoGYWN0aW9uGAMgASgJEhMKBmJlZm9yZRgEIAEoCUgBiAEBEhIKBWFmdGVyGAUgASgJSAKIAQFCCAoGX3ZhbHVlQgkKB19iZWZvcmVCCAoGX2FmdGVyIk0KEkNvb2tpZVBhcnRpdGlvbktleRIWCg50b3BfbGV2ZWxfc2l0ZRgBIAEoCRIfChdoYXNfY3Jvc3Nfc2l0ZV9hbmNlc3RvchgCIAEoCCK/AwoLQ29va2llUGFyYW0SDAoEbmFtZRgBIAEoCRINCgV2YWx1ZRgCIAEoCRIQCgN1cmwYAyABKAlIAIgBARIOCgZkb21haW4YBCABKAkSDAoEcGF0aBgFIAEoCRITCgZzZWN1cmUYBiABKAhIAYgBARIWCglodHRwX29ubHkYByABKAhIAogBARIWCglzYW1lX3NpdGUYCCABKAlIA4gBARIUCgdleHBpcmVzGAkgASgBSASIAQESFQoIcHJpb3JpdHkYCiABKAlIBYgBARIaCg1zb3VyY2Vfc2NoZW1lGAsgASgJSAaIAQESGAoLc291cmNlX3BvcnQYDCABKAVIB4gBARI/Cg1wYXJ0aXRpb25fa2V5GA0gASgLMiMuYnJvd3NlcnNjYWxlLnYxLkNvb2tpZVBhcnRpdGlvbktleUgIiAEBQgYKBF91cmxCCQoHX3NlY3VyZUIMCgpfaHR0cF9vbmx5QgwKCl9zYW1lX3NpdGVCCgoIX2V4cGlyZXNCCwoJX3ByaW9yaXR5QhAKDl9zb3VyY2Vfc2NoZW1lQg4KDF9zb3VyY2VfcG9ydEIQCg5fcGFydGl0aW9uX2tleSKtAQoNV2FpdENvbmRpdGlvbhIVCghzZWxlY3RvchgBIAEoCUgAiAEBEhoKDWpzX2V4cHJlc3Npb24YAiABKAlIAYgBARIUCgd2aXNpYmxlGAMgASgISAKIAQESGAoLc3RlYWR5X3RpbWUYBCABKAFIA4gBAUILCglfc2VsZWN0b3JCEAoOX2pzX2V4cHJlc3Npb25CCgoIX3Zpc2libGVCDgoMX3N0ZWFkeV90aW1lIrsBCgpXYWl0UmVzdWx0Eg0KBWluZGV4GAEgASgFEhAKCGZyYW1lX2lkGAIgASgJEhcKD2JhY2tlbmRfbm9kZV9pZBgDIAEoBRISCgppc192aXNpYmxlGAQgASgIEiUKBmJvdW5kcxgFIAEoCzIVLmJyb3dzZXJzY2FsZS52MS5SZWN0Ei4KBWVycm9yGAYgASgLMhouYnJvd3NlcnNjYWxlLnYxLldhaXRFcnJvckgAiAEBQggKBl9lcnJvciLsAQoTV2FpdENvbmRpdGlvblN0YXR1cxINCgVpbmRleBgBIAEoBRINCgVzdGF0ZRgCIAEoCRIXCg9iYWNrZW5kX25vZGVfaWQYAyABKAUSEAoIZnJhbWVfaWQYBCABKAkSEgoKaXNfdmlzaWJsZRgFIAEoCBIqCgZib3VuZHMYBiABKAsyFS5icm93c2Vyc2NhbGUudjEuUmVjdEgAiAEBEjQKCG9jY2x1ZGVyGAcgASgLMh0uYnJvd3NlcnNjYWxlLnYxLk9jY2x1ZGVySW5mb0gBiAEBQgkKB19ib3VuZHNCCwoJX29jY2x1ZGVyImQKCVdhaXRFcnJvchIMCgRjb2RlGAEgASgJEg8KB21lc3NhZ2UYAiABKAkSOAoKY29uZGl0aW9ucxgDIAMoCzIkLmJyb3dzZXJzY2FsZS52MS5XYWl0Q29uZGl0aW9uU3RhdHVzIqYBCg1FbGVtZW50UmVzdWx0Eg8KB3N1Y2Nlc3MYASABKAgSEAoIZnJhbWVfaWQYAiABKAkSFwoPYmFja2VuZF9ub2RlX2lkGAMgASgFEhIKCmlzX3Zpc2libGUYBCABKAgSJQoGYm91bmRzGAUgASgLMhUuYnJvd3NlcnNjYWxlLnYxLlJlY3QSDgoGcm9vdF94GAYgASgBEg4KBnJvb3RfeRgHIAEoASLSAwoMT2NjbHVkZXJJbmZvEhcKD2JhY2tlbmRfbm9kZV9pZBgBIAEoBRIQCghmcmFtZV9pZBgCIAEoCRIQCgh0YWdfbmFtZRgDIAEoCRIPCgJpZBgEIAEoCUgAiAEBEhcKCmNsYXNzX25hbWUYBSABKAlIAYgBARIRCgR0ZXh0GAYgASgJSAKIAQESJQoGYm91bmRzGAcgASgLMhUuYnJvd3NlcnNjYWxlLnYxLlJlY3QSGwoOcG9pbnRlcl9ldmVudHMYCCABKAlIA4gBARIXCgp2aXNpYmlsaXR5GAkgASgJSASIAQESFAoHb3BhY2l0eRgKIAEoAUgFiAEBEhQKB3pfaW5kZXgYCyABKAlIBogBARIlChhoaXR0YWJsZV93aGlsZV9pbnZpc2libGUYDCABKAhIB4gBARIVCghwb3NpdGlvbhgNIAEoCUgIiAEBQgUKA19pZEINCgtfY2xhc3NfbmFtZUIHCgVfdGV4dEIRCg9fcG9pbnRlcl9ldmVudHNCDQoLX3Zpc2liaWxpdHlCCgoIX29wYWNpdHlCCgoIX3pfaW5kZXhCGwoZX2hpdHRhYmxlX3doaWxlX2ludmlzaWJsZUILCglfcG9zaXRpb24ioAEKCkNsaWNrRXJyb3ISDAoEY29kZRgBIAEoCRIPCgdtZXNzYWdlGAIgASgJEjQKCG9jY2x1ZGVyGAMgASgLMh0uYnJvd3NlcnNjYWxlLnYxLk9jY2x1ZGVySW5mb0gAiAEBEhwKD2V2YWRlX2F0dGVtcHRlZBgEIAEoCEgBiAEBQgsKCV9vY2NsdWRlckISChBfZXZhZGVfYXR0ZW1wdGVkIt8BCgtDbGlja1Jlc3VsdBIPCgdzdWNjZXNzGAEgASgIEhAKCGZyYW1lX2lkGAIgASgJEhcKD2JhY2tlbmRfbm9kZV9pZBgDIAEoBRISCgppc192aXNpYmxlGAQgASgIEiUKBmJvdW5kcxgFIAEoCzIVLmJyb3dzZXJzY2FsZS52MS5SZWN0Eg4KBnJvb3RfeBgGIAEoARIOCgZyb290X3kYByABKAESLwoFZXJyb3IYCCABKAsyGy5icm93c2Vyc2NhbGUudjEuQ2xpY2tFcnJvckgAiAEBQggKBl9lcnJvciKeAgoMUmVhY3Rpb25JbmZvEhMKC3JlYWN0aW9uX2lkGAEgASgJEhsKDm1hdGNoX3NlbGVjdG9yGAIgASgJSACIAQESIAoTbWF0Y2hfanNfZXhwcmVzc2lvbhgDIAEoCUgBiAEBEhwKD2FjdGlvbl9zZWxlY3RvchgEIAEoCUgCiAEBEiEKFGFjdGlvbl9qc19leHByZXNzaW9uGAUgASgJSAOIAQESEAoIZnJhbWVfaWQYBiABKAkSDwoHdmlzaWJsZRgHIAEoCEIRCg9fbWF0Y2hfc2VsZWN0b3JCFgoUX21hdGNoX2pzX2V4cHJlc3Npb25CEgoQX2FjdGlvbl9zZWxlY3RvckIXChVfYWN0aW9uX2pzX2V4cHJlc3Npb24i1gMKEkFkZFJlYWN0aW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIbCg5tYXRjaF9zZWxlY3RvchgEIAEoCUgAiAEBEiAKE21hdGNoX2pzX2V4cHJlc3Npb24YBSABKAlIAYgBARIVCghmcmFtZV9pZBgGIAEoCUgCiAEBEhQKB3Zpc2libGUYByABKAhIA4gBARIcCg9hY3Rpb25fc2VsZWN0b3IYCCABKAlIBIgBARIhChRhY3Rpb25fanNfZXhwcmVzc2lvbhgJIAEoCUgFiAEBEhMKBmJ1dHRvbhgKIAEoCUgGiAEBEhgKC2NsaWNrX2NvdW50GAsgASgFSAeIAQESFQoIaW50ZXJ2YWwYDCABKAFICIgBAUIRCg9fbWF0Y2hfc2VsZWN0b3JCFgoUX21hdGNoX2pzX2V4cHJlc3Npb25CCwoJX2ZyYW1lX2lkQgoKCF92aXNpYmxlQhIKEF9hY3Rpb25fc2VsZWN0b3JCFwoVX2FjdGlvbl9qc19leHByZXNzaW9uQgkKB19idXR0b25CDgoMX2NsaWNrX2NvdW50QgsKCV9pbnRlcnZhbCIqChNBZGRSZWFjdGlvblJlc3BvbnNlEhMKC3JlYWN0aW9uX2lkGAEgASgJIlEKFVJlbW92ZVJlYWN0aW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSEwoLcmVhY3Rpb25faWQYAyABKAkiKQoWUmVtb3ZlUmVhY3Rpb25SZXNwb25zZRIPCgdyZW1vdmVkGAEgASgIIkwKFExpc3RSZWFjdGlvbnNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJIkkKFUxpc3RSZWFjdGlvbnNSZXNwb25zZRIwCglyZWFjdGlvbnMYASADKAsyHS5icm93c2Vyc2NhbGUudjEuUmVhY3Rpb25JbmZvIukBCgpFbGVtZW50UmVmEhcKD2JhY2tlbmRfbm9kZV9pZBgBIAEoBRIQCgh0YWdfbmFtZRgCIAEoCRIPCgJpZBgDIAEoCUgAiAEBEhEKBG5hbWUYBCABKAlIAYgBARIXCgpjbGFzc19uYW1lGAUgASgJSAKIAQESFwoKaW5wdXRfdHlwZRgGIAEoCUgDiAEBEhEKBHRleHQYByABKAlIBIgBARIQCghlZGl0YWJsZRgIIAEoCEIFCgNfaWRCBwoFX25hbWVCDQoLX2NsYXNzX25hbWVCDQoLX2lucHV0X3R5cGVCBwoFX3RleHQi7gIKCUZpbGxFcnJvchIMCgRjb2RlGAEgASgJEg8KB21lc3NhZ2UYAiABKAkSNQoLY2xpY2tfZXJyb3IYAyABKAsyGy5icm93c2Vyc2NhbGUudjEuQ2xpY2tFcnJvckgAiAEBEiQKF2ZvY3VzZWRfYmFja2VuZF9ub2RlX2lkGAQgASgFSAGIAQESOQoPZm9jdXNlZF9lbGVtZW50GAUgASgLMhsuYnJvd3NlcnNjYWxlLnYxLkVsZW1lbnRSZWZIAogBARIcCg90YXJnZXRfZWRpdGFibGUYBiABKAhIA4gBARIgChN0YXJnZXRfdmFsdWVfbGVuZ3RoGAcgASgFSASIAQFCDgoMX2NsaWNrX2Vycm9yQhoKGF9mb2N1c2VkX2JhY2tlbmRfbm9kZV9pZEISChBfZm9jdXNlZF9lbGVtZW50QhIKEF90YXJnZXRfZWRpdGFibGVCFgoUX3RhcmdldF92YWx1ZV9sZW5ndGgiogEKCkZpbGxSZXN1bHQSDwoHc3VjY2VzcxgBIAEoCBIQCghmcmFtZV9pZBgCIAEoCRIXCg9iYWNrZW5kX25vZGVfaWQYAyABKAUSDgoGcm9vdF94GAYgASgBEg4KBnJvb3RfeRgHIAEoARIuCgVlcnJvchgIIAEoCzIaLmJyb3dzZXJzY2FsZS52MS5GaWxsRXJyb3JIAIgBAUIICgZfZXJyb3IiwgEKCkRyYWdSZXN1bHQSDwoHc3VjY2VzcxgBIAEoCBIQCghmcmFtZV9pZBgCIAEoCRIXCg9iYWNrZW5kX25vZGVfaWQYAyABKAUSDwoHc3RhcnRfeBgEIAEoARIPCgdzdGFydF95GAUgASgBEg0KBWVuZF94GAYgASgBEg0KBWVuZF95GAcgASgBEi4KBWVycm9yGAggASgLMhouYnJvd3NlcnNjYWxlLnYxLkRyYWdFcnJvckgAiAEBQggKBl9lcnJvciJxCglEcmFnRXJyb3ISDAoEY29kZRgBIAEoCRIPCgdtZXNzYWdlGAIgASgJEjUKC2NsaWNrX2Vycm9yGAMgASgLMhsuYnJvd3NlcnNjYWxlLnYxLkNsaWNrRXJyb3JIAIgBAUIOCgxfY2xpY2tfZXJyb3IirgEKElNlbGVjdE9wdGlvblJlc3VsdBIWCg5zZWxlY3RlZF9pbmRleBgBIAEoBRIWCg5zZWxlY3RlZF92YWx1ZRgCIAEoCRIVCg1zZWxlY3RlZF90ZXh0GAMgASgJEg8KB3N1Y2Nlc3MYBCABKAgSNgoFZXJyb3IYBSABKAsyIi5icm93c2Vyc2NhbGUudjEuU2VsZWN0T3B0aW9uRXJyb3JIAIgBAUIICgZfZXJyb3IiMgoRU2VsZWN0T3B0aW9uRXJyb3ISDAoEY29kZRgBIAEoCRIPCgdtZXNzYWdlGAIgASgJIsEBCgxTY3JvbGxSZXN1bHQSDwoHc3VjY2VzcxgBIAEoCBIQCghmcmFtZV9pZBgCIAEoCRIXCg9iYWNrZW5kX25vZGVfaWQYAyABKAUSEgoKaXNfdmlzaWJsZRgEIAEoCBIlCgZib3VuZHMYBSABKAsyFS5icm93c2Vyc2NhbGUudjEuUmVjdBIwCgVlcnJvchgIIAEoCzIcLmJyb3dzZXJzY2FsZS52MS5TY3JvbGxFcnJvckgAiAEBQggKBl9lcnJvciIsCgtTY3JvbGxFcnJvchIMCgRjb2RlGAEgASgJEg8KB21lc3NhZ2UYAiABKAki3QEKCk1vdmVSZXN1bHQSDwoHc3VjY2VzcxgBIAEoCBIQCghmcmFtZV9pZBgCIAEoCRIXCg9iYWNrZW5kX25vZGVfaWQYAyABKAUSEgoKaXNfdmlzaWJsZRgEIAEoCBIlCgZib3VuZHMYBSABKAsyFS5icm93c2Vyc2NhbGUudjEuUmVjdBIOCgZyb290X3gYBiABKAESDgoGcm9vdF95GAcgASgBEi4KBWVycm9yGAggASgLMhouYnJvd3NlcnNjYWxlLnYxLk1vdmVFcnJvckgAiAEBQggKBl9lcnJvciIqCglNb3ZlRXJyb3ISDAoEY29kZRgBIAEoCRIPCgdtZXNzYWdlGAIgASgJIuYBCg9TZXRQcm94eVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhcKCnByb3h5X2hvc3QYAyABKAlIAIgBARIXCgpwcm94eV9wb3J0GAQgASgFSAGIAQESGwoOcHJveHlfdXNlcm5hbWUYBSABKAlIAogBARIbCg5wcm94eV9wYXNzd29yZBgGIAEoCUgDiAEBQg0KC19wcm94eV9ob3N0Qg0KC19wcm94eV9wb3J0QhEKD19wcm94eV91c2VybmFtZUIRCg9fcHJveHlfcGFzc3dvcmQiNgoPR2V0UGFnZXNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCSI8ChBHZXRQYWdlc1Jlc3BvbnNlEigKBXBhZ2VzGAEgAygLMhkuYnJvd3NlcnNjYWxlLnYxLlBhZ2VJbmZvIpoBCg9OYXZpZ2F0ZVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSCwoDdXJsGAQgASgJEhUKCHJlZmVycmVyGAUgASgJSACIAQESFAoHdGltZW91dBgGIAEoAUgBiAEBQgsKCV9yZWZlcnJlckIKCghfdGltZW91dCIxChBOYXZpZ2F0ZVJlc3BvbnNlEhAKCGZyYW1lX2lkGAEgASgJEgsKA3VybBgCIAEoCSK2AQoPTG9hZEhUTUxSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEgsKA3VybBgEIAEoCRIMCgRodG1sGAUgASgJEigKB2hlYWRlcnMYBiADKAsyFy5icm93c2Vyc2NhbGUudjEuSGVhZGVyEhgKC3N0YXR1c19jb2RlGAcgASgFSACIAQFCDgoMX3N0YXR1c19jb2RlIn8KD0V2YWx1YXRlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRISCgpleHByZXNzaW9uGAQgASgJEhUKCGZyYW1lX2lkGAUgASgJSACIAQFCCwoJX2ZyYW1lX2lkInYKEEV2YWx1YXRlUmVzcG9uc2USDgoGcmVzdWx0GAEgASgJEhcKD2JhY2tlbmRfbm9kZV9pZBgCIAEoBRISCgppc192aXNpYmxlGAMgASgIEiUKBmJvdW5kcxgEIAEoCzIVLmJyb3dzZXJzY2FsZS52MS5SZWN0ImMKClJ1blJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg4KBnNvdXJjZRgDIAEoCRIUCgdwYWdlX2lkGAQgASgJSACIAQFCCgoIX3BhZ2VfaWQiLgoLUnVuUmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBIOCgZyZXN1bHQYAiABKAkiwgEKEFdhaXRGb3JBbnlQYXJhbXMSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSMgoKY29uZGl0aW9ucxgEIAMoCzIeLmJyb3dzZXJzY2FsZS52MS5XYWl0Q29uZGl0aW9uEhUKCGZyYW1lX2lkGAUgASgJSACIAQESFAoHdGltZW91dBgGIAEoAUgBiAEBQgsKCV9mcmFtZV9pZEIKCghfdGltZW91dCL1AgoTU2VsZWN0T3B0aW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIcCg9iYWNrZW5kX25vZGVfaWQYBCABKAVIAIgBARIVCghzZWxlY3RvchgFIAEoCUgBiAEBEhoKDWpzX2V4cHJlc3Npb24YBiABKAlIAogBARIVCghmcmFtZV9pZBgHIAEoCUgDiAEBEhIKBWluZGV4GAggASgFSASIAQESEgoFdmFsdWUYCSABKAlIBYgBARIRCgR0ZXh0GAogASgJSAaIAQESGAoLZmlyZV9ldmVudHMYCyABKAhIB4gBAUISChBfYmFja2VuZF9ub2RlX2lkQgsKCV9zZWxlY3RvckIQCg5fanNfZXhwcmVzc2lvbkILCglfZnJhbWVfaWRCCAoGX2luZGV4QggKBl92YWx1ZUIHCgVfdGV4dEIOCgxfZmlyZV9ldmVudHMi7wEKD1Njcm9sbFRvUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIcCg9iYWNrZW5kX25vZGVfaWQYBCABKAVIAIgBARIVCghzZWxlY3RvchgFIAEoCUgBiAEBEhoKDWpzX2V4cHJlc3Npb24YBiABKAlIAogBARIVCghmcmFtZV9pZBgHIAEoCUgDiAEBQhIKEF9iYWNrZW5kX25vZGVfaWRCCwoJX3NlbGVjdG9yQhAKDl9qc19leHByZXNzaW9uQgsKCV9mcmFtZV9pZCKZAgoNTW92ZVRvUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIcCg9iYWNrZW5kX25vZGVfaWQYBCABKAVIAIgBARIVCghzZWxlY3RvchgFIAEoCUgBiAEBEhoKDWpzX2V4cHJlc3Npb24YBiABKAlIAogBARIVCghmcmFtZV9pZBgHIAEoCUgDiAEBEg4KAXgYCCABKAFIBIgBARIOCgF5GAkgASgBSAWIAQFCEgoQX2JhY2tlbmRfbm9kZV9pZEILCglfc2VsZWN0b3JCEAoOX2pzX2V4cHJlc3Npb25CCwoJX2ZyYW1lX2lkQgQKAl94QgQKAl95IoIDCgxDbGlja1JlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSHAoPYmFja2VuZF9ub2RlX2lkGAQgASgFSACIAQESFQoIc2VsZWN0b3IYBSABKAlIAYgBARIaCg1qc19leHByZXNzaW9uGAYgASgJSAKIAQESFQoIZnJhbWVfaWQYByABKAlIA4gBARITCgZidXR0b24YCCABKAlIBIgBARIYCgtjbGlja19jb3VudBgJIAEoBUgFiAEBEg4KAXgYCiABKAFIBogBARIOCgF5GAsgASgBSAeIAQESEwoGYWN0aW9uGAwgASgJSAiIAQFCEgoQX2JhY2tlbmRfbm9kZV9pZEILCglfc2VsZWN0b3JCEAoOX2pzX2V4cHJlc3Npb25CCwoJX2ZyYW1lX2lkQgkKB19idXR0b25CDgoMX2NsaWNrX2NvdW50QgQKAl94QgQKAl95QgkKB19hY3Rpb24igwMKC0RyYWdSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEhwKD2JhY2tlbmRfbm9kZV9pZBgEIAEoBUgAiAEBEhUKCHNlbGVjdG9yGAUgASgJSAGIAQESGgoNanNfZXhwcmVzc2lvbhgGIAEoCUgCiAEBEhUKCGZyYW1lX2lkGAcgASgJSAOIAQESFQoIb2Zmc2V0X3gYCCABKAFIBIgBARIVCghvZmZzZXRfeRgJIAEoAUgFiAEBEhcKCmFic29sdXRlX3gYCiABKAFIBogBARIXCgphYnNvbHV0ZV95GAsgASgBSAeIAQFCEgoQX2JhY2tlbmRfbm9kZV9pZEILCglfc2VsZWN0b3JCEAoOX2pzX2V4cHJlc3Npb25CCwoJX2ZyYW1lX2lkQgsKCV9vZmZzZXRfeEILCglfb2Zmc2V0X3lCDQoLX2Fic29sdXRlX3hCDQoLX2Fic29sdXRlX3ki7wIKC0ZpbGxSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEhwKD2JhY2tlbmRfbm9kZV9pZBgEIAEoBUgAiAEBEhUKCHNlbGVjdG9yGAUgASgJSAGIAQESGgoNanNfZXhwcmVzc2lvbhgGIAEoCUgCiAEBEhUKCGZyYW1lX2lkGAcgASgJSAOIAQESDAoEdGV4dBgIIAEoCRIYCgtjbGVhcl9maXJzdBgJIAEoCEgEiAEBEhQKB3RpbWVvdXQYCiABKAFIBYgBARIYCgtzdGVhZHlfdGltZRgLIAEoAUgGiAEBQhIKEF9iYWNrZW5kX25vZGVfaWRCCwoJX3NlbGVjdG9yQhAKDl9qc19leHByZXNzaW9uQgsKCV9mcmFtZV9pZEIOCgxfY2xlYXJfZmlyc3RCCgoIX3RpbWVvdXRCDgoMX3N0ZWFkeV90aW1lIkwKE1NldEJsb2NrTGlzdFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhAKCHBhdHRlcm5zGAMgAygJImEKFVNldFN0YXRpY1BhdGhzUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSEAoIcGF0dGVybnMYAyADKAkSEQoJYmxvYl9uYW1lGAQgASgJIogBChhXYWl0Rm9yQW55UmVxdWVzdFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhAKCHBhdHRlcm5zGAMgAygJEhMKC2Fib3J0X2ZsYWdzGAQgAygFEhQKB3RpbWVvdXQYBSABKAFIAIgBAUIKCghfdGltZW91dCJgChlXYWl0Rm9yQW55UmVxdWVzdFJlc3BvbnNlEg0KBWluZGV4GAEgASgFEjQKB3JlcXVlc3QYAiABKAsyIy5icm93c2Vyc2NhbGUudjEuSW50ZXJjZXB0ZWRSZXF1ZXN0IokBChlXYWl0Rm9yQW55UmVzcG9uc2VSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIQCghwYXR0ZXJucxgDIAMoCRITCgthYm9ydF9mbGFncxgEIAMoBRIUCgd0aW1lb3V0GAUgASgBSACIAQFCCgoIX3RpbWVvdXQiYwoaV2FpdEZvckFueVJlc3BvbnNlUmVzcG9uc2USDQoFaW5kZXgYASABKAUSNgoIcmVzcG9uc2UYAiABKAsyJC5icm93c2Vyc2NhbGUudjEuSW50ZXJjZXB0ZWRSZXNwb25zZSLKAQoUTW9kaWZ5UmVxdWVzdFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEhMKC3VybF9wYXR0ZXJuGAMgASgJEjoKDW1vZGlmaWNhdGlvbnMYBCADKAsyIy5icm93c2Vyc2NhbGUudjEuSGVhZGVyTW9kaWZpY2F0aW9uEhEKBGJvZHkYBSABKAlIAIgBARIUCgd0aW1lb3V0GAYgASgBSAGIAQFCBwoFX2JvZHlCCgoIX3RpbWVvdXQiTQoVTW9kaWZ5UmVxdWVzdFJlc3BvbnNlEjQKB3JlcXVlc3QYASABKAsyIy5icm93c2Vyc2NhbGUudjEuSW50ZXJjZXB0ZWRSZXF1ZXN0IjgKEUdldENvb2tpZXNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCSJDChJHZXRDb29raWVzUmVzcG9uc2USLQoHY29va2llcxgBIAMoCzIcLmJyb3dzZXJzY2FsZS52MS5Db29raWVQYXJhbSJnChFTZXRDb29raWVzUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSLQoHY29va2llcxgDIAMoCzIcLmJyb3dzZXJzY2FsZS52MS5Db29raWVQYXJhbSI6ChNDbGVhckNvb2tpZXNSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCSIpCgtTdG9yYWdlSXRlbRILCgNrZXkYASABKAkSDQoFdmFsdWUYAiABKAkiUQoSU3RvcmFnZU9yaWdpbkVudHJ5Eg4KBm9yaWdpbhgBIAEoCRIrCgVpdGVtcxgCIAMoCzIcLmJyb3dzZXJzY2FsZS52MS5TdG9yYWdlSXRlbSJYChFHZXRTdG9yYWdlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSEwoGb3JpZ2luGAMgASgJSACIAQFCCQoHX29yaWdpbiJKChJHZXRTdG9yYWdlUmVzcG9uc2USNAoHc3RvcmFnZRgBIAMoCzIjLmJyb3dzZXJzY2FsZS52MS5TdG9yYWdlT3JpZ2luRW50cnkimAEKEVNldFN0b3JhZ2VSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRI0CgdzdG9yYWdlGAMgAygLMiMuYnJvd3NlcnNjYWxlLnYxLlN0b3JhZ2VPcmlnaW5FbnRyeRIYCgtjbGVhcl9maXJzdBgEIAEoCEgAiAEBQg4KDF9jbGVhcl9maXJzdCJaChNDbGVhclN0b3JhZ2VSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRITCgZvcmlnaW4YAyABKAlIAIgBAUIJCgdfb3JpZ2luIocBCg1HZXRET01SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEhUKCGZyYW1lX2lkGAQgASgJSACIAQESEgoFZGVwdGgYBSABKAVIAYgBAUILCglfZnJhbWVfaWRCCAoGX2RlcHRoIh0KDkdldERPTVJlc3BvbnNlEgsKA2RvbRgBIAEoCSKZBAoVR2V0T2JzZXJ2YXRpb25SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEiMKFm1heF9lbGVtZW50c19wZXJfZnJhbWUYBCABKAVIAIgBARIcCg9tYXhfdGV4dF9sZW5ndGgYBSABKAVIAYgBARITCgZmb3JtYXQYBiABKAlIAogBARIdChBtYXhfdG90YWxfdG9rZW5zGAcgASgFSAOIAQESGwoOaW5jbHVkZV9ib3VuZHMYCCABKAhIBIgBARIaCg12aWV3cG9ydF9vbmx5GAkgASgISAWIAQESHAoPYmFja2VuZF9ub2RlX2lkGAogASgFSAaIAQESFQoIc2VsZWN0b3IYCyABKAlIB4gBARIaCg1qc19leHByZXNzaW9uGAwgASgJSAiIAQESFQoIZnJhbWVfaWQYDSABKAlICYgBAUIZChdfbWF4X2VsZW1lbnRzX3Blcl9mcmFtZUISChBfbWF4X3RleHRfbGVuZ3RoQgkKB19mb3JtYXRCEwoRX21heF90b3RhbF90b2tlbnNCEQoPX2luY2x1ZGVfYm91bmRzQhAKDl92aWV3cG9ydF9vbmx5QhIKEF9iYWNrZW5kX25vZGVfaWRCCwoJX3NlbGVjdG9yQhAKDl9qc19leHByZXNzaW9uQgsKCV9mcmFtZV9pZCJFChZHZXRPYnNlcnZhdGlvblJlc3BvbnNlEhMKC29ic2VydmF0aW9uGAEgASgJSgQIAhADUhBvYnNlcnZhdGlvbl9qc29uIm0KEUdldERPTUhhc2hSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIPCgdwYWdlX2lkGAMgASgJEhUKCGZyYW1lX2lkGAQgASgJSACIAQFCCwoJX2ZyYW1lX2lkIiIKEkdldERPTUhhc2hSZXNwb25zZRIMCgRoYXNoGAEgASgJImYKGEluc3BlY3RBdFBvc2l0aW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIJCgF4GAQgASgBEgkKAXkYBSABKAEiqQEKGUluc3BlY3RBdFBvc2l0aW9uUmVzcG9uc2USFwoPYmFja2VuZF9ub2RlX2lkGAEgASgFEhAKCGZyYW1lX2lkGAIgASgJEhAKCHRhZ19uYW1lGAMgASgJEhQKDHRleHRfY29udGVudBgEIAEoCRISCgppc192aXNpYmxlGAUgASgIEiUKBmJvdW5kcxgGIAEoCzIVLmJyb3dzZXJzY2FsZS52MS5SZWN0IokBChRIaWdobGlnaHROb2RlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIXCg9iYWNrZW5kX25vZGVfaWQYBCABKAUSFQoIZnJhbWVfaWQYBSABKAlIAIgBAUILCglfZnJhbWVfaWQiVwoRSW5zZXJ0VGV4dFJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSDAoEdGV4dBgEIAEoCSJ7CgtUeXBlUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIMCgR0ZXh0GAQgASgJEhgKC2NsZWFyX2ZpcnN0GAUgASgISACIAQFCDgoMX2NsZWFyX2ZpcnN0IroBCg9QcmVzc0tleVJlcXVlc3QSEgoKc2Vzc2lvbl9pZBgBIAEoCRIPCgdhcGlfa2V5GAIgASgJEg8KB3BhZ2VfaWQYAyABKAkSCwoDa2V5GAQgASgJEhEKBGNvZGUYBSABKAlIAIgBARIWCgltb2RpZmllcnMYBiABKAVIAYgBARIVCghsb2NhdGlvbhgHIAEoBUgCiAEBQgcKBV9jb2RlQgwKCl9tb2RpZmllcnNCCwoJX2xvY2F0aW9uIrwBChFSZWxlYXNlS2V5UmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRILCgNrZXkYBCABKAkSEQoEY29kZRgFIAEoCUgAiAEBEhYKCW1vZGlmaWVycxgGIAEoBUgBiAEBEhUKCGxvY2F0aW9uGAcgASgFSAKIAQFCBwoFX2NvZGVCDAoKX21vZGlmaWVyc0ILCglfbG9jYXRpb24iSwoTR2V0U2VsZWN0aW9uUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCSIkChRHZXRTZWxlY3Rpb25SZXNwb25zZRIMCgR0ZXh0GAEgASgJIosBChFTY3JlZW5zaG90UmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRITCgZmb3JtYXQYBCABKAlIAIgBARIUCgdxdWFsaXR5GAUgASgFSAGIAQFCCQoHX2Zvcm1hdEIKCghfcXVhbGl0eSJIChJTY3JlZW5zaG90UmVzcG9uc2USEwoLZGF0YV9iYXNlNjQYASABKAkSDQoFd2lkdGgYAiABKAUSDgoGaGVpZ2h0GAMgASgFIpMDChFSZWFkQ2FudmFzUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSDwoHcGFnZV9pZBgDIAEoCRIcCg9iYWNrZW5kX25vZGVfaWQYBCABKAVIAIgBARIVCghzZWxlY3RvchgFIAEoCUgBiAEBEhoKDWpzX2V4cHJlc3Npb24YBiABKAlIAogBARIVCghmcmFtZV9pZBgHIAEoCUgDiAEBEhMKBmZvcm1hdBgIIAEoCUgEiAEBEhQKB3F1YWxpdHkYCSABKAVIBYgBARIPCgJzeBgKIAEoBUgGiAEBEg8KAnN5GAsgASgFSAeIAQESDwoCc3cYDCABKAVICIgBARIPCgJzaBgNIAEoBUgJiAEBQhIKEF9iYWNrZW5kX25vZGVfaWRCCwoJX3NlbGVjdG9yQhAKDl9qc19leHByZXNzaW9uQgsKCV9mcmFtZV9pZEIJCgdfZm9ybWF0QgoKCF9xdWFsaXR5QgUKA19zeEIFCgNfc3lCBQoDX3N3QgUKA19zaCKaAQoSUmVhZENhbnZhc1Jlc3BvbnNlEg8KB3N1Y2Nlc3MYASABKAgSEAoIZnJhbWVfaWQYAiABKAkSFwoPYmFja2VuZF9ub2RlX2lkGAMgASgFEhMKC2RhdGFfYmFzZTY0GAQgASgJEg0KBXdpZHRoGAUgASgFEg4KBmhlaWdodBgGIAEoBRIUCgxvcmlnaW5fY2xlYW4YByABKAgiZAoTU29sdmVDYXB0Y2hhUmVxdWVzdBISCgpzZXNzaW9uX2lkGAEgASgJEg8KB2FwaV9rZXkYAiABKAkSEgoKdGltZW91dF9tcxgDIAEoBRIUCgxyZXRyeV9hbW91bnQYBCABKAUiJgoUU29sdmVDYXB0Y2hhUmVzcG9uc2USDgoGcmVzdWx0GAEgASgJImUKCUljZVNlcnZlchIMCgR1cmxzGAEgAygJEhUKCHVzZXJuYW1lGAIgASgJSACIAQESFwoKY3JlZGVudGlhbBgDIAEoCUgBiAEBQgsKCV91c2VybmFtZUINCgtfY3JlZGVudGlhbCI9ChZHZXRTdHJlYW1Db25maWdSZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCSJKChdHZXRTdHJlYW1Db25maWdSZXNwb25zZRIvCgtpY2Vfc2VydmVycxgBIAMoCzIaLmJyb3dzZXJzY2FsZS52MS5JY2VTZXJ2ZXIiTAoSU3RhcnRTdHJlYW1SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCRIRCglvZmZlcl9zZHAYAyABKAkiKQoTU3RhcnRTdHJlYW1SZXNwb25zZRISCgphbnN3ZXJfc2RwGAEgASgJIjgKEVN0b3BTdHJlYW1SZXF1ZXN0EhIKCnNlc3Npb25faWQYASABKAkSDwoHYXBpX2tleRgCIAEoCSIUChJTdG9wU3RyZWFtUmVzcG9uc2UygRwKB0Jyb3dzZXISRAoIU2V0UHJveHkSIC5icm93c2Vyc2NhbGUudjEuU2V0UHJveHlSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5Ek8KCEdldFBhZ2VzEiAuYnJvd3NlcnNjYWxlLnYxLkdldFBhZ2VzUmVxdWVzdBohLmJyb3dzZXJzY2FsZS52MS5HZXRQYWdlc1Jlc3BvbnNlEk8KCE5hdmlnYXRlEiAuYnJvd3NlcnNjYWxlLnYxLk5hdmlnYXRlUmVxdWVzdBohLmJyb3dzZXJzY2FsZS52MS5OYXZpZ2F0ZVJlc3BvbnNlEkQKCExvYWRIVE1MEiAuYnJvd3NlcnNjYWxlLnYxLkxvYWRIVE1MUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRJPCghFdmFsdWF0ZRIgLmJyb3dzZXJzY2FsZS52MS5FdmFsdWF0ZVJlcXVlc3QaIS5icm93c2Vyc2NhbGUudjEuRXZhbHVhdGVSZXNwb25zZRJACgNSdW4SGy5icm93c2Vyc2NhbGUudjEuUnVuUmVxdWVzdBocLmJyb3dzZXJzY2FsZS52MS5SdW5SZXNwb25zZRJMCgpXYWl0Rm9yQW55EiEuYnJvd3NlcnNjYWxlLnYxLldhaXRGb3JBbnlQYXJhbXMaGy5icm93c2Vyc2NhbGUudjEuV2FpdFJlc3VsdBJZCgxTZWxlY3RPcHRpb24SJC5icm93c2Vyc2NhbGUudjEuU2VsZWN0T3B0aW9uUmVxdWVzdBojLmJyb3dzZXJzY2FsZS52MS5TZWxlY3RPcHRpb25SZXN1bHQSSwoIU2Nyb2xsVG8SIC5icm93c2Vyc2NhbGUudjEuU2Nyb2xsVG9SZXF1ZXN0Gh0uYnJvd3NlcnNjYWxlLnYxLlNjcm9sbFJlc3VsdBJFCgZNb3ZlVG8SHi5icm93c2Vyc2NhbGUudjEuTW92ZVRvUmVxdWVzdBobLmJyb3dzZXJzY2FsZS52MS5Nb3ZlUmVzdWx0EkQKBUNsaWNrEh0uYnJvd3NlcnNjYWxlLnYxLkNsaWNrUmVxdWVzdBocLmJyb3dzZXJzY2FsZS52MS5DbGlja1Jlc3VsdBJBCgREcmFnEhwuYnJvd3NlcnNjYWxlLnYxLkRyYWdSZXF1ZXN0GhsuYnJvd3NlcnNjYWxlLnYxLkRyYWdSZXN1bHQSQQoERmlsbBIcLmJyb3dzZXJzY2FsZS52MS5GaWxsUmVxdWVzdBobLmJyb3dzZXJzY2FsZS52MS5GaWxsUmVzdWx0ElgKC0FkZFJlYWN0aW9uEiMuYnJvd3NlcnNjYWxlLnYxLkFkZFJlYWN0aW9uUmVxdWVzdBokLmJyb3dzZXJzY2FsZS52MS5BZGRSZWFjdGlvblJlc3BvbnNlEmEKDlJlbW92ZVJlYWN0aW9uEiYuYnJvd3NlcnNjYWxlLnYxLlJlbW92ZVJlYWN0aW9uUmVxdWVzdBonLmJyb3dzZXJzY2FsZS52MS5SZW1vdmVSZWFjdGlvblJlc3BvbnNlEl4KDUxpc3RSZWFjdGlvbnMSJS5icm93c2Vyc2NhbGUudjEuTGlzdFJlYWN0aW9uc1JlcXVlc3QaJi5icm93c2Vyc2NhbGUudjEuTGlzdFJlYWN0aW9uc1Jlc3BvbnNlEkwKDFNldEJsb2NrTGlzdBIkLmJyb3dzZXJzY2FsZS52MS5TZXRCbG9ja0xpc3RSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5ElAKDlNldFN0YXRpY1BhdGhzEiYuYnJvd3NlcnNjYWxlLnYxLlNldFN0YXRpY1BhdGhzUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRJqChFXYWl0Rm9yQW55UmVxdWVzdBIpLmJyb3dzZXJzY2FsZS52MS5XYWl0Rm9yQW55UmVxdWVzdFJlcXVlc3QaKi5icm93c2Vyc2NhbGUudjEuV2FpdEZvckFueVJlcXVlc3RSZXNwb25zZRJtChJXYWl0Rm9yQW55UmVzcG9uc2USKi5icm93c2Vyc2NhbGUudjEuV2FpdEZvckFueVJlc3BvbnNlUmVxdWVzdBorLmJyb3dzZXJzY2FsZS52MS5XYWl0Rm9yQW55UmVzcG9uc2VSZXNwb25zZRJeCg1Nb2RpZnlSZXF1ZXN0EiUuYnJvd3NlcnNjYWxlLnYxLk1vZGlmeVJlcXVlc3RSZXF1ZXN0GiYuYnJvd3NlcnNjYWxlLnYxLk1vZGlmeVJlcXVlc3RSZXNwb25zZRJVCgpHZXRDb29raWVzEiIuYnJvd3NlcnNjYWxlLnYxLkdldENvb2tpZXNSZXF1ZXN0GiMuYnJvd3NlcnNjYWxlLnYxLkdldENvb2tpZXNSZXNwb25zZRJICgpTZXRDb29raWVzEiIuYnJvd3NlcnNjYWxlLnYxLlNldENvb2tpZXNSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5EkwKDENsZWFyQ29va2llcxIkLmJyb3dzZXJzY2FsZS52MS5DbGVhckNvb2tpZXNSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5ElUKCkdldFN0b3JhZ2USIi5icm93c2Vyc2NhbGUudjEuR2V0U3RvcmFnZVJlcXVlc3QaIy5icm93c2Vyc2NhbGUudjEuR2V0U3RvcmFnZVJlc3BvbnNlEkgKClNldFN0b3JhZ2USIi5icm93c2Vyc2NhbGUudjEuU2V0U3RvcmFnZVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSTAoMQ2xlYXJTdG9yYWdlEiQuYnJvd3NlcnNjYWxlLnYxLkNsZWFyU3RvcmFnZVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSSQoGR2V0RE9NEh4uYnJvd3NlcnNjYWxlLnYxLkdldERPTVJlcXVlc3QaHy5icm93c2Vyc2NhbGUudjEuR2V0RE9NUmVzcG9uc2USVQoKR2V0RE9NSGFzaBIiLmJyb3dzZXJzY2FsZS52MS5HZXRET01IYXNoUmVxdWVzdBojLmJyb3dzZXJzY2FsZS52MS5HZXRET01IYXNoUmVzcG9uc2USYQoOR2V0T2JzZXJ2YXRpb24SJi5icm93c2Vyc2NhbGUudjEuR2V0T2JzZXJ2YXRpb25SZXF1ZXN0GicuYnJvd3NlcnNjYWxlLnYxLkdldE9ic2VydmF0aW9uUmVzcG9uc2USagoRSW5zcGVjdEF0UG9zaXRpb24SKS5icm93c2Vyc2NhbGUudjEuSW5zcGVjdEF0UG9zaXRpb25SZXF1ZXN0GiouYnJvd3NlcnNjYWxlLnYxLkluc3BlY3RBdFBvc2l0aW9uUmVzcG9uc2USTgoNSGlnaGxpZ2h0Tm9kZRIlLmJyb3dzZXJzY2FsZS52MS5IaWdobGlnaHROb2RlUmVxdWVzdBoWLmdvb2dsZS5wcm90b2J1Zi5FbXB0eRJVCgpTY3JlZW5zaG90EiIuYnJvd3NlcnNjYWxlLnYxLlNjcmVlbnNob3RSZXF1ZXN0GiMuYnJvd3NlcnNjYWxlLnYxLlNjcmVlbnNob3RSZXNwb25zZRJVCgpSZWFkQ2FudmFzEiIuYnJvd3NlcnNjYWxlLnYxLlJlYWRDYW52YXNSZXF1ZXN0GiMuYnJvd3NlcnNjYWxlLnYxLlJlYWRDYW52YXNSZXNwb25zZRJICgpJbnNlcnRUZXh0EiIuYnJvd3NlcnNjYWxlLnYxLkluc2VydFRleHRSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5EjwKBFR5cGUSHC5icm93c2Vyc2NhbGUudjEuVHlwZVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSRAoIUHJlc3NLZXkSIC5icm93c2Vyc2NhbGUudjEuUHJlc3NLZXlSZXF1ZXN0GhYuZ29vZ2xlLnByb3RvYnVmLkVtcHR5EkgKClJlbGVhc2VLZXkSIi5icm93c2Vyc2NhbGUudjEuUmVsZWFzZUtleVJlcXVlc3QaFi5nb29nbGUucHJvdG9idWYuRW1wdHkSWwoMR2V0U2VsZWN0aW9uEiQuYnJvd3NlcnNjYWxlLnYxLkdldFNlbGVjdGlvblJlcXVlc3QaJS5icm93c2Vyc2NhbGUudjEuR2V0U2VsZWN0aW9uUmVzcG9uc2USWwoMU29sdmVDYXB0Y2hhEiQuYnJvd3NlcnNjYWxlLnYxLlNvbHZlQ2FwdGNoYVJlcXVlc3QaJS5icm93c2Vyc2NhbGUudjEuU29sdmVDYXB0Y2hhUmVzcG9uc2USZAoPR2V0U3RyZWFtQ29uZmlnEicuYnJvd3NlcnNjYWxlLnYxLkdldFN0cmVhbUNvbmZpZ1JlcXVlc3QaKC5icm93c2Vyc2NhbGUudjEuR2V0U3RyZWFtQ29uZmlnUmVzcG9uc2USWAoLU3RhcnRTdHJlYW0SIy5icm93c2Vyc2NhbGUudjEuU3RhcnRTdHJlYW1SZXF1ZXN0GiQuYnJvd3NlcnNjYWxlLnYxLlN0YXJ0U3RyZWFtUmVzcG9uc2USVQoKU3RvcFN0cmVhbRIiLmJyb3dzZXJzY2FsZS52MS5TdG9wU3RyZWFtUmVxdWVzdBojLmJyb3dzZXJzY2FsZS52MS5TdG9wU3RyZWFtUmVzcG9uc2VCM1oxZ2l0aHViLmNvbS9icm93c2Vyc2NhbGUvYnJvd3NlcnNjYWxlLWdvL2dlbmVyYXRlZGIGcHJvdG8z", [file_google_protobuf_empty]);
|
|
10
10
|
/**
|
|
11
11
|
* Describes the message browserscale.v1.Rect.
|
|
12
12
|
* Use `create(RectSchema)` to create a new message.
|
package/dist/index.d.ts
CHANGED
|
@@ -5,7 +5,7 @@ export { BrowserConfig } from "./config.ts";
|
|
|
5
5
|
export { Locator, css, js, node, at, AllFrames } from "./locator.ts";
|
|
6
6
|
export { DefaultWaitTimeoutMs, DefaultVisible, DefaultSteadyMs, } from "./defaults.ts";
|
|
7
7
|
export { BrowserScaleError, ClickError, FillError, DragError, ScrollError, MoveError, SelectOptionError, WaitError, } from "./errors.ts";
|
|
8
|
-
export type { Rect, FrameInfo, PageInfo, Header, InterceptedRequest, InterceptedResponse, WaitResult, WaitConditionStatus, OccluderInfo, ElementRef, NavigateResult, EvaluateResult, ElementResult, DragResult, SelectOptionResult,
|
|
8
|
+
export type { Rect, FrameInfo, PageInfo, Header, InterceptedRequest, InterceptedResponse, WaitResult, WaitConditionStatus, OccluderInfo, ElementRef, NavigateResult, EvaluateResult, ElementResult, DragResult, SelectOptionResult, ScreenshotResult, ReadCanvasResult, DOMResult, InspectResult, RentResponse, IceServer, ReactionInfo, } from "./types.ts";
|
|
9
9
|
export type { Button, ClickAction, ClickOpts, FillOpts, ReactionOpts, SelectOpts, WaitOpts, WaitUntil, NavigateOpts, LoadHTMLOpts, GetDOMOpts, GetObservationOpts, ScreenshotOpts, ReadCanvasOpts, } from "./options.ts";
|
|
10
10
|
export { type RequestPattern, type HeaderModification, type HeaderModificationAction, } from "./network.ts";
|
|
11
11
|
export type { CookieParam } from "./cookies.ts";
|
package/dist/internal/convert.js
CHANGED
|
@@ -56,6 +56,7 @@ function occluderFromProto(o) {
|
|
|
56
56
|
opacity: o.opacity ?? 0,
|
|
57
57
|
zIndex: o.zIndex ?? "",
|
|
58
58
|
hittableWhileInvisible: o.hittableWhileInvisible ?? false,
|
|
59
|
+
position: o.position ?? "",
|
|
59
60
|
};
|
|
60
61
|
}
|
|
61
62
|
// Nested click-core detail (no standalone result) surfaced inside a FillError
|
package/dist/options.d.ts
CHANGED
|
@@ -120,10 +120,58 @@ export interface GetDOMOpts {
|
|
|
120
120
|
}
|
|
121
121
|
/** Optional customization for {@link CloudBrowser.getObservation}. */
|
|
122
122
|
export interface GetObservationOpts {
|
|
123
|
-
/**
|
|
123
|
+
/**
|
|
124
|
+
* `"text"` (default) for the compact line format meant to be handed to a
|
|
125
|
+
* model as-is, or `"json"` for the structured form. Only the requested
|
|
126
|
+
* representation is built, so asking for one does not cost the other.
|
|
127
|
+
*/
|
|
128
|
+
format?: "text" | "json";
|
|
129
|
+
/**
|
|
130
|
+
* Cap on emitted elements per frame. Default 800 — a safety net against
|
|
131
|
+
* runaway documents; `maxTotalTokens` is the limit that normally binds.
|
|
132
|
+
*/
|
|
124
133
|
maxElementsPerFrame?: number;
|
|
125
|
-
/**
|
|
134
|
+
/**
|
|
135
|
+
* Cap on human-readable strings (labels, text, values) in characters.
|
|
136
|
+
* Default 300. Identifier-like attributes (type, name, role) have their own
|
|
137
|
+
* fixed, shorter cap and are unaffected.
|
|
138
|
+
*/
|
|
126
139
|
maxTextLength?: number;
|
|
140
|
+
/**
|
|
141
|
+
* Budget across ALL frames, in estimated tokens rather than characters —
|
|
142
|
+
* the same character count is worth roughly four times as many tokens in
|
|
143
|
+
* CJK text as in ASCII. Default 8000. Frames are visited in tree order and
|
|
144
|
+
* each gets whatever is left.
|
|
145
|
+
*/
|
|
146
|
+
maxTotalTokens?: number;
|
|
147
|
+
/**
|
|
148
|
+
* Include element bounds as `bounds="x,y,w,h"`. Off by default; bounds cost
|
|
149
|
+
* about as much as the rest of a row and are rarely needed, since elements
|
|
150
|
+
* are addressed by backendNodeId.
|
|
151
|
+
*/
|
|
152
|
+
includeBounds?: boolean;
|
|
153
|
+
/** Only emit elements intersecting the frame's current viewport. */
|
|
154
|
+
viewportOnly?: boolean;
|
|
155
|
+
/**
|
|
156
|
+
* Subtree scope — set exactly one of `backendNodeId`, `selector` or
|
|
157
|
+
* `jsExpression` to observe only that element's subtree (follow-up looks at
|
|
158
|
+
* a form then cost the form, not the ads around it). Omit all three for the
|
|
159
|
+
* whole page. Child iframes reached inside the scope are still visited.
|
|
160
|
+
*/
|
|
161
|
+
backendNodeId?: number;
|
|
162
|
+
/** Scope root by CSS selector. */
|
|
163
|
+
selector?: string;
|
|
164
|
+
/**
|
|
165
|
+
* Scope root by JS expression that evaluates to a DOM Element (including
|
|
166
|
+
* `__wrc.shadow(...)` for closed shadow roots).
|
|
167
|
+
*/
|
|
168
|
+
jsExpression?: string;
|
|
169
|
+
/**
|
|
170
|
+
* Where to look up the scope root: a specific `frameId`, omit for the main
|
|
171
|
+
* frame, or {@link AllFrames} to search every frame until found. Ignored when
|
|
172
|
+
* observing the whole page.
|
|
173
|
+
*/
|
|
174
|
+
frameId?: string;
|
|
127
175
|
}
|
|
128
176
|
/** Optional customization for {@link CloudBrowser.screenshot}. */
|
|
129
177
|
export interface ScreenshotOpts {
|
package/dist/types.d.ts
CHANGED
|
@@ -100,6 +100,13 @@ export interface OccluderInfo {
|
|
|
100
100
|
* invisible, a real click would fall through.
|
|
101
101
|
*/
|
|
102
102
|
hittableWhileInvisible: boolean;
|
|
103
|
+
/**
|
|
104
|
+
* Computed position keyword. `"fixed"`/`"sticky"` means the blocker is pinned
|
|
105
|
+
* (by itself or an ancestor) and stays put no matter where the pointer goes —
|
|
106
|
+
* clear it by scrolling the target out from under it; ordinary overlays often
|
|
107
|
+
* collapse once the pointer leaves.
|
|
108
|
+
*/
|
|
109
|
+
position: string;
|
|
103
110
|
}
|
|
104
111
|
/**
|
|
105
112
|
* ElementRef is a lightweight descriptor of an element — enough to identify it
|
|
@@ -206,15 +213,6 @@ export interface SelectOptionResult {
|
|
|
206
213
|
selectedValue: string;
|
|
207
214
|
selectedText: string;
|
|
208
215
|
}
|
|
209
|
-
/**
|
|
210
|
-
* ObservationResult is the compact page snapshot returned by
|
|
211
|
-
* {@link CloudBrowser.getObservation} — the visible, interactive elements
|
|
212
|
-
* rendered as prompt-friendly text and as JSON.
|
|
213
|
-
*/
|
|
214
|
-
export interface ObservationResult {
|
|
215
|
-
text: string;
|
|
216
|
-
json: string;
|
|
217
|
-
}
|
|
218
216
|
/**
|
|
219
217
|
* ScreenshotResult is a single captured image of the page, returned by
|
|
220
218
|
* {@link CloudBrowser.screenshot}. `dataBase64` holds the encoded image bytes
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "browserscale-ts",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"description": "Official SDK for browserscale — undetected stealth browsers in the cloud. Rent real Chromium sessions with unique fingerprints, built-in proxies, captcha solving, human-like input and live video — scale web scraping and automation without running a single browser yourself.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|