UNPKG

745 kBJavaScriptView Raw
1(function (global, factory) {
2 typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports, require('@polkadot/keyring'), require('@polkadot/util'), require('@polkadot/types'), require('@polkadot/util-crypto')) :
3 typeof define === 'function' && define.amd ? define(['exports', '@polkadot/keyring', '@polkadot/util', '@polkadot/types', '@polkadot/util-crypto'], factory) :
4 (global = typeof globalThis !== 'undefined' ? globalThis : global || self, factory(global.polkadotApi = {}, global.polkadotKeyring, global.polkadotUtil, global.polkadotTypes, global.polkadotUtilCrypto));
5})(this, (function (exports, keyring, util, types, utilCrypto) { 'use strict';
6
7 const global = typeof globalThis !== "undefined" ? globalThis : typeof self !== "undefined" ? self : window;
8
9 var _documentCurrentScript = typeof document !== 'undefined' ? document.currentScript : null;
10 function evaluateThis(fn) {
11 return fn('return this');
12 }
13 const xglobal = (typeof globalThis !== 'undefined'
14 ? globalThis
15 : typeof global !== 'undefined'
16 ? global
17 : typeof self !== 'undefined'
18 ? self
19 : typeof window !== 'undefined'
20 ? window
21 : evaluateThis(Function));
22
23 const fetch = xglobal.fetch;
24
25 const UNKNOWN = -99999;
26 function extend(that, name, value) {
27 Object.defineProperty(that, name, {
28 configurable: true,
29 enumerable: false,
30 value
31 });
32 }
33 class RpcError extends Error {
34 code;
35 data;
36 message;
37 name;
38 stack;
39 constructor(message = '', code = UNKNOWN, data) {
40 super();
41 extend(this, 'message', String(message));
42 extend(this, 'name', this.constructor.name);
43 extend(this, 'data', data);
44 extend(this, 'code', code);
45 if (util.isFunction(Error.captureStackTrace)) {
46 Error.captureStackTrace(this, this.constructor);
47 }
48 else {
49 const { stack } = new Error(message);
50 stack && extend(this, 'stack', stack);
51 }
52 }
53 static CODES = {
54 ASSERT: -90009,
55 INVALID_JSONRPC: -99998,
56 METHOD_NOT_FOUND: -32601,
57 UNKNOWN
58 };
59 }
60
61 function formatErrorData(data) {
62 if (util.isUndefined(data)) {
63 return '';
64 }
65 const formatted = `: ${util.isString(data)
66 ? data.replace(/Error\("/g, '').replace(/\("/g, '(').replace(/"\)/g, ')').replace(/\(/g, ', ').replace(/\)/g, '')
67 : util.stringify(data)}`;
68 return formatted.length <= 256
69 ? formatted
70 : `${formatted.substring(0, 255)}…`;
71 }
72 function checkError(error) {
73 if (error) {
74 const { code, data, message } = error;
75 throw new RpcError(`${code}: ${message}${formatErrorData(data)}`, code, data);
76 }
77 }
78 class RpcCoder {
79 __internal__id = 0;
80 decodeResponse(response) {
81 if (!response || response.jsonrpc !== '2.0') {
82 throw new Error('Invalid jsonrpc field in decoded object');
83 }
84 const isSubscription = !util.isUndefined(response.params) && !util.isUndefined(response.method);
85 if (!util.isNumber(response.id) &&
86 (!isSubscription || (!util.isNumber(response.params.subscription) &&
87 !util.isString(response.params.subscription)))) {
88 throw new Error('Invalid id field in decoded object');
89 }
90 checkError(response.error);
91 if (response.result === undefined && !isSubscription) {
92 throw new Error('No result found in jsonrpc response');
93 }
94 if (isSubscription) {
95 checkError(response.params.error);
96 return response.params.result;
97 }
98 return response.result;
99 }
100 encodeJson(method, params) {
101 const [id, data] = this.encodeObject(method, params);
102 return [id, util.stringify(data)];
103 }
104 encodeObject(method, params) {
105 const id = ++this.__internal__id;
106 return [id, {
107 id,
108 jsonrpc: '2.0',
109 method,
110 params
111 }];
112 }
113 }
114
115 const HTTP_URL = 'http://127.0.0.1:9933';
116 const WS_URL = 'ws://127.0.0.1:9944';
117 const defaults = {
118 HTTP_URL,
119 WS_URL
120 };
121
122 const DEFAULT_CAPACITY = 128;
123 class LRUNode {
124 key;
125 next;
126 prev;
127 constructor(key) {
128 this.key = key;
129 this.next = this.prev = this;
130 }
131 }
132 class LRUCache {
133 capacity;
134 __internal__data = new Map();
135 __internal__refs = new Map();
136 __internal__length = 0;
137 __internal__head;
138 __internal__tail;
139 constructor(capacity = DEFAULT_CAPACITY) {
140 this.capacity = capacity;
141 this.__internal__head = this.__internal__tail = new LRUNode('<empty>');
142 }
143 get length() {
144 return this.__internal__length;
145 }
146 get lengthData() {
147 return this.__internal__data.size;
148 }
149 get lengthRefs() {
150 return this.__internal__refs.size;
151 }
152 entries() {
153 const keys = this.keys();
154 const count = keys.length;
155 const entries = new Array(count);
156 for (let i = 0; i < count; i++) {
157 const key = keys[i];
158 entries[i] = [key, this.__internal__data.get(key)];
159 }
160 return entries;
161 }
162 keys() {
163 const keys = [];
164 if (this.__internal__length) {
165 let curr = this.__internal__head;
166 while (curr !== this.__internal__tail) {
167 keys.push(curr.key);
168 curr = curr.next;
169 }
170 keys.push(curr.key);
171 }
172 return keys;
173 }
174 get(key) {
175 const data = this.__internal__data.get(key);
176 if (data) {
177 this.__internal__toHead(key);
178 return data;
179 }
180 return null;
181 }
182 set(key, value) {
183 if (this.__internal__data.has(key)) {
184 this.__internal__toHead(key);
185 }
186 else {
187 const node = new LRUNode(key);
188 this.__internal__refs.set(node.key, node);
189 if (this.length === 0) {
190 this.__internal__head = this.__internal__tail = node;
191 }
192 else {
193 this.__internal__head.prev = node;
194 node.next = this.__internal__head;
195 this.__internal__head = node;
196 }
197 if (this.__internal__length === this.capacity) {
198 this.__internal__data.delete(this.__internal__tail.key);
199 this.__internal__refs.delete(this.__internal__tail.key);
200 this.__internal__tail = this.__internal__tail.prev;
201 this.__internal__tail.next = this.__internal__head;
202 }
203 else {
204 this.__internal__length += 1;
205 }
206 }
207 this.__internal__data.set(key, value);
208 }
209 __internal__toHead(key) {
210 const ref = this.__internal__refs.get(key);
211 if (ref && ref !== this.__internal__head) {
212 ref.prev.next = ref.next;
213 ref.next.prev = ref.prev;
214 ref.next = this.__internal__head;
215 this.__internal__head.prev = ref;
216 this.__internal__head = ref;
217 }
218 }
219 }
220
221 const ERROR_SUBSCRIBE = 'HTTP Provider does not have subscriptions, use WebSockets instead';
222 const l$7 = util.logger('api-http');
223 class HttpProvider {
224 __internal__callCache = new LRUCache();
225 __internal__coder;
226 __internal__endpoint;
227 __internal__headers;
228 __internal__stats;
229 constructor(endpoint = defaults.HTTP_URL, headers = {}) {
230 if (!/^(https|http):\/\//.test(endpoint)) {
231 throw new Error(`Endpoint should start with 'http://' or 'https://', received '${endpoint}'`);
232 }
233 this.__internal__coder = new RpcCoder();
234 this.__internal__endpoint = endpoint;
235 this.__internal__headers = headers;
236 this.__internal__stats = {
237 active: { requests: 0, subscriptions: 0 },
238 total: { bytesRecv: 0, bytesSent: 0, cached: 0, errors: 0, requests: 0, subscriptions: 0, timeout: 0 }
239 };
240 }
241 get hasSubscriptions() {
242 return !!false;
243 }
244 clone() {
245 return new HttpProvider(this.__internal__endpoint, this.__internal__headers);
246 }
247 async connect() {
248 }
249 async disconnect() {
250 }
251 get stats() {
252 return this.__internal__stats;
253 }
254 get isClonable() {
255 return !!true;
256 }
257 get isConnected() {
258 return !!true;
259 }
260 on(_type, _sub) {
261 l$7.error('HTTP Provider does not have \'on\' emitters, use WebSockets instead');
262 return util.noop;
263 }
264 async send(method, params, isCacheable) {
265 this.__internal__stats.total.requests++;
266 const [, body] = this.__internal__coder.encodeJson(method, params);
267 const cacheKey = isCacheable ? `${method}::${util.stringify(params)}` : '';
268 let resultPromise = isCacheable
269 ? this.__internal__callCache.get(cacheKey)
270 : null;
271 if (!resultPromise) {
272 resultPromise = this.__internal__send(body);
273 if (isCacheable) {
274 this.__internal__callCache.set(cacheKey, resultPromise);
275 }
276 }
277 else {
278 this.__internal__stats.total.cached++;
279 }
280 return resultPromise;
281 }
282 async __internal__send(body) {
283 this.__internal__stats.active.requests++;
284 this.__internal__stats.total.bytesSent += body.length;
285 try {
286 const response = await fetch(this.__internal__endpoint, {
287 body,
288 headers: {
289 Accept: 'application/json',
290 'Content-Length': `${body.length}`,
291 'Content-Type': 'application/json',
292 ...this.__internal__headers
293 },
294 method: 'POST'
295 });
296 if (!response.ok) {
297 throw new Error(`[${response.status}]: ${response.statusText}`);
298 }
299 const result = await response.text();
300 this.__internal__stats.total.bytesRecv += result.length;
301 const decoded = this.__internal__coder.decodeResponse(JSON.parse(result));
302 this.__internal__stats.active.requests--;
303 return decoded;
304 }
305 catch (e) {
306 this.__internal__stats.active.requests--;
307 this.__internal__stats.total.errors++;
308 throw e;
309 }
310 }
311 async subscribe(_types, _method, _params, _cb) {
312 l$7.error(ERROR_SUBSCRIBE);
313 throw new Error(ERROR_SUBSCRIBE);
314 }
315 async unsubscribe(_type, _method, _id) {
316 l$7.error(ERROR_SUBSCRIBE);
317 throw new Error(ERROR_SUBSCRIBE);
318 }
319 }
320
321 function getDefaultExportFromCjs (x) {
322 return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;
323 }
324
325 var eventemitter3 = {exports: {}};
326
327 (function (module) {
328 var has = Object.prototype.hasOwnProperty
329 , prefix = '~';
330 function Events() {}
331 if (Object.create) {
332 Events.prototype = Object.create(null);
333 if (!new Events().__proto__) prefix = false;
334 }
335 function EE(fn, context, once) {
336 this.fn = fn;
337 this.context = context;
338 this.once = once || false;
339 }
340 function addListener(emitter, event, fn, context, once) {
341 if (typeof fn !== 'function') {
342 throw new TypeError('The listener must be a function');
343 }
344 var listener = new EE(fn, context || emitter, once)
345 , evt = prefix ? prefix + event : event;
346 if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;
347 else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);
348 else emitter._events[evt] = [emitter._events[evt], listener];
349 return emitter;
350 }
351 function clearEvent(emitter, evt) {
352 if (--emitter._eventsCount === 0) emitter._events = new Events();
353 else delete emitter._events[evt];
354 }
355 function EventEmitter() {
356 this._events = new Events();
357 this._eventsCount = 0;
358 }
359 EventEmitter.prototype.eventNames = function eventNames() {
360 var names = []
361 , events
362 , name;
363 if (this._eventsCount === 0) return names;
364 for (name in (events = this._events)) {
365 if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);
366 }
367 if (Object.getOwnPropertySymbols) {
368 return names.concat(Object.getOwnPropertySymbols(events));
369 }
370 return names;
371 };
372 EventEmitter.prototype.listeners = function listeners(event) {
373 var evt = prefix ? prefix + event : event
374 , handlers = this._events[evt];
375 if (!handlers) return [];
376 if (handlers.fn) return [handlers.fn];
377 for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {
378 ee[i] = handlers[i].fn;
379 }
380 return ee;
381 };
382 EventEmitter.prototype.listenerCount = function listenerCount(event) {
383 var evt = prefix ? prefix + event : event
384 , listeners = this._events[evt];
385 if (!listeners) return 0;
386 if (listeners.fn) return 1;
387 return listeners.length;
388 };
389 EventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {
390 var evt = prefix ? prefix + event : event;
391 if (!this._events[evt]) return false;
392 var listeners = this._events[evt]
393 , len = arguments.length
394 , args
395 , i;
396 if (listeners.fn) {
397 if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);
398 switch (len) {
399 case 1: return listeners.fn.call(listeners.context), true;
400 case 2: return listeners.fn.call(listeners.context, a1), true;
401 case 3: return listeners.fn.call(listeners.context, a1, a2), true;
402 case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;
403 case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;
404 case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;
405 }
406 for (i = 1, args = new Array(len -1); i < len; i++) {
407 args[i - 1] = arguments[i];
408 }
409 listeners.fn.apply(listeners.context, args);
410 } else {
411 var length = listeners.length
412 , j;
413 for (i = 0; i < length; i++) {
414 if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);
415 switch (len) {
416 case 1: listeners[i].fn.call(listeners[i].context); break;
417 case 2: listeners[i].fn.call(listeners[i].context, a1); break;
418 case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;
419 case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;
420 default:
421 if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {
422 args[j - 1] = arguments[j];
423 }
424 listeners[i].fn.apply(listeners[i].context, args);
425 }
426 }
427 }
428 return true;
429 };
430 EventEmitter.prototype.on = function on(event, fn, context) {
431 return addListener(this, event, fn, context, false);
432 };
433 EventEmitter.prototype.once = function once(event, fn, context) {
434 return addListener(this, event, fn, context, true);
435 };
436 EventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {
437 var evt = prefix ? prefix + event : event;
438 if (!this._events[evt]) return this;
439 if (!fn) {
440 clearEvent(this, evt);
441 return this;
442 }
443 var listeners = this._events[evt];
444 if (listeners.fn) {
445 if (
446 listeners.fn === fn &&
447 (!once || listeners.once) &&
448 (!context || listeners.context === context)
449 ) {
450 clearEvent(this, evt);
451 }
452 } else {
453 for (var i = 0, events = [], length = listeners.length; i < length; i++) {
454 if (
455 listeners[i].fn !== fn ||
456 (once && !listeners[i].once) ||
457 (context && listeners[i].context !== context)
458 ) {
459 events.push(listeners[i]);
460 }
461 }
462 if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;
463 else clearEvent(this, evt);
464 }
465 return this;
466 };
467 EventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {
468 var evt;
469 if (event) {
470 evt = prefix ? prefix + event : event;
471 if (this._events[evt]) clearEvent(this, evt);
472 } else {
473 this._events = new Events();
474 this._eventsCount = 0;
475 }
476 return this;
477 };
478 EventEmitter.prototype.off = EventEmitter.prototype.removeListener;
479 EventEmitter.prototype.addListener = EventEmitter.prototype.on;
480 EventEmitter.prefixed = prefix;
481 EventEmitter.EventEmitter = EventEmitter;
482 {
483 module.exports = EventEmitter;
484 }
485 } (eventemitter3));
486 var eventemitter3Exports = eventemitter3.exports;
487 const EventEmitter = getDefaultExportFromCjs(eventemitter3Exports);
488
489 function healthChecker() {
490 let checker = null;
491 let sendJsonRpc = null;
492 return {
493 responsePassThrough: (jsonRpcResponse) => {
494 if (checker === null) {
495 return jsonRpcResponse;
496 }
497 return checker.responsePassThrough(jsonRpcResponse);
498 },
499 sendJsonRpc: (request) => {
500 if (!sendJsonRpc) {
501 throw new Error('setSendJsonRpc must be called before sending requests');
502 }
503 if (checker === null) {
504 sendJsonRpc(request);
505 }
506 else {
507 checker.sendJsonRpc(request);
508 }
509 },
510 setSendJsonRpc: (cb) => {
511 sendJsonRpc = cb;
512 },
513 start: (healthCallback) => {
514 if (checker !== null) {
515 throw new Error("Can't start the health checker multiple times in parallel");
516 }
517 else if (!sendJsonRpc) {
518 throw new Error('setSendJsonRpc must be called before starting the health checks');
519 }
520 checker = new InnerChecker(healthCallback, sendJsonRpc);
521 checker.update(true);
522 },
523 stop: () => {
524 if (checker === null) {
525 return;
526 }
527 checker.destroy();
528 checker = null;
529 }
530 };
531 }
532 class InnerChecker {
533 __internal__healthCallback;
534 __internal__currentHealthCheckId = null;
535 __internal__currentHealthTimeout = null;
536 __internal__currentSubunsubRequestId = null;
537 __internal__currentSubscriptionId = null;
538 __internal__requestToSmoldot;
539 __internal__isSyncing = false;
540 __internal__nextRequestId = 0;
541 constructor(healthCallback, requestToSmoldot) {
542 this.__internal__healthCallback = healthCallback;
543 this.__internal__requestToSmoldot = (request) => requestToSmoldot(util.stringify(request));
544 }
545 sendJsonRpc = (request) => {
546 let parsedRequest;
547 try {
548 parsedRequest = JSON.parse(request);
549 }
550 catch {
551 return;
552 }
553 if (parsedRequest.id) {
554 const newId = 'extern:' + util.stringify(parsedRequest.id);
555 parsedRequest.id = newId;
556 }
557 this.__internal__requestToSmoldot(parsedRequest);
558 };
559 responsePassThrough = (jsonRpcResponse) => {
560 let parsedResponse;
561 try {
562 parsedResponse = JSON.parse(jsonRpcResponse);
563 }
564 catch {
565 return jsonRpcResponse;
566 }
567 if (parsedResponse.id && this.__internal__currentHealthCheckId === parsedResponse.id) {
568 this.__internal__currentHealthCheckId = null;
569 if (!parsedResponse.result) {
570 this.update(false);
571 return null;
572 }
573 this.__internal__healthCallback(parsedResponse.result);
574 this.__internal__isSyncing = parsedResponse.result.isSyncing;
575 this.update(false);
576 return null;
577 }
578 if (parsedResponse.id &&
579 this.__internal__currentSubunsubRequestId === parsedResponse.id) {
580 this.__internal__currentSubunsubRequestId = null;
581 if (!parsedResponse.result) {
582 this.update(false);
583 return null;
584 }
585 if (this.__internal__currentSubscriptionId) {
586 this.__internal__currentSubscriptionId = null;
587 }
588 else {
589 this.__internal__currentSubscriptionId = parsedResponse.result;
590 }
591 this.update(false);
592 return null;
593 }
594 if (parsedResponse.params &&
595 this.__internal__currentSubscriptionId &&
596 parsedResponse.params.subscription === this.__internal__currentSubscriptionId) {
597 this.update(true);
598 return null;
599 }
600 if (parsedResponse.id) {
601 const id = parsedResponse.id;
602 if (!id.startsWith('extern:')) {
603 throw new Error('State inconsistency in health checker');
604 }
605 const newId = JSON.parse(id.slice('extern:'.length));
606 parsedResponse.id = newId;
607 }
608 return util.stringify(parsedResponse);
609 };
610 update = (startNow) => {
611 if (startNow && this.__internal__currentHealthTimeout) {
612 clearTimeout(this.__internal__currentHealthTimeout);
613 this.__internal__currentHealthTimeout = null;
614 }
615 if (!this.__internal__currentHealthTimeout) {
616 const startHealthRequest = () => {
617 this.__internal__currentHealthTimeout = null;
618 if (this.__internal__currentHealthCheckId) {
619 return;
620 }
621 this.__internal__currentHealthCheckId = `health-checker:${this.__internal__nextRequestId}`;
622 this.__internal__nextRequestId += 1;
623 this.__internal__requestToSmoldot({
624 id: this.__internal__currentHealthCheckId,
625 jsonrpc: '2.0',
626 method: 'system_health',
627 params: []
628 });
629 };
630 if (startNow) {
631 startHealthRequest();
632 }
633 else {
634 this.__internal__currentHealthTimeout = setTimeout(startHealthRequest, 1000);
635 }
636 }
637 if (this.__internal__isSyncing &&
638 !this.__internal__currentSubscriptionId &&
639 !this.__internal__currentSubunsubRequestId) {
640 this.startSubscription();
641 }
642 if (!this.__internal__isSyncing &&
643 this.__internal__currentSubscriptionId &&
644 !this.__internal__currentSubunsubRequestId) {
645 this.endSubscription();
646 }
647 };
648 startSubscription = () => {
649 if (this.__internal__currentSubunsubRequestId || this.__internal__currentSubscriptionId) {
650 throw new Error('Internal error in health checker');
651 }
652 this.__internal__currentSubunsubRequestId = `health-checker:${this.__internal__nextRequestId}`;
653 this.__internal__nextRequestId += 1;
654 this.__internal__requestToSmoldot({
655 id: this.__internal__currentSubunsubRequestId,
656 jsonrpc: '2.0',
657 method: 'chain_subscribeNewHeads',
658 params: []
659 });
660 };
661 endSubscription = () => {
662 if (this.__internal__currentSubunsubRequestId || !this.__internal__currentSubscriptionId) {
663 throw new Error('Internal error in health checker');
664 }
665 this.__internal__currentSubunsubRequestId = `health-checker:${this.__internal__nextRequestId}`;
666 this.__internal__nextRequestId += 1;
667 this.__internal__requestToSmoldot({
668 id: this.__internal__currentSubunsubRequestId,
669 jsonrpc: '2.0',
670 method: 'chain_unsubscribeNewHeads',
671 params: [this.__internal__currentSubscriptionId]
672 });
673 };
674 destroy = () => {
675 if (this.__internal__currentHealthTimeout) {
676 clearTimeout(this.__internal__currentHealthTimeout);
677 this.__internal__currentHealthTimeout = null;
678 }
679 };
680 }
681
682 const l$6 = util.logger('api-substrate-connect');
683 const subscriptionUnsubscriptionMethods = new Map([
684 ['author_submitAndWatchExtrinsic', 'author_unwatchExtrinsic'],
685 ['chain_subscribeAllHeads', 'chain_unsubscribeAllHeads'],
686 ['chain_subscribeFinalizedHeads', 'chain_unsubscribeFinalizedHeads'],
687 ['chain_subscribeFinalisedHeads', 'chain_subscribeFinalisedHeads'],
688 ['chain_subscribeNewHeads', 'chain_unsubscribeNewHeads'],
689 ['chain_subscribeNewHead', 'chain_unsubscribeNewHead'],
690 ['chain_subscribeRuntimeVersion', 'chain_unsubscribeRuntimeVersion'],
691 ['subscribe_newHead', 'unsubscribe_newHead'],
692 ['state_subscribeRuntimeVersion', 'state_unsubscribeRuntimeVersion'],
693 ['state_subscribeStorage', 'state_unsubscribeStorage']
694 ]);
695 const scClients = new WeakMap();
696 class ScProvider {
697 __internal__Sc;
698 __internal__coder = new RpcCoder();
699 __internal__spec;
700 __internal__sharedSandbox;
701 __internal__subscriptions = new Map();
702 __internal__resubscribeMethods = new Map();
703 __internal__requests = new Map();
704 __internal__wellKnownChains;
705 __internal__eventemitter = new EventEmitter();
706 __internal__chain = null;
707 __internal__isChainReady = false;
708 constructor(Sc, spec, sharedSandbox) {
709 if (!util.isObject(Sc) || !util.isObject(Sc.WellKnownChain) || !util.isFunction(Sc.createScClient)) {
710 throw new Error('Expected an @substrate/connect interface as first parameter to ScProvider');
711 }
712 this.__internal__Sc = Sc;
713 this.__internal__spec = spec;
714 this.__internal__sharedSandbox = sharedSandbox;
715 this.__internal__wellKnownChains = new Set(Object.values(Sc.WellKnownChain));
716 }
717 get hasSubscriptions() {
718 return !!true;
719 }
720 get isClonable() {
721 return !!false;
722 }
723 get isConnected() {
724 return !!this.__internal__chain && this.__internal__isChainReady;
725 }
726 clone() {
727 throw new Error('clone() is not supported.');
728 }
729 async connect(config, checkerFactory = healthChecker) {
730 if (this.isConnected) {
731 throw new Error('Already connected!');
732 }
733 if (this.__internal__chain) {
734 await this.__internal__chain;
735 return;
736 }
737 if (this.__internal__sharedSandbox && !this.__internal__sharedSandbox.isConnected) {
738 await this.__internal__sharedSandbox.connect();
739 }
740 const client = this.__internal__sharedSandbox
741 ? scClients.get(this.__internal__sharedSandbox)
742 : this.__internal__Sc.createScClient(config);
743 if (!client) {
744 throw new Error('Unknown ScProvider!');
745 }
746 scClients.set(this, client);
747 const hc = checkerFactory();
748 const onResponse = (res) => {
749 const hcRes = hc.responsePassThrough(res);
750 if (!hcRes) {
751 return;
752 }
753 const response = JSON.parse(hcRes);
754 let decodedResponse;
755 try {
756 decodedResponse = this.__internal__coder.decodeResponse(response);
757 }
758 catch (e) {
759 decodedResponse = e;
760 }
761 if (response.params?.subscription === undefined || !response.method) {
762 return this.__internal__requests.get(response.id)?.(decodedResponse);
763 }
764 const subscriptionId = `${response.method}::${response.params.subscription}`;
765 const callback = this.__internal__subscriptions.get(subscriptionId)?.[0];
766 callback?.(decodedResponse);
767 };
768 const addChain = this.__internal__sharedSandbox
769 ? (async (...args) => {
770 const source = this.__internal__sharedSandbox;
771 return (await source.__internal__chain).addChain(...args);
772 })
773 : this.__internal__wellKnownChains.has(this.__internal__spec)
774 ? client.addWellKnownChain
775 : client.addChain;
776 this.__internal__chain = addChain(this.__internal__spec, onResponse).then((chain) => {
777 hc.setSendJsonRpc(chain.sendJsonRpc);
778 this.__internal__isChainReady = false;
779 const cleanup = () => {
780 const disconnectionError = new Error('Disconnected');
781 this.__internal__requests.forEach((cb) => cb(disconnectionError));
782 this.__internal__subscriptions.forEach(([cb]) => cb(disconnectionError));
783 this.__internal__subscriptions.clear();
784 };
785 const staleSubscriptions = [];
786 const killStaleSubscriptions = () => {
787 if (staleSubscriptions.length === 0) {
788 return;
789 }
790 const stale = staleSubscriptions.pop();
791 if (!stale) {
792 throw new Error('Unable to get stale subscription');
793 }
794 const { id, unsubscribeMethod } = stale;
795 Promise
796 .race([
797 this.send(unsubscribeMethod, [id]).catch(util.noop),
798 new Promise((resolve) => setTimeout(resolve, 500))
799 ])
800 .then(killStaleSubscriptions)
801 .catch(util.noop);
802 };
803 hc.start((health) => {
804 const isReady = !health.isSyncing && (health.peers > 0 || !health.shouldHavePeers);
805 if (this.__internal__isChainReady === isReady) {
806 return;
807 }
808 this.__internal__isChainReady = isReady;
809 if (!isReady) {
810 [...this.__internal__subscriptions.values()].forEach((s) => {
811 staleSubscriptions.push(s[1]);
812 });
813 cleanup();
814 this.__internal__eventemitter.emit('disconnected');
815 }
816 else {
817 killStaleSubscriptions();
818 this.__internal__eventemitter.emit('connected');
819 if (this.__internal__resubscribeMethods.size) {
820 this.__internal__resubscribe();
821 }
822 }
823 });
824 return util.objectSpread({}, chain, {
825 remove: () => {
826 hc.stop();
827 chain.remove();
828 cleanup();
829 },
830 sendJsonRpc: hc.sendJsonRpc.bind(hc)
831 });
832 });
833 try {
834 await this.__internal__chain;
835 }
836 catch (e) {
837 this.__internal__chain = null;
838 this.__internal__eventemitter.emit('error', e);
839 throw e;
840 }
841 }
842 __internal__resubscribe = () => {
843 const promises = [];
844 this.__internal__resubscribeMethods.forEach((subDetails) => {
845 if (subDetails.type.startsWith('author_')) {
846 return;
847 }
848 try {
849 const promise = new Promise((resolve) => {
850 this.subscribe(subDetails.type, subDetails.method, subDetails.params, subDetails.callback).catch((error) => console.log(error));
851 resolve();
852 });
853 promises.push(promise);
854 }
855 catch (error) {
856 l$6.error(error);
857 }
858 });
859 Promise.all(promises).catch((err) => l$6.log(err));
860 };
861 async disconnect() {
862 if (!this.__internal__chain) {
863 return;
864 }
865 const chain = await this.__internal__chain;
866 this.__internal__chain = null;
867 this.__internal__isChainReady = false;
868 try {
869 chain.remove();
870 }
871 catch (_) { }
872 this.__internal__eventemitter.emit('disconnected');
873 }
874 on(type, sub) {
875 if (type === 'connected' && this.isConnected) {
876 sub();
877 }
878 this.__internal__eventemitter.on(type, sub);
879 return () => {
880 this.__internal__eventemitter.removeListener(type, sub);
881 };
882 }
883 async send(method, params) {
884 if (!this.isConnected || !this.__internal__chain) {
885 throw new Error('Provider is not connected');
886 }
887 const chain = await this.__internal__chain;
888 const [id, json] = this.__internal__coder.encodeJson(method, params);
889 const result = new Promise((resolve, reject) => {
890 this.__internal__requests.set(id, (response) => {
891 (util.isError(response) ? reject : resolve)(response);
892 });
893 try {
894 chain.sendJsonRpc(json);
895 }
896 catch (e) {
897 this.__internal__chain = null;
898 try {
899 chain.remove();
900 }
901 catch (_) { }
902 this.__internal__eventemitter.emit('error', e);
903 }
904 });
905 try {
906 return await result;
907 }
908 finally {
909 this.__internal__requests.delete(id);
910 }
911 }
912 async subscribe(type, method, params, callback) {
913 if (!subscriptionUnsubscriptionMethods.has(method)) {
914 throw new Error(`Unsupported subscribe method: ${method}`);
915 }
916 const id = await this.send(method, params);
917 const subscriptionId = `${type}::${id}`;
918 const cb = (response) => {
919 if (response instanceof Error) {
920 callback(response, undefined);
921 }
922 else {
923 callback(null, response);
924 }
925 };
926 const unsubscribeMethod = subscriptionUnsubscriptionMethods.get(method);
927 if (!unsubscribeMethod) {
928 throw new Error('Invalid unsubscribe method found');
929 }
930 this.__internal__resubscribeMethods.set(subscriptionId, { callback, method, params, type });
931 this.__internal__subscriptions.set(subscriptionId, [cb, { id, unsubscribeMethod }]);
932 return id;
933 }
934 unsubscribe(type, method, id) {
935 if (!this.isConnected) {
936 throw new Error('Provider is not connected');
937 }
938 const subscriptionId = `${type}::${id}`;
939 if (!this.__internal__subscriptions.has(subscriptionId)) {
940 return Promise.reject(new Error(`Unable to find active subscription=${subscriptionId}`));
941 }
942 this.__internal__resubscribeMethods.delete(subscriptionId);
943 this.__internal__subscriptions.delete(subscriptionId);
944 return this.send(method, [id]);
945 }
946 }
947
948 const WebSocket = xglobal.WebSocket;
949
950 const known = {
951 1000: 'Normal Closure',
952 1001: 'Going Away',
953 1002: 'Protocol Error',
954 1003: 'Unsupported Data',
955 1004: '(For future)',
956 1005: 'No Status Received',
957 1006: 'Abnormal Closure',
958 1007: 'Invalid frame payload data',
959 1008: 'Policy Violation',
960 1009: 'Message too big',
961 1010: 'Missing Extension',
962 1011: 'Internal Error',
963 1012: 'Service Restart',
964 1013: 'Try Again Later',
965 1014: 'Bad Gateway',
966 1015: 'TLS Handshake'
967 };
968 function getWSErrorString(code) {
969 if (code >= 0 && code <= 999) {
970 return '(Unused)';
971 }
972 else if (code >= 1016) {
973 if (code <= 1999) {
974 return '(For WebSocket standard)';
975 }
976 else if (code <= 2999) {
977 return '(For WebSocket extensions)';
978 }
979 else if (code <= 3999) {
980 return '(For libraries and frameworks)';
981 }
982 else if (code <= 4999) {
983 return '(For applications)';
984 }
985 }
986 return known[code] || '(Unknown)';
987 }
988
989 const ALIASES = {
990 chain_finalisedHead: 'chain_finalizedHead',
991 chain_subscribeFinalisedHeads: 'chain_subscribeFinalizedHeads',
992 chain_unsubscribeFinalisedHeads: 'chain_unsubscribeFinalizedHeads'
993 };
994 const RETRY_DELAY = 2500;
995 const DEFAULT_TIMEOUT_MS = 60 * 1000;
996 const TIMEOUT_INTERVAL = 5000;
997 const l$5 = util.logger('api-ws');
998 function eraseRecord(record, cb) {
999 Object.keys(record).forEach((key) => {
1000 if (cb) {
1001 cb(record[key]);
1002 }
1003 delete record[key];
1004 });
1005 }
1006 function defaultEndpointStats() {
1007 return { bytesRecv: 0, bytesSent: 0, cached: 0, errors: 0, requests: 0, subscriptions: 0, timeout: 0 };
1008 }
1009 class WsProvider {
1010 __internal__callCache;
1011 __internal__coder;
1012 __internal__endpoints;
1013 __internal__headers;
1014 __internal__eventemitter;
1015 __internal__handlers = {};
1016 __internal__isReadyPromise;
1017 __internal__stats;
1018 __internal__waitingForId = {};
1019 __internal__autoConnectMs;
1020 __internal__endpointIndex;
1021 __internal__endpointStats;
1022 __internal__isConnected = false;
1023 __internal__subscriptions = {};
1024 __internal__timeoutId = null;
1025 __internal__websocket;
1026 __internal__timeout;
1027 constructor(endpoint = defaults.WS_URL, autoConnectMs = RETRY_DELAY, headers = {}, timeout, cacheCapacity) {
1028 const endpoints = Array.isArray(endpoint)
1029 ? endpoint
1030 : [endpoint];
1031 if (endpoints.length === 0) {
1032 throw new Error('WsProvider requires at least one Endpoint');
1033 }
1034 endpoints.forEach((endpoint) => {
1035 if (!/^(wss|ws):\/\//.test(endpoint)) {
1036 throw new Error(`Endpoint should start with 'ws://', received '${endpoint}'`);
1037 }
1038 });
1039 this.__internal__callCache = new LRUCache(cacheCapacity || DEFAULT_CAPACITY);
1040 this.__internal__eventemitter = new EventEmitter();
1041 this.__internal__autoConnectMs = autoConnectMs || 0;
1042 this.__internal__coder = new RpcCoder();
1043 this.__internal__endpointIndex = -1;
1044 this.__internal__endpoints = endpoints;
1045 this.__internal__headers = headers;
1046 this.__internal__websocket = null;
1047 this.__internal__stats = {
1048 active: { requests: 0, subscriptions: 0 },
1049 total: defaultEndpointStats()
1050 };
1051 this.__internal__endpointStats = defaultEndpointStats();
1052 this.__internal__timeout = timeout || DEFAULT_TIMEOUT_MS;
1053 if (autoConnectMs && autoConnectMs > 0) {
1054 this.connectWithRetry().catch(util.noop);
1055 }
1056 this.__internal__isReadyPromise = new Promise((resolve) => {
1057 this.__internal__eventemitter.once('connected', () => {
1058 resolve(this);
1059 });
1060 });
1061 }
1062 get hasSubscriptions() {
1063 return !!true;
1064 }
1065 get isClonable() {
1066 return !!true;
1067 }
1068 get isConnected() {
1069 return this.__internal__isConnected;
1070 }
1071 get isReady() {
1072 return this.__internal__isReadyPromise;
1073 }
1074 get endpoint() {
1075 return this.__internal__endpoints[this.__internal__endpointIndex];
1076 }
1077 clone() {
1078 return new WsProvider(this.__internal__endpoints);
1079 }
1080 selectEndpointIndex(endpoints) {
1081 return (this.__internal__endpointIndex + 1) % endpoints.length;
1082 }
1083 async connect() {
1084 if (this.__internal__websocket) {
1085 throw new Error('WebSocket is already connected');
1086 }
1087 try {
1088 this.__internal__endpointIndex = this.selectEndpointIndex(this.__internal__endpoints);
1089 this.__internal__websocket = typeof xglobal.WebSocket !== 'undefined' && util.isChildClass(xglobal.WebSocket, WebSocket)
1090 ? new WebSocket(this.endpoint)
1091 : new WebSocket(this.endpoint, undefined, {
1092 headers: this.__internal__headers
1093 });
1094 if (this.__internal__websocket) {
1095 this.__internal__websocket.onclose = this.__internal__onSocketClose;
1096 this.__internal__websocket.onerror = this.__internal__onSocketError;
1097 this.__internal__websocket.onmessage = this.__internal__onSocketMessage;
1098 this.__internal__websocket.onopen = this.__internal__onSocketOpen;
1099 }
1100 this.__internal__timeoutId = setInterval(() => this.__internal__timeoutHandlers(), TIMEOUT_INTERVAL);
1101 }
1102 catch (error) {
1103 l$5.error(error);
1104 this.__internal__emit('error', error);
1105 throw error;
1106 }
1107 }
1108 async connectWithRetry() {
1109 if (this.__internal__autoConnectMs > 0) {
1110 try {
1111 await this.connect();
1112 }
1113 catch {
1114 setTimeout(() => {
1115 this.connectWithRetry().catch(util.noop);
1116 }, this.__internal__autoConnectMs);
1117 }
1118 }
1119 }
1120 async disconnect() {
1121 this.__internal__autoConnectMs = 0;
1122 try {
1123 if (this.__internal__websocket) {
1124 this.__internal__websocket.close(1000);
1125 }
1126 }
1127 catch (error) {
1128 l$5.error(error);
1129 this.__internal__emit('error', error);
1130 throw error;
1131 }
1132 }
1133 get stats() {
1134 return {
1135 active: {
1136 requests: Object.keys(this.__internal__handlers).length,
1137 subscriptions: Object.keys(this.__internal__subscriptions).length
1138 },
1139 total: this.__internal__stats.total
1140 };
1141 }
1142 get endpointStats() {
1143 return this.__internal__endpointStats;
1144 }
1145 on(type, sub) {
1146 this.__internal__eventemitter.on(type, sub);
1147 return () => {
1148 this.__internal__eventemitter.removeListener(type, sub);
1149 };
1150 }
1151 send(method, params, isCacheable, subscription) {
1152 this.__internal__endpointStats.requests++;
1153 this.__internal__stats.total.requests++;
1154 const [id, body] = this.__internal__coder.encodeJson(method, params);
1155 const cacheKey = isCacheable ? `${method}::${util.stringify(params)}` : '';
1156 let resultPromise = isCacheable
1157 ? this.__internal__callCache.get(cacheKey)
1158 : null;
1159 if (!resultPromise) {
1160 resultPromise = this.__internal__send(id, body, method, params, subscription);
1161 if (isCacheable) {
1162 this.__internal__callCache.set(cacheKey, resultPromise);
1163 }
1164 }
1165 else {
1166 this.__internal__endpointStats.cached++;
1167 this.__internal__stats.total.cached++;
1168 }
1169 return resultPromise;
1170 }
1171 async __internal__send(id, body, method, params, subscription) {
1172 return new Promise((resolve, reject) => {
1173 try {
1174 if (!this.isConnected || this.__internal__websocket === null) {
1175 throw new Error('WebSocket is not connected');
1176 }
1177 const callback = (error, result) => {
1178 error
1179 ? reject(error)
1180 : resolve(result);
1181 };
1182 l$5.debug(() => ['calling', method, body]);
1183 this.__internal__handlers[id] = {
1184 callback,
1185 method,
1186 params,
1187 start: Date.now(),
1188 subscription
1189 };
1190 const bytesSent = body.length;
1191 this.__internal__endpointStats.bytesSent += bytesSent;
1192 this.__internal__stats.total.bytesSent += bytesSent;
1193 this.__internal__websocket.send(body);
1194 }
1195 catch (error) {
1196 this.__internal__endpointStats.errors++;
1197 this.__internal__stats.total.errors++;
1198 reject(error);
1199 }
1200 });
1201 }
1202 subscribe(type, method, params, callback) {
1203 this.__internal__endpointStats.subscriptions++;
1204 this.__internal__stats.total.subscriptions++;
1205 return this.send(method, params, false, { callback, type });
1206 }
1207 async unsubscribe(type, method, id) {
1208 const subscription = `${type}::${id}`;
1209 if (util.isUndefined(this.__internal__subscriptions[subscription])) {
1210 l$5.debug(() => `Unable to find active subscription=${subscription}`);
1211 return false;
1212 }
1213 delete this.__internal__subscriptions[subscription];
1214 try {
1215 return this.isConnected && !util.isNull(this.__internal__websocket)
1216 ? this.send(method, [id])
1217 : true;
1218 }
1219 catch {
1220 return false;
1221 }
1222 }
1223 __internal__emit = (type, ...args) => {
1224 this.__internal__eventemitter.emit(type, ...args);
1225 };
1226 __internal__onSocketClose = (event) => {
1227 const error = new Error(`disconnected from ${this.endpoint}: ${event.code}:: ${event.reason || getWSErrorString(event.code)}`);
1228 if (this.__internal__autoConnectMs > 0) {
1229 l$5.error(error.message);
1230 }
1231 this.__internal__isConnected = false;
1232 if (this.__internal__websocket) {
1233 this.__internal__websocket.onclose = null;
1234 this.__internal__websocket.onerror = null;
1235 this.__internal__websocket.onmessage = null;
1236 this.__internal__websocket.onopen = null;
1237 this.__internal__websocket = null;
1238 }
1239 if (this.__internal__timeoutId) {
1240 clearInterval(this.__internal__timeoutId);
1241 this.__internal__timeoutId = null;
1242 }
1243 eraseRecord(this.__internal__handlers, (h) => {
1244 try {
1245 h.callback(error, undefined);
1246 }
1247 catch (err) {
1248 l$5.error(err);
1249 }
1250 });
1251 eraseRecord(this.__internal__waitingForId);
1252 this.__internal__endpointStats = defaultEndpointStats();
1253 this.__internal__emit('disconnected');
1254 if (this.__internal__autoConnectMs > 0) {
1255 setTimeout(() => {
1256 this.connectWithRetry().catch(util.noop);
1257 }, this.__internal__autoConnectMs);
1258 }
1259 };
1260 __internal__onSocketError = (error) => {
1261 l$5.debug(() => ['socket error', error]);
1262 this.__internal__emit('error', error);
1263 };
1264 __internal__onSocketMessage = (message) => {
1265 l$5.debug(() => ['received', message.data]);
1266 const bytesRecv = message.data.length;
1267 this.__internal__endpointStats.bytesRecv += bytesRecv;
1268 this.__internal__stats.total.bytesRecv += bytesRecv;
1269 const response = JSON.parse(message.data);
1270 return util.isUndefined(response.method)
1271 ? this.__internal__onSocketMessageResult(response)
1272 : this.__internal__onSocketMessageSubscribe(response);
1273 };
1274 __internal__onSocketMessageResult = (response) => {
1275 const handler = this.__internal__handlers[response.id];
1276 if (!handler) {
1277 l$5.debug(() => `Unable to find handler for id=${response.id}`);
1278 return;
1279 }
1280 try {
1281 const { method, params, subscription } = handler;
1282 const result = this.__internal__coder.decodeResponse(response);
1283 handler.callback(null, result);
1284 if (subscription) {
1285 const subId = `${subscription.type}::${result}`;
1286 this.__internal__subscriptions[subId] = util.objectSpread({}, subscription, {
1287 method,
1288 params
1289 });
1290 if (this.__internal__waitingForId[subId]) {
1291 this.__internal__onSocketMessageSubscribe(this.__internal__waitingForId[subId]);
1292 }
1293 }
1294 }
1295 catch (error) {
1296 this.__internal__endpointStats.errors++;
1297 this.__internal__stats.total.errors++;
1298 handler.callback(error, undefined);
1299 }
1300 delete this.__internal__handlers[response.id];
1301 };
1302 __internal__onSocketMessageSubscribe = (response) => {
1303 if (!response.method) {
1304 throw new Error('No method found in JSONRPC response');
1305 }
1306 const method = ALIASES[response.method] || response.method;
1307 const subId = `${method}::${response.params.subscription}`;
1308 const handler = this.__internal__subscriptions[subId];
1309 if (!handler) {
1310 this.__internal__waitingForId[subId] = response;
1311 l$5.debug(() => `Unable to find handler for subscription=${subId}`);
1312 return;
1313 }
1314 delete this.__internal__waitingForId[subId];
1315 try {
1316 const result = this.__internal__coder.decodeResponse(response);
1317 handler.callback(null, result);
1318 }
1319 catch (error) {
1320 this.__internal__endpointStats.errors++;
1321 this.__internal__stats.total.errors++;
1322 handler.callback(error, undefined);
1323 }
1324 };
1325 __internal__onSocketOpen = () => {
1326 if (this.__internal__websocket === null) {
1327 throw new Error('WebSocket cannot be null in onOpen');
1328 }
1329 l$5.debug(() => ['connected to', this.endpoint]);
1330 this.__internal__isConnected = true;
1331 this.__internal__resubscribe();
1332 this.__internal__emit('connected');
1333 return true;
1334 };
1335 __internal__resubscribe = () => {
1336 const subscriptions = this.__internal__subscriptions;
1337 this.__internal__subscriptions = {};
1338 Promise.all(Object.keys(subscriptions).map(async (id) => {
1339 const { callback, method, params, type } = subscriptions[id];
1340 if (type.startsWith('author_')) {
1341 return;
1342 }
1343 try {
1344 await this.subscribe(type, method, params, callback);
1345 }
1346 catch (error) {
1347 l$5.error(error);
1348 }
1349 })).catch(l$5.error);
1350 };
1351 __internal__timeoutHandlers = () => {
1352 const now = Date.now();
1353 const ids = Object.keys(this.__internal__handlers);
1354 for (let i = 0, count = ids.length; i < count; i++) {
1355 const handler = this.__internal__handlers[ids[i]];
1356 if ((now - handler.start) > this.__internal__timeout) {
1357 try {
1358 handler.callback(new Error(`No response received from RPC endpoint in ${this.__internal__timeout / 1000}s`), undefined);
1359 }
1360 catch {
1361 }
1362 this.__internal__endpointStats.timeout++;
1363 this.__internal__stats.total.timeout++;
1364 delete this.__internal__handlers[ids[i]];
1365 }
1366 }
1367 };
1368 }
1369
1370 const packageInfo = { name: '@polkadot/api', path: (({ url: (typeof document === 'undefined' && typeof location === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : typeof document === 'undefined' ? location.href : (_documentCurrentScript && _documentCurrentScript.src || new URL('bundle-polkadot-api.js', document.baseURI).href)) }) && (typeof document === 'undefined' && typeof location === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : typeof document === 'undefined' ? location.href : (_documentCurrentScript && _documentCurrentScript.src || new URL('bundle-polkadot-api.js', document.baseURI).href))) ? new URL((typeof document === 'undefined' && typeof location === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : typeof document === 'undefined' ? location.href : (_documentCurrentScript && _documentCurrentScript.src || new URL('bundle-polkadot-api.js', document.baseURI).href))).pathname.substring(0, new URL((typeof document === 'undefined' && typeof location === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : typeof document === 'undefined' ? location.href : (_documentCurrentScript && _documentCurrentScript.src || new URL('bundle-polkadot-api.js', document.baseURI).href))).pathname.lastIndexOf('/') + 1) : 'auto', type: 'esm', version: '11.3.1' };
1371
1372 var extendStatics = function(d, b) {
1373 extendStatics = Object.setPrototypeOf ||
1374 ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
1375 function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
1376 return extendStatics(d, b);
1377 };
1378 function __extends(d, b) {
1379 if (typeof b !== "function" && b !== null)
1380 throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
1381 extendStatics(d, b);
1382 function __() { this.constructor = d; }
1383 d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
1384 }
1385 function __awaiter(thisArg, _arguments, P, generator) {
1386 function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
1387 return new (P || (P = Promise))(function (resolve, reject) {
1388 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
1389 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
1390 function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
1391 step((generator = generator.apply(thisArg, _arguments || [])).next());
1392 });
1393 }
1394 function __generator(thisArg, body) {
1395 var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
1396 return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
1397 function verb(n) { return function (v) { return step([n, v]); }; }
1398 function step(op) {
1399 if (f) throw new TypeError("Generator is already executing.");
1400 while (g && (g = 0, op[0] && (_ = 0)), _) try {
1401 if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
1402 if (y = 0, t) op = [op[0] & 2, t.value];
1403 switch (op[0]) {
1404 case 0: case 1: t = op; break;
1405 case 4: _.label++; return { value: op[1], done: false };
1406 case 5: _.label++; y = op[1]; op = [0]; continue;
1407 case 7: op = _.ops.pop(); _.trys.pop(); continue;
1408 default:
1409 if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
1410 if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
1411 if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
1412 if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
1413 if (t[2]) _.ops.pop();
1414 _.trys.pop(); continue;
1415 }
1416 op = body.call(thisArg, _);
1417 } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
1418 if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
1419 }
1420 }
1421 function __values(o) {
1422 var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
1423 if (m) return m.call(o);
1424 if (o && typeof o.length === "number") return {
1425 next: function () {
1426 if (o && i >= o.length) o = void 0;
1427 return { value: o && o[i++], done: !o };
1428 }
1429 };
1430 throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
1431 }
1432 function __read(o, n) {
1433 var m = typeof Symbol === "function" && o[Symbol.iterator];
1434 if (!m) return o;
1435 var i = m.call(o), r, ar = [], e;
1436 try {
1437 while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
1438 }
1439 catch (error) { e = { error: error }; }
1440 finally {
1441 try {
1442 if (r && !r.done && (m = i["return"])) m.call(i);
1443 }
1444 finally { if (e) throw e.error; }
1445 }
1446 return ar;
1447 }
1448 function __spreadArray(to, from, pack) {
1449 if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
1450 if (ar || !(i in from)) {
1451 if (!ar) ar = Array.prototype.slice.call(from, 0, i);
1452 ar[i] = from[i];
1453 }
1454 }
1455 return to.concat(ar || Array.prototype.slice.call(from));
1456 }
1457 function __await(v) {
1458 return this instanceof __await ? (this.v = v, this) : new __await(v);
1459 }
1460 function __asyncGenerator(thisArg, _arguments, generator) {
1461 if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
1462 var g = generator.apply(thisArg, _arguments || []), i, q = [];
1463 return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
1464 function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
1465 function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
1466 function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
1467 function fulfill(value) { resume("next", value); }
1468 function reject(value) { resume("throw", value); }
1469 function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
1470 }
1471 function __asyncValues(o) {
1472 if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
1473 var m = o[Symbol.asyncIterator], i;
1474 return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
1475 function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
1476 function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
1477 }
1478 typeof SuppressedError === "function" ? SuppressedError : function (error, suppressed, message) {
1479 var e = new Error(message);
1480 return e.name = "SuppressedError", e.error = error, e.suppressed = suppressed, e;
1481 };
1482
1483 function isFunction(value) {
1484 return typeof value === 'function';
1485 }
1486
1487 function createErrorClass(createImpl) {
1488 var _super = function (instance) {
1489 Error.call(instance);
1490 instance.stack = new Error().stack;
1491 };
1492 var ctorFunc = createImpl(_super);
1493 ctorFunc.prototype = Object.create(Error.prototype);
1494 ctorFunc.prototype.constructor = ctorFunc;
1495 return ctorFunc;
1496 }
1497
1498 var UnsubscriptionError = createErrorClass(function (_super) {
1499 return function UnsubscriptionErrorImpl(errors) {
1500 _super(this);
1501 this.message = errors
1502 ? errors.length + " errors occurred during unsubscription:\n" + errors.map(function (err, i) { return i + 1 + ") " + err.toString(); }).join('\n ')
1503 : '';
1504 this.name = 'UnsubscriptionError';
1505 this.errors = errors;
1506 };
1507 });
1508
1509 function arrRemove(arr, item) {
1510 if (arr) {
1511 var index = arr.indexOf(item);
1512 0 <= index && arr.splice(index, 1);
1513 }
1514 }
1515
1516 var Subscription = (function () {
1517 function Subscription(initialTeardown) {
1518 this.initialTeardown = initialTeardown;
1519 this.closed = false;
1520 this._parentage = null;
1521 this._finalizers = null;
1522 }
1523 Subscription.prototype.unsubscribe = function () {
1524 var e_1, _a, e_2, _b;
1525 var errors;
1526 if (!this.closed) {
1527 this.closed = true;
1528 var _parentage = this._parentage;
1529 if (_parentage) {
1530 this._parentage = null;
1531 if (Array.isArray(_parentage)) {
1532 try {
1533 for (var _parentage_1 = __values(_parentage), _parentage_1_1 = _parentage_1.next(); !_parentage_1_1.done; _parentage_1_1 = _parentage_1.next()) {
1534 var parent_1 = _parentage_1_1.value;
1535 parent_1.remove(this);
1536 }
1537 }
1538 catch (e_1_1) { e_1 = { error: e_1_1 }; }
1539 finally {
1540 try {
1541 if (_parentage_1_1 && !_parentage_1_1.done && (_a = _parentage_1.return)) _a.call(_parentage_1);
1542 }
1543 finally { if (e_1) throw e_1.error; }
1544 }
1545 }
1546 else {
1547 _parentage.remove(this);
1548 }
1549 }
1550 var initialFinalizer = this.initialTeardown;
1551 if (isFunction(initialFinalizer)) {
1552 try {
1553 initialFinalizer();
1554 }
1555 catch (e) {
1556 errors = e instanceof UnsubscriptionError ? e.errors : [e];
1557 }
1558 }
1559 var _finalizers = this._finalizers;
1560 if (_finalizers) {
1561 this._finalizers = null;
1562 try {
1563 for (var _finalizers_1 = __values(_finalizers), _finalizers_1_1 = _finalizers_1.next(); !_finalizers_1_1.done; _finalizers_1_1 = _finalizers_1.next()) {
1564 var finalizer = _finalizers_1_1.value;
1565 try {
1566 execFinalizer(finalizer);
1567 }
1568 catch (err) {
1569 errors = errors !== null && errors !== void 0 ? errors : [];
1570 if (err instanceof UnsubscriptionError) {
1571 errors = __spreadArray(__spreadArray([], __read(errors)), __read(err.errors));
1572 }
1573 else {
1574 errors.push(err);
1575 }
1576 }
1577 }
1578 }
1579 catch (e_2_1) { e_2 = { error: e_2_1 }; }
1580 finally {
1581 try {
1582 if (_finalizers_1_1 && !_finalizers_1_1.done && (_b = _finalizers_1.return)) _b.call(_finalizers_1);
1583 }
1584 finally { if (e_2) throw e_2.error; }
1585 }
1586 }
1587 if (errors) {
1588 throw new UnsubscriptionError(errors);
1589 }
1590 }
1591 };
1592 Subscription.prototype.add = function (teardown) {
1593 var _a;
1594 if (teardown && teardown !== this) {
1595 if (this.closed) {
1596 execFinalizer(teardown);
1597 }
1598 else {
1599 if (teardown instanceof Subscription) {
1600 if (teardown.closed || teardown._hasParent(this)) {
1601 return;
1602 }
1603 teardown._addParent(this);
1604 }
1605 (this._finalizers = (_a = this._finalizers) !== null && _a !== void 0 ? _a : []).push(teardown);
1606 }
1607 }
1608 };
1609 Subscription.prototype._hasParent = function (parent) {
1610 var _parentage = this._parentage;
1611 return _parentage === parent || (Array.isArray(_parentage) && _parentage.includes(parent));
1612 };
1613 Subscription.prototype._addParent = function (parent) {
1614 var _parentage = this._parentage;
1615 this._parentage = Array.isArray(_parentage) ? (_parentage.push(parent), _parentage) : _parentage ? [_parentage, parent] : parent;
1616 };
1617 Subscription.prototype._removeParent = function (parent) {
1618 var _parentage = this._parentage;
1619 if (_parentage === parent) {
1620 this._parentage = null;
1621 }
1622 else if (Array.isArray(_parentage)) {
1623 arrRemove(_parentage, parent);
1624 }
1625 };
1626 Subscription.prototype.remove = function (teardown) {
1627 var _finalizers = this._finalizers;
1628 _finalizers && arrRemove(_finalizers, teardown);
1629 if (teardown instanceof Subscription) {
1630 teardown._removeParent(this);
1631 }
1632 };
1633 Subscription.EMPTY = (function () {
1634 var empty = new Subscription();
1635 empty.closed = true;
1636 return empty;
1637 })();
1638 return Subscription;
1639 }());
1640 var EMPTY_SUBSCRIPTION = Subscription.EMPTY;
1641 function isSubscription(value) {
1642 return (value instanceof Subscription ||
1643 (value && 'closed' in value && isFunction(value.remove) && isFunction(value.add) && isFunction(value.unsubscribe)));
1644 }
1645 function execFinalizer(finalizer) {
1646 if (isFunction(finalizer)) {
1647 finalizer();
1648 }
1649 else {
1650 finalizer.unsubscribe();
1651 }
1652 }
1653
1654 var config = {
1655 onUnhandledError: null,
1656 onStoppedNotification: null,
1657 Promise: undefined,
1658 useDeprecatedSynchronousErrorHandling: false,
1659 useDeprecatedNextContext: false,
1660 };
1661
1662 var timeoutProvider = {
1663 setTimeout: function (handler, timeout) {
1664 var args = [];
1665 for (var _i = 2; _i < arguments.length; _i++) {
1666 args[_i - 2] = arguments[_i];
1667 }
1668 return setTimeout.apply(void 0, __spreadArray([handler, timeout], __read(args)));
1669 },
1670 clearTimeout: function (handle) {
1671 var delegate = timeoutProvider.delegate;
1672 return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearTimeout) || clearTimeout)(handle);
1673 },
1674 delegate: undefined,
1675 };
1676
1677 function reportUnhandledError(err) {
1678 timeoutProvider.setTimeout(function () {
1679 {
1680 throw err;
1681 }
1682 });
1683 }
1684
1685 function noop() { }
1686
1687 function errorContext(cb) {
1688 {
1689 cb();
1690 }
1691 }
1692
1693 var Subscriber = (function (_super) {
1694 __extends(Subscriber, _super);
1695 function Subscriber(destination) {
1696 var _this = _super.call(this) || this;
1697 _this.isStopped = false;
1698 if (destination) {
1699 _this.destination = destination;
1700 if (isSubscription(destination)) {
1701 destination.add(_this);
1702 }
1703 }
1704 else {
1705 _this.destination = EMPTY_OBSERVER;
1706 }
1707 return _this;
1708 }
1709 Subscriber.create = function (next, error, complete) {
1710 return new SafeSubscriber(next, error, complete);
1711 };
1712 Subscriber.prototype.next = function (value) {
1713 if (this.isStopped) ;
1714 else {
1715 this._next(value);
1716 }
1717 };
1718 Subscriber.prototype.error = function (err) {
1719 if (this.isStopped) ;
1720 else {
1721 this.isStopped = true;
1722 this._error(err);
1723 }
1724 };
1725 Subscriber.prototype.complete = function () {
1726 if (this.isStopped) ;
1727 else {
1728 this.isStopped = true;
1729 this._complete();
1730 }
1731 };
1732 Subscriber.prototype.unsubscribe = function () {
1733 if (!this.closed) {
1734 this.isStopped = true;
1735 _super.prototype.unsubscribe.call(this);
1736 this.destination = null;
1737 }
1738 };
1739 Subscriber.prototype._next = function (value) {
1740 this.destination.next(value);
1741 };
1742 Subscriber.prototype._error = function (err) {
1743 try {
1744 this.destination.error(err);
1745 }
1746 finally {
1747 this.unsubscribe();
1748 }
1749 };
1750 Subscriber.prototype._complete = function () {
1751 try {
1752 this.destination.complete();
1753 }
1754 finally {
1755 this.unsubscribe();
1756 }
1757 };
1758 return Subscriber;
1759 }(Subscription));
1760 var _bind = Function.prototype.bind;
1761 function bind(fn, thisArg) {
1762 return _bind.call(fn, thisArg);
1763 }
1764 var ConsumerObserver = (function () {
1765 function ConsumerObserver(partialObserver) {
1766 this.partialObserver = partialObserver;
1767 }
1768 ConsumerObserver.prototype.next = function (value) {
1769 var partialObserver = this.partialObserver;
1770 if (partialObserver.next) {
1771 try {
1772 partialObserver.next(value);
1773 }
1774 catch (error) {
1775 handleUnhandledError(error);
1776 }
1777 }
1778 };
1779 ConsumerObserver.prototype.error = function (err) {
1780 var partialObserver = this.partialObserver;
1781 if (partialObserver.error) {
1782 try {
1783 partialObserver.error(err);
1784 }
1785 catch (error) {
1786 handleUnhandledError(error);
1787 }
1788 }
1789 else {
1790 handleUnhandledError(err);
1791 }
1792 };
1793 ConsumerObserver.prototype.complete = function () {
1794 var partialObserver = this.partialObserver;
1795 if (partialObserver.complete) {
1796 try {
1797 partialObserver.complete();
1798 }
1799 catch (error) {
1800 handleUnhandledError(error);
1801 }
1802 }
1803 };
1804 return ConsumerObserver;
1805 }());
1806 var SafeSubscriber = (function (_super) {
1807 __extends(SafeSubscriber, _super);
1808 function SafeSubscriber(observerOrNext, error, complete) {
1809 var _this = _super.call(this) || this;
1810 var partialObserver;
1811 if (isFunction(observerOrNext) || !observerOrNext) {
1812 partialObserver = {
1813 next: (observerOrNext !== null && observerOrNext !== void 0 ? observerOrNext : undefined),
1814 error: error !== null && error !== void 0 ? error : undefined,
1815 complete: complete !== null && complete !== void 0 ? complete : undefined,
1816 };
1817 }
1818 else {
1819 var context_1;
1820 if (_this && config.useDeprecatedNextContext) {
1821 context_1 = Object.create(observerOrNext);
1822 context_1.unsubscribe = function () { return _this.unsubscribe(); };
1823 partialObserver = {
1824 next: observerOrNext.next && bind(observerOrNext.next, context_1),
1825 error: observerOrNext.error && bind(observerOrNext.error, context_1),
1826 complete: observerOrNext.complete && bind(observerOrNext.complete, context_1),
1827 };
1828 }
1829 else {
1830 partialObserver = observerOrNext;
1831 }
1832 }
1833 _this.destination = new ConsumerObserver(partialObserver);
1834 return _this;
1835 }
1836 return SafeSubscriber;
1837 }(Subscriber));
1838 function handleUnhandledError(error) {
1839 {
1840 reportUnhandledError(error);
1841 }
1842 }
1843 function defaultErrorHandler(err) {
1844 throw err;
1845 }
1846 var EMPTY_OBSERVER = {
1847 closed: true,
1848 next: noop,
1849 error: defaultErrorHandler,
1850 complete: noop,
1851 };
1852
1853 var observable = (function () { return (typeof Symbol === 'function' && Symbol.observable) || '@@observable'; })();
1854
1855 function identity$1(x) {
1856 return x;
1857 }
1858
1859 function pipeFromArray(fns) {
1860 if (fns.length === 0) {
1861 return identity$1;
1862 }
1863 if (fns.length === 1) {
1864 return fns[0];
1865 }
1866 return function piped(input) {
1867 return fns.reduce(function (prev, fn) { return fn(prev); }, input);
1868 };
1869 }
1870
1871 var Observable = (function () {
1872 function Observable(subscribe) {
1873 if (subscribe) {
1874 this._subscribe = subscribe;
1875 }
1876 }
1877 Observable.prototype.lift = function (operator) {
1878 var observable = new Observable();
1879 observable.source = this;
1880 observable.operator = operator;
1881 return observable;
1882 };
1883 Observable.prototype.subscribe = function (observerOrNext, error, complete) {
1884 var _this = this;
1885 var subscriber = isSubscriber(observerOrNext) ? observerOrNext : new SafeSubscriber(observerOrNext, error, complete);
1886 errorContext(function () {
1887 var _a = _this, operator = _a.operator, source = _a.source;
1888 subscriber.add(operator
1889 ?
1890 operator.call(subscriber, source)
1891 : source
1892 ?
1893 _this._subscribe(subscriber)
1894 :
1895 _this._trySubscribe(subscriber));
1896 });
1897 return subscriber;
1898 };
1899 Observable.prototype._trySubscribe = function (sink) {
1900 try {
1901 return this._subscribe(sink);
1902 }
1903 catch (err) {
1904 sink.error(err);
1905 }
1906 };
1907 Observable.prototype.forEach = function (next, promiseCtor) {
1908 var _this = this;
1909 promiseCtor = getPromiseCtor(promiseCtor);
1910 return new promiseCtor(function (resolve, reject) {
1911 var subscriber = new SafeSubscriber({
1912 next: function (value) {
1913 try {
1914 next(value);
1915 }
1916 catch (err) {
1917 reject(err);
1918 subscriber.unsubscribe();
1919 }
1920 },
1921 error: reject,
1922 complete: resolve,
1923 });
1924 _this.subscribe(subscriber);
1925 });
1926 };
1927 Observable.prototype._subscribe = function (subscriber) {
1928 var _a;
1929 return (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber);
1930 };
1931 Observable.prototype[observable] = function () {
1932 return this;
1933 };
1934 Observable.prototype.pipe = function () {
1935 var operations = [];
1936 for (var _i = 0; _i < arguments.length; _i++) {
1937 operations[_i] = arguments[_i];
1938 }
1939 return pipeFromArray(operations)(this);
1940 };
1941 Observable.prototype.toPromise = function (promiseCtor) {
1942 var _this = this;
1943 promiseCtor = getPromiseCtor(promiseCtor);
1944 return new promiseCtor(function (resolve, reject) {
1945 var value;
1946 _this.subscribe(function (x) { return (value = x); }, function (err) { return reject(err); }, function () { return resolve(value); });
1947 });
1948 };
1949 Observable.create = function (subscribe) {
1950 return new Observable(subscribe);
1951 };
1952 return Observable;
1953 }());
1954 function getPromiseCtor(promiseCtor) {
1955 var _a;
1956 return (_a = promiseCtor !== null && promiseCtor !== void 0 ? promiseCtor : config.Promise) !== null && _a !== void 0 ? _a : Promise;
1957 }
1958 function isObserver(value) {
1959 return value && isFunction(value.next) && isFunction(value.error) && isFunction(value.complete);
1960 }
1961 function isSubscriber(value) {
1962 return (value && value instanceof Subscriber) || (isObserver(value) && isSubscription(value));
1963 }
1964
1965 function hasLift(source) {
1966 return isFunction(source === null || source === void 0 ? void 0 : source.lift);
1967 }
1968 function operate(init) {
1969 return function (source) {
1970 if (hasLift(source)) {
1971 return source.lift(function (liftedSource) {
1972 try {
1973 return init(liftedSource, this);
1974 }
1975 catch (err) {
1976 this.error(err);
1977 }
1978 });
1979 }
1980 throw new TypeError('Unable to lift unknown Observable type');
1981 };
1982 }
1983
1984 function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {
1985 return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);
1986 }
1987 var OperatorSubscriber = (function (_super) {
1988 __extends(OperatorSubscriber, _super);
1989 function OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {
1990 var _this = _super.call(this, destination) || this;
1991 _this.onFinalize = onFinalize;
1992 _this.shouldUnsubscribe = shouldUnsubscribe;
1993 _this._next = onNext
1994 ? function (value) {
1995 try {
1996 onNext(value);
1997 }
1998 catch (err) {
1999 destination.error(err);
2000 }
2001 }
2002 : _super.prototype._next;
2003 _this._error = onError
2004 ? function (err) {
2005 try {
2006 onError(err);
2007 }
2008 catch (err) {
2009 destination.error(err);
2010 }
2011 finally {
2012 this.unsubscribe();
2013 }
2014 }
2015 : _super.prototype._error;
2016 _this._complete = onComplete
2017 ? function () {
2018 try {
2019 onComplete();
2020 }
2021 catch (err) {
2022 destination.error(err);
2023 }
2024 finally {
2025 this.unsubscribe();
2026 }
2027 }
2028 : _super.prototype._complete;
2029 return _this;
2030 }
2031 OperatorSubscriber.prototype.unsubscribe = function () {
2032 var _a;
2033 if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {
2034 var closed_1 = this.closed;
2035 _super.prototype.unsubscribe.call(this);
2036 !closed_1 && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));
2037 }
2038 };
2039 return OperatorSubscriber;
2040 }(Subscriber));
2041
2042 function refCount() {
2043 return operate(function (source, subscriber) {
2044 var connection = null;
2045 source._refCount++;
2046 var refCounter = createOperatorSubscriber(subscriber, undefined, undefined, undefined, function () {
2047 if (!source || source._refCount <= 0 || 0 < --source._refCount) {
2048 connection = null;
2049 return;
2050 }
2051 var sharedConnection = source._connection;
2052 var conn = connection;
2053 connection = null;
2054 if (sharedConnection && (!conn || sharedConnection === conn)) {
2055 sharedConnection.unsubscribe();
2056 }
2057 subscriber.unsubscribe();
2058 });
2059 source.subscribe(refCounter);
2060 if (!refCounter.closed) {
2061 connection = source.connect();
2062 }
2063 });
2064 }
2065
2066 var ConnectableObservable = (function (_super) {
2067 __extends(ConnectableObservable, _super);
2068 function ConnectableObservable(source, subjectFactory) {
2069 var _this = _super.call(this) || this;
2070 _this.source = source;
2071 _this.subjectFactory = subjectFactory;
2072 _this._subject = null;
2073 _this._refCount = 0;
2074 _this._connection = null;
2075 if (hasLift(source)) {
2076 _this.lift = source.lift;
2077 }
2078 return _this;
2079 }
2080 ConnectableObservable.prototype._subscribe = function (subscriber) {
2081 return this.getSubject().subscribe(subscriber);
2082 };
2083 ConnectableObservable.prototype.getSubject = function () {
2084 var subject = this._subject;
2085 if (!subject || subject.isStopped) {
2086 this._subject = this.subjectFactory();
2087 }
2088 return this._subject;
2089 };
2090 ConnectableObservable.prototype._teardown = function () {
2091 this._refCount = 0;
2092 var _connection = this._connection;
2093 this._subject = this._connection = null;
2094 _connection === null || _connection === void 0 ? void 0 : _connection.unsubscribe();
2095 };
2096 ConnectableObservable.prototype.connect = function () {
2097 var _this = this;
2098 var connection = this._connection;
2099 if (!connection) {
2100 connection = this._connection = new Subscription();
2101 var subject_1 = this.getSubject();
2102 connection.add(this.source.subscribe(createOperatorSubscriber(subject_1, undefined, function () {
2103 _this._teardown();
2104 subject_1.complete();
2105 }, function (err) {
2106 _this._teardown();
2107 subject_1.error(err);
2108 }, function () { return _this._teardown(); })));
2109 if (connection.closed) {
2110 this._connection = null;
2111 connection = Subscription.EMPTY;
2112 }
2113 }
2114 return connection;
2115 };
2116 ConnectableObservable.prototype.refCount = function () {
2117 return refCount()(this);
2118 };
2119 return ConnectableObservable;
2120 }(Observable));
2121
2122 var ObjectUnsubscribedError = createErrorClass(function (_super) {
2123 return function ObjectUnsubscribedErrorImpl() {
2124 _super(this);
2125 this.name = 'ObjectUnsubscribedError';
2126 this.message = 'object unsubscribed';
2127 };
2128 });
2129
2130 var Subject = (function (_super) {
2131 __extends(Subject, _super);
2132 function Subject() {
2133 var _this = _super.call(this) || this;
2134 _this.closed = false;
2135 _this.currentObservers = null;
2136 _this.observers = [];
2137 _this.isStopped = false;
2138 _this.hasError = false;
2139 _this.thrownError = null;
2140 return _this;
2141 }
2142 Subject.prototype.lift = function (operator) {
2143 var subject = new AnonymousSubject(this, this);
2144 subject.operator = operator;
2145 return subject;
2146 };
2147 Subject.prototype._throwIfClosed = function () {
2148 if (this.closed) {
2149 throw new ObjectUnsubscribedError();
2150 }
2151 };
2152 Subject.prototype.next = function (value) {
2153 var _this = this;
2154 errorContext(function () {
2155 var e_1, _a;
2156 _this._throwIfClosed();
2157 if (!_this.isStopped) {
2158 if (!_this.currentObservers) {
2159 _this.currentObservers = Array.from(_this.observers);
2160 }
2161 try {
2162 for (var _b = __values(_this.currentObservers), _c = _b.next(); !_c.done; _c = _b.next()) {
2163 var observer = _c.value;
2164 observer.next(value);
2165 }
2166 }
2167 catch (e_1_1) { e_1 = { error: e_1_1 }; }
2168 finally {
2169 try {
2170 if (_c && !_c.done && (_a = _b.return)) _a.call(_b);
2171 }
2172 finally { if (e_1) throw e_1.error; }
2173 }
2174 }
2175 });
2176 };
2177 Subject.prototype.error = function (err) {
2178 var _this = this;
2179 errorContext(function () {
2180 _this._throwIfClosed();
2181 if (!_this.isStopped) {
2182 _this.hasError = _this.isStopped = true;
2183 _this.thrownError = err;
2184 var observers = _this.observers;
2185 while (observers.length) {
2186 observers.shift().error(err);
2187 }
2188 }
2189 });
2190 };
2191 Subject.prototype.complete = function () {
2192 var _this = this;
2193 errorContext(function () {
2194 _this._throwIfClosed();
2195 if (!_this.isStopped) {
2196 _this.isStopped = true;
2197 var observers = _this.observers;
2198 while (observers.length) {
2199 observers.shift().complete();
2200 }
2201 }
2202 });
2203 };
2204 Subject.prototype.unsubscribe = function () {
2205 this.isStopped = this.closed = true;
2206 this.observers = this.currentObservers = null;
2207 };
2208 Object.defineProperty(Subject.prototype, "observed", {
2209 get: function () {
2210 var _a;
2211 return ((_a = this.observers) === null || _a === void 0 ? void 0 : _a.length) > 0;
2212 },
2213 enumerable: false,
2214 configurable: true
2215 });
2216 Subject.prototype._trySubscribe = function (subscriber) {
2217 this._throwIfClosed();
2218 return _super.prototype._trySubscribe.call(this, subscriber);
2219 };
2220 Subject.prototype._subscribe = function (subscriber) {
2221 this._throwIfClosed();
2222 this._checkFinalizedStatuses(subscriber);
2223 return this._innerSubscribe(subscriber);
2224 };
2225 Subject.prototype._innerSubscribe = function (subscriber) {
2226 var _this = this;
2227 var _a = this, hasError = _a.hasError, isStopped = _a.isStopped, observers = _a.observers;
2228 if (hasError || isStopped) {
2229 return EMPTY_SUBSCRIPTION;
2230 }
2231 this.currentObservers = null;
2232 observers.push(subscriber);
2233 return new Subscription(function () {
2234 _this.currentObservers = null;
2235 arrRemove(observers, subscriber);
2236 });
2237 };
2238 Subject.prototype._checkFinalizedStatuses = function (subscriber) {
2239 var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, isStopped = _a.isStopped;
2240 if (hasError) {
2241 subscriber.error(thrownError);
2242 }
2243 else if (isStopped) {
2244 subscriber.complete();
2245 }
2246 };
2247 Subject.prototype.asObservable = function () {
2248 var observable = new Observable();
2249 observable.source = this;
2250 return observable;
2251 };
2252 Subject.create = function (destination, source) {
2253 return new AnonymousSubject(destination, source);
2254 };
2255 return Subject;
2256 }(Observable));
2257 var AnonymousSubject = (function (_super) {
2258 __extends(AnonymousSubject, _super);
2259 function AnonymousSubject(destination, source) {
2260 var _this = _super.call(this) || this;
2261 _this.destination = destination;
2262 _this.source = source;
2263 return _this;
2264 }
2265 AnonymousSubject.prototype.next = function (value) {
2266 var _a, _b;
2267 (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.next) === null || _b === void 0 ? void 0 : _b.call(_a, value);
2268 };
2269 AnonymousSubject.prototype.error = function (err) {
2270 var _a, _b;
2271 (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.error) === null || _b === void 0 ? void 0 : _b.call(_a, err);
2272 };
2273 AnonymousSubject.prototype.complete = function () {
2274 var _a, _b;
2275 (_b = (_a = this.destination) === null || _a === void 0 ? void 0 : _a.complete) === null || _b === void 0 ? void 0 : _b.call(_a);
2276 };
2277 AnonymousSubject.prototype._subscribe = function (subscriber) {
2278 var _a, _b;
2279 return (_b = (_a = this.source) === null || _a === void 0 ? void 0 : _a.subscribe(subscriber)) !== null && _b !== void 0 ? _b : EMPTY_SUBSCRIPTION;
2280 };
2281 return AnonymousSubject;
2282 }(Subject));
2283
2284 var BehaviorSubject = (function (_super) {
2285 __extends(BehaviorSubject, _super);
2286 function BehaviorSubject(_value) {
2287 var _this = _super.call(this) || this;
2288 _this._value = _value;
2289 return _this;
2290 }
2291 Object.defineProperty(BehaviorSubject.prototype, "value", {
2292 get: function () {
2293 return this.getValue();
2294 },
2295 enumerable: false,
2296 configurable: true
2297 });
2298 BehaviorSubject.prototype._subscribe = function (subscriber) {
2299 var subscription = _super.prototype._subscribe.call(this, subscriber);
2300 !subscription.closed && subscriber.next(this._value);
2301 return subscription;
2302 };
2303 BehaviorSubject.prototype.getValue = function () {
2304 var _a = this, hasError = _a.hasError, thrownError = _a.thrownError, _value = _a._value;
2305 if (hasError) {
2306 throw thrownError;
2307 }
2308 this._throwIfClosed();
2309 return _value;
2310 };
2311 BehaviorSubject.prototype.next = function (value) {
2312 _super.prototype.next.call(this, (this._value = value));
2313 };
2314 return BehaviorSubject;
2315 }(Subject));
2316
2317 var dateTimestampProvider = {
2318 now: function () {
2319 return (dateTimestampProvider.delegate || Date).now();
2320 },
2321 delegate: undefined,
2322 };
2323
2324 var ReplaySubject = (function (_super) {
2325 __extends(ReplaySubject, _super);
2326 function ReplaySubject(_bufferSize, _windowTime, _timestampProvider) {
2327 if (_bufferSize === void 0) { _bufferSize = Infinity; }
2328 if (_windowTime === void 0) { _windowTime = Infinity; }
2329 if (_timestampProvider === void 0) { _timestampProvider = dateTimestampProvider; }
2330 var _this = _super.call(this) || this;
2331 _this._bufferSize = _bufferSize;
2332 _this._windowTime = _windowTime;
2333 _this._timestampProvider = _timestampProvider;
2334 _this._buffer = [];
2335 _this._infiniteTimeWindow = true;
2336 _this._infiniteTimeWindow = _windowTime === Infinity;
2337 _this._bufferSize = Math.max(1, _bufferSize);
2338 _this._windowTime = Math.max(1, _windowTime);
2339 return _this;
2340 }
2341 ReplaySubject.prototype.next = function (value) {
2342 var _a = this, isStopped = _a.isStopped, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow, _timestampProvider = _a._timestampProvider, _windowTime = _a._windowTime;
2343 if (!isStopped) {
2344 _buffer.push(value);
2345 !_infiniteTimeWindow && _buffer.push(_timestampProvider.now() + _windowTime);
2346 }
2347 this._trimBuffer();
2348 _super.prototype.next.call(this, value);
2349 };
2350 ReplaySubject.prototype._subscribe = function (subscriber) {
2351 this._throwIfClosed();
2352 this._trimBuffer();
2353 var subscription = this._innerSubscribe(subscriber);
2354 var _a = this, _infiniteTimeWindow = _a._infiniteTimeWindow, _buffer = _a._buffer;
2355 var copy = _buffer.slice();
2356 for (var i = 0; i < copy.length && !subscriber.closed; i += _infiniteTimeWindow ? 1 : 2) {
2357 subscriber.next(copy[i]);
2358 }
2359 this._checkFinalizedStatuses(subscriber);
2360 return subscription;
2361 };
2362 ReplaySubject.prototype._trimBuffer = function () {
2363 var _a = this, _bufferSize = _a._bufferSize, _timestampProvider = _a._timestampProvider, _buffer = _a._buffer, _infiniteTimeWindow = _a._infiniteTimeWindow;
2364 var adjustedBufferSize = (_infiniteTimeWindow ? 1 : 2) * _bufferSize;
2365 _bufferSize < Infinity && adjustedBufferSize < _buffer.length && _buffer.splice(0, _buffer.length - adjustedBufferSize);
2366 if (!_infiniteTimeWindow) {
2367 var now = _timestampProvider.now();
2368 var last = 0;
2369 for (var i = 1; i < _buffer.length && _buffer[i] <= now; i += 2) {
2370 last = i;
2371 }
2372 last && _buffer.splice(0, last + 1);
2373 }
2374 };
2375 return ReplaySubject;
2376 }(Subject));
2377
2378 var Action = (function (_super) {
2379 __extends(Action, _super);
2380 function Action(scheduler, work) {
2381 return _super.call(this) || this;
2382 }
2383 Action.prototype.schedule = function (state, delay) {
2384 return this;
2385 };
2386 return Action;
2387 }(Subscription));
2388
2389 var intervalProvider = {
2390 setInterval: function (handler, timeout) {
2391 var args = [];
2392 for (var _i = 2; _i < arguments.length; _i++) {
2393 args[_i - 2] = arguments[_i];
2394 }
2395 return setInterval.apply(void 0, __spreadArray([handler, timeout], __read(args)));
2396 },
2397 clearInterval: function (handle) {
2398 var delegate = intervalProvider.delegate;
2399 return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearInterval) || clearInterval)(handle);
2400 },
2401 delegate: undefined,
2402 };
2403
2404 var AsyncAction = (function (_super) {
2405 __extends(AsyncAction, _super);
2406 function AsyncAction(scheduler, work) {
2407 var _this = _super.call(this, scheduler, work) || this;
2408 _this.scheduler = scheduler;
2409 _this.work = work;
2410 _this.pending = false;
2411 return _this;
2412 }
2413 AsyncAction.prototype.schedule = function (state, delay) {
2414 var _a;
2415 if (delay === void 0) { delay = 0; }
2416 if (this.closed) {
2417 return this;
2418 }
2419 this.state = state;
2420 var id = this.id;
2421 var scheduler = this.scheduler;
2422 if (id != null) {
2423 this.id = this.recycleAsyncId(scheduler, id, delay);
2424 }
2425 this.pending = true;
2426 this.delay = delay;
2427 this.id = (_a = this.id) !== null && _a !== void 0 ? _a : this.requestAsyncId(scheduler, this.id, delay);
2428 return this;
2429 };
2430 AsyncAction.prototype.requestAsyncId = function (scheduler, _id, delay) {
2431 if (delay === void 0) { delay = 0; }
2432 return intervalProvider.setInterval(scheduler.flush.bind(scheduler, this), delay);
2433 };
2434 AsyncAction.prototype.recycleAsyncId = function (_scheduler, id, delay) {
2435 if (delay === void 0) { delay = 0; }
2436 if (delay != null && this.delay === delay && this.pending === false) {
2437 return id;
2438 }
2439 if (id != null) {
2440 intervalProvider.clearInterval(id);
2441 }
2442 return undefined;
2443 };
2444 AsyncAction.prototype.execute = function (state, delay) {
2445 if (this.closed) {
2446 return new Error('executing a cancelled action');
2447 }
2448 this.pending = false;
2449 var error = this._execute(state, delay);
2450 if (error) {
2451 return error;
2452 }
2453 else if (this.pending === false && this.id != null) {
2454 this.id = this.recycleAsyncId(this.scheduler, this.id, null);
2455 }
2456 };
2457 AsyncAction.prototype._execute = function (state, _delay) {
2458 var errored = false;
2459 var errorValue;
2460 try {
2461 this.work(state);
2462 }
2463 catch (e) {
2464 errored = true;
2465 errorValue = e ? e : new Error('Scheduled action threw falsy error');
2466 }
2467 if (errored) {
2468 this.unsubscribe();
2469 return errorValue;
2470 }
2471 };
2472 AsyncAction.prototype.unsubscribe = function () {
2473 if (!this.closed) {
2474 var _a = this, id = _a.id, scheduler = _a.scheduler;
2475 var actions = scheduler.actions;
2476 this.work = this.state = this.scheduler = null;
2477 this.pending = false;
2478 arrRemove(actions, this);
2479 if (id != null) {
2480 this.id = this.recycleAsyncId(scheduler, id, null);
2481 }
2482 this.delay = null;
2483 _super.prototype.unsubscribe.call(this);
2484 }
2485 };
2486 return AsyncAction;
2487 }(Action));
2488
2489 var nextHandle = 1;
2490 var resolved;
2491 var activeHandles = {};
2492 function findAndClearHandle(handle) {
2493 if (handle in activeHandles) {
2494 delete activeHandles[handle];
2495 return true;
2496 }
2497 return false;
2498 }
2499 var Immediate = {
2500 setImmediate: function (cb) {
2501 var handle = nextHandle++;
2502 activeHandles[handle] = true;
2503 if (!resolved) {
2504 resolved = Promise.resolve();
2505 }
2506 resolved.then(function () { return findAndClearHandle(handle) && cb(); });
2507 return handle;
2508 },
2509 clearImmediate: function (handle) {
2510 findAndClearHandle(handle);
2511 },
2512 };
2513
2514 var setImmediate = Immediate.setImmediate, clearImmediate = Immediate.clearImmediate;
2515 var immediateProvider = {
2516 setImmediate: function () {
2517 var args = [];
2518 for (var _i = 0; _i < arguments.length; _i++) {
2519 args[_i] = arguments[_i];
2520 }
2521 return (setImmediate).apply(void 0, __spreadArray([], __read(args)));
2522 },
2523 clearImmediate: function (handle) {
2524 var delegate = immediateProvider.delegate;
2525 return ((delegate === null || delegate === void 0 ? void 0 : delegate.clearImmediate) || clearImmediate)(handle);
2526 },
2527 delegate: undefined,
2528 };
2529
2530 var AsapAction = (function (_super) {
2531 __extends(AsapAction, _super);
2532 function AsapAction(scheduler, work) {
2533 var _this = _super.call(this, scheduler, work) || this;
2534 _this.scheduler = scheduler;
2535 _this.work = work;
2536 return _this;
2537 }
2538 AsapAction.prototype.requestAsyncId = function (scheduler, id, delay) {
2539 if (delay === void 0) { delay = 0; }
2540 if (delay !== null && delay > 0) {
2541 return _super.prototype.requestAsyncId.call(this, scheduler, id, delay);
2542 }
2543 scheduler.actions.push(this);
2544 return scheduler._scheduled || (scheduler._scheduled = immediateProvider.setImmediate(scheduler.flush.bind(scheduler, undefined)));
2545 };
2546 AsapAction.prototype.recycleAsyncId = function (scheduler, id, delay) {
2547 var _a;
2548 if (delay === void 0) { delay = 0; }
2549 if (delay != null ? delay > 0 : this.delay > 0) {
2550 return _super.prototype.recycleAsyncId.call(this, scheduler, id, delay);
2551 }
2552 var actions = scheduler.actions;
2553 if (id != null && ((_a = actions[actions.length - 1]) === null || _a === void 0 ? void 0 : _a.id) !== id) {
2554 immediateProvider.clearImmediate(id);
2555 if (scheduler._scheduled === id) {
2556 scheduler._scheduled = undefined;
2557 }
2558 }
2559 return undefined;
2560 };
2561 return AsapAction;
2562 }(AsyncAction));
2563
2564 var Scheduler = (function () {
2565 function Scheduler(schedulerActionCtor, now) {
2566 if (now === void 0) { now = Scheduler.now; }
2567 this.schedulerActionCtor = schedulerActionCtor;
2568 this.now = now;
2569 }
2570 Scheduler.prototype.schedule = function (work, delay, state) {
2571 if (delay === void 0) { delay = 0; }
2572 return new this.schedulerActionCtor(this, work).schedule(state, delay);
2573 };
2574 Scheduler.now = dateTimestampProvider.now;
2575 return Scheduler;
2576 }());
2577
2578 var AsyncScheduler = (function (_super) {
2579 __extends(AsyncScheduler, _super);
2580 function AsyncScheduler(SchedulerAction, now) {
2581 if (now === void 0) { now = Scheduler.now; }
2582 var _this = _super.call(this, SchedulerAction, now) || this;
2583 _this.actions = [];
2584 _this._active = false;
2585 return _this;
2586 }
2587 AsyncScheduler.prototype.flush = function (action) {
2588 var actions = this.actions;
2589 if (this._active) {
2590 actions.push(action);
2591 return;
2592 }
2593 var error;
2594 this._active = true;
2595 do {
2596 if ((error = action.execute(action.state, action.delay))) {
2597 break;
2598 }
2599 } while ((action = actions.shift()));
2600 this._active = false;
2601 if (error) {
2602 while ((action = actions.shift())) {
2603 action.unsubscribe();
2604 }
2605 throw error;
2606 }
2607 };
2608 return AsyncScheduler;
2609 }(Scheduler));
2610
2611 var AsapScheduler = (function (_super) {
2612 __extends(AsapScheduler, _super);
2613 function AsapScheduler() {
2614 return _super !== null && _super.apply(this, arguments) || this;
2615 }
2616 AsapScheduler.prototype.flush = function (action) {
2617 this._active = true;
2618 var flushId = this._scheduled;
2619 this._scheduled = undefined;
2620 var actions = this.actions;
2621 var error;
2622 action = action || actions.shift();
2623 do {
2624 if ((error = action.execute(action.state, action.delay))) {
2625 break;
2626 }
2627 } while ((action = actions[0]) && action.id === flushId && actions.shift());
2628 this._active = false;
2629 if (error) {
2630 while ((action = actions[0]) && action.id === flushId && actions.shift()) {
2631 action.unsubscribe();
2632 }
2633 throw error;
2634 }
2635 };
2636 return AsapScheduler;
2637 }(AsyncScheduler));
2638
2639 var asapScheduler = new AsapScheduler(AsapAction);
2640
2641 var EMPTY = new Observable(function (subscriber) { return subscriber.complete(); });
2642
2643 function isScheduler(value) {
2644 return value && isFunction(value.schedule);
2645 }
2646
2647 function last(arr) {
2648 return arr[arr.length - 1];
2649 }
2650 function popResultSelector(args) {
2651 return isFunction(last(args)) ? args.pop() : undefined;
2652 }
2653 function popScheduler(args) {
2654 return isScheduler(last(args)) ? args.pop() : undefined;
2655 }
2656
2657 var isArrayLike = (function (x) { return x && typeof x.length === 'number' && typeof x !== 'function'; });
2658
2659 function isPromise(value) {
2660 return isFunction(value === null || value === void 0 ? void 0 : value.then);
2661 }
2662
2663 function isInteropObservable(input) {
2664 return isFunction(input[observable]);
2665 }
2666
2667 function isAsyncIterable(obj) {
2668 return Symbol.asyncIterator && isFunction(obj === null || obj === void 0 ? void 0 : obj[Symbol.asyncIterator]);
2669 }
2670
2671 function createInvalidObservableTypeError(input) {
2672 return new TypeError("You provided " + (input !== null && typeof input === 'object' ? 'an invalid object' : "'" + input + "'") + " where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.");
2673 }
2674
2675 function getSymbolIterator() {
2676 if (typeof Symbol !== 'function' || !Symbol.iterator) {
2677 return '@@iterator';
2678 }
2679 return Symbol.iterator;
2680 }
2681 var iterator = getSymbolIterator();
2682
2683 function isIterable(input) {
2684 return isFunction(input === null || input === void 0 ? void 0 : input[iterator]);
2685 }
2686
2687 function readableStreamLikeToAsyncGenerator(readableStream) {
2688 return __asyncGenerator(this, arguments, function readableStreamLikeToAsyncGenerator_1() {
2689 var reader, _a, value, done;
2690 return __generator(this, function (_b) {
2691 switch (_b.label) {
2692 case 0:
2693 reader = readableStream.getReader();
2694 _b.label = 1;
2695 case 1:
2696 _b.trys.push([1, , 9, 10]);
2697 _b.label = 2;
2698 case 2:
2699 return [4, __await(reader.read())];
2700 case 3:
2701 _a = _b.sent(), value = _a.value, done = _a.done;
2702 if (!done) return [3, 5];
2703 return [4, __await(void 0)];
2704 case 4: return [2, _b.sent()];
2705 case 5: return [4, __await(value)];
2706 case 6: return [4, _b.sent()];
2707 case 7:
2708 _b.sent();
2709 return [3, 2];
2710 case 8: return [3, 10];
2711 case 9:
2712 reader.releaseLock();
2713 return [7];
2714 case 10: return [2];
2715 }
2716 });
2717 });
2718 }
2719 function isReadableStreamLike(obj) {
2720 return isFunction(obj === null || obj === void 0 ? void 0 : obj.getReader);
2721 }
2722
2723 function innerFrom(input) {
2724 if (input instanceof Observable) {
2725 return input;
2726 }
2727 if (input != null) {
2728 if (isInteropObservable(input)) {
2729 return fromInteropObservable(input);
2730 }
2731 if (isArrayLike(input)) {
2732 return fromArrayLike(input);
2733 }
2734 if (isPromise(input)) {
2735 return fromPromise(input);
2736 }
2737 if (isAsyncIterable(input)) {
2738 return fromAsyncIterable(input);
2739 }
2740 if (isIterable(input)) {
2741 return fromIterable(input);
2742 }
2743 if (isReadableStreamLike(input)) {
2744 return fromReadableStreamLike(input);
2745 }
2746 }
2747 throw createInvalidObservableTypeError(input);
2748 }
2749 function fromInteropObservable(obj) {
2750 return new Observable(function (subscriber) {
2751 var obs = obj[observable]();
2752 if (isFunction(obs.subscribe)) {
2753 return obs.subscribe(subscriber);
2754 }
2755 throw new TypeError('Provided object does not correctly implement Symbol.observable');
2756 });
2757 }
2758 function fromArrayLike(array) {
2759 return new Observable(function (subscriber) {
2760 for (var i = 0; i < array.length && !subscriber.closed; i++) {
2761 subscriber.next(array[i]);
2762 }
2763 subscriber.complete();
2764 });
2765 }
2766 function fromPromise(promise) {
2767 return new Observable(function (subscriber) {
2768 promise
2769 .then(function (value) {
2770 if (!subscriber.closed) {
2771 subscriber.next(value);
2772 subscriber.complete();
2773 }
2774 }, function (err) { return subscriber.error(err); })
2775 .then(null, reportUnhandledError);
2776 });
2777 }
2778 function fromIterable(iterable) {
2779 return new Observable(function (subscriber) {
2780 var e_1, _a;
2781 try {
2782 for (var iterable_1 = __values(iterable), iterable_1_1 = iterable_1.next(); !iterable_1_1.done; iterable_1_1 = iterable_1.next()) {
2783 var value = iterable_1_1.value;
2784 subscriber.next(value);
2785 if (subscriber.closed) {
2786 return;
2787 }
2788 }
2789 }
2790 catch (e_1_1) { e_1 = { error: e_1_1 }; }
2791 finally {
2792 try {
2793 if (iterable_1_1 && !iterable_1_1.done && (_a = iterable_1.return)) _a.call(iterable_1);
2794 }
2795 finally { if (e_1) throw e_1.error; }
2796 }
2797 subscriber.complete();
2798 });
2799 }
2800 function fromAsyncIterable(asyncIterable) {
2801 return new Observable(function (subscriber) {
2802 process(asyncIterable, subscriber).catch(function (err) { return subscriber.error(err); });
2803 });
2804 }
2805 function fromReadableStreamLike(readableStream) {
2806 return fromAsyncIterable(readableStreamLikeToAsyncGenerator(readableStream));
2807 }
2808 function process(asyncIterable, subscriber) {
2809 var asyncIterable_1, asyncIterable_1_1;
2810 var e_2, _a;
2811 return __awaiter(this, void 0, void 0, function () {
2812 var value, e_2_1;
2813 return __generator(this, function (_b) {
2814 switch (_b.label) {
2815 case 0:
2816 _b.trys.push([0, 5, 6, 11]);
2817 asyncIterable_1 = __asyncValues(asyncIterable);
2818 _b.label = 1;
2819 case 1: return [4, asyncIterable_1.next()];
2820 case 2:
2821 if (!(asyncIterable_1_1 = _b.sent(), !asyncIterable_1_1.done)) return [3, 4];
2822 value = asyncIterable_1_1.value;
2823 subscriber.next(value);
2824 if (subscriber.closed) {
2825 return [2];
2826 }
2827 _b.label = 3;
2828 case 3: return [3, 1];
2829 case 4: return [3, 11];
2830 case 5:
2831 e_2_1 = _b.sent();
2832 e_2 = { error: e_2_1 };
2833 return [3, 11];
2834 case 6:
2835 _b.trys.push([6, , 9, 10]);
2836 if (!(asyncIterable_1_1 && !asyncIterable_1_1.done && (_a = asyncIterable_1.return))) return [3, 8];
2837 return [4, _a.call(asyncIterable_1)];
2838 case 7:
2839 _b.sent();
2840 _b.label = 8;
2841 case 8: return [3, 10];
2842 case 9:
2843 if (e_2) throw e_2.error;
2844 return [7];
2845 case 10: return [7];
2846 case 11:
2847 subscriber.complete();
2848 return [2];
2849 }
2850 });
2851 });
2852 }
2853
2854 function executeSchedule(parentSubscription, scheduler, work, delay, repeat) {
2855 if (delay === void 0) { delay = 0; }
2856 if (repeat === void 0) { repeat = false; }
2857 var scheduleSubscription = scheduler.schedule(function () {
2858 work();
2859 if (repeat) {
2860 parentSubscription.add(this.schedule(null, delay));
2861 }
2862 else {
2863 this.unsubscribe();
2864 }
2865 }, delay);
2866 parentSubscription.add(scheduleSubscription);
2867 if (!repeat) {
2868 return scheduleSubscription;
2869 }
2870 }
2871
2872 function observeOn(scheduler, delay) {
2873 if (delay === void 0) { delay = 0; }
2874 return operate(function (source, subscriber) {
2875 source.subscribe(createOperatorSubscriber(subscriber, function (value) { return executeSchedule(subscriber, scheduler, function () { return subscriber.next(value); }, delay); }, function () { return executeSchedule(subscriber, scheduler, function () { return subscriber.complete(); }, delay); }, function (err) { return executeSchedule(subscriber, scheduler, function () { return subscriber.error(err); }, delay); }));
2876 });
2877 }
2878
2879 function subscribeOn(scheduler, delay) {
2880 if (delay === void 0) { delay = 0; }
2881 return operate(function (source, subscriber) {
2882 subscriber.add(scheduler.schedule(function () { return source.subscribe(subscriber); }, delay));
2883 });
2884 }
2885
2886 function scheduleObservable(input, scheduler) {
2887 return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));
2888 }
2889
2890 function schedulePromise(input, scheduler) {
2891 return innerFrom(input).pipe(subscribeOn(scheduler), observeOn(scheduler));
2892 }
2893
2894 function scheduleArray(input, scheduler) {
2895 return new Observable(function (subscriber) {
2896 var i = 0;
2897 return scheduler.schedule(function () {
2898 if (i === input.length) {
2899 subscriber.complete();
2900 }
2901 else {
2902 subscriber.next(input[i++]);
2903 if (!subscriber.closed) {
2904 this.schedule();
2905 }
2906 }
2907 });
2908 });
2909 }
2910
2911 function scheduleIterable(input, scheduler) {
2912 return new Observable(function (subscriber) {
2913 var iterator$1;
2914 executeSchedule(subscriber, scheduler, function () {
2915 iterator$1 = input[iterator]();
2916 executeSchedule(subscriber, scheduler, function () {
2917 var _a;
2918 var value;
2919 var done;
2920 try {
2921 (_a = iterator$1.next(), value = _a.value, done = _a.done);
2922 }
2923 catch (err) {
2924 subscriber.error(err);
2925 return;
2926 }
2927 if (done) {
2928 subscriber.complete();
2929 }
2930 else {
2931 subscriber.next(value);
2932 }
2933 }, 0, true);
2934 });
2935 return function () { return isFunction(iterator$1 === null || iterator$1 === void 0 ? void 0 : iterator$1.return) && iterator$1.return(); };
2936 });
2937 }
2938
2939 function scheduleAsyncIterable(input, scheduler) {
2940 if (!input) {
2941 throw new Error('Iterable cannot be null');
2942 }
2943 return new Observable(function (subscriber) {
2944 executeSchedule(subscriber, scheduler, function () {
2945 var iterator = input[Symbol.asyncIterator]();
2946 executeSchedule(subscriber, scheduler, function () {
2947 iterator.next().then(function (result) {
2948 if (result.done) {
2949 subscriber.complete();
2950 }
2951 else {
2952 subscriber.next(result.value);
2953 }
2954 });
2955 }, 0, true);
2956 });
2957 });
2958 }
2959
2960 function scheduleReadableStreamLike(input, scheduler) {
2961 return scheduleAsyncIterable(readableStreamLikeToAsyncGenerator(input), scheduler);
2962 }
2963
2964 function scheduled(input, scheduler) {
2965 if (input != null) {
2966 if (isInteropObservable(input)) {
2967 return scheduleObservable(input, scheduler);
2968 }
2969 if (isArrayLike(input)) {
2970 return scheduleArray(input, scheduler);
2971 }
2972 if (isPromise(input)) {
2973 return schedulePromise(input, scheduler);
2974 }
2975 if (isAsyncIterable(input)) {
2976 return scheduleAsyncIterable(input, scheduler);
2977 }
2978 if (isIterable(input)) {
2979 return scheduleIterable(input, scheduler);
2980 }
2981 if (isReadableStreamLike(input)) {
2982 return scheduleReadableStreamLike(input, scheduler);
2983 }
2984 }
2985 throw createInvalidObservableTypeError(input);
2986 }
2987
2988 function from(input, scheduler) {
2989 return scheduler ? scheduled(input, scheduler) : innerFrom(input);
2990 }
2991
2992 function of() {
2993 var args = [];
2994 for (var _i = 0; _i < arguments.length; _i++) {
2995 args[_i] = arguments[_i];
2996 }
2997 var scheduler = popScheduler(args);
2998 return from(args, scheduler);
2999 }
3000
3001 var EmptyError = createErrorClass(function (_super) { return function EmptyErrorImpl() {
3002 _super(this);
3003 this.name = 'EmptyError';
3004 this.message = 'no elements in sequence';
3005 }; });
3006
3007 function firstValueFrom(source, config) {
3008 var hasConfig = typeof config === 'object';
3009 return new Promise(function (resolve, reject) {
3010 var subscriber = new SafeSubscriber({
3011 next: function (value) {
3012 resolve(value);
3013 subscriber.unsubscribe();
3014 },
3015 error: reject,
3016 complete: function () {
3017 if (hasConfig) {
3018 resolve(config.defaultValue);
3019 }
3020 else {
3021 reject(new EmptyError());
3022 }
3023 },
3024 });
3025 source.subscribe(subscriber);
3026 });
3027 }
3028
3029 function map(project, thisArg) {
3030 return operate(function (source, subscriber) {
3031 var index = 0;
3032 source.subscribe(createOperatorSubscriber(subscriber, function (value) {
3033 subscriber.next(project.call(thisArg, value, index++));
3034 }));
3035 });
3036 }
3037
3038 var isArray$1 = Array.isArray;
3039 function callOrApply(fn, args) {
3040 return isArray$1(args) ? fn.apply(void 0, __spreadArray([], __read(args))) : fn(args);
3041 }
3042 function mapOneOrManyArgs(fn) {
3043 return map(function (args) { return callOrApply(fn, args); });
3044 }
3045
3046 var isArray = Array.isArray;
3047 var getPrototypeOf = Object.getPrototypeOf, objectProto = Object.prototype, getKeys = Object.keys;
3048 function argsArgArrayOrObject(args) {
3049 if (args.length === 1) {
3050 var first_1 = args[0];
3051 if (isArray(first_1)) {
3052 return { args: first_1, keys: null };
3053 }
3054 if (isPOJO(first_1)) {
3055 var keys = getKeys(first_1);
3056 return {
3057 args: keys.map(function (key) { return first_1[key]; }),
3058 keys: keys,
3059 };
3060 }
3061 }
3062 return { args: args, keys: null };
3063 }
3064 function isPOJO(obj) {
3065 return obj && typeof obj === 'object' && getPrototypeOf(obj) === objectProto;
3066 }
3067
3068 function createObject(keys, values) {
3069 return keys.reduce(function (result, key, i) { return ((result[key] = values[i]), result); }, {});
3070 }
3071
3072 function combineLatest() {
3073 var args = [];
3074 for (var _i = 0; _i < arguments.length; _i++) {
3075 args[_i] = arguments[_i];
3076 }
3077 var scheduler = popScheduler(args);
3078 var resultSelector = popResultSelector(args);
3079 var _a = argsArgArrayOrObject(args), observables = _a.args, keys = _a.keys;
3080 if (observables.length === 0) {
3081 return from([], scheduler);
3082 }
3083 var result = new Observable(combineLatestInit(observables, scheduler, keys
3084 ?
3085 function (values) { return createObject(keys, values); }
3086 :
3087 identity$1));
3088 return resultSelector ? result.pipe(mapOneOrManyArgs(resultSelector)) : result;
3089 }
3090 function combineLatestInit(observables, scheduler, valueTransform) {
3091 if (valueTransform === void 0) { valueTransform = identity$1; }
3092 return function (subscriber) {
3093 maybeSchedule(scheduler, function () {
3094 var length = observables.length;
3095 var values = new Array(length);
3096 var active = length;
3097 var remainingFirstValues = length;
3098 var _loop_1 = function (i) {
3099 maybeSchedule(scheduler, function () {
3100 var source = from(observables[i], scheduler);
3101 var hasFirstValue = false;
3102 source.subscribe(createOperatorSubscriber(subscriber, function (value) {
3103 values[i] = value;
3104 if (!hasFirstValue) {
3105 hasFirstValue = true;
3106 remainingFirstValues--;
3107 }
3108 if (!remainingFirstValues) {
3109 subscriber.next(valueTransform(values.slice()));
3110 }
3111 }, function () {
3112 if (!--active) {
3113 subscriber.complete();
3114 }
3115 }));
3116 }, subscriber);
3117 };
3118 for (var i = 0; i < length; i++) {
3119 _loop_1(i);
3120 }
3121 }, subscriber);
3122 };
3123 }
3124 function maybeSchedule(scheduler, execute, subscription) {
3125 if (scheduler) {
3126 executeSchedule(subscription, scheduler, execute);
3127 }
3128 else {
3129 execute();
3130 }
3131 }
3132
3133 function mergeInternals(source, subscriber, project, concurrent, onBeforeNext, expand, innerSubScheduler, additionalFinalizer) {
3134 var buffer = [];
3135 var active = 0;
3136 var index = 0;
3137 var isComplete = false;
3138 var checkComplete = function () {
3139 if (isComplete && !buffer.length && !active) {
3140 subscriber.complete();
3141 }
3142 };
3143 var outerNext = function (value) { return (active < concurrent ? doInnerSub(value) : buffer.push(value)); };
3144 var doInnerSub = function (value) {
3145 expand && subscriber.next(value);
3146 active++;
3147 var innerComplete = false;
3148 innerFrom(project(value, index++)).subscribe(createOperatorSubscriber(subscriber, function (innerValue) {
3149 onBeforeNext === null || onBeforeNext === void 0 ? void 0 : onBeforeNext(innerValue);
3150 if (expand) {
3151 outerNext(innerValue);
3152 }
3153 else {
3154 subscriber.next(innerValue);
3155 }
3156 }, function () {
3157 innerComplete = true;
3158 }, undefined, function () {
3159 if (innerComplete) {
3160 try {
3161 active--;
3162 var _loop_1 = function () {
3163 var bufferedValue = buffer.shift();
3164 if (innerSubScheduler) {
3165 executeSchedule(subscriber, innerSubScheduler, function () { return doInnerSub(bufferedValue); });
3166 }
3167 else {
3168 doInnerSub(bufferedValue);
3169 }
3170 };
3171 while (buffer.length && active < concurrent) {
3172 _loop_1();
3173 }
3174 checkComplete();
3175 }
3176 catch (err) {
3177 subscriber.error(err);
3178 }
3179 }
3180 }));
3181 };
3182 source.subscribe(createOperatorSubscriber(subscriber, outerNext, function () {
3183 isComplete = true;
3184 checkComplete();
3185 }));
3186 return function () {
3187 additionalFinalizer === null || additionalFinalizer === void 0 ? void 0 : additionalFinalizer();
3188 };
3189 }
3190
3191 function mergeMap(project, resultSelector, concurrent) {
3192 if (concurrent === void 0) { concurrent = Infinity; }
3193 if (isFunction(resultSelector)) {
3194 return mergeMap(function (a, i) { return map(function (b, ii) { return resultSelector(a, b, i, ii); })(innerFrom(project(a, i))); }, concurrent);
3195 }
3196 else if (typeof resultSelector === 'number') {
3197 concurrent = resultSelector;
3198 }
3199 return operate(function (source, subscriber) { return mergeInternals(source, subscriber, project, concurrent); });
3200 }
3201
3202 function mergeAll(concurrent) {
3203 if (concurrent === void 0) { concurrent = Infinity; }
3204 return mergeMap(identity$1, concurrent);
3205 }
3206
3207 function concatAll() {
3208 return mergeAll(1);
3209 }
3210
3211 function concat() {
3212 var args = [];
3213 for (var _i = 0; _i < arguments.length; _i++) {
3214 args[_i] = arguments[_i];
3215 }
3216 return concatAll()(from(args, popScheduler(args)));
3217 }
3218
3219 function filter(predicate, thisArg) {
3220 return operate(function (source, subscriber) {
3221 var index = 0;
3222 source.subscribe(createOperatorSubscriber(subscriber, function (value) { return predicate.call(thisArg, value, index++) && subscriber.next(value); }));
3223 });
3224 }
3225
3226 function catchError(selector) {
3227 return operate(function (source, subscriber) {
3228 var innerSub = null;
3229 var syncUnsub = false;
3230 var handledResult;
3231 innerSub = source.subscribe(createOperatorSubscriber(subscriber, undefined, undefined, function (err) {
3232 handledResult = innerFrom(selector(err, catchError(selector)(source)));
3233 if (innerSub) {
3234 innerSub.unsubscribe();
3235 innerSub = null;
3236 handledResult.subscribe(subscriber);
3237 }
3238 else {
3239 syncUnsub = true;
3240 }
3241 }));
3242 if (syncUnsub) {
3243 innerSub.unsubscribe();
3244 innerSub = null;
3245 handledResult.subscribe(subscriber);
3246 }
3247 });
3248 }
3249
3250 function scanInternals(accumulator, seed, hasSeed, emitOnNext, emitBeforeComplete) {
3251 return function (source, subscriber) {
3252 var hasState = hasSeed;
3253 var state = seed;
3254 var index = 0;
3255 source.subscribe(createOperatorSubscriber(subscriber, function (value) {
3256 var i = index++;
3257 state = hasState
3258 ?
3259 accumulator(state, value, i)
3260 :
3261 ((hasState = true), value);
3262 emitOnNext && subscriber.next(state);
3263 }, emitBeforeComplete &&
3264 (function () {
3265 hasState && subscriber.next(state);
3266 subscriber.complete();
3267 })));
3268 };
3269 }
3270
3271 function reduce(accumulator, seed) {
3272 return operate(scanInternals(accumulator, seed, arguments.length >= 2, false, true));
3273 }
3274
3275 var arrReducer = function (arr, value) { return (arr.push(value), arr); };
3276 function toArray() {
3277 return operate(function (source, subscriber) {
3278 reduce(arrReducer, [])(source).subscribe(subscriber);
3279 });
3280 }
3281
3282 function fromSubscribable(subscribable) {
3283 return new Observable(function (subscriber) { return subscribable.subscribe(subscriber); });
3284 }
3285
3286 var DEFAULT_CONFIG = {
3287 connector: function () { return new Subject(); },
3288 };
3289 function connect(selector, config) {
3290 if (config === void 0) { config = DEFAULT_CONFIG; }
3291 var connector = config.connector;
3292 return operate(function (source, subscriber) {
3293 var subject = connector();
3294 innerFrom(selector(fromSubscribable(subject))).subscribe(subscriber);
3295 subscriber.add(source.subscribe(subject));
3296 });
3297 }
3298
3299 function defaultIfEmpty(defaultValue) {
3300 return operate(function (source, subscriber) {
3301 var hasValue = false;
3302 source.subscribe(createOperatorSubscriber(subscriber, function (value) {
3303 hasValue = true;
3304 subscriber.next(value);
3305 }, function () {
3306 if (!hasValue) {
3307 subscriber.next(defaultValue);
3308 }
3309 subscriber.complete();
3310 }));
3311 });
3312 }
3313
3314 function take(count) {
3315 return count <= 0
3316 ?
3317 function () { return EMPTY; }
3318 : operate(function (source, subscriber) {
3319 var seen = 0;
3320 source.subscribe(createOperatorSubscriber(subscriber, function (value) {
3321 if (++seen <= count) {
3322 subscriber.next(value);
3323 if (count <= seen) {
3324 subscriber.complete();
3325 }
3326 }
3327 }));
3328 });
3329 }
3330
3331 function distinctUntilChanged(comparator, keySelector) {
3332 if (keySelector === void 0) { keySelector = identity$1; }
3333 comparator = comparator !== null && comparator !== void 0 ? comparator : defaultCompare;
3334 return operate(function (source, subscriber) {
3335 var previousKey;
3336 var first = true;
3337 source.subscribe(createOperatorSubscriber(subscriber, function (value) {
3338 var currentKey = keySelector(value);
3339 if (first || !comparator(previousKey, currentKey)) {
3340 first = false;
3341 previousKey = currentKey;
3342 subscriber.next(value);
3343 }
3344 }));
3345 });
3346 }
3347 function defaultCompare(a, b) {
3348 return a === b;
3349 }
3350
3351 function throwIfEmpty(errorFactory) {
3352 if (errorFactory === void 0) { errorFactory = defaultErrorFactory; }
3353 return operate(function (source, subscriber) {
3354 var hasValue = false;
3355 source.subscribe(createOperatorSubscriber(subscriber, function (value) {
3356 hasValue = true;
3357 subscriber.next(value);
3358 }, function () { return (hasValue ? subscriber.complete() : subscriber.error(errorFactory())); }));
3359 });
3360 }
3361 function defaultErrorFactory() {
3362 return new EmptyError();
3363 }
3364
3365 function first(predicate, defaultValue) {
3366 var hasDefaultValue = arguments.length >= 2;
3367 return function (source) {
3368 return source.pipe(predicate ? filter(function (v, i) { return predicate(v, i, source); }) : identity$1, take(1), hasDefaultValue ? defaultIfEmpty(defaultValue) : throwIfEmpty(function () { return new EmptyError(); }));
3369 };
3370 }
3371
3372 function multicast(subjectOrSubjectFactory, selector) {
3373 var subjectFactory = isFunction(subjectOrSubjectFactory) ? subjectOrSubjectFactory : function () { return subjectOrSubjectFactory; };
3374 if (isFunction(selector)) {
3375 return connect(selector, {
3376 connector: subjectFactory,
3377 });
3378 }
3379 return function (source) { return new ConnectableObservable(source, subjectFactory); };
3380 }
3381
3382 function publishReplay(bufferSize, windowTime, selectorOrScheduler, timestampProvider) {
3383 if (selectorOrScheduler && !isFunction(selectorOrScheduler)) {
3384 timestampProvider = selectorOrScheduler;
3385 }
3386 var selector = isFunction(selectorOrScheduler) ? selectorOrScheduler : undefined;
3387 return function (source) { return multicast(new ReplaySubject(bufferSize, windowTime, timestampProvider), selector)(source); };
3388 }
3389
3390 function startWith() {
3391 var values = [];
3392 for (var _i = 0; _i < arguments.length; _i++) {
3393 values[_i] = arguments[_i];
3394 }
3395 var scheduler = popScheduler(values);
3396 return operate(function (source, subscriber) {
3397 (scheduler ? concat(values, source, scheduler) : concat(values, source)).subscribe(subscriber);
3398 });
3399 }
3400
3401 function switchMap(project, resultSelector) {
3402 return operate(function (source, subscriber) {
3403 var innerSubscriber = null;
3404 var index = 0;
3405 var isComplete = false;
3406 var checkComplete = function () { return isComplete && !innerSubscriber && subscriber.complete(); };
3407 source.subscribe(createOperatorSubscriber(subscriber, function (value) {
3408 innerSubscriber === null || innerSubscriber === void 0 ? void 0 : innerSubscriber.unsubscribe();
3409 var innerIndex = 0;
3410 var outerIndex = index++;
3411 innerFrom(project(value, outerIndex)).subscribe((innerSubscriber = createOperatorSubscriber(subscriber, function (innerValue) { return subscriber.next(resultSelector ? resultSelector(value, innerValue, outerIndex, innerIndex++) : innerValue); }, function () {
3412 innerSubscriber = null;
3413 checkComplete();
3414 })));
3415 }, function () {
3416 isComplete = true;
3417 checkComplete();
3418 }));
3419 });
3420 }
3421
3422 function tap(observerOrNext, error, complete) {
3423 var tapObserver = isFunction(observerOrNext) || error || complete
3424 ?
3425 { next: observerOrNext, error: error, complete: complete }
3426 : observerOrNext;
3427 return tapObserver
3428 ? operate(function (source, subscriber) {
3429 var _a;
3430 (_a = tapObserver.subscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);
3431 var isUnsub = true;
3432 source.subscribe(createOperatorSubscriber(subscriber, function (value) {
3433 var _a;
3434 (_a = tapObserver.next) === null || _a === void 0 ? void 0 : _a.call(tapObserver, value);
3435 subscriber.next(value);
3436 }, function () {
3437 var _a;
3438 isUnsub = false;
3439 (_a = tapObserver.complete) === null || _a === void 0 ? void 0 : _a.call(tapObserver);
3440 subscriber.complete();
3441 }, function (err) {
3442 var _a;
3443 isUnsub = false;
3444 (_a = tapObserver.error) === null || _a === void 0 ? void 0 : _a.call(tapObserver, err);
3445 subscriber.error(err);
3446 }, function () {
3447 var _a, _b;
3448 if (isUnsub) {
3449 (_a = tapObserver.unsubscribe) === null || _a === void 0 ? void 0 : _a.call(tapObserver);
3450 }
3451 (_b = tapObserver.finalize) === null || _b === void 0 ? void 0 : _b.call(tapObserver);
3452 }));
3453 })
3454 :
3455 identity$1;
3456 }
3457
3458 const l$4 = util.logger('api/util');
3459
3460 function filterEvents(txHash, { block: { extrinsics, header } }, allEvents, status) {
3461 for (const [txIndex, x] of extrinsics.entries()) {
3462 if (x.hash.eq(txHash)) {
3463 return {
3464 blockNumber: util.isCompact(header.number) ? header.number.unwrap() : header.number,
3465 events: allEvents.filter(({ phase }) => phase.isApplyExtrinsic &&
3466 phase.asApplyExtrinsic.eqn(txIndex)),
3467 txIndex
3468 };
3469 }
3470 }
3471 if (status.isInBlock) {
3472 const allHashes = extrinsics.map((x) => x.hash.toHex());
3473 l$4.warn(`block ${header.hash.toHex()}: Unable to find extrinsic ${txHash.toHex()} inside ${allHashes.join(', ')}`);
3474 }
3475 return {};
3476 }
3477
3478 function isKeyringPair(account) {
3479 return util.isFunction(account.sign);
3480 }
3481
3482 function refCountDelay(delay = 1750) {
3483 return (source) => {
3484 let [state, refCount, connection, scheduler] = [0, 0, Subscription.EMPTY, Subscription.EMPTY];
3485 return new Observable((ob) => {
3486 source.subscribe(ob);
3487 if (refCount++ === 0) {
3488 if (state === 1) {
3489 scheduler.unsubscribe();
3490 }
3491 else {
3492 connection = source.connect();
3493 }
3494 state = 3;
3495 }
3496 return () => {
3497 if (--refCount === 0) {
3498 if (state === 2) {
3499 state = 0;
3500 scheduler.unsubscribe();
3501 }
3502 else {
3503 state = 1;
3504 scheduler = asapScheduler.schedule(() => {
3505 state = 0;
3506 connection.unsubscribe();
3507 }, delay);
3508 }
3509 }
3510 };
3511 });
3512 };
3513 }
3514
3515 function CMP(a, b) {
3516 return util.stringify({ t: a }) === util.stringify({ t: b });
3517 }
3518 function ERR(error) {
3519 throw error;
3520 }
3521 function NOOP() {
3522 }
3523 function drr({ delay, skipChange = false, skipTimeout = false } = {}) {
3524 return (source$) => source$.pipe(catchError(ERR), skipChange
3525 ? tap(NOOP)
3526 : distinctUntilChanged(CMP),
3527 publishReplay(1), skipTimeout
3528 ? refCount()
3529 : refCountDelay(delay));
3530 }
3531
3532 function memo(instanceId, inner) {
3533 const options = { getInstanceId: () => instanceId };
3534 const cached = util.memoize((...params) => new Observable((observer) => {
3535 const subscription = inner(...params).subscribe(observer);
3536 return () => {
3537 cached.unmemoize(...params);
3538 subscription.unsubscribe();
3539 };
3540 }).pipe(drr()), options);
3541 return cached;
3542 }
3543
3544 const l$3 = util.logger('rpc-core');
3545 const EMPTY_META = {
3546 fallback: undefined,
3547 modifier: { isOptional: true },
3548 type: {
3549 asMap: { linked: { isTrue: false } },
3550 isMap: false
3551 }
3552 };
3553 function logErrorMessage(method, { noErrorLog, params, type }, error) {
3554 if (noErrorLog) {
3555 return;
3556 }
3557 l$3.error(`${method}(${params.map(({ isOptional, name, type }) => `${name}${isOptional ? '?' : ''}: ${type}`).join(', ')}): ${type}:: ${error.message}`);
3558 }
3559 function isTreatAsHex(key) {
3560 return ['0x3a636f6465'].includes(key.toHex());
3561 }
3562 class RpcCore {
3563 __internal__instanceId;
3564 __internal__isPedantic;
3565 __internal__registryDefault;
3566 __internal__storageCache = new Map();
3567 __internal__storageCacheHits = 0;
3568 __internal__storageCacheSize = 0;
3569 __internal__getBlockRegistry;
3570 __internal__getBlockHash;
3571 mapping = new Map();
3572 provider;
3573 sections = [];
3574 constructor(instanceId, registry, { isPedantic = true, provider, userRpc = {} }) {
3575 if (!provider || !util.isFunction(provider.send)) {
3576 throw new Error('Expected Provider to API create');
3577 }
3578 this.__internal__instanceId = instanceId;
3579 this.__internal__isPedantic = isPedantic;
3580 this.__internal__registryDefault = registry;
3581 this.provider = provider;
3582 const sectionNames = Object.keys(types.rpcDefinitions);
3583 this.sections.push(...sectionNames);
3584 this.addUserInterfaces(userRpc);
3585 }
3586 get isConnected() {
3587 return this.provider.isConnected;
3588 }
3589 connect() {
3590 return this.provider.connect();
3591 }
3592 disconnect() {
3593 return this.provider.disconnect();
3594 }
3595 get stats() {
3596 const stats = this.provider.stats;
3597 return stats
3598 ? {
3599 ...stats,
3600 core: {
3601 cacheHits: this.__internal__storageCacheHits,
3602 cacheSize: this.__internal__storageCacheSize
3603 }
3604 }
3605 : undefined;
3606 }
3607 setRegistrySwap(registrySwap) {
3608 this.__internal__getBlockRegistry = util.memoize(registrySwap, {
3609 getInstanceId: () => this.__internal__instanceId
3610 });
3611 }
3612 setResolveBlockHash(resolveBlockHash) {
3613 this.__internal__getBlockHash = util.memoize(resolveBlockHash, {
3614 getInstanceId: () => this.__internal__instanceId
3615 });
3616 }
3617 addUserInterfaces(userRpc) {
3618 this.sections.push(...Object.keys(userRpc).filter((k) => !this.sections.includes(k)));
3619 for (let s = 0, scount = this.sections.length; s < scount; s++) {
3620 const section = this.sections[s];
3621 const defs = util.objectSpread({}, types.rpcDefinitions[section], userRpc[section]);
3622 const methods = Object.keys(defs);
3623 for (let m = 0, mcount = methods.length; m < mcount; m++) {
3624 const method = methods[m];
3625 const def = defs[method];
3626 const jsonrpc = def.endpoint || `${section}_${method}`;
3627 if (!this.mapping.has(jsonrpc)) {
3628 const isSubscription = !!def.pubsub;
3629 if (!this[section]) {
3630 this[section] = {};
3631 }
3632 this.mapping.set(jsonrpc, util.objectSpread({}, def, { isSubscription, jsonrpc, method, section }));
3633 util.lazyMethod(this[section], method, () => isSubscription
3634 ? this._createMethodSubscribe(section, method, def)
3635 : this._createMethodSend(section, method, def));
3636 }
3637 }
3638 }
3639 }
3640 _memomize(creator, def) {
3641 const memoOpts = { getInstanceId: () => this.__internal__instanceId };
3642 const memoized = util.memoize(creator(true), memoOpts);
3643 memoized.raw = util.memoize(creator(false), memoOpts);
3644 memoized.meta = def;
3645 return memoized;
3646 }
3647 _formatResult(isScale, registry, blockHash, method, def, params, result) {
3648 return isScale
3649 ? this._formatOutput(registry, blockHash, method, def, params, result)
3650 : result;
3651 }
3652 _createMethodSend(section, method, def) {
3653 const rpcName = def.endpoint || `${section}_${method}`;
3654 const hashIndex = def.params.findIndex(({ isHistoric }) => isHistoric);
3655 let memoized = null;
3656 const callWithRegistry = async (isScale, values) => {
3657 const blockId = hashIndex === -1
3658 ? null
3659 : values[hashIndex];
3660 const blockHash = blockId && def.params[hashIndex].type === 'BlockNumber'
3661 ? await this.__internal__getBlockHash?.(blockId)
3662 : blockId;
3663 const { registry } = isScale && blockHash && this.__internal__getBlockRegistry
3664 ? await this.__internal__getBlockRegistry(util.u8aToU8a(blockHash))
3665 : { registry: this.__internal__registryDefault };
3666 const params = this._formatParams(registry, null, def, values);
3667 const result = await this.provider.send(rpcName, params.map((p) => p.toJSON()), !!blockHash);
3668 return this._formatResult(isScale, registry, blockHash, method, def, params, result);
3669 };
3670 const creator = (isScale) => (...values) => {
3671 const isDelayed = isScale && hashIndex !== -1 && !!values[hashIndex];
3672 return new Observable((observer) => {
3673 callWithRegistry(isScale, values)
3674 .then((value) => {
3675 observer.next(value);
3676 observer.complete();
3677 })
3678 .catch((error) => {
3679 logErrorMessage(method, def, error);
3680 observer.error(error);
3681 observer.complete();
3682 });
3683 return () => {
3684 if (isScale) {
3685 memoized?.unmemoize(...values);
3686 }
3687 else {
3688 memoized?.raw.unmemoize(...values);
3689 }
3690 };
3691 }).pipe(
3692 publishReplay(1),
3693 isDelayed
3694 ? refCountDelay()
3695 : refCount());
3696 };
3697 memoized = this._memomize(creator, def);
3698 return memoized;
3699 }
3700 _createSubscriber({ paramsJson, subName, subType, update }, errorHandler) {
3701 return new Promise((resolve, reject) => {
3702 this.provider
3703 .subscribe(subType, subName, paramsJson, update)
3704 .then(resolve)
3705 .catch((error) => {
3706 errorHandler(error);
3707 reject(error);
3708 });
3709 });
3710 }
3711 _createMethodSubscribe(section, method, def) {
3712 const [updateType, subMethod, unsubMethod] = def.pubsub;
3713 const subName = `${section}_${subMethod}`;
3714 const unsubName = `${section}_${unsubMethod}`;
3715 const subType = `${section}_${updateType}`;
3716 let memoized = null;
3717 const creator = (isScale) => (...values) => {
3718 return new Observable((observer) => {
3719 let subscriptionPromise = Promise.resolve(null);
3720 const registry = this.__internal__registryDefault;
3721 const errorHandler = (error) => {
3722 logErrorMessage(method, def, error);
3723 observer.error(error);
3724 };
3725 try {
3726 const params = this._formatParams(registry, null, def, values);
3727 const update = (error, result) => {
3728 if (error) {
3729 logErrorMessage(method, def, error);
3730 return;
3731 }
3732 try {
3733 observer.next(this._formatResult(isScale, registry, null, method, def, params, result));
3734 }
3735 catch (error) {
3736 observer.error(error);
3737 }
3738 };
3739 subscriptionPromise = this._createSubscriber({ paramsJson: params.map((p) => p.toJSON()), subName, subType, update }, errorHandler);
3740 }
3741 catch (error) {
3742 errorHandler(error);
3743 }
3744 return () => {
3745 if (isScale) {
3746 memoized?.unmemoize(...values);
3747 }
3748 else {
3749 memoized?.raw.unmemoize(...values);
3750 }
3751 subscriptionPromise
3752 .then((subscriptionId) => util.isNull(subscriptionId)
3753 ? Promise.resolve(false)
3754 : this.provider.unsubscribe(subType, unsubName, subscriptionId))
3755 .catch((error) => logErrorMessage(method, def, error));
3756 };
3757 }).pipe(drr());
3758 };
3759 memoized = this._memomize(creator, def);
3760 return memoized;
3761 }
3762 _formatParams(registry, blockHash, def, inputs) {
3763 const count = inputs.length;
3764 const reqCount = def.params.filter(({ isOptional }) => !isOptional).length;
3765 if (count < reqCount || count > def.params.length) {
3766 throw new Error(`Expected ${def.params.length} parameters${reqCount === def.params.length ? '' : ` (${def.params.length - reqCount} optional)`}, ${count} found instead`);
3767 }
3768 const params = new Array(count);
3769 for (let i = 0; i < count; i++) {
3770 params[i] = registry.createTypeUnsafe(def.params[i].type, [inputs[i]], { blockHash });
3771 }
3772 return params;
3773 }
3774 _formatOutput(registry, blockHash, method, rpc, params, result) {
3775 if (rpc.type === 'StorageData') {
3776 const key = params[0];
3777 return this._formatStorageData(registry, blockHash, key, result);
3778 }
3779 else if (rpc.type === 'StorageChangeSet') {
3780 const keys = params[0];
3781 return keys
3782 ? this._formatStorageSet(registry, result.block, keys, result.changes)
3783 : registry.createType('StorageChangeSet', result);
3784 }
3785 else if (rpc.type === 'Vec<StorageChangeSet>') {
3786 const jsonSet = result;
3787 const count = jsonSet.length;
3788 const mapped = new Array(count);
3789 for (let i = 0; i < count; i++) {
3790 const { block, changes } = jsonSet[i];
3791 mapped[i] = [
3792 registry.createType('BlockHash', block),
3793 this._formatStorageSet(registry, block, params[0], changes)
3794 ];
3795 }
3796 return method === 'queryStorageAt'
3797 ? mapped[0][1]
3798 : mapped;
3799 }
3800 return registry.createTypeUnsafe(rpc.type, [result], { blockHash });
3801 }
3802 _formatStorageData(registry, blockHash, key, value) {
3803 const isEmpty = util.isNull(value);
3804 const input = isEmpty
3805 ? null
3806 : isTreatAsHex(key)
3807 ? value
3808 : util.u8aToU8a(value);
3809 return this._newType(registry, blockHash, key, input, isEmpty);
3810 }
3811 _formatStorageSet(registry, blockHash, keys, changes) {
3812 const count = keys.length;
3813 const withCache = count !== 1;
3814 const values = new Array(count);
3815 for (let i = 0; i < count; i++) {
3816 values[i] = this._formatStorageSetEntry(registry, blockHash, keys[i], changes, withCache, i);
3817 }
3818 return values;
3819 }
3820 _formatStorageSetEntry(registry, blockHash, key, changes, withCache, entryIndex) {
3821 const hexKey = key.toHex();
3822 const found = changes.find(([key]) => key === hexKey);
3823 const isNotFound = util.isUndefined(found);
3824 if (isNotFound && withCache) {
3825 const cached = this.__internal__storageCache.get(hexKey);
3826 if (cached) {
3827 this.__internal__storageCacheHits++;
3828 return cached;
3829 }
3830 }
3831 const value = isNotFound
3832 ? null
3833 : found[1];
3834 const isEmpty = util.isNull(value);
3835 const input = isEmpty || isTreatAsHex(key)
3836 ? value
3837 : util.u8aToU8a(value);
3838 const codec = this._newType(registry, blockHash, key, input, isEmpty, entryIndex);
3839 this.__internal__storageCache.set(hexKey, codec);
3840 this.__internal__storageCacheSize++;
3841 return codec;
3842 }
3843 _newType(registry, blockHash, key, input, isEmpty, entryIndex = -1) {
3844 const type = key.outputType || 'Raw';
3845 const meta = key.meta || EMPTY_META;
3846 const entryNum = entryIndex === -1
3847 ? ''
3848 : ` entry ${entryIndex}:`;
3849 try {
3850 return registry.createTypeUnsafe(type, [
3851 isEmpty
3852 ? meta.fallback
3853 ? type.includes('Linkage<')
3854 ? util.u8aConcat(util.hexToU8a(meta.fallback.toHex()), new Uint8Array(2))
3855 : util.hexToU8a(meta.fallback.toHex())
3856 : undefined
3857 : meta.modifier.isOptional
3858 ? registry.createTypeUnsafe(type, [input], { blockHash, isPedantic: this.__internal__isPedantic })
3859 : input
3860 ], { blockHash, isFallback: isEmpty && !!meta.fallback, isOptional: meta.modifier.isOptional, isPedantic: this.__internal__isPedantic && !meta.modifier.isOptional });
3861 }
3862 catch (error) {
3863 throw new Error(`Unable to decode storage ${key.section || 'unknown'}.${key.method || 'unknown'}:${entryNum}: ${error.message}`);
3864 }
3865 }
3866 }
3867
3868 function unwrapBlockNumber(hdr) {
3869 return util.isCompact(hdr.number)
3870 ? hdr.number.unwrap()
3871 : hdr.number;
3872 }
3873
3874 const deriveNoopCache = {
3875 del: () => undefined,
3876 forEach: () => undefined,
3877 get: () => undefined,
3878 set: (_, value) => value
3879 };
3880
3881 const CHACHE_EXPIRY = 7 * (24 * 60) * (60 * 1000);
3882 let deriveCache;
3883 function wrapCache(keyStart, cache) {
3884 return {
3885 del: (partial) => cache.del(`${keyStart}${partial}`),
3886 forEach: cache.forEach,
3887 get: (partial) => {
3888 const key = `${keyStart}${partial}`;
3889 const cached = cache.get(key);
3890 if (cached) {
3891 cached.x = Date.now();
3892 cache.set(key, cached);
3893 return cached.v;
3894 }
3895 return undefined;
3896 },
3897 set: (partial, v) => {
3898 cache.set(`${keyStart}${partial}`, { v, x: Date.now() });
3899 }
3900 };
3901 }
3902 function clearCache(cache) {
3903 const now = Date.now();
3904 const all = [];
3905 cache.forEach((key, { x }) => {
3906 ((now - x) > CHACHE_EXPIRY) && all.push(key);
3907 });
3908 all.forEach((key) => cache.del(key));
3909 }
3910 function setDeriveCache(prefix = '', cache) {
3911 deriveCache = cache
3912 ? wrapCache(`derive:${prefix}:`, cache)
3913 : deriveNoopCache;
3914 if (cache) {
3915 clearCache(cache);
3916 }
3917 }
3918 setDeriveCache();
3919
3920 function firstObservable(obs) {
3921 return obs.pipe(map(([a]) => a));
3922 }
3923 function firstMemo(fn) {
3924 return (instanceId, api) => memo(instanceId, (...args) => firstObservable(fn(api, ...args)));
3925 }
3926
3927 function lazyDeriveSection(result, section, getKeys, creator) {
3928 util.lazyMethod(result, section, () => util.lazyMethods({}, getKeys(section), (method) => creator(section, method)));
3929 }
3930
3931 function accountId(instanceId, api) {
3932 return memo(instanceId, (address) => {
3933 const decoded = util.isU8a(address)
3934 ? address
3935 : utilCrypto.decodeAddress((address || '').toString());
3936 if (decoded.length > 8) {
3937 return of(api.registry.createType('AccountId', decoded));
3938 }
3939 const accountIndex = api.registry.createType('AccountIndex', decoded);
3940 return api.derive.accounts.indexToId(accountIndex.toString()).pipe(map((a) => util.assertReturn(a, 'Unable to retrieve accountId')));
3941 });
3942 }
3943
3944 function parseFlags(address, [electionsMembers, councilMembers, technicalCommitteeMembers, societyMembers, sudoKey]) {
3945 const addrStr = address?.toString();
3946 const isIncluded = (id) => id.toString() === addrStr;
3947 return {
3948 isCouncil: (electionsMembers?.map((r) => Array.isArray(r) ? r[0] : r.who) || councilMembers || []).some(isIncluded),
3949 isSociety: (societyMembers || []).some(isIncluded),
3950 isSudo: sudoKey?.toString() === addrStr,
3951 isTechCommittee: (technicalCommitteeMembers || []).some(isIncluded)
3952 };
3953 }
3954 function _flags(instanceId, api) {
3955 return memo(instanceId, () => {
3956 const results = [undefined, [], [], [], undefined];
3957 const calls = [
3958 (api.query.elections || api.query['phragmenElection'] || api.query['electionsPhragmen'])?.members,
3959 api.query.council?.members,
3960 api.query.technicalCommittee?.members,
3961 api.query.society?.members,
3962 api.query.sudo?.key
3963 ];
3964 const filtered = calls.filter((c) => c);
3965 if (!filtered.length) {
3966 return of(results);
3967 }
3968 return api.queryMulti(filtered).pipe(map((values) => {
3969 let resultIndex = -1;
3970 for (let i = 0, count = calls.length; i < count; i++) {
3971 if (util.isFunction(calls[i])) {
3972 results[i] = values[++resultIndex];
3973 }
3974 }
3975 return results;
3976 }));
3977 });
3978 }
3979 function flags(instanceId, api) {
3980 return memo(instanceId, (address) => api.derive.accounts._flags().pipe(map((r) => parseFlags(address, r))));
3981 }
3982
3983 function idAndIndex(instanceId, api) {
3984 return memo(instanceId, (address) => {
3985 try {
3986 const decoded = util.isU8a(address)
3987 ? address
3988 : utilCrypto.decodeAddress((address || '').toString());
3989 if (decoded.length > 8) {
3990 const accountId = api.registry.createType('AccountId', decoded);
3991 return api.derive.accounts.idToIndex(accountId).pipe(map((accountIndex) => [accountId, accountIndex]));
3992 }
3993 const accountIndex = api.registry.createType('AccountIndex', decoded);
3994 return api.derive.accounts.indexToId(accountIndex.toString()).pipe(map((accountId) => [accountId, accountIndex]));
3995 }
3996 catch {
3997 return of([undefined, undefined]);
3998 }
3999 });
4000 }
4001
4002 const UNDEF_HEX = { toHex: () => undefined };
4003 function dataAsString(data) {
4004 if (!data) {
4005 return data;
4006 }
4007 return data.isRaw
4008 ? util.u8aToString(data.asRaw.toU8a(true))
4009 : data.isNone
4010 ? undefined
4011 : data.toHex();
4012 }
4013 function extractOther(additional) {
4014 return additional.reduce((other, [_key, _value]) => {
4015 const key = dataAsString(_key);
4016 const value = dataAsString(_value);
4017 if (key && value) {
4018 other[key] = value;
4019 }
4020 return other;
4021 }, {});
4022 }
4023 function identityCompat(identityOfOpt) {
4024 const identity = identityOfOpt.unwrap();
4025 return Array.isArray(identity)
4026 ? identity[0]
4027 : identity;
4028 }
4029 function extractIdentity(identityOfOpt, superOf) {
4030 if (!identityOfOpt?.isSome) {
4031 return { judgements: [] };
4032 }
4033 const { info, judgements } = identityCompat(identityOfOpt);
4034 const topDisplay = dataAsString(info.display);
4035 return {
4036 discord: dataAsString(info.discord),
4037 display: (superOf && dataAsString(superOf[1])) || topDisplay,
4038 displayParent: superOf && topDisplay,
4039 email: dataAsString(info.email),
4040 github: dataAsString(info.github),
4041 image: dataAsString(info.image),
4042 judgements,
4043 legal: dataAsString(info.legal),
4044 matrix: dataAsString(info.matrix),
4045 other: info.additional ? extractOther(info.additional) : {},
4046 parent: superOf?.[0],
4047 pgp: info.pgpFingerprint.unwrapOr(UNDEF_HEX).toHex(),
4048 riot: dataAsString(info.riot),
4049 twitter: dataAsString(info.twitter),
4050 web: dataAsString(info.web)
4051 };
4052 }
4053 function getParent(api, identityOfOpt, superOfOpt) {
4054 if (identityOfOpt?.isSome) {
4055 return of([identityOfOpt, undefined]);
4056 }
4057 else if (superOfOpt?.isSome) {
4058 const superOf = superOfOpt.unwrap();
4059 return combineLatest([
4060 api.derive.accounts._identity(superOf[0]).pipe(map(([info]) => info)),
4061 of(superOf)
4062 ]);
4063 }
4064 return of([undefined, undefined]);
4065 }
4066 function _identity(instanceId, api) {
4067 return memo(instanceId, (accountId) => accountId && api.query.identity?.identityOf
4068 ? combineLatest([
4069 api.query.identity.identityOf(accountId),
4070 api.query.identity.superOf(accountId)
4071 ])
4072 : of([undefined, undefined]));
4073 }
4074 function identity(instanceId, api) {
4075 return memo(instanceId, (accountId) => api.derive.accounts._identity(accountId).pipe(switchMap(([identityOfOpt, superOfOpt]) => getParent(api, identityOfOpt, superOfOpt)), map(([identityOfOpt, superOf]) => extractIdentity(identityOfOpt, superOf))));
4076 }
4077 const hasIdentity = firstMemo((api, accountId) => api.derive.accounts.hasIdentityMulti([accountId]));
4078 function hasIdentityMulti(instanceId, api) {
4079 return memo(instanceId, (accountIds) => api.query.identity?.identityOf
4080 ? combineLatest([
4081 api.query.identity.identityOf.multi(accountIds),
4082 api.query.identity.superOf.multi(accountIds)
4083 ]).pipe(map(([identities, supers]) => identities.map((identityOfOpt, index) => {
4084 const superOfOpt = supers[index];
4085 const parentId = superOfOpt && superOfOpt.isSome
4086 ? superOfOpt.unwrap()[0].toString()
4087 : undefined;
4088 let display;
4089 if (identityOfOpt && identityOfOpt.isSome) {
4090 const value = dataAsString(identityCompat(identityOfOpt).info.display);
4091 if (value && !util.isHex(value)) {
4092 display = value;
4093 }
4094 }
4095 return { display, hasIdentity: !!(display || parentId), parentId };
4096 })))
4097 : of(accountIds.map(() => ({ hasIdentity: false }))));
4098 }
4099
4100 function idToIndex(instanceId, api) {
4101 return memo(instanceId, (accountId) => api.derive.accounts.indexes().pipe(map((indexes) => indexes[accountId.toString()])));
4102 }
4103
4104 let indicesCache = null;
4105 function queryAccounts(api) {
4106 return api.query.indices.accounts.entries().pipe(map((entries) => entries.reduce((indexes, [key, idOpt]) => {
4107 if (idOpt.isSome) {
4108 indexes[idOpt.unwrap()[0].toString()] = api.registry.createType('AccountIndex', key.args[0]);
4109 }
4110 return indexes;
4111 }, {})));
4112 }
4113 function indexes$1(instanceId, api) {
4114 return memo(instanceId, () => indicesCache
4115 ? of(indicesCache)
4116 : (api.query.indices
4117 ? queryAccounts(api).pipe(startWith({}))
4118 : of({})).pipe(map((indices) => {
4119 indicesCache = indices;
4120 return indices;
4121 })));
4122 }
4123
4124 function indexToId(instanceId, api) {
4125 return memo(instanceId, (accountIndex) => api.query.indices
4126 ? api.query.indices.accounts(accountIndex).pipe(map((optResult) => optResult.unwrapOr([])[0]))
4127 : of(undefined));
4128 }
4129
4130 function retrieveNick(api, accountId) {
4131 return (accountId && api.query['nicks']?.['nameOf']
4132 ? api.query['nicks']['nameOf'](accountId)
4133 : of(undefined)).pipe(map((nameOf) => nameOf?.isSome
4134 ? util.u8aToString(nameOf.unwrap()[0]).substring(0, api.consts['nicks']['maxLength'].toNumber())
4135 : undefined));
4136 }
4137 function info$4(instanceId, api) {
4138 return memo(instanceId, (address) => api.derive.accounts.idAndIndex(address).pipe(switchMap(([accountId, accountIndex]) => combineLatest([
4139 of({ accountId, accountIndex }),
4140 api.derive.accounts.identity(accountId),
4141 retrieveNick(api, accountId)
4142 ])), map(([{ accountId, accountIndex }, identity, nickname]) => ({
4143 accountId, accountIndex, identity, nickname
4144 }))));
4145 }
4146
4147 const accounts$1 = /*#__PURE__*/Object.freeze({
4148 __proto__: null,
4149 _flags: _flags,
4150 _identity: _identity,
4151 accountId: accountId,
4152 flags: flags,
4153 hasIdentity: hasIdentity,
4154 hasIdentityMulti: hasIdentityMulti,
4155 idAndIndex: idAndIndex,
4156 idToIndex: idToIndex,
4157 identity: identity,
4158 indexToId: indexToId,
4159 indexes: indexes$1,
4160 info: info$4
4161 });
4162
4163 function getInstance(api, section) {
4164 const instances = api.registry.getModuleInstances(api.runtimeVersion.specName, section);
4165 const name = instances?.length
4166 ? instances[0]
4167 : section;
4168 return api.query[name];
4169 }
4170 function withSection(section, fn) {
4171 return (instanceId, api) => memo(instanceId, fn(getInstance(api, section), api, instanceId));
4172 }
4173 function callMethod(method, empty) {
4174 return (section) => withSection(section, (query) => () => util.isFunction(query?.[method])
4175 ? query[method]()
4176 : of(empty));
4177 }
4178
4179 const members$5 = callMethod('members', []);
4180
4181 function prime$4(section) {
4182 return withSection(section, (query) => () => util.isFunction(query?.prime)
4183 ? query.prime().pipe(map((o) => o.unwrapOr(null)))
4184 : of(null));
4185 }
4186
4187 function parse$4(api, [hashes, proposals, votes]) {
4188 return proposals.map((o, index) => ({
4189 hash: api.registry.createType('Hash', hashes[index]),
4190 proposal: o && o.isSome
4191 ? o.unwrap()
4192 : null,
4193 votes: votes[index].unwrapOr(null)
4194 }));
4195 }
4196 function _proposalsFrom(api, query, hashes) {
4197 return (util.isFunction(query?.proposals) && hashes.length
4198 ? combineLatest([
4199 of(hashes),
4200 query.proposalOf.multi(hashes).pipe(catchError(() => of(hashes.map(() => null)))),
4201 query.voting.multi(hashes)
4202 ])
4203 : of([[], [], []])).pipe(map((r) => parse$4(api, r)));
4204 }
4205 function hasProposals$4(section) {
4206 return withSection(section, (query) => () => of(util.isFunction(query?.proposals)));
4207 }
4208 function proposals$6(section) {
4209 return withSection(section, (query, api) => () => api.derive[section].proposalHashes().pipe(switchMap((all) => _proposalsFrom(api, query, all))));
4210 }
4211 function proposal$4(section) {
4212 return withSection(section, (query, api) => (hash) => util.isFunction(query?.proposals)
4213 ? firstObservable(_proposalsFrom(api, query, [hash]))
4214 : of(null));
4215 }
4216 const proposalCount$4 = callMethod('proposalCount', null);
4217 const proposalHashes$4 = callMethod('proposals', []);
4218
4219 const members$4 = members$5('allianceMotion');
4220 const hasProposals$3 = hasProposals$4('allianceMotion');
4221 const proposal$3 = proposal$4('allianceMotion');
4222 const proposalCount$3 = proposalCount$4('allianceMotion');
4223 const proposalHashes$3 = proposalHashes$4('allianceMotion');
4224 const proposals$5 = proposals$6('allianceMotion');
4225 const prime$3 = prime$4('allianceMotion');
4226
4227 const alliance = /*#__PURE__*/Object.freeze({
4228 __proto__: null,
4229 hasProposals: hasProposals$3,
4230 members: members$4,
4231 prime: prime$3,
4232 proposal: proposal$3,
4233 proposalCount: proposalCount$3,
4234 proposalHashes: proposalHashes$3,
4235 proposals: proposals$5
4236 });
4237
4238 function getQueryInterface(api) {
4239 return (
4240 api.query.voterList ||
4241 api.query['voterBagsList'] ||
4242 api.query['bagsList']);
4243 }
4244
4245 function orderBags(ids, bags) {
4246 const sorted = ids
4247 .map((id, index) => ({
4248 bag: bags[index].unwrapOr(null),
4249 id,
4250 key: id.toString()
4251 }))
4252 .sort((a, b) => b.id.cmp(a.id));
4253 const max = sorted.length - 1;
4254 return sorted.map((entry, index) => util.objectSpread(entry, {
4255 bagLower: index === max
4256 ? util.BN_ZERO
4257 : sorted[index + 1].id,
4258 bagUpper: entry.id,
4259 index
4260 }));
4261 }
4262 function _getIds(instanceId, api) {
4263 const query = getQueryInterface(api);
4264 return memo(instanceId, (_ids) => {
4265 const ids = _ids.map((id) => util.bnToBn(id));
4266 return ids.length
4267 ? query.listBags.multi(ids).pipe(map((bags) => orderBags(ids, bags)))
4268 : of([]);
4269 });
4270 }
4271 function all$1(instanceId, api) {
4272 const query = getQueryInterface(api);
4273 return memo(instanceId, () => query.listBags.keys().pipe(switchMap((keys) => api.derive.bagsList._getIds(keys.map(({ args: [id] }) => id))), map((list) => list.filter(({ bag }) => bag))));
4274 }
4275 function get(instanceId, api) {
4276 return memo(instanceId, (id) => api.derive.bagsList._getIds([util.bnToBn(id)]).pipe(map((bags) => bags[0])));
4277 }
4278
4279 function expand(instanceId, api) {
4280 return memo(instanceId, (bag) => api.derive.bagsList.listNodes(bag.bag).pipe(map((nodes) => util.objectSpread({ nodes }, bag))));
4281 }
4282 function getExpanded(instanceId, api) {
4283 return memo(instanceId, (id) => api.derive.bagsList.get(id).pipe(switchMap((bag) => api.derive.bagsList.expand(bag))));
4284 }
4285
4286 function traverseLinks(api, head) {
4287 const subject = new BehaviorSubject(head);
4288 const query = getQueryInterface(api);
4289 return subject.pipe(switchMap((account) => query.listNodes(account)), tap((node) => {
4290 util.nextTick(() => {
4291 node.isSome && node.value.next.isSome
4292 ? subject.next(node.unwrap().next.unwrap())
4293 : subject.complete();
4294 });
4295 }), toArray(),
4296 map((all) => all.map((o) => o.unwrap())));
4297 }
4298 function listNodes(instanceId, api) {
4299 return memo(instanceId, (bag) => bag && bag.head.isSome
4300 ? traverseLinks(api, bag.head.unwrap())
4301 : of([]));
4302 }
4303
4304 const bagsList = /*#__PURE__*/Object.freeze({
4305 __proto__: null,
4306 _getIds: _getIds,
4307 all: all$1,
4308 expand: expand,
4309 get: get,
4310 getExpanded: getExpanded,
4311 listNodes: listNodes
4312 });
4313
4314 const VESTING_ID = '0x76657374696e6720';
4315 function calcLocked(api, bestNumber, locks) {
4316 let lockedBalance = api.registry.createType('Balance');
4317 let lockedBreakdown = [];
4318 let vestingLocked = api.registry.createType('Balance');
4319 let allLocked = false;
4320 if (Array.isArray(locks)) {
4321 lockedBreakdown = locks.filter(({ until }) => !until || (bestNumber && until.gt(bestNumber)));
4322 allLocked = lockedBreakdown.some(({ amount }) => amount && amount.isMax());
4323 vestingLocked = api.registry.createType('Balance', lockedBreakdown.filter(({ id }) => id.eq(VESTING_ID)).reduce((result, { amount }) => result.iadd(amount), new util.BN(0)));
4324 const notAll = lockedBreakdown.filter(({ amount }) => amount && !amount.isMax());
4325 if (notAll.length) {
4326 lockedBalance = api.registry.createType('Balance', util.bnMax(...notAll.map(({ amount }) => amount)));
4327 }
4328 }
4329 return { allLocked, lockedBalance, lockedBreakdown, vestingLocked };
4330 }
4331 function calcShared(api, bestNumber, data, locks) {
4332 const { allLocked, lockedBalance, lockedBreakdown, vestingLocked } = calcLocked(api, bestNumber, locks);
4333 return util.objectSpread({}, data, {
4334 availableBalance: api.registry.createType('Balance', allLocked ? 0 : util.bnMax(new util.BN(0), data?.freeBalance ? data.freeBalance.sub(lockedBalance) : new util.BN(0))),
4335 lockedBalance,
4336 lockedBreakdown,
4337 vestingLocked
4338 });
4339 }
4340 function calcVesting(bestNumber, shared, _vesting) {
4341 const vesting = _vesting || [];
4342 const isVesting = !shared.vestingLocked.isZero();
4343 const vestedBalances = vesting.map(({ locked, perBlock, startingBlock }) => bestNumber.gt(startingBlock)
4344 ? util.bnMin(locked, perBlock.mul(bestNumber.sub(startingBlock)))
4345 : util.BN_ZERO);
4346 const vestedBalance = vestedBalances.reduce((all, value) => all.iadd(value), new util.BN(0));
4347 const vestingTotal = vesting.reduce((all, { locked }) => all.iadd(locked), new util.BN(0));
4348 return {
4349 isVesting,
4350 vestedBalance,
4351 vestedClaimable: isVesting
4352 ? shared.vestingLocked.sub(vestingTotal.sub(vestedBalance))
4353 : util.BN_ZERO,
4354 vesting: vesting
4355 .map(({ locked, perBlock, startingBlock }, index) => ({
4356 endBlock: locked.div(perBlock).iadd(startingBlock),
4357 locked,
4358 perBlock,
4359 startingBlock,
4360 vested: vestedBalances[index]
4361 }))
4362 .filter(({ locked }) => !locked.isZero()),
4363 vestingTotal
4364 };
4365 }
4366 function calcBalances$1(api, result) {
4367 const [data, [vesting, allLocks, namedReserves], bestNumber] = result;
4368 const shared = calcShared(api, bestNumber, data, allLocks[0]);
4369 return util.objectSpread(shared, calcVesting(bestNumber, shared, vesting), {
4370 accountId: data.accountId,
4371 accountNonce: data.accountNonce,
4372 additional: allLocks
4373 .slice(1)
4374 .map((l, index) => calcShared(api, bestNumber, data.additional[index], l)),
4375 namedReserves
4376 });
4377 }
4378 function queryOld(api, accountId) {
4379 return combineLatest([
4380 api.query.balances.locks(accountId),
4381 api.query.balances['vesting'](accountId)
4382 ]).pipe(map(([locks, optVesting]) => {
4383 let vestingNew = null;
4384 if (optVesting.isSome) {
4385 const { offset: locked, perBlock, startingBlock } = optVesting.unwrap();
4386 vestingNew = api.registry.createType('VestingInfo', { locked, perBlock, startingBlock });
4387 }
4388 return [
4389 vestingNew
4390 ? [vestingNew]
4391 : null,
4392 [locks],
4393 []
4394 ];
4395 }));
4396 }
4397 const isNonNullable = (nullable) => !!nullable;
4398 function createCalls(calls) {
4399 return [
4400 calls.map((c) => !c),
4401 calls.filter(isNonNullable)
4402 ];
4403 }
4404 function queryCurrent(api, accountId, balanceInstances = ['balances']) {
4405 const [lockEmpty, lockQueries] = createCalls(balanceInstances.map((m) => api.derive[m]?.customLocks || api.query[m]?.locks));
4406 const [reserveEmpty, reserveQueries] = createCalls(balanceInstances.map((m) => api.query[m]?.reserves));
4407 return combineLatest([
4408 api.query.vesting?.vesting
4409 ? api.query.vesting.vesting(accountId)
4410 : of(api.registry.createType('Option<VestingInfo>')),
4411 lockQueries.length
4412 ? combineLatest(lockQueries.map((c) => c(accountId)))
4413 : of([]),
4414 reserveQueries.length
4415 ? combineLatest(reserveQueries.map((c) => c(accountId)))
4416 : of([])
4417 ]).pipe(map(([opt, locks, reserves]) => {
4418 let offsetLock = -1;
4419 let offsetReserve = -1;
4420 const vesting = opt.unwrapOr(null);
4421 return [
4422 vesting
4423 ? Array.isArray(vesting)
4424 ? vesting
4425 : [vesting]
4426 : null,
4427 lockEmpty.map((e) => e ? api.registry.createType('Vec<BalanceLock>') : locks[++offsetLock]),
4428 reserveEmpty.map((e) => e ? api.registry.createType('Vec<PalletBalancesReserveData>') : reserves[++offsetReserve])
4429 ];
4430 }));
4431 }
4432 function all(instanceId, api) {
4433 const balanceInstances = api.registry.getModuleInstances(api.runtimeVersion.specName, 'balances');
4434 return memo(instanceId, (address) => combineLatest([
4435 api.derive.balances.account(address),
4436 util.isFunction(api.query.system?.account) || util.isFunction(api.query.balances?.account)
4437 ? queryCurrent(api, address, balanceInstances)
4438 : queryOld(api, address)
4439 ]).pipe(switchMap(([account, locks]) => combineLatest([
4440 of(account),
4441 of(locks),
4442 api.derive.chain.bestNumber()
4443 ])), map((result) => calcBalances$1(api, result))));
4444 }
4445
4446 function zeroBalance(api) {
4447 return api.registry.createType('Balance');
4448 }
4449 function getBalance(api, [freeBalance, reservedBalance, frozenFee, frozenMisc]) {
4450 const votingBalance = api.registry.createType('Balance', freeBalance.toBn());
4451 return {
4452 freeBalance,
4453 frozenFee,
4454 frozenMisc,
4455 reservedBalance,
4456 votingBalance
4457 };
4458 }
4459 function calcBalances(api, [accountId, [accountNonce, [primary, ...additional]]]) {
4460 return util.objectSpread({
4461 accountId,
4462 accountNonce,
4463 additional: additional.map((b) => getBalance(api, b))
4464 }, getBalance(api, primary));
4465 }
4466 function queryBalancesFree(api, accountId) {
4467 return combineLatest([
4468 api.query.balances['freeBalance'](accountId),
4469 api.query.balances['reservedBalance'](accountId),
4470 api.query.system['accountNonce'](accountId)
4471 ]).pipe(map(([freeBalance, reservedBalance, accountNonce]) => [
4472 accountNonce,
4473 [[freeBalance, reservedBalance, zeroBalance(api), zeroBalance(api)]]
4474 ]));
4475 }
4476 function queryNonceOnly(api, accountId) {
4477 const fill = (nonce) => [
4478 nonce,
4479 [[zeroBalance(api), zeroBalance(api), zeroBalance(api), zeroBalance(api)]]
4480 ];
4481 return util.isFunction(api.query.system.account)
4482 ? api.query.system.account(accountId).pipe(map(({ nonce }) => fill(nonce)))
4483 : util.isFunction(api.query.system['accountNonce'])
4484 ? api.query.system['accountNonce'](accountId).pipe(map((nonce) => fill(nonce)))
4485 : of(fill(api.registry.createType('Index')));
4486 }
4487 function queryBalancesAccount(api, accountId, modules = ['balances']) {
4488 const balances = modules
4489 .map((m) => api.derive[m]?.customAccount || api.query[m]?.account)
4490 .filter((q) => util.isFunction(q));
4491 const extract = (nonce, data) => [
4492 nonce,
4493 data.map(({ feeFrozen, free, miscFrozen, reserved }) => [free, reserved, feeFrozen, miscFrozen])
4494 ];
4495 return balances.length
4496 ? util.isFunction(api.query.system.account)
4497 ? combineLatest([
4498 api.query.system.account(accountId),
4499 ...balances.map((c) => c(accountId))
4500 ]).pipe(map(([{ nonce }, ...balances]) => extract(nonce, balances)))
4501 : combineLatest([
4502 api.query.system['accountNonce'](accountId),
4503 ...balances.map((c) => c(accountId))
4504 ]).pipe(map(([nonce, ...balances]) => extract(nonce, balances)))
4505 : queryNonceOnly(api, accountId);
4506 }
4507 function querySystemAccount(api, accountId) {
4508 return api.query.system.account(accountId).pipe(map((infoOrTuple) => {
4509 const data = infoOrTuple.nonce
4510 ? infoOrTuple.data
4511 : infoOrTuple[1];
4512 const nonce = infoOrTuple.nonce || infoOrTuple[0];
4513 if (!data || data.isEmpty) {
4514 return [
4515 nonce,
4516 [[zeroBalance(api), zeroBalance(api), zeroBalance(api), zeroBalance(api)]]
4517 ];
4518 }
4519 const { feeFrozen, free, miscFrozen, reserved } = data;
4520 return [
4521 nonce,
4522 [[free, reserved, feeFrozen, miscFrozen]]
4523 ];
4524 }));
4525 }
4526 function account$1(instanceId, api) {
4527 const balanceInstances = api.registry.getModuleInstances(api.runtimeVersion.specName, 'balances');
4528 const nonDefaultBalances = balanceInstances && balanceInstances[0] !== 'balances';
4529 return memo(instanceId, (address) => api.derive.accounts.accountId(address).pipe(switchMap((accountId) => (accountId
4530 ? combineLatest([
4531 of(accountId),
4532 nonDefaultBalances
4533 ? queryBalancesAccount(api, accountId, balanceInstances)
4534 : util.isFunction(api.query.system?.account)
4535 ? querySystemAccount(api, accountId)
4536 : util.isFunction(api.query.balances?.account)
4537 ? queryBalancesAccount(api, accountId)
4538 : util.isFunction(api.query.balances?.['freeBalance'])
4539 ? queryBalancesFree(api, accountId)
4540 : queryNonceOnly(api, accountId)
4541 ])
4542 : of([api.registry.createType('AccountId'), [
4543 api.registry.createType('Index'),
4544 [[zeroBalance(api), zeroBalance(api), zeroBalance(api), zeroBalance(api)]]
4545 ]]))), map((result) => calcBalances(api, result))));
4546 }
4547
4548 function votingBalances(instanceId, api) {
4549 return memo(instanceId, (addresses) => !addresses?.length
4550 ? of([])
4551 : combineLatest(addresses.map((accountId) => api.derive.balances.account(accountId))));
4552 }
4553
4554 const votingBalance = all;
4555
4556 const balances = /*#__PURE__*/Object.freeze({
4557 __proto__: null,
4558 account: account$1,
4559 all: all,
4560 votingBalance: votingBalance,
4561 votingBalances: votingBalances
4562 });
4563
4564 function filterBountiesProposals(api, allProposals) {
4565 const bountyTxBase = api.tx.bounties ? api.tx.bounties : api.tx.treasury;
4566 const bountyProposalCalls = [bountyTxBase.approveBounty, bountyTxBase.closeBounty, bountyTxBase.proposeCurator, bountyTxBase.unassignCurator];
4567 return allProposals.filter((proposal) => bountyProposalCalls.find((bountyCall) => proposal.proposal && bountyCall.is(proposal.proposal)));
4568 }
4569
4570 function parseResult$2([maybeBounties, maybeDescriptions, ids, bountyProposals]) {
4571 const bounties = [];
4572 maybeBounties.forEach((bounty, index) => {
4573 if (bounty.isSome) {
4574 bounties.push({
4575 bounty: bounty.unwrap(),
4576 description: maybeDescriptions[index].unwrapOrDefault().toUtf8(),
4577 index: ids[index],
4578 proposals: bountyProposals.filter((bountyProposal) => bountyProposal.proposal && ids[index].eq(bountyProposal.proposal.args[0]))
4579 });
4580 }
4581 });
4582 return bounties;
4583 }
4584 function bounties$1(instanceId, api) {
4585 const bountyBase = api.query.bounties || api.query.treasury;
4586 return memo(instanceId, () => bountyBase.bounties
4587 ? combineLatest([
4588 bountyBase.bountyCount(),
4589 api.query.council
4590 ? api.query.council.proposalCount()
4591 : of(0)
4592 ]).pipe(switchMap(() => combineLatest([
4593 bountyBase.bounties.keys(),
4594 api.derive.council
4595 ? api.derive.council.proposals()
4596 : of([])
4597 ])), switchMap(([keys, proposals]) => {
4598 const ids = keys.map(({ args: [id] }) => id);
4599 return combineLatest([
4600 bountyBase.bounties.multi(ids),
4601 bountyBase.bountyDescriptions.multi(ids),
4602 of(ids),
4603 of(filterBountiesProposals(api, proposals))
4604 ]);
4605 }), map(parseResult$2))
4606 : of(parseResult$2([[], [], [], []])));
4607 }
4608
4609 const bounties = /*#__PURE__*/Object.freeze({
4610 __proto__: null,
4611 bounties: bounties$1
4612 });
4613
4614 function createBlockNumberDerive(fn) {
4615 return (instanceId, api) => memo(instanceId, () => fn(api).pipe(map(unwrapBlockNumber)));
4616 }
4617 function getAuthorDetailsWithAt(header, queryAt) {
4618 const validators = queryAt.session?.validators
4619 ? queryAt.session.validators()
4620 : of(null);
4621 const { logs: [log] } = header.digest;
4622 const loggedAuthor = (log && ((log.isConsensus && log.asConsensus[0].isNimbus && log.asConsensus[1]) ||
4623 (log.isPreRuntime && log.asPreRuntime[0].isNimbus && log.asPreRuntime[1])));
4624 if (loggedAuthor) {
4625 if (queryAt['authorMapping']?.['mappingWithDeposit']) {
4626 return combineLatest([
4627 of(header),
4628 validators,
4629 queryAt['authorMapping']['mappingWithDeposit'](loggedAuthor).pipe(map((o) => o.unwrapOr({ account: null }).account))
4630 ]);
4631 }
4632 if (queryAt['parachainStaking']?.['selectedCandidates'] && queryAt.session?.nextKeys) {
4633 const loggedHex = loggedAuthor.toHex();
4634 return combineLatest([
4635 of(header),
4636 validators,
4637 queryAt['parachainStaking']['selectedCandidates']().pipe(mergeMap((selectedCandidates) => combineLatest([
4638 of(selectedCandidates),
4639 queryAt.session.nextKeys.multi(selectedCandidates).pipe(map((nextKeys) => nextKeys.findIndex((o) => o.unwrapOrDefault().nimbus.toHex() === loggedHex)))
4640 ])), map(([selectedCandidates, index]) => index === -1
4641 ? null
4642 : selectedCandidates[index]))
4643 ]);
4644 }
4645 }
4646 return combineLatest([
4647 of(header),
4648 validators,
4649 of(null)
4650 ]);
4651 }
4652 function getAuthorDetails(api, header, blockHash) {
4653 return api.queryAt(header.parentHash.isEmpty
4654 ? blockHash || header.hash
4655 : header.parentHash).pipe(switchMap((queryAt) => getAuthorDetailsWithAt(header, queryAt)));
4656 }
4657
4658 const bestNumber = createBlockNumberDerive((api) => api.rpc.chain.subscribeNewHeads());
4659
4660 const bestNumberFinalized = createBlockNumberDerive((api) => api.rpc.chain.subscribeFinalizedHeads());
4661
4662 function bestNumberLag(instanceId, api) {
4663 return memo(instanceId, () => combineLatest([
4664 api.derive.chain.bestNumber(),
4665 api.derive.chain.bestNumberFinalized()
4666 ]).pipe(map(([bestNumber, bestNumberFinalized]) => api.registry.createType('BlockNumber', bestNumber.sub(bestNumberFinalized)))));
4667 }
4668
4669 function extractAuthor(digest, sessionValidators) {
4670 const [citem] = digest.logs.filter((e) => e.isConsensus);
4671 const [pitem] = digest.logs.filter((e) => e.isPreRuntime);
4672 const [sitem] = digest.logs.filter((e) => e.isSeal);
4673 let accountId;
4674 try {
4675 if (pitem) {
4676 const [engine, data] = pitem.asPreRuntime;
4677 accountId = engine.extractAuthor(data, sessionValidators);
4678 }
4679 if (!accountId && citem) {
4680 const [engine, data] = citem.asConsensus;
4681 accountId = engine.extractAuthor(data, sessionValidators);
4682 }
4683 if (!accountId && sitem) {
4684 const [engine, data] = sitem.asSeal;
4685 accountId = engine.extractAuthor(data, sessionValidators);
4686 }
4687 }
4688 catch {
4689 }
4690 return accountId;
4691 }
4692
4693 function createHeaderExtended(registry, header, validators, author) {
4694 const HeaderBase = registry.createClass('Header');
4695 class Implementation extends HeaderBase {
4696 __internal__author;
4697 constructor(registry, header, validators, author) {
4698 super(registry, header);
4699 this.__internal__author = author || extractAuthor(this.digest, validators || []);
4700 this.createdAtHash = header?.createdAtHash;
4701 }
4702 get author() {
4703 return this.__internal__author;
4704 }
4705 }
4706 return new Implementation(registry, header, validators, author);
4707 }
4708
4709 function mapExtrinsics(extrinsics, records) {
4710 return extrinsics.map((extrinsic, index) => {
4711 let dispatchError;
4712 let dispatchInfo;
4713 const events = records
4714 .filter(({ phase }) => phase.isApplyExtrinsic && phase.asApplyExtrinsic.eq(index))
4715 .map(({ event }) => {
4716 if (event.section === 'system') {
4717 if (event.method === 'ExtrinsicSuccess') {
4718 dispatchInfo = event.data[0];
4719 }
4720 else if (event.method === 'ExtrinsicFailed') {
4721 dispatchError = event.data[0];
4722 dispatchInfo = event.data[1];
4723 }
4724 }
4725 return event;
4726 });
4727 return { dispatchError, dispatchInfo, events, extrinsic };
4728 });
4729 }
4730 function createSignedBlockExtended(registry, block, events, validators, author) {
4731 const SignedBlockBase = registry.createClass('SignedBlock');
4732 class Implementation extends SignedBlockBase {
4733 __internal__author;
4734 __internal__events;
4735 __internal__extrinsics;
4736 constructor(registry, block, events, validators, author) {
4737 super(registry, block);
4738 this.__internal__author = author || extractAuthor(this.block.header.digest, validators || []);
4739 this.__internal__events = events || [];
4740 this.__internal__extrinsics = mapExtrinsics(this.block.extrinsics, this.__internal__events);
4741 this.createdAtHash = block?.createdAtHash;
4742 }
4743 get author() {
4744 return this.__internal__author;
4745 }
4746 get events() {
4747 return this.__internal__events;
4748 }
4749 get extrinsics() {
4750 return this.__internal__extrinsics;
4751 }
4752 }
4753 return new Implementation(registry, block, events, validators, author);
4754 }
4755
4756 function getBlock(instanceId, api) {
4757 return memo(instanceId, (blockHash) => combineLatest([
4758 api.rpc.chain.getBlock(blockHash),
4759 api.queryAt(blockHash)
4760 ]).pipe(switchMap(([signedBlock, queryAt]) => combineLatest([
4761 of(signedBlock),
4762 queryAt.system.events(),
4763 getAuthorDetails(api, signedBlock.block.header, blockHash)
4764 ])), map(([signedBlock, events, [, validators, author]]) => createSignedBlockExtended(events.registry, signedBlock, events, validators, author))));
4765 }
4766
4767 function getBlockByNumber(instanceId, api) {
4768 return memo(instanceId, (blockNumber) => api.rpc.chain.getBlockHash(blockNumber).pipe(switchMap((h) => api.derive.chain.getBlock(h))));
4769 }
4770
4771 function getHeader(instanceId, api) {
4772 return memo(instanceId, (blockHash) => api.rpc.chain.getHeader(blockHash).pipe(switchMap((header) => getAuthorDetails(api, header, blockHash)), map(([header, validators, author]) => createHeaderExtended((validators || header).registry, header, validators, author))));
4773 }
4774
4775 function subscribeFinalizedBlocks(instanceId, api) {
4776 return memo(instanceId, () => api.derive.chain.subscribeFinalizedHeads().pipe(switchMap((header) => api.derive.chain.getBlock(header.createdAtHash || header.hash))));
4777 }
4778
4779 function _getHeaderRange(instanceId, api) {
4780 return memo(instanceId, (startHash, endHash, prev = []) => api.rpc.chain.getHeader(startHash).pipe(switchMap((header) => header.parentHash.eq(endHash)
4781 ? of([header, ...prev])
4782 : api.derive.chain._getHeaderRange(header.parentHash, endHash, [header, ...prev]))));
4783 }
4784 function subscribeFinalizedHeads(instanceId, api) {
4785 return memo(instanceId, () => {
4786 let prevHash = null;
4787 return api.rpc.chain.subscribeFinalizedHeads().pipe(switchMap((header) => {
4788 const endHash = prevHash;
4789 const startHash = header.parentHash;
4790 prevHash = header.createdAtHash = header.hash;
4791 return endHash === null || startHash.eq(endHash)
4792 ? of(header)
4793 : api.derive.chain._getHeaderRange(startHash, endHash, [header]).pipe(switchMap((headers) => from(headers)));
4794 }));
4795 });
4796 }
4797
4798 function subscribeNewBlocks(instanceId, api) {
4799 return memo(instanceId, () => api.derive.chain.subscribeNewHeads().pipe(switchMap((header) => api.derive.chain.getBlock(header.createdAtHash || header.hash))));
4800 }
4801
4802 function subscribeNewHeads(instanceId, api) {
4803 return memo(instanceId, () => api.rpc.chain.subscribeNewHeads().pipe(switchMap((header) => getAuthorDetails(api, header)), map(([header, validators, author]) => {
4804 header.createdAtHash = header.hash;
4805 return createHeaderExtended(header.registry, header, validators, author);
4806 })));
4807 }
4808
4809 const chain = /*#__PURE__*/Object.freeze({
4810 __proto__: null,
4811 _getHeaderRange: _getHeaderRange,
4812 bestNumber: bestNumber,
4813 bestNumberFinalized: bestNumberFinalized,
4814 bestNumberLag: bestNumberLag,
4815 getBlock: getBlock,
4816 getBlockByNumber: getBlockByNumber,
4817 getHeader: getHeader,
4818 subscribeFinalizedBlocks: subscribeFinalizedBlocks,
4819 subscribeFinalizedHeads: subscribeFinalizedHeads,
4820 subscribeNewBlocks: subscribeNewBlocks,
4821 subscribeNewHeads: subscribeNewHeads
4822 });
4823
4824 function queryConstants(api) {
4825 return of([
4826 api.consts.contracts['callBaseFee'] || api.registry.createType('Balance'),
4827 api.consts.contracts['contractFee'] || api.registry.createType('Balance'),
4828 api.consts.contracts['creationFee'] || api.registry.createType('Balance'),
4829 api.consts.contracts['transactionBaseFee'] || api.registry.createType('Balance'),
4830 api.consts.contracts['transactionByteFee'] || api.registry.createType('Balance'),
4831 api.consts.contracts['transferFee'] || api.registry.createType('Balance'),
4832 api.consts.contracts['rentByteFee'] || api.registry.createType('Balance'),
4833 api.consts.contracts['rentDepositOffset'] || api.registry.createType('Balance'),
4834 api.consts.contracts['surchargeReward'] || api.registry.createType('Balance'),
4835 api.consts.contracts['tombstoneDeposit'] || api.registry.createType('Balance')
4836 ]);
4837 }
4838 function fees(instanceId, api) {
4839 return memo(instanceId, () => {
4840 return queryConstants(api).pipe(map(([callBaseFee, contractFee, creationFee, transactionBaseFee, transactionByteFee, transferFee, rentByteFee, rentDepositOffset, surchargeReward, tombstoneDeposit]) => ({
4841 callBaseFee,
4842 contractFee,
4843 creationFee,
4844 rentByteFee,
4845 rentDepositOffset,
4846 surchargeReward,
4847 tombstoneDeposit,
4848 transactionBaseFee,
4849 transactionByteFee,
4850 transferFee
4851 })));
4852 });
4853 }
4854
4855 const contracts = /*#__PURE__*/Object.freeze({
4856 __proto__: null,
4857 fees: fees
4858 });
4859
4860 function isVoter(value) {
4861 return !Array.isArray(value);
4862 }
4863 function retrieveStakeOf(elections) {
4864 return elections['stakeOf'].entries().pipe(map((entries) => entries.map(([{ args: [accountId] }, stake]) => [accountId, stake])));
4865 }
4866 function retrieveVoteOf(elections) {
4867 return elections['votesOf'].entries().pipe(map((entries) => entries.map(([{ args: [accountId] }, votes]) => [accountId, votes])));
4868 }
4869 function retrievePrev(api, elections) {
4870 return combineLatest([
4871 retrieveStakeOf(elections),
4872 retrieveVoteOf(elections)
4873 ]).pipe(map(([stakes, votes]) => {
4874 const result = [];
4875 votes.forEach(([voter, votes]) => {
4876 result.push([voter, { stake: api.registry.createType('Balance'), votes }]);
4877 });
4878 stakes.forEach(([staker, stake]) => {
4879 const entry = result.find(([voter]) => voter.eq(staker));
4880 if (entry) {
4881 entry[1].stake = stake;
4882 }
4883 else {
4884 result.push([staker, { stake, votes: [] }]);
4885 }
4886 });
4887 return result;
4888 }));
4889 }
4890 function retrieveCurrent(elections) {
4891 return elections.voting.entries().pipe(map((entries) => entries.map(([{ args: [accountId] }, value]) => [
4892 accountId,
4893 isVoter(value)
4894 ? { stake: value.stake, votes: value.votes }
4895 : { stake: value[0], votes: value[1] }
4896 ])));
4897 }
4898 function votes(instanceId, api) {
4899 const elections = api.query.elections || api.query['phragmenElection'] || api.query['electionsPhragmen'];
4900 return memo(instanceId, () => elections
4901 ? elections['stakeOf']
4902 ? retrievePrev(api, elections)
4903 : retrieveCurrent(elections)
4904 : of([]));
4905 }
4906
4907 function votesOf(instanceId, api) {
4908 return memo(instanceId, (accountId) => api.derive.council.votes().pipe(map((votes) => (votes.find(([from]) => from.eq(accountId)) ||
4909 [null, { stake: api.registry.createType('Balance'), votes: [] }])[1])));
4910 }
4911
4912 const members$3 = members$5('council');
4913 const hasProposals$2 = hasProposals$4('council');
4914 const proposal$2 = proposal$4('council');
4915 const proposalCount$2 = proposalCount$4('council');
4916 const proposalHashes$2 = proposalHashes$4('council');
4917 const proposals$4 = proposals$6('council');
4918 const prime$2 = prime$4('council');
4919
4920 const council = /*#__PURE__*/Object.freeze({
4921 __proto__: null,
4922 hasProposals: hasProposals$2,
4923 members: members$3,
4924 prime: prime$2,
4925 proposal: proposal$2,
4926 proposalCount: proposalCount$2,
4927 proposalHashes: proposalHashes$2,
4928 proposals: proposals$4,
4929 votes: votes,
4930 votesOf: votesOf
4931 });
4932
4933 function createChildKey(info) {
4934 return util.u8aToHex(util.u8aConcat(':child_storage:default:', utilCrypto.blake2AsU8a(util.u8aConcat('crowdloan', (info.fundIndex || info.trieIndex).toU8a()))));
4935 }
4936 function childKey(instanceId, api) {
4937 return memo(instanceId, (paraId) => api.query['crowdloan']['funds'](paraId).pipe(map((optInfo) => optInfo.isSome
4938 ? createChildKey(optInfo.unwrap())
4939 : null)));
4940 }
4941
4942 function extractContributed(paraId, events) {
4943 const added = [];
4944 const removed = [];
4945 return events
4946 .filter(({ event: { data: [, eventParaId], method, section } }) => section === 'crowdloan' &&
4947 ['Contributed', 'Withdrew'].includes(method) &&
4948 eventParaId.eq(paraId))
4949 .reduce((result, { event: { data: [accountId], method } }) => {
4950 if (method === 'Contributed') {
4951 result.added.push(accountId.toHex());
4952 }
4953 else {
4954 result.removed.push(accountId.toHex());
4955 }
4956 return result;
4957 }, { added, blockHash: events.createdAtHash?.toHex() || '-', removed });
4958 }
4959
4960 const PAGE_SIZE_K$1 = 1000;
4961 function _getUpdates(api, paraId) {
4962 let added = [];
4963 let removed = [];
4964 return api.query.system.events().pipe(switchMap((events) => {
4965 const changes = extractContributed(paraId, events);
4966 if (changes.added.length || changes.removed.length) {
4967 added = added.concat(...changes.added);
4968 removed = removed.concat(...changes.removed);
4969 return of({ added, addedDelta: changes.added, blockHash: events.createdAtHash?.toHex() || '-', removed, removedDelta: changes.removed });
4970 }
4971 return EMPTY;
4972 }), startWith({ added, addedDelta: [], blockHash: '-', removed, removedDelta: [] }));
4973 }
4974 function _eventTriggerAll(api, paraId) {
4975 return api.query.system.events().pipe(switchMap((events) => {
4976 const items = events.filter(({ event: { data: [eventParaId], method, section } }) => section === 'crowdloan' &&
4977 ['AllRefunded', 'Dissolved', 'PartiallyRefunded'].includes(method) &&
4978 eventParaId.eq(paraId));
4979 return items.length
4980 ? of(events.createdAtHash?.toHex() || '-')
4981 : EMPTY;
4982 }), startWith('-'));
4983 }
4984 function _getKeysPaged(api, childKey) {
4985 const subject = new BehaviorSubject(undefined);
4986 return subject.pipe(switchMap((startKey) => api.rpc.childstate.getKeysPaged(childKey, '0x', PAGE_SIZE_K$1, startKey)), tap((keys) => {
4987 util.nextTick(() => {
4988 keys.length === PAGE_SIZE_K$1
4989 ? subject.next(keys[PAGE_SIZE_K$1 - 1].toHex())
4990 : subject.complete();
4991 });
4992 }), toArray(),
4993 map((keyArr) => util.arrayFlatten(keyArr)));
4994 }
4995 function _getAll(api, paraId, childKey) {
4996 return _eventTriggerAll(api, paraId).pipe(switchMap(() => util.isFunction(api.rpc.childstate.getKeysPaged)
4997 ? _getKeysPaged(api, childKey)
4998 : api.rpc.childstate.getKeys(childKey, '0x')), map((keys) => keys.map((k) => k.toHex())));
4999 }
5000 function _contributions$1(api, paraId, childKey) {
5001 return combineLatest([
5002 _getAll(api, paraId, childKey),
5003 _getUpdates(api, paraId)
5004 ]).pipe(map(([keys, { added, blockHash, removed }]) => {
5005 const contributorsMap = {};
5006 keys.forEach((k) => {
5007 contributorsMap[k] = true;
5008 });
5009 added.forEach((k) => {
5010 contributorsMap[k] = true;
5011 });
5012 removed.forEach((k) => {
5013 delete contributorsMap[k];
5014 });
5015 return {
5016 blockHash,
5017 contributorsHex: Object.keys(contributorsMap)
5018 };
5019 }));
5020 }
5021 function contributions(instanceId, api) {
5022 return memo(instanceId, (paraId) => api.derive.crowdloan.childKey(paraId).pipe(switchMap((childKey) => childKey
5023 ? _contributions$1(api, paraId, childKey)
5024 : of({ blockHash: '-', contributorsHex: [] }))));
5025 }
5026
5027 function _getValues(api, childKey, keys) {
5028 return combineLatest(keys.map((k) => api.rpc.childstate.getStorage(childKey, k))).pipe(map((values) => values
5029 .map((v) => api.registry.createType('Option<StorageData>', v))
5030 .map((o) => o.isSome
5031 ? api.registry.createType('Balance', o.unwrap())
5032 : api.registry.createType('Balance'))
5033 .reduce((all, b, index) => util.objectSpread(all, { [keys[index]]: b }), {})));
5034 }
5035 function _watchOwnChanges(api, paraId, childkey, keys) {
5036 return api.query.system.events().pipe(switchMap((events) => {
5037 const changes = extractContributed(paraId, events);
5038 const filtered = keys.filter((k) => changes.added.includes(k) ||
5039 changes.removed.includes(k));
5040 return filtered.length
5041 ? _getValues(api, childkey, filtered)
5042 : EMPTY;
5043 }), startWith({}));
5044 }
5045 function _contributions(api, paraId, childKey, keys) {
5046 return combineLatest([
5047 _getValues(api, childKey, keys),
5048 _watchOwnChanges(api, paraId, childKey, keys)
5049 ]).pipe(map(([all, latest]) => util.objectSpread({}, all, latest)));
5050 }
5051 function ownContributions(instanceId, api) {
5052 return memo(instanceId, (paraId, keys) => api.derive.crowdloan.childKey(paraId).pipe(switchMap((childKey) => childKey && keys.length
5053 ? _contributions(api, paraId, childKey, keys)
5054 : of({}))));
5055 }
5056
5057 const crowdloan = /*#__PURE__*/Object.freeze({
5058 __proto__: null,
5059 childKey: childKey,
5060 contributions: contributions,
5061 ownContributions: ownContributions
5062 });
5063
5064 function isOldInfo(info) {
5065 return !!info.proposalHash;
5066 }
5067 function isCurrentStatus(status) {
5068 return !!status.tally;
5069 }
5070 function compareRationals(n1, d1, n2, d2) {
5071 while (true) {
5072 const q1 = n1.div(d1);
5073 const q2 = n2.div(d2);
5074 if (q1.lt(q2)) {
5075 return true;
5076 }
5077 else if (q2.lt(q1)) {
5078 return false;
5079 }
5080 const r1 = n1.mod(d1);
5081 const r2 = n2.mod(d2);
5082 if (r2.isZero()) {
5083 return false;
5084 }
5085 else if (r1.isZero()) {
5086 return true;
5087 }
5088 n1 = d2;
5089 n2 = d1;
5090 d1 = r2;
5091 d2 = r1;
5092 }
5093 }
5094 function calcPassingOther(threshold, sqrtElectorate, { votedAye, votedNay, votedTotal }) {
5095 const sqrtVoters = util.bnSqrt(votedTotal);
5096 return sqrtVoters.isZero()
5097 ? false
5098 : threshold.isSuperMajorityApprove
5099 ? compareRationals(votedNay, sqrtVoters, votedAye, sqrtElectorate)
5100 : compareRationals(votedNay, sqrtElectorate, votedAye, sqrtVoters);
5101 }
5102 function calcPassing(threshold, sqrtElectorate, state) {
5103 return threshold.isSimpleMajority
5104 ? state.votedAye.gt(state.votedNay)
5105 : calcPassingOther(threshold, sqrtElectorate, state);
5106 }
5107 function calcVotesPrev(votesFor) {
5108 return votesFor.reduce((state, derived) => {
5109 const { balance, vote } = derived;
5110 const isDefault = vote.conviction.index === 0;
5111 const counted = balance
5112 .muln(isDefault ? 1 : vote.conviction.index)
5113 .divn(isDefault ? 10 : 1);
5114 if (vote.isAye) {
5115 state.allAye.push(derived);
5116 state.voteCountAye++;
5117 state.votedAye.iadd(counted);
5118 }
5119 else {
5120 state.allNay.push(derived);
5121 state.voteCountNay++;
5122 state.votedNay.iadd(counted);
5123 }
5124 state.voteCount++;
5125 state.votedTotal.iadd(counted);
5126 return state;
5127 }, { allAye: [], allNay: [], voteCount: 0, voteCountAye: 0, voteCountNay: 0, votedAye: new util.BN(0), votedNay: new util.BN(0), votedTotal: new util.BN(0) });
5128 }
5129 function calcVotesCurrent(tally, votes) {
5130 const allAye = [];
5131 const allNay = [];
5132 votes.forEach((derived) => {
5133 if (derived.vote.isAye) {
5134 allAye.push(derived);
5135 }
5136 else {
5137 allNay.push(derived);
5138 }
5139 });
5140 return {
5141 allAye,
5142 allNay,
5143 voteCount: allAye.length + allNay.length,
5144 voteCountAye: allAye.length,
5145 voteCountNay: allNay.length,
5146 votedAye: tally.ayes,
5147 votedNay: tally.nays,
5148 votedTotal: tally.turnout
5149 };
5150 }
5151 function calcVotes(sqrtElectorate, referendum, votes) {
5152 const state = isCurrentStatus(referendum.status)
5153 ? calcVotesCurrent(referendum.status.tally, votes)
5154 : calcVotesPrev(votes);
5155 return util.objectSpread({}, state, {
5156 isPassing: calcPassing(referendum.status.threshold, sqrtElectorate, state),
5157 votes
5158 });
5159 }
5160 function getStatus(info) {
5161 if (info.isNone) {
5162 return null;
5163 }
5164 const unwrapped = info.unwrap();
5165 return isOldInfo(unwrapped)
5166 ? unwrapped
5167 : unwrapped.isOngoing
5168 ? unwrapped.asOngoing
5169 : null;
5170 }
5171 function getImageHashBounded(hash) {
5172 return hash.isLegacy
5173 ? hash.asLegacy.hash_.toHex()
5174 : hash.isLookup
5175 ? hash.asLookup.hash_.toHex()
5176 : hash.isInline
5177 ? hash.asInline.hash.toHex()
5178 : util.isString(hash)
5179 ? util.isHex(hash)
5180 ? hash
5181 : util.stringToHex(hash)
5182 : util.isU8a(hash)
5183 ? util.u8aToHex(hash)
5184 : hash.toHex();
5185 }
5186 function getImageHash(status) {
5187 return getImageHashBounded(status.proposal ||
5188 status.proposalHash);
5189 }
5190
5191 const DEMOCRACY_ID = util.stringToHex('democrac');
5192 function isMaybeHashedOrBounded(call) {
5193 return call instanceof types.Enum;
5194 }
5195 function isBounded(call) {
5196 return call.isInline || call.isLegacy || call.isLookup;
5197 }
5198 function queryQueue(api) {
5199 return api.query.democracy['dispatchQueue']().pipe(switchMap((dispatches) => combineLatest([
5200 of(dispatches),
5201 api.derive.democracy.preimages(dispatches.map(([, hash]) => hash))
5202 ])), map(([dispatches, images]) => dispatches.map(([at, imageHash, index], dispatchIndex) => ({
5203 at,
5204 image: images[dispatchIndex],
5205 imageHash: getImageHashBounded(imageHash),
5206 index
5207 }))));
5208 }
5209 function schedulerEntries(api) {
5210 return api.derive.democracy.referendumsFinished().pipe(switchMap(() => api.query.scheduler.agenda.keys()), switchMap((keys) => {
5211 const blockNumbers = keys.map(({ args: [blockNumber] }) => blockNumber);
5212 return blockNumbers.length
5213 ? combineLatest([
5214 of(blockNumbers),
5215 api.query.scheduler.agenda.multi(blockNumbers).pipe(catchError(() => of(blockNumbers.map(() => []))))
5216 ])
5217 : of([[], []]);
5218 }));
5219 }
5220 function queryScheduler(api) {
5221 return schedulerEntries(api).pipe(switchMap(([blockNumbers, agendas]) => {
5222 const result = [];
5223 blockNumbers.forEach((at, index) => {
5224 (agendas[index] || []).filter((o) => o.isSome).forEach((o) => {
5225 const scheduled = o.unwrap();
5226 if (scheduled.maybeId.isSome) {
5227 const id = scheduled.maybeId.unwrap().toHex();
5228 if (id.startsWith(DEMOCRACY_ID)) {
5229 const imageHash = isMaybeHashedOrBounded(scheduled.call)
5230 ? isBounded(scheduled.call)
5231 ? getImageHashBounded(scheduled.call)
5232 : scheduled.call.isHash
5233 ? scheduled.call.asHash.toHex()
5234 : scheduled.call.asValue.args[0].toHex()
5235 : scheduled.call.args[0].toHex();
5236 result.push({ at, imageHash, index: api.registry.createType('(u64, ReferendumIndex)', id)[1] });
5237 }
5238 }
5239 });
5240 });
5241 return combineLatest([
5242 of(result),
5243 result.length
5244 ? api.derive.democracy.preimages(result.map(({ imageHash }) => imageHash))
5245 : of([])
5246 ]);
5247 }), map(([infos, images]) => infos.map((info, index) => util.objectSpread({ image: images[index] }, info))));
5248 }
5249 function dispatchQueue(instanceId, api) {
5250 return memo(instanceId, () => util.isFunction(api.query.scheduler?.agenda)
5251 ? queryScheduler(api)
5252 : api.query.democracy['dispatchQueue']
5253 ? queryQueue(api)
5254 : of([]));
5255 }
5256
5257 const LOCKUPS = [0, 1, 2, 4, 8, 16, 32];
5258 function parseEnd(api, vote, { approved, end }) {
5259 return [
5260 end,
5261 (approved.isTrue && vote.isAye) || (approved.isFalse && vote.isNay)
5262 ? end.add((api.consts.democracy.voteLockingPeriod ||
5263 api.consts.democracy.enactmentPeriod).muln(LOCKUPS[vote.conviction.index]))
5264 : util.BN_ZERO
5265 ];
5266 }
5267 function parseLock(api, [referendumId, accountVote], referendum) {
5268 const { balance, vote } = accountVote.asStandard;
5269 const [referendumEnd, unlockAt] = referendum.isFinished
5270 ? parseEnd(api, vote, referendum.asFinished)
5271 : [util.BN_ZERO, util.BN_ZERO];
5272 return { balance, isDelegated: false, isFinished: referendum.isFinished, referendumEnd, referendumId, unlockAt, vote };
5273 }
5274 function delegateLocks(api, { balance, conviction, target }) {
5275 return api.derive.democracy.locks(target).pipe(map((available) => available.map(({ isFinished, referendumEnd, referendumId, unlockAt, vote }) => ({
5276 balance,
5277 isDelegated: true,
5278 isFinished,
5279 referendumEnd,
5280 referendumId,
5281 unlockAt: unlockAt.isZero()
5282 ? unlockAt
5283 : referendumEnd.add((api.consts.democracy.voteLockingPeriod ||
5284 api.consts.democracy.enactmentPeriod).muln(LOCKUPS[conviction.index])),
5285 vote: api.registry.createType('Vote', { aye: vote.isAye, conviction })
5286 }))));
5287 }
5288 function directLocks(api, { votes }) {
5289 if (!votes.length) {
5290 return of([]);
5291 }
5292 return api.query.democracy.referendumInfoOf.multi(votes.map(([referendumId]) => referendumId)).pipe(map((referendums) => votes
5293 .map((vote, index) => [vote, referendums[index].unwrapOr(null)])
5294 .filter((item) => !!item[1] && util.isUndefined(item[1].end) && item[0][1].isStandard)
5295 .map(([directVote, referendum]) => parseLock(api, directVote, referendum))));
5296 }
5297 function locks(instanceId, api) {
5298 return memo(instanceId, (accountId) => api.query.democracy.votingOf
5299 ? api.query.democracy.votingOf(accountId).pipe(switchMap((voting) => voting.isDirect
5300 ? directLocks(api, voting.asDirect)
5301 : voting.isDelegating
5302 ? delegateLocks(api, voting.asDelegating)
5303 : of([])))
5304 : of([]));
5305 }
5306
5307 function withImage(api, nextOpt) {
5308 if (nextOpt.isNone) {
5309 return of(null);
5310 }
5311 const [hash, threshold] = nextOpt.unwrap();
5312 return api.derive.democracy.preimage(hash).pipe(map((image) => ({
5313 image,
5314 imageHash: getImageHashBounded(hash),
5315 threshold
5316 })));
5317 }
5318 function nextExternal(instanceId, api) {
5319 return memo(instanceId, () => api.query.democracy?.nextExternal
5320 ? api.query.democracy.nextExternal().pipe(switchMap((nextOpt) => withImage(api, nextOpt)))
5321 : of(null));
5322 }
5323
5324 function getUnrequestedTicket(status) {
5325 return status.ticket || status.deposit;
5326 }
5327 function getRequestedTicket(status) {
5328 return (status.maybeTicket || status.deposit).unwrapOrDefault();
5329 }
5330 function isDemocracyPreimage(api, imageOpt) {
5331 return !!imageOpt && !api.query.democracy['dispatchQueue'];
5332 }
5333 function constructProposal(api, [bytes, proposer, balance, at]) {
5334 let proposal;
5335 try {
5336 proposal = api.registry.createType('Call', bytes.toU8a(true));
5337 }
5338 catch (error) {
5339 console.error(error);
5340 }
5341 return { at, balance, proposal, proposer };
5342 }
5343 function parseDemocracy(api, imageOpt) {
5344 if (imageOpt.isNone) {
5345 return;
5346 }
5347 if (isDemocracyPreimage(api, imageOpt)) {
5348 const status = imageOpt.unwrap();
5349 if (status.isMissing) {
5350 return;
5351 }
5352 const { data, deposit, provider, since } = status.asAvailable;
5353 return constructProposal(api, [data, provider, deposit, since]);
5354 }
5355 return constructProposal(api, imageOpt.unwrap());
5356 }
5357 function parseImage(api, [proposalHash, status, bytes]) {
5358 if (!status) {
5359 return undefined;
5360 }
5361 const [proposer, balance] = status.isUnrequested
5362 ? getUnrequestedTicket(status.asUnrequested)
5363 : getRequestedTicket(status.asRequested);
5364 let proposal;
5365 if (bytes) {
5366 try {
5367 proposal = api.registry.createType('Call', bytes.toU8a(true));
5368 }
5369 catch (error) {
5370 console.error(error);
5371 }
5372 }
5373 return { at: util.BN_ZERO, balance, proposal, proposalHash, proposer };
5374 }
5375 function getDemocracyImages(api, bounded) {
5376 const hashes = bounded.map((b) => getImageHashBounded(b));
5377 return api.query.democracy['preimages'].multi(hashes).pipe(map((images) => images.map((imageOpt) => parseDemocracy(api, imageOpt))));
5378 }
5379 function getImages(api, bounded) {
5380 const hashes = bounded.map((b) => getImageHashBounded(b));
5381 const bytesType = api.registry.lookup.getTypeDef(api.query.preimage.preimageFor.creator.meta.type.asMap.key).type;
5382 return api.query.preimage.statusFor.multi(hashes).pipe(switchMap((optStatus) => {
5383 const statuses = optStatus.map((o) => o.unwrapOr(null));
5384 const keys = statuses
5385 .map((s, i) => s
5386 ? bytesType === 'H256'
5387 ? hashes[i]
5388 : s.isRequested
5389 ? [hashes[i], s.asRequested.len.unwrapOr(0)]
5390 : [hashes[i], s.asUnrequested.len]
5391 : null)
5392 .filter((p) => !!p);
5393 return api.query.preimage.preimageFor.multi(keys).pipe(map((optBytes) => {
5394 let ptr = -1;
5395 return statuses
5396 .map((s, i) => s
5397 ? [hashes[i], s, optBytes[++ptr].unwrapOr(null)]
5398 : [hashes[i], null, null])
5399 .map((v) => parseImage(api, v));
5400 }));
5401 }));
5402 }
5403 function preimages(instanceId, api) {
5404 return memo(instanceId, (hashes) => hashes.length
5405 ? util.isFunction(api.query.democracy['preimages'])
5406 ? getDemocracyImages(api, hashes)
5407 : util.isFunction(api.query.preimage.preimageFor)
5408 ? getImages(api, hashes)
5409 : of([])
5410 : of([]));
5411 }
5412 const preimage = firstMemo((api, hash) => api.derive.democracy.preimages([hash]));
5413
5414 function isNewDepositors(depositors) {
5415 return util.isFunction(depositors[1].mul);
5416 }
5417 function parse$3([proposals, images, optDepositors]) {
5418 return proposals
5419 .filter(([, , proposer], index) => !!(optDepositors[index]?.isSome) && !proposer.isEmpty)
5420 .map(([index, hash, proposer], proposalIndex) => {
5421 const depositors = optDepositors[proposalIndex].unwrap();
5422 return util.objectSpread({
5423 image: images[proposalIndex],
5424 imageHash: getImageHashBounded(hash),
5425 index,
5426 proposer
5427 }, isNewDepositors(depositors)
5428 ? { balance: depositors[1], seconds: depositors[0] }
5429 : { balance: depositors[0], seconds: depositors[1] });
5430 });
5431 }
5432 function proposals$3(instanceId, api) {
5433 return memo(instanceId, () => util.isFunction(api.query.democracy?.publicProps)
5434 ? api.query.democracy.publicProps().pipe(switchMap((proposals) => proposals.length
5435 ? combineLatest([
5436 of(proposals),
5437 api.derive.democracy.preimages(proposals.map(([, hash]) => hash)),
5438 api.query.democracy.depositOf.multi(proposals.map(([index]) => index))
5439 ])
5440 : of([[], [], []])), map(parse$3))
5441 : of([]));
5442 }
5443
5444 function referendumIds(instanceId, api) {
5445 return memo(instanceId, () => api.query.democracy?.lowestUnbaked
5446 ? api.queryMulti([
5447 api.query.democracy.lowestUnbaked,
5448 api.query.democracy.referendumCount
5449 ]).pipe(map(([first, total]) => total.gt(first)
5450 ? [...Array(total.sub(first).toNumber())].map((_, i) => first.addn(i))
5451 : []))
5452 : of([]));
5453 }
5454
5455 function referendums(instanceId, api) {
5456 return memo(instanceId, () => api.derive.democracy.referendumsActive().pipe(switchMap((referendums) => referendums.length
5457 ? combineLatest([
5458 of(referendums),
5459 api.derive.democracy._referendumsVotes(referendums)
5460 ])
5461 : of([[], []])), map(([referendums, votes]) => referendums.map((referendum, index) => util.objectSpread({}, referendum, votes[index])))));
5462 }
5463
5464 function referendumsActive(instanceId, api) {
5465 return memo(instanceId, () => api.derive.democracy.referendumIds().pipe(switchMap((ids) => ids.length
5466 ? api.derive.democracy.referendumsInfo(ids)
5467 : of([]))));
5468 }
5469
5470 function referendumsFinished(instanceId, api) {
5471 return memo(instanceId, () => api.derive.democracy.referendumIds().pipe(switchMap((ids) => api.query.democracy.referendumInfoOf.multi(ids)), map((infos) => infos
5472 .map((o) => o.unwrapOr(null))
5473 .filter((info) => !!info && info.isFinished)
5474 .map((info) => info.asFinished))));
5475 }
5476
5477 function votesPrev(api, referendumId) {
5478 return api.query.democracy['votersFor'](referendumId).pipe(switchMap((votersFor) => combineLatest([
5479 of(votersFor),
5480 votersFor.length
5481 ? api.query.democracy['voteOf'].multi(votersFor.map((accountId) => [referendumId, accountId]))
5482 : of([]),
5483 api.derive.balances.votingBalances(votersFor)
5484 ])), map(([votersFor, votes, balances]) => votersFor.map((accountId, index) => ({
5485 accountId,
5486 balance: balances[index].votingBalance || api.registry.createType('Balance'),
5487 isDelegating: false,
5488 vote: votes[index] || api.registry.createType('Vote')
5489 }))));
5490 }
5491 function extractVotes(mapped, referendumId) {
5492 return mapped
5493 .filter(([, voting]) => voting.isDirect)
5494 .map(([accountId, voting]) => [
5495 accountId,
5496 voting.asDirect.votes.filter(([idx]) => idx.eq(referendumId))
5497 ])
5498 .filter(([, directVotes]) => !!directVotes.length)
5499 .reduce((result, [accountId, votes]) =>
5500 votes.reduce((result, [, vote]) => {
5501 if (vote.isStandard) {
5502 result.push(util.objectSpread({
5503 accountId,
5504 isDelegating: false
5505 }, vote.asStandard));
5506 }
5507 return result;
5508 }, result), []);
5509 }
5510 function votesCurr(api, referendumId) {
5511 return api.query.democracy.votingOf.entries().pipe(map((allVoting) => {
5512 const mapped = allVoting.map(([{ args: [accountId] }, voting]) => [accountId, voting]);
5513 const votes = extractVotes(mapped, referendumId);
5514 const delegations = mapped
5515 .filter(([, voting]) => voting.isDelegating)
5516 .map(([accountId, voting]) => [accountId, voting.asDelegating]);
5517 delegations.forEach(([accountId, { balance, conviction, target }]) => {
5518 const toDelegator = delegations.find(([accountId]) => accountId.eq(target));
5519 const to = votes.find(({ accountId }) => accountId.eq(toDelegator ? toDelegator[0] : target));
5520 if (to) {
5521 votes.push({
5522 accountId,
5523 balance,
5524 isDelegating: true,
5525 vote: api.registry.createType('Vote', { aye: to.vote.isAye, conviction })
5526 });
5527 }
5528 });
5529 return votes;
5530 }));
5531 }
5532 function _referendumVotes(instanceId, api) {
5533 return memo(instanceId, (referendum) => combineLatest([
5534 api.derive.democracy.sqrtElectorate(),
5535 util.isFunction(api.query.democracy.votingOf)
5536 ? votesCurr(api, referendum.index)
5537 : votesPrev(api, referendum.index)
5538 ]).pipe(map(([sqrtElectorate, votes]) => calcVotes(sqrtElectorate, referendum, votes))));
5539 }
5540 function _referendumsVotes(instanceId, api) {
5541 return memo(instanceId, (referendums) => referendums.length
5542 ? combineLatest(referendums.map((referendum) => api.derive.democracy._referendumVotes(referendum)))
5543 : of([]));
5544 }
5545 function _referendumInfo(instanceId, api) {
5546 return memo(instanceId, (index, info) => {
5547 const status = getStatus(info);
5548 return status
5549 ? api.derive.democracy.preimage(status.proposal ||
5550 status.proposalHash).pipe(map((image) => ({
5551 image,
5552 imageHash: getImageHash(status),
5553 index: api.registry.createType('ReferendumIndex', index),
5554 status
5555 })))
5556 : of(null);
5557 });
5558 }
5559 function referendumsInfo(instanceId, api) {
5560 return memo(instanceId, (ids) => ids.length
5561 ? api.query.democracy.referendumInfoOf.multi(ids).pipe(switchMap((infos) => combineLatest(ids.map((id, index) => api.derive.democracy._referendumInfo(id, infos[index])))), map((infos) => infos.filter((r) => !!r)))
5562 : of([]));
5563 }
5564
5565 function sqrtElectorate(instanceId, api) {
5566 return memo(instanceId, () => api.query.balances.totalIssuance().pipe(map(util.bnSqrt)));
5567 }
5568
5569 const democracy = /*#__PURE__*/Object.freeze({
5570 __proto__: null,
5571 _referendumInfo: _referendumInfo,
5572 _referendumVotes: _referendumVotes,
5573 _referendumsVotes: _referendumsVotes,
5574 dispatchQueue: dispatchQueue,
5575 locks: locks,
5576 nextExternal: nextExternal,
5577 preimage: preimage,
5578 preimages: preimages,
5579 proposals: proposals$3,
5580 referendumIds: referendumIds,
5581 referendums: referendums,
5582 referendumsActive: referendumsActive,
5583 referendumsFinished: referendumsFinished,
5584 referendumsInfo: referendumsInfo,
5585 sqrtElectorate: sqrtElectorate
5586 });
5587
5588 function isSeatHolder(value) {
5589 return !Array.isArray(value);
5590 }
5591 function isCandidateTuple(value) {
5592 return Array.isArray(value);
5593 }
5594 function getAccountTuple(value) {
5595 return isSeatHolder(value)
5596 ? [value.who, value.stake]
5597 : value;
5598 }
5599 function getCandidate(value) {
5600 return isCandidateTuple(value)
5601 ? value[0]
5602 : value;
5603 }
5604 function sortAccounts([, balanceA], [, balanceB]) {
5605 return balanceB.cmp(balanceA);
5606 }
5607 function getConstants(api, elections) {
5608 return elections
5609 ? {
5610 candidacyBond: api.consts[elections].candidacyBond,
5611 desiredRunnersUp: api.consts[elections].desiredRunnersUp,
5612 desiredSeats: api.consts[elections].desiredMembers,
5613 termDuration: api.consts[elections].termDuration,
5614 votingBond: api.consts[elections]['votingBond'],
5615 votingBondBase: api.consts[elections].votingBondBase,
5616 votingBondFactor: api.consts[elections].votingBondFactor
5617 }
5618 : {};
5619 }
5620 function getModules(api) {
5621 const [council] = api.registry.getModuleInstances(api.runtimeVersion.specName, 'council') || ['council'];
5622 const elections = api.query['phragmenElection']
5623 ? 'phragmenElection'
5624 : api.query['electionsPhragmen']
5625 ? 'electionsPhragmen'
5626 : api.query.elections
5627 ? 'elections'
5628 : null;
5629 const resolvedCouncil = api.query[council] ? council : 'council';
5630 return [resolvedCouncil, elections];
5631 }
5632 function queryAll(api, council, elections) {
5633 return api.queryMulti([
5634 api.query[council].members,
5635 api.query[elections].candidates,
5636 api.query[elections].members,
5637 api.query[elections].runnersUp
5638 ]);
5639 }
5640 function queryCouncil(api, council) {
5641 return combineLatest([
5642 api.query[council].members(),
5643 of([]),
5644 of([]),
5645 of([])
5646 ]);
5647 }
5648 function info$3(instanceId, api) {
5649 return memo(instanceId, () => {
5650 const [council, elections] = getModules(api);
5651 return (elections
5652 ? queryAll(api, council, elections)
5653 : queryCouncil(api, council)).pipe(map(([councilMembers, candidates, members, runnersUp]) => util.objectSpread({}, getConstants(api, elections), {
5654 candidateCount: api.registry.createType('u32', candidates.length),
5655 candidates: candidates.map(getCandidate),
5656 members: members.length
5657 ? members.map(getAccountTuple).sort(sortAccounts)
5658 : councilMembers.map((a) => [a, api.registry.createType('Balance')]),
5659 runnersUp: runnersUp.map(getAccountTuple).sort(sortAccounts)
5660 })));
5661 });
5662 }
5663
5664 const elections = /*#__PURE__*/Object.freeze({
5665 __proto__: null,
5666 info: info$3
5667 });
5668
5669 function mapResult([result, validators, heartbeats, numBlocks]) {
5670 validators.forEach((validator, index) => {
5671 const validatorId = validator.toString();
5672 const blockCount = numBlocks[index];
5673 const hasMessage = !heartbeats[index].isEmpty;
5674 const prev = result[validatorId];
5675 if (!prev || prev.hasMessage !== hasMessage || !prev.blockCount.eq(blockCount)) {
5676 result[validatorId] = {
5677 blockCount,
5678 hasMessage,
5679 isOnline: hasMessage || blockCount.gt(util.BN_ZERO)
5680 };
5681 }
5682 });
5683 return result;
5684 }
5685 function receivedHeartbeats(instanceId, api) {
5686 return memo(instanceId, () => api.query.imOnline?.receivedHeartbeats
5687 ? api.derive.staking.overview().pipe(switchMap(({ currentIndex, validators }) => combineLatest([
5688 of({}),
5689 of(validators),
5690 api.query.imOnline.receivedHeartbeats.multi(validators.map((_address, index) => [currentIndex, index])),
5691 api.query.imOnline.authoredBlocks.multi(validators.map((address) => [currentIndex, address]))
5692 ])), map(mapResult))
5693 : of({}));
5694 }
5695
5696 const imOnline = /*#__PURE__*/Object.freeze({
5697 __proto__: null,
5698 receivedHeartbeats: receivedHeartbeats
5699 });
5700
5701 const members$2 = members$5('membership');
5702 const hasProposals$1 = hasProposals$4('membership');
5703 const proposal$1 = proposal$4('membership');
5704 const proposalCount$1 = proposalCount$4('membership');
5705 const proposalHashes$1 = proposalHashes$4('membership');
5706 const proposals$2 = proposals$6('membership');
5707 const prime$1 = prime$4('membership');
5708
5709 const membership = /*#__PURE__*/Object.freeze({
5710 __proto__: null,
5711 hasProposals: hasProposals$1,
5712 members: members$2,
5713 prime: prime$1,
5714 proposal: proposal$1,
5715 proposalCount: proposalCount$1,
5716 proposalHashes: proposalHashes$1,
5717 proposals: proposals$2
5718 });
5719
5720 function didUpdateToBool(didUpdate, id) {
5721 return didUpdate.isSome
5722 ? didUpdate.unwrap().some((paraId) => paraId.eq(id))
5723 : false;
5724 }
5725
5726 function parseActive(id, active) {
5727 const found = active.find(([paraId]) => paraId === id);
5728 if (found && found[1].isSome) {
5729 const [collatorId, retriable] = found[1].unwrap();
5730 return util.objectSpread({ collatorId }, retriable.isWithRetries
5731 ? {
5732 isRetriable: true,
5733 retries: retriable.asWithRetries.toNumber()
5734 }
5735 : {
5736 isRetriable: false,
5737 retries: 0
5738 });
5739 }
5740 return null;
5741 }
5742 function parseCollators(id, collatorQueue) {
5743 return collatorQueue.map((queue) => {
5744 const found = queue.find(([paraId]) => paraId === id);
5745 return found ? found[1] : null;
5746 });
5747 }
5748 function parse$2(id, [active, retryQueue, selectedThreads, didUpdate, info, pendingSwap, heads, relayDispatchQueue]) {
5749 if (info.isNone) {
5750 return null;
5751 }
5752 return {
5753 active: parseActive(id, active),
5754 didUpdate: didUpdateToBool(didUpdate, id),
5755 heads,
5756 id,
5757 info: util.objectSpread({ id }, info.unwrap()),
5758 pendingSwapId: pendingSwap.unwrapOr(null),
5759 relayDispatchQueue,
5760 retryCollators: parseCollators(id, retryQueue),
5761 selectedCollators: parseCollators(id, selectedThreads)
5762 };
5763 }
5764 function info$2(instanceId, api) {
5765 return memo(instanceId, (id) => api.query['registrar'] && api.query['parachains']
5766 ? api.queryMulti([
5767 api.query['registrar']['active'],
5768 api.query['registrar']['retryQueue'],
5769 api.query['registrar']['selectedThreads'],
5770 api.query['parachains']['didUpdate'],
5771 [api.query['registrar']['paras'], id],
5772 [api.query['registrar']['pendingSwap'], id],
5773 [api.query['parachains']['heads'], id],
5774 [api.query['parachains']['relayDispatchQueue'], id]
5775 ])
5776 .pipe(map((result) => parse$2(api.registry.createType('ParaId', id), result)))
5777 : of(null));
5778 }
5779
5780 function parse$1([ids, didUpdate, relayDispatchQueueSizes, infos, pendingSwaps]) {
5781 return ids.map((id, index) => ({
5782 didUpdate: didUpdateToBool(didUpdate, id),
5783 id,
5784 info: util.objectSpread({ id }, infos[index].unwrapOr(null)),
5785 pendingSwapId: pendingSwaps[index].unwrapOr(null),
5786 relayDispatchQueueSize: relayDispatchQueueSizes[index][0].toNumber()
5787 }));
5788 }
5789 function overview$1(instanceId, api) {
5790 return memo(instanceId, () => api.query['registrar']?.['parachains'] && api.query['parachains']
5791 ? api.query['registrar']['parachains']().pipe(switchMap((paraIds) => combineLatest([
5792 of(paraIds),
5793 api.query['parachains']['didUpdate'](),
5794 api.query['parachains']['relayDispatchQueueSize'].multi(paraIds),
5795 api.query['registrar']['paras'].multi(paraIds),
5796 api.query['registrar']['pendingSwap'].multi(paraIds)
5797 ])), map(parse$1))
5798 : of([]));
5799 }
5800
5801 const parachains = /*#__PURE__*/Object.freeze({
5802 __proto__: null,
5803 info: info$2,
5804 overview: overview$1
5805 });
5806
5807 function parse([currentIndex, activeEra, activeEraStart, currentEra, validatorCount]) {
5808 return {
5809 activeEra,
5810 activeEraStart,
5811 currentEra,
5812 currentIndex,
5813 validatorCount
5814 };
5815 }
5816 function queryStaking(api) {
5817 return api.queryMulti([
5818 api.query.session.currentIndex,
5819 api.query.staking.activeEra,
5820 api.query.staking.currentEra,
5821 api.query.staking.validatorCount
5822 ]).pipe(map(([currentIndex, activeOpt, currentEra, validatorCount]) => {
5823 const { index, start } = activeOpt.unwrapOrDefault();
5824 return parse([
5825 currentIndex,
5826 index,
5827 start,
5828 currentEra.unwrapOrDefault(),
5829 validatorCount
5830 ]);
5831 }));
5832 }
5833 function querySession(api) {
5834 return api.query.session.currentIndex().pipe(map((currentIndex) => parse([
5835 currentIndex,
5836 api.registry.createType('EraIndex'),
5837 api.registry.createType('Option<Moment>'),
5838 api.registry.createType('EraIndex'),
5839 api.registry.createType('u32')
5840 ])));
5841 }
5842 function empty(api) {
5843 return of(parse([
5844 api.registry.createType('SessionIndex', 1),
5845 api.registry.createType('EraIndex'),
5846 api.registry.createType('Option<Moment>'),
5847 api.registry.createType('EraIndex'),
5848 api.registry.createType('u32')
5849 ]));
5850 }
5851 function indexes(instanceId, api) {
5852 return memo(instanceId, () => api.query.session
5853 ? api.query.staking
5854 ? queryStaking(api)
5855 : querySession(api)
5856 : empty(api));
5857 }
5858
5859 function info$1(instanceId, api) {
5860 return memo(instanceId, () => api.derive.session.indexes().pipe(map((indexes) => {
5861 const sessionLength = api.consts?.babe?.epochDuration || api.registry.createType('u64', 1);
5862 const sessionsPerEra = api.consts?.staking?.sessionsPerEra || api.registry.createType('SessionIndex', 1);
5863 return util.objectSpread({
5864 eraLength: api.registry.createType('BlockNumber', sessionsPerEra.mul(sessionLength)),
5865 isEpoch: !!api.query.babe,
5866 sessionLength,
5867 sessionsPerEra
5868 }, indexes);
5869 })));
5870 }
5871
5872 function withProgressField(field) {
5873 return (instanceId, api) => memo(instanceId, () => api.derive.session.progress().pipe(map((info) => info[field])));
5874 }
5875 function createDerive(api, info, [currentSlot, epochIndex, epochOrGenesisStartSlot, activeEraStartSessionIndex]) {
5876 const epochStartSlot = epochIndex.mul(info.sessionLength).iadd(epochOrGenesisStartSlot);
5877 const sessionProgress = currentSlot.sub(epochStartSlot);
5878 const eraProgress = info.currentIndex.sub(activeEraStartSessionIndex).imul(info.sessionLength).iadd(sessionProgress);
5879 return util.objectSpread({
5880 eraProgress: api.registry.createType('BlockNumber', eraProgress),
5881 sessionProgress: api.registry.createType('BlockNumber', sessionProgress)
5882 }, info);
5883 }
5884 function queryAura(api) {
5885 return api.derive.session.info().pipe(map((info) => util.objectSpread({
5886 eraProgress: api.registry.createType('BlockNumber'),
5887 sessionProgress: api.registry.createType('BlockNumber')
5888 }, info)));
5889 }
5890 function queryBabe(api) {
5891 return api.derive.session.info().pipe(switchMap((info) => combineLatest([
5892 of(info),
5893 api.query.staking?.erasStartSessionIndex
5894 ? api.queryMulti([
5895 api.query.babe.currentSlot,
5896 api.query.babe.epochIndex,
5897 api.query.babe.genesisSlot,
5898 [api.query.staking.erasStartSessionIndex, info.activeEra]
5899 ])
5900 : api.queryMulti([
5901 api.query.babe.currentSlot,
5902 api.query.babe.epochIndex,
5903 api.query.babe.genesisSlot
5904 ])
5905 ])), map(([info, [currentSlot, epochIndex, genesisSlot, optStartIndex]]) => [
5906 info, [currentSlot, epochIndex, genesisSlot, optStartIndex && optStartIndex.isSome ? optStartIndex.unwrap() : api.registry.createType('SessionIndex', 1)]
5907 ]));
5908 }
5909 function progress(instanceId, api) {
5910 return memo(instanceId, () => api.query.babe
5911 ? queryBabe(api).pipe(map(([info, slots]) => createDerive(api, info, slots)))
5912 : queryAura(api));
5913 }
5914 const eraLength = withProgressField('eraLength');
5915 const eraProgress = withProgressField('eraProgress');
5916 const sessionProgress = withProgressField('sessionProgress');
5917
5918 const session = /*#__PURE__*/Object.freeze({
5919 __proto__: null,
5920 eraLength: eraLength,
5921 eraProgress: eraProgress,
5922 indexes: indexes,
5923 info: info$1,
5924 progress: progress,
5925 sessionProgress: sessionProgress
5926 });
5927
5928 function getPrev(api) {
5929 return api.query.society.candidates().pipe(switchMap((candidates) => combineLatest([
5930 of(candidates),
5931 api.query.society['suspendedCandidates'].multi(candidates.map(({ who }) => who))
5932 ])), map(([candidates, suspended]) => candidates.map(({ kind, value, who }, index) => ({
5933 accountId: who,
5934 isSuspended: suspended[index].isSome,
5935 kind,
5936 value
5937 }))));
5938 }
5939 function getCurr(api) {
5940 return api.query.society.candidates.entries().pipe(map((entries) => entries
5941 .filter(([, opt]) => opt.isSome)
5942 .map(([{ args: [accountId] }, opt]) => [accountId, opt.unwrap()])
5943 .map(([accountId, { bid, kind }]) => ({
5944 accountId,
5945 isSuspended: false,
5946 kind,
5947 value: bid
5948 }))));
5949 }
5950 function candidates(instanceId, api) {
5951 return memo(instanceId, () => api.query.society['suspendedCandidates'] && api.query.society.candidates.creator.meta.type.isPlain
5952 ? getPrev(api)
5953 : getCurr(api));
5954 }
5955
5956 function info(instanceId, api) {
5957 return memo(instanceId, () => combineLatest([
5958 api.query.society.bids(),
5959 api.query.society['defender']
5960 ? api.query.society['defender']()
5961 : of(undefined),
5962 api.query.society.founder(),
5963 api.query.society.head(),
5964 api.query.society['maxMembers']
5965 ? api.query.society['maxMembers']()
5966 : of(undefined),
5967 api.query.society.pot()
5968 ]).pipe(map(([bids, defender, founder, head, maxMembers, pot]) => ({
5969 bids,
5970 defender: defender?.unwrapOr(undefined),
5971 founder: founder.unwrapOr(undefined),
5972 hasDefender: (defender?.isSome && head.isSome && !head.eq(defender)) || false,
5973 head: head.unwrapOr(undefined),
5974 maxMembers,
5975 pot
5976 }))));
5977 }
5978
5979 function member(instanceId, api) {
5980 return memo(instanceId, (accountId) => api.derive.society._members([accountId]).pipe(map(([result]) => result)));
5981 }
5982
5983 function _membersPrev(api, accountIds) {
5984 return combineLatest([
5985 of(accountIds),
5986 api.query.society.payouts.multi(accountIds),
5987 api.query.society['strikes'].multi(accountIds),
5988 api.query.society.defenderVotes.multi(accountIds),
5989 api.query.society.suspendedMembers.multi(accountIds),
5990 api.query.society['vouching'].multi(accountIds)
5991 ]).pipe(map(([accountIds, payouts, strikes, defenderVotes, suspended, vouching]) => accountIds.map((accountId, index) => ({
5992 accountId,
5993 isDefenderVoter: defenderVotes[index].isSome,
5994 isSuspended: suspended[index].isTrue,
5995 payouts: payouts[index],
5996 strikes: strikes[index],
5997 vote: defenderVotes[index].unwrapOr(undefined),
5998 vouching: vouching[index].unwrapOr(undefined)
5999 }))));
6000 }
6001 function _membersCurr(api, accountIds) {
6002 return combineLatest([
6003 of(accountIds),
6004 api.query.society.members.multi(accountIds),
6005 api.query.society.payouts.multi(accountIds),
6006 api.query.society.challengeRoundCount().pipe(switchMap((round) => api.query.society.defenderVotes.multi(accountIds.map((accountId) => [round, accountId])))),
6007 api.query.society.suspendedMembers.multi(accountIds)
6008 ]).pipe(map(([accountIds, members, payouts, defenderVotes, suspendedMembers]) => accountIds
6009 .map((accountId, index) => members[index].isSome
6010 ? {
6011 accountId,
6012 isDefenderVoter: defenderVotes[index].isSome,
6013 isSuspended: suspendedMembers[index].isSome,
6014 member: members[index].unwrap(),
6015 payouts: payouts[index].payouts
6016 }
6017 : null)
6018 .filter((m) => !!m)
6019 .map(({ accountId, isDefenderVoter, isSuspended, member, payouts }) => ({
6020 accountId,
6021 isDefenderVoter,
6022 isSuspended,
6023 payouts,
6024 strikes: member.strikes,
6025 vouching: member.vouching.unwrapOr(undefined)
6026 }))));
6027 }
6028 function _members(instanceId, api) {
6029 return memo(instanceId, (accountIds) => api.query.society.members.creator.meta.type.isMap
6030 ? _membersCurr(api, accountIds)
6031 : _membersPrev(api, accountIds));
6032 }
6033 function members$1(instanceId, api) {
6034 return memo(instanceId, () => api.query.society.members.creator.meta.type.isMap
6035 ? api.query.society.members.keys().pipe(switchMap((keys) => api.derive.society._members(keys.map(({ args: [accountId] }) => accountId))))
6036 : api.query.society.members().pipe(switchMap((members) => api.derive.society._members(members))));
6037 }
6038
6039 const society = /*#__PURE__*/Object.freeze({
6040 __proto__: null,
6041 _members: _members,
6042 candidates: candidates,
6043 info: info,
6044 member: member,
6045 members: members$1
6046 });
6047
6048 const QUERY_OPTS = {
6049 withDestination: true,
6050 withLedger: true,
6051 withNominations: true,
6052 withPrefs: true
6053 };
6054 function groupByEra(list) {
6055 return list.reduce((map, { era, value }) => {
6056 const key = era.toString();
6057 map[key] = (map[key] || util.BN_ZERO).add(value.unwrap());
6058 return map;
6059 }, {});
6060 }
6061 function calculateUnlocking(api, stakingLedger, sessionInfo) {
6062 const results = Object
6063 .entries(groupByEra((stakingLedger?.unlocking || []).filter(({ era }) => era.unwrap().gt(sessionInfo.activeEra))))
6064 .map(([eraString, value]) => ({
6065 remainingEras: new util.BN(eraString).isub(sessionInfo.activeEra),
6066 value: api.registry.createType('Balance', value)
6067 }));
6068 return results.length
6069 ? results
6070 : undefined;
6071 }
6072 function redeemableSum(api, stakingLedger, sessionInfo) {
6073 return api.registry.createType('Balance', (stakingLedger?.unlocking || []).reduce((total, { era, value }) => {
6074 return era.unwrap().gt(sessionInfo.currentEra)
6075 ? total
6076 : total.iadd(value.unwrap());
6077 }, new util.BN(0)));
6078 }
6079 function parseResult$1(api, sessionInfo, keys, query) {
6080 return util.objectSpread({}, keys, query, {
6081 redeemable: redeemableSum(api, query.stakingLedger, sessionInfo),
6082 unlocking: calculateUnlocking(api, query.stakingLedger, sessionInfo)
6083 });
6084 }
6085 function accounts(instanceId, api) {
6086 return memo(instanceId, (accountIds, opts = QUERY_OPTS) => api.derive.session.info().pipe(switchMap((sessionInfo) => combineLatest([
6087 api.derive.staking.keysMulti(accountIds),
6088 api.derive.staking.queryMulti(accountIds, opts)
6089 ]).pipe(map(([keys, queries]) => queries.map((q, index) => parseResult$1(api, sessionInfo, keys[index], q)))))));
6090 }
6091 const account = firstMemo((api, accountId, opts) => api.derive.staking.accounts([accountId], opts));
6092
6093 function currentPoints(instanceId, api) {
6094 return memo(instanceId, () => api.derive.session.indexes().pipe(switchMap(({ activeEra }) => api.query.staking.erasRewardPoints(activeEra))));
6095 }
6096
6097 const DEFAULT_FLAGS$1 = { withController: true, withExposure: true, withPrefs: true };
6098 function combineAccounts(nextElected, validators) {
6099 return util.arrayFlatten([nextElected, validators.filter((v) => !nextElected.find((n) => n.eq(v)))]);
6100 }
6101 function electedInfo(instanceId, api) {
6102 return memo(instanceId, (flags = DEFAULT_FLAGS$1, page = 0) => api.derive.staking.validators().pipe(switchMap(({ nextElected, validators }) => api.derive.staking.queryMulti(combineAccounts(nextElected, validators), flags, page).pipe(map((info) => ({
6103 info,
6104 nextElected,
6105 validators
6106 }))))));
6107 }
6108
6109 function getEraCache(CACHE_KEY, era, withActive) {
6110 const cacheKey = `${CACHE_KEY}-${era.toString()}`;
6111 return [
6112 cacheKey,
6113 withActive
6114 ? undefined
6115 : deriveCache.get(cacheKey)
6116 ];
6117 }
6118 function getEraMultiCache(CACHE_KEY, eras, withActive) {
6119 const cached = withActive
6120 ? []
6121 : eras
6122 .map((e) => deriveCache.get(`${CACHE_KEY}-${e.toString()}`))
6123 .filter((v) => !!v);
6124 return cached;
6125 }
6126 function setEraCache(cacheKey, withActive, value) {
6127 !withActive && deriveCache.set(cacheKey, value);
6128 return value;
6129 }
6130 function setEraMultiCache(CACHE_KEY, withActive, values) {
6131 !withActive && values.forEach((v) => deriveCache.set(`${CACHE_KEY}-${v.era.toString()}`, v));
6132 return values;
6133 }
6134 function filterCachedEras(eras, cached, query) {
6135 return eras
6136 .map((e) => cached.find(({ era }) => e.eq(era)) ||
6137 query.find(({ era }) => e.eq(era)))
6138 .filter((e) => !!e);
6139 }
6140
6141 const ERA_CHUNK_SIZE = 14;
6142 function chunkEras(eras, fn) {
6143 const chunked = util.arrayChunk(eras, ERA_CHUNK_SIZE);
6144 let index = 0;
6145 const subject = new BehaviorSubject(chunked[index]);
6146 return subject.pipe(switchMap(fn), tap(() => {
6147 util.nextTick(() => {
6148 index++;
6149 index === chunked.length
6150 ? subject.complete()
6151 : subject.next(chunked[index]);
6152 });
6153 }), toArray(), map(util.arrayFlatten));
6154 }
6155 function filterEras(eras, list) {
6156 return eras.filter((e) => !list.some(({ era }) => e.eq(era)));
6157 }
6158 function erasHistoricApply(fn) {
6159 return (instanceId, api) =>
6160 memo(instanceId, (withActive = false) => api.derive.staking.erasHistoric(withActive).pipe(switchMap((e) => api.derive.staking[fn](e, withActive))));
6161 }
6162 function erasHistoricApplyAccount(fn) {
6163 return (instanceId, api) =>
6164 memo(instanceId, (accountId, withActive = false, page) => api.derive.staking.erasHistoric(withActive).pipe(switchMap((e) => api.derive.staking[fn](accountId, e, withActive, page || 0))));
6165 }
6166 function singleEra(fn) {
6167 return (instanceId, api) =>
6168 memo(instanceId, (era) => api.derive.staking[fn](era, true));
6169 }
6170 function combineEras(fn) {
6171 return (instanceId, api) =>
6172 memo(instanceId, (eras, withActive) => !eras.length
6173 ? of([])
6174 : chunkEras(eras, (eras) => combineLatest(eras.map((e) => api.derive.staking[fn](e, withActive)))));
6175 }
6176
6177 const CACHE_KEY$4 = 'eraExposure';
6178 function mapStakersClipped(era, stakers) {
6179 const nominators = {};
6180 const validators = {};
6181 stakers.forEach(([key, exposure]) => {
6182 const validatorId = key.args[1].toString();
6183 validators[validatorId] = exposure;
6184 exposure.others.forEach(({ who }, validatorIndex) => {
6185 const nominatorId = who.toString();
6186 nominators[nominatorId] = nominators[nominatorId] || [];
6187 nominators[nominatorId].push({ validatorId, validatorIndex });
6188 });
6189 });
6190 return { era, nominators, validators };
6191 }
6192 function mapStakersPaged(era, stakers) {
6193 const nominators = {};
6194 const validators = {};
6195 stakers.forEach(([key, exposureOpt]) => {
6196 if (exposureOpt.isSome) {
6197 const validatorId = key.args[1].toString();
6198 const exposure = exposureOpt.unwrap();
6199 validators[validatorId] = exposure;
6200 exposure.others.forEach(({ who }, validatorIndex) => {
6201 const nominatorId = who.toString();
6202 nominators[nominatorId] = nominators[nominatorId] || [];
6203 nominators[nominatorId].push({ validatorId, validatorIndex });
6204 });
6205 }
6206 });
6207 return { era, nominators, validators };
6208 }
6209 function _eraExposure(instanceId, api) {
6210 return memo(instanceId, (era, withActive = false) => {
6211 const [cacheKey, cached] = getEraCache(CACHE_KEY$4, era, withActive);
6212 return cached
6213 ? of(cached)
6214 : api.query.staking.erasStakersPaged
6215 ? api.query.staking.erasStakersPaged.entries(era).pipe(map((r) => setEraCache(cacheKey, withActive, mapStakersPaged(era, r))))
6216 : api.query.staking.erasStakersClipped.entries(era).pipe(map((r) => setEraCache(cacheKey, withActive, mapStakersClipped(era, r))));
6217 });
6218 }
6219 const eraExposure = singleEra('_eraExposure');
6220 const _erasExposure = combineEras('_eraExposure');
6221 const erasExposure = erasHistoricApply('_erasExposure');
6222
6223 function erasHistoric(instanceId, api) {
6224 return memo(instanceId, (withActive) => combineLatest([
6225 api.query.staking.activeEra(),
6226 api.consts.staking.historyDepth
6227 ? of(api.consts.staking.historyDepth)
6228 : api.query.staking['historyDepth']()
6229 ]).pipe(map(([activeEraOpt, historyDepth]) => {
6230 const result = [];
6231 const max = historyDepth.toNumber();
6232 const activeEra = activeEraOpt.unwrapOrDefault().index;
6233 let lastEra = activeEra;
6234 while (lastEra.gte(util.BN_ZERO) && (result.length < max)) {
6235 if ((lastEra !== activeEra) || (withActive === true)) {
6236 result.push(api.registry.createType('EraIndex', lastEra));
6237 }
6238 lastEra = lastEra.sub(util.BN_ONE);
6239 }
6240 return result.reverse();
6241 })));
6242 }
6243
6244 const CACHE_KEY$3 = 'eraPoints';
6245 function mapValidators({ individual }) {
6246 return [...individual.entries()]
6247 .filter(([, points]) => points.gt(util.BN_ZERO))
6248 .reduce((result, [validatorId, points]) => {
6249 result[validatorId.toString()] = points;
6250 return result;
6251 }, {});
6252 }
6253 function mapPoints(eras, points) {
6254 return eras.map((era, index) => ({
6255 era,
6256 eraPoints: points[index].total,
6257 validators: mapValidators(points[index])
6258 }));
6259 }
6260 function _erasPoints(instanceId, api) {
6261 return memo(instanceId, (eras, withActive) => {
6262 if (!eras.length) {
6263 return of([]);
6264 }
6265 const cached = getEraMultiCache(CACHE_KEY$3, eras, withActive);
6266 const remaining = filterEras(eras, cached);
6267 return !remaining.length
6268 ? of(cached)
6269 : api.query.staking.erasRewardPoints.multi(remaining).pipe(map((p) => filterCachedEras(eras, cached, setEraMultiCache(CACHE_KEY$3, withActive, mapPoints(remaining, p)))));
6270 });
6271 }
6272 const erasPoints = erasHistoricApply('_erasPoints');
6273
6274 const CACHE_KEY$2 = 'eraPrefs';
6275 function mapPrefs(era, all) {
6276 const validators = {};
6277 all.forEach(([key, prefs]) => {
6278 validators[key.args[1].toString()] = prefs;
6279 });
6280 return { era, validators };
6281 }
6282 function _eraPrefs(instanceId, api) {
6283 return memo(instanceId, (era, withActive) => {
6284 const [cacheKey, cached] = getEraCache(CACHE_KEY$2, era, withActive);
6285 return cached
6286 ? of(cached)
6287 : api.query.staking.erasValidatorPrefs.entries(era).pipe(map((r) => setEraCache(cacheKey, withActive, mapPrefs(era, r))));
6288 });
6289 }
6290 const eraPrefs = singleEra('_eraPrefs');
6291 const _erasPrefs = combineEras('_eraPrefs');
6292 const erasPrefs = erasHistoricApply('_erasPrefs');
6293
6294 const CACHE_KEY$1 = 'eraRewards';
6295 function mapRewards(eras, optRewards) {
6296 return eras.map((era, index) => ({
6297 era,
6298 eraReward: optRewards[index].unwrapOrDefault()
6299 }));
6300 }
6301 function _erasRewards(instanceId, api) {
6302 return memo(instanceId, (eras, withActive) => {
6303 if (!eras.length) {
6304 return of([]);
6305 }
6306 const cached = getEraMultiCache(CACHE_KEY$1, eras, withActive);
6307 const remaining = filterEras(eras, cached);
6308 if (!remaining.length) {
6309 return of(cached);
6310 }
6311 return api.query.staking.erasValidatorReward.multi(remaining).pipe(map((r) => filterCachedEras(eras, cached, setEraMultiCache(CACHE_KEY$1, withActive, mapRewards(remaining, r)))));
6312 });
6313 }
6314 const erasRewards = erasHistoricApply('_erasRewards');
6315
6316 const CACHE_KEY = 'eraSlashes';
6317 function mapSlashes(era, noms, vals) {
6318 const nominators = {};
6319 const validators = {};
6320 noms.forEach(([key, optBalance]) => {
6321 nominators[key.args[1].toString()] = optBalance.unwrap();
6322 });
6323 vals.forEach(([key, optRes]) => {
6324 validators[key.args[1].toString()] = optRes.unwrapOrDefault()[1];
6325 });
6326 return { era, nominators, validators };
6327 }
6328 function _eraSlashes(instanceId, api) {
6329 return memo(instanceId, (era, withActive) => {
6330 const [cacheKey, cached] = getEraCache(CACHE_KEY, era, withActive);
6331 return cached
6332 ? of(cached)
6333 : combineLatest([
6334 api.query.staking.nominatorSlashInEra.entries(era),
6335 api.query.staking.validatorSlashInEra.entries(era)
6336 ]).pipe(map(([n, v]) => setEraCache(cacheKey, withActive, mapSlashes(era, n, v))));
6337 });
6338 }
6339 const eraSlashes = singleEra('_eraSlashes');
6340 const _erasSlashes = combineEras('_eraSlashes');
6341 const erasSlashes = erasHistoricApply('_erasSlashes');
6342
6343 function extractsIds(stashId, queuedKeys, nextKeys) {
6344 const sessionIds = (queuedKeys.find(([currentId]) => currentId.eq(stashId)) || [undefined, []])[1];
6345 const nextSessionIds = nextKeys.unwrapOr([]);
6346 return {
6347 nextSessionIds: Array.isArray(nextSessionIds)
6348 ? nextSessionIds
6349 : [...nextSessionIds.values()],
6350 sessionIds: Array.isArray(sessionIds)
6351 ? sessionIds
6352 : [...sessionIds.values()]
6353 };
6354 }
6355 const keys = firstMemo((api, stashId) => api.derive.staking.keysMulti([stashId]));
6356 function keysMulti(instanceId, api) {
6357 return memo(instanceId, (stashIds) => stashIds.length
6358 ? api.query.session.queuedKeys().pipe(switchMap((queuedKeys) => combineLatest([
6359 of(queuedKeys),
6360 api.consts['session']?.['dedupKeyPrefix']
6361 ? api.query.session.nextKeys.multi(stashIds.map((s) => [api.consts['session']['dedupKeyPrefix'], s]))
6362 : combineLatest(stashIds.map((s) => api.query.session.nextKeys(s)))
6363 ])), map(([queuedKeys, nextKeys]) => stashIds.map((stashId, index) => extractsIds(stashId, queuedKeys, nextKeys[index]))))
6364 : of([]));
6365 }
6366
6367 function overview(instanceId, api) {
6368 return memo(instanceId, () => combineLatest([
6369 api.derive.session.indexes(),
6370 api.derive.staking.validators()
6371 ]).pipe(map(([indexes, { nextElected, validators }]) => util.objectSpread({}, indexes, {
6372 nextElected,
6373 validators
6374 }))));
6375 }
6376
6377 function _ownExposures(instanceId, api) {
6378 return memo(instanceId, (accountId, eras, _withActive, page) => {
6379 const emptyStakingExposure = api.registry.createType('Exposure');
6380 const emptyOptionPage = api.registry.createType('Option<Null>');
6381 const emptyOptionMeta = api.registry.createType('Option<Null>');
6382 return eras.length
6383 ? combineLatest([
6384 api.query.staking.erasStakersClipped
6385 ? combineLatest(eras.map((e) => api.query.staking.erasStakersClipped(e, accountId)))
6386 : of(eras.map((_) => emptyStakingExposure)),
6387 api.query.staking.erasStakers
6388 ? combineLatest(eras.map((e) => api.query.staking.erasStakers(e, accountId)))
6389 : of(eras.map((_) => emptyStakingExposure)),
6390 api.query.staking.erasStakersPaged
6391 ? combineLatest(eras.map((e) => api.query.staking.erasStakersPaged(e, accountId, page)))
6392 : of(eras.map((_) => emptyOptionPage)),
6393 api.query.staking.erasStakersOverview
6394 ? combineLatest(eras.map((e) => api.query.staking.erasStakersOverview(e, accountId)))
6395 : of(eras.map((_) => emptyOptionMeta))
6396 ]).pipe(map(([clp, exp, paged, expMeta]) => eras.map((era, index) => ({ clipped: clp[index], era, exposure: exp[index], exposureMeta: expMeta[index], exposurePaged: paged[index] }))))
6397 : of([]);
6398 });
6399 }
6400 const ownExposure = firstMemo((api, accountId, era, page) => api.derive.staking._ownExposures(accountId, [era], true, page || 0));
6401 const ownExposures = erasHistoricApplyAccount('_ownExposures');
6402
6403 function _ownSlashes(instanceId, api) {
6404 return memo(instanceId, (accountId, eras, _withActive) => eras.length
6405 ? combineLatest([
6406 combineLatest(eras.map((e) => api.query.staking.validatorSlashInEra(e, accountId))),
6407 combineLatest(eras.map((e) => api.query.staking.nominatorSlashInEra(e, accountId)))
6408 ]).pipe(map(([vals, noms]) => eras.map((era, index) => ({
6409 era,
6410 total: vals[index].isSome
6411 ? vals[index].unwrap()[1]
6412 : noms[index].unwrapOrDefault()
6413 }))))
6414 : of([]));
6415 }
6416 const ownSlash = firstMemo((api, accountId, era) => api.derive.staking._ownSlashes(accountId, [era], true));
6417 const ownSlashes = erasHistoricApplyAccount('_ownSlashes');
6418
6419 function rewardDestinationCompat(rewardDestination) {
6420 return typeof rewardDestination.isSome === 'boolean'
6421 ? rewardDestination.unwrapOr(null)
6422 : rewardDestination;
6423 }
6424 function filterClaimedRewards(api, cl) {
6425 return api.registry.createType('Vec<u32>', cl.filter((c) => c !== -1));
6426 }
6427 function filterRewards$1(stashIds, eras, claimedRewards, stakersOverview) {
6428 const claimedData = {};
6429 const overviewData = {};
6430 const ids = stashIds.map((i) => i.toString());
6431 claimedRewards.forEach(([keys, rewards]) => {
6432 const id = keys.args[1].toString();
6433 const era = keys.args[0].toNumber();
6434 if (ids.includes(id)) {
6435 if (claimedData[id]) {
6436 claimedData[id].set(era, rewards.toArray());
6437 }
6438 else {
6439 claimedData[id] = new Map();
6440 claimedData[id].set(era, rewards.toArray());
6441 }
6442 }
6443 });
6444 stakersOverview.forEach(([keys, overview]) => {
6445 const id = keys.args[1].toString();
6446 const era = keys.args[0].toNumber();
6447 if (ids.includes(id) && overview.isSome) {
6448 if (overviewData[id]) {
6449 overviewData[id].set(era, overview.unwrap().pageCount);
6450 }
6451 else {
6452 overviewData[id] = new Map();
6453 overviewData[id].set(era, overview.unwrap().pageCount);
6454 }
6455 }
6456 });
6457 return stashIds.map((id) => {
6458 const rewardsPerEra = claimedData[id.toString()];
6459 const overviewPerEra = overviewData[id.toString()];
6460 return eras.map((era) => {
6461 if (rewardsPerEra && rewardsPerEra.has(era) && overviewPerEra && overviewPerEra.has(era)) {
6462 const rewards = rewardsPerEra.get(era);
6463 const pageCount = overviewPerEra.get(era);
6464 return rewards.length === pageCount.toNumber()
6465 ? era
6466 : -1;
6467 }
6468 return -1;
6469 });
6470 });
6471 }
6472 function parseDetails(api, stashId, controllerIdOpt, nominatorsOpt, rewardDestinationOpts, validatorPrefs, exposure, stakingLedgerOpt, exposureMeta, claimedRewards, exposureEraStakers) {
6473 return {
6474 accountId: stashId,
6475 claimedRewardsEras: filterClaimedRewards(api, claimedRewards),
6476 controllerId: controllerIdOpt?.unwrapOr(null) || null,
6477 exposureEraStakers,
6478 exposureMeta,
6479 exposurePaged: exposure,
6480 nominators: nominatorsOpt.isSome
6481 ? nominatorsOpt.unwrap().targets
6482 : [],
6483 rewardDestination: rewardDestinationCompat(rewardDestinationOpts),
6484 stakingLedger: stakingLedgerOpt.unwrapOrDefault(),
6485 stashId,
6486 validatorPrefs
6487 };
6488 }
6489 function getLedgers(api, optIds, { withLedger = false }) {
6490 const ids = optIds
6491 .filter((o) => withLedger && !!o && o.isSome)
6492 .map((o) => o.unwrap());
6493 const emptyLed = api.registry.createType('Option<StakingLedger>');
6494 return (ids.length
6495 ? combineLatest(ids.map((s) => api.query.staking.ledger(s)))
6496 : of([])).pipe(map((optLedgers) => {
6497 let offset = -1;
6498 return optIds.map((o) => o && o.isSome
6499 ? optLedgers[++offset] || emptyLed
6500 : emptyLed);
6501 }));
6502 }
6503 function getStashInfo(api, stashIds, activeEra, { withClaimedRewardsEras, withController, withDestination, withExposure, withExposureErasStakersLegacy, withExposureMeta, withLedger, withNominations, withPrefs }, page) {
6504 const emptyNoms = api.registry.createType('Option<Nominations>');
6505 const emptyRewa = api.registry.createType('RewardDestination');
6506 const emptyExpoEraStakers = api.registry.createType('Exposure');
6507 const emptyPrefs = api.registry.createType('ValidatorPrefs');
6508 const emptyExpo = api.registry.createType('Option<Null>');
6509 const emptyExpoMeta = api.registry.createType('Option<Null>');
6510 const emptyClaimedRewards = [-1];
6511 const depth = Number(api.consts.staking.historyDepth.toNumber());
6512 const eras = new Array(depth).fill(0).map((_, idx) => {
6513 if (idx === 0) {
6514 return activeEra.toNumber() - 1;
6515 }
6516 return activeEra.toNumber() - idx - 1;
6517 });
6518 return combineLatest([
6519 withController || withLedger
6520 ? combineLatest(stashIds.map((s) => api.query.staking.bonded(s)))
6521 : of(stashIds.map(() => null)),
6522 withNominations
6523 ? combineLatest(stashIds.map((s) => api.query.staking.nominators(s)))
6524 : of(stashIds.map(() => emptyNoms)),
6525 withDestination
6526 ? combineLatest(stashIds.map((s) => api.query.staking.payee(s)))
6527 : of(stashIds.map(() => emptyRewa)),
6528 withPrefs
6529 ? combineLatest(stashIds.map((s) => api.query.staking.validators(s)))
6530 : of(stashIds.map(() => emptyPrefs)),
6531 withExposure && api.query.staking.erasStakersPaged
6532 ? combineLatest(stashIds.map((s) => api.query.staking.erasStakersPaged(activeEra, s, page)))
6533 : of(stashIds.map(() => emptyExpo)),
6534 withExposureMeta && api.query.staking.erasStakersOverview
6535 ? combineLatest(stashIds.map((s) => api.query.staking.erasStakersOverview(activeEra, s)))
6536 : of(stashIds.map(() => emptyExpoMeta)),
6537 withClaimedRewardsEras && api.query.staking.claimedRewards
6538 ? combineLatest([
6539 api.query.staking.claimedRewards.entries(),
6540 api.query.staking.erasStakersOverview.entries()
6541 ]).pipe(map(([rewardsStorageVec, overviewStorageVec]) => filterRewards$1(stashIds, eras, rewardsStorageVec, overviewStorageVec)))
6542 : of(stashIds.map(() => emptyClaimedRewards)),
6543 withExposureErasStakersLegacy && api.query.staking.erasStakers
6544 ? combineLatest(stashIds.map((s) => api.query.staking.erasStakers(activeEra, s)))
6545 : of(stashIds.map(() => emptyExpoEraStakers))
6546 ]);
6547 }
6548 function getBatch(api, activeEra, stashIds, flags, page) {
6549 return getStashInfo(api, stashIds, activeEra, flags, page).pipe(switchMap(([controllerIdOpt, nominatorsOpt, rewardDestination, validatorPrefs, exposure, exposureMeta, claimedRewardsEras, exposureEraStakers]) => getLedgers(api, controllerIdOpt, flags).pipe(map((stakingLedgerOpts) => stashIds.map((stashId, index) => parseDetails(api, stashId, controllerIdOpt[index], nominatorsOpt[index], rewardDestination[index], validatorPrefs[index], exposure[index], stakingLedgerOpts[index], exposureMeta[index], claimedRewardsEras[index], exposureEraStakers[index]))))));
6550 }
6551 const query = firstMemo((api, accountId, flags, page) => api.derive.staking.queryMulti([accountId], flags, page));
6552 function queryMulti(instanceId, api) {
6553 return memo(instanceId, (accountIds, flags, page) => api.derive.session.indexes().pipe(switchMap(({ activeEra }) => {
6554 const stashIds = accountIds.map((a) => api.registry.createType('AccountId', a));
6555 const p = page || 0;
6556 return stashIds.length
6557 ? getBatch(api, activeEra, stashIds, flags, p)
6558 : of([]);
6559 })));
6560 }
6561
6562 function _stakerExposures(instanceId, api) {
6563 return memo(instanceId, (accountIds, eras, withActive = false) => {
6564 const stakerIds = accountIds.map((a) => api.registry.createType('AccountId', a).toString());
6565 return api.derive.staking._erasExposure(eras, withActive).pipe(map((exposures) => stakerIds.map((stakerId) => exposures.map(({ era, nominators: allNominators, validators: allValidators }) => {
6566 const isValidator = !!allValidators[stakerId];
6567 const validators = {};
6568 const nominating = allNominators[stakerId] || [];
6569 if (isValidator) {
6570 validators[stakerId] = allValidators[stakerId];
6571 }
6572 else if (nominating) {
6573 nominating.forEach(({ validatorId }) => {
6574 validators[validatorId] = allValidators[validatorId];
6575 });
6576 }
6577 return { era, isEmpty: !Object.keys(validators).length, isValidator, nominating, validators };
6578 }))));
6579 });
6580 }
6581 function stakerExposures(instanceId, api) {
6582 return memo(instanceId, (accountIds, withActive = false) => api.derive.staking.erasHistoric(withActive).pipe(switchMap((eras) => api.derive.staking._stakerExposures(accountIds, eras, withActive))));
6583 }
6584 const stakerExposure = firstMemo((api, accountId, withActive) => api.derive.staking.stakerExposures([accountId], withActive));
6585
6586 function _stakerPoints(instanceId, api) {
6587 return memo(instanceId, (accountId, eras, withActive) => {
6588 const stakerId = api.registry.createType('AccountId', accountId).toString();
6589 return api.derive.staking._erasPoints(eras, withActive).pipe(map((points) => points.map(({ era, eraPoints, validators }) => ({
6590 era,
6591 eraPoints,
6592 points: validators[stakerId] || api.registry.createType('RewardPoint')
6593 }))));
6594 });
6595 }
6596 const stakerPoints = erasHistoricApplyAccount('_stakerPoints');
6597
6598 function _stakerPrefs(instanceId, api) {
6599 return memo(instanceId, (accountId, eras, _withActive) => api.query.staking.erasValidatorPrefs.multi(eras.map((e) => [e, accountId])).pipe(map((all) => all.map((validatorPrefs, index) => ({
6600 era: eras[index],
6601 validatorPrefs
6602 })))));
6603 }
6604 const stakerPrefs = erasHistoricApplyAccount('_stakerPrefs');
6605
6606 function extractCompatRewards(claimedRewardsEras, ledger) {
6607 const l = ledger
6608 ? (ledger.legacyClaimedRewards ||
6609 ledger.claimedRewards).toArray()
6610 : [];
6611 return claimedRewardsEras.toArray().concat(l);
6612 }
6613 function parseRewards(api, stashId, [erasPoints, erasPrefs, erasRewards], exposures) {
6614 return exposures.map(({ era, isEmpty, isValidator, nominating, validators: eraValidators }) => {
6615 const { eraPoints, validators: allValPoints } = erasPoints.find((p) => p.era.eq(era)) || { eraPoints: util.BN_ZERO, validators: {} };
6616 const { eraReward } = erasRewards.find((r) => r.era.eq(era)) || { eraReward: api.registry.createType('Balance') };
6617 const { validators: allValPrefs } = erasPrefs.find((p) => p.era.eq(era)) || { validators: {} };
6618 const validators = {};
6619 const stakerId = stashId.toString();
6620 Object.entries(eraValidators).forEach(([validatorId, exposure]) => {
6621 const valPoints = allValPoints[validatorId] || util.BN_ZERO;
6622 const valComm = allValPrefs[validatorId]?.commission.unwrap() || util.BN_ZERO;
6623 const expTotal = exposure.total
6624 ? exposure.total?.unwrap()
6625 : exposure.pageTotal
6626 ? exposure.pageTotal?.unwrap()
6627 : util.BN_ZERO;
6628 let avail = util.BN_ZERO;
6629 let value;
6630 if (!(expTotal.isZero() || valPoints.isZero() || eraPoints.isZero())) {
6631 avail = eraReward.mul(valPoints).div(eraPoints);
6632 const valCut = valComm.mul(avail).div(util.BN_BILLION);
6633 let staked;
6634 if (validatorId === stakerId) {
6635 if (exposure.own) {
6636 staked = exposure.own.unwrap();
6637 }
6638 else {
6639 const expAccount = exposure.others.find(({ who }) => who.eq(validatorId));
6640 staked = expAccount
6641 ? expAccount.value.unwrap()
6642 : util.BN_ZERO;
6643 }
6644 }
6645 else {
6646 const stakerExp = exposure.others.find(({ who }) => who.eq(stakerId));
6647 staked = stakerExp
6648 ? stakerExp.value.unwrap()
6649 : util.BN_ZERO;
6650 }
6651 value = avail.sub(valCut).imul(staked).div(expTotal).iadd(validatorId === stakerId ? valCut : util.BN_ZERO);
6652 }
6653 validators[validatorId] = {
6654 total: api.registry.createType('Balance', avail),
6655 value: api.registry.createType('Balance', value)
6656 };
6657 });
6658 return {
6659 era,
6660 eraReward,
6661 isEmpty,
6662 isValidator,
6663 nominating,
6664 validators
6665 };
6666 });
6667 }
6668 function allUniqValidators(rewards) {
6669 return rewards.reduce(([all, perStash], rewards) => {
6670 const uniq = [];
6671 perStash.push(uniq);
6672 rewards.forEach(({ validators }) => Object.keys(validators).forEach((validatorId) => {
6673 if (!uniq.includes(validatorId)) {
6674 uniq.push(validatorId);
6675 if (!all.includes(validatorId)) {
6676 all.push(validatorId);
6677 }
6678 }
6679 }));
6680 return [all, perStash];
6681 }, [[], []]);
6682 }
6683 function removeClaimed(validators, queryValidators, reward, claimedRewardsEras) {
6684 const rm = [];
6685 Object.keys(reward.validators).forEach((validatorId) => {
6686 const index = validators.indexOf(validatorId);
6687 if (index !== -1) {
6688 const valLedger = queryValidators[index].stakingLedger;
6689 if (extractCompatRewards(claimedRewardsEras, valLedger).some((e) => reward.era.eq(e))) {
6690 rm.push(validatorId);
6691 }
6692 }
6693 });
6694 rm.forEach((validatorId) => {
6695 delete reward.validators[validatorId];
6696 });
6697 }
6698 function filterRewards(eras, valInfo, { claimedRewardsEras, rewards, stakingLedger }) {
6699 const filter = eras.filter((e) => !extractCompatRewards(claimedRewardsEras, stakingLedger).some((s) => s.eq(e)));
6700 const validators = valInfo.map(([v]) => v);
6701 const queryValidators = valInfo.map(([, q]) => q);
6702 return rewards
6703 .filter(({ isEmpty }) => !isEmpty)
6704 .filter((reward) => {
6705 if (!filter.some((e) => reward.era.eq(e))) {
6706 return false;
6707 }
6708 removeClaimed(validators, queryValidators, reward, claimedRewardsEras);
6709 return true;
6710 })
6711 .filter(({ validators }) => Object.keys(validators).length !== 0)
6712 .map((reward) => util.objectSpread({}, reward, {
6713 nominators: reward.nominating.filter((n) => reward.validators[n.validatorId])
6714 }));
6715 }
6716 function _stakerRewardsEras(instanceId, api) {
6717 return memo(instanceId, (eras, withActive = false) => combineLatest([
6718 api.derive.staking._erasPoints(eras, withActive),
6719 api.derive.staking._erasPrefs(eras, withActive),
6720 api.derive.staking._erasRewards(eras, withActive)
6721 ]));
6722 }
6723 function _stakerRewards(instanceId, api) {
6724 return memo(instanceId, (accountIds, eras, withActive = false) => combineLatest([
6725 api.derive.staking.queryMulti(accountIds, { withClaimedRewardsEras: true, withLedger: true }),
6726 api.derive.staking._stakerExposures(accountIds, eras, withActive),
6727 api.derive.staking._stakerRewardsEras(eras, withActive)
6728 ]).pipe(switchMap(([queries, exposures, erasResult]) => {
6729 const allRewards = queries.map(({ claimedRewardsEras, stakingLedger, stashId }, index) => (!stashId || (!stakingLedger && !claimedRewardsEras))
6730 ? []
6731 : parseRewards(api, stashId, erasResult, exposures[index]));
6732 if (withActive) {
6733 return of(allRewards);
6734 }
6735 const [allValidators, stashValidators] = allUniqValidators(allRewards);
6736 return api.derive.staking.queryMulti(allValidators, { withClaimedRewardsEras: true, withLedger: true }).pipe(map((queriedVals) => queries.map(({ claimedRewardsEras, stakingLedger }, index) => filterRewards(eras, stashValidators[index]
6737 .map((validatorId) => [
6738 validatorId,
6739 queriedVals.find((q) => q.accountId.eq(validatorId))
6740 ])
6741 .filter((v) => !!v[1]), {
6742 claimedRewardsEras,
6743 rewards: allRewards[index],
6744 stakingLedger
6745 }))));
6746 })));
6747 }
6748 const stakerRewards = firstMemo((api, accountId, withActive) => api.derive.staking.erasHistoric(withActive).pipe(switchMap((eras) => api.derive.staking._stakerRewards([accountId], eras, withActive))));
6749 function stakerRewardsMultiEras(instanceId, api) {
6750 return memo(instanceId, (accountIds, eras) => accountIds.length && eras.length
6751 ? api.derive.staking._stakerRewards(accountIds, eras, false)
6752 : of([]));
6753 }
6754 function stakerRewardsMulti(instanceId, api) {
6755 return memo(instanceId, (accountIds, withActive = false) => api.derive.staking.erasHistoric(withActive).pipe(switchMap((eras) => api.derive.staking.stakerRewardsMultiEras(accountIds, eras))));
6756 }
6757
6758 function _stakerSlashes(instanceId, api) {
6759 return memo(instanceId, (accountId, eras, withActive) => {
6760 const stakerId = api.registry.createType('AccountId', accountId).toString();
6761 return api.derive.staking._erasSlashes(eras, withActive).pipe(map((slashes) => slashes.map(({ era, nominators, validators }) => ({
6762 era,
6763 total: nominators[stakerId] || validators[stakerId] || api.registry.createType('Balance')
6764 }))));
6765 });
6766 }
6767 const stakerSlashes = erasHistoricApplyAccount('_stakerSlashes');
6768
6769 function onBondedEvent(api) {
6770 let current = Date.now();
6771 return api.query.system.events().pipe(map((events) => {
6772 current = events.filter(({ event, phase }) => {
6773 try {
6774 return phase.isApplyExtrinsic &&
6775 event.section === 'staking' &&
6776 event.method === 'Bonded';
6777 }
6778 catch {
6779 return false;
6780 }
6781 })
6782 ? Date.now()
6783 : current;
6784 return current;
6785 }), startWith(current), drr({ skipTimeout: true }));
6786 }
6787 function stashes(instanceId, api) {
6788 return memo(instanceId, () => onBondedEvent(api).pipe(switchMap(() => api.query.staking.validators.keys()), map((keys) => keys.map(({ args: [v] }) => v).filter((a) => a))));
6789 }
6790
6791 function nextElected(instanceId, api) {
6792 return memo(instanceId, () =>
6793 api.query.staking.erasStakersPaged
6794 ? api.derive.session.indexes().pipe(
6795 switchMap(({ currentEra }) => api.query.staking.erasStakersPaged.keys(currentEra)),
6796 map((keys) => [...new Set(keys.map(({ args: [, accountId] }) => accountId.toString()))].map((a) => api.registry.createType('AccountId', a))))
6797 : api.query.staking.erasStakers
6798 ? api.derive.session.indexes().pipe(
6799 switchMap(({ currentEra }) => api.query.staking.erasStakers.keys(currentEra)),
6800 map((keys) => [...new Set(keys.map(({ args: [, accountId] }) => accountId.toString()))].map((a) => api.registry.createType('AccountId', a))))
6801 : api.query.staking['currentElected']());
6802 }
6803 function validators(instanceId, api) {
6804 return memo(instanceId, () =>
6805 combineLatest([
6806 api.query.session
6807 ? api.query.session.validators()
6808 : of([]),
6809 api.query.staking
6810 ? api.derive.staking.nextElected()
6811 : of([])
6812 ]).pipe(map(([validators, nextElected]) => ({
6813 nextElected: nextElected.length
6814 ? nextElected
6815 : validators,
6816 validators
6817 }))));
6818 }
6819
6820 const DEFAULT_FLAGS = { withController: true, withPrefs: true };
6821 function waitingInfo(instanceId, api) {
6822 return memo(instanceId, (flags = DEFAULT_FLAGS) => combineLatest([
6823 api.derive.staking.validators(),
6824 api.derive.staking.stashes()
6825 ]).pipe(switchMap(([{ nextElected }, stashes]) => {
6826 const elected = nextElected.map((a) => a.toString());
6827 const waiting = stashes.filter((v) => !elected.includes(v.toString()));
6828 return api.derive.staking.queryMulti(waiting, flags).pipe(map((info) => ({
6829 info,
6830 waiting
6831 })));
6832 })));
6833 }
6834
6835 const staking = /*#__PURE__*/Object.freeze({
6836 __proto__: null,
6837 _eraExposure: _eraExposure,
6838 _eraPrefs: _eraPrefs,
6839 _eraSlashes: _eraSlashes,
6840 _erasExposure: _erasExposure,
6841 _erasPoints: _erasPoints,
6842 _erasPrefs: _erasPrefs,
6843 _erasRewards: _erasRewards,
6844 _erasSlashes: _erasSlashes,
6845 _ownExposures: _ownExposures,
6846 _ownSlashes: _ownSlashes,
6847 _stakerExposures: _stakerExposures,
6848 _stakerPoints: _stakerPoints,
6849 _stakerPrefs: _stakerPrefs,
6850 _stakerRewards: _stakerRewards,
6851 _stakerRewardsEras: _stakerRewardsEras,
6852 _stakerSlashes: _stakerSlashes,
6853 account: account,
6854 accounts: accounts,
6855 currentPoints: currentPoints,
6856 electedInfo: electedInfo,
6857 eraExposure: eraExposure,
6858 eraPrefs: eraPrefs,
6859 eraSlashes: eraSlashes,
6860 erasExposure: erasExposure,
6861 erasHistoric: erasHistoric,
6862 erasPoints: erasPoints,
6863 erasPrefs: erasPrefs,
6864 erasRewards: erasRewards,
6865 erasSlashes: erasSlashes,
6866 keys: keys,
6867 keysMulti: keysMulti,
6868 nextElected: nextElected,
6869 overview: overview,
6870 ownExposure: ownExposure,
6871 ownExposures: ownExposures,
6872 ownSlash: ownSlash,
6873 ownSlashes: ownSlashes,
6874 query: query,
6875 queryMulti: queryMulti,
6876 stakerExposure: stakerExposure,
6877 stakerExposures: stakerExposures,
6878 stakerPoints: stakerPoints,
6879 stakerPrefs: stakerPrefs,
6880 stakerRewards: stakerRewards,
6881 stakerRewardsMulti: stakerRewardsMulti,
6882 stakerRewardsMultiEras: stakerRewardsMultiEras,
6883 stakerSlashes: stakerSlashes,
6884 stashes: stashes,
6885 validators: validators,
6886 waitingInfo: waitingInfo
6887 });
6888
6889 const members = members$5('technicalCommittee');
6890 const hasProposals = hasProposals$4('technicalCommittee');
6891 const proposal = proposal$4('technicalCommittee');
6892 const proposalCount = proposalCount$4('technicalCommittee');
6893 const proposalHashes = proposalHashes$4('technicalCommittee');
6894 const proposals$1 = proposals$6('technicalCommittee');
6895 const prime = prime$4('technicalCommittee');
6896
6897 const technicalCommittee = /*#__PURE__*/Object.freeze({
6898 __proto__: null,
6899 hasProposals: hasProposals,
6900 members: members,
6901 prime: prime,
6902 proposal: proposal,
6903 proposalCount: proposalCount,
6904 proposalHashes: proposalHashes,
6905 proposals: proposals$1
6906 });
6907
6908 function parseResult(api, { allIds, allProposals, approvalIds, councilProposals, proposalCount }) {
6909 const approvals = [];
6910 const proposals = [];
6911 const councilTreasury = councilProposals.filter(({ proposal }) => proposal && (api.tx.treasury.approveProposal.is(proposal) ||
6912 api.tx.treasury.rejectProposal.is(proposal)));
6913 allIds.forEach((id, index) => {
6914 if (allProposals[index].isSome) {
6915 const council = councilTreasury
6916 .filter(({ proposal }) => proposal && id.eq(proposal.args[0]))
6917 .sort((a, b) => a.proposal && b.proposal
6918 ? a.proposal.method.localeCompare(b.proposal.method)
6919 : a.proposal
6920 ? -1
6921 : 1);
6922 const isApproval = approvalIds.some((approvalId) => approvalId.eq(id));
6923 const derived = { council, id, proposal: allProposals[index].unwrap() };
6924 if (isApproval) {
6925 approvals.push(derived);
6926 }
6927 else {
6928 proposals.push(derived);
6929 }
6930 }
6931 });
6932 return { approvals, proposalCount, proposals };
6933 }
6934 function retrieveProposals(api, proposalCount, approvalIds) {
6935 const proposalIds = [];
6936 const count = proposalCount.toNumber();
6937 for (let index = 0; index < count; index++) {
6938 if (!approvalIds.some((id) => id.eqn(index))) {
6939 proposalIds.push(api.registry.createType('ProposalIndex', index));
6940 }
6941 }
6942 const allIds = [...proposalIds, ...approvalIds];
6943 return combineLatest([
6944 api.query.treasury.proposals.multi(allIds),
6945 api.derive.council
6946 ? api.derive.council.proposals()
6947 : of([])
6948 ]).pipe(map(([allProposals, councilProposals]) => parseResult(api, { allIds, allProposals, approvalIds, councilProposals, proposalCount })));
6949 }
6950 function proposals(instanceId, api) {
6951 return memo(instanceId, () => api.query.treasury
6952 ? combineLatest([
6953 api.query.treasury.proposalCount(),
6954 api.query.treasury.approvals()
6955 ]).pipe(switchMap(([proposalCount, approvalIds]) => retrieveProposals(api, proposalCount, approvalIds)))
6956 : of({
6957 approvals: [],
6958 proposalCount: api.registry.createType('ProposalIndex'),
6959 proposals: []
6960 }));
6961 }
6962
6963 const treasury = /*#__PURE__*/Object.freeze({
6964 __proto__: null,
6965 proposals: proposals
6966 });
6967
6968 function events(instanceId, api) {
6969 return memo(instanceId, (blockHash) => combineLatest([
6970 api.rpc.chain.getBlock(blockHash),
6971 api.queryAt(blockHash).pipe(switchMap((queryAt) => queryAt.system.events()))
6972 ]).pipe(map(([block, events]) => ({ block, events }))));
6973 }
6974
6975 const FALLBACK_MAX_HASH_COUNT = 250;
6976 const FALLBACK_PERIOD = new util.BN(6 * 1000);
6977 const MAX_FINALITY_LAG = new util.BN(5);
6978 const MORTAL_PERIOD = new util.BN(5 * 60 * 1000);
6979
6980 function latestNonce(api, address) {
6981 return api.derive.balances.account(address).pipe(map(({ accountNonce }) => accountNonce));
6982 }
6983 function nextNonce(api, address) {
6984 return api.rpc.system?.accountNextIndex
6985 ? api.rpc.system.accountNextIndex(address)
6986 : latestNonce(api, address);
6987 }
6988 function signingHeader(api) {
6989 return combineLatest([
6990 api.rpc.chain.getHeader().pipe(switchMap((header) =>
6991 header.parentHash.isEmpty
6992 ? of(header)
6993 : api.rpc.chain.getHeader(header.parentHash).pipe(catchError(() => of(header))))),
6994 api.rpc.chain.getFinalizedHead().pipe(switchMap((hash) => api.rpc.chain.getHeader(hash).pipe(catchError(() => of(null)))))
6995 ]).pipe(map(([current, finalized]) =>
6996 !finalized || unwrapBlockNumber(current).sub(unwrapBlockNumber(finalized)).gt(MAX_FINALITY_LAG)
6997 ? current
6998 : finalized));
6999 }
7000 function babeOrAuraPeriod(api) {
7001 const period = api.consts.babe?.expectedBlockTime ||
7002 api.consts['aura']?.slotDuration ||
7003 api.consts.timestamp?.minimumPeriod.muln(2);
7004 return period && period.isZero && !period.isZero() ? period : undefined;
7005 }
7006 function signingInfo(_instanceId, api) {
7007 return (address, nonce, era) => combineLatest([
7008 util.isUndefined(nonce)
7009 ? latestNonce(api, address)
7010 : nonce === -1
7011 ? nextNonce(api, address)
7012 : of(api.registry.createType('Index', nonce)),
7013 (util.isUndefined(era) || (util.isNumber(era) && era > 0))
7014 ? signingHeader(api)
7015 : of(null)
7016 ]).pipe(map(([nonce, header]) => ({
7017 header,
7018 mortalLength: Math.min(api.consts.system?.blockHashCount?.toNumber() || FALLBACK_MAX_HASH_COUNT, MORTAL_PERIOD
7019 .div(babeOrAuraPeriod(api) || FALLBACK_PERIOD)
7020 .iadd(MAX_FINALITY_LAG)
7021 .toNumber()),
7022 nonce
7023 })));
7024 }
7025
7026 const tx = /*#__PURE__*/Object.freeze({
7027 __proto__: null,
7028 events: events,
7029 signingInfo: signingInfo
7030 });
7031
7032 const derive = { accounts: accounts$1, alliance, bagsList, balances, bounties, chain, contracts, council, crowdloan, democracy, elections, imOnline, membership, parachains, session, society, staking, technicalCommittee, treasury, tx };
7033
7034 const checks = {
7035 allianceMotion: {
7036 instances: ['allianceMotion'],
7037 methods: []
7038 },
7039 bagsList: {
7040 instances: ['voterBagsList', 'voterList', 'bagsList'],
7041 methods: [],
7042 withDetect: true
7043 },
7044 contracts: {
7045 instances: ['contracts'],
7046 methods: []
7047 },
7048 council: {
7049 instances: ['council'],
7050 methods: [],
7051 withDetect: true
7052 },
7053 crowdloan: {
7054 instances: ['crowdloan'],
7055 methods: []
7056 },
7057 democracy: {
7058 instances: ['democracy'],
7059 methods: []
7060 },
7061 elections: {
7062 instances: ['phragmenElection', 'electionsPhragmen', 'elections', 'council'],
7063 methods: [],
7064 withDetect: true
7065 },
7066 imOnline: {
7067 instances: ['imOnline'],
7068 methods: []
7069 },
7070 membership: {
7071 instances: ['membership'],
7072 methods: []
7073 },
7074 parachains: {
7075 instances: ['parachains', 'registrar'],
7076 methods: []
7077 },
7078 session: {
7079 instances: ['session'],
7080 methods: []
7081 },
7082 society: {
7083 instances: ['society'],
7084 methods: []
7085 },
7086 staking: {
7087 instances: ['staking'],
7088 methods: ['erasRewardPoints']
7089 },
7090 technicalCommittee: {
7091 instances: ['technicalCommittee'],
7092 methods: [],
7093 withDetect: true
7094 },
7095 treasury: {
7096 instances: ['treasury'],
7097 methods: []
7098 }
7099 };
7100 function getModuleInstances(api, specName, moduleName) {
7101 return api.registry.getModuleInstances(specName, moduleName) || [];
7102 }
7103 function injectFunctions(instanceId, api, derives) {
7104 const result = {};
7105 const names = Object.keys(derives);
7106 const keys = Object.keys(api.query);
7107 const specName = api.runtimeVersion.specName;
7108 const filterKeys = (q) => keys.includes(q);
7109 const filterInstances = (q) => getModuleInstances(api, specName, q).some(filterKeys);
7110 const filterMethods = (all) => (m) => all.some((q) => keys.includes(q) && api.query[q][m]);
7111 const getKeys = (s) => Object.keys(derives[s]);
7112 const creator = (s, m) => derives[s][m](instanceId, api);
7113 const isIncluded = (c) => (!checks[c] || ((checks[c].instances.some(filterKeys) && (!checks[c].methods.length ||
7114 checks[c].methods.every(filterMethods(checks[c].instances)))) ||
7115 (checks[c].withDetect &&
7116 checks[c].instances.some(filterInstances))));
7117 for (let i = 0, count = names.length; i < count; i++) {
7118 const name = names[i];
7119 isIncluded(name) &&
7120 lazyDeriveSection(result, name, getKeys, creator);
7121 }
7122 return result;
7123 }
7124 function getAvailableDerives(instanceId, api, custom = {}) {
7125 return {
7126 ...injectFunctions(instanceId, api, derive),
7127 ...injectFunctions(instanceId, api, custom)
7128 };
7129 }
7130
7131 function decorateDeriveSections(decorateMethod, derives) {
7132 const getKeys = (s) => Object.keys(derives[s]);
7133 const creator = (s, m) => decorateMethod(derives[s][m]);
7134 const result = {};
7135 const names = Object.keys(derives);
7136 for (let i = 0, count = names.length; i < count; i++) {
7137 lazyDeriveSection(result, names[i], getKeys, creator);
7138 }
7139 return result;
7140 }
7141
7142 const recordIdentity = (record) => record;
7143 function filterAndApply(events, section, methods, onFound) {
7144 return events
7145 .filter(({ event }) => section === event.section &&
7146 methods.includes(event.method))
7147 .map((record) => onFound(record));
7148 }
7149 function getDispatchError({ event: { data: [dispatchError] } }) {
7150 return dispatchError;
7151 }
7152 function getDispatchInfo({ event: { data, method } }) {
7153 return method === 'ExtrinsicSuccess'
7154 ? data[0]
7155 : data[1];
7156 }
7157 function extractError(events = []) {
7158 return filterAndApply(events, 'system', ['ExtrinsicFailed'], getDispatchError)[0];
7159 }
7160 function extractInfo(events = []) {
7161 return filterAndApply(events, 'system', ['ExtrinsicFailed', 'ExtrinsicSuccess'], getDispatchInfo)[0];
7162 }
7163 class SubmittableResult {
7164 dispatchError;
7165 dispatchInfo;
7166 internalError;
7167 events;
7168 status;
7169 txHash;
7170 txIndex;
7171 blockNumber;
7172 constructor({ blockNumber, dispatchError, dispatchInfo, events, internalError, status, txHash, txIndex }) {
7173 this.dispatchError = dispatchError || extractError(events);
7174 this.dispatchInfo = dispatchInfo || extractInfo(events);
7175 this.events = events || [];
7176 this.internalError = internalError;
7177 this.status = status;
7178 this.txHash = txHash;
7179 this.txIndex = txIndex;
7180 this.blockNumber = blockNumber;
7181 }
7182 get isCompleted() {
7183 return this.isError || this.status.isInBlock || this.status.isFinalized;
7184 }
7185 get isError() {
7186 return this.status.isDropped || this.status.isFinalityTimeout || this.status.isInvalid || this.status.isUsurped;
7187 }
7188 get isFinalized() {
7189 return this.status.isFinalized;
7190 }
7191 get isInBlock() {
7192 return this.status.isInBlock;
7193 }
7194 get isWarning() {
7195 return this.status.isRetracted;
7196 }
7197 filterRecords(section, method) {
7198 return filterAndApply(this.events, section, Array.isArray(method) ? method : [method], recordIdentity);
7199 }
7200 findRecord(section, method) {
7201 return this.filterRecords(section, method)[0];
7202 }
7203 toHuman(isExtended) {
7204 return {
7205 dispatchError: this.dispatchError?.toHuman(),
7206 dispatchInfo: this.dispatchInfo?.toHuman(),
7207 events: this.events.map((e) => e.toHuman(isExtended)),
7208 internalError: this.internalError?.message.toString(),
7209 status: this.status.toHuman(isExtended)
7210 };
7211 }
7212 }
7213
7214 function makeEraOptions(api, registry, partialOptions, { header, mortalLength, nonce }) {
7215 if (!header) {
7216 if (partialOptions.era && !partialOptions.blockHash) {
7217 throw new Error('Expected blockHash to be passed alongside non-immortal era options');
7218 }
7219 if (util.isNumber(partialOptions.era)) {
7220 delete partialOptions.era;
7221 delete partialOptions.blockHash;
7222 }
7223 return makeSignOptions(api, partialOptions, { nonce });
7224 }
7225 return makeSignOptions(api, partialOptions, {
7226 blockHash: header.hash,
7227 era: registry.createTypeUnsafe('ExtrinsicEra', [{
7228 current: header.number,
7229 period: partialOptions.era || mortalLength
7230 }]),
7231 nonce
7232 });
7233 }
7234 function makeSignAndSendOptions(partialOptions, statusCb) {
7235 let options = {};
7236 if (util.isFunction(partialOptions)) {
7237 statusCb = partialOptions;
7238 }
7239 else {
7240 options = util.objectSpread({}, partialOptions);
7241 }
7242 return [options, statusCb];
7243 }
7244 function makeSignOptions(api, partialOptions, extras) {
7245 return util.objectSpread({ blockHash: api.genesisHash, genesisHash: api.genesisHash }, partialOptions, extras, { runtimeVersion: api.runtimeVersion, signedExtensions: api.registry.signedExtensions, version: api.extrinsicType });
7246 }
7247 function optionsOrNonce(partialOptions = {}) {
7248 return util.isBn(partialOptions) || util.isNumber(partialOptions)
7249 ? { nonce: partialOptions }
7250 : partialOptions;
7251 }
7252 function createClass({ api, apiType, blockHash, decorateMethod }) {
7253 const ExtrinsicBase = api.registry.createClass('Extrinsic');
7254 class Submittable extends ExtrinsicBase {
7255 __internal__ignoreStatusCb;
7256 __internal__transformResult = (util.identity);
7257 constructor(registry, extrinsic) {
7258 super(registry, extrinsic, { version: api.extrinsicType });
7259 this.__internal__ignoreStatusCb = apiType === 'rxjs';
7260 }
7261 get hasDryRun() {
7262 return util.isFunction(api.rpc.system?.dryRun);
7263 }
7264 get hasPaymentInfo() {
7265 return util.isFunction(api.call.transactionPaymentApi?.queryInfo);
7266 }
7267 dryRun(account, optionsOrHash) {
7268 if (!this.hasDryRun) {
7269 throw new Error('The system.dryRun RPC call is not available in your environment');
7270 }
7271 if (blockHash || util.isString(optionsOrHash) || util.isU8a(optionsOrHash)) {
7272 return decorateMethod(() => api.rpc.system.dryRun(this.toHex(), blockHash || optionsOrHash));
7273 }
7274 return decorateMethod(() => this.__internal__observeSign(account, optionsOrHash).pipe(switchMap(() => api.rpc.system.dryRun(this.toHex()))))();
7275 }
7276 paymentInfo(account, optionsOrHash) {
7277 if (!this.hasPaymentInfo) {
7278 throw new Error('The transactionPaymentApi.queryInfo runtime call is not available in your environment');
7279 }
7280 if (blockHash || util.isString(optionsOrHash) || util.isU8a(optionsOrHash)) {
7281 return decorateMethod(() => api.callAt(blockHash || optionsOrHash).pipe(switchMap((callAt) => {
7282 const u8a = this.toU8a();
7283 return callAt.transactionPaymentApi.queryInfo(u8a, u8a.length);
7284 })));
7285 }
7286 const [allOptions] = makeSignAndSendOptions(optionsOrHash);
7287 const address = isKeyringPair(account) ? account.address : account.toString();
7288 return decorateMethod(() => api.derive.tx.signingInfo(address, allOptions.nonce, allOptions.era).pipe(first(), switchMap((signingInfo) => {
7289 const eraOptions = makeEraOptions(api, this.registry, allOptions, signingInfo);
7290 const signOptions = makeSignOptions(api, eraOptions, {});
7291 const u8a = api.tx(this.toU8a()).signFake(address, signOptions).toU8a();
7292 return api.call.transactionPaymentApi.queryInfo(u8a, u8a.length);
7293 })))();
7294 }
7295 send(statusCb) {
7296 const isSubscription = api.hasSubscriptions && (this.__internal__ignoreStatusCb || !!statusCb);
7297 return decorateMethod(isSubscription
7298 ? this.__internal__observeSubscribe
7299 : this.__internal__observeSend)(statusCb);
7300 }
7301 signAsync(account, partialOptions) {
7302 return decorateMethod(() => this.__internal__observeSign(account, partialOptions).pipe(map(() => this)))();
7303 }
7304 signAndSend(account, partialOptions, optionalStatusCb) {
7305 const [options, statusCb] = makeSignAndSendOptions(partialOptions, optionalStatusCb);
7306 const isSubscription = api.hasSubscriptions && (this.__internal__ignoreStatusCb || !!statusCb);
7307 return decorateMethod(() => this.__internal__observeSign(account, options).pipe(switchMap((info) => isSubscription
7308 ? this.__internal__observeSubscribe(info)
7309 : this.__internal__observeSend(info)))
7310 )(statusCb);
7311 }
7312 withResultTransform(transform) {
7313 this.__internal__transformResult = transform;
7314 return this;
7315 }
7316 __internal__observeSign = (account, partialOptions) => {
7317 const address = isKeyringPair(account) ? account.address : account.toString();
7318 const options = optionsOrNonce(partialOptions);
7319 return api.derive.tx.signingInfo(address, options.nonce, options.era).pipe(first(), mergeMap(async (signingInfo) => {
7320 const eraOptions = makeEraOptions(api, this.registry, options, signingInfo);
7321 let updateId = -1;
7322 if (isKeyringPair(account)) {
7323 this.sign(account, eraOptions);
7324 }
7325 else {
7326 updateId = await this.__internal__signViaSigner(address, eraOptions, signingInfo.header);
7327 }
7328 return { options: eraOptions, updateId };
7329 }));
7330 };
7331 __internal__observeStatus = (txHash, status) => {
7332 if (!status.isFinalized && !status.isInBlock) {
7333 return of(this.__internal__transformResult(new SubmittableResult({
7334 status,
7335 txHash
7336 })));
7337 }
7338 const blockHash = status.isInBlock
7339 ? status.asInBlock
7340 : status.asFinalized;
7341 return api.derive.tx.events(blockHash).pipe(map(({ block, events }) => this.__internal__transformResult(new SubmittableResult({
7342 ...filterEvents(txHash, block, events, status),
7343 status,
7344 txHash
7345 }))), catchError((internalError) => of(this.__internal__transformResult(new SubmittableResult({
7346 internalError,
7347 status,
7348 txHash
7349 })))));
7350 };
7351 __internal__observeSend = (info) => {
7352 return api.rpc.author.submitExtrinsic(this).pipe(tap((hash) => {
7353 this.__internal__updateSigner(hash, info);
7354 }));
7355 };
7356 __internal__observeSubscribe = (info) => {
7357 const txHash = this.hash;
7358 return api.rpc.author.submitAndWatchExtrinsic(this).pipe(switchMap((status) => this.__internal__observeStatus(txHash, status)), tap((status) => {
7359 this.__internal__updateSigner(status, info);
7360 }));
7361 };
7362 __internal__signViaSigner = async (address, options, header) => {
7363 const signer = options.signer || api.signer;
7364 if (!signer) {
7365 throw new Error('No signer specified, either via api.setSigner or via sign options. You possibly need to pass through an explicit keypair for the origin so it can be used for signing.');
7366 }
7367 const payload = this.registry.createTypeUnsafe('SignerPayload', [util.objectSpread({}, options, {
7368 address,
7369 blockNumber: header ? header.number : 0,
7370 method: this.method
7371 })]);
7372 let result;
7373 if (util.isFunction(signer.signPayload)) {
7374 result = await signer.signPayload(payload.toPayload());
7375 }
7376 else if (util.isFunction(signer.signRaw)) {
7377 result = await signer.signRaw(payload.toRaw());
7378 }
7379 else {
7380 throw new Error('Invalid signer interface, it should implement either signPayload or signRaw (or both)');
7381 }
7382 super.addSignature(address, result.signature, payload.toPayload());
7383 return result.id;
7384 };
7385 __internal__updateSigner = (status, info) => {
7386 if (info && (info.updateId !== -1)) {
7387 const { options, updateId } = info;
7388 const signer = options.signer || api.signer;
7389 if (signer && util.isFunction(signer.update)) {
7390 signer.update(updateId, status);
7391 }
7392 }
7393 };
7394 }
7395 return Submittable;
7396 }
7397
7398 function createSubmittable(apiType, api, decorateMethod, registry, blockHash) {
7399 const Submittable = createClass({ api, apiType, blockHash, decorateMethod });
7400 return (extrinsic) => new Submittable(registry || api.registry, extrinsic);
7401 }
7402
7403 function findCall(registry, callIndex) {
7404 return registry.findMetaCall(util.u8aToU8a(callIndex));
7405 }
7406 function findError(registry, errorIndex) {
7407 return registry.findMetaError(util.u8aToU8a(errorIndex));
7408 }
7409
7410 const XCM_MAPPINGS = ['AssetInstance', 'Fungibility', 'Junction', 'Junctions', 'MultiAsset', 'MultiAssetFilter', 'MultiLocation', 'Response', 'WildFungibility', 'WildMultiAsset', 'Xcm', 'XcmError', 'XcmOrder'];
7411 function mapXcmTypes(version) {
7412 return XCM_MAPPINGS.reduce((all, key) => util.objectSpread(all, { [key]: `${key}${version}` }), {});
7413 }
7414
7415 const typesChain = {};
7416
7417 const sharedTypes$7 = {
7418 AnchorData: {
7419 anchoredBlock: 'u64',
7420 docRoot: 'H256',
7421 id: 'H256'
7422 },
7423 DispatchErrorModule: 'DispatchErrorModuleU8',
7424 PreCommitData: {
7425 expirationBlock: 'u64',
7426 identity: 'H256',
7427 signingRoot: 'H256'
7428 },
7429 Fee: {
7430 key: 'Hash',
7431 price: 'Balance'
7432 },
7433 MultiAccountData: {
7434 deposit: 'Balance',
7435 depositor: 'AccountId',
7436 signatories: 'Vec<AccountId>',
7437 threshold: 'u16'
7438 },
7439 ChainId: 'u8',
7440 DepositNonce: 'u64',
7441 ResourceId: '[u8; 32]',
7442 'chainbridge::ChainId': 'u8',
7443 RegistryId: 'H160',
7444 TokenId: 'U256',
7445 AssetId: {
7446 registryId: 'RegistryId',
7447 tokenId: 'TokenId'
7448 },
7449 AssetInfo: {
7450 metadata: 'Bytes'
7451 },
7452 MintInfo: {
7453 anchorId: 'Hash',
7454 proofs: 'Vec<ProofMint>',
7455 staticHashes: '[Hash; 3]'
7456 },
7457 Proof: {
7458 leafHash: 'H256',
7459 sortedHashes: 'H256'
7460 },
7461 ProofMint: {
7462 hashes: 'Vec<Hash>',
7463 property: 'Bytes',
7464 salt: '[u8; 32]',
7465 value: 'Bytes'
7466 },
7467 RegistryInfo: {
7468 fields: 'Vec<Bytes>',
7469 ownerCanBurn: 'bool'
7470 },
7471 ProxyType: {
7472 _enum: [
7473 'Any',
7474 'NonTransfer',
7475 'Governance',
7476 'Staking',
7477 'NonProxy'
7478 ]
7479 }
7480 };
7481 const standaloneTypes = {
7482 ...sharedTypes$7,
7483 AccountInfo: 'AccountInfoWithRefCount',
7484 Address: 'LookupSource',
7485 LookupSource: 'IndicesLookupSource',
7486 Multiplier: 'Fixed64',
7487 RefCount: 'RefCountTo259'
7488 };
7489 const versioned$a = [
7490 {
7491 minmax: [240, 243],
7492 types: {
7493 ...standaloneTypes,
7494 ProxyType: {
7495 _enum: [
7496 'Any',
7497 'NonTransfer',
7498 'Governance',
7499 'Staking',
7500 'Vesting'
7501 ]
7502 }
7503 }
7504 },
7505 {
7506 minmax: [244, 999],
7507 types: { ...standaloneTypes }
7508 },
7509 {
7510 minmax: [1000, undefined],
7511 types: { ...sharedTypes$7 }
7512 }
7513 ];
7514
7515 const sharedTypes$6 = {
7516 CompactAssignments: 'CompactAssignmentsWith24',
7517 DispatchErrorModule: 'DispatchErrorModuleU8',
7518 RawSolution: 'RawSolutionWith24',
7519 Keys: 'SessionKeys6',
7520 ProxyType: {
7521 _enum: ['Any', 'NonTransfer', 'Governance', 'Staking', 'IdentityJudgement', 'CancelProxy', 'Auction']
7522 },
7523 Weight: 'WeightV1'
7524 };
7525 const addrIndicesTypes = {
7526 AccountInfo: 'AccountInfoWithRefCount',
7527 Address: 'LookupSource',
7528 CompactAssignments: 'CompactAssignmentsWith16',
7529 DispatchErrorModule: 'DispatchErrorModuleU8',
7530 RawSolution: 'RawSolutionWith16',
7531 Keys: 'SessionKeys5',
7532 LookupSource: 'IndicesLookupSource',
7533 ValidatorPrefs: 'ValidatorPrefsWithCommission'
7534 };
7535 const addrAccountIdTypes$2 = {
7536 AccountInfo: 'AccountInfoWithRefCount',
7537 Address: 'AccountId',
7538 CompactAssignments: 'CompactAssignmentsWith16',
7539 DispatchErrorModule: 'DispatchErrorModuleU8',
7540 RawSolution: 'RawSolutionWith16',
7541 Keys: 'SessionKeys5',
7542 LookupSource: 'AccountId',
7543 ValidatorPrefs: 'ValidatorPrefsWithCommission'
7544 };
7545 const versioned$9 = [
7546 {
7547 minmax: [1019, 1031],
7548 types: {
7549 ...addrIndicesTypes,
7550 BalanceLock: 'BalanceLockTo212',
7551 CompactAssignments: 'CompactAssignmentsTo257',
7552 DispatchError: 'DispatchErrorTo198',
7553 DispatchInfo: 'DispatchInfoTo244',
7554 Heartbeat: 'HeartbeatTo244',
7555 IdentityInfo: 'IdentityInfoTo198',
7556 Keys: 'SessionKeys5',
7557 Multiplier: 'Fixed64',
7558 OpenTip: 'OpenTipTo225',
7559 RefCount: 'RefCountTo259',
7560 ReferendumInfo: 'ReferendumInfoTo239',
7561 Scheduled: 'ScheduledTo254',
7562 SlashingSpans: 'SlashingSpansTo204',
7563 StakingLedger: 'StakingLedgerTo223',
7564 Votes: 'VotesTo230',
7565 Weight: 'u32'
7566 }
7567 },
7568 {
7569 minmax: [1032, 1042],
7570 types: {
7571 ...addrIndicesTypes,
7572 BalanceLock: 'BalanceLockTo212',
7573 CompactAssignments: 'CompactAssignmentsTo257',
7574 DispatchInfo: 'DispatchInfoTo244',
7575 Heartbeat: 'HeartbeatTo244',
7576 Keys: 'SessionKeys5',
7577 Multiplier: 'Fixed64',
7578 OpenTip: 'OpenTipTo225',
7579 RefCount: 'RefCountTo259',
7580 ReferendumInfo: 'ReferendumInfoTo239',
7581 Scheduled: 'ScheduledTo254',
7582 SlashingSpans: 'SlashingSpansTo204',
7583 StakingLedger: 'StakingLedgerTo223',
7584 Votes: 'VotesTo230',
7585 Weight: 'u32'
7586 }
7587 },
7588 {
7589 minmax: [1043, 1045],
7590 types: {
7591 ...addrIndicesTypes,
7592 BalanceLock: 'BalanceLockTo212',
7593 CompactAssignments: 'CompactAssignmentsTo257',
7594 DispatchInfo: 'DispatchInfoTo244',
7595 Heartbeat: 'HeartbeatTo244',
7596 Keys: 'SessionKeys5',
7597 Multiplier: 'Fixed64',
7598 OpenTip: 'OpenTipTo225',
7599 RefCount: 'RefCountTo259',
7600 ReferendumInfo: 'ReferendumInfoTo239',
7601 Scheduled: 'ScheduledTo254',
7602 StakingLedger: 'StakingLedgerTo223',
7603 Votes: 'VotesTo230',
7604 Weight: 'u32'
7605 }
7606 },
7607 {
7608 minmax: [1046, 1049],
7609 types: {
7610 ...sharedTypes$6,
7611 ...addrAccountIdTypes$2,
7612 CompactAssignments: 'CompactAssignmentsTo257',
7613 DispatchInfo: 'DispatchInfoTo244',
7614 Heartbeat: 'HeartbeatTo244',
7615 Multiplier: 'Fixed64',
7616 OpenTip: 'OpenTipTo225',
7617 RefCount: 'RefCountTo259',
7618 ReferendumInfo: 'ReferendumInfoTo239',
7619 Scheduled: 'ScheduledTo254',
7620 StakingLedger: 'StakingLedgerTo223',
7621 Weight: 'u32'
7622 }
7623 },
7624 {
7625 minmax: [1050, 1054],
7626 types: {
7627 ...sharedTypes$6,
7628 ...addrAccountIdTypes$2,
7629 CompactAssignments: 'CompactAssignmentsTo257',
7630 DispatchInfo: 'DispatchInfoTo244',
7631 Heartbeat: 'HeartbeatTo244',
7632 Multiplier: 'Fixed64',
7633 OpenTip: 'OpenTipTo225',
7634 RefCount: 'RefCountTo259',
7635 ReferendumInfo: 'ReferendumInfoTo239',
7636 Scheduled: 'ScheduledTo254',
7637 StakingLedger: 'StakingLedgerTo240',
7638 Weight: 'u32'
7639 }
7640 },
7641 {
7642 minmax: [1055, 1056],
7643 types: {
7644 ...sharedTypes$6,
7645 ...addrAccountIdTypes$2,
7646 CompactAssignments: 'CompactAssignmentsTo257',
7647 DispatchInfo: 'DispatchInfoTo244',
7648 Heartbeat: 'HeartbeatTo244',
7649 Multiplier: 'Fixed64',
7650 OpenTip: 'OpenTipTo225',
7651 RefCount: 'RefCountTo259',
7652 Scheduled: 'ScheduledTo254',
7653 StakingLedger: 'StakingLedgerTo240',
7654 Weight: 'u32'
7655 }
7656 },
7657 {
7658 minmax: [1057, 1061],
7659 types: {
7660 ...sharedTypes$6,
7661 ...addrAccountIdTypes$2,
7662 CompactAssignments: 'CompactAssignmentsTo257',
7663 DispatchInfo: 'DispatchInfoTo244',
7664 Heartbeat: 'HeartbeatTo244',
7665 OpenTip: 'OpenTipTo225',
7666 RefCount: 'RefCountTo259',
7667 Scheduled: 'ScheduledTo254'
7668 }
7669 },
7670 {
7671 minmax: [1062, 2012],
7672 types: {
7673 ...sharedTypes$6,
7674 ...addrAccountIdTypes$2,
7675 CompactAssignments: 'CompactAssignmentsTo257',
7676 OpenTip: 'OpenTipTo225',
7677 RefCount: 'RefCountTo259'
7678 }
7679 },
7680 {
7681 minmax: [2013, 2022],
7682 types: {
7683 ...sharedTypes$6,
7684 ...addrAccountIdTypes$2,
7685 CompactAssignments: 'CompactAssignmentsTo257',
7686 RefCount: 'RefCountTo259'
7687 }
7688 },
7689 {
7690 minmax: [2023, 2024],
7691 types: {
7692 ...sharedTypes$6,
7693 ...addrAccountIdTypes$2,
7694 RefCount: 'RefCountTo259'
7695 }
7696 },
7697 {
7698 minmax: [2025, 2027],
7699 types: {
7700 ...sharedTypes$6,
7701 ...addrAccountIdTypes$2
7702 }
7703 },
7704 {
7705 minmax: [2028, 2029],
7706 types: {
7707 ...sharedTypes$6,
7708 AccountInfo: 'AccountInfoWithDualRefCount',
7709 CompactAssignments: 'CompactAssignmentsWith16',
7710 RawSolution: 'RawSolutionWith16'
7711 }
7712 },
7713 {
7714 minmax: [2030, 9000],
7715 types: {
7716 ...sharedTypes$6,
7717 CompactAssignments: 'CompactAssignmentsWith16',
7718 RawSolution: 'RawSolutionWith16'
7719 }
7720 },
7721 {
7722 minmax: [9010, 9099],
7723 types: {
7724 ...sharedTypes$6,
7725 ...mapXcmTypes('V0')
7726 }
7727 },
7728 {
7729 minmax: [9100, 9105],
7730 types: {
7731 ...sharedTypes$6,
7732 ...mapXcmTypes('V1')
7733 }
7734 },
7735 {
7736 minmax: [9106, undefined],
7737 types: {
7738 Weight: 'WeightV1'
7739 }
7740 }
7741 ];
7742
7743 const versioned$8 = [
7744 {
7745 minmax: [0, undefined],
7746 types: {
7747 Weight: 'WeightV2'
7748 }
7749 }
7750 ];
7751
7752 const versioned$7 = [
7753 {
7754 minmax: [0, undefined],
7755 types: {
7756 Weight: 'WeightV2'
7757 }
7758 }
7759 ];
7760
7761 const sharedTypes$5 = {
7762 CompactAssignments: 'CompactAssignmentsWith16',
7763 DispatchErrorModule: 'DispatchErrorModuleU8',
7764 RawSolution: 'RawSolutionWith16',
7765 Keys: 'SessionKeys6',
7766 ProxyType: {
7767 _enum: {
7768 Any: 0,
7769 NonTransfer: 1,
7770 Governance: 2,
7771 Staking: 3,
7772 UnusedSudoBalances: 4,
7773 IdentityJudgement: 5,
7774 CancelProxy: 6,
7775 Auction: 7
7776 }
7777 },
7778 Weight: 'WeightV1'
7779 };
7780 const addrAccountIdTypes$1 = {
7781 AccountInfo: 'AccountInfoWithRefCount',
7782 Address: 'AccountId',
7783 DispatchErrorModule: 'DispatchErrorModuleU8',
7784 Keys: 'SessionKeys5',
7785 LookupSource: 'AccountId',
7786 ValidatorPrefs: 'ValidatorPrefsWithCommission'
7787 };
7788 const versioned$6 = [
7789 {
7790 minmax: [0, 12],
7791 types: {
7792 ...sharedTypes$5,
7793 ...addrAccountIdTypes$1,
7794 CompactAssignments: 'CompactAssignmentsTo257',
7795 OpenTip: 'OpenTipTo225',
7796 RefCount: 'RefCountTo259'
7797 }
7798 },
7799 {
7800 minmax: [13, 22],
7801 types: {
7802 ...sharedTypes$5,
7803 ...addrAccountIdTypes$1,
7804 CompactAssignments: 'CompactAssignmentsTo257',
7805 RefCount: 'RefCountTo259'
7806 }
7807 },
7808 {
7809 minmax: [23, 24],
7810 types: {
7811 ...sharedTypes$5,
7812 ...addrAccountIdTypes$1,
7813 RefCount: 'RefCountTo259'
7814 }
7815 },
7816 {
7817 minmax: [25, 27],
7818 types: {
7819 ...sharedTypes$5,
7820 ...addrAccountIdTypes$1
7821 }
7822 },
7823 {
7824 minmax: [28, 29],
7825 types: {
7826 ...sharedTypes$5,
7827 AccountInfo: 'AccountInfoWithDualRefCount'
7828 }
7829 },
7830 {
7831 minmax: [30, 9109],
7832 types: {
7833 ...sharedTypes$5
7834 }
7835 },
7836 {
7837 minmax: [9110, undefined],
7838 types: {
7839 Weight: 'WeightV1'
7840 }
7841 }
7842 ];
7843
7844 const sharedTypes$4 = {
7845 DispatchErrorModule: 'DispatchErrorModuleU8',
7846 FullIdentification: '()',
7847 Keys: 'SessionKeys7B',
7848 Weight: 'WeightV1'
7849 };
7850 const versioned$5 = [
7851 {
7852 minmax: [0, 200],
7853 types: {
7854 ...sharedTypes$4,
7855 AccountInfo: 'AccountInfoWithDualRefCount',
7856 Address: 'AccountId',
7857 LookupSource: 'AccountId'
7858 }
7859 },
7860 {
7861 minmax: [201, 214],
7862 types: {
7863 ...sharedTypes$4,
7864 AccountInfo: 'AccountInfoWithDualRefCount'
7865 }
7866 },
7867 {
7868 minmax: [215, 228],
7869 types: {
7870 ...sharedTypes$4,
7871 Keys: 'SessionKeys6'
7872 }
7873 },
7874 {
7875 minmax: [229, 9099],
7876 types: {
7877 ...sharedTypes$4,
7878 ...mapXcmTypes('V0')
7879 }
7880 },
7881 {
7882 minmax: [9100, 9105],
7883 types: {
7884 ...sharedTypes$4,
7885 ...mapXcmTypes('V1')
7886 }
7887 },
7888 {
7889 minmax: [9106, undefined],
7890 types: {
7891 Weight: 'WeightV1'
7892 }
7893 }
7894 ];
7895
7896 const versioned$4 = [
7897 {
7898 minmax: [0, undefined],
7899 types: {
7900 }
7901 }
7902 ];
7903
7904 const sharedTypes$3 = {
7905 DispatchErrorModule: 'DispatchErrorModuleU8',
7906 TAssetBalance: 'u128',
7907 ProxyType: {
7908 _enum: [
7909 'Any',
7910 'NonTransfer',
7911 'CancelProxy',
7912 'Assets',
7913 'AssetOwner',
7914 'AssetManager',
7915 'Staking'
7916 ]
7917 },
7918 Weight: 'WeightV1'
7919 };
7920 const versioned$3 = [
7921 {
7922 minmax: [0, 3],
7923 types: {
7924 DispatchError: 'DispatchErrorPre6First',
7925 ...sharedTypes$3,
7926 ...mapXcmTypes('V0')
7927 }
7928 },
7929 {
7930 minmax: [4, 5],
7931 types: {
7932 DispatchError: 'DispatchErrorPre6First',
7933 ...sharedTypes$3,
7934 ...mapXcmTypes('V1')
7935 }
7936 },
7937 {
7938 minmax: [500, 9999],
7939 types: {
7940 Weight: 'WeightV1',
7941 TAssetConversion: 'Option<AssetId>'
7942 }
7943 },
7944 {
7945 minmax: [10000, undefined],
7946 types: {
7947 Weight: 'WeightV1'
7948 }
7949 }
7950 ];
7951
7952 const sharedTypes$2 = {
7953 DispatchErrorModule: 'DispatchErrorModuleU8',
7954 TAssetBalance: 'u128',
7955 ProxyType: {
7956 _enum: [
7957 'Any',
7958 'NonTransfer',
7959 'CancelProxy',
7960 'Assets',
7961 'AssetOwner',
7962 'AssetManager',
7963 'Staking'
7964 ]
7965 },
7966 Weight: 'WeightV1'
7967 };
7968 const versioned$2 = [
7969 {
7970 minmax: [0, 3],
7971 types: {
7972 DispatchError: 'DispatchErrorPre6First',
7973 ...sharedTypes$2,
7974 ...mapXcmTypes('V0')
7975 }
7976 },
7977 {
7978 minmax: [4, 5],
7979 types: {
7980 DispatchError: 'DispatchErrorPre6First',
7981 ...sharedTypes$2,
7982 ...mapXcmTypes('V1')
7983 }
7984 },
7985 {
7986 minmax: [500, 1001003],
7987 types: {
7988 Weight: 'WeightV1',
7989 TAssetConversion: 'Option<AssetId>'
7990 }
7991 },
7992 {
7993 minmax: [1002000, undefined],
7994 types: {
7995 Weight: 'WeightV1'
7996 }
7997 }
7998 ];
7999
8000 const sharedTypes$1 = {
8001 CompactAssignments: 'CompactAssignmentsWith16',
8002 DispatchErrorModule: 'DispatchErrorModuleU8',
8003 RawSolution: 'RawSolutionWith16',
8004 Keys: 'SessionKeys6',
8005 ProxyType: {
8006 _enum: ['Any', 'NonTransfer', 'Staking', 'SudoBalances', 'IdentityJudgement', 'CancelProxy']
8007 },
8008 Weight: 'WeightV1'
8009 };
8010 const addrAccountIdTypes = {
8011 AccountInfo: 'AccountInfoWithRefCount',
8012 Address: 'AccountId',
8013 CompactAssignments: 'CompactAssignmentsWith16',
8014 DispatchErrorModule: 'DispatchErrorModuleU8',
8015 LookupSource: 'AccountId',
8016 Keys: 'SessionKeys5',
8017 RawSolution: 'RawSolutionWith16',
8018 ValidatorPrefs: 'ValidatorPrefsWithCommission'
8019 };
8020 const versioned$1 = [
8021 {
8022 minmax: [1, 2],
8023 types: {
8024 ...sharedTypes$1,
8025 ...addrAccountIdTypes,
8026 CompactAssignments: 'CompactAssignmentsTo257',
8027 DispatchInfo: 'DispatchInfoTo244',
8028 Heartbeat: 'HeartbeatTo244',
8029 Multiplier: 'Fixed64',
8030 OpenTip: 'OpenTipTo225',
8031 RefCount: 'RefCountTo259',
8032 Weight: 'u32'
8033 }
8034 },
8035 {
8036 minmax: [3, 22],
8037 types: {
8038 ...sharedTypes$1,
8039 ...addrAccountIdTypes,
8040 CompactAssignments: 'CompactAssignmentsTo257',
8041 DispatchInfo: 'DispatchInfoTo244',
8042 Heartbeat: 'HeartbeatTo244',
8043 OpenTip: 'OpenTipTo225',
8044 RefCount: 'RefCountTo259'
8045 }
8046 },
8047 {
8048 minmax: [23, 42],
8049 types: {
8050 ...sharedTypes$1,
8051 ...addrAccountIdTypes,
8052 CompactAssignments: 'CompactAssignmentsTo257',
8053 DispatchInfo: 'DispatchInfoTo244',
8054 Heartbeat: 'HeartbeatTo244',
8055 RefCount: 'RefCountTo259'
8056 }
8057 },
8058 {
8059 minmax: [43, 44],
8060 types: {
8061 ...sharedTypes$1,
8062 ...addrAccountIdTypes,
8063 DispatchInfo: 'DispatchInfoTo244',
8064 Heartbeat: 'HeartbeatTo244',
8065 RefCount: 'RefCountTo259'
8066 }
8067 },
8068 {
8069 minmax: [45, 47],
8070 types: {
8071 ...sharedTypes$1,
8072 ...addrAccountIdTypes
8073 }
8074 },
8075 {
8076 minmax: [48, 49],
8077 types: {
8078 ...sharedTypes$1,
8079 AccountInfo: 'AccountInfoWithDualRefCount'
8080 }
8081 },
8082 {
8083 minmax: [50, 9099],
8084 types: {
8085 ...sharedTypes$1,
8086 ...mapXcmTypes('V0')
8087 }
8088 },
8089 {
8090 minmax: [9100, 9105],
8091 types: {
8092 ...sharedTypes$1,
8093 ...mapXcmTypes('V1')
8094 }
8095 },
8096 {
8097 minmax: [9106, undefined],
8098 types: {
8099 Weight: 'WeightV1'
8100 }
8101 }
8102 ];
8103
8104 const sharedTypes = {
8105 DispatchErrorModule: 'DispatchErrorModuleU8',
8106 TAssetBalance: 'u128',
8107 ProxyType: {
8108 _enum: [
8109 'Any',
8110 'NonTransfer',
8111 'CancelProxy',
8112 'Assets',
8113 'AssetOwner',
8114 'AssetManager',
8115 'Staking'
8116 ]
8117 },
8118 Weight: 'WeightV1'
8119 };
8120 const versioned = [
8121 {
8122 minmax: [0, 3],
8123 types: {
8124 DispatchError: 'DispatchErrorPre6First',
8125 ...sharedTypes,
8126 ...mapXcmTypes('V0')
8127 }
8128 },
8129 {
8130 minmax: [4, 5],
8131 types: {
8132 DispatchError: 'DispatchErrorPre6First',
8133 ...sharedTypes,
8134 ...mapXcmTypes('V1')
8135 }
8136 },
8137 {
8138 minmax: [500, 9434],
8139 types: {
8140 Weight: 'WeightV1',
8141 TAssetConversion: 'Option<AssetId>'
8142 }
8143 },
8144 {
8145 minmax: [9435, undefined],
8146 types: {
8147 Weight: 'WeightV1'
8148 }
8149 }
8150 ];
8151
8152 const typesSpec = {
8153 'centrifuge-chain': versioned$a,
8154 kusama: versioned$9,
8155 node: versioned$8,
8156 'node-template': versioned$7,
8157 polkadot: versioned$6,
8158 rococo: versioned$5,
8159 shell: versioned$4,
8160 statemine: versioned$3,
8161 statemint: versioned$2,
8162 westend: versioned$1,
8163 westmint: versioned
8164 };
8165
8166 const upgrades$3 = [
8167 [
8168 0,
8169 1020,
8170 [
8171 [
8172 "0xdf6acb689907609b",
8173 2
8174 ],
8175 [
8176 "0x37e397fc7c91f5e4",
8177 1
8178 ],
8179 [
8180 "0x40fe3ad401f8959a",
8181 4
8182 ],
8183 [
8184 "0xd2bc9897eed08f15",
8185 1
8186 ],
8187 [
8188 "0xf78b278be53f454c",
8189 1
8190 ],
8191 [
8192 "0xaf2c0297a23e6d3d",
8193 1
8194 ],
8195 [
8196 "0xed99c5acb25eedf5",
8197 2
8198 ],
8199 [
8200 "0xcbca25e39f142387",
8201 1
8202 ],
8203 [
8204 "0x687ad44ad37f03c2",
8205 1
8206 ],
8207 [
8208 "0xab3c0572291feb8b",
8209 1
8210 ],
8211 [
8212 "0xbc9d89904f5b923f",
8213 1
8214 ],
8215 [
8216 "0x37c8bb1350a9a2a8",
8217 1
8218 ]
8219 ]
8220 ],
8221 [
8222 26669,
8223 1021,
8224 [
8225 [
8226 "0xdf6acb689907609b",
8227 2
8228 ],
8229 [
8230 "0x37e397fc7c91f5e4",
8231 1
8232 ],
8233 [
8234 "0x40fe3ad401f8959a",
8235 4
8236 ],
8237 [
8238 "0xd2bc9897eed08f15",
8239 1
8240 ],
8241 [
8242 "0xf78b278be53f454c",
8243 1
8244 ],
8245 [
8246 "0xaf2c0297a23e6d3d",
8247 1
8248 ],
8249 [
8250 "0xed99c5acb25eedf5",
8251 2
8252 ],
8253 [
8254 "0xcbca25e39f142387",
8255 1
8256 ],
8257 [
8258 "0x687ad44ad37f03c2",
8259 1
8260 ],
8261 [
8262 "0xab3c0572291feb8b",
8263 1
8264 ],
8265 [
8266 "0xbc9d89904f5b923f",
8267 1
8268 ],
8269 [
8270 "0x37c8bb1350a9a2a8",
8271 1
8272 ]
8273 ]
8274 ],
8275 [
8276 38245,
8277 1022,
8278 [
8279 [
8280 "0xdf6acb689907609b",
8281 2
8282 ],
8283 [
8284 "0x37e397fc7c91f5e4",
8285 1
8286 ],
8287 [
8288 "0x40fe3ad401f8959a",
8289 4
8290 ],
8291 [
8292 "0xd2bc9897eed08f15",
8293 1
8294 ],
8295 [
8296 "0xf78b278be53f454c",
8297 1
8298 ],
8299 [
8300 "0xaf2c0297a23e6d3d",
8301 1
8302 ],
8303 [
8304 "0xed99c5acb25eedf5",
8305 2
8306 ],
8307 [
8308 "0xcbca25e39f142387",
8309 1
8310 ],
8311 [
8312 "0x687ad44ad37f03c2",
8313 1
8314 ],
8315 [
8316 "0xab3c0572291feb8b",
8317 1
8318 ],
8319 [
8320 "0xbc9d89904f5b923f",
8321 1
8322 ],
8323 [
8324 "0x37c8bb1350a9a2a8",
8325 1
8326 ]
8327 ]
8328 ],
8329 [
8330 54248,
8331 1023,
8332 [
8333 [
8334 "0xdf6acb689907609b",
8335 2
8336 ],
8337 [
8338 "0x37e397fc7c91f5e4",
8339 1
8340 ],
8341 [
8342 "0x40fe3ad401f8959a",
8343 4
8344 ],
8345 [
8346 "0xd2bc9897eed08f15",
8347 1
8348 ],
8349 [
8350 "0xf78b278be53f454c",
8351 1
8352 ],
8353 [
8354 "0xaf2c0297a23e6d3d",
8355 1
8356 ],
8357 [
8358 "0xed99c5acb25eedf5",
8359 2
8360 ],
8361 [
8362 "0xcbca25e39f142387",
8363 1
8364 ],
8365 [
8366 "0x687ad44ad37f03c2",
8367 1
8368 ],
8369 [
8370 "0xab3c0572291feb8b",
8371 1
8372 ],
8373 [
8374 "0xbc9d89904f5b923f",
8375 1
8376 ],
8377 [
8378 "0x37c8bb1350a9a2a8",
8379 1
8380 ]
8381 ]
8382 ],
8383 [
8384 59659,
8385 1024,
8386 [
8387 [
8388 "0xdf6acb689907609b",
8389 2
8390 ],
8391 [
8392 "0x37e397fc7c91f5e4",
8393 1
8394 ],
8395 [
8396 "0x40fe3ad401f8959a",
8397 4
8398 ],
8399 [
8400 "0xd2bc9897eed08f15",
8401 1
8402 ],
8403 [
8404 "0xf78b278be53f454c",
8405 1
8406 ],
8407 [
8408 "0xaf2c0297a23e6d3d",
8409 1
8410 ],
8411 [
8412 "0xed99c5acb25eedf5",
8413 2
8414 ],
8415 [
8416 "0xcbca25e39f142387",
8417 1
8418 ],
8419 [
8420 "0x687ad44ad37f03c2",
8421 1
8422 ],
8423 [
8424 "0xab3c0572291feb8b",
8425 1
8426 ],
8427 [
8428 "0xbc9d89904f5b923f",
8429 1
8430 ],
8431 [
8432 "0x37c8bb1350a9a2a8",
8433 1
8434 ]
8435 ]
8436 ],
8437 [
8438 67651,
8439 1025,
8440 [
8441 [
8442 "0xdf6acb689907609b",
8443 2
8444 ],
8445 [
8446 "0x37e397fc7c91f5e4",
8447 1
8448 ],
8449 [
8450 "0x40fe3ad401f8959a",
8451 4
8452 ],
8453 [
8454 "0xd2bc9897eed08f15",
8455 1
8456 ],
8457 [
8458 "0xf78b278be53f454c",
8459 1
8460 ],
8461 [
8462 "0xaf2c0297a23e6d3d",
8463 1
8464 ],
8465 [
8466 "0xed99c5acb25eedf5",
8467 2
8468 ],
8469 [
8470 "0xcbca25e39f142387",
8471 1
8472 ],
8473 [
8474 "0x687ad44ad37f03c2",
8475 1
8476 ],
8477 [
8478 "0xab3c0572291feb8b",
8479 1
8480 ],
8481 [
8482 "0xbc9d89904f5b923f",
8483 1
8484 ],
8485 [
8486 "0x37c8bb1350a9a2a8",
8487 1
8488 ]
8489 ]
8490 ],
8491 [
8492 82191,
8493 1027,
8494 [
8495 [
8496 "0xdf6acb689907609b",
8497 2
8498 ],
8499 [
8500 "0x37e397fc7c91f5e4",
8501 1
8502 ],
8503 [
8504 "0x40fe3ad401f8959a",
8505 4
8506 ],
8507 [
8508 "0xd2bc9897eed08f15",
8509 1
8510 ],
8511 [
8512 "0xf78b278be53f454c",
8513 1
8514 ],
8515 [
8516 "0xaf2c0297a23e6d3d",
8517 2
8518 ],
8519 [
8520 "0xed99c5acb25eedf5",
8521 2
8522 ],
8523 [
8524 "0xcbca25e39f142387",
8525 1
8526 ],
8527 [
8528 "0x687ad44ad37f03c2",
8529 1
8530 ],
8531 [
8532 "0xab3c0572291feb8b",
8533 1
8534 ],
8535 [
8536 "0xbc9d89904f5b923f",
8537 1
8538 ],
8539 [
8540 "0x37c8bb1350a9a2a8",
8541 1
8542 ]
8543 ]
8544 ],
8545 [
8546 83238,
8547 1028,
8548 [
8549 [
8550 "0xdf6acb689907609b",
8551 2
8552 ],
8553 [
8554 "0x37e397fc7c91f5e4",
8555 1
8556 ],
8557 [
8558 "0x40fe3ad401f8959a",
8559 4
8560 ],
8561 [
8562 "0xd2bc9897eed08f15",
8563 1
8564 ],
8565 [
8566 "0xf78b278be53f454c",
8567 1
8568 ],
8569 [
8570 "0xaf2c0297a23e6d3d",
8571 2
8572 ],
8573 [
8574 "0xed99c5acb25eedf5",
8575 2
8576 ],
8577 [
8578 "0xcbca25e39f142387",
8579 1
8580 ],
8581 [
8582 "0x687ad44ad37f03c2",
8583 1
8584 ],
8585 [
8586 "0xab3c0572291feb8b",
8587 1
8588 ],
8589 [
8590 "0xbc9d89904f5b923f",
8591 1
8592 ],
8593 [
8594 "0x37c8bb1350a9a2a8",
8595 1
8596 ]
8597 ]
8598 ],
8599 [
8600 101503,
8601 1029,
8602 [
8603 [
8604 "0xdf6acb689907609b",
8605 2
8606 ],
8607 [
8608 "0x37e397fc7c91f5e4",
8609 1
8610 ],
8611 [
8612 "0x40fe3ad401f8959a",
8613 4
8614 ],
8615 [
8616 "0xd2bc9897eed08f15",
8617 1
8618 ],
8619 [
8620 "0xf78b278be53f454c",
8621 1
8622 ],
8623 [
8624 "0xaf2c0297a23e6d3d",
8625 2
8626 ],
8627 [
8628 "0xed99c5acb25eedf5",
8629 2
8630 ],
8631 [
8632 "0xcbca25e39f142387",
8633 1
8634 ],
8635 [
8636 "0x687ad44ad37f03c2",
8637 1
8638 ],
8639 [
8640 "0xab3c0572291feb8b",
8641 1
8642 ],
8643 [
8644 "0xbc9d89904f5b923f",
8645 1
8646 ],
8647 [
8648 "0x37c8bb1350a9a2a8",
8649 1
8650 ]
8651 ]
8652 ],
8653 [
8654 203466,
8655 1030,
8656 [
8657 [
8658 "0xdf6acb689907609b",
8659 2
8660 ],
8661 [
8662 "0x37e397fc7c91f5e4",
8663 1
8664 ],
8665 [
8666 "0x40fe3ad401f8959a",
8667 4
8668 ],
8669 [
8670 "0xd2bc9897eed08f15",
8671 1
8672 ],
8673 [
8674 "0xf78b278be53f454c",
8675 1
8676 ],
8677 [
8678 "0xaf2c0297a23e6d3d",
8679 2
8680 ],
8681 [
8682 "0xed99c5acb25eedf5",
8683 2
8684 ],
8685 [
8686 "0xcbca25e39f142387",
8687 1
8688 ],
8689 [
8690 "0x687ad44ad37f03c2",
8691 1
8692 ],
8693 [
8694 "0xab3c0572291feb8b",
8695 1
8696 ],
8697 [
8698 "0xbc9d89904f5b923f",
8699 1
8700 ],
8701 [
8702 "0x37c8bb1350a9a2a8",
8703 1
8704 ]
8705 ]
8706 ],
8707 [
8708 295787,
8709 1031,
8710 [
8711 [
8712 "0xdf6acb689907609b",
8713 2
8714 ],
8715 [
8716 "0x37e397fc7c91f5e4",
8717 1
8718 ],
8719 [
8720 "0x40fe3ad401f8959a",
8721 4
8722 ],
8723 [
8724 "0xd2bc9897eed08f15",
8725 1
8726 ],
8727 [
8728 "0xf78b278be53f454c",
8729 1
8730 ],
8731 [
8732 "0xaf2c0297a23e6d3d",
8733 2
8734 ],
8735 [
8736 "0xed99c5acb25eedf5",
8737 2
8738 ],
8739 [
8740 "0xcbca25e39f142387",
8741 1
8742 ],
8743 [
8744 "0x687ad44ad37f03c2",
8745 1
8746 ],
8747 [
8748 "0xab3c0572291feb8b",
8749 1
8750 ],
8751 [
8752 "0xbc9d89904f5b923f",
8753 1
8754 ],
8755 [
8756 "0x37c8bb1350a9a2a8",
8757 1
8758 ]
8759 ]
8760 ],
8761 [
8762 461692,
8763 1032,
8764 [
8765 [
8766 "0xdf6acb689907609b",
8767 2
8768 ],
8769 [
8770 "0x37e397fc7c91f5e4",
8771 1
8772 ],
8773 [
8774 "0x40fe3ad401f8959a",
8775 4
8776 ],
8777 [
8778 "0xd2bc9897eed08f15",
8779 1
8780 ],
8781 [
8782 "0xf78b278be53f454c",
8783 1
8784 ],
8785 [
8786 "0xaf2c0297a23e6d3d",
8787 2
8788 ],
8789 [
8790 "0xed99c5acb25eedf5",
8791 2
8792 ],
8793 [
8794 "0xcbca25e39f142387",
8795 1
8796 ],
8797 [
8798 "0x687ad44ad37f03c2",
8799 1
8800 ],
8801 [
8802 "0xab3c0572291feb8b",
8803 1
8804 ],
8805 [
8806 "0xbc9d89904f5b923f",
8807 1
8808 ],
8809 [
8810 "0x37c8bb1350a9a2a8",
8811 1
8812 ]
8813 ]
8814 ],
8815 [
8816 504329,
8817 1033,
8818 [
8819 [
8820 "0xdf6acb689907609b",
8821 2
8822 ],
8823 [
8824 "0x37e397fc7c91f5e4",
8825 1
8826 ],
8827 [
8828 "0x40fe3ad401f8959a",
8829 4
8830 ],
8831 [
8832 "0xd2bc9897eed08f15",
8833 1
8834 ],
8835 [
8836 "0xf78b278be53f454c",
8837 1
8838 ],
8839 [
8840 "0xaf2c0297a23e6d3d",
8841 2
8842 ],
8843 [
8844 "0xed99c5acb25eedf5",
8845 2
8846 ],
8847 [
8848 "0xcbca25e39f142387",
8849 1
8850 ],
8851 [
8852 "0x687ad44ad37f03c2",
8853 1
8854 ],
8855 [
8856 "0xab3c0572291feb8b",
8857 1
8858 ],
8859 [
8860 "0xbc9d89904f5b923f",
8861 1
8862 ],
8863 [
8864 "0x37c8bb1350a9a2a8",
8865 1
8866 ]
8867 ]
8868 ],
8869 [
8870 569327,
8871 1038,
8872 [
8873 [
8874 "0xdf6acb689907609b",
8875 2
8876 ],
8877 [
8878 "0x37e397fc7c91f5e4",
8879 1
8880 ],
8881 [
8882 "0x40fe3ad401f8959a",
8883 4
8884 ],
8885 [
8886 "0xd2bc9897eed08f15",
8887 1
8888 ],
8889 [
8890 "0xf78b278be53f454c",
8891 1
8892 ],
8893 [
8894 "0xaf2c0297a23e6d3d",
8895 2
8896 ],
8897 [
8898 "0xed99c5acb25eedf5",
8899 2
8900 ],
8901 [
8902 "0xcbca25e39f142387",
8903 1
8904 ],
8905 [
8906 "0x687ad44ad37f03c2",
8907 1
8908 ],
8909 [
8910 "0xab3c0572291feb8b",
8911 1
8912 ],
8913 [
8914 "0xbc9d89904f5b923f",
8915 1
8916 ],
8917 [
8918 "0x37c8bb1350a9a2a8",
8919 1
8920 ]
8921 ]
8922 ],
8923 [
8924 587687,
8925 1039,
8926 [
8927 [
8928 "0xdf6acb689907609b",
8929 2
8930 ],
8931 [
8932 "0x37e397fc7c91f5e4",
8933 1
8934 ],
8935 [
8936 "0x40fe3ad401f8959a",
8937 4
8938 ],
8939 [
8940 "0xd2bc9897eed08f15",
8941 1
8942 ],
8943 [
8944 "0xf78b278be53f454c",
8945 2
8946 ],
8947 [
8948 "0xaf2c0297a23e6d3d",
8949 2
8950 ],
8951 [
8952 "0xed99c5acb25eedf5",
8953 2
8954 ],
8955 [
8956 "0xcbca25e39f142387",
8957 1
8958 ],
8959 [
8960 "0x687ad44ad37f03c2",
8961 1
8962 ],
8963 [
8964 "0xab3c0572291feb8b",
8965 1
8966 ],
8967 [
8968 "0xbc9d89904f5b923f",
8969 1
8970 ],
8971 [
8972 "0x37c8bb1350a9a2a8",
8973 1
8974 ]
8975 ]
8976 ],
8977 [
8978 653183,
8979 1040,
8980 [
8981 [
8982 "0xdf6acb689907609b",
8983 2
8984 ],
8985 [
8986 "0x37e397fc7c91f5e4",
8987 1
8988 ],
8989 [
8990 "0x40fe3ad401f8959a",
8991 4
8992 ],
8993 [
8994 "0xd2bc9897eed08f15",
8995 1
8996 ],
8997 [
8998 "0xf78b278be53f454c",
8999 2
9000 ],
9001 [
9002 "0xaf2c0297a23e6d3d",
9003 2
9004 ],
9005 [
9006 "0xed99c5acb25eedf5",
9007 2
9008 ],
9009 [
9010 "0xcbca25e39f142387",
9011 1
9012 ],
9013 [
9014 "0x687ad44ad37f03c2",
9015 1
9016 ],
9017 [
9018 "0xab3c0572291feb8b",
9019 1
9020 ],
9021 [
9022 "0xbc9d89904f5b923f",
9023 1
9024 ],
9025 [
9026 "0x37c8bb1350a9a2a8",
9027 1
9028 ]
9029 ]
9030 ],
9031 [
9032 693488,
9033 1042,
9034 [
9035 [
9036 "0xdf6acb689907609b",
9037 2
9038 ],
9039 [
9040 "0x37e397fc7c91f5e4",
9041 1
9042 ],
9043 [
9044 "0x40fe3ad401f8959a",
9045 4
9046 ],
9047 [
9048 "0xd2bc9897eed08f15",
9049 1
9050 ],
9051 [
9052 "0xf78b278be53f454c",
9053 2
9054 ],
9055 [
9056 "0xaf2c0297a23e6d3d",
9057 2
9058 ],
9059 [
9060 "0xed99c5acb25eedf5",
9061 2
9062 ],
9063 [
9064 "0xcbca25e39f142387",
9065 1
9066 ],
9067 [
9068 "0x687ad44ad37f03c2",
9069 1
9070 ],
9071 [
9072 "0xab3c0572291feb8b",
9073 1
9074 ],
9075 [
9076 "0xbc9d89904f5b923f",
9077 1
9078 ],
9079 [
9080 "0x37c8bb1350a9a2a8",
9081 1
9082 ]
9083 ]
9084 ],
9085 [
9086 901442,
9087 1045,
9088 [
9089 [
9090 "0xdf6acb689907609b",
9091 2
9092 ],
9093 [
9094 "0x37e397fc7c91f5e4",
9095 1
9096 ],
9097 [
9098 "0x40fe3ad401f8959a",
9099 4
9100 ],
9101 [
9102 "0xd2bc9897eed08f15",
9103 1
9104 ],
9105 [
9106 "0xf78b278be53f454c",
9107 2
9108 ],
9109 [
9110 "0xaf2c0297a23e6d3d",
9111 2
9112 ],
9113 [
9114 "0xed99c5acb25eedf5",
9115 2
9116 ],
9117 [
9118 "0xcbca25e39f142387",
9119 1
9120 ],
9121 [
9122 "0x687ad44ad37f03c2",
9123 1
9124 ],
9125 [
9126 "0xab3c0572291feb8b",
9127 1
9128 ],
9129 [
9130 "0xbc9d89904f5b923f",
9131 1
9132 ],
9133 [
9134 "0x37c8bb1350a9a2a8",
9135 1
9136 ]
9137 ]
9138 ],
9139 [
9140 1375086,
9141 1050,
9142 [
9143 [
9144 "0xdf6acb689907609b",
9145 2
9146 ],
9147 [
9148 "0x37e397fc7c91f5e4",
9149 1
9150 ],
9151 [
9152 "0x40fe3ad401f8959a",
9153 4
9154 ],
9155 [
9156 "0xd2bc9897eed08f15",
9157 1
9158 ],
9159 [
9160 "0xf78b278be53f454c",
9161 2
9162 ],
9163 [
9164 "0xaf2c0297a23e6d3d",
9165 2
9166 ],
9167 [
9168 "0xed99c5acb25eedf5",
9169 2
9170 ],
9171 [
9172 "0xcbca25e39f142387",
9173 1
9174 ],
9175 [
9176 "0x687ad44ad37f03c2",
9177 1
9178 ],
9179 [
9180 "0xab3c0572291feb8b",
9181 1
9182 ],
9183 [
9184 "0xbc9d89904f5b923f",
9185 1
9186 ],
9187 [
9188 "0x37c8bb1350a9a2a8",
9189 1
9190 ]
9191 ]
9192 ],
9193 [
9194 1445458,
9195 1051,
9196 [
9197 [
9198 "0xdf6acb689907609b",
9199 2
9200 ],
9201 [
9202 "0x37e397fc7c91f5e4",
9203 1
9204 ],
9205 [
9206 "0x40fe3ad401f8959a",
9207 4
9208 ],
9209 [
9210 "0xd2bc9897eed08f15",
9211 1
9212 ],
9213 [
9214 "0xf78b278be53f454c",
9215 2
9216 ],
9217 [
9218 "0xaf2c0297a23e6d3d",
9219 2
9220 ],
9221 [
9222 "0xed99c5acb25eedf5",
9223 2
9224 ],
9225 [
9226 "0xcbca25e39f142387",
9227 1
9228 ],
9229 [
9230 "0x687ad44ad37f03c2",
9231 1
9232 ],
9233 [
9234 "0xab3c0572291feb8b",
9235 1
9236 ],
9237 [
9238 "0xbc9d89904f5b923f",
9239 1
9240 ],
9241 [
9242 "0x37c8bb1350a9a2a8",
9243 1
9244 ]
9245 ]
9246 ],
9247 [
9248 1472960,
9249 1052,
9250 [
9251 [
9252 "0xdf6acb689907609b",
9253 2
9254 ],
9255 [
9256 "0x37e397fc7c91f5e4",
9257 1
9258 ],
9259 [
9260 "0x40fe3ad401f8959a",
9261 4
9262 ],
9263 [
9264 "0xd2bc9897eed08f15",
9265 1
9266 ],
9267 [
9268 "0xf78b278be53f454c",
9269 2
9270 ],
9271 [
9272 "0xaf2c0297a23e6d3d",
9273 2
9274 ],
9275 [
9276 "0xed99c5acb25eedf5",
9277 2
9278 ],
9279 [
9280 "0xcbca25e39f142387",
9281 1
9282 ],
9283 [
9284 "0x687ad44ad37f03c2",
9285 1
9286 ],
9287 [
9288 "0xab3c0572291feb8b",
9289 1
9290 ],
9291 [
9292 "0xbc9d89904f5b923f",
9293 1
9294 ],
9295 [
9296 "0x37c8bb1350a9a2a8",
9297 1
9298 ]
9299 ]
9300 ],
9301 [
9302 1475648,
9303 1053,
9304 [
9305 [
9306 "0xdf6acb689907609b",
9307 2
9308 ],
9309 [
9310 "0x37e397fc7c91f5e4",
9311 1
9312 ],
9313 [
9314 "0x40fe3ad401f8959a",
9315 4
9316 ],
9317 [
9318 "0xd2bc9897eed08f15",
9319 1
9320 ],
9321 [
9322 "0xf78b278be53f454c",
9323 2
9324 ],
9325 [
9326 "0xaf2c0297a23e6d3d",
9327 2
9328 ],
9329 [
9330 "0xed99c5acb25eedf5",
9331 2
9332 ],
9333 [
9334 "0xcbca25e39f142387",
9335 1
9336 ],
9337 [
9338 "0x687ad44ad37f03c2",
9339 1
9340 ],
9341 [
9342 "0xab3c0572291feb8b",
9343 1
9344 ],
9345 [
9346 "0xbc9d89904f5b923f",
9347 1
9348 ],
9349 [
9350 "0x37c8bb1350a9a2a8",
9351 1
9352 ]
9353 ]
9354 ],
9355 [
9356 1491596,
9357 1054,
9358 [
9359 [
9360 "0xdf6acb689907609b",
9361 2
9362 ],
9363 [
9364 "0x37e397fc7c91f5e4",
9365 1
9366 ],
9367 [
9368 "0x40fe3ad401f8959a",
9369 4
9370 ],
9371 [
9372 "0xd2bc9897eed08f15",
9373 1
9374 ],
9375 [
9376 "0xf78b278be53f454c",
9377 2
9378 ],
9379 [
9380 "0xaf2c0297a23e6d3d",
9381 2
9382 ],
9383 [
9384 "0xed99c5acb25eedf5",
9385 2
9386 ],
9387 [
9388 "0xcbca25e39f142387",
9389 1
9390 ],
9391 [
9392 "0x687ad44ad37f03c2",
9393 1
9394 ],
9395 [
9396 "0xab3c0572291feb8b",
9397 1
9398 ],
9399 [
9400 "0xbc9d89904f5b923f",
9401 1
9402 ],
9403 [
9404 "0x37c8bb1350a9a2a8",
9405 1
9406 ]
9407 ]
9408 ],
9409 [
9410 1574408,
9411 1055,
9412 [
9413 [
9414 "0xdf6acb689907609b",
9415 2
9416 ],
9417 [
9418 "0x37e397fc7c91f5e4",
9419 1
9420 ],
9421 [
9422 "0x40fe3ad401f8959a",
9423 4
9424 ],
9425 [
9426 "0xd2bc9897eed08f15",
9427 1
9428 ],
9429 [
9430 "0xf78b278be53f454c",
9431 2
9432 ],
9433 [
9434 "0xaf2c0297a23e6d3d",
9435 2
9436 ],
9437 [
9438 "0xed99c5acb25eedf5",
9439 2
9440 ],
9441 [
9442 "0xcbca25e39f142387",
9443 1
9444 ],
9445 [
9446 "0x687ad44ad37f03c2",
9447 1
9448 ],
9449 [
9450 "0xab3c0572291feb8b",
9451 1
9452 ],
9453 [
9454 "0xbc9d89904f5b923f",
9455 1
9456 ],
9457 [
9458 "0x37c8bb1350a9a2a8",
9459 1
9460 ]
9461 ]
9462 ],
9463 [
9464 2064961,
9465 1058,
9466 [
9467 [
9468 "0xdf6acb689907609b",
9469 3
9470 ],
9471 [
9472 "0x37e397fc7c91f5e4",
9473 1
9474 ],
9475 [
9476 "0x40fe3ad401f8959a",
9477 4
9478 ],
9479 [
9480 "0xd2bc9897eed08f15",
9481 2
9482 ],
9483 [
9484 "0xf78b278be53f454c",
9485 2
9486 ],
9487 [
9488 "0xaf2c0297a23e6d3d",
9489 3
9490 ],
9491 [
9492 "0xed99c5acb25eedf5",
9493 2
9494 ],
9495 [
9496 "0xcbca25e39f142387",
9497 1
9498 ],
9499 [
9500 "0x687ad44ad37f03c2",
9501 1
9502 ],
9503 [
9504 "0xab3c0572291feb8b",
9505 1
9506 ],
9507 [
9508 "0xbc9d89904f5b923f",
9509 1
9510 ],
9511 [
9512 "0x37c8bb1350a9a2a8",
9513 1
9514 ]
9515 ]
9516 ],
9517 [
9518 2201991,
9519 1062,
9520 [
9521 [
9522 "0xdf6acb689907609b",
9523 3
9524 ],
9525 [
9526 "0x37e397fc7c91f5e4",
9527 1
9528 ],
9529 [
9530 "0x40fe3ad401f8959a",
9531 4
9532 ],
9533 [
9534 "0xd2bc9897eed08f15",
9535 2
9536 ],
9537 [
9538 "0xf78b278be53f454c",
9539 2
9540 ],
9541 [
9542 "0xaf2c0297a23e6d3d",
9543 3
9544 ],
9545 [
9546 "0xed99c5acb25eedf5",
9547 2
9548 ],
9549 [
9550 "0xcbca25e39f142387",
9551 2
9552 ],
9553 [
9554 "0x687ad44ad37f03c2",
9555 1
9556 ],
9557 [
9558 "0xab3c0572291feb8b",
9559 1
9560 ],
9561 [
9562 "0xbc9d89904f5b923f",
9563 1
9564 ],
9565 [
9566 "0x37c8bb1350a9a2a8",
9567 1
9568 ]
9569 ]
9570 ],
9571 [
9572 2671528,
9573 2005,
9574 [
9575 [
9576 "0xdf6acb689907609b",
9577 3
9578 ],
9579 [
9580 "0x37e397fc7c91f5e4",
9581 1
9582 ],
9583 [
9584 "0x40fe3ad401f8959a",
9585 4
9586 ],
9587 [
9588 "0xd2bc9897eed08f15",
9589 2
9590 ],
9591 [
9592 "0xf78b278be53f454c",
9593 2
9594 ],
9595 [
9596 "0xaf2c0297a23e6d3d",
9597 3
9598 ],
9599 [
9600 "0xed99c5acb25eedf5",
9601 2
9602 ],
9603 [
9604 "0xcbca25e39f142387",
9605 2
9606 ],
9607 [
9608 "0x687ad44ad37f03c2",
9609 1
9610 ],
9611 [
9612 "0xab3c0572291feb8b",
9613 1
9614 ],
9615 [
9616 "0xbc9d89904f5b923f",
9617 1
9618 ],
9619 [
9620 "0x37c8bb1350a9a2a8",
9621 1
9622 ]
9623 ]
9624 ],
9625 [
9626 2704202,
9627 2007,
9628 [
9629 [
9630 "0xdf6acb689907609b",
9631 3
9632 ],
9633 [
9634 "0x37e397fc7c91f5e4",
9635 1
9636 ],
9637 [
9638 "0x40fe3ad401f8959a",
9639 4
9640 ],
9641 [
9642 "0xd2bc9897eed08f15",
9643 2
9644 ],
9645 [
9646 "0xf78b278be53f454c",
9647 2
9648 ],
9649 [
9650 "0xaf2c0297a23e6d3d",
9651 3
9652 ],
9653 [
9654 "0xed99c5acb25eedf5",
9655 2
9656 ],
9657 [
9658 "0xcbca25e39f142387",
9659 2
9660 ],
9661 [
9662 "0x687ad44ad37f03c2",
9663 1
9664 ],
9665 [
9666 "0xab3c0572291feb8b",
9667 1
9668 ],
9669 [
9670 "0xbc9d89904f5b923f",
9671 1
9672 ],
9673 [
9674 "0x37c8bb1350a9a2a8",
9675 1
9676 ]
9677 ]
9678 ],
9679 [
9680 2728002,
9681 2008,
9682 [
9683 [
9684 "0xdf6acb689907609b",
9685 3
9686 ],
9687 [
9688 "0x37e397fc7c91f5e4",
9689 1
9690 ],
9691 [
9692 "0x40fe3ad401f8959a",
9693 4
9694 ],
9695 [
9696 "0xd2bc9897eed08f15",
9697 2
9698 ],
9699 [
9700 "0xf78b278be53f454c",
9701 2
9702 ],
9703 [
9704 "0xaf2c0297a23e6d3d",
9705 3
9706 ],
9707 [
9708 "0xed99c5acb25eedf5",
9709 2
9710 ],
9711 [
9712 "0xcbca25e39f142387",
9713 2
9714 ],
9715 [
9716 "0x687ad44ad37f03c2",
9717 1
9718 ],
9719 [
9720 "0xab3c0572291feb8b",
9721 1
9722 ],
9723 [
9724 "0xbc9d89904f5b923f",
9725 1
9726 ],
9727 [
9728 "0x37c8bb1350a9a2a8",
9729 1
9730 ]
9731 ]
9732 ],
9733 [
9734 2832534,
9735 2011,
9736 [
9737 [
9738 "0xdf6acb689907609b",
9739 3
9740 ],
9741 [
9742 "0x37e397fc7c91f5e4",
9743 1
9744 ],
9745 [
9746 "0x40fe3ad401f8959a",
9747 4
9748 ],
9749 [
9750 "0xd2bc9897eed08f15",
9751 2
9752 ],
9753 [
9754 "0xf78b278be53f454c",
9755 2
9756 ],
9757 [
9758 "0xaf2c0297a23e6d3d",
9759 3
9760 ],
9761 [
9762 "0xed99c5acb25eedf5",
9763 2
9764 ],
9765 [
9766 "0xcbca25e39f142387",
9767 2
9768 ],
9769 [
9770 "0x687ad44ad37f03c2",
9771 1
9772 ],
9773 [
9774 "0xab3c0572291feb8b",
9775 1
9776 ],
9777 [
9778 "0xbc9d89904f5b923f",
9779 1
9780 ],
9781 [
9782 "0x37c8bb1350a9a2a8",
9783 1
9784 ]
9785 ]
9786 ],
9787 [
9788 2962294,
9789 2012,
9790 [
9791 [
9792 "0xdf6acb689907609b",
9793 3
9794 ],
9795 [
9796 "0x37e397fc7c91f5e4",
9797 1
9798 ],
9799 [
9800 "0x40fe3ad401f8959a",
9801 4
9802 ],
9803 [
9804 "0xd2bc9897eed08f15",
9805 2
9806 ],
9807 [
9808 "0xf78b278be53f454c",
9809 2
9810 ],
9811 [
9812 "0xaf2c0297a23e6d3d",
9813 3
9814 ],
9815 [
9816 "0xed99c5acb25eedf5",
9817 2
9818 ],
9819 [
9820 "0xcbca25e39f142387",
9821 2
9822 ],
9823 [
9824 "0x687ad44ad37f03c2",
9825 1
9826 ],
9827 [
9828 "0xab3c0572291feb8b",
9829 1
9830 ],
9831 [
9832 "0xbc9d89904f5b923f",
9833 1
9834 ],
9835 [
9836 "0x37c8bb1350a9a2a8",
9837 1
9838 ]
9839 ]
9840 ],
9841 [
9842 3240000,
9843 2013,
9844 [
9845 [
9846 "0xdf6acb689907609b",
9847 3
9848 ],
9849 [
9850 "0x37e397fc7c91f5e4",
9851 1
9852 ],
9853 [
9854 "0x40fe3ad401f8959a",
9855 4
9856 ],
9857 [
9858 "0xd2bc9897eed08f15",
9859 2
9860 ],
9861 [
9862 "0xf78b278be53f454c",
9863 2
9864 ],
9865 [
9866 "0xaf2c0297a23e6d3d",
9867 3
9868 ],
9869 [
9870 "0xed99c5acb25eedf5",
9871 2
9872 ],
9873 [
9874 "0xcbca25e39f142387",
9875 2
9876 ],
9877 [
9878 "0x687ad44ad37f03c2",
9879 1
9880 ],
9881 [
9882 "0xab3c0572291feb8b",
9883 1
9884 ],
9885 [
9886 "0xbc9d89904f5b923f",
9887 1
9888 ],
9889 [
9890 "0x37c8bb1350a9a2a8",
9891 1
9892 ]
9893 ]
9894 ],
9895 [
9896 3274408,
9897 2015,
9898 [
9899 [
9900 "0xdf6acb689907609b",
9901 3
9902 ],
9903 [
9904 "0x37e397fc7c91f5e4",
9905 1
9906 ],
9907 [
9908 "0x40fe3ad401f8959a",
9909 4
9910 ],
9911 [
9912 "0xd2bc9897eed08f15",
9913 2
9914 ],
9915 [
9916 "0xf78b278be53f454c",
9917 2
9918 ],
9919 [
9920 "0xaf2c0297a23e6d3d",
9921 3
9922 ],
9923 [
9924 "0xed99c5acb25eedf5",
9925 2
9926 ],
9927 [
9928 "0xcbca25e39f142387",
9929 2
9930 ],
9931 [
9932 "0x687ad44ad37f03c2",
9933 1
9934 ],
9935 [
9936 "0xab3c0572291feb8b",
9937 1
9938 ],
9939 [
9940 "0xbc9d89904f5b923f",
9941 1
9942 ],
9943 [
9944 "0x37c8bb1350a9a2a8",
9945 1
9946 ]
9947 ]
9948 ],
9949 [
9950 3323565,
9951 2019,
9952 [
9953 [
9954 "0xdf6acb689907609b",
9955 3
9956 ],
9957 [
9958 "0x37e397fc7c91f5e4",
9959 1
9960 ],
9961 [
9962 "0x40fe3ad401f8959a",
9963 4
9964 ],
9965 [
9966 "0xd2bc9897eed08f15",
9967 2
9968 ],
9969 [
9970 "0xf78b278be53f454c",
9971 2
9972 ],
9973 [
9974 "0xaf2c0297a23e6d3d",
9975 3
9976 ],
9977 [
9978 "0xed99c5acb25eedf5",
9979 2
9980 ],
9981 [
9982 "0xcbca25e39f142387",
9983 2
9984 ],
9985 [
9986 "0x687ad44ad37f03c2",
9987 1
9988 ],
9989 [
9990 "0xab3c0572291feb8b",
9991 1
9992 ],
9993 [
9994 "0xbc9d89904f5b923f",
9995 1
9996 ],
9997 [
9998 "0x37c8bb1350a9a2a8",
9999 1
10000 ]
10001 ]
10002 ],
10003 [
10004 3534175,
10005 2022,
10006 [
10007 [
10008 "0xdf6acb689907609b",
10009 3
10010 ],
10011 [
10012 "0x37e397fc7c91f5e4",
10013 1
10014 ],
10015 [
10016 "0x40fe3ad401f8959a",
10017 4
10018 ],
10019 [
10020 "0xd2bc9897eed08f15",
10021 2
10022 ],
10023 [
10024 "0xf78b278be53f454c",
10025 2
10026 ],
10027 [
10028 "0xaf2c0297a23e6d3d",
10029 3
10030 ],
10031 [
10032 "0xed99c5acb25eedf5",
10033 2
10034 ],
10035 [
10036 "0xcbca25e39f142387",
10037 2
10038 ],
10039 [
10040 "0x687ad44ad37f03c2",
10041 1
10042 ],
10043 [
10044 "0xab3c0572291feb8b",
10045 1
10046 ],
10047 [
10048 "0xbc9d89904f5b923f",
10049 1
10050 ],
10051 [
10052 "0x37c8bb1350a9a2a8",
10053 1
10054 ]
10055 ]
10056 ],
10057 [
10058 3860281,
10059 2023,
10060 [
10061 [
10062 "0xdf6acb689907609b",
10063 3
10064 ],
10065 [
10066 "0x37e397fc7c91f5e4",
10067 1
10068 ],
10069 [
10070 "0x40fe3ad401f8959a",
10071 4
10072 ],
10073 [
10074 "0xd2bc9897eed08f15",
10075 2
10076 ],
10077 [
10078 "0xf78b278be53f454c",
10079 2
10080 ],
10081 [
10082 "0xaf2c0297a23e6d3d",
10083 3
10084 ],
10085 [
10086 "0xed99c5acb25eedf5",
10087 2
10088 ],
10089 [
10090 "0xcbca25e39f142387",
10091 2
10092 ],
10093 [
10094 "0x687ad44ad37f03c2",
10095 1
10096 ],
10097 [
10098 "0xab3c0572291feb8b",
10099 1
10100 ],
10101 [
10102 "0xbc9d89904f5b923f",
10103 1
10104 ],
10105 [
10106 "0x37c8bb1350a9a2a8",
10107 1
10108 ]
10109 ]
10110 ],
10111 [
10112 4143129,
10113 2024,
10114 [
10115 [
10116 "0xdf6acb689907609b",
10117 3
10118 ],
10119 [
10120 "0x37e397fc7c91f5e4",
10121 1
10122 ],
10123 [
10124 "0x40fe3ad401f8959a",
10125 4
10126 ],
10127 [
10128 "0xd2bc9897eed08f15",
10129 2
10130 ],
10131 [
10132 "0xf78b278be53f454c",
10133 2
10134 ],
10135 [
10136 "0xaf2c0297a23e6d3d",
10137 3
10138 ],
10139 [
10140 "0xed99c5acb25eedf5",
10141 2
10142 ],
10143 [
10144 "0xcbca25e39f142387",
10145 2
10146 ],
10147 [
10148 "0x687ad44ad37f03c2",
10149 1
10150 ],
10151 [
10152 "0xab3c0572291feb8b",
10153 1
10154 ],
10155 [
10156 "0xbc9d89904f5b923f",
10157 1
10158 ],
10159 [
10160 "0x37c8bb1350a9a2a8",
10161 1
10162 ]
10163 ]
10164 ],
10165 [
10166 4401242,
10167 2025,
10168 [
10169 [
10170 "0xdf6acb689907609b",
10171 3
10172 ],
10173 [
10174 "0x37e397fc7c91f5e4",
10175 1
10176 ],
10177 [
10178 "0x40fe3ad401f8959a",
10179 4
10180 ],
10181 [
10182 "0xd2bc9897eed08f15",
10183 2
10184 ],
10185 [
10186 "0xf78b278be53f454c",
10187 2
10188 ],
10189 [
10190 "0xaf2c0297a23e6d3d",
10191 1
10192 ],
10193 [
10194 "0xed99c5acb25eedf5",
10195 2
10196 ],
10197 [
10198 "0xcbca25e39f142387",
10199 2
10200 ],
10201 [
10202 "0x687ad44ad37f03c2",
10203 1
10204 ],
10205 [
10206 "0xab3c0572291feb8b",
10207 1
10208 ],
10209 [
10210 "0xbc9d89904f5b923f",
10211 1
10212 ],
10213 [
10214 "0x37c8bb1350a9a2a8",
10215 1
10216 ]
10217 ]
10218 ],
10219 [
10220 4841367,
10221 2026,
10222 [
10223 [
10224 "0xdf6acb689907609b",
10225 3
10226 ],
10227 [
10228 "0x37e397fc7c91f5e4",
10229 1
10230 ],
10231 [
10232 "0x40fe3ad401f8959a",
10233 4
10234 ],
10235 [
10236 "0xd2bc9897eed08f15",
10237 2
10238 ],
10239 [
10240 "0xf78b278be53f454c",
10241 2
10242 ],
10243 [
10244 "0xaf2c0297a23e6d3d",
10245 1
10246 ],
10247 [
10248 "0xed99c5acb25eedf5",
10249 2
10250 ],
10251 [
10252 "0xcbca25e39f142387",
10253 2
10254 ],
10255 [
10256 "0x687ad44ad37f03c2",
10257 1
10258 ],
10259 [
10260 "0xab3c0572291feb8b",
10261 1
10262 ],
10263 [
10264 "0xbc9d89904f5b923f",
10265 1
10266 ],
10267 [
10268 "0x37c8bb1350a9a2a8",
10269 1
10270 ]
10271 ]
10272 ],
10273 [
10274 5961600,
10275 2027,
10276 [
10277 [
10278 "0xdf6acb689907609b",
10279 3
10280 ],
10281 [
10282 "0x37e397fc7c91f5e4",
10283 1
10284 ],
10285 [
10286 "0x40fe3ad401f8959a",
10287 4
10288 ],
10289 [
10290 "0xd2bc9897eed08f15",
10291 2
10292 ],
10293 [
10294 "0xf78b278be53f454c",
10295 2
10296 ],
10297 [
10298 "0xaf2c0297a23e6d3d",
10299 1
10300 ],
10301 [
10302 "0xed99c5acb25eedf5",
10303 2
10304 ],
10305 [
10306 "0xcbca25e39f142387",
10307 2
10308 ],
10309 [
10310 "0x687ad44ad37f03c2",
10311 1
10312 ],
10313 [
10314 "0xab3c0572291feb8b",
10315 1
10316 ],
10317 [
10318 "0xbc9d89904f5b923f",
10319 1
10320 ],
10321 [
10322 "0x37c8bb1350a9a2a8",
10323 1
10324 ]
10325 ]
10326 ],
10327 [
10328 6137912,
10329 2028,
10330 [
10331 [
10332 "0xdf6acb689907609b",
10333 3
10334 ],
10335 [
10336 "0x37e397fc7c91f5e4",
10337 1
10338 ],
10339 [
10340 "0x40fe3ad401f8959a",
10341 4
10342 ],
10343 [
10344 "0xd2bc9897eed08f15",
10345 2
10346 ],
10347 [
10348 "0xf78b278be53f454c",
10349 2
10350 ],
10351 [
10352 "0xaf2c0297a23e6d3d",
10353 1
10354 ],
10355 [
10356 "0xed99c5acb25eedf5",
10357 2
10358 ],
10359 [
10360 "0xcbca25e39f142387",
10361 2
10362 ],
10363 [
10364 "0x687ad44ad37f03c2",
10365 1
10366 ],
10367 [
10368 "0xab3c0572291feb8b",
10369 1
10370 ],
10371 [
10372 "0xbc9d89904f5b923f",
10373 1
10374 ],
10375 [
10376 "0x37c8bb1350a9a2a8",
10377 1
10378 ]
10379 ]
10380 ],
10381 [
10382 6561855,
10383 2029,
10384 [
10385 [
10386 "0xdf6acb689907609b",
10387 3
10388 ],
10389 [
10390 "0x37e397fc7c91f5e4",
10391 1
10392 ],
10393 [
10394 "0x40fe3ad401f8959a",
10395 4
10396 ],
10397 [
10398 "0xd2bc9897eed08f15",
10399 2
10400 ],
10401 [
10402 "0xf78b278be53f454c",
10403 2
10404 ],
10405 [
10406 "0xaf2c0297a23e6d3d",
10407 1
10408 ],
10409 [
10410 "0xed99c5acb25eedf5",
10411 2
10412 ],
10413 [
10414 "0xcbca25e39f142387",
10415 2
10416 ],
10417 [
10418 "0x687ad44ad37f03c2",
10419 1
10420 ],
10421 [
10422 "0xab3c0572291feb8b",
10423 1
10424 ],
10425 [
10426 "0xbc9d89904f5b923f",
10427 1
10428 ],
10429 [
10430 "0x37c8bb1350a9a2a8",
10431 1
10432 ]
10433 ]
10434 ],
10435 [
10436 7100891,
10437 2030,
10438 [
10439 [
10440 "0xdf6acb689907609b",
10441 3
10442 ],
10443 [
10444 "0x37e397fc7c91f5e4",
10445 1
10446 ],
10447 [
10448 "0x40fe3ad401f8959a",
10449 4
10450 ],
10451 [
10452 "0xd2bc9897eed08f15",
10453 2
10454 ],
10455 [
10456 "0xf78b278be53f454c",
10457 2
10458 ],
10459 [
10460 "0xaf2c0297a23e6d3d",
10461 1
10462 ],
10463 [
10464 "0xed99c5acb25eedf5",
10465 2
10466 ],
10467 [
10468 "0xcbca25e39f142387",
10469 2
10470 ],
10471 [
10472 "0x687ad44ad37f03c2",
10473 1
10474 ],
10475 [
10476 "0xab3c0572291feb8b",
10477 1
10478 ],
10479 [
10480 "0xbc9d89904f5b923f",
10481 1
10482 ],
10483 [
10484 "0x37c8bb1350a9a2a8",
10485 1
10486 ]
10487 ]
10488 ],
10489 [
10490 7468792,
10491 9010,
10492 [
10493 [
10494 "0xdf6acb689907609b",
10495 3
10496 ],
10497 [
10498 "0x37e397fc7c91f5e4",
10499 1
10500 ],
10501 [
10502 "0x40fe3ad401f8959a",
10503 5
10504 ],
10505 [
10506 "0xd2bc9897eed08f15",
10507 2
10508 ],
10509 [
10510 "0xf78b278be53f454c",
10511 2
10512 ],
10513 [
10514 "0xaf2c0297a23e6d3d",
10515 1
10516 ],
10517 [
10518 "0x49eaaf1b548a0cb0",
10519 1
10520 ],
10521 [
10522 "0x91d5df18b0d2cf58",
10523 1
10524 ],
10525 [
10526 "0xed99c5acb25eedf5",
10527 2
10528 ],
10529 [
10530 "0xcbca25e39f142387",
10531 2
10532 ],
10533 [
10534 "0x687ad44ad37f03c2",
10535 1
10536 ],
10537 [
10538 "0xab3c0572291feb8b",
10539 1
10540 ],
10541 [
10542 "0xbc9d89904f5b923f",
10543 1
10544 ],
10545 [
10546 "0x37c8bb1350a9a2a8",
10547 1
10548 ]
10549 ]
10550 ],
10551 [
10552 7668600,
10553 9030,
10554 [
10555 [
10556 "0xdf6acb689907609b",
10557 3
10558 ],
10559 [
10560 "0x37e397fc7c91f5e4",
10561 1
10562 ],
10563 [
10564 "0x40fe3ad401f8959a",
10565 5
10566 ],
10567 [
10568 "0xd2bc9897eed08f15",
10569 2
10570 ],
10571 [
10572 "0xf78b278be53f454c",
10573 2
10574 ],
10575 [
10576 "0xaf2c0297a23e6d3d",
10577 1
10578 ],
10579 [
10580 "0x49eaaf1b548a0cb0",
10581 1
10582 ],
10583 [
10584 "0x91d5df18b0d2cf58",
10585 1
10586 ],
10587 [
10588 "0xed99c5acb25eedf5",
10589 2
10590 ],
10591 [
10592 "0xcbca25e39f142387",
10593 2
10594 ],
10595 [
10596 "0x687ad44ad37f03c2",
10597 1
10598 ],
10599 [
10600 "0xab3c0572291feb8b",
10601 1
10602 ],
10603 [
10604 "0xbc9d89904f5b923f",
10605 1
10606 ],
10607 [
10608 "0x37c8bb1350a9a2a8",
10609 1
10610 ]
10611 ]
10612 ],
10613 [
10614 7812476,
10615 9040,
10616 [
10617 [
10618 "0xdf6acb689907609b",
10619 3
10620 ],
10621 [
10622 "0x37e397fc7c91f5e4",
10623 1
10624 ],
10625 [
10626 "0x40fe3ad401f8959a",
10627 5
10628 ],
10629 [
10630 "0xd2bc9897eed08f15",
10631 2
10632 ],
10633 [
10634 "0xf78b278be53f454c",
10635 2
10636 ],
10637 [
10638 "0xaf2c0297a23e6d3d",
10639 1
10640 ],
10641 [
10642 "0x49eaaf1b548a0cb0",
10643 1
10644 ],
10645 [
10646 "0x91d5df18b0d2cf58",
10647 1
10648 ],
10649 [
10650 "0xed99c5acb25eedf5",
10651 2
10652 ],
10653 [
10654 "0xcbca25e39f142387",
10655 2
10656 ],
10657 [
10658 "0x687ad44ad37f03c2",
10659 1
10660 ],
10661 [
10662 "0xab3c0572291feb8b",
10663 1
10664 ],
10665 [
10666 "0xbc9d89904f5b923f",
10667 1
10668 ],
10669 [
10670 "0x37c8bb1350a9a2a8",
10671 1
10672 ]
10673 ]
10674 ],
10675 [
10676 8010981,
10677 9050,
10678 [
10679 [
10680 "0xdf6acb689907609b",
10681 3
10682 ],
10683 [
10684 "0x37e397fc7c91f5e4",
10685 1
10686 ],
10687 [
10688 "0x40fe3ad401f8959a",
10689 5
10690 ],
10691 [
10692 "0xd2bc9897eed08f15",
10693 2
10694 ],
10695 [
10696 "0xf78b278be53f454c",
10697 2
10698 ],
10699 [
10700 "0xaf2c0297a23e6d3d",
10701 1
10702 ],
10703 [
10704 "0x49eaaf1b548a0cb0",
10705 1
10706 ],
10707 [
10708 "0x91d5df18b0d2cf58",
10709 1
10710 ],
10711 [
10712 "0xed99c5acb25eedf5",
10713 2
10714 ],
10715 [
10716 "0xcbca25e39f142387",
10717 2
10718 ],
10719 [
10720 "0x687ad44ad37f03c2",
10721 1
10722 ],
10723 [
10724 "0xab3c0572291feb8b",
10725 1
10726 ],
10727 [
10728 "0xbc9d89904f5b923f",
10729 1
10730 ],
10731 [
10732 "0x37c8bb1350a9a2a8",
10733 1
10734 ]
10735 ]
10736 ],
10737 [
10738 8073833,
10739 9070,
10740 [
10741 [
10742 "0xdf6acb689907609b",
10743 3
10744 ],
10745 [
10746 "0x37e397fc7c91f5e4",
10747 1
10748 ],
10749 [
10750 "0x40fe3ad401f8959a",
10751 5
10752 ],
10753 [
10754 "0xd2bc9897eed08f15",
10755 2
10756 ],
10757 [
10758 "0xf78b278be53f454c",
10759 2
10760 ],
10761 [
10762 "0xaf2c0297a23e6d3d",
10763 1
10764 ],
10765 [
10766 "0x49eaaf1b548a0cb0",
10767 1
10768 ],
10769 [
10770 "0x91d5df18b0d2cf58",
10771 1
10772 ],
10773 [
10774 "0xed99c5acb25eedf5",
10775 2
10776 ],
10777 [
10778 "0xcbca25e39f142387",
10779 2
10780 ],
10781 [
10782 "0x687ad44ad37f03c2",
10783 1
10784 ],
10785 [
10786 "0xab3c0572291feb8b",
10787 1
10788 ],
10789 [
10790 "0xbc9d89904f5b923f",
10791 1
10792 ],
10793 [
10794 "0x37c8bb1350a9a2a8",
10795 1
10796 ]
10797 ]
10798 ],
10799 [
10800 8555825,
10801 9080,
10802 [
10803 [
10804 "0xdf6acb689907609b",
10805 3
10806 ],
10807 [
10808 "0x37e397fc7c91f5e4",
10809 1
10810 ],
10811 [
10812 "0x40fe3ad401f8959a",
10813 5
10814 ],
10815 [
10816 "0xd2bc9897eed08f15",
10817 3
10818 ],
10819 [
10820 "0xf78b278be53f454c",
10821 2
10822 ],
10823 [
10824 "0xaf2c0297a23e6d3d",
10825 1
10826 ],
10827 [
10828 "0x49eaaf1b548a0cb0",
10829 1
10830 ],
10831 [
10832 "0x91d5df18b0d2cf58",
10833 1
10834 ],
10835 [
10836 "0xed99c5acb25eedf5",
10837 2
10838 ],
10839 [
10840 "0xcbca25e39f142387",
10841 2
10842 ],
10843 [
10844 "0x687ad44ad37f03c2",
10845 1
10846 ],
10847 [
10848 "0xab3c0572291feb8b",
10849 1
10850 ],
10851 [
10852 "0xbc9d89904f5b923f",
10853 1
10854 ],
10855 [
10856 "0x37c8bb1350a9a2a8",
10857 1
10858 ]
10859 ]
10860 ],
10861 [
10862 8945245,
10863 9090,
10864 [
10865 [
10866 "0xdf6acb689907609b",
10867 3
10868 ],
10869 [
10870 "0x37e397fc7c91f5e4",
10871 1
10872 ],
10873 [
10874 "0x40fe3ad401f8959a",
10875 5
10876 ],
10877 [
10878 "0xd2bc9897eed08f15",
10879 3
10880 ],
10881 [
10882 "0xf78b278be53f454c",
10883 2
10884 ],
10885 [
10886 "0xaf2c0297a23e6d3d",
10887 1
10888 ],
10889 [
10890 "0x49eaaf1b548a0cb0",
10891 1
10892 ],
10893 [
10894 "0x91d5df18b0d2cf58",
10895 1
10896 ],
10897 [
10898 "0xed99c5acb25eedf5",
10899 3
10900 ],
10901 [
10902 "0xcbca25e39f142387",
10903 2
10904 ],
10905 [
10906 "0x687ad44ad37f03c2",
10907 1
10908 ],
10909 [
10910 "0xab3c0572291feb8b",
10911 1
10912 ],
10913 [
10914 "0xbc9d89904f5b923f",
10915 1
10916 ],
10917 [
10918 "0x37c8bb1350a9a2a8",
10919 1
10920 ]
10921 ]
10922 ],
10923 [
10924 9611377,
10925 9100,
10926 [
10927 [
10928 "0xdf6acb689907609b",
10929 3
10930 ],
10931 [
10932 "0x37e397fc7c91f5e4",
10933 1
10934 ],
10935 [
10936 "0x40fe3ad401f8959a",
10937 5
10938 ],
10939 [
10940 "0xd2bc9897eed08f15",
10941 3
10942 ],
10943 [
10944 "0xf78b278be53f454c",
10945 2
10946 ],
10947 [
10948 "0xaf2c0297a23e6d3d",
10949 1
10950 ],
10951 [
10952 "0x49eaaf1b548a0cb0",
10953 1
10954 ],
10955 [
10956 "0x91d5df18b0d2cf58",
10957 1
10958 ],
10959 [
10960 "0xed99c5acb25eedf5",
10961 3
10962 ],
10963 [
10964 "0xcbca25e39f142387",
10965 2
10966 ],
10967 [
10968 "0x687ad44ad37f03c2",
10969 1
10970 ],
10971 [
10972 "0xab3c0572291feb8b",
10973 1
10974 ],
10975 [
10976 "0xbc9d89904f5b923f",
10977 1
10978 ],
10979 [
10980 "0x37c8bb1350a9a2a8",
10981 1
10982 ]
10983 ]
10984 ],
10985 [
10986 9625129,
10987 9111,
10988 [
10989 [
10990 "0xdf6acb689907609b",
10991 3
10992 ],
10993 [
10994 "0x37e397fc7c91f5e4",
10995 1
10996 ],
10997 [
10998 "0x40fe3ad401f8959a",
10999 5
11000 ],
11001 [
11002 "0xd2bc9897eed08f15",
11003 3
11004 ],
11005 [
11006 "0xf78b278be53f454c",
11007 2
11008 ],
11009 [
11010 "0xaf2c0297a23e6d3d",
11011 1
11012 ],
11013 [
11014 "0x49eaaf1b548a0cb0",
11015 1
11016 ],
11017 [
11018 "0x91d5df18b0d2cf58",
11019 1
11020 ],
11021 [
11022 "0xed99c5acb25eedf5",
11023 3
11024 ],
11025 [
11026 "0xcbca25e39f142387",
11027 2
11028 ],
11029 [
11030 "0x687ad44ad37f03c2",
11031 1
11032 ],
11033 [
11034 "0xab3c0572291feb8b",
11035 1
11036 ],
11037 [
11038 "0xbc9d89904f5b923f",
11039 1
11040 ],
11041 [
11042 "0x37c8bb1350a9a2a8",
11043 1
11044 ]
11045 ]
11046 ],
11047 [
11048 9866422,
11049 9122,
11050 [
11051 [
11052 "0xdf6acb689907609b",
11053 3
11054 ],
11055 [
11056 "0x37e397fc7c91f5e4",
11057 1
11058 ],
11059 [
11060 "0x40fe3ad401f8959a",
11061 5
11062 ],
11063 [
11064 "0xd2bc9897eed08f15",
11065 3
11066 ],
11067 [
11068 "0xf78b278be53f454c",
11069 2
11070 ],
11071 [
11072 "0xaf2c0297a23e6d3d",
11073 1
11074 ],
11075 [
11076 "0x49eaaf1b548a0cb0",
11077 1
11078 ],
11079 [
11080 "0x91d5df18b0d2cf58",
11081 1
11082 ],
11083 [
11084 "0xed99c5acb25eedf5",
11085 3
11086 ],
11087 [
11088 "0xcbca25e39f142387",
11089 2
11090 ],
11091 [
11092 "0x687ad44ad37f03c2",
11093 1
11094 ],
11095 [
11096 "0xab3c0572291feb8b",
11097 1
11098 ],
11099 [
11100 "0xbc9d89904f5b923f",
11101 1
11102 ],
11103 [
11104 "0x37c8bb1350a9a2a8",
11105 1
11106 ]
11107 ]
11108 ],
11109 [
11110 10403784,
11111 9130,
11112 [
11113 [
11114 "0xdf6acb689907609b",
11115 3
11116 ],
11117 [
11118 "0x37e397fc7c91f5e4",
11119 1
11120 ],
11121 [
11122 "0x40fe3ad401f8959a",
11123 5
11124 ],
11125 [
11126 "0xd2bc9897eed08f15",
11127 3
11128 ],
11129 [
11130 "0xf78b278be53f454c",
11131 2
11132 ],
11133 [
11134 "0xaf2c0297a23e6d3d",
11135 1
11136 ],
11137 [
11138 "0x49eaaf1b548a0cb0",
11139 1
11140 ],
11141 [
11142 "0x91d5df18b0d2cf58",
11143 1
11144 ],
11145 [
11146 "0xed99c5acb25eedf5",
11147 3
11148 ],
11149 [
11150 "0xcbca25e39f142387",
11151 2
11152 ],
11153 [
11154 "0x687ad44ad37f03c2",
11155 1
11156 ],
11157 [
11158 "0xab3c0572291feb8b",
11159 1
11160 ],
11161 [
11162 "0xbc9d89904f5b923f",
11163 1
11164 ],
11165 [
11166 "0x37c8bb1350a9a2a8",
11167 1
11168 ]
11169 ]
11170 ],
11171 [
11172 10960765,
11173 9150,
11174 [
11175 [
11176 "0xdf6acb689907609b",
11177 3
11178 ],
11179 [
11180 "0x37e397fc7c91f5e4",
11181 1
11182 ],
11183 [
11184 "0x40fe3ad401f8959a",
11185 5
11186 ],
11187 [
11188 "0xd2bc9897eed08f15",
11189 3
11190 ],
11191 [
11192 "0xf78b278be53f454c",
11193 2
11194 ],
11195 [
11196 "0xaf2c0297a23e6d3d",
11197 1
11198 ],
11199 [
11200 "0x49eaaf1b548a0cb0",
11201 1
11202 ],
11203 [
11204 "0x91d5df18b0d2cf58",
11205 1
11206 ],
11207 [
11208 "0xed99c5acb25eedf5",
11209 3
11210 ],
11211 [
11212 "0xcbca25e39f142387",
11213 2
11214 ],
11215 [
11216 "0x687ad44ad37f03c2",
11217 1
11218 ],
11219 [
11220 "0xab3c0572291feb8b",
11221 1
11222 ],
11223 [
11224 "0xbc9d89904f5b923f",
11225 1
11226 ],
11227 [
11228 "0x37c8bb1350a9a2a8",
11229 1
11230 ]
11231 ]
11232 ],
11233 [
11234 11006614,
11235 9151,
11236 [
11237 [
11238 "0xdf6acb689907609b",
11239 3
11240 ],
11241 [
11242 "0x37e397fc7c91f5e4",
11243 1
11244 ],
11245 [
11246 "0x40fe3ad401f8959a",
11247 5
11248 ],
11249 [
11250 "0xd2bc9897eed08f15",
11251 3
11252 ],
11253 [
11254 "0xf78b278be53f454c",
11255 2
11256 ],
11257 [
11258 "0xaf2c0297a23e6d3d",
11259 1
11260 ],
11261 [
11262 "0x49eaaf1b548a0cb0",
11263 1
11264 ],
11265 [
11266 "0x91d5df18b0d2cf58",
11267 1
11268 ],
11269 [
11270 "0xed99c5acb25eedf5",
11271 3
11272 ],
11273 [
11274 "0xcbca25e39f142387",
11275 2
11276 ],
11277 [
11278 "0x687ad44ad37f03c2",
11279 1
11280 ],
11281 [
11282 "0xab3c0572291feb8b",
11283 1
11284 ],
11285 [
11286 "0xbc9d89904f5b923f",
11287 1
11288 ],
11289 [
11290 "0x37c8bb1350a9a2a8",
11291 1
11292 ]
11293 ]
11294 ],
11295 [
11296 11404482,
11297 9160,
11298 [
11299 [
11300 "0xdf6acb689907609b",
11301 4
11302 ],
11303 [
11304 "0x37e397fc7c91f5e4",
11305 1
11306 ],
11307 [
11308 "0x40fe3ad401f8959a",
11309 5
11310 ],
11311 [
11312 "0xd2bc9897eed08f15",
11313 3
11314 ],
11315 [
11316 "0xf78b278be53f454c",
11317 2
11318 ],
11319 [
11320 "0xaf2c0297a23e6d3d",
11321 2
11322 ],
11323 [
11324 "0x49eaaf1b548a0cb0",
11325 1
11326 ],
11327 [
11328 "0x91d5df18b0d2cf58",
11329 1
11330 ],
11331 [
11332 "0xed99c5acb25eedf5",
11333 3
11334 ],
11335 [
11336 "0xcbca25e39f142387",
11337 2
11338 ],
11339 [
11340 "0x687ad44ad37f03c2",
11341 1
11342 ],
11343 [
11344 "0xab3c0572291feb8b",
11345 1
11346 ],
11347 [
11348 "0xbc9d89904f5b923f",
11349 1
11350 ],
11351 [
11352 "0x37c8bb1350a9a2a8",
11353 1
11354 ]
11355 ]
11356 ],
11357 [
11358 11601803,
11359 9170,
11360 [
11361 [
11362 "0xdf6acb689907609b",
11363 4
11364 ],
11365 [
11366 "0x37e397fc7c91f5e4",
11367 1
11368 ],
11369 [
11370 "0x40fe3ad401f8959a",
11371 5
11372 ],
11373 [
11374 "0xd2bc9897eed08f15",
11375 3
11376 ],
11377 [
11378 "0xf78b278be53f454c",
11379 2
11380 ],
11381 [
11382 "0xaf2c0297a23e6d3d",
11383 2
11384 ],
11385 [
11386 "0x49eaaf1b548a0cb0",
11387 1
11388 ],
11389 [
11390 "0x91d5df18b0d2cf58",
11391 1
11392 ],
11393 [
11394 "0xed99c5acb25eedf5",
11395 3
11396 ],
11397 [
11398 "0xcbca25e39f142387",
11399 2
11400 ],
11401 [
11402 "0x687ad44ad37f03c2",
11403 1
11404 ],
11405 [
11406 "0xab3c0572291feb8b",
11407 1
11408 ],
11409 [
11410 "0xbc9d89904f5b923f",
11411 1
11412 ],
11413 [
11414 "0x37c8bb1350a9a2a8",
11415 1
11416 ]
11417 ]
11418 ],
11419 [
11420 12008022,
11421 9180,
11422 [
11423 [
11424 "0xdf6acb689907609b",
11425 4
11426 ],
11427 [
11428 "0x37e397fc7c91f5e4",
11429 1
11430 ],
11431 [
11432 "0x40fe3ad401f8959a",
11433 5
11434 ],
11435 [
11436 "0xd2bc9897eed08f15",
11437 3
11438 ],
11439 [
11440 "0xf78b278be53f454c",
11441 2
11442 ],
11443 [
11444 "0xaf2c0297a23e6d3d",
11445 2
11446 ],
11447 [
11448 "0x49eaaf1b548a0cb0",
11449 1
11450 ],
11451 [
11452 "0x91d5df18b0d2cf58",
11453 1
11454 ],
11455 [
11456 "0xed99c5acb25eedf5",
11457 3
11458 ],
11459 [
11460 "0xcbca25e39f142387",
11461 2
11462 ],
11463 [
11464 "0x687ad44ad37f03c2",
11465 1
11466 ],
11467 [
11468 "0xab3c0572291feb8b",
11469 1
11470 ],
11471 [
11472 "0xbc9d89904f5b923f",
11473 1
11474 ],
11475 [
11476 "0x37c8bb1350a9a2a8",
11477 1
11478 ]
11479 ]
11480 ],
11481 [
11482 12405451,
11483 9190,
11484 [
11485 [
11486 "0xdf6acb689907609b",
11487 4
11488 ],
11489 [
11490 "0x37e397fc7c91f5e4",
11491 1
11492 ],
11493 [
11494 "0x40fe3ad401f8959a",
11495 6
11496 ],
11497 [
11498 "0xd2bc9897eed08f15",
11499 3
11500 ],
11501 [
11502 "0xf78b278be53f454c",
11503 2
11504 ],
11505 [
11506 "0xaf2c0297a23e6d3d",
11507 2
11508 ],
11509 [
11510 "0x49eaaf1b548a0cb0",
11511 1
11512 ],
11513 [
11514 "0x91d5df18b0d2cf58",
11515 1
11516 ],
11517 [
11518 "0xed99c5acb25eedf5",
11519 3
11520 ],
11521 [
11522 "0xcbca25e39f142387",
11523 2
11524 ],
11525 [
11526 "0x687ad44ad37f03c2",
11527 1
11528 ],
11529 [
11530 "0xab3c0572291feb8b",
11531 1
11532 ],
11533 [
11534 "0xbc9d89904f5b923f",
11535 1
11536 ],
11537 [
11538 "0x37c8bb1350a9a2a8",
11539 1
11540 ]
11541 ]
11542 ],
11543 [
11544 12665416,
11545 9200,
11546 [
11547 [
11548 "0xdf6acb689907609b",
11549 4
11550 ],
11551 [
11552 "0x37e397fc7c91f5e4",
11553 1
11554 ],
11555 [
11556 "0x40fe3ad401f8959a",
11557 6
11558 ],
11559 [
11560 "0xd2bc9897eed08f15",
11561 3
11562 ],
11563 [
11564 "0xf78b278be53f454c",
11565 2
11566 ],
11567 [
11568 "0xaf2c0297a23e6d3d",
11569 2
11570 ],
11571 [
11572 "0x49eaaf1b548a0cb0",
11573 1
11574 ],
11575 [
11576 "0x91d5df18b0d2cf58",
11577 1
11578 ],
11579 [
11580 "0xed99c5acb25eedf5",
11581 3
11582 ],
11583 [
11584 "0xcbca25e39f142387",
11585 2
11586 ],
11587 [
11588 "0x687ad44ad37f03c2",
11589 1
11590 ],
11591 [
11592 "0xab3c0572291feb8b",
11593 1
11594 ],
11595 [
11596 "0xbc9d89904f5b923f",
11597 1
11598 ],
11599 [
11600 "0x37c8bb1350a9a2a8",
11601 1
11602 ]
11603 ]
11604 ],
11605 [
11606 12909508,
11607 9220,
11608 [
11609 [
11610 "0xdf6acb689907609b",
11611 4
11612 ],
11613 [
11614 "0x37e397fc7c91f5e4",
11615 1
11616 ],
11617 [
11618 "0x40fe3ad401f8959a",
11619 6
11620 ],
11621 [
11622 "0xd2bc9897eed08f15",
11623 3
11624 ],
11625 [
11626 "0xf78b278be53f454c",
11627 2
11628 ],
11629 [
11630 "0xaf2c0297a23e6d3d",
11631 2
11632 ],
11633 [
11634 "0x49eaaf1b548a0cb0",
11635 1
11636 ],
11637 [
11638 "0x91d5df18b0d2cf58",
11639 1
11640 ],
11641 [
11642 "0xed99c5acb25eedf5",
11643 3
11644 ],
11645 [
11646 "0xcbca25e39f142387",
11647 2
11648 ],
11649 [
11650 "0x687ad44ad37f03c2",
11651 1
11652 ],
11653 [
11654 "0xab3c0572291feb8b",
11655 1
11656 ],
11657 [
11658 "0xbc9d89904f5b923f",
11659 1
11660 ],
11661 [
11662 "0x37c8bb1350a9a2a8",
11663 1
11664 ]
11665 ]
11666 ],
11667 [
11668 13109752,
11669 9230,
11670 [
11671 [
11672 "0xdf6acb689907609b",
11673 4
11674 ],
11675 [
11676 "0x37e397fc7c91f5e4",
11677 1
11678 ],
11679 [
11680 "0x40fe3ad401f8959a",
11681 6
11682 ],
11683 [
11684 "0xd2bc9897eed08f15",
11685 3
11686 ],
11687 [
11688 "0xf78b278be53f454c",
11689 2
11690 ],
11691 [
11692 "0xaf2c0297a23e6d3d",
11693 2
11694 ],
11695 [
11696 "0x49eaaf1b548a0cb0",
11697 1
11698 ],
11699 [
11700 "0x91d5df18b0d2cf58",
11701 1
11702 ],
11703 [
11704 "0xed99c5acb25eedf5",
11705 3
11706 ],
11707 [
11708 "0xcbca25e39f142387",
11709 2
11710 ],
11711 [
11712 "0x687ad44ad37f03c2",
11713 1
11714 ],
11715 [
11716 "0xab3c0572291feb8b",
11717 1
11718 ],
11719 [
11720 "0xbc9d89904f5b923f",
11721 1
11722 ],
11723 [
11724 "0x37c8bb1350a9a2a8",
11725 1
11726 ]
11727 ]
11728 ],
11729 [
11730 13555777,
11731 9250,
11732 [
11733 [
11734 "0xdf6acb689907609b",
11735 4
11736 ],
11737 [
11738 "0x37e397fc7c91f5e4",
11739 1
11740 ],
11741 [
11742 "0x40fe3ad401f8959a",
11743 6
11744 ],
11745 [
11746 "0xd2bc9897eed08f15",
11747 3
11748 ],
11749 [
11750 "0xf78b278be53f454c",
11751 2
11752 ],
11753 [
11754 "0xaf2c0297a23e6d3d",
11755 2
11756 ],
11757 [
11758 "0x49eaaf1b548a0cb0",
11759 1
11760 ],
11761 [
11762 "0x91d5df18b0d2cf58",
11763 1
11764 ],
11765 [
11766 "0xed99c5acb25eedf5",
11767 3
11768 ],
11769 [
11770 "0xcbca25e39f142387",
11771 2
11772 ],
11773 [
11774 "0x687ad44ad37f03c2",
11775 1
11776 ],
11777 [
11778 "0xab3c0572291feb8b",
11779 1
11780 ],
11781 [
11782 "0xbc9d89904f5b923f",
11783 1
11784 ],
11785 [
11786 "0x37c8bb1350a9a2a8",
11787 1
11788 ]
11789 ]
11790 ],
11791 [
11792 13727747,
11793 9260,
11794 [
11795 [
11796 "0xdf6acb689907609b",
11797 4
11798 ],
11799 [
11800 "0x37e397fc7c91f5e4",
11801 1
11802 ],
11803 [
11804 "0x40fe3ad401f8959a",
11805 6
11806 ],
11807 [
11808 "0xd2bc9897eed08f15",
11809 3
11810 ],
11811 [
11812 "0xf78b278be53f454c",
11813 2
11814 ],
11815 [
11816 "0xaf2c0297a23e6d3d",
11817 2
11818 ],
11819 [
11820 "0x49eaaf1b548a0cb0",
11821 1
11822 ],
11823 [
11824 "0x91d5df18b0d2cf58",
11825 1
11826 ],
11827 [
11828 "0xed99c5acb25eedf5",
11829 3
11830 ],
11831 [
11832 "0xcbca25e39f142387",
11833 2
11834 ],
11835 [
11836 "0x687ad44ad37f03c2",
11837 1
11838 ],
11839 [
11840 "0xab3c0572291feb8b",
11841 1
11842 ],
11843 [
11844 "0xbc9d89904f5b923f",
11845 1
11846 ],
11847 [
11848 "0x37c8bb1350a9a2a8",
11849 1
11850 ]
11851 ]
11852 ],
11853 [
11854 14248044,
11855 9271,
11856 [
11857 [
11858 "0xdf6acb689907609b",
11859 4
11860 ],
11861 [
11862 "0x37e397fc7c91f5e4",
11863 1
11864 ],
11865 [
11866 "0x40fe3ad401f8959a",
11867 6
11868 ],
11869 [
11870 "0xd2bc9897eed08f15",
11871 3
11872 ],
11873 [
11874 "0xf78b278be53f454c",
11875 2
11876 ],
11877 [
11878 "0xaf2c0297a23e6d3d",
11879 2
11880 ],
11881 [
11882 "0x49eaaf1b548a0cb0",
11883 1
11884 ],
11885 [
11886 "0x91d5df18b0d2cf58",
11887 1
11888 ],
11889 [
11890 "0xed99c5acb25eedf5",
11891 3
11892 ],
11893 [
11894 "0xcbca25e39f142387",
11895 2
11896 ],
11897 [
11898 "0x687ad44ad37f03c2",
11899 1
11900 ],
11901 [
11902 "0xab3c0572291feb8b",
11903 1
11904 ],
11905 [
11906 "0xbc9d89904f5b923f",
11907 1
11908 ],
11909 [
11910 "0x37c8bb1350a9a2a8",
11911 1
11912 ],
11913 [
11914 "0x17a6bc0d0062aeb3",
11915 1
11916 ]
11917 ]
11918 ],
11919 [
11920 14433840,
11921 9280,
11922 [
11923 [
11924 "0xdf6acb689907609b",
11925 4
11926 ],
11927 [
11928 "0x37e397fc7c91f5e4",
11929 1
11930 ],
11931 [
11932 "0x40fe3ad401f8959a",
11933 6
11934 ],
11935 [
11936 "0xd2bc9897eed08f15",
11937 3
11938 ],
11939 [
11940 "0xf78b278be53f454c",
11941 2
11942 ],
11943 [
11944 "0xaf2c0297a23e6d3d",
11945 2
11946 ],
11947 [
11948 "0x49eaaf1b548a0cb0",
11949 1
11950 ],
11951 [
11952 "0x91d5df18b0d2cf58",
11953 1
11954 ],
11955 [
11956 "0xed99c5acb25eedf5",
11957 3
11958 ],
11959 [
11960 "0xcbca25e39f142387",
11961 2
11962 ],
11963 [
11964 "0x687ad44ad37f03c2",
11965 1
11966 ],
11967 [
11968 "0xab3c0572291feb8b",
11969 1
11970 ],
11971 [
11972 "0xbc9d89904f5b923f",
11973 1
11974 ],
11975 [
11976 "0x37c8bb1350a9a2a8",
11977 1
11978 ],
11979 [
11980 "0xf3ff14d5ab527059",
11981 1
11982 ],
11983 [
11984 "0x17a6bc0d0062aeb3",
11985 1
11986 ]
11987 ]
11988 ],
11989 [
11990 14645900,
11991 9291,
11992 [
11993 [
11994 "0xdf6acb689907609b",
11995 4
11996 ],
11997 [
11998 "0x37e397fc7c91f5e4",
11999 1
12000 ],
12001 [
12002 "0x40fe3ad401f8959a",
12003 6
12004 ],
12005 [
12006 "0xd2bc9897eed08f15",
12007 3
12008 ],
12009 [
12010 "0xf78b278be53f454c",
12011 2
12012 ],
12013 [
12014 "0xaf2c0297a23e6d3d",
12015 2
12016 ],
12017 [
12018 "0x49eaaf1b548a0cb0",
12019 1
12020 ],
12021 [
12022 "0x91d5df18b0d2cf58",
12023 1
12024 ],
12025 [
12026 "0xed99c5acb25eedf5",
12027 3
12028 ],
12029 [
12030 "0xcbca25e39f142387",
12031 2
12032 ],
12033 [
12034 "0x687ad44ad37f03c2",
12035 1
12036 ],
12037 [
12038 "0xab3c0572291feb8b",
12039 1
12040 ],
12041 [
12042 "0xbc9d89904f5b923f",
12043 1
12044 ],
12045 [
12046 "0x37c8bb1350a9a2a8",
12047 1
12048 ],
12049 [
12050 "0xf3ff14d5ab527059",
12051 1
12052 ],
12053 [
12054 "0x17a6bc0d0062aeb3",
12055 1
12056 ]
12057 ]
12058 ],
12059 [
12060 15048375,
12061 9300,
12062 [
12063 [
12064 "0xdf6acb689907609b",
12065 4
12066 ],
12067 [
12068 "0x37e397fc7c91f5e4",
12069 1
12070 ],
12071 [
12072 "0x40fe3ad401f8959a",
12073 6
12074 ],
12075 [
12076 "0xd2bc9897eed08f15",
12077 3
12078 ],
12079 [
12080 "0xf78b278be53f454c",
12081 2
12082 ],
12083 [
12084 "0xaf2c0297a23e6d3d",
12085 2
12086 ],
12087 [
12088 "0x49eaaf1b548a0cb0",
12089 1
12090 ],
12091 [
12092 "0x91d5df18b0d2cf58",
12093 1
12094 ],
12095 [
12096 "0xed99c5acb25eedf5",
12097 3
12098 ],
12099 [
12100 "0xcbca25e39f142387",
12101 2
12102 ],
12103 [
12104 "0x687ad44ad37f03c2",
12105 1
12106 ],
12107 [
12108 "0xab3c0572291feb8b",
12109 1
12110 ],
12111 [
12112 "0xbc9d89904f5b923f",
12113 1
12114 ],
12115 [
12116 "0x37c8bb1350a9a2a8",
12117 1
12118 ],
12119 [
12120 "0xf3ff14d5ab527059",
12121 1
12122 ],
12123 [
12124 "0x17a6bc0d0062aeb3",
12125 1
12126 ]
12127 ]
12128 ],
12129 [
12130 15426015,
12131 9320,
12132 [
12133 [
12134 "0xdf6acb689907609b",
12135 4
12136 ],
12137 [
12138 "0x37e397fc7c91f5e4",
12139 1
12140 ],
12141 [
12142 "0x40fe3ad401f8959a",
12143 6
12144 ],
12145 [
12146 "0xd2bc9897eed08f15",
12147 3
12148 ],
12149 [
12150 "0xf78b278be53f454c",
12151 2
12152 ],
12153 [
12154 "0xaf2c0297a23e6d3d",
12155 2
12156 ],
12157 [
12158 "0x49eaaf1b548a0cb0",
12159 1
12160 ],
12161 [
12162 "0x91d5df18b0d2cf58",
12163 1
12164 ],
12165 [
12166 "0xed99c5acb25eedf5",
12167 3
12168 ],
12169 [
12170 "0xcbca25e39f142387",
12171 2
12172 ],
12173 [
12174 "0x687ad44ad37f03c2",
12175 1
12176 ],
12177 [
12178 "0xab3c0572291feb8b",
12179 1
12180 ],
12181 [
12182 "0xbc9d89904f5b923f",
12183 1
12184 ],
12185 [
12186 "0x37c8bb1350a9a2a8",
12187 2
12188 ],
12189 [
12190 "0xf3ff14d5ab527059",
12191 2
12192 ],
12193 [
12194 "0x17a6bc0d0062aeb3",
12195 1
12196 ]
12197 ]
12198 ],
12199 [
12200 15680713,
12201 9340,
12202 [
12203 [
12204 "0xdf6acb689907609b",
12205 4
12206 ],
12207 [
12208 "0x37e397fc7c91f5e4",
12209 1
12210 ],
12211 [
12212 "0x40fe3ad401f8959a",
12213 6
12214 ],
12215 [
12216 "0xd2bc9897eed08f15",
12217 3
12218 ],
12219 [
12220 "0xf78b278be53f454c",
12221 2
12222 ],
12223 [
12224 "0xaf2c0297a23e6d3d",
12225 2
12226 ],
12227 [
12228 "0x49eaaf1b548a0cb0",
12229 1
12230 ],
12231 [
12232 "0x91d5df18b0d2cf58",
12233 1
12234 ],
12235 [
12236 "0xed99c5acb25eedf5",
12237 3
12238 ],
12239 [
12240 "0xcbca25e39f142387",
12241 2
12242 ],
12243 [
12244 "0x687ad44ad37f03c2",
12245 1
12246 ],
12247 [
12248 "0xab3c0572291feb8b",
12249 1
12250 ],
12251 [
12252 "0xbc9d89904f5b923f",
12253 1
12254 ],
12255 [
12256 "0x37c8bb1350a9a2a8",
12257 2
12258 ],
12259 [
12260 "0xf3ff14d5ab527059",
12261 2
12262 ],
12263 [
12264 "0x17a6bc0d0062aeb3",
12265 1
12266 ]
12267 ]
12268 ],
12269 [
12270 15756296,
12271 9350,
12272 [
12273 [
12274 "0xdf6acb689907609b",
12275 4
12276 ],
12277 [
12278 "0x37e397fc7c91f5e4",
12279 1
12280 ],
12281 [
12282 "0x40fe3ad401f8959a",
12283 6
12284 ],
12285 [
12286 "0xd2bc9897eed08f15",
12287 3
12288 ],
12289 [
12290 "0xf78b278be53f454c",
12291 2
12292 ],
12293 [
12294 "0xaf2c0297a23e6d3d",
12295 2
12296 ],
12297 [
12298 "0x49eaaf1b548a0cb0",
12299 1
12300 ],
12301 [
12302 "0x91d5df18b0d2cf58",
12303 1
12304 ],
12305 [
12306 "0xed99c5acb25eedf5",
12307 3
12308 ],
12309 [
12310 "0xcbca25e39f142387",
12311 2
12312 ],
12313 [
12314 "0x687ad44ad37f03c2",
12315 1
12316 ],
12317 [
12318 "0xab3c0572291feb8b",
12319 1
12320 ],
12321 [
12322 "0xbc9d89904f5b923f",
12323 1
12324 ],
12325 [
12326 "0x37c8bb1350a9a2a8",
12327 2
12328 ],
12329 [
12330 "0xf3ff14d5ab527059",
12331 2
12332 ],
12333 [
12334 "0x17a6bc0d0062aeb3",
12335 1
12336 ]
12337 ]
12338 ],
12339 [
12340 15912007,
12341 9360,
12342 [
12343 [
12344 "0xdf6acb689907609b",
12345 4
12346 ],
12347 [
12348 "0x37e397fc7c91f5e4",
12349 1
12350 ],
12351 [
12352 "0x40fe3ad401f8959a",
12353 6
12354 ],
12355 [
12356 "0xd2bc9897eed08f15",
12357 3
12358 ],
12359 [
12360 "0xf78b278be53f454c",
12361 2
12362 ],
12363 [
12364 "0xaf2c0297a23e6d3d",
12365 2
12366 ],
12367 [
12368 "0x49eaaf1b548a0cb0",
12369 1
12370 ],
12371 [
12372 "0x91d5df18b0d2cf58",
12373 1
12374 ],
12375 [
12376 "0xed99c5acb25eedf5",
12377 3
12378 ],
12379 [
12380 "0xcbca25e39f142387",
12381 2
12382 ],
12383 [
12384 "0x687ad44ad37f03c2",
12385 1
12386 ],
12387 [
12388 "0xab3c0572291feb8b",
12389 1
12390 ],
12391 [
12392 "0xbc9d89904f5b923f",
12393 1
12394 ],
12395 [
12396 "0x37c8bb1350a9a2a8",
12397 2
12398 ],
12399 [
12400 "0xf3ff14d5ab527059",
12401 2
12402 ],
12403 [
12404 "0x17a6bc0d0062aeb3",
12405 1
12406 ]
12407 ]
12408 ],
12409 [
12410 16356547,
12411 9370,
12412 [
12413 [
12414 "0xdf6acb689907609b",
12415 4
12416 ],
12417 [
12418 "0x37e397fc7c91f5e4",
12419 1
12420 ],
12421 [
12422 "0x40fe3ad401f8959a",
12423 6
12424 ],
12425 [
12426 "0xd2bc9897eed08f15",
12427 3
12428 ],
12429 [
12430 "0xf78b278be53f454c",
12431 2
12432 ],
12433 [
12434 "0xaf2c0297a23e6d3d",
12435 2
12436 ],
12437 [
12438 "0x49eaaf1b548a0cb0",
12439 1
12440 ],
12441 [
12442 "0x91d5df18b0d2cf58",
12443 1
12444 ],
12445 [
12446 "0xed99c5acb25eedf5",
12447 3
12448 ],
12449 [
12450 "0xcbca25e39f142387",
12451 2
12452 ],
12453 [
12454 "0x687ad44ad37f03c2",
12455 1
12456 ],
12457 [
12458 "0xab3c0572291feb8b",
12459 1
12460 ],
12461 [
12462 "0xbc9d89904f5b923f",
12463 1
12464 ],
12465 [
12466 "0x37c8bb1350a9a2a8",
12467 2
12468 ],
12469 [
12470 "0xf3ff14d5ab527059",
12471 2
12472 ],
12473 [
12474 "0x17a6bc0d0062aeb3",
12475 1
12476 ]
12477 ]
12478 ],
12479 [
12480 17335450,
12481 9381,
12482 [
12483 [
12484 "0xdf6acb689907609b",
12485 4
12486 ],
12487 [
12488 "0x37e397fc7c91f5e4",
12489 1
12490 ],
12491 [
12492 "0x40fe3ad401f8959a",
12493 6
12494 ],
12495 [
12496 "0xd2bc9897eed08f15",
12497 3
12498 ],
12499 [
12500 "0xf78b278be53f454c",
12501 2
12502 ],
12503 [
12504 "0xaf2c0297a23e6d3d",
12505 2
12506 ],
12507 [
12508 "0x49eaaf1b548a0cb0",
12509 1
12510 ],
12511 [
12512 "0x91d5df18b0d2cf58",
12513 1
12514 ],
12515 [
12516 "0xed99c5acb25eedf5",
12517 3
12518 ],
12519 [
12520 "0xcbca25e39f142387",
12521 2
12522 ],
12523 [
12524 "0x687ad44ad37f03c2",
12525 1
12526 ],
12527 [
12528 "0xab3c0572291feb8b",
12529 1
12530 ],
12531 [
12532 "0xbc9d89904f5b923f",
12533 1
12534 ],
12535 [
12536 "0x37c8bb1350a9a2a8",
12537 3
12538 ],
12539 [
12540 "0xf3ff14d5ab527059",
12541 3
12542 ],
12543 [
12544 "0x17a6bc0d0062aeb3",
12545 1
12546 ]
12547 ]
12548 ],
12549 [
12550 18062739,
12551 9420,
12552 [
12553 [
12554 "0xdf6acb689907609b",
12555 4
12556 ],
12557 [
12558 "0x37e397fc7c91f5e4",
12559 2
12560 ],
12561 [
12562 "0x40fe3ad401f8959a",
12563 6
12564 ],
12565 [
12566 "0xd2bc9897eed08f15",
12567 3
12568 ],
12569 [
12570 "0xf78b278be53f454c",
12571 2
12572 ],
12573 [
12574 "0xaf2c0297a23e6d3d",
12575 4
12576 ],
12577 [
12578 "0x49eaaf1b548a0cb0",
12579 2
12580 ],
12581 [
12582 "0x91d5df18b0d2cf58",
12583 2
12584 ],
12585 [
12586 "0xed99c5acb25eedf5",
12587 3
12588 ],
12589 [
12590 "0xcbca25e39f142387",
12591 2
12592 ],
12593 [
12594 "0x687ad44ad37f03c2",
12595 1
12596 ],
12597 [
12598 "0xab3c0572291feb8b",
12599 1
12600 ],
12601 [
12602 "0xbc9d89904f5b923f",
12603 1
12604 ],
12605 [
12606 "0x37c8bb1350a9a2a8",
12607 4
12608 ],
12609 [
12610 "0xf3ff14d5ab527059",
12611 3
12612 ],
12613 [
12614 "0x17a6bc0d0062aeb3",
12615 1
12616 ],
12617 [
12618 "0x18ef58a3b67ba770",
12619 1
12620 ]
12621 ]
12622 ],
12623 [
12624 18625000,
12625 9430,
12626 [
12627 [
12628 "0xdf6acb689907609b",
12629 4
12630 ],
12631 [
12632 "0x37e397fc7c91f5e4",
12633 2
12634 ],
12635 [
12636 "0x40fe3ad401f8959a",
12637 6
12638 ],
12639 [
12640 "0xd2bc9897eed08f15",
12641 3
12642 ],
12643 [
12644 "0xf78b278be53f454c",
12645 2
12646 ],
12647 [
12648 "0xaf2c0297a23e6d3d",
12649 4
12650 ],
12651 [
12652 "0x49eaaf1b548a0cb0",
12653 2
12654 ],
12655 [
12656 "0x91d5df18b0d2cf58",
12657 2
12658 ],
12659 [
12660 "0xed99c5acb25eedf5",
12661 3
12662 ],
12663 [
12664 "0xcbca25e39f142387",
12665 2
12666 ],
12667 [
12668 "0x687ad44ad37f03c2",
12669 1
12670 ],
12671 [
12672 "0xab3c0572291feb8b",
12673 1
12674 ],
12675 [
12676 "0xbc9d89904f5b923f",
12677 1
12678 ],
12679 [
12680 "0x37c8bb1350a9a2a8",
12681 4
12682 ],
12683 [
12684 "0xf3ff14d5ab527059",
12685 3
12686 ],
12687 [
12688 "0x17a6bc0d0062aeb3",
12689 1
12690 ],
12691 [
12692 "0x18ef58a3b67ba770",
12693 1
12694 ]
12695 ]
12696 ],
12697 [
12698 20465806,
12699 1000000,
12700 [
12701 [
12702 "0xdf6acb689907609b",
12703 4
12704 ],
12705 [
12706 "0x37e397fc7c91f5e4",
12707 2
12708 ],
12709 [
12710 "0x40fe3ad401f8959a",
12711 6
12712 ],
12713 [
12714 "0xd2bc9897eed08f15",
12715 3
12716 ],
12717 [
12718 "0xf78b278be53f454c",
12719 2
12720 ],
12721 [
12722 "0xaf2c0297a23e6d3d",
12723 5
12724 ],
12725 [
12726 "0x49eaaf1b548a0cb0",
12727 3
12728 ],
12729 [
12730 "0x91d5df18b0d2cf58",
12731 2
12732 ],
12733 [
12734 "0x2a5e924655399e60",
12735 1
12736 ],
12737 [
12738 "0xed99c5acb25eedf5",
12739 3
12740 ],
12741 [
12742 "0xcbca25e39f142387",
12743 2
12744 ],
12745 [
12746 "0x687ad44ad37f03c2",
12747 1
12748 ],
12749 [
12750 "0xab3c0572291feb8b",
12751 1
12752 ],
12753 [
12754 "0xbc9d89904f5b923f",
12755 1
12756 ],
12757 [
12758 "0x37c8bb1350a9a2a8",
12759 4
12760 ],
12761 [
12762 "0xf3ff14d5ab527059",
12763 3
12764 ],
12765 [
12766 "0x17a6bc0d0062aeb3",
12767 1
12768 ],
12769 [
12770 "0x18ef58a3b67ba770",
12771 1
12772 ]
12773 ]
12774 ],
12775 [
12776 21570000,
12777 1001000,
12778 [
12779 [
12780 "0xdf6acb689907609b",
12781 4
12782 ],
12783 [
12784 "0x37e397fc7c91f5e4",
12785 2
12786 ],
12787 [
12788 "0x40fe3ad401f8959a",
12789 6
12790 ],
12791 [
12792 "0xd2bc9897eed08f15",
12793 3
12794 ],
12795 [
12796 "0xf78b278be53f454c",
12797 2
12798 ],
12799 [
12800 "0xaf2c0297a23e6d3d",
12801 7
12802 ],
12803 [
12804 "0x49eaaf1b548a0cb0",
12805 3
12806 ],
12807 [
12808 "0x91d5df18b0d2cf58",
12809 2
12810 ],
12811 [
12812 "0x2a5e924655399e60",
12813 1
12814 ],
12815 [
12816 "0xed99c5acb25eedf5",
12817 3
12818 ],
12819 [
12820 "0xcbca25e39f142387",
12821 2
12822 ],
12823 [
12824 "0x687ad44ad37f03c2",
12825 1
12826 ],
12827 [
12828 "0xab3c0572291feb8b",
12829 1
12830 ],
12831 [
12832 "0xbc9d89904f5b923f",
12833 1
12834 ],
12835 [
12836 "0x37c8bb1350a9a2a8",
12837 4
12838 ],
12839 [
12840 "0xf3ff14d5ab527059",
12841 3
12842 ],
12843 [
12844 "0x17a6bc0d0062aeb3",
12845 1
12846 ],
12847 [
12848 "0x18ef58a3b67ba770",
12849 1
12850 ],
12851 [
12852 "0xfbc577b9d747efd6",
12853 1
12854 ]
12855 ]
12856 ],
12857 [
12858 21786291,
12859 1001002,
12860 [
12861 [
12862 "0xdf6acb689907609b",
12863 4
12864 ],
12865 [
12866 "0x37e397fc7c91f5e4",
12867 2
12868 ],
12869 [
12870 "0x40fe3ad401f8959a",
12871 6
12872 ],
12873 [
12874 "0xd2bc9897eed08f15",
12875 3
12876 ],
12877 [
12878 "0xf78b278be53f454c",
12879 2
12880 ],
12881 [
12882 "0xaf2c0297a23e6d3d",
12883 7
12884 ],
12885 [
12886 "0x49eaaf1b548a0cb0",
12887 3
12888 ],
12889 [
12890 "0x91d5df18b0d2cf58",
12891 2
12892 ],
12893 [
12894 "0x2a5e924655399e60",
12895 1
12896 ],
12897 [
12898 "0xed99c5acb25eedf5",
12899 3
12900 ],
12901 [
12902 "0xcbca25e39f142387",
12903 2
12904 ],
12905 [
12906 "0x687ad44ad37f03c2",
12907 1
12908 ],
12909 [
12910 "0xab3c0572291feb8b",
12911 1
12912 ],
12913 [
12914 "0xbc9d89904f5b923f",
12915 1
12916 ],
12917 [
12918 "0x37c8bb1350a9a2a8",
12919 4
12920 ],
12921 [
12922 "0xf3ff14d5ab527059",
12923 3
12924 ],
12925 [
12926 "0x17a6bc0d0062aeb3",
12927 1
12928 ],
12929 [
12930 "0x18ef58a3b67ba770",
12931 1
12932 ],
12933 [
12934 "0xfbc577b9d747efd6",
12935 1
12936 ]
12937 ]
12938 ],
12939 [
12940 22515962,
12941 1001003,
12942 [
12943 [
12944 "0xdf6acb689907609b",
12945 4
12946 ],
12947 [
12948 "0x37e397fc7c91f5e4",
12949 2
12950 ],
12951 [
12952 "0x40fe3ad401f8959a",
12953 6
12954 ],
12955 [
12956 "0xd2bc9897eed08f15",
12957 3
12958 ],
12959 [
12960 "0xf78b278be53f454c",
12961 2
12962 ],
12963 [
12964 "0xaf2c0297a23e6d3d",
12965 7
12966 ],
12967 [
12968 "0x49eaaf1b548a0cb0",
12969 3
12970 ],
12971 [
12972 "0x91d5df18b0d2cf58",
12973 2
12974 ],
12975 [
12976 "0x2a5e924655399e60",
12977 1
12978 ],
12979 [
12980 "0xed99c5acb25eedf5",
12981 3
12982 ],
12983 [
12984 "0xcbca25e39f142387",
12985 2
12986 ],
12987 [
12988 "0x687ad44ad37f03c2",
12989 1
12990 ],
12991 [
12992 "0xab3c0572291feb8b",
12993 1
12994 ],
12995 [
12996 "0xbc9d89904f5b923f",
12997 1
12998 ],
12999 [
13000 "0x37c8bb1350a9a2a8",
13001 4
13002 ],
13003 [
13004 "0xf3ff14d5ab527059",
13005 3
13006 ],
13007 [
13008 "0x17a6bc0d0062aeb3",
13009 1
13010 ],
13011 [
13012 "0x18ef58a3b67ba770",
13013 1
13014 ],
13015 [
13016 "0xfbc577b9d747efd6",
13017 1
13018 ]
13019 ]
13020 ],
13021 [
13022 22790000,
13023 1002000,
13024 [
13025 [
13026 "0xdf6acb689907609b",
13027 4
13028 ],
13029 [
13030 "0x37e397fc7c91f5e4",
13031 2
13032 ],
13033 [
13034 "0x40fe3ad401f8959a",
13035 6
13036 ],
13037 [
13038 "0xd2bc9897eed08f15",
13039 3
13040 ],
13041 [
13042 "0xf78b278be53f454c",
13043 2
13044 ],
13045 [
13046 "0xaf2c0297a23e6d3d",
13047 10
13048 ],
13049 [
13050 "0x49eaaf1b548a0cb0",
13051 3
13052 ],
13053 [
13054 "0x91d5df18b0d2cf58",
13055 2
13056 ],
13057 [
13058 "0x2a5e924655399e60",
13059 1
13060 ],
13061 [
13062 "0xed99c5acb25eedf5",
13063 3
13064 ],
13065 [
13066 "0xcbca25e39f142387",
13067 2
13068 ],
13069 [
13070 "0x687ad44ad37f03c2",
13071 1
13072 ],
13073 [
13074 "0xab3c0572291feb8b",
13075 1
13076 ],
13077 [
13078 "0xbc9d89904f5b923f",
13079 1
13080 ],
13081 [
13082 "0x37c8bb1350a9a2a8",
13083 4
13084 ],
13085 [
13086 "0xf3ff14d5ab527059",
13087 3
13088 ],
13089 [
13090 "0x17a6bc0d0062aeb3",
13091 1
13092 ],
13093 [
13094 "0x18ef58a3b67ba770",
13095 1
13096 ],
13097 [
13098 "0xfbc577b9d747efd6",
13099 1
13100 ]
13101 ]
13102 ],
13103 [
13104 23176015,
13105 1002001,
13106 [
13107 [
13108 "0xdf6acb689907609b",
13109 4
13110 ],
13111 [
13112 "0x37e397fc7c91f5e4",
13113 2
13114 ],
13115 [
13116 "0x40fe3ad401f8959a",
13117 6
13118 ],
13119 [
13120 "0xd2bc9897eed08f15",
13121 3
13122 ],
13123 [
13124 "0xf78b278be53f454c",
13125 2
13126 ],
13127 [
13128 "0xaf2c0297a23e6d3d",
13129 10
13130 ],
13131 [
13132 "0x49eaaf1b548a0cb0",
13133 3
13134 ],
13135 [
13136 "0x91d5df18b0d2cf58",
13137 2
13138 ],
13139 [
13140 "0x2a5e924655399e60",
13141 1
13142 ],
13143 [
13144 "0xed99c5acb25eedf5",
13145 3
13146 ],
13147 [
13148 "0xcbca25e39f142387",
13149 2
13150 ],
13151 [
13152 "0x687ad44ad37f03c2",
13153 1
13154 ],
13155 [
13156 "0xab3c0572291feb8b",
13157 1
13158 ],
13159 [
13160 "0xbc9d89904f5b923f",
13161 1
13162 ],
13163 [
13164 "0x37c8bb1350a9a2a8",
13165 4
13166 ],
13167 [
13168 "0xf3ff14d5ab527059",
13169 3
13170 ],
13171 [
13172 "0x17a6bc0d0062aeb3",
13173 1
13174 ],
13175 [
13176 "0x18ef58a3b67ba770",
13177 1
13178 ],
13179 [
13180 "0xfbc577b9d747efd6",
13181 1
13182 ]
13183 ]
13184 ],
13185 [
13186 23450253,
13187 1002004,
13188 [
13189 [
13190 "0xdf6acb689907609b",
13191 4
13192 ],
13193 [
13194 "0x37e397fc7c91f5e4",
13195 2
13196 ],
13197 [
13198 "0x40fe3ad401f8959a",
13199 6
13200 ],
13201 [
13202 "0xd2bc9897eed08f15",
13203 3
13204 ],
13205 [
13206 "0xf78b278be53f454c",
13207 2
13208 ],
13209 [
13210 "0xaf2c0297a23e6d3d",
13211 10
13212 ],
13213 [
13214 "0x49eaaf1b548a0cb0",
13215 3
13216 ],
13217 [
13218 "0x91d5df18b0d2cf58",
13219 2
13220 ],
13221 [
13222 "0x2a5e924655399e60",
13223 1
13224 ],
13225 [
13226 "0xed99c5acb25eedf5",
13227 3
13228 ],
13229 [
13230 "0xcbca25e39f142387",
13231 2
13232 ],
13233 [
13234 "0x687ad44ad37f03c2",
13235 1
13236 ],
13237 [
13238 "0xab3c0572291feb8b",
13239 1
13240 ],
13241 [
13242 "0xbc9d89904f5b923f",
13243 1
13244 ],
13245 [
13246 "0x37c8bb1350a9a2a8",
13247 4
13248 ],
13249 [
13250 "0xf3ff14d5ab527059",
13251 3
13252 ],
13253 [
13254 "0x17a6bc0d0062aeb3",
13255 1
13256 ],
13257 [
13258 "0x18ef58a3b67ba770",
13259 1
13260 ],
13261 [
13262 "0xfbc577b9d747efd6",
13263 1
13264 ]
13265 ]
13266 ],
13267 [
13268 23565293,
13269 1002005,
13270 [
13271 [
13272 "0xdf6acb689907609b",
13273 4
13274 ],
13275 [
13276 "0x37e397fc7c91f5e4",
13277 2
13278 ],
13279 [
13280 "0x40fe3ad401f8959a",
13281 6
13282 ],
13283 [
13284 "0xd2bc9897eed08f15",
13285 3
13286 ],
13287 [
13288 "0xf78b278be53f454c",
13289 2
13290 ],
13291 [
13292 "0xaf2c0297a23e6d3d",
13293 10
13294 ],
13295 [
13296 "0x49eaaf1b548a0cb0",
13297 3
13298 ],
13299 [
13300 "0x91d5df18b0d2cf58",
13301 2
13302 ],
13303 [
13304 "0x2a5e924655399e60",
13305 1
13306 ],
13307 [
13308 "0xed99c5acb25eedf5",
13309 3
13310 ],
13311 [
13312 "0xcbca25e39f142387",
13313 2
13314 ],
13315 [
13316 "0x687ad44ad37f03c2",
13317 1
13318 ],
13319 [
13320 "0xab3c0572291feb8b",
13321 1
13322 ],
13323 [
13324 "0xbc9d89904f5b923f",
13325 1
13326 ],
13327 [
13328 "0x37c8bb1350a9a2a8",
13329 4
13330 ],
13331 [
13332 "0xf3ff14d5ab527059",
13333 3
13334 ],
13335 [
13336 "0x17a6bc0d0062aeb3",
13337 1
13338 ],
13339 [
13340 "0x18ef58a3b67ba770",
13341 1
13342 ],
13343 [
13344 "0xfbc577b9d747efd6",
13345 1
13346 ]
13347 ]
13348 ]
13349 ];
13350
13351 const upgrades$2 = [
13352 [
13353 0,
13354 0,
13355 [
13356 [
13357 "0xdf6acb689907609b",
13358 3
13359 ],
13360 [
13361 "0x37e397fc7c91f5e4",
13362 1
13363 ],
13364 [
13365 "0x40fe3ad401f8959a",
13366 4
13367 ],
13368 [
13369 "0xd2bc9897eed08f15",
13370 2
13371 ],
13372 [
13373 "0xf78b278be53f454c",
13374 2
13375 ],
13376 [
13377 "0xaf2c0297a23e6d3d",
13378 3
13379 ],
13380 [
13381 "0xed99c5acb25eedf5",
13382 2
13383 ],
13384 [
13385 "0xcbca25e39f142387",
13386 2
13387 ],
13388 [
13389 "0x687ad44ad37f03c2",
13390 1
13391 ],
13392 [
13393 "0xab3c0572291feb8b",
13394 1
13395 ],
13396 [
13397 "0xbc9d89904f5b923f",
13398 1
13399 ],
13400 [
13401 "0x37c8bb1350a9a2a8",
13402 1
13403 ]
13404 ]
13405 ],
13406 [
13407 29231,
13408 1,
13409 [
13410 [
13411 "0xdf6acb689907609b",
13412 3
13413 ],
13414 [
13415 "0x37e397fc7c91f5e4",
13416 1
13417 ],
13418 [
13419 "0x40fe3ad401f8959a",
13420 4
13421 ],
13422 [
13423 "0xd2bc9897eed08f15",
13424 2
13425 ],
13426 [
13427 "0xf78b278be53f454c",
13428 2
13429 ],
13430 [
13431 "0xaf2c0297a23e6d3d",
13432 3
13433 ],
13434 [
13435 "0xed99c5acb25eedf5",
13436 2
13437 ],
13438 [
13439 "0xcbca25e39f142387",
13440 2
13441 ],
13442 [
13443 "0x687ad44ad37f03c2",
13444 1
13445 ],
13446 [
13447 "0xab3c0572291feb8b",
13448 1
13449 ],
13450 [
13451 "0xbc9d89904f5b923f",
13452 1
13453 ],
13454 [
13455 "0x37c8bb1350a9a2a8",
13456 1
13457 ]
13458 ]
13459 ],
13460 [
13461 188836,
13462 5,
13463 [
13464 [
13465 "0xdf6acb689907609b",
13466 3
13467 ],
13468 [
13469 "0x37e397fc7c91f5e4",
13470 1
13471 ],
13472 [
13473 "0x40fe3ad401f8959a",
13474 4
13475 ],
13476 [
13477 "0xd2bc9897eed08f15",
13478 2
13479 ],
13480 [
13481 "0xf78b278be53f454c",
13482 2
13483 ],
13484 [
13485 "0xaf2c0297a23e6d3d",
13486 3
13487 ],
13488 [
13489 "0xed99c5acb25eedf5",
13490 2
13491 ],
13492 [
13493 "0xcbca25e39f142387",
13494 2
13495 ],
13496 [
13497 "0x687ad44ad37f03c2",
13498 1
13499 ],
13500 [
13501 "0xab3c0572291feb8b",
13502 1
13503 ],
13504 [
13505 "0xbc9d89904f5b923f",
13506 1
13507 ],
13508 [
13509 "0x37c8bb1350a9a2a8",
13510 1
13511 ]
13512 ]
13513 ],
13514 [
13515 199405,
13516 6,
13517 [
13518 [
13519 "0xdf6acb689907609b",
13520 3
13521 ],
13522 [
13523 "0x37e397fc7c91f5e4",
13524 1
13525 ],
13526 [
13527 "0x40fe3ad401f8959a",
13528 4
13529 ],
13530 [
13531 "0xd2bc9897eed08f15",
13532 2
13533 ],
13534 [
13535 "0xf78b278be53f454c",
13536 2
13537 ],
13538 [
13539 "0xaf2c0297a23e6d3d",
13540 3
13541 ],
13542 [
13543 "0xed99c5acb25eedf5",
13544 2
13545 ],
13546 [
13547 "0xcbca25e39f142387",
13548 2
13549 ],
13550 [
13551 "0x687ad44ad37f03c2",
13552 1
13553 ],
13554 [
13555 "0xab3c0572291feb8b",
13556 1
13557 ],
13558 [
13559 "0xbc9d89904f5b923f",
13560 1
13561 ],
13562 [
13563 "0x37c8bb1350a9a2a8",
13564 1
13565 ]
13566 ]
13567 ],
13568 [
13569 214264,
13570 7,
13571 [
13572 [
13573 "0xdf6acb689907609b",
13574 3
13575 ],
13576 [
13577 "0x37e397fc7c91f5e4",
13578 1
13579 ],
13580 [
13581 "0x40fe3ad401f8959a",
13582 4
13583 ],
13584 [
13585 "0xd2bc9897eed08f15",
13586 2
13587 ],
13588 [
13589 "0xf78b278be53f454c",
13590 2
13591 ],
13592 [
13593 "0xaf2c0297a23e6d3d",
13594 3
13595 ],
13596 [
13597 "0xed99c5acb25eedf5",
13598 2
13599 ],
13600 [
13601 "0xcbca25e39f142387",
13602 2
13603 ],
13604 [
13605 "0x687ad44ad37f03c2",
13606 1
13607 ],
13608 [
13609 "0xab3c0572291feb8b",
13610 1
13611 ],
13612 [
13613 "0xbc9d89904f5b923f",
13614 1
13615 ],
13616 [
13617 "0x37c8bb1350a9a2a8",
13618 1
13619 ]
13620 ]
13621 ],
13622 [
13623 244358,
13624 8,
13625 [
13626 [
13627 "0xdf6acb689907609b",
13628 3
13629 ],
13630 [
13631 "0x37e397fc7c91f5e4",
13632 1
13633 ],
13634 [
13635 "0x40fe3ad401f8959a",
13636 4
13637 ],
13638 [
13639 "0xd2bc9897eed08f15",
13640 2
13641 ],
13642 [
13643 "0xf78b278be53f454c",
13644 2
13645 ],
13646 [
13647 "0xaf2c0297a23e6d3d",
13648 3
13649 ],
13650 [
13651 "0xed99c5acb25eedf5",
13652 2
13653 ],
13654 [
13655 "0xcbca25e39f142387",
13656 2
13657 ],
13658 [
13659 "0x687ad44ad37f03c2",
13660 1
13661 ],
13662 [
13663 "0xab3c0572291feb8b",
13664 1
13665 ],
13666 [
13667 "0xbc9d89904f5b923f",
13668 1
13669 ],
13670 [
13671 "0x37c8bb1350a9a2a8",
13672 1
13673 ]
13674 ]
13675 ],
13676 [
13677 303079,
13678 9,
13679 [
13680 [
13681 "0xdf6acb689907609b",
13682 3
13683 ],
13684 [
13685 "0x37e397fc7c91f5e4",
13686 1
13687 ],
13688 [
13689 "0x40fe3ad401f8959a",
13690 4
13691 ],
13692 [
13693 "0xd2bc9897eed08f15",
13694 2
13695 ],
13696 [
13697 "0xf78b278be53f454c",
13698 2
13699 ],
13700 [
13701 "0xaf2c0297a23e6d3d",
13702 3
13703 ],
13704 [
13705 "0xed99c5acb25eedf5",
13706 2
13707 ],
13708 [
13709 "0xcbca25e39f142387",
13710 2
13711 ],
13712 [
13713 "0x687ad44ad37f03c2",
13714 1
13715 ],
13716 [
13717 "0xab3c0572291feb8b",
13718 1
13719 ],
13720 [
13721 "0xbc9d89904f5b923f",
13722 1
13723 ],
13724 [
13725 "0x37c8bb1350a9a2a8",
13726 1
13727 ]
13728 ]
13729 ],
13730 [
13731 314201,
13732 10,
13733 [
13734 [
13735 "0xdf6acb689907609b",
13736 3
13737 ],
13738 [
13739 "0x37e397fc7c91f5e4",
13740 1
13741 ],
13742 [
13743 "0x40fe3ad401f8959a",
13744 4
13745 ],
13746 [
13747 "0xd2bc9897eed08f15",
13748 2
13749 ],
13750 [
13751 "0xf78b278be53f454c",
13752 2
13753 ],
13754 [
13755 "0xaf2c0297a23e6d3d",
13756 3
13757 ],
13758 [
13759 "0xed99c5acb25eedf5",
13760 2
13761 ],
13762 [
13763 "0xcbca25e39f142387",
13764 2
13765 ],
13766 [
13767 "0x687ad44ad37f03c2",
13768 1
13769 ],
13770 [
13771 "0xab3c0572291feb8b",
13772 1
13773 ],
13774 [
13775 "0xbc9d89904f5b923f",
13776 1
13777 ],
13778 [
13779 "0x37c8bb1350a9a2a8",
13780 1
13781 ]
13782 ]
13783 ],
13784 [
13785 342400,
13786 11,
13787 [
13788 [
13789 "0xdf6acb689907609b",
13790 3
13791 ],
13792 [
13793 "0x37e397fc7c91f5e4",
13794 1
13795 ],
13796 [
13797 "0x40fe3ad401f8959a",
13798 4
13799 ],
13800 [
13801 "0xd2bc9897eed08f15",
13802 2
13803 ],
13804 [
13805 "0xf78b278be53f454c",
13806 2
13807 ],
13808 [
13809 "0xaf2c0297a23e6d3d",
13810 3
13811 ],
13812 [
13813 "0xed99c5acb25eedf5",
13814 2
13815 ],
13816 [
13817 "0xcbca25e39f142387",
13818 2
13819 ],
13820 [
13821 "0x687ad44ad37f03c2",
13822 1
13823 ],
13824 [
13825 "0xab3c0572291feb8b",
13826 1
13827 ],
13828 [
13829 "0xbc9d89904f5b923f",
13830 1
13831 ],
13832 [
13833 "0x37c8bb1350a9a2a8",
13834 1
13835 ]
13836 ]
13837 ],
13838 [
13839 443963,
13840 12,
13841 [
13842 [
13843 "0xdf6acb689907609b",
13844 3
13845 ],
13846 [
13847 "0x37e397fc7c91f5e4",
13848 1
13849 ],
13850 [
13851 "0x40fe3ad401f8959a",
13852 4
13853 ],
13854 [
13855 "0xd2bc9897eed08f15",
13856 2
13857 ],
13858 [
13859 "0xf78b278be53f454c",
13860 2
13861 ],
13862 [
13863 "0xaf2c0297a23e6d3d",
13864 3
13865 ],
13866 [
13867 "0xed99c5acb25eedf5",
13868 2
13869 ],
13870 [
13871 "0xcbca25e39f142387",
13872 2
13873 ],
13874 [
13875 "0x687ad44ad37f03c2",
13876 1
13877 ],
13878 [
13879 "0xab3c0572291feb8b",
13880 1
13881 ],
13882 [
13883 "0xbc9d89904f5b923f",
13884 1
13885 ],
13886 [
13887 "0x37c8bb1350a9a2a8",
13888 1
13889 ]
13890 ]
13891 ],
13892 [
13893 528470,
13894 13,
13895 [
13896 [
13897 "0xdf6acb689907609b",
13898 3
13899 ],
13900 [
13901 "0x37e397fc7c91f5e4",
13902 1
13903 ],
13904 [
13905 "0x40fe3ad401f8959a",
13906 4
13907 ],
13908 [
13909 "0xd2bc9897eed08f15",
13910 2
13911 ],
13912 [
13913 "0xf78b278be53f454c",
13914 2
13915 ],
13916 [
13917 "0xaf2c0297a23e6d3d",
13918 3
13919 ],
13920 [
13921 "0xed99c5acb25eedf5",
13922 2
13923 ],
13924 [
13925 "0xcbca25e39f142387",
13926 2
13927 ],
13928 [
13929 "0x687ad44ad37f03c2",
13930 1
13931 ],
13932 [
13933 "0xab3c0572291feb8b",
13934 1
13935 ],
13936 [
13937 "0xbc9d89904f5b923f",
13938 1
13939 ],
13940 [
13941 "0x37c8bb1350a9a2a8",
13942 1
13943 ]
13944 ]
13945 ],
13946 [
13947 687751,
13948 14,
13949 [
13950 [
13951 "0xdf6acb689907609b",
13952 3
13953 ],
13954 [
13955 "0x37e397fc7c91f5e4",
13956 1
13957 ],
13958 [
13959 "0x40fe3ad401f8959a",
13960 4
13961 ],
13962 [
13963 "0xd2bc9897eed08f15",
13964 2
13965 ],
13966 [
13967 "0xf78b278be53f454c",
13968 2
13969 ],
13970 [
13971 "0xaf2c0297a23e6d3d",
13972 3
13973 ],
13974 [
13975 "0xed99c5acb25eedf5",
13976 2
13977 ],
13978 [
13979 "0xcbca25e39f142387",
13980 2
13981 ],
13982 [
13983 "0x687ad44ad37f03c2",
13984 1
13985 ],
13986 [
13987 "0xab3c0572291feb8b",
13988 1
13989 ],
13990 [
13991 "0xbc9d89904f5b923f",
13992 1
13993 ],
13994 [
13995 "0x37c8bb1350a9a2a8",
13996 1
13997 ]
13998 ]
13999 ],
14000 [
14001 746085,
14002 15,
14003 [
14004 [
14005 "0xdf6acb689907609b",
14006 3
14007 ],
14008 [
14009 "0x37e397fc7c91f5e4",
14010 1
14011 ],
14012 [
14013 "0x40fe3ad401f8959a",
14014 4
14015 ],
14016 [
14017 "0xd2bc9897eed08f15",
14018 2
14019 ],
14020 [
14021 "0xf78b278be53f454c",
14022 2
14023 ],
14024 [
14025 "0xaf2c0297a23e6d3d",
14026 3
14027 ],
14028 [
14029 "0xed99c5acb25eedf5",
14030 2
14031 ],
14032 [
14033 "0xcbca25e39f142387",
14034 2
14035 ],
14036 [
14037 "0x687ad44ad37f03c2",
14038 1
14039 ],
14040 [
14041 "0xab3c0572291feb8b",
14042 1
14043 ],
14044 [
14045 "0xbc9d89904f5b923f",
14046 1
14047 ],
14048 [
14049 "0x37c8bb1350a9a2a8",
14050 1
14051 ]
14052 ]
14053 ],
14054 [
14055 787923,
14056 16,
14057 [
14058 [
14059 "0xdf6acb689907609b",
14060 3
14061 ],
14062 [
14063 "0x37e397fc7c91f5e4",
14064 1
14065 ],
14066 [
14067 "0x40fe3ad401f8959a",
14068 4
14069 ],
14070 [
14071 "0xd2bc9897eed08f15",
14072 2
14073 ],
14074 [
14075 "0xf78b278be53f454c",
14076 2
14077 ],
14078 [
14079 "0xaf2c0297a23e6d3d",
14080 3
14081 ],
14082 [
14083 "0xed99c5acb25eedf5",
14084 2
14085 ],
14086 [
14087 "0xcbca25e39f142387",
14088 2
14089 ],
14090 [
14091 "0x687ad44ad37f03c2",
14092 1
14093 ],
14094 [
14095 "0xab3c0572291feb8b",
14096 1
14097 ],
14098 [
14099 "0xbc9d89904f5b923f",
14100 1
14101 ],
14102 [
14103 "0x37c8bb1350a9a2a8",
14104 1
14105 ]
14106 ]
14107 ],
14108 [
14109 799302,
14110 17,
14111 [
14112 [
14113 "0xdf6acb689907609b",
14114 3
14115 ],
14116 [
14117 "0x37e397fc7c91f5e4",
14118 1
14119 ],
14120 [
14121 "0x40fe3ad401f8959a",
14122 4
14123 ],
14124 [
14125 "0xd2bc9897eed08f15",
14126 2
14127 ],
14128 [
14129 "0xf78b278be53f454c",
14130 2
14131 ],
14132 [
14133 "0xaf2c0297a23e6d3d",
14134 3
14135 ],
14136 [
14137 "0xed99c5acb25eedf5",
14138 2
14139 ],
14140 [
14141 "0xcbca25e39f142387",
14142 2
14143 ],
14144 [
14145 "0x687ad44ad37f03c2",
14146 1
14147 ],
14148 [
14149 "0xab3c0572291feb8b",
14150 1
14151 ],
14152 [
14153 "0xbc9d89904f5b923f",
14154 1
14155 ],
14156 [
14157 "0x37c8bb1350a9a2a8",
14158 1
14159 ]
14160 ]
14161 ],
14162 [
14163 1205128,
14164 18,
14165 [
14166 [
14167 "0xdf6acb689907609b",
14168 3
14169 ],
14170 [
14171 "0x37e397fc7c91f5e4",
14172 1
14173 ],
14174 [
14175 "0x40fe3ad401f8959a",
14176 4
14177 ],
14178 [
14179 "0xd2bc9897eed08f15",
14180 2
14181 ],
14182 [
14183 "0xf78b278be53f454c",
14184 2
14185 ],
14186 [
14187 "0xaf2c0297a23e6d3d",
14188 3
14189 ],
14190 [
14191 "0xed99c5acb25eedf5",
14192 2
14193 ],
14194 [
14195 "0xcbca25e39f142387",
14196 2
14197 ],
14198 [
14199 "0x687ad44ad37f03c2",
14200 1
14201 ],
14202 [
14203 "0xab3c0572291feb8b",
14204 1
14205 ],
14206 [
14207 "0xbc9d89904f5b923f",
14208 1
14209 ],
14210 [
14211 "0x37c8bb1350a9a2a8",
14212 1
14213 ]
14214 ]
14215 ],
14216 [
14217 1603423,
14218 23,
14219 [
14220 [
14221 "0xdf6acb689907609b",
14222 3
14223 ],
14224 [
14225 "0x37e397fc7c91f5e4",
14226 1
14227 ],
14228 [
14229 "0x40fe3ad401f8959a",
14230 4
14231 ],
14232 [
14233 "0xd2bc9897eed08f15",
14234 2
14235 ],
14236 [
14237 "0xf78b278be53f454c",
14238 2
14239 ],
14240 [
14241 "0xaf2c0297a23e6d3d",
14242 3
14243 ],
14244 [
14245 "0xed99c5acb25eedf5",
14246 2
14247 ],
14248 [
14249 "0xcbca25e39f142387",
14250 2
14251 ],
14252 [
14253 "0x687ad44ad37f03c2",
14254 1
14255 ],
14256 [
14257 "0xab3c0572291feb8b",
14258 1
14259 ],
14260 [
14261 "0xbc9d89904f5b923f",
14262 1
14263 ],
14264 [
14265 "0x37c8bb1350a9a2a8",
14266 1
14267 ]
14268 ]
14269 ],
14270 [
14271 1733218,
14272 24,
14273 [
14274 [
14275 "0xdf6acb689907609b",
14276 3
14277 ],
14278 [
14279 "0x37e397fc7c91f5e4",
14280 1
14281 ],
14282 [
14283 "0x40fe3ad401f8959a",
14284 4
14285 ],
14286 [
14287 "0xd2bc9897eed08f15",
14288 2
14289 ],
14290 [
14291 "0xf78b278be53f454c",
14292 2
14293 ],
14294 [
14295 "0xaf2c0297a23e6d3d",
14296 3
14297 ],
14298 [
14299 "0xed99c5acb25eedf5",
14300 2
14301 ],
14302 [
14303 "0xcbca25e39f142387",
14304 2
14305 ],
14306 [
14307 "0x687ad44ad37f03c2",
14308 1
14309 ],
14310 [
14311 "0xab3c0572291feb8b",
14312 1
14313 ],
14314 [
14315 "0xbc9d89904f5b923f",
14316 1
14317 ],
14318 [
14319 "0x37c8bb1350a9a2a8",
14320 1
14321 ]
14322 ]
14323 ],
14324 [
14325 2005673,
14326 25,
14327 [
14328 [
14329 "0xdf6acb689907609b",
14330 3
14331 ],
14332 [
14333 "0x37e397fc7c91f5e4",
14334 1
14335 ],
14336 [
14337 "0x40fe3ad401f8959a",
14338 4
14339 ],
14340 [
14341 "0xd2bc9897eed08f15",
14342 2
14343 ],
14344 [
14345 "0xf78b278be53f454c",
14346 2
14347 ],
14348 [
14349 "0xaf2c0297a23e6d3d",
14350 1
14351 ],
14352 [
14353 "0xed99c5acb25eedf5",
14354 2
14355 ],
14356 [
14357 "0xcbca25e39f142387",
14358 2
14359 ],
14360 [
14361 "0x687ad44ad37f03c2",
14362 1
14363 ],
14364 [
14365 "0xab3c0572291feb8b",
14366 1
14367 ],
14368 [
14369 "0xbc9d89904f5b923f",
14370 1
14371 ],
14372 [
14373 "0x37c8bb1350a9a2a8",
14374 1
14375 ]
14376 ]
14377 ],
14378 [
14379 2436698,
14380 26,
14381 [
14382 [
14383 "0xdf6acb689907609b",
14384 3
14385 ],
14386 [
14387 "0x37e397fc7c91f5e4",
14388 1
14389 ],
14390 [
14391 "0x40fe3ad401f8959a",
14392 4
14393 ],
14394 [
14395 "0xd2bc9897eed08f15",
14396 2
14397 ],
14398 [
14399 "0xf78b278be53f454c",
14400 2
14401 ],
14402 [
14403 "0xaf2c0297a23e6d3d",
14404 1
14405 ],
14406 [
14407 "0xed99c5acb25eedf5",
14408 2
14409 ],
14410 [
14411 "0xcbca25e39f142387",
14412 2
14413 ],
14414 [
14415 "0x687ad44ad37f03c2",
14416 1
14417 ],
14418 [
14419 "0xab3c0572291feb8b",
14420 1
14421 ],
14422 [
14423 "0xbc9d89904f5b923f",
14424 1
14425 ],
14426 [
14427 "0x37c8bb1350a9a2a8",
14428 1
14429 ]
14430 ]
14431 ],
14432 [
14433 3613564,
14434 27,
14435 [
14436 [
14437 "0xdf6acb689907609b",
14438 3
14439 ],
14440 [
14441 "0x37e397fc7c91f5e4",
14442 1
14443 ],
14444 [
14445 "0x40fe3ad401f8959a",
14446 4
14447 ],
14448 [
14449 "0xd2bc9897eed08f15",
14450 2
14451 ],
14452 [
14453 "0xf78b278be53f454c",
14454 2
14455 ],
14456 [
14457 "0xaf2c0297a23e6d3d",
14458 1
14459 ],
14460 [
14461 "0xed99c5acb25eedf5",
14462 2
14463 ],
14464 [
14465 "0xcbca25e39f142387",
14466 2
14467 ],
14468 [
14469 "0x687ad44ad37f03c2",
14470 1
14471 ],
14472 [
14473 "0xab3c0572291feb8b",
14474 1
14475 ],
14476 [
14477 "0xbc9d89904f5b923f",
14478 1
14479 ],
14480 [
14481 "0x37c8bb1350a9a2a8",
14482 1
14483 ]
14484 ]
14485 ],
14486 [
14487 3899547,
14488 28,
14489 [
14490 [
14491 "0xdf6acb689907609b",
14492 3
14493 ],
14494 [
14495 "0x37e397fc7c91f5e4",
14496 1
14497 ],
14498 [
14499 "0x40fe3ad401f8959a",
14500 4
14501 ],
14502 [
14503 "0xd2bc9897eed08f15",
14504 2
14505 ],
14506 [
14507 "0xf78b278be53f454c",
14508 2
14509 ],
14510 [
14511 "0xaf2c0297a23e6d3d",
14512 1
14513 ],
14514 [
14515 "0xed99c5acb25eedf5",
14516 2
14517 ],
14518 [
14519 "0xcbca25e39f142387",
14520 2
14521 ],
14522 [
14523 "0x687ad44ad37f03c2",
14524 1
14525 ],
14526 [
14527 "0xab3c0572291feb8b",
14528 1
14529 ],
14530 [
14531 "0xbc9d89904f5b923f",
14532 1
14533 ],
14534 [
14535 "0x37c8bb1350a9a2a8",
14536 1
14537 ]
14538 ]
14539 ],
14540 [
14541 4345767,
14542 29,
14543 [
14544 [
14545 "0xdf6acb689907609b",
14546 3
14547 ],
14548 [
14549 "0x37e397fc7c91f5e4",
14550 1
14551 ],
14552 [
14553 "0x40fe3ad401f8959a",
14554 4
14555 ],
14556 [
14557 "0xd2bc9897eed08f15",
14558 2
14559 ],
14560 [
14561 "0xf78b278be53f454c",
14562 2
14563 ],
14564 [
14565 "0xaf2c0297a23e6d3d",
14566 1
14567 ],
14568 [
14569 "0xed99c5acb25eedf5",
14570 2
14571 ],
14572 [
14573 "0xcbca25e39f142387",
14574 2
14575 ],
14576 [
14577 "0x687ad44ad37f03c2",
14578 1
14579 ],
14580 [
14581 "0xab3c0572291feb8b",
14582 1
14583 ],
14584 [
14585 "0xbc9d89904f5b923f",
14586 1
14587 ],
14588 [
14589 "0x37c8bb1350a9a2a8",
14590 1
14591 ]
14592 ]
14593 ],
14594 [
14595 4876134,
14596 30,
14597 [
14598 [
14599 "0xdf6acb689907609b",
14600 3
14601 ],
14602 [
14603 "0x37e397fc7c91f5e4",
14604 1
14605 ],
14606 [
14607 "0x40fe3ad401f8959a",
14608 4
14609 ],
14610 [
14611 "0xd2bc9897eed08f15",
14612 2
14613 ],
14614 [
14615 "0xf78b278be53f454c",
14616 2
14617 ],
14618 [
14619 "0xaf2c0297a23e6d3d",
14620 1
14621 ],
14622 [
14623 "0xed99c5acb25eedf5",
14624 2
14625 ],
14626 [
14627 "0xcbca25e39f142387",
14628 2
14629 ],
14630 [
14631 "0x687ad44ad37f03c2",
14632 1
14633 ],
14634 [
14635 "0xab3c0572291feb8b",
14636 1
14637 ],
14638 [
14639 "0xbc9d89904f5b923f",
14640 1
14641 ],
14642 [
14643 "0x37c8bb1350a9a2a8",
14644 1
14645 ]
14646 ]
14647 ],
14648 [
14649 5661442,
14650 9050,
14651 [
14652 [
14653 "0xdf6acb689907609b",
14654 3
14655 ],
14656 [
14657 "0x37e397fc7c91f5e4",
14658 1
14659 ],
14660 [
14661 "0x40fe3ad401f8959a",
14662 5
14663 ],
14664 [
14665 "0xd2bc9897eed08f15",
14666 2
14667 ],
14668 [
14669 "0xf78b278be53f454c",
14670 2
14671 ],
14672 [
14673 "0xaf2c0297a23e6d3d",
14674 1
14675 ],
14676 [
14677 "0x49eaaf1b548a0cb0",
14678 1
14679 ],
14680 [
14681 "0x91d5df18b0d2cf58",
14682 1
14683 ],
14684 [
14685 "0xed99c5acb25eedf5",
14686 2
14687 ],
14688 [
14689 "0xcbca25e39f142387",
14690 2
14691 ],
14692 [
14693 "0x687ad44ad37f03c2",
14694 1
14695 ],
14696 [
14697 "0xab3c0572291feb8b",
14698 1
14699 ],
14700 [
14701 "0xbc9d89904f5b923f",
14702 1
14703 ],
14704 [
14705 "0x37c8bb1350a9a2a8",
14706 1
14707 ]
14708 ]
14709 ],
14710 [
14711 6321619,
14712 9080,
14713 [
14714 [
14715 "0xdf6acb689907609b",
14716 3
14717 ],
14718 [
14719 "0x37e397fc7c91f5e4",
14720 1
14721 ],
14722 [
14723 "0x40fe3ad401f8959a",
14724 5
14725 ],
14726 [
14727 "0xd2bc9897eed08f15",
14728 3
14729 ],
14730 [
14731 "0xf78b278be53f454c",
14732 2
14733 ],
14734 [
14735 "0xaf2c0297a23e6d3d",
14736 1
14737 ],
14738 [
14739 "0x49eaaf1b548a0cb0",
14740 1
14741 ],
14742 [
14743 "0x91d5df18b0d2cf58",
14744 1
14745 ],
14746 [
14747 "0xed99c5acb25eedf5",
14748 2
14749 ],
14750 [
14751 "0xcbca25e39f142387",
14752 2
14753 ],
14754 [
14755 "0x687ad44ad37f03c2",
14756 1
14757 ],
14758 [
14759 "0xab3c0572291feb8b",
14760 1
14761 ],
14762 [
14763 "0xbc9d89904f5b923f",
14764 1
14765 ],
14766 [
14767 "0x37c8bb1350a9a2a8",
14768 1
14769 ]
14770 ]
14771 ],
14772 [
14773 6713249,
14774 9090,
14775 [
14776 [
14777 "0xdf6acb689907609b",
14778 3
14779 ],
14780 [
14781 "0x37e397fc7c91f5e4",
14782 1
14783 ],
14784 [
14785 "0x40fe3ad401f8959a",
14786 5
14787 ],
14788 [
14789 "0xd2bc9897eed08f15",
14790 3
14791 ],
14792 [
14793 "0xf78b278be53f454c",
14794 2
14795 ],
14796 [
14797 "0xaf2c0297a23e6d3d",
14798 1
14799 ],
14800 [
14801 "0x49eaaf1b548a0cb0",
14802 1
14803 ],
14804 [
14805 "0x91d5df18b0d2cf58",
14806 1
14807 ],
14808 [
14809 "0xed99c5acb25eedf5",
14810 3
14811 ],
14812 [
14813 "0xcbca25e39f142387",
14814 2
14815 ],
14816 [
14817 "0x687ad44ad37f03c2",
14818 1
14819 ],
14820 [
14821 "0xab3c0572291feb8b",
14822 1
14823 ],
14824 [
14825 "0xbc9d89904f5b923f",
14826 1
14827 ],
14828 [
14829 "0x37c8bb1350a9a2a8",
14830 1
14831 ]
14832 ]
14833 ],
14834 [
14835 7217907,
14836 9100,
14837 [
14838 [
14839 "0xdf6acb689907609b",
14840 3
14841 ],
14842 [
14843 "0x37e397fc7c91f5e4",
14844 1
14845 ],
14846 [
14847 "0x40fe3ad401f8959a",
14848 5
14849 ],
14850 [
14851 "0xd2bc9897eed08f15",
14852 3
14853 ],
14854 [
14855 "0xf78b278be53f454c",
14856 2
14857 ],
14858 [
14859 "0xaf2c0297a23e6d3d",
14860 1
14861 ],
14862 [
14863 "0x49eaaf1b548a0cb0",
14864 1
14865 ],
14866 [
14867 "0x91d5df18b0d2cf58",
14868 1
14869 ],
14870 [
14871 "0xed99c5acb25eedf5",
14872 3
14873 ],
14874 [
14875 "0xcbca25e39f142387",
14876 2
14877 ],
14878 [
14879 "0x687ad44ad37f03c2",
14880 1
14881 ],
14882 [
14883 "0xab3c0572291feb8b",
14884 1
14885 ],
14886 [
14887 "0xbc9d89904f5b923f",
14888 1
14889 ],
14890 [
14891 "0x37c8bb1350a9a2a8",
14892 1
14893 ]
14894 ]
14895 ],
14896 [
14897 7229126,
14898 9110,
14899 [
14900 [
14901 "0xdf6acb689907609b",
14902 3
14903 ],
14904 [
14905 "0x37e397fc7c91f5e4",
14906 1
14907 ],
14908 [
14909 "0x40fe3ad401f8959a",
14910 5
14911 ],
14912 [
14913 "0xd2bc9897eed08f15",
14914 3
14915 ],
14916 [
14917 "0xf78b278be53f454c",
14918 2
14919 ],
14920 [
14921 "0xaf2c0297a23e6d3d",
14922 1
14923 ],
14924 [
14925 "0x49eaaf1b548a0cb0",
14926 1
14927 ],
14928 [
14929 "0x91d5df18b0d2cf58",
14930 1
14931 ],
14932 [
14933 "0xed99c5acb25eedf5",
14934 3
14935 ],
14936 [
14937 "0xcbca25e39f142387",
14938 2
14939 ],
14940 [
14941 "0x687ad44ad37f03c2",
14942 1
14943 ],
14944 [
14945 "0xab3c0572291feb8b",
14946 1
14947 ],
14948 [
14949 "0xbc9d89904f5b923f",
14950 1
14951 ],
14952 [
14953 "0x37c8bb1350a9a2a8",
14954 1
14955 ]
14956 ]
14957 ],
14958 [
14959 7560558,
14960 9122,
14961 [
14962 [
14963 "0xdf6acb689907609b",
14964 3
14965 ],
14966 [
14967 "0x37e397fc7c91f5e4",
14968 1
14969 ],
14970 [
14971 "0x40fe3ad401f8959a",
14972 5
14973 ],
14974 [
14975 "0xd2bc9897eed08f15",
14976 3
14977 ],
14978 [
14979 "0xf78b278be53f454c",
14980 2
14981 ],
14982 [
14983 "0xaf2c0297a23e6d3d",
14984 1
14985 ],
14986 [
14987 "0x49eaaf1b548a0cb0",
14988 1
14989 ],
14990 [
14991 "0x91d5df18b0d2cf58",
14992 1
14993 ],
14994 [
14995 "0xed99c5acb25eedf5",
14996 3
14997 ],
14998 [
14999 "0xcbca25e39f142387",
15000 2
15001 ],
15002 [
15003 "0x687ad44ad37f03c2",
15004 1
15005 ],
15006 [
15007 "0xab3c0572291feb8b",
15008 1
15009 ],
15010 [
15011 "0xbc9d89904f5b923f",
15012 1
15013 ],
15014 [
15015 "0x37c8bb1350a9a2a8",
15016 1
15017 ]
15018 ]
15019 ],
15020 [
15021 8115869,
15022 9140,
15023 [
15024 [
15025 "0xdf6acb689907609b",
15026 3
15027 ],
15028 [
15029 "0x37e397fc7c91f5e4",
15030 1
15031 ],
15032 [
15033 "0x40fe3ad401f8959a",
15034 5
15035 ],
15036 [
15037 "0xd2bc9897eed08f15",
15038 3
15039 ],
15040 [
15041 "0xf78b278be53f454c",
15042 2
15043 ],
15044 [
15045 "0xaf2c0297a23e6d3d",
15046 1
15047 ],
15048 [
15049 "0x49eaaf1b548a0cb0",
15050 1
15051 ],
15052 [
15053 "0x91d5df18b0d2cf58",
15054 1
15055 ],
15056 [
15057 "0xed99c5acb25eedf5",
15058 3
15059 ],
15060 [
15061 "0xcbca25e39f142387",
15062 2
15063 ],
15064 [
15065 "0x687ad44ad37f03c2",
15066 1
15067 ],
15068 [
15069 "0xab3c0572291feb8b",
15070 1
15071 ],
15072 [
15073 "0xbc9d89904f5b923f",
15074 1
15075 ],
15076 [
15077 "0x37c8bb1350a9a2a8",
15078 1
15079 ]
15080 ]
15081 ],
15082 [
15083 8638103,
15084 9151,
15085 [
15086 [
15087 "0xdf6acb689907609b",
15088 3
15089 ],
15090 [
15091 "0x37e397fc7c91f5e4",
15092 1
15093 ],
15094 [
15095 "0x40fe3ad401f8959a",
15096 5
15097 ],
15098 [
15099 "0xd2bc9897eed08f15",
15100 3
15101 ],
15102 [
15103 "0xf78b278be53f454c",
15104 2
15105 ],
15106 [
15107 "0xaf2c0297a23e6d3d",
15108 1
15109 ],
15110 [
15111 "0x49eaaf1b548a0cb0",
15112 1
15113 ],
15114 [
15115 "0x91d5df18b0d2cf58",
15116 1
15117 ],
15118 [
15119 "0xed99c5acb25eedf5",
15120 3
15121 ],
15122 [
15123 "0xcbca25e39f142387",
15124 2
15125 ],
15126 [
15127 "0x687ad44ad37f03c2",
15128 1
15129 ],
15130 [
15131 "0xab3c0572291feb8b",
15132 1
15133 ],
15134 [
15135 "0xbc9d89904f5b923f",
15136 1
15137 ],
15138 [
15139 "0x37c8bb1350a9a2a8",
15140 1
15141 ]
15142 ]
15143 ],
15144 [
15145 9280179,
15146 9170,
15147 [
15148 [
15149 "0xdf6acb689907609b",
15150 4
15151 ],
15152 [
15153 "0x37e397fc7c91f5e4",
15154 1
15155 ],
15156 [
15157 "0x40fe3ad401f8959a",
15158 5
15159 ],
15160 [
15161 "0xd2bc9897eed08f15",
15162 3
15163 ],
15164 [
15165 "0xf78b278be53f454c",
15166 2
15167 ],
15168 [
15169 "0xaf2c0297a23e6d3d",
15170 2
15171 ],
15172 [
15173 "0x49eaaf1b548a0cb0",
15174 1
15175 ],
15176 [
15177 "0x91d5df18b0d2cf58",
15178 1
15179 ],
15180 [
15181 "0xed99c5acb25eedf5",
15182 3
15183 ],
15184 [
15185 "0xcbca25e39f142387",
15186 2
15187 ],
15188 [
15189 "0x687ad44ad37f03c2",
15190 1
15191 ],
15192 [
15193 "0xab3c0572291feb8b",
15194 1
15195 ],
15196 [
15197 "0xbc9d89904f5b923f",
15198 1
15199 ],
15200 [
15201 "0x37c8bb1350a9a2a8",
15202 1
15203 ]
15204 ]
15205 ],
15206 [
15207 9738717,
15208 9180,
15209 [
15210 [
15211 "0xdf6acb689907609b",
15212 4
15213 ],
15214 [
15215 "0x37e397fc7c91f5e4",
15216 1
15217 ],
15218 [
15219 "0x40fe3ad401f8959a",
15220 5
15221 ],
15222 [
15223 "0xd2bc9897eed08f15",
15224 3
15225 ],
15226 [
15227 "0xf78b278be53f454c",
15228 2
15229 ],
15230 [
15231 "0xaf2c0297a23e6d3d",
15232 2
15233 ],
15234 [
15235 "0x49eaaf1b548a0cb0",
15236 1
15237 ],
15238 [
15239 "0x91d5df18b0d2cf58",
15240 1
15241 ],
15242 [
15243 "0xed99c5acb25eedf5",
15244 3
15245 ],
15246 [
15247 "0xcbca25e39f142387",
15248 2
15249 ],
15250 [
15251 "0x687ad44ad37f03c2",
15252 1
15253 ],
15254 [
15255 "0xab3c0572291feb8b",
15256 1
15257 ],
15258 [
15259 "0xbc9d89904f5b923f",
15260 1
15261 ],
15262 [
15263 "0x37c8bb1350a9a2a8",
15264 1
15265 ]
15266 ]
15267 ],
15268 [
15269 10156856,
15270 9190,
15271 [
15272 [
15273 "0xdf6acb689907609b",
15274 4
15275 ],
15276 [
15277 "0x37e397fc7c91f5e4",
15278 1
15279 ],
15280 [
15281 "0x40fe3ad401f8959a",
15282 6
15283 ],
15284 [
15285 "0xd2bc9897eed08f15",
15286 3
15287 ],
15288 [
15289 "0xf78b278be53f454c",
15290 2
15291 ],
15292 [
15293 "0xaf2c0297a23e6d3d",
15294 2
15295 ],
15296 [
15297 "0x49eaaf1b548a0cb0",
15298 1
15299 ],
15300 [
15301 "0x91d5df18b0d2cf58",
15302 1
15303 ],
15304 [
15305 "0xed99c5acb25eedf5",
15306 3
15307 ],
15308 [
15309 "0xcbca25e39f142387",
15310 2
15311 ],
15312 [
15313 "0x687ad44ad37f03c2",
15314 1
15315 ],
15316 [
15317 "0xab3c0572291feb8b",
15318 1
15319 ],
15320 [
15321 "0xbc9d89904f5b923f",
15322 1
15323 ],
15324 [
15325 "0x37c8bb1350a9a2a8",
15326 1
15327 ]
15328 ]
15329 ],
15330 [
15331 10458576,
15332 9200,
15333 [
15334 [
15335 "0xdf6acb689907609b",
15336 4
15337 ],
15338 [
15339 "0x37e397fc7c91f5e4",
15340 1
15341 ],
15342 [
15343 "0x40fe3ad401f8959a",
15344 6
15345 ],
15346 [
15347 "0xd2bc9897eed08f15",
15348 3
15349 ],
15350 [
15351 "0xf78b278be53f454c",
15352 2
15353 ],
15354 [
15355 "0xaf2c0297a23e6d3d",
15356 2
15357 ],
15358 [
15359 "0x49eaaf1b548a0cb0",
15360 1
15361 ],
15362 [
15363 "0x91d5df18b0d2cf58",
15364 1
15365 ],
15366 [
15367 "0xed99c5acb25eedf5",
15368 3
15369 ],
15370 [
15371 "0xcbca25e39f142387",
15372 2
15373 ],
15374 [
15375 "0x687ad44ad37f03c2",
15376 1
15377 ],
15378 [
15379 "0xab3c0572291feb8b",
15380 1
15381 ],
15382 [
15383 "0xbc9d89904f5b923f",
15384 1
15385 ],
15386 [
15387 "0x37c8bb1350a9a2a8",
15388 1
15389 ]
15390 ]
15391 ],
15392 [
15393 10655116,
15394 9220,
15395 [
15396 [
15397 "0xdf6acb689907609b",
15398 4
15399 ],
15400 [
15401 "0x37e397fc7c91f5e4",
15402 1
15403 ],
15404 [
15405 "0x40fe3ad401f8959a",
15406 6
15407 ],
15408 [
15409 "0xd2bc9897eed08f15",
15410 3
15411 ],
15412 [
15413 "0xf78b278be53f454c",
15414 2
15415 ],
15416 [
15417 "0xaf2c0297a23e6d3d",
15418 2
15419 ],
15420 [
15421 "0x49eaaf1b548a0cb0",
15422 1
15423 ],
15424 [
15425 "0x91d5df18b0d2cf58",
15426 1
15427 ],
15428 [
15429 "0xed99c5acb25eedf5",
15430 3
15431 ],
15432 [
15433 "0xcbca25e39f142387",
15434 2
15435 ],
15436 [
15437 "0x687ad44ad37f03c2",
15438 1
15439 ],
15440 [
15441 "0xab3c0572291feb8b",
15442 1
15443 ],
15444 [
15445 "0xbc9d89904f5b923f",
15446 1
15447 ],
15448 [
15449 "0x37c8bb1350a9a2a8",
15450 1
15451 ]
15452 ]
15453 ],
15454 [
15455 10879371,
15456 9230,
15457 [
15458 [
15459 "0xdf6acb689907609b",
15460 4
15461 ],
15462 [
15463 "0x37e397fc7c91f5e4",
15464 1
15465 ],
15466 [
15467 "0x40fe3ad401f8959a",
15468 6
15469 ],
15470 [
15471 "0xd2bc9897eed08f15",
15472 3
15473 ],
15474 [
15475 "0xf78b278be53f454c",
15476 2
15477 ],
15478 [
15479 "0xaf2c0297a23e6d3d",
15480 2
15481 ],
15482 [
15483 "0x49eaaf1b548a0cb0",
15484 1
15485 ],
15486 [
15487 "0x91d5df18b0d2cf58",
15488 1
15489 ],
15490 [
15491 "0xed99c5acb25eedf5",
15492 3
15493 ],
15494 [
15495 "0xcbca25e39f142387",
15496 2
15497 ],
15498 [
15499 "0x687ad44ad37f03c2",
15500 1
15501 ],
15502 [
15503 "0xab3c0572291feb8b",
15504 1
15505 ],
15506 [
15507 "0xbc9d89904f5b923f",
15508 1
15509 ],
15510 [
15511 "0x37c8bb1350a9a2a8",
15512 1
15513 ]
15514 ]
15515 ],
15516 [
15517 11328884,
15518 9250,
15519 [
15520 [
15521 "0xdf6acb689907609b",
15522 4
15523 ],
15524 [
15525 "0x37e397fc7c91f5e4",
15526 1
15527 ],
15528 [
15529 "0x40fe3ad401f8959a",
15530 6
15531 ],
15532 [
15533 "0xd2bc9897eed08f15",
15534 3
15535 ],
15536 [
15537 "0xf78b278be53f454c",
15538 2
15539 ],
15540 [
15541 "0xaf2c0297a23e6d3d",
15542 2
15543 ],
15544 [
15545 "0x49eaaf1b548a0cb0",
15546 1
15547 ],
15548 [
15549 "0x91d5df18b0d2cf58",
15550 1
15551 ],
15552 [
15553 "0xed99c5acb25eedf5",
15554 3
15555 ],
15556 [
15557 "0xcbca25e39f142387",
15558 2
15559 ],
15560 [
15561 "0x687ad44ad37f03c2",
15562 1
15563 ],
15564 [
15565 "0xab3c0572291feb8b",
15566 1
15567 ],
15568 [
15569 "0xbc9d89904f5b923f",
15570 1
15571 ],
15572 [
15573 "0x37c8bb1350a9a2a8",
15574 1
15575 ]
15576 ]
15577 ],
15578 [
15579 11532856,
15580 9260,
15581 [
15582 [
15583 "0xdf6acb689907609b",
15584 4
15585 ],
15586 [
15587 "0x37e397fc7c91f5e4",
15588 1
15589 ],
15590 [
15591 "0x40fe3ad401f8959a",
15592 6
15593 ],
15594 [
15595 "0xd2bc9897eed08f15",
15596 3
15597 ],
15598 [
15599 "0xf78b278be53f454c",
15600 2
15601 ],
15602 [
15603 "0xaf2c0297a23e6d3d",
15604 2
15605 ],
15606 [
15607 "0x49eaaf1b548a0cb0",
15608 1
15609 ],
15610 [
15611 "0x91d5df18b0d2cf58",
15612 1
15613 ],
15614 [
15615 "0xed99c5acb25eedf5",
15616 3
15617 ],
15618 [
15619 "0xcbca25e39f142387",
15620 2
15621 ],
15622 [
15623 "0x687ad44ad37f03c2",
15624 1
15625 ],
15626 [
15627 "0xab3c0572291feb8b",
15628 1
15629 ],
15630 [
15631 "0xbc9d89904f5b923f",
15632 1
15633 ],
15634 [
15635 "0x37c8bb1350a9a2a8",
15636 1
15637 ]
15638 ]
15639 ],
15640 [
15641 11933818,
15642 9270,
15643 [
15644 [
15645 "0xdf6acb689907609b",
15646 4
15647 ],
15648 [
15649 "0x37e397fc7c91f5e4",
15650 1
15651 ],
15652 [
15653 "0x40fe3ad401f8959a",
15654 6
15655 ],
15656 [
15657 "0xd2bc9897eed08f15",
15658 3
15659 ],
15660 [
15661 "0xf78b278be53f454c",
15662 2
15663 ],
15664 [
15665 "0xaf2c0297a23e6d3d",
15666 2
15667 ],
15668 [
15669 "0x49eaaf1b548a0cb0",
15670 1
15671 ],
15672 [
15673 "0x91d5df18b0d2cf58",
15674 1
15675 ],
15676 [
15677 "0xed99c5acb25eedf5",
15678 3
15679 ],
15680 [
15681 "0xcbca25e39f142387",
15682 2
15683 ],
15684 [
15685 "0x687ad44ad37f03c2",
15686 1
15687 ],
15688 [
15689 "0xab3c0572291feb8b",
15690 1
15691 ],
15692 [
15693 "0xbc9d89904f5b923f",
15694 1
15695 ],
15696 [
15697 "0x37c8bb1350a9a2a8",
15698 1
15699 ]
15700 ]
15701 ],
15702 [
15703 12217535,
15704 9280,
15705 [
15706 [
15707 "0xdf6acb689907609b",
15708 4
15709 ],
15710 [
15711 "0x37e397fc7c91f5e4",
15712 1
15713 ],
15714 [
15715 "0x40fe3ad401f8959a",
15716 6
15717 ],
15718 [
15719 "0xd2bc9897eed08f15",
15720 3
15721 ],
15722 [
15723 "0xf78b278be53f454c",
15724 2
15725 ],
15726 [
15727 "0xaf2c0297a23e6d3d",
15728 2
15729 ],
15730 [
15731 "0x49eaaf1b548a0cb0",
15732 1
15733 ],
15734 [
15735 "0x91d5df18b0d2cf58",
15736 1
15737 ],
15738 [
15739 "0xed99c5acb25eedf5",
15740 3
15741 ],
15742 [
15743 "0xcbca25e39f142387",
15744 2
15745 ],
15746 [
15747 "0x687ad44ad37f03c2",
15748 1
15749 ],
15750 [
15751 "0xab3c0572291feb8b",
15752 1
15753 ],
15754 [
15755 "0xbc9d89904f5b923f",
15756 1
15757 ],
15758 [
15759 "0x37c8bb1350a9a2a8",
15760 1
15761 ],
15762 [
15763 "0xf3ff14d5ab527059",
15764 1
15765 ]
15766 ]
15767 ],
15768 [
15769 12245277,
15770 9281,
15771 [
15772 [
15773 "0xdf6acb689907609b",
15774 4
15775 ],
15776 [
15777 "0x37e397fc7c91f5e4",
15778 1
15779 ],
15780 [
15781 "0x40fe3ad401f8959a",
15782 6
15783 ],
15784 [
15785 "0xd2bc9897eed08f15",
15786 3
15787 ],
15788 [
15789 "0xf78b278be53f454c",
15790 2
15791 ],
15792 [
15793 "0xaf2c0297a23e6d3d",
15794 2
15795 ],
15796 [
15797 "0x49eaaf1b548a0cb0",
15798 1
15799 ],
15800 [
15801 "0x91d5df18b0d2cf58",
15802 1
15803 ],
15804 [
15805 "0xed99c5acb25eedf5",
15806 3
15807 ],
15808 [
15809 "0xcbca25e39f142387",
15810 2
15811 ],
15812 [
15813 "0x687ad44ad37f03c2",
15814 1
15815 ],
15816 [
15817 "0xab3c0572291feb8b",
15818 1
15819 ],
15820 [
15821 "0xbc9d89904f5b923f",
15822 1
15823 ],
15824 [
15825 "0x37c8bb1350a9a2a8",
15826 1
15827 ],
15828 [
15829 "0xf3ff14d5ab527059",
15830 1
15831 ]
15832 ]
15833 ],
15834 [
15835 12532644,
15836 9291,
15837 [
15838 [
15839 "0xdf6acb689907609b",
15840 4
15841 ],
15842 [
15843 "0x37e397fc7c91f5e4",
15844 1
15845 ],
15846 [
15847 "0x40fe3ad401f8959a",
15848 6
15849 ],
15850 [
15851 "0x17a6bc0d0062aeb3",
15852 1
15853 ],
15854 [
15855 "0xd2bc9897eed08f15",
15856 3
15857 ],
15858 [
15859 "0xf78b278be53f454c",
15860 2
15861 ],
15862 [
15863 "0xaf2c0297a23e6d3d",
15864 2
15865 ],
15866 [
15867 "0x49eaaf1b548a0cb0",
15868 1
15869 ],
15870 [
15871 "0x91d5df18b0d2cf58",
15872 1
15873 ],
15874 [
15875 "0xed99c5acb25eedf5",
15876 3
15877 ],
15878 [
15879 "0xcbca25e39f142387",
15880 2
15881 ],
15882 [
15883 "0x687ad44ad37f03c2",
15884 1
15885 ],
15886 [
15887 "0xab3c0572291feb8b",
15888 1
15889 ],
15890 [
15891 "0xbc9d89904f5b923f",
15892 1
15893 ],
15894 [
15895 "0x37c8bb1350a9a2a8",
15896 1
15897 ],
15898 [
15899 "0xf3ff14d5ab527059",
15900 1
15901 ]
15902 ]
15903 ],
15904 [
15905 12876189,
15906 9300,
15907 [
15908 [
15909 "0xdf6acb689907609b",
15910 4
15911 ],
15912 [
15913 "0x37e397fc7c91f5e4",
15914 1
15915 ],
15916 [
15917 "0x40fe3ad401f8959a",
15918 6
15919 ],
15920 [
15921 "0x17a6bc0d0062aeb3",
15922 1
15923 ],
15924 [
15925 "0xd2bc9897eed08f15",
15926 3
15927 ],
15928 [
15929 "0xf78b278be53f454c",
15930 2
15931 ],
15932 [
15933 "0xaf2c0297a23e6d3d",
15934 2
15935 ],
15936 [
15937 "0x49eaaf1b548a0cb0",
15938 1
15939 ],
15940 [
15941 "0x91d5df18b0d2cf58",
15942 1
15943 ],
15944 [
15945 "0xed99c5acb25eedf5",
15946 3
15947 ],
15948 [
15949 "0xcbca25e39f142387",
15950 2
15951 ],
15952 [
15953 "0x687ad44ad37f03c2",
15954 1
15955 ],
15956 [
15957 "0xab3c0572291feb8b",
15958 1
15959 ],
15960 [
15961 "0xbc9d89904f5b923f",
15962 1
15963 ],
15964 [
15965 "0x37c8bb1350a9a2a8",
15966 1
15967 ],
15968 [
15969 "0xf3ff14d5ab527059",
15970 1
15971 ]
15972 ]
15973 ],
15974 [
15975 13800015,
15976 9340,
15977 [
15978 [
15979 "0xdf6acb689907609b",
15980 4
15981 ],
15982 [
15983 "0x37e397fc7c91f5e4",
15984 1
15985 ],
15986 [
15987 "0x40fe3ad401f8959a",
15988 6
15989 ],
15990 [
15991 "0x17a6bc0d0062aeb3",
15992 1
15993 ],
15994 [
15995 "0xd2bc9897eed08f15",
15996 3
15997 ],
15998 [
15999 "0xf78b278be53f454c",
16000 2
16001 ],
16002 [
16003 "0xaf2c0297a23e6d3d",
16004 2
16005 ],
16006 [
16007 "0x49eaaf1b548a0cb0",
16008 1
16009 ],
16010 [
16011 "0x91d5df18b0d2cf58",
16012 1
16013 ],
16014 [
16015 "0xed99c5acb25eedf5",
16016 3
16017 ],
16018 [
16019 "0xcbca25e39f142387",
16020 2
16021 ],
16022 [
16023 "0x687ad44ad37f03c2",
16024 1
16025 ],
16026 [
16027 "0xab3c0572291feb8b",
16028 1
16029 ],
16030 [
16031 "0xbc9d89904f5b923f",
16032 1
16033 ],
16034 [
16035 "0x37c8bb1350a9a2a8",
16036 2
16037 ],
16038 [
16039 "0xf3ff14d5ab527059",
16040 2
16041 ]
16042 ]
16043 ],
16044 [
16045 14188833,
16046 9360,
16047 [
16048 [
16049 "0xdf6acb689907609b",
16050 4
16051 ],
16052 [
16053 "0x37e397fc7c91f5e4",
16054 1
16055 ],
16056 [
16057 "0x40fe3ad401f8959a",
16058 6
16059 ],
16060 [
16061 "0x17a6bc0d0062aeb3",
16062 1
16063 ],
16064 [
16065 "0xd2bc9897eed08f15",
16066 3
16067 ],
16068 [
16069 "0xf78b278be53f454c",
16070 2
16071 ],
16072 [
16073 "0xaf2c0297a23e6d3d",
16074 2
16075 ],
16076 [
16077 "0x49eaaf1b548a0cb0",
16078 1
16079 ],
16080 [
16081 "0x91d5df18b0d2cf58",
16082 1
16083 ],
16084 [
16085 "0xed99c5acb25eedf5",
16086 3
16087 ],
16088 [
16089 "0xcbca25e39f142387",
16090 2
16091 ],
16092 [
16093 "0x687ad44ad37f03c2",
16094 1
16095 ],
16096 [
16097 "0xab3c0572291feb8b",
16098 1
16099 ],
16100 [
16101 "0xbc9d89904f5b923f",
16102 1
16103 ],
16104 [
16105 "0x37c8bb1350a9a2a8",
16106 2
16107 ],
16108 [
16109 "0xf3ff14d5ab527059",
16110 2
16111 ]
16112 ]
16113 ],
16114 [
16115 14543918,
16116 9370,
16117 [
16118 [
16119 "0xdf6acb689907609b",
16120 4
16121 ],
16122 [
16123 "0x37e397fc7c91f5e4",
16124 1
16125 ],
16126 [
16127 "0x40fe3ad401f8959a",
16128 6
16129 ],
16130 [
16131 "0x17a6bc0d0062aeb3",
16132 1
16133 ],
16134 [
16135 "0xd2bc9897eed08f15",
16136 3
16137 ],
16138 [
16139 "0xf78b278be53f454c",
16140 2
16141 ],
16142 [
16143 "0xaf2c0297a23e6d3d",
16144 2
16145 ],
16146 [
16147 "0x49eaaf1b548a0cb0",
16148 1
16149 ],
16150 [
16151 "0x91d5df18b0d2cf58",
16152 1
16153 ],
16154 [
16155 "0xed99c5acb25eedf5",
16156 3
16157 ],
16158 [
16159 "0xcbca25e39f142387",
16160 2
16161 ],
16162 [
16163 "0x687ad44ad37f03c2",
16164 1
16165 ],
16166 [
16167 "0xab3c0572291feb8b",
16168 1
16169 ],
16170 [
16171 "0xbc9d89904f5b923f",
16172 1
16173 ],
16174 [
16175 "0x37c8bb1350a9a2a8",
16176 2
16177 ],
16178 [
16179 "0xf3ff14d5ab527059",
16180 2
16181 ]
16182 ]
16183 ],
16184 [
16185 15978362,
16186 9420,
16187 [
16188 [
16189 "0xdf6acb689907609b",
16190 4
16191 ],
16192 [
16193 "0x37e397fc7c91f5e4",
16194 2
16195 ],
16196 [
16197 "0x40fe3ad401f8959a",
16198 6
16199 ],
16200 [
16201 "0x17a6bc0d0062aeb3",
16202 1
16203 ],
16204 [
16205 "0x18ef58a3b67ba770",
16206 1
16207 ],
16208 [
16209 "0xd2bc9897eed08f15",
16210 3
16211 ],
16212 [
16213 "0xf78b278be53f454c",
16214 2
16215 ],
16216 [
16217 "0xaf2c0297a23e6d3d",
16218 4
16219 ],
16220 [
16221 "0x49eaaf1b548a0cb0",
16222 2
16223 ],
16224 [
16225 "0x91d5df18b0d2cf58",
16226 2
16227 ],
16228 [
16229 "0xed99c5acb25eedf5",
16230 3
16231 ],
16232 [
16233 "0xcbca25e39f142387",
16234 2
16235 ],
16236 [
16237 "0x687ad44ad37f03c2",
16238 1
16239 ],
16240 [
16241 "0xab3c0572291feb8b",
16242 1
16243 ],
16244 [
16245 "0xbc9d89904f5b923f",
16246 1
16247 ],
16248 [
16249 "0x37c8bb1350a9a2a8",
16250 4
16251 ],
16252 [
16253 "0xf3ff14d5ab527059",
16254 3
16255 ]
16256 ]
16257 ],
16258 [
16259 16450000,
16260 9430,
16261 [
16262 [
16263 "0xdf6acb689907609b",
16264 4
16265 ],
16266 [
16267 "0x37e397fc7c91f5e4",
16268 2
16269 ],
16270 [
16271 "0x40fe3ad401f8959a",
16272 6
16273 ],
16274 [
16275 "0x17a6bc0d0062aeb3",
16276 1
16277 ],
16278 [
16279 "0x18ef58a3b67ba770",
16280 1
16281 ],
16282 [
16283 "0xd2bc9897eed08f15",
16284 3
16285 ],
16286 [
16287 "0xf78b278be53f454c",
16288 2
16289 ],
16290 [
16291 "0xaf2c0297a23e6d3d",
16292 4
16293 ],
16294 [
16295 "0x49eaaf1b548a0cb0",
16296 2
16297 ],
16298 [
16299 "0x91d5df18b0d2cf58",
16300 2
16301 ],
16302 [
16303 "0xed99c5acb25eedf5",
16304 3
16305 ],
16306 [
16307 "0xcbca25e39f142387",
16308 2
16309 ],
16310 [
16311 "0x687ad44ad37f03c2",
16312 1
16313 ],
16314 [
16315 "0xab3c0572291feb8b",
16316 1
16317 ],
16318 [
16319 "0xbc9d89904f5b923f",
16320 1
16321 ],
16322 [
16323 "0x37c8bb1350a9a2a8",
16324 4
16325 ],
16326 [
16327 "0xf3ff14d5ab527059",
16328 3
16329 ]
16330 ]
16331 ],
16332 [
16333 17840000,
16334 9431,
16335 [
16336 [
16337 "0xdf6acb689907609b",
16338 4
16339 ],
16340 [
16341 "0x37e397fc7c91f5e4",
16342 2
16343 ],
16344 [
16345 "0x40fe3ad401f8959a",
16346 6
16347 ],
16348 [
16349 "0x17a6bc0d0062aeb3",
16350 1
16351 ],
16352 [
16353 "0x18ef58a3b67ba770",
16354 1
16355 ],
16356 [
16357 "0xd2bc9897eed08f15",
16358 3
16359 ],
16360 [
16361 "0xf78b278be53f454c",
16362 2
16363 ],
16364 [
16365 "0xaf2c0297a23e6d3d",
16366 4
16367 ],
16368 [
16369 "0x49eaaf1b548a0cb0",
16370 2
16371 ],
16372 [
16373 "0x91d5df18b0d2cf58",
16374 2
16375 ],
16376 [
16377 "0xed99c5acb25eedf5",
16378 3
16379 ],
16380 [
16381 "0xcbca25e39f142387",
16382 2
16383 ],
16384 [
16385 "0x687ad44ad37f03c2",
16386 1
16387 ],
16388 [
16389 "0xab3c0572291feb8b",
16390 1
16391 ],
16392 [
16393 "0xbc9d89904f5b923f",
16394 1
16395 ],
16396 [
16397 "0x37c8bb1350a9a2a8",
16398 4
16399 ],
16400 [
16401 "0xf3ff14d5ab527059",
16402 3
16403 ]
16404 ]
16405 ],
16406 [
16407 18407475,
16408 1000001,
16409 [
16410 [
16411 "0xdf6acb689907609b",
16412 4
16413 ],
16414 [
16415 "0x37e397fc7c91f5e4",
16416 2
16417 ],
16418 [
16419 "0x40fe3ad401f8959a",
16420 6
16421 ],
16422 [
16423 "0x17a6bc0d0062aeb3",
16424 1
16425 ],
16426 [
16427 "0x18ef58a3b67ba770",
16428 1
16429 ],
16430 [
16431 "0xd2bc9897eed08f15",
16432 3
16433 ],
16434 [
16435 "0xf78b278be53f454c",
16436 2
16437 ],
16438 [
16439 "0xaf2c0297a23e6d3d",
16440 5
16441 ],
16442 [
16443 "0x49eaaf1b548a0cb0",
16444 3
16445 ],
16446 [
16447 "0x91d5df18b0d2cf58",
16448 2
16449 ],
16450 [
16451 "0xed99c5acb25eedf5",
16452 3
16453 ],
16454 [
16455 "0xcbca25e39f142387",
16456 2
16457 ],
16458 [
16459 "0x687ad44ad37f03c2",
16460 1
16461 ],
16462 [
16463 "0xab3c0572291feb8b",
16464 1
16465 ],
16466 [
16467 "0xbc9d89904f5b923f",
16468 1
16469 ],
16470 [
16471 "0x37c8bb1350a9a2a8",
16472 4
16473 ],
16474 [
16475 "0xf3ff14d5ab527059",
16476 3
16477 ]
16478 ]
16479 ],
16480 [
16481 19551000,
16482 1001002,
16483 [
16484 [
16485 "0xdf6acb689907609b",
16486 4
16487 ],
16488 [
16489 "0x37e397fc7c91f5e4",
16490 2
16491 ],
16492 [
16493 "0x40fe3ad401f8959a",
16494 6
16495 ],
16496 [
16497 "0x17a6bc0d0062aeb3",
16498 1
16499 ],
16500 [
16501 "0x18ef58a3b67ba770",
16502 1
16503 ],
16504 [
16505 "0xd2bc9897eed08f15",
16506 3
16507 ],
16508 [
16509 "0xf78b278be53f454c",
16510 2
16511 ],
16512 [
16513 "0xaf2c0297a23e6d3d",
16514 5
16515 ],
16516 [
16517 "0x49eaaf1b548a0cb0",
16518 3
16519 ],
16520 [
16521 "0x91d5df18b0d2cf58",
16522 2
16523 ],
16524 [
16525 "0x2a5e924655399e60",
16526 1
16527 ],
16528 [
16529 "0xed99c5acb25eedf5",
16530 3
16531 ],
16532 [
16533 "0xcbca25e39f142387",
16534 2
16535 ],
16536 [
16537 "0x687ad44ad37f03c2",
16538 1
16539 ],
16540 [
16541 "0xab3c0572291feb8b",
16542 1
16543 ],
16544 [
16545 "0xbc9d89904f5b923f",
16546 1
16547 ],
16548 [
16549 "0x37c8bb1350a9a2a8",
16550 4
16551 ],
16552 [
16553 "0xf3ff14d5ab527059",
16554 3
16555 ],
16556 [
16557 "0xfbc577b9d747efd6",
16558 1
16559 ]
16560 ]
16561 ],
16562 [
16563 20181758,
16564 1001003,
16565 [
16566 [
16567 "0xdf6acb689907609b",
16568 4
16569 ],
16570 [
16571 "0x37e397fc7c91f5e4",
16572 2
16573 ],
16574 [
16575 "0x40fe3ad401f8959a",
16576 6
16577 ],
16578 [
16579 "0x17a6bc0d0062aeb3",
16580 1
16581 ],
16582 [
16583 "0x18ef58a3b67ba770",
16584 1
16585 ],
16586 [
16587 "0xd2bc9897eed08f15",
16588 3
16589 ],
16590 [
16591 "0xf78b278be53f454c",
16592 2
16593 ],
16594 [
16595 "0xaf2c0297a23e6d3d",
16596 5
16597 ],
16598 [
16599 "0x49eaaf1b548a0cb0",
16600 3
16601 ],
16602 [
16603 "0x91d5df18b0d2cf58",
16604 2
16605 ],
16606 [
16607 "0x2a5e924655399e60",
16608 1
16609 ],
16610 [
16611 "0xed99c5acb25eedf5",
16612 3
16613 ],
16614 [
16615 "0xcbca25e39f142387",
16616 2
16617 ],
16618 [
16619 "0x687ad44ad37f03c2",
16620 1
16621 ],
16622 [
16623 "0xab3c0572291feb8b",
16624 1
16625 ],
16626 [
16627 "0xbc9d89904f5b923f",
16628 1
16629 ],
16630 [
16631 "0x37c8bb1350a9a2a8",
16632 4
16633 ],
16634 [
16635 "0xf3ff14d5ab527059",
16636 3
16637 ],
16638 [
16639 "0xfbc577b9d747efd6",
16640 1
16641 ]
16642 ]
16643 ],
16644 [
16645 20438530,
16646 1002000,
16647 [
16648 [
16649 "0xdf6acb689907609b",
16650 4
16651 ],
16652 [
16653 "0x37e397fc7c91f5e4",
16654 2
16655 ],
16656 [
16657 "0x40fe3ad401f8959a",
16658 6
16659 ],
16660 [
16661 "0x17a6bc0d0062aeb3",
16662 1
16663 ],
16664 [
16665 "0x18ef58a3b67ba770",
16666 1
16667 ],
16668 [
16669 "0xd2bc9897eed08f15",
16670 3
16671 ],
16672 [
16673 "0xf78b278be53f454c",
16674 2
16675 ],
16676 [
16677 "0xaf2c0297a23e6d3d",
16678 10
16679 ],
16680 [
16681 "0x49eaaf1b548a0cb0",
16682 3
16683 ],
16684 [
16685 "0x91d5df18b0d2cf58",
16686 2
16687 ],
16688 [
16689 "0x2a5e924655399e60",
16690 1
16691 ],
16692 [
16693 "0xed99c5acb25eedf5",
16694 3
16695 ],
16696 [
16697 "0xcbca25e39f142387",
16698 2
16699 ],
16700 [
16701 "0x687ad44ad37f03c2",
16702 1
16703 ],
16704 [
16705 "0xab3c0572291feb8b",
16706 1
16707 ],
16708 [
16709 "0xbc9d89904f5b923f",
16710 1
16711 ],
16712 [
16713 "0x37c8bb1350a9a2a8",
16714 4
16715 ],
16716 [
16717 "0xf3ff14d5ab527059",
16718 3
16719 ],
16720 [
16721 "0xfbc577b9d747efd6",
16722 1
16723 ]
16724 ]
16725 ],
16726 [
16727 21169168,
16728 1002004,
16729 [
16730 [
16731 "0xdf6acb689907609b",
16732 4
16733 ],
16734 [
16735 "0x37e397fc7c91f5e4",
16736 2
16737 ],
16738 [
16739 "0x40fe3ad401f8959a",
16740 6
16741 ],
16742 [
16743 "0x17a6bc0d0062aeb3",
16744 1
16745 ],
16746 [
16747 "0x18ef58a3b67ba770",
16748 1
16749 ],
16750 [
16751 "0xd2bc9897eed08f15",
16752 3
16753 ],
16754 [
16755 "0xf78b278be53f454c",
16756 2
16757 ],
16758 [
16759 "0xaf2c0297a23e6d3d",
16760 10
16761 ],
16762 [
16763 "0x49eaaf1b548a0cb0",
16764 3
16765 ],
16766 [
16767 "0x91d5df18b0d2cf58",
16768 2
16769 ],
16770 [
16771 "0x2a5e924655399e60",
16772 1
16773 ],
16774 [
16775 "0xed99c5acb25eedf5",
16776 3
16777 ],
16778 [
16779 "0xcbca25e39f142387",
16780 2
16781 ],
16782 [
16783 "0x687ad44ad37f03c2",
16784 1
16785 ],
16786 [
16787 "0xab3c0572291feb8b",
16788 1
16789 ],
16790 [
16791 "0xbc9d89904f5b923f",
16792 1
16793 ],
16794 [
16795 "0x37c8bb1350a9a2a8",
16796 4
16797 ],
16798 [
16799 "0xf3ff14d5ab527059",
16800 3
16801 ],
16802 [
16803 "0xfbc577b9d747efd6",
16804 1
16805 ]
16806 ]
16807 ]
16808 ];
16809
16810 const upgrades$1 = [
16811 [
16812 214356,
16813 4,
16814 [
16815 [
16816 "0xdf6acb689907609b",
16817 3
16818 ],
16819 [
16820 "0x37e397fc7c91f5e4",
16821 1
16822 ],
16823 [
16824 "0x40fe3ad401f8959a",
16825 4
16826 ],
16827 [
16828 "0xd2bc9897eed08f15",
16829 2
16830 ],
16831 [
16832 "0xf78b278be53f454c",
16833 2
16834 ],
16835 [
16836 "0xaf2c0297a23e6d3d",
16837 3
16838 ],
16839 [
16840 "0xed99c5acb25eedf5",
16841 2
16842 ],
16843 [
16844 "0xcbca25e39f142387",
16845 1
16846 ],
16847 [
16848 "0x687ad44ad37f03c2",
16849 1
16850 ],
16851 [
16852 "0xab3c0572291feb8b",
16853 1
16854 ],
16855 [
16856 "0xbc9d89904f5b923f",
16857 1
16858 ],
16859 [
16860 "0x37c8bb1350a9a2a8",
16861 1
16862 ]
16863 ]
16864 ],
16865 [
16866 392764,
16867 7,
16868 [
16869 [
16870 "0xdf6acb689907609b",
16871 3
16872 ],
16873 [
16874 "0x37e397fc7c91f5e4",
16875 1
16876 ],
16877 [
16878 "0x40fe3ad401f8959a",
16879 4
16880 ],
16881 [
16882 "0xd2bc9897eed08f15",
16883 2
16884 ],
16885 [
16886 "0xf78b278be53f454c",
16887 2
16888 ],
16889 [
16890 "0xaf2c0297a23e6d3d",
16891 3
16892 ],
16893 [
16894 "0xed99c5acb25eedf5",
16895 2
16896 ],
16897 [
16898 "0xcbca25e39f142387",
16899 2
16900 ],
16901 [
16902 "0x687ad44ad37f03c2",
16903 1
16904 ],
16905 [
16906 "0xab3c0572291feb8b",
16907 1
16908 ],
16909 [
16910 "0xbc9d89904f5b923f",
16911 1
16912 ],
16913 [
16914 "0x37c8bb1350a9a2a8",
16915 1
16916 ]
16917 ]
16918 ],
16919 [
16920 409740,
16921 8,
16922 [
16923 [
16924 "0xdf6acb689907609b",
16925 3
16926 ],
16927 [
16928 "0x37e397fc7c91f5e4",
16929 1
16930 ],
16931 [
16932 "0x40fe3ad401f8959a",
16933 4
16934 ],
16935 [
16936 "0xd2bc9897eed08f15",
16937 2
16938 ],
16939 [
16940 "0xf78b278be53f454c",
16941 2
16942 ],
16943 [
16944 "0xaf2c0297a23e6d3d",
16945 3
16946 ],
16947 [
16948 "0xed99c5acb25eedf5",
16949 2
16950 ],
16951 [
16952 "0xcbca25e39f142387",
16953 2
16954 ],
16955 [
16956 "0x687ad44ad37f03c2",
16957 1
16958 ],
16959 [
16960 "0xab3c0572291feb8b",
16961 1
16962 ],
16963 [
16964 "0xbc9d89904f5b923f",
16965 1
16966 ],
16967 [
16968 "0x37c8bb1350a9a2a8",
16969 1
16970 ]
16971 ]
16972 ],
16973 [
16974 809976,
16975 20,
16976 [
16977 [
16978 "0xdf6acb689907609b",
16979 3
16980 ],
16981 [
16982 "0x37e397fc7c91f5e4",
16983 1
16984 ],
16985 [
16986 "0x40fe3ad401f8959a",
16987 4
16988 ],
16989 [
16990 "0xd2bc9897eed08f15",
16991 2
16992 ],
16993 [
16994 "0xf78b278be53f454c",
16995 2
16996 ],
16997 [
16998 "0xaf2c0297a23e6d3d",
16999 3
17000 ],
17001 [
17002 "0xed99c5acb25eedf5",
17003 2
17004 ],
17005 [
17006 "0xcbca25e39f142387",
17007 2
17008 ],
17009 [
17010 "0x687ad44ad37f03c2",
17011 1
17012 ],
17013 [
17014 "0xab3c0572291feb8b",
17015 1
17016 ],
17017 [
17018 "0xbc9d89904f5b923f",
17019 1
17020 ],
17021 [
17022 "0x37c8bb1350a9a2a8",
17023 1
17024 ]
17025 ]
17026 ],
17027 [
17028 877581,
17029 24,
17030 [
17031 [
17032 "0xdf6acb689907609b",
17033 3
17034 ],
17035 [
17036 "0x37e397fc7c91f5e4",
17037 1
17038 ],
17039 [
17040 "0x40fe3ad401f8959a",
17041 4
17042 ],
17043 [
17044 "0xd2bc9897eed08f15",
17045 2
17046 ],
17047 [
17048 "0xf78b278be53f454c",
17049 2
17050 ],
17051 [
17052 "0xaf2c0297a23e6d3d",
17053 3
17054 ],
17055 [
17056 "0xed99c5acb25eedf5",
17057 2
17058 ],
17059 [
17060 "0xcbca25e39f142387",
17061 2
17062 ],
17063 [
17064 "0x687ad44ad37f03c2",
17065 1
17066 ],
17067 [
17068 "0xab3c0572291feb8b",
17069 1
17070 ],
17071 [
17072 "0xbc9d89904f5b923f",
17073 1
17074 ],
17075 [
17076 "0x37c8bb1350a9a2a8",
17077 1
17078 ]
17079 ]
17080 ],
17081 [
17082 879238,
17083 25,
17084 [
17085 [
17086 "0xdf6acb689907609b",
17087 3
17088 ],
17089 [
17090 "0x37e397fc7c91f5e4",
17091 1
17092 ],
17093 [
17094 "0x40fe3ad401f8959a",
17095 4
17096 ],
17097 [
17098 "0xd2bc9897eed08f15",
17099 2
17100 ],
17101 [
17102 "0xf78b278be53f454c",
17103 2
17104 ],
17105 [
17106 "0xaf2c0297a23e6d3d",
17107 3
17108 ],
17109 [
17110 "0xed99c5acb25eedf5",
17111 2
17112 ],
17113 [
17114 "0xcbca25e39f142387",
17115 2
17116 ],
17117 [
17118 "0x687ad44ad37f03c2",
17119 1
17120 ],
17121 [
17122 "0xab3c0572291feb8b",
17123 1
17124 ],
17125 [
17126 "0xbc9d89904f5b923f",
17127 1
17128 ],
17129 [
17130 "0x37c8bb1350a9a2a8",
17131 1
17132 ]
17133 ]
17134 ],
17135 [
17136 889472,
17137 26,
17138 [
17139 [
17140 "0xdf6acb689907609b",
17141 3
17142 ],
17143 [
17144 "0x37e397fc7c91f5e4",
17145 1
17146 ],
17147 [
17148 "0x40fe3ad401f8959a",
17149 4
17150 ],
17151 [
17152 "0xd2bc9897eed08f15",
17153 2
17154 ],
17155 [
17156 "0xf78b278be53f454c",
17157 2
17158 ],
17159 [
17160 "0xaf2c0297a23e6d3d",
17161 3
17162 ],
17163 [
17164 "0xed99c5acb25eedf5",
17165 2
17166 ],
17167 [
17168 "0xcbca25e39f142387",
17169 2
17170 ],
17171 [
17172 "0x687ad44ad37f03c2",
17173 1
17174 ],
17175 [
17176 "0xab3c0572291feb8b",
17177 1
17178 ],
17179 [
17180 "0xbc9d89904f5b923f",
17181 1
17182 ],
17183 [
17184 "0x37c8bb1350a9a2a8",
17185 1
17186 ]
17187 ]
17188 ],
17189 [
17190 902937,
17191 27,
17192 [
17193 [
17194 "0xdf6acb689907609b",
17195 3
17196 ],
17197 [
17198 "0x37e397fc7c91f5e4",
17199 1
17200 ],
17201 [
17202 "0x40fe3ad401f8959a",
17203 4
17204 ],
17205 [
17206 "0xd2bc9897eed08f15",
17207 2
17208 ],
17209 [
17210 "0xf78b278be53f454c",
17211 2
17212 ],
17213 [
17214 "0xaf2c0297a23e6d3d",
17215 3
17216 ],
17217 [
17218 "0xed99c5acb25eedf5",
17219 2
17220 ],
17221 [
17222 "0xcbca25e39f142387",
17223 2
17224 ],
17225 [
17226 "0x687ad44ad37f03c2",
17227 1
17228 ],
17229 [
17230 "0xab3c0572291feb8b",
17231 1
17232 ],
17233 [
17234 "0xbc9d89904f5b923f",
17235 1
17236 ],
17237 [
17238 "0x37c8bb1350a9a2a8",
17239 1
17240 ]
17241 ]
17242 ],
17243 [
17244 932751,
17245 28,
17246 [
17247 [
17248 "0xdf6acb689907609b",
17249 3
17250 ],
17251 [
17252 "0x37e397fc7c91f5e4",
17253 1
17254 ],
17255 [
17256 "0x40fe3ad401f8959a",
17257 4
17258 ],
17259 [
17260 "0xd2bc9897eed08f15",
17261 2
17262 ],
17263 [
17264 "0xf78b278be53f454c",
17265 2
17266 ],
17267 [
17268 "0xaf2c0297a23e6d3d",
17269 3
17270 ],
17271 [
17272 "0xed99c5acb25eedf5",
17273 2
17274 ],
17275 [
17276 "0xcbca25e39f142387",
17277 2
17278 ],
17279 [
17280 "0x687ad44ad37f03c2",
17281 1
17282 ],
17283 [
17284 "0xab3c0572291feb8b",
17285 1
17286 ],
17287 [
17288 "0xbc9d89904f5b923f",
17289 1
17290 ],
17291 [
17292 "0x37c8bb1350a9a2a8",
17293 1
17294 ]
17295 ]
17296 ],
17297 [
17298 991142,
17299 29,
17300 [
17301 [
17302 "0xdf6acb689907609b",
17303 3
17304 ],
17305 [
17306 "0x37e397fc7c91f5e4",
17307 1
17308 ],
17309 [
17310 "0x40fe3ad401f8959a",
17311 4
17312 ],
17313 [
17314 "0xd2bc9897eed08f15",
17315 2
17316 ],
17317 [
17318 "0xf78b278be53f454c",
17319 2
17320 ],
17321 [
17322 "0xaf2c0297a23e6d3d",
17323 3
17324 ],
17325 [
17326 "0xed99c5acb25eedf5",
17327 2
17328 ],
17329 [
17330 "0xcbca25e39f142387",
17331 2
17332 ],
17333 [
17334 "0x687ad44ad37f03c2",
17335 1
17336 ],
17337 [
17338 "0xab3c0572291feb8b",
17339 1
17340 ],
17341 [
17342 "0xbc9d89904f5b923f",
17343 1
17344 ],
17345 [
17346 "0x37c8bb1350a9a2a8",
17347 1
17348 ]
17349 ]
17350 ],
17351 [
17352 1030162,
17353 31,
17354 [
17355 [
17356 "0xdf6acb689907609b",
17357 3
17358 ],
17359 [
17360 "0x37e397fc7c91f5e4",
17361 1
17362 ],
17363 [
17364 "0x40fe3ad401f8959a",
17365 4
17366 ],
17367 [
17368 "0xd2bc9897eed08f15",
17369 2
17370 ],
17371 [
17372 "0xf78b278be53f454c",
17373 2
17374 ],
17375 [
17376 "0xaf2c0297a23e6d3d",
17377 3
17378 ],
17379 [
17380 "0xed99c5acb25eedf5",
17381 2
17382 ],
17383 [
17384 "0xcbca25e39f142387",
17385 2
17386 ],
17387 [
17388 "0x687ad44ad37f03c2",
17389 1
17390 ],
17391 [
17392 "0xab3c0572291feb8b",
17393 1
17394 ],
17395 [
17396 "0xbc9d89904f5b923f",
17397 1
17398 ],
17399 [
17400 "0x37c8bb1350a9a2a8",
17401 1
17402 ]
17403 ]
17404 ],
17405 [
17406 1119657,
17407 32,
17408 [
17409 [
17410 "0xdf6acb689907609b",
17411 3
17412 ],
17413 [
17414 "0x37e397fc7c91f5e4",
17415 1
17416 ],
17417 [
17418 "0x40fe3ad401f8959a",
17419 4
17420 ],
17421 [
17422 "0xd2bc9897eed08f15",
17423 2
17424 ],
17425 [
17426 "0xf78b278be53f454c",
17427 2
17428 ],
17429 [
17430 "0xaf2c0297a23e6d3d",
17431 3
17432 ],
17433 [
17434 "0xed99c5acb25eedf5",
17435 2
17436 ],
17437 [
17438 "0xcbca25e39f142387",
17439 2
17440 ],
17441 [
17442 "0x687ad44ad37f03c2",
17443 1
17444 ],
17445 [
17446 "0xab3c0572291feb8b",
17447 1
17448 ],
17449 [
17450 "0xbc9d89904f5b923f",
17451 1
17452 ],
17453 [
17454 "0x37c8bb1350a9a2a8",
17455 1
17456 ]
17457 ]
17458 ],
17459 [
17460 1199282,
17461 33,
17462 [
17463 [
17464 "0xdf6acb689907609b",
17465 3
17466 ],
17467 [
17468 "0x37e397fc7c91f5e4",
17469 1
17470 ],
17471 [
17472 "0x40fe3ad401f8959a",
17473 4
17474 ],
17475 [
17476 "0xd2bc9897eed08f15",
17477 2
17478 ],
17479 [
17480 "0xf78b278be53f454c",
17481 2
17482 ],
17483 [
17484 "0xaf2c0297a23e6d3d",
17485 3
17486 ],
17487 [
17488 "0xed99c5acb25eedf5",
17489 2
17490 ],
17491 [
17492 "0xcbca25e39f142387",
17493 2
17494 ],
17495 [
17496 "0x687ad44ad37f03c2",
17497 1
17498 ],
17499 [
17500 "0xab3c0572291feb8b",
17501 1
17502 ],
17503 [
17504 "0xbc9d89904f5b923f",
17505 1
17506 ],
17507 [
17508 "0x37c8bb1350a9a2a8",
17509 1
17510 ]
17511 ]
17512 ],
17513 [
17514 1342534,
17515 34,
17516 [
17517 [
17518 "0xdf6acb689907609b",
17519 3
17520 ],
17521 [
17522 "0x37e397fc7c91f5e4",
17523 1
17524 ],
17525 [
17526 "0x40fe3ad401f8959a",
17527 4
17528 ],
17529 [
17530 "0xd2bc9897eed08f15",
17531 2
17532 ],
17533 [
17534 "0xf78b278be53f454c",
17535 2
17536 ],
17537 [
17538 "0xaf2c0297a23e6d3d",
17539 3
17540 ],
17541 [
17542 "0xed99c5acb25eedf5",
17543 2
17544 ],
17545 [
17546 "0xcbca25e39f142387",
17547 2
17548 ],
17549 [
17550 "0x687ad44ad37f03c2",
17551 1
17552 ],
17553 [
17554 "0xab3c0572291feb8b",
17555 1
17556 ],
17557 [
17558 "0xbc9d89904f5b923f",
17559 1
17560 ],
17561 [
17562 "0x37c8bb1350a9a2a8",
17563 1
17564 ]
17565 ]
17566 ],
17567 [
17568 1392263,
17569 35,
17570 [
17571 [
17572 "0xdf6acb689907609b",
17573 3
17574 ],
17575 [
17576 "0x37e397fc7c91f5e4",
17577 1
17578 ],
17579 [
17580 "0x40fe3ad401f8959a",
17581 4
17582 ],
17583 [
17584 "0xd2bc9897eed08f15",
17585 2
17586 ],
17587 [
17588 "0xf78b278be53f454c",
17589 2
17590 ],
17591 [
17592 "0xaf2c0297a23e6d3d",
17593 3
17594 ],
17595 [
17596 "0xed99c5acb25eedf5",
17597 2
17598 ],
17599 [
17600 "0xcbca25e39f142387",
17601 2
17602 ],
17603 [
17604 "0x687ad44ad37f03c2",
17605 1
17606 ],
17607 [
17608 "0xab3c0572291feb8b",
17609 1
17610 ],
17611 [
17612 "0xbc9d89904f5b923f",
17613 1
17614 ],
17615 [
17616 "0x37c8bb1350a9a2a8",
17617 1
17618 ]
17619 ]
17620 ],
17621 [
17622 1431703,
17623 36,
17624 [
17625 [
17626 "0xdf6acb689907609b",
17627 3
17628 ],
17629 [
17630 "0x37e397fc7c91f5e4",
17631 1
17632 ],
17633 [
17634 "0x40fe3ad401f8959a",
17635 4
17636 ],
17637 [
17638 "0xd2bc9897eed08f15",
17639 2
17640 ],
17641 [
17642 "0xf78b278be53f454c",
17643 2
17644 ],
17645 [
17646 "0xaf2c0297a23e6d3d",
17647 3
17648 ],
17649 [
17650 "0xed99c5acb25eedf5",
17651 2
17652 ],
17653 [
17654 "0xcbca25e39f142387",
17655 2
17656 ],
17657 [
17658 "0x687ad44ad37f03c2",
17659 1
17660 ],
17661 [
17662 "0xab3c0572291feb8b",
17663 1
17664 ],
17665 [
17666 "0xbc9d89904f5b923f",
17667 1
17668 ],
17669 [
17670 "0x37c8bb1350a9a2a8",
17671 1
17672 ]
17673 ]
17674 ],
17675 [
17676 1433369,
17677 37,
17678 [
17679 [
17680 "0xdf6acb689907609b",
17681 3
17682 ],
17683 [
17684 "0x37e397fc7c91f5e4",
17685 1
17686 ],
17687 [
17688 "0x40fe3ad401f8959a",
17689 4
17690 ],
17691 [
17692 "0xd2bc9897eed08f15",
17693 2
17694 ],
17695 [
17696 "0xf78b278be53f454c",
17697 2
17698 ],
17699 [
17700 "0xaf2c0297a23e6d3d",
17701 3
17702 ],
17703 [
17704 "0xed99c5acb25eedf5",
17705 2
17706 ],
17707 [
17708 "0xcbca25e39f142387",
17709 2
17710 ],
17711 [
17712 "0x687ad44ad37f03c2",
17713 1
17714 ],
17715 [
17716 "0xab3c0572291feb8b",
17717 1
17718 ],
17719 [
17720 "0xbc9d89904f5b923f",
17721 1
17722 ],
17723 [
17724 "0x37c8bb1350a9a2a8",
17725 1
17726 ]
17727 ]
17728 ],
17729 [
17730 1490972,
17731 41,
17732 [
17733 [
17734 "0xdf6acb689907609b",
17735 3
17736 ],
17737 [
17738 "0x37e397fc7c91f5e4",
17739 1
17740 ],
17741 [
17742 "0x40fe3ad401f8959a",
17743 4
17744 ],
17745 [
17746 "0xd2bc9897eed08f15",
17747 2
17748 ],
17749 [
17750 "0xf78b278be53f454c",
17751 2
17752 ],
17753 [
17754 "0xaf2c0297a23e6d3d",
17755 3
17756 ],
17757 [
17758 "0xed99c5acb25eedf5",
17759 2
17760 ],
17761 [
17762 "0xcbca25e39f142387",
17763 2
17764 ],
17765 [
17766 "0x687ad44ad37f03c2",
17767 1
17768 ],
17769 [
17770 "0xab3c0572291feb8b",
17771 1
17772 ],
17773 [
17774 "0xbc9d89904f5b923f",
17775 1
17776 ],
17777 [
17778 "0x37c8bb1350a9a2a8",
17779 1
17780 ]
17781 ]
17782 ],
17783 [
17784 2087397,
17785 43,
17786 [
17787 [
17788 "0xdf6acb689907609b",
17789 3
17790 ],
17791 [
17792 "0x37e397fc7c91f5e4",
17793 1
17794 ],
17795 [
17796 "0x40fe3ad401f8959a",
17797 4
17798 ],
17799 [
17800 "0xd2bc9897eed08f15",
17801 2
17802 ],
17803 [
17804 "0xf78b278be53f454c",
17805 2
17806 ],
17807 [
17808 "0xaf2c0297a23e6d3d",
17809 3
17810 ],
17811 [
17812 "0xed99c5acb25eedf5",
17813 2
17814 ],
17815 [
17816 "0xcbca25e39f142387",
17817 2
17818 ],
17819 [
17820 "0x687ad44ad37f03c2",
17821 1
17822 ],
17823 [
17824 "0xab3c0572291feb8b",
17825 1
17826 ],
17827 [
17828 "0xbc9d89904f5b923f",
17829 1
17830 ],
17831 [
17832 "0x37c8bb1350a9a2a8",
17833 1
17834 ]
17835 ]
17836 ],
17837 [
17838 2316688,
17839 44,
17840 [
17841 [
17842 "0xdf6acb689907609b",
17843 3
17844 ],
17845 [
17846 "0x37e397fc7c91f5e4",
17847 1
17848 ],
17849 [
17850 "0x40fe3ad401f8959a",
17851 4
17852 ],
17853 [
17854 "0xd2bc9897eed08f15",
17855 2
17856 ],
17857 [
17858 "0xf78b278be53f454c",
17859 2
17860 ],
17861 [
17862 "0xaf2c0297a23e6d3d",
17863 3
17864 ],
17865 [
17866 "0xed99c5acb25eedf5",
17867 2
17868 ],
17869 [
17870 "0xcbca25e39f142387",
17871 2
17872 ],
17873 [
17874 "0x687ad44ad37f03c2",
17875 1
17876 ],
17877 [
17878 "0xab3c0572291feb8b",
17879 1
17880 ],
17881 [
17882 "0xbc9d89904f5b923f",
17883 1
17884 ],
17885 [
17886 "0x37c8bb1350a9a2a8",
17887 1
17888 ]
17889 ]
17890 ],
17891 [
17892 2549864,
17893 45,
17894 [
17895 [
17896 "0xdf6acb689907609b",
17897 3
17898 ],
17899 [
17900 "0x37e397fc7c91f5e4",
17901 1
17902 ],
17903 [
17904 "0x40fe3ad401f8959a",
17905 4
17906 ],
17907 [
17908 "0xd2bc9897eed08f15",
17909 2
17910 ],
17911 [
17912 "0xf78b278be53f454c",
17913 2
17914 ],
17915 [
17916 "0xaf2c0297a23e6d3d",
17917 1
17918 ],
17919 [
17920 "0xed99c5acb25eedf5",
17921 2
17922 ],
17923 [
17924 "0xcbca25e39f142387",
17925 2
17926 ],
17927 [
17928 "0x687ad44ad37f03c2",
17929 1
17930 ],
17931 [
17932 "0xab3c0572291feb8b",
17933 1
17934 ],
17935 [
17936 "0xbc9d89904f5b923f",
17937 1
17938 ],
17939 [
17940 "0x37c8bb1350a9a2a8",
17941 1
17942 ]
17943 ]
17944 ],
17945 [
17946 3925782,
17947 46,
17948 [
17949 [
17950 "0xdf6acb689907609b",
17951 3
17952 ],
17953 [
17954 "0x37e397fc7c91f5e4",
17955 1
17956 ],
17957 [
17958 "0x40fe3ad401f8959a",
17959 4
17960 ],
17961 [
17962 "0xd2bc9897eed08f15",
17963 2
17964 ],
17965 [
17966 "0xf78b278be53f454c",
17967 2
17968 ],
17969 [
17970 "0xaf2c0297a23e6d3d",
17971 1
17972 ],
17973 [
17974 "0xed99c5acb25eedf5",
17975 2
17976 ],
17977 [
17978 "0xcbca25e39f142387",
17979 2
17980 ],
17981 [
17982 "0x687ad44ad37f03c2",
17983 1
17984 ],
17985 [
17986 "0xab3c0572291feb8b",
17987 1
17988 ],
17989 [
17990 "0xbc9d89904f5b923f",
17991 1
17992 ],
17993 [
17994 "0x37c8bb1350a9a2a8",
17995 1
17996 ]
17997 ]
17998 ],
17999 [
18000 3925843,
18001 47,
18002 [
18003 [
18004 "0xdf6acb689907609b",
18005 3
18006 ],
18007 [
18008 "0x37e397fc7c91f5e4",
18009 1
18010 ],
18011 [
18012 "0x40fe3ad401f8959a",
18013 4
18014 ],
18015 [
18016 "0xd2bc9897eed08f15",
18017 2
18018 ],
18019 [
18020 "0xf78b278be53f454c",
18021 2
18022 ],
18023 [
18024 "0xaf2c0297a23e6d3d",
18025 1
18026 ],
18027 [
18028 "0xed99c5acb25eedf5",
18029 2
18030 ],
18031 [
18032 "0xcbca25e39f142387",
18033 2
18034 ],
18035 [
18036 "0x687ad44ad37f03c2",
18037 1
18038 ],
18039 [
18040 "0xab3c0572291feb8b",
18041 1
18042 ],
18043 [
18044 "0xbc9d89904f5b923f",
18045 1
18046 ],
18047 [
18048 "0x37c8bb1350a9a2a8",
18049 1
18050 ]
18051 ]
18052 ],
18053 [
18054 4207800,
18055 48,
18056 [
18057 [
18058 "0xdf6acb689907609b",
18059 3
18060 ],
18061 [
18062 "0x37e397fc7c91f5e4",
18063 1
18064 ],
18065 [
18066 "0x40fe3ad401f8959a",
18067 4
18068 ],
18069 [
18070 "0xd2bc9897eed08f15",
18071 2
18072 ],
18073 [
18074 "0xf78b278be53f454c",
18075 2
18076 ],
18077 [
18078 "0xaf2c0297a23e6d3d",
18079 1
18080 ],
18081 [
18082 "0xed99c5acb25eedf5",
18083 2
18084 ],
18085 [
18086 "0xcbca25e39f142387",
18087 2
18088 ],
18089 [
18090 "0x687ad44ad37f03c2",
18091 1
18092 ],
18093 [
18094 "0xab3c0572291feb8b",
18095 1
18096 ],
18097 [
18098 "0xbc9d89904f5b923f",
18099 1
18100 ],
18101 [
18102 "0x37c8bb1350a9a2a8",
18103 1
18104 ]
18105 ]
18106 ],
18107 [
18108 4627944,
18109 49,
18110 [
18111 [
18112 "0xdf6acb689907609b",
18113 3
18114 ],
18115 [
18116 "0x37e397fc7c91f5e4",
18117 1
18118 ],
18119 [
18120 "0x40fe3ad401f8959a",
18121 4
18122 ],
18123 [
18124 "0xd2bc9897eed08f15",
18125 2
18126 ],
18127 [
18128 "0xf78b278be53f454c",
18129 2
18130 ],
18131 [
18132 "0xaf2c0297a23e6d3d",
18133 1
18134 ],
18135 [
18136 "0xed99c5acb25eedf5",
18137 2
18138 ],
18139 [
18140 "0xcbca25e39f142387",
18141 2
18142 ],
18143 [
18144 "0x687ad44ad37f03c2",
18145 1
18146 ],
18147 [
18148 "0xab3c0572291feb8b",
18149 1
18150 ],
18151 [
18152 "0xbc9d89904f5b923f",
18153 1
18154 ],
18155 [
18156 "0x37c8bb1350a9a2a8",
18157 1
18158 ]
18159 ]
18160 ],
18161 [
18162 5124076,
18163 50,
18164 [
18165 [
18166 "0xdf6acb689907609b",
18167 3
18168 ],
18169 [
18170 "0x37e397fc7c91f5e4",
18171 1
18172 ],
18173 [
18174 "0x40fe3ad401f8959a",
18175 4
18176 ],
18177 [
18178 "0xd2bc9897eed08f15",
18179 2
18180 ],
18181 [
18182 "0xf78b278be53f454c",
18183 2
18184 ],
18185 [
18186 "0xaf2c0297a23e6d3d",
18187 1
18188 ],
18189 [
18190 "0xed99c5acb25eedf5",
18191 2
18192 ],
18193 [
18194 "0xcbca25e39f142387",
18195 2
18196 ],
18197 [
18198 "0x687ad44ad37f03c2",
18199 1
18200 ],
18201 [
18202 "0xab3c0572291feb8b",
18203 1
18204 ],
18205 [
18206 "0xbc9d89904f5b923f",
18207 1
18208 ],
18209 [
18210 "0x37c8bb1350a9a2a8",
18211 1
18212 ]
18213 ]
18214 ],
18215 [
18216 5478664,
18217 900,
18218 [
18219 [
18220 "0xdf6acb689907609b",
18221 3
18222 ],
18223 [
18224 "0x37e397fc7c91f5e4",
18225 1
18226 ],
18227 [
18228 "0x40fe3ad401f8959a",
18229 4
18230 ],
18231 [
18232 "0xd2bc9897eed08f15",
18233 2
18234 ],
18235 [
18236 "0xf78b278be53f454c",
18237 2
18238 ],
18239 [
18240 "0xaf2c0297a23e6d3d",
18241 1
18242 ],
18243 [
18244 "0xed99c5acb25eedf5",
18245 2
18246 ],
18247 [
18248 "0xcbca25e39f142387",
18249 2
18250 ],
18251 [
18252 "0x687ad44ad37f03c2",
18253 1
18254 ],
18255 [
18256 "0xab3c0572291feb8b",
18257 1
18258 ],
18259 [
18260 "0xbc9d89904f5b923f",
18261 1
18262 ],
18263 [
18264 "0x37c8bb1350a9a2a8",
18265 1
18266 ]
18267 ]
18268 ],
18269 [
18270 5482450,
18271 9000,
18272 [
18273 [
18274 "0xdf6acb689907609b",
18275 3
18276 ],
18277 [
18278 "0x37e397fc7c91f5e4",
18279 1
18280 ],
18281 [
18282 "0x40fe3ad401f8959a",
18283 4
18284 ],
18285 [
18286 "0xd2bc9897eed08f15",
18287 2
18288 ],
18289 [
18290 "0xf78b278be53f454c",
18291 2
18292 ],
18293 [
18294 "0xaf2c0297a23e6d3d",
18295 1
18296 ],
18297 [
18298 "0x49eaaf1b548a0cb0",
18299 1
18300 ],
18301 [
18302 "0x91d5df18b0d2cf58",
18303 1
18304 ],
18305 [
18306 "0xed99c5acb25eedf5",
18307 2
18308 ],
18309 [
18310 "0xcbca25e39f142387",
18311 2
18312 ],
18313 [
18314 "0x687ad44ad37f03c2",
18315 1
18316 ],
18317 [
18318 "0xab3c0572291feb8b",
18319 1
18320 ],
18321 [
18322 "0xbc9d89904f5b923f",
18323 1
18324 ],
18325 [
18326 "0x37c8bb1350a9a2a8",
18327 1
18328 ]
18329 ]
18330 ],
18331 [
18332 5584305,
18333 9010,
18334 [
18335 [
18336 "0xdf6acb689907609b",
18337 3
18338 ],
18339 [
18340 "0x37e397fc7c91f5e4",
18341 1
18342 ],
18343 [
18344 "0x40fe3ad401f8959a",
18345 5
18346 ],
18347 [
18348 "0xd2bc9897eed08f15",
18349 2
18350 ],
18351 [
18352 "0xf78b278be53f454c",
18353 2
18354 ],
18355 [
18356 "0xaf2c0297a23e6d3d",
18357 1
18358 ],
18359 [
18360 "0x49eaaf1b548a0cb0",
18361 1
18362 ],
18363 [
18364 "0x91d5df18b0d2cf58",
18365 1
18366 ],
18367 [
18368 "0xed99c5acb25eedf5",
18369 2
18370 ],
18371 [
18372 "0xcbca25e39f142387",
18373 2
18374 ],
18375 [
18376 "0x687ad44ad37f03c2",
18377 1
18378 ],
18379 [
18380 "0xab3c0572291feb8b",
18381 1
18382 ],
18383 [
18384 "0xbc9d89904f5b923f",
18385 1
18386 ],
18387 [
18388 "0x37c8bb1350a9a2a8",
18389 1
18390 ]
18391 ]
18392 ],
18393 [
18394 5784566,
18395 9030,
18396 [
18397 [
18398 "0xdf6acb689907609b",
18399 3
18400 ],
18401 [
18402 "0x37e397fc7c91f5e4",
18403 1
18404 ],
18405 [
18406 "0x40fe3ad401f8959a",
18407 5
18408 ],
18409 [
18410 "0xd2bc9897eed08f15",
18411 2
18412 ],
18413 [
18414 "0xf78b278be53f454c",
18415 2
18416 ],
18417 [
18418 "0xaf2c0297a23e6d3d",
18419 1
18420 ],
18421 [
18422 "0x49eaaf1b548a0cb0",
18423 1
18424 ],
18425 [
18426 "0x91d5df18b0d2cf58",
18427 1
18428 ],
18429 [
18430 "0xed99c5acb25eedf5",
18431 2
18432 ],
18433 [
18434 "0xcbca25e39f142387",
18435 2
18436 ],
18437 [
18438 "0x687ad44ad37f03c2",
18439 1
18440 ],
18441 [
18442 "0xab3c0572291feb8b",
18443 1
18444 ],
18445 [
18446 "0xbc9d89904f5b923f",
18447 1
18448 ],
18449 [
18450 "0x37c8bb1350a9a2a8",
18451 1
18452 ]
18453 ]
18454 ],
18455 [
18456 5879822,
18457 9031,
18458 [
18459 [
18460 "0xdf6acb689907609b",
18461 3
18462 ],
18463 [
18464 "0x37e397fc7c91f5e4",
18465 1
18466 ],
18467 [
18468 "0x40fe3ad401f8959a",
18469 5
18470 ],
18471 [
18472 "0xd2bc9897eed08f15",
18473 2
18474 ],
18475 [
18476 "0xf78b278be53f454c",
18477 2
18478 ],
18479 [
18480 "0xaf2c0297a23e6d3d",
18481 1
18482 ],
18483 [
18484 "0x49eaaf1b548a0cb0",
18485 1
18486 ],
18487 [
18488 "0x91d5df18b0d2cf58",
18489 1
18490 ],
18491 [
18492 "0xed99c5acb25eedf5",
18493 2
18494 ],
18495 [
18496 "0xcbca25e39f142387",
18497 2
18498 ],
18499 [
18500 "0x687ad44ad37f03c2",
18501 1
18502 ],
18503 [
18504 "0xab3c0572291feb8b",
18505 1
18506 ],
18507 [
18508 "0xbc9d89904f5b923f",
18509 1
18510 ],
18511 [
18512 "0x37c8bb1350a9a2a8",
18513 1
18514 ]
18515 ]
18516 ],
18517 [
18518 5896856,
18519 9032,
18520 [
18521 [
18522 "0xdf6acb689907609b",
18523 3
18524 ],
18525 [
18526 "0x37e397fc7c91f5e4",
18527 1
18528 ],
18529 [
18530 "0x40fe3ad401f8959a",
18531 5
18532 ],
18533 [
18534 "0xd2bc9897eed08f15",
18535 2
18536 ],
18537 [
18538 "0xf78b278be53f454c",
18539 2
18540 ],
18541 [
18542 "0xaf2c0297a23e6d3d",
18543 1
18544 ],
18545 [
18546 "0x49eaaf1b548a0cb0",
18547 1
18548 ],
18549 [
18550 "0x91d5df18b0d2cf58",
18551 1
18552 ],
18553 [
18554 "0xed99c5acb25eedf5",
18555 2
18556 ],
18557 [
18558 "0xcbca25e39f142387",
18559 2
18560 ],
18561 [
18562 "0x687ad44ad37f03c2",
18563 1
18564 ],
18565 [
18566 "0xab3c0572291feb8b",
18567 1
18568 ],
18569 [
18570 "0xbc9d89904f5b923f",
18571 1
18572 ],
18573 [
18574 "0x37c8bb1350a9a2a8",
18575 1
18576 ]
18577 ]
18578 ],
18579 [
18580 5897316,
18581 9033,
18582 [
18583 [
18584 "0xdf6acb689907609b",
18585 3
18586 ],
18587 [
18588 "0x37e397fc7c91f5e4",
18589 1
18590 ],
18591 [
18592 "0x40fe3ad401f8959a",
18593 5
18594 ],
18595 [
18596 "0xd2bc9897eed08f15",
18597 2
18598 ],
18599 [
18600 "0xf78b278be53f454c",
18601 2
18602 ],
18603 [
18604 "0xaf2c0297a23e6d3d",
18605 1
18606 ],
18607 [
18608 "0x49eaaf1b548a0cb0",
18609 1
18610 ],
18611 [
18612 "0x91d5df18b0d2cf58",
18613 1
18614 ],
18615 [
18616 "0xed99c5acb25eedf5",
18617 2
18618 ],
18619 [
18620 "0xcbca25e39f142387",
18621 2
18622 ],
18623 [
18624 "0x687ad44ad37f03c2",
18625 1
18626 ],
18627 [
18628 "0xab3c0572291feb8b",
18629 1
18630 ],
18631 [
18632 "0xbc9d89904f5b923f",
18633 1
18634 ],
18635 [
18636 "0x37c8bb1350a9a2a8",
18637 1
18638 ]
18639 ]
18640 ],
18641 [
18642 6117927,
18643 9050,
18644 [
18645 [
18646 "0xdf6acb689907609b",
18647 3
18648 ],
18649 [
18650 "0x37e397fc7c91f5e4",
18651 1
18652 ],
18653 [
18654 "0x40fe3ad401f8959a",
18655 5
18656 ],
18657 [
18658 "0xd2bc9897eed08f15",
18659 2
18660 ],
18661 [
18662 "0xf78b278be53f454c",
18663 2
18664 ],
18665 [
18666 "0xaf2c0297a23e6d3d",
18667 1
18668 ],
18669 [
18670 "0x49eaaf1b548a0cb0",
18671 1
18672 ],
18673 [
18674 "0x91d5df18b0d2cf58",
18675 1
18676 ],
18677 [
18678 "0xed99c5acb25eedf5",
18679 2
18680 ],
18681 [
18682 "0xcbca25e39f142387",
18683 2
18684 ],
18685 [
18686 "0x687ad44ad37f03c2",
18687 1
18688 ],
18689 [
18690 "0xab3c0572291feb8b",
18691 1
18692 ],
18693 [
18694 "0xbc9d89904f5b923f",
18695 1
18696 ],
18697 [
18698 "0x37c8bb1350a9a2a8",
18699 1
18700 ]
18701 ]
18702 ],
18703 [
18704 6210274,
18705 9070,
18706 [
18707 [
18708 "0xdf6acb689907609b",
18709 3
18710 ],
18711 [
18712 "0x37e397fc7c91f5e4",
18713 1
18714 ],
18715 [
18716 "0x40fe3ad401f8959a",
18717 5
18718 ],
18719 [
18720 "0xd2bc9897eed08f15",
18721 2
18722 ],
18723 [
18724 "0xf78b278be53f454c",
18725 2
18726 ],
18727 [
18728 "0xaf2c0297a23e6d3d",
18729 1
18730 ],
18731 [
18732 "0x49eaaf1b548a0cb0",
18733 1
18734 ],
18735 [
18736 "0x91d5df18b0d2cf58",
18737 1
18738 ],
18739 [
18740 "0xed99c5acb25eedf5",
18741 2
18742 ],
18743 [
18744 "0xcbca25e39f142387",
18745 2
18746 ],
18747 [
18748 "0x687ad44ad37f03c2",
18749 1
18750 ],
18751 [
18752 "0xab3c0572291feb8b",
18753 1
18754 ],
18755 [
18756 "0xbc9d89904f5b923f",
18757 1
18758 ],
18759 [
18760 "0x37c8bb1350a9a2a8",
18761 1
18762 ]
18763 ]
18764 ],
18765 [
18766 6379314,
18767 9080,
18768 [
18769 [
18770 "0xdf6acb689907609b",
18771 3
18772 ],
18773 [
18774 "0x37e397fc7c91f5e4",
18775 1
18776 ],
18777 [
18778 "0x40fe3ad401f8959a",
18779 5
18780 ],
18781 [
18782 "0xd2bc9897eed08f15",
18783 3
18784 ],
18785 [
18786 "0xf78b278be53f454c",
18787 2
18788 ],
18789 [
18790 "0xaf2c0297a23e6d3d",
18791 1
18792 ],
18793 [
18794 "0x49eaaf1b548a0cb0",
18795 1
18796 ],
18797 [
18798 "0x91d5df18b0d2cf58",
18799 1
18800 ],
18801 [
18802 "0xed99c5acb25eedf5",
18803 2
18804 ],
18805 [
18806 "0xcbca25e39f142387",
18807 2
18808 ],
18809 [
18810 "0x687ad44ad37f03c2",
18811 1
18812 ],
18813 [
18814 "0xab3c0572291feb8b",
18815 1
18816 ],
18817 [
18818 "0xbc9d89904f5b923f",
18819 1
18820 ],
18821 [
18822 "0x37c8bb1350a9a2a8",
18823 1
18824 ]
18825 ]
18826 ],
18827 [
18828 6979141,
18829 9090,
18830 [
18831 [
18832 "0xdf6acb689907609b",
18833 3
18834 ],
18835 [
18836 "0x37e397fc7c91f5e4",
18837 1
18838 ],
18839 [
18840 "0x40fe3ad401f8959a",
18841 5
18842 ],
18843 [
18844 "0xd2bc9897eed08f15",
18845 3
18846 ],
18847 [
18848 "0xf78b278be53f454c",
18849 2
18850 ],
18851 [
18852 "0xaf2c0297a23e6d3d",
18853 1
18854 ],
18855 [
18856 "0x49eaaf1b548a0cb0",
18857 1
18858 ],
18859 [
18860 "0x91d5df18b0d2cf58",
18861 1
18862 ],
18863 [
18864 "0xed99c5acb25eedf5",
18865 3
18866 ],
18867 [
18868 "0xcbca25e39f142387",
18869 2
18870 ],
18871 [
18872 "0x687ad44ad37f03c2",
18873 1
18874 ],
18875 [
18876 "0xab3c0572291feb8b",
18877 1
18878 ],
18879 [
18880 "0xbc9d89904f5b923f",
18881 1
18882 ],
18883 [
18884 "0x37c8bb1350a9a2a8",
18885 1
18886 ]
18887 ]
18888 ],
18889 [
18890 7568453,
18891 9100,
18892 [
18893 [
18894 "0xdf6acb689907609b",
18895 3
18896 ],
18897 [
18898 "0x37e397fc7c91f5e4",
18899 1
18900 ],
18901 [
18902 "0x40fe3ad401f8959a",
18903 5
18904 ],
18905 [
18906 "0xd2bc9897eed08f15",
18907 3
18908 ],
18909 [
18910 "0xf78b278be53f454c",
18911 2
18912 ],
18913 [
18914 "0xaf2c0297a23e6d3d",
18915 1
18916 ],
18917 [
18918 "0x49eaaf1b548a0cb0",
18919 1
18920 ],
18921 [
18922 "0x91d5df18b0d2cf58",
18923 1
18924 ],
18925 [
18926 "0xed99c5acb25eedf5",
18927 3
18928 ],
18929 [
18930 "0xcbca25e39f142387",
18931 2
18932 ],
18933 [
18934 "0x687ad44ad37f03c2",
18935 1
18936 ],
18937 [
18938 "0xab3c0572291feb8b",
18939 1
18940 ],
18941 [
18942 "0xbc9d89904f5b923f",
18943 1
18944 ],
18945 [
18946 "0x37c8bb1350a9a2a8",
18947 1
18948 ]
18949 ]
18950 ],
18951 [
18952 7766394,
18953 9111,
18954 [
18955 [
18956 "0xdf6acb689907609b",
18957 3
18958 ],
18959 [
18960 "0x37e397fc7c91f5e4",
18961 1
18962 ],
18963 [
18964 "0x40fe3ad401f8959a",
18965 5
18966 ],
18967 [
18968 "0xd2bc9897eed08f15",
18969 3
18970 ],
18971 [
18972 "0xf78b278be53f454c",
18973 2
18974 ],
18975 [
18976 "0xaf2c0297a23e6d3d",
18977 1
18978 ],
18979 [
18980 "0x49eaaf1b548a0cb0",
18981 1
18982 ],
18983 [
18984 "0x91d5df18b0d2cf58",
18985 1
18986 ],
18987 [
18988 "0xed99c5acb25eedf5",
18989 3
18990 ],
18991 [
18992 "0xcbca25e39f142387",
18993 2
18994 ],
18995 [
18996 "0x687ad44ad37f03c2",
18997 1
18998 ],
18999 [
19000 "0xab3c0572291feb8b",
19001 1
19002 ],
19003 [
19004 "0xbc9d89904f5b923f",
19005 1
19006 ],
19007 [
19008 "0x37c8bb1350a9a2a8",
19009 1
19010 ]
19011 ]
19012 ],
19013 [
19014 7911691,
19015 9120,
19016 [
19017 [
19018 "0xdf6acb689907609b",
19019 3
19020 ],
19021 [
19022 "0x37e397fc7c91f5e4",
19023 1
19024 ],
19025 [
19026 "0x40fe3ad401f8959a",
19027 5
19028 ],
19029 [
19030 "0xd2bc9897eed08f15",
19031 3
19032 ],
19033 [
19034 "0xf78b278be53f454c",
19035 2
19036 ],
19037 [
19038 "0xaf2c0297a23e6d3d",
19039 1
19040 ],
19041 [
19042 "0x49eaaf1b548a0cb0",
19043 1
19044 ],
19045 [
19046 "0x91d5df18b0d2cf58",
19047 1
19048 ],
19049 [
19050 "0xed99c5acb25eedf5",
19051 3
19052 ],
19053 [
19054 "0xcbca25e39f142387",
19055 2
19056 ],
19057 [
19058 "0x687ad44ad37f03c2",
19059 1
19060 ],
19061 [
19062 "0xab3c0572291feb8b",
19063 1
19064 ],
19065 [
19066 "0xbc9d89904f5b923f",
19067 1
19068 ],
19069 [
19070 "0x37c8bb1350a9a2a8",
19071 1
19072 ]
19073 ]
19074 ],
19075 [
19076 7968866,
19077 9121,
19078 [
19079 [
19080 "0xdf6acb689907609b",
19081 3
19082 ],
19083 [
19084 "0x37e397fc7c91f5e4",
19085 1
19086 ],
19087 [
19088 "0x40fe3ad401f8959a",
19089 5
19090 ],
19091 [
19092 "0xd2bc9897eed08f15",
19093 3
19094 ],
19095 [
19096 "0xf78b278be53f454c",
19097 2
19098 ],
19099 [
19100 "0xaf2c0297a23e6d3d",
19101 1
19102 ],
19103 [
19104 "0x49eaaf1b548a0cb0",
19105 1
19106 ],
19107 [
19108 "0x91d5df18b0d2cf58",
19109 1
19110 ],
19111 [
19112 "0xed99c5acb25eedf5",
19113 3
19114 ],
19115 [
19116 "0xcbca25e39f142387",
19117 2
19118 ],
19119 [
19120 "0x687ad44ad37f03c2",
19121 1
19122 ],
19123 [
19124 "0xab3c0572291feb8b",
19125 1
19126 ],
19127 [
19128 "0xbc9d89904f5b923f",
19129 1
19130 ],
19131 [
19132 "0x37c8bb1350a9a2a8",
19133 1
19134 ]
19135 ]
19136 ],
19137 [
19138 7982889,
19139 9122,
19140 [
19141 [
19142 "0xdf6acb689907609b",
19143 3
19144 ],
19145 [
19146 "0x37e397fc7c91f5e4",
19147 1
19148 ],
19149 [
19150 "0x40fe3ad401f8959a",
19151 5
19152 ],
19153 [
19154 "0xd2bc9897eed08f15",
19155 3
19156 ],
19157 [
19158 "0xf78b278be53f454c",
19159 2
19160 ],
19161 [
19162 "0xaf2c0297a23e6d3d",
19163 1
19164 ],
19165 [
19166 "0x49eaaf1b548a0cb0",
19167 1
19168 ],
19169 [
19170 "0x91d5df18b0d2cf58",
19171 1
19172 ],
19173 [
19174 "0xed99c5acb25eedf5",
19175 3
19176 ],
19177 [
19178 "0xcbca25e39f142387",
19179 2
19180 ],
19181 [
19182 "0x687ad44ad37f03c2",
19183 1
19184 ],
19185 [
19186 "0xab3c0572291feb8b",
19187 1
19188 ],
19189 [
19190 "0xbc9d89904f5b923f",
19191 1
19192 ],
19193 [
19194 "0x37c8bb1350a9a2a8",
19195 1
19196 ]
19197 ]
19198 ],
19199 [
19200 8514322,
19201 9130,
19202 [
19203 [
19204 "0xdf6acb689907609b",
19205 3
19206 ],
19207 [
19208 "0x37e397fc7c91f5e4",
19209 1
19210 ],
19211 [
19212 "0x40fe3ad401f8959a",
19213 5
19214 ],
19215 [
19216 "0xd2bc9897eed08f15",
19217 3
19218 ],
19219 [
19220 "0xf78b278be53f454c",
19221 2
19222 ],
19223 [
19224 "0xaf2c0297a23e6d3d",
19225 1
19226 ],
19227 [
19228 "0x49eaaf1b548a0cb0",
19229 1
19230 ],
19231 [
19232 "0x91d5df18b0d2cf58",
19233 1
19234 ],
19235 [
19236 "0xed99c5acb25eedf5",
19237 3
19238 ],
19239 [
19240 "0xcbca25e39f142387",
19241 2
19242 ],
19243 [
19244 "0x687ad44ad37f03c2",
19245 1
19246 ],
19247 [
19248 "0xab3c0572291feb8b",
19249 1
19250 ],
19251 [
19252 "0xbc9d89904f5b923f",
19253 1
19254 ],
19255 [
19256 "0x37c8bb1350a9a2a8",
19257 1
19258 ]
19259 ]
19260 ],
19261 [
19262 9091726,
19263 9140,
19264 [
19265 [
19266 "0xdf6acb689907609b",
19267 3
19268 ],
19269 [
19270 "0x37e397fc7c91f5e4",
19271 1
19272 ],
19273 [
19274 "0x40fe3ad401f8959a",
19275 5
19276 ],
19277 [
19278 "0xd2bc9897eed08f15",
19279 3
19280 ],
19281 [
19282 "0xf78b278be53f454c",
19283 2
19284 ],
19285 [
19286 "0xaf2c0297a23e6d3d",
19287 1
19288 ],
19289 [
19290 "0x49eaaf1b548a0cb0",
19291 1
19292 ],
19293 [
19294 "0x91d5df18b0d2cf58",
19295 1
19296 ],
19297 [
19298 "0xed99c5acb25eedf5",
19299 3
19300 ],
19301 [
19302 "0xcbca25e39f142387",
19303 2
19304 ],
19305 [
19306 "0x687ad44ad37f03c2",
19307 1
19308 ],
19309 [
19310 "0xab3c0572291feb8b",
19311 1
19312 ],
19313 [
19314 "0xbc9d89904f5b923f",
19315 1
19316 ],
19317 [
19318 "0x37c8bb1350a9a2a8",
19319 1
19320 ]
19321 ]
19322 ],
19323 [
19324 9091774,
19325 9150,
19326 [
19327 [
19328 "0xdf6acb689907609b",
19329 3
19330 ],
19331 [
19332 "0x37e397fc7c91f5e4",
19333 1
19334 ],
19335 [
19336 "0x40fe3ad401f8959a",
19337 5
19338 ],
19339 [
19340 "0xd2bc9897eed08f15",
19341 3
19342 ],
19343 [
19344 "0xf78b278be53f454c",
19345 2
19346 ],
19347 [
19348 "0xaf2c0297a23e6d3d",
19349 1
19350 ],
19351 [
19352 "0x49eaaf1b548a0cb0",
19353 1
19354 ],
19355 [
19356 "0x91d5df18b0d2cf58",
19357 1
19358 ],
19359 [
19360 "0xed99c5acb25eedf5",
19361 3
19362 ],
19363 [
19364 "0xcbca25e39f142387",
19365 2
19366 ],
19367 [
19368 "0x687ad44ad37f03c2",
19369 1
19370 ],
19371 [
19372 "0xab3c0572291feb8b",
19373 1
19374 ],
19375 [
19376 "0xbc9d89904f5b923f",
19377 1
19378 ],
19379 [
19380 "0x37c8bb1350a9a2a8",
19381 1
19382 ]
19383 ]
19384 ],
19385 [
19386 9406726,
19387 9160,
19388 [
19389 [
19390 "0xdf6acb689907609b",
19391 4
19392 ],
19393 [
19394 "0x37e397fc7c91f5e4",
19395 1
19396 ],
19397 [
19398 "0x40fe3ad401f8959a",
19399 5
19400 ],
19401 [
19402 "0xd2bc9897eed08f15",
19403 3
19404 ],
19405 [
19406 "0xf78b278be53f454c",
19407 2
19408 ],
19409 [
19410 "0xaf2c0297a23e6d3d",
19411 2
19412 ],
19413 [
19414 "0x49eaaf1b548a0cb0",
19415 1
19416 ],
19417 [
19418 "0x91d5df18b0d2cf58",
19419 1
19420 ],
19421 [
19422 "0xed99c5acb25eedf5",
19423 3
19424 ],
19425 [
19426 "0xcbca25e39f142387",
19427 2
19428 ],
19429 [
19430 "0x687ad44ad37f03c2",
19431 1
19432 ],
19433 [
19434 "0xab3c0572291feb8b",
19435 1
19436 ],
19437 [
19438 "0xbc9d89904f5b923f",
19439 1
19440 ],
19441 [
19442 "0x37c8bb1350a9a2a8",
19443 1
19444 ]
19445 ]
19446 ],
19447 [
19448 9921066,
19449 9170,
19450 [
19451 [
19452 "0xdf6acb689907609b",
19453 4
19454 ],
19455 [
19456 "0x37e397fc7c91f5e4",
19457 1
19458 ],
19459 [
19460 "0x40fe3ad401f8959a",
19461 5
19462 ],
19463 [
19464 "0xd2bc9897eed08f15",
19465 3
19466 ],
19467 [
19468 "0xf78b278be53f454c",
19469 2
19470 ],
19471 [
19472 "0xaf2c0297a23e6d3d",
19473 2
19474 ],
19475 [
19476 "0x49eaaf1b548a0cb0",
19477 1
19478 ],
19479 [
19480 "0x91d5df18b0d2cf58",
19481 1
19482 ],
19483 [
19484 "0xed99c5acb25eedf5",
19485 3
19486 ],
19487 [
19488 "0xcbca25e39f142387",
19489 2
19490 ],
19491 [
19492 "0x687ad44ad37f03c2",
19493 1
19494 ],
19495 [
19496 "0xab3c0572291feb8b",
19497 1
19498 ],
19499 [
19500 "0xbc9d89904f5b923f",
19501 1
19502 ],
19503 [
19504 "0x37c8bb1350a9a2a8",
19505 1
19506 ]
19507 ]
19508 ],
19509 [
19510 10007115,
19511 9180,
19512 [
19513 [
19514 "0xdf6acb689907609b",
19515 4
19516 ],
19517 [
19518 "0x37e397fc7c91f5e4",
19519 1
19520 ],
19521 [
19522 "0x40fe3ad401f8959a",
19523 5
19524 ],
19525 [
19526 "0xd2bc9897eed08f15",
19527 3
19528 ],
19529 [
19530 "0xf78b278be53f454c",
19531 2
19532 ],
19533 [
19534 "0xaf2c0297a23e6d3d",
19535 2
19536 ],
19537 [
19538 "0x49eaaf1b548a0cb0",
19539 1
19540 ],
19541 [
19542 "0x91d5df18b0d2cf58",
19543 1
19544 ],
19545 [
19546 "0xed99c5acb25eedf5",
19547 3
19548 ],
19549 [
19550 "0xcbca25e39f142387",
19551 2
19552 ],
19553 [
19554 "0x687ad44ad37f03c2",
19555 1
19556 ],
19557 [
19558 "0xab3c0572291feb8b",
19559 1
19560 ],
19561 [
19562 "0xbc9d89904f5b923f",
19563 1
19564 ],
19565 [
19566 "0x37c8bb1350a9a2a8",
19567 1
19568 ]
19569 ]
19570 ],
19571 [
19572 10480973,
19573 9190,
19574 [
19575 [
19576 "0xdf6acb689907609b",
19577 4
19578 ],
19579 [
19580 "0x37e397fc7c91f5e4",
19581 1
19582 ],
19583 [
19584 "0x40fe3ad401f8959a",
19585 6
19586 ],
19587 [
19588 "0xd2bc9897eed08f15",
19589 3
19590 ],
19591 [
19592 "0xf78b278be53f454c",
19593 2
19594 ],
19595 [
19596 "0xaf2c0297a23e6d3d",
19597 2
19598 ],
19599 [
19600 "0x49eaaf1b548a0cb0",
19601 1
19602 ],
19603 [
19604 "0x91d5df18b0d2cf58",
19605 1
19606 ],
19607 [
19608 "0xed99c5acb25eedf5",
19609 3
19610 ],
19611 [
19612 "0xcbca25e39f142387",
19613 2
19614 ],
19615 [
19616 "0x687ad44ad37f03c2",
19617 1
19618 ],
19619 [
19620 "0xab3c0572291feb8b",
19621 1
19622 ],
19623 [
19624 "0xbc9d89904f5b923f",
19625 1
19626 ],
19627 [
19628 "0x37c8bb1350a9a2a8",
19629 1
19630 ]
19631 ]
19632 ],
19633 [
19634 10578091,
19635 9200,
19636 [
19637 [
19638 "0xdf6acb689907609b",
19639 4
19640 ],
19641 [
19642 "0x37e397fc7c91f5e4",
19643 1
19644 ],
19645 [
19646 "0x40fe3ad401f8959a",
19647 6
19648 ],
19649 [
19650 "0xd2bc9897eed08f15",
19651 3
19652 ],
19653 [
19654 "0xf78b278be53f454c",
19655 2
19656 ],
19657 [
19658 "0xaf2c0297a23e6d3d",
19659 2
19660 ],
19661 [
19662 "0x49eaaf1b548a0cb0",
19663 1
19664 ],
19665 [
19666 "0x91d5df18b0d2cf58",
19667 1
19668 ],
19669 [
19670 "0xed99c5acb25eedf5",
19671 3
19672 ],
19673 [
19674 "0xcbca25e39f142387",
19675 2
19676 ],
19677 [
19678 "0x687ad44ad37f03c2",
19679 1
19680 ],
19681 [
19682 "0xab3c0572291feb8b",
19683 1
19684 ],
19685 [
19686 "0xbc9d89904f5b923f",
19687 1
19688 ],
19689 [
19690 "0x37c8bb1350a9a2a8",
19691 1
19692 ]
19693 ]
19694 ],
19695 [
19696 10678509,
19697 9210,
19698 [
19699 [
19700 "0xdf6acb689907609b",
19701 4
19702 ],
19703 [
19704 "0x37e397fc7c91f5e4",
19705 1
19706 ],
19707 [
19708 "0x40fe3ad401f8959a",
19709 6
19710 ],
19711 [
19712 "0xd2bc9897eed08f15",
19713 3
19714 ],
19715 [
19716 "0xf78b278be53f454c",
19717 2
19718 ],
19719 [
19720 "0xaf2c0297a23e6d3d",
19721 2
19722 ],
19723 [
19724 "0x49eaaf1b548a0cb0",
19725 1
19726 ],
19727 [
19728 "0x91d5df18b0d2cf58",
19729 1
19730 ],
19731 [
19732 "0xed99c5acb25eedf5",
19733 3
19734 ],
19735 [
19736 "0xcbca25e39f142387",
19737 2
19738 ],
19739 [
19740 "0x687ad44ad37f03c2",
19741 1
19742 ],
19743 [
19744 "0xab3c0572291feb8b",
19745 1
19746 ],
19747 [
19748 "0xbc9d89904f5b923f",
19749 1
19750 ],
19751 [
19752 "0x37c8bb1350a9a2a8",
19753 1
19754 ]
19755 ]
19756 ],
19757 [
19758 10811001,
19759 9220,
19760 [
19761 [
19762 "0xdf6acb689907609b",
19763 4
19764 ],
19765 [
19766 "0x37e397fc7c91f5e4",
19767 1
19768 ],
19769 [
19770 "0x40fe3ad401f8959a",
19771 6
19772 ],
19773 [
19774 "0xd2bc9897eed08f15",
19775 3
19776 ],
19777 [
19778 "0xf78b278be53f454c",
19779 2
19780 ],
19781 [
19782 "0xaf2c0297a23e6d3d",
19783 2
19784 ],
19785 [
19786 "0x49eaaf1b548a0cb0",
19787 1
19788 ],
19789 [
19790 "0x91d5df18b0d2cf58",
19791 1
19792 ],
19793 [
19794 "0xed99c5acb25eedf5",
19795 3
19796 ],
19797 [
19798 "0xcbca25e39f142387",
19799 2
19800 ],
19801 [
19802 "0x687ad44ad37f03c2",
19803 1
19804 ],
19805 [
19806 "0xab3c0572291feb8b",
19807 1
19808 ],
19809 [
19810 "0xbc9d89904f5b923f",
19811 1
19812 ],
19813 [
19814 "0x37c8bb1350a9a2a8",
19815 1
19816 ]
19817 ]
19818 ],
19819 [
19820 11096116,
19821 9230,
19822 [
19823 [
19824 "0xdf6acb689907609b",
19825 4
19826 ],
19827 [
19828 "0x37e397fc7c91f5e4",
19829 1
19830 ],
19831 [
19832 "0x40fe3ad401f8959a",
19833 6
19834 ],
19835 [
19836 "0xd2bc9897eed08f15",
19837 3
19838 ],
19839 [
19840 "0xf78b278be53f454c",
19841 2
19842 ],
19843 [
19844 "0xaf2c0297a23e6d3d",
19845 2
19846 ],
19847 [
19848 "0x49eaaf1b548a0cb0",
19849 1
19850 ],
19851 [
19852 "0x91d5df18b0d2cf58",
19853 1
19854 ],
19855 [
19856 "0xed99c5acb25eedf5",
19857 3
19858 ],
19859 [
19860 "0xcbca25e39f142387",
19861 2
19862 ],
19863 [
19864 "0x687ad44ad37f03c2",
19865 1
19866 ],
19867 [
19868 "0xab3c0572291feb8b",
19869 1
19870 ],
19871 [
19872 "0xbc9d89904f5b923f",
19873 1
19874 ],
19875 [
19876 "0x37c8bb1350a9a2a8",
19877 1
19878 ]
19879 ]
19880 ],
19881 [
19882 11409279,
19883 9250,
19884 [
19885 [
19886 "0xdf6acb689907609b",
19887 4
19888 ],
19889 [
19890 "0x37e397fc7c91f5e4",
19891 1
19892 ],
19893 [
19894 "0x40fe3ad401f8959a",
19895 6
19896 ],
19897 [
19898 "0xd2bc9897eed08f15",
19899 3
19900 ],
19901 [
19902 "0xf78b278be53f454c",
19903 2
19904 ],
19905 [
19906 "0xaf2c0297a23e6d3d",
19907 2
19908 ],
19909 [
19910 "0x49eaaf1b548a0cb0",
19911 1
19912 ],
19913 [
19914 "0x91d5df18b0d2cf58",
19915 1
19916 ],
19917 [
19918 "0xed99c5acb25eedf5",
19919 3
19920 ],
19921 [
19922 "0xcbca25e39f142387",
19923 2
19924 ],
19925 [
19926 "0x687ad44ad37f03c2",
19927 1
19928 ],
19929 [
19930 "0xab3c0572291feb8b",
19931 1
19932 ],
19933 [
19934 "0xbc9d89904f5b923f",
19935 1
19936 ],
19937 [
19938 "0x37c8bb1350a9a2a8",
19939 1
19940 ]
19941 ]
19942 ],
19943 [
19944 11584820,
19945 9251,
19946 [
19947 [
19948 "0xdf6acb689907609b",
19949 4
19950 ],
19951 [
19952 "0x37e397fc7c91f5e4",
19953 1
19954 ],
19955 [
19956 "0x40fe3ad401f8959a",
19957 6
19958 ],
19959 [
19960 "0xd2bc9897eed08f15",
19961 3
19962 ],
19963 [
19964 "0xf78b278be53f454c",
19965 2
19966 ],
19967 [
19968 "0xaf2c0297a23e6d3d",
19969 2
19970 ],
19971 [
19972 "0x49eaaf1b548a0cb0",
19973 1
19974 ],
19975 [
19976 "0x91d5df18b0d2cf58",
19977 1
19978 ],
19979 [
19980 "0xed99c5acb25eedf5",
19981 3
19982 ],
19983 [
19984 "0xcbca25e39f142387",
19985 2
19986 ],
19987 [
19988 "0x687ad44ad37f03c2",
19989 1
19990 ],
19991 [
19992 "0xab3c0572291feb8b",
19993 1
19994 ],
19995 [
19996 "0xbc9d89904f5b923f",
19997 1
19998 ],
19999 [
20000 "0x37c8bb1350a9a2a8",
20001 1
20002 ]
20003 ]
20004 ],
20005 [
20006 11716837,
20007 9260,
20008 [
20009 [
20010 "0xdf6acb689907609b",
20011 4
20012 ],
20013 [
20014 "0x37e397fc7c91f5e4",
20015 1
20016 ],
20017 [
20018 "0x40fe3ad401f8959a",
20019 6
20020 ],
20021 [
20022 "0xd2bc9897eed08f15",
20023 3
20024 ],
20025 [
20026 "0xf78b278be53f454c",
20027 2
20028 ],
20029 [
20030 "0xaf2c0297a23e6d3d",
20031 2
20032 ],
20033 [
20034 "0x49eaaf1b548a0cb0",
20035 1
20036 ],
20037 [
20038 "0x91d5df18b0d2cf58",
20039 1
20040 ],
20041 [
20042 "0xed99c5acb25eedf5",
20043 3
20044 ],
20045 [
20046 "0xcbca25e39f142387",
20047 2
20048 ],
20049 [
20050 "0x687ad44ad37f03c2",
20051 1
20052 ],
20053 [
20054 "0xab3c0572291feb8b",
20055 1
20056 ],
20057 [
20058 "0xbc9d89904f5b923f",
20059 1
20060 ],
20061 [
20062 "0x37c8bb1350a9a2a8",
20063 1
20064 ]
20065 ]
20066 ],
20067 [
20068 11876919,
20069 9261,
20070 [
20071 [
20072 "0xdf6acb689907609b",
20073 4
20074 ],
20075 [
20076 "0x37e397fc7c91f5e4",
20077 1
20078 ],
20079 [
20080 "0x40fe3ad401f8959a",
20081 6
20082 ],
20083 [
20084 "0xd2bc9897eed08f15",
20085 3
20086 ],
20087 [
20088 "0xf78b278be53f454c",
20089 2
20090 ],
20091 [
20092 "0xaf2c0297a23e6d3d",
20093 2
20094 ],
20095 [
20096 "0x49eaaf1b548a0cb0",
20097 1
20098 ],
20099 [
20100 "0x91d5df18b0d2cf58",
20101 1
20102 ],
20103 [
20104 "0xed99c5acb25eedf5",
20105 3
20106 ],
20107 [
20108 "0xcbca25e39f142387",
20109 2
20110 ],
20111 [
20112 "0x687ad44ad37f03c2",
20113 1
20114 ],
20115 [
20116 "0xab3c0572291feb8b",
20117 1
20118 ],
20119 [
20120 "0xbc9d89904f5b923f",
20121 1
20122 ],
20123 [
20124 "0x37c8bb1350a9a2a8",
20125 1
20126 ]
20127 ]
20128 ],
20129 [
20130 11987927,
20131 9270,
20132 [
20133 [
20134 "0xdf6acb689907609b",
20135 4
20136 ],
20137 [
20138 "0x37e397fc7c91f5e4",
20139 1
20140 ],
20141 [
20142 "0x40fe3ad401f8959a",
20143 6
20144 ],
20145 [
20146 "0xd2bc9897eed08f15",
20147 3
20148 ],
20149 [
20150 "0xf78b278be53f454c",
20151 2
20152 ],
20153 [
20154 "0xaf2c0297a23e6d3d",
20155 2
20156 ],
20157 [
20158 "0x49eaaf1b548a0cb0",
20159 1
20160 ],
20161 [
20162 "0x91d5df18b0d2cf58",
20163 1
20164 ],
20165 [
20166 "0xed99c5acb25eedf5",
20167 3
20168 ],
20169 [
20170 "0xcbca25e39f142387",
20171 2
20172 ],
20173 [
20174 "0x687ad44ad37f03c2",
20175 1
20176 ],
20177 [
20178 "0xab3c0572291feb8b",
20179 1
20180 ],
20181 [
20182 "0xbc9d89904f5b923f",
20183 1
20184 ],
20185 [
20186 "0x37c8bb1350a9a2a8",
20187 1
20188 ],
20189 [
20190 "0x17a6bc0d0062aeb3",
20191 1
20192 ]
20193 ]
20194 ],
20195 [
20196 12077324,
20197 9271,
20198 [
20199 [
20200 "0xdf6acb689907609b",
20201 4
20202 ],
20203 [
20204 "0x37e397fc7c91f5e4",
20205 1
20206 ],
20207 [
20208 "0x40fe3ad401f8959a",
20209 6
20210 ],
20211 [
20212 "0xd2bc9897eed08f15",
20213 3
20214 ],
20215 [
20216 "0xf78b278be53f454c",
20217 2
20218 ],
20219 [
20220 "0xaf2c0297a23e6d3d",
20221 2
20222 ],
20223 [
20224 "0x49eaaf1b548a0cb0",
20225 1
20226 ],
20227 [
20228 "0x91d5df18b0d2cf58",
20229 1
20230 ],
20231 [
20232 "0xed99c5acb25eedf5",
20233 3
20234 ],
20235 [
20236 "0xcbca25e39f142387",
20237 2
20238 ],
20239 [
20240 "0x687ad44ad37f03c2",
20241 1
20242 ],
20243 [
20244 "0xab3c0572291feb8b",
20245 1
20246 ],
20247 [
20248 "0xbc9d89904f5b923f",
20249 1
20250 ],
20251 [
20252 "0x37c8bb1350a9a2a8",
20253 1
20254 ],
20255 [
20256 "0x17a6bc0d0062aeb3",
20257 1
20258 ]
20259 ]
20260 ],
20261 [
20262 12301871,
20263 9280,
20264 [
20265 [
20266 "0xdf6acb689907609b",
20267 4
20268 ],
20269 [
20270 "0x37e397fc7c91f5e4",
20271 1
20272 ],
20273 [
20274 "0x40fe3ad401f8959a",
20275 6
20276 ],
20277 [
20278 "0xd2bc9897eed08f15",
20279 3
20280 ],
20281 [
20282 "0xf78b278be53f454c",
20283 2
20284 ],
20285 [
20286 "0xaf2c0297a23e6d3d",
20287 2
20288 ],
20289 [
20290 "0x49eaaf1b548a0cb0",
20291 1
20292 ],
20293 [
20294 "0x91d5df18b0d2cf58",
20295 1
20296 ],
20297 [
20298 "0xed99c5acb25eedf5",
20299 3
20300 ],
20301 [
20302 "0xcbca25e39f142387",
20303 2
20304 ],
20305 [
20306 "0x687ad44ad37f03c2",
20307 1
20308 ],
20309 [
20310 "0xab3c0572291feb8b",
20311 1
20312 ],
20313 [
20314 "0xbc9d89904f5b923f",
20315 1
20316 ],
20317 [
20318 "0x37c8bb1350a9a2a8",
20319 1
20320 ],
20321 [
20322 "0xf3ff14d5ab527059",
20323 1
20324 ],
20325 [
20326 "0x17a6bc0d0062aeb3",
20327 1
20328 ]
20329 ]
20330 ],
20331 [
20332 12604343,
20333 9290,
20334 [
20335 [
20336 "0xdf6acb689907609b",
20337 4
20338 ],
20339 [
20340 "0x37e397fc7c91f5e4",
20341 1
20342 ],
20343 [
20344 "0x40fe3ad401f8959a",
20345 6
20346 ],
20347 [
20348 "0xd2bc9897eed08f15",
20349 3
20350 ],
20351 [
20352 "0xf78b278be53f454c",
20353 2
20354 ],
20355 [
20356 "0xaf2c0297a23e6d3d",
20357 2
20358 ],
20359 [
20360 "0x49eaaf1b548a0cb0",
20361 1
20362 ],
20363 [
20364 "0x91d5df18b0d2cf58",
20365 1
20366 ],
20367 [
20368 "0xed99c5acb25eedf5",
20369 3
20370 ],
20371 [
20372 "0xcbca25e39f142387",
20373 2
20374 ],
20375 [
20376 "0x687ad44ad37f03c2",
20377 1
20378 ],
20379 [
20380 "0xab3c0572291feb8b",
20381 1
20382 ],
20383 [
20384 "0xbc9d89904f5b923f",
20385 1
20386 ],
20387 [
20388 "0x37c8bb1350a9a2a8",
20389 1
20390 ],
20391 [
20392 "0xf3ff14d5ab527059",
20393 1
20394 ],
20395 [
20396 "0x17a6bc0d0062aeb3",
20397 1
20398 ]
20399 ]
20400 ],
20401 [
20402 12841034,
20403 9300,
20404 [
20405 [
20406 "0xdf6acb689907609b",
20407 4
20408 ],
20409 [
20410 "0x37e397fc7c91f5e4",
20411 1
20412 ],
20413 [
20414 "0x40fe3ad401f8959a",
20415 6
20416 ],
20417 [
20418 "0xd2bc9897eed08f15",
20419 3
20420 ],
20421 [
20422 "0xf78b278be53f454c",
20423 2
20424 ],
20425 [
20426 "0xaf2c0297a23e6d3d",
20427 3
20428 ],
20429 [
20430 "0x49eaaf1b548a0cb0",
20431 1
20432 ],
20433 [
20434 "0x91d5df18b0d2cf58",
20435 1
20436 ],
20437 [
20438 "0xed99c5acb25eedf5",
20439 3
20440 ],
20441 [
20442 "0xcbca25e39f142387",
20443 2
20444 ],
20445 [
20446 "0x687ad44ad37f03c2",
20447 1
20448 ],
20449 [
20450 "0xab3c0572291feb8b",
20451 1
20452 ],
20453 [
20454 "0xbc9d89904f5b923f",
20455 1
20456 ],
20457 [
20458 "0x37c8bb1350a9a2a8",
20459 1
20460 ],
20461 [
20462 "0xf3ff14d5ab527059",
20463 1
20464 ],
20465 [
20466 "0x17a6bc0d0062aeb3",
20467 1
20468 ]
20469 ]
20470 ],
20471 [
20472 13128237,
20473 9310,
20474 [
20475 [
20476 "0xdf6acb689907609b",
20477 4
20478 ],
20479 [
20480 "0x37e397fc7c91f5e4",
20481 1
20482 ],
20483 [
20484 "0x40fe3ad401f8959a",
20485 6
20486 ],
20487 [
20488 "0xd2bc9897eed08f15",
20489 3
20490 ],
20491 [
20492 "0xf78b278be53f454c",
20493 2
20494 ],
20495 [
20496 "0xaf2c0297a23e6d3d",
20497 3
20498 ],
20499 [
20500 "0x49eaaf1b548a0cb0",
20501 1
20502 ],
20503 [
20504 "0x91d5df18b0d2cf58",
20505 1
20506 ],
20507 [
20508 "0xed99c5acb25eedf5",
20509 3
20510 ],
20511 [
20512 "0xcbca25e39f142387",
20513 2
20514 ],
20515 [
20516 "0x687ad44ad37f03c2",
20517 1
20518 ],
20519 [
20520 "0xab3c0572291feb8b",
20521 1
20522 ],
20523 [
20524 "0xbc9d89904f5b923f",
20525 1
20526 ],
20527 [
20528 "0x37c8bb1350a9a2a8",
20529 1
20530 ],
20531 [
20532 "0xf3ff14d5ab527059",
20533 1
20534 ],
20535 [
20536 "0x17a6bc0d0062aeb3",
20537 1
20538 ]
20539 ]
20540 ],
20541 [
20542 13272363,
20543 9320,
20544 [
20545 [
20546 "0xdf6acb689907609b",
20547 4
20548 ],
20549 [
20550 "0x37e397fc7c91f5e4",
20551 1
20552 ],
20553 [
20554 "0x40fe3ad401f8959a",
20555 6
20556 ],
20557 [
20558 "0xd2bc9897eed08f15",
20559 3
20560 ],
20561 [
20562 "0xf78b278be53f454c",
20563 2
20564 ],
20565 [
20566 "0xaf2c0297a23e6d3d",
20567 3
20568 ],
20569 [
20570 "0x49eaaf1b548a0cb0",
20571 1
20572 ],
20573 [
20574 "0x91d5df18b0d2cf58",
20575 1
20576 ],
20577 [
20578 "0xed99c5acb25eedf5",
20579 3
20580 ],
20581 [
20582 "0xcbca25e39f142387",
20583 2
20584 ],
20585 [
20586 "0x687ad44ad37f03c2",
20587 1
20588 ],
20589 [
20590 "0xab3c0572291feb8b",
20591 1
20592 ],
20593 [
20594 "0xbc9d89904f5b923f",
20595 1
20596 ],
20597 [
20598 "0x37c8bb1350a9a2a8",
20599 2
20600 ],
20601 [
20602 "0xf3ff14d5ab527059",
20603 2
20604 ],
20605 [
20606 "0x17a6bc0d0062aeb3",
20607 1
20608 ]
20609 ]
20610 ],
20611 [
20612 13483497,
20613 9330,
20614 [
20615 [
20616 "0xdf6acb689907609b",
20617 4
20618 ],
20619 [
20620 "0x37e397fc7c91f5e4",
20621 1
20622 ],
20623 [
20624 "0x40fe3ad401f8959a",
20625 6
20626 ],
20627 [
20628 "0xd2bc9897eed08f15",
20629 3
20630 ],
20631 [
20632 "0xf78b278be53f454c",
20633 2
20634 ],
20635 [
20636 "0xaf2c0297a23e6d3d",
20637 3
20638 ],
20639 [
20640 "0x49eaaf1b548a0cb0",
20641 1
20642 ],
20643 [
20644 "0x91d5df18b0d2cf58",
20645 1
20646 ],
20647 [
20648 "0xed99c5acb25eedf5",
20649 3
20650 ],
20651 [
20652 "0xcbca25e39f142387",
20653 2
20654 ],
20655 [
20656 "0x687ad44ad37f03c2",
20657 1
20658 ],
20659 [
20660 "0xab3c0572291feb8b",
20661 1
20662 ],
20663 [
20664 "0xbc9d89904f5b923f",
20665 1
20666 ],
20667 [
20668 "0x37c8bb1350a9a2a8",
20669 2
20670 ],
20671 [
20672 "0xf3ff14d5ab527059",
20673 2
20674 ],
20675 [
20676 "0x17a6bc0d0062aeb3",
20677 1
20678 ]
20679 ]
20680 ],
20681 [
20682 13649433,
20683 9340,
20684 [
20685 [
20686 "0xdf6acb689907609b",
20687 4
20688 ],
20689 [
20690 "0x37e397fc7c91f5e4",
20691 1
20692 ],
20693 [
20694 "0x40fe3ad401f8959a",
20695 6
20696 ],
20697 [
20698 "0xd2bc9897eed08f15",
20699 3
20700 ],
20701 [
20702 "0xf78b278be53f454c",
20703 2
20704 ],
20705 [
20706 "0xaf2c0297a23e6d3d",
20707 3
20708 ],
20709 [
20710 "0x49eaaf1b548a0cb0",
20711 1
20712 ],
20713 [
20714 "0x91d5df18b0d2cf58",
20715 1
20716 ],
20717 [
20718 "0xed99c5acb25eedf5",
20719 3
20720 ],
20721 [
20722 "0xcbca25e39f142387",
20723 2
20724 ],
20725 [
20726 "0x687ad44ad37f03c2",
20727 1
20728 ],
20729 [
20730 "0xab3c0572291feb8b",
20731 1
20732 ],
20733 [
20734 "0xbc9d89904f5b923f",
20735 1
20736 ],
20737 [
20738 "0x37c8bb1350a9a2a8",
20739 2
20740 ],
20741 [
20742 "0xf3ff14d5ab527059",
20743 2
20744 ],
20745 [
20746 "0x17a6bc0d0062aeb3",
20747 1
20748 ]
20749 ]
20750 ],
20751 [
20752 13761100,
20753 9350,
20754 [
20755 [
20756 "0xdf6acb689907609b",
20757 4
20758 ],
20759 [
20760 "0x37e397fc7c91f5e4",
20761 1
20762 ],
20763 [
20764 "0x40fe3ad401f8959a",
20765 6
20766 ],
20767 [
20768 "0xd2bc9897eed08f15",
20769 3
20770 ],
20771 [
20772 "0xf78b278be53f454c",
20773 2
20774 ],
20775 [
20776 "0xaf2c0297a23e6d3d",
20777 3
20778 ],
20779 [
20780 "0x49eaaf1b548a0cb0",
20781 1
20782 ],
20783 [
20784 "0x91d5df18b0d2cf58",
20785 1
20786 ],
20787 [
20788 "0xed99c5acb25eedf5",
20789 3
20790 ],
20791 [
20792 "0xcbca25e39f142387",
20793 2
20794 ],
20795 [
20796 "0x687ad44ad37f03c2",
20797 1
20798 ],
20799 [
20800 "0xab3c0572291feb8b",
20801 1
20802 ],
20803 [
20804 "0xbc9d89904f5b923f",
20805 1
20806 ],
20807 [
20808 "0x37c8bb1350a9a2a8",
20809 2
20810 ],
20811 [
20812 "0xf3ff14d5ab527059",
20813 2
20814 ],
20815 [
20816 "0x17a6bc0d0062aeb3",
20817 1
20818 ]
20819 ]
20820 ],
20821 [
20822 13847400,
20823 9360,
20824 [
20825 [
20826 "0xdf6acb689907609b",
20827 4
20828 ],
20829 [
20830 "0x37e397fc7c91f5e4",
20831 1
20832 ],
20833 [
20834 "0x40fe3ad401f8959a",
20835 6
20836 ],
20837 [
20838 "0xd2bc9897eed08f15",
20839 3
20840 ],
20841 [
20842 "0xf78b278be53f454c",
20843 2
20844 ],
20845 [
20846 "0xaf2c0297a23e6d3d",
20847 3
20848 ],
20849 [
20850 "0x49eaaf1b548a0cb0",
20851 1
20852 ],
20853 [
20854 "0x91d5df18b0d2cf58",
20855 1
20856 ],
20857 [
20858 "0xed99c5acb25eedf5",
20859 3
20860 ],
20861 [
20862 "0xcbca25e39f142387",
20863 2
20864 ],
20865 [
20866 "0x687ad44ad37f03c2",
20867 1
20868 ],
20869 [
20870 "0xab3c0572291feb8b",
20871 1
20872 ],
20873 [
20874 "0xbc9d89904f5b923f",
20875 1
20876 ],
20877 [
20878 "0x37c8bb1350a9a2a8",
20879 2
20880 ],
20881 [
20882 "0xf3ff14d5ab527059",
20883 2
20884 ],
20885 [
20886 "0x17a6bc0d0062aeb3",
20887 1
20888 ]
20889 ]
20890 ],
20891 [
20892 14249200,
20893 9370,
20894 [
20895 [
20896 "0xdf6acb689907609b",
20897 4
20898 ],
20899 [
20900 "0x37e397fc7c91f5e4",
20901 1
20902 ],
20903 [
20904 "0x40fe3ad401f8959a",
20905 6
20906 ],
20907 [
20908 "0xd2bc9897eed08f15",
20909 3
20910 ],
20911 [
20912 "0xf78b278be53f454c",
20913 2
20914 ],
20915 [
20916 "0xaf2c0297a23e6d3d",
20917 3
20918 ],
20919 [
20920 "0x49eaaf1b548a0cb0",
20921 1
20922 ],
20923 [
20924 "0x91d5df18b0d2cf58",
20925 1
20926 ],
20927 [
20928 "0xed99c5acb25eedf5",
20929 3
20930 ],
20931 [
20932 "0xcbca25e39f142387",
20933 2
20934 ],
20935 [
20936 "0x687ad44ad37f03c2",
20937 1
20938 ],
20939 [
20940 "0xab3c0572291feb8b",
20941 1
20942 ],
20943 [
20944 "0xbc9d89904f5b923f",
20945 1
20946 ],
20947 [
20948 "0x37c8bb1350a9a2a8",
20949 2
20950 ],
20951 [
20952 "0xf3ff14d5ab527059",
20953 2
20954 ],
20955 [
20956 "0x17a6bc0d0062aeb3",
20957 1
20958 ]
20959 ]
20960 ],
20961 [
20962 14576855,
20963 9380,
20964 [
20965 [
20966 "0xdf6acb689907609b",
20967 4
20968 ],
20969 [
20970 "0x37e397fc7c91f5e4",
20971 1
20972 ],
20973 [
20974 "0x40fe3ad401f8959a",
20975 6
20976 ],
20977 [
20978 "0xd2bc9897eed08f15",
20979 3
20980 ],
20981 [
20982 "0xf78b278be53f454c",
20983 2
20984 ],
20985 [
20986 "0xaf2c0297a23e6d3d",
20987 3
20988 ],
20989 [
20990 "0x49eaaf1b548a0cb0",
20991 1
20992 ],
20993 [
20994 "0x91d5df18b0d2cf58",
20995 1
20996 ],
20997 [
20998 "0xed99c5acb25eedf5",
20999 3
21000 ],
21001 [
21002 "0xcbca25e39f142387",
21003 2
21004 ],
21005 [
21006 "0x687ad44ad37f03c2",
21007 1
21008 ],
21009 [
21010 "0xab3c0572291feb8b",
21011 1
21012 ],
21013 [
21014 "0xbc9d89904f5b923f",
21015 1
21016 ],
21017 [
21018 "0x37c8bb1350a9a2a8",
21019 3
21020 ],
21021 [
21022 "0xf3ff14d5ab527059",
21023 3
21024 ],
21025 [
21026 "0x17a6bc0d0062aeb3",
21027 1
21028 ]
21029 ]
21030 ],
21031 [
21032 14849830,
21033 9390,
21034 [
21035 [
21036 "0xdf6acb689907609b",
21037 4
21038 ],
21039 [
21040 "0x37e397fc7c91f5e4",
21041 1
21042 ],
21043 [
21044 "0x40fe3ad401f8959a",
21045 6
21046 ],
21047 [
21048 "0xd2bc9897eed08f15",
21049 3
21050 ],
21051 [
21052 "0xf78b278be53f454c",
21053 2
21054 ],
21055 [
21056 "0xaf2c0297a23e6d3d",
21057 4
21058 ],
21059 [
21060 "0x49eaaf1b548a0cb0",
21061 1
21062 ],
21063 [
21064 "0x91d5df18b0d2cf58",
21065 1
21066 ],
21067 [
21068 "0xed99c5acb25eedf5",
21069 3
21070 ],
21071 [
21072 "0xcbca25e39f142387",
21073 2
21074 ],
21075 [
21076 "0x687ad44ad37f03c2",
21077 1
21078 ],
21079 [
21080 "0xab3c0572291feb8b",
21081 1
21082 ],
21083 [
21084 "0xbc9d89904f5b923f",
21085 1
21086 ],
21087 [
21088 "0x37c8bb1350a9a2a8",
21089 3
21090 ],
21091 [
21092 "0xf3ff14d5ab527059",
21093 3
21094 ],
21095 [
21096 "0x17a6bc0d0062aeb3",
21097 1
21098 ],
21099 [
21100 "0x18ef58a3b67ba770",
21101 1
21102 ]
21103 ]
21104 ],
21105 [
21106 15146832,
21107 9400,
21108 [
21109 [
21110 "0xdf6acb689907609b",
21111 4
21112 ],
21113 [
21114 "0x37e397fc7c91f5e4",
21115 1
21116 ],
21117 [
21118 "0x40fe3ad401f8959a",
21119 6
21120 ],
21121 [
21122 "0xd2bc9897eed08f15",
21123 3
21124 ],
21125 [
21126 "0xf78b278be53f454c",
21127 2
21128 ],
21129 [
21130 "0xaf2c0297a23e6d3d",
21131 4
21132 ],
21133 [
21134 "0x49eaaf1b548a0cb0",
21135 2
21136 ],
21137 [
21138 "0x91d5df18b0d2cf58",
21139 2
21140 ],
21141 [
21142 "0xed99c5acb25eedf5",
21143 3
21144 ],
21145 [
21146 "0xcbca25e39f142387",
21147 2
21148 ],
21149 [
21150 "0x687ad44ad37f03c2",
21151 1
21152 ],
21153 [
21154 "0xab3c0572291feb8b",
21155 1
21156 ],
21157 [
21158 "0xbc9d89904f5b923f",
21159 1
21160 ],
21161 [
21162 "0x37c8bb1350a9a2a8",
21163 3
21164 ],
21165 [
21166 "0xf3ff14d5ab527059",
21167 3
21168 ],
21169 [
21170 "0x17a6bc0d0062aeb3",
21171 1
21172 ],
21173 [
21174 "0x18ef58a3b67ba770",
21175 1
21176 ]
21177 ]
21178 ],
21179 [
21180 15332317,
21181 9401,
21182 [
21183 [
21184 "0xdf6acb689907609b",
21185 4
21186 ],
21187 [
21188 "0x37e397fc7c91f5e4",
21189 1
21190 ],
21191 [
21192 "0x40fe3ad401f8959a",
21193 6
21194 ],
21195 [
21196 "0xd2bc9897eed08f15",
21197 3
21198 ],
21199 [
21200 "0xf78b278be53f454c",
21201 2
21202 ],
21203 [
21204 "0xaf2c0297a23e6d3d",
21205 4
21206 ],
21207 [
21208 "0x49eaaf1b548a0cb0",
21209 2
21210 ],
21211 [
21212 "0x91d5df18b0d2cf58",
21213 2
21214 ],
21215 [
21216 "0xed99c5acb25eedf5",
21217 3
21218 ],
21219 [
21220 "0xcbca25e39f142387",
21221 2
21222 ],
21223 [
21224 "0x687ad44ad37f03c2",
21225 1
21226 ],
21227 [
21228 "0xab3c0572291feb8b",
21229 1
21230 ],
21231 [
21232 "0xbc9d89904f5b923f",
21233 1
21234 ],
21235 [
21236 "0x37c8bb1350a9a2a8",
21237 3
21238 ],
21239 [
21240 "0xf3ff14d5ab527059",
21241 3
21242 ],
21243 [
21244 "0x17a6bc0d0062aeb3",
21245 1
21246 ],
21247 [
21248 "0x18ef58a3b67ba770",
21249 1
21250 ]
21251 ]
21252 ],
21253 [
21254 15661793,
21255 9420,
21256 [
21257 [
21258 "0xdf6acb689907609b",
21259 4
21260 ],
21261 [
21262 "0x37e397fc7c91f5e4",
21263 2
21264 ],
21265 [
21266 "0x40fe3ad401f8959a",
21267 6
21268 ],
21269 [
21270 "0xd2bc9897eed08f15",
21271 3
21272 ],
21273 [
21274 "0xf78b278be53f454c",
21275 2
21276 ],
21277 [
21278 "0xaf2c0297a23e6d3d",
21279 4
21280 ],
21281 [
21282 "0x49eaaf1b548a0cb0",
21283 2
21284 ],
21285 [
21286 "0x91d5df18b0d2cf58",
21287 2
21288 ],
21289 [
21290 "0xed99c5acb25eedf5",
21291 3
21292 ],
21293 [
21294 "0xcbca25e39f142387",
21295 2
21296 ],
21297 [
21298 "0x687ad44ad37f03c2",
21299 1
21300 ],
21301 [
21302 "0xab3c0572291feb8b",
21303 1
21304 ],
21305 [
21306 "0xbc9d89904f5b923f",
21307 1
21308 ],
21309 [
21310 "0x37c8bb1350a9a2a8",
21311 4
21312 ],
21313 [
21314 "0xf3ff14d5ab527059",
21315 3
21316 ],
21317 [
21318 "0x17a6bc0d0062aeb3",
21319 1
21320 ],
21321 [
21322 "0x18ef58a3b67ba770",
21323 1
21324 ]
21325 ]
21326 ],
21327 [
21328 16165469,
21329 9430,
21330 [
21331 [
21332 "0xdf6acb689907609b",
21333 4
21334 ],
21335 [
21336 "0x37e397fc7c91f5e4",
21337 2
21338 ],
21339 [
21340 "0x40fe3ad401f8959a",
21341 6
21342 ],
21343 [
21344 "0xd2bc9897eed08f15",
21345 3
21346 ],
21347 [
21348 "0xf78b278be53f454c",
21349 2
21350 ],
21351 [
21352 "0xaf2c0297a23e6d3d",
21353 4
21354 ],
21355 [
21356 "0x49eaaf1b548a0cb0",
21357 2
21358 ],
21359 [
21360 "0x91d5df18b0d2cf58",
21361 2
21362 ],
21363 [
21364 "0xed99c5acb25eedf5",
21365 3
21366 ],
21367 [
21368 "0xcbca25e39f142387",
21369 2
21370 ],
21371 [
21372 "0x687ad44ad37f03c2",
21373 1
21374 ],
21375 [
21376 "0xab3c0572291feb8b",
21377 1
21378 ],
21379 [
21380 "0xbc9d89904f5b923f",
21381 1
21382 ],
21383 [
21384 "0x37c8bb1350a9a2a8",
21385 4
21386 ],
21387 [
21388 "0xf3ff14d5ab527059",
21389 3
21390 ],
21391 [
21392 "0x17a6bc0d0062aeb3",
21393 1
21394 ],
21395 [
21396 "0x18ef58a3b67ba770",
21397 1
21398 ]
21399 ]
21400 ],
21401 [
21402 18293984,
21403 102000,
21404 [
21405 [
21406 "0xdf6acb689907609b",
21407 4
21408 ],
21409 [
21410 "0x37e397fc7c91f5e4",
21411 2
21412 ],
21413 [
21414 "0x40fe3ad401f8959a",
21415 6
21416 ],
21417 [
21418 "0xd2bc9897eed08f15",
21419 3
21420 ],
21421 [
21422 "0xf78b278be53f454c",
21423 2
21424 ],
21425 [
21426 "0xaf2c0297a23e6d3d",
21427 7
21428 ],
21429 [
21430 "0x49eaaf1b548a0cb0",
21431 3
21432 ],
21433 [
21434 "0x91d5df18b0d2cf58",
21435 2
21436 ],
21437 [
21438 "0x2a5e924655399e60",
21439 1
21440 ],
21441 [
21442 "0xed99c5acb25eedf5",
21443 3
21444 ],
21445 [
21446 "0xcbca25e39f142387",
21447 2
21448 ],
21449 [
21450 "0x687ad44ad37f03c2",
21451 1
21452 ],
21453 [
21454 "0xab3c0572291feb8b",
21455 1
21456 ],
21457 [
21458 "0xbc9d89904f5b923f",
21459 1
21460 ],
21461 [
21462 "0x37c8bb1350a9a2a8",
21463 4
21464 ],
21465 [
21466 "0xf3ff14d5ab527059",
21467 3
21468 ],
21469 [
21470 "0x17a6bc0d0062aeb3",
21471 1
21472 ],
21473 [
21474 "0x18ef58a3b67ba770",
21475 1
21476 ],
21477 [
21478 "0xfbc577b9d747efd6",
21479 1
21480 ]
21481 ]
21482 ],
21483 [
21484 18293991,
21485 103000,
21486 [
21487 [
21488 "0xdf6acb689907609b",
21489 4
21490 ],
21491 [
21492 "0x37e397fc7c91f5e4",
21493 2
21494 ],
21495 [
21496 "0x40fe3ad401f8959a",
21497 6
21498 ],
21499 [
21500 "0xd2bc9897eed08f15",
21501 3
21502 ],
21503 [
21504 "0xf78b278be53f454c",
21505 2
21506 ],
21507 [
21508 "0xaf2c0297a23e6d3d",
21509 8
21510 ],
21511 [
21512 "0x49eaaf1b548a0cb0",
21513 3
21514 ],
21515 [
21516 "0x91d5df18b0d2cf58",
21517 2
21518 ],
21519 [
21520 "0x2a5e924655399e60",
21521 1
21522 ],
21523 [
21524 "0xed99c5acb25eedf5",
21525 3
21526 ],
21527 [
21528 "0xcbca25e39f142387",
21529 2
21530 ],
21531 [
21532 "0x687ad44ad37f03c2",
21533 1
21534 ],
21535 [
21536 "0xab3c0572291feb8b",
21537 1
21538 ],
21539 [
21540 "0xbc9d89904f5b923f",
21541 1
21542 ],
21543 [
21544 "0x37c8bb1350a9a2a8",
21545 4
21546 ],
21547 [
21548 "0xf3ff14d5ab527059",
21549 3
21550 ],
21551 [
21552 "0x17a6bc0d0062aeb3",
21553 1
21554 ],
21555 [
21556 "0x18ef58a3b67ba770",
21557 1
21558 ],
21559 [
21560 "0xfbc577b9d747efd6",
21561 1
21562 ]
21563 ]
21564 ],
21565 [
21566 18451783,
21567 104000,
21568 [
21569 [
21570 "0xdf6acb689907609b",
21571 4
21572 ],
21573 [
21574 "0x37e397fc7c91f5e4",
21575 2
21576 ],
21577 [
21578 "0x40fe3ad401f8959a",
21579 6
21580 ],
21581 [
21582 "0xd2bc9897eed08f15",
21583 3
21584 ],
21585 [
21586 "0xf78b278be53f454c",
21587 2
21588 ],
21589 [
21590 "0xaf2c0297a23e6d3d",
21591 9
21592 ],
21593 [
21594 "0x49eaaf1b548a0cb0",
21595 3
21596 ],
21597 [
21598 "0x91d5df18b0d2cf58",
21599 2
21600 ],
21601 [
21602 "0x2a5e924655399e60",
21603 1
21604 ],
21605 [
21606 "0xed99c5acb25eedf5",
21607 3
21608 ],
21609 [
21610 "0xcbca25e39f142387",
21611 2
21612 ],
21613 [
21614 "0x687ad44ad37f03c2",
21615 1
21616 ],
21617 [
21618 "0xab3c0572291feb8b",
21619 1
21620 ],
21621 [
21622 "0xbc9d89904f5b923f",
21623 1
21624 ],
21625 [
21626 "0x37c8bb1350a9a2a8",
21627 4
21628 ],
21629 [
21630 "0xf3ff14d5ab527059",
21631 3
21632 ],
21633 [
21634 "0x17a6bc0d0062aeb3",
21635 1
21636 ],
21637 [
21638 "0x18ef58a3b67ba770",
21639 1
21640 ],
21641 [
21642 "0xfbc577b9d747efd6",
21643 1
21644 ]
21645 ]
21646 ],
21647 [
21648 18679741,
21649 1005000,
21650 [
21651 [
21652 "0xdf6acb689907609b",
21653 4
21654 ],
21655 [
21656 "0x37e397fc7c91f5e4",
21657 2
21658 ],
21659 [
21660 "0x40fe3ad401f8959a",
21661 6
21662 ],
21663 [
21664 "0xd2bc9897eed08f15",
21665 3
21666 ],
21667 [
21668 "0xf78b278be53f454c",
21669 2
21670 ],
21671 [
21672 "0xaf2c0297a23e6d3d",
21673 9
21674 ],
21675 [
21676 "0x49eaaf1b548a0cb0",
21677 3
21678 ],
21679 [
21680 "0x91d5df18b0d2cf58",
21681 2
21682 ],
21683 [
21684 "0x2a5e924655399e60",
21685 1
21686 ],
21687 [
21688 "0xed99c5acb25eedf5",
21689 3
21690 ],
21691 [
21692 "0xcbca25e39f142387",
21693 2
21694 ],
21695 [
21696 "0x687ad44ad37f03c2",
21697 1
21698 ],
21699 [
21700 "0xab3c0572291feb8b",
21701 1
21702 ],
21703 [
21704 "0xbc9d89904f5b923f",
21705 1
21706 ],
21707 [
21708 "0x37c8bb1350a9a2a8",
21709 4
21710 ],
21711 [
21712 "0xf3ff14d5ab527059",
21713 3
21714 ],
21715 [
21716 "0x17a6bc0d0062aeb3",
21717 1
21718 ],
21719 [
21720 "0x18ef58a3b67ba770",
21721 1
21722 ],
21723 [
21724 "0xfbc577b9d747efd6",
21725 1
21726 ]
21727 ]
21728 ],
21729 [
21730 19166695,
21731 1006000,
21732 [
21733 [
21734 "0xdf6acb689907609b",
21735 4
21736 ],
21737 [
21738 "0x37e397fc7c91f5e4",
21739 2
21740 ],
21741 [
21742 "0x40fe3ad401f8959a",
21743 6
21744 ],
21745 [
21746 "0xd2bc9897eed08f15",
21747 3
21748 ],
21749 [
21750 "0xf78b278be53f454c",
21751 2
21752 ],
21753 [
21754 "0xaf2c0297a23e6d3d",
21755 10
21756 ],
21757 [
21758 "0x49eaaf1b548a0cb0",
21759 3
21760 ],
21761 [
21762 "0x91d5df18b0d2cf58",
21763 2
21764 ],
21765 [
21766 "0x2a5e924655399e60",
21767 1
21768 ],
21769 [
21770 "0xed99c5acb25eedf5",
21771 3
21772 ],
21773 [
21774 "0xcbca25e39f142387",
21775 2
21776 ],
21777 [
21778 "0x687ad44ad37f03c2",
21779 1
21780 ],
21781 [
21782 "0xab3c0572291feb8b",
21783 1
21784 ],
21785 [
21786 "0xbc9d89904f5b923f",
21787 1
21788 ],
21789 [
21790 "0x37c8bb1350a9a2a8",
21791 4
21792 ],
21793 [
21794 "0xf3ff14d5ab527059",
21795 3
21796 ],
21797 [
21798 "0x17a6bc0d0062aeb3",
21799 1
21800 ],
21801 [
21802 "0x18ef58a3b67ba770",
21803 1
21804 ],
21805 [
21806 "0xfbc577b9d747efd6",
21807 1
21808 ]
21809 ]
21810 ],
21811 [
21812 19234157,
21813 1006001,
21814 [
21815 [
21816 "0xdf6acb689907609b",
21817 4
21818 ],
21819 [
21820 "0x37e397fc7c91f5e4",
21821 2
21822 ],
21823 [
21824 "0x40fe3ad401f8959a",
21825 6
21826 ],
21827 [
21828 "0xd2bc9897eed08f15",
21829 3
21830 ],
21831 [
21832 "0xf78b278be53f454c",
21833 2
21834 ],
21835 [
21836 "0xaf2c0297a23e6d3d",
21837 10
21838 ],
21839 [
21840 "0x49eaaf1b548a0cb0",
21841 3
21842 ],
21843 [
21844 "0x91d5df18b0d2cf58",
21845 2
21846 ],
21847 [
21848 "0x2a5e924655399e60",
21849 1
21850 ],
21851 [
21852 "0xed99c5acb25eedf5",
21853 3
21854 ],
21855 [
21856 "0xcbca25e39f142387",
21857 2
21858 ],
21859 [
21860 "0x687ad44ad37f03c2",
21861 1
21862 ],
21863 [
21864 "0xab3c0572291feb8b",
21865 1
21866 ],
21867 [
21868 "0xbc9d89904f5b923f",
21869 1
21870 ],
21871 [
21872 "0x37c8bb1350a9a2a8",
21873 4
21874 ],
21875 [
21876 "0xf3ff14d5ab527059",
21877 3
21878 ],
21879 [
21880 "0x17a6bc0d0062aeb3",
21881 1
21882 ],
21883 [
21884 "0x18ef58a3b67ba770",
21885 1
21886 ],
21887 [
21888 "0xfbc577b9d747efd6",
21889 1
21890 ]
21891 ]
21892 ],
21893 [
21894 19542944,
21895 1007000,
21896 [
21897 [
21898 "0xdf6acb689907609b",
21899 4
21900 ],
21901 [
21902 "0x37e397fc7c91f5e4",
21903 2
21904 ],
21905 [
21906 "0x40fe3ad401f8959a",
21907 6
21908 ],
21909 [
21910 "0xd2bc9897eed08f15",
21911 3
21912 ],
21913 [
21914 "0xf78b278be53f454c",
21915 2
21916 ],
21917 [
21918 "0xaf2c0297a23e6d3d",
21919 10
21920 ],
21921 [
21922 "0x49eaaf1b548a0cb0",
21923 3
21924 ],
21925 [
21926 "0x91d5df18b0d2cf58",
21927 2
21928 ],
21929 [
21930 "0x2a5e924655399e60",
21931 1
21932 ],
21933 [
21934 "0xed99c5acb25eedf5",
21935 3
21936 ],
21937 [
21938 "0xcbca25e39f142387",
21939 2
21940 ],
21941 [
21942 "0x687ad44ad37f03c2",
21943 1
21944 ],
21945 [
21946 "0xab3c0572291feb8b",
21947 1
21948 ],
21949 [
21950 "0xbc9d89904f5b923f",
21951 1
21952 ],
21953 [
21954 "0x37c8bb1350a9a2a8",
21955 4
21956 ],
21957 [
21958 "0xf3ff14d5ab527059",
21959 3
21960 ],
21961 [
21962 "0x17a6bc0d0062aeb3",
21963 1
21964 ],
21965 [
21966 "0x18ef58a3b67ba770",
21967 1
21968 ],
21969 [
21970 "0xfbc577b9d747efd6",
21971 1
21972 ]
21973 ]
21974 ],
21975 [
21976 19621258,
21977 1007001,
21978 [
21979 [
21980 "0xdf6acb689907609b",
21981 4
21982 ],
21983 [
21984 "0x37e397fc7c91f5e4",
21985 2
21986 ],
21987 [
21988 "0x40fe3ad401f8959a",
21989 6
21990 ],
21991 [
21992 "0xd2bc9897eed08f15",
21993 3
21994 ],
21995 [
21996 "0xf78b278be53f454c",
21997 2
21998 ],
21999 [
22000 "0xaf2c0297a23e6d3d",
22001 10
22002 ],
22003 [
22004 "0x49eaaf1b548a0cb0",
22005 3
22006 ],
22007 [
22008 "0x91d5df18b0d2cf58",
22009 2
22010 ],
22011 [
22012 "0x2a5e924655399e60",
22013 1
22014 ],
22015 [
22016 "0xed99c5acb25eedf5",
22017 3
22018 ],
22019 [
22020 "0xcbca25e39f142387",
22021 2
22022 ],
22023 [
22024 "0x687ad44ad37f03c2",
22025 1
22026 ],
22027 [
22028 "0xab3c0572291feb8b",
22029 1
22030 ],
22031 [
22032 "0xbc9d89904f5b923f",
22033 1
22034 ],
22035 [
22036 "0x37c8bb1350a9a2a8",
22037 4
22038 ],
22039 [
22040 "0xf3ff14d5ab527059",
22041 3
22042 ],
22043 [
22044 "0x17a6bc0d0062aeb3",
22045 1
22046 ],
22047 [
22048 "0x18ef58a3b67ba770",
22049 1
22050 ],
22051 [
22052 "0xfbc577b9d747efd6",
22053 1
22054 ]
22055 ]
22056 ],
22057 [
22058 19761406,
22059 1008000,
22060 [
22061 [
22062 "0xdf6acb689907609b",
22063 4
22064 ],
22065 [
22066 "0x37e397fc7c91f5e4",
22067 2
22068 ],
22069 [
22070 "0x40fe3ad401f8959a",
22071 6
22072 ],
22073 [
22074 "0xd2bc9897eed08f15",
22075 3
22076 ],
22077 [
22078 "0xf78b278be53f454c",
22079 2
22080 ],
22081 [
22082 "0xaf2c0297a23e6d3d",
22083 10
22084 ],
22085 [
22086 "0x49eaaf1b548a0cb0",
22087 3
22088 ],
22089 [
22090 "0x91d5df18b0d2cf58",
22091 2
22092 ],
22093 [
22094 "0x2a5e924655399e60",
22095 1
22096 ],
22097 [
22098 "0xed99c5acb25eedf5",
22099 3
22100 ],
22101 [
22102 "0xcbca25e39f142387",
22103 2
22104 ],
22105 [
22106 "0x687ad44ad37f03c2",
22107 1
22108 ],
22109 [
22110 "0xab3c0572291feb8b",
22111 1
22112 ],
22113 [
22114 "0xbc9d89904f5b923f",
22115 1
22116 ],
22117 [
22118 "0x37c8bb1350a9a2a8",
22119 4
22120 ],
22121 [
22122 "0xf3ff14d5ab527059",
22123 3
22124 ],
22125 [
22126 "0x17a6bc0d0062aeb3",
22127 1
22128 ],
22129 [
22130 "0x18ef58a3b67ba770",
22131 1
22132 ],
22133 [
22134 "0xfbc577b9d747efd6",
22135 1
22136 ]
22137 ]
22138 ],
22139 [
22140 20056997,
22141 1009000,
22142 [
22143 [
22144 "0xdf6acb689907609b",
22145 5
22146 ],
22147 [
22148 "0x37e397fc7c91f5e4",
22149 2
22150 ],
22151 [
22152 "0x40fe3ad401f8959a",
22153 6
22154 ],
22155 [
22156 "0xd2bc9897eed08f15",
22157 3
22158 ],
22159 [
22160 "0xf78b278be53f454c",
22161 2
22162 ],
22163 [
22164 "0xaf2c0297a23e6d3d",
22165 10
22166 ],
22167 [
22168 "0x49eaaf1b548a0cb0",
22169 3
22170 ],
22171 [
22172 "0x91d5df18b0d2cf58",
22173 2
22174 ],
22175 [
22176 "0x2a5e924655399e60",
22177 1
22178 ],
22179 [
22180 "0xed99c5acb25eedf5",
22181 3
22182 ],
22183 [
22184 "0xcbca25e39f142387",
22185 2
22186 ],
22187 [
22188 "0x687ad44ad37f03c2",
22189 1
22190 ],
22191 [
22192 "0xab3c0572291feb8b",
22193 1
22194 ],
22195 [
22196 "0xbc9d89904f5b923f",
22197 1
22198 ],
22199 [
22200 "0x37c8bb1350a9a2a8",
22201 4
22202 ],
22203 [
22204 "0xf3ff14d5ab527059",
22205 3
22206 ],
22207 [
22208 "0x17a6bc0d0062aeb3",
22209 1
22210 ],
22211 [
22212 "0x18ef58a3b67ba770",
22213 1
22214 ],
22215 [
22216 "0xfbc577b9d747efd6",
22217 1
22218 ]
22219 ]
22220 ],
22221 [
22222 20368318,
22223 1010000,
22224 [
22225 [
22226 "0xdf6acb689907609b",
22227 5
22228 ],
22229 [
22230 "0x37e397fc7c91f5e4",
22231 2
22232 ],
22233 [
22234 "0x40fe3ad401f8959a",
22235 6
22236 ],
22237 [
22238 "0xd2bc9897eed08f15",
22239 3
22240 ],
22241 [
22242 "0xf78b278be53f454c",
22243 2
22244 ],
22245 [
22246 "0xaf2c0297a23e6d3d",
22247 10
22248 ],
22249 [
22250 "0x49eaaf1b548a0cb0",
22251 3
22252 ],
22253 [
22254 "0x91d5df18b0d2cf58",
22255 2
22256 ],
22257 [
22258 "0x2a5e924655399e60",
22259 1
22260 ],
22261 [
22262 "0xed99c5acb25eedf5",
22263 3
22264 ],
22265 [
22266 "0xcbca25e39f142387",
22267 2
22268 ],
22269 [
22270 "0x687ad44ad37f03c2",
22271 1
22272 ],
22273 [
22274 "0xab3c0572291feb8b",
22275 1
22276 ],
22277 [
22278 "0xbc9d89904f5b923f",
22279 1
22280 ],
22281 [
22282 "0x37c8bb1350a9a2a8",
22283 4
22284 ],
22285 [
22286 "0xf3ff14d5ab527059",
22287 3
22288 ],
22289 [
22290 "0x6ff52ee858e6c5bd",
22291 1
22292 ],
22293 [
22294 "0x17a6bc0d0062aeb3",
22295 1
22296 ],
22297 [
22298 "0x18ef58a3b67ba770",
22299 1
22300 ],
22301 [
22302 "0xfbc577b9d747efd6",
22303 1
22304 ]
22305 ]
22306 ],
22307 [
22308 20649086,
22309 1011000,
22310 [
22311 [
22312 "0xdf6acb689907609b",
22313 5
22314 ],
22315 [
22316 "0x37e397fc7c91f5e4",
22317 2
22318 ],
22319 [
22320 "0x40fe3ad401f8959a",
22321 6
22322 ],
22323 [
22324 "0xd2bc9897eed08f15",
22325 3
22326 ],
22327 [
22328 "0xf78b278be53f454c",
22329 2
22330 ],
22331 [
22332 "0xaf2c0297a23e6d3d",
22333 11
22334 ],
22335 [
22336 "0x49eaaf1b548a0cb0",
22337 3
22338 ],
22339 [
22340 "0x91d5df18b0d2cf58",
22341 2
22342 ],
22343 [
22344 "0x2a5e924655399e60",
22345 1
22346 ],
22347 [
22348 "0xed99c5acb25eedf5",
22349 3
22350 ],
22351 [
22352 "0xcbca25e39f142387",
22353 2
22354 ],
22355 [
22356 "0x687ad44ad37f03c2",
22357 1
22358 ],
22359 [
22360 "0xab3c0572291feb8b",
22361 1
22362 ],
22363 [
22364 "0xbc9d89904f5b923f",
22365 1
22366 ],
22367 [
22368 "0x37c8bb1350a9a2a8",
22369 4
22370 ],
22371 [
22372 "0xf3ff14d5ab527059",
22373 3
22374 ],
22375 [
22376 "0x6ff52ee858e6c5bd",
22377 1
22378 ],
22379 [
22380 "0x17a6bc0d0062aeb3",
22381 1
22382 ],
22383 [
22384 "0x18ef58a3b67ba770",
22385 1
22386 ],
22387 [
22388 "0xfbc577b9d747efd6",
22389 1
22390 ]
22391 ]
22392 ],
22393 [
22394 21217837,
22395 1011001,
22396 [
22397 [
22398 "0xdf6acb689907609b",
22399 5
22400 ],
22401 [
22402 "0x37e397fc7c91f5e4",
22403 2
22404 ],
22405 [
22406 "0x40fe3ad401f8959a",
22407 6
22408 ],
22409 [
22410 "0xd2bc9897eed08f15",
22411 3
22412 ],
22413 [
22414 "0xf78b278be53f454c",
22415 2
22416 ],
22417 [
22418 "0xaf2c0297a23e6d3d",
22419 11
22420 ],
22421 [
22422 "0x49eaaf1b548a0cb0",
22423 3
22424 ],
22425 [
22426 "0x91d5df18b0d2cf58",
22427 2
22428 ],
22429 [
22430 "0x2a5e924655399e60",
22431 1
22432 ],
22433 [
22434 "0xed99c5acb25eedf5",
22435 3
22436 ],
22437 [
22438 "0xcbca25e39f142387",
22439 2
22440 ],
22441 [
22442 "0x687ad44ad37f03c2",
22443 1
22444 ],
22445 [
22446 "0xab3c0572291feb8b",
22447 1
22448 ],
22449 [
22450 "0xbc9d89904f5b923f",
22451 1
22452 ],
22453 [
22454 "0x37c8bb1350a9a2a8",
22455 4
22456 ],
22457 [
22458 "0xf3ff14d5ab527059",
22459 3
22460 ],
22461 [
22462 "0x6ff52ee858e6c5bd",
22463 1
22464 ],
22465 [
22466 "0x17a6bc0d0062aeb3",
22467 1
22468 ],
22469 [
22470 "0x18ef58a3b67ba770",
22471 1
22472 ],
22473 [
22474 "0xfbc577b9d747efd6",
22475 1
22476 ]
22477 ]
22478 ]
22479 ];
22480
22481 const allKnown = /*#__PURE__*/Object.freeze({
22482 __proto__: null,
22483 kusama: upgrades$3,
22484 polkadot: upgrades$2,
22485 westend: upgrades$1
22486 });
22487
22488 const NET_EXTRA = {
22489 westend: {
22490 genesisHash: ['0xe143f23803ac50e8f6f8e62695d1ce9e4e1d68aa36c1cd2cfd15340213f3423e']
22491 }
22492 };
22493 function mapRaw([network, versions]) {
22494 const chain = utilCrypto.selectableNetworks.find((n) => n.network === network) || NET_EXTRA[network];
22495 if (!chain) {
22496 throw new Error(`Unable to find info for chain ${network}`);
22497 }
22498 return {
22499 genesisHash: util.hexToU8a(chain.genesisHash[0]),
22500 network,
22501 versions: versions.map(([blockNumber, specVersion, apis]) => ({
22502 apis,
22503 blockNumber: new util.BN(blockNumber),
22504 specVersion: new util.BN(specVersion)
22505 }))
22506 };
22507 }
22508 const upgrades = Object.entries(allKnown).map(mapRaw);
22509
22510 function withNames(chainName, specName, fn) {
22511 return fn(chainName.toString(), specName.toString());
22512 }
22513 function filterVersions(versions = [], specVersion) {
22514 return versions
22515 .filter(({ minmax: [min, max] }) => (min === undefined || min === null || specVersion >= min) &&
22516 (max === undefined || max === null || specVersion <= max))
22517 .reduce((result, { types }) => ({ ...result, ...types }), {});
22518 }
22519 function getSpecExtensions({ knownTypes }, chainName, specName) {
22520 return withNames(chainName, specName, (c, s) => ({
22521 ...(knownTypes.typesBundle?.spec?.[s]?.signedExtensions ?? {}),
22522 ...(knownTypes.typesBundle?.chain?.[c]?.signedExtensions ?? {})
22523 }));
22524 }
22525 function getSpecTypes({ knownTypes }, chainName, specName, specVersion) {
22526 const _specVersion = util.bnToBn(specVersion).toNumber();
22527 return withNames(chainName, specName, (c, s) => ({
22528 ...filterVersions(typesSpec[s], _specVersion),
22529 ...filterVersions(typesChain[c], _specVersion),
22530 ...filterVersions(knownTypes.typesBundle?.spec?.[s]?.types, _specVersion),
22531 ...filterVersions(knownTypes.typesBundle?.chain?.[c]?.types, _specVersion),
22532 ...(knownTypes.typesSpec?.[s] ?? {}),
22533 ...(knownTypes.typesChain?.[c] ?? {}),
22534 ...(knownTypes.types ?? {})
22535 }));
22536 }
22537 function getSpecHasher({ knownTypes }, chainName, specName) {
22538 return withNames(chainName, specName, (c, s) => knownTypes.hasher ||
22539 knownTypes.typesBundle?.chain?.[c]?.hasher ||
22540 knownTypes.typesBundle?.spec?.[s]?.hasher ||
22541 null);
22542 }
22543 function getSpecRpc({ knownTypes }, chainName, specName) {
22544 return withNames(chainName, specName, (c, s) => ({
22545 ...(knownTypes.typesBundle?.spec?.[s]?.rpc ?? {}),
22546 ...(knownTypes.typesBundle?.chain?.[c]?.rpc ?? {})
22547 }));
22548 }
22549 function getSpecRuntime({ knownTypes }, chainName, specName) {
22550 return withNames(chainName, specName, (c, s) => ({
22551 ...(knownTypes.typesBundle?.spec?.[s]?.runtime ?? {}),
22552 ...(knownTypes.typesBundle?.chain?.[c]?.runtime ?? {})
22553 }));
22554 }
22555 function getSpecAlias({ knownTypes }, chainName, specName) {
22556 return withNames(chainName, specName, (c, s) => ({
22557 ...(knownTypes.typesBundle?.spec?.[s]?.alias ?? {}),
22558 ...(knownTypes.typesBundle?.chain?.[c]?.alias ?? {}),
22559 ...(knownTypes.typesAlias ?? {})
22560 }));
22561 }
22562 function getUpgradeVersion(genesisHash, blockNumber) {
22563 const known = upgrades.find((u) => genesisHash.eq(u.genesisHash));
22564 return known
22565 ? [
22566 known.versions.reduce((last, version) => {
22567 return blockNumber.gt(version.blockNumber)
22568 ? version
22569 : last;
22570 }, undefined),
22571 known.versions.find((version) => blockNumber.lte(version.blockNumber))
22572 ]
22573 : [undefined, undefined];
22574 }
22575
22576 const l$2 = util.logger('api/augment');
22577 function logLength(type, values, and = []) {
22578 return values.length
22579 ? ` ${values.length} ${type}${and.length ? ' and' : ''}`
22580 : '';
22581 }
22582 function logValues(type, values) {
22583 return values.length
22584 ? `\n\t${type.padStart(7)}: ${values.sort().join(', ')}`
22585 : '';
22586 }
22587 function warn(prefix, type, [added, removed]) {
22588 if (added.length || removed.length) {
22589 l$2.warn(`api.${prefix}: Found${logLength('added', added, removed)}${logLength('removed', removed)} ${type}:${logValues('added', added)}${logValues('removed', removed)}`);
22590 }
22591 }
22592 function findSectionExcludes(a, b) {
22593 return a.filter((s) => !b.includes(s));
22594 }
22595 function findSectionIncludes(a, b) {
22596 return a.filter((s) => b.includes(s));
22597 }
22598 function extractSections(src, dst) {
22599 const srcSections = Object.keys(src);
22600 const dstSections = Object.keys(dst);
22601 return [
22602 findSectionExcludes(srcSections, dstSections),
22603 findSectionExcludes(dstSections, srcSections)
22604 ];
22605 }
22606 function findMethodExcludes(src, dst) {
22607 const srcSections = Object.keys(src);
22608 const dstSections = findSectionIncludes(Object.keys(dst), srcSections);
22609 const excludes = [];
22610 for (let s = 0, scount = dstSections.length; s < scount; s++) {
22611 const section = dstSections[s];
22612 const srcMethods = Object.keys(src[section]);
22613 const dstMethods = Object.keys(dst[section]);
22614 for (let d = 0, mcount = dstMethods.length; d < mcount; d++) {
22615 const method = dstMethods[d];
22616 if (!srcMethods.includes(method)) {
22617 excludes.push(`${section}.${method}`);
22618 }
22619 }
22620 }
22621 return excludes;
22622 }
22623 function extractMethods(src, dst) {
22624 return [
22625 findMethodExcludes(dst, src),
22626 findMethodExcludes(src, dst)
22627 ];
22628 }
22629 function augmentObject(prefix, src, dst, fromEmpty = false) {
22630 fromEmpty && util.objectClear(dst);
22631 if (prefix && Object.keys(dst).length) {
22632 warn(prefix, 'modules', extractSections(src, dst));
22633 warn(prefix, 'calls', extractMethods(src, dst));
22634 }
22635 const sections = Object.keys(src);
22636 for (let i = 0, count = sections.length; i < count; i++) {
22637 const section = sections[i];
22638 const methods = src[section];
22639 if (!dst[section]) {
22640 dst[section] = {};
22641 }
22642 util.lazyMethods(dst[section], Object.keys(methods), (m) => methods[m]);
22643 }
22644 return dst;
22645 }
22646
22647 function sig({ lookup }, { method, section }, args) {
22648 return `${section}.${method}(${args.map((a) => lookup.getTypeDef(a).type).join(', ')})`;
22649 }
22650 function extractStorageArgs(registry, creator, _args) {
22651 const args = _args.filter((a) => !util.isUndefined(a));
22652 if (creator.meta.type.isPlain) {
22653 if (args.length !== 0) {
22654 throw new Error(`${sig(registry, creator, [])} does not take any arguments, ${args.length} found`);
22655 }
22656 }
22657 else {
22658 const { hashers, key } = creator.meta.type.asMap;
22659 const keys = hashers.length === 1
22660 ? [key]
22661 : registry.lookup.getSiType(key).def.asTuple.map((t) => t);
22662 if (args.length !== keys.length) {
22663 throw new Error(`${sig(registry, creator, keys)} is a map, requiring ${keys.length} arguments, ${args.length} found`);
22664 }
22665 }
22666 return [creator, args];
22667 }
22668
22669 class Events {
22670 __internal__eventemitter = new EventEmitter();
22671 emit(type, ...args) {
22672 return this.__internal__eventemitter.emit(type, ...args);
22673 }
22674 on(type, handler) {
22675 this.__internal__eventemitter.on(type, handler);
22676 return this;
22677 }
22678 off(type, handler) {
22679 this.__internal__eventemitter.removeListener(type, handler);
22680 return this;
22681 }
22682 once(type, handler) {
22683 this.__internal__eventemitter.once(type, handler);
22684 return this;
22685 }
22686 }
22687
22688 const PAGE_SIZE_K = 1000;
22689 const PAGE_SIZE_V = 250;
22690 const PAGE_SIZE_Q = 50;
22691 const l$1 = util.logger('api/init');
22692 let instanceCounter = 0;
22693 function getAtQueryFn(api, { method, section }) {
22694 return util.assertReturn(api.rx.query[section] && api.rx.query[section][method], () => `query.${section}.${method} is not available in this version of the metadata`);
22695 }
22696 class Decorate extends Events {
22697 __internal__instanceId;
22698 __internal__runtimeLog = {};
22699 __internal__registry;
22700 __internal__storageGetQ = [];
22701 __internal__storageSubQ = [];
22702 __phantom = new util.BN(0);
22703 _type;
22704 _call = {};
22705 _consts = {};
22706 _derive;
22707 _errors = {};
22708 _events = {};
22709 _extrinsics;
22710 _extrinsicType = types.GenericExtrinsic.LATEST_EXTRINSIC_VERSION;
22711 _genesisHash;
22712 _isConnected;
22713 _isReady = false;
22714 _query = {};
22715 _queryMulti;
22716 _rpc;
22717 _rpcCore;
22718 _runtimeMap = {};
22719 _runtimeChain;
22720 _runtimeMetadata;
22721 _runtimeVersion;
22722 _rx = { call: {}, consts: {}, query: {}, tx: {} };
22723 _options;
22724 _decorateMethod;
22725 constructor(options, type, decorateMethod) {
22726 super();
22727 this.__internal__instanceId = `${++instanceCounter}`;
22728 this.__internal__registry = options.source?.registry || options.registry || new types.TypeRegistry();
22729 this._rx.callAt = (blockHash, knownVersion) => from(this.at(blockHash, knownVersion)).pipe(map((a) => a.rx.call));
22730 this._rx.queryAt = (blockHash, knownVersion) => from(this.at(blockHash, knownVersion)).pipe(map((a) => a.rx.query));
22731 this._rx.registry = this.__internal__registry;
22732 this._decorateMethod = decorateMethod;
22733 this._options = options;
22734 this._type = type;
22735 const provider = options.source
22736 ? options.source._rpcCore.provider.isClonable
22737 ? options.source._rpcCore.provider.clone()
22738 : options.source._rpcCore.provider
22739 : (options.provider || new WsProvider());
22740 this._rpcCore = new RpcCore(this.__internal__instanceId, this.__internal__registry, {
22741 isPedantic: this._options.isPedantic,
22742 provider,
22743 userRpc: this._options.rpc
22744 });
22745 this._isConnected = new BehaviorSubject(this._rpcCore.provider.isConnected);
22746 this._rx.hasSubscriptions = this._rpcCore.provider.hasSubscriptions;
22747 }
22748 get registry() {
22749 return this.__internal__registry;
22750 }
22751 createType(type, ...params) {
22752 return this.__internal__registry.createType(type, ...params);
22753 }
22754 registerTypes(types) {
22755 types && this.__internal__registry.register(types);
22756 }
22757 get hasSubscriptions() {
22758 return this._rpcCore.provider.hasSubscriptions;
22759 }
22760 get supportMulti() {
22761 return this._rpcCore.provider.hasSubscriptions || !!this._rpcCore.state.queryStorageAt;
22762 }
22763 _emptyDecorated(registry, blockHash) {
22764 return {
22765 call: {},
22766 consts: {},
22767 errors: {},
22768 events: {},
22769 query: {},
22770 registry,
22771 rx: {
22772 call: {},
22773 query: {}
22774 },
22775 tx: createSubmittable(this._type, this._rx, this._decorateMethod, registry, blockHash)
22776 };
22777 }
22778 _createDecorated(registry, fromEmpty, decoratedApi, blockHash) {
22779 if (!decoratedApi) {
22780 decoratedApi = this._emptyDecorated(registry.registry, blockHash);
22781 }
22782 if (fromEmpty || !registry.decoratedMeta) {
22783 registry.decoratedMeta = types.expandMetadata(registry.registry, registry.metadata);
22784 }
22785 const runtime = this._decorateCalls(registry, this._decorateMethod, blockHash);
22786 const runtimeRx = this._decorateCalls(registry, this._rxDecorateMethod, blockHash);
22787 const storage = this._decorateStorage(registry.decoratedMeta, this._decorateMethod, blockHash);
22788 const storageRx = this._decorateStorage(registry.decoratedMeta, this._rxDecorateMethod, blockHash);
22789 augmentObject('consts', registry.decoratedMeta.consts, decoratedApi.consts, fromEmpty);
22790 augmentObject('errors', registry.decoratedMeta.errors, decoratedApi.errors, fromEmpty);
22791 augmentObject('events', registry.decoratedMeta.events, decoratedApi.events, fromEmpty);
22792 augmentObject('query', storage, decoratedApi.query, fromEmpty);
22793 augmentObject('query', storageRx, decoratedApi.rx.query, fromEmpty);
22794 augmentObject('call', runtime, decoratedApi.call, fromEmpty);
22795 augmentObject('call', runtimeRx, decoratedApi.rx.call, fromEmpty);
22796 decoratedApi.findCall = (callIndex) => findCall(registry.registry, callIndex);
22797 decoratedApi.findError = (errorIndex) => findError(registry.registry, errorIndex);
22798 decoratedApi.queryMulti = blockHash
22799 ? this._decorateMultiAt(decoratedApi, this._decorateMethod, blockHash)
22800 : this._decorateMulti(this._decorateMethod);
22801 decoratedApi.runtimeVersion = registry.runtimeVersion;
22802 return {
22803 createdAt: blockHash,
22804 decoratedApi,
22805 decoratedMeta: registry.decoratedMeta
22806 };
22807 }
22808 _injectMetadata(registry, fromEmpty = false) {
22809 if (fromEmpty || !registry.decoratedApi) {
22810 registry.decoratedApi = this._emptyDecorated(registry.registry);
22811 }
22812 const { decoratedApi, decoratedMeta } = this._createDecorated(registry, fromEmpty, registry.decoratedApi);
22813 this._call = decoratedApi.call;
22814 this._consts = decoratedApi.consts;
22815 this._errors = decoratedApi.errors;
22816 this._events = decoratedApi.events;
22817 this._query = decoratedApi.query;
22818 this._rx.call = decoratedApi.rx.call;
22819 this._rx.query = decoratedApi.rx.query;
22820 const tx = this._decorateExtrinsics(decoratedMeta, this._decorateMethod);
22821 const rxtx = this._decorateExtrinsics(decoratedMeta, this._rxDecorateMethod);
22822 if (fromEmpty || !this._extrinsics) {
22823 this._extrinsics = tx;
22824 this._rx.tx = rxtx;
22825 }
22826 else {
22827 augmentObject('tx', tx, this._extrinsics, false);
22828 augmentObject(null, rxtx, this._rx.tx, false);
22829 }
22830 augmentObject(null, decoratedMeta.consts, this._rx.consts, fromEmpty);
22831 this.emit('decorated');
22832 }
22833 injectMetadata(metadata, fromEmpty, registry) {
22834 this._injectMetadata({ counter: 0, metadata, registry: registry || this.__internal__registry, runtimeVersion: this.__internal__registry.createType('RuntimeVersionPartial') }, fromEmpty);
22835 }
22836 _decorateFunctionMeta(input, output) {
22837 output.meta = input.meta;
22838 output.method = input.method;
22839 output.section = input.section;
22840 output.toJSON = input.toJSON;
22841 if (input.callIndex) {
22842 output.callIndex = input.callIndex;
22843 }
22844 return output;
22845 }
22846 _filterRpc(methods, additional) {
22847 if (Object.keys(additional).length !== 0) {
22848 this._rpcCore.addUserInterfaces(additional);
22849 this._decorateRpc(this._rpcCore, this._decorateMethod, this._rpc);
22850 this._decorateRpc(this._rpcCore, this._rxDecorateMethod, this._rx.rpc);
22851 }
22852 const sectionMap = {};
22853 for (let i = 0, count = methods.length; i < count; i++) {
22854 const [section] = methods[i].split('_');
22855 sectionMap[section] = true;
22856 }
22857 const sections = Object.keys(sectionMap);
22858 for (let i = 0, count = sections.length; i < count; i++) {
22859 const nameA = util.stringUpperFirst(sections[i]);
22860 const nameB = `${nameA}Api`;
22861 this._runtimeMap[utilCrypto.blake2AsHex(nameA, 64)] = nameA;
22862 this._runtimeMap[utilCrypto.blake2AsHex(nameB, 64)] = nameB;
22863 }
22864 this._filterRpcMethods(methods);
22865 }
22866 _filterRpcMethods(exposed) {
22867 const hasResults = exposed.length !== 0;
22868 const allKnown = [...this._rpcCore.mapping.entries()];
22869 const allKeys = [];
22870 const count = allKnown.length;
22871 for (let i = 0; i < count; i++) {
22872 const [, { alias, endpoint, method, pubsub, section }] = allKnown[i];
22873 allKeys.push(`${section}_${method}`);
22874 if (pubsub) {
22875 allKeys.push(`${section}_${pubsub[1]}`);
22876 allKeys.push(`${section}_${pubsub[2]}`);
22877 }
22878 if (alias) {
22879 allKeys.push(...alias);
22880 }
22881 if (endpoint) {
22882 allKeys.push(endpoint);
22883 }
22884 }
22885 const unknown = exposed.filter((k) => !allKeys.includes(k) &&
22886 !k.includes('_unstable_'));
22887 if (unknown.length && !this._options.noInitWarn) {
22888 l$1.warn(`RPC methods not decorated: ${unknown.join(', ')}`);
22889 }
22890 for (let i = 0; i < count; i++) {
22891 const [k, { method, section }] = allKnown[i];
22892 if (hasResults && !exposed.includes(k) && k !== 'rpc_methods') {
22893 if (this._rpc[section]) {
22894 delete this._rpc[section][method];
22895 delete this._rx.rpc[section][method];
22896 }
22897 }
22898 }
22899 }
22900 _rpcSubmitter(decorateMethod) {
22901 const method = (method, ...params) => {
22902 return from(this._rpcCore.provider.send(method, params));
22903 };
22904 return decorateMethod(method);
22905 }
22906 _decorateRpc(rpc, decorateMethod, input = this._rpcSubmitter(decorateMethod)) {
22907 const out = input;
22908 const decorateFn = (section, method) => {
22909 const source = rpc[section][method];
22910 const fn = decorateMethod(source, { methodName: method });
22911 fn.meta = source.meta;
22912 fn.raw = decorateMethod(source.raw, { methodName: method });
22913 return fn;
22914 };
22915 for (let s = 0, scount = rpc.sections.length; s < scount; s++) {
22916 const section = rpc.sections[s];
22917 if (!Object.prototype.hasOwnProperty.call(out, section)) {
22918 const methods = Object.keys(rpc[section]);
22919 const decorateInternal = (method) => decorateFn(section, method);
22920 for (let m = 0, mcount = methods.length; m < mcount; m++) {
22921 const method = methods[m];
22922 if (this.hasSubscriptions || !(method.startsWith('subscribe') || method.startsWith('unsubscribe'))) {
22923 if (!Object.prototype.hasOwnProperty.call(out, section)) {
22924 out[section] = {};
22925 }
22926 util.lazyMethod(out[section], method, decorateInternal);
22927 }
22928 }
22929 }
22930 }
22931 return out;
22932 }
22933 _addRuntimeDef(result, additional) {
22934 if (!additional) {
22935 return;
22936 }
22937 const entries = Object.entries(additional);
22938 for (let j = 0, ecount = entries.length; j < ecount; j++) {
22939 const [key, defs] = entries[j];
22940 if (result[key]) {
22941 for (let k = 0, dcount = defs.length; k < dcount; k++) {
22942 const def = defs[k];
22943 const prev = result[key].find(({ version }) => def.version === version);
22944 if (prev) {
22945 util.objectSpread(prev.methods, def.methods);
22946 }
22947 else {
22948 result[key].push(def);
22949 }
22950 }
22951 }
22952 else {
22953 result[key] = defs;
22954 }
22955 }
22956 }
22957 _getRuntimeDefs(registry, specName, chain = '') {
22958 const result = {};
22959 const defValues = Object.values(types.typeDefinitions);
22960 for (let i = 0, count = defValues.length; i < count; i++) {
22961 this._addRuntimeDef(result, defValues[i].runtime);
22962 }
22963 this._addRuntimeDef(result, getSpecRuntime(registry, chain, specName));
22964 this._addRuntimeDef(result, this._options.runtime);
22965 return Object.entries(result);
22966 }
22967 _decorateCalls({ registry, runtimeVersion: { apis, specName, specVersion } }, decorateMethod, blockHash) {
22968 const result = {};
22969 const named = {};
22970 const hashes = {};
22971 const sections = this._getRuntimeDefs(registry, specName, this._runtimeChain);
22972 const older = [];
22973 const implName = `${specName.toString()}/${specVersion.toString()}`;
22974 const hasLogged = this.__internal__runtimeLog[implName] || false;
22975 this.__internal__runtimeLog[implName] = true;
22976 for (let i = 0, scount = sections.length; i < scount; i++) {
22977 const [_section, secs] = sections[i];
22978 const sectionHash = utilCrypto.blake2AsHex(_section, 64);
22979 const rtApi = apis.find(([a]) => a.eq(sectionHash));
22980 hashes[sectionHash] = true;
22981 if (rtApi) {
22982 const all = secs.map(({ version }) => version).sort();
22983 const sec = secs.find(({ version }) => rtApi[1].eq(version));
22984 if (sec) {
22985 const section = util.stringCamelCase(_section);
22986 const methods = Object.entries(sec.methods);
22987 if (methods.length) {
22988 if (!named[section]) {
22989 named[section] = {};
22990 }
22991 for (let m = 0, mcount = methods.length; m < mcount; m++) {
22992 const [_method, def] = methods[m];
22993 const method = util.stringCamelCase(_method);
22994 named[section][method] = util.objectSpread({ method, name: `${_section}_${_method}`, section, sectionHash }, def);
22995 }
22996 }
22997 }
22998 else {
22999 older.push(`${_section}/${rtApi[1].toString()} (${all.join('/')} known)`);
23000 }
23001 }
23002 }
23003 const notFound = apis
23004 .map(([a, v]) => [a.toHex(), v.toString()])
23005 .filter(([a]) => !hashes[a])
23006 .map(([a, v]) => `${this._runtimeMap[a] || a}/${v}`);
23007 if (!this._options.noInitWarn && !hasLogged) {
23008 if (older.length) {
23009 l$1.warn(`${implName}: Not decorating runtime apis without matching versions: ${older.join(', ')}`);
23010 }
23011 if (notFound.length) {
23012 l$1.warn(`${implName}: Not decorating unknown runtime apis: ${notFound.join(', ')}`);
23013 }
23014 }
23015 const stateCall = blockHash
23016 ? (name, bytes) => this._rpcCore.state.call(name, bytes, blockHash)
23017 : (name, bytes) => this._rpcCore.state.call(name, bytes);
23018 const lazySection = (section) => util.lazyMethods({}, Object.keys(named[section]), (method) => this._decorateCall(registry, named[section][method], stateCall, decorateMethod));
23019 const modules = Object.keys(named);
23020 for (let i = 0, count = modules.length; i < count; i++) {
23021 util.lazyMethod(result, modules[i], lazySection);
23022 }
23023 return result;
23024 }
23025 _decorateCall(registry, def, stateCall, decorateMethod) {
23026 const decorated = decorateMethod((...args) => {
23027 if (args.length !== def.params.length) {
23028 throw new Error(`${def.name}:: Expected ${def.params.length} arguments, found ${args.length}`);
23029 }
23030 const bytes = registry.createType('Raw', util.u8aConcatStrict(args.map((a, i) => registry.createTypeUnsafe(def.params[i].type, [a]).toU8a())));
23031 return stateCall(def.name, bytes).pipe(map((r) => registry.createTypeUnsafe(def.type, [r])));
23032 });
23033 decorated.meta = def;
23034 return decorated;
23035 }
23036 _decorateMulti(decorateMethod) {
23037 return decorateMethod((keys) => keys.length
23038 ? (this.hasSubscriptions
23039 ? this._rpcCore.state.subscribeStorage
23040 : this._rpcCore.state.queryStorageAt)(keys.map((args) => Array.isArray(args)
23041 ? args[0].creator.meta.type.isPlain
23042 ? [args[0].creator]
23043 : args[0].creator.meta.type.asMap.hashers.length === 1
23044 ? [args[0].creator, args.slice(1)]
23045 : [args[0].creator, ...args.slice(1)]
23046 : [args.creator]))
23047 : of([]));
23048 }
23049 _decorateMultiAt(atApi, decorateMethod, blockHash) {
23050 return decorateMethod((calls) => calls.length
23051 ? this._rpcCore.state.queryStorageAt(calls.map((args) => {
23052 if (Array.isArray(args)) {
23053 const { creator } = getAtQueryFn(atApi, args[0].creator);
23054 return creator.meta.type.isPlain
23055 ? [creator]
23056 : creator.meta.type.asMap.hashers.length === 1
23057 ? [creator, args.slice(1)]
23058 : [creator, ...args.slice(1)];
23059 }
23060 return [getAtQueryFn(atApi, args.creator).creator];
23061 }), blockHash)
23062 : of([]));
23063 }
23064 _decorateExtrinsics({ tx }, decorateMethod) {
23065 const result = createSubmittable(this._type, this._rx, decorateMethod);
23066 const lazySection = (section) => util.lazyMethods({}, Object.keys(tx[section]), (method) => method.startsWith('$')
23067 ? tx[section][method]
23068 : this._decorateExtrinsicEntry(tx[section][method], result));
23069 const sections = Object.keys(tx);
23070 for (let i = 0, count = sections.length; i < count; i++) {
23071 util.lazyMethod(result, sections[i], lazySection);
23072 }
23073 return result;
23074 }
23075 _decorateExtrinsicEntry(method, creator) {
23076 const decorated = (...params) => creator(method(...params));
23077 decorated.is = (other) => method.is(other);
23078 return this._decorateFunctionMeta(method, decorated);
23079 }
23080 _decorateStorage({ query, registry }, decorateMethod, blockHash) {
23081 const result = {};
23082 const lazySection = (section) => util.lazyMethods({}, Object.keys(query[section]), (method) => blockHash
23083 ? this._decorateStorageEntryAt(registry, query[section][method], decorateMethod, blockHash)
23084 : this._decorateStorageEntry(query[section][method], decorateMethod));
23085 const sections = Object.keys(query);
23086 for (let i = 0, count = sections.length; i < count; i++) {
23087 util.lazyMethod(result, sections[i], lazySection);
23088 }
23089 return result;
23090 }
23091 _decorateStorageEntry(creator, decorateMethod) {
23092 const getArgs = (args, registry) => extractStorageArgs(registry || this.__internal__registry, creator, args);
23093 const getQueryAt = (blockHash) => from(this.at(blockHash)).pipe(map((api) => getAtQueryFn(api, creator)));
23094 const decorated = this._decorateStorageCall(creator, decorateMethod);
23095 decorated.creator = creator;
23096 decorated.at = decorateMethod((blockHash, ...args) => getQueryAt(blockHash).pipe(switchMap((q) => q(...args))));
23097 decorated.hash = decorateMethod((...args) => this._rpcCore.state.getStorageHash(getArgs(args)));
23098 decorated.is = (key) => key.section === creator.section &&
23099 key.method === creator.method;
23100 decorated.key = (...args) => util.u8aToHex(util.compactStripLength(creator(...args))[1]);
23101 decorated.keyPrefix = (...args) => util.u8aToHex(creator.keyPrefix(...args));
23102 decorated.size = decorateMethod((...args) => this._rpcCore.state.getStorageSize(getArgs(args)));
23103 decorated.sizeAt = decorateMethod((blockHash, ...args) => getQueryAt(blockHash).pipe(switchMap((q) => this._rpcCore.state.getStorageSize(getArgs(args, q.creator.meta.registry), blockHash))));
23104 if (creator.iterKey && creator.meta.type.isMap) {
23105 decorated.entries = decorateMethod(memo(this.__internal__instanceId, (...args) => this._retrieveMapEntries(creator, null, args)));
23106 decorated.entriesAt = decorateMethod(memo(this.__internal__instanceId, (blockHash, ...args) => getQueryAt(blockHash).pipe(switchMap((q) => this._retrieveMapEntries(q.creator, blockHash, args)))));
23107 decorated.entriesPaged = decorateMethod(memo(this.__internal__instanceId, (opts) => this._retrieveMapEntriesPaged(creator, undefined, opts)));
23108 decorated.keys = decorateMethod(memo(this.__internal__instanceId, (...args) => this._retrieveMapKeys(creator, null, args)));
23109 decorated.keysAt = decorateMethod(memo(this.__internal__instanceId, (blockHash, ...args) => getQueryAt(blockHash).pipe(switchMap((q) => this._retrieveMapKeys(q.creator, blockHash, args)))));
23110 decorated.keysPaged = decorateMethod(memo(this.__internal__instanceId, (opts) => this._retrieveMapKeysPaged(creator, undefined, opts)));
23111 }
23112 if (this.supportMulti && creator.meta.type.isMap) {
23113 decorated.multi = decorateMethod((args) => creator.meta.type.asMap.hashers.length === 1
23114 ? this._retrieveMulti(args.map((a) => [creator, [a]]))
23115 : this._retrieveMulti(args.map((a) => [creator, a])));
23116 }
23117 return this._decorateFunctionMeta(creator, decorated);
23118 }
23119 _decorateStorageEntryAt(registry, creator, decorateMethod, blockHash) {
23120 const getArgs = (args) => extractStorageArgs(registry, creator, args);
23121 const decorated = decorateMethod((...args) => this._rpcCore.state.getStorage(getArgs(args), blockHash));
23122 decorated.creator = creator;
23123 decorated.hash = decorateMethod((...args) => this._rpcCore.state.getStorageHash(getArgs(args), blockHash));
23124 decorated.is = (key) => key.section === creator.section &&
23125 key.method === creator.method;
23126 decorated.key = (...args) => util.u8aToHex(util.compactStripLength(creator(...args))[1]);
23127 decorated.keyPrefix = (...keys) => util.u8aToHex(creator.keyPrefix(...keys));
23128 decorated.size = decorateMethod((...args) => this._rpcCore.state.getStorageSize(getArgs(args), blockHash));
23129 if (creator.iterKey && creator.meta.type.isMap) {
23130 decorated.entries = decorateMethod(memo(this.__internal__instanceId, (...args) => this._retrieveMapEntries(creator, blockHash, args)));
23131 decorated.entriesPaged = decorateMethod(memo(this.__internal__instanceId, (opts) => this._retrieveMapEntriesPaged(creator, blockHash, opts)));
23132 decorated.keys = decorateMethod(memo(this.__internal__instanceId, (...args) => this._retrieveMapKeys(creator, blockHash, args)));
23133 decorated.keysPaged = decorateMethod(memo(this.__internal__instanceId, (opts) => this._retrieveMapKeysPaged(creator, blockHash, opts)));
23134 }
23135 if (this.supportMulti && creator.meta.type.isMap) {
23136 decorated.multi = decorateMethod((args) => creator.meta.type.asMap.hashers.length === 1
23137 ? this._retrieveMulti(args.map((a) => [creator, [a]]), blockHash)
23138 : this._retrieveMulti(args.map((a) => [creator, a]), blockHash));
23139 }
23140 return this._decorateFunctionMeta(creator, decorated);
23141 }
23142 _queueStorage(call, queue) {
23143 const query = queue === this.__internal__storageSubQ
23144 ? this._rpcCore.state.subscribeStorage
23145 : this._rpcCore.state.queryStorageAt;
23146 let queueIdx = queue.length - 1;
23147 let valueIdx = 0;
23148 let valueObs;
23149 if (queueIdx === -1 || !queue[queueIdx] || queue[queueIdx][1].length === PAGE_SIZE_Q) {
23150 queueIdx++;
23151 valueObs = from(
23152 new Promise((resolve) => {
23153 util.nextTick(() => {
23154 const calls = queue[queueIdx][1];
23155 delete queue[queueIdx];
23156 resolve(calls);
23157 });
23158 })).pipe(switchMap((calls) => query(calls)));
23159 queue.push([valueObs, [call]]);
23160 }
23161 else {
23162 valueObs = queue[queueIdx][0];
23163 valueIdx = queue[queueIdx][1].length;
23164 queue[queueIdx][1].push(call);
23165 }
23166 return valueObs.pipe(
23167 map((values) => values[valueIdx]));
23168 }
23169 _decorateStorageCall(creator, decorateMethod) {
23170 const memoed = memo(this.__internal__instanceId, (...args) => {
23171 const call = extractStorageArgs(this.__internal__registry, creator, args);
23172 if (!this.hasSubscriptions) {
23173 return this._rpcCore.state.getStorage(call);
23174 }
23175 return this._queueStorage(call, this.__internal__storageSubQ);
23176 });
23177 return decorateMethod(memoed, {
23178 methodName: creator.method,
23179 overrideNoSub: (...args) => this._queueStorage(extractStorageArgs(this.__internal__registry, creator, args), this.__internal__storageGetQ)
23180 });
23181 }
23182 _retrieveMulti(keys, blockHash) {
23183 if (!keys.length) {
23184 return of([]);
23185 }
23186 const query = this.hasSubscriptions && !blockHash
23187 ? this._rpcCore.state.subscribeStorage
23188 : this._rpcCore.state.queryStorageAt;
23189 if (keys.length <= PAGE_SIZE_V) {
23190 return blockHash
23191 ? query(keys, blockHash)
23192 : query(keys);
23193 }
23194 return combineLatest(util.arrayChunk(keys, PAGE_SIZE_V).map((k) => blockHash
23195 ? query(k, blockHash)
23196 : query(k))).pipe(map(util.arrayFlatten));
23197 }
23198 _retrieveMapKeys({ iterKey, meta, method, section }, at, args) {
23199 if (!iterKey || !meta.type.isMap) {
23200 throw new Error('keys can only be retrieved on maps');
23201 }
23202 const headKey = iterKey(...args).toHex();
23203 const startSubject = new BehaviorSubject(headKey);
23204 const query = at
23205 ? (startKey) => this._rpcCore.state.getKeysPaged(headKey, PAGE_SIZE_K, startKey, at)
23206 : (startKey) => this._rpcCore.state.getKeysPaged(headKey, PAGE_SIZE_K, startKey);
23207 const setMeta = (key) => key.setMeta(meta, section, method);
23208 return startSubject.pipe(switchMap(query), map((keys) => keys.map(setMeta)), tap((keys) => util.nextTick(() => {
23209 keys.length === PAGE_SIZE_K
23210 ? startSubject.next(keys[PAGE_SIZE_K - 1].toHex())
23211 : startSubject.complete();
23212 })), toArray(),
23213 map(util.arrayFlatten));
23214 }
23215 _retrieveMapKeysPaged({ iterKey, meta, method, section }, at, opts) {
23216 if (!iterKey || !meta.type.isMap) {
23217 throw new Error('keys can only be retrieved on maps');
23218 }
23219 const setMeta = (key) => key.setMeta(meta, section, method);
23220 const query = at
23221 ? (headKey) => this._rpcCore.state.getKeysPaged(headKey, opts.pageSize, opts.startKey || headKey, at)
23222 : (headKey) => this._rpcCore.state.getKeysPaged(headKey, opts.pageSize, opts.startKey || headKey);
23223 return query(iterKey(...opts.args).toHex()).pipe(map((keys) => keys.map(setMeta)));
23224 }
23225 _retrieveMapEntries(entry, at, args) {
23226 const query = at
23227 ? (keys) => this._rpcCore.state.queryStorageAt(keys, at)
23228 : (keys) => this._rpcCore.state.queryStorageAt(keys);
23229 return this._retrieveMapKeys(entry, at, args).pipe(switchMap((keys) => keys.length
23230 ? combineLatest(util.arrayChunk(keys, PAGE_SIZE_V).map(query)).pipe(map((valsArr) => util.arrayFlatten(valsArr).map((value, index) => [keys[index], value])))
23231 : of([])));
23232 }
23233 _retrieveMapEntriesPaged(entry, at, opts) {
23234 const query = at
23235 ? (keys) => this._rpcCore.state.queryStorageAt(keys, at)
23236 : (keys) => this._rpcCore.state.queryStorageAt(keys);
23237 return this._retrieveMapKeysPaged(entry, at, opts).pipe(switchMap((keys) => keys.length
23238 ? query(keys).pipe(map((valsArr) => valsArr.map((value, index) => [keys[index], value])))
23239 : of([])));
23240 }
23241 _decorateDeriveRx(decorateMethod) {
23242 const specName = this._runtimeVersion?.specName.toString();
23243 const available = getAvailableDerives(this.__internal__instanceId, this._rx, util.objectSpread({}, this._options.derives, this._options.typesBundle?.spec?.[specName || '']?.derives));
23244 return decorateDeriveSections(decorateMethod, available);
23245 }
23246 _decorateDerive(decorateMethod) {
23247 return decorateDeriveSections(decorateMethod, this._rx.derive);
23248 }
23249 _rxDecorateMethod = (method) => {
23250 return method;
23251 };
23252 }
23253
23254 const KEEPALIVE_INTERVAL = 10000;
23255 const l = util.logger('api/init');
23256 function textToString(t) {
23257 return t.toString();
23258 }
23259 class Init extends Decorate {
23260 __internal__atLast = null;
23261 __internal__healthTimer = null;
23262 __internal__registries = [];
23263 __internal__updateSub = null;
23264 __internal__waitingRegistries = {};
23265 constructor(options, type, decorateMethod) {
23266 super(options, type, decorateMethod);
23267 this.registry.setKnownTypes(options);
23268 if (!options.source) {
23269 this.registerTypes(options.types);
23270 }
23271 else {
23272 this.__internal__registries = options.source.__internal__registries;
23273 }
23274 this._rpc = this._decorateRpc(this._rpcCore, this._decorateMethod);
23275 this._rx.rpc = this._decorateRpc(this._rpcCore, this._rxDecorateMethod);
23276 if (this.supportMulti) {
23277 this._queryMulti = this._decorateMulti(this._decorateMethod);
23278 this._rx.queryMulti = this._decorateMulti(this._rxDecorateMethod);
23279 }
23280 this._rx.signer = options.signer;
23281 this._rpcCore.setRegistrySwap((blockHash) => this.getBlockRegistry(blockHash));
23282 this._rpcCore.setResolveBlockHash((blockNumber) => firstValueFrom(this._rpcCore.chain.getBlockHash(blockNumber)));
23283 if (this.hasSubscriptions) {
23284 this._rpcCore.provider.on('disconnected', () => this.__internal__onProviderDisconnect());
23285 this._rpcCore.provider.on('error', (e) => this.__internal__onProviderError(e));
23286 this._rpcCore.provider.on('connected', () => this.__internal__onProviderConnect());
23287 }
23288 else if (!this._options.noInitWarn) {
23289 l.warn('Api will be available in a limited mode since the provider does not support subscriptions');
23290 }
23291 if (this._rpcCore.provider.isConnected) {
23292 this.__internal__onProviderConnect().catch(util.noop);
23293 }
23294 }
23295 _initRegistry(registry, chain, version, metadata, chainProps) {
23296 registry.clearCache();
23297 registry.setChainProperties(chainProps || this.registry.getChainProperties());
23298 registry.setKnownTypes(this._options);
23299 registry.register(getSpecTypes(registry, chain, version.specName, version.specVersion));
23300 registry.setHasher(getSpecHasher(registry, chain, version.specName));
23301 if (registry.knownTypes.typesBundle) {
23302 registry.knownTypes.typesAlias = getSpecAlias(registry, chain, version.specName);
23303 }
23304 registry.setMetadata(metadata, undefined, util.objectSpread({}, getSpecExtensions(registry, chain, version.specName), this._options.signedExtensions), this._options.noInitWarn);
23305 }
23306 _getDefaultRegistry() {
23307 return util.assertReturn(this.__internal__registries.find(({ isDefault }) => isDefault), 'Initialization error, cannot find the default registry');
23308 }
23309 async at(blockHash, knownVersion) {
23310 const u8aHash = util.u8aToU8a(blockHash);
23311 const u8aHex = util.u8aToHex(u8aHash);
23312 const registry = await this.getBlockRegistry(u8aHash, knownVersion);
23313 if (!this.__internal__atLast || this.__internal__atLast[0] !== u8aHex) {
23314 this.__internal__atLast = [u8aHex, this._createDecorated(registry, true, null, u8aHash).decoratedApi];
23315 }
23316 return this.__internal__atLast[1];
23317 }
23318 async _createBlockRegistry(blockHash, header, version) {
23319 const registry = new types.TypeRegistry(blockHash);
23320 const metadata = new types.Metadata(registry, await firstValueFrom(this._rpcCore.state.getMetadata.raw(header.parentHash)));
23321 const runtimeChain = this._runtimeChain;
23322 if (!runtimeChain) {
23323 throw new Error('Invalid initializion order, runtimeChain is not available');
23324 }
23325 this._initRegistry(registry, runtimeChain, version, metadata);
23326 const result = { counter: 0, lastBlockHash: blockHash, metadata, registry, runtimeVersion: version };
23327 this.__internal__registries.push(result);
23328 return result;
23329 }
23330 _cacheBlockRegistryProgress(key, creator) {
23331 let waiting = this.__internal__waitingRegistries[key];
23332 if (util.isUndefined(waiting)) {
23333 waiting = this.__internal__waitingRegistries[key] = new Promise((resolve, reject) => {
23334 creator()
23335 .then((registry) => {
23336 delete this.__internal__waitingRegistries[key];
23337 resolve(registry);
23338 })
23339 .catch((error) => {
23340 delete this.__internal__waitingRegistries[key];
23341 reject(error);
23342 });
23343 });
23344 }
23345 return waiting;
23346 }
23347 _getBlockRegistryViaVersion(blockHash, version) {
23348 if (version) {
23349 const existingViaVersion = this.__internal__registries.find(({ runtimeVersion: { specName, specVersion } }) => specName.eq(version.specName) &&
23350 specVersion.eq(version.specVersion));
23351 if (existingViaVersion) {
23352 existingViaVersion.counter++;
23353 existingViaVersion.lastBlockHash = blockHash;
23354 return existingViaVersion;
23355 }
23356 }
23357 return null;
23358 }
23359 async _getBlockRegistryViaHash(blockHash) {
23360 if (!this._genesisHash || !this._runtimeVersion) {
23361 throw new Error('Cannot retrieve data on an uninitialized chain');
23362 }
23363 const header = this.registry.createType('HeaderPartial', this._genesisHash.eq(blockHash)
23364 ? { number: util.BN_ZERO, parentHash: this._genesisHash }
23365 : await firstValueFrom(this._rpcCore.chain.getHeader.raw(blockHash)));
23366 if (header.parentHash.isEmpty) {
23367 throw new Error('Unable to retrieve header and parent from supplied hash');
23368 }
23369 getUpgradeVersion(this._genesisHash, header.number);
23370 const version = this.registry.createType('RuntimeVersionPartial', await firstValueFrom(this._rpcCore.state.getRuntimeVersion.raw(header.parentHash)));
23371 return (
23372 this._getBlockRegistryViaVersion(blockHash, version) ||
23373 await this._cacheBlockRegistryProgress(version.toHex(), () => this._createBlockRegistry(blockHash, header, version)));
23374 }
23375 async getBlockRegistry(blockHash, knownVersion) {
23376 return (
23377 this.__internal__registries.find(({ lastBlockHash }) => lastBlockHash && util.u8aEq(lastBlockHash, blockHash)) ||
23378 this._getBlockRegistryViaVersion(blockHash, knownVersion) ||
23379 await this._cacheBlockRegistryProgress(util.u8aToHex(blockHash), () => this._getBlockRegistryViaHash(blockHash)));
23380 }
23381 async _loadMeta() {
23382 if (this._isReady) {
23383 if (!this._options.source) {
23384 this._subscribeUpdates();
23385 }
23386 return true;
23387 }
23388 this._unsubscribeUpdates();
23389 [this._genesisHash, this._runtimeMetadata] = this._options.source?._isReady
23390 ? await this._metaFromSource(this._options.source)
23391 : await this._metaFromChain(this._options.metadata);
23392 return this._initFromMeta(this._runtimeMetadata);
23393 }
23394 async _metaFromSource(source) {
23395 this._extrinsicType = source.extrinsicVersion;
23396 this._runtimeChain = source.runtimeChain;
23397 this._runtimeVersion = source.runtimeVersion;
23398 const sections = Object.keys(source.rpc);
23399 const rpcs = [];
23400 for (let s = 0, scount = sections.length; s < scount; s++) {
23401 const section = sections[s];
23402 const methods = Object.keys(source.rpc[section]);
23403 for (let m = 0, mcount = methods.length; m < mcount; m++) {
23404 rpcs.push(`${section}_${methods[m]}`);
23405 }
23406 }
23407 this._filterRpc(rpcs, getSpecRpc(this.registry, source.runtimeChain, source.runtimeVersion.specName));
23408 return [source.genesisHash, source.runtimeMetadata];
23409 }
23410 _subscribeUpdates() {
23411 if (this.__internal__updateSub || !this.hasSubscriptions) {
23412 return;
23413 }
23414 this.__internal__updateSub = this._rpcCore.state.subscribeRuntimeVersion().pipe(switchMap((version) =>
23415 this._runtimeVersion?.specVersion.eq(version.specVersion)
23416 ? of(false)
23417 : this._rpcCore.state.getMetadata().pipe(map((metadata) => {
23418 l.log(`Runtime version updated to spec=${version.specVersion.toString()}, tx=${version.transactionVersion.toString()}`);
23419 this._runtimeMetadata = metadata;
23420 this._runtimeVersion = version;
23421 this._rx.runtimeVersion = version;
23422 const thisRegistry = this._getDefaultRegistry();
23423 const runtimeChain = this._runtimeChain;
23424 if (!runtimeChain) {
23425 throw new Error('Invalid initializion order, runtimeChain is not available');
23426 }
23427 thisRegistry.metadata = metadata;
23428 thisRegistry.runtimeVersion = version;
23429 this._initRegistry(this.registry, runtimeChain, version, metadata);
23430 this._injectMetadata(thisRegistry, true);
23431 return true;
23432 })))).subscribe();
23433 }
23434 async _metaFromChain(optMetadata) {
23435 const [genesisHash, runtimeVersion, chain, chainProps, rpcMethods, chainMetadata] = await Promise.all([
23436 firstValueFrom(this._rpcCore.chain.getBlockHash(0)),
23437 firstValueFrom(this._rpcCore.state.getRuntimeVersion()),
23438 firstValueFrom(this._rpcCore.system.chain()),
23439 firstValueFrom(this._rpcCore.system.properties()),
23440 firstValueFrom(this._rpcCore.rpc.methods()),
23441 optMetadata
23442 ? Promise.resolve(null)
23443 : firstValueFrom(this._rpcCore.state.getMetadata())
23444 ]);
23445 this._runtimeChain = chain;
23446 this._runtimeVersion = runtimeVersion;
23447 this._rx.runtimeVersion = runtimeVersion;
23448 const metadataKey = `${genesisHash.toHex() || '0x'}-${runtimeVersion.specVersion.toString()}`;
23449 const metadata = chainMetadata || (optMetadata?.[metadataKey]
23450 ? new types.Metadata(this.registry, optMetadata[metadataKey])
23451 : await firstValueFrom(this._rpcCore.state.getMetadata()));
23452 this._initRegistry(this.registry, chain, runtimeVersion, metadata, chainProps);
23453 this._filterRpc(rpcMethods.methods.map(textToString), getSpecRpc(this.registry, chain, runtimeVersion.specName));
23454 this._subscribeUpdates();
23455 if (!this.__internal__registries.length) {
23456 this.__internal__registries.push({ counter: 0, isDefault: true, metadata, registry: this.registry, runtimeVersion });
23457 }
23458 metadata.getUniqTypes(this._options.throwOnUnknown || false);
23459 return [genesisHash, metadata];
23460 }
23461 _initFromMeta(metadata) {
23462 const runtimeVersion = this._runtimeVersion;
23463 if (!runtimeVersion) {
23464 throw new Error('Invalid initializion order, runtimeVersion is not available');
23465 }
23466 this._extrinsicType = metadata.asLatest.extrinsic.version.toNumber();
23467 this._rx.extrinsicType = this._extrinsicType;
23468 this._rx.genesisHash = this._genesisHash;
23469 this._rx.runtimeVersion = runtimeVersion;
23470 this._injectMetadata(this._getDefaultRegistry(), true);
23471 this._rx.derive = this._decorateDeriveRx(this._rxDecorateMethod);
23472 this._derive = this._decorateDerive(this._decorateMethod);
23473 return true;
23474 }
23475 _subscribeHealth() {
23476 this._unsubscribeHealth();
23477 this.__internal__healthTimer = this.hasSubscriptions
23478 ? setInterval(() => {
23479 firstValueFrom(this._rpcCore.system.health.raw()).catch(util.noop);
23480 }, KEEPALIVE_INTERVAL)
23481 : null;
23482 }
23483 _unsubscribeHealth() {
23484 if (this.__internal__healthTimer) {
23485 clearInterval(this.__internal__healthTimer);
23486 this.__internal__healthTimer = null;
23487 }
23488 }
23489 _unsubscribeUpdates() {
23490 if (this.__internal__updateSub) {
23491 this.__internal__updateSub.unsubscribe();
23492 this.__internal__updateSub = null;
23493 }
23494 }
23495 _unsubscribe() {
23496 this._unsubscribeHealth();
23497 this._unsubscribeUpdates();
23498 }
23499 async __internal__onProviderConnect() {
23500 this._isConnected.next(true);
23501 this.emit('connected');
23502 try {
23503 const cryptoReady = this._options.initWasm === false
23504 ? true
23505 : await utilCrypto.cryptoWaitReady();
23506 const hasMeta = await this._loadMeta();
23507 this._subscribeHealth();
23508 if (hasMeta && !this._isReady && cryptoReady) {
23509 this._isReady = true;
23510 this.emit('ready', this);
23511 }
23512 }
23513 catch (_error) {
23514 const error = new Error(`FATAL: Unable to initialize the API: ${_error.message}`);
23515 l.error(error);
23516 this.emit('error', error);
23517 }
23518 }
23519 __internal__onProviderDisconnect() {
23520 this._isConnected.next(false);
23521 this._unsubscribe();
23522 this.emit('disconnected');
23523 }
23524 __internal__onProviderError(error) {
23525 this.emit('error', error);
23526 }
23527 }
23528
23529 function assertResult(value) {
23530 if (value === undefined) {
23531 throw new Error("Api interfaces needs to be initialized before using, wait for 'isReady'");
23532 }
23533 return value;
23534 }
23535 class Getters extends Init {
23536 get call() {
23537 return assertResult(this._call);
23538 }
23539 get consts() {
23540 return assertResult(this._consts);
23541 }
23542 get derive() {
23543 return assertResult(this._derive);
23544 }
23545 get errors() {
23546 return assertResult(this._errors);
23547 }
23548 get events() {
23549 return assertResult(this._events);
23550 }
23551 get extrinsicVersion() {
23552 return this._extrinsicType;
23553 }
23554 get genesisHash() {
23555 return assertResult(this._genesisHash);
23556 }
23557 get isConnected() {
23558 return this._isConnected.getValue();
23559 }
23560 get libraryInfo() {
23561 return `${packageInfo.name} v${packageInfo.version}`;
23562 }
23563 get query() {
23564 return assertResult(this._query);
23565 }
23566 get queryMulti() {
23567 return assertResult(this._queryMulti);
23568 }
23569 get rpc() {
23570 return assertResult(this._rpc);
23571 }
23572 get runtimeChain() {
23573 return assertResult(this._runtimeChain);
23574 }
23575 get runtimeMetadata() {
23576 return assertResult(this._runtimeMetadata);
23577 }
23578 get runtimeVersion() {
23579 return assertResult(this._runtimeVersion);
23580 }
23581 get rx() {
23582 return assertResult(this._rx);
23583 }
23584 get stats() {
23585 return this._rpcCore.stats;
23586 }
23587 get type() {
23588 return this._type;
23589 }
23590 get tx() {
23591 return assertResult(this._extrinsics);
23592 }
23593 findCall(callIndex) {
23594 return findCall(this.registry, callIndex);
23595 }
23596 findError(errorIndex) {
23597 return findError(this.registry, errorIndex);
23598 }
23599 }
23600
23601 class ApiBase extends Getters {
23602 constructor(options = {}, type, decorateMethod) {
23603 super(options, type, decorateMethod);
23604 }
23605 connect() {
23606 return this._rpcCore.connect();
23607 }
23608 disconnect() {
23609 this._unsubscribe();
23610 return this._rpcCore.disconnect();
23611 }
23612 setSigner(signer) {
23613 this._rx.signer = signer;
23614 }
23615 async sign(address, data, { signer } = {}) {
23616 if (util.isString(address)) {
23617 const _signer = signer || this._rx.signer;
23618 if (!_signer?.signRaw) {
23619 throw new Error('No signer exists with a signRaw interface. You possibly need to pass through an explicit keypair for the origin so it can be used for signing.');
23620 }
23621 return (await _signer.signRaw(util.objectSpread({ type: 'bytes' }, data, { address }))).signature;
23622 }
23623 return util.u8aToHex(address.sign(util.u8aToU8a(data.data)));
23624 }
23625 }
23626
23627 class Combinator {
23628 __internal__allHasFired = false;
23629 __internal__callback;
23630 __internal__fired = [];
23631 __internal__fns = [];
23632 __internal__isActive = true;
23633 __internal__results = [];
23634 __internal__subscriptions = [];
23635 constructor(fns, callback) {
23636 this.__internal__callback = callback;
23637 this.__internal__subscriptions = fns.map(async (input, index) => {
23638 const [fn, ...args] = Array.isArray(input)
23639 ? input
23640 : [input];
23641 this.__internal__fired.push(false);
23642 this.__internal__fns.push(fn);
23643 return fn(...args, this._createCallback(index));
23644 });
23645 }
23646 _allHasFired() {
23647 this.__internal__allHasFired ||= this.__internal__fired.filter((hasFired) => !hasFired).length === 0;
23648 return this.__internal__allHasFired;
23649 }
23650 _createCallback(index) {
23651 return (value) => {
23652 this.__internal__fired[index] = true;
23653 this.__internal__results[index] = value;
23654 this._triggerUpdate();
23655 };
23656 }
23657 _triggerUpdate() {
23658 if (!this.__internal__isActive || !util.isFunction(this.__internal__callback) || !this._allHasFired()) {
23659 return;
23660 }
23661 try {
23662 Promise
23663 .resolve(this.__internal__callback(this.__internal__results))
23664 .catch(util.noop);
23665 }
23666 catch {
23667 }
23668 }
23669 unsubscribe() {
23670 if (!this.__internal__isActive) {
23671 return;
23672 }
23673 this.__internal__isActive = false;
23674 Promise
23675 .all(this.__internal__subscriptions.map(async (subscription) => {
23676 try {
23677 const unsubscribe = await subscription;
23678 if (util.isFunction(unsubscribe)) {
23679 unsubscribe();
23680 }
23681 }
23682 catch {
23683 }
23684 })).catch(() => {
23685 });
23686 }
23687 }
23688
23689 function promiseTracker(resolve, reject) {
23690 let isCompleted = false;
23691 return {
23692 reject: (error) => {
23693 if (!isCompleted) {
23694 isCompleted = true;
23695 reject(error);
23696 }
23697 return EMPTY;
23698 },
23699 resolve: (value) => {
23700 if (!isCompleted) {
23701 isCompleted = true;
23702 resolve(value);
23703 }
23704 }
23705 };
23706 }
23707 function extractArgs(args, needsCallback) {
23708 const actualArgs = args.slice();
23709 const callback = (args.length && util.isFunction(args[args.length - 1]))
23710 ? actualArgs.pop()
23711 : undefined;
23712 if (needsCallback && !util.isFunction(callback)) {
23713 throw new Error('Expected a callback to be passed with subscriptions');
23714 }
23715 return [actualArgs, callback];
23716 }
23717 function decorateCall(method, args) {
23718 return new Promise((resolve, reject) => {
23719 const tracker = promiseTracker(resolve, reject);
23720 const subscription = method(...args)
23721 .pipe(catchError((error) => tracker.reject(error)))
23722 .subscribe((result) => {
23723 tracker.resolve(result);
23724 util.nextTick(() => subscription.unsubscribe());
23725 });
23726 });
23727 }
23728 function decorateSubscribe(method, args, resultCb) {
23729 return new Promise((resolve, reject) => {
23730 const tracker = promiseTracker(resolve, reject);
23731 const subscription = method(...args)
23732 .pipe(catchError((error) => tracker.reject(error)), tap(() => tracker.resolve(() => subscription.unsubscribe())))
23733 .subscribe((result) => {
23734 util.nextTick(() => resultCb(result));
23735 });
23736 });
23737 }
23738 function toPromiseMethod(method, options) {
23739 const needsCallback = !!(options?.methodName && options.methodName.includes('subscribe'));
23740 return function (...args) {
23741 const [actualArgs, resultCb] = extractArgs(args, needsCallback);
23742 return resultCb
23743 ? decorateSubscribe(method, actualArgs, resultCb)
23744 : decorateCall(options?.overrideNoSub || method, actualArgs);
23745 };
23746 }
23747
23748 class ApiPromise extends ApiBase {
23749 __internal__isReadyPromise;
23750 __internal__isReadyOrErrorPromise;
23751 constructor(options) {
23752 super(options, 'promise', toPromiseMethod);
23753 this.__internal__isReadyPromise = new Promise((resolve) => {
23754 super.once('ready', () => resolve(this));
23755 });
23756 this.__internal__isReadyOrErrorPromise = new Promise((resolve, reject) => {
23757 const tracker = promiseTracker(resolve, reject);
23758 super.once('ready', () => tracker.resolve(this));
23759 super.once('error', (error) => tracker.reject(error));
23760 });
23761 }
23762 static create(options) {
23763 const instance = new ApiPromise(options);
23764 if (options && options.throwOnConnect) {
23765 return instance.isReadyOrError;
23766 }
23767 instance.isReadyOrError.catch(util.noop);
23768 return instance.isReady;
23769 }
23770 get isReady() {
23771 return this.__internal__isReadyPromise;
23772 }
23773 get isReadyOrError() {
23774 return this.__internal__isReadyOrErrorPromise;
23775 }
23776 clone() {
23777 return new ApiPromise(util.objectSpread({}, this._options, { source: this }));
23778 }
23779 async combineLatest(fns, callback) {
23780 const combinator = new Combinator(fns, callback);
23781 return () => {
23782 combinator.unsubscribe();
23783 };
23784 }
23785 }
23786
23787 function toRxMethod(method) {
23788 return method;
23789 }
23790
23791 class ApiRx extends ApiBase {
23792 __internal__isReadyRx;
23793 constructor(options) {
23794 super(options, 'rxjs', toRxMethod);
23795 this.__internal__isReadyRx = from(
23796 new Promise((resolve) => {
23797 super.on('ready', () => resolve(this));
23798 }));
23799 }
23800 static create(options) {
23801 return new ApiRx(options).isReady;
23802 }
23803 get isReady() {
23804 return this.__internal__isReadyRx;
23805 }
23806 clone() {
23807 return new ApiRx(util.objectSpread({}, this._options, { source: this }));
23808 }
23809 }
23810
23811 Object.defineProperty(exports, "Keyring", {
23812 enumerable: true,
23813 get: function () { return keyring.Keyring; }
23814 });
23815 exports.ApiPromise = ApiPromise;
23816 exports.ApiRx = ApiRx;
23817 exports.HttpProvider = HttpProvider;
23818 exports.ScProvider = ScProvider;
23819 exports.SubmittableResult = SubmittableResult;
23820 exports.WsProvider = WsProvider;
23821 exports.packageInfo = packageInfo;
23822 exports.toPromiseMethod = toPromiseMethod;
23823 exports.toRxMethod = toRxMethod;
23824
23825}));