diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/404.html b/404.html new file mode 100644 index 00000000..0f9d40a7 --- /dev/null +++ b/404.html @@ -0,0 +1,13 @@ + + + + + +Beacon Docs + + + + +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

+ + \ No newline at end of file diff --git a/CNAME b/CNAME new file mode 100644 index 00000000..2eb918ee --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +docs.walletbeacon.io \ No newline at end of file diff --git a/FAQ/index.html b/FAQ/index.html new file mode 100644 index 00000000..bb75d343 --- /dev/null +++ b/FAQ/index.html @@ -0,0 +1,13 @@ + + + + + +FAQ | Beacon Docs + + + + +
Skip to main content
+ + \ No newline at end of file diff --git a/advanced/custom-block-explorer/index.html b/advanced/custom-block-explorer/index.html new file mode 100644 index 00000000..6bbd40c5 --- /dev/null +++ b/advanced/custom-block-explorer/index.html @@ -0,0 +1,15 @@ + + + + + +Custom Block Explorer | Beacon Docs + + + + +
Skip to main content

Custom Block Explorer

The Custom Block Explorer feature in Beacon SDK allows developers to integrate a block explorer of their choice into their dApp. +This is particularly useful for applications that require specific functionalities or presentation styles offered by certain block explorers, or for those who wish to provide a more seamless user experience by integrating a block explorer directly into the app interface.

+
import {
BlockExplorer,
DAppClient,
NetworkType,
Network,
} from "@airgap/beacon-sdk";

class TzStatsBlockExplorer extends BlockExplorer {
constructor(
public readonly rpcUrls: { [key in NetworkType]: string } = {
[NetworkType.MAINNET]: "https://tzstats.com/",
[NetworkType.GHOSTNET]: "https://ghost.tzstats.com/",
[NetworkType.WEEKLYNET]: "https://ghost.tzstats.com/",
[NetworkType.DAILYNET]: "https://daily.tzstats.com/",
[NetworkType.DELPHINET]: "https://delphi.tzstats.com/",
[NetworkType.EDONET]: "https://edo.tzstats.com/",
[NetworkType.FLORENCENET]: "https://florence.tzstats.com/",
[NetworkType.GRANADANET]: "https://granada.tzstats.com/",
[NetworkType.HANGZHOUNET]: "https://hangzhounet.tzstats.com/",
[NetworkType.ITHACANET]: "https://ithaca.tzstats.com/",
[NetworkType.JAKARTANET]: "https://jakara.tzstats.com/",
[NetworkType.KATHMANDUNET]: "https://kathmandu.tzstats.com/",
[NetworkType.LIMANET]: "https://lima.tzstats.com/",
[NetworkType.MUMBAINET]: "https://mumbai.tzstats.com/",
[NetworkType.NAIROBINET]: "https://nairobi.tzstats.com/",
[NetworkType.OXFORDNET]: "https://oxford.tzstats.com/",
[NetworkType.CUSTOM]: "https://custom.tzstats.com/",
},
) {
super(rpcUrls);
}

public async getAddressLink(
address: string,
network: Network,
): Promise<string> {
const blockExplorer = await this.getLinkForNetwork(network);

return `${blockExplorer}/${address}`;
}
public async getTransactionLink(
transactionId: string,
network: Network,
): Promise<string> {
const blockExplorer = await this.getLinkForNetwork(network);

return `${blockExplorer}/${transactionId}`;
}
}

const dAppClient = new DAppClient({
name: "Beacon Docs",
blockExplorer: new TzStatsBlockExplorer(),
});
+ + \ No newline at end of file diff --git a/advanced/debug-wallet/index.html b/advanced/debug-wallet/index.html new file mode 100644 index 00000000..d68ba7d2 --- /dev/null +++ b/advanced/debug-wallet/index.html @@ -0,0 +1,19 @@ + + + + + +Debug Wallet | Beacon Docs + + + + +
Skip to main content

Debug Wallet

caution

This wallet is intended for developers to debug their dApps.

+

A common issue with dApps is that users report that a certain functionality doesn't work for them. It is often cumbersome to reproduce this in a development environment because the dev team doesn't have access to the account. The Debug Wallet can help debug those cases.

+

Beacon Debug Wallet

+

Watch-only Accounts

+

With the "watch-only" feature in the Debug Wallet it is possible to connect to any dApp using any tz account. The dApp can then be viewed from the eyes of that user and operations can be debugged with ease.

+

Beacon Accounts

+

It is possible to pair any Beacon-compatible wallet to the Debug Wallet. If you do that, the Debug Wallet acts as a "relay" between the dApp and the actual wallet. Requests and responses will be relayed, but the details can be inspected.

+ + \ No newline at end of file diff --git a/advanced/different-node/index.html b/advanced/different-node/index.html new file mode 100644 index 00000000..161e6688 --- /dev/null +++ b/advanced/different-node/index.html @@ -0,0 +1,52 @@ + + + + + +Different Beacon Node | Beacon Docs + + + + +
Skip to main content

Different Beacon Node

You can configure the dApp or Wallet to connect to a different beacon node. +Make sure the servers you use are whitelisted in the beacon network and federation is working correctly.

+
Live Editor
import { DAppClient, Regions } from "@airgap/beacon-sdk";
+
+const dAppClient = new DAppClient({
+  name: "Beacon Docs",
+  matrixNodes: {
+    [Regions.EUROPE_WEST]: ["beacon-node-0.papers.tech:8448"],
+  },
+});
+
+try {
+  console.log("Requesting permissions...");
+  const permissions = await dAppClient.requestPermissions();
+  console.log("Got permissions:", permissions.address);
+} catch (error) {
+  console.error("Got error:", error);
+}
+
Loading...
+
tip

The beacon-sdk deterministically chooses one of the nodes in the array. Changing the array of nodes will most likely lead to users losing their connection.

+ + \ No newline at end of file diff --git a/advanced/flows/connection/index.html b/advanced/flows/connection/index.html new file mode 100644 index 00000000..95c0e87f --- /dev/null +++ b/advanced/flows/connection/index.html @@ -0,0 +1,24 @@ + + + + + +Connection | Beacon Docs + + + + +
Skip to main content

Connection

+graph LR + Z[dApp] --> Y{Extension installed?} + subgraph Beacon SDK + Y -- No --> B[Wallet/P2P] + end + subgraph Extension + X -- Yes --> E[Wallet/P2P] + X -- No --> D[Ledger / Mnemonic] + Y -- Yes --> X{Wallet Paired?} + end +
+ + \ No newline at end of file diff --git a/advanced/flows/extension-communication/index.html b/advanced/flows/extension-communication/index.html new file mode 100644 index 00000000..5447091a --- /dev/null +++ b/advanced/flows/extension-communication/index.html @@ -0,0 +1,40 @@ + + + + + +Extension Communication | Beacon Docs + + + + +
Skip to main content

Extension Communication

+ sequenceDiagram + rect rgba(0, 0, 255, .2) + Note over dApp,Peer: Only for Extensions<br />Extensions have 200ms to respond + dApp->>Peer: Ping + Peer->>dApp: Pong + end + rect rgba(0, 0, 255, .2) + Note over dApp,Peer: dApp sends publicKey to Peer + dApp->>Peer: PairingRequest + Note over dApp,Peer: Peer stores the dApp publicKey <br/> Encrypts own publicKey with dApp publicKey <br/> Send back encrypted publicKey + Peer->>dApp: PairingResponse + end +
+
+ sequenceDiagram + rect rgba(0, 0, 255, .2) + Note over dApp,Peer 1: Permission Request is a broadcast to all peers + dApp->>Peer 1: PermissionRequest (Broadcast) + dApp->>Peer 2: PermissionRequest (Broadcast) + Peer 1->>dApp: PermissionResponse + end + rect rgba(0, 0, 255, .2) + Note over dApp,Peer 1: Operation Request is targeted to one peer + dApp->>Peer 1: OperationRequest (specific to peer) + Peer 1->>dApp: OperationResponse + end +
+ + \ No newline at end of file diff --git a/advanced/flows/ledger-extension/index.html b/advanced/flows/ledger-extension/index.html new file mode 100644 index 00000000..f1150335 --- /dev/null +++ b/advanced/flows/ledger-extension/index.html @@ -0,0 +1,61 @@ + + + + + +Ledger | Beacon Docs + + + + +
Skip to main content

Ledger

Init

+
+sequenceDiagram + Popup->>Background: User Prompt (Pair Ledger) + Background->>Ledger: Share Account + Ledger->>Background: Account + Background->>Popup: Return Account +
+

Permission Request

+
+sequenceDiagram dApp->>Background: Request + Background->>Popup: Permission Prompt + Popup->>Popup: User Confirmation + Popup->>Background: Permission Response + Background->>dApp: Response +
+

Operation Request

+
+sequenceDiagram + dApp->>Background: Request + Background->>Popup: Operation Request + Popup->>Background: Confirm + Background->>Background: Forge Operation + Background->>Ledger: Operation Request + Ledger->>Ledger: User confirmation + Ledger->>Background: Signed Operation + Background->>Background: Broadcast + Background->>dApp: Response +
+

Signing Request

+
+sequenceDiagram dApp->>Background: Request + Background->>Popup: Sign Request + Popup->>Background: Confirm + Background->>Ledger: Sign Request + Ledger->>Ledger: User confirmation + Ledger->>Background: Signed Operation + Background->>dApp: Response +
+

Broadcast Request

+
+sequenceDiagram + dApp->>Background: Request + Background->>Popup: Broascast Request + Popup->>Popup: User confirmation + Popup->>Background: Broascast Response + Background->>Background: Broadcast + Background->>dApp: Response +
+ + \ No newline at end of file diff --git a/advanced/flows/local-mnemonic/index.html b/advanced/flows/local-mnemonic/index.html new file mode 100644 index 00000000..e51bdc84 --- /dev/null +++ b/advanced/flows/local-mnemonic/index.html @@ -0,0 +1,72 @@ + + + + + +Local Mnemonic | Beacon Docs + + + + +
Skip to main content

Local Mnemonic

Init

+
+sequenceDiagram + Popup->>Popup: User Prompt (Add/Generate Mnemonic?) + Popup->>Background: Save Mnemonic + alt generate + Popup->>Background: New / Save mnemonic + Background->>Background: Generate new Mnemonic + end + Background->>Popup: Return Mnemonic +
+

Permission Request

+
+sequenceDiagram + dApp->>Background: Request + Background->>Popup: Permission Request + Popup->>Popup: User confirmation + Popup->>Background: Permission Response + Background->>dApp: Response +
+

Operation Request

+
+sequenceDiagram + dApp->>Background: Request + Background->>Background: Fetch operation data + opt no threshold + Note left of Background: Everything except<br/>simple spend has<br/>to be approved + Background->>Popup: Operation Request + Popup->>Popup: User confirmation + Popup->>Background: Operation Response + end + Background->>Background: Forge Operation + Background->>Background: Sign Operation + Background->>Background: Broadcast + Background->>dApp: Response +
+

Signing Request

+
+sequenceDiagram + dApp->>Background: Request + opt no threshold + Note left of Background: Everything except<br/>simple spend has<br/>to be approved + Background->>Popup: Signing Request + Popup->>Popup: User confirmation + Popup->>Background: Signing Response + end + Background->>Background: Sign Operation + Background->>dApp: Response +
+
warning

Thresholds could be abused to sign contract calls. Wallets must reject request with parameters.

+

Broadcast Request

+
+sequenceDiagram + dApp->>Background: Request + Background->>Popup: Broascast Request + Popup->>Popup: User confirmation + Popup->>Background: Broascast Response + Background->>Background: Broadcast + Background->>dApp: Response +
+ + \ No newline at end of file diff --git a/advanced/flows/p2p-direct/index.html b/advanced/flows/p2p-direct/index.html new file mode 100644 index 00000000..fe303509 --- /dev/null +++ b/advanced/flows/p2p-direct/index.html @@ -0,0 +1,57 @@ + + + + + +P2P Direct | Beacon Docs + + + + +
Skip to main content

P2P Direct

Init

+
+sequenceDiagram + dApp->>Wallet: Show QR Code (publicKey exchange) + Wallet->>Wallet: User scans QR code + Wallet->>dApp: Send own publicKey to dApp, connection established +
+

Permission Request

+
+sequenceDiagram + dApp->>Wallet: User Prompt (Do you want to pair?) + Wallet->>Wallet: Grant permissions + Wallet->>dApp: Return Address & Permissions +
+

Operation Request

+
+sequenceDiagram + dApp->>Wallet: Request + opt no threshold + Wallet->>Wallet: User confirmation + end + Wallet->>Wallet: Forge Operation + Wallet->>Wallet: Sign + Wallet->>Wallet: Broadcast + Wallet->>dApp: Response +
+

Signing Request

+
+sequenceDiagram + dApp->>Wallet: Request + opt no threshold + Wallet->>Wallet: User confirmation + end + Wallet->>Wallet: Sign + Wallet->>dApp: Response +
+
warning

Thresholds could be abused to sign contract calls. Wallets must reject request with parameters.

+

Broadcast Request

+
+sequenceDiagram + dApp->>Wallet: Request + Wallet->>Wallet: User confirmation + Wallet->>Wallet: Broadcast + Wallet->>dApp: Response +
+ + \ No newline at end of file diff --git a/advanced/flows/p2p-extension/index.html b/advanced/flows/p2p-extension/index.html new file mode 100644 index 00000000..ef3291c0 --- /dev/null +++ b/advanced/flows/p2p-extension/index.html @@ -0,0 +1,78 @@ + + + + + +P2P Extension | Beacon Docs + + + + +
Skip to main content

P2P Extension

Init

+
+sequenceDiagram + Popup->>Background: Get QR Data + Background->>Background: Start listening for new connections + Background->>Popup: Return QR Data + Popup->>Wallet: Show QR Code (publicKey exchange) + Wallet->>Wallet: User scans QR code + Wallet->>Background: Send own publicKey to dApp, connection established + Background->>Popup: Successful connection +
+
+sequenceDiagram + Popup->>Background: Get QR Data + Background->>Background: Start listening for new connections + Background->>Popup: Return QR Data + Popup->>Wallet: Show QR Code (publicKey exchange) + Wallet->>Wallet: User scans QR code + Wallet->>Background: Send own publicKey to dApp, connection established + Background->>Popup: Successful connection +
+

Permission Request

+
+sequenceDiagram + dApp->>Background: Request + Background->>Wallet: Permission Prompt + Wallet->>Wallet: User Confirmation + Wallet->>Background: Permission Response + Background->>dApp: Response +
+

Operation Request

+
+sequenceDiagram + dApp->>Background: Request + Background->>Wallet: Operation Request + opt no threshold + Wallet->>Wallet: User confirmation + end + Wallet->>Wallet: Forge Operation + Wallet->>Wallet: Sign + Wallet->>Wallet: Broadcast + Wallet->>Background: Operation Response + Background->>dApp: Response +
+

Signing Request

+
+sequenceDiagram + dApp->>Background: Request + Background->>Wallet: Sign Request + opt no threshold + Wallet->>Wallet: User confirmation + end + Wallet->>Wallet: Sign + Wallet->>Background: Sign Response + Background->>dApp: Response +
+

Broadcast Request

+
+sequenceDiagram + dApp->>Background: Request + Background->>Wallet: Signing Request + Wallet->>Wallet: User confirmation + Wallet->>Background: Signing Response + Background->>Background: Broadcast + Background->>dApp: Response +
+ + \ No newline at end of file diff --git a/advanced/push-notification/index.html b/advanced/push-notification/index.html new file mode 100644 index 00000000..114ebbab --- /dev/null +++ b/advanced/push-notification/index.html @@ -0,0 +1,30 @@ + + + + + +Push Notification | Beacon Docs + + + + +
Skip to main content

Push Notification

warning

Push Notifications are in beta. There is no wallet that supports it at the moment.

+ + +
+sequenceDiagram + rect rgba(0, 0, 255, .2) + Note over dApp,Peer: Only for Extensions<br />Extensions have 200ms to respond + dApp->>Peer: Ping + Peer->>dApp: Pong + end + rect rgba(0, 0, 255, .2) + Note over dApp,Peer: dApp sends publicKey to Peer + dApp->>Peer: PairingRequest + Note over dApp,Peer: Peer stores the dApp publicKey <br/> Encrypts own publicKey with dApp publicKey <br/> Send back encrypted publicKey + Peer->>dApp: PairingResponse + end +
+

+ + \ No newline at end of file diff --git a/advanced/sdk-info/index.html b/advanced/sdk-info/index.html new file mode 100644 index 00000000..7d75f540 --- /dev/null +++ b/advanced/sdk-info/index.html @@ -0,0 +1,103 @@ + + + + + +Client Info | Beacon Docs + + + + +
Skip to main content

Client Info

The following page lists all the different options in Beacon to retrieve and display information about the SDK.

+
Live Editor
import { BEACON_VERSION, SDK_VERSION } from "@airgap/beacon-sdk";
+
+console.log("SDK Version", SDK_VERSION);
+console.log("Beacon Version", BEACON_VERSION);
+
Loading...
+
Live Editor
import { DAppClient } from "@airgap/beacon-sdk";
+
+const dAppClient = new DAppClient({ name: "Beacon Docs" });
+
+console.log(`Connected Accounts:`, await dAppClient.getAccounts());
+console.log(`Connected Peers:`, await dAppClient.getPeers());
+
Loading...
+
Live Editor
import { DAppClient, NetworkType } from "@airgap/beacon-sdk";
+
+const dAppClient = new DAppClient({ name: "Beacon Docs" });
+
+const addressLink = await dAppClient.blockExplorer.getAddressLink(
+  "tz1MJx9vhaNRSimcuXPK2rW4fLccQnDAnVKJ",
+  { type: NetworkType.MAINNET },
+);
+console.log("Address Link", addressLink);
+
+const txLink = await dAppClient.blockExplorer.getTransactionLink(
+  "onzCRJhQ9zPC38TLGhBTghCW7WAJpfUJ2NpwbbQKbW6LeEL8RfK",
+  { type: NetworkType.MAINNET },
+);
+console.log("Transaction Link", txLink);
+
+console.log("\n\nConnection Info:\n");
+console.log("Status:", dAppClient.connectionStatus);
+const accounts = await dAppClient.getAccounts();
+console.log("Accounts:", accounts);
+const peers = await dAppClient.getPeers();
+console.log("Peers:", peers);
+
+console.log("\n\nDebug:\n");
+console.log("Local Beacon ID:", await dAppClient.beaconId);
+const colorMode = await dAppClient.getColorMode();
+console.log("Color Mode:", colorMode);
+const ownMetadata = await dAppClient.getOwnAppMetadata();
+console.log("Own Metadata:", ownMetadata);
+
Loading...
+ + \ No newline at end of file diff --git a/advanced/ui-elements/index.html b/advanced/ui-elements/index.html new file mode 100644 index 00000000..df9f1e58 --- /dev/null +++ b/advanced/ui-elements/index.html @@ -0,0 +1,319 @@ + + + + + +UI Elements | Beacon Docs + + + + +
Skip to main content

UI Elements

caution

We strongly recommend keeping the default UI Elements. +Consistent UI helps users to interact with different dApps more easily.

+

The default UI elements have been designed with all wallets and user setups in mind. +It handles a lot of cases that are not obvious at first glance. If you really must overwrite the default UI.

+

Custom UI Guidelines

+
    +
  1. When the user wants to connect to a wallet, a selection of wallets must be shown. +The selection depends on the device the user is using and should display different options on different devices.
  2. +
+

On desktop there is only one view with some wallets and the QR code.

https://mydapp.com
Beacon Pairing
+
    +
  1. Every message sent by the dApp should trigger a persistent element on screen, indicating that a request is in progress.
  2. +
+
https://mydapp.com
Beacon Loading
+
    +
  • If no message has been received for a certain amount of time (eg. 5 seconds), the UI should indicate that there are potential connection issues. +The dApp should NOT do any automatic action at this point, because some delays are normal, especially when working with wallets that communicate +over the P2P network.
  • +
  • In the UI element that is shown, the user SHOULD have the option to reset his connection, meaning to disconnect a wallet. This will abort the whole +flow. The user can start the action again, which will now trigger a new "pairing" alert because the previous connection was reset.
  • +
+
https://mydapp.com
Beacon Loading Open
+
    +
  1. Once the Wallet receives the request, it will immediately send back an Acknowledgement Message. +When this message is received in the dApp, the dApp knows that the connection is still valid and the user can handle the request. +The persistent UI element that is shown on screen should now be updated, indicating that we are waiting for user input on the wallet.
  2. +
+
https://mydapp.com
Beacon Awaiting
+
    +
  1. When the response is received, the persistent element can be removed again and the successful (or error) response can be displayed to the user and the application flow can be continued.
  2. +
+

Overwriting Default UI elements

+

You can overwrite all of the default UI elements by doing the following.

+
Live Editor
import {
+  BeaconEvent,
+  DAppClient,
+  defaultEventCallbacks,
+} from "@airgap/beacon-sdk";
+
+const dAppClient = new DAppClient({
+  name: "Beacon Docs",
+  disableDefaultEvents: true, // Disable all events / UI. This also disables the pairing alert.
+  eventHandlers: {
+    // To keep the pairing alert, we have to add the following default event handlers back
+    [BeaconEvent.PAIR_INIT]: {
+      handler: defaultEventCallbacks.PAIR_INIT,
+    },
+    [BeaconEvent.PAIR_SUCCESS]: {
+      handler: defaultEventCallbacks.PAIR_SUCCESS,
+    },
+  },
+});
+
+try {
+  console.log("Requesting permissions...");
+  const permissions = await dAppClient.requestPermissions();
+  console.log("Got permissions:", permissions.address);
+} catch (error) {
+  console.error("Got error:", error);
+}
+
Loading...
+

You can also add your own logic to specific events and still keep the original behaviour.

+

The same can be achieved without overwriting the default event handler by subscribing to an event. This method is preferred, if possible.

+
Live Editor
import {
+  BeaconEvent,
+  DAppClient,
+  defaultEventCallbacks,
+  P2PPairingRequest,
+  PostMessagePairingRequest,
+  NetworkType,
+  WalletConnectPairingRequest,
+  AnalyticsInterface,
+} from "@airgap/beacon-sdk";
+
+const dAppClient = new DAppClient({
+  name: "Beacon Docs",
+  eventHandlers: {
+    [BeaconEvent.PAIR_INIT]: {
+      // Every BeaconEvent can be overriden by passing a handler here.
+      // The default will not be executed anymore. To keep the default,
+      // you will have to call it again.
+      handler: async (
+        data: {
+          p2pPeerInfo: () => Promise<P2PPairingRequest>;
+          postmessagePeerInfo: () => Promise<PostMessagePairingRequest>;
+          walletConnectPeerInfo: () => Promise<WalletConnectPairingRequest>;
+          networkType: NetworkType;
+          abortedHandler?(): void;
+          disclaimerText?: string;
+          analytics: AnalyticsInterface;
+          featuredWallets?: string[];
+        },
+        eventCallback?: any[] | undefined,
+      ): Promise<void> => {
+        await defaultEventCallbacks.PAIR_INIT(data); // Add this if you want to keep the default behaviour.
+        console.log("syncInfo", data, eventCallback);
+      },
+    },
+  },
+});
+
+try {
+  console.log("Requesting permissions...");
+  const permissions = await dAppClient.requestPermissions();
+  console.log("Got permissions:", permissions.address);
+} catch (error) {
+  console.error("Got error:", error);
+}
+
Loading...
+

The closing of the pairing alert can not be listened to by default. The reason for this is the delay in the P2P connections. +It is possible that a user scans the pairing QR code with his wallet and then closes the alert while waiting for the connection to be established. +If the dApp interprets the "closing" of the alert as an abort, and a few seconds later the connection is established successfully, the behaviour could be unexpected.

+

If you still want to be notified of the closing of the pairing window, you can do it in the following way, while keeping the default behaviour.

+
Live Editor
import {
+  BeaconEvent,
+  DAppClient,
+  defaultEventCallbacks,
+  P2PPairingRequest,
+  PostMessagePairingRequest,
+  NetworkType,
+  WalletConnectPairingRequest,
+  AnalyticsInterface,
+} from "@airgap/beacon-sdk";
+
+const dAppClient = new DAppClient({
+    name: "Beacon Docs",
+    eventHandlers: {
+      [BeaconEvent.PAIR_INIT]: {
+        // Every BeaconEvent can be overriden by passing a handler here.
+        // The default will not be executed anymore. To keep the default,
+        // you will have to call it again.
+        handler: async (data: {
+          p2pPeerInfo: () => Promise<P2PPairingRequest>;
+          postmessagePeerInfo: () => Promise<PostMessagePairingRequest>;
+          walletConnectPeerInfo: () => Promise<WalletConnectPairingRequest>;
+          networkType: NetworkType;
+          abortedHandler?(): void;
+          disclaimerText?: string;
+          analytics: AnalyticsInterface;
+          featuredWallets?: string[];
+        }): Promise<void> => {
+          // If you want to attach your own "on alert closed" handler
+          // eslint-disable-next-line @typescript-eslint/unbound-method
+          const oldHandler = data.abortedHandler;
+          const newHandler = (): void => {
+            if (oldHandler) {
+              // Make sure to call the internal abortedHandler
+              oldHandler();
+            }
+            // Add your own logic here
+            console.log("My logic");
+
+          data.abortedHandler = newHandler; // Replace the internal abortedHandler with the new one
+          await defaultEventCallbacks.PAIR_INIT(data); // Add this if you want to keep the default behaviour.
+          console.log("syncInfo", data);
+        },
+      },
+    },
+  });
+
+  try {
+    console.log("Requesting permissions...");
+    const permissions = await dAppClient.requestPermissions();
+    console.log("Got permissions:", permissions.address);
+  } catch (error) {
+    console.error("Got error:", error);
+  }
+
+
Loading...
+ + \ No newline at end of file diff --git a/assets/css/styles.14b8d59f.css b/assets/css/styles.14b8d59f.css new file mode 100644 index 00000000..a46e9a00 --- /dev/null +++ b/assets/css/styles.14b8d59f.css @@ -0,0 +1 @@ +.col,.container{padding:0 var(--ifm-spacing-horizontal);width:100%}.markdown>h2,.markdown>h3,.markdown>h4,.markdown>h5,.markdown>h6{margin-bottom:calc(var(--ifm-heading-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown li,body{word-wrap:break-word}body,ol ol,ol ul,ul ol,ul ul{margin:0}pre,table{overflow:auto}blockquote,pre{margin:0 0 var(--ifm-spacing-vertical)}.breadcrumbs__link,.button{transition-timing-function:var(--ifm-transition-timing-default)}.button,.hash-link{-webkit-user-select:none}.button,code{vertical-align:middle}.button--outline.button--active,.button--outline:active,.button--outline:hover,:root{--ifm-button-color:var(--ifm-font-color-base-inverse)}.menu__link:hover,a{transition:color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.navbar--dark,:root{--ifm-navbar-link-hover-color:var(--ifm-color-primary)}.menu,.navbar-sidebar{overflow-x:hidden}:root,html[data-theme=dark]{--ifm-color-emphasis-500:var(--ifm-color-gray-500)}.toggleButton_gllP,html{-webkit-tap-highlight-color:transparent}.clean-list,.containsTaskList_mC6p,.details_lb9f>summary,.dropdown__menu,.menu__list{list-style:none}:root{--ifm-color-scheme:light;--ifm-dark-value:10%;--ifm-darker-value:15%;--ifm-darkest-value:30%;--ifm-light-value:15%;--ifm-lighter-value:30%;--ifm-lightest-value:50%;--ifm-contrast-background-value:90%;--ifm-contrast-foreground-value:70%;--ifm-contrast-background-dark-value:70%;--ifm-contrast-foreground-dark-value:90%;--ifm-color-primary:#3578e5;--ifm-color-secondary:#ebedf0;--ifm-color-success:#00a400;--ifm-color-info:#54c7ec;--ifm-color-warning:#ffba00;--ifm-color-danger:#fa383e;--ifm-color-primary-dark:#306cce;--ifm-color-primary-darker:#2d66c3;--ifm-color-primary-darkest:#2554a0;--ifm-color-primary-light:#538ce9;--ifm-color-primary-lighter:#72a1ed;--ifm-color-primary-lightest:#9abcf2;--ifm-color-primary-contrast-background:#ebf2fc;--ifm-color-primary-contrast-foreground:#102445;--ifm-color-secondary-dark:#d4d5d8;--ifm-color-secondary-darker:#c8c9cc;--ifm-color-secondary-darkest:#a4a6a8;--ifm-color-secondary-light:#eef0f2;--ifm-color-secondary-lighter:#f1f2f5;--ifm-color-secondary-lightest:#f5f6f8;--ifm-color-secondary-contrast-background:#fdfdfe;--ifm-color-secondary-contrast-foreground:#474748;--ifm-color-success-dark:#009400;--ifm-color-success-darker:#008b00;--ifm-color-success-darkest:#007300;--ifm-color-success-light:#26b226;--ifm-color-success-lighter:#4dbf4d;--ifm-color-success-lightest:#80d280;--ifm-color-success-contrast-background:#e6f6e6;--ifm-color-success-contrast-foreground:#003100;--ifm-color-info-dark:#4cb3d4;--ifm-color-info-darker:#47a9c9;--ifm-color-info-darkest:#3b8ba5;--ifm-color-info-light:#6ecfef;--ifm-color-info-lighter:#87d8f2;--ifm-color-info-lightest:#aae3f6;--ifm-color-info-contrast-background:#eef9fd;--ifm-color-info-contrast-foreground:#193c47;--ifm-color-warning-dark:#e6a700;--ifm-color-warning-darker:#d99e00;--ifm-color-warning-darkest:#b38200;--ifm-color-warning-light:#ffc426;--ifm-color-warning-lighter:#ffcf4d;--ifm-color-warning-lightest:#ffdd80;--ifm-color-warning-contrast-background:#fff8e6;--ifm-color-warning-contrast-foreground:#4d3800;--ifm-color-danger-dark:#e13238;--ifm-color-danger-darker:#d53035;--ifm-color-danger-darkest:#af272b;--ifm-color-danger-light:#fb565b;--ifm-color-danger-lighter:#fb7478;--ifm-color-danger-lightest:#fd9c9f;--ifm-color-danger-contrast-background:#ffebec;--ifm-color-danger-contrast-foreground:#4b1113;--ifm-color-white:#fff;--ifm-color-black:#000;--ifm-color-gray-0:var(--ifm-color-white);--ifm-color-gray-100:#f5f6f7;--ifm-color-gray-200:#ebedf0;--ifm-color-gray-300:#dadde1;--ifm-color-gray-400:#ccd0d5;--ifm-color-gray-500:#bec3c9;--ifm-color-gray-600:#8d949e;--ifm-color-gray-700:#606770;--ifm-color-gray-800:#444950;--ifm-color-gray-900:#1c1e21;--ifm-color-gray-1000:var(--ifm-color-black);--ifm-color-emphasis-0:var(--ifm-color-gray-0);--ifm-color-emphasis-100:var(--ifm-color-gray-100);--ifm-color-emphasis-200:var(--ifm-color-gray-200);--ifm-color-emphasis-300:var(--ifm-color-gray-300);--ifm-color-emphasis-400:var(--ifm-color-gray-400);--ifm-color-emphasis-600:var(--ifm-color-gray-600);--ifm-color-emphasis-700:var(--ifm-color-gray-700);--ifm-color-emphasis-800:var(--ifm-color-gray-800);--ifm-color-emphasis-900:var(--ifm-color-gray-900);--ifm-color-emphasis-1000:var(--ifm-color-gray-1000);--ifm-color-content:var(--ifm-color-emphasis-900);--ifm-color-content-inverse:var(--ifm-color-emphasis-0);--ifm-color-content-secondary:#525860;--ifm-background-color:#0000;--ifm-background-surface-color:var(--ifm-color-content-inverse);--ifm-global-border-width:1px;--ifm-global-radius:0.4rem;--ifm-hover-overlay:#0000000d;--ifm-font-color-base:var(--ifm-color-content);--ifm-font-color-base-inverse:var(--ifm-color-content-inverse);--ifm-font-color-secondary:var(--ifm-color-content-secondary);--ifm-font-family-base:system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol";--ifm-font-family-monospace:SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--ifm-font-size-base:100%;--ifm-font-weight-light:300;--ifm-font-weight-normal:400;--ifm-font-weight-semibold:500;--ifm-font-weight-bold:700;--ifm-font-weight-base:var(--ifm-font-weight-normal);--ifm-line-height-base:1.65;--ifm-global-spacing:1rem;--ifm-spacing-vertical:var(--ifm-global-spacing);--ifm-spacing-horizontal:var(--ifm-global-spacing);--ifm-transition-fast:200ms;--ifm-transition-slow:400ms;--ifm-transition-timing-default:cubic-bezier(0.08,0.52,0.52,1);--ifm-global-shadow-lw:0 1px 2px 0 #0000001a;--ifm-global-shadow-md:0 5px 40px #0003;--ifm-global-shadow-tl:0 12px 28px 0 #0003,0 2px 4px 0 #0000001a;--ifm-z-index-dropdown:100;--ifm-z-index-fixed:200;--ifm-z-index-overlay:400;--ifm-container-width:1140px;--ifm-container-width-xl:1320px;--ifm-code-background:#f6f7f8;--ifm-code-border-radius:var(--ifm-global-radius);--ifm-code-font-size:90%;--ifm-code-padding-horizontal:0.1rem;--ifm-code-padding-vertical:0.1rem;--ifm-pre-background:var(--ifm-code-background);--ifm-pre-border-radius:var(--ifm-code-border-radius);--ifm-pre-color:inherit;--ifm-pre-line-height:1.45;--ifm-pre-padding:1rem;--ifm-heading-color:inherit;--ifm-heading-margin-top:0;--ifm-heading-margin-bottom:var(--ifm-spacing-vertical);--ifm-heading-font-family:var(--ifm-font-family-base);--ifm-heading-font-weight:var(--ifm-font-weight-bold);--ifm-heading-line-height:1.25;--ifm-h1-font-size:2rem;--ifm-h2-font-size:1.5rem;--ifm-h3-font-size:1.25rem;--ifm-h4-font-size:1rem;--ifm-h5-font-size:0.875rem;--ifm-h6-font-size:0.85rem;--ifm-image-alignment-padding:1.25rem;--ifm-leading-desktop:1.25;--ifm-leading:calc(var(--ifm-leading-desktop)*1rem);--ifm-list-left-padding:2rem;--ifm-list-margin:1rem;--ifm-list-item-margin:0.25rem;--ifm-list-paragraph-margin:1rem;--ifm-table-cell-padding:0.75rem;--ifm-table-background:#0000;--ifm-table-stripe-background:#00000008;--ifm-table-border-width:1px;--ifm-table-border-color:var(--ifm-color-emphasis-300);--ifm-table-head-background:inherit;--ifm-table-head-color:inherit;--ifm-table-head-font-weight:var(--ifm-font-weight-bold);--ifm-table-cell-color:inherit;--ifm-link-color:var(--ifm-color-primary);--ifm-link-decoration:none;--ifm-link-hover-color:var(--ifm-link-color);--ifm-link-hover-decoration:underline;--ifm-paragraph-margin-bottom:var(--ifm-leading);--ifm-blockquote-font-size:var(--ifm-font-size-base);--ifm-blockquote-border-left-width:2px;--ifm-blockquote-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-blockquote-padding-vertical:0;--ifm-blockquote-shadow:none;--ifm-blockquote-color:var(--ifm-color-emphasis-800);--ifm-blockquote-border-color:var(--ifm-color-emphasis-300);--ifm-hr-background-color:var(--ifm-color-emphasis-500);--ifm-hr-height:1px;--ifm-hr-margin-vertical:1.5rem;--ifm-scrollbar-size:7px;--ifm-scrollbar-track-background-color:#f1f1f1;--ifm-scrollbar-thumb-background-color:silver;--ifm-scrollbar-thumb-hover-background-color:#a7a7a7;--ifm-alert-background-color:inherit;--ifm-alert-border-color:inherit;--ifm-alert-border-radius:var(--ifm-global-radius);--ifm-alert-border-width:0px;--ifm-alert-border-left-width:5px;--ifm-alert-color:var(--ifm-font-color-base);--ifm-alert-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-alert-padding-vertical:var(--ifm-spacing-vertical);--ifm-alert-shadow:var(--ifm-global-shadow-lw);--ifm-avatar-intro-margin:1rem;--ifm-avatar-intro-alignment:inherit;--ifm-avatar-photo-size:3rem;--ifm-badge-background-color:inherit;--ifm-badge-border-color:inherit;--ifm-badge-border-radius:var(--ifm-global-radius);--ifm-badge-border-width:var(--ifm-global-border-width);--ifm-badge-color:var(--ifm-color-white);--ifm-badge-padding-horizontal:calc(var(--ifm-spacing-horizontal)*0.5);--ifm-badge-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-breadcrumb-border-radius:1.5rem;--ifm-breadcrumb-spacing:0.5rem;--ifm-breadcrumb-color-active:var(--ifm-color-primary);--ifm-breadcrumb-item-background-active:var(--ifm-hover-overlay);--ifm-breadcrumb-padding-horizontal:0.8rem;--ifm-breadcrumb-padding-vertical:0.4rem;--ifm-breadcrumb-size-multiplier:1;--ifm-breadcrumb-separator:url('data:image/svg+xml;utf8,');--ifm-breadcrumb-separator-filter:none;--ifm-breadcrumb-separator-size:0.5rem;--ifm-breadcrumb-separator-size-multiplier:1.25;--ifm-button-background-color:inherit;--ifm-button-border-color:var(--ifm-button-background-color);--ifm-button-border-width:var(--ifm-global-border-width);--ifm-button-font-weight:var(--ifm-font-weight-bold);--ifm-button-padding-horizontal:1.5rem;--ifm-button-padding-vertical:0.375rem;--ifm-button-size-multiplier:1;--ifm-button-transition-duration:var(--ifm-transition-fast);--ifm-button-border-radius:calc(var(--ifm-global-radius)*var(--ifm-button-size-multiplier));--ifm-button-group-spacing:2px;--ifm-card-background-color:var(--ifm-background-surface-color);--ifm-card-border-radius:calc(var(--ifm-global-radius)*2);--ifm-card-horizontal-spacing:var(--ifm-global-spacing);--ifm-card-vertical-spacing:var(--ifm-global-spacing);--ifm-toc-border-color:var(--ifm-color-emphasis-300);--ifm-toc-link-color:var(--ifm-color-content-secondary);--ifm-toc-padding-vertical:0.5rem;--ifm-toc-padding-horizontal:0.5rem;--ifm-dropdown-background-color:var(--ifm-background-surface-color);--ifm-dropdown-font-weight:var(--ifm-font-weight-semibold);--ifm-dropdown-link-color:var(--ifm-font-color-base);--ifm-dropdown-hover-background-color:var(--ifm-hover-overlay);--ifm-footer-background-color:var(--ifm-color-emphasis-100);--ifm-footer-color:inherit;--ifm-footer-link-color:var(--ifm-color-emphasis-700);--ifm-footer-link-hover-color:var(--ifm-color-primary);--ifm-footer-link-horizontal-spacing:0.5rem;--ifm-footer-padding-horizontal:calc(var(--ifm-spacing-horizontal)*2);--ifm-footer-padding-vertical:calc(var(--ifm-spacing-vertical)*2);--ifm-footer-title-color:inherit;--ifm-footer-logo-max-width:min(30rem,90vw);--ifm-hero-background-color:var(--ifm-background-surface-color);--ifm-hero-text-color:var(--ifm-color-emphasis-800);--ifm-menu-color:var(--ifm-color-emphasis-700);--ifm-menu-color-active:var(--ifm-color-primary);--ifm-menu-color-background-active:var(--ifm-hover-overlay);--ifm-menu-color-background-hover:var(--ifm-hover-overlay);--ifm-menu-link-padding-horizontal:0.75rem;--ifm-menu-link-padding-vertical:0.375rem;--ifm-menu-link-sublist-icon:url('data:image/svg+xml;utf8,');--ifm-menu-link-sublist-icon-filter:none;--ifm-navbar-background-color:var(--ifm-background-surface-color);--ifm-navbar-height:3.75rem;--ifm-navbar-item-padding-horizontal:0.75rem;--ifm-navbar-item-padding-vertical:0.25rem;--ifm-navbar-link-color:var(--ifm-font-color-base);--ifm-navbar-link-active-color:var(--ifm-link-color);--ifm-navbar-padding-horizontal:var(--ifm-spacing-horizontal);--ifm-navbar-padding-vertical:calc(var(--ifm-spacing-vertical)*0.5);--ifm-navbar-shadow:var(--ifm-global-shadow-lw);--ifm-navbar-search-input-background-color:var(--ifm-color-emphasis-200);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-800);--ifm-navbar-search-input-placeholder-color:var(--ifm-color-emphasis-500);--ifm-navbar-search-input-icon:url('data:image/svg+xml;utf8,');--ifm-navbar-sidebar-width:83vw;--ifm-pagination-border-radius:var(--ifm-global-radius);--ifm-pagination-color-active:var(--ifm-color-primary);--ifm-pagination-font-size:1rem;--ifm-pagination-item-active-background:var(--ifm-hover-overlay);--ifm-pagination-page-spacing:0.2em;--ifm-pagination-padding-horizontal:calc(var(--ifm-spacing-horizontal)*1);--ifm-pagination-padding-vertical:calc(var(--ifm-spacing-vertical)*0.25);--ifm-pagination-nav-border-radius:var(--ifm-global-radius);--ifm-pagination-nav-color-hover:var(--ifm-color-primary);--ifm-pills-color-active:var(--ifm-color-primary);--ifm-pills-color-background-active:var(--ifm-hover-overlay);--ifm-pills-spacing:0.125rem;--ifm-tabs-color:var(--ifm-font-color-secondary);--ifm-tabs-color-active:var(--ifm-color-primary);--ifm-tabs-color-active-border:var(--ifm-tabs-color-active);--ifm-tabs-padding-horizontal:1rem;--ifm-tabs-padding-vertical:1rem;--docusaurus-progress-bar-color:var(--ifm-color-primary);--ifm-color-primary:#3880ff;--ifm-color-primary-dark:#1e6af1;--ifm-color-primary-darker:#2972f5;--ifm-color-primary-darkest:#216ef7;--ifm-color-primary-light:#4d8af5;--ifm-color-primary-lighter:#558ef3;--ifm-color-primary-lightest:#5c93f3;--ifm-code-font-size:95%;--docusaurus-highlighted-code-line-bg:#dedfe1;--ifm-color-dark:#35415b;--docusaurus-tag-list-border:var(--ifm-color-emphasis-300);--docusaurus-announcement-bar-height:auto;--docusaurus-collapse-button-bg:#0000;--docusaurus-collapse-button-bg-hover:#0000001a;--doc-sidebar-width:300px;--doc-sidebar-hidden-width:30px}.badge--danger,.badge--info,.badge--primary,.badge--secondary,.badge--success,.badge--warning{--ifm-badge-border-color:var(--ifm-badge-background-color)}.button--link,.button--outline{--ifm-button-background-color:#0000}*{box-sizing:border-box}html{-webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;text-size-adjust:100%;background-color:var(--ifm-background-color);color:var(--ifm-font-color-base);color-scheme:var(--ifm-color-scheme);font:var(--ifm-font-size-base)/var(--ifm-line-height-base) var(--ifm-font-family-base);text-rendering:optimizelegibility}iframe{border:0;color-scheme:auto}.container{margin:0 auto;max-width:var(--ifm-container-width)}.container--fluid{max-width:inherit}.row{display:flex;flex-wrap:wrap;margin:0 calc(var(--ifm-spacing-horizontal)*-1)}.margin-bottom--none,.margin-vert--none,.markdown>:last-child{margin-bottom:0!important}.margin-top--none,.margin-vert--none,.tabItem_LNqP{margin-top:0!important}.row--no-gutters{margin-left:0;margin-right:0}.margin-horiz--none,.margin-right--none{margin-right:0!important}.row--no-gutters>.col{padding-left:0;padding-right:0}.row--align-top{align-items:flex-start}.row--align-bottom{align-items:flex-end}.menuExternalLink_NmtK,.row--align-center{align-items:center}.row--align-stretch{align-items:stretch}.row--align-baseline{align-items:baseline}.col{--ifm-col-width:100%;flex:1 0;margin-left:0;max-width:var(--ifm-col-width)}.padding-bottom--none,.padding-vert--none{padding-bottom:0!important}.padding-top--none,.padding-vert--none{padding-top:0!important}.padding-horiz--none,.padding-left--none{padding-left:0!important}.padding-horiz--none,.padding-right--none{padding-right:0!important}.col[class*=col--]{flex:0 0 var(--ifm-col-width)}.col--1{--ifm-col-width:8.33333%}.col--offset-1{margin-left:8.33333%}.col--2{--ifm-col-width:16.66667%}.col--offset-2{margin-left:16.66667%}.col--3{--ifm-col-width:25%}.col--offset-3{margin-left:25%}.col--4{--ifm-col-width:33.33333%}.col--offset-4{margin-left:33.33333%}.col--5{--ifm-col-width:41.66667%}.col--offset-5{margin-left:41.66667%}.col--6{--ifm-col-width:50%}.col--offset-6{margin-left:50%}.col--7{--ifm-col-width:58.33333%}.col--offset-7{margin-left:58.33333%}.col--8{--ifm-col-width:66.66667%}.col--offset-8{margin-left:66.66667%}.col--9{--ifm-col-width:75%}.col--offset-9{margin-left:75%}.col--10{--ifm-col-width:83.33333%}.col--offset-10{margin-left:83.33333%}.col--11{--ifm-col-width:91.66667%}.col--offset-11{margin-left:91.66667%}.col--12{--ifm-col-width:100%}.col--offset-12{margin-left:100%}.margin-horiz--none,.margin-left--none{margin-left:0!important}.margin--none{margin:0!important}.margin-bottom--xs,.margin-vert--xs{margin-bottom:.25rem!important}.margin-top--xs,.margin-vert--xs{margin-top:.25rem!important}.margin-horiz--xs,.margin-left--xs{margin-left:.25rem!important}.margin-horiz--xs,.margin-right--xs{margin-right:.25rem!important}.margin--xs{margin:.25rem!important}.margin-bottom--sm,.margin-vert--sm{margin-bottom:.5rem!important}.margin-top--sm,.margin-vert--sm{margin-top:.5rem!important}.margin-horiz--sm,.margin-left--sm{margin-left:.5rem!important}.margin-horiz--sm,.margin-right--sm{margin-right:.5rem!important}.margin--sm{margin:.5rem!important}.margin-bottom--md,.margin-vert--md{margin-bottom:1rem!important}.margin-top--md,.margin-vert--md{margin-top:1rem!important}.margin-horiz--md,.margin-left--md{margin-left:1rem!important}.margin-horiz--md,.margin-right--md{margin-right:1rem!important}.margin--md{margin:1rem!important}.margin-bottom--lg,.margin-vert--lg{margin-bottom:2rem!important}.margin-top--lg,.margin-vert--lg{margin-top:2rem!important}.margin-horiz--lg,.margin-left--lg{margin-left:2rem!important}.margin-horiz--lg,.margin-right--lg{margin-right:2rem!important}.margin--lg{margin:2rem!important}.margin-bottom--xl,.margin-vert--xl{margin-bottom:5rem!important}.margin-top--xl,.margin-vert--xl{margin-top:5rem!important}.margin-horiz--xl,.margin-left--xl{margin-left:5rem!important}.margin-horiz--xl,.margin-right--xl{margin-right:5rem!important}.margin--xl{margin:5rem!important}.padding--none{padding:0!important}.padding-bottom--xs,.padding-vert--xs{padding-bottom:.25rem!important}.padding-top--xs,.padding-vert--xs{padding-top:.25rem!important}.padding-horiz--xs,.padding-left--xs{padding-left:.25rem!important}.padding-horiz--xs,.padding-right--xs{padding-right:.25rem!important}.padding--xs{padding:.25rem!important}.padding-bottom--sm,.padding-vert--sm{padding-bottom:.5rem!important}.padding-top--sm,.padding-vert--sm{padding-top:.5rem!important}.padding-horiz--sm,.padding-left--sm{padding-left:.5rem!important}.padding-horiz--sm,.padding-right--sm{padding-right:.5rem!important}.padding--sm{padding:.5rem!important}.padding-bottom--md,.padding-vert--md{padding-bottom:1rem!important}.padding-top--md,.padding-vert--md{padding-top:1rem!important}.padding-horiz--md,.padding-left--md{padding-left:1rem!important}.padding-horiz--md,.padding-right--md{padding-right:1rem!important}.padding--md{padding:1rem!important}.padding-bottom--lg,.padding-vert--lg{padding-bottom:2rem!important}.padding-top--lg,.padding-vert--lg{padding-top:2rem!important}.padding-horiz--lg,.padding-left--lg{padding-left:2rem!important}.padding-horiz--lg,.padding-right--lg{padding-right:2rem!important}.padding--lg{padding:2rem!important}.padding-bottom--xl,.padding-vert--xl{padding-bottom:5rem!important}.padding-top--xl,.padding-vert--xl{padding-top:5rem!important}.padding-horiz--xl,.padding-left--xl{padding-left:5rem!important}.padding-horiz--xl,.padding-right--xl{padding-right:5rem!important}.padding--xl{padding:5rem!important}code{background-color:var(--ifm-code-background);border:.1rem solid #0000001a;border-radius:var(--ifm-code-border-radius);font-family:var(--ifm-font-family-monospace);font-size:var(--ifm-code-font-size);padding:var(--ifm-code-padding-vertical) var(--ifm-code-padding-horizontal)}a code{color:inherit}pre{background-color:var(--ifm-pre-background);border-radius:var(--ifm-pre-border-radius);color:var(--ifm-pre-color);font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace);padding:var(--ifm-pre-padding)}pre code{background-color:initial;border:none;font-size:100%;line-height:inherit;padding:0}kbd{background-color:var(--ifm-color-emphasis-0);border:1px solid var(--ifm-color-emphasis-400);border-radius:.2rem;box-shadow:inset 0 -1px 0 var(--ifm-color-emphasis-400);color:var(--ifm-color-emphasis-800);font:80% var(--ifm-font-family-monospace);padding:.15rem .3rem}h1,h2,h3,h4,h5,h6{color:var(--ifm-heading-color);font-family:var(--ifm-heading-font-family);font-weight:var(--ifm-heading-font-weight);line-height:var(--ifm-heading-line-height);margin:var(--ifm-heading-margin-top) 0 var(--ifm-heading-margin-bottom) 0}h1{font-size:var(--ifm-h1-font-size)}h2{font-size:var(--ifm-h2-font-size)}h3{font-size:var(--ifm-h3-font-size)}h4{font-size:var(--ifm-h4-font-size)}h5{font-size:var(--ifm-h5-font-size)}h6{font-size:var(--ifm-h6-font-size)}img{max-width:100%}img[align=right]{padding-left:var(--image-alignment-padding)}img[align=left]{padding-right:var(--image-alignment-padding)}.markdown{--ifm-h1-vertical-rhythm-top:3;--ifm-h2-vertical-rhythm-top:2;--ifm-h3-vertical-rhythm-top:1.5;--ifm-heading-vertical-rhythm-top:1.25;--ifm-h1-vertical-rhythm-bottom:1.25;--ifm-heading-vertical-rhythm-bottom:1}.markdown:after,.markdown:before{content:"";display:table}.markdown:after{clear:both}.markdown h1:first-child{--ifm-h1-font-size:3rem;margin-bottom:calc(var(--ifm-h1-vertical-rhythm-bottom)*var(--ifm-leading))}.markdown>h2{--ifm-h2-font-size:2rem;margin-top:calc(var(--ifm-h2-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h3{--ifm-h3-font-size:1.5rem;margin-top:calc(var(--ifm-h3-vertical-rhythm-top)*var(--ifm-leading))}.markdown>h4,.markdown>h5,.markdown>h6{margin-top:calc(var(--ifm-heading-vertical-rhythm-top)*var(--ifm-leading))}.markdown>p,.markdown>pre,.markdown>ul,.tabList__CuJ{margin-bottom:var(--ifm-leading)}.markdown li>p{margin-top:var(--ifm-list-paragraph-margin)}.markdown li+li{margin-top:var(--ifm-list-item-margin)}ol,ul{margin:0 0 var(--ifm-list-margin);padding-left:var(--ifm-list-left-padding)}ol ol,ul ol{list-style-type:lower-roman}ol ol ol,ol ul ol,ul ol ol,ul ul ol{list-style-type:lower-alpha}table{border-collapse:collapse;display:block;margin-bottom:var(--ifm-spacing-vertical)}table thead tr{border-bottom:2px solid var(--ifm-table-border-color)}table thead,table tr:nth-child(2n){background-color:var(--ifm-table-stripe-background)}table tr{background-color:var(--ifm-table-background);border-top:var(--ifm-table-border-width) solid var(--ifm-table-border-color)}table td,table th{border:var(--ifm-table-border-width) solid var(--ifm-table-border-color);padding:var(--ifm-table-cell-padding)}table th{background-color:var(--ifm-table-head-background);color:var(--ifm-table-head-color);font-weight:var(--ifm-table-head-font-weight)}table td{color:var(--ifm-table-cell-color)}strong{font-weight:var(--ifm-font-weight-bold)}a{color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}a:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button:hover,.text--no-decoration,.text--no-decoration:hover,a:not([href]){text-decoration:none}p{margin:0 0 var(--ifm-paragraph-margin-bottom)}blockquote{border-left:var(--ifm-blockquote-border-left-width) solid var(--ifm-blockquote-border-color);box-shadow:var(--ifm-blockquote-shadow);color:var(--ifm-blockquote-color);font-size:var(--ifm-blockquote-font-size);padding:var(--ifm-blockquote-padding-vertical) var(--ifm-blockquote-padding-horizontal)}blockquote>:first-child{margin-top:0}blockquote>:last-child{margin-bottom:0}hr{background-color:var(--ifm-hr-background-color);border:0;height:var(--ifm-hr-height);margin:var(--ifm-hr-margin-vertical) 0}.shadow--lw{box-shadow:var(--ifm-global-shadow-lw)!important}.shadow--md{box-shadow:var(--ifm-global-shadow-md)!important}.shadow--tl{box-shadow:var(--ifm-global-shadow-tl)!important}.text--primary,.wordWrapButtonEnabled_EoeP .wordWrapButtonIcon_Bwma{color:var(--ifm-color-primary)}.text--secondary{color:var(--ifm-color-secondary)}.text--success{color:var(--ifm-color-success)}.text--info{color:var(--ifm-color-info)}.text--warning{color:var(--ifm-color-warning)}.text--danger{color:var(--ifm-color-danger)}.text--center{text-align:center}.text--left{text-align:left}.text--justify{text-align:justify}.text--right{text-align:right}.text--capitalize{text-transform:capitalize}.text--lowercase{text-transform:lowercase}.admonitionHeading_Gvgb,.alert__heading,.playgroundHeader_qwyd,.text--uppercase{text-transform:uppercase}.text--light{font-weight:var(--ifm-font-weight-light)}.text--normal{font-weight:var(--ifm-font-weight-normal)}.text--semibold{font-weight:var(--ifm-font-weight-semibold)}.text--bold{font-weight:var(--ifm-font-weight-bold)}.text--italic{font-style:italic}.text--truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.text--break{word-wrap:break-word!important;word-break:break-word!important}.clean-btn{background:none;border:none;color:inherit;cursor:pointer;font-family:inherit;padding:0}.alert,.alert .close{color:var(--ifm-alert-foreground-color)}.clean-list{padding-left:0}.alert--primary{--ifm-alert-background-color:var(--ifm-color-primary-contrast-background);--ifm-alert-background-color-highlight:#3578e526;--ifm-alert-foreground-color:var(--ifm-color-primary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-primary-dark)}.alert--secondary{--ifm-alert-background-color:var(--ifm-color-secondary-contrast-background);--ifm-alert-background-color-highlight:#ebedf026;--ifm-alert-foreground-color:var(--ifm-color-secondary-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-secondary-dark)}.alert--success{--ifm-alert-background-color:var(--ifm-color-success-contrast-background);--ifm-alert-background-color-highlight:#00a40026;--ifm-alert-foreground-color:var(--ifm-color-success-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-success-dark)}.alert--info{--ifm-alert-background-color:var(--ifm-color-info-contrast-background);--ifm-alert-background-color-highlight:#54c7ec26;--ifm-alert-foreground-color:var(--ifm-color-info-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-info-dark)}.alert--warning{--ifm-alert-background-color:var(--ifm-color-warning-contrast-background);--ifm-alert-background-color-highlight:#ffba0026;--ifm-alert-foreground-color:var(--ifm-color-warning-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-warning-dark)}.alert--danger{--ifm-alert-background-color:var(--ifm-color-danger-contrast-background);--ifm-alert-background-color-highlight:#fa383e26;--ifm-alert-foreground-color:var(--ifm-color-danger-contrast-foreground);--ifm-alert-border-color:var(--ifm-color-danger-dark)}.alert{--ifm-code-background:var(--ifm-alert-background-color-highlight);--ifm-link-color:var(--ifm-alert-foreground-color);--ifm-link-hover-color:var(--ifm-alert-foreground-color);--ifm-link-decoration:underline;--ifm-tabs-color:var(--ifm-alert-foreground-color);--ifm-tabs-color-active:var(--ifm-alert-foreground-color);--ifm-tabs-color-active-border:var(--ifm-alert-border-color);background-color:var(--ifm-alert-background-color);border:var(--ifm-alert-border-width) solid var(--ifm-alert-border-color);border-left-width:var(--ifm-alert-border-left-width);border-radius:var(--ifm-alert-border-radius);box-shadow:var(--ifm-alert-shadow);padding:var(--ifm-alert-padding-vertical) var(--ifm-alert-padding-horizontal)}.alert__heading{align-items:center;display:flex;font:700 var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family);margin-bottom:.5rem}.alert__icon{display:inline-flex;margin-right:.4em}.alert__icon svg{fill:var(--ifm-alert-foreground-color);stroke:var(--ifm-alert-foreground-color);stroke-width:0}.alert .close{margin:calc(var(--ifm-alert-padding-vertical)*-1) calc(var(--ifm-alert-padding-horizontal)*-1) 0 0;opacity:.75}.alert .close:focus,.alert .close:hover{opacity:1}.alert a{text-decoration-color:var(--ifm-alert-border-color)}.alert a:hover{text-decoration-thickness:2px}.avatar{column-gap:var(--ifm-avatar-intro-margin);display:flex}.avatar__photo{border-radius:50%;display:block;height:var(--ifm-avatar-photo-size);overflow:hidden;width:var(--ifm-avatar-photo-size)}.card--full-height,.navbar__logo img,body,html{height:100%}.avatar__photo--sm{--ifm-avatar-photo-size:2rem}.avatar__photo--lg{--ifm-avatar-photo-size:4rem}.avatar__photo--xl{--ifm-avatar-photo-size:6rem}.avatar__intro{display:flex;flex:1 1;flex-direction:column;justify-content:center;text-align:var(--ifm-avatar-intro-alignment)}.badge,.breadcrumbs__item,.breadcrumbs__link,.button,.dropdown>.navbar__link:after{display:inline-block}.avatar__name{font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base)}.avatar__subtitle{margin-top:.25rem}.avatar--vertical{--ifm-avatar-intro-alignment:center;--ifm-avatar-intro-margin:0.5rem;align-items:center;flex-direction:column}.badge{background-color:var(--ifm-badge-background-color);border:var(--ifm-badge-border-width) solid var(--ifm-badge-border-color);border-radius:var(--ifm-badge-border-radius);color:var(--ifm-badge-color);font-size:75%;font-weight:var(--ifm-font-weight-bold);line-height:1;padding:var(--ifm-badge-padding-vertical) var(--ifm-badge-padding-horizontal)}.badge--primary{--ifm-badge-background-color:var(--ifm-color-primary)}.badge--secondary{--ifm-badge-background-color:var(--ifm-color-secondary);color:var(--ifm-color-black)}.breadcrumbs__link,.button.button--secondary.button--outline:not(.button--active):not(:hover){color:var(--ifm-font-color-base)}.badge--success{--ifm-badge-background-color:var(--ifm-color-success)}.badge--info{--ifm-badge-background-color:var(--ifm-color-info)}.badge--warning{--ifm-badge-background-color:var(--ifm-color-warning)}.badge--danger{--ifm-badge-background-color:var(--ifm-color-danger)}.breadcrumbs{margin-bottom:0;padding-left:0}.breadcrumbs__item:not(:last-child):after{background:var(--ifm-breadcrumb-separator) center;content:" ";display:inline-block;filter:var(--ifm-breadcrumb-separator-filter);height:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier));margin:0 var(--ifm-breadcrumb-spacing);opacity:.5;width:calc(var(--ifm-breadcrumb-separator-size)*var(--ifm-breadcrumb-size-multiplier)*var(--ifm-breadcrumb-separator-size-multiplier))}.breadcrumbs__item--active .breadcrumbs__link{background:var(--ifm-breadcrumb-item-background-active);color:var(--ifm-breadcrumb-color-active)}.breadcrumbs__link{border-radius:var(--ifm-breadcrumb-border-radius);font-size:calc(1rem*var(--ifm-breadcrumb-size-multiplier));padding:calc(var(--ifm-breadcrumb-padding-vertical)*var(--ifm-breadcrumb-size-multiplier)) calc(var(--ifm-breadcrumb-padding-horizontal)*var(--ifm-breadcrumb-size-multiplier));transition-duration:var(--ifm-transition-fast);transition-property:background,color}.breadcrumbs__link:any-link:hover,.breadcrumbs__link:link:hover,.breadcrumbs__link:visited:hover,area[href].breadcrumbs__link:hover{background:var(--ifm-breadcrumb-item-background-active);text-decoration:none}.breadcrumbs--sm{--ifm-breadcrumb-size-multiplier:0.8}.breadcrumbs--lg{--ifm-breadcrumb-size-multiplier:1.2}.button{background-color:var(--ifm-button-background-color);border:var(--ifm-button-border-width) solid var(--ifm-button-border-color);border-radius:var(--ifm-button-border-radius);cursor:pointer;font-size:calc(.875rem*var(--ifm-button-size-multiplier));font-weight:var(--ifm-button-font-weight);line-height:1.5;padding:calc(var(--ifm-button-padding-vertical)*var(--ifm-button-size-multiplier)) calc(var(--ifm-button-padding-horizontal)*var(--ifm-button-size-multiplier));text-align:center;transition-duration:var(--ifm-button-transition-duration);transition-property:color,background,border-color;user-select:none;white-space:nowrap}.button,.button:hover{color:var(--ifm-button-color)}.button--outline{--ifm-button-color:var(--ifm-button-border-color)}.button--outline:hover{--ifm-button-background-color:var(--ifm-button-border-color)}.button--link{--ifm-button-border-color:#0000;color:var(--ifm-link-color);text-decoration:var(--ifm-link-decoration)}.button--link.button--active,.button--link:active,.button--link:hover{color:var(--ifm-link-hover-color);text-decoration:var(--ifm-link-hover-decoration)}.button.disabled,.button:disabled,.button[disabled]{opacity:.65;pointer-events:none}.button--sm{--ifm-button-size-multiplier:0.8}.button--lg{--ifm-button-size-multiplier:1.35}.button--block{display:block;width:100%}.button.button--secondary{color:var(--ifm-color-gray-900)}:where(.button--primary){--ifm-button-background-color:var(--ifm-color-primary);--ifm-button-border-color:var(--ifm-color-primary)}:where(.button--primary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-primary-dark);--ifm-button-border-color:var(--ifm-color-primary-dark)}.button--primary.button--active,.button--primary:active{--ifm-button-background-color:var(--ifm-color-primary-darker);--ifm-button-border-color:var(--ifm-color-primary-darker)}:where(.button--secondary){--ifm-button-background-color:var(--ifm-color-secondary);--ifm-button-border-color:var(--ifm-color-secondary)}:where(.button--secondary):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-secondary-dark);--ifm-button-border-color:var(--ifm-color-secondary-dark)}.button--secondary.button--active,.button--secondary:active{--ifm-button-background-color:var(--ifm-color-secondary-darker);--ifm-button-border-color:var(--ifm-color-secondary-darker)}:where(.button--success){--ifm-button-background-color:var(--ifm-color-success);--ifm-button-border-color:var(--ifm-color-success)}:where(.button--success):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-success-dark);--ifm-button-border-color:var(--ifm-color-success-dark)}.button--success.button--active,.button--success:active{--ifm-button-background-color:var(--ifm-color-success-darker);--ifm-button-border-color:var(--ifm-color-success-darker)}:where(.button--info){--ifm-button-background-color:var(--ifm-color-info);--ifm-button-border-color:var(--ifm-color-info)}:where(.button--info):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-info-dark);--ifm-button-border-color:var(--ifm-color-info-dark)}.button--info.button--active,.button--info:active{--ifm-button-background-color:var(--ifm-color-info-darker);--ifm-button-border-color:var(--ifm-color-info-darker)}:where(.button--warning){--ifm-button-background-color:var(--ifm-color-warning);--ifm-button-border-color:var(--ifm-color-warning)}:where(.button--warning):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-warning-dark);--ifm-button-border-color:var(--ifm-color-warning-dark)}.button--warning.button--active,.button--warning:active{--ifm-button-background-color:var(--ifm-color-warning-darker);--ifm-button-border-color:var(--ifm-color-warning-darker)}:where(.button--danger){--ifm-button-background-color:var(--ifm-color-danger);--ifm-button-border-color:var(--ifm-color-danger)}:where(.button--danger):not(.button--outline):hover{--ifm-button-background-color:var(--ifm-color-danger-dark);--ifm-button-border-color:var(--ifm-color-danger-dark)}.button--danger.button--active,.button--danger:active{--ifm-button-background-color:var(--ifm-color-danger-darker);--ifm-button-border-color:var(--ifm-color-danger-darker)}.button-group{display:inline-flex;gap:var(--ifm-button-group-spacing)}.button-group>.button:not(:first-child){border-bottom-left-radius:0;border-top-left-radius:0}.button-group>.button:not(:last-child){border-bottom-right-radius:0;border-top-right-radius:0}.button-group--block{display:flex;justify-content:stretch}.button-group--block>.button{flex-grow:1}.card{background-color:var(--ifm-card-background-color);border-radius:var(--ifm-card-border-radius);box-shadow:var(--ifm-global-shadow-lw);display:flex;flex-direction:column;overflow:hidden}.card__image{padding-top:var(--ifm-card-vertical-spacing)}.card__image:first-child{padding-top:0}.card__body,.card__footer,.card__header{padding:var(--ifm-card-vertical-spacing) var(--ifm-card-horizontal-spacing)}.card__body:not(:last-child),.card__footer:not(:last-child),.card__header:not(:last-child){padding-bottom:0}.card__body>:last-child,.card__footer>:last-child,.card__header>:last-child{margin-bottom:0}.card__footer{margin-top:auto}.table-of-contents{font-size:.8rem;margin-bottom:0;padding:var(--ifm-toc-padding-vertical) 0}.table-of-contents,.table-of-contents ul{list-style:none;padding-left:var(--ifm-toc-padding-horizontal)}.table-of-contents li{margin:var(--ifm-toc-padding-vertical) var(--ifm-toc-padding-horizontal)}.table-of-contents__left-border{border-left:1px solid var(--ifm-toc-border-color)}.table-of-contents__link{color:var(--ifm-toc-link-color);display:block}.table-of-contents__link--active,.table-of-contents__link--active code,.table-of-contents__link:hover,.table-of-contents__link:hover code{color:var(--ifm-color-primary);text-decoration:none}.close{color:var(--ifm-color-black);float:right;font-size:1.5rem;font-weight:var(--ifm-font-weight-bold);line-height:1;opacity:.5;padding:1rem;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.close:hover{opacity:.7}.close:focus,.theme-code-block-highlighted-line .codeLineNumber_Tfdd:before{opacity:.8}.dropdown{display:inline-flex;font-weight:var(--ifm-dropdown-font-weight);position:relative;vertical-align:top}.dropdown--hoverable:hover .dropdown__menu,.dropdown--show .dropdown__menu{opacity:1;pointer-events:all;transform:translateY(-1px);visibility:visible}#nprogress,.dropdown__menu,.navbar__item.dropdown .navbar__link:not([href]){pointer-events:none}.dropdown--right .dropdown__menu{left:inherit;right:0}.dropdown--nocaret .navbar__link:after{content:none!important}.dropdown__menu{background-color:var(--ifm-dropdown-background-color);border-radius:var(--ifm-global-radius);box-shadow:var(--ifm-global-shadow-md);left:0;max-height:80vh;min-width:10rem;opacity:0;overflow-y:auto;padding:.5rem;position:absolute;top:calc(100% - var(--ifm-navbar-item-padding-vertical) + .3rem);transform:translateY(-.625rem);transition-duration:var(--ifm-transition-fast);transition-property:opacity,transform,visibility;transition-timing-function:var(--ifm-transition-timing-default);visibility:hidden;z-index:var(--ifm-z-index-dropdown)}.menu__caret,.menu__link,.menu__list-item-collapsible{border-radius:.25rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.dropdown__link{border-radius:.25rem;color:var(--ifm-dropdown-link-color);display:block;font-size:.875rem;margin-top:.2rem;padding:.25rem .5rem;white-space:nowrap}.dropdown__link--active,.dropdown__link:hover{background-color:var(--ifm-dropdown-hover-background-color);color:var(--ifm-dropdown-link-color);text-decoration:none}.dropdown__link--active,.dropdown__link--active:hover{--ifm-dropdown-link-color:var(--ifm-link-color)}.dropdown>.navbar__link:after{border-color:currentcolor #0000;border-style:solid;border-width:.4em .4em 0;content:"";margin-left:.3em;position:relative;top:2px;transform:translateY(-50%)}.footer{background-color:var(--ifm-footer-background-color);color:var(--ifm-footer-color);padding:var(--ifm-footer-padding-vertical) var(--ifm-footer-padding-horizontal)}.footer--dark{--ifm-footer-background-color:#303846;--ifm-footer-color:var(--ifm-footer-link-color);--ifm-footer-link-color:var(--ifm-color-secondary);--ifm-footer-title-color:var(--ifm-color-white)}.footer__link-item{color:var(--ifm-footer-link-color);line-height:2}.footer__link-item:hover{color:var(--ifm-footer-link-hover-color)}.footer__link-separator{margin:0 var(--ifm-footer-link-horizontal-spacing)}.footer__logo{margin-top:1rem;max-width:var(--ifm-footer-logo-max-width)}.footer__title{color:var(--ifm-footer-title-color);font:700 var(--ifm-h4-font-size)/var(--ifm-heading-line-height) var(--ifm-font-family-base);margin-bottom:var(--ifm-heading-margin-bottom)}.menu,.navbar__link{font-weight:var(--ifm-font-weight-semibold)}.docItemContainer_Djhp article>:first-child,.docItemContainer_Djhp header+*,.footer__item{margin-top:0}.admonitionContent_BuS1>:last-child,.collapsibleContent_i85q p:last-child,.details_lb9f>summary>p:last-child,.footer__items,.tabItem_Ymn6>:last-child{margin-bottom:0}.codeBlockStandalone_MEMb,[type=checkbox]{padding:0}.hero{align-items:center;background-color:var(--ifm-hero-background-color);color:var(--ifm-hero-text-color);display:flex;padding:4rem 2rem}.hero--primary{--ifm-hero-background-color:var(--ifm-color-primary);--ifm-hero-text-color:var(--ifm-font-color-base-inverse)}.hero--dark{--ifm-hero-background-color:#303846;--ifm-hero-text-color:var(--ifm-color-white)}.hero__title{font-size:3rem}.hero__subtitle{font-size:1.5rem}.menu__list{margin:0;padding-left:0}.menu__caret,.menu__link{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu__list .menu__list{flex:0 0 100%;margin-top:.25rem;padding-left:var(--ifm-menu-link-padding-horizontal)}.menu__list-item:not(:first-child){margin-top:.25rem}.menu__list-item--collapsed .menu__list{height:0;overflow:hidden}.details_lb9f[data-collapsed=false].isBrowser_bmU9>summary:before,.details_lb9f[open]:not(.isBrowser_bmU9)>summary:before,.menu__list-item--collapsed .menu__caret:before,.menu__list-item--collapsed .menu__link--sublist:after{transform:rotate(90deg)}.menu__list-item-collapsible{display:flex;flex-wrap:wrap;position:relative}.menu__caret:hover,.menu__link:hover,.menu__list-item-collapsible--active,.menu__list-item-collapsible:hover{background:var(--ifm-menu-color-background-hover)}.menu__list-item-collapsible .menu__link--active,.menu__list-item-collapsible .menu__link:hover{background:none!important}.menu__caret,.menu__link{align-items:center;display:flex}.navbar-sidebar,.navbar-sidebar__backdrop{bottom:0;opacity:0;transition-duration:var(--ifm-transition-fast);transition-timing-function:ease-in-out;top:0;left:0;visibility:hidden}.menu__link{color:var(--ifm-menu-color);flex:1;line-height:1.25}.menu__link:hover{color:var(--ifm-menu-color);text-decoration:none}.menu__caret:before,.menu__link--sublist-caret:after{height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast) linear;width:1.25rem;content:"";filter:var(--ifm-menu-link-sublist-icon-filter)}.menu__link--sublist-caret:after{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem;margin-left:auto;min-width:1.25rem}.menu__link--active,.menu__link--active:hover{color:var(--ifm-menu-color-active)}.navbar__brand,.navbar__link{color:var(--ifm-navbar-link-color)}.menu__link--active:not(.menu__link--sublist){background-color:var(--ifm-menu-color-background-active)}.menu__caret:before{background:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem}.navbar--dark,html[data-theme=dark]{--ifm-menu-link-sublist-icon-filter:invert(100%) sepia(94%) saturate(17%) hue-rotate(223deg) brightness(104%) contrast(98%)}.navbar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-navbar-shadow);height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.navbar,.navbar>.container,.navbar>.container-fluid{display:flex}.navbar--fixed-top{position:sticky;top:0;z-index:var(--ifm-z-index-fixed)}.navbar__inner{display:flex;flex-wrap:wrap;justify-content:space-between;width:100%}.navbar__brand{align-items:center;display:flex;margin-right:1rem;min-width:0}.navbar__brand:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.announcementBarContent_xLdY,.navbar__title{flex:1 1 auto}.navbar__toggle{display:none;margin-right:.5rem}.navbar__logo{flex:0 0 auto;height:2rem;margin-right:.5rem}.navbar__items{align-items:center;display:flex;flex:1;min-width:0}.navbar__items--center{flex:0 0 auto}.navbar__items--center .navbar__brand{margin:0}.navbar__items--center+.navbar__items--right{flex:1}.navbar__items--right{flex:0 0 auto;justify-content:flex-end}.navbar__items--right>:last-child{padding-right:0}.navbar__item{display:inline-block;padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.navbar__link--active,.navbar__link:hover{color:var(--ifm-navbar-link-hover-color);text-decoration:none}.navbar--dark,.navbar--primary{--ifm-menu-color:var(--ifm-color-gray-300);--ifm-navbar-link-color:var(--ifm-color-gray-100);--ifm-navbar-search-input-background-color:#ffffff1a;--ifm-navbar-search-input-placeholder-color:#ffffff80;color:var(--ifm-color-white)}.navbar--dark{--ifm-navbar-background-color:#242526;--ifm-menu-color-background-active:#ffffff0d;--ifm-navbar-search-input-color:var(--ifm-color-white)}.navbar--primary{--ifm-navbar-background-color:var(--ifm-color-primary);--ifm-navbar-link-hover-color:var(--ifm-color-white);--ifm-menu-color-active:var(--ifm-color-white);--ifm-navbar-search-input-color:var(--ifm-color-emphasis-500)}.navbar__search-input{-webkit-appearance:none;appearance:none;background:var(--ifm-navbar-search-input-background-color) var(--ifm-navbar-search-input-icon) no-repeat .75rem center/1rem 1rem;border:none;border-radius:2rem;color:var(--ifm-navbar-search-input-color);cursor:text;display:inline-block;font-size:.9rem;height:2rem;padding:0 .5rem 0 2.25rem;width:12.5rem}.navbar__search-input::placeholder{color:var(--ifm-navbar-search-input-placeholder-color)}.navbar-sidebar{background-color:var(--ifm-navbar-background-color);box-shadow:var(--ifm-global-shadow-md);position:fixed;transform:translate3d(-100%,0,0);transition-property:opacity,visibility,transform;width:var(--ifm-navbar-sidebar-width)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar__items{transform:translateZ(0)}.navbar-sidebar--show .navbar-sidebar,.navbar-sidebar--show .navbar-sidebar__backdrop{opacity:1;visibility:visible}.navbar-sidebar__backdrop{background-color:#0009;position:fixed;right:0;transition-property:opacity,visibility}.navbar-sidebar__brand{align-items:center;box-shadow:var(--ifm-navbar-shadow);display:flex;flex:1;height:var(--ifm-navbar-height);padding:var(--ifm-navbar-padding-vertical) var(--ifm-navbar-padding-horizontal)}.backToTopButton_sjWU,.codeBlockContainer_Ckt0,.playgroundContainer_TGbA{box-shadow:var(--ifm-global-shadow-lw)}.navbar-sidebar__items{display:flex;height:calc(100% - var(--ifm-navbar-height));transition:transform var(--ifm-transition-fast) ease-in-out}.navbar-sidebar__items--show-secondary{transform:translate3d(calc((var(--ifm-navbar-sidebar-width))*-1),0,0)}.navbar-sidebar__item{flex-shrink:0;padding:.5rem;width:calc(var(--ifm-navbar-sidebar-width))}.navbar-sidebar__back{background:var(--ifm-menu-color-background-active);font-size:15px;font-weight:var(--ifm-button-font-weight);margin:0 0 .2rem -.5rem;padding:.6rem 1.5rem;position:relative;text-align:left;top:-.5rem;width:calc(100% + 1rem)}.navbar-sidebar__close{display:flex;margin-left:auto}.pagination{column-gap:var(--ifm-pagination-page-spacing);display:flex;font-size:var(--ifm-pagination-font-size);padding-left:0}.pagination--sm{--ifm-pagination-font-size:0.8rem;--ifm-pagination-padding-horizontal:0.8rem;--ifm-pagination-padding-vertical:0.2rem}.pagination--lg{--ifm-pagination-font-size:1.2rem;--ifm-pagination-padding-horizontal:1.2rem;--ifm-pagination-padding-vertical:0.3rem}.pagination__item{display:inline-flex}.pagination__item>span{padding:var(--ifm-pagination-padding-vertical)}.pagination__item--active .pagination__link{color:var(--ifm-pagination-color-active)}.pagination__item--active .pagination__link,.pagination__item:not(.pagination__item--active):hover .pagination__link{background:var(--ifm-pagination-item-active-background)}.pagination__item--disabled,.pagination__item[disabled]{opacity:.25;pointer-events:none}.pagination__link{border-radius:var(--ifm-pagination-border-radius);color:var(--ifm-font-color-base);display:inline-block;padding:var(--ifm-pagination-padding-vertical) var(--ifm-pagination-padding-horizontal);transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination__link:hover{text-decoration:none}.pagination-nav{grid-gap:var(--ifm-spacing-horizontal);display:grid;gap:var(--ifm-spacing-horizontal);grid-template-columns:repeat(2,1fr)}.pagination-nav__link{border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-pagination-nav-border-radius);display:block;height:100%;line-height:var(--ifm-heading-line-height);padding:var(--ifm-global-spacing);transition:border-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.pagination-nav__link:hover{border-color:var(--ifm-pagination-nav-color-hover);text-decoration:none}.pagination-nav__link--next{grid-column:2/3;text-align:right}.pagination-nav__label{font-size:var(--ifm-h4-font-size);font-weight:var(--ifm-heading-font-weight);word-break:break-word}.pagination-nav__link--prev .pagination-nav__label:before{content:"« "}.pagination-nav__link--next .pagination-nav__label:after{content:" »"}.pagination-nav__sublabel{color:var(--ifm-color-content-secondary);font-size:var(--ifm-h5-font-size);font-weight:var(--ifm-font-weight-semibold);margin-bottom:.25rem}.pills__item,.tabs{font-weight:var(--ifm-font-weight-bold)}.pills{display:flex;gap:var(--ifm-pills-spacing);padding-left:0}.pills__item{border-radius:.5rem;cursor:pointer;display:inline-block;padding:.25rem 1rem;transition:background var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs,:not(.containsTaskList_mC6p>li)>.containsTaskList_mC6p{padding-left:0}.pills__item--active{color:var(--ifm-pills-color-active)}.pills__item--active,.pills__item:not(.pills__item--active):hover{background:var(--ifm-pills-color-background-active)}.pills--block{justify-content:stretch}.pills--block .pills__item{flex-grow:1;text-align:center}.tabs{color:var(--ifm-tabs-color);display:flex;margin-bottom:0;overflow-x:auto}.tabs__item{border-bottom:3px solid #0000;border-radius:var(--ifm-global-radius);cursor:pointer;display:inline-flex;padding:var(--ifm-tabs-padding-vertical) var(--ifm-tabs-padding-horizontal);transition:background-color var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.tabs__item--active{border-bottom-color:var(--ifm-tabs-color-active-border);border-bottom-left-radius:0;border-bottom-right-radius:0;color:var(--ifm-tabs-color-active)}.tabs__item:hover{background-color:var(--ifm-hover-overlay)}.tabs--block{justify-content:stretch}.tabs--block .tabs__item{flex-grow:1;justify-content:center}html[data-theme=dark]{--ifm-color-scheme:dark;--ifm-color-emphasis-0:var(--ifm-color-gray-1000);--ifm-color-emphasis-100:var(--ifm-color-gray-900);--ifm-color-emphasis-200:var(--ifm-color-gray-800);--ifm-color-emphasis-300:var(--ifm-color-gray-700);--ifm-color-emphasis-400:var(--ifm-color-gray-600);--ifm-color-emphasis-600:var(--ifm-color-gray-400);--ifm-color-emphasis-700:var(--ifm-color-gray-300);--ifm-color-emphasis-800:var(--ifm-color-gray-200);--ifm-color-emphasis-900:var(--ifm-color-gray-100);--ifm-color-emphasis-1000:var(--ifm-color-gray-0);--ifm-background-color:#1b1b1d;--ifm-background-surface-color:#242526;--ifm-hover-overlay:#ffffff0d;--ifm-color-content:#e3e3e3;--ifm-color-content-secondary:#fff;--ifm-breadcrumb-separator-filter:invert(64%) sepia(11%) saturate(0%) hue-rotate(149deg) brightness(99%) contrast(95%);--ifm-code-background:#ffffff1a;--ifm-scrollbar-track-background-color:#444;--ifm-scrollbar-thumb-background-color:#686868;--ifm-scrollbar-thumb-hover-background-color:#7a7a7a;--ifm-table-stripe-background:#ffffff12;--ifm-toc-border-color:var(--ifm-color-emphasis-200);--ifm-color-primary-contrast-background:#102445;--ifm-color-primary-contrast-foreground:#ebf2fc;--ifm-color-secondary-contrast-background:#474748;--ifm-color-secondary-contrast-foreground:#fdfdfe;--ifm-color-success-contrast-background:#003100;--ifm-color-success-contrast-foreground:#e6f6e6;--ifm-color-info-contrast-background:#193c47;--ifm-color-info-contrast-foreground:#eef9fd;--ifm-color-warning-contrast-background:#4d3800;--ifm-color-warning-contrast-foreground:#fff8e6;--ifm-color-danger-contrast-background:#4b1113;--ifm-color-danger-contrast-foreground:#ffebec}#nprogress .bar{background:var(--docusaurus-progress-bar-color);height:2px;left:0;position:fixed;top:0;width:100%;z-index:1031}#nprogress .peg{box-shadow:0 0 10px var(--docusaurus-progress-bar-color),0 0 5px var(--docusaurus-progress-bar-color);height:100%;opacity:1;position:absolute;right:0;transform:rotate(3deg) translateY(-4px);width:100px}[data-theme=dark]{--docusaurus-highlighted-code-line-bg:#484d5b}.docusaurus-highlight-code-line{background-color:#484d5b;display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.footer__copyright{padding:0 var(--ifm-spacing-horizontal);text-align:left}.footer__links{margin:2rem 0}.button{border-radius:2em}.d-align-items--center{align-items:center;display:flex}.iconEdit_Z9Sw{margin-right:.3em;vertical-align:sub}.tag_zVej{border:1px solid var(--docusaurus-tag-list-border);transition:border var(--ifm-transition-fast)}.tag_zVej:hover{--docusaurus-tag-list-border:var(--ifm-link-color);text-decoration:none}.tagRegular_sFm0{border-radius:var(--ifm-global-radius);font-size:90%;padding:.2rem .5rem .3rem}.tagWithCount_h2kH{align-items:center;border-left:0;display:flex;padding:0 .5rem 0 1rem;position:relative}.tagWithCount_h2kH:after,.tagWithCount_h2kH:before{border:1px solid var(--docusaurus-tag-list-border);content:"";position:absolute;top:50%;transition:inherit}.tagWithCount_h2kH:before{border-bottom:0;border-right:0;height:1.18rem;right:100%;transform:translate(50%,-50%) rotate(-45deg);width:1.18rem}.tagWithCount_h2kH:after{border-radius:50%;height:.5rem;left:0;transform:translateY(-50%);width:.5rem}.tagWithCount_h2kH span{background:var(--ifm-color-secondary);border-radius:var(--ifm-global-radius);color:var(--ifm-color-black);font-size:.7rem;line-height:1.2;margin-left:.3rem;padding:.1rem .4rem}.tags_jXut{display:inline}.tag_QGVx{display:inline-block;margin:0 .4rem .5rem 0}.lastUpdated_vwxv{font-size:smaller;font-style:italic;margin-top:.2rem}.tocCollapsibleButton_TO0P{align-items:center;display:flex;font-size:inherit;justify-content:space-between;padding:.4rem .8rem;width:100%}.tocCollapsibleButton_TO0P:after{background:var(--ifm-menu-link-sublist-icon) 50% 50%/2rem 2rem no-repeat;content:"";filter:var(--ifm-menu-link-sublist-icon-filter);height:1.25rem;transform:rotate(180deg);transition:transform var(--ifm-transition-fast);width:1.25rem}.tocCollapsibleButtonExpanded_MG3E:after,.tocCollapsibleExpanded_sAul{transform:none}.tocCollapsible_ETCw{background-color:var(--ifm-menu-color-background-active);border-radius:var(--ifm-global-radius);margin:1rem 0}.tocCollapsibleContent_vkbj>ul{border-left:none;border-top:1px solid var(--ifm-color-emphasis-300);font-size:15px;padding:.2rem 0}.tocCollapsibleContent_vkbj ul li{margin:.4rem .8rem}.tocCollapsibleContent_vkbj a{display:block}.tableOfContents_bqdL{max-height:calc(100vh - var(--ifm-navbar-height) - 2rem);overflow-y:auto;position:sticky;top:calc(var(--ifm-navbar-height) + 1rem)}.tableOfContentsInline_prmo ul{font-size:medium;list-style-type:disc;padding-top:0}.backToTopButton_sjWU{background-color:var(--ifm-color-emphasis-200);border-radius:50%;bottom:1.3rem;height:3rem;opacity:0;position:fixed;right:1.3rem;transform:scale(0);transition:all var(--ifm-transition-fast) var(--ifm-transition-timing-default);visibility:hidden;width:3rem;z-index:calc(var(--ifm-z-index-fixed) - 1)}.backToTopButton_sjWU:after{background-color:var(--ifm-color-emphasis-1000);content:" ";display:inline-block;height:100%;-webkit-mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;mask:var(--ifm-menu-link-sublist-icon) 50%/2rem 2rem no-repeat;width:100%}.backToTopButtonShow_xfvO{opacity:1;transform:scale(1);visibility:visible}.skipToContent_fXgn{background-color:var(--ifm-background-surface-color);color:var(--ifm-color-emphasis-900);left:100%;padding:calc(var(--ifm-global-spacing)/2) var(--ifm-global-spacing);position:fixed;top:1rem;z-index:calc(var(--ifm-z-index-fixed) + 1)}.skipToContent_fXgn:focus{box-shadow:var(--ifm-global-shadow-md);left:1rem}.closeButton_CVFx{line-height:0;padding:0}.content_knG7{font-size:85%;padding:5px 0;text-align:center}.content_knG7 a{color:inherit;text-decoration:underline}.announcementBar_mb4j{align-items:center;background-color:var(--ifm-color-white);border-bottom:1px solid var(--ifm-color-emphasis-100);color:var(--ifm-color-black);display:flex;height:var(--docusaurus-announcement-bar-height)}#__docusaurus-base-url-issue-banner-container,.docSidebarContainer_YfHR,.sidebarLogo_isFc,.themedComponent_mlkZ,[data-theme=dark] .lightToggleIcon_pyhR,[data-theme=light] .darkToggleIcon_wfgR,html[data-announcement-bar-initially-dismissed=true] .announcementBar_mb4j{display:none}.announcementBarPlaceholder_vyr4{flex:0 0 10px}.announcementBarClose_gvF7{align-self:stretch;flex:0 0 30px}.toggle_vylO{height:2rem;width:2rem}.toggleButton_gllP{align-items:center;border-radius:50%;display:flex;height:100%;justify-content:center;transition:background var(--ifm-transition-fast);width:100%}.argsIconContainer_Xdwt,.argsInputField_gall{border:1px solid var(--ifm-color-emphasis-500)}.toggleButton_gllP:hover{background:var(--ifm-color-emphasis-200)}.toggleButtonDisabled_aARS{cursor:not-allowed}.darkNavbarColorModeToggle_X3D1:hover{background:var(--ifm-color-gray-800)}[data-theme=dark] .themedComponent--dark_xIcU,[data-theme=light] .themedComponent--light_NVdE,html:not([data-theme]) .themedComponent--light_NVdE{display:initial}[data-theme=dark]:root{--docusaurus-collapse-button-bg:#ffffff0d;--docusaurus-collapse-button-bg-hover:#ffffff1a}.collapseSidebarButton_PEFL{display:none;margin:0}.iconExternalLink_nPIU{margin-left:.3rem}.docMainContainer_TBSr,.docRoot_UBD9{display:flex;width:100%}.docsWrapper_hBAB{display:flex;flex:1 0 auto}.dropdownNavbarItemMobile_S0Fm{cursor:pointer}.iconLanguage_nlXk{margin-right:5px;vertical-align:text-bottom}@supports selector(:has(*)){.navbarSearchContainer_Bca1:not(:has(>*)){display:none}}.navbarHideable_m1mJ{transition:transform var(--ifm-transition-fast) ease}.navbarHidden_jGov{transform:translate3d(0,calc(-100% - 2px),0)}.errorBoundaryError_a6uf{color:red;white-space:pre-wrap}.errorBoundaryFallback_VBag{color:red;padding:.55rem}.footerLogoLink_BH7S{opacity:.5;transition:opacity var(--ifm-transition-fast) var(--ifm-transition-timing-default)}.footerLogoLink_BH7S:hover,.hash-link:focus,:hover>.hash-link{opacity:1}body:not(.navigation-with-keyboard) :not(input):focus{outline:0}.anchorWithStickyNavbar_LWe7{scroll-margin-top:calc(var(--ifm-navbar-height) + .5rem)}.anchorWithHideOnScrollNavbar_WYt5{scroll-margin-top:.5rem}.hash-link{opacity:0;padding-left:.5rem;transition:opacity var(--ifm-transition-fast);user-select:none}.hash-link:before{content:"#"}.mainWrapper_z2l0{display:flex;flex:1 0 auto;flex-direction:column}.docusaurus-mt-lg{margin-top:3rem}#__docusaurus{display:flex;flex-direction:column;min-height:100%}li,p{max-width:70ch}body>div{overflow:hidden}.runbox__boR{margin:10px}.headerContainer_pmZr{display:flex;flex-wrap:wrap;margin-left:10px;padding:10px}.argsInputContainer_Rz4y{display:flex;height:30px;margin-right:10px}.argsInputField_gall{background-color:var(--ifm-navbar-search-input-background-color);border-radius:4px 0 0 4px;color:var(--ifm-navbar-search-input-color);outline:0;padding:10px;width:300px}.argsIconContainer_Xdwt,.helperButton_MkF3{background-color:var(--ifm-navbar-search-input-background-color);color:var(--ifm-color-primary);text-align:center}html[data-theme=dark] .argsIconContainer_Xdwt,html[data-theme=dark] .argsInputField_gall,html[data-theme=dark] .helperButton_MkF3{border:1px solid var(--ifm-color-emphasis-100)}.argsIconContainer_Xdwt{border-left:none;border-radius:0 4px 4px 0;margin-left:0;min-width:50px;padding-top:4px}.argsIconContainer_Xdwt:hover,.helperButton_MkF3:hover{background-color:var(--ifm-color-primary);color:#fff;cursor:pointer}.helperButton_MkF3{border:1px solid var(--ifm-color-emphasis-500);border-radius:4px;font-size:var(--ifm-font-size-base);height:30px;margin-right:10px;padding:0 12px}.row_BFIh{display:flex;flex-direction:row;flex-wrap:wrap}.spinner_Wr6O{animation:1.5s linear infinite a}@keyframes a{to{transform:rotate(1turn)}}.playgroundContainer_TGbA{border-radius:var(--ifm-global-radius);margin-bottom:var(--ifm-leading);overflow:hidden}.playgroundHeader_qwyd{background:var(--ifm-color-emphasis-200);color:var(--ifm-color-content);font-size:var(--ifm-code-font-size);font-weight:700;letter-spacing:.08rem;padding:.75rem}.playgroundHeader_qwyd:first-of-type{background:var(--ifm-color-emphasis-600);color:var(--ifm-color-content-inverse)}.playgroundEditor_PvJ1{direction:ltr;font:var(--ifm-code-font-size)/var(--ifm-pre-line-height) var(--ifm-font-family-monospace)!important}.playgroundPreview_bb8I{background-color:var(--ifm-pre-background);padding:1rem}.browserWindow_my1Q{border:3px solid var(--ifm-color-emphasis-200);border-top-left-radius:var(--ifm-global-radius);border-top-right-radius:var(--ifm-global-radius)}.browserWindowHeader_jXSR{align-items:center;background:var(--ifm-color-emphasis-200);display:flex;padding:.5rem 1rem}.row_KZDM:after{clear:both;content:"";display:table}.buttons_uHc7{white-space:nowrap}.right_oyze{align-self:center;width:10%}.browserWindowAddressBar_Pd8y{background-color:#fff;border-radius:12.5px;color:#666;flex:1 0;font:400 13px Arial;margin:0 1rem 0 .5rem;padding:5px 15px;-webkit-user-select:none;user-select:none}.dot_giz1{background-color:#bbb;border-radius:50%;display:inline-block;height:12px;margin-right:6px;margin-top:4px;width:12px}.browserWindowMenuIcon_Vhuh{margin-left:auto}.bar_rrRL{background-color:#aaa;display:block;height:3px;margin:3px 0;width:17px}.buttonGroup__atx button,.codeBlockContainer_Ckt0{background:var(--prism-background-color);color:var(--prism-color)}.browserWindowBody_Idgs{padding:1rem}.codeBlockContainer_Ckt0{border-radius:var(--ifm-code-border-radius);margin-bottom:var(--ifm-leading)}.codeBlockContent_biex{border-radius:inherit;direction:ltr;position:relative}.codeBlockTitle_Ktv7{border-bottom:1px solid var(--ifm-color-emphasis-300);border-top-left-radius:inherit;border-top-right-radius:inherit;font-size:var(--ifm-code-font-size);font-weight:500;padding:.75rem var(--ifm-pre-padding)}.codeBlock_bY9V{--ifm-pre-background:var(--prism-background-color);margin:0;padding:0}.codeBlockTitle_Ktv7+.codeBlockContent_biex .codeBlock_bY9V{border-top-left-radius:0;border-top-right-radius:0}.codeBlockLines_e6Vv{float:left;font:inherit;min-width:100%;padding:var(--ifm-pre-padding)}.codeBlockLinesWithNumbering_o6Pm{display:table;padding:var(--ifm-pre-padding) 0}.buttonGroup__atx{column-gap:.2rem;display:flex;position:absolute;right:calc(var(--ifm-pre-padding)/2);top:calc(var(--ifm-pre-padding)/2)}.buttonGroup__atx button{align-items:center;border:1px solid var(--ifm-color-emphasis-300);border-radius:var(--ifm-global-radius);display:flex;line-height:0;opacity:0;padding:.4rem;transition:opacity var(--ifm-transition-fast) ease-in-out}.buttonGroup__atx button:focus-visible,.buttonGroup__atx button:hover{opacity:1!important}.theme-code-block:hover .buttonGroup__atx button{opacity:.4}:where(:root){--docusaurus-highlighted-code-line-bg:#484d5b}:where([data-theme=dark]){--docusaurus-highlighted-code-line-bg:#646464}.theme-code-block-highlighted-line{background-color:var(--docusaurus-highlighted-code-line-bg);display:block;margin:0 calc(var(--ifm-pre-padding)*-1);padding:0 var(--ifm-pre-padding)}.codeLine_lJS_{counter-increment:a;display:table-row}.codeLineNumber_Tfdd{background:var(--ifm-pre-background);display:table-cell;left:0;overflow-wrap:normal;padding:0 var(--ifm-pre-padding);position:sticky;text-align:right;width:1%}.codeLineNumber_Tfdd:before{content:counter(a);opacity:.4}.codeLineContent_feaV{padding-right:var(--ifm-pre-padding)}.theme-code-block:hover .copyButtonCopied_obH4{opacity:1!important}.copyButtonIcons_eSgA{height:1.125rem;position:relative;width:1.125rem}.copyButtonIcon_y97N,.copyButtonSuccessIcon_LjdS{fill:currentColor;height:inherit;left:0;opacity:inherit;position:absolute;top:0;transition:all var(--ifm-transition-fast) ease;width:inherit}.copyButtonSuccessIcon_LjdS{color:#00d600;left:50%;opacity:0;top:50%;transform:translate(-50%,-50%) scale(.33)}.copyButtonCopied_obH4 .copyButtonIcon_y97N{opacity:0;transform:scale(.33)}.copyButtonCopied_obH4 .copyButtonSuccessIcon_LjdS{opacity:1;transform:translate(-50%,-50%) scale(1);transition-delay:75ms}.wordWrapButtonIcon_Bwma{height:1.2rem;width:1.2rem}.details_lb9f{--docusaurus-details-summary-arrow-size:0.38rem;--docusaurus-details-transition:transform 200ms ease;--docusaurus-details-decoration-color:grey}.details_lb9f>summary{cursor:pointer;padding-left:1rem;position:relative}.details_lb9f>summary::-webkit-details-marker{display:none}.details_lb9f>summary:before{border-color:#0000 #0000 #0000 var(--docusaurus-details-decoration-color);border-style:solid;border-width:var(--docusaurus-details-summary-arrow-size);content:"";left:0;position:absolute;top:.45rem;transform:rotate(0);transform-origin:calc(var(--docusaurus-details-summary-arrow-size)/2) 50%;transition:var(--docusaurus-details-transition)}.collapsibleContent_i85q{border-top:1px solid var(--docusaurus-details-decoration-color);margin-top:1rem;padding-top:1rem}.details_b_Ee{--docusaurus-details-decoration-color:var(--ifm-alert-border-color);--docusaurus-details-transition:transform var(--ifm-transition-fast) ease;border:1px solid var(--ifm-alert-border-color);margin:0 0 var(--ifm-spacing-vertical)}.img_ev3q{height:auto}.admonition_xJq3{margin-bottom:1em}.admonitionHeading_Gvgb{font:var(--ifm-heading-font-weight) var(--ifm-h5-font-size)/var(--ifm-heading-line-height) var(--ifm-heading-font-family)}.admonitionHeading_Gvgb:not(:last-child){margin-bottom:.3rem}.admonitionHeading_Gvgb code{text-transform:none}.admonitionIcon_Rf37{display:inline-block;margin-right:.4em;vertical-align:middle}.admonitionIcon_Rf37 svg{fill:var(--ifm-alert-foreground-color);display:inline-block;height:1.6em;width:1.6em}.breadcrumbHomeIcon_YNFT{height:1.1rem;position:relative;top:1px;vertical-align:top;width:1.1rem}.breadcrumbsContainer_Z_bl{--ifm-breadcrumb-size-multiplier:0.8;margin-bottom:.8rem}@media (min-width:997px){.collapseSidebarButton_PEFL,.expandButton_TmdG{background-color:var(--docusaurus-collapse-button-bg)}.lastUpdated_vwxv{text-align:right}.tocMobile_ITEo{display:none}:root{--docusaurus-announcement-bar-height:30px}.announcementBarClose_gvF7,.announcementBarPlaceholder_vyr4{flex-basis:50px}.collapseSidebarButton_PEFL{border:1px solid var(--ifm-toc-border-color);border-radius:0;bottom:0;display:block!important;height:40px;position:sticky}.collapseSidebarButtonIcon_kv0_{margin-top:4px;transform:rotate(180deg)}.expandButtonIcon_i1dp,[dir=rtl] .collapseSidebarButtonIcon_kv0_{transform:rotate(0)}.collapseSidebarButton_PEFL:focus,.collapseSidebarButton_PEFL:hover,.expandButton_TmdG:focus,.expandButton_TmdG:hover{background-color:var(--docusaurus-collapse-button-bg-hover)}.menuHtmlItem_M9Kj{padding:var(--ifm-menu-link-padding-vertical) var(--ifm-menu-link-padding-horizontal)}.menu_SIkG{flex-grow:1;padding:.5rem}@supports (scrollbar-gutter:stable){.menu_SIkG{padding:.5rem 0 .5rem .5rem;scrollbar-gutter:stable}}.menuWithAnnouncementBar_GW3s{margin-bottom:var(--docusaurus-announcement-bar-height)}.sidebar_njMd{display:flex;flex-direction:column;height:100%;padding-top:var(--ifm-navbar-height);width:var(--doc-sidebar-width)}.sidebarWithHideableNavbar_wUlq{padding-top:0}.sidebarHidden_VK0M{opacity:0;visibility:hidden}.sidebarLogo_isFc{align-items:center;color:inherit!important;display:flex!important;margin:0 var(--ifm-navbar-padding-horizontal);max-height:var(--ifm-navbar-height);min-height:var(--ifm-navbar-height);text-decoration:none!important}.sidebarLogo_isFc img{height:2rem;margin-right:.5rem}.expandButton_TmdG{align-items:center;display:flex;height:100%;justify-content:center;position:absolute;right:0;top:0;transition:background-color var(--ifm-transition-fast) ease;width:100%}[dir=rtl] .expandButtonIcon_i1dp{transform:rotate(180deg)}.docSidebarContainer_YfHR{border-right:1px solid var(--ifm-toc-border-color);-webkit-clip-path:inset(0);clip-path:inset(0);display:block;margin-top:calc(var(--ifm-navbar-height)*-1);transition:width var(--ifm-transition-fast) ease;width:var(--doc-sidebar-width);will-change:width}.docSidebarContainerHidden_DPk8{cursor:pointer;width:var(--doc-sidebar-hidden-width)}.sidebarViewport_aRkj{height:100%;max-height:100vh;position:sticky;top:0}.docMainContainer_TBSr{flex-grow:1;max-width:calc(100% - var(--doc-sidebar-width))}.docMainContainerEnhanced_lQrH{max-width:calc(100% - var(--doc-sidebar-hidden-width))}.docItemWrapperEnhanced_JWYK{max-width:calc(var(--ifm-container-width) + var(--doc-sidebar-width))!important}.navbarSearchContainer_Bca1{padding:var(--ifm-navbar-item-padding-vertical) var(--ifm-navbar-item-padding-horizontal)}.docItemCol_VOVn{max-width:75%!important}}@media (min-width:1440px){.container{max-width:var(--ifm-container-width-xl)}}@media (max-width:996px){.col{--ifm-col-width:100%;flex-basis:var(--ifm-col-width);margin-left:0}.footer{--ifm-footer-padding-horizontal:0}.colorModeToggle_DEke,.footer__link-separator,.navbar__item,.tableOfContents_bqdL{display:none}.footer__col{margin-bottom:calc(var(--ifm-spacing-vertical)*3)}.footer__link-item{display:block}.hero{padding-left:0;padding-right:0}.navbar>.container,.navbar>.container-fluid{padding:0}.navbar__toggle{display:inherit}.navbar__search-input{width:9rem}.pills--block,.tabs--block{flex-direction:column}.docItemContainer_F8PC{padding:0 .3rem}.navbarSearchContainer_Bca1{position:absolute;right:var(--ifm-navbar-padding-horizontal)}}@media screen and (max-width:600px){.argsInputField_gall{width:100%}}@media (max-width:576px){.markdown h1:first-child{--ifm-h1-font-size:2rem}.markdown>h2{--ifm-h2-font-size:1.5rem}.markdown>h3{--ifm-h3-font-size:1.25rem}}@media (hover:hover){.backToTopButton_sjWU:hover{background-color:var(--ifm-color-emphasis-300)}}@media (pointer:fine){.thin-scrollbar{scrollbar-width:thin}.thin-scrollbar::-webkit-scrollbar{height:var(--ifm-scrollbar-size);width:var(--ifm-scrollbar-size)}.thin-scrollbar::-webkit-scrollbar-track{background:var(--ifm-scrollbar-track-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb{background:var(--ifm-scrollbar-thumb-background-color);border-radius:10px}.thin-scrollbar::-webkit-scrollbar-thumb:hover{background:var(--ifm-scrollbar-thumb-hover-background-color)}}@media (prefers-reduced-motion:reduce){:root{--ifm-transition-fast:0ms;--ifm-transition-slow:0ms}}@media print{.announcementBar_mb4j,.footer,.menu,.navbar,.pagination-nav,.table-of-contents,.tocMobile_ITEo{display:none}.tabs{page-break-inside:avoid}.codeBlockLines_e6Vv{white-space:pre-wrap}} \ No newline at end of file diff --git a/assets/files/LeastAuthorityReport-1a9f7b44c55b9cb77ba2c8f4bc4f2654.pdf b/assets/files/LeastAuthorityReport-1a9f7b44c55b9cb77ba2c8f4bc4f2654.pdf new file mode 100644 index 00000000..a9c0da6c Binary files /dev/null and b/assets/files/LeastAuthorityReport-1a9f7b44c55b9cb77ba2c8f4bc4f2654.pdf differ diff --git a/assets/js/01743682.029913e3.js b/assets/js/01743682.029913e3.js new file mode 100644 index 00000000..77a0f8da --- /dev/null +++ b/assets/js/01743682.029913e3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkbeacon_docs=self.webpackChunkbeacon_docs||[]).push([[3084],{61084:(e,t,r)=>{r.r(t),r.d(t,{assets:()=>i,contentTitle:()=>c,default:()=>d,frontMatter:()=>s,metadata:()=>a,toc:()=>l});var n=r(17624),o=r(4552);const s={},c=void 0,a={id:"wallet/errors",title:"errors",description:"",source:"@site/docs/wallet/errors.mdx",sourceDirName:"wallet",slug:"/wallet/errors",permalink:"/wallet/errors",draft:!1,unlisted:!1,editUrl:"https://github.com/airgap-it/beacon-docs/edit/main/src/docs/wallet/errors.mdx",tags:[],version:"current",frontMatter:{}},i={},l=[];function u(e){return(0,n.jsx)(n.Fragment,{})}function d(e={}){const{wrapper:t}={...(0,o.M)(),...e.components};return t?(0,n.jsx)(t,{...e,children:(0,n.jsx)(u,{...e})}):u()}},4552:(e,t,r)=>{r.d(t,{I:()=>a,M:()=>c});var n=r(11504);const o={},s=n.createContext(o);function c(e){const t=n.useContext(s);return n.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function a(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(o):e.components||o:c(e.components),n.createElement(s.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/07cb15f8.7cf54852.js b/assets/js/07cb15f8.7cf54852.js new file mode 100644 index 00000000..597d7fb0 --- /dev/null +++ b/assets/js/07cb15f8.7cf54852.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkbeacon_docs=self.webpackChunkbeacon_docs||[]).push([[8724],{2080:e=>{e.exports=JSON.parse('{"name":"docusaurus-plugin-content-docs","id":"default"}')}}]); \ No newline at end of file diff --git a/assets/js/0b185270.db865ff3.js b/assets/js/0b185270.db865ff3.js new file mode 100644 index 00000000..9fd54e4d --- /dev/null +++ b/assets/js/0b185270.db865ff3.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkbeacon_docs=self.webpackChunkbeacon_docs||[]).push([[4688],{30492:(t,e,n)=>{n.r(e),n.d(e,{assets:()=>a,contentTitle:()=>s,default:()=>l,frontMatter:()=>c,metadata:()=>i,toc:()=>u});var o=n(17624),r=n(4552);const c={title:"FAQ"},s=void 0,i={id:"FAQ",title:"FAQ",description:"",source:"@site/docs/FAQ.mdx",sourceDirName:".",slug:"/FAQ",permalink:"/FAQ",draft:!1,unlisted:!1,editUrl:"https://github.com/airgap-it/beacon-docs/edit/main/src/docs/FAQ.mdx",tags:[],version:"current",frontMatter:{title:"FAQ"}},a={},u=[];function d(t){return(0,o.jsx)(o.Fragment,{})}function l(t={}){const{wrapper:e}={...(0,r.M)(),...t.components};return e?(0,o.jsx)(e,{...t,children:(0,o.jsx)(d,{...t})}):d()}},4552:(t,e,n)=>{n.d(e,{I:()=>i,M:()=>s});var o=n(11504);const r={},c=o.createContext(r);function s(t){const e=o.useContext(c);return o.useMemo((function(){return"function"==typeof t?t(e):{...e,...t}}),[e,t])}function i(t){let e;return e=t.disableParentContext?"function"==typeof t.components?t.components(r):t.components||r:s(t.components),o.createElement(c.Provider,{value:e},t.children)}}}]); \ No newline at end of file diff --git a/assets/js/0ce74438.e545a012.js b/assets/js/0ce74438.e545a012.js new file mode 100644 index 00000000..d3eb2c44 --- /dev/null +++ b/assets/js/0ce74438.e545a012.js @@ -0,0 +1 @@ +(self.webpackChunkbeacon_docs=self.webpackChunkbeacon_docs||[]).push([[6316],{23080:(e,n,t)=>{"use strict";t.d(n,{c:()=>p});var r=t(11504),o=t(66528);const a=[{name:"@airgap/beacon-blockchain-substrate/types/messages/permission-request.d.ts",dts:"import { AppMetadata, PermissionRequestV3 } from '@airgap/beacon-types';\nimport { SubstratePermissionScope } from '../permission-scope';\nexport interface SubstratePermissionRequest extends PermissionRequestV3<'substrate'> {\n blockchainData: {\n scopes: SubstratePermissionScope[];\n appMetadata: AppMetadata;\n network?: {\n genesisHash: string;\n rpc?: string;\n }[];\n };\n}\n"},{name:"@airgap/beacon-blockchain-substrate/types/messages/permission-response.d.ts",dts:"import { AppMetadata, PermissionResponseV3 } from '@airgap/beacon-types';\nimport { SubstratePermissionScope } from '../permission-scope';\nexport interface SubstratePermissionResponse extends PermissionResponseV3<'substrate'> {\n blockchainData: {\n appMetadata: AppMetadata;\n scopes: SubstratePermissionScope[];\n accounts: {\n accountId: string;\n network?: {\n genesisHash: string;\n rpc?: string;\n };\n publicKey: string;\n address: string;\n }[];\n };\n}\n"},{name:"@airgap/beacon-blockchain-substrate/types/messages/sign-payload-request.d.ts",dts:"import { BlockchainMessage } from '@airgap/beacon-types';\nimport { SubstrateMessageType } from '../message-type';\nimport { SubstratePermissionScope } from '../permission-scope';\nexport interface SubstrateSignPayloadRequest extends BlockchainMessage<'substrate'> {\n blockchainData: {\n type: SubstrateMessageType.sign_payload_request;\n scope: SubstratePermissionScope.sign_payload_json | SubstratePermissionScope.sign_payload_json;\n payload: {\n type: 'json';\n /**\n * @description The checkpoint hash of the block, in hex\n */\n blockHash: string;\n /**\n * @description The checkpoint block number, in hex\n */\n blockNumber: string;\n /**\n * @description The era for this transaction, in hex\n */\n era: string;\n /**\n * @description The genesis hash of the chain, in hex\n */\n genesisHash: string;\n /**\n * @description The encoded method (with arguments) in hex\n */\n method: string;\n /**\n * @description The nonce for this transaction, in hex\n */\n nonce: string;\n /**\n * @description The current spec version for the runtime\n */\n specVersion: string;\n /**\n * @description The tip for this transaction, in hex\n */\n tip: string;\n /**\n * @description The current transaction version for the runtime\n */\n transactionVersion: string;\n /**\n * @description The applicable signed extensions for this runtime\n */\n signedExtensions: string[];\n /**\n * @description The version of the extrinsic we are dealing with\n */\n version: number;\n } | {\n type: 'raw';\n isMutable: boolean;\n dataType: 'bytes' | 'payload';\n data: string;\n };\n mode: 'submit' | 'submit-and-return' | 'return';\n };\n}\n"},{name:"@airgap/beacon-blockchain-substrate/types/messages/sign-payload-response.d.ts",dts:"export type SubstrateSignPayloadResponse = {\n transactionHash: string;\n} | {\n transactionHash: string;\n signature: string;\n payload?: string;\n} | {\n signature: string;\n payload?: string;\n};\n"},{name:"@airgap/beacon-blockchain-substrate/types/messages/transfer-request.d.ts",dts:"import { BlockchainMessage } from '@airgap/beacon-types';\nimport { SubstrateMessageType } from '../message-type';\nimport { SubstratePermissionScope } from '../permission-scope';\nexport interface SubstrateTransferRequest extends BlockchainMessage<'substrate'> {\n blockchainData: {\n type: SubstrateMessageType.transfer_request;\n scope: SubstratePermissionScope.transfer;\n sourceAddress: string;\n amount: string;\n recipient: string;\n network: {\n genesisHash: string;\n rpc?: string;\n };\n mode: 'submit' | 'submit-and-return' | 'return';\n };\n}\n"},{name:"@airgap/beacon-blockchain-substrate/types/messages/transfer-response.d.ts",dts:"export type SubstrateTransferResponse = {\n transactionHash: string;\n} | {\n transactionHash: string;\n signature: string;\n payload?: string;\n} | {\n signature: string;\n payload?: string;\n};\n"},{name:"@airgap/beacon-blockchain-substrate/types/message-type.d.ts",dts:"export declare enum SubstrateMessageType {\n 'transfer_request' = \"transfer_request\",\n 'sign_payload_request' = \"sign_payload_request\"\n}\n"},{name:"@airgap/beacon-blockchain-substrate/types/permission-scope.d.ts",dts:"export declare enum SubstratePermissionScope {\n 'transfer' = \"transfer\",\n 'sign_payload_json' = \"sign_payload_json\",\n 'sign_payload_raw' = \"sign_payload_raw\"\n}\n"},{name:"@airgap/beacon-blockchain-substrate/ui/alert/alert-templates.d.ts",dts:"export declare const alertTemplates: {\n default: {\n css: string;\n };\n pair: {\n css: string;\n };\n};\n"},{name:"@airgap/beacon-blockchain-substrate/ui/alert/wallet-lists.d.ts",dts:"import { App, DesktopApp, ExtensionApp, WebApp } from '@airgap/beacon-types';\nexport declare const extensionList: ExtensionApp[];\nexport declare const desktopList: DesktopApp[];\nexport declare const webList: WebApp[];\nexport declare const iOSList: App[];\n"},{name:"@airgap/beacon-blockchain-substrate/ui/toast/toast-templates.d.ts",dts:"export declare const toastTemplates: {\n default: {\n css: string;\n };\n};\n"},{name:"@airgap/beacon-blockchain-substrate/util/is-kusama-message.d.ts",dts:""},{name:"@airgap/beacon-blockchain-substrate/blockchain.d.ts",dts:"import { Blockchain, BlockchainMessage, ResponseInput, ExtensionApp, DesktopApp, WebApp, App } from '@airgap/beacon-types';\nimport { SubstratePermissionResponse } from './types/messages/permission-response';\nexport declare class SubstrateBlockchain implements Blockchain {\n readonly identifier: string;\n validateRequest(input: BlockchainMessage): Promise;\n handleResponse(input: ResponseInput): Promise;\n getWalletLists(): Promise<{\n extensionList: ExtensionApp[];\n desktopList: DesktopApp[];\n webList: WebApp[];\n iOSList: App[];\n }>;\n getAccountInfosFromPermissionResponse(permissionResponse: SubstratePermissionResponse): Promise<{\n accountId: string;\n address: string;\n publicKey: string;\n }[]>;\n}\n"},{name:"@airgap/beacon-blockchain-substrate/index.d.ts",dts:"export { SubstrateBlockchain } from './blockchain';\nexport * from './types/message-type';\nexport * from './types/permission-scope';\nexport * from './types/messages/permission-request';\nexport * from './types/messages/permission-response';\nexport * from './types/messages/sign-payload-request';\nexport * from './types/messages/sign-payload-response';\nexport * from './types/messages/transfer-request';\nexport * from './types/messages/transfer-response';\n"},{name:"@airgap/beacon-blockchain-substrate/dist/esm/types/messages/permission-request.d.ts",dts:"import { AppMetadata, PermissionRequestV3 } from '@airgap/beacon-types';\nimport { SubstratePermissionScope } from '../permission-scope';\nexport interface SubstratePermissionRequest extends PermissionRequestV3<'substrate'> {\n blockchainData: {\n scopes: SubstratePermissionScope[];\n appMetadata: AppMetadata;\n network?: {\n genesisHash: string;\n rpc?: string;\n }[];\n };\n}\n"},{name:"@airgap/beacon-blockchain-substrate/dist/esm/types/messages/permission-response.d.ts",dts:"import { AppMetadata, PermissionResponseV3 } from '@airgap/beacon-types';\nimport { SubstratePermissionScope } from '../permission-scope';\nexport interface SubstratePermissionResponse extends PermissionResponseV3<'substrate'> {\n blockchainData: {\n appMetadata: AppMetadata;\n scopes: SubstratePermissionScope[];\n accounts: {\n accountId: string;\n network?: {\n genesisHash: string;\n rpc?: string;\n };\n publicKey: string;\n address: string;\n }[];\n };\n}\n"},{name:"@airgap/beacon-blockchain-substrate/dist/esm/types/messages/sign-payload-request.d.ts",dts:"import { BlockchainMessage } from '@airgap/beacon-types';\nimport { SubstrateMessageType } from '../message-type';\nimport { SubstratePermissionScope } from '../permission-scope';\nexport interface SubstrateSignPayloadRequest extends BlockchainMessage<'substrate'> {\n blockchainData: {\n type: SubstrateMessageType.sign_payload_request;\n scope: SubstratePermissionScope.sign_payload_json | SubstratePermissionScope.sign_payload_json;\n payload: {\n type: 'json';\n /**\n * @description The checkpoint hash of the block, in hex\n */\n blockHash: string;\n /**\n * @description The checkpoint block number, in hex\n */\n blockNumber: string;\n /**\n * @description The era for this transaction, in hex\n */\n era: string;\n /**\n * @description The genesis hash of the chain, in hex\n */\n genesisHash: string;\n /**\n * @description The encoded method (with arguments) in hex\n */\n method: string;\n /**\n * @description The nonce for this transaction, in hex\n */\n nonce: string;\n /**\n * @description The current spec version for the runtime\n */\n specVersion: string;\n /**\n * @description The tip for this transaction, in hex\n */\n tip: string;\n /**\n * @description The current transaction version for the runtime\n */\n transactionVersion: string;\n /**\n * @description The applicable signed extensions for this runtime\n */\n signedExtensions: string[];\n /**\n * @description The version of the extrinsic we are dealing with\n */\n version: number;\n } | {\n type: 'raw';\n isMutable: boolean;\n dataType: 'bytes' | 'payload';\n data: string;\n };\n mode: 'submit' | 'submit-and-return' | 'return';\n };\n}\n"},{name:"@airgap/beacon-blockchain-substrate/dist/esm/types/messages/sign-payload-response.d.ts",dts:"export type SubstrateSignPayloadResponse = {\n transactionHash: string;\n} | {\n transactionHash: string;\n signature: string;\n payload?: string;\n} | {\n signature: string;\n payload?: string;\n};\n"},{name:"@airgap/beacon-blockchain-substrate/dist/esm/types/messages/transfer-request.d.ts",dts:"import { BlockchainMessage } from '@airgap/beacon-types';\nimport { SubstrateMessageType } from '../message-type';\nimport { SubstratePermissionScope } from '../permission-scope';\nexport interface SubstrateTransferRequest extends BlockchainMessage<'substrate'> {\n blockchainData: {\n type: SubstrateMessageType.transfer_request;\n scope: SubstratePermissionScope.transfer;\n sourceAddress: string;\n amount: string;\n recipient: string;\n network: {\n genesisHash: string;\n rpc?: string;\n };\n mode: 'submit' | 'submit-and-return' | 'return';\n };\n}\n"},{name:"@airgap/beacon-blockchain-substrate/dist/esm/types/messages/transfer-response.d.ts",dts:"export type SubstrateTransferResponse = {\n transactionHash: string;\n} | {\n transactionHash: string;\n signature: string;\n payload?: string;\n} | {\n signature: string;\n payload?: string;\n};\n"},{name:"@airgap/beacon-blockchain-substrate/dist/esm/types/message-type.d.ts",dts:"export declare enum SubstrateMessageType {\n 'transfer_request' = \"transfer_request\",\n 'sign_payload_request' = \"sign_payload_request\"\n}\n"},{name:"@airgap/beacon-blockchain-substrate/dist/esm/types/permission-scope.d.ts",dts:"export declare enum SubstratePermissionScope {\n 'transfer' = \"transfer\",\n 'sign_payload_json' = \"sign_payload_json\",\n 'sign_payload_raw' = \"sign_payload_raw\"\n}\n"},{name:"@airgap/beacon-blockchain-substrate/dist/esm/ui/alert/alert-templates.d.ts",dts:"export declare const alertTemplates: {\n default: {\n css: string;\n };\n pair: {\n css: string;\n };\n};\n"},{name:"@airgap/beacon-blockchain-substrate/dist/esm/ui/alert/wallet-lists.d.ts",dts:"import { App, DesktopApp, ExtensionApp, WebApp } from '@airgap/beacon-types';\nexport declare const extensionList: ExtensionApp[];\nexport declare const desktopList: DesktopApp[];\nexport declare const webList: WebApp[];\nexport declare const iOSList: App[];\n"},{name:"@airgap/beacon-blockchain-substrate/dist/esm/ui/toast/toast-templates.d.ts",dts:"export declare const toastTemplates: {\n default: {\n css: string;\n };\n};\n"},{name:"@airgap/beacon-blockchain-substrate/dist/esm/util/is-kusama-message.d.ts",dts:""},{name:"@airgap/beacon-blockchain-substrate/dist/esm/blockchain.d.ts",dts:"import { Blockchain, BlockchainMessage, ResponseInput, ExtensionApp, DesktopApp, WebApp, App } from '@airgap/beacon-types';\nimport { SubstratePermissionResponse } from './types/messages/permission-response';\nexport declare class SubstrateBlockchain implements Blockchain {\n readonly identifier: string;\n validateRequest(input: BlockchainMessage): Promise;\n handleResponse(input: ResponseInput): Promise;\n getWalletLists(): Promise<{\n extensionList: ExtensionApp[];\n desktopList: DesktopApp[];\n webList: WebApp[];\n iOSList: App[];\n }>;\n getAccountInfosFromPermissionResponse(permissionResponse: SubstratePermissionResponse): Promise<{\n accountId: string;\n address: string;\n publicKey: string;\n }[]>;\n}\n"},{name:"@airgap/beacon-blockchain-substrate/dist/esm/index.d.ts",dts:"export { SubstrateBlockchain } from './blockchain';\nexport * from './types/message-type';\nexport * from './types/permission-scope';\nexport * from './types/messages/permission-request';\nexport * from './types/messages/permission-response';\nexport * from './types/messages/sign-payload-request';\nexport * from './types/messages/sign-payload-response';\nexport * from './types/messages/transfer-request';\nexport * from './types/messages/transfer-response';\n"},{name:"@airgap/beacon-blockchain-tezos/ui/alert/alert-templates.d.ts",dts:"export declare const alertTemplates: {\n default: {\n css: string;\n };\n pair: {\n css: string;\n };\n};\n"},{name:"@airgap/beacon-blockchain-tezos/ui/alert/wallet-lists.d.ts",dts:"import { App, DesktopApp, ExtensionApp, WebApp } from '@airgap/beacon-types';\nexport declare const extensionList: ExtensionApp[];\nexport declare const desktopList: DesktopApp[];\nexport declare const webList: WebApp[];\nexport declare const iOSList: App[];\n"},{name:"@airgap/beacon-blockchain-tezos/ui/toast/toast-templates.d.ts",dts:"export declare const toastTemplates: {\n default: {\n css: string;\n };\n};\n"},{name:"@airgap/beacon-blockchain-tezos/blockchain.d.ts",dts:"import { Blockchain, BlockchainMessage, PermissionResponseV3, ResponseInput, App, DesktopApp, ExtensionApp, WebApp } from '@airgap/beacon-types';\nexport declare class TezosBlockchain implements Blockchain {\n readonly identifier: string;\n validateRequest(input: BlockchainMessage): Promise;\n handleResponse(input: ResponseInput): Promise;\n getWalletLists(): Promise<{\n extensionList: ExtensionApp[];\n desktopList: DesktopApp[];\n webList: WebApp[];\n iOSList: App[];\n }>;\n getAccountInfosFromPermissionResponse(_permissionResponse: PermissionResponseV3<'tezos'>): Promise<{\n accountId: string;\n address: string;\n publicKey: string;\n }[]>;\n}\n"},{name:"@airgap/beacon-blockchain-tezos/index.d.ts",dts:"export { TezosBlockchain } from './blockchain';\n"},{name:"@airgap/beacon-blockchain-tezos/dist/esm/ui/alert/alert-templates.d.ts",dts:"export declare const alertTemplates: {\n default: {\n css: string;\n };\n pair: {\n css: string;\n };\n};\n"},{name:"@airgap/beacon-blockchain-tezos/dist/esm/ui/alert/wallet-lists.d.ts",dts:"import { App, DesktopApp, ExtensionApp, WebApp } from '@airgap/beacon-types';\nexport declare const extensionList: ExtensionApp[];\nexport declare const desktopList: DesktopApp[];\nexport declare const webList: WebApp[];\nexport declare const iOSList: App[];\n"},{name:"@airgap/beacon-blockchain-tezos/dist/esm/ui/toast/toast-templates.d.ts",dts:"export declare const toastTemplates: {\n default: {\n css: string;\n };\n};\n"},{name:"@airgap/beacon-blockchain-tezos/dist/esm/blockchain.d.ts",dts:"import { Blockchain, BlockchainMessage, PermissionResponseV3, ResponseInput, App, DesktopApp, ExtensionApp, WebApp } from '@airgap/beacon-types';\nexport declare class TezosBlockchain implements Blockchain {\n readonly identifier: string;\n validateRequest(input: BlockchainMessage): Promise;\n handleResponse(input: ResponseInput): Promise;\n getWalletLists(): Promise<{\n extensionList: ExtensionApp[];\n desktopList: DesktopApp[];\n webList: WebApp[];\n iOSList: App[];\n }>;\n getAccountInfosFromPermissionResponse(_permissionResponse: PermissionResponseV3<'tezos'>): Promise<{\n accountId: string;\n address: string;\n publicKey: string;\n }[]>;\n}\n"},{name:"@airgap/beacon-blockchain-tezos/dist/esm/index.d.ts",dts:"export { TezosBlockchain } from './blockchain';\n"},{name:"@airgap/beacon-core/clients/beacon-client/BeaconClient.d.ts",dts:"import { ExposedPromise } from '@airgap/beacon-utils';\nimport { AnalyticsInterface, Storage } from '@airgap/beacon-types';\nimport { BeaconClientOptions } from './BeaconClientOptions';\nimport { KeyPair } from '@stablelib/ed25519';\n/**\n * @internalapi\n *\n * The beacon client is an abstract client that handles everything that is shared between all other clients.\n * Specifically, it handles managing the beaconId and and the local keypair.\n */\nexport declare abstract class BeaconClient {\n /**\n * The name of the client\n */\n readonly name: string;\n /**\n * The URL of the dApp Icon. This can be used to display the icon of the dApp on in the wallet\n */\n readonly iconUrl?: string;\n /**\n * The URL of the dApp.\n */\n readonly appUrl?: string;\n /** The beaconId is a public key that is used to identify one specific application (dapp or wallet).\n * This is used inside a message to specify the sender, for example.\n */\n protected _beaconId: ExposedPromise;\n get beaconId(): Promise;\n protected storage: Storage;\n protected analytics: AnalyticsInterface;\n /**\n * The local keypair that is used for the communication encryption\n */\n protected _keyPair: ExposedPromise;\n protected get keyPair(): Promise;\n constructor(config: BeaconClientOptions);\n /**\n * This resets the SDK. After using this method, this instance is no longer usable. You will have to instanciate a new client.\n */\n destroy(): Promise;\n /**\n * This method initializes the SDK by setting some values in the storage and generating a keypair.\n */\n private initSDK;\n /**\n * Removes all beacon values from the storage.\n */\n private removeBeaconEntriesFromStorage;\n /**\n * This method tries to load the seed from storage, if it doesn't exist, a new one will be created and persisted.\n */\n private loadOrCreateBeaconSecret;\n}\n"},{name:"@airgap/beacon-core/clients/beacon-client/BeaconClientOptions.d.ts",dts:"import { AnalyticsInterface, Storage } from '@airgap/beacon-types';\n/**\n * @internalapi\n */\nexport interface BeaconClientOptions {\n /**\n * Name of the application\n */\n name: string;\n /**\n * A URL to the icon of the application\n */\n iconUrl?: string;\n /**\n * A URL to the website of the application\n */\n appUrl?: string;\n /**\n * The storage that will be used by the SDK\n */\n storage: Storage;\n /**\n * The analytics instance that will be used by the SDK\n */\n analytics?: AnalyticsInterface;\n}\n"},{name:"@airgap/beacon-core/clients/client/Client.d.ts",dts:"import { ExposedPromise } from '@airgap/beacon-utils';\nimport { ConnectionContext, TransportType, TransportStatus, BeaconBaseMessage, AccountInfo, PeerInfo, AppMetadata, BeaconRequestMessage, BeaconMessageWrapper, NodeDistributions } from '@airgap/beacon-types';\nimport { Transport } from '../..';\nimport { BeaconClient } from '../beacon-client/BeaconClient';\nimport { AccountManager } from '../../managers/AccountManager';\nimport { ClientOptions } from './ClientOptions';\n/**\n * @internalapi\n *\n * This abstract class handles the a big part of the logic that is shared between the dapp and wallet client.\n * For example, it selects and manages the transport and accounts.\n */\nexport declare abstract class Client extends BeaconClient {\n protected readonly accountManager: AccountManager;\n protected handleResponse: (_event: BeaconRequestMessage | BeaconMessageWrapper, connectionInfo: ConnectionContext) => void;\n /**\n * How many requests can be sent after another\n */\n protected readonly rateLimit: number;\n /**\n * The time window in seconds in which the \"rateLimit\" is checked\n */\n protected readonly rateLimitWindowInSeconds: number;\n /**\n * Stores the times when requests have been made to determine if the rate limit has been reached\n */\n protected requestCounter: number[];\n protected readonly matrixNodes: NodeDistributions;\n protected _transport: ExposedPromise>;\n protected get transport(): Promise>;\n /**\n * Returns the connection status of the Client\n */\n get connectionStatus(): TransportStatus;\n /**\n * Returns whether or not the transaport is ready\n */\n get ready(): Promise;\n constructor(config: ClientOptions);\n /**\n * Return all locally known accounts\n */\n getAccounts(): Promise;\n /**\n * Return the account by ID\n * @param accountIdentifier The ID of an account\n */\n getAccount(accountIdentifier: string): Promise;\n /**\n * Remove the account by ID\n * @param accountIdentifier The ID of an account\n */\n removeAccount(accountIdentifier: string): Promise;\n /**\n * Remove all locally stored accounts\n */\n removeAllAccounts(): Promise;\n /**\n * Add a new request (current timestamp) to the pending requests, remove old ones and check if we are above the limit\n */\n addRequestAndCheckIfRateLimited(): Promise;\n /**\n * This method initializes the client. It will check if the connection should be established to a\n * browser extension or if the P2P transport should be used.\n *\n * @param transport A transport that can be provided by the user\n */\n init(transport: Transport): Promise;\n /**\n * Returns the metadata of this DApp\n */\n getOwnAppMetadata(): Promise;\n /**\n * Return all known peers\n */\n getPeers(): Promise;\n /**\n * Add a new peer to the known peers\n * @param peer The new peer to add\n */\n addPeer(peer: PeerInfo): Promise;\n destroy(): Promise;\n /**\n * A \"setter\" for when the transport needs to be changed.\n */\n protected setTransport(transport?: Transport): Promise;\n protected addListener(transport: Transport): Promise;\n protected sendDisconnectToPeer(peer: PeerInfo, transport?: Transport): Promise;\n}\n"},{name:"@airgap/beacon-core/clients/client/ClientOptions.d.ts",dts:"import { Storage, NodeDistributions } from '@airgap/beacon-types';\n/**\n * @internalapi\n */\nexport interface ClientOptions {\n /**\n * Name of the application\n */\n name: string;\n /**\n * A URL to the icon of the application\n */\n iconUrl?: string;\n /**\n * A URL to the website of the application\n */\n appUrl?: string;\n /**\n * The storage that will be used by the SDK\n */\n storage: Storage;\n /**\n * Disable all default Events and UI elements. If passed together with \"eventHandlers\",\n * the default eventHandlers will be removed, and the ones passed by the user will be added.\n */\n disableDefaultEvents?: boolean;\n /**\n * A list of matrix nodes to connect to. If a non-empty array is passed, the default options will be overwritten.\n * One node will be randomly selected based on the local keypair and the other nodes will be used as a fallback in case the primary node goes down.\n *\n * Only provide the hostname, no https:// prefix. Eg. { [Regions.EU1]: ['matrix.example.com'] }\n */\n matrixNodes?: NodeDistributions;\n}\n"},{name:"@airgap/beacon-core/errors/AbortedBeaconError.d.ts",dts:"import { BeaconError } from '..';\n/**\n * @category Error\n */\nexport declare class AbortedBeaconError extends BeaconError {\n name: string;\n title: string;\n constructor();\n}\n"},{name:"@airgap/beacon-core/errors/BeaconError.d.ts",dts:"import { BeaconErrorType } from '@airgap/beacon-types';\n/**\n * @category Error\n */\nexport declare abstract class BeaconError implements Error {\n name: string;\n message: string;\n title: string;\n description: string;\n get fullDescription(): {\n description: string;\n data?: string;\n };\n constructor(errorType: BeaconErrorType, message: string);\n static getError(errorType: BeaconErrorType, errorData: unknown): BeaconError;\n}\n"},{name:"@airgap/beacon-core/errors/BroadcastBeaconError.d.ts",dts:"import { BeaconError } from '..';\n/**\n * @category Error\n */\nexport declare class BroadcastBeaconError extends BeaconError {\n name: string;\n title: string;\n constructor();\n}\n"},{name:"@airgap/beacon-core/errors/EncryptionTypeNotSupportedBeaconError.d.ts",dts:"/**\n * @category Error\n */\n"},{name:"@airgap/beacon-core/errors/NetworkNotSupportedBeaconError.d.ts",dts:"import { BeaconError } from '..';\n/**\n * @category Error\n */\nexport declare class NetworkNotSupportedBeaconError extends BeaconError {\n name: string;\n title: string;\n constructor();\n}\n"},{name:"@airgap/beacon-core/errors/NoAddressBeaconError.d.ts",dts:"import { BeaconError } from '..';\n/**\n * @category Error\n */\nexport declare class NoAddressBeaconError extends BeaconError {\n name: string;\n title: string;\n constructor();\n}\n"},{name:"@airgap/beacon-core/errors/NoPrivateKeyBeaconError.d.ts",dts:"import { BeaconError } from '..';\n/**\n * @category Error\n */\nexport declare class NoPrivateKeyBeaconError extends BeaconError {\n name: string;\n title: string;\n constructor();\n}\n"},{name:"@airgap/beacon-core/errors/NotGrantedBeaconError.d.ts",dts:"import { BeaconError } from '..';\n/**\n * @category Error\n */\nexport declare class NotGrantedBeaconError extends BeaconError {\n name: string;\n title: string;\n constructor();\n}\n"},{name:"@airgap/beacon-core/errors/ParametersInvalidBeaconError.d.ts",dts:"import { BeaconError } from '..';\n/**\n * @category Error\n */\nexport declare class ParametersInvalidBeaconError extends BeaconError {\n name: string;\n title: string;\n constructor();\n}\n"},{name:"@airgap/beacon-core/errors/SignatureTypeNotSupportedBeaconError.d.ts",dts:"import { BeaconError } from '..';\n/**\n * @category Error\n */\nexport declare class SignatureTypeNotSupportedBeaconError extends BeaconError {\n name: string;\n title: string;\n constructor();\n}\n"},{name:"@airgap/beacon-core/errors/TooManyOperationsBeaconError.d.ts",dts:"import { BeaconError } from '..';\n/**\n * @category Error\n */\nexport declare class TooManyOperationsBeaconError extends BeaconError {\n name: string;\n title: string;\n constructor();\n}\n"},{name:"@airgap/beacon-core/errors/TransactionInvalidBeaconError.d.ts",dts:"import { BeaconError } from '..';\n/**\n * @category Error\n */\nexport declare class TransactionInvalidBeaconError extends BeaconError {\n readonly data: unknown;\n name: string;\n title: string;\n get fullDescription(): {\n description: string;\n data?: string;\n };\n constructor(data: unknown);\n}\n"},{name:"@airgap/beacon-core/errors/UnknownBeaconError.d.ts",dts:"import { BeaconError } from '..';\n/**\n * @category Error\n */\nexport declare class UnknownBeaconError extends BeaconError {\n name: string;\n title: string;\n constructor();\n}\n"},{name:"@airgap/beacon-core/managers/AccountManager.d.ts",dts:"import { Storage, AccountInfo, BeaconMessage } from '@airgap/beacon-types';\n/**\n * @internalapi\n *\n * The AccountManager provides CRUD functionality for account entities and persists them to the provided storage.\n */\nexport declare class AccountManager {\n private readonly storageManager;\n constructor(storage: Storage);\n getAccounts(): Promise;\n getAccount(accountIdentifier: string): Promise;\n addAccount(accountInfo: AccountInfo): Promise;\n updateAccount(accountIdentifier: string, accountInfo: Partial): Promise;\n removeAccount(accountIdentifier: string): Promise;\n removeAccounts(accountIdentifiers: string[]): Promise;\n removeAllAccounts(): Promise;\n hasPermission(message: BeaconMessage): Promise;\n}\n"},{name:"@airgap/beacon-core/managers/AppMetadataManager.d.ts",dts:"import { Storage, AppMetadata } from '@airgap/beacon-types';\n/**\n * @internalapi\n *\n * The AppMetadataManager provides CRUD functionality for app-metadata entities and persists them to the provided storage.\n */\nexport declare class AppMetadataManager {\n private readonly storageManager;\n constructor(storage: Storage);\n getAppMetadataList(): Promise;\n getAppMetadata(senderId: string): Promise;\n addAppMetadata(appMetadata: AppMetadata): Promise;\n removeAppMetadata(senderId: string): Promise;\n removeAppMetadatas(senderIds: string[]): Promise;\n removeAllAppMetadata(): Promise;\n}\n"},{name:"@airgap/beacon-core/managers/PeerManager.d.ts",dts:"import { Storage, StorageKey, StorageKeyReturnType } from '@airgap/beacon-types';\nimport { ArrayElem } from './StorageManager';\n/**\n * @internalapi\n *\n * The PeerManager provides CRUD functionality for peer entities and persists them to the provided storage.\n */\nexport declare class PeerManager {\n private readonly storageManager;\n constructor(storage: Storage, key: T);\n hasPeer(publicKey: string): Promise;\n getPeers(): Promise;\n getPeer(publicKey: string): Promise | undefined>;\n addPeer(peerInfo: ArrayElem): Promise;\n removePeer(publicKey: string): Promise;\n removePeers(publicKeys: string[]): Promise;\n removeAllPeers(): Promise;\n}\n"},{name:"@airgap/beacon-core/managers/PermissionManager.d.ts",dts:"import { BeaconMessage, Storage, PermissionInfo } from '@airgap/beacon-types';\n/**\n * @internalapi\n *\n * The PermissionManager provides CRUD functionality for permission entities and persists them to the provided storage.\n */\nexport declare class PermissionManager {\n private readonly storageManager;\n constructor(storage: Storage);\n getPermissions(): Promise;\n getPermission(accountIdentifier: string): Promise;\n addPermission(permissionInfo: PermissionInfo): Promise;\n removePermission(accountIdentifier: string): Promise;\n removePermissions(accountIdentifiers: string[]): Promise;\n removeAllPermissions(): Promise;\n hasPermission(message: BeaconMessage): Promise;\n}\n"},{name:"@airgap/beacon-core/managers/PermissionValidator.d.ts",dts:"import { BeaconMessage, PermissionEntity } from '@airgap/beacon-types';\n/**\n * @internalapi\n *\n * The PermissionValidator is used to check if permissions for a certain message type have been given\n */\nexport declare class PermissionValidator {\n /**\n * Check if permissions were given for a certain message type.\n *\n * PermissionRequest and BroadcastRequest will always return true.\n *\n * @param message Beacon Message\n */\n static hasPermission(message: BeaconMessage, getOne: (id: string) => Promise, getAll: () => Promise): Promise;\n}\n"},{name:"@airgap/beacon-core/managers/StorageManager.d.ts",dts:"import { StorageKey, Storage, StorageKeyReturnType } from '@airgap/beacon-types';\n/** Type workaround for https://github.com/Microsoft/TypeScript/issues/7294#issuecomment-465794460 */\nexport type ArrayElem = A extends (infer Elem)[] ? Elem : never;\n/**\n * @internalapi\n *\n * The StorageManager provides CRUD functionality for specific entities and persists them to the provided storage.\n */\nexport declare class StorageManager {\n private readonly storage;\n private readonly storageKey;\n constructor(storage: Storage, storageKey: T);\n getAll(): Promise;\n getOne(predicate: (element: ArrayElem) => boolean): Promise | undefined>;\n addOne(element: ArrayElem, predicate: (element: ArrayElem) => boolean, overwrite?: boolean): Promise;\n remove(predicate: (element: ArrayElem) => boolean): Promise;\n removeAll(): Promise;\n}\n"},{name:"@airgap/beacon-core/migrations/migrate-0.7.0.d.ts",dts:"import { PermissionScope, AccountIdentifier, Origin, Network } from '@airgap/beacon-types';\nexport interface AccountInfoOld {\n accountIdentifier: AccountIdentifier;\n beaconId: string;\n origin: {\n type: Origin;\n id: string;\n };\n address: string;\n pubkey: string;\n network: Network;\n scopes: PermissionScope[];\n connectedAt: Date;\n}\nexport interface P2PPairingRequestOld {\n name: string;\n pubKey: string;\n relayServer: string;\n}\nexport declare const migrate_0_7_0: (storage: Storage) => Promise;\n"},{name:"@airgap/beacon-core/migrations/migrations.d.ts",dts:"import { Storage } from '@airgap/beacon-types';\nexport declare const migrate: (storage: Storage) => Promise;\n"},{name:"@airgap/beacon-core/storage/ChromeStorage.d.ts",dts:"import { Storage, StorageKey, StorageKeyReturnType } from '@airgap/beacon-types';\n/**\n * @internalapi\n *\n * A storage that can be used in chrome extensions\n */\nexport declare class ChromeStorage implements Storage {\n static isSupported(): Promise;\n get(key: K): Promise;\n set(key: K, value: StorageKeyReturnType[K]): Promise;\n delete(key: K): Promise;\n subscribeToStorageChanged(_callback: (arg: {\n eventType: 'storageCleared' | 'entryModified';\n key: string | null;\n oldValue: string | null;\n newValue: string | null;\n }) => {}): Promise;\n getPrefixedKey(key: string): string;\n}\n"},{name:"@airgap/beacon-core/storage/IndexedDBStorage.d.ts",dts:"import { Storage, StorageKey, StorageKeyReturnType } from '@airgap/beacon-types';\nexport declare class IndexedDBStorage extends Storage {\n private readonly dbName;\n private readonly storeName;\n private db;\n static doesDatabaseAndTableExist(): Promise;\n openDatabase(): Promise;\n get(key: K): Promise;\n set(key: K, value: StorageKeyReturnType[K]): Promise;\n delete(key: K): Promise;\n subscribeToStorageChanged(callback: (arg: {\n eventType: 'storageCleared' | 'entryModified';\n key: string | null;\n oldValue: string | null;\n newValue: string | null;\n }) => {}): Promise;\n getPrefixedKey(key: K): string;\n clearTable(): Promise;\n}\n"},{name:"@airgap/beacon-core/storage/LocalStorage.d.ts",dts:"import { Storage, StorageKey, StorageKeyReturnType } from '@airgap/beacon-types';\n/**\n * @internalapi\n *\n * A storage that can be used in the browser\n */\nexport declare class LocalStorage extends Storage {\n private readonly prefix?;\n constructor(prefix?: string | undefined);\n static isSupported(): Promise;\n get(key: K): Promise;\n set(key: K, value: StorageKeyReturnType[K]): Promise;\n delete(key: K): Promise;\n subscribeToStorageChanged(callback: (arg: {\n eventType: 'storageCleared' | 'entryModified';\n key: string | null;\n oldValue: string | null;\n newValue: string | null;\n }) => {}): Promise;\n getPrefixedKey(key: string): string;\n}\n"},{name:"@airgap/beacon-core/storage/WCStorage.d.ts",dts:"export declare class WCStorage {\n private readonly localStorage;\n private readonly indexedDB;\n constructor();\n hasPairings(): Promise;\n hasSessions(): Promise;\n resetState(): Promise;\n}\n"},{name:"@airgap/beacon-core/storage/getStorage.d.ts",dts:"import { Storage } from '@airgap/beacon-types';\n/**\n * Get a supported storage on this platform\n */\nexport declare const getStorage: () => Promise;\n"},{name:"@airgap/beacon-core/transports/clients/ClientEvents.d.ts",dts:'export declare const enum ClientEvents {\n CLOSE_ALERT = "CLOSE_ALERT",\n RESET_STATE = "RESET_STATE",\n WC_ACK_NOTIFICATION = "WC_ACK_NOTIFICATION"\n}\n'},{name:"@airgap/beacon-core/transports/clients/CommunicationClient.d.ts",dts:"import { PeerInfoType } from '@airgap/beacon-types';\nimport { KeyPair } from '@stablelib/ed25519';\nimport { SessionKeys } from '@stablelib/x25519-session';\nimport { ClientEvents } from './ClientEvents';\n/**\n * @internalapi\n *\n *\n */\nexport declare abstract class CommunicationClient {\n protected readonly keyPair?: KeyPair | undefined;\n constructor(keyPair?: KeyPair | undefined);\n eventHandlers: Map;\n /**\n * Get the public key\n */\n getPublicKey(): Promise;\n /**\n * get the public key hash\n */\n getPublicKeyHash(): Promise;\n /**\n * Create a cryptobox server\n *\n * @param otherPublicKey\n * @param selfKeypair\n */\n protected createCryptoBoxServer(otherPublicKey: string, selfKeypair: KeyPair): Promise;\n /**\n * Create a cryptobox client\n *\n * @param otherPublicKey\n * @param selfKeypair\n */\n protected createCryptoBoxClient(otherPublicKey: string, selfKeypair: KeyPair): Promise;\n /**\n * Encrypt a message for a specific publicKey (receiver, asymmetric)\n *\n * @param recipientPublicKey\n * @param message\n */\n protected encryptMessageAsymmetric(recipientPublicKey: string, message: string): Promise;\n abstract unsubscribeFromEncryptedMessages(): Promise;\n abstract unsubscribeFromEncryptedMessage(senderPublicKey: string): Promise;\n abstract sendMessage(message: string, peer?: PeerInfoType): Promise;\n}\n"},{name:"@airgap/beacon-core/transports/clients/MessageBasedClient.d.ts",dts:"import { CommunicationClient } from './CommunicationClient';\nimport { PostMessagePairingRequest, PostMessagePairingResponse } from '@airgap/beacon-types';\nimport { KeyPair } from '@stablelib/ed25519';\n/**\n * @internalapi\n *\n *\n */\nexport declare abstract class MessageBasedClient extends CommunicationClient {\n protected readonly name: string;\n /**\n * The listeners that will be notified of new messages\n */\n protected abstract readonly activeListeners: Map;\n constructor(name: string, keyPair: KeyPair);\n /**\n * start the client and make sure all dependencies are ready\n */\n start(): Promise;\n /**\n * Get the pairing request information. This will be shared with the peer during the connection setup\n */\n getPairingRequestInfo(): Promise;\n /**\n * Get the pairing response information. This will be shared with the peer during the connection setup\n */\n getPairingResponseInfo(request: PostMessagePairingRequest): Promise;\n /**\n * Unsubscribe from encrypted messages from a specific peer\n *\n * @param senderPublicKey\n */\n unsubscribeFromEncryptedMessage(senderPublicKey: string): Promise;\n /**\n * Unsubscribe from all encrypted messages\n */\n unsubscribeFromEncryptedMessages(): Promise;\n /**\n * Decrypt a message from a specific peer\n *\n * @param senderPublicKey\n * @param payload\n */\n protected decryptMessage(senderPublicKey: string, payload: string): Promise;\n /**\n * Encrypt a message for a specific publicKey (receiver)\n *\n * @param recipientPublicKey\n * @param message\n */\n protected encryptMessage(recipientPublicKey: string, message: string): Promise;\n /**\n * Initialize the connection\n */\n abstract init(): Promise;\n}\n"},{name:"@airgap/beacon-core/transports/Transport.d.ts",dts:"import { TransportType, TransportStatus, PeerInfo, StorageKey, ConnectionContext } from '@airgap/beacon-types';\nimport { PeerManager } from '../managers/PeerManager';\nimport { CommunicationClient } from './clients/CommunicationClient';\nimport { ClientEvents } from './clients/ClientEvents';\n/**\n * @internalapi\n *\n *\n */\nexport declare abstract class Transport {\n /**\n * The type of the transport\n */\n readonly type: TransportType;\n /**\n * The name of the app\n */\n protected readonly name: string;\n /**\n * The status of the transport\n */\n protected _isConnected: TransportStatus;\n protected readonly peerManager: PeerManager;\n /**\n * The client handling the encryption/decryption of messages\n */\n protected client: S;\n /**\n * The listener that will be invoked when a new peer is connected\n */\n protected newPeerListener?: (peer: T) => void;\n setEventHandler(event: ClientEvents, fun: Function): void;\n /**\n * The listeners that will be notified when new messages are coming in\n */\n private listeners;\n /**\n * Return the status of the connection\n */\n get connectionStatus(): TransportStatus;\n constructor(name: string, client: S, peerManager: PeerManager);\n /**\n * Returns a promise that resolves to true if the transport is available, false if it is not\n */\n static isAvailable(): Promise;\n /**\n * Connect the transport\n */\n connect(): Promise;\n /**\n * Disconnect the transport\n */\n disconnect(): Promise;\n /**\n * Send a message through the transport\n *\n * @param message The message to send\n * @param recipient The recipient of the message\n */\n send(message: string, peer?: PeerInfo): Promise;\n /**\n * Add a listener to be called when a new message is received\n *\n * @param listener The listener that will be registered\n */\n addListener(listener: (message: unknown, connectionInfo: ConnectionContext) => void): Promise;\n /**\n * Remove a listener\n *\n * @param listener\n */\n removeListener(listener: (message: string, connectionInfo: ConnectionContext) => void): Promise;\n getPeers(): Promise;\n addPeer(newPeer: T, _sendPairingResponse?: boolean): Promise;\n removePeer(peerToBeRemoved: T): Promise;\n removeAllPeers(): Promise;\n /**\n * Notify the listeners when a new message comes in\n *\n * @param message Message\n * @param connectionInfo Context info about the connection\n */\n protected notifyListeners(message: unknown, connectionInfo: ConnectionContext): Promise;\n abstract listen(publicKey: string): Promise;\n}\n"},{name:"@airgap/beacon-core/utils/Logger.d.ts",dts:"export interface LoggerInterface {\n debug(method: string, ...args: any[]): void;\n log(method: string, ...args: any[]): void;\n warn(method: string, ...args: any[]): void;\n error(method: string, ...args: any[]): void;\n time(start: boolean, label?: string): void;\n timeLog(method: string, ...args: any[]): void;\n}\n/**\n * The logger that is used internally\n */\nexport declare class InternalLogger implements LoggerInterface {\n constructor();\n debug(name: string, method: string, ...args: any[]): void;\n log(name: string, method: string, ...args: any[]): void;\n warn(name: string, method: string, ...args: any[]): void;\n error(name: string, method: string, ...args: any[]): void;\n time(start: boolean, label?: string | undefined): void;\n timeLog(name: string, method: string, ...args: any[]): void;\n private _log;\n}\nexport declare class Logger implements LoggerInterface {\n private readonly name;\n constructor(service: string);\n debug(method: string, ...args: any[]): void;\n log(method: string, ...args: any[]): void;\n warn(method: string, ...args: any[]): void;\n error(method: string, ...args: any[]): void;\n time(start: boolean, label?: string | undefined): void;\n timeLog(method: string, ...args: any[]): void;\n}\nexport declare const setLogger: (newLogger: LoggerInterface) => void;\nexport declare const getLogger: () => LoggerInterface;\n"},{name:"@airgap/beacon-core/utils/assert-never.d.ts",dts:"/**\n * A helper function to make sure if/elses and switch/cases are exhaustive\n *\n * @param empty The data that has to be empty\n */\nexport declare function assertNever(empty: never): never;\n"},{name:"@airgap/beacon-core/utils/get-account-identifier.d.ts",dts:"import { Network } from '@airgap/beacon-types';\n/**\n * @internalapi\n *\n * Generate a deterministic account identifier based on an address and a network\n *\n * @param address\n * @param network\n */\nexport declare const getAccountIdentifier: (address: string, network: Network) => Promise;\n"},{name:"@airgap/beacon-core/utils/get-sender-id.d.ts",dts:"/**\n * @internalapi\n *\n * Generate a deterministic sender identifier based on a public key\n *\n * @param publicKey\n */\nexport declare const getSenderId: (publicKey: string) => Promise;\n"},{name:"@airgap/beacon-core/MockAnalytics.d.ts",dts:"import { AnalyticsInterface } from '@airgap/beacon-types';\nexport declare class MockAnalytics implements AnalyticsInterface {\n track(_trigger: 'click' | 'event', _section: string, _label: string, _data?: Record): void;\n}\n"},{name:"@airgap/beacon-core/MockWindow.d.ts",dts:"type Callback = (message: unknown) => void;\n/**\n * A mock for postmessage if run in node.js environment\n */\ndeclare let windowRef: {\n postMessage: (message: string | Record, _target?: string) => void;\n addEventListener: (_name: string, eventCallback: Callback) => void;\n removeEventListener: (_name: string, eventCallback: Callback) => void;\n location: {\n origin: string;\n };\n};\ndeclare const clearMockWindowState: () => void;\nexport { windowRef, clearMockWindowState };\n"},{name:"@airgap/beacon-core/Serializer.d.ts",dts:"/**\n * @internalapi\n *\n * The Serializer is used to serialize / deserialize JSON objects and encode them with bs58check\n */\nexport declare class Serializer {\n /**\n * Serialize and bs58check encode an object\n *\n * @param message JSON object to serialize\n */\n serialize(message: unknown): Promise;\n /**\n * Deserialize a bs58check encoded string\n *\n * @param encoded String to be deserialized\n */\n deserialize(encoded: string): Promise;\n}\n"},{name:"@airgap/beacon-core/constants.d.ts",dts:"export declare const SDK_VERSION: string;\nexport declare const BEACON_VERSION: string;\nexport declare const NOTIFICATION_ORACLE_URL: string;\n"},{name:"@airgap/beacon-core/debug.d.ts",dts:"export declare const setDebugEnabled: (enabled: boolean) => void;\nexport declare const getDebugEnabled: () => boolean;\n"},{name:"@airgap/beacon-core/index.d.ts",dts:"/**\n * General docs\n * @module public\n */\nimport { Client } from './clients/client/Client';\nimport { BeaconError } from './errors/BeaconError';\nimport { BroadcastBeaconError } from './errors/BroadcastBeaconError';\nimport { NetworkNotSupportedBeaconError } from './errors/NetworkNotSupportedBeaconError';\nimport { NoAddressBeaconError } from './errors/NoAddressBeaconError';\nimport { NoPrivateKeyBeaconError } from './errors/NoPrivateKeyBeaconError';\nimport { NotGrantedBeaconError } from './errors/NotGrantedBeaconError';\nimport { ParametersInvalidBeaconError } from './errors/ParametersInvalidBeaconError';\nimport { TooManyOperationsBeaconError } from './errors/TooManyOperationsBeaconError';\nimport { TransactionInvalidBeaconError } from './errors/TransactionInvalidBeaconError';\nimport { UnknownBeaconError } from './errors/UnknownBeaconError';\nimport { Transport } from './transports/Transport';\nimport { ChromeStorage } from './storage/ChromeStorage';\nimport { LocalStorage } from './storage/LocalStorage';\nimport { getStorage } from './storage/getStorage';\nimport { Serializer } from './Serializer';\nimport { ClientOptions } from './clients/client/ClientOptions';\nimport { SDK_VERSION, BEACON_VERSION } from './constants';\nimport { AccountManager } from './managers/AccountManager';\nimport { AppMetadataManager } from './managers/AppMetadataManager';\nimport { PermissionManager } from './managers/PermissionManager';\nimport { BeaconClient } from './clients/beacon-client/BeaconClient';\nimport { BeaconClientOptions } from './clients/beacon-client/BeaconClientOptions';\nimport { getAccountIdentifier } from './utils/get-account-identifier';\nimport { AbortedBeaconError } from './errors/AbortedBeaconError';\nimport { getSenderId } from './utils/get-sender-id';\nimport { PeerManager } from './managers/PeerManager';\nimport { MessageBasedClient } from './transports/clients/MessageBasedClient';\nimport { setDebugEnabled, getDebugEnabled } from './debug';\nimport { SignatureTypeNotSupportedBeaconError } from './errors/SignatureTypeNotSupportedBeaconError';\nimport { getLogger, Logger, setLogger } from './utils/Logger';\nimport { windowRef } from './MockWindow';\nimport { CommunicationClient } from './transports/clients/CommunicationClient';\nimport { ClientEvents } from './transports/clients/ClientEvents';\nimport { WCStorage } from './storage/WCStorage';\nexport { BeaconClient, BeaconClientOptions, Client, ClientOptions, ClientEvents };\nexport { BeaconError, AbortedBeaconError, BroadcastBeaconError, NetworkNotSupportedBeaconError, NoAddressBeaconError, NoPrivateKeyBeaconError, NotGrantedBeaconError, ParametersInvalidBeaconError, TooManyOperationsBeaconError, TransactionInvalidBeaconError, SignatureTypeNotSupportedBeaconError, UnknownBeaconError };\nexport { Transport, MessageBasedClient, CommunicationClient };\nexport { ChromeStorage, LocalStorage, WCStorage, getStorage };\nexport { PeerManager, AccountManager, AppMetadataManager, PermissionManager };\nexport { SDK_VERSION, BEACON_VERSION };\nexport { getSenderId, getAccountIdentifier, windowRef };\nexport { Serializer, Logger, setLogger, getLogger };\nexport { setDebugEnabled, getDebugEnabled };\nexport { NOTIFICATION_ORACLE_URL } from './constants';\n"},{name:"@airgap/beacon-core/dist/esm/clients/beacon-client/BeaconClient.d.ts",dts:"import { ExposedPromise } from '@airgap/beacon-utils';\nimport { AnalyticsInterface, Storage } from '@airgap/beacon-types';\nimport { BeaconClientOptions } from './BeaconClientOptions';\nimport { KeyPair } from '@stablelib/ed25519';\n/**\n * @internalapi\n *\n * The beacon client is an abstract client that handles everything that is shared between all other clients.\n * Specifically, it handles managing the beaconId and and the local keypair.\n */\nexport declare abstract class BeaconClient {\n /**\n * The name of the client\n */\n readonly name: string;\n /**\n * The URL of the dApp Icon. This can be used to display the icon of the dApp on in the wallet\n */\n readonly iconUrl?: string;\n /**\n * The URL of the dApp.\n */\n readonly appUrl?: string;\n /** The beaconId is a public key that is used to identify one specific application (dapp or wallet).\n * This is used inside a message to specify the sender, for example.\n */\n protected _beaconId: ExposedPromise;\n get beaconId(): Promise;\n protected storage: Storage;\n protected analytics: AnalyticsInterface;\n /**\n * The local keypair that is used for the communication encryption\n */\n protected _keyPair: ExposedPromise;\n protected get keyPair(): Promise;\n constructor(config: BeaconClientOptions);\n /**\n * This resets the SDK. After using this method, this instance is no longer usable. You will have to instanciate a new client.\n */\n destroy(): Promise;\n /**\n * This method initializes the SDK by setting some values in the storage and generating a keypair.\n */\n private initSDK;\n /**\n * Removes all beacon values from the storage.\n */\n private removeBeaconEntriesFromStorage;\n /**\n * This method tries to load the seed from storage, if it doesn't exist, a new one will be created and persisted.\n */\n private loadOrCreateBeaconSecret;\n}\n"},{name:"@airgap/beacon-core/dist/esm/clients/beacon-client/BeaconClientOptions.d.ts",dts:"import { AnalyticsInterface, Storage } from '@airgap/beacon-types';\n/**\n * @internalapi\n */\nexport interface BeaconClientOptions {\n /**\n * Name of the application\n */\n name: string;\n /**\n * A URL to the icon of the application\n */\n iconUrl?: string;\n /**\n * A URL to the website of the application\n */\n appUrl?: string;\n /**\n * The storage that will be used by the SDK\n */\n storage: Storage;\n /**\n * The analytics instance that will be used by the SDK\n */\n analytics?: AnalyticsInterface;\n}\n"},{name:"@airgap/beacon-core/dist/esm/clients/client/Client.d.ts",dts:"import { ExposedPromise } from '@airgap/beacon-utils';\nimport { ConnectionContext, TransportType, TransportStatus, BeaconBaseMessage, AccountInfo, PeerInfo, AppMetadata, BeaconRequestMessage, BeaconMessageWrapper, NodeDistributions } from '@airgap/beacon-types';\nimport { Transport } from '../..';\nimport { BeaconClient } from '../beacon-client/BeaconClient';\nimport { AccountManager } from '../../managers/AccountManager';\nimport { ClientOptions } from './ClientOptions';\n/**\n * @internalapi\n *\n * This abstract class handles the a big part of the logic that is shared between the dapp and wallet client.\n * For example, it selects and manages the transport and accounts.\n */\nexport declare abstract class Client extends BeaconClient {\n protected readonly accountManager: AccountManager;\n protected handleResponse: (_event: BeaconRequestMessage | BeaconMessageWrapper, connectionInfo: ConnectionContext) => void;\n /**\n * How many requests can be sent after another\n */\n protected readonly rateLimit: number;\n /**\n * The time window in seconds in which the \"rateLimit\" is checked\n */\n protected readonly rateLimitWindowInSeconds: number;\n /**\n * Stores the times when requests have been made to determine if the rate limit has been reached\n */\n protected requestCounter: number[];\n protected readonly matrixNodes: NodeDistributions;\n protected _transport: ExposedPromise>;\n protected get transport(): Promise>;\n /**\n * Returns the connection status of the Client\n */\n get connectionStatus(): TransportStatus;\n /**\n * Returns whether or not the transaport is ready\n */\n get ready(): Promise;\n constructor(config: ClientOptions);\n /**\n * Return all locally known accounts\n */\n getAccounts(): Promise;\n /**\n * Return the account by ID\n * @param accountIdentifier The ID of an account\n */\n getAccount(accountIdentifier: string): Promise;\n /**\n * Remove the account by ID\n * @param accountIdentifier The ID of an account\n */\n removeAccount(accountIdentifier: string): Promise;\n /**\n * Remove all locally stored accounts\n */\n removeAllAccounts(): Promise;\n /**\n * Add a new request (current timestamp) to the pending requests, remove old ones and check if we are above the limit\n */\n addRequestAndCheckIfRateLimited(): Promise;\n /**\n * This method initializes the client. It will check if the connection should be established to a\n * browser extension or if the P2P transport should be used.\n *\n * @param transport A transport that can be provided by the user\n */\n init(transport: Transport): Promise;\n /**\n * Returns the metadata of this DApp\n */\n getOwnAppMetadata(): Promise;\n /**\n * Return all known peers\n */\n getPeers(): Promise;\n /**\n * Add a new peer to the known peers\n * @param peer The new peer to add\n */\n addPeer(peer: PeerInfo): Promise;\n destroy(): Promise;\n /**\n * A \"setter\" for when the transport needs to be changed.\n */\n protected setTransport(transport?: Transport): Promise;\n protected addListener(transport: Transport): Promise;\n protected sendDisconnectToPeer(peer: PeerInfo, transport?: Transport): Promise;\n}\n"},{name:"@airgap/beacon-core/dist/esm/clients/client/ClientOptions.d.ts",dts:"import { Storage, NodeDistributions } from '@airgap/beacon-types';\n/**\n * @internalapi\n */\nexport interface ClientOptions {\n /**\n * Name of the application\n */\n name: string;\n /**\n * A URL to the icon of the application\n */\n iconUrl?: string;\n /**\n * A URL to the website of the application\n */\n appUrl?: string;\n /**\n * The storage that will be used by the SDK\n */\n storage: Storage;\n /**\n * Disable all default Events and UI elements. If passed together with \"eventHandlers\",\n * the default eventHandlers will be removed, and the ones passed by the user will be added.\n */\n disableDefaultEvents?: boolean;\n /**\n * A list of matrix nodes to connect to. If a non-empty array is passed, the default options will be overwritten.\n * One node will be randomly selected based on the local keypair and the other nodes will be used as a fallback in case the primary node goes down.\n *\n * Only provide the hostname, no https:// prefix. Eg. { [Regions.EU1]: ['matrix.example.com'] }\n */\n matrixNodes?: NodeDistributions;\n}\n"},{name:"@airgap/beacon-core/dist/esm/errors/AbortedBeaconError.d.ts",dts:"import { BeaconError } from '..';\n/**\n * @category Error\n */\nexport declare class AbortedBeaconError extends BeaconError {\n name: string;\n title: string;\n constructor();\n}\n"},{name:"@airgap/beacon-core/dist/esm/errors/BeaconError.d.ts",dts:"import { BeaconErrorType } from '@airgap/beacon-types';\n/**\n * @category Error\n */\nexport declare abstract class BeaconError implements Error {\n name: string;\n message: string;\n title: string;\n description: string;\n get fullDescription(): {\n description: string;\n data?: string;\n };\n constructor(errorType: BeaconErrorType, message: string);\n static getError(errorType: BeaconErrorType, errorData: unknown): BeaconError;\n}\n"},{name:"@airgap/beacon-core/dist/esm/errors/BroadcastBeaconError.d.ts",dts:"import { BeaconError } from '..';\n/**\n * @category Error\n */\nexport declare class BroadcastBeaconError extends BeaconError {\n name: string;\n title: string;\n constructor();\n}\n"},{name:"@airgap/beacon-core/dist/esm/errors/EncryptionTypeNotSupportedBeaconError.d.ts",dts:"/**\n * @category Error\n */\n"},{name:"@airgap/beacon-core/dist/esm/errors/NetworkNotSupportedBeaconError.d.ts",dts:"import { BeaconError } from '..';\n/**\n * @category Error\n */\nexport declare class NetworkNotSupportedBeaconError extends BeaconError {\n name: string;\n title: string;\n constructor();\n}\n"},{name:"@airgap/beacon-core/dist/esm/errors/NoAddressBeaconError.d.ts",dts:"import { BeaconError } from '..';\n/**\n * @category Error\n */\nexport declare class NoAddressBeaconError extends BeaconError {\n name: string;\n title: string;\n constructor();\n}\n"},{name:"@airgap/beacon-core/dist/esm/errors/NoPrivateKeyBeaconError.d.ts",dts:"import { BeaconError } from '..';\n/**\n * @category Error\n */\nexport declare class NoPrivateKeyBeaconError extends BeaconError {\n name: string;\n title: string;\n constructor();\n}\n"},{name:"@airgap/beacon-core/dist/esm/errors/NotGrantedBeaconError.d.ts",dts:"import { BeaconError } from '..';\n/**\n * @category Error\n */\nexport declare class NotGrantedBeaconError extends BeaconError {\n name: string;\n title: string;\n constructor();\n}\n"},{name:"@airgap/beacon-core/dist/esm/errors/ParametersInvalidBeaconError.d.ts",dts:"import { BeaconError } from '..';\n/**\n * @category Error\n */\nexport declare class ParametersInvalidBeaconError extends BeaconError {\n name: string;\n title: string;\n constructor();\n}\n"},{name:"@airgap/beacon-core/dist/esm/errors/SignatureTypeNotSupportedBeaconError.d.ts",dts:"import { BeaconError } from '..';\n/**\n * @category Error\n */\nexport declare class SignatureTypeNotSupportedBeaconError extends BeaconError {\n name: string;\n title: string;\n constructor();\n}\n"},{name:"@airgap/beacon-core/dist/esm/errors/TooManyOperationsBeaconError.d.ts",dts:"import { BeaconError } from '..';\n/**\n * @category Error\n */\nexport declare class TooManyOperationsBeaconError extends BeaconError {\n name: string;\n title: string;\n constructor();\n}\n"},{name:"@airgap/beacon-core/dist/esm/errors/TransactionInvalidBeaconError.d.ts",dts:"import { BeaconError } from '..';\n/**\n * @category Error\n */\nexport declare class TransactionInvalidBeaconError extends BeaconError {\n readonly data: unknown;\n name: string;\n title: string;\n get fullDescription(): {\n description: string;\n data?: string;\n };\n constructor(data: unknown);\n}\n"},{name:"@airgap/beacon-core/dist/esm/errors/UnknownBeaconError.d.ts",dts:"import { BeaconError } from '..';\n/**\n * @category Error\n */\nexport declare class UnknownBeaconError extends BeaconError {\n name: string;\n title: string;\n constructor();\n}\n"},{name:"@airgap/beacon-core/dist/esm/managers/AccountManager.d.ts",dts:"import { Storage, AccountInfo, BeaconMessage } from '@airgap/beacon-types';\n/**\n * @internalapi\n *\n * The AccountManager provides CRUD functionality for account entities and persists them to the provided storage.\n */\nexport declare class AccountManager {\n private readonly storageManager;\n constructor(storage: Storage);\n getAccounts(): Promise;\n getAccount(accountIdentifier: string): Promise;\n addAccount(accountInfo: AccountInfo): Promise;\n updateAccount(accountIdentifier: string, accountInfo: Partial): Promise;\n removeAccount(accountIdentifier: string): Promise;\n removeAccounts(accountIdentifiers: string[]): Promise;\n removeAllAccounts(): Promise;\n hasPermission(message: BeaconMessage): Promise;\n}\n"},{name:"@airgap/beacon-core/dist/esm/managers/AppMetadataManager.d.ts",dts:"import { Storage, AppMetadata } from '@airgap/beacon-types';\n/**\n * @internalapi\n *\n * The AppMetadataManager provides CRUD functionality for app-metadata entities and persists them to the provided storage.\n */\nexport declare class AppMetadataManager {\n private readonly storageManager;\n constructor(storage: Storage);\n getAppMetadataList(): Promise;\n getAppMetadata(senderId: string): Promise;\n addAppMetadata(appMetadata: AppMetadata): Promise;\n removeAppMetadata(senderId: string): Promise;\n removeAppMetadatas(senderIds: string[]): Promise;\n removeAllAppMetadata(): Promise;\n}\n"},{name:"@airgap/beacon-core/dist/esm/managers/PeerManager.d.ts",dts:"import { Storage, StorageKey, StorageKeyReturnType } from '@airgap/beacon-types';\nimport { ArrayElem } from './StorageManager';\n/**\n * @internalapi\n *\n * The PeerManager provides CRUD functionality for peer entities and persists them to the provided storage.\n */\nexport declare class PeerManager {\n private readonly storageManager;\n constructor(storage: Storage, key: T);\n hasPeer(publicKey: string): Promise;\n getPeers(): Promise;\n getPeer(publicKey: string): Promise | undefined>;\n addPeer(peerInfo: ArrayElem): Promise;\n removePeer(publicKey: string): Promise;\n removePeers(publicKeys: string[]): Promise;\n removeAllPeers(): Promise;\n}\n"},{name:"@airgap/beacon-core/dist/esm/managers/PermissionManager.d.ts",dts:"import { BeaconMessage, Storage, PermissionInfo } from '@airgap/beacon-types';\n/**\n * @internalapi\n *\n * The PermissionManager provides CRUD functionality for permission entities and persists them to the provided storage.\n */\nexport declare class PermissionManager {\n private readonly storageManager;\n constructor(storage: Storage);\n getPermissions(): Promise;\n getPermission(accountIdentifier: string): Promise;\n addPermission(permissionInfo: PermissionInfo): Promise;\n removePermission(accountIdentifier: string): Promise;\n removePermissions(accountIdentifiers: string[]): Promise;\n removeAllPermissions(): Promise;\n hasPermission(message: BeaconMessage): Promise;\n}\n"},{name:"@airgap/beacon-core/dist/esm/managers/PermissionValidator.d.ts",dts:"import { BeaconMessage, PermissionEntity } from '@airgap/beacon-types';\n/**\n * @internalapi\n *\n * The PermissionValidator is used to check if permissions for a certain message type have been given\n */\nexport declare class PermissionValidator {\n /**\n * Check if permissions were given for a certain message type.\n *\n * PermissionRequest and BroadcastRequest will always return true.\n *\n * @param message Beacon Message\n */\n static hasPermission(message: BeaconMessage, getOne: (id: string) => Promise, getAll: () => Promise): Promise;\n}\n"},{name:"@airgap/beacon-core/dist/esm/managers/StorageManager.d.ts",dts:"import { StorageKey, Storage, StorageKeyReturnType } from '@airgap/beacon-types';\n/** Type workaround for https://github.com/Microsoft/TypeScript/issues/7294#issuecomment-465794460 */\nexport type ArrayElem = A extends (infer Elem)[] ? Elem : never;\n/**\n * @internalapi\n *\n * The StorageManager provides CRUD functionality for specific entities and persists them to the provided storage.\n */\nexport declare class StorageManager {\n private readonly storage;\n private readonly storageKey;\n constructor(storage: Storage, storageKey: T);\n getAll(): Promise;\n getOne(predicate: (element: ArrayElem) => boolean): Promise | undefined>;\n addOne(element: ArrayElem, predicate: (element: ArrayElem) => boolean, overwrite?: boolean): Promise;\n remove(predicate: (element: ArrayElem) => boolean): Promise;\n removeAll(): Promise;\n}\n"},{name:"@airgap/beacon-core/dist/esm/migrations/migrate-0.7.0.d.ts",dts:"import { PermissionScope, AccountIdentifier, Origin, Network } from '@airgap/beacon-types';\nexport interface AccountInfoOld {\n accountIdentifier: AccountIdentifier;\n beaconId: string;\n origin: {\n type: Origin;\n id: string;\n };\n address: string;\n pubkey: string;\n network: Network;\n scopes: PermissionScope[];\n connectedAt: Date;\n}\nexport interface P2PPairingRequestOld {\n name: string;\n pubKey: string;\n relayServer: string;\n}\nexport declare const migrate_0_7_0: (storage: Storage) => Promise;\n"},{name:"@airgap/beacon-core/dist/esm/migrations/migrations.d.ts",dts:"import { Storage } from '@airgap/beacon-types';\nexport declare const migrate: (storage: Storage) => Promise;\n"},{name:"@airgap/beacon-core/dist/esm/storage/ChromeStorage.d.ts",dts:"import { Storage, StorageKey, StorageKeyReturnType } from '@airgap/beacon-types';\n/**\n * @internalapi\n *\n * A storage that can be used in chrome extensions\n */\nexport declare class ChromeStorage implements Storage {\n static isSupported(): Promise;\n get(key: K): Promise;\n set(key: K, value: StorageKeyReturnType[K]): Promise;\n delete(key: K): Promise;\n subscribeToStorageChanged(_callback: (arg: {\n eventType: 'storageCleared' | 'entryModified';\n key: string | null;\n oldValue: string | null;\n newValue: string | null;\n }) => {}): Promise;\n getPrefixedKey(key: string): string;\n}\n"},{name:"@airgap/beacon-core/dist/esm/storage/IndexedDBStorage.d.ts",dts:"import { Storage, StorageKey, StorageKeyReturnType } from '@airgap/beacon-types';\nexport declare class IndexedDBStorage extends Storage {\n private readonly dbName;\n private readonly storeName;\n private db;\n static doesDatabaseAndTableExist(): Promise;\n openDatabase(): Promise;\n get(key: K): Promise;\n set(key: K, value: StorageKeyReturnType[K]): Promise;\n delete(key: K): Promise;\n subscribeToStorageChanged(callback: (arg: {\n eventType: 'storageCleared' | 'entryModified';\n key: string | null;\n oldValue: string | null;\n newValue: string | null;\n }) => {}): Promise;\n getPrefixedKey(key: K): string;\n clearTable(): Promise;\n}\n"},{name:"@airgap/beacon-core/dist/esm/storage/LocalStorage.d.ts",dts:"import { Storage, StorageKey, StorageKeyReturnType } from '@airgap/beacon-types';\n/**\n * @internalapi\n *\n * A storage that can be used in the browser\n */\nexport declare class LocalStorage extends Storage {\n private readonly prefix?;\n constructor(prefix?: string | undefined);\n static isSupported(): Promise;\n get(key: K): Promise;\n set(key: K, value: StorageKeyReturnType[K]): Promise;\n delete(key: K): Promise;\n subscribeToStorageChanged(callback: (arg: {\n eventType: 'storageCleared' | 'entryModified';\n key: string | null;\n oldValue: string | null;\n newValue: string | null;\n }) => {}): Promise;\n getPrefixedKey(key: string): string;\n}\n"},{name:"@airgap/beacon-core/dist/esm/storage/WCStorage.d.ts",dts:"export declare class WCStorage {\n private readonly localStorage;\n private readonly indexedDB;\n constructor();\n hasPairings(): Promise;\n hasSessions(): Promise;\n resetState(): Promise;\n}\n"},{name:"@airgap/beacon-core/dist/esm/storage/getStorage.d.ts",dts:"import { Storage } from '@airgap/beacon-types';\n/**\n * Get a supported storage on this platform\n */\nexport declare const getStorage: () => Promise;\n"},{name:"@airgap/beacon-core/dist/esm/transports/clients/ClientEvents.d.ts",dts:'export declare const enum ClientEvents {\n CLOSE_ALERT = "CLOSE_ALERT",\n RESET_STATE = "RESET_STATE",\n WC_ACK_NOTIFICATION = "WC_ACK_NOTIFICATION"\n}\n'},{name:"@airgap/beacon-core/dist/esm/transports/clients/CommunicationClient.d.ts",dts:"import { PeerInfoType } from '@airgap/beacon-types';\nimport { KeyPair } from '@stablelib/ed25519';\nimport { SessionKeys } from '@stablelib/x25519-session';\nimport { ClientEvents } from './ClientEvents';\n/**\n * @internalapi\n *\n *\n */\nexport declare abstract class CommunicationClient {\n protected readonly keyPair?: KeyPair | undefined;\n constructor(keyPair?: KeyPair | undefined);\n eventHandlers: Map;\n /**\n * Get the public key\n */\n getPublicKey(): Promise;\n /**\n * get the public key hash\n */\n getPublicKeyHash(): Promise;\n /**\n * Create a cryptobox server\n *\n * @param otherPublicKey\n * @param selfKeypair\n */\n protected createCryptoBoxServer(otherPublicKey: string, selfKeypair: KeyPair): Promise;\n /**\n * Create a cryptobox client\n *\n * @param otherPublicKey\n * @param selfKeypair\n */\n protected createCryptoBoxClient(otherPublicKey: string, selfKeypair: KeyPair): Promise;\n /**\n * Encrypt a message for a specific publicKey (receiver, asymmetric)\n *\n * @param recipientPublicKey\n * @param message\n */\n protected encryptMessageAsymmetric(recipientPublicKey: string, message: string): Promise;\n abstract unsubscribeFromEncryptedMessages(): Promise;\n abstract unsubscribeFromEncryptedMessage(senderPublicKey: string): Promise;\n abstract sendMessage(message: string, peer?: PeerInfoType): Promise;\n}\n"},{name:"@airgap/beacon-core/dist/esm/transports/clients/MessageBasedClient.d.ts",dts:"import { CommunicationClient } from './CommunicationClient';\nimport { PostMessagePairingRequest, PostMessagePairingResponse } from '@airgap/beacon-types';\nimport { KeyPair } from '@stablelib/ed25519';\n/**\n * @internalapi\n *\n *\n */\nexport declare abstract class MessageBasedClient extends CommunicationClient {\n protected readonly name: string;\n /**\n * The listeners that will be notified of new messages\n */\n protected abstract readonly activeListeners: Map;\n constructor(name: string, keyPair: KeyPair);\n /**\n * start the client and make sure all dependencies are ready\n */\n start(): Promise;\n /**\n * Get the pairing request information. This will be shared with the peer during the connection setup\n */\n getPairingRequestInfo(): Promise;\n /**\n * Get the pairing response information. This will be shared with the peer during the connection setup\n */\n getPairingResponseInfo(request: PostMessagePairingRequest): Promise;\n /**\n * Unsubscribe from encrypted messages from a specific peer\n *\n * @param senderPublicKey\n */\n unsubscribeFromEncryptedMessage(senderPublicKey: string): Promise;\n /**\n * Unsubscribe from all encrypted messages\n */\n unsubscribeFromEncryptedMessages(): Promise;\n /**\n * Decrypt a message from a specific peer\n *\n * @param senderPublicKey\n * @param payload\n */\n protected decryptMessage(senderPublicKey: string, payload: string): Promise;\n /**\n * Encrypt a message for a specific publicKey (receiver)\n *\n * @param recipientPublicKey\n * @param message\n */\n protected encryptMessage(recipientPublicKey: string, message: string): Promise;\n /**\n * Initialize the connection\n */\n abstract init(): Promise;\n}\n"},{name:"@airgap/beacon-core/dist/esm/transports/Transport.d.ts",dts:"import { TransportType, TransportStatus, PeerInfo, StorageKey, ConnectionContext } from '@airgap/beacon-types';\nimport { PeerManager } from '../managers/PeerManager';\nimport { CommunicationClient } from './clients/CommunicationClient';\nimport { ClientEvents } from './clients/ClientEvents';\n/**\n * @internalapi\n *\n *\n */\nexport declare abstract class Transport {\n /**\n * The type of the transport\n */\n readonly type: TransportType;\n /**\n * The name of the app\n */\n protected readonly name: string;\n /**\n * The status of the transport\n */\n protected _isConnected: TransportStatus;\n protected readonly peerManager: PeerManager;\n /**\n * The client handling the encryption/decryption of messages\n */\n protected client: S;\n /**\n * The listener that will be invoked when a new peer is connected\n */\n protected newPeerListener?: (peer: T) => void;\n setEventHandler(event: ClientEvents, fun: Function): void;\n /**\n * The listeners that will be notified when new messages are coming in\n */\n private listeners;\n /**\n * Return the status of the connection\n */\n get connectionStatus(): TransportStatus;\n constructor(name: string, client: S, peerManager: PeerManager);\n /**\n * Returns a promise that resolves to true if the transport is available, false if it is not\n */\n static isAvailable(): Promise;\n /**\n * Connect the transport\n */\n connect(): Promise;\n /**\n * Disconnect the transport\n */\n disconnect(): Promise;\n /**\n * Send a message through the transport\n *\n * @param message The message to send\n * @param recipient The recipient of the message\n */\n send(message: string, peer?: PeerInfo): Promise;\n /**\n * Add a listener to be called when a new message is received\n *\n * @param listener The listener that will be registered\n */\n addListener(listener: (message: unknown, connectionInfo: ConnectionContext) => void): Promise;\n /**\n * Remove a listener\n *\n * @param listener\n */\n removeListener(listener: (message: string, connectionInfo: ConnectionContext) => void): Promise;\n getPeers(): Promise;\n addPeer(newPeer: T, _sendPairingResponse?: boolean): Promise;\n removePeer(peerToBeRemoved: T): Promise;\n removeAllPeers(): Promise;\n /**\n * Notify the listeners when a new message comes in\n *\n * @param message Message\n * @param connectionInfo Context info about the connection\n */\n protected notifyListeners(message: unknown, connectionInfo: ConnectionContext): Promise;\n abstract listen(publicKey: string): Promise;\n}\n"},{name:"@airgap/beacon-core/dist/esm/utils/Logger.d.ts",dts:"export interface LoggerInterface {\n debug(method: string, ...args: any[]): void;\n log(method: string, ...args: any[]): void;\n warn(method: string, ...args: any[]): void;\n error(method: string, ...args: any[]): void;\n time(start: boolean, label?: string): void;\n timeLog(method: string, ...args: any[]): void;\n}\n/**\n * The logger that is used internally\n */\nexport declare class InternalLogger implements LoggerInterface {\n constructor();\n debug(name: string, method: string, ...args: any[]): void;\n log(name: string, method: string, ...args: any[]): void;\n warn(name: string, method: string, ...args: any[]): void;\n error(name: string, method: string, ...args: any[]): void;\n time(start: boolean, label?: string | undefined): void;\n timeLog(name: string, method: string, ...args: any[]): void;\n private _log;\n}\nexport declare class Logger implements LoggerInterface {\n private readonly name;\n constructor(service: string);\n debug(method: string, ...args: any[]): void;\n log(method: string, ...args: any[]): void;\n warn(method: string, ...args: any[]): void;\n error(method: string, ...args: any[]): void;\n time(start: boolean, label?: string | undefined): void;\n timeLog(method: string, ...args: any[]): void;\n}\nexport declare const setLogger: (newLogger: LoggerInterface) => void;\nexport declare const getLogger: () => LoggerInterface;\n"},{name:"@airgap/beacon-core/dist/esm/utils/assert-never.d.ts",dts:"/**\n * A helper function to make sure if/elses and switch/cases are exhaustive\n *\n * @param empty The data that has to be empty\n */\nexport declare function assertNever(empty: never): never;\n"},{name:"@airgap/beacon-core/dist/esm/utils/get-account-identifier.d.ts",dts:"import { Network } from '@airgap/beacon-types';\n/**\n * @internalapi\n *\n * Generate a deterministic account identifier based on an address and a network\n *\n * @param address\n * @param network\n */\nexport declare const getAccountIdentifier: (address: string, network: Network) => Promise;\n"},{name:"@airgap/beacon-core/dist/esm/utils/get-sender-id.d.ts",dts:"/**\n * @internalapi\n *\n * Generate a deterministic sender identifier based on a public key\n *\n * @param publicKey\n */\nexport declare const getSenderId: (publicKey: string) => Promise;\n"},{name:"@airgap/beacon-core/dist/esm/MockAnalytics.d.ts",dts:"import { AnalyticsInterface } from '@airgap/beacon-types';\nexport declare class MockAnalytics implements AnalyticsInterface {\n track(_trigger: 'click' | 'event', _section: string, _label: string, _data?: Record): void;\n}\n"},{name:"@airgap/beacon-core/dist/esm/MockWindow.d.ts",dts:"type Callback = (message: unknown) => void;\n/**\n * A mock for postmessage if run in node.js environment\n */\ndeclare let windowRef: {\n postMessage: (message: string | Record, _target?: string) => void;\n addEventListener: (_name: string, eventCallback: Callback) => void;\n removeEventListener: (_name: string, eventCallback: Callback) => void;\n location: {\n origin: string;\n };\n};\ndeclare const clearMockWindowState: () => void;\nexport { windowRef, clearMockWindowState };\n"},{name:"@airgap/beacon-core/dist/esm/Serializer.d.ts",dts:"/**\n * @internalapi\n *\n * The Serializer is used to serialize / deserialize JSON objects and encode them with bs58check\n */\nexport declare class Serializer {\n /**\n * Serialize and bs58check encode an object\n *\n * @param message JSON object to serialize\n */\n serialize(message: unknown): Promise;\n /**\n * Deserialize a bs58check encoded string\n *\n * @param encoded String to be deserialized\n */\n deserialize(encoded: string): Promise;\n}\n"},{name:"@airgap/beacon-core/dist/esm/constants.d.ts",dts:"export declare const SDK_VERSION: string;\nexport declare const BEACON_VERSION: string;\nexport declare const NOTIFICATION_ORACLE_URL: string;\n"},{name:"@airgap/beacon-core/dist/esm/debug.d.ts",dts:"export declare const setDebugEnabled: (enabled: boolean) => void;\nexport declare const getDebugEnabled: () => boolean;\n"},{name:"@airgap/beacon-core/dist/esm/index.d.ts",dts:"/**\n * General docs\n * @module public\n */\nimport { Client } from './clients/client/Client';\nimport { BeaconError } from './errors/BeaconError';\nimport { BroadcastBeaconError } from './errors/BroadcastBeaconError';\nimport { NetworkNotSupportedBeaconError } from './errors/NetworkNotSupportedBeaconError';\nimport { NoAddressBeaconError } from './errors/NoAddressBeaconError';\nimport { NoPrivateKeyBeaconError } from './errors/NoPrivateKeyBeaconError';\nimport { NotGrantedBeaconError } from './errors/NotGrantedBeaconError';\nimport { ParametersInvalidBeaconError } from './errors/ParametersInvalidBeaconError';\nimport { TooManyOperationsBeaconError } from './errors/TooManyOperationsBeaconError';\nimport { TransactionInvalidBeaconError } from './errors/TransactionInvalidBeaconError';\nimport { UnknownBeaconError } from './errors/UnknownBeaconError';\nimport { Transport } from './transports/Transport';\nimport { ChromeStorage } from './storage/ChromeStorage';\nimport { LocalStorage } from './storage/LocalStorage';\nimport { getStorage } from './storage/getStorage';\nimport { Serializer } from './Serializer';\nimport { ClientOptions } from './clients/client/ClientOptions';\nimport { SDK_VERSION, BEACON_VERSION } from './constants';\nimport { AccountManager } from './managers/AccountManager';\nimport { AppMetadataManager } from './managers/AppMetadataManager';\nimport { PermissionManager } from './managers/PermissionManager';\nimport { BeaconClient } from './clients/beacon-client/BeaconClient';\nimport { BeaconClientOptions } from './clients/beacon-client/BeaconClientOptions';\nimport { getAccountIdentifier } from './utils/get-account-identifier';\nimport { AbortedBeaconError } from './errors/AbortedBeaconError';\nimport { getSenderId } from './utils/get-sender-id';\nimport { PeerManager } from './managers/PeerManager';\nimport { MessageBasedClient } from './transports/clients/MessageBasedClient';\nimport { setDebugEnabled, getDebugEnabled } from './debug';\nimport { SignatureTypeNotSupportedBeaconError } from './errors/SignatureTypeNotSupportedBeaconError';\nimport { getLogger, Logger, setLogger } from './utils/Logger';\nimport { windowRef } from './MockWindow';\nimport { CommunicationClient } from './transports/clients/CommunicationClient';\nimport { ClientEvents } from './transports/clients/ClientEvents';\nimport { WCStorage } from './storage/WCStorage';\nexport { BeaconClient, BeaconClientOptions, Client, ClientOptions, ClientEvents };\nexport { BeaconError, AbortedBeaconError, BroadcastBeaconError, NetworkNotSupportedBeaconError, NoAddressBeaconError, NoPrivateKeyBeaconError, NotGrantedBeaconError, ParametersInvalidBeaconError, TooManyOperationsBeaconError, TransactionInvalidBeaconError, SignatureTypeNotSupportedBeaconError, UnknownBeaconError };\nexport { Transport, MessageBasedClient, CommunicationClient };\nexport { ChromeStorage, LocalStorage, WCStorage, getStorage };\nexport { PeerManager, AccountManager, AppMetadataManager, PermissionManager };\nexport { SDK_VERSION, BEACON_VERSION };\nexport { getSenderId, getAccountIdentifier, windowRef };\nexport { Serializer, Logger, setLogger, getLogger };\nexport { setDebugEnabled, getDebugEnabled };\nexport { NOTIFICATION_ORACLE_URL } from './constants';\n"},{name:"@airgap/beacon-dapp/dapp-client/DAppClient.d.ts",dts:"import { BeaconEvent, BeaconEventHandlerFunction, BeaconEventType } from '../events';\nimport { AccountInfo, TransportType, BeaconMessageType, RequestPermissionInput, RequestSignPayloadInput, RequestOperationInput, RequestBroadcastInput, PermissionResponseOutput, SignPayloadResponseOutput, OperationResponseOutput, BroadcastResponseOutput, Network, AppMetadata, ExtendedPeerInfo, ColorMode, Blockchain, BlockchainRequestV3, BlockchainResponseV3, PermissionRequestV3, PermissionResponseV3, ProofOfEventChallengeResponse, RequestProofOfEventChallengeInput, PeerInfoType } from '@airgap/beacon-types';\nimport { Client, Transport } from '@airgap/beacon-core';\nimport { BlockExplorer } from '../utils/block-explorer';\nimport { DAppClientOptions } from './DAppClientOptions';\nimport { BeaconEventHandler } from '@airgap/beacon-dapp';\nimport { DappPostMessageTransport } from '../transports/DappPostMessageTransport';\nimport { DappP2PTransport } from '../transports/DappP2PTransport';\nimport { DappWalletConnectTransport } from '../transports/DappWalletConnectTransport';\n/**\n * @publicapi\n *\n * The DAppClient has to be used in decentralized applications. It handles all the logic related to connecting to beacon-compatible\n * wallets and sending requests.\n *\n * @category DApp\n */\nexport declare class DAppClient extends Client {\n /**\n * The description of the app\n */\n readonly description?: string;\n /**\n * The block explorer used by the SDK\n */\n readonly blockExplorer: BlockExplorer;\n network: Network;\n protected readonly events: BeaconEventHandler;\n protected postMessageTransport: DappPostMessageTransport | undefined;\n protected p2pTransport: DappP2PTransport | undefined;\n protected walletConnectTransport: DappWalletConnectTransport | undefined;\n protected wcProjectId?: string;\n protected wcRelayUrl?: string;\n private isGetActiveAccountHandled;\n /**\n * A map of requests that are currently \"open\", meaning we have sent them to a wallet and are still awaiting a response.\n */\n private readonly openRequests;\n /**\n * The currently active account. For all requests that are associated to a specific request (operation request, signing request),\n * the active account is used to determine the network and destination wallet\n */\n private _activeAccount;\n /**\n * The currently active peer. This is used to address a peer in case the active account is not set. (Eg. for permission requests)\n */\n private _activePeer;\n private _initPromise;\n private isInitPending;\n private readonly activeAccountLoaded;\n private readonly appMetadataManager;\n private readonly disclaimerText?;\n private readonly errorMessages;\n private readonly featuredWallets;\n constructor(config: DAppClientOptions);\n initInternalTransports(): Promise;\n private initEvents;\n private wcToastHandler;\n private channelClosedHandler;\n destroy(): Promise;\n init(transport?: Transport): Promise;\n /**\n * Returns the active account\n */\n getActiveAccount(): Promise;\n private isInvalidState;\n /**\n * Sets the active account\n *\n * @param account The account that will be set as the active account\n */\n setActiveAccount(account?: AccountInfo): Promise;\n /**\n * Clear the active account\n */\n clearActiveAccount(): Promise;\n setColorMode(colorMode: ColorMode): Promise;\n getColorMode(): Promise;\n /**\n * @deprecated\n *\n * Use getOwnAppMetadata instead\n */\n getAppMetadata(): Promise;\n showPrepare(): Promise;\n hideUI(elements: ('alert' | 'toast')[], type?: TransportType): Promise;\n /**\n * Will remove the account from the local storage and set a new active account if necessary.\n *\n * @param accountIdentifier ID of the account\n */\n removeAccount(accountIdentifier: string): Promise;\n /**\n * Remove all accounts and set active account to undefined\n */\n removeAllAccounts(): Promise;\n /**\n * Removes a peer and all the accounts that have been connected through that peer\n *\n * @param peer Peer to be removed\n */\n removePeer(peer: ExtendedPeerInfo, sendDisconnectToPeer?: boolean): Promise;\n /**\n * Remove all peers and all accounts that have been connected through those peers\n */\n removeAllPeers(sendDisconnectToPeers?: boolean): Promise;\n /**\n * Allows the user to subscribe to specific events that are fired in the SDK\n *\n * @param internalEvent The event to subscribe to\n * @param eventCallback The callback that will be called when the event occurs\n */\n subscribeToEvent(internalEvent: K, eventCallback: BeaconEventHandlerFunction): Promise;\n /**\n * Check if we have permissions to send the specific message type to the active account.\n * If no active account is set, only permission requests are allowed.\n *\n * @param type The type of the message\n */\n checkPermissions(type: BeaconMessageType): Promise;\n sendNotification(title: string, message: string, payload: string, protocolIdentifier: string): Promise;\n private blockchains;\n addBlockchain(chain: Blockchain): void;\n removeBlockchain(chainIdentifier: string): void;\n /** Generic messages */\n permissionRequest(input: PermissionRequestV3): Promise>;\n request(input: BlockchainRequestV3): Promise>;\n /**\n * Send a permission request to the DApp. This should be done as the first step. The wallet will respond\n * with an publicKey and permissions that were given. The account returned will be set as the \"activeAccount\"\n * and will be used for the following requests.\n *\n * @param input The message details we need to prepare the PermissionRequest message.\n */\n requestPermissions(input?: RequestPermissionInput): Promise;\n /**\n * Send a proof of event request to the wallet. The wallet will either accept or decline the challenge.\n * If it is accepted, the challenge will be stored, meaning that even if the user refresh the page, the DAppClient will keep checking if the challenge has been fulfilled.\n * Once the challenge is stored, a challenge stored message will be sent to the wallet.\n * It's **highly recommended** to run a proof of event challenge to check the identity of an abstracted account\n *\n * @param input The message details we need to prepare the ProofOfEventChallenge message.\n */\n requestProofOfEventChallenge(input: RequestProofOfEventChallengeInput): Promise;\n private recordProofOfEventChallenge;\n /**\n * This method will send a \"SignPayloadRequest\" to the wallet. This method is meant to be used to sign\n * arbitrary data (eg. a string). It will return the signature in the format of \"edsig...\"\n *\n * @param input The message details we need to prepare the SignPayloadRequest message.\n */\n requestSignPayload(input: RequestSignPayloadInput): Promise;\n /**\n * This method will send an \"EncryptPayloadRequest\" to the wallet. This method is meant to be used to encrypt or decrypt\n * arbitrary data (eg. a string). It will return the encrypted or decrypted payload\n *\n * @param input The message details we need to prepare the EncryptPayloadRequest message.\n */\n /**\n * This method sends an OperationRequest to the wallet. This method should be used for all kinds of operations,\n * eg. transaction or delegation. Not all properties have to be provided. Data like \"counter\" and fees will be\n * fetched and calculated by the wallet (but they can still be provided if required).\n *\n * @param input The message details we need to prepare the OperationRequest message.\n */\n requestOperation(input: RequestOperationInput): Promise;\n /**\n * Sends a \"BroadcastRequest\" to the wallet. This method can be used to inject an already signed transaction\n * to the network.\n *\n * @param input The message details we need to prepare the BroadcastRequest message.\n */\n requestBroadcast(input: RequestBroadcastInput): Promise;\n protected setActivePeer(peer?: PeerInfoType): Promise;\n /**\n * A \"setter\" for when the transport needs to be changed.\n */\n protected setTransport(transport?: Transport): Promise;\n /**\n * This method will emit an internal error message.\n *\n * @param errorMessage The error message to send.\n */\n private sendInternalError;\n /**\n * This method will remove all accounts associated with a specific peer.\n *\n * @param peersToRemove An array of peers for which accounts should be removed\n */\n private removeAccountsForPeers;\n private removeAccountsForPeerIds;\n /**\n * This message handles errors that we receive from the wallet.\n *\n * @param request The request we sent\n * @param beaconError The error we received\n */\n private handleRequestError;\n /**\n * This message will send an event when we receive a successful response to one of the requests we sent.\n *\n * @param request The request we sent\n * @param response The response we received\n */\n private notifySuccess;\n private getWalletInfoFromStorage;\n private getWalletInfo;\n private getPeer;\n /**\n * This method handles sending of requests to the DApp. It makes sure that the DAppClient is initialized and connected\n * to the transport. After that rate limits and permissions will be checked, an ID is attached and the request is sent\n * to the DApp over the transport.\n *\n * @param requestInput The BeaconMessage to be sent to the wallet\n * @param account The account that the message will be sent to\n * @param skipResponse If true, the function return as soon as the message is sent\n */\n private makeRequest;\n /**\n * This method handles sending of requests to the DApp. It makes sure that the DAppClient is initialized and connected\n * to the transport. After that rate limits and permissions will be checked, an ID is attached and the request is sent\n * to the DApp over the transport.\n *\n * @param requestInput The BeaconMessage to be sent to the wallet\n * @param account The account that the message will be sent to\n */\n private makeRequestV3;\n disconnect(): Promise;\n /**\n * Adds a requests to the \"openRequests\" set so we know what messages have already been answered/handled.\n *\n * @param id The ID of the message\n * @param promise A promise that resolves once the response for that specific message is received\n */\n private addOpenRequest;\n private sendNotificationWithAccessToken;\n private onNewAccount;\n}\n"},{name:"@airgap/beacon-dapp/dapp-client/DAppClientOptions.d.ts",dts:"import { BeaconEvent, BeaconEventType, BeaconEventHandlerFunction } from '../events';\nimport { BlockExplorer } from '../utils/block-explorer';\nimport { Storage, NetworkType, ColorMode, NodeDistributions, AnalyticsInterface, Network } from '@airgap/beacon-types';\ntype RequireAtLeastOne = Pick> & {\n [K in Keys]-?: Required> & Partial>>;\n}[Keys];\n/**\n * @category DApp\n */\nexport interface DAppClientOptions {\n /**\n * Name of the application\n */\n name: string;\n /**\n * Description of the application\n */\n description?: string;\n /**\n * A URL to the icon of the application\n */\n iconUrl?: string;\n /**\n * A URL to the website of the application\n */\n appUrl?: string;\n /**\n * The storage that will be used by the SDK\n */\n storage?: Storage;\n /**\n * An object that will be used to overwrite default event handler behaviour.\n *\n * If you plan to overwrite all default events, use \"disableDefaultEvents\" instead.\n *\n * This will overwrite the default event handler, so this can lead to unexpected behavior in some cases.\n * We recommend that you overwrite all handlers if you want to use your own UI.\n *\n * If you simply want to be notified of events happening, but do not want to overwrite the default behavior,\n * please use `subscribeToEvent()` on the DAppClient instead.\n */\n eventHandlers?: {\n [key in BeaconEvent]?: {\n handler: BeaconEventHandlerFunction;\n };\n };\n /**\n * Disable all default Events and UI elements. If passed together with \"eventHandlers\",\n * the default eventHandlers will be removed, and the ones passed by the user will be added.\n */\n disableDefaultEvents?: boolean;\n /**\n * A list of matrix nodes to connect to. If a non-empty array is passed, the default options will be overwritten.\n * One node will be randomly selected based on the local keypair and the other nodes will be used as a fallback in case the primary node goes down.\n *\n * Only provide the hostname, no https:// prefix. Eg. { [Regions.EU1]: ['matrix.example.com'] }\n */\n matrixNodes?: NodeDistributions;\n /**\n * The block explorer used by the SDK\n */\n blockExplorer?: BlockExplorer;\n /**\n * Indicates on which network the DApp is running on.\n */\n network?: Network;\n /**\n * @deprecated Please use \"network\" instead.\n * Indicates on which network the DApp is planning to run. This is currently used to adjust the URLs of web-wallets in the pairing alert if they use different URLs for testnets.\n * You will still have to define the network you intend to use during the permission request.\n */\n preferredNetwork?: NetworkType;\n /**\n * Set the color mode for the UI elements (alerts and toasts)\n */\n colorMode?: ColorMode;\n /**\n * A disclaimer text that will be displayed in the pairing alert\n */\n disclaimerText?: string;\n /**\n * A list of contracts that the DApp is using. Allows to attach human readable error messages for to error codes\n */\n errorMessages?: Record>;\n /**\n * Configuration that is passed to the WalletConnect transport.\n *\n * This is required to enable WalletConnect connections.\n */\n walletConnectOptions?: RequireAtLeastOne<{\n /**\n * The projectId of the application. Has to be obtained from https://cloud.walletconnect.com/\n */\n projectId?: string;\n /**\n * The relay server to connect to\n */\n relayUrl?: string;\n }>;\n /**\n * The analytics instance that will be used by the SDK\n */\n analytics?: AnalyticsInterface;\n /**\n * The wallets that will be featured in the UI.\n */\n featuredWallets?: string[];\n}\nexport {};\n"},{name:"@airgap/beacon-dapp/transports/DappP2PTransport.d.ts",dts:"import { Storage, StorageKey, ExtendedP2PPairingResponse, NodeDistributions } from '@airgap/beacon-types';\nimport { P2PTransport } from '@airgap/beacon-transport-matrix';\nimport { KeyPair } from '@stablelib/ed25519';\n/**\n * @internalapi\n *\n *\n */\nexport declare class DappP2PTransport extends P2PTransport {\n constructor(name: string, keyPair: KeyPair, storage: Storage, matrixNodes: NodeDistributions, iconUrl?: string, appUrl?: string);\n startOpenChannelListener(): Promise;\n listenForNewPeer(newPeerListener: (peer: ExtendedP2PPairingResponse) => void): Promise;\n stopListeningForNewPeers(): Promise;\n}\n"},{name:"@airgap/beacon-dapp/transports/DappPostMessageTransport.d.ts",dts:"import { StorageKey, Storage, ExtendedPostMessagePairingResponse } from '@airgap/beacon-types';\nimport { PostMessageTransport } from '@airgap/beacon-transport-postmessage';\nimport { KeyPair } from '@stablelib/ed25519';\n/**\n * @internalapi\n *\n *\n */\nexport declare class DappPostMessageTransport extends PostMessageTransport {\n constructor(name: string, keyPair: KeyPair, storage: Storage);\n startOpenChannelListener(): Promise;\n listenForNewPeer(newPeerListener: (peer: ExtendedPostMessagePairingResponse) => void): Promise;\n stopListeningForNewPeers(): Promise;\n}\n"},{name:"@airgap/beacon-dapp/transports/DappWalletConnectTransport.d.ts",dts:"import { StorageKey, Storage, ExtendedWalletConnectPairingResponse, NetworkType } from '@airgap/beacon-types';\nimport { WalletConnectTransport } from '@airgap/beacon-transport-walletconnect';\nimport { KeyPair } from '@stablelib/ed25519';\nimport { SignClientTypes } from '@walletconnect/types';\n/**\n * @internalapi\n *\n *\n */\nexport declare class DappWalletConnectTransport extends WalletConnectTransport {\n constructor(name: string, keyPair: KeyPair, storage: Storage, wcOptions: {\n network: NetworkType;\n opts: SignClientTypes.Options;\n });\n listenForNewPeer(newPeerListener: (peer: ExtendedWalletConnectPairingResponse) => void): Promise;\n stopListeningForNewPeers(): Promise;\n}\n"},{name:"@airgap/beacon-dapp/utils/available-transports.d.ts",dts:"/**\n * An object with promises to indicate whether or not that transport is available.\n */\nexport declare const availableTransports: any;\n"},{name:"@airgap/beacon-dapp/utils/block-explorer.d.ts",dts:"import { Network, NetworkType } from '@airgap/beacon-types';\nexport declare abstract class BlockExplorer {\n readonly rpcUrls: {\n [key in NetworkType]: string;\n };\n constructor(rpcUrls: {\n [key in NetworkType]: string;\n });\n protected getLinkForNetwork(network: Network): Promise;\n /**\n * Return a blockexplorer link for an address\n *\n * @param address The address to be opened\n * @param network The network that was used\n */\n abstract getAddressLink(address: string, network: Network): Promise;\n /**\n * Return a blockexplorer link for a transaction hash\n *\n * @param transactionId The hash of the transaction\n * @param network The network that was used\n */\n abstract getTransactionLink(transactionId: string, network: Network): Promise;\n}\n"},{name:"@airgap/beacon-dapp/utils/get-instance.d.ts",dts:"import { DAppClient, DAppClientOptions } from '..';\n/** Get a DAppClient instance. Will make sure only one dAppClient exists. After the first instance has been created, the config will be ignored, unless \"reset\" is set */\nexport declare const getDAppClientInstance: (config: DAppClientOptions, reset?: boolean) => DAppClient;\n"},{name:"@airgap/beacon-dapp/utils/shorten-string.d.ts",dts:"export declare const shortenString: (text: string) => string;\n"},{name:"@airgap/beacon-dapp/utils/tzkt-blockexplorer.d.ts",dts:"import { Network, NetworkType } from '@airgap/beacon-types';\nimport { BlockExplorer } from './block-explorer';\nexport declare class TzktBlockExplorer extends BlockExplorer {\n readonly rpcUrls: {\n [key in NetworkType]: string;\n };\n constructor(rpcUrls?: {\n [key in NetworkType]: string;\n });\n getAddressLink(address: string, network: Network): Promise;\n getTransactionLink(transactionId: string, network: Network): Promise;\n}\n"},{name:"@airgap/beacon-dapp/beacon-message-events.d.ts",dts:"import { BeaconEvent } from './events';\nimport { BeaconMessageType } from '@airgap/beacon-types';\nexport declare const messageEvents: {\n [key in BeaconMessageType]: {\n sent: BeaconEvent;\n success: BeaconEvent;\n error: BeaconEvent;\n };\n};\n"},{name:"@airgap/beacon-dapp/events.d.ts",dts:'import { BlockExplorer, AlertButton } from \'@airgap/beacon-dapp\';\nimport { ExtendedPostMessagePairingResponse, PostMessagePairingRequest, ExtendedP2PPairingResponse, P2PPairingRequest, AccountInfo, ErrorResponse, PermissionResponseOutput, OperationResponseOutput, BroadcastResponseOutput, SignPayloadResponseOutput, Network, ConnectionContext, NetworkType, AcknowledgeResponse, WalletInfo, ExtendedWalletConnectPairingResponse, WalletConnectPairingRequest, AnalyticsInterface } from \'@airgap/beacon-types\';\nimport { Transport } from \'@airgap/beacon-core\';\nimport { ProofOfEventChallengeResponseOutput } from \'@airgap/beacon-types\';\n/**\n * The different events that can be emitted by the beacon-sdk\n */\nexport declare enum BeaconEvent {\n PERMISSION_REQUEST_SENT = "PERMISSION_REQUEST_SENT",\n PERMISSION_REQUEST_SUCCESS = "PERMISSION_REQUEST_SUCCESS",\n PERMISSION_REQUEST_ERROR = "PERMISSION_REQUEST_ERROR",\n PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT = "PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT",\n PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS = "PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS",\n PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR = "PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR",\n OPERATION_REQUEST_SENT = "OPERATION_REQUEST_SENT",\n OPERATION_REQUEST_SUCCESS = "OPERATION_REQUEST_SUCCESS",\n OPERATION_REQUEST_ERROR = "OPERATION_REQUEST_ERROR",\n SIGN_REQUEST_SENT = "SIGN_REQUEST_SENT",\n SIGN_REQUEST_SUCCESS = "SIGN_REQUEST_SUCCESS",\n SIGN_REQUEST_ERROR = "SIGN_REQUEST_ERROR",\n BROADCAST_REQUEST_SENT = "BROADCAST_REQUEST_SENT",\n BROADCAST_REQUEST_SUCCESS = "BROADCAST_REQUEST_SUCCESS",\n BROADCAST_REQUEST_ERROR = "BROADCAST_REQUEST_ERROR",\n ACKNOWLEDGE_RECEIVED = "ACKNOWLEDGE_RECEIVED",\n LOCAL_RATE_LIMIT_REACHED = "LOCAL_RATE_LIMIT_REACHED",\n NO_PERMISSIONS = "NO_PERMISSIONS",\n ACTIVE_ACCOUNT_SET = "ACTIVE_ACCOUNT_SET",\n ACTIVE_TRANSPORT_SET = "ACTIVE_TRANSPORT_SET",\n SHOW_PREPARE = "SHOW_PREPARE",\n HIDE_UI = "HIDE_UI",\n INVALID_ACTIVE_ACCOUNT_STATE = "INVALID_ACTIVE_ACCOUNT_STATE",\n PAIR_INIT = "PAIR_INIT",\n PAIR_SUCCESS = "PAIR_SUCCESS",\n CHANNEL_CLOSED = "CHANNEL_CLOSED",\n INTERNAL_ERROR = "INTERNAL_ERROR",\n UNKNOWN = "UNKNOWN"\n}\nexport interface ExtraInfo {\n resetCallback?(): Promise;\n}\ninterface RequestSentInfo {\n extraInfo: ExtraInfo;\n walletInfo: WalletInfo;\n}\n/**\n * The type of the payload of the different BeaconEvents\n */\nexport interface BeaconEventType {\n [BeaconEvent.PERMISSION_REQUEST_SENT]: RequestSentInfo;\n [BeaconEvent.PERMISSION_REQUEST_SUCCESS]: {\n account: AccountInfo;\n output: PermissionResponseOutput;\n blockExplorer: BlockExplorer;\n connectionContext: ConnectionContext;\n walletInfo: WalletInfo;\n };\n [BeaconEvent.PERMISSION_REQUEST_ERROR]: {\n errorResponse: ErrorResponse;\n walletInfo: WalletInfo;\n };\n [BeaconEvent.PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT]: RequestSentInfo;\n [BeaconEvent.PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS]: {\n account: AccountInfo;\n output: ProofOfEventChallengeResponseOutput;\n blockExplorer: BlockExplorer;\n connectionContext: ConnectionContext;\n walletInfo: WalletInfo;\n };\n [BeaconEvent.PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR]: {\n errorResponse: ErrorResponse;\n walletInfo: WalletInfo;\n };\n [BeaconEvent.OPERATION_REQUEST_SENT]: RequestSentInfo;\n [BeaconEvent.OPERATION_REQUEST_SUCCESS]: {\n account: AccountInfo;\n output: OperationResponseOutput;\n blockExplorer: BlockExplorer;\n connectionContext: ConnectionContext;\n walletInfo: WalletInfo;\n };\n [BeaconEvent.OPERATION_REQUEST_ERROR]: {\n errorResponse: ErrorResponse;\n walletInfo: WalletInfo;\n errorMessages: Record>;\n };\n [BeaconEvent.SIGN_REQUEST_SENT]: RequestSentInfo;\n [BeaconEvent.SIGN_REQUEST_SUCCESS]: {\n output: SignPayloadResponseOutput;\n connectionContext: ConnectionContext;\n walletInfo: WalletInfo;\n };\n [BeaconEvent.SIGN_REQUEST_ERROR]: {\n errorResponse: ErrorResponse;\n walletInfo: WalletInfo;\n };\n [BeaconEvent.BROADCAST_REQUEST_SENT]: RequestSentInfo;\n [BeaconEvent.BROADCAST_REQUEST_SUCCESS]: {\n network: Network;\n output: BroadcastResponseOutput;\n blockExplorer: BlockExplorer;\n connectionContext: ConnectionContext;\n walletInfo: WalletInfo;\n };\n [BeaconEvent.BROADCAST_REQUEST_ERROR]: {\n errorResponse: ErrorResponse;\n walletInfo: WalletInfo;\n };\n [BeaconEvent.ACKNOWLEDGE_RECEIVED]: {\n message: AcknowledgeResponse;\n extraInfo: ExtraInfo;\n walletInfo: WalletInfo;\n };\n [BeaconEvent.LOCAL_RATE_LIMIT_REACHED]: undefined;\n [BeaconEvent.NO_PERMISSIONS]: undefined;\n [BeaconEvent.ACTIVE_ACCOUNT_SET]: AccountInfo;\n [BeaconEvent.ACTIVE_TRANSPORT_SET]: Transport;\n [BeaconEvent.INVALID_ACTIVE_ACCOUNT_STATE]: undefined;\n [BeaconEvent.SHOW_PREPARE]: {\n walletInfo?: WalletInfo;\n };\n [BeaconEvent.HIDE_UI]: (\'alert\' | \'toast\')[] | undefined;\n [BeaconEvent.PAIR_INIT]: {\n p2pPeerInfo: () => Promise;\n postmessagePeerInfo: () => Promise;\n walletConnectPeerInfo: () => Promise;\n networkType: NetworkType;\n abortedHandler?(): void;\n disclaimerText?: string;\n analytics: AnalyticsInterface;\n featuredWallets?: string[];\n };\n [BeaconEvent.PAIR_SUCCESS]: ExtendedPostMessagePairingResponse | ExtendedP2PPairingResponse | ExtendedWalletConnectPairingResponse;\n [BeaconEvent.CHANNEL_CLOSED]: string;\n [BeaconEvent.INTERNAL_ERROR]: {\n text: string;\n buttons?: AlertButton[];\n };\n [BeaconEvent.UNKNOWN]: undefined;\n}\nexport type BeaconEventHandlerFunction = (data: T, eventCallback?: AlertButton[]) => void | Promise;\n/**\n * The default event handlers\n */\nexport declare const defaultEventCallbacks: {\n [key in BeaconEvent]: BeaconEventHandlerFunction;\n};\n/**\n * @internalapi\n *\n * Handles beacon events\n */\nexport declare class BeaconEventHandler {\n private readonly callbackMap;\n constructor(eventsToOverride?: {\n [key in BeaconEvent]?: {\n handler: BeaconEventHandlerFunction;\n };\n }, overrideAll?: boolean);\n /**\n * A method to subscribe to a specific beacon event and register a callback\n *\n * @param event The event being emitted\n * @param eventCallback The callback that will be invoked\n */\n on(event: K, eventCallback: BeaconEventHandlerFunction): Promise;\n /**\n * Emit a beacon event\n *\n * @param event The event being emitted\n * @param data The data to be emit\n */\n emit(event: K, data?: BeaconEventType[K], eventCallback?: AlertButton[]): Promise;\n /**\n * Override beacon event default callbacks. This can be used to disable default alert/toast behaviour\n *\n * @param eventsToOverride An object with the events to override\n */\n private overrideDefaults;\n /**\n * Set all event callbacks to a specific handler.\n */\n private setAllHandlers;\n}\nexport {};\n'},{name:"@airgap/beacon-dapp/index.d.ts",dts:"export * from '@airgap/beacon-core';\nexport * from '@airgap/beacon-transport-matrix';\nexport * from '@airgap/beacon-transport-postmessage';\nexport * from '@airgap/beacon-types';\nexport * from '@airgap/beacon-utils';\nexport * from '@airgap/beacon-ui';\nimport { DAppClient } from './dapp-client/DAppClient';\nimport { DAppClientOptions } from './dapp-client/DAppClientOptions';\nimport { BeaconEvent, BeaconEventHandler, defaultEventCallbacks } from './events';\nimport { BlockExplorer } from './utils/block-explorer';\nimport { TzktBlockExplorer } from './utils/tzkt-blockexplorer';\nimport { getDAppClientInstance } from './utils/get-instance';\nexport { DAppClient, DAppClientOptions, getDAppClientInstance };\nexport { BeaconEvent, BeaconEventHandler, defaultEventCallbacks };\nexport { BlockExplorer, TzktBlockExplorer, TzktBlockExplorer as TezblockBlockExplorer };\n"},{name:"@airgap/beacon-dapp/dist/esm/dapp-client/DAppClient.d.ts",dts:"import { BeaconEvent, BeaconEventHandlerFunction, BeaconEventType } from '../events';\nimport { AccountInfo, TransportType, BeaconMessageType, RequestPermissionInput, RequestSignPayloadInput, RequestOperationInput, RequestBroadcastInput, PermissionResponseOutput, SignPayloadResponseOutput, OperationResponseOutput, BroadcastResponseOutput, Network, AppMetadata, ExtendedPeerInfo, ColorMode, Blockchain, BlockchainRequestV3, BlockchainResponseV3, PermissionRequestV3, PermissionResponseV3, ProofOfEventChallengeResponse, RequestProofOfEventChallengeInput, PeerInfoType } from '@airgap/beacon-types';\nimport { Client, Transport } from '@airgap/beacon-core';\nimport { BlockExplorer } from '../utils/block-explorer';\nimport { DAppClientOptions } from './DAppClientOptions';\nimport { BeaconEventHandler } from '@airgap/beacon-dapp';\nimport { DappPostMessageTransport } from '../transports/DappPostMessageTransport';\nimport { DappP2PTransport } from '../transports/DappP2PTransport';\nimport { DappWalletConnectTransport } from '../transports/DappWalletConnectTransport';\n/**\n * @publicapi\n *\n * The DAppClient has to be used in decentralized applications. It handles all the logic related to connecting to beacon-compatible\n * wallets and sending requests.\n *\n * @category DApp\n */\nexport declare class DAppClient extends Client {\n /**\n * The description of the app\n */\n readonly description?: string;\n /**\n * The block explorer used by the SDK\n */\n readonly blockExplorer: BlockExplorer;\n network: Network;\n protected readonly events: BeaconEventHandler;\n protected postMessageTransport: DappPostMessageTransport | undefined;\n protected p2pTransport: DappP2PTransport | undefined;\n protected walletConnectTransport: DappWalletConnectTransport | undefined;\n protected wcProjectId?: string;\n protected wcRelayUrl?: string;\n private isGetActiveAccountHandled;\n /**\n * A map of requests that are currently \"open\", meaning we have sent them to a wallet and are still awaiting a response.\n */\n private readonly openRequests;\n /**\n * The currently active account. For all requests that are associated to a specific request (operation request, signing request),\n * the active account is used to determine the network and destination wallet\n */\n private _activeAccount;\n /**\n * The currently active peer. This is used to address a peer in case the active account is not set. (Eg. for permission requests)\n */\n private _activePeer;\n private _initPromise;\n private isInitPending;\n private readonly activeAccountLoaded;\n private readonly appMetadataManager;\n private readonly disclaimerText?;\n private readonly errorMessages;\n private readonly featuredWallets;\n constructor(config: DAppClientOptions);\n initInternalTransports(): Promise;\n private initEvents;\n private wcToastHandler;\n private channelClosedHandler;\n destroy(): Promise;\n init(transport?: Transport): Promise;\n /**\n * Returns the active account\n */\n getActiveAccount(): Promise;\n private isInvalidState;\n /**\n * Sets the active account\n *\n * @param account The account that will be set as the active account\n */\n setActiveAccount(account?: AccountInfo): Promise;\n /**\n * Clear the active account\n */\n clearActiveAccount(): Promise;\n setColorMode(colorMode: ColorMode): Promise;\n getColorMode(): Promise;\n /**\n * @deprecated\n *\n * Use getOwnAppMetadata instead\n */\n getAppMetadata(): Promise;\n showPrepare(): Promise;\n hideUI(elements: ('alert' | 'toast')[], type?: TransportType): Promise;\n /**\n * Will remove the account from the local storage and set a new active account if necessary.\n *\n * @param accountIdentifier ID of the account\n */\n removeAccount(accountIdentifier: string): Promise;\n /**\n * Remove all accounts and set active account to undefined\n */\n removeAllAccounts(): Promise;\n /**\n * Removes a peer and all the accounts that have been connected through that peer\n *\n * @param peer Peer to be removed\n */\n removePeer(peer: ExtendedPeerInfo, sendDisconnectToPeer?: boolean): Promise;\n /**\n * Remove all peers and all accounts that have been connected through those peers\n */\n removeAllPeers(sendDisconnectToPeers?: boolean): Promise;\n /**\n * Allows the user to subscribe to specific events that are fired in the SDK\n *\n * @param internalEvent The event to subscribe to\n * @param eventCallback The callback that will be called when the event occurs\n */\n subscribeToEvent(internalEvent: K, eventCallback: BeaconEventHandlerFunction): Promise;\n /**\n * Check if we have permissions to send the specific message type to the active account.\n * If no active account is set, only permission requests are allowed.\n *\n * @param type The type of the message\n */\n checkPermissions(type: BeaconMessageType): Promise;\n sendNotification(title: string, message: string, payload: string, protocolIdentifier: string): Promise;\n private blockchains;\n addBlockchain(chain: Blockchain): void;\n removeBlockchain(chainIdentifier: string): void;\n /** Generic messages */\n permissionRequest(input: PermissionRequestV3): Promise>;\n request(input: BlockchainRequestV3): Promise>;\n /**\n * Send a permission request to the DApp. This should be done as the first step. The wallet will respond\n * with an publicKey and permissions that were given. The account returned will be set as the \"activeAccount\"\n * and will be used for the following requests.\n *\n * @param input The message details we need to prepare the PermissionRequest message.\n */\n requestPermissions(input?: RequestPermissionInput): Promise;\n /**\n * Send a proof of event request to the wallet. The wallet will either accept or decline the challenge.\n * If it is accepted, the challenge will be stored, meaning that even if the user refresh the page, the DAppClient will keep checking if the challenge has been fulfilled.\n * Once the challenge is stored, a challenge stored message will be sent to the wallet.\n * It's **highly recommended** to run a proof of event challenge to check the identity of an abstracted account\n *\n * @param input The message details we need to prepare the ProofOfEventChallenge message.\n */\n requestProofOfEventChallenge(input: RequestProofOfEventChallengeInput): Promise;\n private recordProofOfEventChallenge;\n /**\n * This method will send a \"SignPayloadRequest\" to the wallet. This method is meant to be used to sign\n * arbitrary data (eg. a string). It will return the signature in the format of \"edsig...\"\n *\n * @param input The message details we need to prepare the SignPayloadRequest message.\n */\n requestSignPayload(input: RequestSignPayloadInput): Promise;\n /**\n * This method will send an \"EncryptPayloadRequest\" to the wallet. This method is meant to be used to encrypt or decrypt\n * arbitrary data (eg. a string). It will return the encrypted or decrypted payload\n *\n * @param input The message details we need to prepare the EncryptPayloadRequest message.\n */\n /**\n * This method sends an OperationRequest to the wallet. This method should be used for all kinds of operations,\n * eg. transaction or delegation. Not all properties have to be provided. Data like \"counter\" and fees will be\n * fetched and calculated by the wallet (but they can still be provided if required).\n *\n * @param input The message details we need to prepare the OperationRequest message.\n */\n requestOperation(input: RequestOperationInput): Promise;\n /**\n * Sends a \"BroadcastRequest\" to the wallet. This method can be used to inject an already signed transaction\n * to the network.\n *\n * @param input The message details we need to prepare the BroadcastRequest message.\n */\n requestBroadcast(input: RequestBroadcastInput): Promise;\n protected setActivePeer(peer?: PeerInfoType): Promise;\n /**\n * A \"setter\" for when the transport needs to be changed.\n */\n protected setTransport(transport?: Transport): Promise;\n /**\n * This method will emit an internal error message.\n *\n * @param errorMessage The error message to send.\n */\n private sendInternalError;\n /**\n * This method will remove all accounts associated with a specific peer.\n *\n * @param peersToRemove An array of peers for which accounts should be removed\n */\n private removeAccountsForPeers;\n private removeAccountsForPeerIds;\n /**\n * This message handles errors that we receive from the wallet.\n *\n * @param request The request we sent\n * @param beaconError The error we received\n */\n private handleRequestError;\n /**\n * This message will send an event when we receive a successful response to one of the requests we sent.\n *\n * @param request The request we sent\n * @param response The response we received\n */\n private notifySuccess;\n private getWalletInfoFromStorage;\n private getWalletInfo;\n private getPeer;\n /**\n * This method handles sending of requests to the DApp. It makes sure that the DAppClient is initialized and connected\n * to the transport. After that rate limits and permissions will be checked, an ID is attached and the request is sent\n * to the DApp over the transport.\n *\n * @param requestInput The BeaconMessage to be sent to the wallet\n * @param account The account that the message will be sent to\n * @param skipResponse If true, the function return as soon as the message is sent\n */\n private makeRequest;\n /**\n * This method handles sending of requests to the DApp. It makes sure that the DAppClient is initialized and connected\n * to the transport. After that rate limits and permissions will be checked, an ID is attached and the request is sent\n * to the DApp over the transport.\n *\n * @param requestInput The BeaconMessage to be sent to the wallet\n * @param account The account that the message will be sent to\n */\n private makeRequestV3;\n disconnect(): Promise;\n /**\n * Adds a requests to the \"openRequests\" set so we know what messages have already been answered/handled.\n *\n * @param id The ID of the message\n * @param promise A promise that resolves once the response for that specific message is received\n */\n private addOpenRequest;\n private sendNotificationWithAccessToken;\n private onNewAccount;\n}\n"},{name:"@airgap/beacon-dapp/dist/esm/dapp-client/DAppClientOptions.d.ts",dts:"import { BeaconEvent, BeaconEventType, BeaconEventHandlerFunction } from '../events';\nimport { BlockExplorer } from '../utils/block-explorer';\nimport { Storage, NetworkType, ColorMode, NodeDistributions, AnalyticsInterface, Network } from '@airgap/beacon-types';\ntype RequireAtLeastOne = Pick> & {\n [K in Keys]-?: Required> & Partial>>;\n}[Keys];\n/**\n * @category DApp\n */\nexport interface DAppClientOptions {\n /**\n * Name of the application\n */\n name: string;\n /**\n * Description of the application\n */\n description?: string;\n /**\n * A URL to the icon of the application\n */\n iconUrl?: string;\n /**\n * A URL to the website of the application\n */\n appUrl?: string;\n /**\n * The storage that will be used by the SDK\n */\n storage?: Storage;\n /**\n * An object that will be used to overwrite default event handler behaviour.\n *\n * If you plan to overwrite all default events, use \"disableDefaultEvents\" instead.\n *\n * This will overwrite the default event handler, so this can lead to unexpected behavior in some cases.\n * We recommend that you overwrite all handlers if you want to use your own UI.\n *\n * If you simply want to be notified of events happening, but do not want to overwrite the default behavior,\n * please use `subscribeToEvent()` on the DAppClient instead.\n */\n eventHandlers?: {\n [key in BeaconEvent]?: {\n handler: BeaconEventHandlerFunction;\n };\n };\n /**\n * Disable all default Events and UI elements. If passed together with \"eventHandlers\",\n * the default eventHandlers will be removed, and the ones passed by the user will be added.\n */\n disableDefaultEvents?: boolean;\n /**\n * A list of matrix nodes to connect to. If a non-empty array is passed, the default options will be overwritten.\n * One node will be randomly selected based on the local keypair and the other nodes will be used as a fallback in case the primary node goes down.\n *\n * Only provide the hostname, no https:// prefix. Eg. { [Regions.EU1]: ['matrix.example.com'] }\n */\n matrixNodes?: NodeDistributions;\n /**\n * The block explorer used by the SDK\n */\n blockExplorer?: BlockExplorer;\n /**\n * Indicates on which network the DApp is running on.\n */\n network?: Network;\n /**\n * @deprecated Please use \"network\" instead.\n * Indicates on which network the DApp is planning to run. This is currently used to adjust the URLs of web-wallets in the pairing alert if they use different URLs for testnets.\n * You will still have to define the network you intend to use during the permission request.\n */\n preferredNetwork?: NetworkType;\n /**\n * Set the color mode for the UI elements (alerts and toasts)\n */\n colorMode?: ColorMode;\n /**\n * A disclaimer text that will be displayed in the pairing alert\n */\n disclaimerText?: string;\n /**\n * A list of contracts that the DApp is using. Allows to attach human readable error messages for to error codes\n */\n errorMessages?: Record>;\n /**\n * Configuration that is passed to the WalletConnect transport.\n *\n * This is required to enable WalletConnect connections.\n */\n walletConnectOptions?: RequireAtLeastOne<{\n /**\n * The projectId of the application. Has to be obtained from https://cloud.walletconnect.com/\n */\n projectId?: string;\n /**\n * The relay server to connect to\n */\n relayUrl?: string;\n }>;\n /**\n * The analytics instance that will be used by the SDK\n */\n analytics?: AnalyticsInterface;\n /**\n * The wallets that will be featured in the UI.\n */\n featuredWallets?: string[];\n}\nexport {};\n"},{name:"@airgap/beacon-dapp/dist/esm/transports/DappP2PTransport.d.ts",dts:"import { Storage, StorageKey, ExtendedP2PPairingResponse, NodeDistributions } from '@airgap/beacon-types';\nimport { P2PTransport } from '@airgap/beacon-transport-matrix';\nimport { KeyPair } from '@stablelib/ed25519';\n/**\n * @internalapi\n *\n *\n */\nexport declare class DappP2PTransport extends P2PTransport {\n constructor(name: string, keyPair: KeyPair, storage: Storage, matrixNodes: NodeDistributions, iconUrl?: string, appUrl?: string);\n startOpenChannelListener(): Promise;\n listenForNewPeer(newPeerListener: (peer: ExtendedP2PPairingResponse) => void): Promise;\n stopListeningForNewPeers(): Promise;\n}\n"},{name:"@airgap/beacon-dapp/dist/esm/transports/DappPostMessageTransport.d.ts",dts:"import { StorageKey, Storage, ExtendedPostMessagePairingResponse } from '@airgap/beacon-types';\nimport { PostMessageTransport } from '@airgap/beacon-transport-postmessage';\nimport { KeyPair } from '@stablelib/ed25519';\n/**\n * @internalapi\n *\n *\n */\nexport declare class DappPostMessageTransport extends PostMessageTransport {\n constructor(name: string, keyPair: KeyPair, storage: Storage);\n startOpenChannelListener(): Promise;\n listenForNewPeer(newPeerListener: (peer: ExtendedPostMessagePairingResponse) => void): Promise;\n stopListeningForNewPeers(): Promise;\n}\n"},{name:"@airgap/beacon-dapp/dist/esm/transports/DappWalletConnectTransport.d.ts",dts:"import { StorageKey, Storage, ExtendedWalletConnectPairingResponse, NetworkType } from '@airgap/beacon-types';\nimport { WalletConnectTransport } from '@airgap/beacon-transport-walletconnect';\nimport { KeyPair } from '@stablelib/ed25519';\nimport { SignClientTypes } from '@walletconnect/types';\n/**\n * @internalapi\n *\n *\n */\nexport declare class DappWalletConnectTransport extends WalletConnectTransport {\n constructor(name: string, keyPair: KeyPair, storage: Storage, wcOptions: {\n network: NetworkType;\n opts: SignClientTypes.Options;\n });\n listenForNewPeer(newPeerListener: (peer: ExtendedWalletConnectPairingResponse) => void): Promise;\n stopListeningForNewPeers(): Promise;\n}\n"},{name:"@airgap/beacon-dapp/dist/esm/utils/available-transports.d.ts",dts:"/**\n * An object with promises to indicate whether or not that transport is available.\n */\nexport declare const availableTransports: any;\n"},{name:"@airgap/beacon-dapp/dist/esm/utils/block-explorer.d.ts",dts:"import { Network, NetworkType } from '@airgap/beacon-types';\nexport declare abstract class BlockExplorer {\n readonly rpcUrls: {\n [key in NetworkType]: string;\n };\n constructor(rpcUrls: {\n [key in NetworkType]: string;\n });\n protected getLinkForNetwork(network: Network): Promise;\n /**\n * Return a blockexplorer link for an address\n *\n * @param address The address to be opened\n * @param network The network that was used\n */\n abstract getAddressLink(address: string, network: Network): Promise;\n /**\n * Return a blockexplorer link for a transaction hash\n *\n * @param transactionId The hash of the transaction\n * @param network The network that was used\n */\n abstract getTransactionLink(transactionId: string, network: Network): Promise;\n}\n"},{name:"@airgap/beacon-dapp/dist/esm/utils/get-instance.d.ts",dts:"import { DAppClient, DAppClientOptions } from '..';\n/** Get a DAppClient instance. Will make sure only one dAppClient exists. After the first instance has been created, the config will be ignored, unless \"reset\" is set */\nexport declare const getDAppClientInstance: (config: DAppClientOptions, reset?: boolean) => DAppClient;\n"},{name:"@airgap/beacon-dapp/dist/esm/utils/shorten-string.d.ts",dts:"export declare const shortenString: (text: string) => string;\n"},{name:"@airgap/beacon-dapp/dist/esm/utils/tzkt-blockexplorer.d.ts",dts:"import { Network, NetworkType } from '@airgap/beacon-types';\nimport { BlockExplorer } from './block-explorer';\nexport declare class TzktBlockExplorer extends BlockExplorer {\n readonly rpcUrls: {\n [key in NetworkType]: string;\n };\n constructor(rpcUrls?: {\n [key in NetworkType]: string;\n });\n getAddressLink(address: string, network: Network): Promise;\n getTransactionLink(transactionId: string, network: Network): Promise;\n}\n"},{name:"@airgap/beacon-dapp/dist/esm/beacon-message-events.d.ts",dts:"import { BeaconEvent } from './events';\nimport { BeaconMessageType } from '@airgap/beacon-types';\nexport declare const messageEvents: {\n [key in BeaconMessageType]: {\n sent: BeaconEvent;\n success: BeaconEvent;\n error: BeaconEvent;\n };\n};\n"},{name:"@airgap/beacon-dapp/dist/esm/events.d.ts",dts:'import { BlockExplorer, AlertButton } from \'@airgap/beacon-dapp\';\nimport { ExtendedPostMessagePairingResponse, PostMessagePairingRequest, ExtendedP2PPairingResponse, P2PPairingRequest, AccountInfo, ErrorResponse, PermissionResponseOutput, OperationResponseOutput, BroadcastResponseOutput, SignPayloadResponseOutput, Network, ConnectionContext, NetworkType, AcknowledgeResponse, WalletInfo, ExtendedWalletConnectPairingResponse, WalletConnectPairingRequest, AnalyticsInterface } from \'@airgap/beacon-types\';\nimport { Transport } from \'@airgap/beacon-core\';\nimport { ProofOfEventChallengeResponseOutput } from \'@airgap/beacon-types\';\n/**\n * The different events that can be emitted by the beacon-sdk\n */\nexport declare enum BeaconEvent {\n PERMISSION_REQUEST_SENT = "PERMISSION_REQUEST_SENT",\n PERMISSION_REQUEST_SUCCESS = "PERMISSION_REQUEST_SUCCESS",\n PERMISSION_REQUEST_ERROR = "PERMISSION_REQUEST_ERROR",\n PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT = "PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT",\n PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS = "PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS",\n PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR = "PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR",\n OPERATION_REQUEST_SENT = "OPERATION_REQUEST_SENT",\n OPERATION_REQUEST_SUCCESS = "OPERATION_REQUEST_SUCCESS",\n OPERATION_REQUEST_ERROR = "OPERATION_REQUEST_ERROR",\n SIGN_REQUEST_SENT = "SIGN_REQUEST_SENT",\n SIGN_REQUEST_SUCCESS = "SIGN_REQUEST_SUCCESS",\n SIGN_REQUEST_ERROR = "SIGN_REQUEST_ERROR",\n BROADCAST_REQUEST_SENT = "BROADCAST_REQUEST_SENT",\n BROADCAST_REQUEST_SUCCESS = "BROADCAST_REQUEST_SUCCESS",\n BROADCAST_REQUEST_ERROR = "BROADCAST_REQUEST_ERROR",\n ACKNOWLEDGE_RECEIVED = "ACKNOWLEDGE_RECEIVED",\n LOCAL_RATE_LIMIT_REACHED = "LOCAL_RATE_LIMIT_REACHED",\n NO_PERMISSIONS = "NO_PERMISSIONS",\n ACTIVE_ACCOUNT_SET = "ACTIVE_ACCOUNT_SET",\n ACTIVE_TRANSPORT_SET = "ACTIVE_TRANSPORT_SET",\n SHOW_PREPARE = "SHOW_PREPARE",\n HIDE_UI = "HIDE_UI",\n INVALID_ACTIVE_ACCOUNT_STATE = "INVALID_ACTIVE_ACCOUNT_STATE",\n PAIR_INIT = "PAIR_INIT",\n PAIR_SUCCESS = "PAIR_SUCCESS",\n CHANNEL_CLOSED = "CHANNEL_CLOSED",\n INTERNAL_ERROR = "INTERNAL_ERROR",\n UNKNOWN = "UNKNOWN"\n}\nexport interface ExtraInfo {\n resetCallback?(): Promise;\n}\ninterface RequestSentInfo {\n extraInfo: ExtraInfo;\n walletInfo: WalletInfo;\n}\n/**\n * The type of the payload of the different BeaconEvents\n */\nexport interface BeaconEventType {\n [BeaconEvent.PERMISSION_REQUEST_SENT]: RequestSentInfo;\n [BeaconEvent.PERMISSION_REQUEST_SUCCESS]: {\n account: AccountInfo;\n output: PermissionResponseOutput;\n blockExplorer: BlockExplorer;\n connectionContext: ConnectionContext;\n walletInfo: WalletInfo;\n };\n [BeaconEvent.PERMISSION_REQUEST_ERROR]: {\n errorResponse: ErrorResponse;\n walletInfo: WalletInfo;\n };\n [BeaconEvent.PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT]: RequestSentInfo;\n [BeaconEvent.PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS]: {\n account: AccountInfo;\n output: ProofOfEventChallengeResponseOutput;\n blockExplorer: BlockExplorer;\n connectionContext: ConnectionContext;\n walletInfo: WalletInfo;\n };\n [BeaconEvent.PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR]: {\n errorResponse: ErrorResponse;\n walletInfo: WalletInfo;\n };\n [BeaconEvent.OPERATION_REQUEST_SENT]: RequestSentInfo;\n [BeaconEvent.OPERATION_REQUEST_SUCCESS]: {\n account: AccountInfo;\n output: OperationResponseOutput;\n blockExplorer: BlockExplorer;\n connectionContext: ConnectionContext;\n walletInfo: WalletInfo;\n };\n [BeaconEvent.OPERATION_REQUEST_ERROR]: {\n errorResponse: ErrorResponse;\n walletInfo: WalletInfo;\n errorMessages: Record>;\n };\n [BeaconEvent.SIGN_REQUEST_SENT]: RequestSentInfo;\n [BeaconEvent.SIGN_REQUEST_SUCCESS]: {\n output: SignPayloadResponseOutput;\n connectionContext: ConnectionContext;\n walletInfo: WalletInfo;\n };\n [BeaconEvent.SIGN_REQUEST_ERROR]: {\n errorResponse: ErrorResponse;\n walletInfo: WalletInfo;\n };\n [BeaconEvent.BROADCAST_REQUEST_SENT]: RequestSentInfo;\n [BeaconEvent.BROADCAST_REQUEST_SUCCESS]: {\n network: Network;\n output: BroadcastResponseOutput;\n blockExplorer: BlockExplorer;\n connectionContext: ConnectionContext;\n walletInfo: WalletInfo;\n };\n [BeaconEvent.BROADCAST_REQUEST_ERROR]: {\n errorResponse: ErrorResponse;\n walletInfo: WalletInfo;\n };\n [BeaconEvent.ACKNOWLEDGE_RECEIVED]: {\n message: AcknowledgeResponse;\n extraInfo: ExtraInfo;\n walletInfo: WalletInfo;\n };\n [BeaconEvent.LOCAL_RATE_LIMIT_REACHED]: undefined;\n [BeaconEvent.NO_PERMISSIONS]: undefined;\n [BeaconEvent.ACTIVE_ACCOUNT_SET]: AccountInfo;\n [BeaconEvent.ACTIVE_TRANSPORT_SET]: Transport;\n [BeaconEvent.INVALID_ACTIVE_ACCOUNT_STATE]: undefined;\n [BeaconEvent.SHOW_PREPARE]: {\n walletInfo?: WalletInfo;\n };\n [BeaconEvent.HIDE_UI]: (\'alert\' | \'toast\')[] | undefined;\n [BeaconEvent.PAIR_INIT]: {\n p2pPeerInfo: () => Promise;\n postmessagePeerInfo: () => Promise;\n walletConnectPeerInfo: () => Promise;\n networkType: NetworkType;\n abortedHandler?(): void;\n disclaimerText?: string;\n analytics: AnalyticsInterface;\n featuredWallets?: string[];\n };\n [BeaconEvent.PAIR_SUCCESS]: ExtendedPostMessagePairingResponse | ExtendedP2PPairingResponse | ExtendedWalletConnectPairingResponse;\n [BeaconEvent.CHANNEL_CLOSED]: string;\n [BeaconEvent.INTERNAL_ERROR]: {\n text: string;\n buttons?: AlertButton[];\n };\n [BeaconEvent.UNKNOWN]: undefined;\n}\nexport type BeaconEventHandlerFunction = (data: T, eventCallback?: AlertButton[]) => void | Promise;\n/**\n * The default event handlers\n */\nexport declare const defaultEventCallbacks: {\n [key in BeaconEvent]: BeaconEventHandlerFunction;\n};\n/**\n * @internalapi\n *\n * Handles beacon events\n */\nexport declare class BeaconEventHandler {\n private readonly callbackMap;\n constructor(eventsToOverride?: {\n [key in BeaconEvent]?: {\n handler: BeaconEventHandlerFunction;\n };\n }, overrideAll?: boolean);\n /**\n * A method to subscribe to a specific beacon event and register a callback\n *\n * @param event The event being emitted\n * @param eventCallback The callback that will be invoked\n */\n on(event: K, eventCallback: BeaconEventHandlerFunction): Promise;\n /**\n * Emit a beacon event\n *\n * @param event The event being emitted\n * @param data The data to be emit\n */\n emit(event: K, data?: BeaconEventType[K], eventCallback?: AlertButton[]): Promise;\n /**\n * Override beacon event default callbacks. This can be used to disable default alert/toast behaviour\n *\n * @param eventsToOverride An object with the events to override\n */\n private overrideDefaults;\n /**\n * Set all event callbacks to a specific handler.\n */\n private setAllHandlers;\n}\nexport {};\n'},{name:"@airgap/beacon-dapp/dist/esm/index.d.ts",dts:"export * from '@airgap/beacon-core';\nexport * from '@airgap/beacon-transport-matrix';\nexport * from '@airgap/beacon-transport-postmessage';\nexport * from '@airgap/beacon-types';\nexport * from '@airgap/beacon-utils';\nexport * from '@airgap/beacon-ui';\nimport { DAppClient } from './dapp-client/DAppClient';\nimport { DAppClientOptions } from './dapp-client/DAppClientOptions';\nimport { BeaconEvent, BeaconEventHandler, defaultEventCallbacks } from './events';\nimport { BlockExplorer } from './utils/block-explorer';\nimport { TzktBlockExplorer } from './utils/tzkt-blockexplorer';\nimport { getDAppClientInstance } from './utils/get-instance';\nexport { DAppClient, DAppClientOptions, getDAppClientInstance };\nexport { BeaconEvent, BeaconEventHandler, defaultEventCallbacks };\nexport { BlockExplorer, TzktBlockExplorer, TzktBlockExplorer as TezblockBlockExplorer };\n"},{name:"@airgap/beacon-sdk/index.d.ts",dts:"export * from '@airgap/beacon-blockchain-substrate';\nexport * from '@airgap/beacon-blockchain-tezos';\nexport * from '@airgap/beacon-core';\nexport * from '@airgap/beacon-dapp';\nexport * from '@airgap/beacon-transport-matrix';\nexport * from '@airgap/beacon-transport-postmessage';\nexport * from '@airgap/beacon-transport-walletconnect';\nexport * from '@airgap/beacon-types';\nexport * from '@airgap/beacon-utils';\nexport * from '@airgap/beacon-wallet';\n"},{name:"@airgap/beacon-transport-matrix/communication-client/P2PCommunicationClient.d.ts",dts:"import { MatrixClientEvent, MatrixClientEventType, MatrixClientEventMessageContent } from '../matrix-client/models/MatrixClientEvent';\nimport { Storage, P2PPairingRequest, ExtendedP2PPairingResponse, P2PPairingResponse, NodeDistributions } from '@airgap/beacon-types';\nimport { CommunicationClient } from '@airgap/beacon-core';\nimport { ExposedPromise } from '@airgap/beacon-utils';\nimport { KeyPair } from '@stablelib/ed25519';\ninterface BeaconInfoResponse {\n region: string;\n known_servers: string[];\n timestamp: number;\n}\n/**\n * @internalapi\n */\nexport declare class P2PCommunicationClient extends CommunicationClient {\n private readonly name;\n readonly replicationCount: number;\n private readonly storage;\n private readonly iconUrl?;\n private readonly appUrl?;\n private client;\n private initialEvent;\n private initialListener;\n private selectedRegion?;\n private readonly ENABLED_RELAY_SERVERS;\n relayServer: ExposedPromise<{\n server: string;\n timestamp: number;\n localTimestamp: number;\n }> | undefined;\n private readonly activeListeners;\n private readonly ignoredRooms;\n private loginCounter;\n constructor(name: string, keyPair: KeyPair, replicationCount: number, storage: Storage, matrixNodes?: NodeDistributions, iconUrl?: string | undefined, appUrl?: string | undefined);\n getPairingRequestInfo(): Promise;\n getPairingResponseInfo(request: P2PPairingRequest): Promise;\n /**\n * To get the fastest region, we can't simply do one request, because sometimes,\n * DNS and SSL handshakes make \"faster\" connections slower. So we need to do 2 requests\n * and check which request was the fastest after 1s.\n */\n findBestRegionAndGetServer(): Promise<{\n server: string;\n timestamp: number;\n } | undefined>;\n getRelayServer(): Promise<{\n server: string;\n timestamp: number;\n }>;\n getBeaconInfo(server: string): Promise;\n tryJoinRooms(roomId: string, retry?: number): Promise;\n start(): Promise;\n stop(): Promise;\n reset(): Promise;\n listenForEncryptedMessage(senderPublicKey: string, messageCallback: (message: string) => void): Promise;\n unsubscribeFromEncryptedMessage(senderPublicKey: string): Promise;\n unsubscribeFromEncryptedMessages(): Promise;\n sendMessage(message: string, peer: P2PPairingRequest | ExtendedP2PPairingResponse): Promise;\n updatePeerRoom(sender: string, roomId: string): Promise;\n deleteRoomIdFromRooms(roomId: string): Promise;\n listenForChannelOpening(messageCallback: (pairingResponse: ExtendedP2PPairingResponse) => void): Promise;\n waitForJoin(roomId: string, retry?: number): Promise;\n sendPairingResponse(pairingRequest: P2PPairingRequest): Promise;\n isTextMessage(content: MatrixClientEventMessageContent): content is MatrixClientEventMessageContent;\n updateRelayServer(sender: string): Promise;\n isChannelOpenMessage(content: MatrixClientEventMessageContent): Promise;\n isSender(event: MatrixClientEvent, senderPublicKey: string): Promise;\n private getRelevantRoom;\n private getRelevantJoinedRoom;\n}\nexport {};\n"},{name:"@airgap/beacon-transport-matrix/matrix-client/models/api/MatrixEventSend.d.ts",dts:"export interface MatrixEventSendRequest {\n content: any;\n}\nexport interface MatrixEventSendResponse {\n type?: 'event_send';\n event_id: string;\n}\n"},{name:"@airgap/beacon-transport-matrix/matrix-client/models/api/MatrixLogin.d.ts",dts:"export interface MatrixLoginRequest {\n type: 'm.login.password';\n identifier: {\n type: 'm.id.user';\n user: string;\n };\n password: string;\n device_id?: string;\n}\nexport interface MatrixLoginResponse {\n type?: 'login';\n user_id: string;\n device_id: string;\n access_token: string;\n}\n"},{name:"@airgap/beacon-transport-matrix/matrix-client/models/api/MatrixRequest.d.ts",dts:"import { MatrixLoginRequest, MatrixLoginResponse } from './MatrixLogin';\nimport { MatrixRoomCreateRequest, MatrixRoomCreateResponse } from './MatrixRoomCreate';\nimport { MatrixRoomInviteRequest, MatrixRoomInviteResponse } from './MatrixRoomInvite';\nimport { MatrixRoomJoinRequest, MatrixRoomJoinResponse } from './MatrixRoomJoin';\nimport { MatrixEventSendRequest, MatrixEventSendResponse } from './MatrixEventSend';\nimport { MatrixSyncResponse, MatrixSyncRequestParams } from './MatrixSync';\nexport type MatrixRequest = T extends MatrixLoginResponse ? MatrixLoginRequest : T extends MatrixRoomCreateResponse ? MatrixRoomCreateRequest : T extends MatrixRoomInviteResponse ? MatrixRoomInviteRequest : T extends MatrixRoomJoinResponse ? MatrixRoomJoinRequest : T extends MatrixEventSendResponse ? MatrixEventSendRequest : never;\nexport type MatrixRequestParams = T extends MatrixSyncResponse ? MatrixSyncRequestParams : never;\n"},{name:"@airgap/beacon-transport-matrix/matrix-client/models/api/MatrixRoomCreate.d.ts",dts:"export interface MatrixRoomCreateRequest {\n room_version?: '5';\n visibility?: 'public' | 'private';\n room_alias_name?: string;\n name?: string;\n topic?: string;\n invite?: string[];\n preset?: 'private_chat' | 'public_chat' | 'trusted_private_chat';\n is_direct?: boolean;\n}\nexport interface MatrixRoomCreateResponse {\n type?: 'room_create';\n room_id: string;\n}\n"},{name:"@airgap/beacon-transport-matrix/matrix-client/models/api/MatrixRoomInvite.d.ts",dts:"export interface MatrixRoomInviteRequest {\n user_id: string;\n}\nexport interface MatrixRoomInviteResponse {\n type?: 'room_invite';\n}\n"},{name:"@airgap/beacon-transport-matrix/matrix-client/models/api/MatrixRoomJoin.d.ts",dts:"export interface MatrixRoomJoinRequest {\n}\nexport interface MatrixRoomJoinResponse {\n type?: 'room_join';\n room_id: string;\n}\n"},{name:"@airgap/beacon-transport-matrix/matrix-client/models/api/MatrixSync.d.ts",dts:"import { MatrixStateEvent } from '../MatrixStateEvent';\nexport interface MatrixSyncJoinedRoom {\n state: {\n events: MatrixStateEvent[];\n };\n timeline: {\n events: MatrixStateEvent[];\n };\n}\nexport interface MatrixSyncInvitedRoom {\n invite_state: {\n events: MatrixStateEvent[];\n };\n}\nexport interface MatrixSyncLeftRoom {\n state: {\n events: MatrixStateEvent[];\n };\n timeline: {\n events: MatrixStateEvent[];\n };\n}\nexport interface MatrixSyncRooms {\n join?: {\n [key: string]: MatrixSyncJoinedRoom;\n };\n invite?: {\n [key: string]: MatrixSyncInvitedRoom;\n };\n leave?: {\n [key: string]: MatrixSyncLeftRoom;\n };\n}\nexport interface MatrixSyncRequestParams {\n timeout?: number;\n since?: string;\n}\nexport interface MatrixSyncResponse {\n type?: 'sync';\n next_batch: string;\n rooms?: MatrixSyncRooms;\n}\n"},{name:"@airgap/beacon-transport-matrix/matrix-client/models/MatrixClientEvent.d.ts",dts:'import { MatrixMessage } from \'./MatrixMessage\';\nexport declare enum MatrixClientEventType {\n INVITE = "invite",\n MESSAGE = "message"\n}\nexport type MatrixClientEventContent = T extends MatrixClientEventType.INVITE ? MatrixClientEventInviteContent : T extends MatrixClientEventType.MESSAGE ? MatrixClientEventMessageContent : never;\nexport interface MatrixClientEventInviteContent {\n roomId: string;\n members: string[];\n}\nexport interface MatrixClientEventMessageContent {\n roomId: string;\n message: MatrixMessage;\n}\nexport interface MatrixClientEvent {\n type: T;\n content: MatrixClientEventContent;\n timestamp?: number;\n}\n'},{name:"@airgap/beacon-transport-matrix/matrix-client/models/MatrixMessage.d.ts",dts:"import { MatrixStateEvent } from './MatrixStateEvent';\nexport declare enum MatrixMessageType {\n TEXT = \"m.text\"\n}\nexport declare class MatrixMessage {\n readonly type: MatrixMessageType;\n readonly sender: string;\n readonly content: T;\n readonly timestamp: number;\n /**\n * Construct a message from a message event\n *\n * @param event\n */\n static from(event: MatrixStateEvent): MatrixMessage | undefined;\n private constructor();\n}\n"},{name:"@airgap/beacon-transport-matrix/matrix-client/models/MatrixRoom.d.ts",dts:"import { MatrixSyncRooms } from './api/MatrixSync';\nimport { MatrixMessage } from './MatrixMessage';\nexport declare enum MatrixRoomStatus {\n UNKNOWN = 0,\n JOINED = 1,\n INVITED = 2,\n LEFT = 3\n}\nexport declare class MatrixRoom {\n readonly id: string;\n readonly status: MatrixRoomStatus;\n readonly members: string[];\n messages: MatrixMessage[];\n /**\n * Reconstruct rooms from a sync response\n *\n * @param roomSync\n */\n static fromSync(roomSync?: MatrixSyncRooms): MatrixRoom[];\n /**\n * Reconstruct a room from an ID or object\n *\n * @param roomOrId\n * @param status\n */\n static from(roomOrId: string | MatrixRoom, status?: MatrixRoomStatus): MatrixRoom;\n /**\n * Merge new and old state and remove duplicates\n *\n * @param newState\n * @param previousState\n */\n static merge(newState: MatrixRoom, previousState?: MatrixRoom): MatrixRoom;\n /**\n * Create a room from a join\n *\n * @param id\n * @param joined\n */\n private static fromJoined;\n /**\n * Create a room from an invite\n *\n * @param id\n * @param invited\n */\n private static fromInvited;\n /**\n * Create a room from a leave\n *\n * @param id\n * @param left\n */\n private static fromLeft;\n /**\n * Extract members from an event\n *\n * @param events\n */\n private static getMembersFromEvents;\n /**\n * Extract messages from an event\n *\n * @param events\n */\n private static getMessagesFromEvents;\n /**\n * Get unique events and remove duplicates\n *\n * @param events\n */\n private static getUniqueEvents;\n private constructor();\n}\n"},{name:"@airgap/beacon-transport-matrix/matrix-client/models/MatrixStateEvent.d.ts",dts:"import { MatrixMessageType } from './MatrixMessage';\nexport interface MatrixStateEventMessageText extends MatrixStateEventMessage {\n type: 'm.room.message';\n content: {\n msgtype: MatrixMessageType.TEXT;\n body: string;\n };\n}\nexport interface MatrixStateEventMessageContent {\n msgtype: string;\n body: any;\n [key: string]: any;\n}\nexport interface MatrixStateEventMessage extends MatrixStateEvent {\n type: 'm.room.message';\n content: MatrixStateEventMessageContent;\n}\nexport interface MatrixStateEvent {\n type: string;\n sender: string;\n content: unknown;\n event_id?: string;\n origin_server_ts: number;\n}\n"},{name:"@airgap/beacon-transport-matrix/matrix-client/services/MatrixEventService.d.ts",dts:"import { MatrixHttpClient } from '../MatrixHttpClient';\nimport { MatrixEventSendResponse } from '../models/api/MatrixEventSend';\nimport { MatrixSyncResponse } from '../models/api/MatrixSync';\nimport { MatrixStateEventMessageContent } from '../models/MatrixStateEvent';\ninterface MatrixScheduledEvent {\n accessToken: string;\n roomId: string;\n type: MatrixEventType;\n content: any;\n txnId: string;\n onSuccess(response: T): void;\n onError(error: unknown): void;\n}\ntype MatrixEventType = 'm.room.message';\nexport interface MatrixSyncOptions {\n syncToken?: string;\n pollingTimeout?: number;\n}\n/**\n * A service to help with matrix event management\n */\nexport declare class MatrixEventService {\n private readonly httpClient;\n private readonly cachedPromises;\n constructor(httpClient: MatrixHttpClient);\n /**\n * Get the latest state from the matrix node\n *\n * @param accessToken\n * @param options\n */\n sync(accessToken: string, options?: MatrixSyncOptions): Promise;\n /**\n * Send a message to a room\n *\n * @param accessToken\n * @param room\n * @param content\n * @param txnId\n */\n sendMessage(accessToken: string, roomId: string, content: MatrixStateEventMessageContent, txnId: string): Promise;\n /**\n * Schedules an event to be sent to the node\n *\n * @param event\n */\n scheduleEvent(event: MatrixScheduledEvent): void;\n /**\n * Send an event to the matrix node\n *\n * @param scheduledEvent\n */\n sendEvent(scheduledEvent: MatrixScheduledEvent): Promise;\n /**\n * Check the cache when interacting with the Matrix node, if there is an already ongoing call for the specified key, return its promise instead of duplicating the call.\n *\n * @param key\n * @param promiseProvider\n */\n private withCache;\n}\nexport {};\n"},{name:"@airgap/beacon-transport-matrix/matrix-client/services/MatrixRoomService.d.ts",dts:"import { MatrixHttpClient } from '../MatrixHttpClient';\nimport { MatrixRoom } from '../models/MatrixRoom';\nimport { MatrixRoomCreateRequest, MatrixRoomCreateResponse } from '../models/api/MatrixRoomCreate';\nimport { MatrixRoomInviteResponse } from '../models/api/MatrixRoomInvite';\nimport { MatrixRoomJoinResponse } from '../models/api/MatrixRoomJoin';\n/**\n * A service to help with matrix room management\n */\nexport declare class MatrixRoomService {\n private readonly httpClient;\n constructor(httpClient: MatrixHttpClient);\n /**\n * Create a room\n *\n * @param accessToken\n * @param config\n */\n createRoom(accessToken: string, config?: MatrixRoomCreateRequest): Promise;\n /**\n * Invite a user to a room\n *\n * @param accessToken\n * @param user\n * @param room\n */\n inviteToRoom(accessToken: string, user: string, room: MatrixRoom): Promise;\n /**\n * Join a specific room\n *\n * @param accessToken\n * @param room\n */\n joinRoom(accessToken: string, room: MatrixRoom): Promise;\n /**\n * Get all joined rooms\n *\n * @param accessToken\n */\n getJoinedRooms(accessToken: string): Promise;\n}\n"},{name:"@airgap/beacon-transport-matrix/matrix-client/services/MatrixUserService.d.ts",dts:"import { MatrixHttpClient } from '../MatrixHttpClient';\nimport { MatrixLoginResponse } from '../models/api/MatrixLogin';\nexport declare class MatrixUserService {\n private readonly httpClient;\n constructor(httpClient: MatrixHttpClient);\n /**\n * Log in to the matrix node with username and password\n *\n * @param user\n * @param password\n * @param deviceId\n */\n login(user: string, password: string, deviceId: string): Promise;\n}\n"},{name:"@airgap/beacon-transport-matrix/matrix-client/utils/events.d.ts",dts:"import { MatrixStateEvent, MatrixStateEventMessageText } from '../models/MatrixStateEvent';\n/**\n * Check if an event is a create event\n *\n * @param event MatrixStateEvent\n */\nexport declare const isCreateEvent: (event: MatrixStateEvent) => boolean;\n/**\n * Check if an event is a join event\n *\n * @param event MatrixStateEvent\n */\nexport declare const isJoinEvent: (event: MatrixStateEvent) => boolean;\n/**\n * Check if an event is a message event\n *\n * @param event MatrixStateEvent\n */\nexport declare const isMessageEvent: (event: MatrixStateEvent) => boolean;\n/**\n * Check if an event is a text message event\n *\n * @param event MatrixStateEvent\n */\nexport declare const isTextMessageEvent: (event: MatrixStateEvent) => event is MatrixStateEventMessageText;\n"},{name:"@airgap/beacon-transport-matrix/matrix-client/EventEmitter.d.ts",dts:"type Listener = (...args: any[]) => void;\nexport declare class EventEmitter {\n private readonly events;\n on(event: string, listener: Listener): () => void;\n removeListener(event: string, listener?: Listener): void;\n removeAllListeners(): void;\n emit(event: string, ...args: any[]): void;\n once(event: string, listener: Listener): () => void;\n}\nexport {};\n"},{name:"@airgap/beacon-transport-matrix/matrix-client/MatrixClient.d.ts",dts:"import { Storage } from '@airgap/beacon-types';\nimport { MatrixClientStore } from './MatrixClientStore';\nimport { MatrixHttpClient } from './MatrixHttpClient';\nimport { MatrixRoom } from './models/MatrixRoom';\nimport { MatrixRoomService } from './services/MatrixRoomService';\nimport { MatrixUserService } from './services/MatrixUserService';\nimport { MatrixEventService } from './services/MatrixEventService';\nimport { MatrixClientEventEmitter } from './MatrixClientEventEmitter';\nimport { MatrixClientEventType, MatrixClientEvent } from './models/MatrixClientEvent';\ninterface MatrixClientOptions {\n baseUrl: string;\n storage: Storage;\n}\ninterface MatrixLoginConfig {\n id: string;\n password: string;\n deviceId: string;\n}\n/**\n * The matrix client used to connect to the matrix network\n */\nexport declare class MatrixClient {\n private readonly store;\n private readonly eventEmitter;\n private readonly userService;\n private readonly roomService;\n private readonly eventService;\n private readonly httpClient;\n private isActive;\n private _isReady;\n constructor(store: MatrixClientStore, eventEmitter: MatrixClientEventEmitter, userService: MatrixUserService, roomService: MatrixRoomService, eventService: MatrixEventService, httpClient: MatrixHttpClient);\n /**\n * Create a matrix client based on the options provided\n *\n * @param config\n */\n static create(config: MatrixClientOptions): MatrixClient;\n /**\n * Return all the rooms we are currently part of\n */\n get joinedRooms(): Promise;\n /**\n * Return all the rooms to which we have received invitations\n */\n get invitedRooms(): Promise;\n /**\n * Return all the rooms that we left\n */\n get leftRooms(): Promise;\n /**\n * Initiate the connection to the matrix node and log in\n *\n * @param user\n */\n start(user: MatrixLoginConfig): Promise;\n isConnected(): Promise;\n /**\n * Stop all running requests\n */\n stop(): Promise;\n /**\n * Subscribe to new matrix events\n *\n * @param event\n * @param listener\n */\n subscribe(event: T, listener: (event: MatrixClientEvent) => void): void;\n /**\n * Unsubscribe from matrix events\n *\n * @param event\n * @param listener\n */\n unsubscribe(event: MatrixClientEventType, listener: (event: MatrixClientEvent) => void): void;\n /**\n * Unsubscribe from all matrix events of this type\n *\n * @param event\n * @param listener\n */\n unsubscribeAll(event: MatrixClientEventType): void;\n getRoomById(id: string): Promise;\n /**\n * Create a private room with the supplied members\n *\n * @param members Members that will be in the room\n */\n createTrustedPrivateRoom(...members: string[]): Promise;\n /**\n * Invite user to rooms\n *\n * @param user The user to be invited\n * @param roomsOrIds The rooms the user will be invited to\n */\n inviteToRooms(user: string, ...roomsOrIds: string[] | MatrixRoom[]): Promise;\n /**\n * Join rooms\n *\n * @param roomsOrIds\n */\n joinRooms(...roomsOrIds: string[] | MatrixRoom[]): Promise;\n /**\n * Send a text message\n *\n * @param roomOrId\n * @param message\n */\n sendTextMessage(roomId: string, message: string): Promise;\n /**\n * Poll the server to get the latest data and get notified of changes\n *\n * @param interval\n * @param onSyncSuccess\n * @param onSyncError\n */\n private poll;\n /**\n * Get state from server\n */\n private sync;\n /**\n * A helper method that makes sure an access token is provided\n *\n * @param name\n * @param action\n */\n private requiresAuthorization;\n /**\n * Create a transaction ID\n */\n private createTxnId;\n}\nexport {};\n"},{name:"@airgap/beacon-transport-matrix/matrix-client/MatrixClientEventEmitter.d.ts",dts:"import { EventEmitter } from './EventEmitter';\nimport { MatrixStateStore, MatrixStateUpdate } from './MatrixClientStore';\nexport declare class MatrixClientEventEmitter extends EventEmitter {\n private readonly eventEmitProviders;\n /**\n * This method is called every time the state is changed\n *\n * @param _oldState\n * @param _newState\n * @param stateChange\n */\n onStateChanged(_oldState: MatrixStateStore, _newState: MatrixStateStore, stateChange: Partial): void;\n /**\n * Emit the message if we have listeners registered for that type\n *\n * @param eventType\n * @param object\n */\n private emitIfEvent;\n /**\n * Emit a client event\n *\n * @param eventType\n * @param content\n */\n private emitClientEvent;\n /**\n * Check if event is an invite\n *\n * @param stateChange\n */\n private isInvite;\n /**\n * Emit an invite\n *\n * @param eventType\n * @param stateChange\n */\n private emitInvite;\n /**\n * Check if event is a message\n *\n * @param stateChange\n */\n private isMessage;\n /**\n * Emit an event to all rooms\n *\n * @param eventType\n * @param stateChange\n */\n private emitMessage;\n}\n"},{name:"@airgap/beacon-transport-matrix/matrix-client/MatrixClientStore.d.ts",dts:"import { MatrixRoom } from './models/MatrixRoom';\nimport { Storage } from '@airgap/beacon-types';\ntype OnStateChangedListener = (oldState: MatrixStateStore, newState: MatrixStateStore, stateChange: Partial) => void;\nexport interface MatrixState {\n isRunning: boolean;\n userId: string | undefined;\n deviceId: string | undefined;\n txnNo: number;\n accessToken: string | undefined;\n syncToken: string | undefined;\n pollingTimeout: number | undefined;\n pollingRetries: number;\n rooms: MatrixRoom[] | Record;\n}\nexport interface MatrixStateStore extends MatrixState {\n rooms: Record;\n}\nexport interface MatrixStateUpdate extends MatrixState {\n rooms: MatrixRoom[];\n}\n/**\n * The class managing the local state of matrix\n */\nexport declare class MatrixClientStore {\n private readonly storage;\n /**\n * The state of the matrix client\n */\n private state;\n /**\n * Listeners that will be called when the state changes\n */\n private readonly onStateChangedListeners;\n /**\n * A promise that resolves once the client is ready\n */\n private waitReadyPromise;\n constructor(storage: Storage);\n /**\n * Get an item from the state\n *\n * @param key\n */\n get(key: T): MatrixStateStore[T];\n /**\n * Get the room from an ID or room instance\n *\n * @param roomOrId\n */\n getRoom(roomOrId: string | MatrixRoom): MatrixRoom;\n /**\n * Update the state with a partial state\n *\n * @param stateUpdate\n */\n update(stateUpdate: Partial): Promise;\n /**\n * Register listeners that are called once the state has changed\n *\n * @param listener\n * @param subscribed\n */\n onStateChanged(listener: OnStateChangedListener, ...subscribed: (keyof MatrixState)[]): void;\n /**\n * A promise that resolves once the client is ready\n */\n private waitReady;\n /**\n * Read state from storage\n */\n private initFromStorage;\n /**\n * Prepare data before persisting it in storage\n *\n * @param toStore\n */\n private prepareData;\n /**\n * Persist state in storage\n *\n * @param stateUpdate\n */\n private updateStorage;\n /**\n * Set the state\n *\n * @param partialState\n */\n private setState;\n /**\n * Merge room records and eliminate duplicates\n *\n * @param oldRooms\n * @param _newRooms\n */\n private mergeRooms;\n /**\n * Notify listeners of state changes\n *\n * @param oldState\n * @param newState\n * @param stateChange\n */\n private notifyListeners;\n}\nexport {};\n"},{name:"@airgap/beacon-transport-matrix/matrix-client/MatrixHttpClient.d.ts",dts:"import { MatrixRequest, MatrixRequestParams } from './models/api/MatrixRequest';\ninterface HttpOptions {\n accessToken?: string;\n}\n/**\n * Handling the HTTP connection to the matrix synapse node\n */\nexport declare class MatrixHttpClient {\n private readonly baseUrl;\n private readonly cancelTokenSource;\n constructor(baseUrl: string);\n /**\n * Get data from the synapse node\n *\n * @param endpoint\n * @param options\n */\n get(endpoint: string, params?: MatrixRequestParams, options?: HttpOptions): Promise;\n /**\n * Post data to the synapse node\n *\n * @param endpoint\n * @param body\n * @param options\n * @param params\n */\n post(endpoint: string, body: MatrixRequest, options?: HttpOptions, params?: MatrixRequestParams): Promise;\n /**\n * Put data to the synapse node\n *\n * @param endpoint\n * @param body\n * @param options\n * @param params\n */\n put(endpoint: string, body: MatrixRequest, options?: HttpOptions, params?: MatrixRequestParams): Promise;\n cancelAllRequests(): Promise;\n /**\n * Send a request to the synapse node\n *\n * @param method\n * @param endpoint\n * @param config\n * @param requestParams\n * @param data\n */\n private send;\n /**\n * Get the headers based on the options object\n *\n * @param options\n */\n private getHeaders;\n /**\n * Get parameters\n *\n * @param _params\n */\n private getParams;\n /**\n * Construct API URL\n */\n private apiUrl;\n}\nexport {};\n"},{name:"@airgap/beacon-transport-matrix/P2PTransport.d.ts",dts:"import { Transport } from '@airgap/beacon-core';\nimport { ExtendedP2PPairingResponse, Storage, StorageKey, TransportType, P2PPairingRequest, NodeDistributions } from '@airgap/beacon-types';\nimport { P2PCommunicationClient } from '@airgap/beacon-transport-matrix';\nimport { KeyPair } from '@stablelib/ed25519';\n/**\n * @internalapi\n *\n *\n */\nexport declare class P2PTransport extends Transport {\n readonly type: TransportType;\n constructor(name: string, keyPair: KeyPair, storage: Storage, matrixNodes: NodeDistributions, storageKey: K, iconUrl?: string, appUrl?: string);\n static isAvailable(): Promise;\n connect(): Promise;\n disconnect(): Promise;\n startOpenChannelListener(): Promise;\n getPairingRequestInfo(): Promise;\n listen(publicKey: string): Promise;\n}\n"},{name:"@airgap/beacon-transport-matrix/index.d.ts",dts:"export { P2PCommunicationClient } from './communication-client/P2PCommunicationClient';\nexport { P2PTransport } from './P2PTransport';\n"},{name:"@airgap/beacon-transport-matrix/dist/esm/communication-client/P2PCommunicationClient.d.ts",dts:"import { MatrixClientEvent, MatrixClientEventType, MatrixClientEventMessageContent } from '../matrix-client/models/MatrixClientEvent';\nimport { Storage, P2PPairingRequest, ExtendedP2PPairingResponse, P2PPairingResponse, NodeDistributions } from '@airgap/beacon-types';\nimport { CommunicationClient } from '@airgap/beacon-core';\nimport { ExposedPromise } from '@airgap/beacon-utils';\nimport { KeyPair } from '@stablelib/ed25519';\ninterface BeaconInfoResponse {\n region: string;\n known_servers: string[];\n timestamp: number;\n}\n/**\n * @internalapi\n */\nexport declare class P2PCommunicationClient extends CommunicationClient {\n private readonly name;\n readonly replicationCount: number;\n private readonly storage;\n private readonly iconUrl?;\n private readonly appUrl?;\n private client;\n private initialEvent;\n private initialListener;\n private selectedRegion?;\n private readonly ENABLED_RELAY_SERVERS;\n relayServer: ExposedPromise<{\n server: string;\n timestamp: number;\n localTimestamp: number;\n }> | undefined;\n private readonly activeListeners;\n private readonly ignoredRooms;\n private loginCounter;\n constructor(name: string, keyPair: KeyPair, replicationCount: number, storage: Storage, matrixNodes?: NodeDistributions, iconUrl?: string | undefined, appUrl?: string | undefined);\n getPairingRequestInfo(): Promise;\n getPairingResponseInfo(request: P2PPairingRequest): Promise;\n /**\n * To get the fastest region, we can't simply do one request, because sometimes,\n * DNS and SSL handshakes make \"faster\" connections slower. So we need to do 2 requests\n * and check which request was the fastest after 1s.\n */\n findBestRegionAndGetServer(): Promise<{\n server: string;\n timestamp: number;\n } | undefined>;\n getRelayServer(): Promise<{\n server: string;\n timestamp: number;\n }>;\n getBeaconInfo(server: string): Promise;\n tryJoinRooms(roomId: string, retry?: number): Promise;\n start(): Promise;\n stop(): Promise;\n reset(): Promise;\n listenForEncryptedMessage(senderPublicKey: string, messageCallback: (message: string) => void): Promise;\n unsubscribeFromEncryptedMessage(senderPublicKey: string): Promise;\n unsubscribeFromEncryptedMessages(): Promise;\n sendMessage(message: string, peer: P2PPairingRequest | ExtendedP2PPairingResponse): Promise;\n updatePeerRoom(sender: string, roomId: string): Promise;\n deleteRoomIdFromRooms(roomId: string): Promise;\n listenForChannelOpening(messageCallback: (pairingResponse: ExtendedP2PPairingResponse) => void): Promise;\n waitForJoin(roomId: string, retry?: number): Promise;\n sendPairingResponse(pairingRequest: P2PPairingRequest): Promise;\n isTextMessage(content: MatrixClientEventMessageContent): content is MatrixClientEventMessageContent;\n updateRelayServer(sender: string): Promise;\n isChannelOpenMessage(content: MatrixClientEventMessageContent): Promise;\n isSender(event: MatrixClientEvent, senderPublicKey: string): Promise;\n private getRelevantRoom;\n private getRelevantJoinedRoom;\n}\nexport {};\n"},{name:"@airgap/beacon-transport-matrix/dist/esm/matrix-client/models/api/MatrixEventSend.d.ts",dts:"export interface MatrixEventSendRequest {\n content: any;\n}\nexport interface MatrixEventSendResponse {\n type?: 'event_send';\n event_id: string;\n}\n"},{name:"@airgap/beacon-transport-matrix/dist/esm/matrix-client/models/api/MatrixLogin.d.ts",dts:"export interface MatrixLoginRequest {\n type: 'm.login.password';\n identifier: {\n type: 'm.id.user';\n user: string;\n };\n password: string;\n device_id?: string;\n}\nexport interface MatrixLoginResponse {\n type?: 'login';\n user_id: string;\n device_id: string;\n access_token: string;\n}\n"},{name:"@airgap/beacon-transport-matrix/dist/esm/matrix-client/models/api/MatrixRequest.d.ts",dts:"import { MatrixLoginRequest, MatrixLoginResponse } from './MatrixLogin';\nimport { MatrixRoomCreateRequest, MatrixRoomCreateResponse } from './MatrixRoomCreate';\nimport { MatrixRoomInviteRequest, MatrixRoomInviteResponse } from './MatrixRoomInvite';\nimport { MatrixRoomJoinRequest, MatrixRoomJoinResponse } from './MatrixRoomJoin';\nimport { MatrixEventSendRequest, MatrixEventSendResponse } from './MatrixEventSend';\nimport { MatrixSyncResponse, MatrixSyncRequestParams } from './MatrixSync';\nexport type MatrixRequest = T extends MatrixLoginResponse ? MatrixLoginRequest : T extends MatrixRoomCreateResponse ? MatrixRoomCreateRequest : T extends MatrixRoomInviteResponse ? MatrixRoomInviteRequest : T extends MatrixRoomJoinResponse ? MatrixRoomJoinRequest : T extends MatrixEventSendResponse ? MatrixEventSendRequest : never;\nexport type MatrixRequestParams = T extends MatrixSyncResponse ? MatrixSyncRequestParams : never;\n"},{name:"@airgap/beacon-transport-matrix/dist/esm/matrix-client/models/api/MatrixRoomCreate.d.ts",dts:"export interface MatrixRoomCreateRequest {\n room_version?: '5';\n visibility?: 'public' | 'private';\n room_alias_name?: string;\n name?: string;\n topic?: string;\n invite?: string[];\n preset?: 'private_chat' | 'public_chat' | 'trusted_private_chat';\n is_direct?: boolean;\n}\nexport interface MatrixRoomCreateResponse {\n type?: 'room_create';\n room_id: string;\n}\n"},{name:"@airgap/beacon-transport-matrix/dist/esm/matrix-client/models/api/MatrixRoomInvite.d.ts",dts:"export interface MatrixRoomInviteRequest {\n user_id: string;\n}\nexport interface MatrixRoomInviteResponse {\n type?: 'room_invite';\n}\n"},{name:"@airgap/beacon-transport-matrix/dist/esm/matrix-client/models/api/MatrixRoomJoin.d.ts",dts:"export interface MatrixRoomJoinRequest {\n}\nexport interface MatrixRoomJoinResponse {\n type?: 'room_join';\n room_id: string;\n}\n"},{name:"@airgap/beacon-transport-matrix/dist/esm/matrix-client/models/api/MatrixSync.d.ts",dts:"import { MatrixStateEvent } from '../MatrixStateEvent';\nexport interface MatrixSyncJoinedRoom {\n state: {\n events: MatrixStateEvent[];\n };\n timeline: {\n events: MatrixStateEvent[];\n };\n}\nexport interface MatrixSyncInvitedRoom {\n invite_state: {\n events: MatrixStateEvent[];\n };\n}\nexport interface MatrixSyncLeftRoom {\n state: {\n events: MatrixStateEvent[];\n };\n timeline: {\n events: MatrixStateEvent[];\n };\n}\nexport interface MatrixSyncRooms {\n join?: {\n [key: string]: MatrixSyncJoinedRoom;\n };\n invite?: {\n [key: string]: MatrixSyncInvitedRoom;\n };\n leave?: {\n [key: string]: MatrixSyncLeftRoom;\n };\n}\nexport interface MatrixSyncRequestParams {\n timeout?: number;\n since?: string;\n}\nexport interface MatrixSyncResponse {\n type?: 'sync';\n next_batch: string;\n rooms?: MatrixSyncRooms;\n}\n"},{name:"@airgap/beacon-transport-matrix/dist/esm/matrix-client/models/MatrixClientEvent.d.ts",dts:'import { MatrixMessage } from \'./MatrixMessage\';\nexport declare enum MatrixClientEventType {\n INVITE = "invite",\n MESSAGE = "message"\n}\nexport type MatrixClientEventContent = T extends MatrixClientEventType.INVITE ? MatrixClientEventInviteContent : T extends MatrixClientEventType.MESSAGE ? MatrixClientEventMessageContent : never;\nexport interface MatrixClientEventInviteContent {\n roomId: string;\n members: string[];\n}\nexport interface MatrixClientEventMessageContent {\n roomId: string;\n message: MatrixMessage;\n}\nexport interface MatrixClientEvent {\n type: T;\n content: MatrixClientEventContent;\n timestamp?: number;\n}\n'},{name:"@airgap/beacon-transport-matrix/dist/esm/matrix-client/models/MatrixMessage.d.ts",dts:"import { MatrixStateEvent } from './MatrixStateEvent';\nexport declare enum MatrixMessageType {\n TEXT = \"m.text\"\n}\nexport declare class MatrixMessage {\n readonly type: MatrixMessageType;\n readonly sender: string;\n readonly content: T;\n readonly timestamp: number;\n /**\n * Construct a message from a message event\n *\n * @param event\n */\n static from(event: MatrixStateEvent): MatrixMessage | undefined;\n private constructor();\n}\n"},{name:"@airgap/beacon-transport-matrix/dist/esm/matrix-client/models/MatrixRoom.d.ts",dts:"import { MatrixSyncRooms } from './api/MatrixSync';\nimport { MatrixMessage } from './MatrixMessage';\nexport declare enum MatrixRoomStatus {\n UNKNOWN = 0,\n JOINED = 1,\n INVITED = 2,\n LEFT = 3\n}\nexport declare class MatrixRoom {\n readonly id: string;\n readonly status: MatrixRoomStatus;\n readonly members: string[];\n messages: MatrixMessage[];\n /**\n * Reconstruct rooms from a sync response\n *\n * @param roomSync\n */\n static fromSync(roomSync?: MatrixSyncRooms): MatrixRoom[];\n /**\n * Reconstruct a room from an ID or object\n *\n * @param roomOrId\n * @param status\n */\n static from(roomOrId: string | MatrixRoom, status?: MatrixRoomStatus): MatrixRoom;\n /**\n * Merge new and old state and remove duplicates\n *\n * @param newState\n * @param previousState\n */\n static merge(newState: MatrixRoom, previousState?: MatrixRoom): MatrixRoom;\n /**\n * Create a room from a join\n *\n * @param id\n * @param joined\n */\n private static fromJoined;\n /**\n * Create a room from an invite\n *\n * @param id\n * @param invited\n */\n private static fromInvited;\n /**\n * Create a room from a leave\n *\n * @param id\n * @param left\n */\n private static fromLeft;\n /**\n * Extract members from an event\n *\n * @param events\n */\n private static getMembersFromEvents;\n /**\n * Extract messages from an event\n *\n * @param events\n */\n private static getMessagesFromEvents;\n /**\n * Get unique events and remove duplicates\n *\n * @param events\n */\n private static getUniqueEvents;\n private constructor();\n}\n"},{name:"@airgap/beacon-transport-matrix/dist/esm/matrix-client/models/MatrixStateEvent.d.ts",dts:"import { MatrixMessageType } from './MatrixMessage';\nexport interface MatrixStateEventMessageText extends MatrixStateEventMessage {\n type: 'm.room.message';\n content: {\n msgtype: MatrixMessageType.TEXT;\n body: string;\n };\n}\nexport interface MatrixStateEventMessageContent {\n msgtype: string;\n body: any;\n [key: string]: any;\n}\nexport interface MatrixStateEventMessage extends MatrixStateEvent {\n type: 'm.room.message';\n content: MatrixStateEventMessageContent;\n}\nexport interface MatrixStateEvent {\n type: string;\n sender: string;\n content: unknown;\n event_id?: string;\n origin_server_ts: number;\n}\n"},{name:"@airgap/beacon-transport-matrix/dist/esm/matrix-client/services/MatrixEventService.d.ts",dts:"import { MatrixHttpClient } from '../MatrixHttpClient';\nimport { MatrixEventSendResponse } from '../models/api/MatrixEventSend';\nimport { MatrixSyncResponse } from '../models/api/MatrixSync';\nimport { MatrixStateEventMessageContent } from '../models/MatrixStateEvent';\ninterface MatrixScheduledEvent {\n accessToken: string;\n roomId: string;\n type: MatrixEventType;\n content: any;\n txnId: string;\n onSuccess(response: T): void;\n onError(error: unknown): void;\n}\ntype MatrixEventType = 'm.room.message';\nexport interface MatrixSyncOptions {\n syncToken?: string;\n pollingTimeout?: number;\n}\n/**\n * A service to help with matrix event management\n */\nexport declare class MatrixEventService {\n private readonly httpClient;\n private readonly cachedPromises;\n constructor(httpClient: MatrixHttpClient);\n /**\n * Get the latest state from the matrix node\n *\n * @param accessToken\n * @param options\n */\n sync(accessToken: string, options?: MatrixSyncOptions): Promise;\n /**\n * Send a message to a room\n *\n * @param accessToken\n * @param room\n * @param content\n * @param txnId\n */\n sendMessage(accessToken: string, roomId: string, content: MatrixStateEventMessageContent, txnId: string): Promise;\n /**\n * Schedules an event to be sent to the node\n *\n * @param event\n */\n scheduleEvent(event: MatrixScheduledEvent): void;\n /**\n * Send an event to the matrix node\n *\n * @param scheduledEvent\n */\n sendEvent(scheduledEvent: MatrixScheduledEvent): Promise;\n /**\n * Check the cache when interacting with the Matrix node, if there is an already ongoing call for the specified key, return its promise instead of duplicating the call.\n *\n * @param key\n * @param promiseProvider\n */\n private withCache;\n}\nexport {};\n"},{name:"@airgap/beacon-transport-matrix/dist/esm/matrix-client/services/MatrixRoomService.d.ts",dts:"import { MatrixHttpClient } from '../MatrixHttpClient';\nimport { MatrixRoom } from '../models/MatrixRoom';\nimport { MatrixRoomCreateRequest, MatrixRoomCreateResponse } from '../models/api/MatrixRoomCreate';\nimport { MatrixRoomInviteResponse } from '../models/api/MatrixRoomInvite';\nimport { MatrixRoomJoinResponse } from '../models/api/MatrixRoomJoin';\n/**\n * A service to help with matrix room management\n */\nexport declare class MatrixRoomService {\n private readonly httpClient;\n constructor(httpClient: MatrixHttpClient);\n /**\n * Create a room\n *\n * @param accessToken\n * @param config\n */\n createRoom(accessToken: string, config?: MatrixRoomCreateRequest): Promise;\n /**\n * Invite a user to a room\n *\n * @param accessToken\n * @param user\n * @param room\n */\n inviteToRoom(accessToken: string, user: string, room: MatrixRoom): Promise;\n /**\n * Join a specific room\n *\n * @param accessToken\n * @param room\n */\n joinRoom(accessToken: string, room: MatrixRoom): Promise;\n /**\n * Get all joined rooms\n *\n * @param accessToken\n */\n getJoinedRooms(accessToken: string): Promise;\n}\n"},{name:"@airgap/beacon-transport-matrix/dist/esm/matrix-client/services/MatrixUserService.d.ts",dts:"import { MatrixHttpClient } from '../MatrixHttpClient';\nimport { MatrixLoginResponse } from '../models/api/MatrixLogin';\nexport declare class MatrixUserService {\n private readonly httpClient;\n constructor(httpClient: MatrixHttpClient);\n /**\n * Log in to the matrix node with username and password\n *\n * @param user\n * @param password\n * @param deviceId\n */\n login(user: string, password: string, deviceId: string): Promise;\n}\n"},{name:"@airgap/beacon-transport-matrix/dist/esm/matrix-client/utils/events.d.ts",dts:"import { MatrixStateEvent, MatrixStateEventMessageText } from '../models/MatrixStateEvent';\n/**\n * Check if an event is a create event\n *\n * @param event MatrixStateEvent\n */\nexport declare const isCreateEvent: (event: MatrixStateEvent) => boolean;\n/**\n * Check if an event is a join event\n *\n * @param event MatrixStateEvent\n */\nexport declare const isJoinEvent: (event: MatrixStateEvent) => boolean;\n/**\n * Check if an event is a message event\n *\n * @param event MatrixStateEvent\n */\nexport declare const isMessageEvent: (event: MatrixStateEvent) => boolean;\n/**\n * Check if an event is a text message event\n *\n * @param event MatrixStateEvent\n */\nexport declare const isTextMessageEvent: (event: MatrixStateEvent) => event is MatrixStateEventMessageText;\n"},{name:"@airgap/beacon-transport-matrix/dist/esm/matrix-client/EventEmitter.d.ts",dts:"type Listener = (...args: any[]) => void;\nexport declare class EventEmitter {\n private readonly events;\n on(event: string, listener: Listener): () => void;\n removeListener(event: string, listener?: Listener): void;\n removeAllListeners(): void;\n emit(event: string, ...args: any[]): void;\n once(event: string, listener: Listener): () => void;\n}\nexport {};\n"},{name:"@airgap/beacon-transport-matrix/dist/esm/matrix-client/MatrixClient.d.ts",dts:"import { Storage } from '@airgap/beacon-types';\nimport { MatrixClientStore } from './MatrixClientStore';\nimport { MatrixHttpClient } from './MatrixHttpClient';\nimport { MatrixRoom } from './models/MatrixRoom';\nimport { MatrixRoomService } from './services/MatrixRoomService';\nimport { MatrixUserService } from './services/MatrixUserService';\nimport { MatrixEventService } from './services/MatrixEventService';\nimport { MatrixClientEventEmitter } from './MatrixClientEventEmitter';\nimport { MatrixClientEventType, MatrixClientEvent } from './models/MatrixClientEvent';\ninterface MatrixClientOptions {\n baseUrl: string;\n storage: Storage;\n}\ninterface MatrixLoginConfig {\n id: string;\n password: string;\n deviceId: string;\n}\n/**\n * The matrix client used to connect to the matrix network\n */\nexport declare class MatrixClient {\n private readonly store;\n private readonly eventEmitter;\n private readonly userService;\n private readonly roomService;\n private readonly eventService;\n private readonly httpClient;\n private isActive;\n private _isReady;\n constructor(store: MatrixClientStore, eventEmitter: MatrixClientEventEmitter, userService: MatrixUserService, roomService: MatrixRoomService, eventService: MatrixEventService, httpClient: MatrixHttpClient);\n /**\n * Create a matrix client based on the options provided\n *\n * @param config\n */\n static create(config: MatrixClientOptions): MatrixClient;\n /**\n * Return all the rooms we are currently part of\n */\n get joinedRooms(): Promise;\n /**\n * Return all the rooms to which we have received invitations\n */\n get invitedRooms(): Promise;\n /**\n * Return all the rooms that we left\n */\n get leftRooms(): Promise;\n /**\n * Initiate the connection to the matrix node and log in\n *\n * @param user\n */\n start(user: MatrixLoginConfig): Promise;\n isConnected(): Promise;\n /**\n * Stop all running requests\n */\n stop(): Promise;\n /**\n * Subscribe to new matrix events\n *\n * @param event\n * @param listener\n */\n subscribe(event: T, listener: (event: MatrixClientEvent) => void): void;\n /**\n * Unsubscribe from matrix events\n *\n * @param event\n * @param listener\n */\n unsubscribe(event: MatrixClientEventType, listener: (event: MatrixClientEvent) => void): void;\n /**\n * Unsubscribe from all matrix events of this type\n *\n * @param event\n * @param listener\n */\n unsubscribeAll(event: MatrixClientEventType): void;\n getRoomById(id: string): Promise;\n /**\n * Create a private room with the supplied members\n *\n * @param members Members that will be in the room\n */\n createTrustedPrivateRoom(...members: string[]): Promise;\n /**\n * Invite user to rooms\n *\n * @param user The user to be invited\n * @param roomsOrIds The rooms the user will be invited to\n */\n inviteToRooms(user: string, ...roomsOrIds: string[] | MatrixRoom[]): Promise;\n /**\n * Join rooms\n *\n * @param roomsOrIds\n */\n joinRooms(...roomsOrIds: string[] | MatrixRoom[]): Promise;\n /**\n * Send a text message\n *\n * @param roomOrId\n * @param message\n */\n sendTextMessage(roomId: string, message: string): Promise;\n /**\n * Poll the server to get the latest data and get notified of changes\n *\n * @param interval\n * @param onSyncSuccess\n * @param onSyncError\n */\n private poll;\n /**\n * Get state from server\n */\n private sync;\n /**\n * A helper method that makes sure an access token is provided\n *\n * @param name\n * @param action\n */\n private requiresAuthorization;\n /**\n * Create a transaction ID\n */\n private createTxnId;\n}\nexport {};\n"},{name:"@airgap/beacon-transport-matrix/dist/esm/matrix-client/MatrixClientEventEmitter.d.ts",dts:"import { EventEmitter } from './EventEmitter';\nimport { MatrixStateStore, MatrixStateUpdate } from './MatrixClientStore';\nexport declare class MatrixClientEventEmitter extends EventEmitter {\n private readonly eventEmitProviders;\n /**\n * This method is called every time the state is changed\n *\n * @param _oldState\n * @param _newState\n * @param stateChange\n */\n onStateChanged(_oldState: MatrixStateStore, _newState: MatrixStateStore, stateChange: Partial): void;\n /**\n * Emit the message if we have listeners registered for that type\n *\n * @param eventType\n * @param object\n */\n private emitIfEvent;\n /**\n * Emit a client event\n *\n * @param eventType\n * @param content\n */\n private emitClientEvent;\n /**\n * Check if event is an invite\n *\n * @param stateChange\n */\n private isInvite;\n /**\n * Emit an invite\n *\n * @param eventType\n * @param stateChange\n */\n private emitInvite;\n /**\n * Check if event is a message\n *\n * @param stateChange\n */\n private isMessage;\n /**\n * Emit an event to all rooms\n *\n * @param eventType\n * @param stateChange\n */\n private emitMessage;\n}\n"},{name:"@airgap/beacon-transport-matrix/dist/esm/matrix-client/MatrixClientStore.d.ts",dts:"import { MatrixRoom } from './models/MatrixRoom';\nimport { Storage } from '@airgap/beacon-types';\ntype OnStateChangedListener = (oldState: MatrixStateStore, newState: MatrixStateStore, stateChange: Partial) => void;\nexport interface MatrixState {\n isRunning: boolean;\n userId: string | undefined;\n deviceId: string | undefined;\n txnNo: number;\n accessToken: string | undefined;\n syncToken: string | undefined;\n pollingTimeout: number | undefined;\n pollingRetries: number;\n rooms: MatrixRoom[] | Record;\n}\nexport interface MatrixStateStore extends MatrixState {\n rooms: Record;\n}\nexport interface MatrixStateUpdate extends MatrixState {\n rooms: MatrixRoom[];\n}\n/**\n * The class managing the local state of matrix\n */\nexport declare class MatrixClientStore {\n private readonly storage;\n /**\n * The state of the matrix client\n */\n private state;\n /**\n * Listeners that will be called when the state changes\n */\n private readonly onStateChangedListeners;\n /**\n * A promise that resolves once the client is ready\n */\n private waitReadyPromise;\n constructor(storage: Storage);\n /**\n * Get an item from the state\n *\n * @param key\n */\n get(key: T): MatrixStateStore[T];\n /**\n * Get the room from an ID or room instance\n *\n * @param roomOrId\n */\n getRoom(roomOrId: string | MatrixRoom): MatrixRoom;\n /**\n * Update the state with a partial state\n *\n * @param stateUpdate\n */\n update(stateUpdate: Partial): Promise;\n /**\n * Register listeners that are called once the state has changed\n *\n * @param listener\n * @param subscribed\n */\n onStateChanged(listener: OnStateChangedListener, ...subscribed: (keyof MatrixState)[]): void;\n /**\n * A promise that resolves once the client is ready\n */\n private waitReady;\n /**\n * Read state from storage\n */\n private initFromStorage;\n /**\n * Prepare data before persisting it in storage\n *\n * @param toStore\n */\n private prepareData;\n /**\n * Persist state in storage\n *\n * @param stateUpdate\n */\n private updateStorage;\n /**\n * Set the state\n *\n * @param partialState\n */\n private setState;\n /**\n * Merge room records and eliminate duplicates\n *\n * @param oldRooms\n * @param _newRooms\n */\n private mergeRooms;\n /**\n * Notify listeners of state changes\n *\n * @param oldState\n * @param newState\n * @param stateChange\n */\n private notifyListeners;\n}\nexport {};\n"},{name:"@airgap/beacon-transport-matrix/dist/esm/matrix-client/MatrixHttpClient.d.ts",dts:"import { MatrixRequest, MatrixRequestParams } from './models/api/MatrixRequest';\ninterface HttpOptions {\n accessToken?: string;\n}\n/**\n * Handling the HTTP connection to the matrix synapse node\n */\nexport declare class MatrixHttpClient {\n private readonly baseUrl;\n private readonly cancelTokenSource;\n constructor(baseUrl: string);\n /**\n * Get data from the synapse node\n *\n * @param endpoint\n * @param options\n */\n get(endpoint: string, params?: MatrixRequestParams, options?: HttpOptions): Promise;\n /**\n * Post data to the synapse node\n *\n * @param endpoint\n * @param body\n * @param options\n * @param params\n */\n post(endpoint: string, body: MatrixRequest, options?: HttpOptions, params?: MatrixRequestParams): Promise;\n /**\n * Put data to the synapse node\n *\n * @param endpoint\n * @param body\n * @param options\n * @param params\n */\n put(endpoint: string, body: MatrixRequest, options?: HttpOptions, params?: MatrixRequestParams): Promise;\n cancelAllRequests(): Promise;\n /**\n * Send a request to the synapse node\n *\n * @param method\n * @param endpoint\n * @param config\n * @param requestParams\n * @param data\n */\n private send;\n /**\n * Get the headers based on the options object\n *\n * @param options\n */\n private getHeaders;\n /**\n * Get parameters\n *\n * @param _params\n */\n private getParams;\n /**\n * Construct API URL\n */\n private apiUrl;\n}\nexport {};\n"},{name:"@airgap/beacon-transport-matrix/dist/esm/P2PTransport.d.ts",dts:"import { Transport } from '@airgap/beacon-core';\nimport { ExtendedP2PPairingResponse, Storage, StorageKey, TransportType, P2PPairingRequest, NodeDistributions } from '@airgap/beacon-types';\nimport { P2PCommunicationClient } from '@airgap/beacon-transport-matrix';\nimport { KeyPair } from '@stablelib/ed25519';\n/**\n * @internalapi\n *\n *\n */\nexport declare class P2PTransport extends Transport {\n readonly type: TransportType;\n constructor(name: string, keyPair: KeyPair, storage: Storage, matrixNodes: NodeDistributions, storageKey: K, iconUrl?: string, appUrl?: string);\n static isAvailable(): Promise;\n connect(): Promise;\n disconnect(): Promise;\n startOpenChannelListener(): Promise;\n getPairingRequestInfo(): Promise;\n listen(publicKey: string): Promise;\n}\n"},{name:"@airgap/beacon-transport-matrix/dist/esm/index.d.ts",dts:"export { P2PCommunicationClient } from './communication-client/P2PCommunicationClient';\nexport { P2PTransport } from './P2PTransport';\n"},{name:"@airgap/beacon-transport-postmessage/PostMessageClient.d.ts",dts:"import { MessageBasedClient } from '@airgap/beacon-core';\nimport { ConnectionContext, ExtendedPostMessagePairingResponse, EncryptedExtensionMessage, PostMessagePairingRequest } from '@airgap/beacon-types';\n/**\n * @internalapi\n *\n *\n */\nexport declare class PostMessageClient extends MessageBasedClient {\n protected readonly activeListeners: Map void>;\n init(): Promise;\n listenForEncryptedMessage(senderPublicKey: string, messageCallback: (message: string, context: ConnectionContext) => void): Promise;\n sendMessage(message: string, peer: PostMessagePairingRequest | ExtendedPostMessagePairingResponse): Promise;\n listenForChannelOpening(messageCallback: (pairingResponse: ExtendedPostMessagePairingResponse) => void): Promise;\n sendPairingRequest(id: string): Promise;\n isChannelOpenMessage(message: any): Promise;\n private subscribeToMessages;\n}\n"},{name:"@airgap/beacon-transport-postmessage/PostMessageTransport.d.ts",dts:"import { PostMessagePairingRequest, ExtendedPostMessagePairingResponse, Extension, StorageKey, TransportType } from '@airgap/beacon-types';\nimport { Storage } from '@airgap/beacon-types';\nimport { Transport } from '@airgap/beacon-core';\nimport { PostMessageClient } from './PostMessageClient';\nimport { KeyPair } from '@stablelib/ed25519';\n/**\n * @internalapi\n *\n *\n */\nexport declare class PostMessageTransport extends Transport {\n readonly type: TransportType;\n constructor(name: string, keyPair: KeyPair, storage: Storage, storageKey: K);\n static isAvailable(): Promise;\n static getAvailableExtensions(): Promise;\n private static listenForExtensions;\n connect(): Promise;\n startOpenChannelListener(): Promise;\n getPairingRequestInfo(): Promise;\n listen(publicKey: string): Promise;\n}\n"},{name:"@airgap/beacon-transport-postmessage/index.d.ts",dts:"export { PostMessageTransport } from './PostMessageTransport';\n"},{name:"@airgap/beacon-transport-postmessage/dist/esm/PostMessageClient.d.ts",dts:"import { MessageBasedClient } from '@airgap/beacon-core';\nimport { ConnectionContext, ExtendedPostMessagePairingResponse, EncryptedExtensionMessage, PostMessagePairingRequest } from '@airgap/beacon-types';\n/**\n * @internalapi\n *\n *\n */\nexport declare class PostMessageClient extends MessageBasedClient {\n protected readonly activeListeners: Map void>;\n init(): Promise;\n listenForEncryptedMessage(senderPublicKey: string, messageCallback: (message: string, context: ConnectionContext) => void): Promise;\n sendMessage(message: string, peer: PostMessagePairingRequest | ExtendedPostMessagePairingResponse): Promise;\n listenForChannelOpening(messageCallback: (pairingResponse: ExtendedPostMessagePairingResponse) => void): Promise;\n sendPairingRequest(id: string): Promise;\n isChannelOpenMessage(message: any): Promise;\n private subscribeToMessages;\n}\n"},{name:"@airgap/beacon-transport-postmessage/dist/esm/PostMessageTransport.d.ts",dts:"import { PostMessagePairingRequest, ExtendedPostMessagePairingResponse, Extension, StorageKey, TransportType } from '@airgap/beacon-types';\nimport { Storage } from '@airgap/beacon-types';\nimport { Transport } from '@airgap/beacon-core';\nimport { PostMessageClient } from './PostMessageClient';\nimport { KeyPair } from '@stablelib/ed25519';\n/**\n * @internalapi\n *\n *\n */\nexport declare class PostMessageTransport extends Transport {\n readonly type: TransportType;\n constructor(name: string, keyPair: KeyPair, storage: Storage, storageKey: K);\n static isAvailable(): Promise;\n static getAvailableExtensions(): Promise;\n private static listenForExtensions;\n connect(): Promise;\n startOpenChannelListener(): Promise;\n getPairingRequestInfo(): Promise;\n listen(publicKey: string): Promise;\n}\n"},{name:"@airgap/beacon-transport-postmessage/dist/esm/index.d.ts",dts:"export { PostMessageTransport } from './PostMessageTransport';\n"},{name:"@airgap/beacon-transport-walletconnect/communication-client/WalletConnectCommunicationClient.d.ts",dts:'import { CommunicationClient, WCStorage } from \'@airgap/beacon-core\';\nimport Client from \'@walletconnect/sign-client\';\nimport { SessionTypes, SignClientTypes } from \'@walletconnect/types\';\nimport { ExtendedWalletConnectPairingRequest, ExtendedWalletConnectPairingResponse, NetworkType, OperationRequest, PermissionRequest, SignPayloadRequest } from \'@airgap/beacon-types\';\nexport interface PermissionScopeParam {\n networks: NetworkType[];\n methods: PermissionScopeMethods[];\n events?: PermissionScopeEvents[];\n}\nexport declare enum PermissionScopeMethods {\n GET_ACCOUNTS = "tezos_getAccounts",\n OPERATION_REQUEST = "tezos_send",\n SIGN = "tezos_sign"\n}\nexport declare enum PermissionScopeEvents {\n CHAIN_CHANGED = "chainChanged",\n ACCOUNTS_CHANGED = "accountsChanged",\n REQUEST_ACKNOWLEDGED = "requestAcknowledged"\n}\nexport declare class WalletConnectCommunicationClient extends CommunicationClient {\n private wcOptions;\n protected readonly activeListeners: Map void>;\n protected readonly channelOpeningListeners: Map void>;\n private static instance;\n signClient: Client | undefined;\n storage: WCStorage;\n private session;\n private activeAccount;\n private activeNetwork;\n /**\n * this queue stores each active message id\n * [0] newest message\n * [length - 1] oldest message\n */\n private messageIds;\n constructor(wcOptions: {\n network: NetworkType;\n opts: SignClientTypes.Options;\n });\n static getInstance(wcOptions: {\n network: NetworkType;\n opts: SignClientTypes.Options;\n }): WalletConnectCommunicationClient;\n listenForEncryptedMessage(senderPublicKey: string, messageCallback: (message: string) => void): Promise;\n listenForChannelOpening(messageCallback: (pairingResponse: ExtendedWalletConnectPairingResponse) => void): Promise;\n unsubscribeFromEncryptedMessages(): Promise;\n unsubscribeFromEncryptedMessage(_senderPublicKey: string): Promise;\n private checkWalletReadiness;\n sendMessage(_message: string, _peer?: any): Promise;\n private fetchAccounts;\n private notifyListenersWithPermissionResponse;\n requestPermissions(message: PermissionRequest): Promise;\n /**\n * @description Once the session is establish, send payload to be approved and signed by the wallet.\n * @error MissingRequiredScope is thrown if permission to sign payload was not granted\n */\n signPayload(signPayloadRequest: SignPayloadRequest): Promise;\n /**\n * @description Once the session is established, send Tezos operations to be approved, signed and inject by the wallet.\n * @error MissingRequiredScope is thrown if permission to send operation was not granted\n */\n sendOperations(operationRequest: OperationRequest): Promise;\n init(forceNewConnection?: boolean): Promise<{\n uri: string;\n topic: string;\n } | undefined>;\n close(): Promise;\n private subscribeToSessionEvents;\n private acknowledgeRequest;\n private updateActiveAccount;\n private disconnect;\n private onPairingClosed;\n private onSessionClosed;\n getPairingRequestInfo(): Promise;\n private closePairings;\n private closeSessions;\n private openSession;\n private permissionScopeParamsToNamespaces;\n private validateReceivedNamespace;\n private validateMethods;\n private validateEvents;\n private validateAccounts;\n closeActiveSession(account: string): Promise;\n private validateNetworkAndAccount;\n /**\n * @description Access the active network\n * @error ActiveNetworkUnspecified thorwn when there are multiple Tezos networks in the session and none is set as the active one\n */\n getActiveNetwork(): string;\n private setDefaultAccountAndNetwork;\n /**\n * @description Return all connected accounts from the active session\n * @error NotConnected if no active session\n */\n getAccounts(): string[];\n /**\n * @description Return all networks from the namespace of the active session\n * @error NotConnected if no active session\n */\n getNetworks(): string[];\n private getTezosNamespace;\n private getPermittedMethods;\n private getPermittedNetwork;\n private getTezosRequiredNamespace;\n private notifyListeners;\n currentSession(): SessionTypes.Struct | undefined;\n private getSignClient;\n private getSession;\n /**\n * @description Access the public key hash of the active account\n * @error ActiveAccountUnspecified thrown when there are multiple Tezos account in the session and none is set as the active one\n */\n getPKH(): Promise;\n private clearState;\n}\n'},{name:"@airgap/beacon-transport-walletconnect/WalletConnectTransport.d.ts",dts:"import { KeyPair } from '@stablelib/ed25519';\nimport { WalletConnectCommunicationClient } from './communication-client/WalletConnectCommunicationClient';\nimport { Storage, ExtendedWalletConnectPairingResponse, StorageKey, WalletConnectPairingRequest, NetworkType, AccountInfo } from '@airgap/beacon-types';\nimport { Transport } from '@airgap/beacon-core';\nimport { SignClientTypes } from '@walletconnect/types';\n/**\n * @internalapi\n *\n *\n */\nexport declare class WalletConnectTransport extends Transport {\n private wcOptions;\n constructor(name: string, _keyPair: KeyPair, storage: Storage, storageKey: K, wcOptions: {\n network: NetworkType;\n opts: SignClientTypes.Options;\n });\n static isAvailable(): Promise;\n connect(): Promise;\n hasPairings(): Promise;\n hasSessions(): Promise;\n closeActiveSession(account: AccountInfo): Promise;\n getPeers(): Promise;\n disconnect(): Promise;\n startOpenChannelListener(): Promise;\n getPairingRequestInfo(): Promise;\n listen(publicKey: string): Promise;\n}\n"},{name:"@airgap/beacon-transport-walletconnect/error.d.ts",dts:"import { PermissionScopeMethods } from './communication-client/WalletConnectCommunicationClient';\n/**\n * @category Error\n * @description Error that indicates the wallet returned an invalid namespace\n */\nexport declare class InvalidReceivedSessionNamespace extends Error {\n messageWc: string;\n codeWc: number;\n data?: string | string[] | undefined;\n name: string;\n constructor(messageWc: string, codeWc: number, type: 'invalid' | 'incomplete', data?: string | string[] | undefined);\n}\n/**\n * @category Error\n * @description Error that indicates there is no active session\n */\nexport declare class NotConnected extends Error {\n name: string;\n constructor();\n}\n/**\n * @category Error\n * @description Error that indicates the session is invalid\n */\nexport declare class InvalidSession extends Error {\n name: string;\n constructor(message: string);\n}\n/**\n * @category Error\n * @description Error that indicates missing required permission scopes\n */\nexport declare class MissingRequiredScope extends Error {\n requiredScopes: PermissionScopeMethods | string;\n name: string;\n constructor(requiredScopes: PermissionScopeMethods | string);\n}\n/**\n * @category Error\n * @description Error that indicates the active network is not specified\n */\nexport declare class ActiveNetworkUnspecified extends Error {\n name: string;\n constructor();\n}\n/**\n * @category Error\n * @description Error that indicates the active account is not specified\n */\nexport declare class ActiveAccountUnspecified extends Error {\n name: string;\n constructor();\n}\n/**\n * @category Error\n * @description Error that indicates the combinaison pkh-network is not part of the active session\n */\nexport declare class InvalidNetworkOrAccount extends Error {\n network: string;\n pkh: string;\n name: string;\n constructor(network: string, pkh: string);\n}\n"},{name:"@airgap/beacon-transport-walletconnect/index.d.ts",dts:"export { WalletConnectTransport } from './WalletConnectTransport';\nexport { WalletConnectCommunicationClient } from './communication-client/WalletConnectCommunicationClient';\n"},{name:"@airgap/beacon-transport-walletconnect/dist/esm/communication-client/WalletConnectCommunicationClient.d.ts",dts:'import { CommunicationClient, WCStorage } from \'@airgap/beacon-core\';\nimport Client from \'@walletconnect/sign-client\';\nimport { SessionTypes, SignClientTypes } from \'@walletconnect/types\';\nimport { ExtendedWalletConnectPairingRequest, ExtendedWalletConnectPairingResponse, NetworkType, OperationRequest, PermissionRequest, SignPayloadRequest } from \'@airgap/beacon-types\';\nexport interface PermissionScopeParam {\n networks: NetworkType[];\n methods: PermissionScopeMethods[];\n events?: PermissionScopeEvents[];\n}\nexport declare enum PermissionScopeMethods {\n GET_ACCOUNTS = "tezos_getAccounts",\n OPERATION_REQUEST = "tezos_send",\n SIGN = "tezos_sign"\n}\nexport declare enum PermissionScopeEvents {\n CHAIN_CHANGED = "chainChanged",\n ACCOUNTS_CHANGED = "accountsChanged",\n REQUEST_ACKNOWLEDGED = "requestAcknowledged"\n}\nexport declare class WalletConnectCommunicationClient extends CommunicationClient {\n private wcOptions;\n protected readonly activeListeners: Map void>;\n protected readonly channelOpeningListeners: Map void>;\n private static instance;\n signClient: Client | undefined;\n storage: WCStorage;\n private session;\n private activeAccount;\n private activeNetwork;\n /**\n * this queue stores each active message id\n * [0] newest message\n * [length - 1] oldest message\n */\n private messageIds;\n constructor(wcOptions: {\n network: NetworkType;\n opts: SignClientTypes.Options;\n });\n static getInstance(wcOptions: {\n network: NetworkType;\n opts: SignClientTypes.Options;\n }): WalletConnectCommunicationClient;\n listenForEncryptedMessage(senderPublicKey: string, messageCallback: (message: string) => void): Promise;\n listenForChannelOpening(messageCallback: (pairingResponse: ExtendedWalletConnectPairingResponse) => void): Promise;\n unsubscribeFromEncryptedMessages(): Promise;\n unsubscribeFromEncryptedMessage(_senderPublicKey: string): Promise;\n private checkWalletReadiness;\n sendMessage(_message: string, _peer?: any): Promise;\n private fetchAccounts;\n private notifyListenersWithPermissionResponse;\n requestPermissions(message: PermissionRequest): Promise;\n /**\n * @description Once the session is establish, send payload to be approved and signed by the wallet.\n * @error MissingRequiredScope is thrown if permission to sign payload was not granted\n */\n signPayload(signPayloadRequest: SignPayloadRequest): Promise;\n /**\n * @description Once the session is established, send Tezos operations to be approved, signed and inject by the wallet.\n * @error MissingRequiredScope is thrown if permission to send operation was not granted\n */\n sendOperations(operationRequest: OperationRequest): Promise;\n init(forceNewConnection?: boolean): Promise<{\n uri: string;\n topic: string;\n } | undefined>;\n close(): Promise;\n private subscribeToSessionEvents;\n private acknowledgeRequest;\n private updateActiveAccount;\n private disconnect;\n private onPairingClosed;\n private onSessionClosed;\n getPairingRequestInfo(): Promise;\n private closePairings;\n private closeSessions;\n private openSession;\n private permissionScopeParamsToNamespaces;\n private validateReceivedNamespace;\n private validateMethods;\n private validateEvents;\n private validateAccounts;\n closeActiveSession(account: string): Promise;\n private validateNetworkAndAccount;\n /**\n * @description Access the active network\n * @error ActiveNetworkUnspecified thorwn when there are multiple Tezos networks in the session and none is set as the active one\n */\n getActiveNetwork(): string;\n private setDefaultAccountAndNetwork;\n /**\n * @description Return all connected accounts from the active session\n * @error NotConnected if no active session\n */\n getAccounts(): string[];\n /**\n * @description Return all networks from the namespace of the active session\n * @error NotConnected if no active session\n */\n getNetworks(): string[];\n private getTezosNamespace;\n private getPermittedMethods;\n private getPermittedNetwork;\n private getTezosRequiredNamespace;\n private notifyListeners;\n currentSession(): SessionTypes.Struct | undefined;\n private getSignClient;\n private getSession;\n /**\n * @description Access the public key hash of the active account\n * @error ActiveAccountUnspecified thrown when there are multiple Tezos account in the session and none is set as the active one\n */\n getPKH(): Promise;\n private clearState;\n}\n'},{name:"@airgap/beacon-transport-walletconnect/dist/esm/WalletConnectTransport.d.ts",dts:"import { KeyPair } from '@stablelib/ed25519';\nimport { WalletConnectCommunicationClient } from './communication-client/WalletConnectCommunicationClient';\nimport { Storage, ExtendedWalletConnectPairingResponse, StorageKey, WalletConnectPairingRequest, NetworkType, AccountInfo } from '@airgap/beacon-types';\nimport { Transport } from '@airgap/beacon-core';\nimport { SignClientTypes } from '@walletconnect/types';\n/**\n * @internalapi\n *\n *\n */\nexport declare class WalletConnectTransport extends Transport {\n private wcOptions;\n constructor(name: string, _keyPair: KeyPair, storage: Storage, storageKey: K, wcOptions: {\n network: NetworkType;\n opts: SignClientTypes.Options;\n });\n static isAvailable(): Promise;\n connect(): Promise;\n hasPairings(): Promise;\n hasSessions(): Promise;\n closeActiveSession(account: AccountInfo): Promise;\n getPeers(): Promise;\n disconnect(): Promise;\n startOpenChannelListener(): Promise;\n getPairingRequestInfo(): Promise;\n listen(publicKey: string): Promise;\n}\n"},{name:"@airgap/beacon-transport-walletconnect/dist/esm/error.d.ts",dts:"import { PermissionScopeMethods } from './communication-client/WalletConnectCommunicationClient';\n/**\n * @category Error\n * @description Error that indicates the wallet returned an invalid namespace\n */\nexport declare class InvalidReceivedSessionNamespace extends Error {\n messageWc: string;\n codeWc: number;\n data?: string | string[] | undefined;\n name: string;\n constructor(messageWc: string, codeWc: number, type: 'invalid' | 'incomplete', data?: string | string[] | undefined);\n}\n/**\n * @category Error\n * @description Error that indicates there is no active session\n */\nexport declare class NotConnected extends Error {\n name: string;\n constructor();\n}\n/**\n * @category Error\n * @description Error that indicates the session is invalid\n */\nexport declare class InvalidSession extends Error {\n name: string;\n constructor(message: string);\n}\n/**\n * @category Error\n * @description Error that indicates missing required permission scopes\n */\nexport declare class MissingRequiredScope extends Error {\n requiredScopes: PermissionScopeMethods | string;\n name: string;\n constructor(requiredScopes: PermissionScopeMethods | string);\n}\n/**\n * @category Error\n * @description Error that indicates the active network is not specified\n */\nexport declare class ActiveNetworkUnspecified extends Error {\n name: string;\n constructor();\n}\n/**\n * @category Error\n * @description Error that indicates the active account is not specified\n */\nexport declare class ActiveAccountUnspecified extends Error {\n name: string;\n constructor();\n}\n/**\n * @category Error\n * @description Error that indicates the combinaison pkh-network is not part of the active session\n */\nexport declare class InvalidNetworkOrAccount extends Error {\n network: string;\n pkh: string;\n name: string;\n constructor(network: string, pkh: string);\n}\n"},{name:"@airgap/beacon-transport-walletconnect/dist/esm/index.d.ts",dts:"export { WalletConnectTransport } from './WalletConnectTransport';\nexport { WalletConnectCommunicationClient } from './communication-client/WalletConnectCommunicationClient';\n"},{name:"@airgap/beacon-types/types/beacon/messages/AcknowledgeResponse.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType } from '@airgap/beacon-types';\n/**\n * @category Message\n */\nexport interface AcknowledgeResponse extends BeaconBaseMessage {\n type: BeaconMessageType.Acknowledge;\n}\n"},{name:"@airgap/beacon-types/types/beacon/messages/BeaconRequestInputMessage.d.ts",dts:"import { Optional, ProofOfEventChallengeRecordedRequest } from '@airgap/beacon-types';\nimport { PermissionRequest, OperationRequest, SignPayloadRequest, ProofOfEventChallengeRequest, BroadcastRequest } from '@airgap/beacon-types';\n/**\n * @internalapi\n * @category DApp\n */\nexport type IgnoredRequestInputProperties = 'id' | 'senderId' | 'version';\n/**\n * @internalapi\n * @category DApp\n */\nexport type PermissionRequestInput = Optional;\n/**\n * @internalapi\n * @category DApp\n */\nexport type ProofOfEventChallengeRequestInput = Optional;\n/**\n * @internalapi\n * @category DApp\n */\nexport type ProofOfEventChallengeRecordedMessageInput = Optional;\n/**\n * @internalapi\n * @category DApp\n */\nexport type OperationRequestInput = Optional;\n/**\n * @internalapi\n * @category DApp\n */\nexport type SignPayloadRequestInput = Optional;\n/**\n * @internalapi\n * @category DApp\n */\n/**\n * @internalapi\n * @category DApp\n */\nexport type BroadcastRequestInput = Optional;\n/**\n * @internalapi\n * @category DApp\n */\nexport type BeaconRequestInputMessage = PermissionRequestInput | OperationRequestInput | SignPayloadRequestInput | BroadcastRequestInput | ProofOfEventChallengeRequestInput | ProofOfEventChallengeRecordedMessageInput;\n"},{name:"@airgap/beacon-types/types/beacon/messages/BeaconRequestOutputMessage.d.ts",dts:"import { Optional, ProofOfEventChallengeRecordedRequest, ProofOfEventChallengeRequest } from '@airgap/beacon-types';\nimport { AppMetadata, PermissionRequest, OperationRequest, SignPayloadRequest, BroadcastRequest } from '@airgap/beacon-types';\n/**\n * @category Wallet\n */\nexport type IgnoredRequestOutputProperties = 'version';\n/**\n * @category Wallet\n */\nexport interface ExtraResponseOutputProperties {\n appMetadata: AppMetadata;\n}\n/**\n * @category Wallet\n */\nexport type PermissionRequestOutput = Optional & ExtraResponseOutputProperties;\n/**\n * @category Wallet\n */\nexport type ProofOfEventChallengeRequestOutput = Optional & ExtraResponseOutputProperties;\n/**\n * @category Wallet\n */\nexport type ProofOfEventChallengeRecordedMessageOutput = Optional & ExtraResponseOutputProperties;\n/**\n * @category Wallet\n */\nexport type OperationRequestOutput = Optional & ExtraResponseOutputProperties;\n/**\n * @category Wallet\n */\nexport type SignPayloadRequestOutput = Optional & ExtraResponseOutputProperties;\n/**\n * @category Wallet\n */\n/**\n * @category Wallet\n */\nexport type BroadcastRequestOutput = Optional & ExtraResponseOutputProperties;\n/**\n * @internalapi\n * @category Wallet\n */\nexport type BeaconRequestOutputMessage = PermissionRequestOutput | OperationRequestOutput | SignPayloadRequestOutput | BroadcastRequestOutput | ProofOfEventChallengeRequestOutput | ProofOfEventChallengeRecordedMessageOutput;\n"},{name:"@airgap/beacon-types/types/beacon/messages/BeaconResponseInputMessage.d.ts",dts:"import { Optional, ProofOfEventChallengeResponse } from '@airgap/beacon-types';\nimport { PermissionResponse, OperationResponse, SignPayloadResponse, BroadcastResponse, AcknowledgeResponse, ErrorResponse } from '@airgap/beacon-types';\n/**\n * @category Wallet\n */\nexport type IgnoredResponseInputProperties = 'senderId' | 'version';\n/**\n * @category Wallet\n */\nexport type PermissionResponseInput = Optional;\n/**\n * @category Wallet\n */\nexport type ProofOfEventChallengeResponseInput = Optional;\n/**\n * @category Wallet\n */\nexport type OperationResponseInput = Optional;\n/**\n * @category Wallet\n */\nexport type SignPayloadResponseInput = Optional;\n/**\n * @category Wallet\n */\n/**\n * @category Wallet\n */\nexport type BroadcastResponseInput = Optional;\n/**\n * @category Wallet\n */\nexport type AcknowledgeResponseInput = Optional;\n/**\n * @category Wallet\n */\nexport type ErrorResponseInput = Optional;\n/**\n * @internalapi\n * @category Wallet\n */\nexport type BeaconResponseInputMessage = PermissionResponseInput | OperationResponseInput | SignPayloadResponseInput | BroadcastResponseInput | AcknowledgeResponseInput | ErrorResponseInput | ProofOfEventChallengeResponseInput;\n"},{name:"@airgap/beacon-types/types/beacon/messages/BeaconResponseOutputMessage.d.ts",dts:"import { PermissionResponse, OperationResponse, SignPayloadResponse, BroadcastResponse, AccountInfo, ProofOfEventChallengeResponse } from '@airgap/beacon-types';\n/**\n * @category DApp\n */\nexport type IgnoredResponseOutputProperties = 'id' | 'version' | 'type';\n/**\n * @category DApp\n */\nexport type PermissionResponseOutput = PermissionResponse & {\n address: string;\n accountInfo: AccountInfo;\n walletKey?: string | undefined;\n};\n/**\n * @category DApp\n */\nexport type ProofOfEventChallengeResponseOutput = ProofOfEventChallengeResponse;\n/**\n * @category DApp\n */\nexport type OperationResponseOutput = OperationResponse;\n/**\n * @category DApp\n */\nexport type SignPayloadResponseOutput = SignPayloadResponse;\n/**\n * @category DApp\n */\n/**\n * @category DApp\n */\nexport type BroadcastResponseOutput = BroadcastResponse;\n/**\n * @internalapi\n * @category DApp\n */\nexport type BeaconResponseOutputMessage = PermissionResponseOutput | OperationResponseOutput | SignPayloadResponseOutput | BroadcastResponseOutput | ProofOfEventChallengeResponseOutput;\n"},{name:"@airgap/beacon-types/types/beacon/messages/BroadcastRequest.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType, Network } from '@airgap/beacon-types';\n/**\n * @category Message\n */\nexport interface BroadcastRequest extends BeaconBaseMessage {\n type: BeaconMessageType.BroadcastRequest;\n network: Network;\n signedTransaction: string;\n}\n"},{name:"@airgap/beacon-types/types/beacon/messages/BroadcastResponse.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType } from '@airgap/beacon-types';\n/**\n * @category Message\n */\nexport interface BroadcastResponse extends BeaconBaseMessage {\n type: BeaconMessageType.BroadcastResponse;\n transactionHash: string;\n}\n"},{name:"@airgap/beacon-types/types/beacon/messages/ChangeAccountRequest.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType, Network, PermissionScope, Threshold } from '@airgap/beacon-types';\nimport { Notification } from '../../Notification';\nexport interface ChangeAccountRequest extends BeaconBaseMessage {\n type: BeaconMessageType.ChangeAccountRequest;\n address?: string;\n walletType: 'implicit' | 'abstracted_account';\n verificationType?: 'proof_of_event';\n publicKey?: string;\n network: Network;\n scopes: PermissionScope[];\n threshold?: Threshold;\n notification?: Notification;\n}\n"},{name:"@airgap/beacon-types/types/beacon/messages/DisconnectMessage.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType } from '@airgap/beacon-types';\n/**\n * @category Message\n */\nexport interface DisconnectMessage extends BeaconBaseMessage {\n type: BeaconMessageType.Disconnect;\n}\n"},{name:"@airgap/beacon-types/types/beacon/messages/EncryptPayloadRequest.d.ts",dts:"/**\n * @category Message\n */\n"},{name:"@airgap/beacon-types/types/beacon/messages/EncryptPayloadResponse.d.ts",dts:"/**\n * @category Message\n */\n"},{name:"@airgap/beacon-types/types/beacon/messages/ErrorResponse.d.ts",dts:"import { BeaconBaseMessage, BeaconErrorType, BeaconMessageType } from '@airgap/beacon-types';\n/**\n * @category Message\n */\nexport interface ErrorResponse extends BeaconBaseMessage {\n type: BeaconMessageType.Error;\n errorType: BeaconErrorType;\n errorData?: any;\n}\n"},{name:"@airgap/beacon-types/types/beacon/messages/OperationRequest.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType, Network } from '@airgap/beacon-types';\nimport { PartialTezosOperation } from '../../tezos/PartialTezosOperation';\n/**\n * @category Message\n */\nexport interface OperationRequest extends BeaconBaseMessage {\n type: BeaconMessageType.OperationRequest;\n network: Network;\n operationDetails: PartialTezosOperation[];\n sourceAddress: string;\n}\n"},{name:"@airgap/beacon-types/types/beacon/messages/OperationResponse.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType } from '@airgap/beacon-types';\n/**\n * @category Message\n */\nexport interface OperationResponse extends BeaconBaseMessage {\n type: BeaconMessageType.OperationResponse;\n transactionHash: string;\n}\n"},{name:"@airgap/beacon-types/types/beacon/messages/PermissionRequest.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType, PermissionScope, AppMetadata, Network } from '@airgap/beacon-types';\n/**\n * @category Message\n */\nexport interface PermissionRequest extends BeaconBaseMessage {\n type: BeaconMessageType.PermissionRequest;\n appMetadata: AppMetadata;\n network: Network;\n scopes: PermissionScope[];\n}\n"},{name:"@airgap/beacon-types/types/beacon/messages/PermissionResponse.d.ts",dts:"import { AppMetadata, BeaconBaseMessage, BeaconMessageType, Network, PermissionScope, Threshold } from '@airgap/beacon-types';\nimport { Notification } from '../../Notification';\n/**\n * @category Message\n */\nexport interface PermissionResponse extends BeaconBaseMessage {\n address?: string;\n walletType: 'implicit' | 'abstracted_account';\n verificationType?: 'proof_of_event';\n type: BeaconMessageType.PermissionResponse;\n appMetadata: AppMetadata;\n publicKey?: string;\n network: Network;\n scopes: PermissionScope[];\n threshold?: Threshold;\n notification?: Notification;\n}\n"},{name:"@airgap/beacon-types/types/beacon/messages/ProofOfEventChallengeRecordedRequest.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType } from '@airgap/beacon-types';\nexport interface ProofOfEventChallengeRecordedRequest extends BeaconBaseMessage {\n type: BeaconMessageType.ProofOfEventChallengeRecorded;\n dAppChallengeId: string;\n success: boolean;\n errorMessage: string;\n}\n"},{name:"@airgap/beacon-types/types/beacon/messages/ProofOfEventChallengeRequest.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType } from '@airgap/beacon-types';\nexport interface ProofOfEventChallengeRequest extends BeaconBaseMessage {\n type: BeaconMessageType.ProofOfEventChallengeRequest;\n payload: string;\n contractAddress: string;\n dAppChallengeId: string;\n}\n"},{name:"@airgap/beacon-types/types/beacon/messages/ProofOfEventChallengeResponse.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType } from '@airgap/beacon-types';\nexport interface ProofOfEventChallengeResponse extends BeaconBaseMessage {\n type: BeaconMessageType.ProofOfEventChallengeResponse;\n dAppChallengeId: string;\n isAccepted: boolean;\n}\n"},{name:"@airgap/beacon-types/types/beacon/messages/SignPayloadRequest.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType, SigningType } from '@airgap/beacon-types';\n/**\n * @category Message\n */\nexport interface SignPayloadRequest extends BeaconBaseMessage {\n type: BeaconMessageType.SignPayloadRequest;\n signingType: SigningType;\n payload: string;\n sourceAddress: string;\n}\n"},{name:"@airgap/beacon-types/types/beacon/messages/SignPayloadResponse.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType, SigningType } from '@airgap/beacon-types';\n/**\n * @category Message\n */\nexport interface SignPayloadResponse extends BeaconBaseMessage {\n type: BeaconMessageType.SignPayloadResponse;\n signingType: SigningType;\n signature: string;\n}\n"},{name:"@airgap/beacon-types/types/beacon/AppMetadata.d.ts",dts:"export interface AppMetadata {\n senderId: string;\n name: string;\n icon?: string;\n}\n"},{name:"@airgap/beacon-types/types/beacon/BeaconBaseMessage.d.ts",dts:"import { BeaconMessageType } from '@airgap/beacon-types';\n/**\n * @category Message\n */\nexport interface BeaconBaseMessage {\n type: BeaconMessageType;\n version: string;\n id: string;\n senderId: string;\n}\n"},{name:"@airgap/beacon-types/types/beacon/BeaconMessage.d.ts",dts:"import { PermissionResponse, PermissionRequest, OperationRequest, OperationResponse, SignPayloadRequest, SignPayloadResponse, BroadcastRequest, BroadcastResponse, AcknowledgeResponse, DisconnectMessage, ErrorResponse, ProofOfEventChallengeRequest, ProofOfEventChallengeResponse, ProofOfEventChallengeRecordedRequest, ChangeAccountRequest } from '@airgap/beacon-types';\n/**\n * @internalapi\n */\nexport type BeaconMessage = PermissionRequest | PermissionResponse | ProofOfEventChallengeRequest | ProofOfEventChallengeResponse | ProofOfEventChallengeRecordedRequest | OperationRequest | OperationResponse | SignPayloadRequest | SignPayloadResponse | BroadcastRequest | BroadcastResponse | AcknowledgeResponse | DisconnectMessage | ErrorResponse | ChangeAccountRequest;\n"},{name:"@airgap/beacon-types/types/beacon/BeaconMessageType.d.ts",dts:'export declare enum BeaconMessageType {\n BlockchainRequest = "blockchain_request",\n PermissionRequest = "permission_request",\n SignPayloadRequest = "sign_payload_request",\n OperationRequest = "operation_request",\n BroadcastRequest = "broadcast_request",\n ChangeAccountRequest = "change_account_request",\n BlockchainResponse = "blockchain_response",\n PermissionResponse = "permission_response",\n SignPayloadResponse = "sign_payload_response",\n ProofOfEventChallengeRequest = "proof_of_event_challenge_request",\n ProofOfEventChallengeResponse = "proof_of_event_challenge_response",\n ProofOfEventChallengeRecorded = "proof_of_event_challenge_recorded",\n OperationResponse = "operation_response",\n BroadcastResponse = "broadcast_response",\n Acknowledge = "acknowledge",\n Disconnect = "disconnect",\n Error = "error"\n}\n'},{name:"@airgap/beacon-types/types/beacon/BeaconRequestMessage.d.ts",dts:"import { PermissionRequest, OperationRequest, SignPayloadRequest, BroadcastRequest, ProofOfEventChallengeRequest, ProofOfEventChallengeRecordedRequest } from '@airgap/beacon-types';\n/**\n * @internalapi\n */\nexport type BeaconRequestMessage = PermissionRequest | OperationRequest | SignPayloadRequest | BroadcastRequest | ProofOfEventChallengeRequest | ProofOfEventChallengeRecordedRequest;\n"},{name:"@airgap/beacon-types/types/beacon/BeaconResponseMessage.d.ts",dts:"import { PermissionResponse, OperationResponse, SignPayloadResponse, BroadcastResponse } from '@airgap/beacon-types';\nimport { ErrorResponse } from './messages/ErrorResponse';\n/**\n * @internalapi\n */\nexport type BeaconResponseMessage = PermissionResponse | OperationResponse | SignPayloadResponse | BroadcastResponse | ErrorResponse;\n"},{name:"@airgap/beacon-types/types/beacon/Network.d.ts",dts:"import { NetworkType } from '@airgap/beacon-types';\nexport interface Network {\n type: NetworkType;\n name?: string;\n rpcUrl?: string;\n}\n"},{name:"@airgap/beacon-types/types/beacon/NetworkType.d.ts",dts:'export declare enum NetworkType {\n MAINNET = "mainnet",\n GHOSTNET = "ghostnet",\n WEEKLYNET = "weeklynet",\n DAILYNET = "dailynet",\n DELPHINET = "delphinet",\n EDONET = "edonet",\n FLORENCENET = "florencenet",\n GRANADANET = "granadanet",\n HANGZHOUNET = "hangzhounet",\n ITHACANET = "ithacanet",\n JAKARTANET = "jakartanet",\n KATHMANDUNET = "kathmandunet",\n LIMANET = "limanet",\n MUMBAINET = "mumbainet",\n NAIROBINET = "nairobinet",\n OXFORDNET = "oxfordnet",\n CUSTOM = "custom"\n}\n'},{name:"@airgap/beacon-types/types/beacon/PermissionScope.d.ts",dts:'export declare enum PermissionScope {\n SIGN = "sign",\n OPERATION_REQUEST = "operation_request",\n ENCRYPT = "encrypt",\n NOTIFICATION = "notification",\n THRESHOLD = "threshold"\n}\n'},{name:"@airgap/beacon-types/types/beacon/SigningType.d.ts",dts:'export declare enum SigningType {\n RAW = "raw",\n OPERATION = "operation",\n MICHELINE = "micheline"\n}\n'},{name:"@airgap/beacon-types/types/beacon/Threshold.d.ts",dts:"export interface Threshold {\n amount: string;\n timeframe: string;\n}\n"},{name:"@airgap/beacon-types/types/beaconV3/PermissionRequest.d.ts",dts:"import { AccountInfo, AppMetadata, BeaconMessageType, ConnectionContext, WalletInfo, ExtensionApp, DesktopApp, WebApp, App } from '@airgap/beacon-types';\nexport interface ResponseInput {\n request: BlockchainMessage;\n account: AccountInfo;\n output: BeaconMessageWrapper;\n blockExplorer: any;\n connectionContext: ConnectionContext;\n walletInfo: WalletInfo;\n}\nexport interface Blockchain {\n readonly identifier: string;\n validateRequest(input: BlockchainMessage): Promise;\n handleResponse(input: ResponseInput): Promise;\n getWalletLists(): Promise<{\n extensionList: ExtensionApp[];\n desktopList: DesktopApp[];\n webList: WebApp[];\n iOSList: App[];\n }>;\n getAccountInfosFromPermissionResponse(permissionResponse: PermissionResponseV3): Promise<{\n accountId: string;\n address: string;\n publicKey: string;\n }[]>;\n}\nexport interface BeaconMessageWrapper {\n id: string;\n version: string;\n senderId: string;\n message: T;\n}\nexport interface BeaconBaseMessage {\n type: unknown;\n}\nexport interface BlockchainMessage {\n blockchainIdentifier: T;\n type: unknown;\n blockchainData: unknown;\n}\nexport interface PermissionRequestV3 extends BlockchainMessage {\n blockchainIdentifier: T;\n type: BeaconMessageType.PermissionRequest;\n blockchainData: {\n appMetadata: AppMetadata;\n scopes: string[];\n };\n}\nexport interface PermissionResponseV3 extends BlockchainMessage {\n blockchainIdentifier: T;\n type: BeaconMessageType.PermissionResponse;\n blockchainData: {\n appMetadata: AppMetadata;\n scopes: string[];\n };\n}\nexport interface BlockchainRequestV3 extends BlockchainMessage {\n blockchainIdentifier: T;\n type: BeaconMessageType.BlockchainRequest;\n accountId: string;\n blockchainData: {\n type: string;\n scope: string;\n };\n}\nexport interface BlockchainResponseV3 extends BlockchainMessage {\n blockchainIdentifier: T;\n type: BeaconMessageType.BlockchainResponse;\n blockchainData: unknown;\n}\nexport interface BlockchainErrorResponse extends BlockchainMessage {\n blockchainIdentifier: T;\n type: BeaconMessageType.Error;\n error: {\n type: unknown;\n data?: unknown;\n };\n description?: string;\n}\nexport interface AcknowledgeMessage extends BeaconBaseMessage {\n type: BeaconMessageType.Acknowledge;\n}\nexport interface DisconnectMessage extends BeaconBaseMessage {\n type: BeaconMessageType.Disconnect;\n}\n"},{name:"@airgap/beacon-types/types/storage/Storage.d.ts",dts:"import { StorageKey, StorageKeyReturnType } from '@airgap/beacon-types';\n/**\n * @internalapi\n *\n * The storage used in the SDK\n */\nexport declare abstract class Storage {\n /**\n * Returns a promise that resolves to true if the storage option is available on this platform.\n */\n static isSupported(): Promise;\n /**\n * Gets a value from storage and returns it\n *\n * @param key The storage key\n */\n abstract get(key: K): Promise;\n /**\n * Sets a value in the storage and persist it\n *\n * @param key The storage key\n * @param value The value to be persisted\n */\n abstract set(key: K, value: StorageKeyReturnType[K]): Promise;\n /**\n * Delete a key from storage\n *\n * @param key The storage key\n */\n abstract delete(key: K): Promise;\n /**\n * This event will fire if the storage was modified by someone else, eg. on another tab\n *\n * @param callback The callback to be called when a storage value changes\n */\n abstract subscribeToStorageChanged(callback: (arg: {\n eventType: 'storageCleared' | 'entryModified';\n key: string | null;\n oldValue: string | null;\n newValue: string | null;\n }) => {}): Promise;\n /**\n * Get the key with the internal prefix\n *\n * @param key the storage key\n */\n abstract getPrefixedKey(key: K): string;\n}\n"},{name:"@airgap/beacon-types/types/storage/StorageKey.d.ts",dts:'/**\n * @internalapi\n */\nexport declare enum StorageKey {\n TRANSPORT_P2P_PEERS_DAPP = "beacon:communication-peers-dapp",\n TRANSPORT_P2P_PEERS_WALLET = "beacon:communication-peers-wallet",\n TRANSPORT_POSTMESSAGE_PEERS_DAPP = "beacon:postmessage-peers-dapp",\n TRANSPORT_POSTMESSAGE_PEERS_WALLET = "beacon:postmessage-peers-wallet",\n TRANSPORT_WALLETCONNECT_PEERS_DAPP = "beacon:walletconnect-peers-dapp",\n LAST_SELECTED_WALLET = "beacon:last-selected-wallet",\n ACCOUNTS = "beacon:accounts",\n ACTIVE_ACCOUNT = "beacon:active-account",\n PUSH_TOKENS = "beacon:push-tokens",\n BEACON_SDK_SECRET_SEED = "beacon:sdk-secret-seed",\n APP_METADATA_LIST = "beacon:app-metadata-list",\n PERMISSION_LIST = "beacon:permissions",\n ONGOING_PROOF_OF_EVENT_CHALLENGES = "beacon:ongoing-proof-of-event-challenges",\n BEACON_SDK_VERSION = "beacon:sdk_version",\n MATRIX_PRESERVED_STATE = "beacon:sdk-matrix-preserved-state",\n MATRIX_PEER_ROOM_IDS = "beacon:matrix-peer-rooms",\n MATRIX_SELECTED_NODE = "beacon:matrix-selected-node",\n MULTI_NODE_SETUP_DONE = "beacon:multi-node-setup",\n WC_2_CORE_PAIRING = "wc@2:core:0.3//pairing",\n WC_2_CLIENT_SESSION = "wc@2:client:0.3//session",\n WC_2_CORE_KEYCHAIN = "wc@2:core:0.3//keychain",\n WC_2_CORE_MESSAGES = "wc@2:core:0.3//messages",\n WC_2_CLIENT_PROPOSAL = "wc@2:client:0.3//proposal",\n WC_2_CORE_SUBSCRIPTION = "wc@2:core:0.3//subscription",\n WC_2_CORE_HISTORY = "wc@2:core:0.3//history",\n WC_2_CORE_EXPIRER = "wc@2:core:0.3//expirer"\n}\n'},{name:"@airgap/beacon-types/types/storage/StorageKeyReturnDefaults.d.ts",dts:"import { StorageKey, StorageKeyReturnType } from '../..';\n/**\n * @internalapi\n */\nexport type StorageKeyReturnDefaults = {\n [key in StorageKey]: StorageKeyReturnType[key];\n};\n/**\n * @internalapi\n */\nexport declare const defaultValues: StorageKeyReturnDefaults;\n"},{name:"@airgap/beacon-types/types/storage/StorageKeyReturnType.d.ts",dts:"import { StorageKey, AccountInfo, AccountIdentifier, P2PPairingRequest, AppMetadata, PermissionInfo, ExtendedWalletConnectPairingResponse, RequestProofOfEventChallengeInput } from '../..';\nimport { ExtendedP2PPairingResponse } from '../P2PPairingResponse';\nimport { PostMessagePairingRequest } from '../PostMessagePairingRequest';\nimport { ExtendedPostMessagePairingResponse } from '../PostMessagePairingResponse';\nimport { PushToken } from '../PushToken';\n/**\n * @internalapi\n */\nexport interface StorageKeyReturnType {\n [StorageKey.TRANSPORT_P2P_PEERS_DAPP]: P2PPairingRequest[];\n [StorageKey.TRANSPORT_P2P_PEERS_WALLET]: ExtendedP2PPairingResponse[];\n [StorageKey.TRANSPORT_POSTMESSAGE_PEERS_DAPP]: PostMessagePairingRequest[];\n [StorageKey.TRANSPORT_POSTMESSAGE_PEERS_WALLET]: ExtendedPostMessagePairingResponse[];\n [StorageKey.TRANSPORT_WALLETCONNECT_PEERS_DAPP]: ExtendedWalletConnectPairingResponse[];\n [StorageKey.LAST_SELECTED_WALLET]: string | undefined;\n [StorageKey.ACCOUNTS]: AccountInfo[];\n [StorageKey.ACTIVE_ACCOUNT]: AccountIdentifier | undefined;\n [StorageKey.PUSH_TOKENS]: PushToken[];\n [StorageKey.BEACON_SDK_SECRET_SEED]: string | undefined;\n [StorageKey.APP_METADATA_LIST]: AppMetadata[];\n [StorageKey.PERMISSION_LIST]: PermissionInfo[];\n [StorageKey.ONGOING_PROOF_OF_EVENT_CHALLENGES]: ({\n contractAddress: string;\n accountIdentifier: string;\n } & RequestProofOfEventChallengeInput)[];\n [StorageKey.BEACON_SDK_VERSION]: string | undefined;\n [StorageKey.MATRIX_PRESERVED_STATE]: {\n [key: string]: unknown;\n };\n [StorageKey.MATRIX_PEER_ROOM_IDS]: {\n [key: string]: string | undefined;\n };\n [StorageKey.MATRIX_SELECTED_NODE]: string | undefined;\n [StorageKey.MULTI_NODE_SETUP_DONE]: boolean | undefined;\n [StorageKey.WC_2_CLIENT_SESSION]: string | undefined;\n [StorageKey.WC_2_CORE_PAIRING]: string | undefined;\n [StorageKey.WC_2_CORE_KEYCHAIN]: string | undefined;\n [StorageKey.WC_2_CORE_MESSAGES]: string | undefined;\n [StorageKey.WC_2_CLIENT_PROPOSAL]: string | undefined;\n [StorageKey.WC_2_CORE_SUBSCRIPTION]: string | undefined;\n [StorageKey.WC_2_CORE_HISTORY]: string | undefined;\n [StorageKey.WC_2_CORE_EXPIRER]: string | undefined;\n}\n"},{name:"@airgap/beacon-types/types/tezos/operations/ActivateAccount.d.ts",dts:"import { TezosBaseOperation, TezosOperationType } from '../../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosActivateAccountOperation extends TezosBaseOperation {\n kind: TezosOperationType.ACTIVATE_ACCOUNT;\n pkh: string;\n secret: string;\n}\n"},{name:"@airgap/beacon-types/types/tezos/operations/Ballot.d.ts",dts:"import { TezosBaseOperation, TezosOperationType } from '../../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosBallotOperation extends TezosBaseOperation {\n kind: TezosOperationType.BALLOT;\n source: string;\n period: string;\n proposal: string;\n ballot: 'nay' | 'yay' | 'pass';\n}\n"},{name:"@airgap/beacon-types/types/tezos/operations/Delegation.d.ts",dts:"import { TezosBaseOperation, TezosOperationType } from '../../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosDelegationOperation extends TezosBaseOperation {\n kind: TezosOperationType.DELEGATION;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n delegate?: string;\n}\n"},{name:"@airgap/beacon-types/types/tezos/operations/DoubleBakingEvidence.d.ts",dts:"import { TezosBaseOperation, TezosOperationType, TezosBlockHeader } from '../../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosDoubleBakingEvidenceOperation extends TezosBaseOperation {\n kind: TezosOperationType.DOUBLE_BAKING_EVIDENCE;\n bh1: TezosBlockHeader;\n bh2: TezosBlockHeader;\n}\n"},{name:"@airgap/beacon-types/types/tezos/operations/DoubleEndorsementEvidence.d.ts",dts:"import { TezosBaseOperation, TezosOperationType } from '../../..';\nexport interface InlinedEndorsement {\n branch: string;\n operations: InlinedEndorsementContents;\n signature?: string;\n}\nexport interface InlinedEndorsementContents {\n kind: TezosOperationType.ENDORSEMENT;\n level: string;\n}\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosDoubleEndorsementEvidenceOperation extends TezosBaseOperation {\n kind: TezosOperationType.DOUBLE_ENDORSEMENT_EVIDENCE;\n op1: InlinedEndorsement;\n op2: InlinedEndorsement;\n}\n"},{name:"@airgap/beacon-types/types/tezos/operations/Endorsement.d.ts",dts:"import { TezosBaseOperation, TezosOperationType } from '../../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosEndorsementOperation extends TezosBaseOperation {\n kind: TezosOperationType.ENDORSEMENT;\n level: string;\n}\n"},{name:"@airgap/beacon-types/types/tezos/operations/Origination.d.ts",dts:"import { TezosBaseOperation, TezosOperationType } from '../../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosOriginationOperation extends TezosBaseOperation {\n kind: TezosOperationType.ORIGINATION;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n balance: string;\n delegate?: string;\n script: string;\n}\n"},{name:"@airgap/beacon-types/types/tezos/operations/Proposal.d.ts",dts:"import { TezosBaseOperation, TezosOperationType } from '../../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosProposalOperation extends TezosBaseOperation {\n kind: TezosOperationType.PROPOSALS;\n period: string;\n proposals: string[];\n}\n"},{name:"@airgap/beacon-types/types/tezos/operations/Reveal.d.ts",dts:"import { TezosBaseOperation, TezosOperationType } from '../../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosRevealOperation extends TezosBaseOperation {\n kind: TezosOperationType.REVEAL;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n public_key: string;\n}\n"},{name:"@airgap/beacon-types/types/tezos/operations/SeedNonceRevelation.d.ts",dts:"import { TezosBaseOperation, TezosOperationType } from '../../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosSeedNonceRevelationOperation extends TezosBaseOperation {\n kind: TezosOperationType.SEED_NONCE_REVELATION;\n level: string;\n nonce: string;\n}\n"},{name:"@airgap/beacon-types/types/tezos/operations/Transaction.d.ts",dts:"import { TezosBaseOperation, TezosOperationType, TezosTransactionParameters } from '../../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosTransactionOperation extends TezosBaseOperation {\n kind: TezosOperationType.TRANSACTION;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n amount: string;\n destination: string;\n parameters?: TezosTransactionParameters;\n}\n"},{name:"@airgap/beacon-types/types/tezos/MichelineMichelsonV1Expression.d.ts",dts:"import { MichelsonPrimitives } from '../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport type MichelineMichelsonV1Expression = {\n int: string;\n} | {\n string: string;\n} | {\n bytes: string;\n} | MichelineMichelsonV1Expression[] | {\n prim: MichelsonPrimitives;\n args?: MichelineMichelsonV1Expression[];\n annots?: string[];\n};\n"},{name:"@airgap/beacon-types/types/tezos/MichelsonPrimitives.d.ts",dts:"/**\n * @internalapi\n * @category Tezos\n */\nexport type MichelsonPrimitives = 'ADD' | 'IF_NONE' | 'SWAP' | 'set' | 'nat' | 'CHECK_SIGNATURE' | 'IF_LEFT' | 'LAMBDA' | 'Elt' | 'CREATE_CONTRACT' | 'NEG' | 'big_map' | 'map' | 'or' | 'BLAKE2B' | 'bytes' | 'SHA256' | 'SET_DELEGATE' | 'CONTRACT' | 'LSL' | 'SUB' | 'IMPLICIT_ACCOUNT' | 'PACK' | 'list' | 'PAIR' | 'Right' | 'contract' | 'GT' | 'LEFT' | 'STEPS_TO_QUOTA' | 'storage' | 'TRANSFER_TOKENS' | 'CDR' | 'SLICE' | 'PUSH' | 'False' | 'SHA512' | 'CHAIN_ID' | 'BALANCE' | 'signature' | 'DUG' | 'SELF' | 'EMPTY_BIG_MAP' | 'LSR' | 'OR' | 'XOR' | 'lambda' | 'COMPARE' | 'key' | 'option' | 'Unit' | 'Some' | 'UNPACK' | 'NEQ' | 'INT' | 'pair' | 'AMOUNT' | 'DIP' | 'ABS' | 'ISNAT' | 'EXEC' | 'NOW' | 'LOOP' | 'chain_id' | 'string' | 'MEM' | 'MAP' | 'None' | 'address' | 'CONCAT' | 'EMPTY_SET' | 'MUL' | 'LOOP_LEFT' | 'timestamp' | 'LT' | 'UPDATE' | 'DUP' | 'SOURCE' | 'mutez' | 'SENDER' | 'IF_CONS' | 'RIGHT' | 'CAR' | 'CONS' | 'LE' | 'NONE' | 'IF' | 'SOME' | 'GET' | 'Left' | 'CAST' | 'int' | 'SIZE' | 'key_hash' | 'unit' | 'DROP' | 'EMPTY_MAP' | 'NIL' | 'DIG' | 'APPLY' | 'bool' | 'RENAME' | 'operation' | 'True' | 'FAILWITH' | 'parameter' | 'HASH_KEY' | 'EQ' | 'NOT' | 'UNIT' | 'Pair' | 'ADDRESS' | 'EDIV' | 'CREATE_ACCOUNT' | 'GE' | 'ITER' | 'code' | 'AND';\n"},{name:"@airgap/beacon-types/types/tezos/OperationTypes.d.ts",dts:'/**\n * @publicapi\n * @category Tezos\n */\nexport declare enum TezosOperationType {\n ENDORSEMENT = "endorsement",\n SEED_NONCE_REVELATION = "seed_nonce_revelation",\n DOUBLE_ENDORSEMENT_EVIDENCE = "double_endorsement_evidence",\n DOUBLE_BAKING_EVIDENCE = "double_baking_evidence",\n ACTIVATE_ACCOUNT = "activate_account",\n PROPOSALS = "proposals",\n BALLOT = "ballot",\n REVEAL = "reveal",\n TRANSACTION = "transaction",\n ORIGINATION = "origination",\n DELEGATION = "delegation"\n}\n'},{name:"@airgap/beacon-types/types/tezos/PartialTezosOperation.d.ts",dts:"import { Optional } from '@airgap/beacon-types';\nimport { TezosActivateAccountOperation } from './operations/ActivateAccount';\nimport { TezosBallotOperation } from './operations/Ballot';\nimport { TezosDelegationOperation } from './operations/Delegation';\nimport { TezosDoubleBakingEvidenceOperation } from './operations/DoubleBakingEvidence';\nimport { TezosEndorsementOperation } from './operations/Endorsement';\nimport { TezosOriginationOperation } from './operations/Origination';\nimport { TezosProposalOperation } from './operations/Proposal';\nimport { TezosRevealOperation } from './operations/Reveal';\nimport { TezosSeedNonceRevelationOperation } from './operations/SeedNonceRevelation';\nimport { TezosTransactionOperation } from './operations/Transaction';\n/**\n * @publicapi\n * @category Tezos\n */\nexport type omittedProperties = 'source' | 'fee' | 'counter' | 'gas_limit' | 'storage_limit';\n/**\n * @internalapi\n * @category Tezos\n */\nexport type PartialTezosDelegationOperation = Optional;\n/**\n * @internalapi\n * @category Tezos\n */\nexport type PartialTezosOriginationOperation = Optional;\n/**\n * @internalapi\n * @category Tezos\n */\nexport type PartialTezosRevealOperation = Optional;\n/**\n * @internalapi\n * @category Tezos\n */\nexport type PartialTezosTransactionOperation = Optional;\n/**\n * @publicapi\n * @category Tezos\n */\nexport type PartialTezosOperation = TezosActivateAccountOperation | TezosBallotOperation | PartialTezosDelegationOperation | TezosDoubleBakingEvidenceOperation | TezosEndorsementOperation | PartialTezosOriginationOperation | TezosProposalOperation | PartialTezosRevealOperation | TezosSeedNonceRevelationOperation | PartialTezosTransactionOperation;\n"},{name:"@airgap/beacon-types/types/tezos/TezosBaseOperation.d.ts",dts:"import { TezosOperationType } from '../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosBaseOperation {\n kind: TezosOperationType;\n}\n"},{name:"@airgap/beacon-types/types/tezos/TezosBlockHeader.d.ts",dts:"/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosBlockHeader {\n level: number;\n proto: number;\n predecessor: string;\n timestamp: string;\n validation_pass: number;\n operations_hash: string;\n fitness: string[];\n context: string;\n priority: number;\n proof_of_work_nonce: string;\n signature: string;\n}\n"},{name:"@airgap/beacon-types/types/tezos/TezosOperation.d.ts",dts:"import { TezosActivateAccountOperation, TezosBallotOperation, TezosDelegationOperation, TezosDoubleBakingEvidenceOperation, TezosEndorsementOperation, TezosOriginationOperation, TezosProposalOperation, TezosRevealOperation, TezosSeedNonceRevelationOperation, TezosTransactionOperation } from '../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport type TezosOperation = TezosActivateAccountOperation | TezosBallotOperation | TezosDelegationOperation | TezosDoubleBakingEvidenceOperation | TezosEndorsementOperation | TezosOriginationOperation | TezosProposalOperation | TezosRevealOperation | TezosSeedNonceRevelationOperation | TezosTransactionOperation;\n"},{name:"@airgap/beacon-types/types/tezos/TezosTransactionParameters.d.ts",dts:"import { MichelineMichelsonV1Expression } from './MichelineMichelsonV1Expression';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosTransactionParameters {\n entrypoint: 'default' | 'root' | 'do' | 'set_delegate' | 'remove_delegate' | string;\n value: MichelineMichelsonV1Expression;\n}\n"},{name:"@airgap/beacon-types/types/transport/TransportStatus.d.ts",dts:'export declare enum TransportStatus {\n NOT_CONNECTED = "NOT_CONNECTED",\n CONNECTING = "CONNECTING",\n CONNECTED = "CONNECTED"\n}\n'},{name:"@airgap/beacon-types/types/transport/TransportType.d.ts",dts:'/**\n * @internalapi\n */\nexport declare enum TransportType {\n CHROME_MESSAGE = "chrome_message",\n WALLETCONNECT = "walletconnect",\n POST_MESSAGE = "post_message",\n LEDGER = "ledger",\n P2P = "p2p"\n}\n'},{name:"@airgap/beacon-types/types/utils/Optional.d.ts",dts:"export type Optional = Partial & Omit;\n"},{name:"@airgap/beacon-types/types/AccountInfo.d.ts",dts:"import { Origin } from '..';\nimport { PermissionEntity } from './PermissionEntity';\nimport { Notification } from './Notification';\nexport type AccountIdentifier = string;\nexport interface AccountInfo extends PermissionEntity {\n accountIdentifier: AccountIdentifier;\n senderId: string;\n origin: {\n type: Origin;\n id: string;\n };\n walletKey?: string;\n publicKey?: string;\n connectedAt: number;\n notification?: Notification;\n hasVerifiedChallenge?: boolean;\n walletType: 'implicit' | 'abstracted_account';\n verificationType?: 'proof_of_event';\n}\n"},{name:"@airgap/beacon-types/types/AnalyticsInterface.d.ts",dts:"export interface AnalyticsInterface {\n track(trigger: 'click' | 'event', section: string, label: string, data?: Record): void;\n}\n"},{name:"@airgap/beacon-types/types/BeaconErrorType.d.ts",dts:'export declare enum BeaconErrorType {\n /**\n * {@link BroadcastBeaconError}\n *\n * Will be returned if the user chooses that the transaction is broadcast but there is an error (eg. node not available).\n *\n * Returned by: Broadcast | Operation Request\n */\n BROADCAST_ERROR = "BROADCAST_ERROR",\n /**\n * {@link NetworkNotSupportedBeaconError}\n *\n * Will be returned if the selected network is not supported by the wallet / extension.\n *\n * Returned by: Permission\n */\n NETWORK_NOT_SUPPORTED = "NETWORK_NOT_SUPPORTED",\n /**\n * {@link NoAddressBeaconError}\n *\n * Will be returned if there is no address present for the protocol / network requested.\n *\n * Returned by: Permission\n */\n NO_ADDRESS_ERROR = "NO_ADDRESS_ERROR",\n /**\n * {@link NoPrivateKeyBeaconError}\n *\n * Will be returned if the private key matching the sourceAddress could not be found.\n *\n * Returned by: Sign\n */\n NO_PRIVATE_KEY_FOUND_ERROR = "NO_PRIVATE_KEY_FOUND_ERROR",\n /**\n * {@link NotGrantedBeaconError}\n *\n * Will be returned if the signature was blocked // (Not needed?) Permission: Will be returned if the permissions requested by the App were not granted.\n *\n * Returned by: Sign\n */\n NOT_GRANTED_ERROR = "NOT_GRANTED_ERROR",\n /**\n * {@link ParametersInvalidBeaconError}\n *\n * Will be returned if any of the parameters are invalid.\n *\n * Returned by: Operation Request\n */\n PARAMETERS_INVALID_ERROR = "PARAMETERS_INVALID_ERROR",\n /**\n * {@link TooManyOperationsBeaconError}\n *\n * Will be returned if too many operations were in the request and they were not able to fit into a single operation group.\n *\n * Returned by: Operation Request\n */\n TOO_MANY_OPERATIONS = "TOO_MANY_OPERATIONS",\n /**\n * {@link TransactionInvalidBeaconError}\n *\n * Will be returned if the transaction is not parsable or is rejected by the node.\n *\n * Returned by: Broadcast\n */\n TRANSACTION_INVALID_ERROR = "TRANSACTION_INVALID_ERROR",\n /**\n * {@link SignatureTypeNotSupportedBeaconError}\n *\n * Will be returned if the signing type is not supported.\n *\n * Returned by: Sign\n */\n SIGNATURE_TYPE_NOT_SUPPORTED = "SIGNATURE_TYPE_NOT_SUPPORTED",\n /**\n * {@link AbortedBeaconError}\n *\n * Will be returned if the request was aborted by the user or the wallet.\n *\n * Returned by: Permission | Operation Request | Sign Request | Broadcast\n */\n ABORTED_ERROR = "ABORTED_ERROR",\n /**\n * {@link UnknownBeaconError}\n *\n * Used as a wildcard if an unexpected error occured.\n *\n * Returned by: Permission | Operation Request | Sign Request | Broadcast\n */\n UNKNOWN_ERROR = "UNKNOWN_ERROR"\n}\n'},{name:"@airgap/beacon-types/types/ColorMode.d.ts",dts:'export declare enum ColorMode {\n LIGHT = "light",\n DARK = "dark"\n}\n'},{name:"@airgap/beacon-types/types/ConnectionContext.d.ts",dts:"/// \nimport { Origin } from '..';\n/**\n * @internalapi\n */\nexport interface ConnectionContext {\n origin: Origin;\n id: string;\n extras?: {\n sender: chrome.runtime.MessageSender;\n sendResponse(response?: unknown): void;\n };\n}\n"},{name:"@airgap/beacon-types/types/EncryptionOperation.d.ts",dts:""},{name:"@airgap/beacon-types/types/EncryptionType.d.ts",dts:""},{name:"@airgap/beacon-types/types/Extension.d.ts",dts:"export interface Extension {\n id: string;\n name: string;\n shortName?: string;\n iconUrl?: string;\n color?: string;\n}\n"},{name:"@airgap/beacon-types/types/ExtensionMessage.d.ts",dts:"import { ExtensionMessageTarget } from '..';\n/**\n * @internalapi\n */\nexport interface ExtensionMessage {\n target: ExtensionMessageTarget;\n targetId?: string;\n sender?: U;\n payload: T;\n}\n/**\n * @internalapi\n */\nexport interface EncryptedExtensionMessage {\n target: ExtensionMessageTarget;\n targetId?: string;\n sender?: U;\n encryptedPayload: string;\n}\n"},{name:"@airgap/beacon-types/types/ExtensionMessageTarget.d.ts",dts:'/**\n * @internalapi\n */\nexport declare enum ExtensionMessageTarget {\n BACKGROUND = "toBackground",\n PAGE = "toPage",\n EXTENSION = "toExtension"\n}\n'},{name:"@airgap/beacon-types/types/Notification.d.ts",dts:"export interface Notification {\n version: number;\n apiUrl: string;\n token: string;\n}\n"},{name:"@airgap/beacon-types/types/Origin.d.ts",dts:'/**\n * @internalapi\n */\nexport declare enum Origin {\n WEBSITE = "website",\n EXTENSION = "extension",\n P2P = "p2p",\n WALLETCONNECT = "walletconnect"\n}\n'},{name:"@airgap/beacon-types/types/P2PPairingRequest.d.ts",dts:"import { ExtendedPeerInfo, PeerInfo } from './PeerInfo';\n/**\n * @internalapi\n */\nexport declare class P2PPairingRequest implements PeerInfo {\n readonly type: string;\n relayServer: string;\n id: string;\n name: string;\n icon?: string | undefined;\n appUrl?: string | undefined;\n publicKey: string;\n version: string;\n constructor(id: string, name: string, publicKey: string, version: string, relayServer: string, icon?: string, appUrl?: string);\n}\n/**\n * @internalapi\n */\nexport declare class ExtendedP2PPairingRequest extends P2PPairingRequest implements ExtendedPeerInfo {\n senderId: string;\n constructor(id: string, name: string, publicKey: string, version: string, relayServer: string, senderId: string, icon?: string, appUrl?: string);\n}\n"},{name:"@airgap/beacon-types/types/P2PPairingResponse.d.ts",dts:"import { ExtendedPeerInfo, PeerInfo } from './PeerInfo';\n/**\n * @internalapi\n */\nexport declare class P2PPairingResponse implements PeerInfo {\n readonly type: string;\n relayServer: string;\n id: string;\n name: string;\n icon?: string | undefined;\n appUrl?: string | undefined;\n publicKey: string;\n version: string;\n constructor(id: string, name: string, publicKey: string, version: string, relayServer: string, icon?: string, appUrl?: string);\n}\n/**\n * @internalapi\n */\nexport declare class ExtendedP2PPairingResponse extends P2PPairingResponse implements ExtendedPeerInfo {\n senderId: string;\n constructor(id: string, name: string, publicKey: string, version: string, relayServer: string, senderId: string, icon?: string, appUrl?: string);\n}\n"},{name:"@airgap/beacon-types/types/PeerInfo.d.ts",dts:"export interface PeerInfo {\n id: string;\n name: string;\n type: string;\n icon?: string;\n appUrl?: string;\n publicKey: string;\n version: string;\n}\nexport interface ExtendedPeerInfo extends PeerInfo {\n senderId: string;\n}\nexport type PeerInfoType = PeerInfo | ExtendedPeerInfo;\n"},{name:"@airgap/beacon-types/types/PermissionEntity.d.ts",dts:"import { Network, PermissionScope, Threshold } from '..';\nexport interface PermissionEntity {\n address: string;\n network: Network;\n scopes: PermissionScope[];\n threshold?: Threshold;\n}\n"},{name:"@airgap/beacon-types/types/PermissionInfo.d.ts",dts:"import { AppMetadata } from '..';\nimport { PermissionEntity } from './PermissionEntity';\nexport interface PermissionInfo extends PermissionEntity {\n accountIdentifier: string;\n senderId: string;\n appMetadata: AppMetadata;\n website: string;\n publicKey?: string;\n connectedAt: number;\n}\n"},{name:"@airgap/beacon-types/types/PostMessagePairingRequest.d.ts",dts:"import { ExtendedPeerInfo, PeerInfo } from './PeerInfo';\n/**\n * @internalapi\n */\nexport declare class PostMessagePairingRequest implements PeerInfo {\n readonly type: string;\n id: string;\n name: string;\n icon?: string | undefined;\n appUrl?: string | undefined;\n publicKey: string;\n version: string;\n constructor(id: string, name: string, publicKey: string, version: string, icon?: string, appUrl?: string);\n}\n/**\n * @internalapi\n */\nexport declare class ExtendedPostMessagePairingRequest extends PostMessagePairingRequest implements ExtendedPeerInfo {\n senderId: string;\n constructor(id: string, name: string, publicKey: string, version: string, senderId: string, icon?: string, appUrl?: string);\n}\n"},{name:"@airgap/beacon-types/types/PostMessagePairingResponse.d.ts",dts:"import { ExtendedPeerInfo, PeerInfo } from './PeerInfo';\n/**\n * @internalapi\n */\nexport declare class PostMessagePairingResponse implements PeerInfo {\n readonly type: string;\n id: string;\n name: string;\n icon?: string | undefined;\n appUrl?: string | undefined;\n publicKey: string;\n version: string;\n constructor(id: string, name: string, publicKey: string, version: string, icon?: string, appUrl?: string);\n}\n/**\n * @internalapi\n */\nexport declare class ExtendedPostMessagePairingResponse extends PostMessagePairingResponse implements ExtendedPeerInfo {\n senderId: string;\n extensionId: string;\n constructor(id: string, name: string, publicKey: string, version: string, senderId: string, extensionId: string, icon?: string, appUrl?: string);\n}\n"},{name:"@airgap/beacon-types/types/PushToken.d.ts",dts:"export interface PushToken {\n publicKey: string;\n backendUrl: string;\n accessToken: string;\n managementToken: string;\n}\n"},{name:"@airgap/beacon-types/types/Regions.d.ts",dts:'/**\n * Geographic region where a beacon node is located. This list can be changed in the future to be more specific, but for now it should cover most general areas.\n */\nexport declare enum Regions {\n EUROPE_EAST = "europe-east",\n EUROPE_WEST = "europe-west",\n NORTH_AMERICA_EAST = "north-america-east",\n NORTH_AMERICA_WEST = "north-america-west",\n CENTRAL_AMERICA = "central-america",\n SOUTH_AMERICA = "south-america",\n ASIA_EAST = "asia-east",\n ASIA_WEST = "asia-west",\n AFRICA = "africa",\n AUSTRALIA = "australia"\n}\nexport type NodeDistributions = Record;\n'},{name:"@airgap/beacon-types/types/RequestBroadcastInput.d.ts",dts:"import { Network } from '..';\n/**\n * @category DApp\n */\nexport interface RequestBroadcastInput {\n /**\n * @deprecated You should now specify the network in the constructor of the DAppClient\n */\n network?: Network;\n signedTransaction: string;\n}\n"},{name:"@airgap/beacon-types/types/RequestEncryptPayloadInput.d.ts",dts:"/**\n * @category DApp\n */\n"},{name:"@airgap/beacon-types/types/RequestOperationInput.d.ts",dts:"import { PartialTezosOperation } from './tezos/PartialTezosOperation';\n/**\n * @category DApp\n */\nexport interface RequestOperationInput {\n operationDetails: PartialTezosOperation[];\n}\n"},{name:"@airgap/beacon-types/types/RequestPermissionInput.d.ts",dts:"import { Network, PermissionScope } from '..';\n/**\n * @category DApp\n */\nexport interface RequestPermissionInput {\n /**\n * @deprecated You should now specify the network in the constructor of the DAppClient\n */\n network?: Network;\n scopes?: PermissionScope[];\n}\n"},{name:"@airgap/beacon-types/types/RequestProofOfEventChallengeInput.d.ts",dts:"/**\n * @category DApp\n */\nexport interface RequestProofOfEventChallengeInput {\n dAppChallengeId: string;\n payload: string;\n}\n"},{name:"@airgap/beacon-types/types/RequestSignPayloadInput.d.ts",dts:"import { SigningType } from '..';\n/**\n * @category DApp\n */\nexport interface RequestSignPayloadInput {\n signingType?: SigningType;\n payload: string;\n sourceAddress?: string;\n}\n"},{name:"@airgap/beacon-types/types/WalletConnectPairingRequest.d.ts",dts:"import { ExtendedPeerInfo, PeerInfo } from './PeerInfo';\n/**\n * @internalapi\n */\nexport declare class WalletConnectPairingRequest implements PeerInfo {\n readonly type: string;\n uri: string;\n id: string;\n name: string;\n icon?: string | undefined;\n appUrl?: string | undefined;\n publicKey: string;\n version: string;\n constructor(id: string, name: string, publicKey: string, version: string, uri: string, icon?: string, appUrl?: string);\n}\n/**\n * @internalapi\n */\nexport declare class ExtendedWalletConnectPairingRequest extends WalletConnectPairingRequest implements ExtendedPeerInfo {\n senderId: string;\n constructor(id: string, name: string, publicKey: string, version: string, senderId: string, uri: string, icon?: string, appUrl?: string);\n}\n"},{name:"@airgap/beacon-types/types/WalletConnectPairingResponse.d.ts",dts:"import { PeerInfo } from './PeerInfo';\n/**\n * @internalapi\n */\nexport declare class WalletConnectPairingResponse implements PeerInfo {\n readonly type: string;\n id: string;\n name: string;\n icon?: string | undefined;\n appUrl?: string | undefined;\n publicKey: string;\n version: string;\n constructor(id: string, name: string, publicKey: string, version: string, icon?: string, appUrl?: string);\n}\n/**\n * @internalapi\n */\nexport declare class ExtendedWalletConnectPairingResponse extends WalletConnectPairingResponse {\n senderId: string;\n extensionId: string;\n constructor(id: string, name: string, publicKey: string, version: string, senderId: string, extensionId: string, icon?: string, appUrl?: string);\n}\n"},{name:"@airgap/beacon-types/types/WalletInfo.d.ts",dts:"export interface WalletInfo {\n name: string;\n type?: 'extension' | 'mobile' | 'web' | 'desktop';\n icon?: string;\n deeplink?: string;\n}\n"},{name:"@airgap/beacon-types/types/ui.d.ts",dts:"import { NetworkType } from './beacon/NetworkType';\nexport interface AppBase {\n key: string;\n name: string;\n shortName: string;\n color: string;\n logo: string;\n supportedInteractionStandards?: ('wallet_connect' | 'beacon')[];\n}\nexport interface ExtensionApp extends AppBase {\n id: string;\n link: string;\n}\nexport interface WebApp extends AppBase {\n links: {\n [NetworkType.MAINNET]: string;\n [NetworkType.GHOSTNET]?: string;\n [NetworkType.WEEKLYNET]?: string;\n [NetworkType.DAILYNET]?: string;\n [NetworkType.DELPHINET]?: string;\n [NetworkType.EDONET]?: string;\n [NetworkType.FLORENCENET]?: string;\n [NetworkType.GRANADANET]?: string;\n [NetworkType.HANGZHOUNET]?: string;\n [NetworkType.ITHACANET]?: string;\n [NetworkType.JAKARTANET]?: string;\n [NetworkType.KATHMANDUNET]?: string;\n [NetworkType.LIMANET]?: string;\n [NetworkType.MUMBAINET]?: string;\n [NetworkType.NAIROBINET]?: string;\n [NetworkType.OXFORDNET]?: string;\n [NetworkType.CUSTOM]?: string;\n };\n}\nexport interface DesktopApp extends AppBase {\n deepLink: string;\n downloadLink: string;\n}\nexport interface App extends AppBase {\n universalLink: string;\n deepLink?: string;\n}\n"},{name:"@airgap/beacon-types/index.d.ts",dts:"/**\n * General docs\n * @module public\n */\nimport { AppMetadata } from './types/beacon/AppMetadata';\nimport { PermissionRequest } from './types/beacon/messages/PermissionRequest';\nimport { ProofOfEventChallengeRequest } from './types/beacon/messages/ProofOfEventChallengeRequest';\nimport { ProofOfEventChallengeResponse } from './types/beacon/messages/ProofOfEventChallengeResponse';\nimport { ProofOfEventChallengeRecordedRequest } from './types/beacon/messages/ProofOfEventChallengeRecordedRequest';\nimport { Network } from './types/beacon/Network';\nimport { BeaconBaseMessage } from './types/beacon/BeaconBaseMessage';\nimport { BeaconMessageType } from './types/beacon/BeaconMessageType';\nimport { PermissionScope } from './types/beacon/PermissionScope';\nimport { PermissionResponse } from './types/beacon/messages/PermissionResponse';\nimport { OperationRequest } from './types/beacon/messages/OperationRequest';\nimport { OperationResponse } from './types/beacon/messages/OperationResponse';\nimport { SignPayloadRequest } from './types/beacon/messages/SignPayloadRequest';\nimport { SignPayloadResponse } from './types/beacon/messages/SignPayloadResponse';\nimport { BroadcastRequest } from './types/beacon/messages/BroadcastRequest';\nimport { BroadcastResponse } from './types/beacon/messages/BroadcastResponse';\nimport { NetworkType } from './types/beacon/NetworkType';\nimport { TezosBaseOperation } from './types/tezos/TezosBaseOperation';\nimport { TezosOperationType } from './types/tezos/OperationTypes';\nimport { TezosActivateAccountOperation } from './types/tezos/operations/ActivateAccount';\nimport { TezosBallotOperation } from './types/tezos/operations/Ballot';\nimport { TezosDelegationOperation } from './types/tezos/operations/Delegation';\nimport { TezosDoubleBakingEvidenceOperation } from './types/tezos/operations/DoubleBakingEvidence';\nimport { TezosBlockHeader } from './types/tezos/TezosBlockHeader';\nimport { TezosDoubleEndorsementEvidenceOperation } from './types/tezos/operations/DoubleEndorsementEvidence';\nimport { TezosEndorsementOperation } from './types/tezos/operations/Endorsement';\nimport { TezosOriginationOperation } from './types/tezos/operations/Origination';\nimport { TezosProposalOperation } from './types/tezos/operations/Proposal';\nimport { TezosRevealOperation } from './types/tezos/operations/Reveal';\nimport { TezosSeedNonceRevelationOperation } from './types/tezos/operations/SeedNonceRevelation';\nimport { TezosTransactionOperation } from './types/tezos/operations/Transaction';\nimport { MichelineMichelsonV1Expression } from './types/tezos/MichelineMichelsonV1Expression';\nimport { MichelsonPrimitives } from './types/tezos/MichelsonPrimitives';\nimport { TezosTransactionParameters } from './types/tezos/TezosTransactionParameters';\nimport { Origin } from './types/Origin';\nimport { AccountInfo, AccountIdentifier } from './types/AccountInfo';\nimport { EncryptedExtensionMessage, ExtensionMessage } from './types/ExtensionMessage';\nimport { ExtensionMessageTarget } from './types/ExtensionMessageTarget';\nimport { TezosOperation } from './types/tezos/TezosOperation';\nimport { BeaconErrorType } from './types/BeaconErrorType';\nimport { ErrorResponse } from './types/beacon/messages/ErrorResponse';\nimport { TransportStatus } from './types/transport/TransportStatus';\nimport { TransportType } from './types/transport/TransportType';\nimport { Storage } from './types/storage/Storage';\nimport { StorageKey } from './types/storage/StorageKey';\nimport { defaultValues, StorageKeyReturnDefaults } from './types/storage/StorageKeyReturnDefaults';\nimport { StorageKeyReturnType } from './types/storage/StorageKeyReturnType';\nimport { ExtendedP2PPairingRequest, P2PPairingRequest } from './types/P2PPairingRequest';\nimport { BeaconMessage } from './types/beacon/BeaconMessage';\nimport { RequestPermissionInput } from './types/RequestPermissionInput';\nimport { RequestProofOfEventChallengeInput } from './types/RequestProofOfEventChallengeInput';\nimport { RequestSignPayloadInput } from './types/RequestSignPayloadInput';\nimport { RequestOperationInput } from './types/RequestOperationInput';\nimport { RequestBroadcastInput } from './types/RequestBroadcastInput';\nimport { PermissionResponseInput, SignPayloadResponseInput, OperationResponseInput, BroadcastResponseInput, BeaconResponseInputMessage, AcknowledgeResponseInput, ErrorResponseInput, IgnoredResponseInputProperties } from './types/beacon/messages/BeaconResponseInputMessage';\nimport { PermissionResponseOutput, SignPayloadResponseOutput, OperationResponseOutput, BroadcastResponseOutput, BeaconResponseOutputMessage, ProofOfEventChallengeResponseOutput } from './types/beacon/messages/BeaconResponseOutputMessage';\nimport { PermissionRequestInput, SignPayloadRequestInput, OperationRequestInput, BroadcastRequestInput, BeaconRequestInputMessage, IgnoredRequestInputProperties, ProofOfEventChallengeRecordedMessageInput, ProofOfEventChallengeRequestInput } from './types/beacon/messages/BeaconRequestInputMessage';\nimport { PermissionRequestOutput, SignPayloadRequestOutput, OperationRequestOutput, BroadcastRequestOutput, BeaconRequestOutputMessage, ProofOfEventChallengeRequestOutput, ProofOfEventChallengeRecordedMessageOutput } from './types/beacon/messages/BeaconRequestOutputMessage';\nimport { PermissionInfo } from './types/PermissionInfo';\nimport { ConnectionContext } from './types/ConnectionContext';\nimport { Threshold } from './types/beacon/Threshold';\nimport { PartialTezosTransactionOperation, PartialTezosOperation, PartialTezosDelegationOperation, PartialTezosOriginationOperation, PartialTezosRevealOperation } from './types/tezos/PartialTezosOperation';\nimport { ExtendedPeerInfo, PeerInfo, PeerInfoType } from './types/PeerInfo';\nimport { AcknowledgeResponse } from './types/beacon/messages/AcknowledgeResponse';\nimport { DisconnectMessage } from './types/beacon/messages/DisconnectMessage';\nimport { SigningType } from './types/beacon/SigningType';\nimport { ExtendedP2PPairingResponse, P2PPairingResponse } from './types/P2PPairingResponse';\nimport { ExtendedPostMessagePairingRequest, PostMessagePairingRequest } from './types/PostMessagePairingRequest';\nimport { ExtendedWalletConnectPairingResponse, WalletConnectPairingResponse } from './types/WalletConnectPairingResponse';\nimport { ExtendedWalletConnectPairingRequest, WalletConnectPairingRequest } from './types/WalletConnectPairingRequest';\nimport { ExtendedPostMessagePairingResponse, PostMessagePairingResponse } from './types/PostMessagePairingResponse';\nimport { BeaconRequestMessage } from './types/beacon/BeaconRequestMessage';\nimport { BeaconResponseMessage } from './types/beacon/BeaconResponseMessage';\nimport { ColorMode } from './types/ColorMode';\nimport { Optional } from './types/utils/Optional';\nimport { Extension } from './types/Extension';\nimport { PermissionEntity } from './types/PermissionEntity';\nimport { WalletInfo } from './types/WalletInfo';\nimport { ChangeAccountRequest } from './types/beacon/messages/ChangeAccountRequest';\nexport * from './types/AnalyticsInterface';\nexport * from './types/beaconV3/PermissionRequest';\nexport * from './types/ui';\nexport * from './types/Regions';\nexport { TezosBaseOperation, TezosOperationType, TezosBlockHeader, MichelineMichelsonV1Expression, MichelsonPrimitives, TezosTransactionParameters, TezosOperation };\nexport { TezosActivateAccountOperation, TezosBallotOperation, TezosDelegationOperation, TezosDoubleBakingEvidenceOperation, TezosDoubleEndorsementEvidenceOperation, TezosEndorsementOperation, TezosOriginationOperation, TezosProposalOperation, TezosRevealOperation, TezosSeedNonceRevelationOperation, TezosTransactionOperation, PartialTezosOperation, PartialTezosTransactionOperation, PartialTezosDelegationOperation, PartialTezosOriginationOperation, PartialTezosRevealOperation };\nexport { AccountIdentifier, AppMetadata, Network, NetworkType, BeaconMessage, PermissionRequest, PermissionResponse, OperationRequest, OperationResponse, SignPayloadRequest, SignPayloadResponse, BroadcastRequest, BroadcastResponse, ChangeAccountRequest, AcknowledgeResponse, DisconnectMessage, BeaconBaseMessage, BeaconMessageType, PermissionScope, Origin, AccountInfo, Threshold, SigningType, ExtensionMessageTarget, ExtensionMessage, Extension, EncryptedExtensionMessage, RequestPermissionInput, RequestProofOfEventChallengeInput, RequestSignPayloadInput, ProofOfEventChallengeRecordedMessageInput, RequestOperationInput, RequestBroadcastInput, PermissionInfo, PermissionEntity, ProofOfEventChallengeRequest, ProofOfEventChallengeResponse, ProofOfEventChallengeRecordedRequest };\nexport { PermissionResponseInput, SignPayloadResponseInput, OperationResponseInput, BroadcastResponseInput, AcknowledgeResponseInput, ErrorResponseInput, PermissionResponseOutput, ProofOfEventChallengeResponseOutput, SignPayloadResponseOutput, OperationResponseOutput, BroadcastResponseOutput, PermissionRequestInput, SignPayloadRequestInput, ProofOfEventChallengeRequestInput, OperationRequestInput, BroadcastRequestInput, PermissionRequestOutput, SignPayloadRequestOutput, ProofOfEventChallengeRequestOutput, ProofOfEventChallengeRecordedMessageOutput, OperationRequestOutput, BroadcastRequestOutput, BeaconRequestInputMessage, BeaconRequestOutputMessage, BeaconResponseInputMessage, BeaconResponseOutputMessage, BeaconRequestMessage, BeaconResponseMessage };\nexport { BeaconErrorType, ErrorResponse };\nexport { TransportStatus, TransportType };\nexport { Storage, StorageKey, StorageKeyReturnDefaults, StorageKeyReturnType };\nexport { PeerInfo, ExtendedPeerInfo, PeerInfoType, PostMessagePairingRequest, PostMessagePairingResponse, ExtendedPostMessagePairingRequest, ExtendedPostMessagePairingResponse, P2PPairingRequest, P2PPairingResponse, ExtendedP2PPairingRequest, ExtendedP2PPairingResponse, WalletConnectPairingResponse, WalletConnectPairingRequest, ExtendedWalletConnectPairingRequest, ExtendedWalletConnectPairingResponse };\nexport { IgnoredResponseInputProperties, IgnoredRequestInputProperties, defaultValues };\nexport { ConnectionContext, ColorMode, WalletInfo };\nexport { PushToken } from './types/PushToken';\nexport { Optional };\n"},{name:"@airgap/beacon-types/dist/esm/types/beacon/messages/AcknowledgeResponse.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType } from '@airgap/beacon-types';\n/**\n * @category Message\n */\nexport interface AcknowledgeResponse extends BeaconBaseMessage {\n type: BeaconMessageType.Acknowledge;\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/beacon/messages/BeaconRequestInputMessage.d.ts",dts:"import { Optional, ProofOfEventChallengeRecordedRequest } from '@airgap/beacon-types';\nimport { PermissionRequest, OperationRequest, SignPayloadRequest, ProofOfEventChallengeRequest, BroadcastRequest } from '@airgap/beacon-types';\n/**\n * @internalapi\n * @category DApp\n */\nexport type IgnoredRequestInputProperties = 'id' | 'senderId' | 'version';\n/**\n * @internalapi\n * @category DApp\n */\nexport type PermissionRequestInput = Optional;\n/**\n * @internalapi\n * @category DApp\n */\nexport type ProofOfEventChallengeRequestInput = Optional;\n/**\n * @internalapi\n * @category DApp\n */\nexport type ProofOfEventChallengeRecordedMessageInput = Optional;\n/**\n * @internalapi\n * @category DApp\n */\nexport type OperationRequestInput = Optional;\n/**\n * @internalapi\n * @category DApp\n */\nexport type SignPayloadRequestInput = Optional;\n/**\n * @internalapi\n * @category DApp\n */\n/**\n * @internalapi\n * @category DApp\n */\nexport type BroadcastRequestInput = Optional;\n/**\n * @internalapi\n * @category DApp\n */\nexport type BeaconRequestInputMessage = PermissionRequestInput | OperationRequestInput | SignPayloadRequestInput | BroadcastRequestInput | ProofOfEventChallengeRequestInput | ProofOfEventChallengeRecordedMessageInput;\n"},{name:"@airgap/beacon-types/dist/esm/types/beacon/messages/BeaconRequestOutputMessage.d.ts",dts:"import { Optional, ProofOfEventChallengeRecordedRequest, ProofOfEventChallengeRequest } from '@airgap/beacon-types';\nimport { AppMetadata, PermissionRequest, OperationRequest, SignPayloadRequest, BroadcastRequest } from '@airgap/beacon-types';\n/**\n * @category Wallet\n */\nexport type IgnoredRequestOutputProperties = 'version';\n/**\n * @category Wallet\n */\nexport interface ExtraResponseOutputProperties {\n appMetadata: AppMetadata;\n}\n/**\n * @category Wallet\n */\nexport type PermissionRequestOutput = Optional & ExtraResponseOutputProperties;\n/**\n * @category Wallet\n */\nexport type ProofOfEventChallengeRequestOutput = Optional & ExtraResponseOutputProperties;\n/**\n * @category Wallet\n */\nexport type ProofOfEventChallengeRecordedMessageOutput = Optional & ExtraResponseOutputProperties;\n/**\n * @category Wallet\n */\nexport type OperationRequestOutput = Optional & ExtraResponseOutputProperties;\n/**\n * @category Wallet\n */\nexport type SignPayloadRequestOutput = Optional & ExtraResponseOutputProperties;\n/**\n * @category Wallet\n */\n/**\n * @category Wallet\n */\nexport type BroadcastRequestOutput = Optional & ExtraResponseOutputProperties;\n/**\n * @internalapi\n * @category Wallet\n */\nexport type BeaconRequestOutputMessage = PermissionRequestOutput | OperationRequestOutput | SignPayloadRequestOutput | BroadcastRequestOutput | ProofOfEventChallengeRequestOutput | ProofOfEventChallengeRecordedMessageOutput;\n"},{name:"@airgap/beacon-types/dist/esm/types/beacon/messages/BeaconResponseInputMessage.d.ts",dts:"import { Optional, ProofOfEventChallengeResponse } from '@airgap/beacon-types';\nimport { PermissionResponse, OperationResponse, SignPayloadResponse, BroadcastResponse, AcknowledgeResponse, ErrorResponse } from '@airgap/beacon-types';\n/**\n * @category Wallet\n */\nexport type IgnoredResponseInputProperties = 'senderId' | 'version';\n/**\n * @category Wallet\n */\nexport type PermissionResponseInput = Optional;\n/**\n * @category Wallet\n */\nexport type ProofOfEventChallengeResponseInput = Optional;\n/**\n * @category Wallet\n */\nexport type OperationResponseInput = Optional;\n/**\n * @category Wallet\n */\nexport type SignPayloadResponseInput = Optional;\n/**\n * @category Wallet\n */\n/**\n * @category Wallet\n */\nexport type BroadcastResponseInput = Optional;\n/**\n * @category Wallet\n */\nexport type AcknowledgeResponseInput = Optional;\n/**\n * @category Wallet\n */\nexport type ErrorResponseInput = Optional;\n/**\n * @internalapi\n * @category Wallet\n */\nexport type BeaconResponseInputMessage = PermissionResponseInput | OperationResponseInput | SignPayloadResponseInput | BroadcastResponseInput | AcknowledgeResponseInput | ErrorResponseInput | ProofOfEventChallengeResponseInput;\n"},{name:"@airgap/beacon-types/dist/esm/types/beacon/messages/BeaconResponseOutputMessage.d.ts",dts:"import { PermissionResponse, OperationResponse, SignPayloadResponse, BroadcastResponse, AccountInfo, ProofOfEventChallengeResponse } from '@airgap/beacon-types';\n/**\n * @category DApp\n */\nexport type IgnoredResponseOutputProperties = 'id' | 'version' | 'type';\n/**\n * @category DApp\n */\nexport type PermissionResponseOutput = PermissionResponse & {\n address: string;\n accountInfo: AccountInfo;\n walletKey?: string | undefined;\n};\n/**\n * @category DApp\n */\nexport type ProofOfEventChallengeResponseOutput = ProofOfEventChallengeResponse;\n/**\n * @category DApp\n */\nexport type OperationResponseOutput = OperationResponse;\n/**\n * @category DApp\n */\nexport type SignPayloadResponseOutput = SignPayloadResponse;\n/**\n * @category DApp\n */\n/**\n * @category DApp\n */\nexport type BroadcastResponseOutput = BroadcastResponse;\n/**\n * @internalapi\n * @category DApp\n */\nexport type BeaconResponseOutputMessage = PermissionResponseOutput | OperationResponseOutput | SignPayloadResponseOutput | BroadcastResponseOutput | ProofOfEventChallengeResponseOutput;\n"},{name:"@airgap/beacon-types/dist/esm/types/beacon/messages/BroadcastRequest.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType, Network } from '@airgap/beacon-types';\n/**\n * @category Message\n */\nexport interface BroadcastRequest extends BeaconBaseMessage {\n type: BeaconMessageType.BroadcastRequest;\n network: Network;\n signedTransaction: string;\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/beacon/messages/BroadcastResponse.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType } from '@airgap/beacon-types';\n/**\n * @category Message\n */\nexport interface BroadcastResponse extends BeaconBaseMessage {\n type: BeaconMessageType.BroadcastResponse;\n transactionHash: string;\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/beacon/messages/ChangeAccountRequest.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType, Network, PermissionScope, Threshold } from '@airgap/beacon-types';\nimport { Notification } from '../../Notification';\nexport interface ChangeAccountRequest extends BeaconBaseMessage {\n type: BeaconMessageType.ChangeAccountRequest;\n address?: string;\n walletType: 'implicit' | 'abstracted_account';\n verificationType?: 'proof_of_event';\n publicKey?: string;\n network: Network;\n scopes: PermissionScope[];\n threshold?: Threshold;\n notification?: Notification;\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/beacon/messages/DisconnectMessage.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType } from '@airgap/beacon-types';\n/**\n * @category Message\n */\nexport interface DisconnectMessage extends BeaconBaseMessage {\n type: BeaconMessageType.Disconnect;\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/beacon/messages/EncryptPayloadRequest.d.ts",dts:"/**\n * @category Message\n */\n"},{name:"@airgap/beacon-types/dist/esm/types/beacon/messages/EncryptPayloadResponse.d.ts",dts:"/**\n * @category Message\n */\n"},{name:"@airgap/beacon-types/dist/esm/types/beacon/messages/ErrorResponse.d.ts",dts:"import { BeaconBaseMessage, BeaconErrorType, BeaconMessageType } from '@airgap/beacon-types';\n/**\n * @category Message\n */\nexport interface ErrorResponse extends BeaconBaseMessage {\n type: BeaconMessageType.Error;\n errorType: BeaconErrorType;\n errorData?: any;\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/beacon/messages/OperationRequest.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType, Network } from '@airgap/beacon-types';\nimport { PartialTezosOperation } from '../../tezos/PartialTezosOperation';\n/**\n * @category Message\n */\nexport interface OperationRequest extends BeaconBaseMessage {\n type: BeaconMessageType.OperationRequest;\n network: Network;\n operationDetails: PartialTezosOperation[];\n sourceAddress: string;\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/beacon/messages/OperationResponse.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType } from '@airgap/beacon-types';\n/**\n * @category Message\n */\nexport interface OperationResponse extends BeaconBaseMessage {\n type: BeaconMessageType.OperationResponse;\n transactionHash: string;\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/beacon/messages/PermissionRequest.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType, PermissionScope, AppMetadata, Network } from '@airgap/beacon-types';\n/**\n * @category Message\n */\nexport interface PermissionRequest extends BeaconBaseMessage {\n type: BeaconMessageType.PermissionRequest;\n appMetadata: AppMetadata;\n network: Network;\n scopes: PermissionScope[];\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/beacon/messages/PermissionResponse.d.ts",dts:"import { AppMetadata, BeaconBaseMessage, BeaconMessageType, Network, PermissionScope, Threshold } from '@airgap/beacon-types';\nimport { Notification } from '../../Notification';\n/**\n * @category Message\n */\nexport interface PermissionResponse extends BeaconBaseMessage {\n address?: string;\n walletType: 'implicit' | 'abstracted_account';\n verificationType?: 'proof_of_event';\n type: BeaconMessageType.PermissionResponse;\n appMetadata: AppMetadata;\n publicKey?: string;\n network: Network;\n scopes: PermissionScope[];\n threshold?: Threshold;\n notification?: Notification;\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/beacon/messages/ProofOfEventChallengeRecordedRequest.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType } from '@airgap/beacon-types';\nexport interface ProofOfEventChallengeRecordedRequest extends BeaconBaseMessage {\n type: BeaconMessageType.ProofOfEventChallengeRecorded;\n dAppChallengeId: string;\n success: boolean;\n errorMessage: string;\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/beacon/messages/ProofOfEventChallengeRequest.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType } from '@airgap/beacon-types';\nexport interface ProofOfEventChallengeRequest extends BeaconBaseMessage {\n type: BeaconMessageType.ProofOfEventChallengeRequest;\n payload: string;\n contractAddress: string;\n dAppChallengeId: string;\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/beacon/messages/ProofOfEventChallengeResponse.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType } from '@airgap/beacon-types';\nexport interface ProofOfEventChallengeResponse extends BeaconBaseMessage {\n type: BeaconMessageType.ProofOfEventChallengeResponse;\n dAppChallengeId: string;\n isAccepted: boolean;\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/beacon/messages/SignPayloadRequest.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType, SigningType } from '@airgap/beacon-types';\n/**\n * @category Message\n */\nexport interface SignPayloadRequest extends BeaconBaseMessage {\n type: BeaconMessageType.SignPayloadRequest;\n signingType: SigningType;\n payload: string;\n sourceAddress: string;\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/beacon/messages/SignPayloadResponse.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType, SigningType } from '@airgap/beacon-types';\n/**\n * @category Message\n */\nexport interface SignPayloadResponse extends BeaconBaseMessage {\n type: BeaconMessageType.SignPayloadResponse;\n signingType: SigningType;\n signature: string;\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/beacon/AppMetadata.d.ts",dts:"export interface AppMetadata {\n senderId: string;\n name: string;\n icon?: string;\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/beacon/BeaconBaseMessage.d.ts",dts:"import { BeaconMessageType } from '@airgap/beacon-types';\n/**\n * @category Message\n */\nexport interface BeaconBaseMessage {\n type: BeaconMessageType;\n version: string;\n id: string;\n senderId: string;\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/beacon/BeaconMessage.d.ts",dts:"import { PermissionResponse, PermissionRequest, OperationRequest, OperationResponse, SignPayloadRequest, SignPayloadResponse, BroadcastRequest, BroadcastResponse, AcknowledgeResponse, DisconnectMessage, ErrorResponse, ProofOfEventChallengeRequest, ProofOfEventChallengeResponse, ProofOfEventChallengeRecordedRequest, ChangeAccountRequest } from '@airgap/beacon-types';\n/**\n * @internalapi\n */\nexport type BeaconMessage = PermissionRequest | PermissionResponse | ProofOfEventChallengeRequest | ProofOfEventChallengeResponse | ProofOfEventChallengeRecordedRequest | OperationRequest | OperationResponse | SignPayloadRequest | SignPayloadResponse | BroadcastRequest | BroadcastResponse | AcknowledgeResponse | DisconnectMessage | ErrorResponse | ChangeAccountRequest;\n"},{name:"@airgap/beacon-types/dist/esm/types/beacon/BeaconMessageType.d.ts",dts:'export declare enum BeaconMessageType {\n BlockchainRequest = "blockchain_request",\n PermissionRequest = "permission_request",\n SignPayloadRequest = "sign_payload_request",\n OperationRequest = "operation_request",\n BroadcastRequest = "broadcast_request",\n ChangeAccountRequest = "change_account_request",\n BlockchainResponse = "blockchain_response",\n PermissionResponse = "permission_response",\n SignPayloadResponse = "sign_payload_response",\n ProofOfEventChallengeRequest = "proof_of_event_challenge_request",\n ProofOfEventChallengeResponse = "proof_of_event_challenge_response",\n ProofOfEventChallengeRecorded = "proof_of_event_challenge_recorded",\n OperationResponse = "operation_response",\n BroadcastResponse = "broadcast_response",\n Acknowledge = "acknowledge",\n Disconnect = "disconnect",\n Error = "error"\n}\n'},{name:"@airgap/beacon-types/dist/esm/types/beacon/BeaconRequestMessage.d.ts",dts:"import { PermissionRequest, OperationRequest, SignPayloadRequest, BroadcastRequest, ProofOfEventChallengeRequest, ProofOfEventChallengeRecordedRequest } from '@airgap/beacon-types';\n/**\n * @internalapi\n */\nexport type BeaconRequestMessage = PermissionRequest | OperationRequest | SignPayloadRequest | BroadcastRequest | ProofOfEventChallengeRequest | ProofOfEventChallengeRecordedRequest;\n"},{name:"@airgap/beacon-types/dist/esm/types/beacon/BeaconResponseMessage.d.ts",dts:"import { PermissionResponse, OperationResponse, SignPayloadResponse, BroadcastResponse } from '@airgap/beacon-types';\nimport { ErrorResponse } from './messages/ErrorResponse';\n/**\n * @internalapi\n */\nexport type BeaconResponseMessage = PermissionResponse | OperationResponse | SignPayloadResponse | BroadcastResponse | ErrorResponse;\n"},{name:"@airgap/beacon-types/dist/esm/types/beacon/Network.d.ts",dts:"import { NetworkType } from '@airgap/beacon-types';\nexport interface Network {\n type: NetworkType;\n name?: string;\n rpcUrl?: string;\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/beacon/NetworkType.d.ts",dts:'export declare enum NetworkType {\n MAINNET = "mainnet",\n GHOSTNET = "ghostnet",\n WEEKLYNET = "weeklynet",\n DAILYNET = "dailynet",\n DELPHINET = "delphinet",\n EDONET = "edonet",\n FLORENCENET = "florencenet",\n GRANADANET = "granadanet",\n HANGZHOUNET = "hangzhounet",\n ITHACANET = "ithacanet",\n JAKARTANET = "jakartanet",\n KATHMANDUNET = "kathmandunet",\n LIMANET = "limanet",\n MUMBAINET = "mumbainet",\n NAIROBINET = "nairobinet",\n OXFORDNET = "oxfordnet",\n CUSTOM = "custom"\n}\n'},{name:"@airgap/beacon-types/dist/esm/types/beacon/PermissionScope.d.ts",dts:'export declare enum PermissionScope {\n SIGN = "sign",\n OPERATION_REQUEST = "operation_request",\n ENCRYPT = "encrypt",\n NOTIFICATION = "notification",\n THRESHOLD = "threshold"\n}\n'},{name:"@airgap/beacon-types/dist/esm/types/beacon/SigningType.d.ts",dts:'export declare enum SigningType {\n RAW = "raw",\n OPERATION = "operation",\n MICHELINE = "micheline"\n}\n'},{name:"@airgap/beacon-types/dist/esm/types/beacon/Threshold.d.ts",dts:"export interface Threshold {\n amount: string;\n timeframe: string;\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/beaconV3/PermissionRequest.d.ts",dts:"import { AccountInfo, AppMetadata, BeaconMessageType, ConnectionContext, WalletInfo, ExtensionApp, DesktopApp, WebApp, App } from '@airgap/beacon-types';\nexport interface ResponseInput {\n request: BlockchainMessage;\n account: AccountInfo;\n output: BeaconMessageWrapper;\n blockExplorer: any;\n connectionContext: ConnectionContext;\n walletInfo: WalletInfo;\n}\nexport interface Blockchain {\n readonly identifier: string;\n validateRequest(input: BlockchainMessage): Promise;\n handleResponse(input: ResponseInput): Promise;\n getWalletLists(): Promise<{\n extensionList: ExtensionApp[];\n desktopList: DesktopApp[];\n webList: WebApp[];\n iOSList: App[];\n }>;\n getAccountInfosFromPermissionResponse(permissionResponse: PermissionResponseV3): Promise<{\n accountId: string;\n address: string;\n publicKey: string;\n }[]>;\n}\nexport interface BeaconMessageWrapper {\n id: string;\n version: string;\n senderId: string;\n message: T;\n}\nexport interface BeaconBaseMessage {\n type: unknown;\n}\nexport interface BlockchainMessage {\n blockchainIdentifier: T;\n type: unknown;\n blockchainData: unknown;\n}\nexport interface PermissionRequestV3 extends BlockchainMessage {\n blockchainIdentifier: T;\n type: BeaconMessageType.PermissionRequest;\n blockchainData: {\n appMetadata: AppMetadata;\n scopes: string[];\n };\n}\nexport interface PermissionResponseV3 extends BlockchainMessage {\n blockchainIdentifier: T;\n type: BeaconMessageType.PermissionResponse;\n blockchainData: {\n appMetadata: AppMetadata;\n scopes: string[];\n };\n}\nexport interface BlockchainRequestV3 extends BlockchainMessage {\n blockchainIdentifier: T;\n type: BeaconMessageType.BlockchainRequest;\n accountId: string;\n blockchainData: {\n type: string;\n scope: string;\n };\n}\nexport interface BlockchainResponseV3 extends BlockchainMessage {\n blockchainIdentifier: T;\n type: BeaconMessageType.BlockchainResponse;\n blockchainData: unknown;\n}\nexport interface BlockchainErrorResponse extends BlockchainMessage {\n blockchainIdentifier: T;\n type: BeaconMessageType.Error;\n error: {\n type: unknown;\n data?: unknown;\n };\n description?: string;\n}\nexport interface AcknowledgeMessage extends BeaconBaseMessage {\n type: BeaconMessageType.Acknowledge;\n}\nexport interface DisconnectMessage extends BeaconBaseMessage {\n type: BeaconMessageType.Disconnect;\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/storage/Storage.d.ts",dts:"import { StorageKey, StorageKeyReturnType } from '@airgap/beacon-types';\n/**\n * @internalapi\n *\n * The storage used in the SDK\n */\nexport declare abstract class Storage {\n /**\n * Returns a promise that resolves to true if the storage option is available on this platform.\n */\n static isSupported(): Promise;\n /**\n * Gets a value from storage and returns it\n *\n * @param key The storage key\n */\n abstract get(key: K): Promise;\n /**\n * Sets a value in the storage and persist it\n *\n * @param key The storage key\n * @param value The value to be persisted\n */\n abstract set(key: K, value: StorageKeyReturnType[K]): Promise;\n /**\n * Delete a key from storage\n *\n * @param key The storage key\n */\n abstract delete(key: K): Promise;\n /**\n * This event will fire if the storage was modified by someone else, eg. on another tab\n *\n * @param callback The callback to be called when a storage value changes\n */\n abstract subscribeToStorageChanged(callback: (arg: {\n eventType: 'storageCleared' | 'entryModified';\n key: string | null;\n oldValue: string | null;\n newValue: string | null;\n }) => {}): Promise;\n /**\n * Get the key with the internal prefix\n *\n * @param key the storage key\n */\n abstract getPrefixedKey(key: K): string;\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/storage/StorageKey.d.ts",dts:'/**\n * @internalapi\n */\nexport declare enum StorageKey {\n TRANSPORT_P2P_PEERS_DAPP = "beacon:communication-peers-dapp",\n TRANSPORT_P2P_PEERS_WALLET = "beacon:communication-peers-wallet",\n TRANSPORT_POSTMESSAGE_PEERS_DAPP = "beacon:postmessage-peers-dapp",\n TRANSPORT_POSTMESSAGE_PEERS_WALLET = "beacon:postmessage-peers-wallet",\n TRANSPORT_WALLETCONNECT_PEERS_DAPP = "beacon:walletconnect-peers-dapp",\n LAST_SELECTED_WALLET = "beacon:last-selected-wallet",\n ACCOUNTS = "beacon:accounts",\n ACTIVE_ACCOUNT = "beacon:active-account",\n PUSH_TOKENS = "beacon:push-tokens",\n BEACON_SDK_SECRET_SEED = "beacon:sdk-secret-seed",\n APP_METADATA_LIST = "beacon:app-metadata-list",\n PERMISSION_LIST = "beacon:permissions",\n ONGOING_PROOF_OF_EVENT_CHALLENGES = "beacon:ongoing-proof-of-event-challenges",\n BEACON_SDK_VERSION = "beacon:sdk_version",\n MATRIX_PRESERVED_STATE = "beacon:sdk-matrix-preserved-state",\n MATRIX_PEER_ROOM_IDS = "beacon:matrix-peer-rooms",\n MATRIX_SELECTED_NODE = "beacon:matrix-selected-node",\n MULTI_NODE_SETUP_DONE = "beacon:multi-node-setup",\n WC_2_CORE_PAIRING = "wc@2:core:0.3//pairing",\n WC_2_CLIENT_SESSION = "wc@2:client:0.3//session",\n WC_2_CORE_KEYCHAIN = "wc@2:core:0.3//keychain",\n WC_2_CORE_MESSAGES = "wc@2:core:0.3//messages",\n WC_2_CLIENT_PROPOSAL = "wc@2:client:0.3//proposal",\n WC_2_CORE_SUBSCRIPTION = "wc@2:core:0.3//subscription",\n WC_2_CORE_HISTORY = "wc@2:core:0.3//history",\n WC_2_CORE_EXPIRER = "wc@2:core:0.3//expirer"\n}\n'},{name:"@airgap/beacon-types/dist/esm/types/storage/StorageKeyReturnDefaults.d.ts",dts:"import { StorageKey, StorageKeyReturnType } from '../..';\n/**\n * @internalapi\n */\nexport type StorageKeyReturnDefaults = {\n [key in StorageKey]: StorageKeyReturnType[key];\n};\n/**\n * @internalapi\n */\nexport declare const defaultValues: StorageKeyReturnDefaults;\n"},{name:"@airgap/beacon-types/dist/esm/types/storage/StorageKeyReturnType.d.ts",dts:"import { StorageKey, AccountInfo, AccountIdentifier, P2PPairingRequest, AppMetadata, PermissionInfo, ExtendedWalletConnectPairingResponse, RequestProofOfEventChallengeInput } from '../..';\nimport { ExtendedP2PPairingResponse } from '../P2PPairingResponse';\nimport { PostMessagePairingRequest } from '../PostMessagePairingRequest';\nimport { ExtendedPostMessagePairingResponse } from '../PostMessagePairingResponse';\nimport { PushToken } from '../PushToken';\n/**\n * @internalapi\n */\nexport interface StorageKeyReturnType {\n [StorageKey.TRANSPORT_P2P_PEERS_DAPP]: P2PPairingRequest[];\n [StorageKey.TRANSPORT_P2P_PEERS_WALLET]: ExtendedP2PPairingResponse[];\n [StorageKey.TRANSPORT_POSTMESSAGE_PEERS_DAPP]: PostMessagePairingRequest[];\n [StorageKey.TRANSPORT_POSTMESSAGE_PEERS_WALLET]: ExtendedPostMessagePairingResponse[];\n [StorageKey.TRANSPORT_WALLETCONNECT_PEERS_DAPP]: ExtendedWalletConnectPairingResponse[];\n [StorageKey.LAST_SELECTED_WALLET]: string | undefined;\n [StorageKey.ACCOUNTS]: AccountInfo[];\n [StorageKey.ACTIVE_ACCOUNT]: AccountIdentifier | undefined;\n [StorageKey.PUSH_TOKENS]: PushToken[];\n [StorageKey.BEACON_SDK_SECRET_SEED]: string | undefined;\n [StorageKey.APP_METADATA_LIST]: AppMetadata[];\n [StorageKey.PERMISSION_LIST]: PermissionInfo[];\n [StorageKey.ONGOING_PROOF_OF_EVENT_CHALLENGES]: ({\n contractAddress: string;\n accountIdentifier: string;\n } & RequestProofOfEventChallengeInput)[];\n [StorageKey.BEACON_SDK_VERSION]: string | undefined;\n [StorageKey.MATRIX_PRESERVED_STATE]: {\n [key: string]: unknown;\n };\n [StorageKey.MATRIX_PEER_ROOM_IDS]: {\n [key: string]: string | undefined;\n };\n [StorageKey.MATRIX_SELECTED_NODE]: string | undefined;\n [StorageKey.MULTI_NODE_SETUP_DONE]: boolean | undefined;\n [StorageKey.WC_2_CLIENT_SESSION]: string | undefined;\n [StorageKey.WC_2_CORE_PAIRING]: string | undefined;\n [StorageKey.WC_2_CORE_KEYCHAIN]: string | undefined;\n [StorageKey.WC_2_CORE_MESSAGES]: string | undefined;\n [StorageKey.WC_2_CLIENT_PROPOSAL]: string | undefined;\n [StorageKey.WC_2_CORE_SUBSCRIPTION]: string | undefined;\n [StorageKey.WC_2_CORE_HISTORY]: string | undefined;\n [StorageKey.WC_2_CORE_EXPIRER]: string | undefined;\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/tezos/operations/ActivateAccount.d.ts",dts:"import { TezosBaseOperation, TezosOperationType } from '../../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosActivateAccountOperation extends TezosBaseOperation {\n kind: TezosOperationType.ACTIVATE_ACCOUNT;\n pkh: string;\n secret: string;\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/tezos/operations/Ballot.d.ts",dts:"import { TezosBaseOperation, TezosOperationType } from '../../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosBallotOperation extends TezosBaseOperation {\n kind: TezosOperationType.BALLOT;\n source: string;\n period: string;\n proposal: string;\n ballot: 'nay' | 'yay' | 'pass';\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/tezos/operations/Delegation.d.ts",dts:"import { TezosBaseOperation, TezosOperationType } from '../../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosDelegationOperation extends TezosBaseOperation {\n kind: TezosOperationType.DELEGATION;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n delegate?: string;\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/tezos/operations/DoubleBakingEvidence.d.ts",dts:"import { TezosBaseOperation, TezosOperationType, TezosBlockHeader } from '../../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosDoubleBakingEvidenceOperation extends TezosBaseOperation {\n kind: TezosOperationType.DOUBLE_BAKING_EVIDENCE;\n bh1: TezosBlockHeader;\n bh2: TezosBlockHeader;\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/tezos/operations/DoubleEndorsementEvidence.d.ts",dts:"import { TezosBaseOperation, TezosOperationType } from '../../..';\nexport interface InlinedEndorsement {\n branch: string;\n operations: InlinedEndorsementContents;\n signature?: string;\n}\nexport interface InlinedEndorsementContents {\n kind: TezosOperationType.ENDORSEMENT;\n level: string;\n}\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosDoubleEndorsementEvidenceOperation extends TezosBaseOperation {\n kind: TezosOperationType.DOUBLE_ENDORSEMENT_EVIDENCE;\n op1: InlinedEndorsement;\n op2: InlinedEndorsement;\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/tezos/operations/Endorsement.d.ts",dts:"import { TezosBaseOperation, TezosOperationType } from '../../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosEndorsementOperation extends TezosBaseOperation {\n kind: TezosOperationType.ENDORSEMENT;\n level: string;\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/tezos/operations/Origination.d.ts",dts:"import { TezosBaseOperation, TezosOperationType } from '../../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosOriginationOperation extends TezosBaseOperation {\n kind: TezosOperationType.ORIGINATION;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n balance: string;\n delegate?: string;\n script: string;\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/tezos/operations/Proposal.d.ts",dts:"import { TezosBaseOperation, TezosOperationType } from '../../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosProposalOperation extends TezosBaseOperation {\n kind: TezosOperationType.PROPOSALS;\n period: string;\n proposals: string[];\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/tezos/operations/Reveal.d.ts",dts:"import { TezosBaseOperation, TezosOperationType } from '../../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosRevealOperation extends TezosBaseOperation {\n kind: TezosOperationType.REVEAL;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n public_key: string;\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/tezos/operations/SeedNonceRevelation.d.ts",dts:"import { TezosBaseOperation, TezosOperationType } from '../../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosSeedNonceRevelationOperation extends TezosBaseOperation {\n kind: TezosOperationType.SEED_NONCE_REVELATION;\n level: string;\n nonce: string;\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/tezos/operations/Transaction.d.ts",dts:"import { TezosBaseOperation, TezosOperationType, TezosTransactionParameters } from '../../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosTransactionOperation extends TezosBaseOperation {\n kind: TezosOperationType.TRANSACTION;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n amount: string;\n destination: string;\n parameters?: TezosTransactionParameters;\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/tezos/MichelineMichelsonV1Expression.d.ts",dts:"import { MichelsonPrimitives } from '../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport type MichelineMichelsonV1Expression = {\n int: string;\n} | {\n string: string;\n} | {\n bytes: string;\n} | MichelineMichelsonV1Expression[] | {\n prim: MichelsonPrimitives;\n args?: MichelineMichelsonV1Expression[];\n annots?: string[];\n};\n"},{name:"@airgap/beacon-types/dist/esm/types/tezos/MichelsonPrimitives.d.ts",dts:"/**\n * @internalapi\n * @category Tezos\n */\nexport type MichelsonPrimitives = 'ADD' | 'IF_NONE' | 'SWAP' | 'set' | 'nat' | 'CHECK_SIGNATURE' | 'IF_LEFT' | 'LAMBDA' | 'Elt' | 'CREATE_CONTRACT' | 'NEG' | 'big_map' | 'map' | 'or' | 'BLAKE2B' | 'bytes' | 'SHA256' | 'SET_DELEGATE' | 'CONTRACT' | 'LSL' | 'SUB' | 'IMPLICIT_ACCOUNT' | 'PACK' | 'list' | 'PAIR' | 'Right' | 'contract' | 'GT' | 'LEFT' | 'STEPS_TO_QUOTA' | 'storage' | 'TRANSFER_TOKENS' | 'CDR' | 'SLICE' | 'PUSH' | 'False' | 'SHA512' | 'CHAIN_ID' | 'BALANCE' | 'signature' | 'DUG' | 'SELF' | 'EMPTY_BIG_MAP' | 'LSR' | 'OR' | 'XOR' | 'lambda' | 'COMPARE' | 'key' | 'option' | 'Unit' | 'Some' | 'UNPACK' | 'NEQ' | 'INT' | 'pair' | 'AMOUNT' | 'DIP' | 'ABS' | 'ISNAT' | 'EXEC' | 'NOW' | 'LOOP' | 'chain_id' | 'string' | 'MEM' | 'MAP' | 'None' | 'address' | 'CONCAT' | 'EMPTY_SET' | 'MUL' | 'LOOP_LEFT' | 'timestamp' | 'LT' | 'UPDATE' | 'DUP' | 'SOURCE' | 'mutez' | 'SENDER' | 'IF_CONS' | 'RIGHT' | 'CAR' | 'CONS' | 'LE' | 'NONE' | 'IF' | 'SOME' | 'GET' | 'Left' | 'CAST' | 'int' | 'SIZE' | 'key_hash' | 'unit' | 'DROP' | 'EMPTY_MAP' | 'NIL' | 'DIG' | 'APPLY' | 'bool' | 'RENAME' | 'operation' | 'True' | 'FAILWITH' | 'parameter' | 'HASH_KEY' | 'EQ' | 'NOT' | 'UNIT' | 'Pair' | 'ADDRESS' | 'EDIV' | 'CREATE_ACCOUNT' | 'GE' | 'ITER' | 'code' | 'AND';\n"},{name:"@airgap/beacon-types/dist/esm/types/tezos/OperationTypes.d.ts",dts:'/**\n * @publicapi\n * @category Tezos\n */\nexport declare enum TezosOperationType {\n ENDORSEMENT = "endorsement",\n SEED_NONCE_REVELATION = "seed_nonce_revelation",\n DOUBLE_ENDORSEMENT_EVIDENCE = "double_endorsement_evidence",\n DOUBLE_BAKING_EVIDENCE = "double_baking_evidence",\n ACTIVATE_ACCOUNT = "activate_account",\n PROPOSALS = "proposals",\n BALLOT = "ballot",\n REVEAL = "reveal",\n TRANSACTION = "transaction",\n ORIGINATION = "origination",\n DELEGATION = "delegation"\n}\n'},{name:"@airgap/beacon-types/dist/esm/types/tezos/PartialTezosOperation.d.ts",dts:"import { Optional } from '@airgap/beacon-types';\nimport { TezosActivateAccountOperation } from './operations/ActivateAccount';\nimport { TezosBallotOperation } from './operations/Ballot';\nimport { TezosDelegationOperation } from './operations/Delegation';\nimport { TezosDoubleBakingEvidenceOperation } from './operations/DoubleBakingEvidence';\nimport { TezosEndorsementOperation } from './operations/Endorsement';\nimport { TezosOriginationOperation } from './operations/Origination';\nimport { TezosProposalOperation } from './operations/Proposal';\nimport { TezosRevealOperation } from './operations/Reveal';\nimport { TezosSeedNonceRevelationOperation } from './operations/SeedNonceRevelation';\nimport { TezosTransactionOperation } from './operations/Transaction';\n/**\n * @publicapi\n * @category Tezos\n */\nexport type omittedProperties = 'source' | 'fee' | 'counter' | 'gas_limit' | 'storage_limit';\n/**\n * @internalapi\n * @category Tezos\n */\nexport type PartialTezosDelegationOperation = Optional;\n/**\n * @internalapi\n * @category Tezos\n */\nexport type PartialTezosOriginationOperation = Optional;\n/**\n * @internalapi\n * @category Tezos\n */\nexport type PartialTezosRevealOperation = Optional;\n/**\n * @internalapi\n * @category Tezos\n */\nexport type PartialTezosTransactionOperation = Optional;\n/**\n * @publicapi\n * @category Tezos\n */\nexport type PartialTezosOperation = TezosActivateAccountOperation | TezosBallotOperation | PartialTezosDelegationOperation | TezosDoubleBakingEvidenceOperation | TezosEndorsementOperation | PartialTezosOriginationOperation | TezosProposalOperation | PartialTezosRevealOperation | TezosSeedNonceRevelationOperation | PartialTezosTransactionOperation;\n"},{name:"@airgap/beacon-types/dist/esm/types/tezos/TezosBaseOperation.d.ts",dts:"import { TezosOperationType } from '../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosBaseOperation {\n kind: TezosOperationType;\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/tezos/TezosBlockHeader.d.ts",dts:"/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosBlockHeader {\n level: number;\n proto: number;\n predecessor: string;\n timestamp: string;\n validation_pass: number;\n operations_hash: string;\n fitness: string[];\n context: string;\n priority: number;\n proof_of_work_nonce: string;\n signature: string;\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/tezos/TezosOperation.d.ts",dts:"import { TezosActivateAccountOperation, TezosBallotOperation, TezosDelegationOperation, TezosDoubleBakingEvidenceOperation, TezosEndorsementOperation, TezosOriginationOperation, TezosProposalOperation, TezosRevealOperation, TezosSeedNonceRevelationOperation, TezosTransactionOperation } from '../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport type TezosOperation = TezosActivateAccountOperation | TezosBallotOperation | TezosDelegationOperation | TezosDoubleBakingEvidenceOperation | TezosEndorsementOperation | TezosOriginationOperation | TezosProposalOperation | TezosRevealOperation | TezosSeedNonceRevelationOperation | TezosTransactionOperation;\n"},{name:"@airgap/beacon-types/dist/esm/types/tezos/TezosTransactionParameters.d.ts",dts:"import { MichelineMichelsonV1Expression } from './MichelineMichelsonV1Expression';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosTransactionParameters {\n entrypoint: 'default' | 'root' | 'do' | 'set_delegate' | 'remove_delegate' | string;\n value: MichelineMichelsonV1Expression;\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/transport/TransportStatus.d.ts",dts:'export declare enum TransportStatus {\n NOT_CONNECTED = "NOT_CONNECTED",\n CONNECTING = "CONNECTING",\n CONNECTED = "CONNECTED"\n}\n'},{name:"@airgap/beacon-types/dist/esm/types/transport/TransportType.d.ts",dts:'/**\n * @internalapi\n */\nexport declare enum TransportType {\n CHROME_MESSAGE = "chrome_message",\n WALLETCONNECT = "walletconnect",\n POST_MESSAGE = "post_message",\n LEDGER = "ledger",\n P2P = "p2p"\n}\n'},{name:"@airgap/beacon-types/dist/esm/types/utils/Optional.d.ts",dts:"export type Optional = Partial & Omit;\n"},{name:"@airgap/beacon-types/dist/esm/types/AccountInfo.d.ts",dts:"import { Origin } from '..';\nimport { PermissionEntity } from './PermissionEntity';\nimport { Notification } from './Notification';\nexport type AccountIdentifier = string;\nexport interface AccountInfo extends PermissionEntity {\n accountIdentifier: AccountIdentifier;\n senderId: string;\n origin: {\n type: Origin;\n id: string;\n };\n walletKey?: string;\n publicKey?: string;\n connectedAt: number;\n notification?: Notification;\n hasVerifiedChallenge?: boolean;\n walletType: 'implicit' | 'abstracted_account';\n verificationType?: 'proof_of_event';\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/AnalyticsInterface.d.ts",dts:"export interface AnalyticsInterface {\n track(trigger: 'click' | 'event', section: string, label: string, data?: Record): void;\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/BeaconErrorType.d.ts",dts:'export declare enum BeaconErrorType {\n /**\n * {@link BroadcastBeaconError}\n *\n * Will be returned if the user chooses that the transaction is broadcast but there is an error (eg. node not available).\n *\n * Returned by: Broadcast | Operation Request\n */\n BROADCAST_ERROR = "BROADCAST_ERROR",\n /**\n * {@link NetworkNotSupportedBeaconError}\n *\n * Will be returned if the selected network is not supported by the wallet / extension.\n *\n * Returned by: Permission\n */\n NETWORK_NOT_SUPPORTED = "NETWORK_NOT_SUPPORTED",\n /**\n * {@link NoAddressBeaconError}\n *\n * Will be returned if there is no address present for the protocol / network requested.\n *\n * Returned by: Permission\n */\n NO_ADDRESS_ERROR = "NO_ADDRESS_ERROR",\n /**\n * {@link NoPrivateKeyBeaconError}\n *\n * Will be returned if the private key matching the sourceAddress could not be found.\n *\n * Returned by: Sign\n */\n NO_PRIVATE_KEY_FOUND_ERROR = "NO_PRIVATE_KEY_FOUND_ERROR",\n /**\n * {@link NotGrantedBeaconError}\n *\n * Will be returned if the signature was blocked // (Not needed?) Permission: Will be returned if the permissions requested by the App were not granted.\n *\n * Returned by: Sign\n */\n NOT_GRANTED_ERROR = "NOT_GRANTED_ERROR",\n /**\n * {@link ParametersInvalidBeaconError}\n *\n * Will be returned if any of the parameters are invalid.\n *\n * Returned by: Operation Request\n */\n PARAMETERS_INVALID_ERROR = "PARAMETERS_INVALID_ERROR",\n /**\n * {@link TooManyOperationsBeaconError}\n *\n * Will be returned if too many operations were in the request and they were not able to fit into a single operation group.\n *\n * Returned by: Operation Request\n */\n TOO_MANY_OPERATIONS = "TOO_MANY_OPERATIONS",\n /**\n * {@link TransactionInvalidBeaconError}\n *\n * Will be returned if the transaction is not parsable or is rejected by the node.\n *\n * Returned by: Broadcast\n */\n TRANSACTION_INVALID_ERROR = "TRANSACTION_INVALID_ERROR",\n /**\n * {@link SignatureTypeNotSupportedBeaconError}\n *\n * Will be returned if the signing type is not supported.\n *\n * Returned by: Sign\n */\n SIGNATURE_TYPE_NOT_SUPPORTED = "SIGNATURE_TYPE_NOT_SUPPORTED",\n /**\n * {@link AbortedBeaconError}\n *\n * Will be returned if the request was aborted by the user or the wallet.\n *\n * Returned by: Permission | Operation Request | Sign Request | Broadcast\n */\n ABORTED_ERROR = "ABORTED_ERROR",\n /**\n * {@link UnknownBeaconError}\n *\n * Used as a wildcard if an unexpected error occured.\n *\n * Returned by: Permission | Operation Request | Sign Request | Broadcast\n */\n UNKNOWN_ERROR = "UNKNOWN_ERROR"\n}\n'},{name:"@airgap/beacon-types/dist/esm/types/ColorMode.d.ts",dts:'export declare enum ColorMode {\n LIGHT = "light",\n DARK = "dark"\n}\n'},{name:"@airgap/beacon-types/dist/esm/types/ConnectionContext.d.ts",dts:"/// \nimport { Origin } from '..';\n/**\n * @internalapi\n */\nexport interface ConnectionContext {\n origin: Origin;\n id: string;\n extras?: {\n sender: chrome.runtime.MessageSender;\n sendResponse(response?: unknown): void;\n };\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/EncryptionOperation.d.ts",dts:""},{name:"@airgap/beacon-types/dist/esm/types/EncryptionType.d.ts",dts:""},{name:"@airgap/beacon-types/dist/esm/types/Extension.d.ts",dts:"export interface Extension {\n id: string;\n name: string;\n shortName?: string;\n iconUrl?: string;\n color?: string;\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/ExtensionMessage.d.ts",dts:"import { ExtensionMessageTarget } from '..';\n/**\n * @internalapi\n */\nexport interface ExtensionMessage {\n target: ExtensionMessageTarget;\n targetId?: string;\n sender?: U;\n payload: T;\n}\n/**\n * @internalapi\n */\nexport interface EncryptedExtensionMessage {\n target: ExtensionMessageTarget;\n targetId?: string;\n sender?: U;\n encryptedPayload: string;\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/ExtensionMessageTarget.d.ts",dts:'/**\n * @internalapi\n */\nexport declare enum ExtensionMessageTarget {\n BACKGROUND = "toBackground",\n PAGE = "toPage",\n EXTENSION = "toExtension"\n}\n'},{name:"@airgap/beacon-types/dist/esm/types/Notification.d.ts",dts:"export interface Notification {\n version: number;\n apiUrl: string;\n token: string;\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/Origin.d.ts",dts:'/**\n * @internalapi\n */\nexport declare enum Origin {\n WEBSITE = "website",\n EXTENSION = "extension",\n P2P = "p2p",\n WALLETCONNECT = "walletconnect"\n}\n'},{name:"@airgap/beacon-types/dist/esm/types/P2PPairingRequest.d.ts",dts:"import { ExtendedPeerInfo, PeerInfo } from './PeerInfo';\n/**\n * @internalapi\n */\nexport declare class P2PPairingRequest implements PeerInfo {\n readonly type: string;\n relayServer: string;\n id: string;\n name: string;\n icon?: string | undefined;\n appUrl?: string | undefined;\n publicKey: string;\n version: string;\n constructor(id: string, name: string, publicKey: string, version: string, relayServer: string, icon?: string, appUrl?: string);\n}\n/**\n * @internalapi\n */\nexport declare class ExtendedP2PPairingRequest extends P2PPairingRequest implements ExtendedPeerInfo {\n senderId: string;\n constructor(id: string, name: string, publicKey: string, version: string, relayServer: string, senderId: string, icon?: string, appUrl?: string);\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/P2PPairingResponse.d.ts",dts:"import { ExtendedPeerInfo, PeerInfo } from './PeerInfo';\n/**\n * @internalapi\n */\nexport declare class P2PPairingResponse implements PeerInfo {\n readonly type: string;\n relayServer: string;\n id: string;\n name: string;\n icon?: string | undefined;\n appUrl?: string | undefined;\n publicKey: string;\n version: string;\n constructor(id: string, name: string, publicKey: string, version: string, relayServer: string, icon?: string, appUrl?: string);\n}\n/**\n * @internalapi\n */\nexport declare class ExtendedP2PPairingResponse extends P2PPairingResponse implements ExtendedPeerInfo {\n senderId: string;\n constructor(id: string, name: string, publicKey: string, version: string, relayServer: string, senderId: string, icon?: string, appUrl?: string);\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/PeerInfo.d.ts",dts:"export interface PeerInfo {\n id: string;\n name: string;\n type: string;\n icon?: string;\n appUrl?: string;\n publicKey: string;\n version: string;\n}\nexport interface ExtendedPeerInfo extends PeerInfo {\n senderId: string;\n}\nexport type PeerInfoType = PeerInfo | ExtendedPeerInfo;\n"},{name:"@airgap/beacon-types/dist/esm/types/PermissionEntity.d.ts",dts:"import { Network, PermissionScope, Threshold } from '..';\nexport interface PermissionEntity {\n address: string;\n network: Network;\n scopes: PermissionScope[];\n threshold?: Threshold;\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/PermissionInfo.d.ts",dts:"import { AppMetadata } from '..';\nimport { PermissionEntity } from './PermissionEntity';\nexport interface PermissionInfo extends PermissionEntity {\n accountIdentifier: string;\n senderId: string;\n appMetadata: AppMetadata;\n website: string;\n publicKey?: string;\n connectedAt: number;\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/PostMessagePairingRequest.d.ts",dts:"import { ExtendedPeerInfo, PeerInfo } from './PeerInfo';\n/**\n * @internalapi\n */\nexport declare class PostMessagePairingRequest implements PeerInfo {\n readonly type: string;\n id: string;\n name: string;\n icon?: string | undefined;\n appUrl?: string | undefined;\n publicKey: string;\n version: string;\n constructor(id: string, name: string, publicKey: string, version: string, icon?: string, appUrl?: string);\n}\n/**\n * @internalapi\n */\nexport declare class ExtendedPostMessagePairingRequest extends PostMessagePairingRequest implements ExtendedPeerInfo {\n senderId: string;\n constructor(id: string, name: string, publicKey: string, version: string, senderId: string, icon?: string, appUrl?: string);\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/PostMessagePairingResponse.d.ts",dts:"import { ExtendedPeerInfo, PeerInfo } from './PeerInfo';\n/**\n * @internalapi\n */\nexport declare class PostMessagePairingResponse implements PeerInfo {\n readonly type: string;\n id: string;\n name: string;\n icon?: string | undefined;\n appUrl?: string | undefined;\n publicKey: string;\n version: string;\n constructor(id: string, name: string, publicKey: string, version: string, icon?: string, appUrl?: string);\n}\n/**\n * @internalapi\n */\nexport declare class ExtendedPostMessagePairingResponse extends PostMessagePairingResponse implements ExtendedPeerInfo {\n senderId: string;\n extensionId: string;\n constructor(id: string, name: string, publicKey: string, version: string, senderId: string, extensionId: string, icon?: string, appUrl?: string);\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/PushToken.d.ts",dts:"export interface PushToken {\n publicKey: string;\n backendUrl: string;\n accessToken: string;\n managementToken: string;\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/Regions.d.ts",dts:'/**\n * Geographic region where a beacon node is located. This list can be changed in the future to be more specific, but for now it should cover most general areas.\n */\nexport declare enum Regions {\n EUROPE_EAST = "europe-east",\n EUROPE_WEST = "europe-west",\n NORTH_AMERICA_EAST = "north-america-east",\n NORTH_AMERICA_WEST = "north-america-west",\n CENTRAL_AMERICA = "central-america",\n SOUTH_AMERICA = "south-america",\n ASIA_EAST = "asia-east",\n ASIA_WEST = "asia-west",\n AFRICA = "africa",\n AUSTRALIA = "australia"\n}\nexport type NodeDistributions = Record;\n'},{name:"@airgap/beacon-types/dist/esm/types/RequestBroadcastInput.d.ts",dts:"import { Network } from '..';\n/**\n * @category DApp\n */\nexport interface RequestBroadcastInput {\n /**\n * @deprecated You should now specify the network in the constructor of the DAppClient\n */\n network?: Network;\n signedTransaction: string;\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/RequestEncryptPayloadInput.d.ts",dts:"/**\n * @category DApp\n */\n"},{name:"@airgap/beacon-types/dist/esm/types/RequestOperationInput.d.ts",dts:"import { PartialTezosOperation } from './tezos/PartialTezosOperation';\n/**\n * @category DApp\n */\nexport interface RequestOperationInput {\n operationDetails: PartialTezosOperation[];\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/RequestPermissionInput.d.ts",dts:"import { Network, PermissionScope } from '..';\n/**\n * @category DApp\n */\nexport interface RequestPermissionInput {\n /**\n * @deprecated You should now specify the network in the constructor of the DAppClient\n */\n network?: Network;\n scopes?: PermissionScope[];\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/RequestProofOfEventChallengeInput.d.ts",dts:"/**\n * @category DApp\n */\nexport interface RequestProofOfEventChallengeInput {\n dAppChallengeId: string;\n payload: string;\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/RequestSignPayloadInput.d.ts",dts:"import { SigningType } from '..';\n/**\n * @category DApp\n */\nexport interface RequestSignPayloadInput {\n signingType?: SigningType;\n payload: string;\n sourceAddress?: string;\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/WalletConnectPairingRequest.d.ts",dts:"import { ExtendedPeerInfo, PeerInfo } from './PeerInfo';\n/**\n * @internalapi\n */\nexport declare class WalletConnectPairingRequest implements PeerInfo {\n readonly type: string;\n uri: string;\n id: string;\n name: string;\n icon?: string | undefined;\n appUrl?: string | undefined;\n publicKey: string;\n version: string;\n constructor(id: string, name: string, publicKey: string, version: string, uri: string, icon?: string, appUrl?: string);\n}\n/**\n * @internalapi\n */\nexport declare class ExtendedWalletConnectPairingRequest extends WalletConnectPairingRequest implements ExtendedPeerInfo {\n senderId: string;\n constructor(id: string, name: string, publicKey: string, version: string, senderId: string, uri: string, icon?: string, appUrl?: string);\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/WalletConnectPairingResponse.d.ts",dts:"import { PeerInfo } from './PeerInfo';\n/**\n * @internalapi\n */\nexport declare class WalletConnectPairingResponse implements PeerInfo {\n readonly type: string;\n id: string;\n name: string;\n icon?: string | undefined;\n appUrl?: string | undefined;\n publicKey: string;\n version: string;\n constructor(id: string, name: string, publicKey: string, version: string, icon?: string, appUrl?: string);\n}\n/**\n * @internalapi\n */\nexport declare class ExtendedWalletConnectPairingResponse extends WalletConnectPairingResponse {\n senderId: string;\n extensionId: string;\n constructor(id: string, name: string, publicKey: string, version: string, senderId: string, extensionId: string, icon?: string, appUrl?: string);\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/WalletInfo.d.ts",dts:"export interface WalletInfo {\n name: string;\n type?: 'extension' | 'mobile' | 'web' | 'desktop';\n icon?: string;\n deeplink?: string;\n}\n"},{name:"@airgap/beacon-types/dist/esm/types/ui.d.ts",dts:"import { NetworkType } from './beacon/NetworkType';\nexport interface AppBase {\n key: string;\n name: string;\n shortName: string;\n color: string;\n logo: string;\n supportedInteractionStandards?: ('wallet_connect' | 'beacon')[];\n}\nexport interface ExtensionApp extends AppBase {\n id: string;\n link: string;\n}\nexport interface WebApp extends AppBase {\n links: {\n [NetworkType.MAINNET]: string;\n [NetworkType.GHOSTNET]?: string;\n [NetworkType.WEEKLYNET]?: string;\n [NetworkType.DAILYNET]?: string;\n [NetworkType.DELPHINET]?: string;\n [NetworkType.EDONET]?: string;\n [NetworkType.FLORENCENET]?: string;\n [NetworkType.GRANADANET]?: string;\n [NetworkType.HANGZHOUNET]?: string;\n [NetworkType.ITHACANET]?: string;\n [NetworkType.JAKARTANET]?: string;\n [NetworkType.KATHMANDUNET]?: string;\n [NetworkType.LIMANET]?: string;\n [NetworkType.MUMBAINET]?: string;\n [NetworkType.NAIROBINET]?: string;\n [NetworkType.OXFORDNET]?: string;\n [NetworkType.CUSTOM]?: string;\n };\n}\nexport interface DesktopApp extends AppBase {\n deepLink: string;\n downloadLink: string;\n}\nexport interface App extends AppBase {\n universalLink: string;\n deepLink?: string;\n}\n"},{name:"@airgap/beacon-types/dist/esm/index.d.ts",dts:"/**\n * General docs\n * @module public\n */\nimport { AppMetadata } from './types/beacon/AppMetadata';\nimport { PermissionRequest } from './types/beacon/messages/PermissionRequest';\nimport { ProofOfEventChallengeRequest } from './types/beacon/messages/ProofOfEventChallengeRequest';\nimport { ProofOfEventChallengeResponse } from './types/beacon/messages/ProofOfEventChallengeResponse';\nimport { ProofOfEventChallengeRecordedRequest } from './types/beacon/messages/ProofOfEventChallengeRecordedRequest';\nimport { Network } from './types/beacon/Network';\nimport { BeaconBaseMessage } from './types/beacon/BeaconBaseMessage';\nimport { BeaconMessageType } from './types/beacon/BeaconMessageType';\nimport { PermissionScope } from './types/beacon/PermissionScope';\nimport { PermissionResponse } from './types/beacon/messages/PermissionResponse';\nimport { OperationRequest } from './types/beacon/messages/OperationRequest';\nimport { OperationResponse } from './types/beacon/messages/OperationResponse';\nimport { SignPayloadRequest } from './types/beacon/messages/SignPayloadRequest';\nimport { SignPayloadResponse } from './types/beacon/messages/SignPayloadResponse';\nimport { BroadcastRequest } from './types/beacon/messages/BroadcastRequest';\nimport { BroadcastResponse } from './types/beacon/messages/BroadcastResponse';\nimport { NetworkType } from './types/beacon/NetworkType';\nimport { TezosBaseOperation } from './types/tezos/TezosBaseOperation';\nimport { TezosOperationType } from './types/tezos/OperationTypes';\nimport { TezosActivateAccountOperation } from './types/tezos/operations/ActivateAccount';\nimport { TezosBallotOperation } from './types/tezos/operations/Ballot';\nimport { TezosDelegationOperation } from './types/tezos/operations/Delegation';\nimport { TezosDoubleBakingEvidenceOperation } from './types/tezos/operations/DoubleBakingEvidence';\nimport { TezosBlockHeader } from './types/tezos/TezosBlockHeader';\nimport { TezosDoubleEndorsementEvidenceOperation } from './types/tezos/operations/DoubleEndorsementEvidence';\nimport { TezosEndorsementOperation } from './types/tezos/operations/Endorsement';\nimport { TezosOriginationOperation } from './types/tezos/operations/Origination';\nimport { TezosProposalOperation } from './types/tezos/operations/Proposal';\nimport { TezosRevealOperation } from './types/tezos/operations/Reveal';\nimport { TezosSeedNonceRevelationOperation } from './types/tezos/operations/SeedNonceRevelation';\nimport { TezosTransactionOperation } from './types/tezos/operations/Transaction';\nimport { MichelineMichelsonV1Expression } from './types/tezos/MichelineMichelsonV1Expression';\nimport { MichelsonPrimitives } from './types/tezos/MichelsonPrimitives';\nimport { TezosTransactionParameters } from './types/tezos/TezosTransactionParameters';\nimport { Origin } from './types/Origin';\nimport { AccountInfo, AccountIdentifier } from './types/AccountInfo';\nimport { EncryptedExtensionMessage, ExtensionMessage } from './types/ExtensionMessage';\nimport { ExtensionMessageTarget } from './types/ExtensionMessageTarget';\nimport { TezosOperation } from './types/tezos/TezosOperation';\nimport { BeaconErrorType } from './types/BeaconErrorType';\nimport { ErrorResponse } from './types/beacon/messages/ErrorResponse';\nimport { TransportStatus } from './types/transport/TransportStatus';\nimport { TransportType } from './types/transport/TransportType';\nimport { Storage } from './types/storage/Storage';\nimport { StorageKey } from './types/storage/StorageKey';\nimport { defaultValues, StorageKeyReturnDefaults } from './types/storage/StorageKeyReturnDefaults';\nimport { StorageKeyReturnType } from './types/storage/StorageKeyReturnType';\nimport { ExtendedP2PPairingRequest, P2PPairingRequest } from './types/P2PPairingRequest';\nimport { BeaconMessage } from './types/beacon/BeaconMessage';\nimport { RequestPermissionInput } from './types/RequestPermissionInput';\nimport { RequestProofOfEventChallengeInput } from './types/RequestProofOfEventChallengeInput';\nimport { RequestSignPayloadInput } from './types/RequestSignPayloadInput';\nimport { RequestOperationInput } from './types/RequestOperationInput';\nimport { RequestBroadcastInput } from './types/RequestBroadcastInput';\nimport { PermissionResponseInput, SignPayloadResponseInput, OperationResponseInput, BroadcastResponseInput, BeaconResponseInputMessage, AcknowledgeResponseInput, ErrorResponseInput, IgnoredResponseInputProperties } from './types/beacon/messages/BeaconResponseInputMessage';\nimport { PermissionResponseOutput, SignPayloadResponseOutput, OperationResponseOutput, BroadcastResponseOutput, BeaconResponseOutputMessage, ProofOfEventChallengeResponseOutput } from './types/beacon/messages/BeaconResponseOutputMessage';\nimport { PermissionRequestInput, SignPayloadRequestInput, OperationRequestInput, BroadcastRequestInput, BeaconRequestInputMessage, IgnoredRequestInputProperties, ProofOfEventChallengeRecordedMessageInput, ProofOfEventChallengeRequestInput } from './types/beacon/messages/BeaconRequestInputMessage';\nimport { PermissionRequestOutput, SignPayloadRequestOutput, OperationRequestOutput, BroadcastRequestOutput, BeaconRequestOutputMessage, ProofOfEventChallengeRequestOutput, ProofOfEventChallengeRecordedMessageOutput } from './types/beacon/messages/BeaconRequestOutputMessage';\nimport { PermissionInfo } from './types/PermissionInfo';\nimport { ConnectionContext } from './types/ConnectionContext';\nimport { Threshold } from './types/beacon/Threshold';\nimport { PartialTezosTransactionOperation, PartialTezosOperation, PartialTezosDelegationOperation, PartialTezosOriginationOperation, PartialTezosRevealOperation } from './types/tezos/PartialTezosOperation';\nimport { ExtendedPeerInfo, PeerInfo, PeerInfoType } from './types/PeerInfo';\nimport { AcknowledgeResponse } from './types/beacon/messages/AcknowledgeResponse';\nimport { DisconnectMessage } from './types/beacon/messages/DisconnectMessage';\nimport { SigningType } from './types/beacon/SigningType';\nimport { ExtendedP2PPairingResponse, P2PPairingResponse } from './types/P2PPairingResponse';\nimport { ExtendedPostMessagePairingRequest, PostMessagePairingRequest } from './types/PostMessagePairingRequest';\nimport { ExtendedWalletConnectPairingResponse, WalletConnectPairingResponse } from './types/WalletConnectPairingResponse';\nimport { ExtendedWalletConnectPairingRequest, WalletConnectPairingRequest } from './types/WalletConnectPairingRequest';\nimport { ExtendedPostMessagePairingResponse, PostMessagePairingResponse } from './types/PostMessagePairingResponse';\nimport { BeaconRequestMessage } from './types/beacon/BeaconRequestMessage';\nimport { BeaconResponseMessage } from './types/beacon/BeaconResponseMessage';\nimport { ColorMode } from './types/ColorMode';\nimport { Optional } from './types/utils/Optional';\nimport { Extension } from './types/Extension';\nimport { PermissionEntity } from './types/PermissionEntity';\nimport { WalletInfo } from './types/WalletInfo';\nimport { ChangeAccountRequest } from './types/beacon/messages/ChangeAccountRequest';\nexport * from './types/AnalyticsInterface';\nexport * from './types/beaconV3/PermissionRequest';\nexport * from './types/ui';\nexport * from './types/Regions';\nexport { TezosBaseOperation, TezosOperationType, TezosBlockHeader, MichelineMichelsonV1Expression, MichelsonPrimitives, TezosTransactionParameters, TezosOperation };\nexport { TezosActivateAccountOperation, TezosBallotOperation, TezosDelegationOperation, TezosDoubleBakingEvidenceOperation, TezosDoubleEndorsementEvidenceOperation, TezosEndorsementOperation, TezosOriginationOperation, TezosProposalOperation, TezosRevealOperation, TezosSeedNonceRevelationOperation, TezosTransactionOperation, PartialTezosOperation, PartialTezosTransactionOperation, PartialTezosDelegationOperation, PartialTezosOriginationOperation, PartialTezosRevealOperation };\nexport { AccountIdentifier, AppMetadata, Network, NetworkType, BeaconMessage, PermissionRequest, PermissionResponse, OperationRequest, OperationResponse, SignPayloadRequest, SignPayloadResponse, BroadcastRequest, BroadcastResponse, ChangeAccountRequest, AcknowledgeResponse, DisconnectMessage, BeaconBaseMessage, BeaconMessageType, PermissionScope, Origin, AccountInfo, Threshold, SigningType, ExtensionMessageTarget, ExtensionMessage, Extension, EncryptedExtensionMessage, RequestPermissionInput, RequestProofOfEventChallengeInput, RequestSignPayloadInput, ProofOfEventChallengeRecordedMessageInput, RequestOperationInput, RequestBroadcastInput, PermissionInfo, PermissionEntity, ProofOfEventChallengeRequest, ProofOfEventChallengeResponse, ProofOfEventChallengeRecordedRequest };\nexport { PermissionResponseInput, SignPayloadResponseInput, OperationResponseInput, BroadcastResponseInput, AcknowledgeResponseInput, ErrorResponseInput, PermissionResponseOutput, ProofOfEventChallengeResponseOutput, SignPayloadResponseOutput, OperationResponseOutput, BroadcastResponseOutput, PermissionRequestInput, SignPayloadRequestInput, ProofOfEventChallengeRequestInput, OperationRequestInput, BroadcastRequestInput, PermissionRequestOutput, SignPayloadRequestOutput, ProofOfEventChallengeRequestOutput, ProofOfEventChallengeRecordedMessageOutput, OperationRequestOutput, BroadcastRequestOutput, BeaconRequestInputMessage, BeaconRequestOutputMessage, BeaconResponseInputMessage, BeaconResponseOutputMessage, BeaconRequestMessage, BeaconResponseMessage };\nexport { BeaconErrorType, ErrorResponse };\nexport { TransportStatus, TransportType };\nexport { Storage, StorageKey, StorageKeyReturnDefaults, StorageKeyReturnType };\nexport { PeerInfo, ExtendedPeerInfo, PeerInfoType, PostMessagePairingRequest, PostMessagePairingResponse, ExtendedPostMessagePairingRequest, ExtendedPostMessagePairingResponse, P2PPairingRequest, P2PPairingResponse, ExtendedP2PPairingRequest, ExtendedP2PPairingResponse, WalletConnectPairingResponse, WalletConnectPairingRequest, ExtendedWalletConnectPairingRequest, ExtendedWalletConnectPairingResponse };\nexport { IgnoredResponseInputProperties, IgnoredRequestInputProperties, defaultValues };\nexport { ConnectionContext, ColorMode, WalletInfo };\nexport { PushToken } from './types/PushToken';\nexport { Optional };\n"},{name:"@airgap/beacon-ui/components/alert/index.d.ts",dts:"import { Component } from 'solid-js';\nexport interface AlertProps {\n content: any;\n open: boolean;\n showMore?: boolean;\n extraContent?: any;\n loading?: boolean;\n onCloseClick: () => void;\n onClickShowMore?: () => void;\n onBackClick?: () => void;\n}\ndeclare const Alert: Component;\nexport default Alert;\n"},{name:"@airgap/beacon-ui/components/icons/index.d.ts",dts:"import { JSX } from 'solid-js/jsx-runtime';\ninterface IconProps {\n style?: JSX.CSSProperties | undefined;\n}\nexport declare function CloseIcon(props: IconProps): JSX.Element;\nexport declare function LeftIcon(props: IconProps): JSX.Element;\nexport declare function LogoIcon(props: IconProps): JSX.Element;\nexport {};\n"},{name:"@airgap/beacon-ui/components/info/index.d.ts",dts:"import { Component } from 'solid-js';\nimport styles from './styles.css';\ninterface InfoProps {\n title: string;\n description?: string;\n data?: string;\n icon?: any;\n border?: boolean;\n iconBadge?: boolean;\n bigIcon?: boolean;\n buttons?: {\n label: string;\n type: 'primary' | 'secondary';\n onClick: () => void;\n }[];\n}\ndeclare const Info: Component;\nexport { styles };\nexport default Info;\n"},{name:"@airgap/beacon-ui/components/loader/index.d.ts",dts:"import { Component } from 'solid-js';\nimport styles from './styles.css';\ninterface LoaderProps {\n}\ndeclare const Loader: Component;\nexport { styles };\nexport default Loader;\n"},{name:"@airgap/beacon-ui/components/pair-other/pair-other.d.ts",dts:"import { Component } from 'solid-js';\nimport { MergedWallet } from '../../utils/wallets';\nimport { P2PPairingRequest, WalletConnectPairingRequest } from '@airgap/beacon-types';\nimport styles from './styles.css';\nexport interface PairOtherProps {\n walletList: MergedWallet[];\n p2pPayload: Promise | undefined;\n wcPayload: Promise | undefined;\n onClickLearnMore: () => void;\n}\ndeclare const PairOther: Component;\nexport { styles };\nexport default PairOther;\n"},{name:"@airgap/beacon-ui/components/qr/index.d.ts",dts:"import { Component } from 'solid-js';\nimport styles from './styles.css';\ninterface QRProps {\n isWalletConnect: boolean;\n isMobile: boolean;\n walletName: string;\n code: string;\n onClickLearnMore?: () => void;\n onClickQrCode?: () => void;\n}\ndeclare const QR: Component;\nexport { styles };\nexport default QR;\n"},{name:"@airgap/beacon-ui/components/toast/index.d.ts",dts:"import { Component } from 'solid-js';\nexport interface ToastProps {\n label: string;\n open: boolean;\n onClickClose: () => void;\n actions?: {\n text: string;\n isBold?: boolean;\n actionText?: string;\n actionCallback?: () => void;\n }[];\n walletInfo?: {\n deeplink?: string;\n icon?: string;\n name: string;\n type?: string;\n };\n openWalletAction?: () => void;\n}\ndeclare const Toast: Component;\nexport default Toast;\n"},{name:"@airgap/beacon-ui/components/top-wallets/index.d.ts",dts:"import { Component } from 'solid-js';\nimport { MergedWallet } from '../../utils/wallets';\nimport styles from './styles.css';\ninterface TopWalletsProps {\n wallets: MergedWallet[];\n onClickWallet: (id: string) => void;\n onClickLearnMore: () => void;\n otherWallets?: {\n images: string[];\n onClick: () => void;\n };\n disabled?: boolean;\n isMobile: boolean;\n}\ndeclare const TopWallets: Component;\nexport { styles };\nexport default TopWallets;\n"},{name:"@airgap/beacon-ui/components/wallet/index.d.ts",dts:"import { Component } from 'solid-js';\nimport styles from './styles.css';\ninterface WalletProps {\n name: string;\n image: string;\n description?: string;\n small?: boolean;\n mobile?: boolean;\n onClick: () => void;\n tags?: string[];\n disabled?: boolean;\n}\ndeclare const Wallet: Component;\nexport { styles };\nexport default Wallet;\n"},{name:"@airgap/beacon-ui/components/wallets/index.d.ts",dts:"import { Component } from 'solid-js';\nimport { MergedWallet } from '../../utils/wallets';\nimport styles from './styles.css';\ninterface WalletProps {\n wallets: MergedWallet[];\n onClickWallet: (id: string) => void;\n onClickOther: () => void;\n isMobile: boolean;\n small?: boolean;\n disabled?: boolean;\n}\ndeclare const Wallets: Component;\nexport { styles };\nexport default Wallets;\n"},{name:"@airgap/beacon-ui/components/pairing.d.ts",dts:'import { DesktopApp, App, ExtensionApp, WebApp } from \'@airgap/beacon-types\';\nexport declare const getDesktopList: () => DesktopApp[];\nexport declare const setDesktopList: (desktopList: DesktopApp[]) => void;\nexport declare const getExtensionList: () => ExtensionApp[];\nexport declare const setExtensionList: (extensionList: ExtensionApp[]) => void;\nexport declare const getWebList: () => WebApp[];\nexport declare const setWebList: (webList: WebApp[]) => void;\nexport declare const getiOSList: () => App[];\nexport declare const setiOSList: (iosList: App[]) => void;\nexport declare enum Platform {\n DESKTOP = 0,\n IOS = 1,\n ANDROID = 2\n}\nexport declare enum WalletType {\n IOS = "ios",\n ANDROID = "android",\n EXTENSION = "extension",\n DESKTOP = "desktop",\n WEB = "web"\n}\nexport interface PairingAlertWallet {\n key: string;\n name: string;\n shortName?: string;\n color?: string;\n logo?: string;\n enabled: boolean;\n clickHandler(): void;\n}\nexport interface PairingAlertButton {\n title: string;\n text: string;\n clickHandler(): void;\n}\nexport interface PairingAlertList {\n title: string;\n type: WalletType;\n wallets: PairingAlertWallet[];\n}\nexport interface PairingAlertInfo {\n walletLists: PairingAlertList[];\n buttons: PairingAlertButton[];\n}\nexport type StatusUpdateHandler = (walletType: WalletType, app?: PairingAlertWallet, keepOpen?: boolean) => void;\n/**\n * @internalapi\n *\n */\nexport declare class Pairing {\n}\n'},{name:"@airgap/beacon-ui/ui/alert/alert-templates.d.ts",dts:"export declare const alertTemplates: {\n default: {\n css: string;\n };\n pair: {\n css: string;\n };\n};\n"},{name:"@airgap/beacon-ui/ui/alert/index.d.ts",dts:"import { AnalyticsInterface, NetworkType, P2PPairingRequest, PostMessagePairingRequest, WalletConnectPairingRequest } from '@airgap/beacon-types';\nexport interface AlertButton {\n text: string;\n style?: 'solid' | 'outline';\n actionCallback?(): Promise;\n}\nexport interface AlertConfig {\n title: string;\n body?: string;\n data?: string;\n timer?: number;\n buttons?: AlertButton[];\n pairingPayload?: {\n p2pSyncCode: () => Promise;\n postmessageSyncCode: () => Promise;\n walletConnectSyncCode: () => Promise;\n networkType: NetworkType;\n };\n closeButtonCallback?(): void;\n disclaimerText?: string;\n analytics?: AnalyticsInterface;\n featuredWallets?: string[];\n}\n/**\n * Close an alert by ID\n *\n * @param id ID of alert\n */\ndeclare const closeAlert: (_: string) => Promise;\n/**\n * Close all alerts\n */\ndeclare const closeAlerts: () => Promise;\n/**\n * Show an alert\n *\n * @param alertConfig The configuration of the alert\n */\ndeclare const openAlert: (config: AlertConfig) => Promise;\nexport { closeAlert, closeAlerts, openAlert };\n"},{name:"@airgap/beacon-ui/ui/alert/wallet-lists.d.ts",dts:"import { App, DesktopApp, ExtensionApp, WebApp } from '@airgap/beacon-types';\nexport declare const extensionList: ExtensionApp[];\nexport declare const desktopList: DesktopApp[];\nexport declare const webList: WebApp[];\nexport declare const iOSList: App[];\n"},{name:"@airgap/beacon-ui/ui/toast/index.d.ts",dts:"import { WalletInfo } from '@airgap/beacon-types';\nexport interface ToastAction {\n text: string;\n isBold?: boolean;\n actionText?: string;\n actionLogo?: 'external';\n actionCallback?(): Promise;\n}\nexport interface ToastConfig {\n body: string;\n timer?: number;\n forceNew?: boolean;\n state: 'prepare' | 'loading' | 'acknowledge' | 'finished';\n actions?: ToastAction[];\n walletInfo?: WalletInfo;\n openWalletAction?(): Promise;\n}\n/**\n * Close a toast\n */\ndeclare const closeToast: () => Promise;\n/**\n * Create a new toast\n *\n * @param toastConfig Configuration of the toast\n */\ndeclare const openToast: (config: ToastConfig) => Promise;\nexport { closeToast, openToast };\n"},{name:"@airgap/beacon-ui/ui/toast/toast-templates.d.ts",dts:"export declare const toastTemplates: {\n default: {\n css: string;\n };\n};\n"},{name:"@airgap/beacon-ui/utils/colorMode.d.ts",dts:"import { ColorMode } from '@airgap/beacon-types';\nexport declare const setColorMode: (mode: ColorMode) => void;\nexport declare const getColorMode: () => ColorMode;\n"},{name:"@airgap/beacon-ui/utils/get-tzip10-link.d.ts",dts:"export declare const getTzip10Link: (url: string, payload: string) => string;\n"},{name:"@airgap/beacon-ui/utils/platform.d.ts",dts:"export declare const testUserAgent: (win: Window, expr: RegExp) => boolean;\nexport declare const isMobile: (win: Window) => boolean;\nexport declare const isBrowser: (win: Window) => boolean;\nexport declare const isPrivacyBrowser: (win: Window) => boolean;\nexport declare const isIOS: (win: Window) => boolean;\nexport declare const isAndroid: (win: Window) => boolean;\nexport declare const isTwBrowser: (win: Window) => boolean;\nexport declare const isDesktop: (win: Window) => boolean;\nexport declare const isMobileOS: (win: Window) => boolean;\n"},{name:"@airgap/beacon-ui/utils/qr.d.ts",dts:"/**\n * Convert data to a QR code\n *\n * @param payload The data to be encoded as a QR code\n * @param type How the QR code will be encoded\n */\nexport declare const getQrData: (payload: string, height?: number, width?: number) => string;\n"},{name:"@airgap/beacon-ui/utils/wallets.d.ts",dts:"export interface Wallet {\n id: string;\n key: string;\n name: string;\n image: string;\n description: string;\n type: string;\n link: string;\n supportedInteractionStandards?: ('wallet_connect' | 'beacon')[];\n deepLink?: string;\n}\nexport interface MergedWallet {\n id: string;\n firefoxId?: string;\n key: string;\n name: string;\n image: string;\n descriptions: string[];\n types: string[];\n links: string[];\n supportedInteractionStandards?: ('wallet_connect' | 'beacon')[];\n tags?: string[];\n deepLink?: string;\n}\nexport declare enum OSLink {\n WEB = 0,\n IOS = 1,\n DESKTOP = 2,\n EXTENSION = 3\n}\nexport declare function parseWallets(wallets: Wallet[]): Wallet[];\nexport declare function arrangeTopWallets(arr: MergedWallet[], walletIds: string[]): MergedWallet[];\nexport declare function mergeWallets(wallets: Wallet[]): MergedWallet[];\n"},{name:"@airgap/beacon-ui/index.d.ts",dts:"export { openAlert, closeAlerts } from './ui/alert';\nexport type { AlertButton, AlertConfig } from './ui/alert';\nexport { Pairing, setDesktopList, setExtensionList, setWebList, setiOSList, getDesktopList, getExtensionList, getWebList, getiOSList } from './components/pairing';\nexport { closeToast, openToast } from './ui/toast';\nexport type { ToastAction } from './ui/toast';\nexport { getColorMode, setColorMode } from './utils/colorMode';\nexport { isMobile, isMobileOS, isBrowser, isDesktop } from './utils/platform';\n"},{name:"@airgap/beacon-ui/dist/esm/components/alert/index.d.ts",dts:"import { Component } from 'solid-js';\nexport interface AlertProps {\n content: any;\n open: boolean;\n showMore?: boolean;\n extraContent?: any;\n loading?: boolean;\n onCloseClick: () => void;\n onClickShowMore?: () => void;\n onBackClick?: () => void;\n}\ndeclare const Alert: Component;\nexport default Alert;\n"},{name:"@airgap/beacon-ui/dist/esm/components/icons/index.d.ts",dts:"import { JSX } from 'solid-js/jsx-runtime';\ninterface IconProps {\n style?: JSX.CSSProperties | undefined;\n}\nexport declare function CloseIcon(props: IconProps): JSX.Element;\nexport declare function LeftIcon(props: IconProps): JSX.Element;\nexport declare function LogoIcon(props: IconProps): JSX.Element;\nexport {};\n"},{name:"@airgap/beacon-ui/dist/esm/components/info/index.d.ts",dts:"import { Component } from 'solid-js';\nimport styles from './styles.css';\ninterface InfoProps {\n title: string;\n description?: string;\n data?: string;\n icon?: any;\n border?: boolean;\n iconBadge?: boolean;\n bigIcon?: boolean;\n buttons?: {\n label: string;\n type: 'primary' | 'secondary';\n onClick: () => void;\n }[];\n}\ndeclare const Info: Component;\nexport { styles };\nexport default Info;\n"},{name:"@airgap/beacon-ui/dist/esm/components/loader/index.d.ts",dts:"import { Component } from 'solid-js';\nimport styles from './styles.css';\ninterface LoaderProps {\n}\ndeclare const Loader: Component;\nexport { styles };\nexport default Loader;\n"},{name:"@airgap/beacon-ui/dist/esm/components/pair-other/pair-other.d.ts",dts:"import { Component } from 'solid-js';\nimport { MergedWallet } from '../../utils/wallets';\nimport { P2PPairingRequest, WalletConnectPairingRequest } from '@airgap/beacon-types';\nimport styles from './styles.css';\nexport interface PairOtherProps {\n walletList: MergedWallet[];\n p2pPayload: Promise | undefined;\n wcPayload: Promise | undefined;\n onClickLearnMore: () => void;\n}\ndeclare const PairOther: Component;\nexport { styles };\nexport default PairOther;\n"},{name:"@airgap/beacon-ui/dist/esm/components/qr/index.d.ts",dts:"import { Component } from 'solid-js';\nimport styles from './styles.css';\ninterface QRProps {\n isWalletConnect: boolean;\n isMobile: boolean;\n walletName: string;\n code: string;\n onClickLearnMore?: () => void;\n onClickQrCode?: () => void;\n}\ndeclare const QR: Component;\nexport { styles };\nexport default QR;\n"},{name:"@airgap/beacon-ui/dist/esm/components/toast/index.d.ts",dts:"import { Component } from 'solid-js';\nexport interface ToastProps {\n label: string;\n open: boolean;\n onClickClose: () => void;\n actions?: {\n text: string;\n isBold?: boolean;\n actionText?: string;\n actionCallback?: () => void;\n }[];\n walletInfo?: {\n deeplink?: string;\n icon?: string;\n name: string;\n type?: string;\n };\n openWalletAction?: () => void;\n}\ndeclare const Toast: Component;\nexport default Toast;\n"},{name:"@airgap/beacon-ui/dist/esm/components/top-wallets/index.d.ts",dts:"import { Component } from 'solid-js';\nimport { MergedWallet } from '../../utils/wallets';\nimport styles from './styles.css';\ninterface TopWalletsProps {\n wallets: MergedWallet[];\n onClickWallet: (id: string) => void;\n onClickLearnMore: () => void;\n otherWallets?: {\n images: string[];\n onClick: () => void;\n };\n disabled?: boolean;\n isMobile: boolean;\n}\ndeclare const TopWallets: Component;\nexport { styles };\nexport default TopWallets;\n"},{name:"@airgap/beacon-ui/dist/esm/components/wallet/index.d.ts",dts:"import { Component } from 'solid-js';\nimport styles from './styles.css';\ninterface WalletProps {\n name: string;\n image: string;\n description?: string;\n small?: boolean;\n mobile?: boolean;\n onClick: () => void;\n tags?: string[];\n disabled?: boolean;\n}\ndeclare const Wallet: Component;\nexport { styles };\nexport default Wallet;\n"},{name:"@airgap/beacon-ui/dist/esm/components/wallets/index.d.ts",dts:"import { Component } from 'solid-js';\nimport { MergedWallet } from '../../utils/wallets';\nimport styles from './styles.css';\ninterface WalletProps {\n wallets: MergedWallet[];\n onClickWallet: (id: string) => void;\n onClickOther: () => void;\n isMobile: boolean;\n small?: boolean;\n disabled?: boolean;\n}\ndeclare const Wallets: Component;\nexport { styles };\nexport default Wallets;\n"},{name:"@airgap/beacon-ui/dist/esm/components/pairing.d.ts",dts:'import { DesktopApp, App, ExtensionApp, WebApp } from \'@airgap/beacon-types\';\nexport declare const getDesktopList: () => DesktopApp[];\nexport declare const setDesktopList: (desktopList: DesktopApp[]) => void;\nexport declare const getExtensionList: () => ExtensionApp[];\nexport declare const setExtensionList: (extensionList: ExtensionApp[]) => void;\nexport declare const getWebList: () => WebApp[];\nexport declare const setWebList: (webList: WebApp[]) => void;\nexport declare const getiOSList: () => App[];\nexport declare const setiOSList: (iosList: App[]) => void;\nexport declare enum Platform {\n DESKTOP = 0,\n IOS = 1,\n ANDROID = 2\n}\nexport declare enum WalletType {\n IOS = "ios",\n ANDROID = "android",\n EXTENSION = "extension",\n DESKTOP = "desktop",\n WEB = "web"\n}\nexport interface PairingAlertWallet {\n key: string;\n name: string;\n shortName?: string;\n color?: string;\n logo?: string;\n enabled: boolean;\n clickHandler(): void;\n}\nexport interface PairingAlertButton {\n title: string;\n text: string;\n clickHandler(): void;\n}\nexport interface PairingAlertList {\n title: string;\n type: WalletType;\n wallets: PairingAlertWallet[];\n}\nexport interface PairingAlertInfo {\n walletLists: PairingAlertList[];\n buttons: PairingAlertButton[];\n}\nexport type StatusUpdateHandler = (walletType: WalletType, app?: PairingAlertWallet, keepOpen?: boolean) => void;\n/**\n * @internalapi\n *\n */\nexport declare class Pairing {\n}\n'},{name:"@airgap/beacon-ui/dist/esm/ui/alert/alert-templates.d.ts",dts:"export declare const alertTemplates: {\n default: {\n css: string;\n };\n pair: {\n css: string;\n };\n};\n"},{name:"@airgap/beacon-ui/dist/esm/ui/alert/index.d.ts",dts:"import { AnalyticsInterface, NetworkType, P2PPairingRequest, PostMessagePairingRequest, WalletConnectPairingRequest } from '@airgap/beacon-types';\nexport interface AlertButton {\n text: string;\n style?: 'solid' | 'outline';\n actionCallback?(): Promise;\n}\nexport interface AlertConfig {\n title: string;\n body?: string;\n data?: string;\n timer?: number;\n buttons?: AlertButton[];\n pairingPayload?: {\n p2pSyncCode: () => Promise;\n postmessageSyncCode: () => Promise;\n walletConnectSyncCode: () => Promise;\n networkType: NetworkType;\n };\n closeButtonCallback?(): void;\n disclaimerText?: string;\n analytics?: AnalyticsInterface;\n featuredWallets?: string[];\n}\n/**\n * Close an alert by ID\n *\n * @param id ID of alert\n */\ndeclare const closeAlert: (_: string) => Promise;\n/**\n * Close all alerts\n */\ndeclare const closeAlerts: () => Promise;\n/**\n * Show an alert\n *\n * @param alertConfig The configuration of the alert\n */\ndeclare const openAlert: (config: AlertConfig) => Promise;\nexport { closeAlert, closeAlerts, openAlert };\n"},{name:"@airgap/beacon-ui/dist/esm/ui/alert/wallet-lists.d.ts",dts:"import { App, DesktopApp, ExtensionApp, WebApp } from '@airgap/beacon-types';\nexport declare const extensionList: ExtensionApp[];\nexport declare const desktopList: DesktopApp[];\nexport declare const webList: WebApp[];\nexport declare const iOSList: App[];\n"},{name:"@airgap/beacon-ui/dist/esm/ui/toast/index.d.ts",dts:"import { WalletInfo } from '@airgap/beacon-types';\nexport interface ToastAction {\n text: string;\n isBold?: boolean;\n actionText?: string;\n actionLogo?: 'external';\n actionCallback?(): Promise;\n}\nexport interface ToastConfig {\n body: string;\n timer?: number;\n forceNew?: boolean;\n state: 'prepare' | 'loading' | 'acknowledge' | 'finished';\n actions?: ToastAction[];\n walletInfo?: WalletInfo;\n openWalletAction?(): Promise;\n}\n/**\n * Close a toast\n */\ndeclare const closeToast: () => Promise;\n/**\n * Create a new toast\n *\n * @param toastConfig Configuration of the toast\n */\ndeclare const openToast: (config: ToastConfig) => Promise;\nexport { closeToast, openToast };\n"},{name:"@airgap/beacon-ui/dist/esm/ui/toast/toast-templates.d.ts",dts:"export declare const toastTemplates: {\n default: {\n css: string;\n };\n};\n"},{name:"@airgap/beacon-ui/dist/esm/utils/colorMode.d.ts",dts:"import { ColorMode } from '@airgap/beacon-types';\nexport declare const setColorMode: (mode: ColorMode) => void;\nexport declare const getColorMode: () => ColorMode;\n"},{name:"@airgap/beacon-ui/dist/esm/utils/get-tzip10-link.d.ts",dts:"export declare const getTzip10Link: (url: string, payload: string) => string;\n"},{name:"@airgap/beacon-ui/dist/esm/utils/platform.d.ts",dts:"export declare const testUserAgent: (win: Window, expr: RegExp) => boolean;\nexport declare const isMobile: (win: Window) => boolean;\nexport declare const isBrowser: (win: Window) => boolean;\nexport declare const isPrivacyBrowser: (win: Window) => boolean;\nexport declare const isIOS: (win: Window) => boolean;\nexport declare const isAndroid: (win: Window) => boolean;\nexport declare const isTwBrowser: (win: Window) => boolean;\nexport declare const isDesktop: (win: Window) => boolean;\nexport declare const isMobileOS: (win: Window) => boolean;\n"},{name:"@airgap/beacon-ui/dist/esm/utils/qr.d.ts",dts:"/**\n * Convert data to a QR code\n *\n * @param payload The data to be encoded as a QR code\n * @param type How the QR code will be encoded\n */\nexport declare const getQrData: (payload: string, height?: number, width?: number) => string;\n"},{name:"@airgap/beacon-ui/dist/esm/utils/wallets.d.ts",dts:"export interface Wallet {\n id: string;\n key: string;\n name: string;\n image: string;\n description: string;\n type: string;\n link: string;\n supportedInteractionStandards?: ('wallet_connect' | 'beacon')[];\n deepLink?: string;\n}\nexport interface MergedWallet {\n id: string;\n firefoxId?: string;\n key: string;\n name: string;\n image: string;\n descriptions: string[];\n types: string[];\n links: string[];\n supportedInteractionStandards?: ('wallet_connect' | 'beacon')[];\n tags?: string[];\n deepLink?: string;\n}\nexport declare enum OSLink {\n WEB = 0,\n IOS = 1,\n DESKTOP = 2,\n EXTENSION = 3\n}\nexport declare function parseWallets(wallets: Wallet[]): Wallet[];\nexport declare function arrangeTopWallets(arr: MergedWallet[], walletIds: string[]): MergedWallet[];\nexport declare function mergeWallets(wallets: Wallet[]): MergedWallet[];\n"},{name:"@airgap/beacon-ui/dist/esm/index.d.ts",dts:"export { openAlert, closeAlerts } from './ui/alert';\nexport type { AlertButton, AlertConfig } from './ui/alert';\nexport { Pairing, setDesktopList, setExtensionList, setWebList, setiOSList, getDesktopList, getExtensionList, getWebList, getiOSList } from './components/pairing';\nexport { closeToast, openToast } from './ui/toast';\nexport type { ToastAction } from './ui/toast';\nexport { getColorMode, setColorMode } from './utils/colorMode';\nexport { isMobile, isMobileOS, isBrowser, isDesktop } from './utils/platform';\n"},{name:"@airgap/beacon-ui/dist/index/components/alert/index.d.ts",dts:"import { Component } from 'solid-js';\nexport interface AlertProps {\n content: any;\n open: boolean;\n showMore?: boolean;\n extraContent?: any;\n loading?: boolean;\n onCloseClick: () => void;\n onClickShowMore?: () => void;\n onBackClick?: () => void;\n}\ndeclare const Alert: Component;\nexport default Alert;\n"},{name:"@airgap/beacon-ui/dist/index/components/icons/index.d.ts",dts:"import { JSX } from 'solid-js/jsx-runtime';\ninterface IconProps {\n style?: JSX.CSSProperties | undefined;\n}\nexport declare function CloseIcon(props: IconProps): JSX.Element;\nexport declare function LeftIcon(props: IconProps): JSX.Element;\nexport declare function LogoIcon(props: IconProps): JSX.Element;\nexport {};\n"},{name:"@airgap/beacon-ui/dist/index/components/info/index.d.ts",dts:"import { Component } from 'solid-js';\nimport styles from './styles.css';\ninterface InfoProps {\n title: string;\n description?: string;\n data?: string;\n icon?: any;\n border?: boolean;\n iconBadge?: boolean;\n bigIcon?: boolean;\n buttons?: {\n label: string;\n type: 'primary' | 'secondary';\n onClick: () => void;\n }[];\n}\ndeclare const Info: Component;\nexport { styles };\nexport default Info;\n"},{name:"@airgap/beacon-ui/dist/index/components/loader/index.d.ts",dts:"import { Component } from 'solid-js';\nimport styles from './styles.css';\ninterface LoaderProps {\n}\ndeclare const Loader: Component;\nexport { styles };\nexport default Loader;\n"},{name:"@airgap/beacon-ui/dist/index/components/pair-other/pair-other.d.ts",dts:"import { Component } from 'solid-js';\nimport { MergedWallet } from '../../utils/wallets';\nimport { P2PPairingRequest, WalletConnectPairingRequest } from '@airgap/beacon-types';\nimport styles from './styles.css';\nexport interface PairOtherProps {\n walletList: MergedWallet[];\n p2pPayload: Promise | undefined;\n wcPayload: Promise | undefined;\n onClickLearnMore: () => void;\n}\ndeclare const PairOther: Component;\nexport { styles };\nexport default PairOther;\n"},{name:"@airgap/beacon-ui/dist/index/components/qr/index.d.ts",dts:"import { Component } from 'solid-js';\nimport styles from './styles.css';\ninterface QRProps {\n isWalletConnect: boolean;\n isMobile: boolean;\n walletName: string;\n code: string;\n onClickLearnMore?: () => void;\n onClickQrCode?: () => void;\n}\ndeclare const QR: Component;\nexport { styles };\nexport default QR;\n"},{name:"@airgap/beacon-ui/dist/index/components/toast/index.d.ts",dts:"import { Component } from 'solid-js';\nexport interface ToastProps {\n label: string;\n open: boolean;\n onClickClose: () => void;\n actions?: {\n text: string;\n isBold?: boolean;\n actionText?: string;\n actionCallback?: () => void;\n }[];\n walletInfo?: {\n deeplink?: string;\n icon?: string;\n name: string;\n type?: string;\n };\n openWalletAction?: () => void;\n}\ndeclare const Toast: Component;\nexport default Toast;\n"},{name:"@airgap/beacon-ui/dist/index/components/top-wallets/index.d.ts",dts:"import { Component } from 'solid-js';\nimport { MergedWallet } from '../../utils/wallets';\nimport styles from './styles.css';\ninterface TopWalletsProps {\n wallets: MergedWallet[];\n onClickWallet: (id: string) => void;\n onClickLearnMore: () => void;\n otherWallets?: {\n images: string[];\n onClick: () => void;\n };\n disabled?: boolean;\n isMobile: boolean;\n}\ndeclare const TopWallets: Component;\nexport { styles };\nexport default TopWallets;\n"},{name:"@airgap/beacon-ui/dist/index/components/wallet/index.d.ts",dts:"import { Component } from 'solid-js';\nimport styles from './styles.css';\ninterface WalletProps {\n name: string;\n image: string;\n description?: string;\n small?: boolean;\n mobile?: boolean;\n onClick: () => void;\n tags?: string[];\n disabled?: boolean;\n}\ndeclare const Wallet: Component;\nexport { styles };\nexport default Wallet;\n"},{name:"@airgap/beacon-ui/dist/index/components/wallets/index.d.ts",dts:"import { Component } from 'solid-js';\nimport { MergedWallet } from '../../utils/wallets';\nimport styles from './styles.css';\ninterface WalletProps {\n wallets: MergedWallet[];\n onClickWallet: (id: string) => void;\n onClickOther: () => void;\n isMobile: boolean;\n small?: boolean;\n disabled?: boolean;\n}\ndeclare const Wallets: Component;\nexport { styles };\nexport default Wallets;\n"},{name:"@airgap/beacon-ui/dist/index/components/pairing.d.ts",dts:'import { DesktopApp, App, ExtensionApp, WebApp } from \'@airgap/beacon-types\';\nexport declare const getDesktopList: () => DesktopApp[];\nexport declare const setDesktopList: (desktopList: DesktopApp[]) => void;\nexport declare const getExtensionList: () => ExtensionApp[];\nexport declare const setExtensionList: (extensionList: ExtensionApp[]) => void;\nexport declare const getWebList: () => WebApp[];\nexport declare const setWebList: (webList: WebApp[]) => void;\nexport declare const getiOSList: () => App[];\nexport declare const setiOSList: (iosList: App[]) => void;\nexport declare enum Platform {\n DESKTOP = 0,\n IOS = 1,\n ANDROID = 2\n}\nexport declare enum WalletType {\n IOS = "ios",\n ANDROID = "android",\n EXTENSION = "extension",\n DESKTOP = "desktop",\n WEB = "web"\n}\nexport interface PairingAlertWallet {\n key: string;\n name: string;\n shortName?: string;\n color?: string;\n logo?: string;\n enabled: boolean;\n clickHandler(): void;\n}\nexport interface PairingAlertButton {\n title: string;\n text: string;\n clickHandler(): void;\n}\nexport interface PairingAlertList {\n title: string;\n type: WalletType;\n wallets: PairingAlertWallet[];\n}\nexport interface PairingAlertInfo {\n walletLists: PairingAlertList[];\n buttons: PairingAlertButton[];\n}\nexport type StatusUpdateHandler = (walletType: WalletType, app?: PairingAlertWallet, keepOpen?: boolean) => void;\n/**\n * @internalapi\n *\n */\nexport declare class Pairing {\n}\n'},{name:"@airgap/beacon-ui/dist/index/ui/alert/index.d.ts",dts:"import { AnalyticsInterface, NetworkType, P2PPairingRequest, PostMessagePairingRequest, WalletConnectPairingRequest } from '@airgap/beacon-types';\nexport interface AlertButton {\n text: string;\n style?: 'solid' | 'outline';\n actionCallback?(): Promise;\n}\nexport interface AlertConfig {\n title: string;\n body?: string;\n data?: string;\n timer?: number;\n buttons?: AlertButton[];\n pairingPayload?: {\n p2pSyncCode: () => Promise;\n postmessageSyncCode: () => Promise;\n walletConnectSyncCode: () => Promise;\n networkType: NetworkType;\n };\n closeButtonCallback?(): void;\n disclaimerText?: string;\n analytics?: AnalyticsInterface;\n featuredWallets?: string[];\n}\n/**\n * Close an alert by ID\n *\n * @param id ID of alert\n */\ndeclare const closeAlert: (_: string) => Promise;\n/**\n * Close all alerts\n */\ndeclare const closeAlerts: () => Promise;\n/**\n * Show an alert\n *\n * @param alertConfig The configuration of the alert\n */\ndeclare const openAlert: (config: AlertConfig) => Promise;\nexport { closeAlert, closeAlerts, openAlert };\n"},{name:"@airgap/beacon-ui/dist/index/ui/alert/wallet-lists.d.ts",dts:"import { App, DesktopApp, ExtensionApp, WebApp } from '@airgap/beacon-types';\nexport declare const extensionList: ExtensionApp[];\nexport declare const desktopList: DesktopApp[];\nexport declare const webList: WebApp[];\nexport declare const iOSList: App[];\n"},{name:"@airgap/beacon-ui/dist/index/ui/toast/index.d.ts",dts:"import { WalletInfo } from '@airgap/beacon-types';\nexport interface ToastAction {\n text: string;\n isBold?: boolean;\n actionText?: string;\n actionLogo?: 'external';\n actionCallback?(): Promise;\n}\nexport interface ToastConfig {\n body: string;\n timer?: number;\n forceNew?: boolean;\n state: 'prepare' | 'loading' | 'acknowledge' | 'finished';\n actions?: ToastAction[];\n walletInfo?: WalletInfo;\n openWalletAction?(): Promise;\n}\n/**\n * Close a toast\n */\ndeclare const closeToast: () => Promise;\n/**\n * Create a new toast\n *\n * @param toastConfig Configuration of the toast\n */\ndeclare const openToast: (config: ToastConfig) => Promise;\nexport { closeToast, openToast };\n"},{name:"@airgap/beacon-ui/dist/index/utils/colorMode.d.ts",dts:"import { ColorMode } from '@airgap/beacon-types';\nexport declare const setColorMode: (mode: ColorMode) => void;\nexport declare const getColorMode: () => ColorMode;\n"},{name:"@airgap/beacon-ui/dist/index/utils/get-tzip10-link.d.ts",dts:"export declare const getTzip10Link: (url: string, payload: string) => string;\n"},{name:"@airgap/beacon-ui/dist/index/utils/platform.d.ts",dts:"export declare const testUserAgent: (win: Window, expr: RegExp) => boolean;\nexport declare const isMobile: (win: Window) => boolean;\nexport declare const isBrowser: (win: Window) => boolean;\nexport declare const isPrivacyBrowser: (win: Window) => boolean;\nexport declare const isIOS: (win: Window) => boolean;\nexport declare const isAndroid: (win: Window) => boolean;\nexport declare const isTwBrowser: (win: Window) => boolean;\nexport declare const isDesktop: (win: Window) => boolean;\nexport declare const isMobileOS: (win: Window) => boolean;\n"},{name:"@airgap/beacon-ui/dist/index/utils/qr.d.ts",dts:"/**\n * Convert data to a QR code\n *\n * @param payload The data to be encoded as a QR code\n * @param type How the QR code will be encoded\n */\nexport declare const getQrData: (payload: string, height?: number, width?: number) => string;\n"},{name:"@airgap/beacon-ui/dist/index/utils/wallets.d.ts",dts:"export interface Wallet {\n id: string;\n key: string;\n name: string;\n image: string;\n description: string;\n type: string;\n link: string;\n supportedInteractionStandards?: ('wallet_connect' | 'beacon')[];\n deepLink?: string;\n}\nexport interface MergedWallet {\n id: string;\n firefoxId?: string;\n key: string;\n name: string;\n image: string;\n descriptions: string[];\n types: string[];\n links: string[];\n supportedInteractionStandards?: ('wallet_connect' | 'beacon')[];\n tags?: string[];\n deepLink?: string;\n}\nexport declare enum OSLink {\n WEB = 0,\n IOS = 1,\n DESKTOP = 2,\n EXTENSION = 3\n}\nexport declare function parseWallets(wallets: Wallet[]): Wallet[];\nexport declare function arrangeTopWallets(arr: MergedWallet[], walletIds: string[]): MergedWallet[];\nexport declare function mergeWallets(wallets: Wallet[]): MergedWallet[];\n"},{name:"@airgap/beacon-ui/dist/index/index.d.ts",dts:"export { openAlert, closeAlerts } from './ui/alert';\nexport type { AlertButton, AlertConfig } from './ui/alert';\nexport { Pairing, setDesktopList, setExtensionList, setWebList, setiOSList, getDesktopList, getExtensionList, getWebList, getiOSList } from './components/pairing';\nexport { closeToast, openToast } from './ui/toast';\nexport type { ToastAction } from './ui/toast';\nexport { getColorMode, setColorMode } from './utils/colorMode';\nexport { isMobile, isMobileOS, isBrowser, isDesktop } from './utils/platform';\n"},{name:"@airgap/beacon-utils/utils/crypto.d.ts",dts:"/// \nimport { KeyPair } from '@stablelib/ed25519';\nexport declare const secretbox_NONCEBYTES = 24;\nexport declare const secretbox_MACBYTES = 16;\n/**\n * Convert a value to hex\n *\n * @param value\n */\nexport declare function toHex(value: any): string;\n/**\n * Get the hex hash of a value\n *\n * @param key\n */\nexport declare function getHexHash(key: string | Buffer | Uint8Array): Promise;\n/**\n * Get a keypair from a seed\n *\n * @param seed\n */\nexport declare function getKeypairFromSeed(seed: string): Promise;\n/**\n * Encrypt a message with a shared key\n *\n * @param message\n * @param sharedKey\n */\nexport declare function encryptCryptoboxPayload(message: string, sharedKey: Uint8Array): Promise;\n/**\n * Decrypt a message with a shared key\n *\n * @param payload\n * @param sharedKey\n */\nexport declare function decryptCryptoboxPayload(payload: Uint8Array, sharedKey: Uint8Array): Promise;\n/**\n * Encrypt a message with a public key\n *\n * @param payload\n * @param publicKey\n */\nexport declare function sealCryptobox(payload: string | Buffer, otherPublicKey: Uint8Array): Promise;\n/**\n * Decrypt a message with public + private key\n *\n * @param encryptedPayload\n * @param publicKey\n * @param privateKey\n */\nexport declare function openCryptobox(encryptedPayload: string | Buffer, publicKey: Uint8Array, privateKey: Uint8Array): Promise;\n/**\n * Get an address from the public key\n *\n * @param publicKey\n */\nexport declare function getAddressFromPublicKey(publicKey: string): Promise;\n/**\n * Prefix the public key if it's not prefixed\n *\n * @param publicKey\n */\nexport declare function prefixPublicKey(publicKey: string): Promise;\n/**\n * Get the recipient string used in the matrix message\n *\n * @param recipientHash\n * @param relayServer\n */\nexport declare function recipientString(recipientHash: string, relayServer: string): string;\nexport declare const signMessage: (message: string, keypair: {\n secretKey: Buffer;\n}) => Promise;\nexport declare const isValidAddress: (address: string) => boolean;\n"},{name:"@airgap/beacon-utils/utils/exposed-promise.d.ts",dts:'export declare enum ExposedPromiseStatus {\n PENDING = "pending",\n RESOLVED = "resolved",\n REJECTED = "rejected"\n}\ntype Resolve = (value: T) => void;\ntype Reject = (reason?: U) => void;\n/**\n * Exposed promise allow you to create a promise and then resolve it later, from the outside\n */\nexport declare class ExposedPromise {\n private readonly _promise;\n private _resolve;\n private _reject;\n private _status;\n private _promiseResult;\n private _promiseError;\n get promise(): Promise;\n get resolve(): Resolve;\n get reject(): Reject;\n get status(): ExposedPromiseStatus;\n get promiseResult(): T | undefined;\n get promiseError(): U | undefined;\n constructor();\n static resolve(value: T): ExposedPromise;\n static reject(reason?: U): ExposedPromise;\n isPending(): boolean;\n isResolved(): boolean;\n isRejected(): boolean;\n isSettled(): boolean;\n}\nexport {};\n'},{name:"@airgap/beacon-utils/utils/generate-uuid.d.ts",dts:"/**\n * Generate a random GUID\n */\nexport declare function generateGUID(): Promise;\n"},{name:"@airgap/beacon-utils/utils/keys.d.ts",dts:"/**\n * A helper function to improve typings of object keys\n *\n * @param obj Object\n */\nexport declare function keys(obj: O): (keyof O)[];\n"},{name:"@airgap/beacon-utils/index.d.ts",dts:"export { keys } from './utils/keys';\nexport { ExposedPromise, ExposedPromiseStatus } from './utils/exposed-promise';\nexport { getKeypairFromSeed, toHex, getAddressFromPublicKey, decryptCryptoboxPayload, encryptCryptoboxPayload, getHexHash, sealCryptobox, openCryptobox, recipientString, signMessage, isValidAddress, prefixPublicKey } from './utils/crypto';\nexport { generateGUID } from './utils/generate-uuid';\nexport declare const CONTRACT_PREFIX = \"KT1\";\nexport declare const secretbox_NONCEBYTES = 24;\nexport declare const secretbox_MACBYTES = 16;\n"},{name:"@airgap/beacon-utils/dist/esm/utils/crypto.d.ts",dts:"/// \nimport { KeyPair } from '@stablelib/ed25519';\nexport declare const secretbox_NONCEBYTES = 24;\nexport declare const secretbox_MACBYTES = 16;\n/**\n * Convert a value to hex\n *\n * @param value\n */\nexport declare function toHex(value: any): string;\n/**\n * Get the hex hash of a value\n *\n * @param key\n */\nexport declare function getHexHash(key: string | Buffer | Uint8Array): Promise;\n/**\n * Get a keypair from a seed\n *\n * @param seed\n */\nexport declare function getKeypairFromSeed(seed: string): Promise;\n/**\n * Encrypt a message with a shared key\n *\n * @param message\n * @param sharedKey\n */\nexport declare function encryptCryptoboxPayload(message: string, sharedKey: Uint8Array): Promise;\n/**\n * Decrypt a message with a shared key\n *\n * @param payload\n * @param sharedKey\n */\nexport declare function decryptCryptoboxPayload(payload: Uint8Array, sharedKey: Uint8Array): Promise;\n/**\n * Encrypt a message with a public key\n *\n * @param payload\n * @param publicKey\n */\nexport declare function sealCryptobox(payload: string | Buffer, otherPublicKey: Uint8Array): Promise;\n/**\n * Decrypt a message with public + private key\n *\n * @param encryptedPayload\n * @param publicKey\n * @param privateKey\n */\nexport declare function openCryptobox(encryptedPayload: string | Buffer, publicKey: Uint8Array, privateKey: Uint8Array): Promise;\n/**\n * Get an address from the public key\n *\n * @param publicKey\n */\nexport declare function getAddressFromPublicKey(publicKey: string): Promise;\n/**\n * Prefix the public key if it's not prefixed\n *\n * @param publicKey\n */\nexport declare function prefixPublicKey(publicKey: string): Promise;\n/**\n * Get the recipient string used in the matrix message\n *\n * @param recipientHash\n * @param relayServer\n */\nexport declare function recipientString(recipientHash: string, relayServer: string): string;\nexport declare const signMessage: (message: string, keypair: {\n secretKey: Buffer;\n}) => Promise;\nexport declare const isValidAddress: (address: string) => boolean;\n"},{name:"@airgap/beacon-utils/dist/esm/utils/exposed-promise.d.ts",dts:'export declare enum ExposedPromiseStatus {\n PENDING = "pending",\n RESOLVED = "resolved",\n REJECTED = "rejected"\n}\ntype Resolve = (value: T) => void;\ntype Reject = (reason?: U) => void;\n/**\n * Exposed promise allow you to create a promise and then resolve it later, from the outside\n */\nexport declare class ExposedPromise {\n private readonly _promise;\n private _resolve;\n private _reject;\n private _status;\n private _promiseResult;\n private _promiseError;\n get promise(): Promise;\n get resolve(): Resolve;\n get reject(): Reject;\n get status(): ExposedPromiseStatus;\n get promiseResult(): T | undefined;\n get promiseError(): U | undefined;\n constructor();\n static resolve(value: T): ExposedPromise;\n static reject(reason?: U): ExposedPromise;\n isPending(): boolean;\n isResolved(): boolean;\n isRejected(): boolean;\n isSettled(): boolean;\n}\nexport {};\n'},{name:"@airgap/beacon-utils/dist/esm/utils/generate-uuid.d.ts",dts:"/**\n * Generate a random GUID\n */\nexport declare function generateGUID(): Promise;\n"},{name:"@airgap/beacon-utils/dist/esm/utils/keys.d.ts",dts:"/**\n * A helper function to improve typings of object keys\n *\n * @param obj Object\n */\nexport declare function keys(obj: O): (keyof O)[];\n"},{name:"@airgap/beacon-utils/dist/esm/index.d.ts",dts:"export { keys } from './utils/keys';\nexport { ExposedPromise, ExposedPromiseStatus } from './utils/exposed-promise';\nexport { getKeypairFromSeed, toHex, getAddressFromPublicKey, decryptCryptoboxPayload, encryptCryptoboxPayload, getHexHash, sealCryptobox, openCryptobox, recipientString, signMessage, isValidAddress, prefixPublicKey } from './utils/crypto';\nexport { generateGUID } from './utils/generate-uuid';\nexport declare const CONTRACT_PREFIX = \"KT1\";\nexport declare const secretbox_NONCEBYTES = 24;\nexport declare const secretbox_MACBYTES = 16;\n"},{name:"@airgap/beacon-wallet/client/WalletClient.d.ts",dts:"import { Client } from '@airgap/beacon-core';\nimport { ExposedPromise } from '@airgap/beacon-utils';\nimport { ConnectionContext, ExtendedP2PPairingResponse, PeerInfo, TransportType, BeaconRequestOutputMessage, BeaconResponseInputMessage, AppMetadata, PermissionInfo, PushToken } from '@airgap/beacon-types';\nimport { WalletClientOptions } from './WalletClientOptions';\n/**\n * @publicapi\n *\n * The WalletClient has to be used in the wallet. It handles all the logic related to connecting to beacon-compatible\n * dapps and handling/responding to requests.\n *\n * @category Wallet\n */\nexport declare class WalletClient extends Client {\n /**\n * Returns whether or not the transport is connected\n */\n protected readonly _isConnected: ExposedPromise;\n get isConnected(): Promise;\n private readonly permissionManager;\n private readonly appMetadataManager;\n /**\n * This array stores pending requests, meaning requests we received and have not yet handled / sent a response.\n */\n private pendingRequests;\n constructor(config: WalletClientOptions);\n init(): Promise;\n /**\n * This method initiates a connection to the P2P network and registers a callback that will be called\n * whenever a message is received.\n *\n * @param newMessageCallback The callback that will be invoked for every message the transport receives.\n */\n connect(newMessageCallback: (message: BeaconRequestOutputMessage, connectionContext: ConnectionContext) => void): Promise;\n getRegisterPushChallenge(backendUrl: string, accountPublicKey: string, oracleUrl?: string): Promise<{\n challenge: {\n id: string;\n timestamp: string;\n };\n payloadToSign: string;\n }>;\n registerPush(challenge: {\n id: string;\n timestamp: string;\n }, signature: string, backendUrl: string, accountPublicKey: string, protocolIdentifier: string, deviceId: string, oracleUrl?: string): Promise;\n /**\n * The method will attempt to initiate a connection using the active transport.\n */\n _connect(): Promise;\n /**\n * This method sends a response for a specific request back to the DApp\n *\n * @param message The BeaconResponseMessage that will be sent back to the DApp\n */\n respond(message: BeaconResponseInputMessage): Promise;\n getAppMetadataList(): Promise;\n getAppMetadata(senderId: string): Promise;\n removeAppMetadata(senderId: string): Promise;\n removeAllAppMetadata(): Promise;\n getPermissions(): Promise;\n getPermission(accountIdentifier: string): Promise;\n removePermission(accountIdentifier: string): Promise;\n removeAllPermissions(): Promise;\n private getPeerInfo;\n /**\n * Add a new peer to the known peers\n * @param peer The new peer to add\n */\n addPeer(peer: PeerInfo, sendPairingResponse?: boolean): Promise;\n removePeer(peer: ExtendedP2PPairingResponse, sendDisconnectToPeer?: boolean): Promise;\n removeAllPeers(sendDisconnectToPeers?: boolean): Promise;\n private removePermissionsForPeers;\n /**\n * Send an acknowledge message back to the sender\n *\n * @param message The message that was received\n */\n private sendAcknowledgeResponse;\n /**\n * An internal method to send a BeaconMessage to the DApp\n *\n * @param response Send a message back to the DApp\n */\n private respondToMessage;\n private disconnect;\n}\n"},{name:"@airgap/beacon-wallet/client/WalletClientOptions.d.ts",dts:"import { NodeDistributions, Storage } from '@airgap/beacon-types';\n/**\n * @category Wallet\n */\nexport interface WalletClientOptions {\n /**\n * Name of the application\n */\n name: string;\n /**\n * A URL to the icon of the application\n */\n iconUrl?: string;\n /**\n * A URL to the website of the application\n */\n appUrl?: string;\n /**\n * The storage that will be used by the SDK\n */\n storage?: Storage;\n /**\n * A list of matrix nodes to connect to. If a non-empty array is passed, the default options will be overwritten.\n * One node will be randomly selected based on the local keypair and the other nodes will be used as a fallback in case the primary node goes down.\n *\n * Only provide the hostname, no https:// prefix. Eg. { [Regions.EU1]: ['matrix.example.com'] }\n */\n matrixNodes?: NodeDistributions;\n}\n"},{name:"@airgap/beacon-wallet/interceptors/IncomingRequestInterceptor.d.ts",dts:"import { BeaconRequestOutputMessage, ConnectionContext, BeaconRequestMessage, BeaconMessageWrapper, BeaconBaseMessage } from '@airgap/beacon-types';\nimport { AppMetadataManager } from '@airgap/beacon-core';\ninterface IncomingRequestInterceptorOptions {\n message: BeaconRequestMessage | BeaconMessageWrapper;\n connectionInfo: ConnectionContext;\n appMetadataManager: AppMetadataManager;\n interceptorCallback(message: BeaconRequestOutputMessage, connectionInfo: ConnectionContext): void;\n}\n/**\n * @internalapi\n *\n * The IncomingRequestInterceptor is used in the WalletClient to intercept an incoming request and enrich it with data, like app metadata.\n */\nexport declare class IncomingRequestInterceptor {\n /**\n * The method that is called during the interception\n *\n * @param config\n */\n static intercept(config: IncomingRequestInterceptorOptions): Promise;\n private static getAppMetadata;\n private static handleV2Message;\n private static handleV3Message;\n}\nexport {};\n"},{name:"@airgap/beacon-wallet/interceptors/OutgoingResponseInterceptor.d.ts",dts:"import { AppMetadataManager, PermissionManager } from '@airgap/beacon-core';\nimport { BeaconMessage, BeaconResponseInputMessage, AppMetadata, BeaconRequestMessage, BeaconMessageWrapper, BeaconBaseMessage } from '@airgap/beacon-types';\ninterface OutgoingResponseInterceptorOptions {\n senderId: string;\n request: BeaconRequestMessage | BeaconMessageWrapper;\n message: BeaconResponseInputMessage;\n ownAppMetadata: AppMetadata;\n permissionManager: PermissionManager;\n appMetadataManager: AppMetadataManager;\n interceptorCallback(message: BeaconMessage): void;\n}\n/**\n * @internalapi\n *\n * The OutgoingResponseInterceptor is used in the WalletClient to intercept an outgoing response and enrich it with data.\n */\nexport declare class OutgoingResponseInterceptor {\n static intercept(config: OutgoingResponseInterceptorOptions): Promise;\n private static handleV3Message;\n private static handleV2Message;\n}\nexport {};\n"},{name:"@airgap/beacon-wallet/transports/WalletP2PTransport.d.ts",dts:"import { Storage, StorageKey, P2PPairingRequest, NodeDistributions } from '@airgap/beacon-types';\nimport { P2PTransport } from '@airgap/beacon-transport-matrix';\nimport { KeyPair } from '@stablelib/ed25519';\n/**\n * @internalapi\n *\n *\n */\nexport declare class WalletP2PTransport extends P2PTransport {\n constructor(name: string, keyPair: KeyPair, storage: Storage, matrixNodes: NodeDistributions, iconUrl?: string, appUrl?: string);\n addPeer(newPeer: P2PPairingRequest, sendPairingResponse?: boolean): Promise;\n}\n"},{name:"@airgap/beacon-wallet/transports/WalletPostMessageTransport.d.ts",dts:"import { StorageKey, Storage, PostMessagePairingRequest } from '@airgap/beacon-types';\nimport { PostMessageTransport } from '@airgap/beacon-transport-postmessage';\nimport { KeyPair } from '@stablelib/ed25519';\n/**\n * @internalapi\n *\n *\n */\nexport declare class WalletPostMessageTransport extends PostMessageTransport {\n constructor(name: string, keyPair: KeyPair, storage: Storage);\n}\n"},{name:"@airgap/beacon-wallet/index.d.ts",dts:"export * from '@airgap/beacon-core';\nexport * from '@airgap/beacon-transport-matrix';\nexport * from '@airgap/beacon-types';\nexport * from '@airgap/beacon-utils';\nimport { WalletClient } from './client/WalletClient';\nimport { WalletClientOptions } from './client/WalletClientOptions';\nexport { WalletClient, WalletClientOptions };\n"},{name:"@airgap/beacon-wallet/dist/esm/client/WalletClient.d.ts",dts:"import { Client } from '@airgap/beacon-core';\nimport { ExposedPromise } from '@airgap/beacon-utils';\nimport { ConnectionContext, ExtendedP2PPairingResponse, PeerInfo, TransportType, BeaconRequestOutputMessage, BeaconResponseInputMessage, AppMetadata, PermissionInfo, PushToken } from '@airgap/beacon-types';\nimport { WalletClientOptions } from './WalletClientOptions';\n/**\n * @publicapi\n *\n * The WalletClient has to be used in the wallet. It handles all the logic related to connecting to beacon-compatible\n * dapps and handling/responding to requests.\n *\n * @category Wallet\n */\nexport declare class WalletClient extends Client {\n /**\n * Returns whether or not the transport is connected\n */\n protected readonly _isConnected: ExposedPromise;\n get isConnected(): Promise;\n private readonly permissionManager;\n private readonly appMetadataManager;\n /**\n * This array stores pending requests, meaning requests we received and have not yet handled / sent a response.\n */\n private pendingRequests;\n constructor(config: WalletClientOptions);\n init(): Promise;\n /**\n * This method initiates a connection to the P2P network and registers a callback that will be called\n * whenever a message is received.\n *\n * @param newMessageCallback The callback that will be invoked for every message the transport receives.\n */\n connect(newMessageCallback: (message: BeaconRequestOutputMessage, connectionContext: ConnectionContext) => void): Promise;\n getRegisterPushChallenge(backendUrl: string, accountPublicKey: string, oracleUrl?: string): Promise<{\n challenge: {\n id: string;\n timestamp: string;\n };\n payloadToSign: string;\n }>;\n registerPush(challenge: {\n id: string;\n timestamp: string;\n }, signature: string, backendUrl: string, accountPublicKey: string, protocolIdentifier: string, deviceId: string, oracleUrl?: string): Promise;\n /**\n * The method will attempt to initiate a connection using the active transport.\n */\n _connect(): Promise;\n /**\n * This method sends a response for a specific request back to the DApp\n *\n * @param message The BeaconResponseMessage that will be sent back to the DApp\n */\n respond(message: BeaconResponseInputMessage): Promise;\n getAppMetadataList(): Promise;\n getAppMetadata(senderId: string): Promise;\n removeAppMetadata(senderId: string): Promise;\n removeAllAppMetadata(): Promise;\n getPermissions(): Promise;\n getPermission(accountIdentifier: string): Promise;\n removePermission(accountIdentifier: string): Promise;\n removeAllPermissions(): Promise;\n private getPeerInfo;\n /**\n * Add a new peer to the known peers\n * @param peer The new peer to add\n */\n addPeer(peer: PeerInfo, sendPairingResponse?: boolean): Promise;\n removePeer(peer: ExtendedP2PPairingResponse, sendDisconnectToPeer?: boolean): Promise;\n removeAllPeers(sendDisconnectToPeers?: boolean): Promise;\n private removePermissionsForPeers;\n /**\n * Send an acknowledge message back to the sender\n *\n * @param message The message that was received\n */\n private sendAcknowledgeResponse;\n /**\n * An internal method to send a BeaconMessage to the DApp\n *\n * @param response Send a message back to the DApp\n */\n private respondToMessage;\n private disconnect;\n}\n"},{name:"@airgap/beacon-wallet/dist/esm/client/WalletClientOptions.d.ts",dts:"import { NodeDistributions, Storage } from '@airgap/beacon-types';\n/**\n * @category Wallet\n */\nexport interface WalletClientOptions {\n /**\n * Name of the application\n */\n name: string;\n /**\n * A URL to the icon of the application\n */\n iconUrl?: string;\n /**\n * A URL to the website of the application\n */\n appUrl?: string;\n /**\n * The storage that will be used by the SDK\n */\n storage?: Storage;\n /**\n * A list of matrix nodes to connect to. If a non-empty array is passed, the default options will be overwritten.\n * One node will be randomly selected based on the local keypair and the other nodes will be used as a fallback in case the primary node goes down.\n *\n * Only provide the hostname, no https:// prefix. Eg. { [Regions.EU1]: ['matrix.example.com'] }\n */\n matrixNodes?: NodeDistributions;\n}\n"},{name:"@airgap/beacon-wallet/dist/esm/interceptors/IncomingRequestInterceptor.d.ts",dts:"import { BeaconRequestOutputMessage, ConnectionContext, BeaconRequestMessage, BeaconMessageWrapper, BeaconBaseMessage } from '@airgap/beacon-types';\nimport { AppMetadataManager } from '@airgap/beacon-core';\ninterface IncomingRequestInterceptorOptions {\n message: BeaconRequestMessage | BeaconMessageWrapper;\n connectionInfo: ConnectionContext;\n appMetadataManager: AppMetadataManager;\n interceptorCallback(message: BeaconRequestOutputMessage, connectionInfo: ConnectionContext): void;\n}\n/**\n * @internalapi\n *\n * The IncomingRequestInterceptor is used in the WalletClient to intercept an incoming request and enrich it with data, like app metadata.\n */\nexport declare class IncomingRequestInterceptor {\n /**\n * The method that is called during the interception\n *\n * @param config\n */\n static intercept(config: IncomingRequestInterceptorOptions): Promise;\n private static getAppMetadata;\n private static handleV2Message;\n private static handleV3Message;\n}\nexport {};\n"},{name:"@airgap/beacon-wallet/dist/esm/interceptors/OutgoingResponseInterceptor.d.ts",dts:"import { AppMetadataManager, PermissionManager } from '@airgap/beacon-core';\nimport { BeaconMessage, BeaconResponseInputMessage, AppMetadata, BeaconRequestMessage, BeaconMessageWrapper, BeaconBaseMessage } from '@airgap/beacon-types';\ninterface OutgoingResponseInterceptorOptions {\n senderId: string;\n request: BeaconRequestMessage | BeaconMessageWrapper;\n message: BeaconResponseInputMessage;\n ownAppMetadata: AppMetadata;\n permissionManager: PermissionManager;\n appMetadataManager: AppMetadataManager;\n interceptorCallback(message: BeaconMessage): void;\n}\n/**\n * @internalapi\n *\n * The OutgoingResponseInterceptor is used in the WalletClient to intercept an outgoing response and enrich it with data.\n */\nexport declare class OutgoingResponseInterceptor {\n static intercept(config: OutgoingResponseInterceptorOptions): Promise;\n private static handleV3Message;\n private static handleV2Message;\n}\nexport {};\n"},{name:"@airgap/beacon-wallet/dist/esm/transports/WalletP2PTransport.d.ts",dts:"import { Storage, StorageKey, P2PPairingRequest, NodeDistributions } from '@airgap/beacon-types';\nimport { P2PTransport } from '@airgap/beacon-transport-matrix';\nimport { KeyPair } from '@stablelib/ed25519';\n/**\n * @internalapi\n *\n *\n */\nexport declare class WalletP2PTransport extends P2PTransport {\n constructor(name: string, keyPair: KeyPair, storage: Storage, matrixNodes: NodeDistributions, iconUrl?: string, appUrl?: string);\n addPeer(newPeer: P2PPairingRequest, sendPairingResponse?: boolean): Promise;\n}\n"},{name:"@airgap/beacon-wallet/dist/esm/transports/WalletPostMessageTransport.d.ts",dts:"import { StorageKey, Storage, PostMessagePairingRequest } from '@airgap/beacon-types';\nimport { PostMessageTransport } from '@airgap/beacon-transport-postmessage';\nimport { KeyPair } from '@stablelib/ed25519';\n/**\n * @internalapi\n *\n *\n */\nexport declare class WalletPostMessageTransport extends PostMessageTransport {\n constructor(name: string, keyPair: KeyPair, storage: Storage);\n}\n"},{name:"@airgap/beacon-wallet/dist/esm/index.d.ts",dts:"export * from '@airgap/beacon-core';\nexport * from '@airgap/beacon-transport-matrix';\nexport * from '@airgap/beacon-types';\nexport * from '@airgap/beacon-utils';\nimport { WalletClient } from './client/WalletClient';\nimport { WalletClientOptions } from './client/WalletClientOptions';\nexport { WalletClient, WalletClientOptions };\n"},{name:"@taquito/beacon-wallet/dist/types/errors.d.ts",dts:"import { PermissionScope } from '@airgap/beacon-dapp';\nimport { PermissionDeniedError } from '@taquito/core';\n/**\n * @category Error\n * @description Error that indicates the Beacon wallet not being initialized\n */\nexport declare class BeaconWalletNotInitialized extends PermissionDeniedError {\n constructor();\n}\n/**\n * @category Error\n * @description Error that indicates missing required persmission scopes\n */\nexport declare class MissingRequiredScopes extends PermissionDeniedError {\n readonly requiredScopes: PermissionScope[];\n constructor(requiredScopes: PermissionScope[]);\n}\n"},{name:"@taquito/beacon-wallet/dist/types/taquito-beacon-wallet.d.ts",dts:"/**\n * @packageDocumentation\n * @module @taquito/beacon-wallet\n */\nimport { DAppClient, DAppClientOptions, RequestPermissionInput } from '@airgap/beacon-dapp';\nimport { WalletDelegateParams, WalletIncreasePaidStorageParams, WalletOriginateParams, WalletProvider, WalletTransferParams } from '@taquito/taquito';\nexport { VERSION } from './version';\nexport { BeaconWalletNotInitialized, MissingRequiredScopes } from './errors';\nexport declare class BeaconWallet implements WalletProvider {\n client: DAppClient;\n constructor(options: DAppClientOptions);\n private validateRequiredScopesOrFail;\n requestPermissions(request?: RequestPermissionInput): Promise;\n getPKH(): Promise;\n getPK(): Promise;\n mapTransferParamsToWalletParams(params: () => Promise): Promise;\n mapIncreasePaidStorageWalletParams(params: () => Promise): Promise;\n mapOriginateParamsToWalletParams(params: () => Promise): Promise;\n mapDelegateParamsToWalletParams(params: () => Promise): Promise;\n formatParameters(params: any): any;\n removeDefaultParams(params: WalletTransferParams | WalletOriginateParams | WalletDelegateParams, operatedParams: any): any;\n sendOperations(params: any[]): Promise;\n /**\n *\n * @description Removes all beacon values from the storage. After using this method, this instance is no longer usable.\n * You will have to instantiate a new BeaconWallet.\n */\n disconnect(): Promise;\n /**\n *\n * @description This method removes the active account from local storage by setting it to undefined.\n */\n clearActiveAccount(): Promise;\n sign(bytes: string, watermark?: Uint8Array): Promise;\n private getSigningType;\n}\n"},{name:"@taquito/beacon-wallet/dist/types/version.d.ts",dts:"export declare const VERSION: {\n commitHash: string;\n version: string;\n};\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/clients/beacon-client/BeaconClient.d.ts",dts:"import { ExposedPromise } from '@airgap/beacon-utils';\nimport { AnalyticsInterface, Storage } from '@airgap/beacon-types';\nimport { BeaconClientOptions } from './BeaconClientOptions';\nimport { KeyPair } from '@stablelib/ed25519';\n/**\n * @internalapi\n *\n * The beacon client is an abstract client that handles everything that is shared between all other clients.\n * Specifically, it handles managing the beaconId and and the local keypair.\n */\nexport declare abstract class BeaconClient {\n /**\n * The name of the client\n */\n readonly name: string;\n /**\n * The URL of the dApp Icon. This can be used to display the icon of the dApp on in the wallet\n */\n readonly iconUrl?: string;\n /**\n * The URL of the dApp.\n */\n readonly appUrl?: string;\n /** The beaconId is a public key that is used to identify one specific application (dapp or wallet).\n * This is used inside a message to specify the sender, for example.\n */\n protected _beaconId: ExposedPromise;\n get beaconId(): Promise;\n protected storage: Storage;\n protected analytics: AnalyticsInterface;\n /**\n * The local keypair that is used for the communication encryption\n */\n protected _keyPair: ExposedPromise;\n protected get keyPair(): Promise;\n constructor(config: BeaconClientOptions);\n /**\n * This resets the SDK. After using this method, this instance is no longer usable. You will have to instanciate a new client.\n */\n destroy(): Promise;\n /**\n * This method initializes the SDK by setting some values in the storage and generating a keypair.\n */\n private initSDK;\n /**\n * Removes all beacon values from the storage.\n */\n private removeBeaconEntriesFromStorage;\n /**\n * This method tries to load the seed from storage, if it doesn't exist, a new one will be created and persisted.\n */\n private loadOrCreateBeaconSecret;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/clients/beacon-client/BeaconClientOptions.d.ts",dts:"import { AnalyticsInterface, Storage } from '@airgap/beacon-types';\n/**\n * @internalapi\n */\nexport interface BeaconClientOptions {\n /**\n * Name of the application\n */\n name: string;\n /**\n * A URL to the icon of the application\n */\n iconUrl?: string;\n /**\n * A URL to the website of the application\n */\n appUrl?: string;\n /**\n * The storage that will be used by the SDK\n */\n storage: Storage;\n /**\n * The analytics instance that will be used by the SDK\n */\n analytics?: AnalyticsInterface;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/clients/client/Client.d.ts",dts:"import { ExposedPromise } from '@airgap/beacon-utils';\nimport { ConnectionContext, TransportType, TransportStatus, BeaconBaseMessage, AccountInfo, PeerInfo, AppMetadata, BeaconRequestMessage, BeaconMessageWrapper, NodeDistributions } from '@airgap/beacon-types';\nimport { Transport } from '../..';\nimport { BeaconClient } from '../beacon-client/BeaconClient';\nimport { AccountManager } from '../../managers/AccountManager';\nimport { ClientOptions } from './ClientOptions';\n/**\n * @internalapi\n *\n * This abstract class handles the a big part of the logic that is shared between the dapp and wallet client.\n * For example, it selects and manages the transport and accounts.\n */\nexport declare abstract class Client extends BeaconClient {\n protected readonly accountManager: AccountManager;\n protected handleResponse: (_event: BeaconRequestMessage | BeaconMessageWrapper, connectionInfo: ConnectionContext) => void;\n /**\n * How many requests can be sent after another\n */\n protected readonly rateLimit: number;\n /**\n * The time window in seconds in which the \"rateLimit\" is checked\n */\n protected readonly rateLimitWindowInSeconds: number;\n /**\n * Stores the times when requests have been made to determine if the rate limit has been reached\n */\n protected requestCounter: number[];\n protected readonly matrixNodes: NodeDistributions;\n protected _transport: ExposedPromise>;\n protected get transport(): Promise>;\n /**\n * Returns the connection status of the Client\n */\n get connectionStatus(): TransportStatus;\n /**\n * Returns whether or not the transaport is ready\n */\n get ready(): Promise;\n constructor(config: ClientOptions);\n /**\n * Return all locally known accounts\n */\n getAccounts(): Promise;\n /**\n * Return the account by ID\n * @param accountIdentifier The ID of an account\n */\n getAccount(accountIdentifier: string): Promise;\n /**\n * Remove the account by ID\n * @param accountIdentifier The ID of an account\n */\n removeAccount(accountIdentifier: string): Promise;\n /**\n * Remove all locally stored accounts\n */\n removeAllAccounts(): Promise;\n /**\n * Add a new request (current timestamp) to the pending requests, remove old ones and check if we are above the limit\n */\n addRequestAndCheckIfRateLimited(): Promise;\n /**\n * This method initializes the client. It will check if the connection should be established to a\n * browser extension or if the P2P transport should be used.\n *\n * @param transport A transport that can be provided by the user\n */\n init(transport: Transport): Promise;\n /**\n * Returns the metadata of this DApp\n */\n getOwnAppMetadata(): Promise;\n /**\n * Return all known peers\n */\n getPeers(): Promise;\n /**\n * Add a new peer to the known peers\n * @param peer The new peer to add\n */\n addPeer(peer: PeerInfo): Promise;\n destroy(): Promise;\n /**\n * A \"setter\" for when the transport needs to be changed.\n */\n protected setTransport(transport?: Transport): Promise;\n protected addListener(transport: Transport): Promise;\n protected sendDisconnectToPeer(peer: PeerInfo, transport?: Transport): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/clients/client/ClientOptions.d.ts",dts:"import { Storage, NodeDistributions } from '@airgap/beacon-types';\n/**\n * @internalapi\n */\nexport interface ClientOptions {\n /**\n * Name of the application\n */\n name: string;\n /**\n * A URL to the icon of the application\n */\n iconUrl?: string;\n /**\n * A URL to the website of the application\n */\n appUrl?: string;\n /**\n * The storage that will be used by the SDK\n */\n storage: Storage;\n /**\n * Disable all default Events and UI elements. If passed together with \"eventHandlers\",\n * the default eventHandlers will be removed, and the ones passed by the user will be added.\n */\n disableDefaultEvents?: boolean;\n /**\n * A list of matrix nodes to connect to. If a non-empty array is passed, the default options will be overwritten.\n * One node will be randomly selected based on the local keypair and the other nodes will be used as a fallback in case the primary node goes down.\n *\n * Only provide the hostname, no https:// prefix. Eg. { [Regions.EU1]: ['matrix.example.com'] }\n */\n matrixNodes?: NodeDistributions;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/errors/AbortedBeaconError.d.ts",dts:"import { BeaconError } from '..';\n/**\n * @category Error\n */\nexport declare class AbortedBeaconError extends BeaconError {\n name: string;\n title: string;\n constructor();\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/errors/BeaconError.d.ts",dts:"import { BeaconErrorType } from '@airgap/beacon-types';\n/**\n * @category Error\n */\nexport declare abstract class BeaconError implements Error {\n name: string;\n message: string;\n title: string;\n description: string;\n get fullDescription(): {\n description: string;\n data?: string;\n };\n constructor(errorType: BeaconErrorType, message: string);\n static getError(errorType: BeaconErrorType, errorData: unknown): BeaconError;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/errors/BroadcastBeaconError.d.ts",dts:"import { BeaconError } from '..';\n/**\n * @category Error\n */\nexport declare class BroadcastBeaconError extends BeaconError {\n name: string;\n title: string;\n constructor();\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/errors/EncryptionTypeNotSupportedBeaconError.d.ts",dts:"/**\n * @category Error\n */\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/errors/NetworkNotSupportedBeaconError.d.ts",dts:"import { BeaconError } from '..';\n/**\n * @category Error\n */\nexport declare class NetworkNotSupportedBeaconError extends BeaconError {\n name: string;\n title: string;\n constructor();\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/errors/NoAddressBeaconError.d.ts",dts:"import { BeaconError } from '..';\n/**\n * @category Error\n */\nexport declare class NoAddressBeaconError extends BeaconError {\n name: string;\n title: string;\n constructor();\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/errors/NoPrivateKeyBeaconError.d.ts",dts:"import { BeaconError } from '..';\n/**\n * @category Error\n */\nexport declare class NoPrivateKeyBeaconError extends BeaconError {\n name: string;\n title: string;\n constructor();\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/errors/NotGrantedBeaconError.d.ts",dts:"import { BeaconError } from '..';\n/**\n * @category Error\n */\nexport declare class NotGrantedBeaconError extends BeaconError {\n name: string;\n title: string;\n constructor();\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/errors/ParametersInvalidBeaconError.d.ts",dts:"import { BeaconError } from '..';\n/**\n * @category Error\n */\nexport declare class ParametersInvalidBeaconError extends BeaconError {\n name: string;\n title: string;\n constructor();\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/errors/SignatureTypeNotSupportedBeaconError.d.ts",dts:"import { BeaconError } from '..';\n/**\n * @category Error\n */\nexport declare class SignatureTypeNotSupportedBeaconError extends BeaconError {\n name: string;\n title: string;\n constructor();\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/errors/TooManyOperationsBeaconError.d.ts",dts:"import { BeaconError } from '..';\n/**\n * @category Error\n */\nexport declare class TooManyOperationsBeaconError extends BeaconError {\n name: string;\n title: string;\n constructor();\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/errors/TransactionInvalidBeaconError.d.ts",dts:"import { BeaconError } from '..';\n/**\n * @category Error\n */\nexport declare class TransactionInvalidBeaconError extends BeaconError {\n readonly data: unknown;\n name: string;\n title: string;\n get fullDescription(): {\n description: string;\n data?: string;\n };\n constructor(data: unknown);\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/errors/UnknownBeaconError.d.ts",dts:"import { BeaconError } from '..';\n/**\n * @category Error\n */\nexport declare class UnknownBeaconError extends BeaconError {\n name: string;\n title: string;\n constructor();\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/managers/AccountManager.d.ts",dts:"import { Storage, AccountInfo, BeaconMessage } from '@airgap/beacon-types';\n/**\n * @internalapi\n *\n * The AccountManager provides CRUD functionality for account entities and persists them to the provided storage.\n */\nexport declare class AccountManager {\n private readonly storageManager;\n constructor(storage: Storage);\n getAccounts(): Promise;\n getAccount(accountIdentifier: string): Promise;\n addAccount(accountInfo: AccountInfo): Promise;\n updateAccount(accountIdentifier: string, accountInfo: Partial): Promise;\n removeAccount(accountIdentifier: string): Promise;\n removeAccounts(accountIdentifiers: string[]): Promise;\n removeAllAccounts(): Promise;\n hasPermission(message: BeaconMessage): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/managers/AppMetadataManager.d.ts",dts:"import { Storage, AppMetadata } from '@airgap/beacon-types';\n/**\n * @internalapi\n *\n * The AppMetadataManager provides CRUD functionality for app-metadata entities and persists them to the provided storage.\n */\nexport declare class AppMetadataManager {\n private readonly storageManager;\n constructor(storage: Storage);\n getAppMetadataList(): Promise;\n getAppMetadata(senderId: string): Promise;\n addAppMetadata(appMetadata: AppMetadata): Promise;\n removeAppMetadata(senderId: string): Promise;\n removeAppMetadatas(senderIds: string[]): Promise;\n removeAllAppMetadata(): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/managers/PeerManager.d.ts",dts:"import { Storage, StorageKey, StorageKeyReturnType } from '@airgap/beacon-types';\nimport { ArrayElem } from './StorageManager';\n/**\n * @internalapi\n *\n * The PeerManager provides CRUD functionality for peer entities and persists them to the provided storage.\n */\nexport declare class PeerManager {\n private readonly storageManager;\n constructor(storage: Storage, key: T);\n hasPeer(publicKey: string): Promise;\n getPeers(): Promise;\n getPeer(publicKey: string): Promise | undefined>;\n addPeer(peerInfo: ArrayElem): Promise;\n removePeer(publicKey: string): Promise;\n removePeers(publicKeys: string[]): Promise;\n removeAllPeers(): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/managers/PermissionManager.d.ts",dts:"import { BeaconMessage, Storage, PermissionInfo } from '@airgap/beacon-types';\n/**\n * @internalapi\n *\n * The PermissionManager provides CRUD functionality for permission entities and persists them to the provided storage.\n */\nexport declare class PermissionManager {\n private readonly storageManager;\n constructor(storage: Storage);\n getPermissions(): Promise;\n getPermission(accountIdentifier: string): Promise;\n addPermission(permissionInfo: PermissionInfo): Promise;\n removePermission(accountIdentifier: string): Promise;\n removePermissions(accountIdentifiers: string[]): Promise;\n removeAllPermissions(): Promise;\n hasPermission(message: BeaconMessage): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/managers/PermissionValidator.d.ts",dts:"import { BeaconMessage, PermissionEntity } from '@airgap/beacon-types';\n/**\n * @internalapi\n *\n * The PermissionValidator is used to check if permissions for a certain message type have been given\n */\nexport declare class PermissionValidator {\n /**\n * Check if permissions were given for a certain message type.\n *\n * PermissionRequest and BroadcastRequest will always return true.\n *\n * @param message Beacon Message\n */\n static hasPermission(message: BeaconMessage, getOne: (id: string) => Promise, getAll: () => Promise): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/managers/StorageManager.d.ts",dts:"import { StorageKey, Storage, StorageKeyReturnType } from '@airgap/beacon-types';\n/** Type workaround for https://github.com/Microsoft/TypeScript/issues/7294#issuecomment-465794460 */\nexport type ArrayElem = A extends (infer Elem)[] ? Elem : never;\n/**\n * @internalapi\n *\n * The StorageManager provides CRUD functionality for specific entities and persists them to the provided storage.\n */\nexport declare class StorageManager {\n private readonly storage;\n private readonly storageKey;\n constructor(storage: Storage, storageKey: T);\n getAll(): Promise;\n getOne(predicate: (element: ArrayElem) => boolean): Promise | undefined>;\n addOne(element: ArrayElem, predicate: (element: ArrayElem) => boolean, overwrite?: boolean): Promise;\n remove(predicate: (element: ArrayElem) => boolean): Promise;\n removeAll(): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/migrations/migrate-0.7.0.d.ts",dts:"import { PermissionScope, AccountIdentifier, Origin, Network } from '@airgap/beacon-types';\nexport interface AccountInfoOld {\n accountIdentifier: AccountIdentifier;\n beaconId: string;\n origin: {\n type: Origin;\n id: string;\n };\n address: string;\n pubkey: string;\n network: Network;\n scopes: PermissionScope[];\n connectedAt: Date;\n}\nexport interface P2PPairingRequestOld {\n name: string;\n pubKey: string;\n relayServer: string;\n}\nexport declare const migrate_0_7_0: (storage: Storage) => Promise;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/migrations/migrations.d.ts",dts:"import { Storage } from '@airgap/beacon-types';\nexport declare const migrate: (storage: Storage) => Promise;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/storage/ChromeStorage.d.ts",dts:"import { Storage, StorageKey, StorageKeyReturnType } from '@airgap/beacon-types';\n/**\n * @internalapi\n *\n * A storage that can be used in chrome extensions\n */\nexport declare class ChromeStorage implements Storage {\n static isSupported(): Promise;\n get(key: K): Promise;\n set(key: K, value: StorageKeyReturnType[K]): Promise;\n delete(key: K): Promise;\n subscribeToStorageChanged(_callback: (arg: {\n eventType: 'storageCleared' | 'entryModified';\n key: string | null;\n oldValue: string | null;\n newValue: string | null;\n }) => {}): Promise;\n getPrefixedKey(key: string): string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/storage/IndexedDBStorage.d.ts",dts:"import { Storage, StorageKey, StorageKeyReturnType } from '@airgap/beacon-types';\nexport declare class IndexedDBStorage extends Storage {\n private readonly dbName;\n private readonly storeName;\n private db;\n static doesDatabaseAndTableExist(): Promise;\n openDatabase(): Promise;\n get(key: K): Promise;\n set(key: K, value: StorageKeyReturnType[K]): Promise;\n delete(key: K): Promise;\n subscribeToStorageChanged(callback: (arg: {\n eventType: 'storageCleared' | 'entryModified';\n key: string | null;\n oldValue: string | null;\n newValue: string | null;\n }) => {}): Promise;\n getPrefixedKey(key: K): string;\n clearTable(): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/storage/LocalStorage.d.ts",dts:"import { Storage, StorageKey, StorageKeyReturnType } from '@airgap/beacon-types';\n/**\n * @internalapi\n *\n * A storage that can be used in the browser\n */\nexport declare class LocalStorage extends Storage {\n private readonly prefix?;\n constructor(prefix?: string | undefined);\n static isSupported(): Promise;\n get(key: K): Promise;\n set(key: K, value: StorageKeyReturnType[K]): Promise;\n delete(key: K): Promise;\n subscribeToStorageChanged(callback: (arg: {\n eventType: 'storageCleared' | 'entryModified';\n key: string | null;\n oldValue: string | null;\n newValue: string | null;\n }) => {}): Promise;\n getPrefixedKey(key: string): string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/storage/WCStorage.d.ts",dts:"export declare class WCStorage {\n private readonly localStorage;\n private readonly indexedDB;\n constructor();\n hasPairings(): Promise;\n hasSessions(): Promise;\n resetState(): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/storage/getStorage.d.ts",dts:"import { Storage } from '@airgap/beacon-types';\n/**\n * Get a supported storage on this platform\n */\nexport declare const getStorage: () => Promise;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/transports/clients/ClientEvents.d.ts",dts:'export declare const enum ClientEvents {\n CLOSE_ALERT = "CLOSE_ALERT",\n RESET_STATE = "RESET_STATE",\n WC_ACK_NOTIFICATION = "WC_ACK_NOTIFICATION"\n}\n'},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/transports/clients/CommunicationClient.d.ts",dts:"import { PeerInfoType } from '@airgap/beacon-types';\nimport { KeyPair } from '@stablelib/ed25519';\nimport { SessionKeys } from '@stablelib/x25519-session';\nimport { ClientEvents } from './ClientEvents';\n/**\n * @internalapi\n *\n *\n */\nexport declare abstract class CommunicationClient {\n protected readonly keyPair?: KeyPair | undefined;\n constructor(keyPair?: KeyPair | undefined);\n eventHandlers: Map;\n /**\n * Get the public key\n */\n getPublicKey(): Promise;\n /**\n * get the public key hash\n */\n getPublicKeyHash(): Promise;\n /**\n * Create a cryptobox server\n *\n * @param otherPublicKey\n * @param selfKeypair\n */\n protected createCryptoBoxServer(otherPublicKey: string, selfKeypair: KeyPair): Promise;\n /**\n * Create a cryptobox client\n *\n * @param otherPublicKey\n * @param selfKeypair\n */\n protected createCryptoBoxClient(otherPublicKey: string, selfKeypair: KeyPair): Promise;\n /**\n * Encrypt a message for a specific publicKey (receiver, asymmetric)\n *\n * @param recipientPublicKey\n * @param message\n */\n protected encryptMessageAsymmetric(recipientPublicKey: string, message: string): Promise;\n abstract unsubscribeFromEncryptedMessages(): Promise;\n abstract unsubscribeFromEncryptedMessage(senderPublicKey: string): Promise;\n abstract sendMessage(message: string, peer?: PeerInfoType): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/transports/clients/MessageBasedClient.d.ts",dts:"import { CommunicationClient } from './CommunicationClient';\nimport { PostMessagePairingRequest, PostMessagePairingResponse } from '@airgap/beacon-types';\nimport { KeyPair } from '@stablelib/ed25519';\n/**\n * @internalapi\n *\n *\n */\nexport declare abstract class MessageBasedClient extends CommunicationClient {\n protected readonly name: string;\n /**\n * The listeners that will be notified of new messages\n */\n protected abstract readonly activeListeners: Map;\n constructor(name: string, keyPair: KeyPair);\n /**\n * start the client and make sure all dependencies are ready\n */\n start(): Promise;\n /**\n * Get the pairing request information. This will be shared with the peer during the connection setup\n */\n getPairingRequestInfo(): Promise;\n /**\n * Get the pairing response information. This will be shared with the peer during the connection setup\n */\n getPairingResponseInfo(request: PostMessagePairingRequest): Promise;\n /**\n * Unsubscribe from encrypted messages from a specific peer\n *\n * @param senderPublicKey\n */\n unsubscribeFromEncryptedMessage(senderPublicKey: string): Promise;\n /**\n * Unsubscribe from all encrypted messages\n */\n unsubscribeFromEncryptedMessages(): Promise;\n /**\n * Decrypt a message from a specific peer\n *\n * @param senderPublicKey\n * @param payload\n */\n protected decryptMessage(senderPublicKey: string, payload: string): Promise;\n /**\n * Encrypt a message for a specific publicKey (receiver)\n *\n * @param recipientPublicKey\n * @param message\n */\n protected encryptMessage(recipientPublicKey: string, message: string): Promise;\n /**\n * Initialize the connection\n */\n abstract init(): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/transports/Transport.d.ts",dts:"import { TransportType, TransportStatus, PeerInfo, StorageKey, ConnectionContext } from '@airgap/beacon-types';\nimport { PeerManager } from '../managers/PeerManager';\nimport { CommunicationClient } from './clients/CommunicationClient';\nimport { ClientEvents } from './clients/ClientEvents';\n/**\n * @internalapi\n *\n *\n */\nexport declare abstract class Transport {\n /**\n * The type of the transport\n */\n readonly type: TransportType;\n /**\n * The name of the app\n */\n protected readonly name: string;\n /**\n * The status of the transport\n */\n protected _isConnected: TransportStatus;\n protected readonly peerManager: PeerManager;\n /**\n * The client handling the encryption/decryption of messages\n */\n protected client: S;\n /**\n * The listener that will be invoked when a new peer is connected\n */\n protected newPeerListener?: (peer: T) => void;\n setEventHandler(event: ClientEvents, fun: Function): void;\n /**\n * The listeners that will be notified when new messages are coming in\n */\n private listeners;\n /**\n * Return the status of the connection\n */\n get connectionStatus(): TransportStatus;\n constructor(name: string, client: S, peerManager: PeerManager);\n /**\n * Returns a promise that resolves to true if the transport is available, false if it is not\n */\n static isAvailable(): Promise;\n /**\n * Connect the transport\n */\n connect(): Promise;\n /**\n * Disconnect the transport\n */\n disconnect(): Promise;\n /**\n * Send a message through the transport\n *\n * @param message The message to send\n * @param recipient The recipient of the message\n */\n send(message: string, peer?: PeerInfo): Promise;\n /**\n * Add a listener to be called when a new message is received\n *\n * @param listener The listener that will be registered\n */\n addListener(listener: (message: unknown, connectionInfo: ConnectionContext) => void): Promise;\n /**\n * Remove a listener\n *\n * @param listener\n */\n removeListener(listener: (message: string, connectionInfo: ConnectionContext) => void): Promise;\n getPeers(): Promise;\n addPeer(newPeer: T, _sendPairingResponse?: boolean): Promise;\n removePeer(peerToBeRemoved: T): Promise;\n removeAllPeers(): Promise;\n /**\n * Notify the listeners when a new message comes in\n *\n * @param message Message\n * @param connectionInfo Context info about the connection\n */\n protected notifyListeners(message: unknown, connectionInfo: ConnectionContext): Promise;\n abstract listen(publicKey: string): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/utils/Logger.d.ts",dts:"export interface LoggerInterface {\n debug(method: string, ...args: any[]): void;\n log(method: string, ...args: any[]): void;\n warn(method: string, ...args: any[]): void;\n error(method: string, ...args: any[]): void;\n time(start: boolean, label?: string): void;\n timeLog(method: string, ...args: any[]): void;\n}\n/**\n * The logger that is used internally\n */\nexport declare class InternalLogger implements LoggerInterface {\n constructor();\n debug(name: string, method: string, ...args: any[]): void;\n log(name: string, method: string, ...args: any[]): void;\n warn(name: string, method: string, ...args: any[]): void;\n error(name: string, method: string, ...args: any[]): void;\n time(start: boolean, label?: string | undefined): void;\n timeLog(name: string, method: string, ...args: any[]): void;\n private _log;\n}\nexport declare class Logger implements LoggerInterface {\n private readonly name;\n constructor(service: string);\n debug(method: string, ...args: any[]): void;\n log(method: string, ...args: any[]): void;\n warn(method: string, ...args: any[]): void;\n error(method: string, ...args: any[]): void;\n time(start: boolean, label?: string | undefined): void;\n timeLog(method: string, ...args: any[]): void;\n}\nexport declare const setLogger: (newLogger: LoggerInterface) => void;\nexport declare const getLogger: () => LoggerInterface;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/utils/assert-never.d.ts",dts:"/**\n * A helper function to make sure if/elses and switch/cases are exhaustive\n *\n * @param empty The data that has to be empty\n */\nexport declare function assertNever(empty: never): never;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/utils/get-account-identifier.d.ts",dts:"import { Network } from '@airgap/beacon-types';\n/**\n * @internalapi\n *\n * Generate a deterministic account identifier based on an address and a network\n *\n * @param address\n * @param network\n */\nexport declare const getAccountIdentifier: (address: string, network: Network) => Promise;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/utils/get-sender-id.d.ts",dts:"/**\n * @internalapi\n *\n * Generate a deterministic sender identifier based on a public key\n *\n * @param publicKey\n */\nexport declare const getSenderId: (publicKey: string) => Promise;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/MockAnalytics.d.ts",dts:"import { AnalyticsInterface } from '@airgap/beacon-types';\nexport declare class MockAnalytics implements AnalyticsInterface {\n track(_trigger: 'click' | 'event', _section: string, _label: string, _data?: Record): void;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/MockWindow.d.ts",dts:"type Callback = (message: unknown) => void;\n/**\n * A mock for postmessage if run in node.js environment\n */\ndeclare let windowRef: {\n postMessage: (message: string | Record, _target?: string) => void;\n addEventListener: (_name: string, eventCallback: Callback) => void;\n removeEventListener: (_name: string, eventCallback: Callback) => void;\n location: {\n origin: string;\n };\n};\ndeclare const clearMockWindowState: () => void;\nexport { windowRef, clearMockWindowState };\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/Serializer.d.ts",dts:"/**\n * @internalapi\n *\n * The Serializer is used to serialize / deserialize JSON objects and encode them with bs58check\n */\nexport declare class Serializer {\n /**\n * Serialize and bs58check encode an object\n *\n * @param message JSON object to serialize\n */\n serialize(message: unknown): Promise;\n /**\n * Deserialize a bs58check encoded string\n *\n * @param encoded String to be deserialized\n */\n deserialize(encoded: string): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/constants.d.ts",dts:"export declare const SDK_VERSION: string;\nexport declare const BEACON_VERSION: string;\nexport declare const NOTIFICATION_ORACLE_URL: string;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/debug.d.ts",dts:"export declare const setDebugEnabled: (enabled: boolean) => void;\nexport declare const getDebugEnabled: () => boolean;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/index.d.ts",dts:"/**\n * General docs\n * @module public\n */\nimport { Client } from './clients/client/Client';\nimport { BeaconError } from './errors/BeaconError';\nimport { BroadcastBeaconError } from './errors/BroadcastBeaconError';\nimport { NetworkNotSupportedBeaconError } from './errors/NetworkNotSupportedBeaconError';\nimport { NoAddressBeaconError } from './errors/NoAddressBeaconError';\nimport { NoPrivateKeyBeaconError } from './errors/NoPrivateKeyBeaconError';\nimport { NotGrantedBeaconError } from './errors/NotGrantedBeaconError';\nimport { ParametersInvalidBeaconError } from './errors/ParametersInvalidBeaconError';\nimport { TooManyOperationsBeaconError } from './errors/TooManyOperationsBeaconError';\nimport { TransactionInvalidBeaconError } from './errors/TransactionInvalidBeaconError';\nimport { UnknownBeaconError } from './errors/UnknownBeaconError';\nimport { Transport } from './transports/Transport';\nimport { ChromeStorage } from './storage/ChromeStorage';\nimport { LocalStorage } from './storage/LocalStorage';\nimport { getStorage } from './storage/getStorage';\nimport { Serializer } from './Serializer';\nimport { ClientOptions } from './clients/client/ClientOptions';\nimport { SDK_VERSION, BEACON_VERSION } from './constants';\nimport { AccountManager } from './managers/AccountManager';\nimport { AppMetadataManager } from './managers/AppMetadataManager';\nimport { PermissionManager } from './managers/PermissionManager';\nimport { BeaconClient } from './clients/beacon-client/BeaconClient';\nimport { BeaconClientOptions } from './clients/beacon-client/BeaconClientOptions';\nimport { getAccountIdentifier } from './utils/get-account-identifier';\nimport { AbortedBeaconError } from './errors/AbortedBeaconError';\nimport { getSenderId } from './utils/get-sender-id';\nimport { PeerManager } from './managers/PeerManager';\nimport { MessageBasedClient } from './transports/clients/MessageBasedClient';\nimport { setDebugEnabled, getDebugEnabled } from './debug';\nimport { SignatureTypeNotSupportedBeaconError } from './errors/SignatureTypeNotSupportedBeaconError';\nimport { getLogger, Logger, setLogger } from './utils/Logger';\nimport { windowRef } from './MockWindow';\nimport { CommunicationClient } from './transports/clients/CommunicationClient';\nimport { ClientEvents } from './transports/clients/ClientEvents';\nimport { WCStorage } from './storage/WCStorage';\nexport { BeaconClient, BeaconClientOptions, Client, ClientOptions, ClientEvents };\nexport { BeaconError, AbortedBeaconError, BroadcastBeaconError, NetworkNotSupportedBeaconError, NoAddressBeaconError, NoPrivateKeyBeaconError, NotGrantedBeaconError, ParametersInvalidBeaconError, TooManyOperationsBeaconError, TransactionInvalidBeaconError, SignatureTypeNotSupportedBeaconError, UnknownBeaconError };\nexport { Transport, MessageBasedClient, CommunicationClient };\nexport { ChromeStorage, LocalStorage, WCStorage, getStorage };\nexport { PeerManager, AccountManager, AppMetadataManager, PermissionManager };\nexport { SDK_VERSION, BEACON_VERSION };\nexport { getSenderId, getAccountIdentifier, windowRef };\nexport { Serializer, Logger, setLogger, getLogger };\nexport { setDebugEnabled, getDebugEnabled };\nexport { NOTIFICATION_ORACLE_URL } from './constants';\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/dist/esm/clients/beacon-client/BeaconClient.d.ts",dts:"import { ExposedPromise } from '@airgap/beacon-utils';\nimport { AnalyticsInterface, Storage } from '@airgap/beacon-types';\nimport { BeaconClientOptions } from './BeaconClientOptions';\nimport { KeyPair } from '@stablelib/ed25519';\n/**\n * @internalapi\n *\n * The beacon client is an abstract client that handles everything that is shared between all other clients.\n * Specifically, it handles managing the beaconId and and the local keypair.\n */\nexport declare abstract class BeaconClient {\n /**\n * The name of the client\n */\n readonly name: string;\n /**\n * The URL of the dApp Icon. This can be used to display the icon of the dApp on in the wallet\n */\n readonly iconUrl?: string;\n /**\n * The URL of the dApp.\n */\n readonly appUrl?: string;\n /** The beaconId is a public key that is used to identify one specific application (dapp or wallet).\n * This is used inside a message to specify the sender, for example.\n */\n protected _beaconId: ExposedPromise;\n get beaconId(): Promise;\n protected storage: Storage;\n protected analytics: AnalyticsInterface;\n /**\n * The local keypair that is used for the communication encryption\n */\n protected _keyPair: ExposedPromise;\n protected get keyPair(): Promise;\n constructor(config: BeaconClientOptions);\n /**\n * This resets the SDK. After using this method, this instance is no longer usable. You will have to instanciate a new client.\n */\n destroy(): Promise;\n /**\n * This method initializes the SDK by setting some values in the storage and generating a keypair.\n */\n private initSDK;\n /**\n * Removes all beacon values from the storage.\n */\n private removeBeaconEntriesFromStorage;\n /**\n * This method tries to load the seed from storage, if it doesn't exist, a new one will be created and persisted.\n */\n private loadOrCreateBeaconSecret;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/dist/esm/clients/beacon-client/BeaconClientOptions.d.ts",dts:"import { AnalyticsInterface, Storage } from '@airgap/beacon-types';\n/**\n * @internalapi\n */\nexport interface BeaconClientOptions {\n /**\n * Name of the application\n */\n name: string;\n /**\n * A URL to the icon of the application\n */\n iconUrl?: string;\n /**\n * A URL to the website of the application\n */\n appUrl?: string;\n /**\n * The storage that will be used by the SDK\n */\n storage: Storage;\n /**\n * The analytics instance that will be used by the SDK\n */\n analytics?: AnalyticsInterface;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/dist/esm/clients/client/Client.d.ts",dts:"import { ExposedPromise } from '@airgap/beacon-utils';\nimport { ConnectionContext, TransportType, TransportStatus, BeaconBaseMessage, AccountInfo, PeerInfo, AppMetadata, BeaconRequestMessage, BeaconMessageWrapper, NodeDistributions } from '@airgap/beacon-types';\nimport { Transport } from '../..';\nimport { BeaconClient } from '../beacon-client/BeaconClient';\nimport { AccountManager } from '../../managers/AccountManager';\nimport { ClientOptions } from './ClientOptions';\n/**\n * @internalapi\n *\n * This abstract class handles the a big part of the logic that is shared between the dapp and wallet client.\n * For example, it selects and manages the transport and accounts.\n */\nexport declare abstract class Client extends BeaconClient {\n protected readonly accountManager: AccountManager;\n protected handleResponse: (_event: BeaconRequestMessage | BeaconMessageWrapper, connectionInfo: ConnectionContext) => void;\n /**\n * How many requests can be sent after another\n */\n protected readonly rateLimit: number;\n /**\n * The time window in seconds in which the \"rateLimit\" is checked\n */\n protected readonly rateLimitWindowInSeconds: number;\n /**\n * Stores the times when requests have been made to determine if the rate limit has been reached\n */\n protected requestCounter: number[];\n protected readonly matrixNodes: NodeDistributions;\n protected _transport: ExposedPromise>;\n protected get transport(): Promise>;\n /**\n * Returns the connection status of the Client\n */\n get connectionStatus(): TransportStatus;\n /**\n * Returns whether or not the transaport is ready\n */\n get ready(): Promise;\n constructor(config: ClientOptions);\n /**\n * Return all locally known accounts\n */\n getAccounts(): Promise;\n /**\n * Return the account by ID\n * @param accountIdentifier The ID of an account\n */\n getAccount(accountIdentifier: string): Promise;\n /**\n * Remove the account by ID\n * @param accountIdentifier The ID of an account\n */\n removeAccount(accountIdentifier: string): Promise;\n /**\n * Remove all locally stored accounts\n */\n removeAllAccounts(): Promise;\n /**\n * Add a new request (current timestamp) to the pending requests, remove old ones and check if we are above the limit\n */\n addRequestAndCheckIfRateLimited(): Promise;\n /**\n * This method initializes the client. It will check if the connection should be established to a\n * browser extension or if the P2P transport should be used.\n *\n * @param transport A transport that can be provided by the user\n */\n init(transport: Transport): Promise;\n /**\n * Returns the metadata of this DApp\n */\n getOwnAppMetadata(): Promise;\n /**\n * Return all known peers\n */\n getPeers(): Promise;\n /**\n * Add a new peer to the known peers\n * @param peer The new peer to add\n */\n addPeer(peer: PeerInfo): Promise;\n destroy(): Promise;\n /**\n * A \"setter\" for when the transport needs to be changed.\n */\n protected setTransport(transport?: Transport): Promise;\n protected addListener(transport: Transport): Promise;\n protected sendDisconnectToPeer(peer: PeerInfo, transport?: Transport): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/dist/esm/clients/client/ClientOptions.d.ts",dts:"import { Storage, NodeDistributions } from '@airgap/beacon-types';\n/**\n * @internalapi\n */\nexport interface ClientOptions {\n /**\n * Name of the application\n */\n name: string;\n /**\n * A URL to the icon of the application\n */\n iconUrl?: string;\n /**\n * A URL to the website of the application\n */\n appUrl?: string;\n /**\n * The storage that will be used by the SDK\n */\n storage: Storage;\n /**\n * Disable all default Events and UI elements. If passed together with \"eventHandlers\",\n * the default eventHandlers will be removed, and the ones passed by the user will be added.\n */\n disableDefaultEvents?: boolean;\n /**\n * A list of matrix nodes to connect to. If a non-empty array is passed, the default options will be overwritten.\n * One node will be randomly selected based on the local keypair and the other nodes will be used as a fallback in case the primary node goes down.\n *\n * Only provide the hostname, no https:// prefix. Eg. { [Regions.EU1]: ['matrix.example.com'] }\n */\n matrixNodes?: NodeDistributions;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/dist/esm/errors/AbortedBeaconError.d.ts",dts:"import { BeaconError } from '..';\n/**\n * @category Error\n */\nexport declare class AbortedBeaconError extends BeaconError {\n name: string;\n title: string;\n constructor();\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/dist/esm/errors/BeaconError.d.ts",dts:"import { BeaconErrorType } from '@airgap/beacon-types';\n/**\n * @category Error\n */\nexport declare abstract class BeaconError implements Error {\n name: string;\n message: string;\n title: string;\n description: string;\n get fullDescription(): {\n description: string;\n data?: string;\n };\n constructor(errorType: BeaconErrorType, message: string);\n static getError(errorType: BeaconErrorType, errorData: unknown): BeaconError;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/dist/esm/errors/BroadcastBeaconError.d.ts",dts:"import { BeaconError } from '..';\n/**\n * @category Error\n */\nexport declare class BroadcastBeaconError extends BeaconError {\n name: string;\n title: string;\n constructor();\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/dist/esm/errors/EncryptionTypeNotSupportedBeaconError.d.ts",dts:"/**\n * @category Error\n */\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/dist/esm/errors/NetworkNotSupportedBeaconError.d.ts",dts:"import { BeaconError } from '..';\n/**\n * @category Error\n */\nexport declare class NetworkNotSupportedBeaconError extends BeaconError {\n name: string;\n title: string;\n constructor();\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/dist/esm/errors/NoAddressBeaconError.d.ts",dts:"import { BeaconError } from '..';\n/**\n * @category Error\n */\nexport declare class NoAddressBeaconError extends BeaconError {\n name: string;\n title: string;\n constructor();\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/dist/esm/errors/NoPrivateKeyBeaconError.d.ts",dts:"import { BeaconError } from '..';\n/**\n * @category Error\n */\nexport declare class NoPrivateKeyBeaconError extends BeaconError {\n name: string;\n title: string;\n constructor();\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/dist/esm/errors/NotGrantedBeaconError.d.ts",dts:"import { BeaconError } from '..';\n/**\n * @category Error\n */\nexport declare class NotGrantedBeaconError extends BeaconError {\n name: string;\n title: string;\n constructor();\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/dist/esm/errors/ParametersInvalidBeaconError.d.ts",dts:"import { BeaconError } from '..';\n/**\n * @category Error\n */\nexport declare class ParametersInvalidBeaconError extends BeaconError {\n name: string;\n title: string;\n constructor();\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/dist/esm/errors/SignatureTypeNotSupportedBeaconError.d.ts",dts:"import { BeaconError } from '..';\n/**\n * @category Error\n */\nexport declare class SignatureTypeNotSupportedBeaconError extends BeaconError {\n name: string;\n title: string;\n constructor();\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/dist/esm/errors/TooManyOperationsBeaconError.d.ts",dts:"import { BeaconError } from '..';\n/**\n * @category Error\n */\nexport declare class TooManyOperationsBeaconError extends BeaconError {\n name: string;\n title: string;\n constructor();\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/dist/esm/errors/TransactionInvalidBeaconError.d.ts",dts:"import { BeaconError } from '..';\n/**\n * @category Error\n */\nexport declare class TransactionInvalidBeaconError extends BeaconError {\n readonly data: unknown;\n name: string;\n title: string;\n get fullDescription(): {\n description: string;\n data?: string;\n };\n constructor(data: unknown);\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/dist/esm/errors/UnknownBeaconError.d.ts",dts:"import { BeaconError } from '..';\n/**\n * @category Error\n */\nexport declare class UnknownBeaconError extends BeaconError {\n name: string;\n title: string;\n constructor();\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/dist/esm/managers/AccountManager.d.ts",dts:"import { Storage, AccountInfo, BeaconMessage } from '@airgap/beacon-types';\n/**\n * @internalapi\n *\n * The AccountManager provides CRUD functionality for account entities and persists them to the provided storage.\n */\nexport declare class AccountManager {\n private readonly storageManager;\n constructor(storage: Storage);\n getAccounts(): Promise;\n getAccount(accountIdentifier: string): Promise;\n addAccount(accountInfo: AccountInfo): Promise;\n updateAccount(accountIdentifier: string, accountInfo: Partial): Promise;\n removeAccount(accountIdentifier: string): Promise;\n removeAccounts(accountIdentifiers: string[]): Promise;\n removeAllAccounts(): Promise;\n hasPermission(message: BeaconMessage): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/dist/esm/managers/AppMetadataManager.d.ts",dts:"import { Storage, AppMetadata } from '@airgap/beacon-types';\n/**\n * @internalapi\n *\n * The AppMetadataManager provides CRUD functionality for app-metadata entities and persists them to the provided storage.\n */\nexport declare class AppMetadataManager {\n private readonly storageManager;\n constructor(storage: Storage);\n getAppMetadataList(): Promise;\n getAppMetadata(senderId: string): Promise;\n addAppMetadata(appMetadata: AppMetadata): Promise;\n removeAppMetadata(senderId: string): Promise;\n removeAppMetadatas(senderIds: string[]): Promise;\n removeAllAppMetadata(): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/dist/esm/managers/PeerManager.d.ts",dts:"import { Storage, StorageKey, StorageKeyReturnType } from '@airgap/beacon-types';\nimport { ArrayElem } from './StorageManager';\n/**\n * @internalapi\n *\n * The PeerManager provides CRUD functionality for peer entities and persists them to the provided storage.\n */\nexport declare class PeerManager {\n private readonly storageManager;\n constructor(storage: Storage, key: T);\n hasPeer(publicKey: string): Promise;\n getPeers(): Promise;\n getPeer(publicKey: string): Promise | undefined>;\n addPeer(peerInfo: ArrayElem): Promise;\n removePeer(publicKey: string): Promise;\n removePeers(publicKeys: string[]): Promise;\n removeAllPeers(): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/dist/esm/managers/PermissionManager.d.ts",dts:"import { BeaconMessage, Storage, PermissionInfo } from '@airgap/beacon-types';\n/**\n * @internalapi\n *\n * The PermissionManager provides CRUD functionality for permission entities and persists them to the provided storage.\n */\nexport declare class PermissionManager {\n private readonly storageManager;\n constructor(storage: Storage);\n getPermissions(): Promise;\n getPermission(accountIdentifier: string): Promise;\n addPermission(permissionInfo: PermissionInfo): Promise;\n removePermission(accountIdentifier: string): Promise;\n removePermissions(accountIdentifiers: string[]): Promise;\n removeAllPermissions(): Promise;\n hasPermission(message: BeaconMessage): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/dist/esm/managers/PermissionValidator.d.ts",dts:"import { BeaconMessage, PermissionEntity } from '@airgap/beacon-types';\n/**\n * @internalapi\n *\n * The PermissionValidator is used to check if permissions for a certain message type have been given\n */\nexport declare class PermissionValidator {\n /**\n * Check if permissions were given for a certain message type.\n *\n * PermissionRequest and BroadcastRequest will always return true.\n *\n * @param message Beacon Message\n */\n static hasPermission(message: BeaconMessage, getOne: (id: string) => Promise, getAll: () => Promise): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/dist/esm/managers/StorageManager.d.ts",dts:"import { StorageKey, Storage, StorageKeyReturnType } from '@airgap/beacon-types';\n/** Type workaround for https://github.com/Microsoft/TypeScript/issues/7294#issuecomment-465794460 */\nexport type ArrayElem = A extends (infer Elem)[] ? Elem : never;\n/**\n * @internalapi\n *\n * The StorageManager provides CRUD functionality for specific entities and persists them to the provided storage.\n */\nexport declare class StorageManager {\n private readonly storage;\n private readonly storageKey;\n constructor(storage: Storage, storageKey: T);\n getAll(): Promise;\n getOne(predicate: (element: ArrayElem) => boolean): Promise | undefined>;\n addOne(element: ArrayElem, predicate: (element: ArrayElem) => boolean, overwrite?: boolean): Promise;\n remove(predicate: (element: ArrayElem) => boolean): Promise;\n removeAll(): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/dist/esm/migrations/migrate-0.7.0.d.ts",dts:"import { PermissionScope, AccountIdentifier, Origin, Network } from '@airgap/beacon-types';\nexport interface AccountInfoOld {\n accountIdentifier: AccountIdentifier;\n beaconId: string;\n origin: {\n type: Origin;\n id: string;\n };\n address: string;\n pubkey: string;\n network: Network;\n scopes: PermissionScope[];\n connectedAt: Date;\n}\nexport interface P2PPairingRequestOld {\n name: string;\n pubKey: string;\n relayServer: string;\n}\nexport declare const migrate_0_7_0: (storage: Storage) => Promise;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/dist/esm/migrations/migrations.d.ts",dts:"import { Storage } from '@airgap/beacon-types';\nexport declare const migrate: (storage: Storage) => Promise;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/dist/esm/storage/ChromeStorage.d.ts",dts:"import { Storage, StorageKey, StorageKeyReturnType } from '@airgap/beacon-types';\n/**\n * @internalapi\n *\n * A storage that can be used in chrome extensions\n */\nexport declare class ChromeStorage implements Storage {\n static isSupported(): Promise;\n get(key: K): Promise;\n set(key: K, value: StorageKeyReturnType[K]): Promise;\n delete(key: K): Promise;\n subscribeToStorageChanged(_callback: (arg: {\n eventType: 'storageCleared' | 'entryModified';\n key: string | null;\n oldValue: string | null;\n newValue: string | null;\n }) => {}): Promise;\n getPrefixedKey(key: string): string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/dist/esm/storage/IndexedDBStorage.d.ts",dts:"import { Storage, StorageKey, StorageKeyReturnType } from '@airgap/beacon-types';\nexport declare class IndexedDBStorage extends Storage {\n private readonly dbName;\n private readonly storeName;\n private db;\n static doesDatabaseAndTableExist(): Promise;\n openDatabase(): Promise;\n get(key: K): Promise;\n set(key: K, value: StorageKeyReturnType[K]): Promise;\n delete(key: K): Promise;\n subscribeToStorageChanged(callback: (arg: {\n eventType: 'storageCleared' | 'entryModified';\n key: string | null;\n oldValue: string | null;\n newValue: string | null;\n }) => {}): Promise;\n getPrefixedKey(key: K): string;\n clearTable(): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/dist/esm/storage/LocalStorage.d.ts",dts:"import { Storage, StorageKey, StorageKeyReturnType } from '@airgap/beacon-types';\n/**\n * @internalapi\n *\n * A storage that can be used in the browser\n */\nexport declare class LocalStorage extends Storage {\n private readonly prefix?;\n constructor(prefix?: string | undefined);\n static isSupported(): Promise;\n get(key: K): Promise;\n set(key: K, value: StorageKeyReturnType[K]): Promise;\n delete(key: K): Promise;\n subscribeToStorageChanged(callback: (arg: {\n eventType: 'storageCleared' | 'entryModified';\n key: string | null;\n oldValue: string | null;\n newValue: string | null;\n }) => {}): Promise;\n getPrefixedKey(key: string): string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/dist/esm/storage/WCStorage.d.ts",dts:"export declare class WCStorage {\n private readonly localStorage;\n private readonly indexedDB;\n constructor();\n hasPairings(): Promise;\n hasSessions(): Promise;\n resetState(): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/dist/esm/storage/getStorage.d.ts",dts:"import { Storage } from '@airgap/beacon-types';\n/**\n * Get a supported storage on this platform\n */\nexport declare const getStorage: () => Promise;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/dist/esm/transports/clients/ClientEvents.d.ts",dts:'export declare const enum ClientEvents {\n CLOSE_ALERT = "CLOSE_ALERT",\n RESET_STATE = "RESET_STATE",\n WC_ACK_NOTIFICATION = "WC_ACK_NOTIFICATION"\n}\n'},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/dist/esm/transports/clients/CommunicationClient.d.ts",dts:"import { PeerInfoType } from '@airgap/beacon-types';\nimport { KeyPair } from '@stablelib/ed25519';\nimport { SessionKeys } from '@stablelib/x25519-session';\nimport { ClientEvents } from './ClientEvents';\n/**\n * @internalapi\n *\n *\n */\nexport declare abstract class CommunicationClient {\n protected readonly keyPair?: KeyPair | undefined;\n constructor(keyPair?: KeyPair | undefined);\n eventHandlers: Map;\n /**\n * Get the public key\n */\n getPublicKey(): Promise;\n /**\n * get the public key hash\n */\n getPublicKeyHash(): Promise;\n /**\n * Create a cryptobox server\n *\n * @param otherPublicKey\n * @param selfKeypair\n */\n protected createCryptoBoxServer(otherPublicKey: string, selfKeypair: KeyPair): Promise;\n /**\n * Create a cryptobox client\n *\n * @param otherPublicKey\n * @param selfKeypair\n */\n protected createCryptoBoxClient(otherPublicKey: string, selfKeypair: KeyPair): Promise;\n /**\n * Encrypt a message for a specific publicKey (receiver, asymmetric)\n *\n * @param recipientPublicKey\n * @param message\n */\n protected encryptMessageAsymmetric(recipientPublicKey: string, message: string): Promise;\n abstract unsubscribeFromEncryptedMessages(): Promise;\n abstract unsubscribeFromEncryptedMessage(senderPublicKey: string): Promise;\n abstract sendMessage(message: string, peer?: PeerInfoType): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/dist/esm/transports/clients/MessageBasedClient.d.ts",dts:"import { CommunicationClient } from './CommunicationClient';\nimport { PostMessagePairingRequest, PostMessagePairingResponse } from '@airgap/beacon-types';\nimport { KeyPair } from '@stablelib/ed25519';\n/**\n * @internalapi\n *\n *\n */\nexport declare abstract class MessageBasedClient extends CommunicationClient {\n protected readonly name: string;\n /**\n * The listeners that will be notified of new messages\n */\n protected abstract readonly activeListeners: Map;\n constructor(name: string, keyPair: KeyPair);\n /**\n * start the client and make sure all dependencies are ready\n */\n start(): Promise;\n /**\n * Get the pairing request information. This will be shared with the peer during the connection setup\n */\n getPairingRequestInfo(): Promise;\n /**\n * Get the pairing response information. This will be shared with the peer during the connection setup\n */\n getPairingResponseInfo(request: PostMessagePairingRequest): Promise;\n /**\n * Unsubscribe from encrypted messages from a specific peer\n *\n * @param senderPublicKey\n */\n unsubscribeFromEncryptedMessage(senderPublicKey: string): Promise;\n /**\n * Unsubscribe from all encrypted messages\n */\n unsubscribeFromEncryptedMessages(): Promise;\n /**\n * Decrypt a message from a specific peer\n *\n * @param senderPublicKey\n * @param payload\n */\n protected decryptMessage(senderPublicKey: string, payload: string): Promise;\n /**\n * Encrypt a message for a specific publicKey (receiver)\n *\n * @param recipientPublicKey\n * @param message\n */\n protected encryptMessage(recipientPublicKey: string, message: string): Promise;\n /**\n * Initialize the connection\n */\n abstract init(): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/dist/esm/transports/Transport.d.ts",dts:"import { TransportType, TransportStatus, PeerInfo, StorageKey, ConnectionContext } from '@airgap/beacon-types';\nimport { PeerManager } from '../managers/PeerManager';\nimport { CommunicationClient } from './clients/CommunicationClient';\nimport { ClientEvents } from './clients/ClientEvents';\n/**\n * @internalapi\n *\n *\n */\nexport declare abstract class Transport {\n /**\n * The type of the transport\n */\n readonly type: TransportType;\n /**\n * The name of the app\n */\n protected readonly name: string;\n /**\n * The status of the transport\n */\n protected _isConnected: TransportStatus;\n protected readonly peerManager: PeerManager;\n /**\n * The client handling the encryption/decryption of messages\n */\n protected client: S;\n /**\n * The listener that will be invoked when a new peer is connected\n */\n protected newPeerListener?: (peer: T) => void;\n setEventHandler(event: ClientEvents, fun: Function): void;\n /**\n * The listeners that will be notified when new messages are coming in\n */\n private listeners;\n /**\n * Return the status of the connection\n */\n get connectionStatus(): TransportStatus;\n constructor(name: string, client: S, peerManager: PeerManager);\n /**\n * Returns a promise that resolves to true if the transport is available, false if it is not\n */\n static isAvailable(): Promise;\n /**\n * Connect the transport\n */\n connect(): Promise;\n /**\n * Disconnect the transport\n */\n disconnect(): Promise;\n /**\n * Send a message through the transport\n *\n * @param message The message to send\n * @param recipient The recipient of the message\n */\n send(message: string, peer?: PeerInfo): Promise;\n /**\n * Add a listener to be called when a new message is received\n *\n * @param listener The listener that will be registered\n */\n addListener(listener: (message: unknown, connectionInfo: ConnectionContext) => void): Promise;\n /**\n * Remove a listener\n *\n * @param listener\n */\n removeListener(listener: (message: string, connectionInfo: ConnectionContext) => void): Promise;\n getPeers(): Promise;\n addPeer(newPeer: T, _sendPairingResponse?: boolean): Promise;\n removePeer(peerToBeRemoved: T): Promise;\n removeAllPeers(): Promise;\n /**\n * Notify the listeners when a new message comes in\n *\n * @param message Message\n * @param connectionInfo Context info about the connection\n */\n protected notifyListeners(message: unknown, connectionInfo: ConnectionContext): Promise;\n abstract listen(publicKey: string): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/dist/esm/utils/Logger.d.ts",dts:"export interface LoggerInterface {\n debug(method: string, ...args: any[]): void;\n log(method: string, ...args: any[]): void;\n warn(method: string, ...args: any[]): void;\n error(method: string, ...args: any[]): void;\n time(start: boolean, label?: string): void;\n timeLog(method: string, ...args: any[]): void;\n}\n/**\n * The logger that is used internally\n */\nexport declare class InternalLogger implements LoggerInterface {\n constructor();\n debug(name: string, method: string, ...args: any[]): void;\n log(name: string, method: string, ...args: any[]): void;\n warn(name: string, method: string, ...args: any[]): void;\n error(name: string, method: string, ...args: any[]): void;\n time(start: boolean, label?: string | undefined): void;\n timeLog(name: string, method: string, ...args: any[]): void;\n private _log;\n}\nexport declare class Logger implements LoggerInterface {\n private readonly name;\n constructor(service: string);\n debug(method: string, ...args: any[]): void;\n log(method: string, ...args: any[]): void;\n warn(method: string, ...args: any[]): void;\n error(method: string, ...args: any[]): void;\n time(start: boolean, label?: string | undefined): void;\n timeLog(method: string, ...args: any[]): void;\n}\nexport declare const setLogger: (newLogger: LoggerInterface) => void;\nexport declare const getLogger: () => LoggerInterface;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/dist/esm/utils/assert-never.d.ts",dts:"/**\n * A helper function to make sure if/elses and switch/cases are exhaustive\n *\n * @param empty The data that has to be empty\n */\nexport declare function assertNever(empty: never): never;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/dist/esm/utils/get-account-identifier.d.ts",dts:"import { Network } from '@airgap/beacon-types';\n/**\n * @internalapi\n *\n * Generate a deterministic account identifier based on an address and a network\n *\n * @param address\n * @param network\n */\nexport declare const getAccountIdentifier: (address: string, network: Network) => Promise;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/dist/esm/utils/get-sender-id.d.ts",dts:"/**\n * @internalapi\n *\n * Generate a deterministic sender identifier based on a public key\n *\n * @param publicKey\n */\nexport declare const getSenderId: (publicKey: string) => Promise;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/dist/esm/MockAnalytics.d.ts",dts:"import { AnalyticsInterface } from '@airgap/beacon-types';\nexport declare class MockAnalytics implements AnalyticsInterface {\n track(_trigger: 'click' | 'event', _section: string, _label: string, _data?: Record): void;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/dist/esm/MockWindow.d.ts",dts:"type Callback = (message: unknown) => void;\n/**\n * A mock for postmessage if run in node.js environment\n */\ndeclare let windowRef: {\n postMessage: (message: string | Record, _target?: string) => void;\n addEventListener: (_name: string, eventCallback: Callback) => void;\n removeEventListener: (_name: string, eventCallback: Callback) => void;\n location: {\n origin: string;\n };\n};\ndeclare const clearMockWindowState: () => void;\nexport { windowRef, clearMockWindowState };\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/dist/esm/Serializer.d.ts",dts:"/**\n * @internalapi\n *\n * The Serializer is used to serialize / deserialize JSON objects and encode them with bs58check\n */\nexport declare class Serializer {\n /**\n * Serialize and bs58check encode an object\n *\n * @param message JSON object to serialize\n */\n serialize(message: unknown): Promise;\n /**\n * Deserialize a bs58check encoded string\n *\n * @param encoded String to be deserialized\n */\n deserialize(encoded: string): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/dist/esm/constants.d.ts",dts:"export declare const SDK_VERSION: string;\nexport declare const BEACON_VERSION: string;\nexport declare const NOTIFICATION_ORACLE_URL: string;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/dist/esm/debug.d.ts",dts:"export declare const setDebugEnabled: (enabled: boolean) => void;\nexport declare const getDebugEnabled: () => boolean;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-core/dist/esm/index.d.ts",dts:"/**\n * General docs\n * @module public\n */\nimport { Client } from './clients/client/Client';\nimport { BeaconError } from './errors/BeaconError';\nimport { BroadcastBeaconError } from './errors/BroadcastBeaconError';\nimport { NetworkNotSupportedBeaconError } from './errors/NetworkNotSupportedBeaconError';\nimport { NoAddressBeaconError } from './errors/NoAddressBeaconError';\nimport { NoPrivateKeyBeaconError } from './errors/NoPrivateKeyBeaconError';\nimport { NotGrantedBeaconError } from './errors/NotGrantedBeaconError';\nimport { ParametersInvalidBeaconError } from './errors/ParametersInvalidBeaconError';\nimport { TooManyOperationsBeaconError } from './errors/TooManyOperationsBeaconError';\nimport { TransactionInvalidBeaconError } from './errors/TransactionInvalidBeaconError';\nimport { UnknownBeaconError } from './errors/UnknownBeaconError';\nimport { Transport } from './transports/Transport';\nimport { ChromeStorage } from './storage/ChromeStorage';\nimport { LocalStorage } from './storage/LocalStorage';\nimport { getStorage } from './storage/getStorage';\nimport { Serializer } from './Serializer';\nimport { ClientOptions } from './clients/client/ClientOptions';\nimport { SDK_VERSION, BEACON_VERSION } from './constants';\nimport { AccountManager } from './managers/AccountManager';\nimport { AppMetadataManager } from './managers/AppMetadataManager';\nimport { PermissionManager } from './managers/PermissionManager';\nimport { BeaconClient } from './clients/beacon-client/BeaconClient';\nimport { BeaconClientOptions } from './clients/beacon-client/BeaconClientOptions';\nimport { getAccountIdentifier } from './utils/get-account-identifier';\nimport { AbortedBeaconError } from './errors/AbortedBeaconError';\nimport { getSenderId } from './utils/get-sender-id';\nimport { PeerManager } from './managers/PeerManager';\nimport { MessageBasedClient } from './transports/clients/MessageBasedClient';\nimport { setDebugEnabled, getDebugEnabled } from './debug';\nimport { SignatureTypeNotSupportedBeaconError } from './errors/SignatureTypeNotSupportedBeaconError';\nimport { getLogger, Logger, setLogger } from './utils/Logger';\nimport { windowRef } from './MockWindow';\nimport { CommunicationClient } from './transports/clients/CommunicationClient';\nimport { ClientEvents } from './transports/clients/ClientEvents';\nimport { WCStorage } from './storage/WCStorage';\nexport { BeaconClient, BeaconClientOptions, Client, ClientOptions, ClientEvents };\nexport { BeaconError, AbortedBeaconError, BroadcastBeaconError, NetworkNotSupportedBeaconError, NoAddressBeaconError, NoPrivateKeyBeaconError, NotGrantedBeaconError, ParametersInvalidBeaconError, TooManyOperationsBeaconError, TransactionInvalidBeaconError, SignatureTypeNotSupportedBeaconError, UnknownBeaconError };\nexport { Transport, MessageBasedClient, CommunicationClient };\nexport { ChromeStorage, LocalStorage, WCStorage, getStorage };\nexport { PeerManager, AccountManager, AppMetadataManager, PermissionManager };\nexport { SDK_VERSION, BEACON_VERSION };\nexport { getSenderId, getAccountIdentifier, windowRef };\nexport { Serializer, Logger, setLogger, getLogger };\nexport { setDebugEnabled, getDebugEnabled };\nexport { NOTIFICATION_ORACLE_URL } from './constants';\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-dapp/dapp-client/DAppClient.d.ts",dts:"import { BeaconEvent, BeaconEventHandlerFunction, BeaconEventType } from '../events';\nimport { AccountInfo, TransportType, BeaconMessageType, RequestPermissionInput, RequestSignPayloadInput, RequestOperationInput, RequestBroadcastInput, PermissionResponseOutput, SignPayloadResponseOutput, OperationResponseOutput, BroadcastResponseOutput, Network, AppMetadata, ExtendedPeerInfo, ColorMode, Blockchain, BlockchainRequestV3, BlockchainResponseV3, PermissionRequestV3, PermissionResponseV3, ProofOfEventChallengeResponse, RequestProofOfEventChallengeInput, PeerInfoType } from '@airgap/beacon-types';\nimport { Client, Transport } from '@airgap/beacon-core';\nimport { BlockExplorer } from '../utils/block-explorer';\nimport { DAppClientOptions } from './DAppClientOptions';\nimport { BeaconEventHandler } from '@airgap/beacon-dapp';\nimport { DappPostMessageTransport } from '../transports/DappPostMessageTransport';\nimport { DappP2PTransport } from '../transports/DappP2PTransport';\nimport { DappWalletConnectTransport } from '../transports/DappWalletConnectTransport';\n/**\n * @publicapi\n *\n * The DAppClient has to be used in decentralized applications. It handles all the logic related to connecting to beacon-compatible\n * wallets and sending requests.\n *\n * @category DApp\n */\nexport declare class DAppClient extends Client {\n /**\n * The description of the app\n */\n readonly description?: string;\n /**\n * The block explorer used by the SDK\n */\n readonly blockExplorer: BlockExplorer;\n network: Network;\n protected readonly events: BeaconEventHandler;\n protected postMessageTransport: DappPostMessageTransport | undefined;\n protected p2pTransport: DappP2PTransport | undefined;\n protected walletConnectTransport: DappWalletConnectTransport | undefined;\n protected wcProjectId?: string;\n protected wcRelayUrl?: string;\n private isGetActiveAccountHandled;\n /**\n * A map of requests that are currently \"open\", meaning we have sent them to a wallet and are still awaiting a response.\n */\n private readonly openRequests;\n /**\n * The currently active account. For all requests that are associated to a specific request (operation request, signing request),\n * the active account is used to determine the network and destination wallet\n */\n private _activeAccount;\n /**\n * The currently active peer. This is used to address a peer in case the active account is not set. (Eg. for permission requests)\n */\n private _activePeer;\n private _initPromise;\n private isInitPending;\n private readonly activeAccountLoaded;\n private readonly appMetadataManager;\n private readonly disclaimerText?;\n private readonly errorMessages;\n private readonly featuredWallets;\n constructor(config: DAppClientOptions);\n initInternalTransports(): Promise;\n private initEvents;\n private wcToastHandler;\n private channelClosedHandler;\n destroy(): Promise;\n init(transport?: Transport): Promise;\n /**\n * Returns the active account\n */\n getActiveAccount(): Promise;\n private isInvalidState;\n /**\n * Sets the active account\n *\n * @param account The account that will be set as the active account\n */\n setActiveAccount(account?: AccountInfo): Promise;\n /**\n * Clear the active account\n */\n clearActiveAccount(): Promise;\n setColorMode(colorMode: ColorMode): Promise;\n getColorMode(): Promise;\n /**\n * @deprecated\n *\n * Use getOwnAppMetadata instead\n */\n getAppMetadata(): Promise;\n showPrepare(): Promise;\n hideUI(elements?: ('alert' | 'toast')[]): Promise;\n /**\n * Will remove the account from the local storage and set a new active account if necessary.\n *\n * @param accountIdentifier ID of the account\n */\n removeAccount(accountIdentifier: string): Promise;\n /**\n * Remove all accounts and set active account to undefined\n */\n removeAllAccounts(): Promise;\n /**\n * Removes a peer and all the accounts that have been connected through that peer\n *\n * @param peer Peer to be removed\n */\n removePeer(peer: ExtendedPeerInfo, sendDisconnectToPeer?: boolean): Promise;\n /**\n * Remove all peers and all accounts that have been connected through those peers\n */\n removeAllPeers(sendDisconnectToPeers?: boolean): Promise;\n /**\n * Allows the user to subscribe to specific events that are fired in the SDK\n *\n * @param internalEvent The event to subscribe to\n * @param eventCallback The callback that will be called when the event occurs\n */\n subscribeToEvent(internalEvent: K, eventCallback: BeaconEventHandlerFunction): Promise;\n /**\n * Check if we have permissions to send the specific message type to the active account.\n * If no active account is set, only permission requests are allowed.\n *\n * @param type The type of the message\n */\n checkPermissions(type: BeaconMessageType): Promise;\n sendNotification(title: string, message: string, payload: string, protocolIdentifier: string): Promise;\n private blockchains;\n addBlockchain(chain: Blockchain): void;\n removeBlockchain(chainIdentifier: string): void;\n /** Generic messages */\n permissionRequest(input: PermissionRequestV3): Promise>;\n request(input: BlockchainRequestV3): Promise>;\n /**\n * Send a permission request to the DApp. This should be done as the first step. The wallet will respond\n * with an publicKey and permissions that were given. The account returned will be set as the \"activeAccount\"\n * and will be used for the following requests.\n *\n * @param input The message details we need to prepare the PermissionRequest message.\n */\n requestPermissions(input?: RequestPermissionInput): Promise;\n /**\n * Send a proof of event request to the wallet. The wallet will either accept or decline the challenge.\n * If it is accepted, the challenge will be stored, meaning that even if the user refresh the page, the DAppClient will keep checking if the challenge has been fulfilled.\n * Once the challenge is stored, a challenge stored message will be sent to the wallet.\n * It's **highly recommended** to run a proof of event challenge to check the identity of an abstracted account\n *\n * @param input The message details we need to prepare the ProofOfEventChallenge message.\n */\n requestProofOfEventChallenge(input: RequestProofOfEventChallengeInput): Promise;\n private recordProofOfEventChallenge;\n /**\n * This method will send a \"SignPayloadRequest\" to the wallet. This method is meant to be used to sign\n * arbitrary data (eg. a string). It will return the signature in the format of \"edsig...\"\n *\n * @param input The message details we need to prepare the SignPayloadRequest message.\n */\n requestSignPayload(input: RequestSignPayloadInput): Promise;\n /**\n * This method will send an \"EncryptPayloadRequest\" to the wallet. This method is meant to be used to encrypt or decrypt\n * arbitrary data (eg. a string). It will return the encrypted or decrypted payload\n *\n * @param input The message details we need to prepare the EncryptPayloadRequest message.\n */\n /**\n * This method sends an OperationRequest to the wallet. This method should be used for all kinds of operations,\n * eg. transaction or delegation. Not all properties have to be provided. Data like \"counter\" and fees will be\n * fetched and calculated by the wallet (but they can still be provided if required).\n *\n * @param input The message details we need to prepare the OperationRequest message.\n */\n requestOperation(input: RequestOperationInput): Promise;\n /**\n * Sends a \"BroadcastRequest\" to the wallet. This method can be used to inject an already signed transaction\n * to the network.\n *\n * @param input The message details we need to prepare the BroadcastRequest message.\n */\n requestBroadcast(input: RequestBroadcastInput): Promise;\n protected setActivePeer(peer?: PeerInfoType): Promise;\n /**\n * A \"setter\" for when the transport needs to be changed.\n */\n protected setTransport(transport?: Transport): Promise;\n /**\n * This method will emit an internal error message.\n *\n * @param errorMessage The error message to send.\n */\n private sendInternalError;\n /**\n * This method will remove all accounts associated with a specific peer.\n *\n * @param peersToRemove An array of peers for which accounts should be removed\n */\n private removeAccountsForPeers;\n private removeAccountsForPeerIds;\n /**\n * This message handles errors that we receive from the wallet.\n *\n * @param request The request we sent\n * @param beaconError The error we received\n */\n private handleRequestError;\n /**\n * This message will send an event when we receive a successful response to one of the requests we sent.\n *\n * @param request The request we sent\n * @param response The response we received\n */\n private notifySuccess;\n private getWalletInfoFromStorage;\n private getWalletInfo;\n private getPeer;\n /**\n * This method handles sending of requests to the DApp. It makes sure that the DAppClient is initialized and connected\n * to the transport. After that rate limits and permissions will be checked, an ID is attached and the request is sent\n * to the DApp over the transport.\n *\n * @param requestInput The BeaconMessage to be sent to the wallet\n * @param account The account that the message will be sent to\n * @param skipResponse If true, the function return as soon as the message is sent\n */\n private makeRequest;\n /**\n * This method handles sending of requests to the DApp. It makes sure that the DAppClient is initialized and connected\n * to the transport. After that rate limits and permissions will be checked, an ID is attached and the request is sent\n * to the DApp over the transport.\n *\n * @param requestInput The BeaconMessage to be sent to the wallet\n * @param account The account that the message will be sent to\n */\n private makeRequestV3;\n disconnect(): Promise;\n /**\n * Adds a requests to the \"openRequests\" set so we know what messages have already been answered/handled.\n *\n * @param id The ID of the message\n * @param promise A promise that resolves once the response for that specific message is received\n */\n private addOpenRequest;\n private sendNotificationWithAccessToken;\n private onNewAccount;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-dapp/dapp-client/DAppClientOptions.d.ts",dts:"import { BeaconEvent, BeaconEventType, BeaconEventHandlerFunction } from '../events';\nimport { BlockExplorer } from '../utils/block-explorer';\nimport { Storage, NetworkType, ColorMode, NodeDistributions, AnalyticsInterface, Network } from '@airgap/beacon-types';\ntype RequireAtLeastOne = Pick> & {\n [K in Keys]-?: Required> & Partial>>;\n}[Keys];\n/**\n * @category DApp\n */\nexport interface DAppClientOptions {\n /**\n * Name of the application\n */\n name: string;\n /**\n * Description of the application\n */\n description?: string;\n /**\n * A URL to the icon of the application\n */\n iconUrl?: string;\n /**\n * A URL to the website of the application\n */\n appUrl?: string;\n /**\n * The storage that will be used by the SDK\n */\n storage?: Storage;\n /**\n * An object that will be used to overwrite default event handler behaviour.\n *\n * If you plan to overwrite all default events, use \"disableDefaultEvents\" instead.\n *\n * This will overwrite the default event handler, so this can lead to unexpected behavior in some cases.\n * We recommend that you overwrite all handlers if you want to use your own UI.\n *\n * If you simply want to be notified of events happening, but do not want to overwrite the default behavior,\n * please use `subscribeToEvent()` on the DAppClient instead.\n */\n eventHandlers?: {\n [key in BeaconEvent]?: {\n handler: BeaconEventHandlerFunction;\n };\n };\n /**\n * Disable all default Events and UI elements. If passed together with \"eventHandlers\",\n * the default eventHandlers will be removed, and the ones passed by the user will be added.\n */\n disableDefaultEvents?: boolean;\n /**\n * A list of matrix nodes to connect to. If a non-empty array is passed, the default options will be overwritten.\n * One node will be randomly selected based on the local keypair and the other nodes will be used as a fallback in case the primary node goes down.\n *\n * Only provide the hostname, no https:// prefix. Eg. { [Regions.EU1]: ['matrix.example.com'] }\n */\n matrixNodes?: NodeDistributions;\n /**\n * The block explorer used by the SDK\n */\n blockExplorer?: BlockExplorer;\n /**\n * Indicates on which network the DApp is running on.\n */\n network?: Network;\n /**\n * @deprecated Please use \"network\" instead.\n * Indicates on which network the DApp is planning to run. This is currently used to adjust the URLs of web-wallets in the pairing alert if they use different URLs for testnets.\n * You will still have to define the network you intend to use during the permission request.\n */\n preferredNetwork?: NetworkType;\n /**\n * Set the color mode for the UI elements (alerts and toasts)\n */\n colorMode?: ColorMode;\n /**\n * A disclaimer text that will be displayed in the pairing alert\n */\n disclaimerText?: string;\n /**\n * A list of contracts that the DApp is using. Allows to attach human readable error messages for to error codes\n */\n errorMessages?: Record>;\n /**\n * Configuration that is passed to the WalletConnect transport.\n *\n * This is required to enable WalletConnect connections.\n */\n walletConnectOptions?: RequireAtLeastOne<{\n /**\n * The projectId of the application. Has to be obtained from https://cloud.walletconnect.com/\n */\n projectId?: string;\n /**\n * The relay server to connect to\n */\n relayUrl?: string;\n }>;\n /**\n * The analytics instance that will be used by the SDK\n */\n analytics?: AnalyticsInterface;\n /**\n * The wallets that will be featured in the UI.\n */\n featuredWallets?: string[];\n}\nexport {};\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-dapp/transports/DappP2PTransport.d.ts",dts:"import { Storage, StorageKey, ExtendedP2PPairingResponse, NodeDistributions } from '@airgap/beacon-types';\nimport { P2PTransport } from '@airgap/beacon-transport-matrix';\nimport { KeyPair } from '@stablelib/ed25519';\n/**\n * @internalapi\n *\n *\n */\nexport declare class DappP2PTransport extends P2PTransport {\n constructor(name: string, keyPair: KeyPair, storage: Storage, matrixNodes: NodeDistributions, iconUrl?: string, appUrl?: string);\n startOpenChannelListener(): Promise;\n listenForNewPeer(newPeerListener: (peer: ExtendedP2PPairingResponse) => void): Promise;\n stopListeningForNewPeers(): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-dapp/transports/DappPostMessageTransport.d.ts",dts:"import { StorageKey, Storage, ExtendedPostMessagePairingResponse } from '@airgap/beacon-types';\nimport { PostMessageTransport } from '@airgap/beacon-transport-postmessage';\nimport { KeyPair } from '@stablelib/ed25519';\n/**\n * @internalapi\n *\n *\n */\nexport declare class DappPostMessageTransport extends PostMessageTransport {\n constructor(name: string, keyPair: KeyPair, storage: Storage);\n startOpenChannelListener(): Promise;\n listenForNewPeer(newPeerListener: (peer: ExtendedPostMessagePairingResponse) => void): Promise;\n stopListeningForNewPeers(): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-dapp/transports/DappWalletConnectTransport.d.ts",dts:"import { StorageKey, Storage, ExtendedWalletConnectPairingResponse, NetworkType } from '@airgap/beacon-types';\nimport { WalletConnectTransport } from '@airgap/beacon-transport-walletconnect';\nimport { KeyPair } from '@stablelib/ed25519';\nimport { SignClientTypes } from '@walletconnect/types';\n/**\n * @internalapi\n *\n *\n */\nexport declare class DappWalletConnectTransport extends WalletConnectTransport {\n constructor(name: string, keyPair: KeyPair, storage: Storage, wcOptions: {\n network: NetworkType;\n opts: SignClientTypes.Options;\n });\n listenForNewPeer(newPeerListener: (peer: ExtendedWalletConnectPairingResponse) => void): Promise;\n stopListeningForNewPeers(): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-dapp/utils/available-transports.d.ts",dts:"/**\n * An object with promises to indicate whether or not that transport is available.\n */\nexport declare const availableTransports: any;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-dapp/utils/block-explorer.d.ts",dts:"import { Network, NetworkType } from '@airgap/beacon-types';\nexport declare abstract class BlockExplorer {\n readonly rpcUrls: {\n [key in NetworkType]: string;\n };\n constructor(rpcUrls: {\n [key in NetworkType]: string;\n });\n protected getLinkForNetwork(network: Network): Promise;\n /**\n * Return a blockexplorer link for an address\n *\n * @param address The address to be opened\n * @param network The network that was used\n */\n abstract getAddressLink(address: string, network: Network): Promise;\n /**\n * Return a blockexplorer link for a transaction hash\n *\n * @param transactionId The hash of the transaction\n * @param network The network that was used\n */\n abstract getTransactionLink(transactionId: string, network: Network): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-dapp/utils/get-instance.d.ts",dts:"import { DAppClient, DAppClientOptions } from '..';\n/** Get a DAppClient instance. Will make sure only one dAppClient exists. After the first instance has been created, the config will be ignored, unless \"reset\" is set */\nexport declare const getDAppClientInstance: (config: DAppClientOptions, reset?: boolean) => DAppClient;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-dapp/utils/shorten-string.d.ts",dts:"export declare const shortenString: (text: string) => string;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-dapp/utils/tzkt-blockexplorer.d.ts",dts:"import { Network, NetworkType } from '@airgap/beacon-types';\nimport { BlockExplorer } from './block-explorer';\nexport declare class TzktBlockExplorer extends BlockExplorer {\n readonly rpcUrls: {\n [key in NetworkType]: string;\n };\n constructor(rpcUrls?: {\n [key in NetworkType]: string;\n });\n getAddressLink(address: string, network: Network): Promise;\n getTransactionLink(transactionId: string, network: Network): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-dapp/beacon-message-events.d.ts",dts:"import { BeaconEvent } from './events';\nimport { BeaconMessageType } from '@airgap/beacon-types';\nexport declare const messageEvents: {\n [key in BeaconMessageType]: {\n sent: BeaconEvent;\n success: BeaconEvent;\n error: BeaconEvent;\n };\n};\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-dapp/events.d.ts",dts:'import { BlockExplorer, AlertButton } from \'@airgap/beacon-dapp\';\nimport { ExtendedPostMessagePairingResponse, PostMessagePairingRequest, ExtendedP2PPairingResponse, P2PPairingRequest, AccountInfo, ErrorResponse, PermissionResponseOutput, OperationResponseOutput, BroadcastResponseOutput, SignPayloadResponseOutput, Network, ConnectionContext, NetworkType, AcknowledgeResponse, WalletInfo, ExtendedWalletConnectPairingResponse, WalletConnectPairingRequest, AnalyticsInterface } from \'@airgap/beacon-types\';\nimport { Transport } from \'@airgap/beacon-core\';\nimport { ProofOfEventChallengeResponseOutput } from \'@airgap/beacon-types\';\n/**\n * The different events that can be emitted by the beacon-sdk\n */\nexport declare enum BeaconEvent {\n PERMISSION_REQUEST_SENT = "PERMISSION_REQUEST_SENT",\n PERMISSION_REQUEST_SUCCESS = "PERMISSION_REQUEST_SUCCESS",\n PERMISSION_REQUEST_ERROR = "PERMISSION_REQUEST_ERROR",\n PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT = "PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT",\n PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS = "PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS",\n PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR = "PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR",\n OPERATION_REQUEST_SENT = "OPERATION_REQUEST_SENT",\n OPERATION_REQUEST_SUCCESS = "OPERATION_REQUEST_SUCCESS",\n OPERATION_REQUEST_ERROR = "OPERATION_REQUEST_ERROR",\n SIGN_REQUEST_SENT = "SIGN_REQUEST_SENT",\n SIGN_REQUEST_SUCCESS = "SIGN_REQUEST_SUCCESS",\n SIGN_REQUEST_ERROR = "SIGN_REQUEST_ERROR",\n BROADCAST_REQUEST_SENT = "BROADCAST_REQUEST_SENT",\n BROADCAST_REQUEST_SUCCESS = "BROADCAST_REQUEST_SUCCESS",\n BROADCAST_REQUEST_ERROR = "BROADCAST_REQUEST_ERROR",\n ACKNOWLEDGE_RECEIVED = "ACKNOWLEDGE_RECEIVED",\n LOCAL_RATE_LIMIT_REACHED = "LOCAL_RATE_LIMIT_REACHED",\n NO_PERMISSIONS = "NO_PERMISSIONS",\n ACTIVE_ACCOUNT_SET = "ACTIVE_ACCOUNT_SET",\n ACTIVE_TRANSPORT_SET = "ACTIVE_TRANSPORT_SET",\n SHOW_PREPARE = "SHOW_PREPARE",\n HIDE_UI = "HIDE_UI",\n INVALID_ACTIVE_ACCOUNT_STATE = "INVALID_ACTIVE_ACCOUNT_STATE",\n PAIR_INIT = "PAIR_INIT",\n PAIR_SUCCESS = "PAIR_SUCCESS",\n CHANNEL_CLOSED = "CHANNEL_CLOSED",\n INTERNAL_ERROR = "INTERNAL_ERROR",\n UNKNOWN = "UNKNOWN"\n}\nexport interface ExtraInfo {\n resetCallback?(): Promise;\n}\ninterface RequestSentInfo {\n extraInfo: ExtraInfo;\n walletInfo: WalletInfo;\n}\n/**\n * The type of the payload of the different BeaconEvents\n */\nexport interface BeaconEventType {\n [BeaconEvent.PERMISSION_REQUEST_SENT]: RequestSentInfo;\n [BeaconEvent.PERMISSION_REQUEST_SUCCESS]: {\n account: AccountInfo;\n output: PermissionResponseOutput;\n blockExplorer: BlockExplorer;\n connectionContext: ConnectionContext;\n walletInfo: WalletInfo;\n };\n [BeaconEvent.PERMISSION_REQUEST_ERROR]: {\n errorResponse: ErrorResponse;\n walletInfo: WalletInfo;\n };\n [BeaconEvent.PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT]: RequestSentInfo;\n [BeaconEvent.PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS]: {\n account: AccountInfo;\n output: ProofOfEventChallengeResponseOutput;\n blockExplorer: BlockExplorer;\n connectionContext: ConnectionContext;\n walletInfo: WalletInfo;\n };\n [BeaconEvent.PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR]: {\n errorResponse: ErrorResponse;\n walletInfo: WalletInfo;\n };\n [BeaconEvent.OPERATION_REQUEST_SENT]: RequestSentInfo;\n [BeaconEvent.OPERATION_REQUEST_SUCCESS]: {\n account: AccountInfo;\n output: OperationResponseOutput;\n blockExplorer: BlockExplorer;\n connectionContext: ConnectionContext;\n walletInfo: WalletInfo;\n };\n [BeaconEvent.OPERATION_REQUEST_ERROR]: {\n errorResponse: ErrorResponse;\n walletInfo: WalletInfo;\n errorMessages: Record>;\n };\n [BeaconEvent.SIGN_REQUEST_SENT]: RequestSentInfo;\n [BeaconEvent.SIGN_REQUEST_SUCCESS]: {\n output: SignPayloadResponseOutput;\n connectionContext: ConnectionContext;\n walletInfo: WalletInfo;\n };\n [BeaconEvent.SIGN_REQUEST_ERROR]: {\n errorResponse: ErrorResponse;\n walletInfo: WalletInfo;\n };\n [BeaconEvent.BROADCAST_REQUEST_SENT]: RequestSentInfo;\n [BeaconEvent.BROADCAST_REQUEST_SUCCESS]: {\n network: Network;\n output: BroadcastResponseOutput;\n blockExplorer: BlockExplorer;\n connectionContext: ConnectionContext;\n walletInfo: WalletInfo;\n };\n [BeaconEvent.BROADCAST_REQUEST_ERROR]: {\n errorResponse: ErrorResponse;\n walletInfo: WalletInfo;\n };\n [BeaconEvent.ACKNOWLEDGE_RECEIVED]: {\n message: AcknowledgeResponse;\n extraInfo: ExtraInfo;\n walletInfo: WalletInfo;\n };\n [BeaconEvent.LOCAL_RATE_LIMIT_REACHED]: undefined;\n [BeaconEvent.NO_PERMISSIONS]: undefined;\n [BeaconEvent.ACTIVE_ACCOUNT_SET]: AccountInfo;\n [BeaconEvent.ACTIVE_TRANSPORT_SET]: Transport;\n [BeaconEvent.INVALID_ACTIVE_ACCOUNT_STATE]: undefined;\n [BeaconEvent.SHOW_PREPARE]: {\n walletInfo?: WalletInfo;\n };\n [BeaconEvent.HIDE_UI]: (\'alert\' | \'toast\')[] | undefined;\n [BeaconEvent.PAIR_INIT]: {\n p2pPeerInfo: () => Promise;\n postmessagePeerInfo: () => Promise;\n walletConnectPeerInfo: () => Promise;\n networkType: NetworkType;\n abortedHandler?(): void;\n disclaimerText?: string;\n analytics: AnalyticsInterface;\n featuredWallets?: string[];\n };\n [BeaconEvent.PAIR_SUCCESS]: ExtendedPostMessagePairingResponse | ExtendedP2PPairingResponse | ExtendedWalletConnectPairingResponse;\n [BeaconEvent.CHANNEL_CLOSED]: string;\n [BeaconEvent.INTERNAL_ERROR]: {\n text: string;\n buttons?: AlertButton[];\n };\n [BeaconEvent.UNKNOWN]: undefined;\n}\nexport type BeaconEventHandlerFunction = (data: T, eventCallback?: AlertButton[]) => void | Promise;\n/**\n * The default event handlers\n */\nexport declare const defaultEventCallbacks: {\n [key in BeaconEvent]: BeaconEventHandlerFunction;\n};\n/**\n * @internalapi\n *\n * Handles beacon events\n */\nexport declare class BeaconEventHandler {\n private readonly callbackMap;\n constructor(eventsToOverride?: {\n [key in BeaconEvent]?: {\n handler: BeaconEventHandlerFunction;\n };\n }, overrideAll?: boolean);\n /**\n * A method to subscribe to a specific beacon event and register a callback\n *\n * @param event The event being emitted\n * @param eventCallback The callback that will be invoked\n */\n on(event: K, eventCallback: BeaconEventHandlerFunction): Promise;\n /**\n * Emit a beacon event\n *\n * @param event The event being emitted\n * @param data The data to be emit\n */\n emit(event: K, data?: BeaconEventType[K], eventCallback?: AlertButton[]): Promise;\n /**\n * Override beacon event default callbacks. This can be used to disable default alert/toast behaviour\n *\n * @param eventsToOverride An object with the events to override\n */\n private overrideDefaults;\n /**\n * Set all event callbacks to a specific handler.\n */\n private setAllHandlers;\n}\nexport {};\n'},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-dapp/index.d.ts",dts:"export * from '@airgap/beacon-core';\nexport * from '@airgap/beacon-transport-matrix';\nexport * from '@airgap/beacon-transport-postmessage';\nexport * from '@airgap/beacon-types';\nexport * from '@airgap/beacon-utils';\nexport * from '@airgap/beacon-ui';\nimport { DAppClient } from './dapp-client/DAppClient';\nimport { DAppClientOptions } from './dapp-client/DAppClientOptions';\nimport { BeaconEvent, BeaconEventHandler, defaultEventCallbacks } from './events';\nimport { BlockExplorer } from './utils/block-explorer';\nimport { TzktBlockExplorer } from './utils/tzkt-blockexplorer';\nimport { getDAppClientInstance } from './utils/get-instance';\nexport { DAppClient, DAppClientOptions, getDAppClientInstance };\nexport { BeaconEvent, BeaconEventHandler, defaultEventCallbacks };\nexport { BlockExplorer, TzktBlockExplorer, TzktBlockExplorer as TezblockBlockExplorer };\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-dapp/dist/esm/dapp-client/DAppClient.d.ts",dts:"import { BeaconEvent, BeaconEventHandlerFunction, BeaconEventType } from '../events';\nimport { AccountInfo, TransportType, BeaconMessageType, RequestPermissionInput, RequestSignPayloadInput, RequestOperationInput, RequestBroadcastInput, PermissionResponseOutput, SignPayloadResponseOutput, OperationResponseOutput, BroadcastResponseOutput, Network, AppMetadata, ExtendedPeerInfo, ColorMode, Blockchain, BlockchainRequestV3, BlockchainResponseV3, PermissionRequestV3, PermissionResponseV3, ProofOfEventChallengeResponse, RequestProofOfEventChallengeInput, PeerInfoType } from '@airgap/beacon-types';\nimport { Client, Transport } from '@airgap/beacon-core';\nimport { BlockExplorer } from '../utils/block-explorer';\nimport { DAppClientOptions } from './DAppClientOptions';\nimport { BeaconEventHandler } from '@airgap/beacon-dapp';\nimport { DappPostMessageTransport } from '../transports/DappPostMessageTransport';\nimport { DappP2PTransport } from '../transports/DappP2PTransport';\nimport { DappWalletConnectTransport } from '../transports/DappWalletConnectTransport';\n/**\n * @publicapi\n *\n * The DAppClient has to be used in decentralized applications. It handles all the logic related to connecting to beacon-compatible\n * wallets and sending requests.\n *\n * @category DApp\n */\nexport declare class DAppClient extends Client {\n /**\n * The description of the app\n */\n readonly description?: string;\n /**\n * The block explorer used by the SDK\n */\n readonly blockExplorer: BlockExplorer;\n network: Network;\n protected readonly events: BeaconEventHandler;\n protected postMessageTransport: DappPostMessageTransport | undefined;\n protected p2pTransport: DappP2PTransport | undefined;\n protected walletConnectTransport: DappWalletConnectTransport | undefined;\n protected wcProjectId?: string;\n protected wcRelayUrl?: string;\n private isGetActiveAccountHandled;\n /**\n * A map of requests that are currently \"open\", meaning we have sent them to a wallet and are still awaiting a response.\n */\n private readonly openRequests;\n /**\n * The currently active account. For all requests that are associated to a specific request (operation request, signing request),\n * the active account is used to determine the network and destination wallet\n */\n private _activeAccount;\n /**\n * The currently active peer. This is used to address a peer in case the active account is not set. (Eg. for permission requests)\n */\n private _activePeer;\n private _initPromise;\n private isInitPending;\n private readonly activeAccountLoaded;\n private readonly appMetadataManager;\n private readonly disclaimerText?;\n private readonly errorMessages;\n private readonly featuredWallets;\n constructor(config: DAppClientOptions);\n initInternalTransports(): Promise;\n private initEvents;\n private wcToastHandler;\n private channelClosedHandler;\n destroy(): Promise;\n init(transport?: Transport): Promise;\n /**\n * Returns the active account\n */\n getActiveAccount(): Promise;\n private isInvalidState;\n /**\n * Sets the active account\n *\n * @param account The account that will be set as the active account\n */\n setActiveAccount(account?: AccountInfo): Promise;\n /**\n * Clear the active account\n */\n clearActiveAccount(): Promise;\n setColorMode(colorMode: ColorMode): Promise;\n getColorMode(): Promise;\n /**\n * @deprecated\n *\n * Use getOwnAppMetadata instead\n */\n getAppMetadata(): Promise;\n showPrepare(): Promise;\n hideUI(elements?: ('alert' | 'toast')[]): Promise;\n /**\n * Will remove the account from the local storage and set a new active account if necessary.\n *\n * @param accountIdentifier ID of the account\n */\n removeAccount(accountIdentifier: string): Promise;\n /**\n * Remove all accounts and set active account to undefined\n */\n removeAllAccounts(): Promise;\n /**\n * Removes a peer and all the accounts that have been connected through that peer\n *\n * @param peer Peer to be removed\n */\n removePeer(peer: ExtendedPeerInfo, sendDisconnectToPeer?: boolean): Promise;\n /**\n * Remove all peers and all accounts that have been connected through those peers\n */\n removeAllPeers(sendDisconnectToPeers?: boolean): Promise;\n /**\n * Allows the user to subscribe to specific events that are fired in the SDK\n *\n * @param internalEvent The event to subscribe to\n * @param eventCallback The callback that will be called when the event occurs\n */\n subscribeToEvent(internalEvent: K, eventCallback: BeaconEventHandlerFunction): Promise;\n /**\n * Check if we have permissions to send the specific message type to the active account.\n * If no active account is set, only permission requests are allowed.\n *\n * @param type The type of the message\n */\n checkPermissions(type: BeaconMessageType): Promise;\n sendNotification(title: string, message: string, payload: string, protocolIdentifier: string): Promise;\n private blockchains;\n addBlockchain(chain: Blockchain): void;\n removeBlockchain(chainIdentifier: string): void;\n /** Generic messages */\n permissionRequest(input: PermissionRequestV3): Promise>;\n request(input: BlockchainRequestV3): Promise>;\n /**\n * Send a permission request to the DApp. This should be done as the first step. The wallet will respond\n * with an publicKey and permissions that were given. The account returned will be set as the \"activeAccount\"\n * and will be used for the following requests.\n *\n * @param input The message details we need to prepare the PermissionRequest message.\n */\n requestPermissions(input?: RequestPermissionInput): Promise;\n /**\n * Send a proof of event request to the wallet. The wallet will either accept or decline the challenge.\n * If it is accepted, the challenge will be stored, meaning that even if the user refresh the page, the DAppClient will keep checking if the challenge has been fulfilled.\n * Once the challenge is stored, a challenge stored message will be sent to the wallet.\n * It's **highly recommended** to run a proof of event challenge to check the identity of an abstracted account\n *\n * @param input The message details we need to prepare the ProofOfEventChallenge message.\n */\n requestProofOfEventChallenge(input: RequestProofOfEventChallengeInput): Promise;\n private recordProofOfEventChallenge;\n /**\n * This method will send a \"SignPayloadRequest\" to the wallet. This method is meant to be used to sign\n * arbitrary data (eg. a string). It will return the signature in the format of \"edsig...\"\n *\n * @param input The message details we need to prepare the SignPayloadRequest message.\n */\n requestSignPayload(input: RequestSignPayloadInput): Promise;\n /**\n * This method will send an \"EncryptPayloadRequest\" to the wallet. This method is meant to be used to encrypt or decrypt\n * arbitrary data (eg. a string). It will return the encrypted or decrypted payload\n *\n * @param input The message details we need to prepare the EncryptPayloadRequest message.\n */\n /**\n * This method sends an OperationRequest to the wallet. This method should be used for all kinds of operations,\n * eg. transaction or delegation. Not all properties have to be provided. Data like \"counter\" and fees will be\n * fetched and calculated by the wallet (but they can still be provided if required).\n *\n * @param input The message details we need to prepare the OperationRequest message.\n */\n requestOperation(input: RequestOperationInput): Promise;\n /**\n * Sends a \"BroadcastRequest\" to the wallet. This method can be used to inject an already signed transaction\n * to the network.\n *\n * @param input The message details we need to prepare the BroadcastRequest message.\n */\n requestBroadcast(input: RequestBroadcastInput): Promise;\n protected setActivePeer(peer?: PeerInfoType): Promise;\n /**\n * A \"setter\" for when the transport needs to be changed.\n */\n protected setTransport(transport?: Transport): Promise;\n /**\n * This method will emit an internal error message.\n *\n * @param errorMessage The error message to send.\n */\n private sendInternalError;\n /**\n * This method will remove all accounts associated with a specific peer.\n *\n * @param peersToRemove An array of peers for which accounts should be removed\n */\n private removeAccountsForPeers;\n private removeAccountsForPeerIds;\n /**\n * This message handles errors that we receive from the wallet.\n *\n * @param request The request we sent\n * @param beaconError The error we received\n */\n private handleRequestError;\n /**\n * This message will send an event when we receive a successful response to one of the requests we sent.\n *\n * @param request The request we sent\n * @param response The response we received\n */\n private notifySuccess;\n private getWalletInfoFromStorage;\n private getWalletInfo;\n private getPeer;\n /**\n * This method handles sending of requests to the DApp. It makes sure that the DAppClient is initialized and connected\n * to the transport. After that rate limits and permissions will be checked, an ID is attached and the request is sent\n * to the DApp over the transport.\n *\n * @param requestInput The BeaconMessage to be sent to the wallet\n * @param account The account that the message will be sent to\n * @param skipResponse If true, the function return as soon as the message is sent\n */\n private makeRequest;\n /**\n * This method handles sending of requests to the DApp. It makes sure that the DAppClient is initialized and connected\n * to the transport. After that rate limits and permissions will be checked, an ID is attached and the request is sent\n * to the DApp over the transport.\n *\n * @param requestInput The BeaconMessage to be sent to the wallet\n * @param account The account that the message will be sent to\n */\n private makeRequestV3;\n disconnect(): Promise;\n /**\n * Adds a requests to the \"openRequests\" set so we know what messages have already been answered/handled.\n *\n * @param id The ID of the message\n * @param promise A promise that resolves once the response for that specific message is received\n */\n private addOpenRequest;\n private sendNotificationWithAccessToken;\n private onNewAccount;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-dapp/dist/esm/dapp-client/DAppClientOptions.d.ts",dts:"import { BeaconEvent, BeaconEventType, BeaconEventHandlerFunction } from '../events';\nimport { BlockExplorer } from '../utils/block-explorer';\nimport { Storage, NetworkType, ColorMode, NodeDistributions, AnalyticsInterface, Network } from '@airgap/beacon-types';\ntype RequireAtLeastOne = Pick> & {\n [K in Keys]-?: Required> & Partial>>;\n}[Keys];\n/**\n * @category DApp\n */\nexport interface DAppClientOptions {\n /**\n * Name of the application\n */\n name: string;\n /**\n * Description of the application\n */\n description?: string;\n /**\n * A URL to the icon of the application\n */\n iconUrl?: string;\n /**\n * A URL to the website of the application\n */\n appUrl?: string;\n /**\n * The storage that will be used by the SDK\n */\n storage?: Storage;\n /**\n * An object that will be used to overwrite default event handler behaviour.\n *\n * If you plan to overwrite all default events, use \"disableDefaultEvents\" instead.\n *\n * This will overwrite the default event handler, so this can lead to unexpected behavior in some cases.\n * We recommend that you overwrite all handlers if you want to use your own UI.\n *\n * If you simply want to be notified of events happening, but do not want to overwrite the default behavior,\n * please use `subscribeToEvent()` on the DAppClient instead.\n */\n eventHandlers?: {\n [key in BeaconEvent]?: {\n handler: BeaconEventHandlerFunction;\n };\n };\n /**\n * Disable all default Events and UI elements. If passed together with \"eventHandlers\",\n * the default eventHandlers will be removed, and the ones passed by the user will be added.\n */\n disableDefaultEvents?: boolean;\n /**\n * A list of matrix nodes to connect to. If a non-empty array is passed, the default options will be overwritten.\n * One node will be randomly selected based on the local keypair and the other nodes will be used as a fallback in case the primary node goes down.\n *\n * Only provide the hostname, no https:// prefix. Eg. { [Regions.EU1]: ['matrix.example.com'] }\n */\n matrixNodes?: NodeDistributions;\n /**\n * The block explorer used by the SDK\n */\n blockExplorer?: BlockExplorer;\n /**\n * Indicates on which network the DApp is running on.\n */\n network?: Network;\n /**\n * @deprecated Please use \"network\" instead.\n * Indicates on which network the DApp is planning to run. This is currently used to adjust the URLs of web-wallets in the pairing alert if they use different URLs for testnets.\n * You will still have to define the network you intend to use during the permission request.\n */\n preferredNetwork?: NetworkType;\n /**\n * Set the color mode for the UI elements (alerts and toasts)\n */\n colorMode?: ColorMode;\n /**\n * A disclaimer text that will be displayed in the pairing alert\n */\n disclaimerText?: string;\n /**\n * A list of contracts that the DApp is using. Allows to attach human readable error messages for to error codes\n */\n errorMessages?: Record>;\n /**\n * Configuration that is passed to the WalletConnect transport.\n *\n * This is required to enable WalletConnect connections.\n */\n walletConnectOptions?: RequireAtLeastOne<{\n /**\n * The projectId of the application. Has to be obtained from https://cloud.walletconnect.com/\n */\n projectId?: string;\n /**\n * The relay server to connect to\n */\n relayUrl?: string;\n }>;\n /**\n * The analytics instance that will be used by the SDK\n */\n analytics?: AnalyticsInterface;\n /**\n * The wallets that will be featured in the UI.\n */\n featuredWallets?: string[];\n}\nexport {};\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-dapp/dist/esm/transports/DappP2PTransport.d.ts",dts:"import { Storage, StorageKey, ExtendedP2PPairingResponse, NodeDistributions } from '@airgap/beacon-types';\nimport { P2PTransport } from '@airgap/beacon-transport-matrix';\nimport { KeyPair } from '@stablelib/ed25519';\n/**\n * @internalapi\n *\n *\n */\nexport declare class DappP2PTransport extends P2PTransport {\n constructor(name: string, keyPair: KeyPair, storage: Storage, matrixNodes: NodeDistributions, iconUrl?: string, appUrl?: string);\n startOpenChannelListener(): Promise;\n listenForNewPeer(newPeerListener: (peer: ExtendedP2PPairingResponse) => void): Promise;\n stopListeningForNewPeers(): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-dapp/dist/esm/transports/DappPostMessageTransport.d.ts",dts:"import { StorageKey, Storage, ExtendedPostMessagePairingResponse } from '@airgap/beacon-types';\nimport { PostMessageTransport } from '@airgap/beacon-transport-postmessage';\nimport { KeyPair } from '@stablelib/ed25519';\n/**\n * @internalapi\n *\n *\n */\nexport declare class DappPostMessageTransport extends PostMessageTransport {\n constructor(name: string, keyPair: KeyPair, storage: Storage);\n startOpenChannelListener(): Promise;\n listenForNewPeer(newPeerListener: (peer: ExtendedPostMessagePairingResponse) => void): Promise;\n stopListeningForNewPeers(): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-dapp/dist/esm/transports/DappWalletConnectTransport.d.ts",dts:"import { StorageKey, Storage, ExtendedWalletConnectPairingResponse, NetworkType } from '@airgap/beacon-types';\nimport { WalletConnectTransport } from '@airgap/beacon-transport-walletconnect';\nimport { KeyPair } from '@stablelib/ed25519';\nimport { SignClientTypes } from '@walletconnect/types';\n/**\n * @internalapi\n *\n *\n */\nexport declare class DappWalletConnectTransport extends WalletConnectTransport {\n constructor(name: string, keyPair: KeyPair, storage: Storage, wcOptions: {\n network: NetworkType;\n opts: SignClientTypes.Options;\n });\n listenForNewPeer(newPeerListener: (peer: ExtendedWalletConnectPairingResponse) => void): Promise;\n stopListeningForNewPeers(): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-dapp/dist/esm/utils/available-transports.d.ts",dts:"/**\n * An object with promises to indicate whether or not that transport is available.\n */\nexport declare const availableTransports: any;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-dapp/dist/esm/utils/block-explorer.d.ts",dts:"import { Network, NetworkType } from '@airgap/beacon-types';\nexport declare abstract class BlockExplorer {\n readonly rpcUrls: {\n [key in NetworkType]: string;\n };\n constructor(rpcUrls: {\n [key in NetworkType]: string;\n });\n protected getLinkForNetwork(network: Network): Promise;\n /**\n * Return a blockexplorer link for an address\n *\n * @param address The address to be opened\n * @param network The network that was used\n */\n abstract getAddressLink(address: string, network: Network): Promise;\n /**\n * Return a blockexplorer link for a transaction hash\n *\n * @param transactionId The hash of the transaction\n * @param network The network that was used\n */\n abstract getTransactionLink(transactionId: string, network: Network): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-dapp/dist/esm/utils/get-instance.d.ts",dts:"import { DAppClient, DAppClientOptions } from '..';\n/** Get a DAppClient instance. Will make sure only one dAppClient exists. After the first instance has been created, the config will be ignored, unless \"reset\" is set */\nexport declare const getDAppClientInstance: (config: DAppClientOptions, reset?: boolean) => DAppClient;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-dapp/dist/esm/utils/shorten-string.d.ts",dts:"export declare const shortenString: (text: string) => string;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-dapp/dist/esm/utils/tzkt-blockexplorer.d.ts",dts:"import { Network, NetworkType } from '@airgap/beacon-types';\nimport { BlockExplorer } from './block-explorer';\nexport declare class TzktBlockExplorer extends BlockExplorer {\n readonly rpcUrls: {\n [key in NetworkType]: string;\n };\n constructor(rpcUrls?: {\n [key in NetworkType]: string;\n });\n getAddressLink(address: string, network: Network): Promise;\n getTransactionLink(transactionId: string, network: Network): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-dapp/dist/esm/beacon-message-events.d.ts",dts:"import { BeaconEvent } from './events';\nimport { BeaconMessageType } from '@airgap/beacon-types';\nexport declare const messageEvents: {\n [key in BeaconMessageType]: {\n sent: BeaconEvent;\n success: BeaconEvent;\n error: BeaconEvent;\n };\n};\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-dapp/dist/esm/events.d.ts",dts:'import { BlockExplorer, AlertButton } from \'@airgap/beacon-dapp\';\nimport { ExtendedPostMessagePairingResponse, PostMessagePairingRequest, ExtendedP2PPairingResponse, P2PPairingRequest, AccountInfo, ErrorResponse, PermissionResponseOutput, OperationResponseOutput, BroadcastResponseOutput, SignPayloadResponseOutput, Network, ConnectionContext, NetworkType, AcknowledgeResponse, WalletInfo, ExtendedWalletConnectPairingResponse, WalletConnectPairingRequest, AnalyticsInterface } from \'@airgap/beacon-types\';\nimport { Transport } from \'@airgap/beacon-core\';\nimport { ProofOfEventChallengeResponseOutput } from \'@airgap/beacon-types\';\n/**\n * The different events that can be emitted by the beacon-sdk\n */\nexport declare enum BeaconEvent {\n PERMISSION_REQUEST_SENT = "PERMISSION_REQUEST_SENT",\n PERMISSION_REQUEST_SUCCESS = "PERMISSION_REQUEST_SUCCESS",\n PERMISSION_REQUEST_ERROR = "PERMISSION_REQUEST_ERROR",\n PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT = "PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT",\n PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS = "PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS",\n PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR = "PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR",\n OPERATION_REQUEST_SENT = "OPERATION_REQUEST_SENT",\n OPERATION_REQUEST_SUCCESS = "OPERATION_REQUEST_SUCCESS",\n OPERATION_REQUEST_ERROR = "OPERATION_REQUEST_ERROR",\n SIGN_REQUEST_SENT = "SIGN_REQUEST_SENT",\n SIGN_REQUEST_SUCCESS = "SIGN_REQUEST_SUCCESS",\n SIGN_REQUEST_ERROR = "SIGN_REQUEST_ERROR",\n BROADCAST_REQUEST_SENT = "BROADCAST_REQUEST_SENT",\n BROADCAST_REQUEST_SUCCESS = "BROADCAST_REQUEST_SUCCESS",\n BROADCAST_REQUEST_ERROR = "BROADCAST_REQUEST_ERROR",\n ACKNOWLEDGE_RECEIVED = "ACKNOWLEDGE_RECEIVED",\n LOCAL_RATE_LIMIT_REACHED = "LOCAL_RATE_LIMIT_REACHED",\n NO_PERMISSIONS = "NO_PERMISSIONS",\n ACTIVE_ACCOUNT_SET = "ACTIVE_ACCOUNT_SET",\n ACTIVE_TRANSPORT_SET = "ACTIVE_TRANSPORT_SET",\n SHOW_PREPARE = "SHOW_PREPARE",\n HIDE_UI = "HIDE_UI",\n INVALID_ACTIVE_ACCOUNT_STATE = "INVALID_ACTIVE_ACCOUNT_STATE",\n PAIR_INIT = "PAIR_INIT",\n PAIR_SUCCESS = "PAIR_SUCCESS",\n CHANNEL_CLOSED = "CHANNEL_CLOSED",\n INTERNAL_ERROR = "INTERNAL_ERROR",\n UNKNOWN = "UNKNOWN"\n}\nexport interface ExtraInfo {\n resetCallback?(): Promise;\n}\ninterface RequestSentInfo {\n extraInfo: ExtraInfo;\n walletInfo: WalletInfo;\n}\n/**\n * The type of the payload of the different BeaconEvents\n */\nexport interface BeaconEventType {\n [BeaconEvent.PERMISSION_REQUEST_SENT]: RequestSentInfo;\n [BeaconEvent.PERMISSION_REQUEST_SUCCESS]: {\n account: AccountInfo;\n output: PermissionResponseOutput;\n blockExplorer: BlockExplorer;\n connectionContext: ConnectionContext;\n walletInfo: WalletInfo;\n };\n [BeaconEvent.PERMISSION_REQUEST_ERROR]: {\n errorResponse: ErrorResponse;\n walletInfo: WalletInfo;\n };\n [BeaconEvent.PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT]: RequestSentInfo;\n [BeaconEvent.PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS]: {\n account: AccountInfo;\n output: ProofOfEventChallengeResponseOutput;\n blockExplorer: BlockExplorer;\n connectionContext: ConnectionContext;\n walletInfo: WalletInfo;\n };\n [BeaconEvent.PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR]: {\n errorResponse: ErrorResponse;\n walletInfo: WalletInfo;\n };\n [BeaconEvent.OPERATION_REQUEST_SENT]: RequestSentInfo;\n [BeaconEvent.OPERATION_REQUEST_SUCCESS]: {\n account: AccountInfo;\n output: OperationResponseOutput;\n blockExplorer: BlockExplorer;\n connectionContext: ConnectionContext;\n walletInfo: WalletInfo;\n };\n [BeaconEvent.OPERATION_REQUEST_ERROR]: {\n errorResponse: ErrorResponse;\n walletInfo: WalletInfo;\n errorMessages: Record>;\n };\n [BeaconEvent.SIGN_REQUEST_SENT]: RequestSentInfo;\n [BeaconEvent.SIGN_REQUEST_SUCCESS]: {\n output: SignPayloadResponseOutput;\n connectionContext: ConnectionContext;\n walletInfo: WalletInfo;\n };\n [BeaconEvent.SIGN_REQUEST_ERROR]: {\n errorResponse: ErrorResponse;\n walletInfo: WalletInfo;\n };\n [BeaconEvent.BROADCAST_REQUEST_SENT]: RequestSentInfo;\n [BeaconEvent.BROADCAST_REQUEST_SUCCESS]: {\n network: Network;\n output: BroadcastResponseOutput;\n blockExplorer: BlockExplorer;\n connectionContext: ConnectionContext;\n walletInfo: WalletInfo;\n };\n [BeaconEvent.BROADCAST_REQUEST_ERROR]: {\n errorResponse: ErrorResponse;\n walletInfo: WalletInfo;\n };\n [BeaconEvent.ACKNOWLEDGE_RECEIVED]: {\n message: AcknowledgeResponse;\n extraInfo: ExtraInfo;\n walletInfo: WalletInfo;\n };\n [BeaconEvent.LOCAL_RATE_LIMIT_REACHED]: undefined;\n [BeaconEvent.NO_PERMISSIONS]: undefined;\n [BeaconEvent.ACTIVE_ACCOUNT_SET]: AccountInfo;\n [BeaconEvent.ACTIVE_TRANSPORT_SET]: Transport;\n [BeaconEvent.INVALID_ACTIVE_ACCOUNT_STATE]: undefined;\n [BeaconEvent.SHOW_PREPARE]: {\n walletInfo?: WalletInfo;\n };\n [BeaconEvent.HIDE_UI]: (\'alert\' | \'toast\')[] | undefined;\n [BeaconEvent.PAIR_INIT]: {\n p2pPeerInfo: () => Promise;\n postmessagePeerInfo: () => Promise;\n walletConnectPeerInfo: () => Promise;\n networkType: NetworkType;\n abortedHandler?(): void;\n disclaimerText?: string;\n analytics: AnalyticsInterface;\n featuredWallets?: string[];\n };\n [BeaconEvent.PAIR_SUCCESS]: ExtendedPostMessagePairingResponse | ExtendedP2PPairingResponse | ExtendedWalletConnectPairingResponse;\n [BeaconEvent.CHANNEL_CLOSED]: string;\n [BeaconEvent.INTERNAL_ERROR]: {\n text: string;\n buttons?: AlertButton[];\n };\n [BeaconEvent.UNKNOWN]: undefined;\n}\nexport type BeaconEventHandlerFunction = (data: T, eventCallback?: AlertButton[]) => void | Promise;\n/**\n * The default event handlers\n */\nexport declare const defaultEventCallbacks: {\n [key in BeaconEvent]: BeaconEventHandlerFunction;\n};\n/**\n * @internalapi\n *\n * Handles beacon events\n */\nexport declare class BeaconEventHandler {\n private readonly callbackMap;\n constructor(eventsToOverride?: {\n [key in BeaconEvent]?: {\n handler: BeaconEventHandlerFunction;\n };\n }, overrideAll?: boolean);\n /**\n * A method to subscribe to a specific beacon event and register a callback\n *\n * @param event The event being emitted\n * @param eventCallback The callback that will be invoked\n */\n on(event: K, eventCallback: BeaconEventHandlerFunction): Promise;\n /**\n * Emit a beacon event\n *\n * @param event The event being emitted\n * @param data The data to be emit\n */\n emit(event: K, data?: BeaconEventType[K], eventCallback?: AlertButton[]): Promise;\n /**\n * Override beacon event default callbacks. This can be used to disable default alert/toast behaviour\n *\n * @param eventsToOverride An object with the events to override\n */\n private overrideDefaults;\n /**\n * Set all event callbacks to a specific handler.\n */\n private setAllHandlers;\n}\nexport {};\n'},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-dapp/dist/esm/index.d.ts",dts:"export * from '@airgap/beacon-core';\nexport * from '@airgap/beacon-transport-matrix';\nexport * from '@airgap/beacon-transport-postmessage';\nexport * from '@airgap/beacon-types';\nexport * from '@airgap/beacon-utils';\nexport * from '@airgap/beacon-ui';\nimport { DAppClient } from './dapp-client/DAppClient';\nimport { DAppClientOptions } from './dapp-client/DAppClientOptions';\nimport { BeaconEvent, BeaconEventHandler, defaultEventCallbacks } from './events';\nimport { BlockExplorer } from './utils/block-explorer';\nimport { TzktBlockExplorer } from './utils/tzkt-blockexplorer';\nimport { getDAppClientInstance } from './utils/get-instance';\nexport { DAppClient, DAppClientOptions, getDAppClientInstance };\nexport { BeaconEvent, BeaconEventHandler, defaultEventCallbacks };\nexport { BlockExplorer, TzktBlockExplorer, TzktBlockExplorer as TezblockBlockExplorer };\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/communication-client/P2PCommunicationClient.d.ts",dts:"import { MatrixClientEvent, MatrixClientEventType, MatrixClientEventMessageContent } from '../matrix-client/models/MatrixClientEvent';\nimport { Storage, P2PPairingRequest, ExtendedP2PPairingResponse, P2PPairingResponse, NodeDistributions } from '@airgap/beacon-types';\nimport { CommunicationClient } from '@airgap/beacon-core';\nimport { ExposedPromise } from '@airgap/beacon-utils';\nimport { KeyPair } from '@stablelib/ed25519';\ninterface BeaconInfoResponse {\n region: string;\n known_servers: string[];\n timestamp: number;\n}\n/**\n * @internalapi\n */\nexport declare class P2PCommunicationClient extends CommunicationClient {\n private readonly name;\n readonly replicationCount: number;\n private readonly storage;\n private readonly iconUrl?;\n private readonly appUrl?;\n private client;\n private initialEvent;\n private initialListener;\n private selectedRegion?;\n private readonly ENABLED_RELAY_SERVERS;\n relayServer: ExposedPromise<{\n server: string;\n timestamp: number;\n localTimestamp: number;\n }> | undefined;\n private readonly activeListeners;\n private readonly ignoredRooms;\n private loginCounter;\n constructor(name: string, keyPair: KeyPair, replicationCount: number, storage: Storage, matrixNodes?: NodeDistributions, iconUrl?: string | undefined, appUrl?: string | undefined);\n getPairingRequestInfo(): Promise;\n getPairingResponseInfo(request: P2PPairingRequest): Promise;\n /**\n * To get the fastest region, we can't simply do one request, because sometimes,\n * DNS and SSL handshakes make \"faster\" connections slower. So we need to do 2 requests\n * and check which request was the fastest after 1s.\n */\n findBestRegionAndGetServer(): Promise<{\n server: string;\n timestamp: number;\n } | undefined>;\n getRelayServer(): Promise<{\n server: string;\n timestamp: number;\n }>;\n getBeaconInfo(server: string): Promise;\n tryJoinRooms(roomId: string, retry?: number): Promise;\n start(): Promise;\n stop(): Promise;\n reset(): Promise;\n listenForEncryptedMessage(senderPublicKey: string, messageCallback: (message: string) => void): Promise;\n unsubscribeFromEncryptedMessage(senderPublicKey: string): Promise;\n unsubscribeFromEncryptedMessages(): Promise;\n sendMessage(message: string, peer: P2PPairingRequest | ExtendedP2PPairingResponse): Promise;\n updatePeerRoom(sender: string, roomId: string): Promise;\n deleteRoomIdFromRooms(roomId: string): Promise;\n listenForChannelOpening(messageCallback: (pairingResponse: ExtendedP2PPairingResponse) => void): Promise;\n waitForJoin(roomId: string, retry?: number): Promise;\n sendPairingResponse(pairingRequest: P2PPairingRequest): Promise;\n isTextMessage(content: MatrixClientEventMessageContent): content is MatrixClientEventMessageContent;\n updateRelayServer(sender: string): Promise;\n isChannelOpenMessage(content: MatrixClientEventMessageContent): Promise;\n isSender(event: MatrixClientEvent, senderPublicKey: string): Promise;\n private getRelevantRoom;\n private getRelevantJoinedRoom;\n}\nexport {};\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/matrix-client/models/api/MatrixEventSend.d.ts",dts:"export interface MatrixEventSendRequest {\n content: any;\n}\nexport interface MatrixEventSendResponse {\n type?: 'event_send';\n event_id: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/matrix-client/models/api/MatrixLogin.d.ts",dts:"export interface MatrixLoginRequest {\n type: 'm.login.password';\n identifier: {\n type: 'm.id.user';\n user: string;\n };\n password: string;\n device_id?: string;\n}\nexport interface MatrixLoginResponse {\n type?: 'login';\n user_id: string;\n device_id: string;\n access_token: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/matrix-client/models/api/MatrixRequest.d.ts",dts:"import { MatrixLoginRequest, MatrixLoginResponse } from './MatrixLogin';\nimport { MatrixRoomCreateRequest, MatrixRoomCreateResponse } from './MatrixRoomCreate';\nimport { MatrixRoomInviteRequest, MatrixRoomInviteResponse } from './MatrixRoomInvite';\nimport { MatrixRoomJoinRequest, MatrixRoomJoinResponse } from './MatrixRoomJoin';\nimport { MatrixEventSendRequest, MatrixEventSendResponse } from './MatrixEventSend';\nimport { MatrixSyncResponse, MatrixSyncRequestParams } from './MatrixSync';\nexport type MatrixRequest = T extends MatrixLoginResponse ? MatrixLoginRequest : T extends MatrixRoomCreateResponse ? MatrixRoomCreateRequest : T extends MatrixRoomInviteResponse ? MatrixRoomInviteRequest : T extends MatrixRoomJoinResponse ? MatrixRoomJoinRequest : T extends MatrixEventSendResponse ? MatrixEventSendRequest : never;\nexport type MatrixRequestParams = T extends MatrixSyncResponse ? MatrixSyncRequestParams : never;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/matrix-client/models/api/MatrixRoomCreate.d.ts",dts:"export interface MatrixRoomCreateRequest {\n room_version?: '5';\n visibility?: 'public' | 'private';\n room_alias_name?: string;\n name?: string;\n topic?: string;\n invite?: string[];\n preset?: 'private_chat' | 'public_chat' | 'trusted_private_chat';\n is_direct?: boolean;\n}\nexport interface MatrixRoomCreateResponse {\n type?: 'room_create';\n room_id: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/matrix-client/models/api/MatrixRoomInvite.d.ts",dts:"export interface MatrixRoomInviteRequest {\n user_id: string;\n}\nexport interface MatrixRoomInviteResponse {\n type?: 'room_invite';\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/matrix-client/models/api/MatrixRoomJoin.d.ts",dts:"export interface MatrixRoomJoinRequest {\n}\nexport interface MatrixRoomJoinResponse {\n type?: 'room_join';\n room_id: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/matrix-client/models/api/MatrixSync.d.ts",dts:"import { MatrixStateEvent } from '../MatrixStateEvent';\nexport interface MatrixSyncJoinedRoom {\n state: {\n events: MatrixStateEvent[];\n };\n timeline: {\n events: MatrixStateEvent[];\n };\n}\nexport interface MatrixSyncInvitedRoom {\n invite_state: {\n events: MatrixStateEvent[];\n };\n}\nexport interface MatrixSyncLeftRoom {\n state: {\n events: MatrixStateEvent[];\n };\n timeline: {\n events: MatrixStateEvent[];\n };\n}\nexport interface MatrixSyncRooms {\n join?: {\n [key: string]: MatrixSyncJoinedRoom;\n };\n invite?: {\n [key: string]: MatrixSyncInvitedRoom;\n };\n leave?: {\n [key: string]: MatrixSyncLeftRoom;\n };\n}\nexport interface MatrixSyncRequestParams {\n timeout?: number;\n since?: string;\n}\nexport interface MatrixSyncResponse {\n type?: 'sync';\n next_batch: string;\n rooms?: MatrixSyncRooms;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/matrix-client/models/MatrixClientEvent.d.ts",dts:'import { MatrixMessage } from \'./MatrixMessage\';\nexport declare enum MatrixClientEventType {\n INVITE = "invite",\n MESSAGE = "message"\n}\nexport type MatrixClientEventContent = T extends MatrixClientEventType.INVITE ? MatrixClientEventInviteContent : T extends MatrixClientEventType.MESSAGE ? MatrixClientEventMessageContent : never;\nexport interface MatrixClientEventInviteContent {\n roomId: string;\n members: string[];\n}\nexport interface MatrixClientEventMessageContent {\n roomId: string;\n message: MatrixMessage;\n}\nexport interface MatrixClientEvent {\n type: T;\n content: MatrixClientEventContent;\n timestamp?: number;\n}\n'},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/matrix-client/models/MatrixMessage.d.ts",dts:"import { MatrixStateEvent } from './MatrixStateEvent';\nexport declare enum MatrixMessageType {\n TEXT = \"m.text\"\n}\nexport declare class MatrixMessage {\n readonly type: MatrixMessageType;\n readonly sender: string;\n readonly content: T;\n readonly timestamp: number;\n /**\n * Construct a message from a message event\n *\n * @param event\n */\n static from(event: MatrixStateEvent): MatrixMessage | undefined;\n private constructor();\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/matrix-client/models/MatrixRoom.d.ts",dts:"import { MatrixSyncRooms } from './api/MatrixSync';\nimport { MatrixMessage } from './MatrixMessage';\nexport declare enum MatrixRoomStatus {\n UNKNOWN = 0,\n JOINED = 1,\n INVITED = 2,\n LEFT = 3\n}\nexport declare class MatrixRoom {\n readonly id: string;\n readonly status: MatrixRoomStatus;\n readonly members: string[];\n messages: MatrixMessage[];\n /**\n * Reconstruct rooms from a sync response\n *\n * @param roomSync\n */\n static fromSync(roomSync?: MatrixSyncRooms): MatrixRoom[];\n /**\n * Reconstruct a room from an ID or object\n *\n * @param roomOrId\n * @param status\n */\n static from(roomOrId: string | MatrixRoom, status?: MatrixRoomStatus): MatrixRoom;\n /**\n * Merge new and old state and remove duplicates\n *\n * @param newState\n * @param previousState\n */\n static merge(newState: MatrixRoom, previousState?: MatrixRoom): MatrixRoom;\n /**\n * Create a room from a join\n *\n * @param id\n * @param joined\n */\n private static fromJoined;\n /**\n * Create a room from an invite\n *\n * @param id\n * @param invited\n */\n private static fromInvited;\n /**\n * Create a room from a leave\n *\n * @param id\n * @param left\n */\n private static fromLeft;\n /**\n * Extract members from an event\n *\n * @param events\n */\n private static getMembersFromEvents;\n /**\n * Extract messages from an event\n *\n * @param events\n */\n private static getMessagesFromEvents;\n /**\n * Get unique events and remove duplicates\n *\n * @param events\n */\n private static getUniqueEvents;\n private constructor();\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/matrix-client/models/MatrixStateEvent.d.ts",dts:"import { MatrixMessageType } from './MatrixMessage';\nexport interface MatrixStateEventMessageText extends MatrixStateEventMessage {\n type: 'm.room.message';\n content: {\n msgtype: MatrixMessageType.TEXT;\n body: string;\n };\n}\nexport interface MatrixStateEventMessageContent {\n msgtype: string;\n body: any;\n [key: string]: any;\n}\nexport interface MatrixStateEventMessage extends MatrixStateEvent {\n type: 'm.room.message';\n content: MatrixStateEventMessageContent;\n}\nexport interface MatrixStateEvent {\n type: string;\n sender: string;\n content: unknown;\n event_id?: string;\n origin_server_ts: number;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/matrix-client/services/MatrixEventService.d.ts",dts:"import { MatrixHttpClient } from '../MatrixHttpClient';\nimport { MatrixEventSendResponse } from '../models/api/MatrixEventSend';\nimport { MatrixSyncResponse } from '../models/api/MatrixSync';\nimport { MatrixStateEventMessageContent } from '../models/MatrixStateEvent';\ninterface MatrixScheduledEvent {\n accessToken: string;\n roomId: string;\n type: MatrixEventType;\n content: any;\n txnId: string;\n onSuccess(response: T): void;\n onError(error: unknown): void;\n}\ntype MatrixEventType = 'm.room.message';\nexport interface MatrixSyncOptions {\n syncToken?: string;\n pollingTimeout?: number;\n}\n/**\n * A service to help with matrix event management\n */\nexport declare class MatrixEventService {\n private readonly httpClient;\n private readonly cachedPromises;\n constructor(httpClient: MatrixHttpClient);\n /**\n * Get the latest state from the matrix node\n *\n * @param accessToken\n * @param options\n */\n sync(accessToken: string, options?: MatrixSyncOptions): Promise;\n /**\n * Send a message to a room\n *\n * @param accessToken\n * @param room\n * @param content\n * @param txnId\n */\n sendMessage(accessToken: string, roomId: string, content: MatrixStateEventMessageContent, txnId: string): Promise;\n /**\n * Schedules an event to be sent to the node\n *\n * @param event\n */\n scheduleEvent(event: MatrixScheduledEvent): void;\n /**\n * Send an event to the matrix node\n *\n * @param scheduledEvent\n */\n sendEvent(scheduledEvent: MatrixScheduledEvent): Promise;\n /**\n * Check the cache when interacting with the Matrix node, if there is an already ongoing call for the specified key, return its promise instead of duplicating the call.\n *\n * @param key\n * @param promiseProvider\n */\n private withCache;\n}\nexport {};\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/matrix-client/services/MatrixRoomService.d.ts",dts:"import { MatrixHttpClient } from '../MatrixHttpClient';\nimport { MatrixRoom } from '../models/MatrixRoom';\nimport { MatrixRoomCreateRequest, MatrixRoomCreateResponse } from '../models/api/MatrixRoomCreate';\nimport { MatrixRoomInviteResponse } from '../models/api/MatrixRoomInvite';\nimport { MatrixRoomJoinResponse } from '../models/api/MatrixRoomJoin';\n/**\n * A service to help with matrix room management\n */\nexport declare class MatrixRoomService {\n private readonly httpClient;\n constructor(httpClient: MatrixHttpClient);\n /**\n * Create a room\n *\n * @param accessToken\n * @param config\n */\n createRoom(accessToken: string, config?: MatrixRoomCreateRequest): Promise;\n /**\n * Invite a user to a room\n *\n * @param accessToken\n * @param user\n * @param room\n */\n inviteToRoom(accessToken: string, user: string, room: MatrixRoom): Promise;\n /**\n * Join a specific room\n *\n * @param accessToken\n * @param room\n */\n joinRoom(accessToken: string, room: MatrixRoom): Promise;\n /**\n * Get all joined rooms\n *\n * @param accessToken\n */\n getJoinedRooms(accessToken: string): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/matrix-client/services/MatrixUserService.d.ts",dts:"import { MatrixHttpClient } from '../MatrixHttpClient';\nimport { MatrixLoginResponse } from '../models/api/MatrixLogin';\nexport declare class MatrixUserService {\n private readonly httpClient;\n constructor(httpClient: MatrixHttpClient);\n /**\n * Log in to the matrix node with username and password\n *\n * @param user\n * @param password\n * @param deviceId\n */\n login(user: string, password: string, deviceId: string): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/matrix-client/utils/events.d.ts",dts:"import { MatrixStateEvent, MatrixStateEventMessageText } from '../models/MatrixStateEvent';\n/**\n * Check if an event is a create event\n *\n * @param event MatrixStateEvent\n */\nexport declare const isCreateEvent: (event: MatrixStateEvent) => boolean;\n/**\n * Check if an event is a join event\n *\n * @param event MatrixStateEvent\n */\nexport declare const isJoinEvent: (event: MatrixStateEvent) => boolean;\n/**\n * Check if an event is a message event\n *\n * @param event MatrixStateEvent\n */\nexport declare const isMessageEvent: (event: MatrixStateEvent) => boolean;\n/**\n * Check if an event is a text message event\n *\n * @param event MatrixStateEvent\n */\nexport declare const isTextMessageEvent: (event: MatrixStateEvent) => event is MatrixStateEventMessageText;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/matrix-client/EventEmitter.d.ts",dts:"type Listener = (...args: any[]) => void;\nexport declare class EventEmitter {\n private readonly events;\n on(event: string, listener: Listener): () => void;\n removeListener(event: string, listener?: Listener): void;\n removeAllListeners(): void;\n emit(event: string, ...args: any[]): void;\n once(event: string, listener: Listener): () => void;\n}\nexport {};\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/matrix-client/MatrixClient.d.ts",dts:"import { Storage } from '@airgap/beacon-types';\nimport { MatrixClientStore } from './MatrixClientStore';\nimport { MatrixHttpClient } from './MatrixHttpClient';\nimport { MatrixRoom } from './models/MatrixRoom';\nimport { MatrixRoomService } from './services/MatrixRoomService';\nimport { MatrixUserService } from './services/MatrixUserService';\nimport { MatrixEventService } from './services/MatrixEventService';\nimport { MatrixClientEventEmitter } from './MatrixClientEventEmitter';\nimport { MatrixClientEventType, MatrixClientEvent } from './models/MatrixClientEvent';\ninterface MatrixClientOptions {\n baseUrl: string;\n storage: Storage;\n}\ninterface MatrixLoginConfig {\n id: string;\n password: string;\n deviceId: string;\n}\n/**\n * The matrix client used to connect to the matrix network\n */\nexport declare class MatrixClient {\n private readonly store;\n private readonly eventEmitter;\n private readonly userService;\n private readonly roomService;\n private readonly eventService;\n private readonly httpClient;\n private isActive;\n private _isReady;\n constructor(store: MatrixClientStore, eventEmitter: MatrixClientEventEmitter, userService: MatrixUserService, roomService: MatrixRoomService, eventService: MatrixEventService, httpClient: MatrixHttpClient);\n /**\n * Create a matrix client based on the options provided\n *\n * @param config\n */\n static create(config: MatrixClientOptions): MatrixClient;\n /**\n * Return all the rooms we are currently part of\n */\n get joinedRooms(): Promise;\n /**\n * Return all the rooms to which we have received invitations\n */\n get invitedRooms(): Promise;\n /**\n * Return all the rooms that we left\n */\n get leftRooms(): Promise;\n /**\n * Initiate the connection to the matrix node and log in\n *\n * @param user\n */\n start(user: MatrixLoginConfig): Promise;\n isConnected(): Promise;\n /**\n * Stop all running requests\n */\n stop(): Promise;\n /**\n * Subscribe to new matrix events\n *\n * @param event\n * @param listener\n */\n subscribe(event: T, listener: (event: MatrixClientEvent) => void): void;\n /**\n * Unsubscribe from matrix events\n *\n * @param event\n * @param listener\n */\n unsubscribe(event: MatrixClientEventType, listener: (event: MatrixClientEvent) => void): void;\n /**\n * Unsubscribe from all matrix events of this type\n *\n * @param event\n * @param listener\n */\n unsubscribeAll(event: MatrixClientEventType): void;\n getRoomById(id: string): Promise;\n /**\n * Create a private room with the supplied members\n *\n * @param members Members that will be in the room\n */\n createTrustedPrivateRoom(...members: string[]): Promise;\n /**\n * Invite user to rooms\n *\n * @param user The user to be invited\n * @param roomsOrIds The rooms the user will be invited to\n */\n inviteToRooms(user: string, ...roomsOrIds: string[] | MatrixRoom[]): Promise;\n /**\n * Join rooms\n *\n * @param roomsOrIds\n */\n joinRooms(...roomsOrIds: string[] | MatrixRoom[]): Promise;\n /**\n * Send a text message\n *\n * @param roomOrId\n * @param message\n */\n sendTextMessage(roomId: string, message: string): Promise;\n /**\n * Poll the server to get the latest data and get notified of changes\n *\n * @param interval\n * @param onSyncSuccess\n * @param onSyncError\n */\n private poll;\n /**\n * Get state from server\n */\n private sync;\n /**\n * A helper method that makes sure an access token is provided\n *\n * @param name\n * @param action\n */\n private requiresAuthorization;\n /**\n * Create a transaction ID\n */\n private createTxnId;\n}\nexport {};\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/matrix-client/MatrixClientEventEmitter.d.ts",dts:"import { EventEmitter } from './EventEmitter';\nimport { MatrixStateStore, MatrixStateUpdate } from './MatrixClientStore';\nexport declare class MatrixClientEventEmitter extends EventEmitter {\n private readonly eventEmitProviders;\n /**\n * This method is called every time the state is changed\n *\n * @param _oldState\n * @param _newState\n * @param stateChange\n */\n onStateChanged(_oldState: MatrixStateStore, _newState: MatrixStateStore, stateChange: Partial): void;\n /**\n * Emit the message if we have listeners registered for that type\n *\n * @param eventType\n * @param object\n */\n private emitIfEvent;\n /**\n * Emit a client event\n *\n * @param eventType\n * @param content\n */\n private emitClientEvent;\n /**\n * Check if event is an invite\n *\n * @param stateChange\n */\n private isInvite;\n /**\n * Emit an invite\n *\n * @param eventType\n * @param stateChange\n */\n private emitInvite;\n /**\n * Check if event is a message\n *\n * @param stateChange\n */\n private isMessage;\n /**\n * Emit an event to all rooms\n *\n * @param eventType\n * @param stateChange\n */\n private emitMessage;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/matrix-client/MatrixClientStore.d.ts",dts:"import { MatrixRoom } from './models/MatrixRoom';\nimport { Storage } from '@airgap/beacon-types';\ntype OnStateChangedListener = (oldState: MatrixStateStore, newState: MatrixStateStore, stateChange: Partial) => void;\nexport interface MatrixState {\n isRunning: boolean;\n userId: string | undefined;\n deviceId: string | undefined;\n txnNo: number;\n accessToken: string | undefined;\n syncToken: string | undefined;\n pollingTimeout: number | undefined;\n pollingRetries: number;\n rooms: MatrixRoom[] | Record;\n}\nexport interface MatrixStateStore extends MatrixState {\n rooms: Record;\n}\nexport interface MatrixStateUpdate extends MatrixState {\n rooms: MatrixRoom[];\n}\n/**\n * The class managing the local state of matrix\n */\nexport declare class MatrixClientStore {\n private readonly storage;\n /**\n * The state of the matrix client\n */\n private state;\n /**\n * Listeners that will be called when the state changes\n */\n private readonly onStateChangedListeners;\n /**\n * A promise that resolves once the client is ready\n */\n private waitReadyPromise;\n constructor(storage: Storage);\n /**\n * Get an item from the state\n *\n * @param key\n */\n get(key: T): MatrixStateStore[T];\n /**\n * Get the room from an ID or room instance\n *\n * @param roomOrId\n */\n getRoom(roomOrId: string | MatrixRoom): MatrixRoom;\n /**\n * Update the state with a partial state\n *\n * @param stateUpdate\n */\n update(stateUpdate: Partial): Promise;\n /**\n * Register listeners that are called once the state has changed\n *\n * @param listener\n * @param subscribed\n */\n onStateChanged(listener: OnStateChangedListener, ...subscribed: (keyof MatrixState)[]): void;\n /**\n * A promise that resolves once the client is ready\n */\n private waitReady;\n /**\n * Read state from storage\n */\n private initFromStorage;\n /**\n * Prepare data before persisting it in storage\n *\n * @param toStore\n */\n private prepareData;\n /**\n * Persist state in storage\n *\n * @param stateUpdate\n */\n private updateStorage;\n /**\n * Set the state\n *\n * @param partialState\n */\n private setState;\n /**\n * Merge room records and eliminate duplicates\n *\n * @param oldRooms\n * @param _newRooms\n */\n private mergeRooms;\n /**\n * Notify listeners of state changes\n *\n * @param oldState\n * @param newState\n * @param stateChange\n */\n private notifyListeners;\n}\nexport {};\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/matrix-client/MatrixHttpClient.d.ts",dts:"import { MatrixRequest, MatrixRequestParams } from './models/api/MatrixRequest';\ninterface HttpOptions {\n accessToken?: string;\n}\n/**\n * Handling the HTTP connection to the matrix synapse node\n */\nexport declare class MatrixHttpClient {\n private readonly baseUrl;\n private readonly cancelTokenSource;\n constructor(baseUrl: string);\n /**\n * Get data from the synapse node\n *\n * @param endpoint\n * @param options\n */\n get(endpoint: string, params?: MatrixRequestParams, options?: HttpOptions): Promise;\n /**\n * Post data to the synapse node\n *\n * @param endpoint\n * @param body\n * @param options\n * @param params\n */\n post(endpoint: string, body: MatrixRequest, options?: HttpOptions, params?: MatrixRequestParams): Promise;\n /**\n * Put data to the synapse node\n *\n * @param endpoint\n * @param body\n * @param options\n * @param params\n */\n put(endpoint: string, body: MatrixRequest, options?: HttpOptions, params?: MatrixRequestParams): Promise;\n cancelAllRequests(): Promise;\n /**\n * Send a request to the synapse node\n *\n * @param method\n * @param endpoint\n * @param config\n * @param requestParams\n * @param data\n */\n private send;\n /**\n * Get the headers based on the options object\n *\n * @param options\n */\n private getHeaders;\n /**\n * Get parameters\n *\n * @param _params\n */\n private getParams;\n /**\n * Construct API URL\n */\n private apiUrl;\n}\nexport {};\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/P2PTransport.d.ts",dts:"import { Transport } from '@airgap/beacon-core';\nimport { ExtendedP2PPairingResponse, Storage, StorageKey, TransportType, P2PPairingRequest, NodeDistributions } from '@airgap/beacon-types';\nimport { P2PCommunicationClient } from '@airgap/beacon-transport-matrix';\nimport { KeyPair } from '@stablelib/ed25519';\n/**\n * @internalapi\n *\n *\n */\nexport declare class P2PTransport extends Transport {\n readonly type: TransportType;\n constructor(name: string, keyPair: KeyPair, storage: Storage, matrixNodes: NodeDistributions, storageKey: K, iconUrl?: string, appUrl?: string);\n static isAvailable(): Promise;\n connect(): Promise;\n disconnect(): Promise;\n startOpenChannelListener(): Promise;\n getPairingRequestInfo(): Promise;\n listen(publicKey: string): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/index.d.ts",dts:"export { P2PCommunicationClient } from './communication-client/P2PCommunicationClient';\nexport { P2PTransport } from './P2PTransport';\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/dist/esm/communication-client/P2PCommunicationClient.d.ts",dts:"import { MatrixClientEvent, MatrixClientEventType, MatrixClientEventMessageContent } from '../matrix-client/models/MatrixClientEvent';\nimport { Storage, P2PPairingRequest, ExtendedP2PPairingResponse, P2PPairingResponse, NodeDistributions } from '@airgap/beacon-types';\nimport { CommunicationClient } from '@airgap/beacon-core';\nimport { ExposedPromise } from '@airgap/beacon-utils';\nimport { KeyPair } from '@stablelib/ed25519';\ninterface BeaconInfoResponse {\n region: string;\n known_servers: string[];\n timestamp: number;\n}\n/**\n * @internalapi\n */\nexport declare class P2PCommunicationClient extends CommunicationClient {\n private readonly name;\n readonly replicationCount: number;\n private readonly storage;\n private readonly iconUrl?;\n private readonly appUrl?;\n private client;\n private initialEvent;\n private initialListener;\n private selectedRegion?;\n private readonly ENABLED_RELAY_SERVERS;\n relayServer: ExposedPromise<{\n server: string;\n timestamp: number;\n localTimestamp: number;\n }> | undefined;\n private readonly activeListeners;\n private readonly ignoredRooms;\n private loginCounter;\n constructor(name: string, keyPair: KeyPair, replicationCount: number, storage: Storage, matrixNodes?: NodeDistributions, iconUrl?: string | undefined, appUrl?: string | undefined);\n getPairingRequestInfo(): Promise;\n getPairingResponseInfo(request: P2PPairingRequest): Promise;\n /**\n * To get the fastest region, we can't simply do one request, because sometimes,\n * DNS and SSL handshakes make \"faster\" connections slower. So we need to do 2 requests\n * and check which request was the fastest after 1s.\n */\n findBestRegionAndGetServer(): Promise<{\n server: string;\n timestamp: number;\n } | undefined>;\n getRelayServer(): Promise<{\n server: string;\n timestamp: number;\n }>;\n getBeaconInfo(server: string): Promise;\n tryJoinRooms(roomId: string, retry?: number): Promise;\n start(): Promise;\n stop(): Promise;\n reset(): Promise;\n listenForEncryptedMessage(senderPublicKey: string, messageCallback: (message: string) => void): Promise;\n unsubscribeFromEncryptedMessage(senderPublicKey: string): Promise;\n unsubscribeFromEncryptedMessages(): Promise;\n sendMessage(message: string, peer: P2PPairingRequest | ExtendedP2PPairingResponse): Promise;\n updatePeerRoom(sender: string, roomId: string): Promise;\n deleteRoomIdFromRooms(roomId: string): Promise;\n listenForChannelOpening(messageCallback: (pairingResponse: ExtendedP2PPairingResponse) => void): Promise;\n waitForJoin(roomId: string, retry?: number): Promise;\n sendPairingResponse(pairingRequest: P2PPairingRequest): Promise;\n isTextMessage(content: MatrixClientEventMessageContent): content is MatrixClientEventMessageContent;\n updateRelayServer(sender: string): Promise;\n isChannelOpenMessage(content: MatrixClientEventMessageContent): Promise;\n isSender(event: MatrixClientEvent, senderPublicKey: string): Promise;\n private getRelevantRoom;\n private getRelevantJoinedRoom;\n}\nexport {};\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/dist/esm/matrix-client/models/api/MatrixEventSend.d.ts",dts:"export interface MatrixEventSendRequest {\n content: any;\n}\nexport interface MatrixEventSendResponse {\n type?: 'event_send';\n event_id: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/dist/esm/matrix-client/models/api/MatrixLogin.d.ts",dts:"export interface MatrixLoginRequest {\n type: 'm.login.password';\n identifier: {\n type: 'm.id.user';\n user: string;\n };\n password: string;\n device_id?: string;\n}\nexport interface MatrixLoginResponse {\n type?: 'login';\n user_id: string;\n device_id: string;\n access_token: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/dist/esm/matrix-client/models/api/MatrixRequest.d.ts",dts:"import { MatrixLoginRequest, MatrixLoginResponse } from './MatrixLogin';\nimport { MatrixRoomCreateRequest, MatrixRoomCreateResponse } from './MatrixRoomCreate';\nimport { MatrixRoomInviteRequest, MatrixRoomInviteResponse } from './MatrixRoomInvite';\nimport { MatrixRoomJoinRequest, MatrixRoomJoinResponse } from './MatrixRoomJoin';\nimport { MatrixEventSendRequest, MatrixEventSendResponse } from './MatrixEventSend';\nimport { MatrixSyncResponse, MatrixSyncRequestParams } from './MatrixSync';\nexport type MatrixRequest = T extends MatrixLoginResponse ? MatrixLoginRequest : T extends MatrixRoomCreateResponse ? MatrixRoomCreateRequest : T extends MatrixRoomInviteResponse ? MatrixRoomInviteRequest : T extends MatrixRoomJoinResponse ? MatrixRoomJoinRequest : T extends MatrixEventSendResponse ? MatrixEventSendRequest : never;\nexport type MatrixRequestParams = T extends MatrixSyncResponse ? MatrixSyncRequestParams : never;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/dist/esm/matrix-client/models/api/MatrixRoomCreate.d.ts",dts:"export interface MatrixRoomCreateRequest {\n room_version?: '5';\n visibility?: 'public' | 'private';\n room_alias_name?: string;\n name?: string;\n topic?: string;\n invite?: string[];\n preset?: 'private_chat' | 'public_chat' | 'trusted_private_chat';\n is_direct?: boolean;\n}\nexport interface MatrixRoomCreateResponse {\n type?: 'room_create';\n room_id: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/dist/esm/matrix-client/models/api/MatrixRoomInvite.d.ts",dts:"export interface MatrixRoomInviteRequest {\n user_id: string;\n}\nexport interface MatrixRoomInviteResponse {\n type?: 'room_invite';\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/dist/esm/matrix-client/models/api/MatrixRoomJoin.d.ts",dts:"export interface MatrixRoomJoinRequest {\n}\nexport interface MatrixRoomJoinResponse {\n type?: 'room_join';\n room_id: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/dist/esm/matrix-client/models/api/MatrixSync.d.ts",dts:"import { MatrixStateEvent } from '../MatrixStateEvent';\nexport interface MatrixSyncJoinedRoom {\n state: {\n events: MatrixStateEvent[];\n };\n timeline: {\n events: MatrixStateEvent[];\n };\n}\nexport interface MatrixSyncInvitedRoom {\n invite_state: {\n events: MatrixStateEvent[];\n };\n}\nexport interface MatrixSyncLeftRoom {\n state: {\n events: MatrixStateEvent[];\n };\n timeline: {\n events: MatrixStateEvent[];\n };\n}\nexport interface MatrixSyncRooms {\n join?: {\n [key: string]: MatrixSyncJoinedRoom;\n };\n invite?: {\n [key: string]: MatrixSyncInvitedRoom;\n };\n leave?: {\n [key: string]: MatrixSyncLeftRoom;\n };\n}\nexport interface MatrixSyncRequestParams {\n timeout?: number;\n since?: string;\n}\nexport interface MatrixSyncResponse {\n type?: 'sync';\n next_batch: string;\n rooms?: MatrixSyncRooms;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/dist/esm/matrix-client/models/MatrixClientEvent.d.ts",dts:'import { MatrixMessage } from \'./MatrixMessage\';\nexport declare enum MatrixClientEventType {\n INVITE = "invite",\n MESSAGE = "message"\n}\nexport type MatrixClientEventContent = T extends MatrixClientEventType.INVITE ? MatrixClientEventInviteContent : T extends MatrixClientEventType.MESSAGE ? MatrixClientEventMessageContent : never;\nexport interface MatrixClientEventInviteContent {\n roomId: string;\n members: string[];\n}\nexport interface MatrixClientEventMessageContent {\n roomId: string;\n message: MatrixMessage;\n}\nexport interface MatrixClientEvent {\n type: T;\n content: MatrixClientEventContent;\n timestamp?: number;\n}\n'},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/dist/esm/matrix-client/models/MatrixMessage.d.ts",dts:"import { MatrixStateEvent } from './MatrixStateEvent';\nexport declare enum MatrixMessageType {\n TEXT = \"m.text\"\n}\nexport declare class MatrixMessage {\n readonly type: MatrixMessageType;\n readonly sender: string;\n readonly content: T;\n readonly timestamp: number;\n /**\n * Construct a message from a message event\n *\n * @param event\n */\n static from(event: MatrixStateEvent): MatrixMessage | undefined;\n private constructor();\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/dist/esm/matrix-client/models/MatrixRoom.d.ts",dts:"import { MatrixSyncRooms } from './api/MatrixSync';\nimport { MatrixMessage } from './MatrixMessage';\nexport declare enum MatrixRoomStatus {\n UNKNOWN = 0,\n JOINED = 1,\n INVITED = 2,\n LEFT = 3\n}\nexport declare class MatrixRoom {\n readonly id: string;\n readonly status: MatrixRoomStatus;\n readonly members: string[];\n messages: MatrixMessage[];\n /**\n * Reconstruct rooms from a sync response\n *\n * @param roomSync\n */\n static fromSync(roomSync?: MatrixSyncRooms): MatrixRoom[];\n /**\n * Reconstruct a room from an ID or object\n *\n * @param roomOrId\n * @param status\n */\n static from(roomOrId: string | MatrixRoom, status?: MatrixRoomStatus): MatrixRoom;\n /**\n * Merge new and old state and remove duplicates\n *\n * @param newState\n * @param previousState\n */\n static merge(newState: MatrixRoom, previousState?: MatrixRoom): MatrixRoom;\n /**\n * Create a room from a join\n *\n * @param id\n * @param joined\n */\n private static fromJoined;\n /**\n * Create a room from an invite\n *\n * @param id\n * @param invited\n */\n private static fromInvited;\n /**\n * Create a room from a leave\n *\n * @param id\n * @param left\n */\n private static fromLeft;\n /**\n * Extract members from an event\n *\n * @param events\n */\n private static getMembersFromEvents;\n /**\n * Extract messages from an event\n *\n * @param events\n */\n private static getMessagesFromEvents;\n /**\n * Get unique events and remove duplicates\n *\n * @param events\n */\n private static getUniqueEvents;\n private constructor();\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/dist/esm/matrix-client/models/MatrixStateEvent.d.ts",dts:"import { MatrixMessageType } from './MatrixMessage';\nexport interface MatrixStateEventMessageText extends MatrixStateEventMessage {\n type: 'm.room.message';\n content: {\n msgtype: MatrixMessageType.TEXT;\n body: string;\n };\n}\nexport interface MatrixStateEventMessageContent {\n msgtype: string;\n body: any;\n [key: string]: any;\n}\nexport interface MatrixStateEventMessage extends MatrixStateEvent {\n type: 'm.room.message';\n content: MatrixStateEventMessageContent;\n}\nexport interface MatrixStateEvent {\n type: string;\n sender: string;\n content: unknown;\n event_id?: string;\n origin_server_ts: number;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/dist/esm/matrix-client/services/MatrixEventService.d.ts",dts:"import { MatrixHttpClient } from '../MatrixHttpClient';\nimport { MatrixEventSendResponse } from '../models/api/MatrixEventSend';\nimport { MatrixSyncResponse } from '../models/api/MatrixSync';\nimport { MatrixStateEventMessageContent } from '../models/MatrixStateEvent';\ninterface MatrixScheduledEvent {\n accessToken: string;\n roomId: string;\n type: MatrixEventType;\n content: any;\n txnId: string;\n onSuccess(response: T): void;\n onError(error: unknown): void;\n}\ntype MatrixEventType = 'm.room.message';\nexport interface MatrixSyncOptions {\n syncToken?: string;\n pollingTimeout?: number;\n}\n/**\n * A service to help with matrix event management\n */\nexport declare class MatrixEventService {\n private readonly httpClient;\n private readonly cachedPromises;\n constructor(httpClient: MatrixHttpClient);\n /**\n * Get the latest state from the matrix node\n *\n * @param accessToken\n * @param options\n */\n sync(accessToken: string, options?: MatrixSyncOptions): Promise;\n /**\n * Send a message to a room\n *\n * @param accessToken\n * @param room\n * @param content\n * @param txnId\n */\n sendMessage(accessToken: string, roomId: string, content: MatrixStateEventMessageContent, txnId: string): Promise;\n /**\n * Schedules an event to be sent to the node\n *\n * @param event\n */\n scheduleEvent(event: MatrixScheduledEvent): void;\n /**\n * Send an event to the matrix node\n *\n * @param scheduledEvent\n */\n sendEvent(scheduledEvent: MatrixScheduledEvent): Promise;\n /**\n * Check the cache when interacting with the Matrix node, if there is an already ongoing call for the specified key, return its promise instead of duplicating the call.\n *\n * @param key\n * @param promiseProvider\n */\n private withCache;\n}\nexport {};\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/dist/esm/matrix-client/services/MatrixRoomService.d.ts",dts:"import { MatrixHttpClient } from '../MatrixHttpClient';\nimport { MatrixRoom } from '../models/MatrixRoom';\nimport { MatrixRoomCreateRequest, MatrixRoomCreateResponse } from '../models/api/MatrixRoomCreate';\nimport { MatrixRoomInviteResponse } from '../models/api/MatrixRoomInvite';\nimport { MatrixRoomJoinResponse } from '../models/api/MatrixRoomJoin';\n/**\n * A service to help with matrix room management\n */\nexport declare class MatrixRoomService {\n private readonly httpClient;\n constructor(httpClient: MatrixHttpClient);\n /**\n * Create a room\n *\n * @param accessToken\n * @param config\n */\n createRoom(accessToken: string, config?: MatrixRoomCreateRequest): Promise;\n /**\n * Invite a user to a room\n *\n * @param accessToken\n * @param user\n * @param room\n */\n inviteToRoom(accessToken: string, user: string, room: MatrixRoom): Promise;\n /**\n * Join a specific room\n *\n * @param accessToken\n * @param room\n */\n joinRoom(accessToken: string, room: MatrixRoom): Promise;\n /**\n * Get all joined rooms\n *\n * @param accessToken\n */\n getJoinedRooms(accessToken: string): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/dist/esm/matrix-client/services/MatrixUserService.d.ts",dts:"import { MatrixHttpClient } from '../MatrixHttpClient';\nimport { MatrixLoginResponse } from '../models/api/MatrixLogin';\nexport declare class MatrixUserService {\n private readonly httpClient;\n constructor(httpClient: MatrixHttpClient);\n /**\n * Log in to the matrix node with username and password\n *\n * @param user\n * @param password\n * @param deviceId\n */\n login(user: string, password: string, deviceId: string): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/dist/esm/matrix-client/utils/events.d.ts",dts:"import { MatrixStateEvent, MatrixStateEventMessageText } from '../models/MatrixStateEvent';\n/**\n * Check if an event is a create event\n *\n * @param event MatrixStateEvent\n */\nexport declare const isCreateEvent: (event: MatrixStateEvent) => boolean;\n/**\n * Check if an event is a join event\n *\n * @param event MatrixStateEvent\n */\nexport declare const isJoinEvent: (event: MatrixStateEvent) => boolean;\n/**\n * Check if an event is a message event\n *\n * @param event MatrixStateEvent\n */\nexport declare const isMessageEvent: (event: MatrixStateEvent) => boolean;\n/**\n * Check if an event is a text message event\n *\n * @param event MatrixStateEvent\n */\nexport declare const isTextMessageEvent: (event: MatrixStateEvent) => event is MatrixStateEventMessageText;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/dist/esm/matrix-client/EventEmitter.d.ts",dts:"type Listener = (...args: any[]) => void;\nexport declare class EventEmitter {\n private readonly events;\n on(event: string, listener: Listener): () => void;\n removeListener(event: string, listener?: Listener): void;\n removeAllListeners(): void;\n emit(event: string, ...args: any[]): void;\n once(event: string, listener: Listener): () => void;\n}\nexport {};\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/dist/esm/matrix-client/MatrixClient.d.ts",dts:"import { Storage } from '@airgap/beacon-types';\nimport { MatrixClientStore } from './MatrixClientStore';\nimport { MatrixHttpClient } from './MatrixHttpClient';\nimport { MatrixRoom } from './models/MatrixRoom';\nimport { MatrixRoomService } from './services/MatrixRoomService';\nimport { MatrixUserService } from './services/MatrixUserService';\nimport { MatrixEventService } from './services/MatrixEventService';\nimport { MatrixClientEventEmitter } from './MatrixClientEventEmitter';\nimport { MatrixClientEventType, MatrixClientEvent } from './models/MatrixClientEvent';\ninterface MatrixClientOptions {\n baseUrl: string;\n storage: Storage;\n}\ninterface MatrixLoginConfig {\n id: string;\n password: string;\n deviceId: string;\n}\n/**\n * The matrix client used to connect to the matrix network\n */\nexport declare class MatrixClient {\n private readonly store;\n private readonly eventEmitter;\n private readonly userService;\n private readonly roomService;\n private readonly eventService;\n private readonly httpClient;\n private isActive;\n private _isReady;\n constructor(store: MatrixClientStore, eventEmitter: MatrixClientEventEmitter, userService: MatrixUserService, roomService: MatrixRoomService, eventService: MatrixEventService, httpClient: MatrixHttpClient);\n /**\n * Create a matrix client based on the options provided\n *\n * @param config\n */\n static create(config: MatrixClientOptions): MatrixClient;\n /**\n * Return all the rooms we are currently part of\n */\n get joinedRooms(): Promise;\n /**\n * Return all the rooms to which we have received invitations\n */\n get invitedRooms(): Promise;\n /**\n * Return all the rooms that we left\n */\n get leftRooms(): Promise;\n /**\n * Initiate the connection to the matrix node and log in\n *\n * @param user\n */\n start(user: MatrixLoginConfig): Promise;\n isConnected(): Promise;\n /**\n * Stop all running requests\n */\n stop(): Promise;\n /**\n * Subscribe to new matrix events\n *\n * @param event\n * @param listener\n */\n subscribe(event: T, listener: (event: MatrixClientEvent) => void): void;\n /**\n * Unsubscribe from matrix events\n *\n * @param event\n * @param listener\n */\n unsubscribe(event: MatrixClientEventType, listener: (event: MatrixClientEvent) => void): void;\n /**\n * Unsubscribe from all matrix events of this type\n *\n * @param event\n * @param listener\n */\n unsubscribeAll(event: MatrixClientEventType): void;\n getRoomById(id: string): Promise;\n /**\n * Create a private room with the supplied members\n *\n * @param members Members that will be in the room\n */\n createTrustedPrivateRoom(...members: string[]): Promise;\n /**\n * Invite user to rooms\n *\n * @param user The user to be invited\n * @param roomsOrIds The rooms the user will be invited to\n */\n inviteToRooms(user: string, ...roomsOrIds: string[] | MatrixRoom[]): Promise;\n /**\n * Join rooms\n *\n * @param roomsOrIds\n */\n joinRooms(...roomsOrIds: string[] | MatrixRoom[]): Promise;\n /**\n * Send a text message\n *\n * @param roomOrId\n * @param message\n */\n sendTextMessage(roomId: string, message: string): Promise;\n /**\n * Poll the server to get the latest data and get notified of changes\n *\n * @param interval\n * @param onSyncSuccess\n * @param onSyncError\n */\n private poll;\n /**\n * Get state from server\n */\n private sync;\n /**\n * A helper method that makes sure an access token is provided\n *\n * @param name\n * @param action\n */\n private requiresAuthorization;\n /**\n * Create a transaction ID\n */\n private createTxnId;\n}\nexport {};\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/dist/esm/matrix-client/MatrixClientEventEmitter.d.ts",dts:"import { EventEmitter } from './EventEmitter';\nimport { MatrixStateStore, MatrixStateUpdate } from './MatrixClientStore';\nexport declare class MatrixClientEventEmitter extends EventEmitter {\n private readonly eventEmitProviders;\n /**\n * This method is called every time the state is changed\n *\n * @param _oldState\n * @param _newState\n * @param stateChange\n */\n onStateChanged(_oldState: MatrixStateStore, _newState: MatrixStateStore, stateChange: Partial): void;\n /**\n * Emit the message if we have listeners registered for that type\n *\n * @param eventType\n * @param object\n */\n private emitIfEvent;\n /**\n * Emit a client event\n *\n * @param eventType\n * @param content\n */\n private emitClientEvent;\n /**\n * Check if event is an invite\n *\n * @param stateChange\n */\n private isInvite;\n /**\n * Emit an invite\n *\n * @param eventType\n * @param stateChange\n */\n private emitInvite;\n /**\n * Check if event is a message\n *\n * @param stateChange\n */\n private isMessage;\n /**\n * Emit an event to all rooms\n *\n * @param eventType\n * @param stateChange\n */\n private emitMessage;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/dist/esm/matrix-client/MatrixClientStore.d.ts",dts:"import { MatrixRoom } from './models/MatrixRoom';\nimport { Storage } from '@airgap/beacon-types';\ntype OnStateChangedListener = (oldState: MatrixStateStore, newState: MatrixStateStore, stateChange: Partial) => void;\nexport interface MatrixState {\n isRunning: boolean;\n userId: string | undefined;\n deviceId: string | undefined;\n txnNo: number;\n accessToken: string | undefined;\n syncToken: string | undefined;\n pollingTimeout: number | undefined;\n pollingRetries: number;\n rooms: MatrixRoom[] | Record;\n}\nexport interface MatrixStateStore extends MatrixState {\n rooms: Record;\n}\nexport interface MatrixStateUpdate extends MatrixState {\n rooms: MatrixRoom[];\n}\n/**\n * The class managing the local state of matrix\n */\nexport declare class MatrixClientStore {\n private readonly storage;\n /**\n * The state of the matrix client\n */\n private state;\n /**\n * Listeners that will be called when the state changes\n */\n private readonly onStateChangedListeners;\n /**\n * A promise that resolves once the client is ready\n */\n private waitReadyPromise;\n constructor(storage: Storage);\n /**\n * Get an item from the state\n *\n * @param key\n */\n get(key: T): MatrixStateStore[T];\n /**\n * Get the room from an ID or room instance\n *\n * @param roomOrId\n */\n getRoom(roomOrId: string | MatrixRoom): MatrixRoom;\n /**\n * Update the state with a partial state\n *\n * @param stateUpdate\n */\n update(stateUpdate: Partial): Promise;\n /**\n * Register listeners that are called once the state has changed\n *\n * @param listener\n * @param subscribed\n */\n onStateChanged(listener: OnStateChangedListener, ...subscribed: (keyof MatrixState)[]): void;\n /**\n * A promise that resolves once the client is ready\n */\n private waitReady;\n /**\n * Read state from storage\n */\n private initFromStorage;\n /**\n * Prepare data before persisting it in storage\n *\n * @param toStore\n */\n private prepareData;\n /**\n * Persist state in storage\n *\n * @param stateUpdate\n */\n private updateStorage;\n /**\n * Set the state\n *\n * @param partialState\n */\n private setState;\n /**\n * Merge room records and eliminate duplicates\n *\n * @param oldRooms\n * @param _newRooms\n */\n private mergeRooms;\n /**\n * Notify listeners of state changes\n *\n * @param oldState\n * @param newState\n * @param stateChange\n */\n private notifyListeners;\n}\nexport {};\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/dist/esm/matrix-client/MatrixHttpClient.d.ts",dts:"import { MatrixRequest, MatrixRequestParams } from './models/api/MatrixRequest';\ninterface HttpOptions {\n accessToken?: string;\n}\n/**\n * Handling the HTTP connection to the matrix synapse node\n */\nexport declare class MatrixHttpClient {\n private readonly baseUrl;\n private readonly cancelTokenSource;\n constructor(baseUrl: string);\n /**\n * Get data from the synapse node\n *\n * @param endpoint\n * @param options\n */\n get(endpoint: string, params?: MatrixRequestParams, options?: HttpOptions): Promise;\n /**\n * Post data to the synapse node\n *\n * @param endpoint\n * @param body\n * @param options\n * @param params\n */\n post(endpoint: string, body: MatrixRequest, options?: HttpOptions, params?: MatrixRequestParams): Promise;\n /**\n * Put data to the synapse node\n *\n * @param endpoint\n * @param body\n * @param options\n * @param params\n */\n put(endpoint: string, body: MatrixRequest, options?: HttpOptions, params?: MatrixRequestParams): Promise;\n cancelAllRequests(): Promise;\n /**\n * Send a request to the synapse node\n *\n * @param method\n * @param endpoint\n * @param config\n * @param requestParams\n * @param data\n */\n private send;\n /**\n * Get the headers based on the options object\n *\n * @param options\n */\n private getHeaders;\n /**\n * Get parameters\n *\n * @param _params\n */\n private getParams;\n /**\n * Construct API URL\n */\n private apiUrl;\n}\nexport {};\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/dist/esm/P2PTransport.d.ts",dts:"import { Transport } from '@airgap/beacon-core';\nimport { ExtendedP2PPairingResponse, Storage, StorageKey, TransportType, P2PPairingRequest, NodeDistributions } from '@airgap/beacon-types';\nimport { P2PCommunicationClient } from '@airgap/beacon-transport-matrix';\nimport { KeyPair } from '@stablelib/ed25519';\n/**\n * @internalapi\n *\n *\n */\nexport declare class P2PTransport extends Transport {\n readonly type: TransportType;\n constructor(name: string, keyPair: KeyPair, storage: Storage, matrixNodes: NodeDistributions, storageKey: K, iconUrl?: string, appUrl?: string);\n static isAvailable(): Promise;\n connect(): Promise;\n disconnect(): Promise;\n startOpenChannelListener(): Promise;\n getPairingRequestInfo(): Promise;\n listen(publicKey: string): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-matrix/dist/esm/index.d.ts",dts:"export { P2PCommunicationClient } from './communication-client/P2PCommunicationClient';\nexport { P2PTransport } from './P2PTransport';\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-postmessage/PostMessageClient.d.ts",dts:"import { MessageBasedClient } from '@airgap/beacon-core';\nimport { ConnectionContext, ExtendedPostMessagePairingResponse, EncryptedExtensionMessage, PostMessagePairingRequest } from '@airgap/beacon-types';\n/**\n * @internalapi\n *\n *\n */\nexport declare class PostMessageClient extends MessageBasedClient {\n protected readonly activeListeners: Map void>;\n init(): Promise;\n listenForEncryptedMessage(senderPublicKey: string, messageCallback: (message: string, context: ConnectionContext) => void): Promise;\n sendMessage(message: string, peer: PostMessagePairingRequest | ExtendedPostMessagePairingResponse): Promise;\n listenForChannelOpening(messageCallback: (pairingResponse: ExtendedPostMessagePairingResponse) => void): Promise;\n sendPairingRequest(id: string): Promise;\n isChannelOpenMessage(message: any): Promise;\n private subscribeToMessages;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-postmessage/PostMessageTransport.d.ts",dts:"import { PostMessagePairingRequest, ExtendedPostMessagePairingResponse, Extension, StorageKey, TransportType } from '@airgap/beacon-types';\nimport { Storage } from '@airgap/beacon-types';\nimport { Transport } from '@airgap/beacon-core';\nimport { PostMessageClient } from './PostMessageClient';\nimport { KeyPair } from '@stablelib/ed25519';\n/**\n * @internalapi\n *\n *\n */\nexport declare class PostMessageTransport extends Transport {\n readonly type: TransportType;\n constructor(name: string, keyPair: KeyPair, storage: Storage, storageKey: K);\n static isAvailable(): Promise;\n static getAvailableExtensions(): Promise;\n private static listenForExtensions;\n connect(): Promise;\n startOpenChannelListener(): Promise;\n getPairingRequestInfo(): Promise;\n listen(publicKey: string): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-postmessage/index.d.ts",dts:"export { PostMessageTransport } from './PostMessageTransport';\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-postmessage/dist/esm/PostMessageClient.d.ts",dts:"import { MessageBasedClient } from '@airgap/beacon-core';\nimport { ConnectionContext, ExtendedPostMessagePairingResponse, EncryptedExtensionMessage, PostMessagePairingRequest } from '@airgap/beacon-types';\n/**\n * @internalapi\n *\n *\n */\nexport declare class PostMessageClient extends MessageBasedClient {\n protected readonly activeListeners: Map void>;\n init(): Promise;\n listenForEncryptedMessage(senderPublicKey: string, messageCallback: (message: string, context: ConnectionContext) => void): Promise;\n sendMessage(message: string, peer: PostMessagePairingRequest | ExtendedPostMessagePairingResponse): Promise;\n listenForChannelOpening(messageCallback: (pairingResponse: ExtendedPostMessagePairingResponse) => void): Promise;\n sendPairingRequest(id: string): Promise;\n isChannelOpenMessage(message: any): Promise;\n private subscribeToMessages;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-postmessage/dist/esm/PostMessageTransport.d.ts",dts:"import { PostMessagePairingRequest, ExtendedPostMessagePairingResponse, Extension, StorageKey, TransportType } from '@airgap/beacon-types';\nimport { Storage } from '@airgap/beacon-types';\nimport { Transport } from '@airgap/beacon-core';\nimport { PostMessageClient } from './PostMessageClient';\nimport { KeyPair } from '@stablelib/ed25519';\n/**\n * @internalapi\n *\n *\n */\nexport declare class PostMessageTransport extends Transport {\n readonly type: TransportType;\n constructor(name: string, keyPair: KeyPair, storage: Storage, storageKey: K);\n static isAvailable(): Promise;\n static getAvailableExtensions(): Promise;\n private static listenForExtensions;\n connect(): Promise;\n startOpenChannelListener(): Promise;\n getPairingRequestInfo(): Promise;\n listen(publicKey: string): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-postmessage/dist/esm/index.d.ts",dts:"export { PostMessageTransport } from './PostMessageTransport';\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-walletconnect/communication-client/WalletConnectCommunicationClient.d.ts",dts:'import { CommunicationClient, WCStorage } from \'@airgap/beacon-core\';\nimport Client from \'@walletconnect/sign-client\';\nimport { SessionTypes, SignClientTypes } from \'@walletconnect/types\';\nimport { ExtendedWalletConnectPairingRequest, ExtendedWalletConnectPairingResponse, NetworkType, OperationRequest, PermissionRequest, SignPayloadRequest } from \'@airgap/beacon-types\';\nexport interface PermissionScopeParam {\n networks: NetworkType[];\n methods: PermissionScopeMethods[];\n events?: PermissionScopeEvents[];\n}\nexport declare enum PermissionScopeMethods {\n GET_ACCOUNTS = "tezos_getAccounts",\n OPERATION_REQUEST = "tezos_send",\n SIGN = "tezos_sign"\n}\nexport declare enum PermissionScopeEvents {\n CHAIN_CHANGED = "chainChanged",\n ACCOUNTS_CHANGED = "accountsChanged",\n REQUEST_ACKNOWLEDGED = "requestAcknowledged"\n}\nexport declare class WalletConnectCommunicationClient extends CommunicationClient {\n private wcOptions;\n protected readonly activeListeners: Map void>;\n protected readonly channelOpeningListeners: Map void>;\n private static instance;\n signClient: Client | undefined;\n storage: WCStorage;\n private session;\n private activeAccount;\n private activeNetwork;\n /**\n * this queue stores each active message id\n * [0] newest message\n * [length - 1] oldest message\n */\n private messageIds;\n constructor(wcOptions: {\n network: NetworkType;\n opts: SignClientTypes.Options;\n });\n static getInstance(wcOptions: {\n network: NetworkType;\n opts: SignClientTypes.Options;\n }): WalletConnectCommunicationClient;\n listenForEncryptedMessage(senderPublicKey: string, messageCallback: (message: string) => void): Promise;\n listenForChannelOpening(messageCallback: (pairingResponse: ExtendedWalletConnectPairingResponse) => void): Promise;\n unsubscribeFromEncryptedMessages(): Promise;\n unsubscribeFromEncryptedMessage(_senderPublicKey: string): Promise;\n private checkWalletReadiness;\n sendMessage(_message: string, _peer?: any): Promise;\n private fetchAccounts;\n private notifyListenersWithPermissionResponse;\n requestPermissions(message: PermissionRequest): Promise;\n /**\n * @description Once the session is establish, send payload to be approved and signed by the wallet.\n * @error MissingRequiredScope is thrown if permission to sign payload was not granted\n */\n signPayload(signPayloadRequest: SignPayloadRequest): Promise;\n /**\n * @description Once the session is established, send Tezos operations to be approved, signed and inject by the wallet.\n * @error MissingRequiredScope is thrown if permission to send operation was not granted\n */\n sendOperations(operationRequest: OperationRequest): Promise;\n init(forceNewConnection?: boolean): Promise<{\n uri: string;\n topic: string;\n } | undefined>;\n close(): Promise;\n private subscribeToSessionEvents;\n private acknowledgeRequest;\n private updateActiveAccount;\n private disconnect;\n private onPairingClosed;\n private onSessionClosed;\n getPairingRequestInfo(): Promise;\n private closePairings;\n private closeSessions;\n private openSession;\n private permissionScopeParamsToNamespaces;\n private validateReceivedNamespace;\n private validateMethods;\n private validateEvents;\n private validateAccounts;\n closeActiveSession(account: string): Promise;\n private validateNetworkAndAccount;\n /**\n * @description Access the active network\n * @error ActiveNetworkUnspecified thorwn when there are multiple Tezos networks in the session and none is set as the active one\n */\n getActiveNetwork(): string;\n private setDefaultAccountAndNetwork;\n /**\n * @description Return all connected accounts from the active session\n * @error NotConnected if no active session\n */\n getAccounts(): string[];\n /**\n * @description Return all networks from the namespace of the active session\n * @error NotConnected if no active session\n */\n getNetworks(): string[];\n private getTezosNamespace;\n private getPermittedMethods;\n private getPermittedNetwork;\n private getTezosRequiredNamespace;\n private notifyListeners;\n currentSession(): SessionTypes.Struct | undefined;\n private getSignClient;\n private getSession;\n /**\n * @description Access the public key hash of the active account\n * @error ActiveAccountUnspecified thrown when there are multiple Tezos account in the session and none is set as the active one\n */\n getPKH(): Promise;\n private clearState;\n}\n'},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-walletconnect/WalletConnectTransport.d.ts",dts:"import { KeyPair } from '@stablelib/ed25519';\nimport { WalletConnectCommunicationClient } from './communication-client/WalletConnectCommunicationClient';\nimport { Storage, ExtendedWalletConnectPairingResponse, StorageKey, WalletConnectPairingRequest, NetworkType, AccountInfo } from '@airgap/beacon-types';\nimport { Transport } from '@airgap/beacon-core';\nimport { SignClientTypes } from '@walletconnect/types';\n/**\n * @internalapi\n *\n *\n */\nexport declare class WalletConnectTransport extends Transport {\n private wcOptions;\n constructor(name: string, _keyPair: KeyPair, storage: Storage, storageKey: K, wcOptions: {\n network: NetworkType;\n opts: SignClientTypes.Options;\n });\n static isAvailable(): Promise;\n connect(): Promise;\n hasPairings(): Promise;\n hasSessions(): Promise;\n closeActiveSession(account: AccountInfo): Promise;\n getPeers(): Promise;\n disconnect(): Promise;\n startOpenChannelListener(): Promise;\n getPairingRequestInfo(): Promise;\n listen(publicKey: string): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-walletconnect/error.d.ts",dts:"import { PermissionScopeMethods } from './communication-client/WalletConnectCommunicationClient';\n/**\n * @category Error\n * @description Error that indicates the wallet returned an invalid namespace\n */\nexport declare class InvalidReceivedSessionNamespace extends Error {\n messageWc: string;\n codeWc: number;\n data?: string | string[] | undefined;\n name: string;\n constructor(messageWc: string, codeWc: number, type: 'invalid' | 'incomplete', data?: string | string[] | undefined);\n}\n/**\n * @category Error\n * @description Error that indicates there is no active session\n */\nexport declare class NotConnected extends Error {\n name: string;\n constructor();\n}\n/**\n * @category Error\n * @description Error that indicates the session is invalid\n */\nexport declare class InvalidSession extends Error {\n name: string;\n constructor(message: string);\n}\n/**\n * @category Error\n * @description Error that indicates missing required permission scopes\n */\nexport declare class MissingRequiredScope extends Error {\n requiredScopes: PermissionScopeMethods | string;\n name: string;\n constructor(requiredScopes: PermissionScopeMethods | string);\n}\n/**\n * @category Error\n * @description Error that indicates the active network is not specified\n */\nexport declare class ActiveNetworkUnspecified extends Error {\n name: string;\n constructor();\n}\n/**\n * @category Error\n * @description Error that indicates the active account is not specified\n */\nexport declare class ActiveAccountUnspecified extends Error {\n name: string;\n constructor();\n}\n/**\n * @category Error\n * @description Error that indicates the combinaison pkh-network is not part of the active session\n */\nexport declare class InvalidNetworkOrAccount extends Error {\n network: string;\n pkh: string;\n name: string;\n constructor(network: string, pkh: string);\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-walletconnect/index.d.ts",dts:"export { WalletConnectTransport } from './WalletConnectTransport';\nexport { WalletConnectCommunicationClient } from './communication-client/WalletConnectCommunicationClient';\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-walletconnect/dist/esm/communication-client/WalletConnectCommunicationClient.d.ts",dts:'import { CommunicationClient, WCStorage } from \'@airgap/beacon-core\';\nimport Client from \'@walletconnect/sign-client\';\nimport { SessionTypes, SignClientTypes } from \'@walletconnect/types\';\nimport { ExtendedWalletConnectPairingRequest, ExtendedWalletConnectPairingResponse, NetworkType, OperationRequest, PermissionRequest, SignPayloadRequest } from \'@airgap/beacon-types\';\nexport interface PermissionScopeParam {\n networks: NetworkType[];\n methods: PermissionScopeMethods[];\n events?: PermissionScopeEvents[];\n}\nexport declare enum PermissionScopeMethods {\n GET_ACCOUNTS = "tezos_getAccounts",\n OPERATION_REQUEST = "tezos_send",\n SIGN = "tezos_sign"\n}\nexport declare enum PermissionScopeEvents {\n CHAIN_CHANGED = "chainChanged",\n ACCOUNTS_CHANGED = "accountsChanged",\n REQUEST_ACKNOWLEDGED = "requestAcknowledged"\n}\nexport declare class WalletConnectCommunicationClient extends CommunicationClient {\n private wcOptions;\n protected readonly activeListeners: Map void>;\n protected readonly channelOpeningListeners: Map void>;\n private static instance;\n signClient: Client | undefined;\n storage: WCStorage;\n private session;\n private activeAccount;\n private activeNetwork;\n /**\n * this queue stores each active message id\n * [0] newest message\n * [length - 1] oldest message\n */\n private messageIds;\n constructor(wcOptions: {\n network: NetworkType;\n opts: SignClientTypes.Options;\n });\n static getInstance(wcOptions: {\n network: NetworkType;\n opts: SignClientTypes.Options;\n }): WalletConnectCommunicationClient;\n listenForEncryptedMessage(senderPublicKey: string, messageCallback: (message: string) => void): Promise;\n listenForChannelOpening(messageCallback: (pairingResponse: ExtendedWalletConnectPairingResponse) => void): Promise;\n unsubscribeFromEncryptedMessages(): Promise;\n unsubscribeFromEncryptedMessage(_senderPublicKey: string): Promise;\n private checkWalletReadiness;\n sendMessage(_message: string, _peer?: any): Promise;\n private fetchAccounts;\n private notifyListenersWithPermissionResponse;\n requestPermissions(message: PermissionRequest): Promise;\n /**\n * @description Once the session is establish, send payload to be approved and signed by the wallet.\n * @error MissingRequiredScope is thrown if permission to sign payload was not granted\n */\n signPayload(signPayloadRequest: SignPayloadRequest): Promise;\n /**\n * @description Once the session is established, send Tezos operations to be approved, signed and inject by the wallet.\n * @error MissingRequiredScope is thrown if permission to send operation was not granted\n */\n sendOperations(operationRequest: OperationRequest): Promise;\n init(forceNewConnection?: boolean): Promise<{\n uri: string;\n topic: string;\n } | undefined>;\n close(): Promise;\n private subscribeToSessionEvents;\n private acknowledgeRequest;\n private updateActiveAccount;\n private disconnect;\n private onPairingClosed;\n private onSessionClosed;\n getPairingRequestInfo(): Promise;\n private closePairings;\n private closeSessions;\n private openSession;\n private permissionScopeParamsToNamespaces;\n private validateReceivedNamespace;\n private validateMethods;\n private validateEvents;\n private validateAccounts;\n closeActiveSession(account: string): Promise;\n private validateNetworkAndAccount;\n /**\n * @description Access the active network\n * @error ActiveNetworkUnspecified thorwn when there are multiple Tezos networks in the session and none is set as the active one\n */\n getActiveNetwork(): string;\n private setDefaultAccountAndNetwork;\n /**\n * @description Return all connected accounts from the active session\n * @error NotConnected if no active session\n */\n getAccounts(): string[];\n /**\n * @description Return all networks from the namespace of the active session\n * @error NotConnected if no active session\n */\n getNetworks(): string[];\n private getTezosNamespace;\n private getPermittedMethods;\n private getPermittedNetwork;\n private getTezosRequiredNamespace;\n private notifyListeners;\n currentSession(): SessionTypes.Struct | undefined;\n private getSignClient;\n private getSession;\n /**\n * @description Access the public key hash of the active account\n * @error ActiveAccountUnspecified thrown when there are multiple Tezos account in the session and none is set as the active one\n */\n getPKH(): Promise;\n private clearState;\n}\n'},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-walletconnect/dist/esm/WalletConnectTransport.d.ts",dts:"import { KeyPair } from '@stablelib/ed25519';\nimport { WalletConnectCommunicationClient } from './communication-client/WalletConnectCommunicationClient';\nimport { Storage, ExtendedWalletConnectPairingResponse, StorageKey, WalletConnectPairingRequest, NetworkType, AccountInfo } from '@airgap/beacon-types';\nimport { Transport } from '@airgap/beacon-core';\nimport { SignClientTypes } from '@walletconnect/types';\n/**\n * @internalapi\n *\n *\n */\nexport declare class WalletConnectTransport extends Transport {\n private wcOptions;\n constructor(name: string, _keyPair: KeyPair, storage: Storage, storageKey: K, wcOptions: {\n network: NetworkType;\n opts: SignClientTypes.Options;\n });\n static isAvailable(): Promise;\n connect(): Promise;\n hasPairings(): Promise;\n hasSessions(): Promise;\n closeActiveSession(account: AccountInfo): Promise;\n getPeers(): Promise;\n disconnect(): Promise;\n startOpenChannelListener(): Promise;\n getPairingRequestInfo(): Promise;\n listen(publicKey: string): Promise;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-walletconnect/dist/esm/error.d.ts",dts:"import { PermissionScopeMethods } from './communication-client/WalletConnectCommunicationClient';\n/**\n * @category Error\n * @description Error that indicates the wallet returned an invalid namespace\n */\nexport declare class InvalidReceivedSessionNamespace extends Error {\n messageWc: string;\n codeWc: number;\n data?: string | string[] | undefined;\n name: string;\n constructor(messageWc: string, codeWc: number, type: 'invalid' | 'incomplete', data?: string | string[] | undefined);\n}\n/**\n * @category Error\n * @description Error that indicates there is no active session\n */\nexport declare class NotConnected extends Error {\n name: string;\n constructor();\n}\n/**\n * @category Error\n * @description Error that indicates the session is invalid\n */\nexport declare class InvalidSession extends Error {\n name: string;\n constructor(message: string);\n}\n/**\n * @category Error\n * @description Error that indicates missing required permission scopes\n */\nexport declare class MissingRequiredScope extends Error {\n requiredScopes: PermissionScopeMethods | string;\n name: string;\n constructor(requiredScopes: PermissionScopeMethods | string);\n}\n/**\n * @category Error\n * @description Error that indicates the active network is not specified\n */\nexport declare class ActiveNetworkUnspecified extends Error {\n name: string;\n constructor();\n}\n/**\n * @category Error\n * @description Error that indicates the active account is not specified\n */\nexport declare class ActiveAccountUnspecified extends Error {\n name: string;\n constructor();\n}\n/**\n * @category Error\n * @description Error that indicates the combinaison pkh-network is not part of the active session\n */\nexport declare class InvalidNetworkOrAccount extends Error {\n network: string;\n pkh: string;\n name: string;\n constructor(network: string, pkh: string);\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-transport-walletconnect/dist/esm/index.d.ts",dts:"export { WalletConnectTransport } from './WalletConnectTransport';\nexport { WalletConnectCommunicationClient } from './communication-client/WalletConnectCommunicationClient';\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/beacon/messages/AcknowledgeResponse.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType } from '@airgap/beacon-types';\n/**\n * @category Message\n */\nexport interface AcknowledgeResponse extends BeaconBaseMessage {\n type: BeaconMessageType.Acknowledge;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/beacon/messages/BeaconRequestInputMessage.d.ts",dts:"import { Optional, ProofOfEventChallengeRecordedRequest } from '@airgap/beacon-types';\nimport { PermissionRequest, OperationRequest, SignPayloadRequest, ProofOfEventChallengeRequest, BroadcastRequest } from '@airgap/beacon-types';\n/**\n * @internalapi\n * @category DApp\n */\nexport type IgnoredRequestInputProperties = 'id' | 'senderId' | 'version';\n/**\n * @internalapi\n * @category DApp\n */\nexport type PermissionRequestInput = Optional;\n/**\n * @internalapi\n * @category DApp\n */\nexport type ProofOfEventChallengeRequestInput = Optional;\n/**\n * @internalapi\n * @category DApp\n */\nexport type ProofOfEventChallengeRecordedMessageInput = Optional;\n/**\n * @internalapi\n * @category DApp\n */\nexport type OperationRequestInput = Optional;\n/**\n * @internalapi\n * @category DApp\n */\nexport type SignPayloadRequestInput = Optional;\n/**\n * @internalapi\n * @category DApp\n */\n/**\n * @internalapi\n * @category DApp\n */\nexport type BroadcastRequestInput = Optional;\n/**\n * @internalapi\n * @category DApp\n */\nexport type BeaconRequestInputMessage = PermissionRequestInput | OperationRequestInput | SignPayloadRequestInput | BroadcastRequestInput | ProofOfEventChallengeRequestInput | ProofOfEventChallengeRecordedMessageInput;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/beacon/messages/BeaconRequestOutputMessage.d.ts",dts:"import { Optional, ProofOfEventChallengeRecordedRequest, ProofOfEventChallengeRequest } from '@airgap/beacon-types';\nimport { AppMetadata, PermissionRequest, OperationRequest, SignPayloadRequest, BroadcastRequest } from '@airgap/beacon-types';\n/**\n * @category Wallet\n */\nexport type IgnoredRequestOutputProperties = 'version';\n/**\n * @category Wallet\n */\nexport interface ExtraResponseOutputProperties {\n appMetadata: AppMetadata;\n}\n/**\n * @category Wallet\n */\nexport type PermissionRequestOutput = Optional & ExtraResponseOutputProperties;\n/**\n * @category Wallet\n */\nexport type ProofOfEventChallengeRequestOutput = Optional & ExtraResponseOutputProperties;\n/**\n * @category Wallet\n */\nexport type ProofOfEventChallengeRecordedMessageOutput = Optional & ExtraResponseOutputProperties;\n/**\n * @category Wallet\n */\nexport type OperationRequestOutput = Optional & ExtraResponseOutputProperties;\n/**\n * @category Wallet\n */\nexport type SignPayloadRequestOutput = Optional & ExtraResponseOutputProperties;\n/**\n * @category Wallet\n */\n/**\n * @category Wallet\n */\nexport type BroadcastRequestOutput = Optional & ExtraResponseOutputProperties;\n/**\n * @internalapi\n * @category Wallet\n */\nexport type BeaconRequestOutputMessage = PermissionRequestOutput | OperationRequestOutput | SignPayloadRequestOutput | BroadcastRequestOutput | ProofOfEventChallengeRequestOutput | ProofOfEventChallengeRecordedMessageOutput;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/beacon/messages/BeaconResponseInputMessage.d.ts",dts:"import { Optional, ProofOfEventChallengeResponse } from '@airgap/beacon-types';\nimport { PermissionResponse, OperationResponse, SignPayloadResponse, BroadcastResponse, AcknowledgeResponse, ErrorResponse } from '@airgap/beacon-types';\n/**\n * @category Wallet\n */\nexport type IgnoredResponseInputProperties = 'senderId' | 'version';\n/**\n * @category Wallet\n */\nexport type PermissionResponseInput = Optional;\n/**\n * @category Wallet\n */\nexport type ProofOfEventChallengeResponseInput = Optional;\n/**\n * @category Wallet\n */\nexport type OperationResponseInput = Optional;\n/**\n * @category Wallet\n */\nexport type SignPayloadResponseInput = Optional;\n/**\n * @category Wallet\n */\n/**\n * @category Wallet\n */\nexport type BroadcastResponseInput = Optional;\n/**\n * @category Wallet\n */\nexport type AcknowledgeResponseInput = Optional;\n/**\n * @category Wallet\n */\nexport type ErrorResponseInput = Optional;\n/**\n * @internalapi\n * @category Wallet\n */\nexport type BeaconResponseInputMessage = PermissionResponseInput | OperationResponseInput | SignPayloadResponseInput | BroadcastResponseInput | AcknowledgeResponseInput | ErrorResponseInput | ProofOfEventChallengeResponseInput;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/beacon/messages/BeaconResponseOutputMessage.d.ts",dts:"import { PermissionResponse, OperationResponse, SignPayloadResponse, BroadcastResponse, AccountInfo, ProofOfEventChallengeResponse } from '@airgap/beacon-types';\n/**\n * @category DApp\n */\nexport type IgnoredResponseOutputProperties = 'id' | 'version' | 'type';\n/**\n * @category DApp\n */\nexport type PermissionResponseOutput = PermissionResponse & {\n address: string;\n accountInfo: AccountInfo;\n walletKey?: string | undefined;\n};\n/**\n * @category DApp\n */\nexport type ProofOfEventChallengeResponseOutput = ProofOfEventChallengeResponse;\n/**\n * @category DApp\n */\nexport type OperationResponseOutput = OperationResponse;\n/**\n * @category DApp\n */\nexport type SignPayloadResponseOutput = SignPayloadResponse;\n/**\n * @category DApp\n */\n/**\n * @category DApp\n */\nexport type BroadcastResponseOutput = BroadcastResponse;\n/**\n * @internalapi\n * @category DApp\n */\nexport type BeaconResponseOutputMessage = PermissionResponseOutput | OperationResponseOutput | SignPayloadResponseOutput | BroadcastResponseOutput | ProofOfEventChallengeResponseOutput;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/beacon/messages/BroadcastRequest.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType, Network } from '@airgap/beacon-types';\n/**\n * @category Message\n */\nexport interface BroadcastRequest extends BeaconBaseMessage {\n type: BeaconMessageType.BroadcastRequest;\n network: Network;\n signedTransaction: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/beacon/messages/BroadcastResponse.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType } from '@airgap/beacon-types';\n/**\n * @category Message\n */\nexport interface BroadcastResponse extends BeaconBaseMessage {\n type: BeaconMessageType.BroadcastResponse;\n transactionHash: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/beacon/messages/ChangeAccountRequest.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType, Network, PermissionScope, Threshold } from '@airgap/beacon-types';\nimport { Notification } from '../../Notification';\nexport interface ChangeAccountRequest extends BeaconBaseMessage {\n type: BeaconMessageType.ChangeAccountRequest;\n address?: string;\n walletType: 'implicit' | 'abstracted_account';\n verificationType?: 'proof_of_event';\n publicKey?: string;\n network: Network;\n scopes: PermissionScope[];\n threshold?: Threshold;\n notification?: Notification;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/beacon/messages/DisconnectMessage.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType } from '@airgap/beacon-types';\n/**\n * @category Message\n */\nexport interface DisconnectMessage extends BeaconBaseMessage {\n type: BeaconMessageType.Disconnect;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/beacon/messages/EncryptPayloadRequest.d.ts",dts:"/**\n * @category Message\n */\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/beacon/messages/EncryptPayloadResponse.d.ts",dts:"/**\n * @category Message\n */\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/beacon/messages/ErrorResponse.d.ts",dts:"import { BeaconBaseMessage, BeaconErrorType, BeaconMessageType } from '@airgap/beacon-types';\n/**\n * @category Message\n */\nexport interface ErrorResponse extends BeaconBaseMessage {\n type: BeaconMessageType.Error;\n errorType: BeaconErrorType;\n errorData?: any;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/beacon/messages/OperationRequest.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType, Network } from '@airgap/beacon-types';\nimport { PartialTezosOperation } from '../../tezos/PartialTezosOperation';\n/**\n * @category Message\n */\nexport interface OperationRequest extends BeaconBaseMessage {\n type: BeaconMessageType.OperationRequest;\n network: Network;\n operationDetails: PartialTezosOperation[];\n sourceAddress: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/beacon/messages/OperationResponse.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType } from '@airgap/beacon-types';\n/**\n * @category Message\n */\nexport interface OperationResponse extends BeaconBaseMessage {\n type: BeaconMessageType.OperationResponse;\n transactionHash: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/beacon/messages/PermissionRequest.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType, PermissionScope, AppMetadata, Network } from '@airgap/beacon-types';\n/**\n * @category Message\n */\nexport interface PermissionRequest extends BeaconBaseMessage {\n type: BeaconMessageType.PermissionRequest;\n appMetadata: AppMetadata;\n network: Network;\n scopes: PermissionScope[];\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/beacon/messages/PermissionResponse.d.ts",dts:"import { AppMetadata, BeaconBaseMessage, BeaconMessageType, Network, PermissionScope, Threshold } from '@airgap/beacon-types';\nimport { Notification } from '../../Notification';\n/**\n * @category Message\n */\nexport interface PermissionResponse extends BeaconBaseMessage {\n address?: string;\n walletType: 'implicit' | 'abstracted_account';\n verificationType?: 'proof_of_event';\n type: BeaconMessageType.PermissionResponse;\n appMetadata: AppMetadata;\n publicKey?: string;\n network: Network;\n scopes: PermissionScope[];\n threshold?: Threshold;\n notification?: Notification;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/beacon/messages/ProofOfEventChallengeRecordedRequest.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType } from '@airgap/beacon-types';\nexport interface ProofOfEventChallengeRecordedRequest extends BeaconBaseMessage {\n type: BeaconMessageType.ProofOfEventChallengeRecorded;\n dAppChallengeId: string;\n success: boolean;\n errorMessage: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/beacon/messages/ProofOfEventChallengeRequest.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType } from '@airgap/beacon-types';\nexport interface ProofOfEventChallengeRequest extends BeaconBaseMessage {\n type: BeaconMessageType.ProofOfEventChallengeRequest;\n payload: string;\n contractAddress: string;\n dAppChallengeId: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/beacon/messages/ProofOfEventChallengeResponse.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType } from '@airgap/beacon-types';\nexport interface ProofOfEventChallengeResponse extends BeaconBaseMessage {\n type: BeaconMessageType.ProofOfEventChallengeResponse;\n dAppChallengeId: string;\n isAccepted: boolean;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/beacon/messages/SignPayloadRequest.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType, SigningType } from '@airgap/beacon-types';\n/**\n * @category Message\n */\nexport interface SignPayloadRequest extends BeaconBaseMessage {\n type: BeaconMessageType.SignPayloadRequest;\n signingType: SigningType;\n payload: string;\n sourceAddress: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/beacon/messages/SignPayloadResponse.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType, SigningType } from '@airgap/beacon-types';\n/**\n * @category Message\n */\nexport interface SignPayloadResponse extends BeaconBaseMessage {\n type: BeaconMessageType.SignPayloadResponse;\n signingType: SigningType;\n signature: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/beacon/AppMetadata.d.ts",dts:"export interface AppMetadata {\n senderId: string;\n name: string;\n icon?: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/beacon/BeaconBaseMessage.d.ts",dts:"import { BeaconMessageType } from '@airgap/beacon-types';\n/**\n * @category Message\n */\nexport interface BeaconBaseMessage {\n type: BeaconMessageType;\n version: string;\n id: string;\n senderId: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/beacon/BeaconMessage.d.ts",dts:"import { PermissionResponse, PermissionRequest, OperationRequest, OperationResponse, SignPayloadRequest, SignPayloadResponse, BroadcastRequest, BroadcastResponse, AcknowledgeResponse, DisconnectMessage, ErrorResponse, ProofOfEventChallengeRequest, ProofOfEventChallengeResponse, ProofOfEventChallengeRecordedRequest, ChangeAccountRequest } from '@airgap/beacon-types';\n/**\n * @internalapi\n */\nexport type BeaconMessage = PermissionRequest | PermissionResponse | ProofOfEventChallengeRequest | ProofOfEventChallengeResponse | ProofOfEventChallengeRecordedRequest | OperationRequest | OperationResponse | SignPayloadRequest | SignPayloadResponse | BroadcastRequest | BroadcastResponse | AcknowledgeResponse | DisconnectMessage | ErrorResponse | ChangeAccountRequest;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/beacon/BeaconMessageType.d.ts",dts:'export declare enum BeaconMessageType {\n BlockchainRequest = "blockchain_request",\n PermissionRequest = "permission_request",\n SignPayloadRequest = "sign_payload_request",\n OperationRequest = "operation_request",\n BroadcastRequest = "broadcast_request",\n ChangeAccountRequest = "change_account_request",\n BlockchainResponse = "blockchain_response",\n PermissionResponse = "permission_response",\n SignPayloadResponse = "sign_payload_response",\n ProofOfEventChallengeRequest = "proof_of_event_challenge_request",\n ProofOfEventChallengeResponse = "proof_of_event_challenge_response",\n ProofOfEventChallengeRecorded = "proof_of_event_challenge_recorded",\n OperationResponse = "operation_response",\n BroadcastResponse = "broadcast_response",\n Acknowledge = "acknowledge",\n Disconnect = "disconnect",\n Error = "error"\n}\n'},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/beacon/BeaconRequestMessage.d.ts",dts:"import { PermissionRequest, OperationRequest, SignPayloadRequest, BroadcastRequest, ProofOfEventChallengeRequest, ProofOfEventChallengeRecordedRequest } from '@airgap/beacon-types';\n/**\n * @internalapi\n */\nexport type BeaconRequestMessage = PermissionRequest | OperationRequest | SignPayloadRequest | BroadcastRequest | ProofOfEventChallengeRequest | ProofOfEventChallengeRecordedRequest;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/beacon/BeaconResponseMessage.d.ts",dts:"import { PermissionResponse, OperationResponse, SignPayloadResponse, BroadcastResponse } from '@airgap/beacon-types';\nimport { ErrorResponse } from './messages/ErrorResponse';\n/**\n * @internalapi\n */\nexport type BeaconResponseMessage = PermissionResponse | OperationResponse | SignPayloadResponse | BroadcastResponse | ErrorResponse;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/beacon/Network.d.ts",dts:"import { NetworkType } from '@airgap/beacon-types';\nexport interface Network {\n type: NetworkType;\n name?: string;\n rpcUrl?: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/beacon/NetworkType.d.ts",dts:'export declare enum NetworkType {\n MAINNET = "mainnet",\n GHOSTNET = "ghostnet",\n WEEKLYNET = "weeklynet",\n DAILYNET = "dailynet",\n DELPHINET = "delphinet",\n EDONET = "edonet",\n FLORENCENET = "florencenet",\n GRANADANET = "granadanet",\n HANGZHOUNET = "hangzhounet",\n ITHACANET = "ithacanet",\n JAKARTANET = "jakartanet",\n KATHMANDUNET = "kathmandunet",\n LIMANET = "limanet",\n MUMBAINET = "mumbainet",\n NAIROBINET = "nairobinet",\n OXFORDNET = "oxfordnet",\n CUSTOM = "custom"\n}\n'},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/beacon/PermissionScope.d.ts",dts:'export declare enum PermissionScope {\n SIGN = "sign",\n OPERATION_REQUEST = "operation_request",\n ENCRYPT = "encrypt",\n NOTIFICATION = "notification",\n THRESHOLD = "threshold"\n}\n'},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/beacon/SigningType.d.ts",dts:'export declare enum SigningType {\n RAW = "raw",\n OPERATION = "operation",\n MICHELINE = "micheline"\n}\n'},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/beacon/Threshold.d.ts",dts:"export interface Threshold {\n amount: string;\n timeframe: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/beaconV3/PermissionRequest.d.ts",dts:"import { AccountInfo, AppMetadata, BeaconMessageType, ConnectionContext, WalletInfo, ExtensionApp, DesktopApp, WebApp, App } from '@airgap/beacon-types';\nexport interface ResponseInput {\n request: BlockchainMessage;\n account: AccountInfo;\n output: BeaconMessageWrapper;\n blockExplorer: any;\n connectionContext: ConnectionContext;\n walletInfo: WalletInfo;\n}\nexport interface Blockchain {\n readonly identifier: string;\n validateRequest(input: BlockchainMessage): Promise;\n handleResponse(input: ResponseInput): Promise;\n getWalletLists(): Promise<{\n extensionList: ExtensionApp[];\n desktopList: DesktopApp[];\n webList: WebApp[];\n iOSList: App[];\n }>;\n getAccountInfosFromPermissionResponse(permissionResponse: PermissionResponseV3): Promise<{\n accountId: string;\n address: string;\n publicKey: string;\n }[]>;\n}\nexport interface BeaconMessageWrapper {\n id: string;\n version: string;\n senderId: string;\n message: T;\n}\nexport interface BeaconBaseMessage {\n type: unknown;\n}\nexport interface BlockchainMessage {\n blockchainIdentifier: T;\n type: unknown;\n blockchainData: unknown;\n}\nexport interface PermissionRequestV3 extends BlockchainMessage {\n blockchainIdentifier: T;\n type: BeaconMessageType.PermissionRequest;\n blockchainData: {\n appMetadata: AppMetadata;\n scopes: string[];\n };\n}\nexport interface PermissionResponseV3 extends BlockchainMessage {\n blockchainIdentifier: T;\n type: BeaconMessageType.PermissionResponse;\n blockchainData: {\n appMetadata: AppMetadata;\n scopes: string[];\n };\n}\nexport interface BlockchainRequestV3 extends BlockchainMessage {\n blockchainIdentifier: T;\n type: BeaconMessageType.BlockchainRequest;\n accountId: string;\n blockchainData: {\n type: string;\n scope: string;\n };\n}\nexport interface BlockchainResponseV3 extends BlockchainMessage {\n blockchainIdentifier: T;\n type: BeaconMessageType.BlockchainResponse;\n blockchainData: unknown;\n}\nexport interface BlockchainErrorResponse extends BlockchainMessage {\n blockchainIdentifier: T;\n type: BeaconMessageType.Error;\n error: {\n type: unknown;\n data?: unknown;\n };\n description?: string;\n}\nexport interface AcknowledgeMessage extends BeaconBaseMessage {\n type: BeaconMessageType.Acknowledge;\n}\nexport interface DisconnectMessage extends BeaconBaseMessage {\n type: BeaconMessageType.Disconnect;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/storage/Storage.d.ts",dts:"import { StorageKey, StorageKeyReturnType } from '@airgap/beacon-types';\n/**\n * @internalapi\n *\n * The storage used in the SDK\n */\nexport declare abstract class Storage {\n /**\n * Returns a promise that resolves to true if the storage option is available on this platform.\n */\n static isSupported(): Promise;\n /**\n * Gets a value from storage and returns it\n *\n * @param key The storage key\n */\n abstract get(key: K): Promise;\n /**\n * Sets a value in the storage and persist it\n *\n * @param key The storage key\n * @param value The value to be persisted\n */\n abstract set(key: K, value: StorageKeyReturnType[K]): Promise;\n /**\n * Delete a key from storage\n *\n * @param key The storage key\n */\n abstract delete(key: K): Promise;\n /**\n * This event will fire if the storage was modified by someone else, eg. on another tab\n *\n * @param callback The callback to be called when a storage value changes\n */\n abstract subscribeToStorageChanged(callback: (arg: {\n eventType: 'storageCleared' | 'entryModified';\n key: string | null;\n oldValue: string | null;\n newValue: string | null;\n }) => {}): Promise;\n /**\n * Get the key with the internal prefix\n *\n * @param key the storage key\n */\n abstract getPrefixedKey(key: K): string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/storage/StorageKey.d.ts",dts:'/**\n * @internalapi\n */\nexport declare enum StorageKey {\n TRANSPORT_P2P_PEERS_DAPP = "beacon:communication-peers-dapp",\n TRANSPORT_P2P_PEERS_WALLET = "beacon:communication-peers-wallet",\n TRANSPORT_POSTMESSAGE_PEERS_DAPP = "beacon:postmessage-peers-dapp",\n TRANSPORT_POSTMESSAGE_PEERS_WALLET = "beacon:postmessage-peers-wallet",\n TRANSPORT_WALLETCONNECT_PEERS_DAPP = "beacon:walletconnect-peers-dapp",\n LAST_SELECTED_WALLET = "beacon:last-selected-wallet",\n ACCOUNTS = "beacon:accounts",\n ACTIVE_ACCOUNT = "beacon:active-account",\n PUSH_TOKENS = "beacon:push-tokens",\n BEACON_SDK_SECRET_SEED = "beacon:sdk-secret-seed",\n APP_METADATA_LIST = "beacon:app-metadata-list",\n PERMISSION_LIST = "beacon:permissions",\n ONGOING_PROOF_OF_EVENT_CHALLENGES = "beacon:ongoing-proof-of-event-challenges",\n BEACON_SDK_VERSION = "beacon:sdk_version",\n MATRIX_PRESERVED_STATE = "beacon:sdk-matrix-preserved-state",\n MATRIX_PEER_ROOM_IDS = "beacon:matrix-peer-rooms",\n MATRIX_SELECTED_NODE = "beacon:matrix-selected-node",\n MULTI_NODE_SETUP_DONE = "beacon:multi-node-setup",\n WC_2_CORE_PAIRING = "wc@2:core:0.3//pairing",\n WC_2_CLIENT_SESSION = "wc@2:client:0.3//session",\n WC_2_CORE_KEYCHAIN = "wc@2:core:0.3//keychain",\n WC_2_CORE_MESSAGES = "wc@2:core:0.3//messages",\n WC_2_CLIENT_PROPOSAL = "wc@2:client:0.3//proposal",\n WC_2_CORE_SUBSCRIPTION = "wc@2:core:0.3//subscription",\n WC_2_CORE_HISTORY = "wc@2:core:0.3//history",\n WC_2_CORE_EXPIRER = "wc@2:core:0.3//expirer"\n}\n'},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/storage/StorageKeyReturnDefaults.d.ts",dts:"import { StorageKey, StorageKeyReturnType } from '../..';\n/**\n * @internalapi\n */\nexport type StorageKeyReturnDefaults = {\n [key in StorageKey]: StorageKeyReturnType[key];\n};\n/**\n * @internalapi\n */\nexport declare const defaultValues: StorageKeyReturnDefaults;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/storage/StorageKeyReturnType.d.ts",dts:"import { StorageKey, AccountInfo, AccountIdentifier, P2PPairingRequest, AppMetadata, PermissionInfo, ExtendedWalletConnectPairingResponse, RequestProofOfEventChallengeInput } from '../..';\nimport { ExtendedP2PPairingResponse } from '../P2PPairingResponse';\nimport { PostMessagePairingRequest } from '../PostMessagePairingRequest';\nimport { ExtendedPostMessagePairingResponse } from '../PostMessagePairingResponse';\nimport { PushToken } from '../PushToken';\n/**\n * @internalapi\n */\nexport interface StorageKeyReturnType {\n [StorageKey.TRANSPORT_P2P_PEERS_DAPP]: P2PPairingRequest[];\n [StorageKey.TRANSPORT_P2P_PEERS_WALLET]: ExtendedP2PPairingResponse[];\n [StorageKey.TRANSPORT_POSTMESSAGE_PEERS_DAPP]: PostMessagePairingRequest[];\n [StorageKey.TRANSPORT_POSTMESSAGE_PEERS_WALLET]: ExtendedPostMessagePairingResponse[];\n [StorageKey.TRANSPORT_WALLETCONNECT_PEERS_DAPP]: ExtendedWalletConnectPairingResponse[];\n [StorageKey.LAST_SELECTED_WALLET]: string | undefined;\n [StorageKey.ACCOUNTS]: AccountInfo[];\n [StorageKey.ACTIVE_ACCOUNT]: AccountIdentifier | undefined;\n [StorageKey.PUSH_TOKENS]: PushToken[];\n [StorageKey.BEACON_SDK_SECRET_SEED]: string | undefined;\n [StorageKey.APP_METADATA_LIST]: AppMetadata[];\n [StorageKey.PERMISSION_LIST]: PermissionInfo[];\n [StorageKey.ONGOING_PROOF_OF_EVENT_CHALLENGES]: ({\n contractAddress: string;\n accountIdentifier: string;\n } & RequestProofOfEventChallengeInput)[];\n [StorageKey.BEACON_SDK_VERSION]: string | undefined;\n [StorageKey.MATRIX_PRESERVED_STATE]: {\n [key: string]: unknown;\n };\n [StorageKey.MATRIX_PEER_ROOM_IDS]: {\n [key: string]: string | undefined;\n };\n [StorageKey.MATRIX_SELECTED_NODE]: string | undefined;\n [StorageKey.MULTI_NODE_SETUP_DONE]: boolean | undefined;\n [StorageKey.WC_2_CLIENT_SESSION]: string | undefined;\n [StorageKey.WC_2_CORE_PAIRING]: string | undefined;\n [StorageKey.WC_2_CORE_KEYCHAIN]: string | undefined;\n [StorageKey.WC_2_CORE_MESSAGES]: string | undefined;\n [StorageKey.WC_2_CLIENT_PROPOSAL]: string | undefined;\n [StorageKey.WC_2_CORE_SUBSCRIPTION]: string | undefined;\n [StorageKey.WC_2_CORE_HISTORY]: string | undefined;\n [StorageKey.WC_2_CORE_EXPIRER]: string | undefined;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/tezos/operations/ActivateAccount.d.ts",dts:"import { TezosBaseOperation, TezosOperationType } from '../../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosActivateAccountOperation extends TezosBaseOperation {\n kind: TezosOperationType.ACTIVATE_ACCOUNT;\n pkh: string;\n secret: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/tezos/operations/Ballot.d.ts",dts:"import { TezosBaseOperation, TezosOperationType } from '../../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosBallotOperation extends TezosBaseOperation {\n kind: TezosOperationType.BALLOT;\n source: string;\n period: string;\n proposal: string;\n ballot: 'nay' | 'yay' | 'pass';\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/tezos/operations/Delegation.d.ts",dts:"import { TezosBaseOperation, TezosOperationType } from '../../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosDelegationOperation extends TezosBaseOperation {\n kind: TezosOperationType.DELEGATION;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n delegate?: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/tezos/operations/DoubleBakingEvidence.d.ts",dts:"import { TezosBaseOperation, TezosOperationType, TezosBlockHeader } from '../../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosDoubleBakingEvidenceOperation extends TezosBaseOperation {\n kind: TezosOperationType.DOUBLE_BAKING_EVIDENCE;\n bh1: TezosBlockHeader;\n bh2: TezosBlockHeader;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/tezos/operations/DoubleEndorsementEvidence.d.ts",dts:"import { TezosBaseOperation, TezosOperationType } from '../../..';\nexport interface InlinedEndorsement {\n branch: string;\n operations: InlinedEndorsementContents;\n signature?: string;\n}\nexport interface InlinedEndorsementContents {\n kind: TezosOperationType.ENDORSEMENT;\n level: string;\n}\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosDoubleEndorsementEvidenceOperation extends TezosBaseOperation {\n kind: TezosOperationType.DOUBLE_ENDORSEMENT_EVIDENCE;\n op1: InlinedEndorsement;\n op2: InlinedEndorsement;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/tezos/operations/Endorsement.d.ts",dts:"import { TezosBaseOperation, TezosOperationType } from '../../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosEndorsementOperation extends TezosBaseOperation {\n kind: TezosOperationType.ENDORSEMENT;\n level: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/tezos/operations/Origination.d.ts",dts:"import { TezosBaseOperation, TezosOperationType } from '../../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosOriginationOperation extends TezosBaseOperation {\n kind: TezosOperationType.ORIGINATION;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n balance: string;\n delegate?: string;\n script: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/tezos/operations/Proposal.d.ts",dts:"import { TezosBaseOperation, TezosOperationType } from '../../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosProposalOperation extends TezosBaseOperation {\n kind: TezosOperationType.PROPOSALS;\n period: string;\n proposals: string[];\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/tezos/operations/Reveal.d.ts",dts:"import { TezosBaseOperation, TezosOperationType } from '../../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosRevealOperation extends TezosBaseOperation {\n kind: TezosOperationType.REVEAL;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n public_key: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/tezos/operations/SeedNonceRevelation.d.ts",dts:"import { TezosBaseOperation, TezosOperationType } from '../../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosSeedNonceRevelationOperation extends TezosBaseOperation {\n kind: TezosOperationType.SEED_NONCE_REVELATION;\n level: string;\n nonce: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/tezos/operations/Transaction.d.ts",dts:"import { TezosBaseOperation, TezosOperationType, TezosTransactionParameters } from '../../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosTransactionOperation extends TezosBaseOperation {\n kind: TezosOperationType.TRANSACTION;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n amount: string;\n destination: string;\n parameters?: TezosTransactionParameters;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/tezos/MichelineMichelsonV1Expression.d.ts",dts:"import { MichelsonPrimitives } from '../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport type MichelineMichelsonV1Expression = {\n int: string;\n} | {\n string: string;\n} | {\n bytes: string;\n} | MichelineMichelsonV1Expression[] | {\n prim: MichelsonPrimitives;\n args?: MichelineMichelsonV1Expression[];\n annots?: string[];\n};\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/tezos/MichelsonPrimitives.d.ts",dts:"/**\n * @internalapi\n * @category Tezos\n */\nexport type MichelsonPrimitives = 'ADD' | 'IF_NONE' | 'SWAP' | 'set' | 'nat' | 'CHECK_SIGNATURE' | 'IF_LEFT' | 'LAMBDA' | 'Elt' | 'CREATE_CONTRACT' | 'NEG' | 'big_map' | 'map' | 'or' | 'BLAKE2B' | 'bytes' | 'SHA256' | 'SET_DELEGATE' | 'CONTRACT' | 'LSL' | 'SUB' | 'IMPLICIT_ACCOUNT' | 'PACK' | 'list' | 'PAIR' | 'Right' | 'contract' | 'GT' | 'LEFT' | 'STEPS_TO_QUOTA' | 'storage' | 'TRANSFER_TOKENS' | 'CDR' | 'SLICE' | 'PUSH' | 'False' | 'SHA512' | 'CHAIN_ID' | 'BALANCE' | 'signature' | 'DUG' | 'SELF' | 'EMPTY_BIG_MAP' | 'LSR' | 'OR' | 'XOR' | 'lambda' | 'COMPARE' | 'key' | 'option' | 'Unit' | 'Some' | 'UNPACK' | 'NEQ' | 'INT' | 'pair' | 'AMOUNT' | 'DIP' | 'ABS' | 'ISNAT' | 'EXEC' | 'NOW' | 'LOOP' | 'chain_id' | 'string' | 'MEM' | 'MAP' | 'None' | 'address' | 'CONCAT' | 'EMPTY_SET' | 'MUL' | 'LOOP_LEFT' | 'timestamp' | 'LT' | 'UPDATE' | 'DUP' | 'SOURCE' | 'mutez' | 'SENDER' | 'IF_CONS' | 'RIGHT' | 'CAR' | 'CONS' | 'LE' | 'NONE' | 'IF' | 'SOME' | 'GET' | 'Left' | 'CAST' | 'int' | 'SIZE' | 'key_hash' | 'unit' | 'DROP' | 'EMPTY_MAP' | 'NIL' | 'DIG' | 'APPLY' | 'bool' | 'RENAME' | 'operation' | 'True' | 'FAILWITH' | 'parameter' | 'HASH_KEY' | 'EQ' | 'NOT' | 'UNIT' | 'Pair' | 'ADDRESS' | 'EDIV' | 'CREATE_ACCOUNT' | 'GE' | 'ITER' | 'code' | 'AND';\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/tezos/OperationTypes.d.ts",dts:'/**\n * @publicapi\n * @category Tezos\n */\nexport declare enum TezosOperationType {\n ENDORSEMENT = "endorsement",\n SEED_NONCE_REVELATION = "seed_nonce_revelation",\n DOUBLE_ENDORSEMENT_EVIDENCE = "double_endorsement_evidence",\n DOUBLE_BAKING_EVIDENCE = "double_baking_evidence",\n ACTIVATE_ACCOUNT = "activate_account",\n PROPOSALS = "proposals",\n BALLOT = "ballot",\n REVEAL = "reveal",\n TRANSACTION = "transaction",\n ORIGINATION = "origination",\n DELEGATION = "delegation"\n}\n'},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/tezos/PartialTezosOperation.d.ts",dts:"import { Optional } from '@airgap/beacon-types';\nimport { TezosActivateAccountOperation } from './operations/ActivateAccount';\nimport { TezosBallotOperation } from './operations/Ballot';\nimport { TezosDelegationOperation } from './operations/Delegation';\nimport { TezosDoubleBakingEvidenceOperation } from './operations/DoubleBakingEvidence';\nimport { TezosEndorsementOperation } from './operations/Endorsement';\nimport { TezosOriginationOperation } from './operations/Origination';\nimport { TezosProposalOperation } from './operations/Proposal';\nimport { TezosRevealOperation } from './operations/Reveal';\nimport { TezosSeedNonceRevelationOperation } from './operations/SeedNonceRevelation';\nimport { TezosTransactionOperation } from './operations/Transaction';\n/**\n * @publicapi\n * @category Tezos\n */\nexport type omittedProperties = 'source' | 'fee' | 'counter' | 'gas_limit' | 'storage_limit';\n/**\n * @internalapi\n * @category Tezos\n */\nexport type PartialTezosDelegationOperation = Optional;\n/**\n * @internalapi\n * @category Tezos\n */\nexport type PartialTezosOriginationOperation = Optional;\n/**\n * @internalapi\n * @category Tezos\n */\nexport type PartialTezosRevealOperation = Optional;\n/**\n * @internalapi\n * @category Tezos\n */\nexport type PartialTezosTransactionOperation = Optional;\n/**\n * @publicapi\n * @category Tezos\n */\nexport type PartialTezosOperation = TezosActivateAccountOperation | TezosBallotOperation | PartialTezosDelegationOperation | TezosDoubleBakingEvidenceOperation | TezosEndorsementOperation | PartialTezosOriginationOperation | TezosProposalOperation | PartialTezosRevealOperation | TezosSeedNonceRevelationOperation | PartialTezosTransactionOperation;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/tezos/TezosBaseOperation.d.ts",dts:"import { TezosOperationType } from '../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosBaseOperation {\n kind: TezosOperationType;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/tezos/TezosBlockHeader.d.ts",dts:"/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosBlockHeader {\n level: number;\n proto: number;\n predecessor: string;\n timestamp: string;\n validation_pass: number;\n operations_hash: string;\n fitness: string[];\n context: string;\n priority: number;\n proof_of_work_nonce: string;\n signature: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/tezos/TezosOperation.d.ts",dts:"import { TezosActivateAccountOperation, TezosBallotOperation, TezosDelegationOperation, TezosDoubleBakingEvidenceOperation, TezosEndorsementOperation, TezosOriginationOperation, TezosProposalOperation, TezosRevealOperation, TezosSeedNonceRevelationOperation, TezosTransactionOperation } from '../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport type TezosOperation = TezosActivateAccountOperation | TezosBallotOperation | TezosDelegationOperation | TezosDoubleBakingEvidenceOperation | TezosEndorsementOperation | TezosOriginationOperation | TezosProposalOperation | TezosRevealOperation | TezosSeedNonceRevelationOperation | TezosTransactionOperation;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/tezos/TezosTransactionParameters.d.ts",dts:"import { MichelineMichelsonV1Expression } from './MichelineMichelsonV1Expression';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosTransactionParameters {\n entrypoint: 'default' | 'root' | 'do' | 'set_delegate' | 'remove_delegate' | string;\n value: MichelineMichelsonV1Expression;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/transport/TransportStatus.d.ts",dts:'export declare enum TransportStatus {\n NOT_CONNECTED = "NOT_CONNECTED",\n CONNECTING = "CONNECTING",\n CONNECTED = "CONNECTED"\n}\n'},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/transport/TransportType.d.ts",dts:'/**\n * @internalapi\n */\nexport declare enum TransportType {\n CHROME_MESSAGE = "chrome_message",\n WALLETCONNECT = "walletconnect",\n POST_MESSAGE = "post_message",\n LEDGER = "ledger",\n P2P = "p2p"\n}\n'},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/utils/Optional.d.ts",dts:"export type Optional = Partial & Omit;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/AccountInfo.d.ts",dts:"import { Origin } from '..';\nimport { PermissionEntity } from './PermissionEntity';\nimport { Notification } from './Notification';\nexport type AccountIdentifier = string;\nexport interface AccountInfo extends PermissionEntity {\n accountIdentifier: AccountIdentifier;\n senderId: string;\n origin: {\n type: Origin;\n id: string;\n };\n walletKey?: string;\n publicKey?: string;\n connectedAt: number;\n notification?: Notification;\n hasVerifiedChallenge?: boolean;\n walletType: 'implicit' | 'abstracted_account';\n verificationType?: 'proof_of_event';\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/AnalyticsInterface.d.ts",dts:"export interface AnalyticsInterface {\n track(trigger: 'click' | 'event', section: string, label: string, data?: Record): void;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/BeaconErrorType.d.ts",dts:'export declare enum BeaconErrorType {\n /**\n * {@link BroadcastBeaconError}\n *\n * Will be returned if the user chooses that the transaction is broadcast but there is an error (eg. node not available).\n *\n * Returned by: Broadcast | Operation Request\n */\n BROADCAST_ERROR = "BROADCAST_ERROR",\n /**\n * {@link NetworkNotSupportedBeaconError}\n *\n * Will be returned if the selected network is not supported by the wallet / extension.\n *\n * Returned by: Permission\n */\n NETWORK_NOT_SUPPORTED = "NETWORK_NOT_SUPPORTED",\n /**\n * {@link NoAddressBeaconError}\n *\n * Will be returned if there is no address present for the protocol / network requested.\n *\n * Returned by: Permission\n */\n NO_ADDRESS_ERROR = "NO_ADDRESS_ERROR",\n /**\n * {@link NoPrivateKeyBeaconError}\n *\n * Will be returned if the private key matching the sourceAddress could not be found.\n *\n * Returned by: Sign\n */\n NO_PRIVATE_KEY_FOUND_ERROR = "NO_PRIVATE_KEY_FOUND_ERROR",\n /**\n * {@link NotGrantedBeaconError}\n *\n * Will be returned if the signature was blocked // (Not needed?) Permission: Will be returned if the permissions requested by the App were not granted.\n *\n * Returned by: Sign\n */\n NOT_GRANTED_ERROR = "NOT_GRANTED_ERROR",\n /**\n * {@link ParametersInvalidBeaconError}\n *\n * Will be returned if any of the parameters are invalid.\n *\n * Returned by: Operation Request\n */\n PARAMETERS_INVALID_ERROR = "PARAMETERS_INVALID_ERROR",\n /**\n * {@link TooManyOperationsBeaconError}\n *\n * Will be returned if too many operations were in the request and they were not able to fit into a single operation group.\n *\n * Returned by: Operation Request\n */\n TOO_MANY_OPERATIONS = "TOO_MANY_OPERATIONS",\n /**\n * {@link TransactionInvalidBeaconError}\n *\n * Will be returned if the transaction is not parsable or is rejected by the node.\n *\n * Returned by: Broadcast\n */\n TRANSACTION_INVALID_ERROR = "TRANSACTION_INVALID_ERROR",\n /**\n * {@link SignatureTypeNotSupportedBeaconError}\n *\n * Will be returned if the signing type is not supported.\n *\n * Returned by: Sign\n */\n SIGNATURE_TYPE_NOT_SUPPORTED = "SIGNATURE_TYPE_NOT_SUPPORTED",\n /**\n * {@link AbortedBeaconError}\n *\n * Will be returned if the request was aborted by the user or the wallet.\n *\n * Returned by: Permission | Operation Request | Sign Request | Broadcast\n */\n ABORTED_ERROR = "ABORTED_ERROR",\n /**\n * {@link UnknownBeaconError}\n *\n * Used as a wildcard if an unexpected error occured.\n *\n * Returned by: Permission | Operation Request | Sign Request | Broadcast\n */\n UNKNOWN_ERROR = "UNKNOWN_ERROR"\n}\n'},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/ColorMode.d.ts",dts:'export declare enum ColorMode {\n LIGHT = "light",\n DARK = "dark"\n}\n'},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/ConnectionContext.d.ts",dts:"/// \nimport { Origin } from '..';\n/**\n * @internalapi\n */\nexport interface ConnectionContext {\n origin: Origin;\n id: string;\n extras?: {\n sender: chrome.runtime.MessageSender;\n sendResponse(response?: unknown): void;\n };\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/EncryptionOperation.d.ts",dts:""},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/EncryptionType.d.ts",dts:""},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/Extension.d.ts",dts:"export interface Extension {\n id: string;\n name: string;\n shortName?: string;\n iconUrl?: string;\n color?: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/ExtensionMessage.d.ts",dts:"import { ExtensionMessageTarget } from '..';\n/**\n * @internalapi\n */\nexport interface ExtensionMessage {\n target: ExtensionMessageTarget;\n targetId?: string;\n sender?: U;\n payload: T;\n}\n/**\n * @internalapi\n */\nexport interface EncryptedExtensionMessage {\n target: ExtensionMessageTarget;\n targetId?: string;\n sender?: U;\n encryptedPayload: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/ExtensionMessageTarget.d.ts",dts:'/**\n * @internalapi\n */\nexport declare enum ExtensionMessageTarget {\n BACKGROUND = "toBackground",\n PAGE = "toPage",\n EXTENSION = "toExtension"\n}\n'},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/Notification.d.ts",dts:"export interface Notification {\n version: number;\n apiUrl: string;\n token: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/Origin.d.ts",dts:'/**\n * @internalapi\n */\nexport declare enum Origin {\n WEBSITE = "website",\n EXTENSION = "extension",\n P2P = "p2p",\n WALLETCONNECT = "walletconnect"\n}\n'},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/P2PPairingRequest.d.ts",dts:"import { ExtendedPeerInfo, PeerInfo } from './PeerInfo';\n/**\n * @internalapi\n */\nexport declare class P2PPairingRequest implements PeerInfo {\n readonly type: string;\n relayServer: string;\n id: string;\n name: string;\n icon?: string | undefined;\n appUrl?: string | undefined;\n publicKey: string;\n version: string;\n constructor(id: string, name: string, publicKey: string, version: string, relayServer: string, icon?: string, appUrl?: string);\n}\n/**\n * @internalapi\n */\nexport declare class ExtendedP2PPairingRequest extends P2PPairingRequest implements ExtendedPeerInfo {\n senderId: string;\n constructor(id: string, name: string, publicKey: string, version: string, relayServer: string, senderId: string, icon?: string, appUrl?: string);\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/P2PPairingResponse.d.ts",dts:"import { ExtendedPeerInfo, PeerInfo } from './PeerInfo';\n/**\n * @internalapi\n */\nexport declare class P2PPairingResponse implements PeerInfo {\n readonly type: string;\n relayServer: string;\n id: string;\n name: string;\n icon?: string | undefined;\n appUrl?: string | undefined;\n publicKey: string;\n version: string;\n constructor(id: string, name: string, publicKey: string, version: string, relayServer: string, icon?: string, appUrl?: string);\n}\n/**\n * @internalapi\n */\nexport declare class ExtendedP2PPairingResponse extends P2PPairingResponse implements ExtendedPeerInfo {\n senderId: string;\n constructor(id: string, name: string, publicKey: string, version: string, relayServer: string, senderId: string, icon?: string, appUrl?: string);\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/PeerInfo.d.ts",dts:"export interface PeerInfo {\n id: string;\n name: string;\n type: string;\n icon?: string;\n appUrl?: string;\n publicKey: string;\n version: string;\n}\nexport interface ExtendedPeerInfo extends PeerInfo {\n senderId: string;\n}\nexport type PeerInfoType = PeerInfo | ExtendedPeerInfo;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/PermissionEntity.d.ts",dts:"import { Network, PermissionScope, Threshold } from '..';\nexport interface PermissionEntity {\n address: string;\n network: Network;\n scopes: PermissionScope[];\n threshold?: Threshold;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/PermissionInfo.d.ts",dts:"import { AppMetadata } from '..';\nimport { PermissionEntity } from './PermissionEntity';\nexport interface PermissionInfo extends PermissionEntity {\n accountIdentifier: string;\n senderId: string;\n appMetadata: AppMetadata;\n website: string;\n publicKey?: string;\n connectedAt: number;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/PostMessagePairingRequest.d.ts",dts:"import { ExtendedPeerInfo, PeerInfo } from './PeerInfo';\n/**\n * @internalapi\n */\nexport declare class PostMessagePairingRequest implements PeerInfo {\n readonly type: string;\n id: string;\n name: string;\n icon?: string | undefined;\n appUrl?: string | undefined;\n publicKey: string;\n version: string;\n constructor(id: string, name: string, publicKey: string, version: string, icon?: string, appUrl?: string);\n}\n/**\n * @internalapi\n */\nexport declare class ExtendedPostMessagePairingRequest extends PostMessagePairingRequest implements ExtendedPeerInfo {\n senderId: string;\n constructor(id: string, name: string, publicKey: string, version: string, senderId: string, icon?: string, appUrl?: string);\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/PostMessagePairingResponse.d.ts",dts:"import { ExtendedPeerInfo, PeerInfo } from './PeerInfo';\n/**\n * @internalapi\n */\nexport declare class PostMessagePairingResponse implements PeerInfo {\n readonly type: string;\n id: string;\n name: string;\n icon?: string | undefined;\n appUrl?: string | undefined;\n publicKey: string;\n version: string;\n constructor(id: string, name: string, publicKey: string, version: string, icon?: string, appUrl?: string);\n}\n/**\n * @internalapi\n */\nexport declare class ExtendedPostMessagePairingResponse extends PostMessagePairingResponse implements ExtendedPeerInfo {\n senderId: string;\n extensionId: string;\n constructor(id: string, name: string, publicKey: string, version: string, senderId: string, extensionId: string, icon?: string, appUrl?: string);\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/PushToken.d.ts",dts:"export interface PushToken {\n publicKey: string;\n backendUrl: string;\n accessToken: string;\n managementToken: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/Regions.d.ts",dts:'/**\n * Geographic region where a beacon node is located. This list can be changed in the future to be more specific, but for now it should cover most general areas.\n */\nexport declare enum Regions {\n EUROPE_EAST = "europe-east",\n EUROPE_WEST = "europe-west",\n NORTH_AMERICA_EAST = "north-america-east",\n NORTH_AMERICA_WEST = "north-america-west",\n CENTRAL_AMERICA = "central-america",\n SOUTH_AMERICA = "south-america",\n ASIA_EAST = "asia-east",\n ASIA_WEST = "asia-west",\n AFRICA = "africa",\n AUSTRALIA = "australia"\n}\nexport type NodeDistributions = Record;\n'},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/RequestBroadcastInput.d.ts",dts:"import { Network } from '..';\n/**\n * @category DApp\n */\nexport interface RequestBroadcastInput {\n /**\n * @deprecated You should now specify the network in the constructor of the DAppClient\n */\n network?: Network;\n signedTransaction: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/RequestEncryptPayloadInput.d.ts",dts:"/**\n * @category DApp\n */\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/RequestOperationInput.d.ts",dts:"import { PartialTezosOperation } from './tezos/PartialTezosOperation';\n/**\n * @category DApp\n */\nexport interface RequestOperationInput {\n operationDetails: PartialTezosOperation[];\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/RequestPermissionInput.d.ts",dts:"import { Network, PermissionScope } from '..';\n/**\n * @category DApp\n */\nexport interface RequestPermissionInput {\n /**\n * @deprecated You should now specify the network in the constructor of the DAppClient\n */\n network?: Network;\n scopes?: PermissionScope[];\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/RequestProofOfEventChallengeInput.d.ts",dts:"/**\n * @category DApp\n */\nexport interface RequestProofOfEventChallengeInput {\n dAppChallengeId: string;\n payload: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/RequestSignPayloadInput.d.ts",dts:"import { SigningType } from '..';\n/**\n * @category DApp\n */\nexport interface RequestSignPayloadInput {\n signingType?: SigningType;\n payload: string;\n sourceAddress?: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/WalletConnectPairingRequest.d.ts",dts:"import { ExtendedPeerInfo, PeerInfo } from './PeerInfo';\n/**\n * @internalapi\n */\nexport declare class WalletConnectPairingRequest implements PeerInfo {\n readonly type: string;\n uri: string;\n id: string;\n name: string;\n icon?: string | undefined;\n appUrl?: string | undefined;\n publicKey: string;\n version: string;\n constructor(id: string, name: string, publicKey: string, version: string, uri: string, icon?: string, appUrl?: string);\n}\n/**\n * @internalapi\n */\nexport declare class ExtendedWalletConnectPairingRequest extends WalletConnectPairingRequest implements ExtendedPeerInfo {\n senderId: string;\n constructor(id: string, name: string, publicKey: string, version: string, senderId: string, uri: string, icon?: string, appUrl?: string);\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/WalletConnectPairingResponse.d.ts",dts:"import { PeerInfo } from './PeerInfo';\n/**\n * @internalapi\n */\nexport declare class WalletConnectPairingResponse implements PeerInfo {\n readonly type: string;\n id: string;\n name: string;\n icon?: string | undefined;\n appUrl?: string | undefined;\n publicKey: string;\n version: string;\n constructor(id: string, name: string, publicKey: string, version: string, icon?: string, appUrl?: string);\n}\n/**\n * @internalapi\n */\nexport declare class ExtendedWalletConnectPairingResponse extends WalletConnectPairingResponse {\n senderId: string;\n extensionId: string;\n constructor(id: string, name: string, publicKey: string, version: string, senderId: string, extensionId: string, icon?: string, appUrl?: string);\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/WalletInfo.d.ts",dts:"export interface WalletInfo {\n name: string;\n type?: 'extension' | 'mobile' | 'web' | 'desktop';\n icon?: string;\n deeplink?: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/types/ui.d.ts",dts:"import { NetworkType } from './beacon/NetworkType';\nexport interface AppBase {\n key: string;\n name: string;\n shortName: string;\n color: string;\n logo: string;\n supportedInteractionStandards?: ('wallet_connect' | 'beacon')[];\n}\nexport interface ExtensionApp extends AppBase {\n id: string;\n link: string;\n}\nexport interface WebApp extends AppBase {\n links: {\n [NetworkType.MAINNET]: string;\n [NetworkType.GHOSTNET]?: string;\n [NetworkType.WEEKLYNET]?: string;\n [NetworkType.DAILYNET]?: string;\n [NetworkType.DELPHINET]?: string;\n [NetworkType.EDONET]?: string;\n [NetworkType.FLORENCENET]?: string;\n [NetworkType.GRANADANET]?: string;\n [NetworkType.HANGZHOUNET]?: string;\n [NetworkType.ITHACANET]?: string;\n [NetworkType.JAKARTANET]?: string;\n [NetworkType.KATHMANDUNET]?: string;\n [NetworkType.LIMANET]?: string;\n [NetworkType.MUMBAINET]?: string;\n [NetworkType.NAIROBINET]?: string;\n [NetworkType.OXFORDNET]?: string;\n [NetworkType.CUSTOM]?: string;\n };\n}\nexport interface DesktopApp extends AppBase {\n deepLink: string;\n downloadLink: string;\n}\nexport interface App extends AppBase {\n universalLink: string;\n deepLink?: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/index.d.ts",dts:"/**\n * General docs\n * @module public\n */\nimport { AppMetadata } from './types/beacon/AppMetadata';\nimport { PermissionRequest } from './types/beacon/messages/PermissionRequest';\nimport { ProofOfEventChallengeRequest } from './types/beacon/messages/ProofOfEventChallengeRequest';\nimport { ProofOfEventChallengeResponse } from './types/beacon/messages/ProofOfEventChallengeResponse';\nimport { ProofOfEventChallengeRecordedRequest } from './types/beacon/messages/ProofOfEventChallengeRecordedRequest';\nimport { Network } from './types/beacon/Network';\nimport { BeaconBaseMessage } from './types/beacon/BeaconBaseMessage';\nimport { BeaconMessageType } from './types/beacon/BeaconMessageType';\nimport { PermissionScope } from './types/beacon/PermissionScope';\nimport { PermissionResponse } from './types/beacon/messages/PermissionResponse';\nimport { OperationRequest } from './types/beacon/messages/OperationRequest';\nimport { OperationResponse } from './types/beacon/messages/OperationResponse';\nimport { SignPayloadRequest } from './types/beacon/messages/SignPayloadRequest';\nimport { SignPayloadResponse } from './types/beacon/messages/SignPayloadResponse';\nimport { BroadcastRequest } from './types/beacon/messages/BroadcastRequest';\nimport { BroadcastResponse } from './types/beacon/messages/BroadcastResponse';\nimport { NetworkType } from './types/beacon/NetworkType';\nimport { TezosBaseOperation } from './types/tezos/TezosBaseOperation';\nimport { TezosOperationType } from './types/tezos/OperationTypes';\nimport { TezosActivateAccountOperation } from './types/tezos/operations/ActivateAccount';\nimport { TezosBallotOperation } from './types/tezos/operations/Ballot';\nimport { TezosDelegationOperation } from './types/tezos/operations/Delegation';\nimport { TezosDoubleBakingEvidenceOperation } from './types/tezos/operations/DoubleBakingEvidence';\nimport { TezosBlockHeader } from './types/tezos/TezosBlockHeader';\nimport { TezosDoubleEndorsementEvidenceOperation } from './types/tezos/operations/DoubleEndorsementEvidence';\nimport { TezosEndorsementOperation } from './types/tezos/operations/Endorsement';\nimport { TezosOriginationOperation } from './types/tezos/operations/Origination';\nimport { TezosProposalOperation } from './types/tezos/operations/Proposal';\nimport { TezosRevealOperation } from './types/tezos/operations/Reveal';\nimport { TezosSeedNonceRevelationOperation } from './types/tezos/operations/SeedNonceRevelation';\nimport { TezosTransactionOperation } from './types/tezos/operations/Transaction';\nimport { MichelineMichelsonV1Expression } from './types/tezos/MichelineMichelsonV1Expression';\nimport { MichelsonPrimitives } from './types/tezos/MichelsonPrimitives';\nimport { TezosTransactionParameters } from './types/tezos/TezosTransactionParameters';\nimport { Origin } from './types/Origin';\nimport { AccountInfo, AccountIdentifier } from './types/AccountInfo';\nimport { EncryptedExtensionMessage, ExtensionMessage } from './types/ExtensionMessage';\nimport { ExtensionMessageTarget } from './types/ExtensionMessageTarget';\nimport { TezosOperation } from './types/tezos/TezosOperation';\nimport { BeaconErrorType } from './types/BeaconErrorType';\nimport { ErrorResponse } from './types/beacon/messages/ErrorResponse';\nimport { TransportStatus } from './types/transport/TransportStatus';\nimport { TransportType } from './types/transport/TransportType';\nimport { Storage } from './types/storage/Storage';\nimport { StorageKey } from './types/storage/StorageKey';\nimport { defaultValues, StorageKeyReturnDefaults } from './types/storage/StorageKeyReturnDefaults';\nimport { StorageKeyReturnType } from './types/storage/StorageKeyReturnType';\nimport { ExtendedP2PPairingRequest, P2PPairingRequest } from './types/P2PPairingRequest';\nimport { BeaconMessage } from './types/beacon/BeaconMessage';\nimport { RequestPermissionInput } from './types/RequestPermissionInput';\nimport { RequestProofOfEventChallengeInput } from './types/RequestProofOfEventChallengeInput';\nimport { RequestSignPayloadInput } from './types/RequestSignPayloadInput';\nimport { RequestOperationInput } from './types/RequestOperationInput';\nimport { RequestBroadcastInput } from './types/RequestBroadcastInput';\nimport { PermissionResponseInput, SignPayloadResponseInput, OperationResponseInput, BroadcastResponseInput, BeaconResponseInputMessage, AcknowledgeResponseInput, ErrorResponseInput, IgnoredResponseInputProperties } from './types/beacon/messages/BeaconResponseInputMessage';\nimport { PermissionResponseOutput, SignPayloadResponseOutput, OperationResponseOutput, BroadcastResponseOutput, BeaconResponseOutputMessage, ProofOfEventChallengeResponseOutput } from './types/beacon/messages/BeaconResponseOutputMessage';\nimport { PermissionRequestInput, SignPayloadRequestInput, OperationRequestInput, BroadcastRequestInput, BeaconRequestInputMessage, IgnoredRequestInputProperties, ProofOfEventChallengeRecordedMessageInput, ProofOfEventChallengeRequestInput } from './types/beacon/messages/BeaconRequestInputMessage';\nimport { PermissionRequestOutput, SignPayloadRequestOutput, OperationRequestOutput, BroadcastRequestOutput, BeaconRequestOutputMessage, ProofOfEventChallengeRequestOutput, ProofOfEventChallengeRecordedMessageOutput } from './types/beacon/messages/BeaconRequestOutputMessage';\nimport { PermissionInfo } from './types/PermissionInfo';\nimport { ConnectionContext } from './types/ConnectionContext';\nimport { Threshold } from './types/beacon/Threshold';\nimport { PartialTezosTransactionOperation, PartialTezosOperation, PartialTezosDelegationOperation, PartialTezosOriginationOperation, PartialTezosRevealOperation } from './types/tezos/PartialTezosOperation';\nimport { ExtendedPeerInfo, PeerInfo, PeerInfoType } from './types/PeerInfo';\nimport { AcknowledgeResponse } from './types/beacon/messages/AcknowledgeResponse';\nimport { DisconnectMessage } from './types/beacon/messages/DisconnectMessage';\nimport { SigningType } from './types/beacon/SigningType';\nimport { ExtendedP2PPairingResponse, P2PPairingResponse } from './types/P2PPairingResponse';\nimport { ExtendedPostMessagePairingRequest, PostMessagePairingRequest } from './types/PostMessagePairingRequest';\nimport { ExtendedWalletConnectPairingResponse, WalletConnectPairingResponse } from './types/WalletConnectPairingResponse';\nimport { ExtendedWalletConnectPairingRequest, WalletConnectPairingRequest } from './types/WalletConnectPairingRequest';\nimport { ExtendedPostMessagePairingResponse, PostMessagePairingResponse } from './types/PostMessagePairingResponse';\nimport { BeaconRequestMessage } from './types/beacon/BeaconRequestMessage';\nimport { BeaconResponseMessage } from './types/beacon/BeaconResponseMessage';\nimport { ColorMode } from './types/ColorMode';\nimport { Optional } from './types/utils/Optional';\nimport { Extension } from './types/Extension';\nimport { PermissionEntity } from './types/PermissionEntity';\nimport { WalletInfo } from './types/WalletInfo';\nimport { ChangeAccountRequest } from './types/beacon/messages/ChangeAccountRequest';\nexport * from './types/AnalyticsInterface';\nexport * from './types/beaconV3/PermissionRequest';\nexport * from './types/ui';\nexport * from './types/Regions';\nexport { TezosBaseOperation, TezosOperationType, TezosBlockHeader, MichelineMichelsonV1Expression, MichelsonPrimitives, TezosTransactionParameters, TezosOperation };\nexport { TezosActivateAccountOperation, TezosBallotOperation, TezosDelegationOperation, TezosDoubleBakingEvidenceOperation, TezosDoubleEndorsementEvidenceOperation, TezosEndorsementOperation, TezosOriginationOperation, TezosProposalOperation, TezosRevealOperation, TezosSeedNonceRevelationOperation, TezosTransactionOperation, PartialTezosOperation, PartialTezosTransactionOperation, PartialTezosDelegationOperation, PartialTezosOriginationOperation, PartialTezosRevealOperation };\nexport { AccountIdentifier, AppMetadata, Network, NetworkType, BeaconMessage, PermissionRequest, PermissionResponse, OperationRequest, OperationResponse, SignPayloadRequest, SignPayloadResponse, BroadcastRequest, BroadcastResponse, ChangeAccountRequest, AcknowledgeResponse, DisconnectMessage, BeaconBaseMessage, BeaconMessageType, PermissionScope, Origin, AccountInfo, Threshold, SigningType, ExtensionMessageTarget, ExtensionMessage, Extension, EncryptedExtensionMessage, RequestPermissionInput, RequestProofOfEventChallengeInput, RequestSignPayloadInput, ProofOfEventChallengeRecordedMessageInput, RequestOperationInput, RequestBroadcastInput, PermissionInfo, PermissionEntity, ProofOfEventChallengeRequest, ProofOfEventChallengeResponse, ProofOfEventChallengeRecordedRequest };\nexport { PermissionResponseInput, SignPayloadResponseInput, OperationResponseInput, BroadcastResponseInput, AcknowledgeResponseInput, ErrorResponseInput, PermissionResponseOutput, ProofOfEventChallengeResponseOutput, SignPayloadResponseOutput, OperationResponseOutput, BroadcastResponseOutput, PermissionRequestInput, SignPayloadRequestInput, ProofOfEventChallengeRequestInput, OperationRequestInput, BroadcastRequestInput, PermissionRequestOutput, SignPayloadRequestOutput, ProofOfEventChallengeRequestOutput, ProofOfEventChallengeRecordedMessageOutput, OperationRequestOutput, BroadcastRequestOutput, BeaconRequestInputMessage, BeaconRequestOutputMessage, BeaconResponseInputMessage, BeaconResponseOutputMessage, BeaconRequestMessage, BeaconResponseMessage };\nexport { BeaconErrorType, ErrorResponse };\nexport { TransportStatus, TransportType };\nexport { Storage, StorageKey, StorageKeyReturnDefaults, StorageKeyReturnType };\nexport { PeerInfo, ExtendedPeerInfo, PeerInfoType, PostMessagePairingRequest, PostMessagePairingResponse, ExtendedPostMessagePairingRequest, ExtendedPostMessagePairingResponse, P2PPairingRequest, P2PPairingResponse, ExtendedP2PPairingRequest, ExtendedP2PPairingResponse, WalletConnectPairingResponse, WalletConnectPairingRequest, ExtendedWalletConnectPairingRequest, ExtendedWalletConnectPairingResponse };\nexport { IgnoredResponseInputProperties, IgnoredRequestInputProperties, defaultValues };\nexport { ConnectionContext, ColorMode, WalletInfo };\nexport { PushToken } from './types/PushToken';\nexport { Optional };\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/beacon/messages/AcknowledgeResponse.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType } from '@airgap/beacon-types';\n/**\n * @category Message\n */\nexport interface AcknowledgeResponse extends BeaconBaseMessage {\n type: BeaconMessageType.Acknowledge;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/beacon/messages/BeaconRequestInputMessage.d.ts",dts:"import { Optional, ProofOfEventChallengeRecordedRequest } from '@airgap/beacon-types';\nimport { PermissionRequest, OperationRequest, SignPayloadRequest, ProofOfEventChallengeRequest, BroadcastRequest } from '@airgap/beacon-types';\n/**\n * @internalapi\n * @category DApp\n */\nexport type IgnoredRequestInputProperties = 'id' | 'senderId' | 'version';\n/**\n * @internalapi\n * @category DApp\n */\nexport type PermissionRequestInput = Optional;\n/**\n * @internalapi\n * @category DApp\n */\nexport type ProofOfEventChallengeRequestInput = Optional;\n/**\n * @internalapi\n * @category DApp\n */\nexport type ProofOfEventChallengeRecordedMessageInput = Optional;\n/**\n * @internalapi\n * @category DApp\n */\nexport type OperationRequestInput = Optional;\n/**\n * @internalapi\n * @category DApp\n */\nexport type SignPayloadRequestInput = Optional;\n/**\n * @internalapi\n * @category DApp\n */\n/**\n * @internalapi\n * @category DApp\n */\nexport type BroadcastRequestInput = Optional;\n/**\n * @internalapi\n * @category DApp\n */\nexport type BeaconRequestInputMessage = PermissionRequestInput | OperationRequestInput | SignPayloadRequestInput | BroadcastRequestInput | ProofOfEventChallengeRequestInput | ProofOfEventChallengeRecordedMessageInput;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/beacon/messages/BeaconRequestOutputMessage.d.ts",dts:"import { Optional, ProofOfEventChallengeRecordedRequest, ProofOfEventChallengeRequest } from '@airgap/beacon-types';\nimport { AppMetadata, PermissionRequest, OperationRequest, SignPayloadRequest, BroadcastRequest } from '@airgap/beacon-types';\n/**\n * @category Wallet\n */\nexport type IgnoredRequestOutputProperties = 'version';\n/**\n * @category Wallet\n */\nexport interface ExtraResponseOutputProperties {\n appMetadata: AppMetadata;\n}\n/**\n * @category Wallet\n */\nexport type PermissionRequestOutput = Optional & ExtraResponseOutputProperties;\n/**\n * @category Wallet\n */\nexport type ProofOfEventChallengeRequestOutput = Optional & ExtraResponseOutputProperties;\n/**\n * @category Wallet\n */\nexport type ProofOfEventChallengeRecordedMessageOutput = Optional & ExtraResponseOutputProperties;\n/**\n * @category Wallet\n */\nexport type OperationRequestOutput = Optional & ExtraResponseOutputProperties;\n/**\n * @category Wallet\n */\nexport type SignPayloadRequestOutput = Optional & ExtraResponseOutputProperties;\n/**\n * @category Wallet\n */\n/**\n * @category Wallet\n */\nexport type BroadcastRequestOutput = Optional & ExtraResponseOutputProperties;\n/**\n * @internalapi\n * @category Wallet\n */\nexport type BeaconRequestOutputMessage = PermissionRequestOutput | OperationRequestOutput | SignPayloadRequestOutput | BroadcastRequestOutput | ProofOfEventChallengeRequestOutput | ProofOfEventChallengeRecordedMessageOutput;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/beacon/messages/BeaconResponseInputMessage.d.ts",dts:"import { Optional, ProofOfEventChallengeResponse } from '@airgap/beacon-types';\nimport { PermissionResponse, OperationResponse, SignPayloadResponse, BroadcastResponse, AcknowledgeResponse, ErrorResponse } from '@airgap/beacon-types';\n/**\n * @category Wallet\n */\nexport type IgnoredResponseInputProperties = 'senderId' | 'version';\n/**\n * @category Wallet\n */\nexport type PermissionResponseInput = Optional;\n/**\n * @category Wallet\n */\nexport type ProofOfEventChallengeResponseInput = Optional;\n/**\n * @category Wallet\n */\nexport type OperationResponseInput = Optional;\n/**\n * @category Wallet\n */\nexport type SignPayloadResponseInput = Optional;\n/**\n * @category Wallet\n */\n/**\n * @category Wallet\n */\nexport type BroadcastResponseInput = Optional;\n/**\n * @category Wallet\n */\nexport type AcknowledgeResponseInput = Optional;\n/**\n * @category Wallet\n */\nexport type ErrorResponseInput = Optional;\n/**\n * @internalapi\n * @category Wallet\n */\nexport type BeaconResponseInputMessage = PermissionResponseInput | OperationResponseInput | SignPayloadResponseInput | BroadcastResponseInput | AcknowledgeResponseInput | ErrorResponseInput | ProofOfEventChallengeResponseInput;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/beacon/messages/BeaconResponseOutputMessage.d.ts",dts:"import { PermissionResponse, OperationResponse, SignPayloadResponse, BroadcastResponse, AccountInfo, ProofOfEventChallengeResponse } from '@airgap/beacon-types';\n/**\n * @category DApp\n */\nexport type IgnoredResponseOutputProperties = 'id' | 'version' | 'type';\n/**\n * @category DApp\n */\nexport type PermissionResponseOutput = PermissionResponse & {\n address: string;\n accountInfo: AccountInfo;\n walletKey?: string | undefined;\n};\n/**\n * @category DApp\n */\nexport type ProofOfEventChallengeResponseOutput = ProofOfEventChallengeResponse;\n/**\n * @category DApp\n */\nexport type OperationResponseOutput = OperationResponse;\n/**\n * @category DApp\n */\nexport type SignPayloadResponseOutput = SignPayloadResponse;\n/**\n * @category DApp\n */\n/**\n * @category DApp\n */\nexport type BroadcastResponseOutput = BroadcastResponse;\n/**\n * @internalapi\n * @category DApp\n */\nexport type BeaconResponseOutputMessage = PermissionResponseOutput | OperationResponseOutput | SignPayloadResponseOutput | BroadcastResponseOutput | ProofOfEventChallengeResponseOutput;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/beacon/messages/BroadcastRequest.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType, Network } from '@airgap/beacon-types';\n/**\n * @category Message\n */\nexport interface BroadcastRequest extends BeaconBaseMessage {\n type: BeaconMessageType.BroadcastRequest;\n network: Network;\n signedTransaction: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/beacon/messages/BroadcastResponse.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType } from '@airgap/beacon-types';\n/**\n * @category Message\n */\nexport interface BroadcastResponse extends BeaconBaseMessage {\n type: BeaconMessageType.BroadcastResponse;\n transactionHash: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/beacon/messages/ChangeAccountRequest.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType, Network, PermissionScope, Threshold } from '@airgap/beacon-types';\nimport { Notification } from '../../Notification';\nexport interface ChangeAccountRequest extends BeaconBaseMessage {\n type: BeaconMessageType.ChangeAccountRequest;\n address?: string;\n walletType: 'implicit' | 'abstracted_account';\n verificationType?: 'proof_of_event';\n publicKey?: string;\n network: Network;\n scopes: PermissionScope[];\n threshold?: Threshold;\n notification?: Notification;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/beacon/messages/DisconnectMessage.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType } from '@airgap/beacon-types';\n/**\n * @category Message\n */\nexport interface DisconnectMessage extends BeaconBaseMessage {\n type: BeaconMessageType.Disconnect;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/beacon/messages/EncryptPayloadRequest.d.ts",dts:"/**\n * @category Message\n */\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/beacon/messages/EncryptPayloadResponse.d.ts",dts:"/**\n * @category Message\n */\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/beacon/messages/ErrorResponse.d.ts",dts:"import { BeaconBaseMessage, BeaconErrorType, BeaconMessageType } from '@airgap/beacon-types';\n/**\n * @category Message\n */\nexport interface ErrorResponse extends BeaconBaseMessage {\n type: BeaconMessageType.Error;\n errorType: BeaconErrorType;\n errorData?: any;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/beacon/messages/OperationRequest.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType, Network } from '@airgap/beacon-types';\nimport { PartialTezosOperation } from '../../tezos/PartialTezosOperation';\n/**\n * @category Message\n */\nexport interface OperationRequest extends BeaconBaseMessage {\n type: BeaconMessageType.OperationRequest;\n network: Network;\n operationDetails: PartialTezosOperation[];\n sourceAddress: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/beacon/messages/OperationResponse.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType } from '@airgap/beacon-types';\n/**\n * @category Message\n */\nexport interface OperationResponse extends BeaconBaseMessage {\n type: BeaconMessageType.OperationResponse;\n transactionHash: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/beacon/messages/PermissionRequest.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType, PermissionScope, AppMetadata, Network } from '@airgap/beacon-types';\n/**\n * @category Message\n */\nexport interface PermissionRequest extends BeaconBaseMessage {\n type: BeaconMessageType.PermissionRequest;\n appMetadata: AppMetadata;\n network: Network;\n scopes: PermissionScope[];\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/beacon/messages/PermissionResponse.d.ts",dts:"import { AppMetadata, BeaconBaseMessage, BeaconMessageType, Network, PermissionScope, Threshold } from '@airgap/beacon-types';\nimport { Notification } from '../../Notification';\n/**\n * @category Message\n */\nexport interface PermissionResponse extends BeaconBaseMessage {\n address?: string;\n walletType: 'implicit' | 'abstracted_account';\n verificationType?: 'proof_of_event';\n type: BeaconMessageType.PermissionResponse;\n appMetadata: AppMetadata;\n publicKey?: string;\n network: Network;\n scopes: PermissionScope[];\n threshold?: Threshold;\n notification?: Notification;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/beacon/messages/ProofOfEventChallengeRecordedRequest.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType } from '@airgap/beacon-types';\nexport interface ProofOfEventChallengeRecordedRequest extends BeaconBaseMessage {\n type: BeaconMessageType.ProofOfEventChallengeRecorded;\n dAppChallengeId: string;\n success: boolean;\n errorMessage: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/beacon/messages/ProofOfEventChallengeRequest.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType } from '@airgap/beacon-types';\nexport interface ProofOfEventChallengeRequest extends BeaconBaseMessage {\n type: BeaconMessageType.ProofOfEventChallengeRequest;\n payload: string;\n contractAddress: string;\n dAppChallengeId: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/beacon/messages/ProofOfEventChallengeResponse.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType } from '@airgap/beacon-types';\nexport interface ProofOfEventChallengeResponse extends BeaconBaseMessage {\n type: BeaconMessageType.ProofOfEventChallengeResponse;\n dAppChallengeId: string;\n isAccepted: boolean;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/beacon/messages/SignPayloadRequest.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType, SigningType } from '@airgap/beacon-types';\n/**\n * @category Message\n */\nexport interface SignPayloadRequest extends BeaconBaseMessage {\n type: BeaconMessageType.SignPayloadRequest;\n signingType: SigningType;\n payload: string;\n sourceAddress: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/beacon/messages/SignPayloadResponse.d.ts",dts:"import { BeaconBaseMessage, BeaconMessageType, SigningType } from '@airgap/beacon-types';\n/**\n * @category Message\n */\nexport interface SignPayloadResponse extends BeaconBaseMessage {\n type: BeaconMessageType.SignPayloadResponse;\n signingType: SigningType;\n signature: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/beacon/AppMetadata.d.ts",dts:"export interface AppMetadata {\n senderId: string;\n name: string;\n icon?: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/beacon/BeaconBaseMessage.d.ts",dts:"import { BeaconMessageType } from '@airgap/beacon-types';\n/**\n * @category Message\n */\nexport interface BeaconBaseMessage {\n type: BeaconMessageType;\n version: string;\n id: string;\n senderId: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/beacon/BeaconMessage.d.ts",dts:"import { PermissionResponse, PermissionRequest, OperationRequest, OperationResponse, SignPayloadRequest, SignPayloadResponse, BroadcastRequest, BroadcastResponse, AcknowledgeResponse, DisconnectMessage, ErrorResponse, ProofOfEventChallengeRequest, ProofOfEventChallengeResponse, ProofOfEventChallengeRecordedRequest, ChangeAccountRequest } from '@airgap/beacon-types';\n/**\n * @internalapi\n */\nexport type BeaconMessage = PermissionRequest | PermissionResponse | ProofOfEventChallengeRequest | ProofOfEventChallengeResponse | ProofOfEventChallengeRecordedRequest | OperationRequest | OperationResponse | SignPayloadRequest | SignPayloadResponse | BroadcastRequest | BroadcastResponse | AcknowledgeResponse | DisconnectMessage | ErrorResponse | ChangeAccountRequest;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/beacon/BeaconMessageType.d.ts",dts:'export declare enum BeaconMessageType {\n BlockchainRequest = "blockchain_request",\n PermissionRequest = "permission_request",\n SignPayloadRequest = "sign_payload_request",\n OperationRequest = "operation_request",\n BroadcastRequest = "broadcast_request",\n ChangeAccountRequest = "change_account_request",\n BlockchainResponse = "blockchain_response",\n PermissionResponse = "permission_response",\n SignPayloadResponse = "sign_payload_response",\n ProofOfEventChallengeRequest = "proof_of_event_challenge_request",\n ProofOfEventChallengeResponse = "proof_of_event_challenge_response",\n ProofOfEventChallengeRecorded = "proof_of_event_challenge_recorded",\n OperationResponse = "operation_response",\n BroadcastResponse = "broadcast_response",\n Acknowledge = "acknowledge",\n Disconnect = "disconnect",\n Error = "error"\n}\n'},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/beacon/BeaconRequestMessage.d.ts",dts:"import { PermissionRequest, OperationRequest, SignPayloadRequest, BroadcastRequest, ProofOfEventChallengeRequest, ProofOfEventChallengeRecordedRequest } from '@airgap/beacon-types';\n/**\n * @internalapi\n */\nexport type BeaconRequestMessage = PermissionRequest | OperationRequest | SignPayloadRequest | BroadcastRequest | ProofOfEventChallengeRequest | ProofOfEventChallengeRecordedRequest;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/beacon/BeaconResponseMessage.d.ts",dts:"import { PermissionResponse, OperationResponse, SignPayloadResponse, BroadcastResponse } from '@airgap/beacon-types';\nimport { ErrorResponse } from './messages/ErrorResponse';\n/**\n * @internalapi\n */\nexport type BeaconResponseMessage = PermissionResponse | OperationResponse | SignPayloadResponse | BroadcastResponse | ErrorResponse;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/beacon/Network.d.ts",dts:"import { NetworkType } from '@airgap/beacon-types';\nexport interface Network {\n type: NetworkType;\n name?: string;\n rpcUrl?: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/beacon/NetworkType.d.ts",dts:'export declare enum NetworkType {\n MAINNET = "mainnet",\n GHOSTNET = "ghostnet",\n WEEKLYNET = "weeklynet",\n DAILYNET = "dailynet",\n DELPHINET = "delphinet",\n EDONET = "edonet",\n FLORENCENET = "florencenet",\n GRANADANET = "granadanet",\n HANGZHOUNET = "hangzhounet",\n ITHACANET = "ithacanet",\n JAKARTANET = "jakartanet",\n KATHMANDUNET = "kathmandunet",\n LIMANET = "limanet",\n MUMBAINET = "mumbainet",\n NAIROBINET = "nairobinet",\n OXFORDNET = "oxfordnet",\n CUSTOM = "custom"\n}\n'},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/beacon/PermissionScope.d.ts",dts:'export declare enum PermissionScope {\n SIGN = "sign",\n OPERATION_REQUEST = "operation_request",\n ENCRYPT = "encrypt",\n NOTIFICATION = "notification",\n THRESHOLD = "threshold"\n}\n'},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/beacon/SigningType.d.ts",dts:'export declare enum SigningType {\n RAW = "raw",\n OPERATION = "operation",\n MICHELINE = "micheline"\n}\n'},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/beacon/Threshold.d.ts",dts:"export interface Threshold {\n amount: string;\n timeframe: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/beaconV3/PermissionRequest.d.ts",dts:"import { AccountInfo, AppMetadata, BeaconMessageType, ConnectionContext, WalletInfo, ExtensionApp, DesktopApp, WebApp, App } from '@airgap/beacon-types';\nexport interface ResponseInput {\n request: BlockchainMessage;\n account: AccountInfo;\n output: BeaconMessageWrapper;\n blockExplorer: any;\n connectionContext: ConnectionContext;\n walletInfo: WalletInfo;\n}\nexport interface Blockchain {\n readonly identifier: string;\n validateRequest(input: BlockchainMessage): Promise;\n handleResponse(input: ResponseInput): Promise;\n getWalletLists(): Promise<{\n extensionList: ExtensionApp[];\n desktopList: DesktopApp[];\n webList: WebApp[];\n iOSList: App[];\n }>;\n getAccountInfosFromPermissionResponse(permissionResponse: PermissionResponseV3): Promise<{\n accountId: string;\n address: string;\n publicKey: string;\n }[]>;\n}\nexport interface BeaconMessageWrapper {\n id: string;\n version: string;\n senderId: string;\n message: T;\n}\nexport interface BeaconBaseMessage {\n type: unknown;\n}\nexport interface BlockchainMessage {\n blockchainIdentifier: T;\n type: unknown;\n blockchainData: unknown;\n}\nexport interface PermissionRequestV3 extends BlockchainMessage {\n blockchainIdentifier: T;\n type: BeaconMessageType.PermissionRequest;\n blockchainData: {\n appMetadata: AppMetadata;\n scopes: string[];\n };\n}\nexport interface PermissionResponseV3 extends BlockchainMessage {\n blockchainIdentifier: T;\n type: BeaconMessageType.PermissionResponse;\n blockchainData: {\n appMetadata: AppMetadata;\n scopes: string[];\n };\n}\nexport interface BlockchainRequestV3 extends BlockchainMessage {\n blockchainIdentifier: T;\n type: BeaconMessageType.BlockchainRequest;\n accountId: string;\n blockchainData: {\n type: string;\n scope: string;\n };\n}\nexport interface BlockchainResponseV3 extends BlockchainMessage {\n blockchainIdentifier: T;\n type: BeaconMessageType.BlockchainResponse;\n blockchainData: unknown;\n}\nexport interface BlockchainErrorResponse extends BlockchainMessage {\n blockchainIdentifier: T;\n type: BeaconMessageType.Error;\n error: {\n type: unknown;\n data?: unknown;\n };\n description?: string;\n}\nexport interface AcknowledgeMessage extends BeaconBaseMessage {\n type: BeaconMessageType.Acknowledge;\n}\nexport interface DisconnectMessage extends BeaconBaseMessage {\n type: BeaconMessageType.Disconnect;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/storage/Storage.d.ts",dts:"import { StorageKey, StorageKeyReturnType } from '@airgap/beacon-types';\n/**\n * @internalapi\n *\n * The storage used in the SDK\n */\nexport declare abstract class Storage {\n /**\n * Returns a promise that resolves to true if the storage option is available on this platform.\n */\n static isSupported(): Promise;\n /**\n * Gets a value from storage and returns it\n *\n * @param key The storage key\n */\n abstract get(key: K): Promise;\n /**\n * Sets a value in the storage and persist it\n *\n * @param key The storage key\n * @param value The value to be persisted\n */\n abstract set(key: K, value: StorageKeyReturnType[K]): Promise;\n /**\n * Delete a key from storage\n *\n * @param key The storage key\n */\n abstract delete(key: K): Promise;\n /**\n * This event will fire if the storage was modified by someone else, eg. on another tab\n *\n * @param callback The callback to be called when a storage value changes\n */\n abstract subscribeToStorageChanged(callback: (arg: {\n eventType: 'storageCleared' | 'entryModified';\n key: string | null;\n oldValue: string | null;\n newValue: string | null;\n }) => {}): Promise;\n /**\n * Get the key with the internal prefix\n *\n * @param key the storage key\n */\n abstract getPrefixedKey(key: K): string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/storage/StorageKey.d.ts",dts:'/**\n * @internalapi\n */\nexport declare enum StorageKey {\n TRANSPORT_P2P_PEERS_DAPP = "beacon:communication-peers-dapp",\n TRANSPORT_P2P_PEERS_WALLET = "beacon:communication-peers-wallet",\n TRANSPORT_POSTMESSAGE_PEERS_DAPP = "beacon:postmessage-peers-dapp",\n TRANSPORT_POSTMESSAGE_PEERS_WALLET = "beacon:postmessage-peers-wallet",\n TRANSPORT_WALLETCONNECT_PEERS_DAPP = "beacon:walletconnect-peers-dapp",\n LAST_SELECTED_WALLET = "beacon:last-selected-wallet",\n ACCOUNTS = "beacon:accounts",\n ACTIVE_ACCOUNT = "beacon:active-account",\n PUSH_TOKENS = "beacon:push-tokens",\n BEACON_SDK_SECRET_SEED = "beacon:sdk-secret-seed",\n APP_METADATA_LIST = "beacon:app-metadata-list",\n PERMISSION_LIST = "beacon:permissions",\n ONGOING_PROOF_OF_EVENT_CHALLENGES = "beacon:ongoing-proof-of-event-challenges",\n BEACON_SDK_VERSION = "beacon:sdk_version",\n MATRIX_PRESERVED_STATE = "beacon:sdk-matrix-preserved-state",\n MATRIX_PEER_ROOM_IDS = "beacon:matrix-peer-rooms",\n MATRIX_SELECTED_NODE = "beacon:matrix-selected-node",\n MULTI_NODE_SETUP_DONE = "beacon:multi-node-setup",\n WC_2_CORE_PAIRING = "wc@2:core:0.3//pairing",\n WC_2_CLIENT_SESSION = "wc@2:client:0.3//session",\n WC_2_CORE_KEYCHAIN = "wc@2:core:0.3//keychain",\n WC_2_CORE_MESSAGES = "wc@2:core:0.3//messages",\n WC_2_CLIENT_PROPOSAL = "wc@2:client:0.3//proposal",\n WC_2_CORE_SUBSCRIPTION = "wc@2:core:0.3//subscription",\n WC_2_CORE_HISTORY = "wc@2:core:0.3//history",\n WC_2_CORE_EXPIRER = "wc@2:core:0.3//expirer"\n}\n'},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/storage/StorageKeyReturnDefaults.d.ts",dts:"import { StorageKey, StorageKeyReturnType } from '../..';\n/**\n * @internalapi\n */\nexport type StorageKeyReturnDefaults = {\n [key in StorageKey]: StorageKeyReturnType[key];\n};\n/**\n * @internalapi\n */\nexport declare const defaultValues: StorageKeyReturnDefaults;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/storage/StorageKeyReturnType.d.ts",dts:"import { StorageKey, AccountInfo, AccountIdentifier, P2PPairingRequest, AppMetadata, PermissionInfo, ExtendedWalletConnectPairingResponse, RequestProofOfEventChallengeInput } from '../..';\nimport { ExtendedP2PPairingResponse } from '../P2PPairingResponse';\nimport { PostMessagePairingRequest } from '../PostMessagePairingRequest';\nimport { ExtendedPostMessagePairingResponse } from '../PostMessagePairingResponse';\nimport { PushToken } from '../PushToken';\n/**\n * @internalapi\n */\nexport interface StorageKeyReturnType {\n [StorageKey.TRANSPORT_P2P_PEERS_DAPP]: P2PPairingRequest[];\n [StorageKey.TRANSPORT_P2P_PEERS_WALLET]: ExtendedP2PPairingResponse[];\n [StorageKey.TRANSPORT_POSTMESSAGE_PEERS_DAPP]: PostMessagePairingRequest[];\n [StorageKey.TRANSPORT_POSTMESSAGE_PEERS_WALLET]: ExtendedPostMessagePairingResponse[];\n [StorageKey.TRANSPORT_WALLETCONNECT_PEERS_DAPP]: ExtendedWalletConnectPairingResponse[];\n [StorageKey.LAST_SELECTED_WALLET]: string | undefined;\n [StorageKey.ACCOUNTS]: AccountInfo[];\n [StorageKey.ACTIVE_ACCOUNT]: AccountIdentifier | undefined;\n [StorageKey.PUSH_TOKENS]: PushToken[];\n [StorageKey.BEACON_SDK_SECRET_SEED]: string | undefined;\n [StorageKey.APP_METADATA_LIST]: AppMetadata[];\n [StorageKey.PERMISSION_LIST]: PermissionInfo[];\n [StorageKey.ONGOING_PROOF_OF_EVENT_CHALLENGES]: ({\n contractAddress: string;\n accountIdentifier: string;\n } & RequestProofOfEventChallengeInput)[];\n [StorageKey.BEACON_SDK_VERSION]: string | undefined;\n [StorageKey.MATRIX_PRESERVED_STATE]: {\n [key: string]: unknown;\n };\n [StorageKey.MATRIX_PEER_ROOM_IDS]: {\n [key: string]: string | undefined;\n };\n [StorageKey.MATRIX_SELECTED_NODE]: string | undefined;\n [StorageKey.MULTI_NODE_SETUP_DONE]: boolean | undefined;\n [StorageKey.WC_2_CLIENT_SESSION]: string | undefined;\n [StorageKey.WC_2_CORE_PAIRING]: string | undefined;\n [StorageKey.WC_2_CORE_KEYCHAIN]: string | undefined;\n [StorageKey.WC_2_CORE_MESSAGES]: string | undefined;\n [StorageKey.WC_2_CLIENT_PROPOSAL]: string | undefined;\n [StorageKey.WC_2_CORE_SUBSCRIPTION]: string | undefined;\n [StorageKey.WC_2_CORE_HISTORY]: string | undefined;\n [StorageKey.WC_2_CORE_EXPIRER]: string | undefined;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/tezos/operations/ActivateAccount.d.ts",dts:"import { TezosBaseOperation, TezosOperationType } from '../../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosActivateAccountOperation extends TezosBaseOperation {\n kind: TezosOperationType.ACTIVATE_ACCOUNT;\n pkh: string;\n secret: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/tezos/operations/Ballot.d.ts",dts:"import { TezosBaseOperation, TezosOperationType } from '../../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosBallotOperation extends TezosBaseOperation {\n kind: TezosOperationType.BALLOT;\n source: string;\n period: string;\n proposal: string;\n ballot: 'nay' | 'yay' | 'pass';\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/tezos/operations/Delegation.d.ts",dts:"import { TezosBaseOperation, TezosOperationType } from '../../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosDelegationOperation extends TezosBaseOperation {\n kind: TezosOperationType.DELEGATION;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n delegate?: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/tezos/operations/DoubleBakingEvidence.d.ts",dts:"import { TezosBaseOperation, TezosOperationType, TezosBlockHeader } from '../../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosDoubleBakingEvidenceOperation extends TezosBaseOperation {\n kind: TezosOperationType.DOUBLE_BAKING_EVIDENCE;\n bh1: TezosBlockHeader;\n bh2: TezosBlockHeader;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/tezos/operations/DoubleEndorsementEvidence.d.ts",dts:"import { TezosBaseOperation, TezosOperationType } from '../../..';\nexport interface InlinedEndorsement {\n branch: string;\n operations: InlinedEndorsementContents;\n signature?: string;\n}\nexport interface InlinedEndorsementContents {\n kind: TezosOperationType.ENDORSEMENT;\n level: string;\n}\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosDoubleEndorsementEvidenceOperation extends TezosBaseOperation {\n kind: TezosOperationType.DOUBLE_ENDORSEMENT_EVIDENCE;\n op1: InlinedEndorsement;\n op2: InlinedEndorsement;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/tezos/operations/Endorsement.d.ts",dts:"import { TezosBaseOperation, TezosOperationType } from '../../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosEndorsementOperation extends TezosBaseOperation {\n kind: TezosOperationType.ENDORSEMENT;\n level: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/tezos/operations/Origination.d.ts",dts:"import { TezosBaseOperation, TezosOperationType } from '../../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosOriginationOperation extends TezosBaseOperation {\n kind: TezosOperationType.ORIGINATION;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n balance: string;\n delegate?: string;\n script: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/tezos/operations/Proposal.d.ts",dts:"import { TezosBaseOperation, TezosOperationType } from '../../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosProposalOperation extends TezosBaseOperation {\n kind: TezosOperationType.PROPOSALS;\n period: string;\n proposals: string[];\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/tezos/operations/Reveal.d.ts",dts:"import { TezosBaseOperation, TezosOperationType } from '../../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosRevealOperation extends TezosBaseOperation {\n kind: TezosOperationType.REVEAL;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n public_key: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/tezos/operations/SeedNonceRevelation.d.ts",dts:"import { TezosBaseOperation, TezosOperationType } from '../../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosSeedNonceRevelationOperation extends TezosBaseOperation {\n kind: TezosOperationType.SEED_NONCE_REVELATION;\n level: string;\n nonce: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/tezos/operations/Transaction.d.ts",dts:"import { TezosBaseOperation, TezosOperationType, TezosTransactionParameters } from '../../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosTransactionOperation extends TezosBaseOperation {\n kind: TezosOperationType.TRANSACTION;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n amount: string;\n destination: string;\n parameters?: TezosTransactionParameters;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/tezos/MichelineMichelsonV1Expression.d.ts",dts:"import { MichelsonPrimitives } from '../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport type MichelineMichelsonV1Expression = {\n int: string;\n} | {\n string: string;\n} | {\n bytes: string;\n} | MichelineMichelsonV1Expression[] | {\n prim: MichelsonPrimitives;\n args?: MichelineMichelsonV1Expression[];\n annots?: string[];\n};\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/tezos/MichelsonPrimitives.d.ts",dts:"/**\n * @internalapi\n * @category Tezos\n */\nexport type MichelsonPrimitives = 'ADD' | 'IF_NONE' | 'SWAP' | 'set' | 'nat' | 'CHECK_SIGNATURE' | 'IF_LEFT' | 'LAMBDA' | 'Elt' | 'CREATE_CONTRACT' | 'NEG' | 'big_map' | 'map' | 'or' | 'BLAKE2B' | 'bytes' | 'SHA256' | 'SET_DELEGATE' | 'CONTRACT' | 'LSL' | 'SUB' | 'IMPLICIT_ACCOUNT' | 'PACK' | 'list' | 'PAIR' | 'Right' | 'contract' | 'GT' | 'LEFT' | 'STEPS_TO_QUOTA' | 'storage' | 'TRANSFER_TOKENS' | 'CDR' | 'SLICE' | 'PUSH' | 'False' | 'SHA512' | 'CHAIN_ID' | 'BALANCE' | 'signature' | 'DUG' | 'SELF' | 'EMPTY_BIG_MAP' | 'LSR' | 'OR' | 'XOR' | 'lambda' | 'COMPARE' | 'key' | 'option' | 'Unit' | 'Some' | 'UNPACK' | 'NEQ' | 'INT' | 'pair' | 'AMOUNT' | 'DIP' | 'ABS' | 'ISNAT' | 'EXEC' | 'NOW' | 'LOOP' | 'chain_id' | 'string' | 'MEM' | 'MAP' | 'None' | 'address' | 'CONCAT' | 'EMPTY_SET' | 'MUL' | 'LOOP_LEFT' | 'timestamp' | 'LT' | 'UPDATE' | 'DUP' | 'SOURCE' | 'mutez' | 'SENDER' | 'IF_CONS' | 'RIGHT' | 'CAR' | 'CONS' | 'LE' | 'NONE' | 'IF' | 'SOME' | 'GET' | 'Left' | 'CAST' | 'int' | 'SIZE' | 'key_hash' | 'unit' | 'DROP' | 'EMPTY_MAP' | 'NIL' | 'DIG' | 'APPLY' | 'bool' | 'RENAME' | 'operation' | 'True' | 'FAILWITH' | 'parameter' | 'HASH_KEY' | 'EQ' | 'NOT' | 'UNIT' | 'Pair' | 'ADDRESS' | 'EDIV' | 'CREATE_ACCOUNT' | 'GE' | 'ITER' | 'code' | 'AND';\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/tezos/OperationTypes.d.ts",dts:'/**\n * @publicapi\n * @category Tezos\n */\nexport declare enum TezosOperationType {\n ENDORSEMENT = "endorsement",\n SEED_NONCE_REVELATION = "seed_nonce_revelation",\n DOUBLE_ENDORSEMENT_EVIDENCE = "double_endorsement_evidence",\n DOUBLE_BAKING_EVIDENCE = "double_baking_evidence",\n ACTIVATE_ACCOUNT = "activate_account",\n PROPOSALS = "proposals",\n BALLOT = "ballot",\n REVEAL = "reveal",\n TRANSACTION = "transaction",\n ORIGINATION = "origination",\n DELEGATION = "delegation"\n}\n'},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/tezos/PartialTezosOperation.d.ts",dts:"import { Optional } from '@airgap/beacon-types';\nimport { TezosActivateAccountOperation } from './operations/ActivateAccount';\nimport { TezosBallotOperation } from './operations/Ballot';\nimport { TezosDelegationOperation } from './operations/Delegation';\nimport { TezosDoubleBakingEvidenceOperation } from './operations/DoubleBakingEvidence';\nimport { TezosEndorsementOperation } from './operations/Endorsement';\nimport { TezosOriginationOperation } from './operations/Origination';\nimport { TezosProposalOperation } from './operations/Proposal';\nimport { TezosRevealOperation } from './operations/Reveal';\nimport { TezosSeedNonceRevelationOperation } from './operations/SeedNonceRevelation';\nimport { TezosTransactionOperation } from './operations/Transaction';\n/**\n * @publicapi\n * @category Tezos\n */\nexport type omittedProperties = 'source' | 'fee' | 'counter' | 'gas_limit' | 'storage_limit';\n/**\n * @internalapi\n * @category Tezos\n */\nexport type PartialTezosDelegationOperation = Optional;\n/**\n * @internalapi\n * @category Tezos\n */\nexport type PartialTezosOriginationOperation = Optional;\n/**\n * @internalapi\n * @category Tezos\n */\nexport type PartialTezosRevealOperation = Optional;\n/**\n * @internalapi\n * @category Tezos\n */\nexport type PartialTezosTransactionOperation = Optional;\n/**\n * @publicapi\n * @category Tezos\n */\nexport type PartialTezosOperation = TezosActivateAccountOperation | TezosBallotOperation | PartialTezosDelegationOperation | TezosDoubleBakingEvidenceOperation | TezosEndorsementOperation | PartialTezosOriginationOperation | TezosProposalOperation | PartialTezosRevealOperation | TezosSeedNonceRevelationOperation | PartialTezosTransactionOperation;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/tezos/TezosBaseOperation.d.ts",dts:"import { TezosOperationType } from '../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosBaseOperation {\n kind: TezosOperationType;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/tezos/TezosBlockHeader.d.ts",dts:"/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosBlockHeader {\n level: number;\n proto: number;\n predecessor: string;\n timestamp: string;\n validation_pass: number;\n operations_hash: string;\n fitness: string[];\n context: string;\n priority: number;\n proof_of_work_nonce: string;\n signature: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/tezos/TezosOperation.d.ts",dts:"import { TezosActivateAccountOperation, TezosBallotOperation, TezosDelegationOperation, TezosDoubleBakingEvidenceOperation, TezosEndorsementOperation, TezosOriginationOperation, TezosProposalOperation, TezosRevealOperation, TezosSeedNonceRevelationOperation, TezosTransactionOperation } from '../..';\n/**\n * @internalapi\n * @category Tezos\n */\nexport type TezosOperation = TezosActivateAccountOperation | TezosBallotOperation | TezosDelegationOperation | TezosDoubleBakingEvidenceOperation | TezosEndorsementOperation | TezosOriginationOperation | TezosProposalOperation | TezosRevealOperation | TezosSeedNonceRevelationOperation | TezosTransactionOperation;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/tezos/TezosTransactionParameters.d.ts",dts:"import { MichelineMichelsonV1Expression } from './MichelineMichelsonV1Expression';\n/**\n * @internalapi\n * @category Tezos\n */\nexport interface TezosTransactionParameters {\n entrypoint: 'default' | 'root' | 'do' | 'set_delegate' | 'remove_delegate' | string;\n value: MichelineMichelsonV1Expression;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/transport/TransportStatus.d.ts",dts:'export declare enum TransportStatus {\n NOT_CONNECTED = "NOT_CONNECTED",\n CONNECTING = "CONNECTING",\n CONNECTED = "CONNECTED"\n}\n'},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/transport/TransportType.d.ts",dts:'/**\n * @internalapi\n */\nexport declare enum TransportType {\n CHROME_MESSAGE = "chrome_message",\n WALLETCONNECT = "walletconnect",\n POST_MESSAGE = "post_message",\n LEDGER = "ledger",\n P2P = "p2p"\n}\n'},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/utils/Optional.d.ts",dts:"export type Optional = Partial & Omit;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/AccountInfo.d.ts",dts:"import { Origin } from '..';\nimport { PermissionEntity } from './PermissionEntity';\nimport { Notification } from './Notification';\nexport type AccountIdentifier = string;\nexport interface AccountInfo extends PermissionEntity {\n accountIdentifier: AccountIdentifier;\n senderId: string;\n origin: {\n type: Origin;\n id: string;\n };\n walletKey?: string;\n publicKey?: string;\n connectedAt: number;\n notification?: Notification;\n hasVerifiedChallenge?: boolean;\n walletType: 'implicit' | 'abstracted_account';\n verificationType?: 'proof_of_event';\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/AnalyticsInterface.d.ts",dts:"export interface AnalyticsInterface {\n track(trigger: 'click' | 'event', section: string, label: string, data?: Record): void;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/BeaconErrorType.d.ts",dts:'export declare enum BeaconErrorType {\n /**\n * {@link BroadcastBeaconError}\n *\n * Will be returned if the user chooses that the transaction is broadcast but there is an error (eg. node not available).\n *\n * Returned by: Broadcast | Operation Request\n */\n BROADCAST_ERROR = "BROADCAST_ERROR",\n /**\n * {@link NetworkNotSupportedBeaconError}\n *\n * Will be returned if the selected network is not supported by the wallet / extension.\n *\n * Returned by: Permission\n */\n NETWORK_NOT_SUPPORTED = "NETWORK_NOT_SUPPORTED",\n /**\n * {@link NoAddressBeaconError}\n *\n * Will be returned if there is no address present for the protocol / network requested.\n *\n * Returned by: Permission\n */\n NO_ADDRESS_ERROR = "NO_ADDRESS_ERROR",\n /**\n * {@link NoPrivateKeyBeaconError}\n *\n * Will be returned if the private key matching the sourceAddress could not be found.\n *\n * Returned by: Sign\n */\n NO_PRIVATE_KEY_FOUND_ERROR = "NO_PRIVATE_KEY_FOUND_ERROR",\n /**\n * {@link NotGrantedBeaconError}\n *\n * Will be returned if the signature was blocked // (Not needed?) Permission: Will be returned if the permissions requested by the App were not granted.\n *\n * Returned by: Sign\n */\n NOT_GRANTED_ERROR = "NOT_GRANTED_ERROR",\n /**\n * {@link ParametersInvalidBeaconError}\n *\n * Will be returned if any of the parameters are invalid.\n *\n * Returned by: Operation Request\n */\n PARAMETERS_INVALID_ERROR = "PARAMETERS_INVALID_ERROR",\n /**\n * {@link TooManyOperationsBeaconError}\n *\n * Will be returned if too many operations were in the request and they were not able to fit into a single operation group.\n *\n * Returned by: Operation Request\n */\n TOO_MANY_OPERATIONS = "TOO_MANY_OPERATIONS",\n /**\n * {@link TransactionInvalidBeaconError}\n *\n * Will be returned if the transaction is not parsable or is rejected by the node.\n *\n * Returned by: Broadcast\n */\n TRANSACTION_INVALID_ERROR = "TRANSACTION_INVALID_ERROR",\n /**\n * {@link SignatureTypeNotSupportedBeaconError}\n *\n * Will be returned if the signing type is not supported.\n *\n * Returned by: Sign\n */\n SIGNATURE_TYPE_NOT_SUPPORTED = "SIGNATURE_TYPE_NOT_SUPPORTED",\n /**\n * {@link AbortedBeaconError}\n *\n * Will be returned if the request was aborted by the user or the wallet.\n *\n * Returned by: Permission | Operation Request | Sign Request | Broadcast\n */\n ABORTED_ERROR = "ABORTED_ERROR",\n /**\n * {@link UnknownBeaconError}\n *\n * Used as a wildcard if an unexpected error occured.\n *\n * Returned by: Permission | Operation Request | Sign Request | Broadcast\n */\n UNKNOWN_ERROR = "UNKNOWN_ERROR"\n}\n'},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/ColorMode.d.ts",dts:'export declare enum ColorMode {\n LIGHT = "light",\n DARK = "dark"\n}\n'},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/ConnectionContext.d.ts",dts:"/// \nimport { Origin } from '..';\n/**\n * @internalapi\n */\nexport interface ConnectionContext {\n origin: Origin;\n id: string;\n extras?: {\n sender: chrome.runtime.MessageSender;\n sendResponse(response?: unknown): void;\n };\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/EncryptionOperation.d.ts",dts:""},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/EncryptionType.d.ts",dts:""},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/Extension.d.ts",dts:"export interface Extension {\n id: string;\n name: string;\n shortName?: string;\n iconUrl?: string;\n color?: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/ExtensionMessage.d.ts",dts:"import { ExtensionMessageTarget } from '..';\n/**\n * @internalapi\n */\nexport interface ExtensionMessage {\n target: ExtensionMessageTarget;\n targetId?: string;\n sender?: U;\n payload: T;\n}\n/**\n * @internalapi\n */\nexport interface EncryptedExtensionMessage {\n target: ExtensionMessageTarget;\n targetId?: string;\n sender?: U;\n encryptedPayload: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/ExtensionMessageTarget.d.ts",dts:'/**\n * @internalapi\n */\nexport declare enum ExtensionMessageTarget {\n BACKGROUND = "toBackground",\n PAGE = "toPage",\n EXTENSION = "toExtension"\n}\n'},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/Notification.d.ts",dts:"export interface Notification {\n version: number;\n apiUrl: string;\n token: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/Origin.d.ts",dts:'/**\n * @internalapi\n */\nexport declare enum Origin {\n WEBSITE = "website",\n EXTENSION = "extension",\n P2P = "p2p",\n WALLETCONNECT = "walletconnect"\n}\n'},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/P2PPairingRequest.d.ts",dts:"import { ExtendedPeerInfo, PeerInfo } from './PeerInfo';\n/**\n * @internalapi\n */\nexport declare class P2PPairingRequest implements PeerInfo {\n readonly type: string;\n relayServer: string;\n id: string;\n name: string;\n icon?: string | undefined;\n appUrl?: string | undefined;\n publicKey: string;\n version: string;\n constructor(id: string, name: string, publicKey: string, version: string, relayServer: string, icon?: string, appUrl?: string);\n}\n/**\n * @internalapi\n */\nexport declare class ExtendedP2PPairingRequest extends P2PPairingRequest implements ExtendedPeerInfo {\n senderId: string;\n constructor(id: string, name: string, publicKey: string, version: string, relayServer: string, senderId: string, icon?: string, appUrl?: string);\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/P2PPairingResponse.d.ts",dts:"import { ExtendedPeerInfo, PeerInfo } from './PeerInfo';\n/**\n * @internalapi\n */\nexport declare class P2PPairingResponse implements PeerInfo {\n readonly type: string;\n relayServer: string;\n id: string;\n name: string;\n icon?: string | undefined;\n appUrl?: string | undefined;\n publicKey: string;\n version: string;\n constructor(id: string, name: string, publicKey: string, version: string, relayServer: string, icon?: string, appUrl?: string);\n}\n/**\n * @internalapi\n */\nexport declare class ExtendedP2PPairingResponse extends P2PPairingResponse implements ExtendedPeerInfo {\n senderId: string;\n constructor(id: string, name: string, publicKey: string, version: string, relayServer: string, senderId: string, icon?: string, appUrl?: string);\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/PeerInfo.d.ts",dts:"export interface PeerInfo {\n id: string;\n name: string;\n type: string;\n icon?: string;\n appUrl?: string;\n publicKey: string;\n version: string;\n}\nexport interface ExtendedPeerInfo extends PeerInfo {\n senderId: string;\n}\nexport type PeerInfoType = PeerInfo | ExtendedPeerInfo;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/PermissionEntity.d.ts",dts:"import { Network, PermissionScope, Threshold } from '..';\nexport interface PermissionEntity {\n address: string;\n network: Network;\n scopes: PermissionScope[];\n threshold?: Threshold;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/PermissionInfo.d.ts",dts:"import { AppMetadata } from '..';\nimport { PermissionEntity } from './PermissionEntity';\nexport interface PermissionInfo extends PermissionEntity {\n accountIdentifier: string;\n senderId: string;\n appMetadata: AppMetadata;\n website: string;\n publicKey?: string;\n connectedAt: number;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/PostMessagePairingRequest.d.ts",dts:"import { ExtendedPeerInfo, PeerInfo } from './PeerInfo';\n/**\n * @internalapi\n */\nexport declare class PostMessagePairingRequest implements PeerInfo {\n readonly type: string;\n id: string;\n name: string;\n icon?: string | undefined;\n appUrl?: string | undefined;\n publicKey: string;\n version: string;\n constructor(id: string, name: string, publicKey: string, version: string, icon?: string, appUrl?: string);\n}\n/**\n * @internalapi\n */\nexport declare class ExtendedPostMessagePairingRequest extends PostMessagePairingRequest implements ExtendedPeerInfo {\n senderId: string;\n constructor(id: string, name: string, publicKey: string, version: string, senderId: string, icon?: string, appUrl?: string);\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/PostMessagePairingResponse.d.ts",dts:"import { ExtendedPeerInfo, PeerInfo } from './PeerInfo';\n/**\n * @internalapi\n */\nexport declare class PostMessagePairingResponse implements PeerInfo {\n readonly type: string;\n id: string;\n name: string;\n icon?: string | undefined;\n appUrl?: string | undefined;\n publicKey: string;\n version: string;\n constructor(id: string, name: string, publicKey: string, version: string, icon?: string, appUrl?: string);\n}\n/**\n * @internalapi\n */\nexport declare class ExtendedPostMessagePairingResponse extends PostMessagePairingResponse implements ExtendedPeerInfo {\n senderId: string;\n extensionId: string;\n constructor(id: string, name: string, publicKey: string, version: string, senderId: string, extensionId: string, icon?: string, appUrl?: string);\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/PushToken.d.ts",dts:"export interface PushToken {\n publicKey: string;\n backendUrl: string;\n accessToken: string;\n managementToken: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/Regions.d.ts",dts:'/**\n * Geographic region where a beacon node is located. This list can be changed in the future to be more specific, but for now it should cover most general areas.\n */\nexport declare enum Regions {\n EUROPE_EAST = "europe-east",\n EUROPE_WEST = "europe-west",\n NORTH_AMERICA_EAST = "north-america-east",\n NORTH_AMERICA_WEST = "north-america-west",\n CENTRAL_AMERICA = "central-america",\n SOUTH_AMERICA = "south-america",\n ASIA_EAST = "asia-east",\n ASIA_WEST = "asia-west",\n AFRICA = "africa",\n AUSTRALIA = "australia"\n}\nexport type NodeDistributions = Record;\n'},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/RequestBroadcastInput.d.ts",dts:"import { Network } from '..';\n/**\n * @category DApp\n */\nexport interface RequestBroadcastInput {\n /**\n * @deprecated You should now specify the network in the constructor of the DAppClient\n */\n network?: Network;\n signedTransaction: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/RequestEncryptPayloadInput.d.ts",dts:"/**\n * @category DApp\n */\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/RequestOperationInput.d.ts",dts:"import { PartialTezosOperation } from './tezos/PartialTezosOperation';\n/**\n * @category DApp\n */\nexport interface RequestOperationInput {\n operationDetails: PartialTezosOperation[];\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/RequestPermissionInput.d.ts",dts:"import { Network, PermissionScope } from '..';\n/**\n * @category DApp\n */\nexport interface RequestPermissionInput {\n /**\n * @deprecated You should now specify the network in the constructor of the DAppClient\n */\n network?: Network;\n scopes?: PermissionScope[];\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/RequestProofOfEventChallengeInput.d.ts",dts:"/**\n * @category DApp\n */\nexport interface RequestProofOfEventChallengeInput {\n dAppChallengeId: string;\n payload: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/RequestSignPayloadInput.d.ts",dts:"import { SigningType } from '..';\n/**\n * @category DApp\n */\nexport interface RequestSignPayloadInput {\n signingType?: SigningType;\n payload: string;\n sourceAddress?: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/WalletConnectPairingRequest.d.ts",dts:"import { ExtendedPeerInfo, PeerInfo } from './PeerInfo';\n/**\n * @internalapi\n */\nexport declare class WalletConnectPairingRequest implements PeerInfo {\n readonly type: string;\n uri: string;\n id: string;\n name: string;\n icon?: string | undefined;\n appUrl?: string | undefined;\n publicKey: string;\n version: string;\n constructor(id: string, name: string, publicKey: string, version: string, uri: string, icon?: string, appUrl?: string);\n}\n/**\n * @internalapi\n */\nexport declare class ExtendedWalletConnectPairingRequest extends WalletConnectPairingRequest implements ExtendedPeerInfo {\n senderId: string;\n constructor(id: string, name: string, publicKey: string, version: string, senderId: string, uri: string, icon?: string, appUrl?: string);\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/WalletConnectPairingResponse.d.ts",dts:"import { PeerInfo } from './PeerInfo';\n/**\n * @internalapi\n */\nexport declare class WalletConnectPairingResponse implements PeerInfo {\n readonly type: string;\n id: string;\n name: string;\n icon?: string | undefined;\n appUrl?: string | undefined;\n publicKey: string;\n version: string;\n constructor(id: string, name: string, publicKey: string, version: string, icon?: string, appUrl?: string);\n}\n/**\n * @internalapi\n */\nexport declare class ExtendedWalletConnectPairingResponse extends WalletConnectPairingResponse {\n senderId: string;\n extensionId: string;\n constructor(id: string, name: string, publicKey: string, version: string, senderId: string, extensionId: string, icon?: string, appUrl?: string);\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/WalletInfo.d.ts",dts:"export interface WalletInfo {\n name: string;\n type?: 'extension' | 'mobile' | 'web' | 'desktop';\n icon?: string;\n deeplink?: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/types/ui.d.ts",dts:"import { NetworkType } from './beacon/NetworkType';\nexport interface AppBase {\n key: string;\n name: string;\n shortName: string;\n color: string;\n logo: string;\n supportedInteractionStandards?: ('wallet_connect' | 'beacon')[];\n}\nexport interface ExtensionApp extends AppBase {\n id: string;\n link: string;\n}\nexport interface WebApp extends AppBase {\n links: {\n [NetworkType.MAINNET]: string;\n [NetworkType.GHOSTNET]?: string;\n [NetworkType.WEEKLYNET]?: string;\n [NetworkType.DAILYNET]?: string;\n [NetworkType.DELPHINET]?: string;\n [NetworkType.EDONET]?: string;\n [NetworkType.FLORENCENET]?: string;\n [NetworkType.GRANADANET]?: string;\n [NetworkType.HANGZHOUNET]?: string;\n [NetworkType.ITHACANET]?: string;\n [NetworkType.JAKARTANET]?: string;\n [NetworkType.KATHMANDUNET]?: string;\n [NetworkType.LIMANET]?: string;\n [NetworkType.MUMBAINET]?: string;\n [NetworkType.NAIROBINET]?: string;\n [NetworkType.OXFORDNET]?: string;\n [NetworkType.CUSTOM]?: string;\n };\n}\nexport interface DesktopApp extends AppBase {\n deepLink: string;\n downloadLink: string;\n}\nexport interface App extends AppBase {\n universalLink: string;\n deepLink?: string;\n}\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-types/dist/esm/index.d.ts",dts:"/**\n * General docs\n * @module public\n */\nimport { AppMetadata } from './types/beacon/AppMetadata';\nimport { PermissionRequest } from './types/beacon/messages/PermissionRequest';\nimport { ProofOfEventChallengeRequest } from './types/beacon/messages/ProofOfEventChallengeRequest';\nimport { ProofOfEventChallengeResponse } from './types/beacon/messages/ProofOfEventChallengeResponse';\nimport { ProofOfEventChallengeRecordedRequest } from './types/beacon/messages/ProofOfEventChallengeRecordedRequest';\nimport { Network } from './types/beacon/Network';\nimport { BeaconBaseMessage } from './types/beacon/BeaconBaseMessage';\nimport { BeaconMessageType } from './types/beacon/BeaconMessageType';\nimport { PermissionScope } from './types/beacon/PermissionScope';\nimport { PermissionResponse } from './types/beacon/messages/PermissionResponse';\nimport { OperationRequest } from './types/beacon/messages/OperationRequest';\nimport { OperationResponse } from './types/beacon/messages/OperationResponse';\nimport { SignPayloadRequest } from './types/beacon/messages/SignPayloadRequest';\nimport { SignPayloadResponse } from './types/beacon/messages/SignPayloadResponse';\nimport { BroadcastRequest } from './types/beacon/messages/BroadcastRequest';\nimport { BroadcastResponse } from './types/beacon/messages/BroadcastResponse';\nimport { NetworkType } from './types/beacon/NetworkType';\nimport { TezosBaseOperation } from './types/tezos/TezosBaseOperation';\nimport { TezosOperationType } from './types/tezos/OperationTypes';\nimport { TezosActivateAccountOperation } from './types/tezos/operations/ActivateAccount';\nimport { TezosBallotOperation } from './types/tezos/operations/Ballot';\nimport { TezosDelegationOperation } from './types/tezos/operations/Delegation';\nimport { TezosDoubleBakingEvidenceOperation } from './types/tezos/operations/DoubleBakingEvidence';\nimport { TezosBlockHeader } from './types/tezos/TezosBlockHeader';\nimport { TezosDoubleEndorsementEvidenceOperation } from './types/tezos/operations/DoubleEndorsementEvidence';\nimport { TezosEndorsementOperation } from './types/tezos/operations/Endorsement';\nimport { TezosOriginationOperation } from './types/tezos/operations/Origination';\nimport { TezosProposalOperation } from './types/tezos/operations/Proposal';\nimport { TezosRevealOperation } from './types/tezos/operations/Reveal';\nimport { TezosSeedNonceRevelationOperation } from './types/tezos/operations/SeedNonceRevelation';\nimport { TezosTransactionOperation } from './types/tezos/operations/Transaction';\nimport { MichelineMichelsonV1Expression } from './types/tezos/MichelineMichelsonV1Expression';\nimport { MichelsonPrimitives } from './types/tezos/MichelsonPrimitives';\nimport { TezosTransactionParameters } from './types/tezos/TezosTransactionParameters';\nimport { Origin } from './types/Origin';\nimport { AccountInfo, AccountIdentifier } from './types/AccountInfo';\nimport { EncryptedExtensionMessage, ExtensionMessage } from './types/ExtensionMessage';\nimport { ExtensionMessageTarget } from './types/ExtensionMessageTarget';\nimport { TezosOperation } from './types/tezos/TezosOperation';\nimport { BeaconErrorType } from './types/BeaconErrorType';\nimport { ErrorResponse } from './types/beacon/messages/ErrorResponse';\nimport { TransportStatus } from './types/transport/TransportStatus';\nimport { TransportType } from './types/transport/TransportType';\nimport { Storage } from './types/storage/Storage';\nimport { StorageKey } from './types/storage/StorageKey';\nimport { defaultValues, StorageKeyReturnDefaults } from './types/storage/StorageKeyReturnDefaults';\nimport { StorageKeyReturnType } from './types/storage/StorageKeyReturnType';\nimport { ExtendedP2PPairingRequest, P2PPairingRequest } from './types/P2PPairingRequest';\nimport { BeaconMessage } from './types/beacon/BeaconMessage';\nimport { RequestPermissionInput } from './types/RequestPermissionInput';\nimport { RequestProofOfEventChallengeInput } from './types/RequestProofOfEventChallengeInput';\nimport { RequestSignPayloadInput } from './types/RequestSignPayloadInput';\nimport { RequestOperationInput } from './types/RequestOperationInput';\nimport { RequestBroadcastInput } from './types/RequestBroadcastInput';\nimport { PermissionResponseInput, SignPayloadResponseInput, OperationResponseInput, BroadcastResponseInput, BeaconResponseInputMessage, AcknowledgeResponseInput, ErrorResponseInput, IgnoredResponseInputProperties } from './types/beacon/messages/BeaconResponseInputMessage';\nimport { PermissionResponseOutput, SignPayloadResponseOutput, OperationResponseOutput, BroadcastResponseOutput, BeaconResponseOutputMessage, ProofOfEventChallengeResponseOutput } from './types/beacon/messages/BeaconResponseOutputMessage';\nimport { PermissionRequestInput, SignPayloadRequestInput, OperationRequestInput, BroadcastRequestInput, BeaconRequestInputMessage, IgnoredRequestInputProperties, ProofOfEventChallengeRecordedMessageInput, ProofOfEventChallengeRequestInput } from './types/beacon/messages/BeaconRequestInputMessage';\nimport { PermissionRequestOutput, SignPayloadRequestOutput, OperationRequestOutput, BroadcastRequestOutput, BeaconRequestOutputMessage, ProofOfEventChallengeRequestOutput, ProofOfEventChallengeRecordedMessageOutput } from './types/beacon/messages/BeaconRequestOutputMessage';\nimport { PermissionInfo } from './types/PermissionInfo';\nimport { ConnectionContext } from './types/ConnectionContext';\nimport { Threshold } from './types/beacon/Threshold';\nimport { PartialTezosTransactionOperation, PartialTezosOperation, PartialTezosDelegationOperation, PartialTezosOriginationOperation, PartialTezosRevealOperation } from './types/tezos/PartialTezosOperation';\nimport { ExtendedPeerInfo, PeerInfo, PeerInfoType } from './types/PeerInfo';\nimport { AcknowledgeResponse } from './types/beacon/messages/AcknowledgeResponse';\nimport { DisconnectMessage } from './types/beacon/messages/DisconnectMessage';\nimport { SigningType } from './types/beacon/SigningType';\nimport { ExtendedP2PPairingResponse, P2PPairingResponse } from './types/P2PPairingResponse';\nimport { ExtendedPostMessagePairingRequest, PostMessagePairingRequest } from './types/PostMessagePairingRequest';\nimport { ExtendedWalletConnectPairingResponse, WalletConnectPairingResponse } from './types/WalletConnectPairingResponse';\nimport { ExtendedWalletConnectPairingRequest, WalletConnectPairingRequest } from './types/WalletConnectPairingRequest';\nimport { ExtendedPostMessagePairingResponse, PostMessagePairingResponse } from './types/PostMessagePairingResponse';\nimport { BeaconRequestMessage } from './types/beacon/BeaconRequestMessage';\nimport { BeaconResponseMessage } from './types/beacon/BeaconResponseMessage';\nimport { ColorMode } from './types/ColorMode';\nimport { Optional } from './types/utils/Optional';\nimport { Extension } from './types/Extension';\nimport { PermissionEntity } from './types/PermissionEntity';\nimport { WalletInfo } from './types/WalletInfo';\nimport { ChangeAccountRequest } from './types/beacon/messages/ChangeAccountRequest';\nexport * from './types/AnalyticsInterface';\nexport * from './types/beaconV3/PermissionRequest';\nexport * from './types/ui';\nexport * from './types/Regions';\nexport { TezosBaseOperation, TezosOperationType, TezosBlockHeader, MichelineMichelsonV1Expression, MichelsonPrimitives, TezosTransactionParameters, TezosOperation };\nexport { TezosActivateAccountOperation, TezosBallotOperation, TezosDelegationOperation, TezosDoubleBakingEvidenceOperation, TezosDoubleEndorsementEvidenceOperation, TezosEndorsementOperation, TezosOriginationOperation, TezosProposalOperation, TezosRevealOperation, TezosSeedNonceRevelationOperation, TezosTransactionOperation, PartialTezosOperation, PartialTezosTransactionOperation, PartialTezosDelegationOperation, PartialTezosOriginationOperation, PartialTezosRevealOperation };\nexport { AccountIdentifier, AppMetadata, Network, NetworkType, BeaconMessage, PermissionRequest, PermissionResponse, OperationRequest, OperationResponse, SignPayloadRequest, SignPayloadResponse, BroadcastRequest, BroadcastResponse, ChangeAccountRequest, AcknowledgeResponse, DisconnectMessage, BeaconBaseMessage, BeaconMessageType, PermissionScope, Origin, AccountInfo, Threshold, SigningType, ExtensionMessageTarget, ExtensionMessage, Extension, EncryptedExtensionMessage, RequestPermissionInput, RequestProofOfEventChallengeInput, RequestSignPayloadInput, ProofOfEventChallengeRecordedMessageInput, RequestOperationInput, RequestBroadcastInput, PermissionInfo, PermissionEntity, ProofOfEventChallengeRequest, ProofOfEventChallengeResponse, ProofOfEventChallengeRecordedRequest };\nexport { PermissionResponseInput, SignPayloadResponseInput, OperationResponseInput, BroadcastResponseInput, AcknowledgeResponseInput, ErrorResponseInput, PermissionResponseOutput, ProofOfEventChallengeResponseOutput, SignPayloadResponseOutput, OperationResponseOutput, BroadcastResponseOutput, PermissionRequestInput, SignPayloadRequestInput, ProofOfEventChallengeRequestInput, OperationRequestInput, BroadcastRequestInput, PermissionRequestOutput, SignPayloadRequestOutput, ProofOfEventChallengeRequestOutput, ProofOfEventChallengeRecordedMessageOutput, OperationRequestOutput, BroadcastRequestOutput, BeaconRequestInputMessage, BeaconRequestOutputMessage, BeaconResponseInputMessage, BeaconResponseOutputMessage, BeaconRequestMessage, BeaconResponseMessage };\nexport { BeaconErrorType, ErrorResponse };\nexport { TransportStatus, TransportType };\nexport { Storage, StorageKey, StorageKeyReturnDefaults, StorageKeyReturnType };\nexport { PeerInfo, ExtendedPeerInfo, PeerInfoType, PostMessagePairingRequest, PostMessagePairingResponse, ExtendedPostMessagePairingRequest, ExtendedPostMessagePairingResponse, P2PPairingRequest, P2PPairingResponse, ExtendedP2PPairingRequest, ExtendedP2PPairingResponse, WalletConnectPairingResponse, WalletConnectPairingRequest, ExtendedWalletConnectPairingRequest, ExtendedWalletConnectPairingResponse };\nexport { IgnoredResponseInputProperties, IgnoredRequestInputProperties, defaultValues };\nexport { ConnectionContext, ColorMode, WalletInfo };\nexport { PushToken } from './types/PushToken';\nexport { Optional };\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/components/alert/index.d.ts",dts:"import { Component } from 'solid-js';\nexport interface AlertProps {\n content: any;\n open: boolean;\n showMore?: boolean;\n extraContent?: any;\n loading?: boolean;\n onCloseClick: () => void;\n onClickShowMore?: () => void;\n onBackClick?: () => void;\n}\ndeclare const Alert: Component;\nexport default Alert;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/components/icons/index.d.ts",dts:"import { JSX } from 'solid-js/jsx-runtime';\ninterface IconProps {\n style?: JSX.CSSProperties | undefined;\n}\nexport declare function CloseIcon(props: IconProps): JSX.Element;\nexport declare function LeftIcon(props: IconProps): JSX.Element;\nexport declare function LogoIcon(props: IconProps): JSX.Element;\nexport {};\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/components/info/index.d.ts",dts:"import { Component } from 'solid-js';\nimport styles from './styles.css';\ninterface InfoProps {\n title: string;\n description?: string;\n data?: string;\n icon?: any;\n border?: boolean;\n iconBadge?: boolean;\n bigIcon?: boolean;\n buttons?: {\n label: string;\n type: 'primary' | 'secondary';\n onClick: () => void;\n }[];\n}\ndeclare const Info: Component;\nexport { styles };\nexport default Info;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/components/loader/index.d.ts",dts:"import { Component } from 'solid-js';\nimport styles from './styles.css';\ninterface LoaderProps {\n}\ndeclare const Loader: Component;\nexport { styles };\nexport default Loader;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/components/pair-other/pair-other.d.ts",dts:"import { Component } from 'solid-js';\nimport { MergedWallet } from '../../utils/wallets';\nimport { P2PPairingRequest, WalletConnectPairingRequest } from '@airgap/beacon-types';\nimport styles from './styles.css';\nexport interface PairOtherProps {\n walletList: MergedWallet[];\n p2pPayload: Promise | undefined;\n wcPayload: Promise | undefined;\n onClickLearnMore: () => void;\n}\ndeclare const PairOther: Component;\nexport { styles };\nexport default PairOther;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/components/qr/index.d.ts",dts:"import { Component } from 'solid-js';\nimport styles from './styles.css';\ninterface QRProps {\n isWalletConnect: boolean;\n isMobile: boolean;\n walletName: string;\n code: string;\n onClickLearnMore?: () => void;\n onClickQrCode?: () => void;\n}\ndeclare const QR: Component;\nexport { styles };\nexport default QR;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/components/toast/index.d.ts",dts:"import { Component } from 'solid-js';\nexport interface ToastProps {\n label: string;\n open: boolean;\n onClickClose: () => void;\n actions?: {\n text: string;\n isBold?: boolean;\n actionText?: string;\n actionCallback?: () => void;\n }[];\n walletInfo?: {\n deeplink?: string;\n icon?: string;\n name: string;\n type?: string;\n };\n openWalletAction?: () => void;\n}\ndeclare const Toast: Component;\nexport default Toast;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/components/top-wallets/index.d.ts",dts:"import { Component } from 'solid-js';\nimport { MergedWallet } from '../../utils/wallets';\nimport styles from './styles.css';\ninterface TopWalletsProps {\n wallets: MergedWallet[];\n onClickWallet: (id: string) => void;\n onClickLearnMore: () => void;\n otherWallets?: {\n images: string[];\n onClick: () => void;\n };\n disabled?: boolean;\n isMobile: boolean;\n}\ndeclare const TopWallets: Component;\nexport { styles };\nexport default TopWallets;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/components/wallet/index.d.ts",dts:"import { Component } from 'solid-js';\nimport styles from './styles.css';\ninterface WalletProps {\n name: string;\n image: string;\n description?: string;\n small?: boolean;\n mobile?: boolean;\n onClick: () => void;\n tags?: string[];\n disabled?: boolean;\n}\ndeclare const Wallet: Component;\nexport { styles };\nexport default Wallet;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/components/wallets/index.d.ts",dts:"import { Component } from 'solid-js';\nimport { MergedWallet } from '../../utils/wallets';\nimport styles from './styles.css';\ninterface WalletProps {\n wallets: MergedWallet[];\n onClickWallet: (id: string) => void;\n onClickOther: () => void;\n isMobile: boolean;\n small?: boolean;\n disabled?: boolean;\n}\ndeclare const Wallets: Component;\nexport { styles };\nexport default Wallets;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/components/pairing.d.ts",dts:'import { DesktopApp, App, ExtensionApp, WebApp } from \'@airgap/beacon-types\';\nexport declare const getDesktopList: () => DesktopApp[];\nexport declare const setDesktopList: (desktopList: DesktopApp[]) => void;\nexport declare const getExtensionList: () => ExtensionApp[];\nexport declare const setExtensionList: (extensionList: ExtensionApp[]) => void;\nexport declare const getWebList: () => WebApp[];\nexport declare const setWebList: (webList: WebApp[]) => void;\nexport declare const getiOSList: () => App[];\nexport declare const setiOSList: (iosList: App[]) => void;\nexport declare enum Platform {\n DESKTOP = 0,\n IOS = 1,\n ANDROID = 2\n}\nexport declare enum WalletType {\n IOS = "ios",\n ANDROID = "android",\n EXTENSION = "extension",\n DESKTOP = "desktop",\n WEB = "web"\n}\nexport interface PairingAlertWallet {\n key: string;\n name: string;\n shortName?: string;\n color?: string;\n logo?: string;\n enabled: boolean;\n clickHandler(): void;\n}\nexport interface PairingAlertButton {\n title: string;\n text: string;\n clickHandler(): void;\n}\nexport interface PairingAlertList {\n title: string;\n type: WalletType;\n wallets: PairingAlertWallet[];\n}\nexport interface PairingAlertInfo {\n walletLists: PairingAlertList[];\n buttons: PairingAlertButton[];\n}\nexport type StatusUpdateHandler = (walletType: WalletType, app?: PairingAlertWallet, keepOpen?: boolean) => void;\n/**\n * @internalapi\n *\n */\nexport declare class Pairing {\n}\n'},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/ui/alert/alert-templates.d.ts",dts:"export declare const alertTemplates: {\n default: {\n css: string;\n };\n pair: {\n css: string;\n };\n};\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/ui/alert/index.d.ts",dts:"import { AnalyticsInterface, NetworkType, P2PPairingRequest, PostMessagePairingRequest, WalletConnectPairingRequest } from '@airgap/beacon-types';\nexport interface AlertButton {\n text: string;\n style?: 'solid' | 'outline';\n actionCallback?(): Promise;\n}\nexport interface AlertConfig {\n title: string;\n body?: string;\n data?: string;\n timer?: number;\n buttons?: AlertButton[];\n pairingPayload?: {\n p2pSyncCode: () => Promise;\n postmessageSyncCode: () => Promise;\n walletConnectSyncCode: () => Promise;\n networkType: NetworkType;\n };\n closeButtonCallback?(): void;\n disclaimerText?: string;\n analytics?: AnalyticsInterface;\n featuredWallets?: string[];\n}\n/**\n * Close an alert by ID\n *\n * @param id ID of alert\n */\ndeclare const closeAlert: (_: string) => Promise;\n/**\n * Close all alerts\n */\ndeclare const closeAlerts: () => Promise;\n/**\n * Show an alert\n *\n * @param alertConfig The configuration of the alert\n */\ndeclare const openAlert: (config: AlertConfig) => Promise;\nexport { closeAlert, closeAlerts, openAlert };\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/ui/alert/wallet-lists.d.ts",dts:"import { App, DesktopApp, ExtensionApp, WebApp } from '@airgap/beacon-types';\nexport declare const extensionList: ExtensionApp[];\nexport declare const desktopList: DesktopApp[];\nexport declare const webList: WebApp[];\nexport declare const iOSList: App[];\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/ui/toast/index.d.ts",dts:"import { WalletInfo } from '@airgap/beacon-types';\nexport interface ToastAction {\n text: string;\n isBold?: boolean;\n actionText?: string;\n actionLogo?: 'external';\n actionCallback?(): Promise;\n}\nexport interface ToastConfig {\n body: string;\n timer?: number;\n forceNew?: boolean;\n state: 'prepare' | 'loading' | 'acknowledge' | 'finished';\n actions?: ToastAction[];\n walletInfo?: WalletInfo;\n openWalletAction?(): Promise;\n}\n/**\n * Close a toast\n */\ndeclare const closeToast: () => Promise;\n/**\n * Create a new toast\n *\n * @param toastConfig Configuration of the toast\n */\ndeclare const openToast: (config: ToastConfig) => Promise;\nexport { closeToast, openToast };\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/ui/toast/toast-templates.d.ts",dts:"export declare const toastTemplates: {\n default: {\n css: string;\n };\n};\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/utils/colorMode.d.ts",dts:"import { ColorMode } from '@airgap/beacon-types';\nexport declare const setColorMode: (mode: ColorMode) => void;\nexport declare const getColorMode: () => ColorMode;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/utils/get-tzip10-link.d.ts",dts:"export declare const getTzip10Link: (url: string, payload: string) => string;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/utils/platform.d.ts",dts:"export declare const testUserAgent: (win: Window, expr: RegExp) => boolean;\nexport declare const isMobile: (win: Window) => boolean;\nexport declare const isBrowser: (win: Window) => boolean;\nexport declare const isPrivacyBrowser: (win: Window) => boolean;\nexport declare const isIOS: (win: Window) => boolean;\nexport declare const isAndroid: (win: Window) => boolean;\nexport declare const isTwBrowser: (win: Window) => boolean;\nexport declare const isDesktop: (win: Window) => boolean;\nexport declare const isMobileOS: (win: Window) => boolean;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/utils/qr.d.ts",dts:"/**\n * Convert data to a QR code\n *\n * @param payload The data to be encoded as a QR code\n * @param type How the QR code will be encoded\n */\nexport declare const getQrData: (payload: string, height?: number, width?: number) => string;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/utils/wallets.d.ts",dts:"export interface Wallet {\n id: string;\n key: string;\n name: string;\n image: string;\n description: string;\n type: string;\n link: string;\n supportedInteractionStandards?: ('wallet_connect' | 'beacon')[];\n deepLink?: string;\n}\nexport interface MergedWallet {\n id: string;\n firefoxId?: string;\n key: string;\n name: string;\n image: string;\n descriptions: string[];\n types: string[];\n links: string[];\n supportedInteractionStandards?: ('wallet_connect' | 'beacon')[];\n tags?: string[];\n deepLink?: string;\n}\nexport declare enum OSLink {\n WEB = 0,\n IOS = 1,\n DESKTOP = 2,\n EXTENSION = 3\n}\nexport declare function parseWallets(wallets: Wallet[]): Wallet[];\nexport declare function arrangeTopWallets(arr: MergedWallet[], walletIds: string[]): MergedWallet[];\nexport declare function mergeWallets(wallets: Wallet[]): MergedWallet[];\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/index.d.ts",dts:"export { openAlert, closeAlerts } from './ui/alert';\nexport type { AlertButton, AlertConfig } from './ui/alert';\nexport { Pairing, setDesktopList, setExtensionList, setWebList, setiOSList, getDesktopList, getExtensionList, getWebList, getiOSList } from './components/pairing';\nexport { closeToast, openToast } from './ui/toast';\nexport type { ToastAction } from './ui/toast';\nexport { getColorMode, setColorMode } from './utils/colorMode';\nexport { isMobile, isMobileOS, isBrowser, isDesktop } from './utils/platform';\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/dist/esm/components/alert/index.d.ts",dts:"import { Component } from 'solid-js';\nexport interface AlertProps {\n content: any;\n open: boolean;\n showMore?: boolean;\n extraContent?: any;\n loading?: boolean;\n onCloseClick: () => void;\n onClickShowMore?: () => void;\n onBackClick?: () => void;\n}\ndeclare const Alert: Component;\nexport default Alert;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/dist/esm/components/icons/index.d.ts",dts:"import { JSX } from 'solid-js/jsx-runtime';\ninterface IconProps {\n style?: JSX.CSSProperties | undefined;\n}\nexport declare function CloseIcon(props: IconProps): JSX.Element;\nexport declare function LeftIcon(props: IconProps): JSX.Element;\nexport declare function LogoIcon(props: IconProps): JSX.Element;\nexport {};\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/dist/esm/components/info/index.d.ts",dts:"import { Component } from 'solid-js';\nimport styles from './styles.css';\ninterface InfoProps {\n title: string;\n description?: string;\n data?: string;\n icon?: any;\n border?: boolean;\n iconBadge?: boolean;\n bigIcon?: boolean;\n buttons?: {\n label: string;\n type: 'primary' | 'secondary';\n onClick: () => void;\n }[];\n}\ndeclare const Info: Component;\nexport { styles };\nexport default Info;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/dist/esm/components/loader/index.d.ts",dts:"import { Component } from 'solid-js';\nimport styles from './styles.css';\ninterface LoaderProps {\n}\ndeclare const Loader: Component;\nexport { styles };\nexport default Loader;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/dist/esm/components/pair-other/pair-other.d.ts",dts:"import { Component } from 'solid-js';\nimport { MergedWallet } from '../../utils/wallets';\nimport { P2PPairingRequest, WalletConnectPairingRequest } from '@airgap/beacon-types';\nimport styles from './styles.css';\nexport interface PairOtherProps {\n walletList: MergedWallet[];\n p2pPayload: Promise | undefined;\n wcPayload: Promise | undefined;\n onClickLearnMore: () => void;\n}\ndeclare const PairOther: Component;\nexport { styles };\nexport default PairOther;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/dist/esm/components/qr/index.d.ts",dts:"import { Component } from 'solid-js';\nimport styles from './styles.css';\ninterface QRProps {\n isWalletConnect: boolean;\n isMobile: boolean;\n walletName: string;\n code: string;\n onClickLearnMore?: () => void;\n onClickQrCode?: () => void;\n}\ndeclare const QR: Component;\nexport { styles };\nexport default QR;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/dist/esm/components/toast/index.d.ts",dts:"import { Component } from 'solid-js';\nexport interface ToastProps {\n label: string;\n open: boolean;\n onClickClose: () => void;\n actions?: {\n text: string;\n isBold?: boolean;\n actionText?: string;\n actionCallback?: () => void;\n }[];\n walletInfo?: {\n deeplink?: string;\n icon?: string;\n name: string;\n type?: string;\n };\n openWalletAction?: () => void;\n}\ndeclare const Toast: Component;\nexport default Toast;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/dist/esm/components/top-wallets/index.d.ts",dts:"import { Component } from 'solid-js';\nimport { MergedWallet } from '../../utils/wallets';\nimport styles from './styles.css';\ninterface TopWalletsProps {\n wallets: MergedWallet[];\n onClickWallet: (id: string) => void;\n onClickLearnMore: () => void;\n otherWallets?: {\n images: string[];\n onClick: () => void;\n };\n disabled?: boolean;\n isMobile: boolean;\n}\ndeclare const TopWallets: Component;\nexport { styles };\nexport default TopWallets;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/dist/esm/components/wallet/index.d.ts",dts:"import { Component } from 'solid-js';\nimport styles from './styles.css';\ninterface WalletProps {\n name: string;\n image: string;\n description?: string;\n small?: boolean;\n mobile?: boolean;\n onClick: () => void;\n tags?: string[];\n disabled?: boolean;\n}\ndeclare const Wallet: Component;\nexport { styles };\nexport default Wallet;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/dist/esm/components/wallets/index.d.ts",dts:"import { Component } from 'solid-js';\nimport { MergedWallet } from '../../utils/wallets';\nimport styles from './styles.css';\ninterface WalletProps {\n wallets: MergedWallet[];\n onClickWallet: (id: string) => void;\n onClickOther: () => void;\n isMobile: boolean;\n small?: boolean;\n disabled?: boolean;\n}\ndeclare const Wallets: Component;\nexport { styles };\nexport default Wallets;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/dist/esm/components/pairing.d.ts",dts:'import { DesktopApp, App, ExtensionApp, WebApp } from \'@airgap/beacon-types\';\nexport declare const getDesktopList: () => DesktopApp[];\nexport declare const setDesktopList: (desktopList: DesktopApp[]) => void;\nexport declare const getExtensionList: () => ExtensionApp[];\nexport declare const setExtensionList: (extensionList: ExtensionApp[]) => void;\nexport declare const getWebList: () => WebApp[];\nexport declare const setWebList: (webList: WebApp[]) => void;\nexport declare const getiOSList: () => App[];\nexport declare const setiOSList: (iosList: App[]) => void;\nexport declare enum Platform {\n DESKTOP = 0,\n IOS = 1,\n ANDROID = 2\n}\nexport declare enum WalletType {\n IOS = "ios",\n ANDROID = "android",\n EXTENSION = "extension",\n DESKTOP = "desktop",\n WEB = "web"\n}\nexport interface PairingAlertWallet {\n key: string;\n name: string;\n shortName?: string;\n color?: string;\n logo?: string;\n enabled: boolean;\n clickHandler(): void;\n}\nexport interface PairingAlertButton {\n title: string;\n text: string;\n clickHandler(): void;\n}\nexport interface PairingAlertList {\n title: string;\n type: WalletType;\n wallets: PairingAlertWallet[];\n}\nexport interface PairingAlertInfo {\n walletLists: PairingAlertList[];\n buttons: PairingAlertButton[];\n}\nexport type StatusUpdateHandler = (walletType: WalletType, app?: PairingAlertWallet, keepOpen?: boolean) => void;\n/**\n * @internalapi\n *\n */\nexport declare class Pairing {\n}\n'},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/dist/esm/ui/alert/alert-templates.d.ts",dts:"export declare const alertTemplates: {\n default: {\n css: string;\n };\n pair: {\n css: string;\n };\n};\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/dist/esm/ui/alert/index.d.ts",dts:"import { AnalyticsInterface, NetworkType, P2PPairingRequest, PostMessagePairingRequest, WalletConnectPairingRequest } from '@airgap/beacon-types';\nexport interface AlertButton {\n text: string;\n style?: 'solid' | 'outline';\n actionCallback?(): Promise;\n}\nexport interface AlertConfig {\n title: string;\n body?: string;\n data?: string;\n timer?: number;\n buttons?: AlertButton[];\n pairingPayload?: {\n p2pSyncCode: () => Promise;\n postmessageSyncCode: () => Promise;\n walletConnectSyncCode: () => Promise;\n networkType: NetworkType;\n };\n closeButtonCallback?(): void;\n disclaimerText?: string;\n analytics?: AnalyticsInterface;\n featuredWallets?: string[];\n}\n/**\n * Close an alert by ID\n *\n * @param id ID of alert\n */\ndeclare const closeAlert: (_: string) => Promise;\n/**\n * Close all alerts\n */\ndeclare const closeAlerts: () => Promise;\n/**\n * Show an alert\n *\n * @param alertConfig The configuration of the alert\n */\ndeclare const openAlert: (config: AlertConfig) => Promise;\nexport { closeAlert, closeAlerts, openAlert };\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/dist/esm/ui/alert/wallet-lists.d.ts",dts:"import { App, DesktopApp, ExtensionApp, WebApp } from '@airgap/beacon-types';\nexport declare const extensionList: ExtensionApp[];\nexport declare const desktopList: DesktopApp[];\nexport declare const webList: WebApp[];\nexport declare const iOSList: App[];\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/dist/esm/ui/toast/index.d.ts",dts:"import { WalletInfo } from '@airgap/beacon-types';\nexport interface ToastAction {\n text: string;\n isBold?: boolean;\n actionText?: string;\n actionLogo?: 'external';\n actionCallback?(): Promise;\n}\nexport interface ToastConfig {\n body: string;\n timer?: number;\n forceNew?: boolean;\n state: 'prepare' | 'loading' | 'acknowledge' | 'finished';\n actions?: ToastAction[];\n walletInfo?: WalletInfo;\n openWalletAction?(): Promise;\n}\n/**\n * Close a toast\n */\ndeclare const closeToast: () => Promise;\n/**\n * Create a new toast\n *\n * @param toastConfig Configuration of the toast\n */\ndeclare const openToast: (config: ToastConfig) => Promise;\nexport { closeToast, openToast };\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/dist/esm/ui/toast/toast-templates.d.ts",dts:"export declare const toastTemplates: {\n default: {\n css: string;\n };\n};\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/dist/esm/utils/colorMode.d.ts",dts:"import { ColorMode } from '@airgap/beacon-types';\nexport declare const setColorMode: (mode: ColorMode) => void;\nexport declare const getColorMode: () => ColorMode;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/dist/esm/utils/get-tzip10-link.d.ts",dts:"export declare const getTzip10Link: (url: string, payload: string) => string;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/dist/esm/utils/platform.d.ts",dts:"export declare const testUserAgent: (win: Window, expr: RegExp) => boolean;\nexport declare const isMobile: (win: Window) => boolean;\nexport declare const isBrowser: (win: Window) => boolean;\nexport declare const isPrivacyBrowser: (win: Window) => boolean;\nexport declare const isIOS: (win: Window) => boolean;\nexport declare const isAndroid: (win: Window) => boolean;\nexport declare const isTwBrowser: (win: Window) => boolean;\nexport declare const isDesktop: (win: Window) => boolean;\nexport declare const isMobileOS: (win: Window) => boolean;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/dist/esm/utils/qr.d.ts",dts:"/**\n * Convert data to a QR code\n *\n * @param payload The data to be encoded as a QR code\n * @param type How the QR code will be encoded\n */\nexport declare const getQrData: (payload: string, height?: number, width?: number) => string;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/dist/esm/utils/wallets.d.ts",dts:"export interface Wallet {\n id: string;\n key: string;\n name: string;\n image: string;\n description: string;\n type: string;\n link: string;\n supportedInteractionStandards?: ('wallet_connect' | 'beacon')[];\n deepLink?: string;\n}\nexport interface MergedWallet {\n id: string;\n firefoxId?: string;\n key: string;\n name: string;\n image: string;\n descriptions: string[];\n types: string[];\n links: string[];\n supportedInteractionStandards?: ('wallet_connect' | 'beacon')[];\n tags?: string[];\n deepLink?: string;\n}\nexport declare enum OSLink {\n WEB = 0,\n IOS = 1,\n DESKTOP = 2,\n EXTENSION = 3\n}\nexport declare function parseWallets(wallets: Wallet[]): Wallet[];\nexport declare function arrangeTopWallets(arr: MergedWallet[], walletIds: string[]): MergedWallet[];\nexport declare function mergeWallets(wallets: Wallet[]): MergedWallet[];\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/dist/esm/index.d.ts",dts:"export { openAlert, closeAlerts } from './ui/alert';\nexport type { AlertButton, AlertConfig } from './ui/alert';\nexport { Pairing, setDesktopList, setExtensionList, setWebList, setiOSList, getDesktopList, getExtensionList, getWebList, getiOSList } from './components/pairing';\nexport { closeToast, openToast } from './ui/toast';\nexport type { ToastAction } from './ui/toast';\nexport { getColorMode, setColorMode } from './utils/colorMode';\nexport { isMobile, isMobileOS, isBrowser, isDesktop } from './utils/platform';\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/dist/index/components/alert/index.d.ts",dts:"import { Component } from 'solid-js';\nexport interface AlertProps {\n content: any;\n open: boolean;\n showMore?: boolean;\n extraContent?: any;\n loading?: boolean;\n onCloseClick: () => void;\n onClickShowMore?: () => void;\n onBackClick?: () => void;\n}\ndeclare const Alert: Component;\nexport default Alert;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/dist/index/components/icons/index.d.ts",dts:"import { JSX } from 'solid-js/jsx-runtime';\ninterface IconProps {\n style?: JSX.CSSProperties | undefined;\n}\nexport declare function CloseIcon(props: IconProps): JSX.Element;\nexport declare function LeftIcon(props: IconProps): JSX.Element;\nexport declare function LogoIcon(props: IconProps): JSX.Element;\nexport {};\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/dist/index/components/info/index.d.ts",dts:"import { Component } from 'solid-js';\nimport styles from './styles.css';\ninterface InfoProps {\n title: string;\n description?: string;\n data?: string;\n icon?: any;\n border?: boolean;\n iconBadge?: boolean;\n bigIcon?: boolean;\n buttons?: {\n label: string;\n type: 'primary' | 'secondary';\n onClick: () => void;\n }[];\n}\ndeclare const Info: Component;\nexport { styles };\nexport default Info;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/dist/index/components/loader/index.d.ts",dts:"import { Component } from 'solid-js';\nimport styles from './styles.css';\ninterface LoaderProps {\n}\ndeclare const Loader: Component;\nexport { styles };\nexport default Loader;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/dist/index/components/pair-other/pair-other.d.ts",dts:"import { Component } from 'solid-js';\nimport { MergedWallet } from '../../utils/wallets';\nimport { P2PPairingRequest, WalletConnectPairingRequest } from '@airgap/beacon-types';\nimport styles from './styles.css';\nexport interface PairOtherProps {\n walletList: MergedWallet[];\n p2pPayload: Promise | undefined;\n wcPayload: Promise | undefined;\n onClickLearnMore: () => void;\n}\ndeclare const PairOther: Component;\nexport { styles };\nexport default PairOther;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/dist/index/components/qr/index.d.ts",dts:"import { Component } from 'solid-js';\nimport styles from './styles.css';\ninterface QRProps {\n isWalletConnect: boolean;\n isMobile: boolean;\n walletName: string;\n code: string;\n onClickLearnMore?: () => void;\n onClickQrCode?: () => void;\n}\ndeclare const QR: Component;\nexport { styles };\nexport default QR;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/dist/index/components/toast/index.d.ts",dts:"import { Component } from 'solid-js';\nexport interface ToastProps {\n label: string;\n open: boolean;\n onClickClose: () => void;\n actions?: {\n text: string;\n isBold?: boolean;\n actionText?: string;\n actionCallback?: () => void;\n }[];\n walletInfo?: {\n deeplink?: string;\n icon?: string;\n name: string;\n type?: string;\n };\n openWalletAction?: () => void;\n}\ndeclare const Toast: Component;\nexport default Toast;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/dist/index/components/top-wallets/index.d.ts",dts:"import { Component } from 'solid-js';\nimport { MergedWallet } from '../../utils/wallets';\nimport styles from './styles.css';\ninterface TopWalletsProps {\n wallets: MergedWallet[];\n onClickWallet: (id: string) => void;\n onClickLearnMore: () => void;\n otherWallets?: {\n images: string[];\n onClick: () => void;\n };\n disabled?: boolean;\n isMobile: boolean;\n}\ndeclare const TopWallets: Component;\nexport { styles };\nexport default TopWallets;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/dist/index/components/wallet/index.d.ts",dts:"import { Component } from 'solid-js';\nimport styles from './styles.css';\ninterface WalletProps {\n name: string;\n image: string;\n description?: string;\n small?: boolean;\n mobile?: boolean;\n onClick: () => void;\n tags?: string[];\n disabled?: boolean;\n}\ndeclare const Wallet: Component;\nexport { styles };\nexport default Wallet;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/dist/index/components/wallets/index.d.ts",dts:"import { Component } from 'solid-js';\nimport { MergedWallet } from '../../utils/wallets';\nimport styles from './styles.css';\ninterface WalletProps {\n wallets: MergedWallet[];\n onClickWallet: (id: string) => void;\n onClickOther: () => void;\n isMobile: boolean;\n small?: boolean;\n disabled?: boolean;\n}\ndeclare const Wallets: Component;\nexport { styles };\nexport default Wallets;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/dist/index/components/pairing.d.ts",dts:'import { DesktopApp, App, ExtensionApp, WebApp } from \'@airgap/beacon-types\';\nexport declare const getDesktopList: () => DesktopApp[];\nexport declare const setDesktopList: (desktopList: DesktopApp[]) => void;\nexport declare const getExtensionList: () => ExtensionApp[];\nexport declare const setExtensionList: (extensionList: ExtensionApp[]) => void;\nexport declare const getWebList: () => WebApp[];\nexport declare const setWebList: (webList: WebApp[]) => void;\nexport declare const getiOSList: () => App[];\nexport declare const setiOSList: (iosList: App[]) => void;\nexport declare enum Platform {\n DESKTOP = 0,\n IOS = 1,\n ANDROID = 2\n}\nexport declare enum WalletType {\n IOS = "ios",\n ANDROID = "android",\n EXTENSION = "extension",\n DESKTOP = "desktop",\n WEB = "web"\n}\nexport interface PairingAlertWallet {\n key: string;\n name: string;\n shortName?: string;\n color?: string;\n logo?: string;\n enabled: boolean;\n clickHandler(): void;\n}\nexport interface PairingAlertButton {\n title: string;\n text: string;\n clickHandler(): void;\n}\nexport interface PairingAlertList {\n title: string;\n type: WalletType;\n wallets: PairingAlertWallet[];\n}\nexport interface PairingAlertInfo {\n walletLists: PairingAlertList[];\n buttons: PairingAlertButton[];\n}\nexport type StatusUpdateHandler = (walletType: WalletType, app?: PairingAlertWallet, keepOpen?: boolean) => void;\n/**\n * @internalapi\n *\n */\nexport declare class Pairing {\n}\n'},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/dist/index/ui/alert/index.d.ts",dts:"import { AnalyticsInterface, NetworkType, P2PPairingRequest, PostMessagePairingRequest, WalletConnectPairingRequest } from '@airgap/beacon-types';\nexport interface AlertButton {\n text: string;\n style?: 'solid' | 'outline';\n actionCallback?(): Promise;\n}\nexport interface AlertConfig {\n title: string;\n body?: string;\n data?: string;\n timer?: number;\n buttons?: AlertButton[];\n pairingPayload?: {\n p2pSyncCode: () => Promise;\n postmessageSyncCode: () => Promise;\n walletConnectSyncCode: () => Promise;\n networkType: NetworkType;\n };\n closeButtonCallback?(): void;\n disclaimerText?: string;\n analytics?: AnalyticsInterface;\n featuredWallets?: string[];\n}\n/**\n * Close an alert by ID\n *\n * @param id ID of alert\n */\ndeclare const closeAlert: (_: string) => Promise;\n/**\n * Close all alerts\n */\ndeclare const closeAlerts: () => Promise;\n/**\n * Show an alert\n *\n * @param alertConfig The configuration of the alert\n */\ndeclare const openAlert: (config: AlertConfig) => Promise;\nexport { closeAlert, closeAlerts, openAlert };\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/dist/index/ui/alert/wallet-lists.d.ts",dts:"import { App, DesktopApp, ExtensionApp, WebApp } from '@airgap/beacon-types';\nexport declare const extensionList: ExtensionApp[];\nexport declare const desktopList: DesktopApp[];\nexport declare const webList: WebApp[];\nexport declare const iOSList: App[];\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/dist/index/ui/toast/index.d.ts",dts:"import { WalletInfo } from '@airgap/beacon-types';\nexport interface ToastAction {\n text: string;\n isBold?: boolean;\n actionText?: string;\n actionLogo?: 'external';\n actionCallback?(): Promise;\n}\nexport interface ToastConfig {\n body: string;\n timer?: number;\n forceNew?: boolean;\n state: 'prepare' | 'loading' | 'acknowledge' | 'finished';\n actions?: ToastAction[];\n walletInfo?: WalletInfo;\n openWalletAction?(): Promise;\n}\n/**\n * Close a toast\n */\ndeclare const closeToast: () => Promise;\n/**\n * Create a new toast\n *\n * @param toastConfig Configuration of the toast\n */\ndeclare const openToast: (config: ToastConfig) => Promise;\nexport { closeToast, openToast };\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/dist/index/utils/colorMode.d.ts",dts:"import { ColorMode } from '@airgap/beacon-types';\nexport declare const setColorMode: (mode: ColorMode) => void;\nexport declare const getColorMode: () => ColorMode;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/dist/index/utils/get-tzip10-link.d.ts",dts:"export declare const getTzip10Link: (url: string, payload: string) => string;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/dist/index/utils/platform.d.ts",dts:"export declare const testUserAgent: (win: Window, expr: RegExp) => boolean;\nexport declare const isMobile: (win: Window) => boolean;\nexport declare const isBrowser: (win: Window) => boolean;\nexport declare const isPrivacyBrowser: (win: Window) => boolean;\nexport declare const isIOS: (win: Window) => boolean;\nexport declare const isAndroid: (win: Window) => boolean;\nexport declare const isTwBrowser: (win: Window) => boolean;\nexport declare const isDesktop: (win: Window) => boolean;\nexport declare const isMobileOS: (win: Window) => boolean;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/dist/index/utils/qr.d.ts",dts:"/**\n * Convert data to a QR code\n *\n * @param payload The data to be encoded as a QR code\n * @param type How the QR code will be encoded\n */\nexport declare const getQrData: (payload: string, height?: number, width?: number) => string;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/dist/index/utils/wallets.d.ts",dts:"export interface Wallet {\n id: string;\n key: string;\n name: string;\n image: string;\n description: string;\n type: string;\n link: string;\n supportedInteractionStandards?: ('wallet_connect' | 'beacon')[];\n deepLink?: string;\n}\nexport interface MergedWallet {\n id: string;\n firefoxId?: string;\n key: string;\n name: string;\n image: string;\n descriptions: string[];\n types: string[];\n links: string[];\n supportedInteractionStandards?: ('wallet_connect' | 'beacon')[];\n tags?: string[];\n deepLink?: string;\n}\nexport declare enum OSLink {\n WEB = 0,\n IOS = 1,\n DESKTOP = 2,\n EXTENSION = 3\n}\nexport declare function parseWallets(wallets: Wallet[]): Wallet[];\nexport declare function arrangeTopWallets(arr: MergedWallet[], walletIds: string[]): MergedWallet[];\nexport declare function mergeWallets(wallets: Wallet[]): MergedWallet[];\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-ui/dist/index/index.d.ts",dts:"export { openAlert, closeAlerts } from './ui/alert';\nexport type { AlertButton, AlertConfig } from './ui/alert';\nexport { Pairing, setDesktopList, setExtensionList, setWebList, setiOSList, getDesktopList, getExtensionList, getWebList, getiOSList } from './components/pairing';\nexport { closeToast, openToast } from './ui/toast';\nexport type { ToastAction } from './ui/toast';\nexport { getColorMode, setColorMode } from './utils/colorMode';\nexport { isMobile, isMobileOS, isBrowser, isDesktop } from './utils/platform';\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-utils/utils/crypto.d.ts",dts:"/// \nimport { KeyPair } from '@stablelib/ed25519';\nexport declare const secretbox_NONCEBYTES = 24;\nexport declare const secretbox_MACBYTES = 16;\n/**\n * Convert a value to hex\n *\n * @param value\n */\nexport declare function toHex(value: any): string;\n/**\n * Get the hex hash of a value\n *\n * @param key\n */\nexport declare function getHexHash(key: string | Buffer | Uint8Array): Promise;\n/**\n * Get a keypair from a seed\n *\n * @param seed\n */\nexport declare function getKeypairFromSeed(seed: string): Promise;\n/**\n * Encrypt a message with a shared key\n *\n * @param message\n * @param sharedKey\n */\nexport declare function encryptCryptoboxPayload(message: string, sharedKey: Uint8Array): Promise;\n/**\n * Decrypt a message with a shared key\n *\n * @param payload\n * @param sharedKey\n */\nexport declare function decryptCryptoboxPayload(payload: Uint8Array, sharedKey: Uint8Array): Promise;\n/**\n * Encrypt a message with a public key\n *\n * @param payload\n * @param publicKey\n */\nexport declare function sealCryptobox(payload: string | Buffer, otherPublicKey: Uint8Array): Promise;\n/**\n * Decrypt a message with public + private key\n *\n * @param encryptedPayload\n * @param publicKey\n * @param privateKey\n */\nexport declare function openCryptobox(encryptedPayload: string | Buffer, publicKey: Uint8Array, privateKey: Uint8Array): Promise;\n/**\n * Get an address from the public key\n *\n * @param publicKey\n */\nexport declare function getAddressFromPublicKey(publicKey: string): Promise;\n/**\n * Prefix the public key if it's not prefixed\n *\n * @param publicKey\n */\nexport declare function prefixPublicKey(publicKey: string): Promise;\n/**\n * Get the recipient string used in the matrix message\n *\n * @param recipientHash\n * @param relayServer\n */\nexport declare function recipientString(recipientHash: string, relayServer: string): string;\nexport declare const signMessage: (message: string, keypair: {\n secretKey: Buffer;\n}) => Promise;\nexport declare const isValidAddress: (address: string) => boolean;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-utils/utils/exposed-promise.d.ts",dts:'export declare enum ExposedPromiseStatus {\n PENDING = "pending",\n RESOLVED = "resolved",\n REJECTED = "rejected"\n}\ntype Resolve = (value: T) => void;\ntype Reject = (reason?: U) => void;\n/**\n * Exposed promise allow you to create a promise and then resolve it later, from the outside\n */\nexport declare class ExposedPromise {\n private readonly _promise;\n private _resolve;\n private _reject;\n private _status;\n private _promiseResult;\n private _promiseError;\n get promise(): Promise;\n get resolve(): Resolve;\n get reject(): Reject;\n get status(): ExposedPromiseStatus;\n get promiseResult(): T | undefined;\n get promiseError(): U | undefined;\n constructor();\n static resolve(value: T): ExposedPromise;\n static reject(reason?: U): ExposedPromise;\n isPending(): boolean;\n isResolved(): boolean;\n isRejected(): boolean;\n isSettled(): boolean;\n}\nexport {};\n'},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-utils/utils/generate-uuid.d.ts",dts:"/**\n * Generate a random GUID\n */\nexport declare function generateGUID(): Promise;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-utils/utils/keys.d.ts",dts:"/**\n * A helper function to improve typings of object keys\n *\n * @param obj Object\n */\nexport declare function keys(obj: O): (keyof O)[];\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-utils/index.d.ts",dts:"export { keys } from './utils/keys';\nexport { ExposedPromise, ExposedPromiseStatus } from './utils/exposed-promise';\nexport { getKeypairFromSeed, toHex, getAddressFromPublicKey, decryptCryptoboxPayload, encryptCryptoboxPayload, getHexHash, sealCryptobox, openCryptobox, recipientString, signMessage, isValidAddress, prefixPublicKey } from './utils/crypto';\nexport { generateGUID } from './utils/generate-uuid';\nexport declare const CONTRACT_PREFIX = \"KT1\";\nexport declare const secretbox_NONCEBYTES = 24;\nexport declare const secretbox_MACBYTES = 16;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-utils/dist/esm/utils/crypto.d.ts",dts:"/// \nimport { KeyPair } from '@stablelib/ed25519';\nexport declare const secretbox_NONCEBYTES = 24;\nexport declare const secretbox_MACBYTES = 16;\n/**\n * Convert a value to hex\n *\n * @param value\n */\nexport declare function toHex(value: any): string;\n/**\n * Get the hex hash of a value\n *\n * @param key\n */\nexport declare function getHexHash(key: string | Buffer | Uint8Array): Promise;\n/**\n * Get a keypair from a seed\n *\n * @param seed\n */\nexport declare function getKeypairFromSeed(seed: string): Promise;\n/**\n * Encrypt a message with a shared key\n *\n * @param message\n * @param sharedKey\n */\nexport declare function encryptCryptoboxPayload(message: string, sharedKey: Uint8Array): Promise;\n/**\n * Decrypt a message with a shared key\n *\n * @param payload\n * @param sharedKey\n */\nexport declare function decryptCryptoboxPayload(payload: Uint8Array, sharedKey: Uint8Array): Promise;\n/**\n * Encrypt a message with a public key\n *\n * @param payload\n * @param publicKey\n */\nexport declare function sealCryptobox(payload: string | Buffer, otherPublicKey: Uint8Array): Promise;\n/**\n * Decrypt a message with public + private key\n *\n * @param encryptedPayload\n * @param publicKey\n * @param privateKey\n */\nexport declare function openCryptobox(encryptedPayload: string | Buffer, publicKey: Uint8Array, privateKey: Uint8Array): Promise;\n/**\n * Get an address from the public key\n *\n * @param publicKey\n */\nexport declare function getAddressFromPublicKey(publicKey: string): Promise;\n/**\n * Prefix the public key if it's not prefixed\n *\n * @param publicKey\n */\nexport declare function prefixPublicKey(publicKey: string): Promise;\n/**\n * Get the recipient string used in the matrix message\n *\n * @param recipientHash\n * @param relayServer\n */\nexport declare function recipientString(recipientHash: string, relayServer: string): string;\nexport declare const signMessage: (message: string, keypair: {\n secretKey: Buffer;\n}) => Promise;\nexport declare const isValidAddress: (address: string) => boolean;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-utils/dist/esm/utils/exposed-promise.d.ts",dts:'export declare enum ExposedPromiseStatus {\n PENDING = "pending",\n RESOLVED = "resolved",\n REJECTED = "rejected"\n}\ntype Resolve = (value: T) => void;\ntype Reject = (reason?: U) => void;\n/**\n * Exposed promise allow you to create a promise and then resolve it later, from the outside\n */\nexport declare class ExposedPromise {\n private readonly _promise;\n private _resolve;\n private _reject;\n private _status;\n private _promiseResult;\n private _promiseError;\n get promise(): Promise;\n get resolve(): Resolve;\n get reject(): Reject;\n get status(): ExposedPromiseStatus;\n get promiseResult(): T | undefined;\n get promiseError(): U | undefined;\n constructor();\n static resolve(value: T): ExposedPromise;\n static reject(reason?: U): ExposedPromise;\n isPending(): boolean;\n isResolved(): boolean;\n isRejected(): boolean;\n isSettled(): boolean;\n}\nexport {};\n'},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-utils/dist/esm/utils/generate-uuid.d.ts",dts:"/**\n * Generate a random GUID\n */\nexport declare function generateGUID(): Promise;\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-utils/dist/esm/utils/keys.d.ts",dts:"/**\n * A helper function to improve typings of object keys\n *\n * @param obj Object\n */\nexport declare function keys(obj: O): (keyof O)[];\n"},{name:"@taquito/beacon-wallet/node_modules/@airgap/beacon-utils/dist/esm/index.d.ts",dts:"export { keys } from './utils/keys';\nexport { ExposedPromise, ExposedPromiseStatus } from './utils/exposed-promise';\nexport { getKeypairFromSeed, toHex, getAddressFromPublicKey, decryptCryptoboxPayload, encryptCryptoboxPayload, getHexHash, sealCryptobox, openCryptobox, recipientString, signMessage, isValidAddress, prefixPublicKey } from './utils/crypto';\nexport { generateGUID } from './utils/generate-uuid';\nexport declare const CONTRACT_PREFIX = \"KT1\";\nexport declare const secretbox_NONCEBYTES = 24;\nexport declare const secretbox_MACBYTES = 16;\n"},{name:"@taquito/core/dist/types/errors.d.ts",dts:"/**\n * @category Error\n * @description Parent error class all taquito errors to extend from\n */\nexport declare class TaquitoError extends Error {\n}\n/**\n * @category Error\n * @description Error that indicates invalid user inputs\n */\nexport declare class ParameterValidationError extends TaquitoError {\n}\n/**\n * @category Error\n * @description Error returned by RPC node\n */\nexport declare class RpcError extends TaquitoError {\n}\n/**\n * @category Error\n * @description Error that indicates TezosToolKit has not been configured appropriately\n */\nexport declare class TezosToolkitConfigError extends TaquitoError {\n}\n/**\n * @category Error\n * @description Error that indicates a requested action is not supported by Taquito\n */\nexport declare class UnsupportedActionError extends TaquitoError {\n}\n/**\n * @category Error\n * @description Error during a network operation\n */\nexport declare class NetworkError extends TaquitoError {\n}\n/**\n * @category Error\n * @description Error that indicates user attempts an action without necessary permissions\n */\nexport declare class PermissionDeniedError extends TaquitoError {\n}\n/**\n * @category Error\n * @description Error that indicates an invalid originated or implicit address being passed or used\n */\nexport declare class InvalidAddressError extends ParameterValidationError {\n readonly address: string;\n readonly errorDetail?: string | undefined;\n constructor(address: string, errorDetail?: string | undefined);\n}\n/**\n * @category Error\n * @description Error that indicates an invalid block hash being passed or used\n */\nexport declare class InvalidBlockHashError extends ParameterValidationError {\n readonly blockHash: string;\n readonly errorDetail?: string | undefined;\n constructor(blockHash: string, errorDetail?: string | undefined);\n}\n/**\n * @category Error\n * @description Error that indicates an invalid amount of tez being passed as a parameter\n */\nexport declare class InvalidAmountError extends ParameterValidationError {\n readonly amount: string;\n constructor(amount: string);\n}\n/**\n * @category Error\n * @description Error that indicates an invalid derivation path being passed or used\n */\nexport declare class InvalidDerivationPathError extends ParameterValidationError {\n readonly derivationPath: string;\n readonly errorDetail?: string | undefined;\n constructor(derivationPath: string, errorDetail?: string | undefined);\n}\n/**\n * @category Error\n * @description Error that indicates an invalid hex string have been passed or used\n */\nexport declare class InvalidHexStringError extends ParameterValidationError {\n readonly hexString: string;\n readonly errorDetail?: string | undefined;\n constructor(hexString: string, errorDetail?: string | undefined);\n}\n/**\n * @category Error\n * @description Error that indicates an invalid message being passed or used\n */\nexport declare class InvalidMessageError extends ParameterValidationError {\n readonly msg: string;\n readonly errorDetail?: string | undefined;\n constructor(msg: string, errorDetail?: string | undefined);\n}\n/**\n * @category Error\n * @description Error that indicates invalid view parameter of a smart contract\n */\nexport declare class InvalidViewParameterError extends ParameterValidationError {\n readonly viewName: string;\n readonly sigs: any;\n readonly args: any;\n readonly cause?: any;\n constructor(viewName: string, sigs: any, args: any, cause?: any);\n}\n/**\n * @category Error\n * @description Error that indicates an invalid private key being passed or used\n */\nexport declare class InvalidKeyError extends ParameterValidationError {\n readonly errorDetail?: string | undefined;\n constructor(errorDetail?: string | undefined);\n}\n/**\n * @category Error\n * @description Error that indicates an Invalid Public Key being passed or used\n */\nexport declare class InvalidPublicKeyError extends ParameterValidationError {\n readonly publicKey: string;\n readonly errorDetail?: string | undefined;\n constructor(publicKey: string, errorDetail?: string | undefined);\n}\n/**\n * @category Error\n * @description Error that indicates an invalid signature being passed or used\n */\nexport declare class InvalidSignatureError extends ParameterValidationError {\n readonly signature: string;\n readonly errorDetail?: string | undefined;\n constructor(signature: string, errorDetail?: string | undefined);\n}\n/**\n * @category Error\n * @description Error that indicates an invalid contract address being passed or used\n */\nexport declare class InvalidContractAddressError extends ParameterValidationError {\n readonly contractAddress: string;\n readonly errorDetail?: string | undefined;\n constructor(contractAddress: string, errorDetail?: string | undefined);\n}\n/**\n * @category Error\n * @description Error that indicates an invalid chain id being passed or used\n */\nexport declare class InvalidChainIdError extends ParameterValidationError {\n readonly chainId: string;\n readonly errorDetail?: string | undefined;\n constructor(chainId: string, errorDetail?: string | undefined);\n}\n/**\n * @category Error\n * @description Error that indicates an invalid public key hash being passed or used\n */\nexport declare class InvalidKeyHashError extends ParameterValidationError {\n readonly keyHash: string;\n readonly errorDetail?: string | undefined;\n constructor(keyHash: string, errorDetail?: string | undefined);\n}\n/**\n * @category Error\n * @description Error that indicates an invalid operation hash being passed or used\n */\nexport declare class InvalidOperationHashError extends ParameterValidationError {\n readonly operationHash: string;\n readonly errorDetail?: string | undefined;\n constructor(operationHash: string, errorDetail?: string | undefined);\n}\n/**\n * @category Error\n * @description Error that indicates an invalid operation kind being passed or used\n */\nexport declare class InvalidOperationKindError extends ParameterValidationError {\n readonly operationKind: string;\n readonly errorDetail?: string | undefined;\n constructor(operationKind: string, errorDetail?: string | undefined);\n}\n/**\n * @category Error\n * @description General error that indicates something is no longer supported and/or deprecated\n */\nexport declare class DeprecationError extends UnsupportedActionError {\n readonly message: string;\n constructor(message: string);\n}\n/**\n * @category Error\n * @description General error that indicates an action is prohibited or not allowed\n */\nexport declare class ProhibitedActionError extends UnsupportedActionError {\n readonly message: string;\n constructor(message: string);\n}\n/**\n * @category Error\n * @description Error that indicates a failure in grabbing the public key\n */\nexport declare class PublicKeyNotFoundError extends TaquitoError {\n readonly pkh: string;\n readonly cause?: any;\n constructor(pkh: string, cause?: any);\n}\n"},{name:"@taquito/core/dist/types/taquito-core.d.ts",dts:"/**\n * @packageDocumentation\n * @module @taquito/core\n */\nexport * from './errors';\n"},{name:"@taquito/core/dist/types/version.d.ts",dts:"export declare const VERSION: {\n commitHash: string;\n version: string;\n};\n"},{name:"@taquito/http-utils/dist/types/errors.d.ts",dts:"import { NetworkError } from '@taquito/core';\nimport { STATUS_CODE } from './status_code';\n/**\n * @category Error\n * @description Error that indicates a general failure in making the HTTP request\n */\nexport declare class HttpRequestFailed extends NetworkError {\n readonly method: string;\n readonly url: string;\n readonly cause: Error;\n constructor(method: string, url: string, cause: Error);\n}\n/**\n * @category Error\n * @description Error thrown when the endpoint returns an HTTP error to the client\n */\nexport declare class HttpResponseError extends NetworkError {\n readonly message: string;\n readonly status: STATUS_CODE;\n readonly statusText: string;\n readonly body: string;\n readonly url: string;\n constructor(message: string, status: STATUS_CODE, statusText: string, body: string, url: string);\n}\n/**\n * @category Error\n * @description Error\n */\nexport declare class HttpTimeoutError extends NetworkError {\n readonly timeout: number;\n readonly url: string;\n constructor(timeout: number, url: string);\n}\n"},{name:"@taquito/http-utils/dist/types/status_code.d.ts",dts:'/**\n * Hypertext Transfer Protocol (HTTP) response status codes.\n * @see {@link https://en.wikipedia.org/wiki/List_of_HTTP_status_codes}\n */\nexport declare enum STATUS_CODE {\n /**\n * The server has received the request headers and the client should proceed to send the request body\n * (in the case of a request for which a body needs to be sent; for example, a POST request).\n * Sending a large request body to a server after a request has been rejected for inappropriate headers would be inefficient.\n * To have a server check the request\'s headers, a client must send Expect: 100-continue as a header in its initial request\n * and receive a 100 Continue status code in response before sending the body. The response 417 Expectation Failed indicates the request should not be continued.\n */\n CONTINUE = 100,\n /**\n * The requester has asked the server to switch protocols and the server has agreed to do so.\n */\n SWITCHING_PROTOCOLS = 101,\n /**\n * A WebDAV request may contain many sub-requests involving file operations, requiring a long time to complete the request.\n * This code indicates that the server has received and is processing the request, but no response is available yet.\n * This prevents the client from timing out and assuming the request was lost.\n */\n PROCESSING = 102,\n /**\n * Standard response for successful HTTP requests.\n * The actual response will depend on the request method used.\n * In a GET request, the response will contain an entity corresponding to the requested resource.\n * In a POST request, the response will contain an entity describing or containing the result of the action.\n */\n OK = 200,\n /**\n * The request has been fulfilled, resulting in the creation of a new resource.\n */\n CREATED = 201,\n /**\n * The request has been accepted for processing, but the processing has not been completed.\n * The request might or might not be eventually acted upon, and may be disallowed when processing occurs.\n */\n ACCEPTED = 202,\n /**\n * SINCE HTTP/1.1\n * The server is a transforming proxy that received a 200 OK from its origin,\n * but is returning a modified version of the origin\'s response.\n */\n NON_AUTHORITATIVE_INFORMATION = 203,\n /**\n * The server successfully processed the request and is not returning any content.\n */\n NO_CONTENT = 204,\n /**\n * The server successfully processed the request, but is not returning any content.\n * Unlike a 204 response, this response requires that the requester reset the document view.\n */\n RESET_CONTENT = 205,\n /**\n * The server is delivering only part of the resource (byte serving) due to a range header sent by the client.\n * The range header is used by HTTP clients to enable resuming of interrupted downloads,\n * or split a download into multiple simultaneous streams.\n */\n PARTIAL_CONTENT = 206,\n /**\n * The message body that follows is an XML message and can contain a number of separate response codes,\n * depending on how many sub-requests were made.\n */\n MULTI_STATUS = 207,\n /**\n * The members of a DAV binding have already been enumerated in a preceding part of the (multistatus) response,\n * and are not being included again.\n */\n ALREADY_REPORTED = 208,\n /**\n * The server has fulfilled a request for the resource,\n * and the response is a representation of the result of one or more instance-manipulations applied to the current instance.\n */\n IM_USED = 226,\n /**\n * Indicates multiple options for the resource from which the client may choose (via agent-driven content negotiation).\n * For example, this code could be used to present multiple video format options,\n * to list files with different filename extensions, or to suggest word-sense disambiguation.\n */\n MULTIPLE_CHOICES = 300,\n /**\n * This and all future requests should be directed to the given URI.\n */\n MOVED_PERMANENTLY = 301,\n /**\n * This is an example of industry practice contradicting the standard.\n * The HTTP/1.0 specification (RFC 1945) required the client to perform a temporary redirect\n * (the original describing phrase was "Moved Temporarily"), but popular browsers implemented 302\n * with the functionality of a 303 See Other. Therefore, HTTP/1.1 added status codes 303 and 307\n * to distinguish between the two behaviours. However, some Web applications and frameworks\n * use the 302 status code as if it were the 303.\n */\n FOUND = 302,\n /**\n * SINCE HTTP/1.1\n * The response to the request can be found under another URI using a GET method.\n * When received in response to a POST (or PUT/DELETE), the client should presume that\n * the server has received the data and should issue a redirect with a separate GET message.\n */\n SEE_OTHER = 303,\n /**\n * Indicates that the resource has not been modified since the version specified by the request headers If-Modified-Since or If-None-Match.\n * In such case, there is no need to retransmit the resource since the client still has a previously-downloaded copy.\n */\n NOT_MODIFIED = 304,\n /**\n * SINCE HTTP/1.1\n * The requested resource is available only through a proxy, the address for which is provided in the response.\n * Many HTTP clients (such as Mozilla and Internet Explorer) do not correctly handle responses with this status code, primarily for security reasons.\n */\n USE_PROXY = 305,\n /**\n * No longer used. Originally meant "Subsequent requests should use the specified proxy."\n */\n SWITCH_PROXY = 306,\n /**\n * SINCE HTTP/1.1\n * In this case, the request should be repeated with another URI; however, future requests should still use the original URI.\n * In contrast to how 302 was historically implemented, the request method is not allowed to be changed when reissuing the original request.\n * For example, a POST request should be repeated using another POST request.\n */\n TEMPORARY_REDIRECT = 307,\n /**\n * The request and all future requests should be repeated using another URI.\n * 307 and 308 parallel the behaviors of 302 and 301, but do not allow the HTTP method to change.\n * So, for example, submitting a form to a permanently redirected resource may continue smoothly.\n */\n PERMANENT_REDIRECT = 308,\n /**\n * The server cannot or will not process the request due to an apparent client error\n * (e.g., malformed request syntax, too large size, invalid request message framing, or deceptive request routing).\n */\n BAD_REQUEST = 400,\n /**\n * Similar to 403 Forbidden, but specifically for use when authentication is required and has failed or has not yet\n * been provided. The response must include a WWW-Authenticate header field containing a challenge applicable to the\n * requested resource. See Basic access authentication and Digest access authentication. 401 semantically means\n * "unauthenticated",i.e. the user does not have the necessary credentials.\n */\n UNAUTHORIZED = 401,\n /**\n * Reserved for future use. The original intention was that this code might be used as part of some form of digital\n * cash or micro payment scheme, but that has not happened, and this code is not usually used.\n * Google Developers API uses this status if a particular developer has exceeded the daily limit on requests.\n */\n PAYMENT_REQUIRED = 402,\n /**\n * The request was valid, but the server is refusing action.\n * The user might not have the necessary permissions for a resource.\n */\n FORBIDDEN = 403,\n /**\n * The requested resource could not be found but may be available in the future.\n * Subsequent requests by the client are permissible.\n */\n NOT_FOUND = 404,\n /**\n * A request method is not supported for the requested resource;\n * for example, a GET request on a form that requires data to be presented via POST, or a PUT request on a read-only resource.\n */\n METHOD_NOT_ALLOWED = 405,\n /**\n * The requested resource is capable of generating only content not acceptable according to the Accept headers sent in the request.\n */\n NOT_ACCEPTABLE = 406,\n /**\n * The client must first authenticate itself with the proxy.\n */\n PROXY_AUTHENTICATION_REQUIRED = 407,\n /**\n * The server timed out waiting for the request.\n * According to HTTP specifications:\n * "The client did not produce a request within the time that the server was prepared to wait. The client MAY repeat the request without modifications at any later time."\n */\n REQUEST_TIMEOUT = 408,\n /**\n * Indicates that the request could not be processed because of conflict in the request,\n * such as an edit conflict between multiple simultaneous updates.\n */\n CONFLICT = 409,\n /**\n * Indicates that the resource requested is no longer available and will not be available again.\n * This should be used when a resource has been intentionally removed and the resource should be purged.\n * Upon receiving a 410 status code, the client should not request the resource in the future.\n * Clients such as search engines should remove the resource from their indices.\n * Most use cases do not require clients and search engines to purge the resource, and a "404 Not Found" may be used instead.\n */\n GONE = 410,\n /**\n * The request did not specify the length of its content, which is required by the requested resource.\n */\n LENGTH_REQUIRED = 411,\n /**\n * The server does not meet one of the preconditions that the requester put on the request.\n */\n PRECONDITION_FAILED = 412,\n /**\n * The request is larger than the server is willing or able to process. Previously called "Request Entity Too Large".\n */\n PAYLOAD_TOO_LARGE = 413,\n /**\n * The URI provided was too long for the server to process. Often the result of too much data being encoded as a query-string of a GET request,\n * in which case it should be converted to a POST request.\n * Called "Request-URI Too Long" previously.\n */\n URI_TOO_LONG = 414,\n /**\n * The request entity has a media type which the server or resource does not support.\n * For example, the client uploads an image as image/svg+xml, but the server requires that images use a different format.\n */\n UNSUPPORTED_MEDIA_TYPE = 415,\n /**\n * The client has asked for a portion of the file (byte serving), but the server cannot supply that portion.\n * For example, if the client asked for a part of the file that lies beyond the end of the file.\n * Called "Requested Range Not Satisfiable" previously.\n */\n RANGE_NOT_SATISFIABLE = 416,\n /**\n * The server cannot meet the requirements of the Expect request-header field.\n */\n EXPECTATION_FAILED = 417,\n /**\n * This code was defined in 1998 as one of the traditional IETF April Fools\' jokes, in RFC 2324, Hyper Text Coffee Pot Control Protocol,\n * and is not expected to be implemented by actual HTTP servers. The RFC specifies this code should be returned by\n * teapots requested to brew coffee. This HTTP status is used as an Easter egg in some websites, including Google.com.\n */\n I_AM_A_TEAPOT = 418,\n /**\n * The request was directed at a server that is not able to produce a response (for example because a connection reuse).\n */\n MISDIRECTED_REQUEST = 421,\n /**\n * The request was well-formed but was unable to be followed due to semantic errors.\n */\n UNPROCESSABLE_ENTITY = 422,\n /**\n * The resource that is being accessed is locked.\n */\n LOCKED = 423,\n /**\n * The request failed due to failure of a previous request (e.g., a PROPPATCH).\n */\n FAILED_DEPENDENCY = 424,\n /**\n * The client should switch to a different protocol such as TLS/1.0, given in the Upgrade header field.\n */\n UPGRADE_REQUIRED = 426,\n /**\n * The origin server requires the request to be conditional.\n * Intended to prevent "the \'lost update\' problem, where a client\n * GETs a resource\'s state, modifies it, and PUTs it back to the server,\n * when meanwhile a third party has modified the state on the server, leading to a conflict."\n */\n PRECONDITION_REQUIRED = 428,\n /**\n * The user has sent too many requests in a given amount of time. Intended for use with rate-limiting schemes.\n */\n TOO_MANY_REQUESTS = 429,\n /**\n * The server is unwilling to process the request because either an individual header field,\n * or all the header fields collectively, are too large.\n */\n REQUEST_HEADER_FIELDS_TOO_LARGE = 431,\n /**\n * A server operator has received a legal demand to deny access to a resource or to a set of resources\n * that includes the requested resource. The code 451 was chosen as a reference to the novel Fahrenheit 451.\n */\n UNAVAILABLE_FOR_LEGAL_REASONS = 451,\n /**\n * A generic error message, given when an unexpected condition was encountered and no more specific message is suitable.\n */\n INTERNAL_SERVER_ERROR = 500,\n /**\n * The server either does not recognize the request method, or it lacks the ability to fulfill the request.\n * Usually this implies future availability (e.g., a new feature of a web-service API).\n */\n NOT_IMPLEMENTED = 501,\n /**\n * The server was acting as a gateway or proxy and received an invalid response from the upstream server.\n */\n BAD_GATEWAY = 502,\n /**\n * The server is currently unavailable (because it is overloaded or down for maintenance).\n * Generally, this is a temporary state.\n */\n SERVICE_UNAVAILABLE = 503,\n /**\n * The server was acting as a gateway or proxy and did not receive a timely response from the upstream server.\n */\n GATEWAY_TIMEOUT = 504,\n /**\n * The server does not support the HTTP protocol version used in the request\n */\n HTTP_VERSION_NOT_SUPPORTED = 505,\n /**\n * Transparent content negotiation for the request results in a circular reference.\n */\n VARIANT_ALSO_NEGOTIATES = 506,\n /**\n * The server is unable to store the representation needed to complete the request.\n */\n INSUFFICIENT_STORAGE = 507,\n /**\n * The server detected an infinite loop while processing the request.\n */\n LOOP_DETECTED = 508,\n /**\n * Further extensions to the request are required for the server to fulfill it.\n */\n NOT_EXTENDED = 510,\n /**\n * The client needs to authenticate to gain network access.\n * Intended for use by intercepting proxies used to control access to the network (e.g., "captive portals" used\n * to require agreement to Terms of Service before granting full Internet access via a Wi-Fi hotspot).\n */\n NETWORK_AUTHENTICATION_REQUIRED = 511\n}\n'},{name:"@taquito/http-utils/dist/types/taquito-http-utils.d.ts",dts:"/**\n * @packageDocumentation\n * @module @taquito/http-utils\n */\nexport * from './status_code';\nexport { VERSION } from './version';\nexport { HttpRequestFailed, HttpResponseError, HttpTimeoutError } from './errors';\ntype ObjectType = Record;\nexport interface HttpRequestOptions {\n url: string;\n method?: 'GET' | 'POST';\n timeout?: number;\n json?: boolean;\n query?: ObjectType;\n headers?: {\n [key: string]: string;\n };\n mimeType?: string;\n}\nexport declare class HttpBackend {\n private timeout;\n constructor(timeout?: number);\n protected serialize(obj?: ObjectType): string;\n /**\n *\n * @param options contains options to be passed for the HTTP request (url, method and timeout)\n * @throws {@link HttpRequestFailed} | {@link HttpResponseError} | {@link HttpTimeoutError}\n */\n createRequest({ url, method, timeout, query, headers, json }: HttpRequestOptions, data?: object | string): Promise;\n}\n"},{name:"@taquito/http-utils/dist/types/version.d.ts",dts:"export declare const VERSION: {\n commitHash: string;\n version: string;\n};\n"},{name:"@taquito/local-forging/dist/types/michelson/codec.d.ts",dts:"import { Decoder } from '../decoder';\nimport { Uint8ArrayConsumer } from '../uint8array-consumer';\nimport { Encoder } from '../taquito-local-forging';\nexport type PrimValue = {\n prim: string;\n args?: MichelsonValue[];\n annots?: string[];\n};\nexport type BytesValue = {\n bytes: string;\n};\nexport type StringValue = {\n string: string;\n};\nexport type IntValue = {\n int: string;\n};\nexport type MichelsonValue = PrimValue | BytesValue | StringValue | IntValue | (PrimValue | BytesValue | StringValue | IntValue)[];\nexport declare const isPrim: (value: MichelsonValue) => value is PrimValue;\nexport declare const isBytes: (value: MichelsonValue) => value is BytesValue;\nexport declare const isString: (value: MichelsonValue) => value is StringValue;\nexport declare const isInt: (value: MichelsonValue) => value is IntValue;\nexport declare const scriptEncoder: Encoder<{\n code: MichelsonValue;\n storage: MichelsonValue;\n}>;\nexport declare const scriptDecoder: Decoder;\nexport declare const valueEncoder: Encoder;\nexport declare const valueDecoder: Decoder;\nexport declare const extractRequiredLen: (value: Uint8ArrayConsumer, bytesLength?: number) => Uint8Array;\n/**\n * @description parse bytes into multiple items of an array\n * @param value Uint8ArrayConsumer class of forged segment to parse\n * @param bytesLength default 4 bytes for length of variable bytes\n * @returns array of Uint8Array values for each array item\n */\nexport declare const stripLengthPrefixFromBytes: (value: Uint8ArrayConsumer, bytesLength?: number) => Uint8Array[];\nexport declare const bytesEncoder: Encoder;\nexport declare const bytesDecoder: Decoder;\nexport declare const stringEncoder: Encoder;\nexport declare const stringDecoder: Decoder;\nexport declare const intEncoder: Encoder;\nexport declare const intDecoder: (value: Uint8ArrayConsumer) => IntValue;\nexport declare const primEncoder: Encoder;\nexport declare const primDecoder: (value: Uint8ArrayConsumer, preamble: Uint8Array) => Partial;\nexport declare const primViewDecoder: (value: Uint8ArrayConsumer, result: Partial) => Partial;\nexport declare const decodeCombPair: Decoder;\nexport declare const encodeAnnots: Encoder;\nexport declare const decodeAnnots: Decoder;\n"},{name:"@taquito/local-forging/dist/types/schema/operation.d.ts",dts:"import { Decoder } from '../decoder';\nimport { Uint8ArrayConsumer } from '../uint8array-consumer';\nimport { CODEC } from '../constants';\nexport declare const ManagerOperationSchema: {\n branch: CODEC;\n contents: CODEC[];\n};\nexport declare const ActivationSchema: {\n pkh: CODEC;\n secret: CODEC;\n};\nexport declare const RevealSchema: {\n source: CODEC;\n fee: CODEC;\n counter: CODEC;\n gas_limit: CODEC;\n storage_limit: CODEC;\n public_key: CODEC;\n};\nexport declare const DelegationSchema: {\n source: CODEC;\n fee: CODEC;\n counter: CODEC;\n gas_limit: CODEC;\n storage_limit: CODEC;\n delegate: CODEC;\n};\nexport declare const TransactionSchema: {\n source: CODEC;\n fee: CODEC;\n counter: CODEC;\n gas_limit: CODEC;\n storage_limit: CODEC;\n amount: CODEC;\n destination: CODEC;\n parameters: CODEC;\n};\nexport declare const OriginationSchema: {\n source: CODEC;\n fee: CODEC;\n counter: CODEC;\n gas_limit: CODEC;\n storage_limit: CODEC;\n balance: CODEC;\n delegate: CODEC;\n script: CODEC;\n};\nexport declare const BallotSchema: {\n source: CODEC;\n period: CODEC;\n proposal: CODEC;\n ballot: CODEC;\n};\nexport declare const AttestationSchema: {\n slot: CODEC;\n level: CODEC;\n round: CODEC;\n block_payload_hash: CODEC;\n};\nexport declare const EndorsementSchema: {\n slot: CODEC;\n level: CODEC;\n round: CODEC;\n block_payload_hash: CODEC;\n};\nexport declare const SeedNonceRevelationSchema: {\n level: CODEC;\n nonce: CODEC;\n};\nexport declare const ProposalsSchema: {\n source: CODEC;\n period: CODEC;\n proposals: CODEC;\n};\nexport declare const RegisterGlobalConstantSchema: {\n source: CODEC;\n fee: CODEC;\n counter: CODEC;\n gas_limit: CODEC;\n storage_limit: CODEC;\n value: CODEC;\n};\nexport declare const TransferTicketSchema: {\n source: CODEC;\n fee: CODEC;\n counter: CODEC;\n gas_limit: CODEC;\n storage_limit: CODEC;\n ticket_contents: CODEC;\n ticket_ty: CODEC;\n ticket_ticketer: CODEC;\n ticket_amount: CODEC;\n destination: CODEC;\n entrypoint: CODEC;\n};\nexport declare const IncreasePaidStorageSchema: {\n source: CODEC;\n fee: CODEC;\n counter: CODEC;\n gas_limit: CODEC;\n storage_limit: CODEC;\n amount: CODEC;\n destination: CODEC;\n};\nexport declare const UpdateConsensusKeySchema: {\n source: CODEC;\n fee: CODEC;\n counter: CODEC;\n gas_limit: CODEC;\n storage_limit: CODEC;\n pk: CODEC;\n};\nexport declare const DrainDelegateSchema: {\n consensus_key: CODEC;\n delegate: CODEC;\n destination: CODEC;\n};\nexport declare const SetDepositsLimitSchema: {\n source: CODEC;\n fee: CODEC;\n counter: CODEC;\n gas_limit: CODEC;\n storage_limit: CODEC;\n limit: CODEC;\n};\nexport declare const SmartRollupOriginateSchema: {\n source: CODEC;\n fee: CODEC;\n counter: CODEC;\n gas_limit: CODEC;\n storage_limit: CODEC;\n pvm_kind: CODEC;\n kernel: CODEC;\n parameters_ty: CODEC;\n whitelist: CODEC;\n};\nexport declare const SmartRollupAddMessagesSchema: {\n source: CODEC;\n fee: CODEC;\n counter: CODEC;\n gas_limit: CODEC;\n storage_limit: CODEC;\n message: CODEC;\n};\nexport declare const SmartRollupExecuteOutboxMessageSchema: {\n source: CODEC;\n fee: CODEC;\n counter: CODEC;\n gas_limit: CODEC;\n storage_limit: CODEC;\n rollup: CODEC;\n cemented_commitment: CODEC;\n output_proof: CODEC;\n};\nexport declare const FailingNoopSchema: {\n arbitrary: CODEC;\n};\nexport declare const operationEncoder: (encoders: {\n [key: string]: (val: object) => string;\n}) => (operation: {\n kind: string;\n}) => string;\nexport declare const operationDecoder: (decoders: {\n [key: string]: Decoder;\n}) => (value: Uint8ArrayConsumer) => {\n kind: string;\n};\ntype Schema = Record;\nexport type Value = Record;\nexport declare const schemaEncoder: (encoders: {\n [key: string]: (val: object) => string;\n}) => (schema: Schema) => (value: Value) => string;\nexport declare const schemaDecoder: (decoders: {\n [key: string]: Decoder;\n}) => (schema: {\n [key: string]: string | string[];\n}) => (value: Uint8ArrayConsumer) => {};\nexport {};\n"},{name:"@taquito/local-forging/dist/types/codec.d.ts",dts:"import { Prefix } from '@taquito/utils';\nimport { MichelsonValue } from './michelson/codec';\nimport { Uint8ArrayConsumer } from './uint8array-consumer';\nexport declare const prefixEncoder: (prefix: Prefix) => (str: string) => string;\nexport declare const prefixDecoder: (pre: Prefix) => (str: Uint8ArrayConsumer) => string;\nexport declare const tz1Decoder: (str: Uint8ArrayConsumer) => string;\nexport declare const branchDecoder: (str: Uint8ArrayConsumer) => string;\nexport declare const publicKeyHashDecoder: (val: Uint8ArrayConsumer) => string | undefined;\nexport declare const publicKeyHashesDecoder: (val: Uint8ArrayConsumer) => (string | undefined)[] | undefined;\nexport declare const branchEncoder: (str: string) => string;\nexport declare const tz1Encoder: (str: string) => string;\nexport declare const boolEncoder: (bool: unknown) => string;\nexport declare const proposalEncoder: (proposal: string) => string;\nexport declare const proposalDecoder: (proposal: Uint8ArrayConsumer) => string;\nexport declare const proposalsDecoder: (proposal: Uint8ArrayConsumer) => string[];\nexport declare const proposalsEncoder: (proposals: string[]) => string;\nexport declare const ballotEncoder: (ballot: string) => string;\nexport declare const ballotDecoder: (ballot: Uint8ArrayConsumer) => string;\nexport declare const pvmKindEncoder: (pvm: string) => string;\nexport declare const pvmKindDecoder: (pvm: Uint8ArrayConsumer) => string;\nexport declare const delegateEncoder: (val: string) => string;\nexport declare const int32Encoder: (val: number | string) => string;\nexport declare const int32Decoder: (val: Uint8ArrayConsumer) => number;\nexport declare const int16Encoder: (val: number | string) => string;\nexport declare const int16Decoder: (val: Uint8ArrayConsumer) => number;\nexport declare const boolDecoder: (val: Uint8ArrayConsumer) => boolean;\nexport declare const delegateDecoder: (val: Uint8ArrayConsumer) => string | undefined;\nexport declare const publicKeyHashEncoder: (val: string) => string;\nexport declare const publicKeyHashesEncoder: (val?: string[]) => string;\nexport declare const publicKeyEncoder: (val: string) => string;\nexport declare const addressEncoder: (val: string) => string;\nexport declare const smartRollupAddressEncoder: (val: string) => string;\nexport declare const smartContractAddressEncoder: (val: string) => string;\nexport declare const publicKeyDecoder: (val: Uint8ArrayConsumer) => string;\nexport declare const smartRollupCommitmentHashEncoder: (val: string) => string;\nexport declare const addressDecoder: (val: Uint8ArrayConsumer) => string | undefined;\nexport declare const smartRollupAddressDecoder: (val: Uint8ArrayConsumer) => string;\nexport declare const smartContractAddressDecoder: (val: Uint8ArrayConsumer) => string;\nexport declare const smartRollupCommitmentHashDecoder: (val: Uint8ArrayConsumer) => string;\nexport declare const zarithEncoder: (n: string) => string;\nexport declare const zarithDecoder: (n: Uint8ArrayConsumer) => string;\nexport declare const entrypointDecoder: (value: Uint8ArrayConsumer) => string;\nexport declare const parametersDecoder: (val: Uint8ArrayConsumer) => {\n entrypoint: string;\n value: string | number | object | undefined;\n} | undefined;\nexport declare const entrypointEncoder: (entrypoint: string) => string;\nexport declare const parametersEncoder: (val: {\n entrypoint: string;\n value: MichelsonValue;\n}) => string;\nexport declare const valueParameterEncoder: (value: MichelsonValue) => string;\nexport declare const valueParameterDecoder: (val: Uint8ArrayConsumer) => string | number | object | undefined;\nexport declare const blockPayloadHashEncoder: (str: string) => string;\nexport declare const blockPayloadHashDecoder: (str: Uint8ArrayConsumer) => string;\nexport declare const entrypointNameEncoder: (entrypoint: string) => string;\nexport declare const entrypointNameDecoder: (val: Uint8ArrayConsumer) => string;\nexport declare const burnLimitEncoder: (val: string) => string;\nexport declare const burnLimitDecoder: (value: Uint8ArrayConsumer) => string | undefined;\nexport declare const depositsLimitEncoder: (val: string) => string;\nexport declare const depositsLimitDecoder: (value: Uint8ArrayConsumer) => string | undefined;\nexport declare const paddedBytesEncoder: (val: string, paddingLength?: number) => string;\nexport declare const paddedBytesDecoder: (val: Uint8ArrayConsumer) => string;\nexport declare const smartRollupMessageEncoder: (val: string[]) => string;\nexport declare const smartRollupMessageDecoder: (val: Uint8ArrayConsumer) => string[];\n"},{name:"@taquito/local-forging/dist/types/constants.d.ts",dts:'export declare const ENTRYPOINT_MAX_LENGTH = 31;\nexport declare enum CODEC {\n SECRET = "secret",\n RAW = "raw",\n TZ1 = "tz1",\n BRANCH = "branch",\n ZARITH = "zarith",\n PUBLIC_KEY = "public_key",\n PKH = "pkh",\n PKH_ARR = "pkhArr",\n DELEGATE = "delegate",\n SCRIPT = "script",\n BALLOT_STATEMENT = "ballotStmt",\n PROPOSAL = "proposal",\n PROPOSAL_ARR = "proposalArr",\n INT32 = "int32",\n INT16 = "int16",\n PARAMETERS = "parameters",\n ADDRESS = "address",\n SMART_CONTRACT_ADDRESS = "smart_contract_address",\n SMART_ROLLUP_ADDRESS = "smart_rollup_address",\n SMART_ROLLUP_COMMITMENT_HASH = "smart_rollup_commitment_hash",\n VALUE = "value",\n PADDED_BYTES = "padded_bytes",\n SMART_ROLLUP_MESSAGE = "smart_rollup_message",\n MANAGER = "manager",\n BLOCK_PAYLOAD_HASH = "blockPayloadHash",\n ENTRYPOINT = "entrypoint",\n OPERATION = "operation",\n OP_ACTIVATE_ACCOUNT = "activate_account",\n OP_DELEGATION = "delegation",\n OP_TRANSACTION = "transaction",\n OP_ORIGINATION = "origination",\n OP_BALLOT = "ballot",\n OP_FAILING_NOOP = "failing_noop",\n OP_ATTESTATION = "attestation",\n OP_ENDORSEMENT = "endorsement",\n OP_SEED_NONCE_REVELATION = "seed_nonce_revelation",\n OP_REVEAL = "reveal",\n OP_PROPOSALS = "proposals",\n OP_REGISTER_GLOBAL_CONSTANT = "register_global_constant",\n OP_TRANSFER_TICKET = "transfer_ticket",\n BURN_LIMIT = "burn_limit",\n OP_INCREASE_PAID_STORAGE = "increase_paid_storage",\n OP_UPDATE_CONSENSUS_KEY = "update_consensus_key",\n OP_DRAIN_DELEGATE = "drain_delegate",\n DEPOSITS_LIMIT = "deposits_limit",\n OP_SET_DEPOSITS_LIMIT = "set_deposits_limit",\n OP_SMART_ROLLUP_ORIGINATE = "smart_rollup_originate",\n PVM_KIND = "pvm_kind",\n OP_SMART_ROLLUP_ADD_MESSAGES = "smart_rollup_add_messages",\n OP_SMART_ROLLUP_EXECUTE_OUTBOX_MESSAGE = "smart_rollup_execute_outbox_message"\n}\nexport declare const opMapping: {\n [key: string]: string;\n};\nexport declare const opMappingReverse: {\n [key: string]: string;\n};\nexport declare const kindMapping: {\n [key: number]: string;\n};\nexport declare const kindMappingReverse: {\n [key: string]: string;\n};\nexport declare const entrypointMapping: {\n [key: string]: string;\n};\nexport declare const entrypointMappingReverse: {\n [key: string]: string;\n};\n'},{name:"@taquito/local-forging/dist/types/decoder.d.ts",dts:"import { Uint8ArrayConsumer } from './uint8array-consumer';\nexport type Decoder = (val: Uint8ArrayConsumer) => string | number | object | undefined;\nexport declare const decoders: {\n [key: string]: Decoder;\n};\n"},{name:"@taquito/local-forging/dist/types/encoder.d.ts",dts:"export type Encoder = (val: T) => string;\nexport declare const encoders: {\n [key: string]: Encoder;\n};\n"},{name:"@taquito/local-forging/dist/types/errors.d.ts",dts:"import { ParameterValidationError } from '@taquito/core';\nimport { OperationContents } from '@taquito/rpc';\n/**\n * @category Error\n * @description Error that indicates an invalid operation content being passed or used\n */ export declare class InvalidOperationSchemaError extends ParameterValidationError {\n readonly operation: OperationContents;\n readonly errorDetail?: string | undefined;\n constructor(operation: OperationContents, errorDetail?: string | undefined);\n}\n/**\n * @category Error\n * @description Error that indicates an entrypoint name exceeding maximum length\n */\nexport declare class OversizedEntryPointError extends ParameterValidationError {\n readonly entrypoint: string;\n constructor(entrypoint: string);\n}\n/**\n * @category Error\n * @description Error that indicates an invalid ballot value being used\n */\nexport declare class InvalidBallotValueError extends ParameterValidationError {\n readonly ballotValue: string;\n constructor(ballotValue: string);\n}\n/**\n * @category Error\n * @description Error that indicates a failure when trying to decode ballot value\n */\nexport declare class DecodeBallotValueError extends ParameterValidationError {\n readonly ballotValue: string;\n constructor(ballotValue: string);\n}\n/**\n * @category Error\n * @description Error that indicates unexpected Michelson Value being passed or used\n */\nexport declare class UnexpectedMichelsonValueError extends ParameterValidationError {\n readonly value: string;\n constructor(value: string);\n}\n/**\n * @category Error\n * @description Error that indicates a failure when trying to decode an operation\n */\nexport declare class OperationDecodingError extends ParameterValidationError {\n readonly message: string;\n constructor(message: string);\n}\n/**\n * @category Error\n * @description Error that indicates a failure when trying to encode an operation\n */\nexport declare class OperationEncodingError extends ParameterValidationError {\n readonly message: string;\n constructor(message: string);\n}\n/**\n * @category Error\n * @description Error that indicates an unsupported operation being passed or used\n */\nexport declare class UnsupportedOperationError extends ParameterValidationError {\n readonly op: string;\n constructor(op: string);\n}\n/**\n * @cateogry Error\n * @description Error that indicates an unsupported pvm being passed or used\n */\nexport declare class UnsupportedPvmKindError extends ParameterValidationError {\n readonly pvm: string;\n constructor(pvm: string);\n}\n/**\n * @category Error\n * @description Error that indicates an unsupported pvm to decode\n */\nexport declare class DecodePvmKindError extends ParameterValidationError {\n readonly pvm: string;\n constructor(pvm: string);\n}\n/**\n * @category Error\n * @description Error that indicates an invalid Smart Rollup Address (sr1)\n */\nexport declare class InvalidSmartRollupAddressError extends ParameterValidationError {\n readonly address: string;\n readonly errorDetail?: string | undefined;\n constructor(address: string, errorDetail?: string | undefined);\n}\n/**\n * @category Error\n * @description Error that indicates an invalid Smart Rollup commitment hash (src1)\n */\nexport declare class InvalidSmartRollupCommitmentHashError extends ParameterValidationError {\n readonly hash: string;\n readonly errorDetail?: string | undefined;\n constructor(hash: string, errorDetail?: string | undefined);\n}\n"},{name:"@taquito/local-forging/dist/types/interface.d.ts",dts:"import { OperationContents } from '@taquito/rpc';\nexport interface ForgeParams {\n branch: string;\n contents: OperationContents[];\n}\nexport type ForgeResponse = string;\nexport interface Forger {\n forge(params: ForgeParams): Promise;\n}\n"},{name:"@taquito/local-forging/dist/types/protocols.d.ts",dts:'export declare enum ProtocolsHash {\n Pt24m4xi = "Pt24m4xiPbLDhVgVfABUjirbmda3yohdN82Sp9FeuAXJ4eV9otd",\n PsBABY5H = "PsBABY5HQTSkA4297zNHfsZNKtxULfL18y95qb3m53QJiXGmrbU",\n PsBabyM1 = "PsBabyM1eUXZseaJdmXFApDSBqj8YBfwELoxZHHW77EMcAbbwAS",\n PsCARTHA = "PsCARTHAGazKbHtnKfLzQg3kms52kSRpgnDY982a9oYsSXRLQEb",\n PsDELPH1 = "PsDELPH1Kxsxt8f9eWbxQeRxkjfbxoqM52jvs5Y5fBxWWh4ifpo",\n PtEdo2Zk = "PtEdo2ZkT9oKpimTah6x2embF25oss54njMuPzkJTEi5RqfdZFA",\n PsFLorena = "PsFLorenaUUuikDWvMDr6fGBRG8kt3e3D3fHoXK1j1BFRxeSH4i",\n PtGRANADs = "PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV",\n PtHangz2 = "PtHangz2aRngywmSRGGvrcTyMbbdpWdpFKuS4uMWxg2RaH9i1qx",\n Psithaca2 = "Psithaca2MLRFYargivpo7YvUr7wUDqyxrdhC5CQq78mRvimz6A",\n PtJakart2 = "PtJakart2xVj7pYXJBXrqHgd82rdkLey5ZeeGwDgPp9rhQUbSqY",\n PtKathman = "PtKathmankSpLLDALzWw7CGD2j2MtyveTwboEYokqUCP4a1LxMg",\n PtLimaPtL = "PtLimaPtLMwfNinJi9rCfDPWea8dFgTZ1MeJ9f1m2SRic6ayiwW",\n PtMumbaii = "PtMumbaiiFFEGbew1rRjzSPyzRbA51Tm3RVZL5suHPxSZYDhCEc",\n PtMumbai2 = "PtMumbai2TmsJHNGRkD8v8YDbtao7BLUC3wjASn1inAKLFCjaH1",\n PtNairobi = "PtNairobiyssHuh87hEhfVBGCVrK3WnS8Z2FT4ymB5tAa4r1nQf",\n ProxfordY = "ProxfordYmVfjWnRcgjWH36fW6PArwqykTFzotUxRs6gmTcZDuH",\n ProtoALpha = "ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK"\n}\nexport declare function ProtoInferiorTo(a: ProtocolsHash, b: ProtocolsHash): boolean;\n'},{name:"@taquito/local-forging/dist/types/taquito-local-forging.d.ts",dts:"/**\n * @packageDocumentation\n * @module @taquito/local-forging\n */\nimport { ForgeParams, Forger } from './interface';\nimport { CODEC } from './constants';\nimport { ProtocolsHash } from './protocols';\nexport { CODEC, opMapping, opMappingReverse } from './constants';\nexport * from './decoder';\nexport * from './encoder';\nexport * from './uint8array-consumer';\nexport * from './interface';\nexport { VERSION } from './version';\nexport { ProtocolsHash } from './protocols';\nexport declare function getCodec(codec: CODEC, _proto: ProtocolsHash): {\n encoder: import(\"./encoder\").Encoder;\n decoder: (hex: string) => any;\n};\nexport declare class LocalForger implements Forger {\n readonly protocolHash: ProtocolsHash;\n constructor(protocolHash?: ProtocolsHash);\n private codec;\n forge(params: ForgeParams): Promise;\n parse(hex: string): Promise;\n}\nexport declare const localForger: LocalForger;\n"},{name:"@taquito/local-forging/dist/types/uint8array-consumer.d.ts",dts:"export declare class Uint8ArrayConsumer {\n private readonly arr;\n private offset;\n static fromHexString(hex: string): Uint8ArrayConsumer;\n constructor(arr: Uint8Array, offset?: number);\n consume(count: number): Uint8Array;\n get(idx: number): number;\n length(): number;\n slice(start: number, end?: number): Uint8ArrayConsumer;\n}\n"},{name:"@taquito/local-forging/dist/types/utils.d.ts",dts:"export declare const concat: (...arr: Uint8Array[]) => Uint8Array;\nexport declare const toHexString: (bytes: Uint8Array) => string;\nexport declare const pad: (num: number, paddingLen?: number) => string;\n"},{name:"@taquito/local-forging/dist/types/validator.d.ts",dts:"import { OpKind } from '@taquito/rpc';\nimport { OperationContents } from '@taquito/rpc';\n/**\n * @returns A boolean value to indicate whether the operation kind is valid or not\n */\nexport declare const validateOperationKind: (opKind: OpKind) => boolean;\n/**\n * returns 0 when the two array of properties are identical or the passed property\n * does not have any missing parameters from the corresponding schema\n *\n * @returns array element differences if there are missing required property keys\n */\nexport declare const validateMissingProperty: (operationContent: OperationContents) => string[];\n"},{name:"@taquito/local-forging/dist/types/version.d.ts",dts:"export declare const VERSION: {\n commitHash: string;\n version: string;\n};\n"},{name:"@taquito/michel-codec/dist/types/base58.d.ts",dts:"import { TaquitoError } from '@taquito/core';\n/**\n * @category Error\n * @description Error that indicates a failure when decoding a base58 encoding\n */\nexport declare class Base58DecodingError extends TaquitoError {\n readonly message: string;\n constructor(message: string);\n}\nexport declare function decodeBase58(src: string): number[];\nexport declare function encodeBase58(src: number[] | Uint8Array): string;\nexport declare function decodeBase58Check(src: string): number[];\nexport declare function encodeBase58Check(src: number[] | Uint8Array): string;\n"},{name:"@taquito/michel-codec/dist/types/binary.d.ts",dts:'import { BytesLiteral } from \'./micheline\';\nimport { MichelsonData, MichelsonType } from \'./michelson-types\';\ntype AddressType = \'ED25519PublicKeyHash\' | \'SECP256K1PublicKeyHash\' | \'P256PublicKeyHash\' | \'ContractHash\';\nexport interface Address {\n type: AddressType;\n hash: number[] | Uint8Array;\n entryPoint?: string;\n}\nexport type PublicKeyType = \'ED25519PublicKey\' | \'SECP256K1PublicKey\' | \'P256PublicKey\';\nexport interface PublicKey {\n type: PublicKeyType;\n publicKey: number[] | Uint8Array;\n}\n/**\n * Serializes any value of packable type to its optimized binary representation\n * identical to the one used by PACK and UNPACK Michelson instructions.\n * Without a type definition (not recommended) the data will be encoded as a binary form of a generic Michelson expression.\n * Type definition allows some types like `timestamp` and `address` and other base58 representable types to be encoded to\n * corresponding optimized binary forms borrowed from the Tezos protocol\n *\n * ```typescript\n * const data: MichelsonData = {\n * string: "KT1RvkwF4F7pz1gCoxkyZrG1RkrxQy3gmFTv%foo"\n * };\n *\n * const typ: MichelsonType = {\n * prim: "address"\n * };\n *\n * const packed = packData(data, typ);\n *\n * // 050a0000001901be41ee922ddd2cf33201e49d32da0afec571dce300666f6f\n * ```\n *\n * Without a type definition the base58 encoded address will be treated as a string\n * ```typescript\n * const data: MichelsonData = {\n * string: "KT1RvkwF4F7pz1gCoxkyZrG1RkrxQy3gmFTv%foo"\n * };\n *\n * const packed = packData(data);\n *\n * // 0501000000284b543152766b7746344637707a3167436f786b795a724731526b7278517933676d46547625666f6f\n * ```\n * @param d Data object\n * @param t Optional type definition\n * @returns Binary representation as numeric array\n */\nexport declare function packData(d: MichelsonData, t?: MichelsonType): number[];\n/**\n * Serializes any value of packable type to its optimized binary representation\n * identical to the one used by PACK and UNPACK Michelson instructions.\n * Same as {@link packData} but returns a `bytes` Michelson data literal instead of an array\n *\n * ```typescript\n * const data: MichelsonData = {\n * string: "2019-09-26T10:59:51Z"\n * };\n *\n * const typ: MichelsonType = {\n * prim: "timestamp"\n * };\n *\n * const packed = packDataBytes(data, typ);\n *\n * // { bytes: "0500a7e8e4d80b" }\n * ```\n * @param d Data object\n * @param t Optional type definition\n * @returns Binary representation as a bytes literal\n */\nexport declare function packDataBytes(d: MichelsonData, t?: MichelsonType): BytesLiteral;\n/**\n * Deserialize a byte array into the corresponding Michelson value.\n * Without a type definition (not recommended) the binary data will be treated as a binary form of a generic Michelson expression and returned as is.\n * Type definition allows some types like `timestamp` and `address` and other types usually encoded in optimized binary forms to be transformed\n * back to their string representations like base58 and ISO timestamps.\n *\n * ```typescript\n * const src = [0x05, 0x00, 0xa7, 0xe8, 0xe4, 0xd8, 0x0b];\n *\n * const typ: MichelsonType = {\n * prim: "timestamp"\n * };\n *\n * const data = unpackData(src, typ);\n *\n * // { string: "2019-09-26T10:59:51Z" }\n * ```\n *\n * Same binary data without a type definition\n * ```typescript\n * const src = [0x05, 0x00, 0xa7, 0xe8, 0xe4, 0xd8, 0x0b];\n *\n * const data = unpackData(src);\n *\n * // { int: "1569495591" }\n * ```\n * @param src Byte array\n * @param t Optional type definition\n * @returns Deserialized data\n */\nexport declare function unpackData(src: number[] | Uint8Array, t?: MichelsonType): MichelsonData;\n/**\n * Deserialize a byte array into the corresponding Michelson value.\n * Same as {@link unpackData} but takes a `bytes` Michelson data literal instead of an array\n *\n * ```typescript\n * const src = { bytes: "0500a7e8e4d80b" };\n *\n * const typ: MichelsonType = {\n * prim: "timestamp"\n * };\n *\n * const data = unpackDataBytes(src, typ);\n *\n * // { string: "2019-09-26T10:59:51Z" }\n * ```\n * @param src Bytes object\n * @param t Optional type definition\n * @returns Deserialized data\n */\nexport declare function unpackDataBytes(src: BytesLiteral, t?: MichelsonType): MichelsonData;\nexport declare function decodeAddressBytes(b: BytesLiteral): Address;\nexport declare function decodePublicKeyHashBytes(b: BytesLiteral): Address;\nexport declare function decodePublicKeyBytes(b: BytesLiteral): PublicKey;\nexport {};\n'},{name:"@taquito/michel-codec/dist/types/errors.d.ts",dts:"import { ParameterValidationError, TaquitoError } from '@taquito/core';\n/**\n * @category Error\n * @description Error that indicates an invalid Michelson being passed or used\n */\nexport declare class InvalidMichelsonError extends ParameterValidationError {\n readonly message: string;\n constructor(message: string);\n}\n/**\n * @category Error\n * @description Error that indicates an invalid type expression being passed or used\n */\nexport declare class InvalidTypeExpressionError extends ParameterValidationError {\n readonly message: string;\n constructor(message: string);\n}\n/**\n * @category Error\n * @description Error that indicates an invalid data expression being passed or used\n */\nexport declare class InvalidDataExpressionError extends ParameterValidationError {\n readonly message: string;\n constructor(message: string);\n}\n/**\n * @category Error\n * @description Error that indicates an invalid contract entrypoint being referenced or passed\n */\nexport declare class InvalidEntrypointError extends ParameterValidationError {\n readonly entrypoint?: string | undefined;\n constructor(entrypoint?: string | undefined);\n}\n/**\n * @category Error\n * @description Error that indicates a failure happening when trying to encode Tezos ID\n */\nexport declare class TezosIdEncodeError extends ParameterValidationError {\n readonly message: string;\n constructor(message: string);\n}\n/**\n * @category Error\n * @description Error that indicates a general error happening when trying to create a LongInteger\n */\nexport declare class LongIntegerError extends TaquitoError {\n readonly message: string;\n constructor(message: string);\n}\n/**\n * @category Error\n * @description Error that indicates a failure occurring when trying to parse a hex byte\n */\nexport declare class HexParseError extends TaquitoError {\n readonly hexByte: string;\n constructor(hexByte: string);\n}\n"},{name:"@taquito/michel-codec/dist/types/formatters.d.ts",dts:"import { InstructionTrace } from './michelson-typecheck';\nimport { MichelsonError } from './utils';\nimport { MichelsonReturnType } from './michelson-types';\nexport declare function formatStack(s: MichelsonReturnType): string;\nexport declare function traceDumpFunc(blocks: boolean, cb: (s: string) => void): (v: InstructionTrace) => void;\nexport declare function formatError(err: MichelsonError): string;\n"},{name:"@taquito/michel-codec/dist/types/global-constants.d.ts",dts:"import { Prim, Expr } from './micheline';\nimport { GlobalConstantHashAndValue } from './micheline-parser';\nexport declare function expandGlobalConstants(ex: Prim, hashAndValue: GlobalConstantHashAndValue): Expr;\n"},{name:"@taquito/michel-codec/dist/types/macros.d.ts",dts:"import { TaquitoError } from '@taquito/core';\nimport { Prim, Expr } from './micheline';\nimport { ProtocolOptions } from './michelson-types';\n/**\n * @category Error\n * @description Error that indicates macros failed to be expanded\n */\nexport declare class MacroError extends TaquitoError {\n readonly prim: Prim;\n readonly message: string;\n constructor(prim: Prim, message: string);\n}\nexport declare function expandMacros(ex: Prim, opt?: ProtocolOptions): Expr;\n"},{name:"@taquito/michel-codec/dist/types/micheline-emitter.d.ts",dts:"import { Expr } from './micheline';\nexport interface FormatOptions {\n /**\n * A string used for code indentation if desired. Usually a tab character or a number of spaces.\n */\n indent?: string;\n /**\n * A string used for line separation. Usually a newline character (\"\\n\");\n */\n newline?: string;\n}\n/**\n * Formats Micheline expression\n * @param expr An AST node\n * @param opt Options\n */\nexport declare function emitMicheline(expr: Expr, opt?: FormatOptions, foldMacros?: boolean): string;\n"},{name:"@taquito/michel-codec/dist/types/micheline-parser.d.ts",dts:'import { Token } from \'./scan\';\nimport { Expr } from \'./micheline\';\nimport { ProtocolOptions } from \'./michelson-types\';\nimport { TaquitoError } from \'@taquito/core\';\n/**\n * @category Error\n * @description Error that indicates a failure when parsing Micheline expressions\n */\nexport declare class MichelineParseError extends TaquitoError {\n readonly token: Token | null;\n readonly message: string;\n /**\n * @param token A token caused the error\n * @param message An error message\n */\n constructor(token: Token | null, message: string);\n}\n/**\n * @category Error\n * @description Error indicates a failure when parsing Micheline JSON\n */\nexport declare class JSONParseError extends TaquitoError {\n readonly node: unknown;\n readonly message: string;\n /**\n * @param node A node caused the error\n * @param message An error message\n */\n constructor(node: unknown, message: string);\n}\nexport interface GlobalConstantHashAndValue {\n [globalConstantHash: string]: Expr;\n}\nexport interface ParserOptions extends ProtocolOptions {\n /**\n * Expand [Michelson macros](https://tezos.gitlab.io/whitedoc/michelson.html#macros) during parsing.\n */\n expandMacros?: boolean;\n /**\n * Expand global constants during parsing.\n * `expandGlobalConstant` expects an object where the keys are global constant hashes and the values are the corresponding JSON Micheline expressions.\n * @example\n * ```\n * const parserOptions: ParserOptions = {\n * expandGlobalConstant: {\n * \'expr...\': { prim: \'DROP\', args: [{ int: \'2\' }] }\n * }\n * }\n *\n * const p = new Parser(parserOptions);\n * ```\n */\n expandGlobalConstant?: GlobalConstantHashAndValue;\n}\n/**\n * Converts and validates Michelson expressions between JSON-based Michelson and Micheline\n *\n * Pretty Print a Michelson Smart Contract:\n * ```\n * const contract = await Tezos.contract.at("KT1Vsw3kh9638gqWoHTjvHCoHLPKvCbMVbCg");\n * const p = new Parser();\n *\n * const michelsonCode = p.parseJSON(contract.script.code);\n * const storage = p.parseJSON(contract.script.storage);\n *\n * console.log("Pretty print Michelson smart contract:");\n * console.log(emitMicheline(michelsonCode, {indent:" ", newline: "\\n",}));\n *\n * console.log("Pretty print Storage:");\n * console.log(emitMicheline(storage, {indent:" ", newline: "\\n",}));\n * ```\n *\n * Encode a Michelson expression for initial storage of a smart contract\n * ```\n * const src = `(Pair (Pair { Elt 1\n * (Pair (Pair "tz1gjaF81ZRRvdzjobyfVNsAeSC6PScjfQwN" "tz1KqTpEZ7Yob7QbPE4Hy4Wo8fHG8LhKxZSx")\n * 0x0501000000026869) }\n * 10000000)\n * (Pair 2 333))`;\n *\n * const p = new Parser();\n *\n * const exp = p.parseMichelineExpression(src);\n * console.log(JSON.stringify(exp));\n * ```\n */\nexport declare class Parser {\n private opt?;\n constructor(opt?: ParserOptions | undefined);\n private expand;\n private parseListExpr;\n private parseArgs;\n private parseSequenceExpr;\n private parseExpr;\n /**\n * Parses a Micheline sequence expression, such as smart contract source. Enclosing curly brackets may be omitted.\n * @param src A Micheline sequence `{parameter ...; storage int; code { DUP ; ...};}` or `parameter ...; storage int; code { DUP ; ...};`\n */\n parseSequence(src: string): Expr[] | null;\n /**\n * Parse a Micheline sequence expression. Enclosing curly brackets may be omitted.\n * @param src A Michelson list expression such as `(Pair {Elt "0" 0} 0)` or `Pair {Elt "0" 0} 0`\n * @returns An AST node or null for empty document.\n */\n parseList(src: string): Expr | null;\n /**\n * Parse any Michelson expression\n * @param src A Michelson expression such as `(Pair {Elt "0" 0} 0)` or `{parameter ...; storage int; code { DUP ; ...};}`\n * @returns An AST node or null for empty document.\n */\n parseMichelineExpression(src: string): Expr | null;\n /**\n * Parse a Micheline sequence expression, such as smart contract source. Enclosing curly brackets may be omitted.\n * An alias for `parseSequence`\n * @param src A Micheline sequence `{parameter ...; storage int; code { DUP ; ...};}` or `parameter ...; storage int; code { DUP ; ...};`\n */\n parseScript(src: string): Expr[] | null;\n /**\n * Parse a Micheline sequence expression. Enclosing curly brackets may be omitted.\n * An alias for `parseList`\n * @param src A Michelson list expression such as `(Pair {Elt "0" 0} 0)` or `Pair {Elt "0" 0} 0`\n * @returns An AST node or null for empty document.\n */\n parseData(src: string): Expr | null;\n /**\n * Takes a JSON-encoded Michelson, validates it, strips away unneeded properties and optionally expands macros (See {@link ParserOptions}).\n * @param src An object containing JSON-encoded Michelson, usually returned by `JSON.parse()`\n */\n parseJSON(src: object): Expr;\n}\n'},{name:"@taquito/michel-codec/dist/types/micheline.d.ts",dts:"export type SourceReference = {\n first: number;\n last: number;\n macro?: Expr;\n globalConstant?: Expr;\n};\nexport declare const sourceReference: unique symbol;\nexport interface Node {\n [sourceReference]?: SourceReference;\n}\n/**\n * An AST node representing Michelson string literal.\n */\nexport interface StringLiteral extends Node {\n string: string;\n}\n/**\n * An AST node representing Michelson int literal.\n */\nexport interface IntLiteral extends Node {\n int: T;\n}\n/**\n * An AST node representing Michelson bytes literal.\n */\nexport interface BytesLiteral extends Node {\n bytes: string;\n}\n/**\n * An AST node representing Michelson primitive.\n */\nexport interface Prim extends Node {\n prim: PT;\n args?: AT;\n annots?: string[];\n}\nexport type List = T[] & Node;\ninterface ExprList extends List {\n}\n/**\n * An AST node representing valid Michelson expression. Directly corresponds to JSON-encoded Michelson node\n */\nexport type Expr = Prim | StringLiteral | IntLiteral | BytesLiteral | ExprList;\nexport {};\n"},{name:"@taquito/michel-codec/dist/types/michelson-contract.d.ts",dts:"import { MichelsonContract, MichelsonContractSection, MichelsonType, MichelsonData, MichelsonCode, MichelsonReturnType } from './michelson-types';\nimport { InstructionTrace } from './michelson-typecheck';\nimport { ParserOptions } from './micheline-parser';\nexport interface ContractOptions extends ParserOptions {\n traceCallback?: (t: InstructionTrace) => void;\n}\nexport declare class Contract {\n readonly contract: MichelsonContract;\n private ctx;\n readonly output: MichelsonReturnType;\n constructor(contract: MichelsonContract, opt?: ContractOptions);\n static parse(src: string | object, opt?: ContractOptions): Contract;\n static parseTypeExpression(src: string | object, opt?: ParserOptions): MichelsonType;\n static parseDataExpression(src: string | object, opt?: ParserOptions): MichelsonData;\n section(section: T): MichelsonContractSection;\n entryPoints(): [string, MichelsonType][];\n entryPoint(ep?: string): MichelsonType | null;\n assertDataValid(d: MichelsonData, t: MichelsonType): void;\n isDataValid(d: MichelsonData, t: MichelsonType): boolean;\n assertParameterValid(ep: string | null, d: MichelsonData): void;\n isParameterValid(ep: string | null, d: MichelsonData): boolean;\n functionType(inst: MichelsonCode, stack: MichelsonType[]): MichelsonReturnType;\n}\nexport declare const dummyContract: Contract;\n"},{name:"@taquito/michel-codec/dist/types/michelson-typecheck.d.ts",dts:"import { MichelsonType, MichelsonData, MichelsonCode, MichelsonContract, MichelsonContractSection, MichelsonReturnType, MichelsonContractView } from './michelson-types';\nimport { MichelsonError } from './utils';\nimport { ParserOptions } from './micheline-parser';\nexport interface Context extends ParserOptions {\n contract?: MichelsonContract;\n traceCallback?: (t: InstructionTrace) => void;\n}\nexport declare class MichelsonInstructionError extends MichelsonError {\n readonly val: MichelsonCode;\n readonly stackState: MichelsonReturnType;\n readonly message: string;\n /**\n * @param val Value of a type node caused the error\n * @param stackState Current stack state\n * @param message An error message\n */\n constructor(val: MichelsonCode, stackState: MichelsonReturnType, message: string);\n}\nexport declare function assertTypeAnnotationsValid(t: MichelsonType, field?: boolean): void;\nexport interface InstructionTrace {\n op: MichelsonCode;\n in: MichelsonType[];\n out: MichelsonReturnType;\n}\nexport declare function contractSection(contract: MichelsonContract, section: T): MichelsonContractSection;\nexport declare function contractViews(contract: MichelsonContract): {\n [name: string]: MichelsonContractView;\n};\nexport declare function contractEntryPoint(src: MichelsonContract | MichelsonType, ep?: string): MichelsonType | null;\nexport declare function contractEntryPoints(src: MichelsonContract | MichelsonType): [string, MichelsonType][];\nexport declare function assertContractValid(contract: MichelsonContract, ctx?: Context): MichelsonReturnType;\nexport declare function assertDataValid(d: MichelsonData, t: MichelsonType, ctx?: Context): void;\nexport declare function functionType(inst: MichelsonCode, stack: MichelsonType[], ctx?: Context): MichelsonReturnType;\nexport declare function assertTypesEqual(a: T1, b: T2, field?: boolean): void;\nexport declare function isTypeAnnotationsValid(t: MichelsonType, field?: boolean): boolean;\nexport declare function isContractValid(contract: MichelsonContract, ctx?: Context): MichelsonReturnType | null;\nexport declare function isDataValid(d: MichelsonData, t: MichelsonType, ctx?: Context): boolean;\nexport declare function isTypeEqual(a: T1, b: T2, field?: boolean): boolean;\n"},{name:"@taquito/michel-codec/dist/types/michelson-types.d.ts",dts:"import { Prim, Expr, IntLiteral, StringLiteral, BytesLiteral, List, Node } from './micheline';\ninterface Prim0 extends Prim {\n args?: never;\n}\ninterface PrimX extends Prim {\n args: AT;\n}\ntype MichelsonNoArgInstructionID = 'ABS' | 'ADD' | 'ADDRESS' | 'AMOUNT' | 'AND' | 'APPLY' | 'BALANCE' | 'BLAKE2B' | 'CAR' | 'CDR' | 'CHAIN_ID' | 'CHECK_SIGNATURE' | 'COMPARE' | 'CONCAT' | 'CONS' | 'EDIV' | 'EQ' | 'EXEC' | 'FAILWITH' | 'GE' | 'GET_AND_UPDATE' | 'GT' | 'HASH_KEY' | 'IMPLICIT_ACCOUNT' | 'INT' | 'ISNAT' | 'JOIN_TICKETS' | 'KECCAK' | 'LE' | 'LEVEL' | 'LSL' | 'LSR' | 'LT' | 'MEM' | 'MUL' | 'NEG' | 'NEQ' | 'NEVER' | 'NOT' | 'NOW' | 'OR' | 'PACK' | 'PAIRING_CHECK' | 'READ_TICKET' | 'SAPLING_VERIFY_UPDATE' | 'SELF' | 'SELF_ADDRESS' | 'SENDER' | 'SET_DELEGATE' | 'SHA256' | 'SHA3' | 'SHA512' | 'SIZE' | 'SLICE' | 'SOME' | 'SOURCE' | 'SPLIT_TICKET' | 'SUB' | 'SUB_MUTEZ' | 'SWAP' | 'TICKET' | 'TICKET_DEPRECATED' | 'TOTAL_VOTING_POWER' | 'TRANSFER_TOKENS' | 'UNIT' | 'VOTING_POWER' | 'XOR' | 'RENAME' | 'OPEN_CHEST' | 'MIN_BLOCK_TIME' | 'BYTES' | 'NAT';\ntype MichelsonRegularInstructionID = 'CONTRACT' | 'CREATE_CONTRACT' | 'DIG' | 'DIP' | 'DROP' | 'DUG' | 'DUP' | 'EMPTY_BIG_MAP' | 'EMPTY_MAP' | 'EMPTY_SET' | 'GET' | 'IF' | 'IF_CONS' | 'IF_LEFT' | 'IF_NONE' | 'ITER' | 'LAMBDA' | 'LAMBDA_REC' | 'LEFT' | 'LOOP' | 'LOOP_LEFT' | 'MAP' | 'NIL' | 'NONE' | 'PAIR' | 'PUSH' | 'RIGHT' | 'SAPLING_EMPTY_STATE' | 'UNPACK' | 'UNPAIR' | 'UPDATE' | 'CAST' | 'VIEW' | 'EMIT' | 'CREATE_ACCOUNT' | 'STEPS_TO_QUOTA';\nexport type MichelsonInstructionID = MichelsonNoArgInstructionID | MichelsonRegularInstructionID;\ntype InstrPrim = Prim;\ntype Instr0 = Prim0;\ntype InstrX = PrimX;\nexport type MichelsonCode = InstructionList | MichelsonInstruction;\nexport interface InstructionList extends List {\n}\nexport type MichelsonNoArgInstruction = Instr0;\nexport type MichelsonInstruction = MichelsonNoArgInstruction | InstrX<'DIG' | 'DUG' | 'SAPLING_EMPTY_STATE', [IntLiteral]> | InstrX<'NONE' | 'LEFT' | 'RIGHT' | 'NIL' | 'CAST', [MichelsonType]> | InstrX<'IF_NONE' | 'IF_LEFT' | 'IF_CONS' | 'IF', [InstructionList, InstructionList]> | InstrX<'MAP' | 'ITER' | 'LOOP' | 'LOOP_LEFT' | 'DIP', [InstructionList]> | InstrX<'UNPACK', [MichelsonType]> | InstrX<'CONTRACT', [MichelsonType]> | InstrX<'CREATE_CONTRACT', [MichelsonContract]> | InstrX<'PUSH', [MichelsonType, MichelsonData]> | InstrX<'EMPTY_SET', [MichelsonType]> | InstrX<'EMPTY_MAP', [MichelsonType, MichelsonType]> | InstrX<'EMPTY_BIG_MAP', [MichelsonType, MichelsonType]> | InstrX<'LAMBDA' | 'LAMBDA_REC', [MichelsonType, MichelsonType, InstructionList]> | InstrX<'DIP', [IntLiteral, InstructionList] | [InstructionList]> | InstrX<'VIEW', [StringLiteral, MichelsonType]> | InstrX<'EMIT', [MichelsonType]> | InstrPrim<'DROP' | 'PAIR' | 'UNPAIR' | 'DUP' | 'GET' | 'UPDATE', [IntLiteral]>;\nexport type MichelsonSimpleComparableTypeID = 'string' | 'nat' | 'int' | 'bytes' | 'bool' | 'mutez' | 'key_hash' | 'address' | 'timestamp' | 'never' | 'key' | 'unit' | 'signature' | 'chain_id' | 'tx_rollup_l2_address';\nexport type MichelsonTypeID = MichelsonSimpleComparableTypeID | 'option' | 'list' | 'set' | 'contract' | 'operation' | 'pair' | 'or' | 'lambda' | 'map' | 'big_map' | 'sapling_transaction' | 'sapling_transaction_deprecated' | 'sapling_state' | 'ticket' | 'bls12_381_g1' | 'bls12_381_g2' | 'bls12_381_fr' | 'chest_key' | 'chest';\ntype Type0 = Prim0;\ntype TypeX = PrimX;\nexport declare const refContract: unique symbol;\nexport interface MichelsonTypeAddress extends Type0<'address'> {\n [refContract]?: MichelsonTypeContract;\n}\nexport type MichelsonTypeInt = Type0<'int'>;\nexport type MichelsonTypeNat = Type0<'nat'>;\nexport type MichelsonTypeString = Type0<'string'>;\nexport type MichelsonTypeBytes = Type0<'bytes'>;\nexport type MichelsonTypeMutez = Type0<'mutez'>;\nexport type MichelsonTypeBool = Type0<'bool'>;\nexport type MichelsonTypeKeyHash = Type0<'key_hash'>;\nexport type MichelsonTypeTimestamp = Type0<'timestamp'>;\nexport type MichelsonTypeKey = Type0<'key'>;\nexport type MichelsonTypeUnit = Type0<'unit'>;\nexport type MichelsonTypeSignature = Type0<'signature'>;\nexport type MichelsonTypeOperation = Type0<'operation'>;\nexport type MichelsonTypeChainID = Type0<'chain_id'>;\nexport type MichelsonTypeNever = Type0<'never'>;\nexport type MichelsonTypeBLS12_381_G1 = Type0<'bls12_381_g1'>;\nexport type MichelsonTypeBLS12_381_G2 = Type0<'bls12_381_g2'>;\nexport type MichelsonTypeBLS12_381_FR = Type0<'bls12_381_fr'>;\nexport type MichelsonTypeChestKey = Type0<'chest_key'>;\nexport type MichelsonTypeChest = Type0<'chest'>;\ntype TypeList = T & Node;\nexport type MichelsonTypePair = TypeX<'pair', T> | TypeList;\nexport interface MichelsonTypeOption extends TypeX<'option', [T]> {\n}\nexport interface MichelsonTypeList extends TypeX<'list', [T]> {\n}\nexport interface MichelsonTypeContract extends TypeX<'contract', [T]> {\n}\nexport interface MichelsonTypeOr extends TypeX<'or', T> {\n}\nexport interface MichelsonTypeLambda extends TypeX<'lambda', [Arg, Ret]> {\n}\nexport interface MichelsonTypeSet extends TypeX<'set', [T]> {\n}\nexport interface MichelsonTypeMap extends TypeX<'map', [K, V]> {\n}\nexport interface MichelsonTypeBigMap extends TypeX<'big_map', [K, V]> {\n}\nexport interface MichelsonTypeSaplingState extends TypeX<'sapling_state', [IntLiteral]> {\n}\nexport interface MichelsonTypeSaplingTransaction extends TypeX<'sapling_transaction', [IntLiteral]> {\n}\nexport interface MichelsonTypeTicket extends TypeX<'ticket', [T]> {\n}\nexport type MichelsonType = T extends 'int' ? MichelsonTypeInt : T extends 'nat' ? MichelsonTypeNat : T extends 'string' ? MichelsonTypeString : T extends 'bytes' ? MichelsonTypeBytes : T extends 'mutez' ? MichelsonTypeMutez : T extends 'bool' ? MichelsonTypeBool : T extends 'key_hash' ? MichelsonTypeKeyHash : T extends 'timestamp' ? MichelsonTypeTimestamp : T extends 'address' ? MichelsonTypeAddress : T extends 'key' ? MichelsonTypeKey : T extends 'unit' ? MichelsonTypeUnit : T extends 'signature' ? MichelsonTypeSignature : T extends 'operation' ? MichelsonTypeOperation : T extends 'chain_id' ? MichelsonTypeChainID : T extends 'option' ? MichelsonTypeOption : T extends 'list' ? MichelsonTypeList : T extends 'contract' ? MichelsonTypeContract : T extends 'ticket' ? MichelsonTypeTicket : T extends 'pair' ? MichelsonTypePair : T extends 'or' ? MichelsonTypeOr<[MichelsonType, MichelsonType]> : T extends 'lambda' ? MichelsonTypeLambda : T extends 'set' ? MichelsonTypeSet : T extends 'map' ? MichelsonTypeMap : T extends 'big_map' ? MichelsonTypeBigMap : T extends 'never' ? MichelsonTypeNever : T extends 'bls12_381_g1' ? MichelsonTypeBLS12_381_G1 : T extends 'bls12_381_g2' ? MichelsonTypeBLS12_381_G2 : T extends 'bls12_381_fr' ? MichelsonTypeBLS12_381_FR : T extends 'sapling_transaction' ? MichelsonTypeSaplingTransaction : T extends 'sapling_state' ? MichelsonTypeSaplingState : T extends 'chest_key' ? MichelsonTypeChestKey : MichelsonTypeChest;\nexport type MichelsonDataID = 'Unit' | 'True' | 'False' | 'None' | 'Pair' | 'Left' | 'Right' | 'Some' | 'Lambda_rec';\ntype Data0 = Prim0;\ntype DataX = PrimX;\nexport type MichelsonDataOption = DataX<'Some', [MichelsonData]> | Data0<'None'>;\nexport type MichelsonDataOr = DataX<'Left' | 'Right', [MichelsonData]>;\ntype DataList = T & Node;\nexport type MichelsonDataPair = DataX<'Pair', T> | DataList;\nexport type MichelsonMapElt = PrimX<'Elt', [MichelsonData, MichelsonData]>;\nexport type MichelsonMapEltList = List;\nexport type MichelsonLambdaRec = DataX<'Lambda_rec', [InstructionList]>;\nexport type MichelsonData = IntLiteral | StringLiteral | BytesLiteral | Data0<'Unit' | 'True' | 'False'> | MichelsonDataOption | MichelsonDataOr | DataList | MichelsonDataPair | InstructionList | MichelsonMapEltList | MichelsonLambdaRec;\nexport type MichelsonSectionID = 'parameter' | 'storage' | 'code' | 'view';\ntype SectionPrim = PrimX;\nexport type MichelsonContractParameter = SectionPrim<'parameter', [MichelsonType]>;\nexport type MichelsonContractStorage = SectionPrim<'storage', [MichelsonType]>;\nexport type MichelsonContractCode = SectionPrim<'code', [InstructionList]>;\nexport type MichelsonContractView = SectionPrim<'view', [\n StringLiteral,\n MichelsonType,\n MichelsonType,\n InstructionList\n]>;\nexport type MichelsonContract = MichelsonContractSection[];\nexport type MichelsonContractSection = T extends 'parameter' ? MichelsonContractParameter : T extends 'storage' ? MichelsonContractStorage : T extends 'view' ? MichelsonContractView : MichelsonContractCode;\nexport interface MichelsonTypeFailed {\n failed: MichelsonType;\n level: number;\n}\nexport type MichelsonReturnType = MichelsonType[] | MichelsonTypeFailed;\nexport declare enum Protocol {\n Ps9mPmXa = \"Ps9mPmXaRzmzk35gbAYNCAw6UXdE2qoABTHbN2oEEc1qM7CwT9P\",\n PtCJ7pwo = \"PtCJ7pwoxe8JasnHY8YonnLYjcVHmhiARPJvqcC6VfHT5s8k8sY\",\n PsYLVpVv = \"PsYLVpVvgbLhAhoqAkMFUo6gudkJ9weNXhUYCiLDzcUpFpkk8Wt\",\n PsddFKi3 = \"PsddFKi32cMJ2qPjf43Qv5GDWLDPZb3T3bF6fLKiF5HtvHNU7aP\",\n Pt24m4xi = \"Pt24m4xiPbLDhVgVfABUjirbmda3yohdN82Sp9FeuAXJ4eV9otd\",\n PsBABY5H = \"PsBABY5HQTSkA4297zNHfsZNKtxULfL18y95qb3m53QJiXGmrbU\",\n PsBabyM1 = \"PsBabyM1eUXZseaJdmXFApDSBqj8YBfwELoxZHHW77EMcAbbwAS\",\n PsCARTHA = \"PsCARTHAGazKbHtnKfLzQg3kms52kSRpgnDY982a9oYsSXRLQEb\",\n PsDELPH1 = \"PsDELPH1Kxsxt8f9eWbxQeRxkjfbxoqM52jvs5Y5fBxWWh4ifpo\",\n PtEdoTez = \"PtEdoTezd3RHSC31mpxxo1npxFjoWWcFgQtxapi51Z8TLu6v6Uq\",\n PtEdo2Zk = \"PtEdo2ZkT9oKpimTah6x2embF25oss54njMuPzkJTEi5RqfdZFA\",\n PsFLorena = \"PsFLorenaUUuikDWvMDr6fGBRG8kt3e3D3fHoXK1j1BFRxeSH4i\",\n PtGRANADs = \"PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV\",\n PtHangzH = \"PtHangzHogokSuiMHemCuowEavgYTP8J5qQ9fQS793MHYFpCY3r\",\n PtHangz2 = \"PtHangz2aRngywmSRGGvrcTyMbbdpWdpFKuS4uMWxg2RaH9i1qx\",\n PsiThaCa = \"PsiThaCaT47Zboaw71QWScM8sXeMM7bbQFncK9FLqYc6EKdpjVP\",\n Psithaca2 = \"Psithaca2MLRFYargivpo7YvUr7wUDqyxrdhC5CQq78mRvimz6A\",\n PtJakarta = \"PtJakartaiDz69SfDDLXJSiuZqTSeSKRDbKVZC8MNzJnvRjvnGw\",\n PtJakart2 = \"PtJakart2xVj7pYXJBXrqHgd82rdkLey5ZeeGwDgPp9rhQUbSqY\",\n PtKathman = \"PtKathmankSpLLDALzWw7CGD2j2MtyveTwboEYokqUCP4a1LxMg\",\n PtLimaPtL = \"PtLimaPtLMwfNinJi9rCfDPWea8dFgTZ1MeJ9f1m2SRic6ayiwW\",\n PtMumbaii = \"PtMumbaiiFFEGbew1rRjzSPyzRbA51Tm3RVZL5suHPxSZYDhCEc\",\n PtMumbai2 = \"PtMumbai2TmsJHNGRkD8v8YDbtao7BLUC3wjASn1inAKLFCjaH1\",\n PtNairobi = \"PtNairobiyssHuh87hEhfVBGCVrK3WnS8Z2FT4ymB5tAa4r1nQf\",\n ProxfordY = \"ProxfordYmVfjWnRcgjWH36fW6PArwqykTFzotUxRs6gmTcZDuH\",\n ProtoALpha = \"ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK\"\n}\nexport declare const DefaultProtocol = Protocol.Psithaca2;\nexport type ProtocolID = `${Protocol}`;\nexport declare function ProtoGreaterOrEqual(a: ProtocolID, b: ProtocolID): boolean;\nexport declare function ProtoInferiorTo(a: ProtocolID, b: ProtocolID): boolean;\nexport interface ProtocolOptions {\n protocol?: ProtocolID;\n}\nexport {};\n"},{name:"@taquito/michel-codec/dist/types/michelson-validator.d.ts",dts:"import { Prim, Expr, StringLiteral } from './micheline';\nimport { MichelsonError } from './utils';\nimport { MichelsonCode, MichelsonType, MichelsonData, MichelsonContract, MichelsonInstruction, InstructionList } from './michelson-types';\nexport declare const instructionIDs: Record;\nexport declare class MichelsonValidationError extends MichelsonError {\n readonly val: Expr;\n readonly message: string;\n /**\n * @param val Value of a node caused the error\n * @param message An error message\n */\n constructor(val: Expr, message: string);\n}\n/**\n * Checks if the node is a valid Michelson code (sequence of instructions).\n * This is a type guard function which either returns true of throws an exception.\n * @param ex An AST node\n */\nexport declare function assertMichelsonInstruction(ex: Expr): ex is MichelsonCode;\nexport declare function assertMichelsonComparableType(ex: Expr): ex is MichelsonType;\nexport declare function assertMichelsonPackableType(ex: Expr): ex is MichelsonType;\nexport declare function assertMichelsonPushableType(ex: Expr): ex is MichelsonType;\nexport declare function assertMichelsonStorableType(ex: Expr): ex is MichelsonType;\nexport declare function assertMichelsonPassableType(ex: Expr): ex is MichelsonType;\nexport declare function assertMichelsonBigMapStorableType(ex: Expr): ex is MichelsonType;\nexport declare function assertViewNameValid(name: StringLiteral): void;\n/**\n * Checks if the node is a valid Michelson type expression.\n * This is a type guard function which either returns true of throws an exception.\n * @param ex An AST node\n */\nexport declare function assertMichelsonType(ex: Expr): ex is MichelsonType;\n/**\n * Checks if the node is a valid Michelson data literal such as `(Pair {Elt \"0\" 0} 0)`.\n * This is a type guard function which either returns true of throws an exception.\n * @param ex An AST node\n */\nexport declare function assertMichelsonData(ex: Expr): ex is MichelsonData;\n/**\n * Checks if the node is a valid Michelson smart contract source containing all required and valid properties such as `parameter`, `storage` and `code`.\n * This is a type guard function which either returns true of throws an exception.\n * @param ex An AST node\n */\nexport declare function assertMichelsonContract(ex: Expr): ex is MichelsonContract;\n/**\n * Checks if the node is a valid Michelson smart contract source containing all required and valid properties such as `parameter`, `storage` and `code`.\n * @param ex An AST node\n */\nexport declare function isMichelsonScript(ex: Expr): ex is MichelsonContract;\n/**\n * Checks if the node is a valid Michelson data literal such as `(Pair {Elt \"0\" 0} 0)`.\n * @param ex An AST node\n */\nexport declare function isMichelsonData(ex: Expr): ex is MichelsonData;\n/**\n * Checks if the node is a valid Michelson code (sequence of instructions).\n * @param ex An AST node\n */\nexport declare function isMichelsonCode(ex: Expr): ex is InstructionList;\n/**\n * Checks if the node is a valid Michelson type expression.\n * @param ex An AST node\n */\nexport declare function isMichelsonType(ex: Expr): ex is MichelsonType;\nexport declare function isInstruction(p: Prim): p is MichelsonInstruction;\nexport declare function assertDataListIfAny(d: MichelsonData): d is MichelsonData[];\n"},{name:"@taquito/michel-codec/dist/types/scan.d.ts",dts:"import { TaquitoError } from '@taquito/core';\n/**\n * @category Error\n * @description Error that indicates a failure when performing the scan step when parsing Michelson\n */\nexport declare class ScanError extends TaquitoError {\n readonly src: string;\n readonly idx: number;\n readonly message: string;\n constructor(src: string, idx: number, message: string);\n}\nexport declare enum Literal {\n Comment = 0,\n Number = 1,\n String = 2,\n Bytes = 3,\n Ident = 4\n}\nexport type TokenType = '(' | ')' | '{' | '}' | ';' | Literal;\nexport interface Token {\n t: TokenType;\n v: string;\n first: number;\n last: number;\n}\nexport declare function scan(src: string, scanComments?: boolean): Generator;\n"},{name:"@taquito/michel-codec/dist/types/taquito-michel-codec.d.ts",dts:"/**\n * @packageDocumentation\n * @module @taquito/michel-codec\n */\nexport * from './micheline';\nexport * from './micheline-parser';\nexport * from './micheline-emitter';\nexport * from './michelson-validator';\nexport * from './michelson-types';\nexport * from './michelson-typecheck';\nexport * from './michelson-contract';\nexport * from './formatters';\nexport * from './binary';\nexport { MichelsonError, isMichelsonError, MichelsonTypeError } from './utils';\nexport { MacroError } from './macros';\nexport { VERSION } from './version';\n"},{name:"@taquito/michel-codec/dist/types/utils.d.ts",dts:"import { Prim, Expr, StringLiteral, IntLiteral } from './micheline';\nimport { MichelsonData, MichelsonDataPair, MichelsonType, MichelsonTypePair } from './michelson-types';\nimport { TaquitoError } from '@taquito/core';\nexport type Tuple = N extends 1 ? [T] : N extends 2 ? [T, T] : N extends 3 ? [T, T, T] : N extends 4 ? [T, T, T, T] : N extends 5 ? [T, T, T, T, T] : N extends 6 ? [T, T, T, T, T, T] : N extends 7 ? [T, T, T, T, T, T, T] : N extends 8 ? [T, T, T, T, T, T, T, T] : T[];\ntype RequiredProp = Omit & Required>;\ntype OmitProp = Omit & {\n [P in K]?: undefined;\n};\nexport type ReqArgs = RequiredProp;\nexport type NoArgs = OmitProp;\nexport type NoAnnots = OmitProp;\nexport type Nullable = {\n [P in keyof T]: T[P] | null;\n};\n/**\n * @category Error\n * @description Error that indicates a Michelson failure occurring\n */\nexport declare class MichelsonError extends TaquitoError {\n readonly val: T;\n readonly message: string;\n /**\n * @param val Value of a AST node caused the error\n * @param path Path to a node caused the error\n * @param message An error message\n */\n constructor(val: T, message: string);\n}\nexport declare function isMichelsonError(err: unknown): err is MichelsonError;\nexport declare class MichelsonTypeError extends MichelsonError {\n readonly val: MichelsonType | MichelsonType[];\n readonly message: string;\n data?: Expr;\n /**\n * @param val Value of a type node caused the error\n * @param data Value of a data node caused the error\n * @param message An error message\n */\n constructor(val: MichelsonType | MichelsonType[], message: string, data?: Expr);\n}\nexport declare class LongInteger {\n private neg;\n private buf;\n private append;\n constructor(arg?: string | number);\n cmp(arg: LongInteger): number;\n get sign(): number;\n}\nexport declare function parseBytes(s: string): number[] | null;\nexport declare function compareBytes(a: number[] | Uint8Array, b: number[] | Uint8Array): number;\nexport declare function isDecimal(x: string): boolean;\nexport declare function isNatural(x: string): boolean;\nexport interface UnpackedAnnotations {\n f?: string[];\n t?: string[];\n v?: string[];\n}\nexport interface UnpackAnnotationsOptions {\n specialVar?: boolean;\n emptyVar?: boolean;\n specialFields?: boolean;\n emptyFields?: boolean;\n}\nexport declare function unpackAnnotations(p: Prim | Expr[], opt?: UnpackAnnotationsOptions): UnpackedAnnotations;\nexport type TezosIDType = 'BlockHash' | 'OperationHash' | 'OperationListHash' | 'OperationListListHash' | 'ProtocolHash' | 'ContextHash' | 'ED25519PublicKeyHash' | 'SECP256K1PublicKeyHash' | 'P256PublicKeyHash' | 'ContractHash' | 'CryptoboxPublicKeyHash' | 'ED25519Seed' | 'ED25519PublicKey' | 'SECP256K1SecretKey' | 'P256SecretKey' | 'ED25519EncryptedSeed' | 'SECP256K1EncryptedSecretKey' | 'P256EncryptedSecretKey' | 'SECP256K1PublicKey' | 'P256PublicKey' | 'SECP256K1Scalar' | 'SECP256K1Element' | 'ED25519SecretKey' | 'ED25519Signature' | 'SECP256K1Signature' | 'P256Signature' | 'GenericSignature' | 'ChainID' | 'RollupAddress';\nexport type TezosIDPrefix = [number, number[]];\nexport declare const tezosPrefix: Record;\nexport declare function checkDecodeTezosID(id: string, ...types: T): [T[number], number[]] | null;\nexport declare function encodeTezosID(id: TezosIDType, data: number[] | Uint8Array): string;\ntype PairTypeOrDataPrim = I extends 'pair' ? Extract, Prim> : Extract, Prim>;\nexport declare function unpackComb(id: I, v: I extends 'pair' ? MichelsonTypePair : MichelsonDataPair): PairTypeOrDataPrim;\nexport declare function isPairType(t: MichelsonType): t is MichelsonTypePair;\nexport declare function isPairData(d: Expr): d is MichelsonDataPair;\nexport declare function parseDate(a: StringLiteral | IntLiteral): Date | null;\nexport declare function parseHex(s: string): number[];\nexport declare function hexBytes(bytes: number[]): string;\nexport {};\n"},{name:"@taquito/michel-codec/dist/types/version.d.ts",dts:"export declare const VERSION: {\n commitHash: string;\n version: string;\n};\n"},{name:"@taquito/michelson-encoder/dist/types/schema/errors.d.ts",dts:"import { InvalidViewParameterError, TaquitoError } from '@taquito/core';\n/**\n * @category Error\n * @description Error that indicates a failure when encoding (transforming JS parameter into JSON Michelson) the parameter of the view\n */\nexport declare class ParameterEncodingError extends InvalidViewParameterError {\n readonly viewName: string;\n readonly sigs: any;\n readonly args: any;\n readonly cause?: any;\n constructor(viewName: string, sigs: any, args: any, cause?: any);\n}\n/**\n * @category Error\n * @description Error that indicates an invalid on-chain view found on the script\n */\nexport declare class InvalidScriptError extends TaquitoError {\n readonly script: any;\n readonly reason?: string | undefined;\n name: string;\n constructor(script: any, reason?: string | undefined);\n}\n/**\n * @category Error\n * @description Error that indicates an invalid RPC response being passed or used\n */\nexport declare class InvalidRpcResponseError extends TaquitoError {\n readonly script: any;\n readonly reason?: string | undefined;\n name: string;\n constructor(script: any, reason?: string | undefined);\n}\n/**\n * @category Error\n * @description Error that indicates an invalid big map schema being passed or used\n */\nexport declare class InvalidBigMapSchemaError extends TaquitoError {\n message: string;\n name: string;\n constructor(message: string);\n}\n/**\n * @category Error\n * @description Error that indicates an invalid big map diff being passed or used\n */\nexport declare class InvalidBigMapDiffError extends TaquitoError {\n message: string;\n readonly value: any;\n name: string;\n constructor(message: string, value: any);\n}\n/**\n * @category Error\n * @description Error that indicates a failure when trying to encode big maps\n */\nexport declare class BigMapEncodingError extends TaquitoError {\n readonly details: any;\n readonly schema: any;\n readonly value: any;\n name: string;\n constructor(obj: 'key' | 'value', details: any, schema: any, value: any);\n}\n/**\n * @category Error\n * @description Error that indicates a failure when trying to encode storage\n */\nexport declare class StorageEncodingError extends TaquitoError {\n details: any;\n readonly schema: any;\n readonly value: any;\n readonly semantics?: any;\n name: string;\n constructor(obj: string, details: any, schema: any, value: any, semantics?: any);\n}\n/**\n * @category Error\n * @description General error that indicates a function not being passed a necessary argument\n */\nexport declare class MissingArgumentError extends TaquitoError {\n message: string;\n name: string;\n constructor(message: string);\n}\n"},{name:"@taquito/michelson-encoder/dist/types/schema/event-schema.d.ts",dts:"import { MichelsonV1Expression, MichelsonV1ExpressionExtended, ScriptResponse } from '@taquito/rpc';\nexport declare class EventSchema {\n readonly tag?: string | undefined;\n readonly type?: MichelsonV1ExpressionExtended | undefined;\n constructor(tag?: string | undefined, type?: MichelsonV1ExpressionExtended | undefined);\n static fromMichelineValue(val: MichelsonV1ExpressionExtended): EventSchema;\n static fromRPCResponse(val: {\n script: ScriptResponse;\n }): EventSchema[];\n static removeDuplicates(events: EventSchema[]): EventSchema[];\n static extractEventsRecursively(code: MichelsonV1Expression): EventSchema[];\n}\n"},{name:"@taquito/michelson-encoder/dist/types/schema/model.d.ts",dts:"export interface RpcTransaction {\n protocol: string;\n chain_id: string;\n hash: string;\n branch: string;\n contents: Content[];\n signature: string;\n}\ninterface Content {\n kind: string;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n amount: string;\n destination: string;\n parameters: Params;\n metadata: Metadata;\n}\ninterface Metadata {\n balance_updates: Balanceupdate[];\n operation_result: Operationresult;\n}\ninterface Operationresult {\n status: string;\n storage: Storage;\n big_map_diff: Bigmapdiff[];\n consumed_gas?: string;\n storage_size: string;\n paid_storage_size_diff: string;\n consumed_milligas?: string;\n}\ninterface Bigmapdiff {\n key_hash: string;\n key: Key;\n value: Value;\n}\ninterface Value {\n prim: string;\n args: any[];\n}\ninterface Key {\n bytes: string;\n}\ninterface Storage {\n prim: string;\n args: any[];\n}\ninterface Balanceupdate {\n kind: string;\n contract?: string;\n change: string;\n category?: string;\n delegate?: string;\n level?: number;\n}\ninterface Params {\n prim: string;\n args: any[];\n}\nexport {};\n"},{name:"@taquito/michelson-encoder/dist/types/schema/parameter.d.ts",dts:"import { Semantic, SemanticEncoding } from '../tokens/token';\nimport { ScriptResponse, MichelsonV1Expression } from '@taquito/rpc';\nimport { TokenSchema } from './types';\n/**\n * @warn Our current smart contract abstraction feature is currently in preview. It's API is not final, and it may not cover every use case (yet). We will greatly appreciate any feedback on this feature.\n */\nexport declare class ParameterSchema {\n private root;\n /**\n *\n * @description Create an instance of ParameterSchema from a contract script\n *\n * @param val contract script obtained from the RPC\n * @returns ParameterSchema\n * @throws {InvalidRpcResponseError} If the RPC response is invalid\n */\n static fromRPCResponse(val: {\n script: ScriptResponse;\n }): ParameterSchema;\n /**\n * @description Check if the Contract parameter is multiple entry point or not\n */\n get isMultipleEntryPoint(): boolean;\n /**\n * @description Check if the Contract parameter has an annotation or not\n */\n get hasAnnotation(): boolean;\n /**\n * @description Return the schema of the parameter of a specific entry point\n * @throws {@link InvalidTokenError}\n */\n constructor(val: MichelsonV1Expression);\n /**\n * @description Returns the javascript object equivalent of the Micheline value provided\n */\n Execute(val: any, semantics?: Semantic): any;\n /**\n * @description Returns a micheline formatted object for the values provided\n * @throws {@link TokenValidationError}\n * @throws {@link ParameterEncodingError}\n */\n Encode(...args: any[]): any;\n /**\n * @description Returns a micheline formatted object for the javascript object provided\n * @throws {@link TokenValidationError}\n * @throws {@link ParameterEncodingError}\n */\n EncodeObject(value?: any, semantics?: SemanticEncoding): any;\n /**\n * @deprecated ExtractSchema has been deprecated in favor of generateSchema\n *\n */\n ExtractSchema(): any;\n /**\n * @description Produce a schema grouping together all the entry points of a contract.\n */\n generateSchema(): TokenSchema;\n ExtractSignatures(): any[][];\n}\n"},{name:"@taquito/michelson-encoder/dist/types/schema/storage.d.ts",dts:"import { MichelsonV1Expression, ScriptResponse } from '@taquito/rpc';\nimport { BigMapKeyType, Semantic, SemanticEncoding, Token } from '../tokens/token';\nimport { RpcTransaction } from './model';\nimport { TokenSchema } from './types';\ndeclare const schemaTypeSymbol: unique symbol;\nexport declare function deepEqual(a: MichelsonV1Expression | undefined, b: MichelsonV1Expression | undefined): boolean;\n/**\n * @warn Our current smart contract abstraction feature is currently in preview. Its API is not final, and it may not cover every use case (yet). We will greatly appreciate any feedback on this feature.\n */\nexport declare class Schema {\n readonly val: MichelsonV1Expression;\n private root;\n [schemaTypeSymbol]: boolean;\n static isSchema(obj: Schema): boolean;\n private bigMap?;\n /**\n * @throws {@link InvalidRpcResponseError}\n */\n static fromRPCResponse(val: {\n script: ScriptResponse;\n }): Schema;\n private isExpressionExtended;\n constructor(val: MichelsonV1Expression);\n private removeTopLevelAnnotation;\n Execute(val: any, semantics?: Semantic): any;\n Typecheck(val: any): void;\n /**\n * @throws {@link InvalidBigMapSchemaError}\n * @throws {@link InvalidBigMapDiffError}\n */\n ExecuteOnBigMapDiff(diff: any[], semantics?: Semantic): any;\n /**\n * @throws {@link InvalidBigMapSchemaError}\n */\n ExecuteOnBigMapValue(key: any, semantics?: Semantic): any;\n /**\n * @throws {@link InvalidBigMapSchemaError}\n * @throws {@link BigMapEncodingError}\n */\n EncodeBigMapKey(key: BigMapKeyType): {\n key: {\n [key: string]: string | object[];\n };\n type: {\n prim: string;\n args?: object[] | undefined;\n };\n };\n /**\n * @throws {@link TokenValidationError}\n * @throws {@link StorageEncodingError}\n */\n Encode(value?: any, semantics?: SemanticEncoding): any;\n /**\n * @deprecated ExtractSchema has been deprecated in favor of generateSchema\n *\n */\n ExtractSchema(): any;\n /**\n * @description Produce a representation of the storage schema.\n * Note: Provide guidance on how to write the storage object for the origination operation with Taquito.\n */\n generateSchema(): TokenSchema;\n /**\n * @deprecated\n * @throws {@link InvalidBigMapSchemaError}\n */\n ComputeState(tx: RpcTransaction[], state: any): any;\n /**\n * @description Look up in top-level pairs of the storage to find a value matching the specified type\n *\n * @returns The first value found that match the type or `undefined` if no value is found\n *\n * @param storage storage to parse to find the value\n * @param valueType type of value to look for\n *\n */\n FindFirstInTopLevelPair(storage: any, valueType: any): T | undefined;\n /**\n * @throws {@link MissingArgumentError}\n */\n private findValue;\n /**\n * @description Look up the schema to find any occurrence of a particular token.\n *\n * @returns an array of tokens of the specified kind or an empty array if no token was found\n *\n * @param tokenToFind string representing the prim property of the token to find\n *\n * @example\n * ```\n * Useful to find all global constants in a script, an array of GlobalConstantToken is returned:\n *\n * const schema = new Schema(script);\n * const allGlobalConstantTokens = schema.findToken('constant');\n * ```\n *\n */\n findToken(tokenToFind: string): Array;\n}\nexport {};\n"},{name:"@taquito/michelson-encoder/dist/types/schema/types.d.ts",dts:"export type Falsy = T | undefined | false;\nexport type BaseTokenSchema = {\n __michelsonType: 'address' | 'bool' | 'bytes' | 'int' | 'key' | 'key_hash' | 'mutez' | 'nat' | 'string' | 'timestamp' | 'bls12_381_fr' | 'bls12_381_g1' | 'bls12_381_g2' | 'chain_id' | 'never' | 'operation' | 'chest' | 'chest_key' | 'signature' | 'unit';\n schema: string;\n};\nexport type OrTokenSchema = {\n __michelsonType: 'or';\n schema: Record;\n};\nexport type PairTokenSchema = {\n __michelsonType: 'pair';\n schema: Record;\n};\nexport type ListTokenSchema = {\n __michelsonType: 'list';\n schema: TokenSchema;\n};\nexport type SetTokenSchema = {\n __michelsonType: 'set';\n schema: TokenSchema;\n};\nexport type OptionTokenSchema = {\n __michelsonType: 'option';\n schema: TokenSchema;\n};\nexport type MapTokenSchema = {\n __michelsonType: 'map';\n schema: {\n key: TokenSchema;\n value: TokenSchema;\n };\n};\nexport type BigMapTokenSchema = {\n __michelsonType: 'big_map';\n schema: {\n key: TokenSchema;\n value: TokenSchema;\n };\n};\nexport type ConstantTokenSchema = {\n __michelsonType: 'constant';\n schema: {\n hash: string;\n };\n};\nexport type ContractTokenSchema = {\n __michelsonType: 'contract';\n schema: {\n parameter: TokenSchema;\n };\n};\nexport type LambdaTokenSchema = {\n __michelsonType: 'lambda';\n schema: {\n parameters: TokenSchema;\n returns: TokenSchema;\n };\n};\nexport type SaplingStateTokenSchema = {\n __michelsonType: 'sapling_state';\n schema: {\n memoSize: string;\n };\n};\nexport type SaplingTransactionTokenSchema = {\n __michelsonType: 'sapling_transaction';\n schema: {\n memoSize: string;\n };\n};\nexport type SaplingTransactionDeprecatedTokenSchema = {\n __michelsonType: 'sapling_transaction_deprecated';\n schema: {\n memoSize: string;\n };\n};\nexport type TicketTokenSchema = {\n __michelsonType: 'ticket';\n schema: {\n value: TokenSchema;\n ticketer: {\n __michelsonType: 'contract';\n schema: 'contract';\n };\n amount: {\n __michelsonType: 'int';\n schema: 'int';\n };\n };\n};\nexport type TicketDeprecatedTokenSchema = {\n __michelsonType: 'ticket_deprecated';\n schema: {\n value: TokenSchema;\n ticketer: {\n __michelsonType: 'contract';\n schema: 'contract';\n };\n amount: {\n __michelsonType: 'int';\n schema: 'int';\n };\n };\n};\nexport type TokenSchema = BaseTokenSchema | OrTokenSchema | PairTokenSchema | ListTokenSchema | SetTokenSchema | OptionTokenSchema | MapTokenSchema | BigMapTokenSchema | ConstantTokenSchema | ContractTokenSchema | LambdaTokenSchema | SaplingStateTokenSchema | SaplingTransactionTokenSchema | SaplingTransactionDeprecatedTokenSchema | TicketTokenSchema | TicketDeprecatedTokenSchema;\n"},{name:"@taquito/michelson-encoder/dist/types/schema/view-schema.d.ts",dts:"import { MichelsonV1Expression, MichelsonV1ExpressionExtended, ScriptResponse } from '@taquito/rpc';\nimport { Semantic } from '../tokens/token';\nexport declare class ViewSchema {\n readonly viewName: string;\n readonly viewArgsType: MichelsonV1ExpressionExtended;\n readonly viewReturnType: MichelsonV1ExpressionExtended;\n readonly instructions: MichelsonV1ExpressionExtended[];\n private rootArgsType;\n private rootReturnType;\n /**\n *\n * @description Create an instance of ViewSchema for each view in a script\n *\n * @param val contract script obtained from the RPC\n * @returns array of ViewSchema or empty array if there is no view in the contract\n * @throws {@link InvalidScriptError}\n */\n static fromRPCResponse(val: {\n script: ScriptResponse;\n }): ViewSchema[];\n /**\n * @throws {@link InvalidScriptError}\n */\n constructor(viewArgs: MichelsonV1Expression[] | undefined);\n /**\n *\n * @description Transform the view parameter into Michelson\n *\n * @param args parameter of the view in js format\n * @returns parameter of the view in Michelson\n * @throws {@link ParameterEncodingError}\n */\n encodeViewArgs(args: any): any;\n /**\n *\n * @description Transform the view result from Michelson to readable data\n *\n * @param val result of the view in JSON Michelson\n * @param semantics optional semantics to override the default decoding behavior\n * @returns result of the view in a readable format\n */\n decodeViewResult(val: any, semantics?: Semantic): any;\n /**\n *\n * @description Return the signature of the view parameter\n */\n extractArgsSchema(): any;\n /**\n *\n * @description Return the format of the view result\n */\n extractResultSchema(): any;\n}\n"},{name:"@taquito/michelson-encoder/dist/types/tokens/comparable/address.d.ts",dts:"import { Token, TokenFactory, ComparableToken, TokenValidationError, SemanticEncoding } from '../token';\nimport { BaseTokenSchema } from '../../schema/types';\n/**\n * @category Error\n * @description Error that indicates a failure happening when parsing encoding/executing an Address\n */\nexport declare class AddressValidationError extends TokenValidationError {\n value: any;\n token: AddressToken;\n name: string;\n constructor(value: any, token: AddressToken, message: string);\n}\nexport declare class AddressToken extends ComparableToken {\n protected val: {\n prim: string;\n args: any[];\n annots: any[];\n };\n protected idx: number;\n protected fac: TokenFactory;\n static prim: 'address';\n constructor(val: {\n prim: string;\n args: any[];\n annots: any[];\n }, idx: number, fac: TokenFactory);\n ToBigMapKey(val: any): {\n key: {\n bytes: string;\n };\n type: {\n prim: string;\n };\n };\n /**\n * @throws {@link AddressValidationError}\n */\n private validate;\n /**\n * @throws {@link AddressValidationError}\n */\n Encode(args: any[]): any;\n /**\n * @throws {@link AddressValidationError}\n */\n EncodeObject(val: any, semantic?: SemanticEncoding): any;\n /**\n * @throws {@link AddressValidationError}\n */\n Execute(val: {\n bytes: string;\n string: string;\n }): string;\n /**\n * @deprecated ExtractSchema has been deprecated in favor of generateSchema\n *\n */\n ExtractSchema(): \"address\";\n generateSchema(): BaseTokenSchema;\n /**\n * @throws {@link AddressValidationError}\n */\n ToKey({ bytes, string }: any): any;\n compare(address1: string, address2: string): number;\n findAndReturnTokens(tokenToFind: string, tokens: Token[]): Token[];\n}\n"},{name:"@taquito/michelson-encoder/dist/types/tokens/comparable/bool.d.ts",dts:"import { BaseTokenSchema } from '../../schema/types';\nimport { Token, TokenFactory, ComparableToken, SemanticEncoding } from '../token';\nexport declare class BoolToken extends ComparableToken {\n protected val: {\n prim: string;\n args: any[];\n annots: any[];\n };\n protected idx: number;\n protected fac: TokenFactory;\n static prim: 'bool';\n constructor(val: {\n prim: string;\n args: any[];\n annots: any[];\n }, idx: number, fac: TokenFactory);\n Execute(val: any): boolean;\n Encode(args: any[]): any;\n EncodeObject(val: any, semantic?: SemanticEncoding): import(\"@taquito/rpc\").MichelsonV1Expression;\n /**\n * @deprecated ExtractSchema has been deprecated in favor of generateSchema\n *\n */\n ExtractSchema(): \"bool\";\n generateSchema(): BaseTokenSchema;\n ToBigMapKey(val: string): {\n key: {\n [key: string]: string;\n };\n type: {\n prim: string;\n };\n };\n ToKey(val: string): import(\"@taquito/rpc\").MichelsonV1Expression;\n compare(val1: any, val2: any): 0 | 1 | -1;\n findAndReturnTokens(tokenToFind: string, tokens: Token[]): Token[];\n}\n"},{name:"@taquito/michelson-encoder/dist/types/tokens/comparable/bytes.d.ts",dts:"import { BaseTokenSchema } from '../../schema/types';\nimport { TokenFactory, ComparableToken, TokenValidationError, Token, SemanticEncoding } from '../token';\n/**\n * @category Error\n * @description Error that indicates a failure happening when parsing encoding/executing Bytes\n */\nexport declare class BytesValidationError extends TokenValidationError {\n value: any;\n token: BytesToken;\n name: string;\n constructor(value: any, token: BytesToken, message: string);\n}\nexport declare class BytesToken extends ComparableToken {\n protected val: {\n prim: string;\n args: any[];\n annots: any[];\n };\n protected idx: number;\n protected fac: TokenFactory;\n static prim: 'bytes';\n constructor(val: {\n prim: string;\n args: any[];\n annots: any[];\n }, idx: number, fac: TokenFactory);\n ToBigMapKey(val: string): {\n key: {\n bytes: string;\n };\n type: {\n prim: \"bytes\";\n };\n };\n /**\n * @throws {@link BytesValidationError}\n */\n private validate;\n private convertUint8ArrayToHexString;\n /**\n * @throws {@link BytesValidationError}\n */\n Encode(args: any[]): any;\n /**\n * @throws {@link BytesValidationError}\n */\n EncodeObject(val: string | Uint8Array, semantic?: SemanticEncoding): import(\"@taquito/rpc\").MichelsonV1Expression;\n Execute(val: any): string;\n /**\n * @deprecated ExtractSchema has been deprecated in favor of generateSchema\n *\n */\n ExtractSchema(): \"bytes\";\n generateSchema(): BaseTokenSchema;\n ToKey({ bytes, string }: any): any;\n findAndReturnTokens(tokenToFind: string, tokens: Token[]): Token[];\n}\n"},{name:"@taquito/michelson-encoder/dist/types/tokens/comparable/int.d.ts",dts:"import { Token, TokenFactory, ComparableToken, TokenValidationError, SemanticEncoding } from '../token';\nimport { BaseTokenSchema } from '../../schema/types';\n/**\n * @category Error\n * @description Error that indicates a failure happening when parsing encoding/executing Int\n */\nexport declare class IntValidationError extends TokenValidationError {\n value: any;\n token: IntToken;\n name: string;\n constructor(value: any, token: IntToken, message: string);\n}\nexport declare class IntToken extends ComparableToken {\n protected val: {\n prim: string;\n args: any[];\n annots: any[];\n };\n protected idx: number;\n protected fac: TokenFactory;\n static prim: 'int';\n constructor(val: {\n prim: string;\n args: any[];\n annots: any[];\n }, idx: number, fac: TokenFactory);\n Execute(val: {\n [key: string]: string;\n }): {\n [key: string]: any;\n };\n /**\n * @deprecated ExtractSchema has been deprecated in favor of generateSchema\n *\n */\n ExtractSchema(): \"int\";\n generateSchema(): BaseTokenSchema;\n /**\n * @throws {@link IntValidationError}\n */\n private validate;\n /**\n * @throws {@link IntValidationError}\n */\n Encode(args: any[]): any;\n /**\n * @throws {@link IntValidationError}\n */\n EncodeObject(val: any, semantic?: SemanticEncoding): any;\n ToBigMapKey(val: string | number): {\n key: {\n int: string;\n };\n type: {\n prim: \"int\";\n };\n };\n ToKey({ int }: any): any;\n compare(int1: string | number, int2: string | number): 0 | 1 | -1;\n findAndReturnTokens(tokenToFind: string, tokens: Token[]): Token[];\n}\n"},{name:"@taquito/michelson-encoder/dist/types/tokens/comparable/key_hash.d.ts",dts:"import { Token, TokenFactory, ComparableToken, TokenValidationError, SemanticEncoding } from '../token';\nimport { BaseTokenSchema } from '../../schema/types';\n/**\n * @category Error\n * @description Error that indicates a failure happening when parsing encoding/executing Key Hash\n */\nexport declare class KeyHashValidationError extends TokenValidationError {\n value: any;\n token: KeyHashToken;\n name: string;\n constructor(value: any, token: KeyHashToken, message: string);\n}\nexport declare class KeyHashToken extends ComparableToken {\n protected val: {\n prim: string;\n args: any[];\n annots: any[];\n };\n protected idx: number;\n protected fac: TokenFactory;\n static prim: 'key_hash';\n constructor(val: {\n prim: string;\n args: any[];\n annots: any[];\n }, idx: number, fac: TokenFactory);\n Execute(val: {\n bytes: string;\n string: string;\n }): string | undefined;\n /**\n * @throws {@link KeyHashValidationError}\n */\n private validate;\n /**\n * @throws {@link KeyHashValidationError}\n */\n Encode(args: any[]): any;\n /**\n * @throws {@link KeyHashValidationError}\n */\n EncodeObject(val: any, semantic?: SemanticEncoding): any;\n /**\n * @deprecated ExtractSchema has been deprecated in favor of generateSchema\n *\n */\n ExtractSchema(): \"key_hash\";\n generateSchema(): BaseTokenSchema;\n ToKey({ string, bytes }: any): any;\n ToBigMapKey(val: string): {\n key: {\n string: string;\n };\n type: {\n prim: \"key_hash\";\n };\n };\n findAndReturnTokens(tokenToFind: string, tokens: Token[]): Token[];\n}\n"},{name:"@taquito/michelson-encoder/dist/types/tokens/comparable/mutez.d.ts",dts:"import { Token, TokenFactory, ComparableToken, TokenValidationError, SemanticEncoding } from '../token';\nimport BigNumber from 'bignumber.js';\nimport { BaseTokenSchema } from '../../schema/types';\n/**\n * @category Error\n * @description Error that indicates a failure happening when parsing encoding/executing Mutez\n */\nexport declare class MutezValidationError extends TokenValidationError {\n value: any;\n token: MutezToken;\n name: string;\n constructor(value: any, token: MutezToken, message: string);\n}\nexport declare class MutezToken extends ComparableToken {\n protected val: {\n prim: string;\n args: any[];\n annots: any[];\n };\n protected idx: number;\n protected fac: TokenFactory;\n static prim: 'mutez';\n constructor(val: {\n prim: string;\n args: any[];\n annots: any[];\n }, idx: number, fac: TokenFactory);\n Execute(val: any): BigNumber;\n /**\n * @deprecated ExtractSchema has been deprecated in favor of generateSchema\n *\n */\n ExtractSchema(): \"mutez\";\n generateSchema(): BaseTokenSchema;\n /**\n * @throws {@link MutezValidationError}\n */\n private validate;\n /**\n * @throws {@link MutezValidationError}\n */\n Encode(args: any[]): any;\n /**\n * @throws {@link MutezValidationError}\n */\n EncodeObject(val: any, semantic?: SemanticEncoding): any;\n ToBigMapKey(val: string | number): {\n key: {\n int: string;\n };\n type: {\n prim: \"mutez\";\n };\n };\n ToKey({ int }: any): any;\n compare(mutez1: string | number, mutez2: string | number): 0 | 1 | -1;\n findAndReturnTokens(tokenToFind: string, tokens: Token[]): Token[];\n}\n"},{name:"@taquito/michelson-encoder/dist/types/tokens/comparable/nat.d.ts",dts:"import { Token, TokenFactory, ComparableToken, TokenValidationError, SemanticEncoding } from '../token';\nimport BigNumber from 'bignumber.js';\nimport { BaseTokenSchema } from '../../schema/types';\n/**\n * @category Error\n * @description Error that indicates a failure happening when parsing encoding/executing Nat\n */\nexport declare class NatValidationError extends TokenValidationError {\n value: any;\n token: NatToken;\n name: string;\n constructor(value: any, token: NatToken, message: string);\n}\nexport declare class NatToken extends ComparableToken {\n protected val: {\n prim: string;\n args: any[];\n annots: any[];\n };\n protected idx: number;\n protected fac: TokenFactory;\n static prim: 'nat';\n constructor(val: {\n prim: string;\n args: any[];\n annots: any[];\n }, idx: number, fac: TokenFactory);\n Execute(val: any): {\n [key: string]: any;\n };\n /**\n * @throws {@link NatValidationError}\n */\n Encode(args: any[]): any;\n /**\n * @throws {@link NatValidationError}\n */\n private validate;\n /**\n * @throws {@link NatValidationError}\n */\n EncodeObject(val: any, semantic?: SemanticEncoding): any;\n /**\n * @deprecated ExtractSchema has been deprecated in favor of generateSchema\n *\n */\n ExtractSchema(): \"nat\";\n generateSchema(): BaseTokenSchema;\n ToBigMapKey(val: string | number): {\n key: {\n int: string;\n };\n type: {\n prim: \"nat\";\n };\n };\n ToKey({ int }: any): BigNumber;\n compare(nat1: string | number, nat2: string | number): 0 | 1 | -1;\n findAndReturnTokens(tokenToFind: string, tokens: Token[]): Token[];\n}\n"},{name:"@taquito/michelson-encoder/dist/types/tokens/comparable/string.d.ts",dts:"import { BaseTokenSchema } from '../../schema/types';\nimport { Token, TokenFactory, ComparableToken, SemanticEncoding } from '../token';\nexport declare class StringToken extends ComparableToken {\n protected val: {\n prim: string;\n args: any[];\n annots: any[];\n };\n protected idx: number;\n protected fac: TokenFactory;\n static prim: 'string';\n constructor(val: {\n prim: string;\n args: any[];\n annots: any[];\n }, idx: number, fac: TokenFactory);\n Execute(val: any): string;\n /**\n * @deprecated ExtractSchema has been deprecated in favor of generateSchema\n *\n */\n ExtractSchema(): \"string\";\n generateSchema(): BaseTokenSchema;\n Encode(args: any[]): any;\n EncodeObject(val: any, semantic?: SemanticEncoding): any;\n ToKey({ string }: any): any;\n ToBigMapKey(val: string): {\n key: {\n string: string;\n };\n type: {\n prim: \"string\";\n };\n };\n findAndReturnTokens(tokenToFind: string, tokens: Token[]): Token[];\n}\n"},{name:"@taquito/michelson-encoder/dist/types/tokens/comparable/timestamp.d.ts",dts:"import { BaseTokenSchema } from '../../schema/types';\nimport { Token, TokenFactory, ComparableToken, SemanticEncoding } from '../token';\nexport declare class TimestampToken extends ComparableToken {\n protected val: {\n prim: string;\n args: any[];\n annots: any[];\n };\n protected idx: number;\n protected fac: TokenFactory;\n static prim: 'timestamp';\n constructor(val: {\n prim: string;\n args: any[];\n annots: any[];\n }, idx: number, fac: TokenFactory);\n Execute(val: {\n string?: string;\n int?: string;\n }): string | undefined;\n Encode(args: any[]): any;\n EncodeObject(val: any, semantic?: SemanticEncoding): any;\n /**\n * @deprecated ExtractSchema has been deprecated in favor of generateSchema\n *\n */\n ExtractSchema(): \"timestamp\";\n generateSchema(): BaseTokenSchema;\n ToKey({ string }: any): any;\n ToBigMapKey(val: string): {\n key: {\n string: string;\n };\n type: {\n prim: \"timestamp\";\n };\n };\n findAndReturnTokens(tokenToFind: string, tokens: Token[]): Token[];\n}\n"},{name:"@taquito/michelson-encoder/dist/types/tokens/bigmap.d.ts",dts:"import { BigMapTokenSchema } from '../schema/types';\nimport { ComparableToken, Semantic, SemanticEncoding, Token, TokenFactory, TokenValidationError } from './token';\n/**\n * @category Error\n * @description Error that indicates a failure happening when parsing encoding/executing Big Map types\n */\nexport declare class BigMapValidationError extends TokenValidationError {\n value: any;\n token: BigMapToken;\n name: string;\n constructor(value: any, token: BigMapToken, message: string);\n}\nexport declare class BigMapToken extends Token {\n protected val: {\n prim: string;\n args: any[];\n annots?: any[];\n };\n protected idx: number;\n protected fac: TokenFactory;\n static prim: 'big_map';\n constructor(val: {\n prim: string;\n args: any[];\n annots?: any[];\n }, idx: number, fac: TokenFactory);\n get ValueSchema(): Token;\n get KeySchema(): ComparableToken;\n /**\n * @deprecated ExtractSchema has been deprecated in favor of generateSchema\n *\n */\n ExtractSchema(): {\n big_map: {\n key: any;\n value: any;\n };\n };\n generateSchema(): BigMapTokenSchema;\n /**\n * @throws {@link BigMapValidationError}\n */\n private validate;\n private objLitToMichelsonMap;\n /**\n * @throws {@link BigMapValidationError}\n */\n Encode(args: any[]): any;\n /**\n * @throws {@link BigMapValidationError}\n */\n EncodeObject(args: any, semantic?: SemanticEncoding): any;\n /**\n * @throws {@link InvalidMapTypeError} when the argument passed to val is an array but not a valid map type\n * @throws {@link BigMapValidationError} when the value is invalid\n */\n Execute(val: any[] | {\n int: string;\n }, semantic?: Semantic): any;\n findAndReturnTokens(tokenToFind: string, tokens: Token[]): Token[];\n}\n"},{name:"@taquito/michelson-encoder/dist/types/tokens/bls12-381-fr.d.ts",dts:'import { BaseTokenSchema } from \'../schema/types\';\nimport { SemanticEncoding, Token, TokenFactory, TokenValidationError } from \'./token\';\n/**\n * @category Error\n * @description Error that indicates a failure happening when parsing encoding/executing a BLS12-381 scalar field Fr\n */\nexport declare class Bls12381frValidationError extends TokenValidationError {\n value: any;\n token: Bls12381frToken;\n name: string;\n constructor(value: any, token: Bls12381frToken, message: string);\n}\nexport declare class Bls12381frToken extends Token {\n protected val: {\n prim: string;\n args: any[];\n annots: any[];\n };\n protected idx: number;\n protected fac: TokenFactory;\n static prim: \'bls12_381_fr\';\n constructor(val: {\n prim: string;\n args: any[];\n annots: any[];\n }, idx: number, fac: TokenFactory);\n /**\n * @throws {@link Bls12381frValidationError}\n */\n private validate;\n private convertUint8ArrayToHexString;\n /**\n * @throws {@link Bls12381frValidationError}\n */\n Encode(args: any[]): {\n int: string;\n bytes?: undefined;\n } | {\n bytes: any;\n int?: undefined;\n };\n /**\n * @throws {@link Bls12381frValidationError}\n */\n EncodeObject(val: string | Uint8Array | number, semantic?: SemanticEncoding): import("@taquito/rpc").MichelsonV1ExpressionExtended | import("@taquito/rpc").MichelsonV1ExpressionBase | import("@taquito/rpc").MichelsonV1Expression[] | {\n bytes: string | number | Uint8Array;\n };\n Execute(val: any): string;\n /**\n * @deprecated ExtractSchema has been deprecated in favor of generateSchema\n *\n */\n ExtractSchema(): "bls12_381_fr";\n generateSchema(): BaseTokenSchema;\n findAndReturnTokens(tokenToFind: string, tokens: Token[]): Token[];\n}\n'},{name:"@taquito/michelson-encoder/dist/types/tokens/bls12-381-g1.d.ts",dts:'import { BaseTokenSchema } from \'../schema/types\';\nimport { SemanticEncoding, Token, TokenFactory, TokenValidationError } from \'./token\';\n/**\n * @category Error\n * @description Error that indicates a failure happening when parsing encoding/executing a BLS12-381 curve G1\n */\nexport declare class Bls12381g1ValidationError extends TokenValidationError {\n value: any;\n token: Bls12381g1Token;\n name: string;\n constructor(value: any, token: Bls12381g1Token, message: string);\n}\nexport declare class Bls12381g1Token extends Token {\n protected val: {\n prim: string;\n args: any[];\n annots: any[];\n };\n protected idx: number;\n protected fac: TokenFactory;\n static prim: \'bls12_381_g1\';\n constructor(val: {\n prim: string;\n args: any[];\n annots: any[];\n }, idx: number, fac: TokenFactory);\n /**\n * @throws {@link Bls12381g1ValidationError}\n */\n private validate;\n private convertUint8ArrayToHexString;\n /**\n * @throws {@link Bls12381g1ValidationError}\n */\n Encode(args: any[]): {\n bytes: any;\n };\n /**\n * @throws {@link Bls12381g1ValidationError}\n */\n EncodeObject(val: string | Uint8Array, semantic?: SemanticEncoding): import("@taquito/rpc").MichelsonV1ExpressionExtended | import("@taquito/rpc").MichelsonV1ExpressionBase | import("@taquito/rpc").MichelsonV1Expression[] | {\n bytes: string | Uint8Array;\n };\n Execute(val: any): string;\n /**\n * @deprecated ExtractSchema has been deprecated in favor of generateSchema\n *\n */\n ExtractSchema(): "bls12_381_g1";\n generateSchema(): BaseTokenSchema;\n findAndReturnTokens(tokenToFind: string, tokens: Token[]): Token[];\n}\n'},{name:"@taquito/michelson-encoder/dist/types/tokens/bls12-381-g2.d.ts",dts:'import { BaseTokenSchema } from \'../schema/types\';\nimport { SemanticEncoding, Token, TokenFactory, TokenValidationError } from \'./token\';\n/**\n * @category Error\n * @description Error that indicates a failure happening when parsing encoding/executing a BLS12-381 curve G2\n */\nexport declare class Bls12381g2ValidationError extends TokenValidationError {\n value: any;\n token: Bls12381g2Token;\n name: string;\n constructor(value: any, token: Bls12381g2Token, message: string);\n}\nexport declare class Bls12381g2Token extends Token {\n protected val: {\n prim: string;\n args: any[];\n annots: any[];\n };\n protected idx: number;\n protected fac: TokenFactory;\n static prim: \'bls12_381_g2\';\n constructor(val: {\n prim: string;\n args: any[];\n annots: any[];\n }, idx: number, fac: TokenFactory);\n /**\n * @throws {@link Bls12381g2ValidationError}\n */\n private validate;\n private convertUint8ArrayToHexString;\n /**\n * @throws {@link Bls12381g2ValidationError}\n */\n Encode(args: any[]): {\n bytes: any;\n };\n /**\n * @throws {@link Bls12381g2ValidationError}\n */\n EncodeObject(val: string | Uint8Array, semantic?: SemanticEncoding): import("@taquito/rpc").MichelsonV1ExpressionExtended | import("@taquito/rpc").MichelsonV1ExpressionBase | import("@taquito/rpc").MichelsonV1Expression[] | {\n bytes: string | Uint8Array;\n };\n Execute(val: any): string;\n /**\n * @deprecated ExtractSchema has been deprecated in favor of generateSchema\n *\n */\n ExtractSchema(): "bls12_381_g2";\n generateSchema(): BaseTokenSchema;\n findAndReturnTokens(tokenToFind: string, tokens: Token[]): Token[];\n}\n'},{name:"@taquito/michelson-encoder/dist/types/tokens/chain-id.d.ts",dts:"import { Token, TokenFactory, ComparableToken, TokenValidationError, SemanticEncoding } from './token';\nimport { BaseTokenSchema } from '../schema/types';\n/**\n * @category Error\n * @description Error that indicates a failure happening when parsing encoding/executing a ChainID\n */\nexport declare class ChainIDValidationError extends TokenValidationError {\n value: any;\n token: ChainIDToken;\n name: string;\n constructor(value: any, token: ChainIDToken, message: string);\n}\nexport declare class ChainIDToken extends ComparableToken {\n protected val: {\n prim: string;\n args: any[];\n annots: any[];\n };\n protected idx: number;\n protected fac: TokenFactory;\n static prim: 'chain_id';\n constructor(val: {\n prim: string;\n args: any[];\n annots: any[];\n }, idx: number, fac: TokenFactory);\n /**\n * @throws {@link ChainIDValidationError}\n */\n private validate;\n Execute(val: any): string;\n /**\n * @deprecated ExtractSchema has been deprecated in favor of generateSchema\n *\n */\n ExtractSchema(): \"chain_id\";\n generateSchema(): BaseTokenSchema;\n /**\n * @throws {@link ChainIDValidationError}\n */\n Encode(args: any[]): any;\n /**\n * @throws {@link ChainIDValidationError}\n */\n EncodeObject(val: any, semantic?: SemanticEncoding): any;\n ToKey({ string }: any): any;\n ToBigMapKey(val: string): {\n key: {\n string: string;\n };\n type: {\n prim: \"chain_id\";\n };\n };\n findAndReturnTokens(tokenToFind: string, tokens: Token[]): Token[];\n}\n"},{name:"@taquito/michelson-encoder/dist/types/tokens/chest-key.d.ts",dts:'import { BaseTokenSchema } from \'../schema/types\';\nimport { SemanticEncoding, Token, TokenFactory, TokenValidationError } from \'./token\';\n/**\n * @category Error\n * @description Error that indicates a failure happening when parsing encoding/executing a Chest Key\n */\nexport declare class ChestKeyValidationError extends TokenValidationError {\n value: any;\n token: ChestKeyToken;\n name: string;\n constructor(value: any, token: ChestKeyToken, message: string);\n}\nexport declare class ChestKeyToken extends Token {\n protected val: {\n prim: string;\n args: any[];\n annots: any[];\n };\n protected idx: number;\n protected fac: TokenFactory;\n static prim: \'chest_key\';\n constructor(val: {\n prim: string;\n args: any[];\n annots: any[];\n }, idx: number, fac: TokenFactory);\n /**\n * @throws {@link ChestKeyValidationError}\n */\n private validate;\n private convertUint8ArrayToHexString;\n /**\n * @throws {@link ChestKeyValidationError}\n */\n Encode(args: any[]): {\n bytes: any;\n };\n /**\n * @throws {@link ChestKeyValidationError}\n */\n EncodeObject(val: string | Uint8Array, semantic?: SemanticEncoding): import("@taquito/rpc").MichelsonV1ExpressionExtended | import("@taquito/rpc").MichelsonV1ExpressionBase | import("@taquito/rpc").MichelsonV1Expression[] | {\n bytes: string | Uint8Array;\n };\n Execute(val: any): string;\n /**\n * @deprecated ExtractSchema has been deprecated in favor of generateSchema\n *\n */\n ExtractSchema(): "chest_key";\n generateSchema(): BaseTokenSchema;\n findAndReturnTokens(tokenToFind: string, tokens: Token[]): Token[];\n}\n'},{name:"@taquito/michelson-encoder/dist/types/tokens/chest.d.ts",dts:'import { BaseTokenSchema } from \'../schema/types\';\nimport { SemanticEncoding, Token, TokenFactory, TokenValidationError } from \'./token\';\n/**\n * @category Error\n * @description Error that indicates a failure happening when parsing encoding/executing a Chest\n */\nexport declare class ChestValidationError extends TokenValidationError {\n value: any;\n token: ChestToken;\n name: string;\n constructor(value: any, token: ChestToken, message: string);\n}\nexport declare class ChestToken extends Token {\n protected val: {\n prim: string;\n args: any[];\n annots: any[];\n };\n protected idx: number;\n protected fac: TokenFactory;\n static prim: \'chest\';\n constructor(val: {\n prim: string;\n args: any[];\n annots: any[];\n }, idx: number, fac: TokenFactory);\n /**\n * @throws {@link ChestKeyValidationError}\n */\n private validate;\n private convertUint8ArrayToHexString;\n /**\n * @throws {@link ChestKeyValidationError}\n */\n Encode(args: any[]): {\n bytes: any;\n };\n /**\n * @throws {@link ChestKeyValidationError}\n */\n EncodeObject(val: string | Uint8Array, semantic?: SemanticEncoding): import("@taquito/rpc").MichelsonV1ExpressionExtended | import("@taquito/rpc").MichelsonV1ExpressionBase | import("@taquito/rpc").MichelsonV1Expression[] | {\n bytes: string | Uint8Array;\n };\n Execute(val: any): string;\n /**\n * @deprecated ExtractSchema has been deprecated in favor of generateSchema\n *\n */\n ExtractSchema(): "chest";\n generateSchema(): BaseTokenSchema;\n findAndReturnTokens(tokenToFind: string, tokens: Token[]): Token[];\n}\n'},{name:"@taquito/michelson-encoder/dist/types/tokens/constant.d.ts",dts:"import { ConstantTokenSchema } from '../schema/types';\nimport { Semantic, SemanticEncoding, Token, TokenFactory, TokenValidationError } from './token';\n/**\n * @category Error\n * @description Error that indicates a failure happening when parsing encoding a Global Constant\n */\nexport declare class GlobalConstantEncodingError extends TokenValidationError {\n value: any;\n token: GlobalConstantToken;\n name: string;\n constructor(value: any, token: GlobalConstantToken, message: string);\n}\n/**\n * @category Error\n * @description Error that indicates a failure happening when parsing executing a Global Constant\n */\nexport declare class GlobalConstantDecodingError extends TokenValidationError {\n value: any;\n token: GlobalConstantToken;\n name: string;\n constructor(value: any, token: GlobalConstantToken, message: string);\n}\nexport declare class GlobalConstantToken extends Token {\n protected val: {\n prim: string;\n args: any[];\n annots?: any[];\n };\n protected idx: number;\n protected fac: TokenFactory;\n static prim: 'constant';\n constructor(val: {\n prim: string;\n args: any[];\n annots?: any[];\n }, idx: number, fac: TokenFactory);\n /**\n * @throws {@link GlobalConstantDecodingError}\n */\n Execute(val: any, semantic?: Semantic): any;\n /**\n * @throws {@link GlobalConstantEncodingError}\n */\n Encode(args: any[]): any;\n /**\n * @throws {@link GlobalConstantEncodingError}\n */\n EncodeObject(val: any, semantic?: SemanticEncoding): any;\n /**\n * @deprecated ExtractSchema has been deprecated in favor of generateSchema\n *\n */\n ExtractSchema(): \"constant\";\n generateSchema(): ConstantTokenSchema;\n findAndReturnTokens(tokenToFind: string, tokens: Token[]): Token[];\n}\n"},{name:"@taquito/michelson-encoder/dist/types/tokens/contract.d.ts",dts:"import { ContractTokenSchema } from '../schema/types';\nimport { SemanticEncoding, Token, TokenFactory, TokenValidationError } from './token';\n/**\n * @category Error\n * @description Error that indicates a failure happening when parsing encoding/executing a Contract\n */\nexport declare class ContractValidationError extends TokenValidationError {\n value: any;\n token: ContractToken;\n name: string;\n constructor(value: any, token: ContractToken, message: string);\n}\nexport declare class ContractToken extends Token {\n protected val: {\n prim: string;\n args: any[];\n annots: any[];\n };\n protected idx: number;\n protected fac: TokenFactory;\n static prim: 'contract';\n constructor(val: {\n prim: string;\n args: any[];\n annots: any[];\n }, idx: number, fac: TokenFactory);\n /**\n * @throws {@link ContractValidationError}\n */\n private validate;\n /**\n * @throws {@link ContractValidationError}\n */\n Execute(val: {\n bytes: string;\n string: string;\n }): string;\n /**\n * @throws {@link ContractValidationError}\n */\n Encode(args: any[]): any;\n /**\n * @throws {@link ContractValidationError}\n */\n EncodeObject(val: any, semantic?: SemanticEncoding): any;\n /**\n * @deprecated ExtractSchema has been deprecated in favor of generateSchema\n *\n */\n ExtractSchema(): \"contract\";\n generateSchema(): ContractTokenSchema;\n findAndReturnTokens(tokenToFind: string, tokens: Token[]): Token[];\n}\n"},{name:"@taquito/michelson-encoder/dist/types/tokens/createToken.d.ts",dts:"import { Token } from './token';\nimport { TaquitoError } from '@taquito/core';\n/**\n * @category Error\n * @description Error that indicates a script having an invalid type or it being unsupported by the Michelson Encoder. Note some protocol changes might affect this, we encourage users to open an issue so we can look into implementing support for said types.\n */\nexport declare class InvalidTokenError extends TaquitoError {\n message: string;\n data: any;\n name: string;\n constructor(message: string, data: any);\n}\n/**\n *\n * @description Create a token from a value\n * @throws {@link InvalidTokenError} If the value passed is not supported by the Michelson Encoder\n */\nexport declare function createToken(val: any, idx: number): Token;\n"},{name:"@taquito/michelson-encoder/dist/types/tokens/key.d.ts",dts:"import { ComparableToken, SemanticEncoding, Token, TokenFactory, TokenValidationError } from './token';\nimport { BaseTokenSchema } from '../schema/types';\n/**\n * @category Error\n * @description Error that indicates a failure happening when parsing encoding/executing a Key\n */\nexport declare class KeyValidationError extends TokenValidationError {\n value: any;\n token: KeyToken;\n name: string;\n constructor(value: any, token: KeyToken, message: string);\n}\nexport declare class KeyToken extends ComparableToken {\n protected val: {\n prim: string;\n args: any[];\n annots: any[];\n };\n protected idx: number;\n protected fac: TokenFactory;\n static prim: 'key';\n constructor(val: {\n prim: string;\n args: any[];\n annots: any[];\n }, idx: number, fac: TokenFactory);\n Execute(val: {\n bytes: string;\n string: string;\n }): string | undefined;\n /**\n * @throws {@link KeyValidationError}\n */\n private validate;\n /**\n * @throws {@link KeyValidationError}\n */\n Encode(args: any[]): any;\n /**\n * @throws {@link KeyValidationError}\n */\n EncodeObject(val: any, semantic?: SemanticEncoding): any;\n /**\n * @deprecated ExtractSchema has been deprecated in favor of generateSchema\n *\n */\n ExtractSchema(): \"key\";\n generateSchema(): BaseTokenSchema;\n ToKey(val: any): string | undefined;\n ToBigMapKey(val: string): {\n key: {\n string: string;\n };\n type: {\n prim: \"key\";\n };\n };\n compare(key1: string, key2: string): number;\n private getPrefix;\n private getP256PublicKeyComparableBytes;\n findAndReturnTokens(tokenToFind: string, tokens: Token[]): Token[];\n}\n"},{name:"@taquito/michelson-encoder/dist/types/tokens/lambda.d.ts",dts:"import { LambdaTokenSchema } from '../schema/types';\nimport { SemanticEncoding, Token, TokenFactory } from './token';\nexport declare class LambdaToken extends Token {\n protected val: {\n prim: string;\n args: any[];\n annots: any[];\n };\n protected idx: number;\n protected fac: TokenFactory;\n static prim: 'lambda';\n constructor(val: {\n prim: string;\n args: any[];\n annots: any[];\n }, idx: number, fac: TokenFactory);\n get paramSchema(): Token;\n get returnSchema(): Token;\n Execute(val: any): any;\n Encode(args: any[]): any;\n EncodeObject(val: any, semantic?: SemanticEncoding): any;\n /**\n * @deprecated ExtractSchema has been deprecated in favor of generateSchema\n *\n */\n ExtractSchema(): {\n lambda: {\n parameters: any;\n returns: any;\n };\n };\n generateSchema(): LambdaTokenSchema;\n findAndReturnTokens(tokenToFind: string, tokens: Token[]): Token[];\n}\n"},{name:"@taquito/michelson-encoder/dist/types/tokens/list.d.ts",dts:"import { ListTokenSchema } from '../schema/types';\nimport { Token, TokenFactory, Semantic, TokenValidationError, SemanticEncoding } from './token';\n/**\n * @category Error\n * @description Error that indicates a failure happening when parsing encoding/executing a List\n */\nexport declare class ListValidationError extends TokenValidationError {\n value: any;\n token: ListToken;\n name: string;\n constructor(value: any, token: ListToken, message: string);\n}\nexport declare class ListToken extends Token {\n protected val: {\n prim: string;\n args: any[];\n annots: any[];\n };\n protected idx: number;\n protected fac: TokenFactory;\n static prim: 'list';\n constructor(val: {\n prim: string;\n args: any[];\n annots: any[];\n }, idx: number, fac: TokenFactory);\n get valueSchema(): Token;\n /**\n * @throws {@link ListValidationError}\n */\n private validate;\n /**\n * @throws {@link ListValidationError}\n */\n Encode(args: any[]): any;\n /**\n * @throws {@link ListValidationError}\n */\n Execute(val: any, semantics?: Semantic): any;\n /**\n * @throws {@link ListValidationError}\n */\n EncodeObject(args: any, semantic?: SemanticEncoding): any;\n /**\n * @deprecated ExtractSchema has been deprecated in favor of generateSchema\n *\n */\n ExtractSchema(): {\n list: any;\n };\n generateSchema(): ListTokenSchema;\n findAndReturnTokens(tokenToFind: string, tokens: Token[]): Token[];\n}\n"},{name:"@taquito/michelson-encoder/dist/types/tokens/map.d.ts",dts:"import { MapTokenSchema } from '../schema/types';\nimport { ComparableToken, Semantic, SemanticEncoding, Token, TokenFactory, TokenValidationError } from './token';\n/**\n * @category Error\n * @description Error that indicates a failure happening when parsing encoding/executing a Map\n */\nexport declare class MapValidationError extends TokenValidationError {\n value: any;\n token: MapToken;\n name: string;\n constructor(value: any, token: MapToken, message: string);\n}\nexport declare class MapToken extends Token {\n protected val: {\n prim: string;\n args: any[];\n annots: any[];\n };\n protected idx: number;\n protected fac: TokenFactory;\n static prim: 'map';\n constructor(val: {\n prim: string;\n args: any[];\n annots: any[];\n }, idx: number, fac: TokenFactory);\n get ValueSchema(): Token;\n get KeySchema(): ComparableToken;\n /**\n * @throws {@link MapValidationError}\n */\n validate(value: any): void;\n Execute(val: any[], semantics?: Semantic): {\n [key: string]: any;\n };\n private objLitToMichelsonMap;\n /**\n * @throws {@link MapValidationError}\n */\n Encode(args: any[]): any;\n /**\n * @throws {@link MapValidationError}\n */\n EncodeObject(args: any, semantic?: SemanticEncoding): any;\n /**\n * @deprecated ExtractSchema has been deprecated in favor of generateSchema\n *\n */\n ExtractSchema(): {\n map: {\n key: any;\n value: any;\n };\n };\n generateSchema(): MapTokenSchema;\n findAndReturnTokens(tokenToFind: string, tokens: Token[]): Token[];\n}\n"},{name:"@taquito/michelson-encoder/dist/types/tokens/never.d.ts",dts:"import { BaseTokenSchema } from '../schema/types';\nimport { SemanticEncoding, Token, TokenFactory, TokenValidationError } from './token';\n/**\n * @category Error\n * @description Error that indicates a failure happening when parsing encoding/executing a Never Token\n */\nexport declare class NeverTokenError extends TokenValidationError {\n value: any;\n token: NeverToken;\n name: string;\n constructor(value: any, token: NeverToken, message: string);\n}\nexport declare class NeverToken extends Token {\n protected val: {\n prim: string;\n args: any[];\n annots: any[];\n };\n protected idx: number;\n protected fac: TokenFactory;\n static prim: 'never';\n constructor(val: {\n prim: string;\n args: any[];\n annots: any[];\n }, idx: number, fac: TokenFactory);\n /**\n * @throws {@link NeverTokenError}\n */\n Encode(args: any[]): any;\n /**\n * @throws {@link NeverTokenError}\n */\n EncodeObject(val: any, semantic?: SemanticEncoding): any;\n /**\n * @throws {@link NeverTokenError}\n */\n Execute(val: any): void;\n /**\n * @deprecated ExtractSchema has been deprecated in favor of generateSchema\n *\n */\n ExtractSchema(): \"never\";\n generateSchema(): BaseTokenSchema;\n findAndReturnTokens(tokenToFind: string, tokens: Token[]): Token[];\n}\n"},{name:"@taquito/michelson-encoder/dist/types/tokens/operation.d.ts",dts:"import { BaseTokenSchema } from '../schema/types';\nimport { SemanticEncoding, Token, TokenFactory } from './token';\nexport declare class OperationToken extends Token {\n protected val: {\n prim: string;\n args: any[];\n annots: any[];\n };\n protected idx: number;\n protected fac: TokenFactory;\n static prim: 'operation';\n constructor(val: {\n prim: string;\n args: any[];\n annots: any[];\n }, idx: number, fac: TokenFactory);\n Execute(val: any): {\n [key: string]: any;\n };\n Encode(...args: any[]): any;\n EncodeObject(val: any, semantic?: SemanticEncoding): any;\n /**\n * @deprecated ExtractSchema has been deprecated in favor of generateSchema\n *\n */\n ExtractSchema(): \"operation\";\n generateSchema(): BaseTokenSchema;\n findAndReturnTokens(tokenToFind: string, tokens: Token[]): Token[];\n}\n"},{name:"@taquito/michelson-encoder/dist/types/tokens/option.d.ts",dts:"import { OptionTokenSchema } from '../schema/types';\nimport { Token, TokenFactory, Semantic, ComparableToken, SemanticEncoding } from './token';\nexport declare class OptionToken extends ComparableToken {\n protected val: {\n prim: string;\n args: any[];\n annots: any[];\n };\n protected idx: number;\n protected fac: TokenFactory;\n static prim: 'option';\n constructor(val: {\n prim: string;\n args: any[];\n annots: any[];\n }, idx: number, fac: TokenFactory);\n subToken(): Token;\n schema(): Token;\n annot(): string;\n Encode(args: any): any;\n EncodeObject(args: any, semantic?: SemanticEncoding): any;\n Execute(val: any, semantics?: Semantic): {\n Some: any;\n } | null;\n /**\n * @deprecated ExtractSchema has been deprecated in favor of generateSchema\n *\n */\n ExtractSchema(): {\n Some: any;\n };\n generateSchema(): OptionTokenSchema;\n ExtractSignature(): any[][];\n get KeySchema(): ComparableToken;\n compare(val1: any, val2: any): number;\n ToKey(val: any): {\n Some: any;\n } | null;\n ToBigMapKey(val: any): {\n key: any;\n type: Omit;\n };\n findAndReturnTokens(tokenToFind: string, tokens: Token[]): Token[];\n}\n"},{name:"@taquito/michelson-encoder/dist/types/tokens/or.d.ts",dts:"import { OrTokenSchema } from '../schema/types';\nimport { Token, TokenFactory, Semantic, ComparableToken, SemanticEncoding, TokenValidationError } from './token';\n/**\n * @category Error\n * @description Error that indicates a failure happening when parsing encoding/executing an OrToken\n */\nexport declare class OrValidationError extends TokenValidationError {\n value: any;\n token: OrToken;\n name: string;\n constructor(value: any, token: OrToken, message: string);\n}\nexport declare class OrToken extends ComparableToken {\n protected val: {\n prim: string;\n args: any[];\n annots: any[];\n };\n protected idx: number;\n protected fac: TokenFactory;\n static prim: 'or';\n constructor(val: {\n prim: string;\n args: any[];\n annots: any[];\n }, idx: number, fac: TokenFactory);\n Encode(args: any[]): any;\n ExtractSignature(): any;\n /**\n * @throws {@link OrValidationError}\n */\n EncodeObject(args: any, semantic?: SemanticEncoding): any;\n /**\n * @throws {@link OrValidationError}\n */\n private validateJavascriptObject;\n /**\n * @throws {@link OrValidationError}\n */\n Execute(val: any, semantics?: Semantic): any;\n private traversal;\n /**\n * @deprecated ExtractSchema has been deprecated in favor of generateSchema\n *\n */\n ExtractSchema(): any;\n generateSchema(): OrTokenSchema;\n private findToken;\n compare(val1: any, val2: any): any;\n ToKey(val: any): any;\n ToBigMapKey(val: any): {\n key: any;\n type: Omit;\n };\n findAndReturnTokens(tokenToFind: string, tokens: Token[]): Token[];\n}\n"},{name:"@taquito/michelson-encoder/dist/types/tokens/pair.d.ts",dts:"import { Token, TokenFactory, Semantic, ComparableToken, SemanticEncoding } from './token';\nimport { PairTokenSchema } from '../schema/types';\nimport { MichelsonV1Expression, MichelsonV1ExpressionExtended } from '@taquito/rpc';\nimport { TaquitoError } from '@taquito/core';\n/**\n * @category Error\n * @description Error that indicates in invalid token argument being passed\n */\nexport declare class TokenArgumentValidationError extends TaquitoError {\n message: string;\n name: string;\n constructor(message: string);\n}\n/**\n * @category Error\n * @description Error that indicates a failure occurring when doing a comparison of tokens\n */\nexport declare class TokenComparisonError extends TaquitoError {\n val1: string;\n val2: string;\n name: string;\n constructor(val1: string, val2: string);\n}\nexport declare class PairToken extends ComparableToken {\n static prim: 'pair';\n constructor(val: MichelsonV1Expression, idx: number, fac: TokenFactory);\n private args;\n private tokens;\n Encode(args: any[]): any;\n ExtractSignature(): any;\n ToBigMapKey(val: any): {\n key: any;\n type: Omit;\n };\n ToKey(val: any): {\n [key: string]: any;\n };\n EncodeObject(args: any, semantic?: SemanticEncoding): any;\n private traversal;\n Execute(val: any, semantics?: Semantic): {\n [key: string]: any;\n };\n /**\n * @deprecated ExtractSchema has been deprecated in favor of generateSchema\n *\n */\n ExtractSchema(): any;\n generateSchema(): PairTokenSchema;\n /**\n * @throws {@link TokenComparisonError}\n */\n compare(val1: any, val2: any): number;\n findAndReturnTokens(tokenToFind: string, tokens: Token[]): Token[];\n}\n"},{name:"@taquito/michelson-encoder/dist/types/tokens/sapling-state.d.ts",dts:"import { SaplingStateTokenSchema } from '../schema/types';\nimport { Semantic, SemanticEncoding, Token, TokenFactory, TokenValidationError } from './token';\n/**\n * @category Error\n * @description Error that indicates a failure happening when parsing encoding/executing a Sapling State\n */\nexport declare class SaplingStateValidationError extends TokenValidationError {\n value: any;\n token: SaplingStateToken;\n name: string;\n constructor(value: any, token: SaplingStateToken, message: string);\n}\nexport declare class SaplingStateToken extends Token {\n protected val: {\n prim: string;\n args: any[];\n annots: any[];\n };\n protected idx: number;\n protected fac: TokenFactory;\n static prim: 'sapling_state';\n constructor(val: {\n prim: string;\n args: any[];\n annots: any[];\n }, idx: number, fac: TokenFactory);\n private isValid;\n /**\n * @throws {@link SaplingStateValidationError}\n */\n Execute(val: {\n int: string;\n }, semantic?: Semantic): any;\n /**\n * @throws {@link SaplingStateValidationError}\n */\n Encode(args: any[]): any;\n /**\n * @throws {@link SaplingStateValidationError}\n */\n EncodeObject(val: any, semantic?: SemanticEncoding): any;\n /**\n * @deprecated ExtractSchema has been deprecated in favor of generateSchema\n *\n */\n ExtractSchema(): {\n sapling_state: {\n 'memo-size': number;\n };\n };\n generateSchema(): SaplingStateTokenSchema;\n findAndReturnTokens(tokenToFind: string, tokens: Token[]): Token[];\n}\n"},{name:"@taquito/michelson-encoder/dist/types/tokens/sapling-transaction-deprecated.d.ts",dts:"import { SaplingTransactionDeprecatedTokenSchema } from '../schema/types';\nimport { SemanticEncoding, Token, TokenFactory, TokenValidationError } from './token';\n/**\n * @category Error\n * @description Error that indicates a failure happening when parsing encoding/executing a Sapling Transaction Deprecated\n */\nexport declare class SaplingTransactionDeprecatedValidationError extends TokenValidationError {\n value: any;\n token: SaplingTransactionDeprecatedToken;\n name: string;\n constructor(value: any, token: SaplingTransactionDeprecatedToken, message: string);\n}\nexport declare class SaplingTransactionDeprecatedToken extends Token {\n protected val: {\n prim: string;\n args: any[];\n annots: any[];\n };\n protected idx: number;\n protected fac: TokenFactory;\n static prim: 'sapling_transaction_deprecated';\n constructor(val: {\n prim: string;\n args: any[];\n annots: any[];\n }, idx: number, fac: TokenFactory);\n /**\n * @throws {@link SaplingTransactionDeprecatedValidationError}\n */\n Execute(_val: any): void;\n /**\n * @throws {@link SaplingTransactionDeprecatedValidationError}\n */\n private validateBytes;\n private convertUint8ArrayToHexString;\n Encode(args: any[]): any;\n EncodeObject(val: string | Uint8Array, semantic?: SemanticEncoding): import(\"@taquito/rpc\").MichelsonV1Expression;\n /**\n * @deprecated ExtractSchema has been deprecated in favor of generateSchema\n *\n */\n ExtractSchema(): {\n sapling_transaction_deprecated: {\n 'memo-size': number;\n };\n };\n generateSchema(): SaplingTransactionDeprecatedTokenSchema;\n findAndReturnTokens(tokenToFind: string, tokens: Token[]): Token[];\n}\n"},{name:"@taquito/michelson-encoder/dist/types/tokens/sapling-transaction.d.ts",dts:"import { SaplingTransactionTokenSchema } from '../schema/types';\nimport { SemanticEncoding, Token, TokenFactory, TokenValidationError } from './token';\n/**\n * @category Error\n * @description Error that indicates a failure happening when parsing encoding/executing a Sapling Transaction\n */\nexport declare class SaplingTransactionValidationError extends TokenValidationError {\n value: any;\n token: SaplingTransactionToken;\n name: string;\n constructor(value: any, token: SaplingTransactionToken, message: string);\n}\nexport declare class SaplingTransactionToken extends Token {\n protected val: {\n prim: string;\n args: any[];\n annots: any[];\n };\n protected idx: number;\n protected fac: TokenFactory;\n static prim: 'sapling_transaction';\n constructor(val: {\n prim: string;\n args: any[];\n annots: any[];\n }, idx: number, fac: TokenFactory);\n /**\n * @throws {@link SaplingTransactionValidationError}\n */\n Execute(_val: any): void;\n /**\n * @throws {@link SaplingTransactionValidationError}\n */\n private validateBytes;\n private convertUint8ArrayToHexString;\n Encode(args: any[]): any;\n EncodeObject(val: string | Uint8Array, semantic?: SemanticEncoding): import(\"@taquito/rpc\").MichelsonV1Expression;\n /**\n * @deprecated ExtractSchema has been deprecated in favor of generateSchema\n *\n */\n ExtractSchema(): {\n sapling_transaction: {\n 'memo-size': number;\n };\n };\n generateSchema(): SaplingTransactionTokenSchema;\n findAndReturnTokens(tokenToFind: string, tokens: Token[]): Token[];\n}\n"},{name:"@taquito/michelson-encoder/dist/types/tokens/set.d.ts",dts:"import { SetTokenSchema } from '../schema/types';\nimport { Token, TokenFactory, Semantic, TokenValidationError, ComparableToken, SemanticEncoding } from './token';\n/**\n * @category Error\n * @description Error that indicates a failure happening when parsing encoding/executing a Set\n */\nexport declare class SetValidationError extends TokenValidationError {\n value: any;\n token: SetToken;\n name: string;\n constructor(value: any, token: SetToken, message: string);\n}\nexport declare class SetToken extends Token {\n protected val: {\n prim: string;\n args: any[];\n annots: any[];\n };\n protected idx: number;\n protected fac: TokenFactory;\n static prim: 'set';\n constructor(val: {\n prim: string;\n args: any[];\n annots: any[];\n }, idx: number, fac: TokenFactory);\n get KeySchema(): ComparableToken;\n /**\n * @throws {@link SetValidationError}\n */\n private validate;\n /**\n * @throws {@link SetValidationError}\n */\n Encode(args: any[]): any;\n Execute(val: any, semantics?: Semantic): any;\n /**\n * @throws {@link SetValidationError}\n */\n EncodeObject(args: any, semantic?: SemanticEncoding): any;\n /**\n * @deprecated ExtractSchema has been deprecated in favor of generateSchema\n *\n */\n ExtractSchema(): \"set\";\n generateSchema(): SetTokenSchema;\n findAndReturnTokens(tokenToFind: string, tokens: Token[]): Token[];\n}\n"},{name:"@taquito/michelson-encoder/dist/types/tokens/signature.d.ts",dts:"import { ComparableToken, SemanticEncoding, Token, TokenFactory, TokenValidationError } from './token';\nimport { BaseTokenSchema } from '../schema/types';\n/**\n * @category Error\n * @description Error that indicates a failure happening when parsing encoding/executing a Signature\n */\nexport declare class SignatureValidationError extends TokenValidationError {\n value: any;\n token: SignatureToken;\n name: string;\n constructor(value: any, token: SignatureToken, message: string);\n}\nexport declare class SignatureToken extends ComparableToken {\n protected val: {\n prim: string;\n args: any[];\n annots: any[];\n };\n protected idx: number;\n protected fac: TokenFactory;\n static prim: 'signature';\n constructor(val: {\n prim: string;\n args: any[];\n annots: any[];\n }, idx: number, fac: TokenFactory);\n Execute(val: {\n [key: string]: string;\n }): string;\n /**\n * @throws {@link SignatureValidationError}\n */\n private validate;\n /**\n * @throws {@link SignatureValidationError}\n */\n Encode(args: any[]): any;\n /**\n * @throws {@link SignatureValidationError}\n */\n EncodeObject(val: any, semantic?: SemanticEncoding): any;\n /**\n * @deprecated ExtractSchema has been deprecated in favor of generateSchema\n *\n */\n ExtractSchema(): \"signature\";\n generateSchema(): BaseTokenSchema;\n ToKey(val: any): string;\n ToBigMapKey(val: string): {\n key: {\n string: string;\n };\n type: {\n prim: \"signature\";\n };\n };\n findAndReturnTokens(tokenToFind: string, tokens: Token[]): Token[];\n}\n"},{name:"@taquito/michelson-encoder/dist/types/tokens/ticket-deprecated.d.ts",dts:"import { TaquitoError } from '@taquito/core';\nimport { TicketDeprecatedTokenSchema } from '../schema/types';\nimport { Token, TokenFactory, Semantic, SemanticEncoding } from './token';\n/**\n * @category Error\n * @description Error that indicates a failure when encoding and sending a ticket to the blockchain\n */\nexport declare class EncodeTicketDeprecatedError extends TaquitoError {\n name: string;\n constructor();\n}\nexport declare class TicketDeprecatedToken extends Token {\n protected val: {\n prim: string;\n args: any[];\n annots: any[];\n };\n protected idx: number;\n protected fac: TokenFactory;\n static prim: 'ticket_deprecated';\n constructor(val: {\n prim: string;\n args: any[];\n annots: any[];\n }, idx: number, fac: TokenFactory);\n get valueToken(): Token;\n /**\n * @throws {@link EncodeTicketDeprecatedError}\n */\n Encode(_args: any[]): any;\n /**\n * @throws {@link EncodeTicketDeprecatedError}\n */\n EncodeObject(args: any, semantic?: SemanticEncoding): any;\n Execute(val: any, semantics?: Semantic): any;\n /**\n * @deprecated ExtractSchema has been deprecated in favor of generateSchema\n *\n */\n ExtractSchema(): {\n ticketer: \"contract\";\n value: any;\n amount: \"int\";\n };\n generateSchema(): TicketDeprecatedTokenSchema;\n findAndReturnTokens(tokenToFind: string, tokens: Token[]): Token[];\n}\n"},{name:"@taquito/michelson-encoder/dist/types/tokens/ticket.d.ts",dts:"import { TaquitoError } from '@taquito/core';\nimport { TicketTokenSchema } from '../schema/types';\nimport { Token, TokenFactory, Semantic, SemanticEncoding } from './token';\n/**\n * @category Error\n * @description Error that indicates a failure when encoding and sending a ticket to the blockchain\n */\nexport declare class EncodeTicketError extends TaquitoError {\n name: string;\n constructor();\n}\nexport declare class TicketToken extends Token {\n protected val: {\n prim: string;\n args: any[];\n annots: any[];\n };\n protected idx: number;\n protected fac: TokenFactory;\n static prim: 'ticket';\n constructor(val: {\n prim: string;\n args: any[];\n annots: any[];\n }, idx: number, fac: TokenFactory);\n get valueToken(): Token;\n /**\n * @throws {@link EncodeTicketError}\n */\n Encode(_args: any[]): any;\n /**\n * @throws {@link EncodeTicketError}\n */\n EncodeObject(args: any, semantic?: SemanticEncoding): any;\n Execute(val: any, semantics?: Semantic): any;\n /**\n * @deprecated ExtractSchema has been deprecated in favor of generateSchema\n *\n */\n ExtractSchema(): {\n ticketer: \"contract\";\n value: any;\n amount: \"int\";\n };\n generateSchema(): TicketTokenSchema;\n findAndReturnTokens(tokenToFind: string, tokens: Token[]): Token[];\n}\n"},{name:"@taquito/michelson-encoder/dist/types/tokens/token.d.ts",dts:"import { MichelsonV1Expression, MichelsonV1ExpressionExtended } from '@taquito/rpc';\nimport { TokenSchema } from '../schema/types';\nimport { TaquitoError } from '@taquito/core';\n/**\n * @category Error\n * @description Error that indicates a failure when encoding invalid or incorrect data (e.g. if an address is expected but a number is received)\n */\nexport declare abstract class TokenValidationError extends TaquitoError {\n readonly value: any;\n readonly token: Token;\n name: string;\n constructor(value: any, token: Token, baseMessage: string);\n}\nexport type TokenFactory = (val: any, idx: number) => Token;\nexport interface Semantic {\n [key: string]: (value: MichelsonV1Expression, schema: MichelsonV1Expression) => any;\n}\nexport interface SemanticEncoding {\n [key: string]: (value: any, type?: MichelsonV1Expression) => MichelsonV1Expression;\n}\nexport declare abstract class Token {\n protected val: MichelsonV1ExpressionExtended;\n protected idx: number;\n protected fac: TokenFactory;\n constructor(val: MichelsonV1ExpressionExtended, idx: number, fac: TokenFactory);\n protected typeWithoutAnnotations(): Omit;\n annot(): string;\n hasAnnotations(): number | false;\n get tokenVal(): MichelsonV1ExpressionExtended;\n createToken: TokenFactory;\n /**\n * @deprecated ExtractSchema has been deprecated in favor of generateSchema\n *\n */\n abstract ExtractSchema(): any;\n abstract generateSchema(): TokenSchema;\n abstract Execute(val: any, semantics?: Semantic): any;\n abstract Encode(_args: any[]): any;\n abstract EncodeObject(args: any, semantics?: SemanticEncoding): any;\n ExtractSignature(): any[][];\n abstract findAndReturnTokens(tokenToFind: string, tokens: Array): Array;\n}\nexport type BigMapKeyType = string | number | object;\nexport declare abstract class ComparableToken extends Token {\n abstract ToBigMapKey(val: BigMapKeyType): {\n key: {\n [key: string]: string | object[];\n };\n type: {\n prim: string;\n args?: object[];\n };\n };\n abstract ToKey(val: string | MichelsonV1Expression): any;\n compare(o1: string, o2: string): number;\n}\n"},{name:"@taquito/michelson-encoder/dist/types/tokens/tokens.d.ts",dts:"import { PairToken } from './pair';\nimport { NatToken } from './comparable/nat';\nimport { StringToken } from './comparable/string';\nimport { BigMapToken } from './bigmap';\nimport { AddressToken } from './comparable/address';\nimport { MapToken } from './map';\nimport { BoolToken } from './comparable/bool';\nimport { OrToken } from './or';\nimport { ContractToken } from './contract';\nimport { ListToken } from './list';\nimport { MutezToken } from './comparable/mutez';\nimport { BytesToken } from './comparable/bytes';\nimport { OptionToken } from './option';\nimport { TimestampToken } from './comparable/timestamp';\nimport { IntToken } from './comparable/int';\nimport { UnitToken } from './unit';\nimport { KeyToken } from './key';\nimport { KeyHashToken } from './comparable/key_hash';\nimport { SignatureToken } from './signature';\nimport { LambdaToken } from './lambda';\nimport { OperationToken } from './operation';\nimport { SetToken } from './set';\nimport { ChainIDToken } from './chain-id';\nimport { TicketToken } from './ticket';\nimport { TicketDeprecatedToken } from './ticket-deprecated';\nimport { NeverToken } from './never';\nimport { SaplingStateToken } from './sapling-state';\nimport { SaplingTransactionToken } from './sapling-transaction';\nimport { SaplingTransactionDeprecatedToken } from './sapling-transaction-deprecated';\nimport { Bls12381frToken } from './bls12-381-fr';\nimport { Bls12381g1Token } from './bls12-381-g1';\nimport { Bls12381g2Token } from './bls12-381-g2';\nimport { ChestToken } from './chest';\nimport { ChestKeyToken } from './chest-key';\nimport { GlobalConstantToken } from './constant';\nexport declare const tokens: (typeof PairToken | typeof NatToken | typeof StringToken | typeof BigMapToken | typeof AddressToken | typeof MapToken | typeof BoolToken | typeof OrToken | typeof ContractToken | typeof ListToken | typeof MutezToken | typeof BytesToken | typeof OptionToken | typeof TimestampToken | typeof IntToken | typeof UnitToken | typeof KeyToken | typeof KeyHashToken | typeof SignatureToken | typeof LambdaToken | typeof OperationToken | typeof SetToken | typeof ChainIDToken | typeof TicketToken | typeof TicketDeprecatedToken | typeof NeverToken | typeof SaplingStateToken | typeof SaplingTransactionToken | typeof SaplingTransactionDeprecatedToken | typeof Bls12381frToken | typeof Bls12381g1Token | typeof Bls12381g2Token | typeof ChestToken | typeof ChestKeyToken | typeof GlobalConstantToken)[];\n"},{name:"@taquito/michelson-encoder/dist/types/tokens/unit.d.ts",dts:"import { ComparableToken, SemanticEncoding, Token, TokenFactory } from './token';\nimport { BaseTokenSchema } from '../schema/types';\nexport declare class UnitToken extends ComparableToken {\n protected val: {\n prim: string;\n args: any[];\n annots: any[];\n };\n protected idx: number;\n protected fac: TokenFactory;\n static prim: 'unit';\n constructor(val: {\n prim: string;\n args: any[];\n annots: any[];\n }, idx: number, fac: TokenFactory);\n Encode(args: any[]): any;\n EncodeObject(val: any, semantic?: SemanticEncoding): any;\n Execute(_val: {\n prim: string;\n }): symbol;\n /**\n * @deprecated ExtractSchema has been deprecated in favor of generateSchema\n *\n */\n ExtractSchema(): \"unit\";\n generateSchema(): BaseTokenSchema;\n compare(_val1: any, _val2: any): number;\n ToKey(_val: any): symbol;\n ToBigMapKey(_val: any): {\n key: {\n prim: string;\n };\n type: {\n prim: \"unit\";\n };\n };\n findAndReturnTokens(tokenToFind: string, tokens: Token[]): Token[];\n}\n"},{name:"@taquito/michelson-encoder/dist/types/errors.d.ts",dts:"export { ListValidationError } from './tokens/list';\nexport { MapValidationError } from './tokens/map';\nexport { SetValidationError } from './tokens/set';\nexport { BigMapValidationError } from './tokens/bigmap';\nexport { TokenArgumentValidationError, TokenComparisonError } from './tokens/pair';\nexport { OrValidationError } from './tokens/or';\nexport { ChainIDValidationError } from './tokens/chain-id';\nexport { KeyValidationError } from './tokens/key';\nexport { ContractValidationError } from './tokens/contract';\nexport { SignatureValidationError } from './tokens/signature';\nexport { AddressValidationError } from './tokens/comparable/address';\nexport { BytesValidationError } from './tokens/comparable/bytes';\nexport { IntValidationError } from './tokens/comparable/int';\nexport { KeyHashValidationError } from './tokens/comparable/key_hash';\nexport { MutezValidationError } from './tokens/comparable/mutez';\nexport { NatValidationError } from './tokens/comparable/nat';\nexport { EncodeTicketError } from './tokens/ticket';\n"},{name:"@taquito/michelson-encoder/dist/types/michelson-map.d.ts",dts:'import { MichelsonV1Expression } from \'@taquito/rpc\';\nimport { TaquitoError } from \'@taquito/core\';\n/**\n * @category Error\n * @description Error that indicates an invalid map type being passed or used\n */\nexport declare class InvalidMapTypeError extends TaquitoError {\n readonly mapType: any;\n readonly reason: string;\n constructor(mapType: any, reason: string);\n}\ndeclare const michelsonMapTypeSymbol: unique symbol;\nexport type MichelsonMapKey = Array | object | string | boolean | number | null;\n/**\n * @category Error\n * @description Error that indicates a map type mismatch, where an attempt to set a key or value in a Map doesn\'t match the defined type of the Map\n */\nexport declare class MapTypecheckError extends TaquitoError {\n readonly value: any;\n readonly type: any;\n readonly reason: any;\n name: string;\n constructor(value: any, type: any, objectType: \'key\' | \'value\', reason: any);\n}\n/**\n * @description Michelson Map is an abstraction over the michelson native map. It supports complex Pair as key\n */\nexport declare class MichelsonMap {\n private valueMap;\n private keyMap;\n [michelsonMapTypeSymbol]: boolean;\n static isMichelsonMap(obj: any): obj is MichelsonMap;\n private keySchema?;\n private valueSchema?;\n /**\n * @param mapType If specified key and value will be type-checked before being added to the map\n *\n * @example new MichelsonMap({ prim: "map", args: [{prim: "string"}, {prim: "int"}]})\n */\n constructor(mapType?: MichelsonV1Expression);\n setType(mapType: MichelsonV1Expression): void;\n removeType(): void;\n static fromLiteral(obj: {\n [key: string]: any;\n }, mapType?: MichelsonV1Expression): MichelsonMap;\n private typecheckKey;\n private typecheckValue;\n /**\n * @throws {@link MapTypecheckError} when the argument passed does not match the expected schema for value\n */\n private assertTypecheckValue;\n /**\n * @throws {@link MapTypecheckError} when the argument passed does not match the expected schema for key\n */\n private assertTypecheckKey;\n private serializeDeterministically;\n keys(): Generator;\n values(): Generator;\n entries(): Generator<[K, T]>;\n get(key: K): T | undefined;\n /**\n *\n * @description Set a key and a value in the MichelsonMap. If the key already exists, override the current value.\n *\n * @example map.set("myKey", "myValue") // Using a string as key\n *\n * @example map.set({0: "test", 1: "test1"}, "myValue") // Using a pair as key\n *\n * @warn The same key can be represented in multiple ways, depending on the type of the key. This duplicate key situation will cause a runtime error (duplicate key) when sending the map data to the Tezos RPC node.\n *\n * For example, consider a contract with a map whose key is of type boolean. If you set the following values in MichelsonMap: map.set(false, "myValue") and map.set(null, "myValue").\n *\n * You will get two unique entries in the MichelsonMap. These values will both be evaluated as falsy by the MichelsonEncoder and ultimately rejected by the Tezos RPC.\n */\n set(key: K, value: T): void;\n delete(key: K): void;\n has(key: K): boolean;\n clear(): void;\n get size(): number;\n forEach(cb: (value: T, key: K, map: MichelsonMap) => void): void;\n}\nexport {};\n'},{name:"@taquito/michelson-encoder/dist/types/taquito-michelson-encoder.d.ts",dts:"/**\n * @packageDocumentation\n * @module @taquito/michelson-encoder\n */\nexport * from './schema/storage';\nexport * from './schema/parameter';\nexport * from './schema/view-schema';\nexport * from './schema/event-schema';\nexport * from './schema/errors';\nexport * from './schema/types';\nexport { Semantic, SemanticEncoding, BigMapKeyType } from './tokens/token';\nexport * from './errors';\nexport declare const UnitValue: unique symbol;\nexport declare const SaplingStateValue: {};\nexport * from './michelson-map';\nexport { VERSION } from './version';\nexport { Token } from './tokens/token';\n"},{name:"@taquito/michelson-encoder/dist/types/version.d.ts",dts:"export declare const VERSION: {\n commitHash: string;\n version: string;\n};\n"},{name:"@taquito/rpc/dist/types/rpc-client-modules/rpc-cache.d.ts",dts:"import BigNumber from 'bignumber.js';\nimport { RpcClientInterface, RPCOptions } from '../rpc-client-interface';\nimport { BakingRightsQueryArguments, BakingRightsResponse, BalanceResponse, BallotListResponse, BallotsResponse, BigMapGetResponse, BigMapKey, BigMapResponse, BlockHeaderResponse, BlockMetadata, BlockResponse, ConstantsResponse, ContractResponse, CurrentProposalResponse, CurrentQuorumResponse, DelegateResponse, DelegatesResponse, VotingInfoResponse, AttestationRightsQueryArguments, AttestationRightsResponse, EndorsingRightsQueryArguments, EndorsingRightsResponse, EntrypointsResponse, ForgeOperationsParams, ManagerKeyResponse, OperationHash, PackDataParams, PreapplyParams, PreapplyResponse, ProposalsResponse, ProtocolsResponse, RPCRunCodeParam, RPCRunOperationParam, RPCRunScriptViewParam, RPCRunViewParam, RunCodeResult, RunScriptViewResult, RunViewResult, SaplingDiffResponse, ScriptResponse, StorageResponse, UnparsingMode, VotesListingsResponse, VotingPeriodBlockResult, TicketTokenParams, AllTicketBalances, PendingOperationsQueryArguments, PendingOperationsV1, PendingOperationsV2, RPCSimulateOperationParam } from '../types';\ninterface CachedDataInterface {\n [key: string]: {\n handle: () => void;\n response: Promise;\n };\n}\n/***\n * @description RpcClientCache acts as a decorator over the RpcClient instance by caching responses for the period defined by the ttl.\n */\nexport declare class RpcClientCache implements RpcClientInterface {\n private rpcClient;\n private ttl;\n private _cache;\n /**\n *\n * @param rpcClient rpcClient responsible of the interaction with Tezos network through an rpc node\n * @param ttl number representing the time to live (default 1000 milliseconds)\n *\n * @example new RpcClientCache(new RpcClient('https://mainnet.ecadinfra.com/'))\n */\n constructor(rpcClient: RpcClientInterface, ttl?: number);\n getAllCachedData(): CachedDataInterface;\n /**\n * @description Remove all the data in the cache.\n *\n */\n deleteAllCachedData(): void;\n private formatCacheKey;\n private has;\n private get;\n private put;\n private remove;\n private validateAddress;\n private validateContract;\n /**\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Get the block's hash, its unique identifier.\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-hash\n */\n getBlockHash({ block }?: RPCOptions): Promise;\n /**\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description List the ancestors of the given block which, if referred to as the branch in an operation header, are recent enough for that operation to be included in the current block.\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-live-blocks\n */\n getLiveBlocks({ block }?: RPCOptions): Promise;\n /**\n * @param address address from which we want to retrieve the balance\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Access the spendable balance of a contract, excluding frozen bonds\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-context-contracts-contract-id-balance\n */\n getBalance(address: string, { block }?: RPCOptions): Promise;\n /**\n * @param address contract address from which we want to retrieve the storage\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Access the data of the contract.\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-context-contracts-contract-id-storage\n */\n getStorage(address: string, { block }?: {\n block: string;\n }): Promise;\n /**\n * @param address contract address from which we want to retrieve the script\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Access the code and data of the contract.\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-context-contracts-contract-id-script\n */\n getScript(address: string, { block }?: {\n block: string;\n }): Promise;\n /**\n * @param address contract address from which we want to retrieve the script\n * @param unparsingMode default is { unparsing_mode: \"Readable\" }\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Access the script of the contract and normalize it using the requested unparsing mode.\n */\n getNormalizedScript(address: string, unparsingMode?: UnparsingMode, { block }?: {\n block: string;\n }): Promise;\n /**\n * @param address contract address from which we want to retrieve\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Access the complete status of a contract.\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-context-contracts-contract-id\n */\n getContract(address: string, { block }?: {\n block: string;\n }): Promise;\n /**\n * @param address contract address from which we want to retrieve the manager\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Access the manager of an implicit contract\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-context-contracts-contract-id-manager-key\n */\n getManagerKey(address: string, { block }?: {\n block: string;\n }): Promise;\n /**\n * @param address contract address from which we want to retrieve the delegate (baker)\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Access the delegate of a contract, if any\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-context-contracts-contract-id-delegate\n */\n getDelegate(address: string, { block }?: {\n block: string;\n }): Promise;\n /**\n * @deprecated Deprecated in favor of getBigMapKeyByID\n * @param address contract address from which we want to retrieve the big map key\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Access the value associated with a key in the big map storage of the contract.\n * @see https://tezos.gitlab.io/api/rpc.html#post-block-id-context-contracts-contract-id-big-map-get\n */\n getBigMapKey(address: string, key: BigMapKey, { block }?: {\n block: string;\n }): Promise;\n /**\n * @param id Big Map ID\n * @param expr Expression hash to query (A b58check encoded Blake2b hash of the expression (The expression can be packed using the pack_data method))\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Access the value associated with a key in a big map.\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-context-big-maps-big-map-id-script-expr\n */\n getBigMapExpr(id: string, expr: string, { block }?: {\n block: string;\n }): Promise;\n /**\n * @param address delegate address which we want to retrieve\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Everything about a delegate\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-context-delegates-pkh\n */\n getDelegates(address: string, { block }?: {\n block: string;\n }): Promise;\n /**\n * @param address delegate address which we want to retrieve\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Returns the delegate info (e.g. voting power) found in the listings of the current voting period\n * @see https://tezos.gitlab.io/active/rpc.html#get-block-id-context-delegates-pkh-voting-info\n */\n getVotingInfo(address: string, { block }?: {\n block: string;\n }): Promise;\n /**\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description All constants\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-context-constants\n */\n getConstants({ block }?: RPCOptions): Promise;\n /**\n * @param options contains generic configuration for rpc calls to specified block (default to head) and version.\n * @description All the information about a block\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id\n * @example getBlock() will default to `/main/chains/block/head?version=0` which shows { kind: endorsement }\n * @example getBlock({ block: 'head~2', version: 1 }) will return an offset of 2 from head blocks and shows { kind: attestation }\n * @example getBlock({ block: 'BL8fTiWcSxWCjiMVnDkbh6EuhqVPZzgWheJ2dqwrxYRm9AephXh~2' }) will return an offset of 2 blocks from given block hash..\n */\n getBlock({ block }?: RPCOptions): Promise;\n /**\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description The whole block header\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-header\n */\n getBlockHeader({ block }?: RPCOptions): Promise;\n /**\n * @param options contains generic configuration for rpc calls to specified block (default to head) and version\n * @description All the metadata associated to the block\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-metadata\n */\n getBlockMetadata({ block }?: RPCOptions): Promise;\n /**\n * @param args contains optional query arguments (level, cycle, delegate, consensus_key, and max_round)\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Retrieves the list of delegates allowed to bake a block.\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-helpers-baking-rights\n */\n getBakingRights(args?: BakingRightsQueryArguments, { block }?: RPCOptions): Promise;\n /**\n * @param args contains optional query arguments (level, cycle, delegate, and consensus_key)\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Retrieves the delegates allowed to attest a block\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-helpers-endorsing-rights\n */\n getAttestationRights(args?: AttestationRightsQueryArguments, { block }?: RPCOptions): Promise;\n /**\n * @deprecated Deprecated in favor of getAttestationRights\n * @param args contains optional query arguments (level, cycle, delegate, and consensus_key)\n * @param options contains generic configuration for rpc calls\n * @description Retrieves the delegates allowed to endorse a block\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-helpers-endorsing-rights\n */\n getEndorsingRights(args?: EndorsingRightsQueryArguments, { block }?: RPCOptions): Promise;\n /**\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Ballots casted so far during a voting period\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-votes-ballot-list\n */\n getBallotList({ block }?: RPCOptions): Promise;\n /**\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Sum of ballots casted so far during a voting period\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-votes-ballots\n */\n getBallots({ block }?: RPCOptions): Promise;\n /**\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Current proposal under evaluation.\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-votes-current-proposal\n */\n getCurrentProposal({ block, }?: RPCOptions): Promise;\n /**\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Current expected quorum.\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-votes-current-quorum\n */\n getCurrentQuorum({ block, }?: RPCOptions): Promise;\n /**\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description List of delegates with their voting power\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-votes-listings\n */\n getVotesListings({ block, }?: RPCOptions): Promise;\n /**\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description List of proposals with number of supporters\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-votes-proposals\n */\n getProposals({ block }?: RPCOptions): Promise;\n /**\n * @param data operation contents to forge\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Forge an operation returning the unsigned bytes\n * @see https://tezos.gitlab.io/api/rpc.html#post-block-id-helpers-forge-operations\n */\n forgeOperations(data: ForgeOperationsParams, { block }?: RPCOptions): Promise;\n /**\n * @param signedOpBytes signed bytes to inject\n * @description Inject an operation in node and broadcast it and return the ID of the operation\n * @see https://tezos.gitlab.io/api/rpc.html#post-injection-operation\n */\n injectOperation(signedOpBytes: string): Promise;\n /**\n * @param ops Operations to apply\n * @param options contains generic configuration for rpc calls to specified block and version\n * @description Simulate the application of the operations with the context of the given block and return the result of each operation application\n * @see https://tezos.gitlab.io/api/rpc.html#post-block-id-helpers-preapply-operations\n */\n preapplyOperations(ops: PreapplyParams, { block }?: RPCOptions): Promise;\n /**\n * @param contract address of the contract we want to get the entrypoints of\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Return the list of entrypoints of the contract\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-context-contracts-contract-id-entrypoints\n * @version 005_PsBABY5H\n */\n getEntrypoints(contract: string, { block }?: RPCOptions): Promise;\n /**\n * @deprecated Deprecated in favor of simulateOperation\n * @param op Operation to run\n * @param options contains generic configuration for rpc calls to specified block and version\n * @description Run an operation with the context of the given block and without signature checks and return the operation application result, including the consumed gas.\n * @see https://tezos.gitlab.io/api/rpc.html#post-block-id-helpers-scripts-run-operation\n */\n runOperation(op: RPCRunOperationParam, { block }?: RPCOptions): Promise;\n /**\n * @param op Operation to simulate\n * @param options contains generic configuration for rpc calls to specified block and version\n * @description Simulate running an operation at some future moment (based on the number of blocks given in the `latency` argument), and return the operation application result.\n * @see https://gitlab.com/tezos/tezos/-/blob/master/docs/api/oxford-openapi.json\n */\n simulateOperation(op: RPCSimulateOperationParam, { block }?: RPCOptions): Promise;\n /**\n * @param code Code to run\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Run a Michelson script in the current context\n * @see https://tezos.gitlab.io/api/rpc.html#post-block-id-helpers-scripts-run-code\n */\n runCode(code: RPCRunCodeParam, { block }?: RPCOptions): Promise;\n /**\n * @param viewScriptParams Parameters of the script view to run\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Simulate a call to a michelson view\n */\n runScriptView({ unparsing_mode, ...rest }: RPCRunScriptViewParam, { block }?: RPCOptions): Promise;\n /**\n * @param viewParams Parameters of the view to run\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Simulate a call to a view following the TZIP-4 standard. See https://gitlab.com/tzip/tzip/-/blob/master/proposals/tzip-4/tzip-4.md#view-entrypoints.\n */\n runView({ unparsing_mode, ...rest }: RPCRunViewParam, { block }?: RPCOptions): Promise;\n getChainId(): Promise;\n /**\n * @param data Data to pack\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Computes the serialized version of a data expression using the same algorithm as script instruction PACK\n * Note: You should always verify the packed bytes before signing or requesting that they be signed when using the the RPC to pack.\n * This precaution helps protect you and your applications users from RPC nodes that have been compromised.\n * A node that is operated by a bad actor, or compromised by a bad actor could return a fully formed operation that does not correspond to the input provided to the RPC endpoint.\n * A safer solution to pack and sign data would be to use the `packDataBytes` function available in the `@taquito/michel-codec` package.\n * @example packData({ data: { string: \"test\" }, type: { prim: \"string\" } })\n * @see https://tezos.gitlab.io/api/rpc.html#post-block-id-helpers-scripts-pack-data\n */\n packData(data: PackDataParams, { block }?: RPCOptions): Promise<{\n packed: string;\n gas: BigNumber | 'unaccounted' | undefined;\n }>;\n /**\n *\n * @description Return rpc root url\n */\n getRpcUrl(): string;\n /**\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Returns the voting period (index, kind, starting position) and related information (position, remaining) of the interrogated block\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-votes-current-period\n */\n getCurrentPeriod({ block, }?: RPCOptions): Promise;\n /**\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Returns the voting period (index, kind, starting position) and related information (position, remaining) of the next block.Useful to craft operations that will be valid in the next block\n * @example getSuccessorPeriod() will default to successor voting period for /main/chains/block/head.\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-votes-successor-period\n */\n getSuccessorPeriod({ block, }?: RPCOptions): Promise;\n /**\n * @param id Sapling state ID\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Returns the root and a diff of a state starting from an optional offset which is zero by default\n * @see https://tezos.gitlab.io/active/rpc.html#get-block-id-context-sapling-sapling-state-id-get-diff\n */\n getSaplingDiffById(id: string, { block }?: {\n block: string;\n }): Promise;\n /**\n * @param contract address of the contract we want to get the sapling diff\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Returns the root and a diff of a state starting from an optional offset which is zero by default\n * @see https://tezos.gitlab.io/active/rpc.html#get-block-id-context-contracts-contract-id-single-sapling-get-diff\n */\n getSaplingDiffByContract(contract: string, { block }?: {\n block: string;\n }): Promise;\n /**\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description get current and next protocol\n * @see https://tezos.gitlab.io/active/rpc.html#get-block-id-protocols\n */\n getProtocols({ block }?: {\n block: string;\n }): Promise;\n /**\n * @param contract address of the contract we want to retrieve storage information of\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Access the used storage space of the contract\n * @see https://tezos.gitlab.io/lima/rpc.html#get-block-id-context-contracts-contract-id-storage\n */\n getStorageUsedSpace(contract: string, { block }?: {\n block: string;\n }): Promise;\n /**\n * @param contract address of the contract we want to retrieve storage information of\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n = * @description Access the paid storage space of the contract\n * @see https://tezos.gitlab.io/lima/rpc.html#get-block-id-context-contracts-contract-id-storage\n */\n getStoragePaidSpace(contract: string, { block }?: {\n block: string;\n }): Promise;\n /**\n * @param contract implicit or originated address we want to retrieve ticket balance of\n * @param ticket object to specify a ticket by ticketer, content type and content\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Access the contract's balance of ticket with specified ticketer, content type, and content.\n * @example ticket { ticketer: 'address', content_type: { prim: \"string\" }, content: { string: 'ticket1' } }\n * @see https://tezos.gitlab.io/protocols/016_mumbai.html#rpc-changes\n */\n getTicketBalance(contract: string, ticket: TicketTokenParams, { block }?: RPCOptions): Promise;\n /**\n * @param contract originated address we want to retrieve ticket balances of\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Access the complete list of tickets owned by the given contract by scanning the contract's storage.\n * @see https://tezos.gitlab.io/protocols/016_mumbai.html#rpc-changes\n */\n getAllTicketBalances(contract: string, { block }?: RPCOptions): Promise;\n /**\n * @description List the prevalidated operations in mempool (accessibility of mempool depends on each rpc endpoint)\n * @param args has 5 optional properties. We support version 1 as default will output { applied: { kind: endorsement} } version 2 will output { validated: { kind: attestation} }. The rest of the properties is to filter pending operations response\n * @default args { version: '1', applied: true, refused: true, outdated, true, branchRefused: true, branchDelayed: true, validationPass: undefined }\n * @see https://tezos.gitlab.io/CHANGES.html?highlight=pending_operations#id4\n */\n getPendingOperations(args?: PendingOperationsQueryArguments): Promise;\n}\nexport {};\n"},{name:"@taquito/rpc/dist/types/utils/utils.d.ts",dts:"/**\n * Casts object/array items to BigNumber\n * @param data input object or array\n * @param keys keys for processing or all items if not defined\n *\n */\nexport declare function castToBigNumber(data: any, keys?: any): object;\n/**\n * Casts object/array BigNumber items to strings for readability\n * @param data input object or array\n * @param keys keys for processing or all items if not defined\n *\n */\nexport declare function castToString(data: any, keys?: any): object;\n"},{name:"@taquito/rpc/dist/types/opkind.d.ts",dts:'export declare enum OpKind {\n ORIGINATION = "origination",\n DELEGATION = "delegation",\n REVEAL = "reveal",\n TRANSACTION = "transaction",\n ACTIVATION = "activate_account",\n ATTESTATION = "attestation",\n ENDORSEMENT = "endorsement",\n PREATTESTATION = "preattestation",\n PREENDORSEMENT = "preendorsement",\n SET_DEPOSITS_LIMIT = "set_deposits_limit",\n DOUBLE_PREATTESTATION_EVIDENCE = "double_preattestation_evidence",\n DOUBLE_PREENDORSEMENT_EVIDENCE = "double_preendorsement_evidence",\n ATTESTATION_WITH_SLOT = "attestation_with_slot",\n ENDORSEMENT_WITH_SLOT = "endorsement_with_slot",\n SEED_NONCE_REVELATION = "seed_nonce_revelation",\n DOUBLE_ATTESTATION_EVIDENCE = "double_attestation_evidence",\n DOUBLE_ENDORSEMENT_EVIDENCE = "double_endorsement_evidence",\n DOUBLE_BAKING_EVIDENCE = "double_baking_evidence",\n PROPOSALS = "proposals",\n BALLOT = "ballot",\n FAILING_NOOP = "failing_noop",\n REGISTER_GLOBAL_CONSTANT = "register_global_constant",\n TRANSFER_TICKET = "transfer_ticket",\n INCREASE_PAID_STORAGE = "increase_paid_storage",\n UPDATE_CONSENSUS_KEY = "update_consensus_key",\n DRAIN_DELEGATE = "drain_delegate",\n VDF_REVELATION = "vdf_revelation",\n EVENT = "event",\n TICKET_UPDATES = "ticket_updates",\n SMART_ROLLUP_ORIGINATE = "smart_rollup_originate",\n SMART_ROLLUP_ADD_MESSAGES = "smart_rollup_add_messages",\n SMART_ROLLUP_EXECUTE_OUTBOX_MESSAGE = "smart_rollup_execute_outbox_message",\n SMART_ROLLUP_PUBLISH = "smart_rollup_publish",\n SMART_ROLLUP_CEMENT = "smart_rollup_cement",\n SMART_ROLLUP_RECOVER_BOND = "smart_rollup_recover_bond",\n SMART_ROLLUP_REFUTE = "smart_rollup_refute",\n SMART_ROLLUP_TIMEOUT = "smart_rollup_timeout"\n}\n'},{name:"@taquito/rpc/dist/types/rpc-client-interface.d.ts",dts:'import { BigNumber } from \'bignumber.js\';\nimport { BakingRightsQueryArguments, BakingRightsResponse, BalanceResponse, BallotListResponse, BallotsResponse, BigMapGetResponse, BigMapKey, BigMapResponse, BlockHeaderResponse, BlockMetadata, BlockResponse, ConstantsResponse, ContractResponse, CurrentProposalResponse, CurrentQuorumResponse, DelegateResponse, DelegatesResponse, AttestationRightsQueryArguments, AttestationRightsResponse, EndorsingRightsQueryArguments, EndorsingRightsResponse, EntrypointsResponse, ForgeOperationsParams, ManagerKeyResponse, OperationHash, PackDataParams, PreapplyParams, PreapplyResponse, ProposalsResponse, ProtocolsResponse, RPCRunCodeParam, RPCRunOperationParam, RPCRunScriptViewParam, RPCRunViewParam, RunCodeResult, RunScriptViewResult, RunViewResult, SaplingDiffResponse, ScriptResponse, StorageResponse, UnparsingMode, VotesListingsResponse, VotingInfoResponse, VotingPeriodBlockResult, TicketTokenParams, AllTicketBalances, PendingOperationsV1, PendingOperationsV2, PendingOperationsQueryArguments, RPCSimulateOperationParam } from \'./types\';\nexport interface RPCOptions {\n block: string;\n version?: 0 | 1 | \'0\' | \'1\';\n}\nexport declare const defaultChain = "main";\nexport declare const defaultRPCOptions: RPCOptions;\nexport interface RpcClientInterface {\n getBlockHash(options?: RPCOptions): Promise;\n getLiveBlocks(options?: RPCOptions): Promise;\n getBalance(address: string, options?: RPCOptions): Promise;\n getStorage(address: string, options?: RPCOptions): Promise;\n getScript(address: string, options?: RPCOptions): Promise;\n getNormalizedScript(address: string, unparsingMode?: UnparsingMode, options?: RPCOptions): Promise;\n getContract(address: string, options?: RPCOptions): Promise;\n getManagerKey(address: string, options?: RPCOptions): Promise;\n getDelegate(address: string, options?: RPCOptions): Promise;\n getBigMapKey(address: string, key: BigMapKey, options?: RPCOptions): Promise;\n getBigMapExpr(id: string, expr: string, options?: RPCOptions): Promise;\n getDelegates(address: string, options?: RPCOptions): Promise;\n getVotingInfo(address: string, options?: RPCOptions): Promise;\n getConstants(options?: RPCOptions): Promise;\n getBlock(options?: RPCOptions): Promise;\n getBlockHeader(options?: RPCOptions): Promise;\n getBlockMetadata(options?: RPCOptions): Promise;\n getBakingRights(args: BakingRightsQueryArguments, options?: RPCOptions): Promise;\n getAttestationRights(args: AttestationRightsQueryArguments, options?: RPCOptions): Promise;\n getEndorsingRights(args: EndorsingRightsQueryArguments, options?: RPCOptions): Promise;\n getBallotList(options?: RPCOptions): Promise;\n getBallots(options?: RPCOptions): Promise;\n getCurrentProposal(options?: RPCOptions): Promise;\n getCurrentQuorum(options?: RPCOptions): Promise;\n getVotesListings(options?: RPCOptions): Promise;\n getProposals(options?: RPCOptions): Promise;\n forgeOperations(data: ForgeOperationsParams, options?: RPCOptions): Promise;\n injectOperation(signedOpBytes: string): Promise;\n preapplyOperations(ops: PreapplyParams, options?: RPCOptions): Promise;\n getEntrypoints(contract: string, options?: RPCOptions): Promise;\n runOperation(op: RPCRunOperationParam, options?: RPCOptions): Promise;\n simulateOperation(op: RPCSimulateOperationParam, options?: RPCOptions): Promise;\n runCode(code: RPCRunCodeParam, options?: RPCOptions): Promise;\n runScriptView(viewScriptParams: RPCRunScriptViewParam, options?: RPCOptions): Promise;\n runView(viewParams: RPCRunViewParam, options?: RPCOptions): Promise;\n getChainId(): Promise;\n packData(data: PackDataParams, options?: RPCOptions): Promise<{\n packed: string;\n gas: BigNumber | \'unaccounted\' | undefined;\n }>;\n getRpcUrl(): string;\n getCurrentPeriod(options?: RPCOptions): Promise;\n getSuccessorPeriod(options?: RPCOptions): Promise;\n getSaplingDiffById(id: string, options?: RPCOptions): Promise;\n getSaplingDiffByContract(contract: string, options?: RPCOptions): Promise;\n getProtocols(options?: RPCOptions): Promise;\n getStorageUsedSpace(contract: string, options?: RPCOptions): Promise;\n getStoragePaidSpace(contract: string, options?: RPCOptions): Promise;\n getTicketBalance(contract: string, ticket: TicketTokenParams, options?: RPCOptions): Promise;\n getAllTicketBalances(contract: string, options?: RPCOptions): Promise;\n getPendingOperations(args: PendingOperationsQueryArguments): Promise;\n}\nexport declare enum RPCMethodName {\n GET_BAKING_RIGHTS = "getBakingRights",\n GET_BALLOTS = "getBallots",\n GET_BALLOT_LIST = "getBallotList",\n GET_BIG_MAP_KEY = "getBigMapKey",\n GET_BIG_MAP_EXPR = "getBigMapExpr",\n GET_BLOCK_HASH = "getBlockHash",\n GET_BLOCK = "getBlock",\n GET_BLOCK_HEADER = "getBlockHeader",\n GET_BLOCK_METADATA = "getBlockMetadata",\n GET_BALANCE = "getBalance",\n GET_CHAIN_ID = "getChainId",\n GET_CONSTANTS = "getConstants",\n GET_CONTRACT = "getContract",\n GET_CURRENT_PERIOD = "getCurrentPeriod",\n GET_CURRENT_PROPOSAL = "getCurrentProposal",\n GET_CURRENT_QUORUM = "getCurrentQuorum",\n GET_DELEGATE = "getDelegate",\n GET_DELEGATES = "getDelegates",\n GET_VOTING_INFO = "getVotingInfo",\n GET_ATTESTATION_RIGHTS = "getAttestationRights",\n GET_ENDORSING_RIGHTS = "getEndorsingRights",\n GET_ENTRYPOINTS = "getEntrypoints",\n GET_LIVE_BLOCKS = "getLiveBlocks",\n GET_MANAGER_KEY = "getManagerKey",\n GET_NORMALIZED_SCRIPT = "getNormalizedScript",\n GET_PROPOSALS = "getProposals",\n GET_PROTOCOLS = "getProtocols",\n GET_SAPLING_DIFF_BY_CONTRACT = "getSaplingDiffByContract",\n GET_SAPLING_DIFF_BY_ID = "getSaplingDiffById",\n GET_SCRIPT = "getScript",\n GET_STORAGE = "getStorage",\n GET_SUCCESSOR_PERIOD = "getSuccessorPeriod",\n GET_VOTES_LISTINGS = "getVotesListings",\n PACK_DATA = "packData",\n GET_STORAGE_USED_SPACE = "getStorageUsedSpace",\n GET_STORAGE_PAID_SPACE = "getStoragePaidSpace",\n GET_TICKET_BALANCE = "getTicketBalance",\n GET_ALL_TICKET_BALANCES = "getAllTicketBalances",\n GET_PENDING_OPERATIONS = "getPendingOperations"\n}\n'},{name:"@taquito/rpc/dist/types/taquito-rpc.d.ts",dts:"/**\n * @packageDocumentation\n * @module @taquito/rpc\n */\nimport { HttpBackend } from '@taquito/http-utils';\nimport BigNumber from 'bignumber.js';\nimport { RpcClientInterface, RPCOptions } from './rpc-client-interface';\nimport { BakingRightsQueryArguments, BakingRightsResponse, BalanceResponse, BallotListResponse, BallotsResponse, BigMapGetResponse, BigMapKey, BigMapResponse, BlockHeaderResponse, BlockMetadata, BlockResponse, ConstantsResponse, ContractResponse, CurrentProposalResponse, CurrentQuorumResponse, DelegateResponse, DelegatesResponse, VotingInfoResponse, AttestationRightsQueryArguments, AttestationRightsResponse, EndorsingRightsQueryArguments, EndorsingRightsResponse, EntrypointsResponse, ForgeOperationsParams, ManagerKeyResponse, OperationHash, PackDataParams, PreapplyParams, PreapplyResponse, ProposalsResponse, ProtocolsResponse, RPCRunCodeParam, RPCRunOperationParam, RPCRunViewParam, RPCRunScriptViewParam, RunCodeResult, RunViewResult, RunScriptViewResult, SaplingDiffResponse, ScriptResponse, StorageResponse, UnparsingMode, VotesListingsResponse, VotingPeriodBlockResult, TicketTokenParams, AllTicketBalances, PendingOperationsQueryArguments, PendingOperationsV1, PendingOperationsV2, RPCSimulateOperationParam } from './types';\nexport { castToBigNumber } from './utils/utils';\nexport { RPCOptions, defaultChain, defaultRPCOptions, RpcClientInterface, } from './rpc-client-interface';\nexport { RpcClientCache } from './rpc-client-modules/rpc-cache';\nexport * from './types';\nexport { OpKind } from './opkind';\nexport { VERSION } from './version';\n/***\n * @description RpcClient allows interaction with Tezos network through an rpc node\n */\nexport declare class RpcClient implements RpcClientInterface {\n protected url: string;\n protected chain: string;\n protected httpBackend: HttpBackend;\n /**\n *\n * @param url rpc root url\n * @param chain chain (default main)\n * @param httpBackend Http backend that issue http request.\n * You can override it by providing your own if you which to hook in the request/response\n *\n * @example new RpcClient('https://mainnet.ecadinfra.com/', 'main') this will use https://mainnet.ecadinfra.com//chains/main\n */\n constructor(url: string, chain?: string, httpBackend?: HttpBackend);\n protected createURL(path: string): string;\n private validateAddress;\n private validateContract;\n /**\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Get the block's hash, its unique identifier.\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-hash\n */\n getBlockHash({ block }?: RPCOptions): Promise;\n /**\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description List the ancestors of the given block which, if referred to as the branch in an operation header, are recent enough for that operation to be included in the current block.\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-live-blocks\n */\n getLiveBlocks({ block }?: RPCOptions): Promise;\n /**\n * @param address address from which we want to retrieve the balance\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Access the spendable balance of a contract, excluding frozen bonds\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-context-contracts-contract-id-balance\n */\n getBalance(address: string, { block }?: RPCOptions): Promise;\n /**\n * @param address contract address from which we want to retrieve the storage\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Access the data of the contract.\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-context-contracts-contract-id-storage\n */\n getStorage(address: string, { block }?: {\n block: string;\n }): Promise;\n /**\n * @param address contract address from which we want to retrieve the script\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Access the code and data of the contract.\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-context-contracts-contract-id-script\n */\n getScript(address: string, { block }?: {\n block: string;\n }): Promise;\n /**\n * @param address contract address from which we want to retrieve the script\n * @param unparsingMode default is { unparsing_mode: \"Readable\" }\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Access the script of the contract and normalize it using the requested unparsing mode.\n */\n getNormalizedScript(address: string, unparsingMode?: UnparsingMode, { block }?: {\n block: string;\n }): Promise;\n /**\n * @param address contract address from which we want to retrieve\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Access the complete status of a contract.\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-context-contracts-contract-id\n */\n getContract(address: string, { block }?: {\n block: string;\n }): Promise;\n /**\n * @param address contract address from which we want to retrieve the manager\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Access the manager of an implicit contract\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-context-contracts-contract-id-manager-key\n */\n getManagerKey(address: string, { block }?: {\n block: string;\n }): Promise;\n /**\n * @param address contract address from which we want to retrieve the delegate (baker)\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Access the delegate of a contract, if any\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-context-contracts-contract-id-delegate\n */\n getDelegate(address: string, { block }?: {\n block: string;\n }): Promise;\n /**\n * @deprecated Deprecated in favor of getBigMapKeyByID\n * @param address contract address from which we want to retrieve the big map key\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Access the value associated with a key in the big map storage of the contract.\n * @see https://tezos.gitlab.io/api/rpc.html#post-block-id-context-contracts-contract-id-big-map-get\n */\n getBigMapKey(address: string, key: BigMapKey, { block }?: {\n block: string;\n }): Promise;\n /**\n * @param id Big Map ID\n * @param expr Expression hash to query (A b58check encoded Blake2b hash of the expression (The expression can be packed using the pack_data method))\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Access the value associated with a key in a big map.\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-context-big-maps-big-map-id-script-expr\n */\n getBigMapExpr(id: string, expr: string, { block }?: {\n block: string;\n }): Promise;\n /**\n * @param address delegate address which we want to retrieve\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Everything about a delegate\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-context-delegates-pkh\n */\n getDelegates(address: string, { block }?: {\n block: string;\n }): Promise;\n /**\n * @param address delegate address which we want to retrieve\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Returns the delegate info (e.g. voting power) found in the listings of the current voting period\n * @see https://tezos.gitlab.io/active/rpc.html#get-block-id-context-delegates-pkh-voting-info\n */\n getVotingInfo(address: string, { block }?: {\n block: string;\n }): Promise;\n /**\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description All constants\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-context-constants\n */\n getConstants({ block }?: RPCOptions): Promise;\n /**\n * @param options contains generic configuration for rpc calls to specified block (default to head) and version.\n * @description All the information about a block\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id\n * @example getBlock() will default to `/main/chains/block/head?version=0` which shows { kind: endorsement }\n * @example getBlock({ block: 'head~2', version: 1 }) will return an offset of 2 from head blocks and shows { kind: attestation }\n * @example getBlock({ block: 'BL8fTiWcSxWCjiMVnDkbh6EuhqVPZzgWheJ2dqwrxYRm9AephXh~2' }) will return an offset of 2 blocks from given block hash..\n */\n getBlock({ block, version }?: RPCOptions): Promise;\n /**\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description The whole block header\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-header\n */\n getBlockHeader({ block }?: RPCOptions): Promise;\n /**\n * @param options contains generic configuration for rpc calls to specified block (default to head) and version\n * @description All the metadata associated to the block\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-metadata\n */\n getBlockMetadata({ block, version, }?: RPCOptions): Promise;\n /**\n * @param args contains optional query arguments (level, cycle, delegate, consensus_key, and max_round)\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Retrieves the list of delegates allowed to bake a block.\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-helpers-baking-rights\n */\n getBakingRights(args?: BakingRightsQueryArguments, { block }?: RPCOptions): Promise;\n /**\n * @param args contains optional query arguments (level, cycle, delegate, and consensus_key)\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Retrieves the delegates allowed to attest a block\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-helpers-endorsing-rights\n */\n getAttestationRights(args?: AttestationRightsQueryArguments, { block }?: RPCOptions): Promise;\n /**\n * @deprecated Deprecated in favor of getAttestationRights\n * @param args contains optional query arguments (level, cycle, delegate, and consensus_key)\n * @param options contains generic configuration for rpc calls\n * @description Retrieves the delegates allowed to endorse a block\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-helpers-endorsing-rights\n */\n getEndorsingRights(args?: EndorsingRightsQueryArguments, { block }?: RPCOptions): Promise;\n /**\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Ballots casted so far during a voting period\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-votes-ballot-list\n */\n getBallotList({ block }?: RPCOptions): Promise;\n /**\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Sum of ballots casted so far during a voting period\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-votes-ballots\n */\n getBallots({ block }?: RPCOptions): Promise;\n /**\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Current proposal under evaluation.\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-votes-current-proposal\n */\n getCurrentProposal({ block, }?: RPCOptions): Promise;\n /**\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Current expected quorum.\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-votes-current-quorum\n */\n getCurrentQuorum({ block, }?: RPCOptions): Promise;\n /**\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description List of delegates with their voting power\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-votes-listings\n */\n getVotesListings({ block, }?: RPCOptions): Promise;\n /**\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description List of proposals with number of supporters\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-votes-proposals\n */\n getProposals({ block }?: RPCOptions): Promise;\n /**\n * @param data operation contents to forge\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Forge an operation returning the unsigned bytes\n * @see https://tezos.gitlab.io/api/rpc.html#post-block-id-helpers-forge-operations\n */\n forgeOperations(data: ForgeOperationsParams, { block }?: RPCOptions): Promise;\n /**\n * @param signedOpBytes signed bytes to inject\n * @description Inject an operation in node and broadcast it and return the ID of the operation\n * @see https://tezos.gitlab.io/api/rpc.html#post-injection-operation\n */\n injectOperation(signedOpBytes: string): Promise;\n /**\n * @param ops Operations to apply\n * @param options contains generic configuration for rpc calls to specified block and version\n * @description Simulate the application of the operations with the context of the given block and return the result of each operation application\n * @see https://tezos.gitlab.io/api/rpc.html#post-block-id-helpers-preapply-operations\n */\n preapplyOperations(ops: PreapplyParams, { block, version }?: RPCOptions): Promise;\n /**\n * @param contract address of the contract we want to get the entrypoints of\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Return the list of entrypoints of the contract\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-context-contracts-contract-id-entrypoints\n * @version 005_PsBABY5H\n */\n getEntrypoints(contract: string, { block }?: RPCOptions): Promise;\n /**\n * @deprecated Deprecated in favor of simulateOperation\n * @param op Operation to run\n * @param options contains generic configuration for rpc calls to specified block and version\n * @description Run an operation with the context of the given block and without signature checks and return the operation application result, including the consumed gas.\n * @see https://tezos.gitlab.io/api/rpc.html#post-block-id-helpers-scripts-run-operation\n */\n runOperation(op: RPCRunOperationParam, { block, version }?: RPCOptions): Promise;\n /**\n * @param op Operation to simulate\n * @param options contains generic configuration for rpc calls to specified block and version\n * @description Simulate running an operation at some future moment (based on the number of blocks given in the `latency` argument), and return the operation application result.\n * @see https://gitlab.com/tezos/tezos/-/blob/master/docs/api/oxford-openapi.json\n */\n simulateOperation(op: RPCSimulateOperationParam, { block, version }?: RPCOptions): Promise;\n /**\n * @param code Code to run\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Run a Michelson script in the current context\n * @see https://tezos.gitlab.io/api/rpc.html#post-block-id-helpers-scripts-run-code\n */\n runCode(code: RPCRunCodeParam, { block }?: RPCOptions): Promise;\n /**\n * @param viewScriptParams Parameters of the script view to run\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Simulate a call to a michelson view\n */\n runScriptView({ unparsing_mode, ...rest }: RPCRunScriptViewParam, { block }?: RPCOptions): Promise;\n /**\n * @param viewParams Parameters of the view to run\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Simulate a call to a view following the TZIP-4 standard. See https://gitlab.com/tzip/tzip/-/blob/master/proposals/tzip-4/tzip-4.md#view-entrypoints.\n */\n runView({ unparsing_mode, ...rest }: RPCRunViewParam, { block }?: RPCOptions): Promise;\n getChainId(): Promise;\n /**\n * @param data Data to pack\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Computes the serialized version of a data expression using the same algorithm as script instruction PACK\n * Note: You should always verify the packed bytes before signing or requesting that they be signed when using the the RPC to pack.\n * This precaution helps protect you and your applications users from RPC nodes that have been compromised.\n * A node that is operated by a bad actor, or compromised by a bad actor could return a fully formed operation that does not correspond to the input provided to the RPC endpoint.\n * A safer solution to pack and sign data would be to use the `packDataBytes` function available in the `@taquito/michel-codec` package.\n * @example packData({ data: { string: \"test\" }, type: { prim: \"string\" } })\n * @see https://tezos.gitlab.io/api/rpc.html#post-block-id-helpers-scripts-pack-data\n */\n packData(data: PackDataParams, { block }?: RPCOptions): Promise<{\n packed: string;\n gas: BigNumber | \"unaccounted\" | undefined;\n }>;\n /**\n *\n * @description Return rpc root url\n */\n getRpcUrl(): string;\n /**\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Returns the voting period (index, kind, starting position) and related information (position, remaining) of the interrogated block\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-votes-current-period\n */\n getCurrentPeriod({ block, }?: RPCOptions): Promise;\n /**\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Returns the voting period (index, kind, starting position) and related information (position, remaining) of the next block.Useful to craft operations that will be valid in the next block\n * @example getSuccessorPeriod() will default to successor voting period for /main/chains/block/head.\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-votes-successor-period\n */\n getSuccessorPeriod({ block, }?: RPCOptions): Promise;\n /**\n * @param id Sapling state ID\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Returns the root and a diff of a state starting from an optional offset which is zero by default\n * @see https://tezos.gitlab.io/active/rpc.html#get-block-id-context-sapling-sapling-state-id-get-diff\n */\n getSaplingDiffById(id: string, { block }?: {\n block: string;\n }): Promise;\n /**\n * @param contract address of the contract we want to get the sapling diff\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Returns the root and a diff of a state starting from an optional offset which is zero by default\n * @see https://tezos.gitlab.io/active/rpc.html#get-block-id-context-contracts-contract-id-single-sapling-get-diff\n */\n getSaplingDiffByContract(contract: string, { block }?: {\n block: string;\n }): Promise;\n /**\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description get current and next protocol\n * @see https://tezos.gitlab.io/active/rpc.html#get-block-id-protocols\n */\n getProtocols({ block }?: {\n block: string;\n }): Promise;\n /**\n * @param contract address of the contract we want to retrieve storage information of\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Access the used storage space of the contract\n * @see https://tezos.gitlab.io/lima/rpc.html#get-block-id-context-contracts-contract-id-storage\n */\n getStorageUsedSpace(contract: string, { block }?: {\n block: string;\n }): Promise;\n /**\n * @param contract address of the contract we want to retrieve storage information of\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n = * @description Access the paid storage space of the contract\n * @see https://tezos.gitlab.io/lima/rpc.html#get-block-id-context-contracts-contract-id-storage\n */\n getStoragePaidSpace(contract: string, { block }?: {\n block: string;\n }): Promise;\n /**\n * @param contract implicit or originated address we want to retrieve ticket balance of\n * @param ticket object to specify a ticket by ticketer, content type and content\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Access the contract's balance of ticket with specified ticketer, content type, and content.\n * @example ticket { ticketer: 'address', content_type: { prim: \"string\" }, content: { string: 'ticket1' } }\n * @see https://tezos.gitlab.io/protocols/016_mumbai.html#rpc-changes\n */\n getTicketBalance(contract: string, ticket: TicketTokenParams, { block }?: {\n block: string;\n }): Promise;\n /**\n * @param contract originated address we want to retrieve ticket balances of\n * @param options contains generic configuration for rpc calls to specified block (default to head)\n * @description Access the complete list of tickets owned by the given contract by scanning the contract's storage.\n * @see https://tezos.gitlab.io/protocols/016_mumbai.html#rpc-changes\n */\n getAllTicketBalances(contract: string, { block }?: {\n block: string;\n }): Promise;\n /**\n * @description List the prevalidated operations in mempool (accessibility of mempool depends on each rpc endpoint)\n * @param args has 5 optional properties. We support version 1 as default will output { applied: { kind: endorsement} } version 2 will output { validated: { kind: attestation} }. The rest of the properties is to filter pending operations response\n * @default args { version: '1', applied: true, refused: true, outdated, true, branchRefused: true, branchDelayed: true, validationPass: undefined }\n * @see https://tezos.gitlab.io/CHANGES.html?highlight=pending_operations#id4\n */\n getPendingOperations(args?: PendingOperationsQueryArguments): Promise;\n}\n"},{name:"@taquito/rpc/dist/types/types.d.ts",dts:"import BigNumber from 'bignumber.js';\nimport { OpKind } from './opkind';\nexport type BalanceResponse = BigNumber;\nexport type StorageResponse = ScriptedContracts['storage'];\nexport type ScriptResponse = ScriptedContracts;\nexport type BigMapGetResponse = MichelsonV1Expression;\nexport type ManagerResponse = {\n manager: string;\n};\nexport type ManagerKeyResponse = string | {\n key: string;\n};\nexport type DelegateResponse = string | null;\nexport type OperationHash = string;\ninterface INodeExtender {\n length: string;\n segment: string;\n proof: string;\n}\ntype OtherEltsInner = {\n value: any;\n} | {\n inode_extender: INodeExtender;\n};\nexport type OtherElts = {\n node: [string, {\n value: string;\n } | {\n node: string;\n }][];\n} | {\n other_elts: OtherEltsInner;\n};\nexport interface Inode {\n length: string;\n proofs: [string | null, string | null];\n}\nexport interface DelegatesResponse {\n full_balance?: BigNumber;\n current_frozen_deposits?: BigNumber;\n staking_balance: BigNumber;\n frozen_deposits_limit?: BigNumber;\n delegated_contracts: string[];\n delegated_balance: BigNumber;\n deactivated: boolean;\n grace_period: number;\n total_delegated_stake?: BigNumber;\n staking_denominator?: BigNumber;\n voting_power?: BigNumber;\n current_ballot?: BallotVote;\n current_proposals?: string[];\n remaining_proposals?: number;\n active_consensus_key?: string;\n pending_consensus_keys?: PendingConsensusKey[];\n balance?: BigNumber;\n frozen_deposits?: BigNumber;\n frozen_balance?: BigNumber;\n frozen_balance_by_cycle?: Frozenbalancebycycle[];\n}\nexport type PendingConsensusKey = {\n cycle: number;\n pkh: string;\n};\nexport type VotingInfoResponse = {\n voting_power?: string;\n current_ballot?: BallotListResponseEnum;\n current_proposals?: string[];\n remaining_proposals?: number;\n};\ninterface Frozenbalancebycycle {\n cycle: number;\n deposit?: BigNumber;\n deposits?: BigNumber;\n fees: BigNumber;\n rewards: BigNumber;\n}\nexport type BigMapKey = {\n key: {\n [key: string]: string | object[];\n };\n type: {\n prim: string;\n args?: object[];\n };\n};\nexport type LiquidityBakingToggleVotes = 'on' | 'off' | 'pass';\nexport type AdaptiveIssuanceVote = 'on' | 'off' | 'pass';\nexport interface BlockFullHeader {\n level: number;\n proto: number;\n predecessor: string;\n timestamp: TimeStampMixed;\n validation_pass: number;\n operations_hash: string;\n fitness: string[];\n context: string;\n payload_hash?: string;\n payload_round?: number;\n priority?: number;\n proof_of_work_nonce: string;\n seed_nonce_hash?: string;\n liquidity_baking_toggle_vote?: LiquidityBakingToggleVotes;\n adaptive_issuance_vote?: AdaptiveIssuanceVote;\n liquidity_baking_escape_vote?: boolean | LiquidityBakingToggleVotes;\n signature: string;\n}\nexport type InlinedAttestationKindEnum = OpKind.ATTESTATION;\nexport type InlinedEndorsementKindEnum = OpKind.ENDORSEMENT;\nexport interface InlinedAttestationContents {\n kind: InlinedAttestationKindEnum;\n slot?: number;\n round?: number;\n block_payload_hash?: string;\n level: number;\n}\nexport interface InlinedEndorsementContents {\n kind: InlinedEndorsementKindEnum;\n slot?: number;\n round?: number;\n block_payload_hash?: string;\n level: number;\n}\nexport interface InlinedPreattestationContents {\n kind: OpKind.PREATTESTATION;\n slot: number;\n level: number;\n round: number;\n block_payload_hash: string;\n}\nexport interface InlinedPreEndorsementContents {\n kind: OpKind.PREENDORSEMENT;\n slot: number;\n level: number;\n round: number;\n block_payload_hash: string;\n}\nexport interface InlinedAttestation {\n branch: string;\n operations: InlinedAttestationContents;\n signature?: string;\n}\nexport interface InlinedEndorsement {\n branch: string;\n operations: InlinedEndorsementContents;\n signature?: string;\n}\nexport interface InlinedPreattestation {\n branch: string;\n operations: InlinedPreattestationContents;\n signature?: string;\n}\nexport interface InlinedPreEndorsement {\n branch: string;\n operations: InlinedPreEndorsementContents;\n signature?: string;\n}\nexport type BallotVote = 'nay' | 'yay' | 'pass';\nexport interface OperationContentsAttestation {\n kind: OpKind.ATTESTATION;\n level: number;\n slot?: number;\n round?: number;\n block_payload_hash?: string;\n}\nexport interface OperationContentsEndorsement {\n kind: OpKind.ENDORSEMENT;\n level: number;\n slot?: number;\n round?: number;\n block_payload_hash?: string;\n}\nexport interface OperationContentsPreattestation {\n kind: OpKind.PREATTESTATION;\n slot: number;\n level: number;\n round: number;\n block_payload_hash: string;\n}\nexport interface OperationContentsPreEndorsement {\n kind: OpKind.PREENDORSEMENT;\n slot: number;\n level: number;\n round: number;\n block_payload_hash: string;\n}\nexport interface OperationContentsDoublePreattestation {\n kind: OpKind.DOUBLE_PREATTESTATION_EVIDENCE;\n op1: InlinedPreattestation;\n op2: InlinedPreattestation;\n}\nexport interface OperationContentsDoublePreEndorsement {\n kind: OpKind.DOUBLE_PREENDORSEMENT_EVIDENCE;\n op1: InlinedPreEndorsement;\n op2: InlinedPreEndorsement;\n}\nexport interface OperationContentsSetDepositsLimit {\n kind: OpKind.SET_DEPOSITS_LIMIT;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n limit?: string;\n}\nexport interface OperationContentsAttestationWithSlot {\n kind: OpKind.ATTESTATION_WITH_SLOT;\n endorsement: InlinedAttestation;\n slot: number;\n}\nexport interface OperationContentsEndorsementWithSlot {\n kind: OpKind.ENDORSEMENT_WITH_SLOT;\n endorsement: InlinedEndorsement;\n slot: number;\n}\nexport interface OperationContentsRevelation {\n kind: OpKind.SEED_NONCE_REVELATION;\n level: number;\n nonce: string;\n}\nexport interface OperationContentsVdfRevelation {\n kind: OpKind.VDF_REVELATION;\n solution: string[];\n}\nexport interface OperationContentsDoubleAttestation {\n kind: OpKind.DOUBLE_ATTESTATION_EVIDENCE;\n op1: InlinedAttestation;\n op2: InlinedAttestation;\n slot?: number;\n}\nexport interface OperationContentsDoubleEndorsement {\n kind: OpKind.DOUBLE_ENDORSEMENT_EVIDENCE;\n op1: InlinedEndorsement;\n op2: InlinedEndorsement;\n slot?: number;\n}\nexport interface OperationContentsDoubleBaking {\n kind: OpKind.DOUBLE_BAKING_EVIDENCE;\n bh1: BlockFullHeader;\n bh2: BlockFullHeader;\n}\nexport interface OperationContentsActivateAccount {\n kind: OpKind.ACTIVATION;\n pkh: string;\n secret: string;\n}\nexport interface OperationContentsFailingNoop {\n kind: OpKind.FAILING_NOOP;\n arbitrary: string;\n}\nexport interface OperationContentsProposals {\n kind: OpKind.PROPOSALS;\n source: string;\n period: number;\n proposals: string[];\n}\nexport interface OperationContentsBallot {\n kind: OpKind.BALLOT;\n source: string;\n period: number;\n proposal: string;\n ballot: BallotVote;\n}\nexport interface OperationContentsReveal {\n kind: OpKind.REVEAL;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n public_key: string;\n}\nexport interface OperationContentsTransaction {\n kind: OpKind.TRANSACTION;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n amount: string;\n destination: string;\n parameters?: TransactionOperationParameter;\n}\nexport interface OperationContentsOrigination {\n kind: OpKind.ORIGINATION;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n balance: string;\n delegate?: string;\n script?: ScriptedContracts;\n}\nexport interface OperationContentsDelegation {\n kind: OpKind.DELEGATION;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n delegate?: string;\n}\nexport interface OperationContentsRegisterGlobalConstant {\n kind: OpKind.REGISTER_GLOBAL_CONSTANT;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n value: MichelsonV1Expression;\n}\nexport interface OperationContentsTransferTicket {\n kind: OpKind.TRANSFER_TICKET;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n ticket_contents: MichelsonV1Expression;\n ticket_ty: MichelsonV1Expression;\n ticket_ticketer: string;\n ticket_amount: string;\n destination: string;\n entrypoint: string;\n}\nexport interface OperationContentsUpdateConsensusKey {\n kind: OpKind.UPDATE_CONSENSUS_KEY;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n pk: string;\n}\nexport interface OperationContentsDrainDelegate {\n kind: OpKind.DRAIN_DELEGATE;\n consensus_key: string;\n delegate: string;\n destination: string;\n}\nexport interface OperationContentsIncreasePaidStorage {\n kind: OpKind.INCREASE_PAID_STORAGE;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n amount: string;\n destination: string;\n}\nexport interface OperationContentsSmartRollupOriginate {\n kind: OpKind.SMART_ROLLUP_ORIGINATE;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n pvm_kind: PvmKind;\n kernel: string;\n parameters_ty: MichelsonV1Expression;\n whitelist?: string[];\n}\nexport interface OperationContentsSmartRollupAddMessages {\n kind: OpKind.SMART_ROLLUP_ADD_MESSAGES;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n message: string[];\n}\nexport interface OperationContentsSmartRollupExecuteOutboxMessage {\n kind: OpKind.SMART_ROLLUP_EXECUTE_OUTBOX_MESSAGE;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n rollup: string;\n cemented_commitment: string;\n output_proof: string;\n}\nexport interface OperationContentsSmartRollupPublish {\n kind: OpKind.SMART_ROLLUP_PUBLISH;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n rollup: string;\n commitment: SmartRollupPublishCommitment;\n}\nexport interface OperationContentsSmartRollupCement {\n kind: OpKind.SMART_ROLLUP_CEMENT;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n rollup: string;\n commitment: string;\n}\nexport interface OperationContentsSmartRollupRefute {\n kind: OpKind.SMART_ROLLUP_REFUTE;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n rollup: string;\n opponent: string;\n refutation: SmartRollupRefutation;\n}\nexport interface OperationContentsSmartRollupRecoverBond {\n kind: OpKind.SMART_ROLLUP_RECOVER_BOND;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n rollup: string;\n staker: string;\n}\nexport interface OperationContentsSmartRollupTimeout {\n kind: OpKind.SMART_ROLLUP_TIMEOUT;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n rollup: string;\n stakers: SmartRollupTimeoutStakers;\n}\nexport type OperationContents = OperationContentsAttestation | OperationContentsPreattestation | OperationContentsDoublePreattestation | OperationContentsEndorsement | OperationContentsPreEndorsement | OperationContentsDoublePreEndorsement | OperationContentsRevelation | OperationContentsVdfRevelation | OperationContentsDoubleAttestation | OperationContentsDoubleEndorsement | OperationContentsDoubleBaking | OperationContentsActivateAccount | OperationContentsProposals | OperationContentsBallot | OperationContentsReveal | OperationContentsTransaction | OperationContentsOrigination | OperationContentsDelegation | OperationContentsAttestationWithSlot | OperationContentsEndorsementWithSlot | OperationContentsFailingNoop | OperationContentsRegisterGlobalConstant | OperationContentsSetDepositsLimit | OperationContentsTransferTicket | OperationContentsUpdateConsensusKey | OperationContentsDrainDelegate | OperationContentsIncreasePaidStorage | OperationContentsSmartRollupOriginate | OperationContentsSmartRollupAddMessages | OperationContentsSmartRollupExecuteOutboxMessage | OperationContentsSmartRollupPublish | OperationContentsSmartRollupCement | OperationContentsSmartRollupRefute | OperationContentsSmartRollupRecoverBond | OperationContentsSmartRollupTimeout;\nexport interface OperationContentsAndResultMetadataExtended1 {\n balance_updates?: OperationMetadataBalanceUpdates[];\n delegate: string;\n consensus_power: number;\n consensus_key: string;\n}\nexport interface OperationContentsAndResultMetadataExtended0 {\n balance_updates?: OperationMetadataBalanceUpdates[];\n delegate: string;\n slots?: number[];\n endorsement_power?: number;\n consensus_key?: string;\n}\nexport interface OperationContentsAndResultMetadataPreattestation {\n balance_updates?: OperationMetadataBalanceUpdates[];\n delegate: string;\n consensus_power: number;\n consensus_key?: string;\n}\nexport interface OperationContentsAndResultMetadataPreEndorsement {\n balance_updates?: OperationMetadataBalanceUpdates[];\n delegate: string;\n preendorsement_power: number;\n consensus_key?: string;\n}\nexport interface OperationContentsAndResultMetadataReveal {\n balance_updates?: OperationMetadataBalanceUpdates[];\n operation_result: OperationResultReveal;\n internal_operation_results?: InternalOperationResult[];\n}\nexport interface OperationContentsAndResultMetadataTransaction {\n balance_updates?: OperationMetadataBalanceUpdates[];\n operation_result: OperationResultTransaction;\n internal_operation_results?: InternalOperationResult[];\n}\nexport interface OperationContentsAndResultMetadataDelegation {\n balance_updates?: OperationMetadataBalanceUpdates[];\n operation_result: OperationResultDelegation;\n internal_operation_results?: InternalOperationResult[];\n}\nexport interface OperationContentsAndResultMetadataRegisterGlobalConstant {\n balance_updates?: OperationMetadataBalanceUpdates[];\n operation_result: OperationResultRegisterGlobalConstant;\n internal_operation_results?: InternalOperationResult[];\n}\nexport interface OperationContentsAndResultMetadataSetDepositsLimit {\n balance_updates?: OperationMetadataBalanceUpdates[];\n operation_result: OperationResultSetDepositsLimit;\n internal_operation_results?: InternalOperationResult[];\n}\nexport interface OperationContentsAndResultMetadata {\n balance_updates?: OperationMetadataBalanceUpdates[];\n}\nexport interface OperationContentsAndResultMetadataTransferTicket {\n balance_updates?: OperationMetadataBalanceUpdates[];\n operation_result: OperationResultTransferTicket;\n internal_operation_results?: InternalOperationResult[];\n}\nexport interface OperationContentsAndResultMetadataIncreasePaidStorage {\n balance_updates?: OperationMetadataBalanceUpdates[];\n operation_result: OperationResultIncreasePaidStorage;\n internal_operation_results?: InternalOperationResult[];\n}\nexport interface OperationContentsAndResultMetadataUpdateConsensusKey {\n balance_updates?: OperationMetadataBalanceUpdates[];\n operation_result: OperationResultUpdateConsensusKey;\n internal_operation_results?: InternalOperationResult[];\n}\nexport interface OperationContentsAndResultMetadataDrainDelegate {\n balance_updates?: OperationMetadataBalanceUpdates[];\n allocated_destination_contract?: boolean;\n}\nexport interface OperationContentsAndResultMetadataSmartRollupOriginate {\n balance_updates?: OperationMetadataBalanceUpdates[];\n operation_result: OperationResultSmartRollupOriginate;\n internal_operation_results?: InternalOperationResult[];\n}\nexport interface OperationContentsAndResultMetadataSmartRollupAddMessages {\n balance_updates?: OperationMetadataBalanceUpdates[];\n operation_result: OperationResultSmartRollupAddMessages;\n internal_operation_results?: InternalOperationResult[];\n}\nexport interface OperationContentsAndResultMetadataSmartRollupExecuteOutboxMessage {\n balance_updates?: OperationMetadataBalanceUpdates[];\n operation_result: OperationResultSmartRollupExecuteOutboxMessage;\n internal_operation_results?: InternalOperationResult[];\n}\nexport interface OperationContentsAndResultMetadataSmartRollupPublish {\n balance_updates?: OperationMetadataBalanceUpdates[];\n operation_result: OperationResultSmartRollupPublish;\n internal_operation_results?: InternalOperationResult[];\n}\nexport interface OperationContentsAndResultMetadataSmartRollupCement {\n balance_updates?: OperationMetadataBalanceUpdates[];\n operation_result: OperationResultSmartRollupCement;\n internal_operation_results?: InternalOperationResult[];\n}\nexport interface OperationContentsAndResultMetadataSmartRollupRefute {\n balance_updates?: OperationMetadataBalanceUpdates[];\n operation_result: OperationResultSmartRollupRefute;\n internal_operation_results?: InternalOperationResult[];\n}\nexport interface OperationContentsAndResultMetadataSmartRollupRecoverBond {\n balance_updates?: OperationMetadataBalanceUpdates[];\n operation_result: OperationResultSmartRollupRecoverBond;\n internal_operation_results?: InternalOperationResult[];\n}\nexport interface OperationContentsAndResultMetadataSmartRollupTimeout {\n balance_updates?: OperationMetadataBalanceUpdates[];\n operation_result: OperationResultSmartRollupTimeout;\n internal_operation_results?: InternalOperationResult[];\n}\nexport interface OperationContentsAndResultAttestation {\n kind: OpKind.ATTESTATION;\n block_payload_hash?: string;\n level: number;\n round?: number;\n slot?: number;\n metadata: OperationContentsAndResultMetadataExtended1;\n}\nexport interface OperationContentsAndResultEndorsement {\n kind: OpKind.ENDORSEMENT;\n block_payload_hash?: string;\n level: number;\n round?: number;\n slot?: number;\n metadata: OperationContentsAndResultMetadataExtended0;\n}\nexport interface OperationContentsAndResultPreattestation {\n kind: OpKind.PREATTESTATION;\n slot: number;\n level: number;\n round: number;\n block_payload_hash: string;\n metadata: OperationContentsAndResultMetadataPreattestation;\n}\nexport interface OperationContentsAndResultPreEndorsement {\n kind: OpKind.PREENDORSEMENT;\n slot: number;\n level: number;\n round: number;\n block_payload_hash: string;\n metadata: OperationContentsAndResultMetadataPreEndorsement;\n}\nexport interface OperationContentsAndResultDoublePreattestation {\n kind: OpKind.DOUBLE_PREATTESTATION_EVIDENCE;\n op1: InlinedPreattestation;\n op2: InlinedPreattestation;\n metadata: OperationContentsAndResultMetadata;\n}\nexport interface OperationContentsAndResultAttestationWithSlot {\n kind: OpKind.ATTESTATION_WITH_SLOT;\n endorsement: InlinedAttestation;\n slot: number;\n metadata: OperationContentsAndResultMetadataExtended1;\n}\nexport interface OperationContentsAndResultDoublePreEndorsement {\n kind: OpKind.DOUBLE_PREENDORSEMENT_EVIDENCE;\n op1: InlinedPreEndorsement;\n op2: InlinedPreEndorsement;\n metadata: OperationContentsAndResultMetadata;\n}\nexport interface OperationContentsAndResultEndorsementWithSlot {\n kind: OpKind.ENDORSEMENT_WITH_SLOT;\n endorsement: InlinedEndorsement;\n slot: number;\n metadata: OperationContentsAndResultMetadataExtended0;\n}\nexport interface OperationContentsAndResultRevelation {\n kind: OpKind.SEED_NONCE_REVELATION;\n level: number;\n nonce: string;\n metadata: OperationContentsAndResultMetadata;\n}\nexport interface OperationContentsAndResultDoubleAttestation {\n kind: OpKind.DOUBLE_ATTESTATION_EVIDENCE;\n op1: InlinedAttestation;\n op2: InlinedAttestation;\n slot?: number;\n metadata: OperationContentsAndResultMetadata;\n}\nexport interface OperationContentsAndResultDoubleEndorsement {\n kind: OpKind.DOUBLE_ENDORSEMENT_EVIDENCE;\n op1: InlinedEndorsement;\n op2: InlinedEndorsement;\n slot?: number;\n metadata: OperationContentsAndResultMetadata;\n}\nexport interface OperationContentsAndResultDoubleBaking {\n kind: OpKind.DOUBLE_BAKING_EVIDENCE;\n bh1: BlockFullHeader;\n bh2: BlockFullHeader;\n metadata: OperationContentsAndResultMetadata;\n}\nexport interface OperationContentsAndResultActivateAccount {\n kind: OpKind.ACTIVATION;\n pkh: string;\n secret: string;\n metadata: OperationContentsAndResultMetadata;\n}\nexport interface OperationContentsAndResultProposals {\n kind: OpKind.PROPOSALS;\n source: string;\n period: number;\n proposals: string[];\n}\nexport interface OperationContentsAndResultBallot {\n kind: OpKind.BALLOT;\n source: string;\n period: number;\n proposal: string;\n ballot: BallotVote;\n}\nexport interface OperationContentsAndResultReveal {\n kind: OpKind.REVEAL;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n public_key: string;\n metadata: OperationContentsAndResultMetadataReveal;\n}\nexport interface OperationContentsAndResultTransaction {\n kind: OpKind.TRANSACTION;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n amount: string;\n destination: string;\n parameters?: TransactionOperationParameter;\n metadata: OperationContentsAndResultMetadataTransaction;\n}\nexport interface OperationContentsAndResultDelegation {\n kind: OpKind.DELEGATION;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n delegate?: string;\n metadata: OperationContentsAndResultMetadataDelegation;\n}\nexport interface OperationContentsAndResultRegisterGlobalConstant {\n kind: OpKind.REGISTER_GLOBAL_CONSTANT;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n value: MichelsonV1Expression;\n metadata: OperationContentsAndResultMetadataRegisterGlobalConstant;\n}\nexport interface OperationContentsAndResultSetDepositsLimit {\n kind: OpKind.SET_DEPOSITS_LIMIT;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n limit?: string;\n metadata: OperationContentsAndResultMetadataSetDepositsLimit;\n}\nexport interface OperationContentsAndResultTransferTicket {\n kind: OpKind.TRANSFER_TICKET;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n ticket_contents: MichelsonV1Expression;\n ticket_ty: MichelsonV1Expression;\n ticket_ticketer: string;\n ticket_amount: string;\n destination: string;\n entrypoint: string;\n metadata: OperationContentsAndResultMetadataTransferTicket;\n}\nexport interface OperationContentsAndResultUpdateConsensusKey {\n kind: OpKind.UPDATE_CONSENSUS_KEY;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n pk: string;\n metadata: OperationContentsAndResultMetadataUpdateConsensusKey;\n}\nexport interface OperationContentsAndResultDrainDelegate {\n kind: OpKind.DRAIN_DELEGATE;\n consensus_key: string;\n delegate: string;\n destination: string;\n metadata: OperationContentsAndResultMetadataDrainDelegate;\n}\nexport interface OperationContentsAndResultIncreasePaidStorage {\n kind: OpKind.INCREASE_PAID_STORAGE;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n amount: string;\n destination: string;\n metadata: OperationContentsAndResultMetadataIncreasePaidStorage;\n}\nexport interface OperationContentsAndResultVdfRevelation {\n kind: OpKind.VDF_REVELATION;\n solution: string[];\n metadata: OperationContentsAndResultMetadata;\n}\nexport interface OperationContentsAndResultSmartRollupOriginate {\n kind: OpKind.SMART_ROLLUP_ORIGINATE;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n pvm_kind: PvmKind;\n kernel: string;\n parameters_ty: MichelsonV1Expression;\n whitelist?: string[];\n metadata: OperationContentsAndResultMetadataSmartRollupOriginate;\n}\nexport interface OperationContentsAndResultSmartRollupAddMessages {\n kind: OpKind.SMART_ROLLUP_ADD_MESSAGES;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n message: string[];\n metadata: OperationContentsAndResultMetadataSmartRollupAddMessages;\n}\nexport interface OperationContentsAndResultSmartRollupExecuteOutboxMessage {\n kind: OpKind.SMART_ROLLUP_EXECUTE_OUTBOX_MESSAGE;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n rollup: string;\n cemented_commitment: string;\n output_proof: string;\n metadata: OperationContentsAndResultMetadataSmartRollupExecuteOutboxMessage;\n}\nexport interface OperationContentsAndResultSmartRollupPublish {\n kind: OpKind.SMART_ROLLUP_PUBLISH;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n rollup: string;\n commitment: SmartRollupPublishCommitment;\n metadata: OperationContentsAndResultMetadataSmartRollupPublish;\n}\nexport interface OperationContentsAndResultSmartRollupCement {\n kind: OpKind.SMART_ROLLUP_CEMENT;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n rollup: string;\n metadata: OperationContentsAndResultMetadataSmartRollupCement;\n}\nexport interface OperationContentsAndResultSmartRollupRefute {\n kind: OpKind.SMART_ROLLUP_REFUTE;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n rollup: string;\n opponent: string;\n refutation: SmartRollupRefutation;\n metadata: OperationContentsAndResultMetadataSmartRollupRefute;\n}\nexport interface OperationContentsAndResultSmartRollupRecoverBond {\n kind: OpKind.SMART_ROLLUP_RECOVER_BOND;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n rollup: string;\n staker: string;\n metadata: OperationContentsAndResultMetadataSmartRollupRecoverBond;\n}\nexport interface OperationContentsAndResultSmartRollupTimeout {\n kind: OpKind.SMART_ROLLUP_TIMEOUT;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n rollup: string;\n stakers: SmartRollupTimeoutStakers;\n metadata: OperationContentsAndResultMetadataSmartRollupTimeout;\n}\nexport type OperationContentsAndResult = OperationContentsAndResultAttestation | OperationContentsAndResultPreattestation | OperationContentsAndResultDoublePreattestation | OperationContentsAndResultEndorsement | OperationContentsAndResultPreEndorsement | OperationContentsAndResultDoublePreEndorsement | OperationContentsAndResultRevelation | OperationContentsAndResultDoubleEndorsement | OperationContentsAndResultDoubleAttestation | OperationContentsAndResultDoubleBaking | OperationContentsAndResultActivateAccount | OperationContentsAndResultProposals | OperationContentsAndResultBallot | OperationContentsAndResultReveal | OperationContentsAndResultTransaction | OperationContentsAndResultOrigination | OperationContentsAndResultDelegation | OperationContentsAndResultAttestationWithSlot | OperationContentsAndResultEndorsementWithSlot | OperationContentsAndResultRegisterGlobalConstant | OperationContentsAndResultSetDepositsLimit | OperationContentsAndResultTransferTicket | OperationContentsAndResultIncreasePaidStorage | OperationContentsAndResultUpdateConsensusKey | OperationContentsAndResultDrainDelegate | OperationContentsAndResultVdfRevelation | OperationContentsAndResultSmartRollupOriginate | OperationContentsAndResultSmartRollupAddMessages | OperationContentsAndResultSmartRollupExecuteOutboxMessage | OperationContentsAndResultSmartRollupPublish | OperationContentsAndResultSmartRollupCement | OperationContentsAndResultSmartRollupRefute | OperationContentsAndResultSmartRollupRecoverBond | OperationContentsAndResultSmartRollupTimeout;\nexport type OperationContentsAndResultWithFee = OperationContentsAndResultTransaction | OperationContentsAndResultOrigination | OperationContentsAndResultDelegation | OperationContentsAndResultReveal | OperationContentsAndResultRegisterGlobalConstant | OperationContentsAndResultSetDepositsLimit | OperationContentsAndResultUpdateConsensusKey | OperationContentsAndResultIncreasePaidStorage | OperationContentsAndResultSmartRollupAddMessages | OperationContentsAndResultSmartRollupOriginate;\nexport declare enum OPERATION_METADATA {\n TOO_LARGE = \"too large\"\n}\nexport interface OperationEntry {\n protocol: string;\n chain_id: string;\n hash: string;\n branch: string;\n contents: (OperationContents | OperationContentsAndResult)[];\n signature?: string;\n metadata?: OPERATION_METADATA;\n}\nexport interface BlockResponse {\n protocol: string;\n chain_id: string;\n hash: string;\n header: BlockFullHeader;\n metadata: BlockMetadata;\n operations: OperationEntry[][];\n}\nexport type BakingRightsArgumentsDelegate = string | string[];\nexport type BakingRightsArgumentsCycle = number | number[];\nexport type BakingRightsArgumentsLevel = number | number[];\nexport type BakingRightsQueryArguments = BakingRightsQueryArgumentsBase;\nexport interface BakingRightsQueryArgumentsBase {\n level?: BakingRightsArgumentsLevel;\n cycle?: BakingRightsArgumentsCycle;\n delegate?: BakingRightsArgumentsDelegate;\n consensus_key?: string;\n max_priority?: number;\n max_round?: string;\n all?: null;\n}\nexport interface BakingRightsResponseItem {\n level: number;\n delegate: string;\n priority?: number;\n round?: number;\n estimated_time?: Date;\n consensus_key?: string;\n}\nexport type BakingRightsResponse = BakingRightsResponseItem[];\nexport type AttestationRightsArgumentsDelegate = string | string[];\nexport type AttestationRightsArgumentsCycle = number | number[];\nexport type AttestationRightsArgumentsLevel = number | number[];\nexport interface AttestationRightsQueryArguments {\n level?: AttestationRightsArgumentsLevel;\n cycle?: AttestationRightsArgumentsCycle;\n delegate?: AttestationRightsArgumentsDelegate;\n consensus_key?: string;\n}\nexport interface AttestationRightsResponseItemDelegates {\n delegate: string;\n first_slot: number;\n attestation_power: number;\n consensus_key: string;\n}\nexport interface AttestationRightsResponseItem {\n level: number;\n delegate?: string;\n delegates?: AttestationRightsResponseItemDelegates[];\n slots?: number[];\n estimated_time?: Date;\n}\nexport type AttestationRightsResponse = AttestationRightsResponseItem[];\nexport type EndorsingRightsArgumentsDelegate = string | string[];\nexport type EndorsingRightsArgumentsCycle = number | number[];\nexport type EndorsingRightsArgumentsLevel = number | number[];\nexport interface EndorsingRightsQueryArguments {\n level?: EndorsingRightsArgumentsLevel;\n cycle?: EndorsingRightsArgumentsCycle;\n delegate?: EndorsingRightsArgumentsDelegate;\n consensus_key?: string;\n}\nexport interface EndorsingRightsResponseItemDelegates {\n delegate: string;\n first_slot: number;\n endorsing_power: number;\n consensus_key?: string;\n}\nexport interface EndorsingRightsResponseItem {\n level: number;\n delegate?: string;\n delegates?: EndorsingRightsResponseItemDelegates[];\n slots?: number[];\n estimated_time?: Date;\n}\nexport type EndorsingRightsResponse = EndorsingRightsResponseItem[];\nexport type BallotListResponseEnum = 'nay' | 'yay' | 'pass';\nexport interface BallotListResponseItem {\n pkh: string;\n ballot: BallotListResponseEnum;\n}\nexport type BallotListResponse = BallotListResponseItem[];\nexport interface BallotsResponse {\n yay: BigNumber;\n nay: BigNumber;\n pass: BigNumber;\n}\nexport type PeriodKindResponse = 'proposal' | 'exploration' | 'cooldown' | 'promotion' | 'adoption' | 'testing_vote' | 'testing' | 'promotion_vote';\nexport type CurrentProposalResponse = string | null;\nexport type CurrentQuorumResponse = number;\nexport interface VotesListingsResponseItem {\n pkh: string;\n rolls?: number;\n voting_power?: BigNumber;\n}\nexport type VotesListingsResponse = VotesListingsResponseItem[];\nexport type ProposalsResponseItem = [string, BigNumber];\nexport type ProposalsResponse = ProposalsResponseItem[];\nexport type HeaderContentEnum = 'activate' | 'activate_testchain';\nexport interface HeaderContent {\n command: HeaderContentEnum;\n hash: string;\n fitness: string[];\n protocol_parameters: string;\n}\nexport interface BlockHeaderResponse {\n protocol: string;\n chain_id: string;\n hash: string;\n level: number;\n proto: number;\n predecessor: string;\n timestamp: string;\n validation_pass: number;\n operations_hash: string;\n fitness: string[];\n context: string;\n content: HeaderContent;\n payload_hash?: string;\n payload_round?: number;\n priority?: number;\n proof_of_work_nonce: string;\n liquidity_baking_escape_vote?: boolean | LiquidityBakingToggleVotes;\n signature: string;\n}\nexport interface PackDataParams {\n data: MichelsonV1Expression;\n type: MichelsonV1Expression;\n gas?: BigNumber;\n}\nexport interface TicketTokenParams {\n ticketer: string;\n content_type: MichelsonV1Expression;\n content: MichelsonV1Expression;\n}\nexport interface TicketBalance {\n ticketer: string;\n content_type: MichelsonV1Expression;\n content: MichelsonV1Expression;\n amount: string;\n}\nexport type AllTicketBalances = TicketBalance[];\nexport type HexString = string;\nexport interface PackDataResponse {\n packed: HexString;\n gas?: BigNumber | 'unaccounted';\n}\nexport type BigMapResponse = MichelsonV1Expression | MichelsonV1Expression[];\nexport type SaplingDiffResponse = {\n root: SaplingTransactionCommitmentHash;\n commitments_and_ciphertexts: CommitmentsAndCiphertexts[];\n nullifiers: string[];\n};\nexport type SaplingTransactionCommitmentHash = string;\nexport type PreapplyParams = OperationObject[];\nexport type PreapplyResponse = {\n contents: OperationContentsAndResult[];\n};\nexport type ForgeOperationsParams = Pick;\nexport type TimeStampMixed = Date | string;\nexport type BalanceUpdateKindEnum = MetadataBalanceUpdatesKindEnum;\nexport type BalanceUpdateCategoryEnum = MetadataBalanceUpdatesCategoryEnum;\nexport interface MichelsonV1ExpressionBase {\n int?: string;\n string?: string;\n bytes?: string;\n}\nexport interface MichelsonV1ExpressionExtended {\n prim: string;\n args?: MichelsonV1Expression[];\n annots?: string[];\n}\nexport type MichelsonV1Expression = MichelsonV1ExpressionBase | MichelsonV1ExpressionExtended | MichelsonV1Expression[];\nexport interface ScriptedContracts {\n code: MichelsonV1Expression[];\n storage: MichelsonV1Expression;\n}\nexport type BondId = {\n smart_rollup?: never;\n tx_rollup: string;\n} | {\n smart_rollup: string;\n tx_rollup?: never;\n};\nexport interface OperationBalanceUpdatesItem {\n kind: BalanceUpdateKindEnum;\n category?: BalanceUpdateCategoryEnum;\n delegate?: string;\n cycle?: number;\n contract?: string;\n change: string;\n origin?: MetadataBalanceUpdatesOriginEnum;\n participation?: boolean;\n revelation?: boolean;\n committer?: string;\n bond_id?: BondId;\n}\nexport type OperationBalanceUpdates = OperationBalanceUpdatesItem[];\nexport interface OperationObject {\n branch?: string;\n contents?: OperationContents[];\n protocol?: string;\n signature?: string;\n}\nexport type InternalOperationResultKindEnum = OpKind.REVEAL | OpKind.TRANSACTION | OpKind.ORIGINATION | OpKind.DELEGATION | OpKind.EVENT;\nexport type SuccessfulManagerOperationResultKindEnum = OpKind.REVEAL | OpKind.TRANSACTION | OpKind.ORIGINATION | OpKind.DELEGATION;\nexport type InternalOperationResultEnum = OperationResultReveal | OperationResultTransaction | OperationResultDelegation | OperationResultOrigination | OperationResultEvent;\nexport interface OperationResultTransferTicket {\n status: OperationResultStatusEnum;\n balance_updates?: OperationBalanceUpdates;\n ticket_updates?: TicketUpdates[];\n consumed_milligas?: string;\n paid_storage_size_diff?: string;\n errors?: TezosGenericOperationError[];\n}\nexport interface OperationResultIncreasePaidStorage {\n status: OperationResultStatusEnum;\n balance_updates?: OperationBalanceUpdates;\n consumed_milligas?: string;\n errors?: TezosGenericOperationError[];\n}\nexport interface OperationResultUpdateConsensusKey {\n status: OperationResultStatusEnum;\n consumed_milligas?: string;\n errors?: TezosGenericOperationError[];\n}\nexport interface OperationResultDelegation {\n status: OperationResultStatusEnum;\n consumed_gas?: string;\n errors?: TezosGenericOperationError[];\n consumed_milligas?: string;\n}\nexport interface OperationResultSetDepositsLimit {\n status: OperationResultStatusEnum;\n consumed_gas?: string;\n errors?: TezosGenericOperationError[];\n consumed_milligas?: string;\n}\nexport interface OperationResultRegisterGlobalConstant {\n status: OperationResultStatusEnum;\n balance_updates?: OperationBalanceUpdates;\n consumed_gas?: string;\n storage_size?: string;\n global_address?: string;\n errors?: TezosGenericOperationError[];\n consumed_milligas?: string;\n}\nexport interface OperationResultSmartRollupOriginate {\n status: OperationResultStatusEnum;\n balance_updates?: OperationBalanceUpdates;\n address?: string;\n genesis_commitment_hash?: string;\n consumed_milligas?: string;\n size?: string;\n errors?: TezosGenericOperationError[];\n}\nexport interface OperationResultSmartRollupAddMessages {\n status: OperationResultStatusEnum;\n consumed_milligas?: string;\n errors?: TezosGenericOperationError[];\n}\nexport interface OperationResultSmartRollupExecuteOutboxMessage {\n status: OperationResultStatusEnum;\n balance_updates?: OperationBalanceUpdates;\n ticket_updates?: TicketUpdates[];\n consumed_milligas?: string;\n paid_storage_size_diff?: string;\n errors?: TezosGenericOperationError[];\n}\nexport interface OperationResultSmartRollupPublish {\n status: OperationResultStatusEnum;\n consumed_milligas?: string;\n staked_hash?: string;\n published_at_level?: number;\n balance_updates?: OperationBalanceUpdates;\n errors?: TezosGenericOperationError[];\n}\nexport interface OperationResultSmartRollupCement {\n status: OperationResultStatusEnum;\n consumed_milligas?: string;\n inbox_level?: number;\n commitment_hash?: string;\n errors?: TezosGenericOperationError[];\n}\nexport interface OperationResultSmartRollupRefute {\n status: OperationResultStatusEnum;\n consumed_milligas?: string;\n game_status?: SmartRollupGameStatus;\n balance_updates?: OperationBalanceUpdates;\n errors?: TezosGenericOperationError[];\n}\nexport interface OperationResultSmartRollupRecoverBond {\n status: OperationResultStatusEnum;\n balance_updates?: OperationBalanceUpdates;\n consumed_milligas?: string;\n errors?: TezosGenericOperationError[];\n}\nexport interface OperationResultSmartRollupTimeout {\n status: OperationResultStatusEnum;\n consumed_milligas?: string;\n game_status?: SmartRollupGameStatus;\n balance_updates?: OperationBalanceUpdates;\n errors?: TezosGenericOperationError[];\n}\nexport interface ContractBigMapDiffItem {\n key_hash?: string;\n key?: MichelsonV1Expression;\n value?: MichelsonV1Expression;\n action?: DiffActionEnum;\n big_map?: string;\n source_big_map?: string;\n destination_big_map?: string;\n key_type?: MichelsonV1Expression;\n value_type?: MichelsonV1Expression;\n}\nexport type ContractBigMapDiff = ContractBigMapDiffItem[];\nexport interface TezosGenericOperationError {\n kind: string;\n id: string;\n delegate?: string;\n}\nexport interface TicketUpdates {\n ticket_token: {\n ticketer: string;\n content_type: MichelsonV1Expression;\n content: MichelsonV1Expression;\n };\n updates: {\n account: string;\n amount: string;\n }[];\n}\nexport type TicketReceipt = TicketUpdates;\nexport type BatchOperationResult = OperationResultTransaction | OperationResultReveal | OperationResultDelegation | OperationResultOrigination | OperationResultIncreasePaidStorage | OperationResultRegisterGlobalConstant | OperationResultTransferTicket | OperationResultSmartRollupAddMessages | OperationResultSmartRollupOriginate | OperationResultUpdateConsensusKey;\nexport type OperationResult = OperationResultOrigination | OperationResultTransaction | OperationResultReveal | OperationResultDelegation | OperationResultIncreasePaidStorage | OperationResultRegisterGlobalConstant | OperationResultTransferTicket | OperationResultUpdateConsensusKey | OperationResultSmartRollupOriginate | OperationResultSmartRollupAddMessages | OperationResultSetDepositsLimit | OperationResultSmartRollupPublish | OperationResultSmartRollupCement | OperationResultSmartRollupRefute | OperationResultSmartRollupRecoverBond | OperationResultSmartRollupTimeout | OperationResultSmartRollupExecuteOutboxMessage;\nexport interface OperationResultTransaction {\n status: OperationResultStatusEnum;\n storage?: MichelsonV1Expression;\n big_map_diff?: ContractBigMapDiff;\n balance_updates?: OperationBalanceUpdates;\n ticket_updates?: TicketUpdates[];\n ticket_receipt?: TicketReceipt[];\n originated_contracts?: string[];\n consumed_gas?: string;\n storage_size?: string;\n paid_storage_size_diff?: string;\n allocated_destination_contract?: boolean;\n errors?: TezosGenericOperationError[];\n consumed_milligas?: string;\n lazy_storage_diff?: LazyStorageDiff[];\n ticket_hash?: string;\n}\nexport interface OperationResultReveal {\n status: OperationResultStatusEnum;\n consumed_gas?: string;\n errors?: TezosGenericOperationError[];\n consumed_milligas?: string;\n}\nexport interface TransactionOperationParameter {\n entrypoint: string;\n value: MichelsonV1Expression;\n}\nexport interface InternalOperationResult {\n kind: InternalOperationResultKindEnum;\n source: string;\n nonce: number;\n amount?: string;\n destination?: string;\n parameters?: TransactionOperationParameter;\n public_key?: string;\n balance?: string;\n delegate?: string;\n script?: ScriptedContracts;\n value?: MichelsonV1Expression;\n limit?: string;\n result: InternalOperationResultEnum;\n type?: MichelsonV1Expression;\n tag?: string;\n payload?: MichelsonV1Expression;\n}\nexport interface SuccessfulManagerOperationResult {\n kind: SuccessfulManagerOperationResultKindEnum;\n consumed_gas?: string;\n consumed_milligas?: string;\n storage?: MichelsonV1Expression;\n big_map_diff?: ContractBigMapDiff;\n balance_updates?: OperationBalanceUpdates;\n originated_contracts?: string[];\n storage_size?: string;\n paid_storage_size_diff?: string;\n lazy_storage_diff?: LazyStorageDiff[];\n}\nexport type MetadataBalanceUpdatesKindEnum = 'contract' | 'freezer' | 'accumulator' | 'burned' | 'commitment' | 'minted' | 'staking';\nexport declare enum METADATA_BALANCE_UPDATES_CATEGORY {\n BAKING_BONUSES = \"baking bonuses\",\n BAKING_REWARDS = \"baking rewards\",\n BLOCK_FEES = \"block fees\",\n BONDS = \"bonds\",\n BOOTSTRAP = \"bootstrap\",\n BURNED = \"burned\",\n COMMITMENT = \"commitment\",\n DELEGATE_DENOMINATOR = \"delegate_denominator\",\n DELEGATOR_NUMERATOR = \"delegator_numerator\",\n DEPOSITS = \"deposits\",\n ENDORSING_REWARDS = \"endorsing rewards\",\n INVOICE = \"invoice\",\n LOST_ENDORSING_REWARDS = \"lost endorsing rewards\",\n MINTED = \"minted\",\n NONCE_REVELATION_REWARDS = \"nonce revelation rewards\",\n PUNISHMENTS = \"punishments\",\n SMART_ROLLUP_REFUTATION_PUNISHMENTS = \"smart_rollup_refutation_punishments\",\n SMART_ROLLUP_REFUTATION_REWARDS = \"smart_rollup_refutation_rewards\",\n STORAGE_FEES = \"storage fees\",\n SUBSIDY = \"subsidy\",\n UNSTAKED_DEPOSITS = \"unstaked_deposits\"\n}\nexport type MetadataBalanceUpdatesCategoryEnum = METADATA_BALANCE_UPDATES_CATEGORY;\nexport type MetadataBalanceUpdatesOriginEnum = 'block' | 'migration' | 'subsidy' | 'simulation' | 'delayed_operation';\nexport type FrozenStaker = SingleStaker | SharedStaker | Baker;\nexport type Staker = SingleStaker | SharedStaker;\nexport interface SingleStaker {\n contract: string;\n delegate: string;\n}\nexport interface SharedStaker {\n delegate: string;\n}\nexport interface Baker {\n baker: string;\n}\nexport interface OperationMetadataBalanceUpdates {\n kind: MetadataBalanceUpdatesKindEnum;\n contract?: string;\n change: string;\n origin?: MetadataBalanceUpdatesOriginEnum;\n delayed_operation_hash?: string;\n category?: MetadataBalanceUpdatesCategoryEnum;\n staker?: FrozenStaker | Staker;\n delegate?: string;\n participation?: boolean;\n revelation?: boolean;\n committer?: string;\n bond_id?: string;\n cycle?: number;\n delegator?: string;\n}\nexport type OperationResultStatusEnum = 'applied' | 'failed' | 'skipped' | 'backtracked';\nexport type DiffActionEnum = 'update' | 'remove' | 'copy' | 'alloc';\nexport type LazyStorageDiff = LazyStorageDiffBigMap | LazyStorageDiffSaplingState;\nexport interface LazyStorageDiffBigMap {\n kind: 'big_map';\n id: string;\n diff: LazyStorageDiffBigMapItems;\n}\nexport interface LazyStorageDiffSaplingState {\n kind: 'sapling_state';\n id: string;\n diff: LazyStorageDiffSaplingStateItems;\n}\nexport interface LazyStorageDiffBigMapItems {\n action: DiffActionEnum;\n updates?: LazyStorageDiffUpdatesBigMap[];\n source?: string;\n key_type?: MichelsonV1Expression;\n value_type?: MichelsonV1Expression;\n}\nexport interface LazyStorageDiffSaplingStateItems {\n action: DiffActionEnum;\n updates?: LazyStorageDiffUpdatesSaplingState;\n source?: string;\n memo_size?: number;\n}\nexport interface LazyStorageDiffUpdatesBigMap {\n key_hash: string;\n key: MichelsonV1Expression;\n value?: MichelsonV1Expression;\n}\nexport type CommitmentsAndCiphertexts = [\n SaplingTransactionCommitment,\n SaplingTransactionCiphertext\n];\nexport type SaplingTransactionCommitment = string;\nexport interface LazyStorageDiffUpdatesSaplingState {\n commitments_and_ciphertexts: CommitmentsAndCiphertexts[];\n nullifiers: string[];\n}\nexport interface SaplingTransactionCiphertext {\n cv: string;\n epk: string;\n payload_enc: string;\n nonce_enc: string;\n payload_out: string;\n nonce_out: string;\n}\nexport interface OperationResultOrigination {\n status: OperationResultStatusEnum;\n big_map_diff?: ContractBigMapDiff;\n balance_updates?: OperationBalanceUpdates;\n originated_contracts?: string[];\n consumed_gas?: string;\n storage_size?: string;\n paid_storage_size_diff?: string;\n errors?: TezosGenericOperationError[];\n consumed_milligas?: string;\n lazy_storage_diff?: LazyStorageDiff[];\n}\nexport interface OperationResultEvent {\n status: OperationResultStatusEnum;\n consumed_milligas?: string;\n errors?: TezosGenericOperationError[];\n}\nexport interface OperationContentsAndResultMetadataOrigination {\n balance_updates: OperationMetadataBalanceUpdates[];\n operation_result: OperationResultOrigination;\n internal_operation_results?: InternalOperationResult[];\n}\nexport type ConstantsResponse = ConstantsResponseCommon & ConstantsResponseProto018 & ConstantsResponseProto017 & ConstantsResponseProto016 & ConstantsResponseProto015 & ConstantsResponseProto014 & ConstantsResponseProto013 & ConstantsResponseProto012 & ConstantsResponseProto011 & ConstantsResponseProto010 & ConstantsResponseProto009 & ConstantsResponseProto008 & ConstantsResponseProto007 & ConstantsResponseProto006 & ConstantsResponseProto005 & ConstantsResponseProto004 & ConstantsResponseProto003 & ConstantsResponseProto001And002;\nexport interface ConstantsResponseCommon {\n proof_of_work_nonce_size: number;\n nonce_length: number;\n max_operation_data_length: number;\n preserved_cycles: number;\n blocks_per_cycle: number;\n blocks_per_commitment: number;\n blocks_per_roll_snapshot: number;\n blocks_per_voting_period: number;\n time_between_blocks: BigNumber[];\n endorsers_per_block: number;\n hard_gas_limit_per_operation: BigNumber;\n hard_gas_limit_per_block: BigNumber;\n proof_of_work_threshold: BigNumber;\n tokens_per_roll: BigNumber;\n michelson_maximum_type_size: number;\n seed_nonce_revelation_tip: BigNumber;\n block_security_deposit: BigNumber;\n endorsement_security_deposit: BigNumber;\n endorsement_reward: BigNumber | BigNumber[];\n cost_per_byte: BigNumber;\n hard_storage_limit_per_operation: BigNumber;\n}\nexport type Ratio = {\n numerator: number;\n denominator: number;\n};\nexport interface ConstantsResponseProto018 extends Omit {\n adaptive_issuance_activation_vote_enable: boolean;\n adaptive_issuance_launch_ema_threshold: number;\n adaptive_rewards_params: {\n center_dz: {\n denominator: string;\n numerator: string;\n };\n growth_rate: {\n denominator: string;\n numerator: string;\n };\n issuance_ratio_max: {\n denominator: string;\n numerator: string;\n };\n issuance_ratio_min: {\n denominator: string;\n numerator: string;\n };\n max_bonus: string;\n radius_dz: {\n denominator: string;\n numerator: string;\n };\n };\n autostaking_enable: boolean;\n edge_of_staking_over_delegation: number;\n global_limit_of_staking_over_baking: number;\n issuance_weights: {\n attesting_reward_weight: number;\n baking_reward_bonus_weight: number;\n baking_reward_fixed_portion_weight: number;\n base_total_issued_per_minute: string;\n liquidity_baking_subsidy_weight: number;\n seed_nonce_revelation_tip_weight: number;\n vdf_revelation_tip_weight: number;\n };\n limit_of_delegation_over_baking: number;\n minimal_frozen_stake: string;\n percentage_of_frozen_deposits_slashed_per_double_attestation: number;\n percentage_of_frozen_deposits_slashed_per_double_baking: number;\n smart_rollup_private_enable: boolean;\n smart_rollup_reveal_activation_level: {\n dal_page: number;\n dal_parameters: number;\n metadata: number;\n raw_data: {\n Blake2B: number;\n };\n };\n smart_rollup_riscv_pvm_enable: boolean;\n zk_rollup_max_ticket_payload_size: number;\n}\nexport type ConstantsResponseProto017 = ConstantsResponseProto016;\nexport interface ConstantsResponseProto016 extends Omit {\n smart_rollup_arith_pvm_enable: boolean;\n smart_rollup_challenge_window_in_blocks: number;\n smart_rollup_commitment_period_in_blocks: number;\n smart_rollup_enable: boolean;\n smart_rollup_max_active_outbox_levels: number;\n smart_rollup_max_lookahead_in_blocks: number;\n smart_rollup_max_number_of_cemented_commitments: number;\n smart_rollup_max_number_of_messages_per_level: string;\n smart_rollup_max_number_of_parallel_games: number;\n smart_rollup_max_outbox_messages_per_level: number;\n smart_rollup_max_wrapped_proof_binary_size: number;\n smart_rollup_message_size_limit: number;\n smart_rollup_number_of_sections_in_dissection: number;\n smart_rollup_origination_size: number;\n smart_rollup_stake_amount: string;\n smart_rollup_timeout_period_in_blocks: number;\n}\nexport interface ConstantsResponseProto015 extends Omit {\n minimal_stake: BigNumber;\n sc_max_wrapped_proof_binary_size: number;\n sc_rollup_message_size_limit: number;\n sc_rollup_max_number_of_messages_per_commitment_period: number;\n sc_rollup_number_of_sections_in_dissection: number;\n sc_rollup_timeout_period_in_blocks: number;\n sc_rollup_max_number_of_cemented_commitments: number;\n zk_rollup_enable: number;\n zk_rollup_origination_size: number;\n zk_rollup_min_pending_to_process: number;\n}\nexport interface DalParametric {\n feature_enable: boolean;\n number_of_slots: number;\n attestation_lag: number;\n attestation_threshold?: number;\n blocks_per_epoch?: number;\n redundancy_factor?: number;\n page_size?: number;\n slot_size?: number;\n number_of_shards: number;\n endorsement_lag?: number;\n availability_threshold: number;\n}\nexport interface ConstantsResponseProto014 extends ConstantsResponseProto013 {\n max_wrapped_proof_binary_size?: number;\n nonce_revelation_threshold?: number;\n vdf_difficulty?: BigNumber;\n testnet_dictator?: string;\n dal_parametric?: DalParametric;\n sc_rollup_stake_amount?: BigNumber;\n sc_rollup_commitment_period_in_blocks?: number;\n sc_rollup_max_lookahead_in_blocks?: number;\n sc_rollup_max_active_outbox_levels?: number;\n sc_rollup_max_outbox_messages_per_level?: number;\n}\nexport interface ConstantsResponseProto013 extends Omit {\n cache_layout_size?: number;\n cache_sampler_state_cycles?: number;\n cache_script_size?: number;\n cache_stake_distribution_cycles?: number;\n cycles_per_voting_period?: number;\n liquidity_baking_toggle_ema_threshold?: number;\n initial_seed?: string;\n tx_rollup_enable?: boolean;\n tx_rollup_origination_size?: number;\n tx_rollup_hard_size_limit_per_inbox?: number;\n tx_rollup_hard_size_limit_per_message?: number;\n tx_rollup_max_withdrawals_per_batch?: number;\n tx_rollup_commitment_bond?: BigNumber;\n tx_rollup_finality_period?: number;\n tx_rollup_withdraw_period?: number;\n tx_rollup_max_inboxes_count?: number;\n tx_rollup_max_messages_per_inbox?: number;\n tx_rollup_max_commitments_count?: number;\n tx_rollup_cost_per_byte_ema_factor?: number;\n tx_rollup_max_ticket_payload_size?: number;\n tx_rollup_rejection_max_proof_size?: number;\n tx_rollup_sunset_level?: number;\n sc_rollup_enable?: boolean;\n sc_rollup_origination_size?: number;\n sc_rollup_challenge_window_in_blocks?: number;\n sc_rollup_max_available_messages?: number;\n}\nexport interface ConstantsResponseProto012 extends Omit {\n blocks_per_stake_snapshot?: number;\n baking_reward_fixed_portion?: BigNumber;\n baking_reward_bonus_per_slot?: BigNumber;\n endorsing_reward_per_slot?: BigNumber;\n max_operations_time_to_live?: number;\n consensus_committee_size?: number;\n consensus_threshold?: number;\n minimal_participation_ratio?: Ratio;\n max_slashing_period?: number;\n frozen_deposits_percentage?: number;\n double_baking_punishment?: BigNumber;\n ratio_of_frozen_deposits_slashed_per_double_endorsement?: Ratio;\n delegate_selection?: 'random' | string[][];\n delay_increment_per_round?: BigNumber;\n}\nexport interface ConstantsResponseProto011 extends ConstantsResponseProto010 {\n max_micheline_node_count?: number;\n max_allowed_global_constants_depth?: number;\n max_micheline_bytes_limit?: number;\n cache_layout?: BigNumber[];\n}\nexport interface ConstantsResponseProto010 extends ConstantsResponseProto009 {\n minimal_block_delay?: BigNumber;\n liquidity_baking_subsidy?: BigNumber;\n liquidity_baking_sunset_level?: number;\n liquidity_baking_escape_ema_threshold?: number;\n}\nexport interface ConstantsResponseProto009 extends ConstantsResponseProto008 {\n}\nexport interface ConstantsResponseProto008 extends ConstantsResponseProto007 {\n}\nexport interface ConstantsResponseProto007 extends Omit {\n max_anon_ops_per_block?: number;\n}\nexport interface ConstantsResponseProto006 extends Omit {\n baking_reward_per_endorsement?: BigNumber[];\n}\nexport interface ConstantsResponseProto005 extends ConstantsResponseProto004 {\n quorum_min?: number;\n quorum_max?: number;\n min_proposal_quorum?: number;\n initial_endorsers?: number;\n delay_per_missing_endorsement?: BigNumber;\n}\nexport interface ConstantsResponseProto004 extends ConstantsResponseProto003 {\n test_chain_duration?: BigNumber;\n}\nexport interface ConstantsResponseProto003 extends Omit {\n origination_size?: number;\n max_proposals_per_delegate?: number;\n}\nexport interface ConstantsResponseProto001And002 extends ConstantsResponseCommon {\n max_revelations_per_block?: number;\n origination_burn?: string;\n block_reward?: BigNumber;\n}\nexport interface ContractResponse {\n balance: BigNumber;\n script: ScriptedContracts;\n counter?: string;\n delegate?: string;\n}\nexport interface TestChainStatus {\n status: 'not_running' | 'forking' | 'running';\n protocol?: string;\n expiration?: TimeStampMixed;\n chain_id?: string;\n genesis?: string;\n}\nexport interface MaxOperationListLength {\n max_size: number;\n max_op?: number;\n}\nexport interface Level {\n level: number;\n level_position: number;\n cycle: number;\n cycle_position: number;\n voting_period: number;\n voting_period_position: number;\n expected_commitment: boolean;\n}\nexport interface LevelInfo {\n level: number;\n level_position: number;\n cycle: number;\n cycle_position: number;\n expected_commitment: boolean;\n}\nexport interface BlockMetadata {\n protocol: string;\n next_protocol: string;\n test_chain_status: TestChainStatus;\n max_operations_ttl: number;\n max_operation_data_length: number;\n max_block_header_length: number;\n max_operation_list_length: MaxOperationListLength[];\n proposer?: string;\n baker: string;\n level?: Level;\n level_info?: LevelInfo;\n voting_period_kind?: string;\n voting_period_info?: VotingPeriodBlockResult;\n nonce_hash?: string;\n consumed_gas?: string;\n deactivated?: string[];\n balance_updates?: OperationBalanceUpdates;\n liquidity_baking_escape_ema?: number;\n liquidity_baking_toggle_ema?: number;\n implicit_operations_results?: SuccessfulManagerOperationResult[];\n consumed_milligas?: string;\n proposer_consensus_key?: string;\n baker_consensus_key?: string;\n}\nexport type RPCRunOperationParam = {\n operation: OperationObject;\n chain_id: string;\n};\nexport interface RPCSimulateOperationParam extends RPCRunOperationParam {\n blocks_before_activation?: number;\n latency?: number;\n}\nexport type RPCRunCodeParam = {\n script: MichelsonV1ExpressionExtended[];\n storage: MichelsonV1Expression;\n input: MichelsonV1Expression;\n amount: string;\n chain_id: string;\n source?: string;\n payer?: string;\n gas?: string;\n self?: string;\n entrypoint?: string;\n balance?: string;\n unparsing_mode?: UnparsingMode;\n now?: string;\n level?: string;\n};\nexport type RunCodeResult = {\n storage: MichelsonV1Expression;\n operations: InternalOperationResult[];\n big_map_diff?: ContractBigMapDiff;\n lazy_storage_diff?: LazyStorageDiff;\n};\nexport type RPCRunScriptViewParam = {\n contract: string;\n view: string;\n input: MichelsonV1Expression;\n unlimited_gas?: boolean;\n chain_id: string;\n source?: string;\n payer?: string;\n gas?: string;\n unparsing_mode?: UnparsingModeEnum;\n now?: string;\n level?: string;\n};\nexport type RunScriptViewResult = {\n data: MichelsonV1Expression;\n};\nexport type RPCRunViewParam = {\n contract: string;\n entrypoint: string;\n input: MichelsonV1Expression;\n chain_id: string;\n source?: string;\n payer?: string;\n gas?: BigNumber;\n unparsing_mode?: UnparsingModeEnum;\n};\nexport type RunViewResult = {\n data: MichelsonV1Expression;\n};\nexport type EntrypointsResponse = {\n entrypoints: {\n [key: string]: MichelsonV1ExpressionExtended;\n };\n unreachable?: {\n path: ('Left' | 'Right')[];\n };\n};\nexport interface OperationContentsAndResultOrigination {\n kind: OpKind.ORIGINATION;\n source: string;\n fee: string;\n counter: string;\n gas_limit: string;\n storage_limit: string;\n balance: string;\n delegate?: string;\n script?: ScriptedContracts;\n metadata: OperationContentsAndResultMetadataOrigination;\n}\nexport interface VotingPeriodResult {\n index: number;\n kind: PeriodKindResponse;\n start_position: number;\n}\nexport interface VotingPeriodBlockResult {\n voting_period: VotingPeriodResult;\n position: number;\n remaining: number;\n}\nexport type UnparsingModeEnum = 'Readable' | 'Optimized' | 'Optimized_legacy';\nexport type UnparsingMode = {\n unparsing_mode: UnparsingModeEnum;\n};\nexport type ProtocolsResponse = {\n protocol: string;\n next_protocol: string;\n};\nexport type Next = {\n next: number;\n} | {\n newest: number;\n oldest: number;\n};\nexport type LastRemovedCommitmentHashes = {\n last_message_hash: string;\n commitment_hash: string;\n};\nexport interface PendingOperationsQueryArguments {\n version?: '1' | '2';\n validated?: boolean;\n applied?: boolean;\n refused?: boolean;\n outdated?: boolean;\n branchRefused?: boolean;\n branchDelayed?: boolean;\n validationPass?: '0' | '1' | '2' | '3';\n}\ntype FailedProcessedOperation = Pick & {\n error: TezosGenericOperationError[];\n};\nexport interface PendingOperationsV1 {\n applied: Pick[];\n refused: FailedProcessedOperation[];\n outdated: FailedProcessedOperation[];\n branch_refused: FailedProcessedOperation[];\n branch_delayed: FailedProcessedOperation[];\n unprocessed: Pick[];\n}\nexport interface PendingOperationsV2 {\n validated: Pick[];\n refused: FailedProcessedOperation[];\n outdated: FailedProcessedOperation[];\n branch_refused: FailedProcessedOperation[];\n branch_delayed: FailedProcessedOperation[];\n unprocessed: Pick[];\n}\nexport declare enum PvmKind {\n WASM2 = \"wasm_2_0_0\",\n ARITH = \"arith\",\n RISCV = \"riscv\"\n}\nexport interface SmartRollupPublishCommitment {\n compressed_state: string;\n inbox_level: number;\n predecessor: string;\n number_of_ticks: string;\n}\nexport declare enum SmartRollupRefutationOptions {\n START = \"start\",\n MOVE = \"move\"\n}\nexport type SmartRollupRefutation = SmartRollupRefutationStart | SmartRollupRefutationMove;\nexport interface SmartRollupRefutationStart {\n refutation_kind: SmartRollupRefutationOptions.START;\n player_commitment_hash: string;\n opponent_commitment_hash: string;\n}\nexport interface SmartRollupRefutationMove {\n refutation_kind: SmartRollupRefutationOptions.MOVE;\n choice: string;\n step: SmartRollupRefutationMoveStep;\n}\nexport type SmartRollupRefutationMoveStep = SmartRollupRefutationMoveStepDissection[] | SmartRollupRefutationMoveStepProof;\nexport interface SmartRollupRefutationMoveStepDissection {\n state?: string;\n tick: number;\n}\nexport interface SmartRollupRefutationMoveStepProof {\n pvm_step: string;\n input_proof?: SmartRollupRefutationMoveInputProof;\n}\nexport declare enum SmartRollupInputProofKind {\n INBOX_PROOF = \"inbox_proof\",\n REVEAL_PROOF = \"reveal_proof\",\n FIRST_INPUT = \"first_input\"\n}\nexport interface SmartRollupRefutationMoveInputProofInbox {\n input_proof_kind: SmartRollupInputProofKind.INBOX_PROOF;\n level: number;\n message_counter: string;\n serialized_proof: string;\n}\nexport interface SmartRollupRefutationMoveInputProofReveal {\n input_proof_kind: SmartRollupInputProofKind.REVEAL_PROOF;\n reveal_proof: SmartRollupRefuteRevealProofOptions;\n}\nexport interface SmartRollupRefutationMoveInputProofFirstInput {\n input_proof_kind: SmartRollupInputProofKind.FIRST_INPUT;\n}\nexport type SmartRollupRefutationMoveInputProof = SmartRollupRefutationMoveInputProofInbox | SmartRollupRefutationMoveInputProofReveal | SmartRollupRefutationMoveInputProofFirstInput;\nexport declare enum SmartRollupRefuteRevealProofKind {\n RAW_DATA_PROOF = \"raw_data_proof\",\n METADATA_PROOF = \"metadata_proof\",\n DAL_PAGE_PROOF = \"dal_page_proof\"\n}\nexport interface SmartRollupRefuteRevealProofRaw {\n reveal_proof_kind: SmartRollupRefuteRevealProofKind.RAW_DATA_PROOF;\n raw_data: string;\n}\nexport interface SmartRollupRefuteRevealProofMetadata {\n reveal_proof_kind: SmartRollupRefuteRevealProofKind.METADATA_PROOF;\n}\nexport interface SmartRollupRefuteRevealProofDalPage {\n reveal_proof_kind: SmartRollupRefuteRevealProofKind.DAL_PAGE_PROOF;\n dal_page_id: {\n published_level: number;\n slot_index: number;\n page_index: number;\n };\n dal_proof: string;\n}\nexport type SmartRollupRefuteRevealProofOptions = SmartRollupRefuteRevealProofRaw | SmartRollupRefuteRevealProofMetadata | SmartRollupRefuteRevealProofDalPage;\nexport type SmartRollupGameStatus = SmartRollupRefuteGameStatusOptions.ONGOING | SmartRollupRefuteGameStatusEnded;\nexport declare enum SmartRollupRefuteGameStatusOptions {\n ONGOING = \"ongoing\",\n ENDED = \"ended\"\n}\nexport interface SmartRollupRefuteGameStatusEnded {\n result: SmartRollupRefuteGameStatusResult;\n}\nexport type SmartRollupRefuteGameStatusResult = SmartRollupRefuteGameEndedResultLoser | SmartRollupRefuteGameEndedResultDraw;\nexport interface SmartRollupRefuteGameEndedResultLoser {\n kind: SmartRollupRefuteGameEndedPlayerOutcomes.LOSER;\n reason: SmartRollupRefuteGameEndedReason;\n player: string;\n}\nexport interface SmartRollupRefuteGameEndedResultDraw {\n kind: SmartRollupRefuteGameEndedPlayerOutcomes.DRAW;\n}\nexport declare enum SmartRollupRefuteGameEndedPlayerOutcomes {\n LOSER = \"loser\",\n DRAW = \"draw\"\n}\nexport declare enum SmartRollupRefuteGameEndedReason {\n CONFLICT_RESOLVED = \"conflict_resolved\",\n TIMEOUT = \"timeout\"\n}\nexport interface SmartRollupTimeoutStakers {\n alice: string;\n bob: string;\n}\nexport {};\n"},{name:"@taquito/rpc/dist/types/version.d.ts",dts:"export declare const VERSION: {\n commitHash: string;\n version: string;\n};\n"},{name:"@taquito/batch/rpc-batch-provider.d.ts",dts:"import { Context } from '../context';\nimport { ContractStorageType, DefaultContractType } from '../contract/contract';\nimport { ContractMethod } from '../contract/contract-methods/contract-method-flat-param';\nimport { SendParams } from '../contract/contract-methods/contract-method-interface';\nimport { ContractProvider } from '../contract/interface';\nimport { BatchOperation } from '../operations/batch-operation';\nimport { ActivationParams, DelegateParams, OriginateParams, TransferParams, ParamsWithKind, RegisterGlobalConstantParams, TransferTicketParams, IncreasePaidStorageParams, SmartRollupAddMessagesParams, SmartRollupOriginateParams } from '../operations/types';\nimport { OpKind } from '@taquito/rpc';\nimport { ContractMethodObject } from '../contract/contract-methods/contract-method-object-param';\nimport { EstimationProvider } from '../estimate/estimate-provider-interface';\nimport { Provider } from '../provider';\nexport declare const BATCH_KINDS: OpKind[];\nexport type BatchKinds = OpKind.ACTIVATION | OpKind.ORIGINATION | OpKind.TRANSACTION | OpKind.DELEGATION;\nexport declare class OperationBatch extends Provider {\n private estimator;\n private operations;\n constructor(context: Context, estimator: EstimationProvider);\n private prepare;\n /**\n *\n * @description Add a transaction operation to the batch\n *\n * @param params Transfer operation parameter\n */\n withTransfer(params: TransferParams): this;\n /**\n *\n * @description Transfer tickets from a Tezos address (tz1,tz2 or tz3) to a smart contract address( KT1)\n *\n * @param params Transfer operation parameter\n */\n withTransferTicket(params: TransferTicketParams): this;\n /**\n *\n * @description Add a contract call to the batch\n *\n * @param params Call a contract method\n * @param options Generic operation parameters\n */\n withContractCall(params: ContractMethod | ContractMethodObject, options?: Partial): this;\n /**\n *\n * @description Add a delegation operation to the batch\n *\n * @param params Delegation operation parameter\n */\n withDelegation(params: DelegateParams): this;\n /**\n *\n * @description Add an activation operation to the batch\n *\n * @param params Activation operation parameter\n * @throws {@link InvalidKeyHashError}\n */\n withActivation({ pkh, secret }: ActivationParams): this;\n /**\n *\n * @description Add an origination operation to the batch\n *\n * @param params Origination operation parameter\n */\n withOrigination(params: OriginateParams>): this;\n /**\n *\n * @description Add a register a global constant operation to the batch\n *\n * @param params RegisterGlobalConstant operation parameter\n */\n withRegisterGlobalConstant(params: RegisterGlobalConstantParams): this;\n /**\n *\n * @description Add an increase paid storage operation to the batch\n *\n * @param params IncreasePaidStorage operation parameter\n */\n withIncreasePaidStorage(params: IncreasePaidStorageParams): this;\n /**\n *\n * @description Add a smart rollup add messages operation to the batch\n *\n * @param params Rollup origination operation parameter\n */\n withSmartRollupAddMessages(params: SmartRollupAddMessagesParams): this;\n /**\n *\n * @description Add a smart rollup originate operation to the batch\n *\n * @param params Smart Rollup Originate operation parameter\n */\n withSmartRollupOriginate(params: SmartRollupOriginateParams): this;\n getRPCOp(param: ParamsWithKind): Promise;\n /**\n *\n * @description Add a group operation to the batch. Operation will be applied in the order they are in the params array\n *\n * @param params Operations parameter\n * @throws {@link InvalidOperationKindError}\n */\n with(params: ParamsWithKind[]): this;\n /**\n *\n * @description Forge and Inject the operation batch\n *\n * @param params Optionally specify the source of the operation\n */\n send(params?: {\n source?: string;\n }): Promise;\n}\nexport declare class RPCBatchProvider {\n private context;\n private estimator;\n constructor(context: Context, estimator: EstimationProvider);\n /***\n *\n * @description Batch a group of operation together. Operations will be applied in the order in which they are added to the batch\n *\n * @param params List of operation to batch together\n */\n batch(params?: ParamsWithKind[]): OperationBatch;\n}\n"},{name:"@taquito/contract/contract-methods/contract-method-factory.d.ts",dts:"import { Wallet } from '../../wallet';\nimport { ContractProvider } from '../../contract';\nimport { ContractMethodObject } from './contract-method-object-param';\nimport { ContractMethod } from './contract-method-flat-param';\nimport { ParameterSchema, ViewSchema } from '@taquito/michelson-encoder';\nimport { RpcClientInterface, MichelsonV1Expression } from '@taquito/rpc';\nimport { OnChainView } from './contract-on-chain-view';\nimport { TzReadProvider } from '../../read-provider/interface';\nexport declare class ContractMethodFactory {\n private provider;\n private contractAddress;\n constructor(provider: T, contractAddress: string);\n createContractMethodFlatParams(smartContractMethodSchema: ParameterSchema, smartContractMethodName: string, args: any[], isMultipleEntrypoint?: boolean, isAnonymous?: boolean): ContractMethod;\n createContractMethodObjectParam(smartContractMethodSchema: ParameterSchema, smartContractMethodName: string, args: any[], isMultipleEntrypoint?: boolean, isAnonymous?: boolean): ContractMethodObject;\n createContractViewObjectParam(rpc: RpcClientInterface, readProvider: TzReadProvider, smartContractViewSchema: ViewSchema, contractStorageType: MichelsonV1Expression, viewArgs: any): OnChainView;\n}\n"},{name:"@taquito/contract/contract-methods/contract-method-flat-param.d.ts",dts:"import { TransactionOperation } from '../../operations/transaction-operation';\nimport { TransferParams } from '../../operations/types';\nimport { ContractProvider } from '../interface';\nimport { TransactionWalletOperation, Wallet } from '../../wallet';\nimport { ParameterSchema } from '@taquito/michelson-encoder';\nimport { ContractMethodInterface, SendParams } from './contract-method-interface';\n/**\n * @description Utility class to send smart contract operation\n * The format for the arguments is the flattened representation\n */\nexport declare class ContractMethod implements ContractMethodInterface {\n private provider;\n private address;\n private parameterSchema;\n private name;\n private args;\n private isMultipleEntrypoint;\n private isAnonymous;\n constructor(provider: T, address: string, parameterSchema: ParameterSchema, name: string, args: any[], isMultipleEntrypoint?: boolean, isAnonymous?: boolean);\n private validateArgs;\n /**\n * @description Get the schema of the smart contract method\n */\n get schema(): any;\n /**\n * @description Get the signature of the smart contract method\n */\n getSignature(): any[] | undefined;\n /**\n *\n * @description Send the smart contract operation\n *\n * @param Options generic operation parameter\n */\n send(params?: Partial): Promise;\n /**\n *\n * @description Create transfer params to be used with TezosToolkit.contract.transfer methods\n *\n * @param Options generic transfer operation parameters\n */\n toTransferParams({ fee, gasLimit, storageLimit, source, amount, mutez, }?: Partial): TransferParams;\n}\n"},{name:"@taquito/contract/contract-methods/contract-method-interface.d.ts",dts:"import { TransactionOperation } from '../../operations/transaction-operation';\nimport { TransferParams } from '../../operations/types';\nimport { TransactionWalletOperation } from '../../wallet';\nexport interface SendParams {\n fee?: number;\n storageLimit?: number;\n gasLimit?: number;\n amount: number;\n source?: string;\n mutez?: boolean;\n}\nexport type ExplicitTransferParams = Required> & SendParams;\nexport interface ContractMethodInterface {\n /**\n *\n * @description Send the smart contract operation\n *\n * @param Options generic operation parameter\n */\n send(params: Partial): Promise;\n /**\n *\n * @description Create transfer params to be used with TezosToolkit.contract.transfer methods\n *\n * @param Options generic transfer operation parameters\n */\n toTransferParams(params: Partial): TransferParams;\n}\n"},{name:"@taquito/contract/contract-methods/contract-method-object-param.d.ts",dts:"import { TransactionOperation } from '../../operations/transaction-operation';\nimport { TransferParams } from '../../operations/types';\nimport { ContractProvider } from '../interface';\nimport { TransactionWalletOperation, Wallet } from '../../wallet';\nimport { ParameterSchema } from \"@taquito/michelson-encoder\";\nimport { ContractMethodInterface, SendParams } from './contract-method-interface';\n/**\n * @description Utility class to send smart contract operation\n * The format for the arguments is the object representation\n */\nexport declare class ContractMethodObject implements ContractMethodInterface {\n private provider;\n private address;\n private parameterSchema;\n private name;\n private args;\n private isMultipleEntrypoint;\n private isAnonymous;\n constructor(provider: T, address: string, parameterSchema: ParameterSchema, name: string, args?: any, isMultipleEntrypoint?: boolean, isAnonymous?: boolean);\n /**\n * @description Get the signature of the smart contract method\n */\n getSignature(): any;\n /**\n *\n * @description Send the smart contract operation\n *\n * @param Options generic operation parameter\n */\n send(params?: Partial): Promise;\n /**\n *\n * @description Create transfer params to be used with TezosToolkit.contract.transfer methods\n *\n * @param Options generic transfer operation parameters\n */\n toTransferParams({ fee, gasLimit, storageLimit, source, amount, mutez, }?: Partial): TransferParams;\n}\n"},{name:"@taquito/contract/contract-methods/contract-on-chain-view.d.ts",dts:"import { ViewSchema } from '@taquito/michelson-encoder';\nimport { MichelsonV1Expression, RpcClientInterface } from '@taquito/rpc';\nimport { TzReadProvider } from '../../read-provider/interface';\nexport interface ExecutionContextParams {\n source?: string;\n viewCaller: string;\n}\nexport declare class OnChainView {\n private _rpc;\n private _readProvider;\n private _contractAddress;\n private _smartContractViewSchema;\n private _contractStorageType;\n private _args;\n constructor(_rpc: RpcClientInterface, _readProvider: TzReadProvider, _contractAddress: string, _smartContractViewSchema: ViewSchema, _contractStorageType: MichelsonV1Expression, _args?: any);\n /**\n * @description Get the signature of the smart contract view\n */\n getSignature(): {\n parameter: any;\n result: any;\n };\n /**\n * @description Get the result of the view simulation\n * @param executionContext.source the public key hash of the account who initialized this view execution.\n * @param executionContext.viewCaller the contract address which is the caller of view.\n */\n executeView(executionContext: ExecutionContextParams): Promise;\n private verifyContextExecution;\n private transformArgsToMichelson;\n /**\n * @description Loops through the view's instructions and replace BALANCE, SENDER, SELF_ADDRESS and AMOUNT with Michelson expressions that match the current context, if applicable.\n *\n * Certain specific instructions have different semantics in view:\n * BALANCE represents the current amount of mutez held by the contract where view is;\n * SENDER represents the contract which is the caller of view;\n * SELF_ADDRESS represents the contract where view is;\n * AMOUNT is always 0 mutez.\n *\n */\n private adaptViewCodeToContext;\n private executeViewAndDecodeResult;\n}\n"},{name:"@taquito/contract/big-map.d.ts",dts:"import { Schema, BigMapKeyType } from '@taquito/michelson-encoder';\nimport BigNumber from 'bignumber.js';\nimport { ContractProvider } from './interface';\nexport declare class BigMapAbstraction {\n private id;\n private schema;\n private provider;\n constructor(id: BigNumber, schema: Schema, provider: ContractProvider);\n /**\n *\n * @description Fetch one value in a big map\n *\n * @param keysToEncode Key to query (will be encoded properly according to the schema)\n * @param block optional block level to fetch the values from (head will be use by default)\n * @returns Return a well formatted json object of a big map value or undefined if the key is not found in the big map\n *\n */\n get(keyToEncode: BigMapKeyType, block?: number): Promise;\n /**\n *\n * @description Fetch multiple values in a big map\n * All values will be fetched on the same block level. If a block is specified in the request, the values will be fetched at it.\n * Otherwise, a first request will be done to the node to fetch the level of the head and all values will be fetched at this level.\n * If one of the keys does not exist in the big map, its value will be set to undefined.\n *\n * @param keysToEncode Array of keys to query (will be encoded properly according to the schema)\n * @param block optional block level to fetch the values from\n * @param batchSize optional batch size representing the number of requests to execute in parallel\n * @returns A MichelsonMap containing the keys queried in the big map and their value in a well-formatted JSON object format\n *\n */\n getMultipleValues(keysToEncode: Array, block?: number, batchSize?: number): Promise>;\n toJSON(): string;\n toString(): string;\n}\n"},{name:"@taquito/contract/compose.d.ts",dts:"import { Wallet } from '../wallet/wallet';\nimport { Context } from '../context';\nimport { ContractAbstraction } from './contract';\nimport { ContractProvider } from './interface';\nexport declare function compose, ContractAbsComposer2 extends ContractAbstraction, ContractAbstractionComposed>(functioncomposer1: (abs: ContractAbsComposer1, context: Context) => ContractAbsComposer2, functioncomposer2: (abs: ContractAbsComposer2, context: Context) => ContractAbstractionComposed): (abs: ContractAbsComposer1, context: Context) => ContractAbstractionComposed;\n"},{name:"@taquito/contract/contract.d.ts",dts:"import { ParameterSchema, Schema, ViewSchema, EventSchema } from '@taquito/michelson-encoder';\nimport { EntrypointsResponse, RpcClientInterface, ScriptResponse } from '@taquito/rpc';\nimport { ChainIds } from '../constants';\nimport { TzReadProvider } from '../read-provider/interface';\nimport { Wallet } from '../wallet';\nimport { ContractMethod } from './contract-methods/contract-method-flat-param';\nimport { ContractMethodObject } from './contract-methods/contract-method-object-param';\nimport { OnChainView } from './contract-methods/contract-on-chain-view';\nimport { ContractProvider, StorageProvider } from './interface';\nexport declare const DEFAULT_SMART_CONTRACT_METHOD_NAME = \"default\";\n/**\n * @description Utility class to retrieve data from a smart contract's storage without incurring fees via a contract's view method\n */\nexport declare class ContractView {\n private currentContract;\n private name;\n private callbackParametersSchema;\n private parameterSchema;\n private args;\n private rpc;\n private readProvider;\n constructor(currentContract: ContractAbstraction, name: string, callbackParametersSchema: ParameterSchema, parameterSchema: ParameterSchema, args: any[], rpc: RpcClientInterface, readProvider: TzReadProvider);\n read(chainId?: ChainIds): Promise;\n}\nexport type Contract = ContractAbstraction;\nexport type WalletContract = ContractAbstraction;\ntype DefaultMethods = Record ContractMethod>;\ntype DefaultMethodsObject = Record ContractMethodObject>;\ntype DefaultViews = Record ContractView>;\ntype DefaultContractViews = Record OnChainView>;\ntype DefaultStorage = unknown;\ntype PromiseReturnType any> = T extends (...args: any) => Promise ? R : any;\nexport type ContractStorageType> = PromiseReturnType;\nexport type DefaultContractType = ContractAbstraction;\nexport type DefaultWalletType = ContractAbstraction;\n/**\n * @description Smart contract abstraction\n */\nexport declare class ContractAbstraction = DefaultMethods, TMethodsObject extends DefaultMethodsObject = DefaultMethodsObject, TViews extends DefaultViews = DefaultViews, TContractViews extends DefaultContractViews = DefaultContractViews, TStorage extends DefaultStorage = DefaultStorage> {\n readonly address: string;\n readonly script: ScriptResponse;\n private storageProvider;\n readonly entrypoints: EntrypointsResponse;\n private rpc;\n private readProvider;\n private contractMethodFactory;\n /**\n * @description Contains methods that are implemented by the target Tezos Smart Contract, and offers the user to call the Smart Contract methods as if they were native TS/JS methods.\n * NB: if the contract contains annotation it will include named properties; if not it will be indexed by a number.\n *\n */\n methods: TMethods;\n /**\n * @description Contains methods that are implemented by the target Tezos Smart Contract, and offers the user to call the Smart Contract methods as if they were native TS/JS methods.\n * `methodsObject` serves the exact same purpose as the `methods` member. The difference is that it allows passing the parameter in an object format when calling the smart contract method (instead of the flattened representation)\n * NB: if the contract contains annotation it will include named properties; if not it will be indexed by a number.\n *\n */\n methodsObject: TMethodsObject;\n /**\n * @description Contains lamda views (tzip4) that are implemented by the target Tezos Smart Contract, and offers the user to call the lambda views as if they were native TS/JS methods.\n * NB: These are the view defined in the tzip4 standard, not the views introduced by the Hangzhou protocol.\n */\n views: TViews;\n /**\n * @description Contains on-chain views that are defined by the target Tezos Smart Contract, and offers the user to simulate the views execution as if they were native TS/JS methods.\n * NB: the expected format for the parameter when calling a smart contract view is the object format (same format as for the storage) and not the flattened representation.\n *\n */\n contractViews: TContractViews;\n readonly schema: Schema;\n readonly parameterSchema: ParameterSchema;\n readonly viewSchema: ViewSchema[];\n readonly eventSchema: EventSchema[];\n constructor(address: string, script: ScriptResponse, provider: T, storageProvider: StorageProvider, entrypoints: EntrypointsResponse, rpc: RpcClientInterface, readProvider: TzReadProvider);\n private _initializeMethods;\n private _initializeOnChainViews;\n /**\n * @description Return a friendly representation of the smart contract storage\n */\n storage(): Promise;\n /**\n *\n * @description Return a friendly representation of the smart contract big map value\n *\n * @param key BigMap key to fetch\n *\n * @deprecated getBigMapKey has been deprecated in favor of getBigMapKeyByID\n *\n * @see https://tezos.gitlab.io/api/rpc.html#post-block-id-context-contracts-contract-id-big-map-get\n */\n bigMap(key: string): Promise;\n}\nexport {};\n"},{name:"@taquito/contract/errors.d.ts",dts:"import { ParameterValidationError, RpcError } from '@taquito/core';\nimport { HttpResponseError } from '@taquito/http-utils';\nimport { MichelsonV1Expression } from '@taquito/rpc';\n/**\n * @category Error\n * @description Error that indicates invalid smart contract parameters being passed or used\n */\nexport declare class InvalidParameterError extends ParameterValidationError {\n readonly smartContractMethodName: string;\n readonly sigs: any[];\n readonly invalidParams: any[];\n constructor(smartContractMethodName: string, sigs: any[], invalidParams: any[]);\n}\n/**\n * @category Error\n * @description Error that indicates an invalid delegation source contract address being passed or used\n */\nexport declare class InvalidDelegationSource extends ParameterValidationError {\n readonly source: string;\n constructor(source: string);\n}\n/**\n * @category Error\n * @description Error that indicates an invalid smart contract code parameter being passed or used\n */\nexport declare class InvalidCodeParameter extends ParameterValidationError {\n readonly message: string;\n readonly data: any;\n constructor(message: string, data: any);\n}\n/**\n * @category Error\n * @description Error that indicates invalid smart contract init parameter being passed or used\n */\nexport declare class InvalidInitParameter extends ParameterValidationError {\n readonly message: string;\n readonly data: any;\n constructor(message: string, data: any);\n}\n/**\n * @category Error\n * @description Error that indicates a failure when conducting a view simulation\n */\nexport declare class ViewSimulationError extends RpcError {\n readonly message: string;\n readonly viewName: string;\n readonly failWith?: MichelsonV1Expression | undefined;\n readonly cause?: any;\n constructor(message: string, viewName: string, failWith?: MichelsonV1Expression | undefined, cause?: any);\n}\nexport declare const validateAndExtractFailwith: (error: HttpResponseError) => MichelsonV1Expression | undefined;\n/**\n * @category Error\n * @description Error that indicates invalid or unconfigured context when executing a view\n */\nexport declare class InvalidViewSimulationContext extends ParameterValidationError {\n readonly info: string;\n constructor(info: string);\n}\n/**\n * @category Error\n * @description Error that indicates a mistake happening during the reveal operation\n */\nexport declare class RevealOperationError extends RpcError {\n readonly message: string;\n constructor(message: string);\n}\n/**\n * @category Error\n * @description Error that indicates a mistake in the parameters in the preparation of an Origination operation\n */\nexport declare class OriginationParameterError extends ParameterValidationError {\n readonly message: string;\n constructor(message: string);\n}\n/**\n * @category Error\n * @description Error that indicates an invalid balance being passed or used\n */\nexport declare class InvalidBalanceError extends ParameterValidationError {\n readonly message: string;\n constructor(message: string);\n}\n"},{name:"@taquito/contract/index.d.ts",dts:"export * from './contract';\nexport * from './errors';\nexport * from './interface';\nexport * from './manager-lambda';\nexport * from './prepare';\nexport * from './view_lambda';\nexport { compose } from './compose';\nexport * from './contract-methods/contract-method-interface';\nexport * from './contract-methods/contract-method-flat-param';\nexport * from './contract-methods/contract-method-object-param';\nexport * from './sapling-state-abstraction';\nexport { smartContractAbstractionSemantic } from './semantic';\n"},{name:"@taquito/contract/interface.d.ts",dts:"import { BigMapKeyType, MichelsonMap, MichelsonMapKey, Schema } from '@taquito/michelson-encoder';\nimport { SaplingDiffResponse } from '@taquito/rpc';\nimport { OperationBatch } from '../batch/rpc-batch-provider';\nimport { Context } from '../context';\nimport { DelegateOperation } from '../operations/delegate-operation';\nimport { OriginationOperation } from '../operations/origination-operation';\nimport { RegisterGlobalConstantOperation } from '../operations/register-global-constant-operation';\nimport { RevealOperation } from '../operations/reveal-operation';\nimport { TransactionOperation } from '../operations/transaction-operation';\nimport { DelegateParams, OriginateParams, TransferParams, RegisterDelegateParams, ParamsWithKind, RevealParams, RegisterGlobalConstantParams, IncreasePaidStorageParams, TransferTicketParams, DrainDelegateParams, BallotParams, ProposalsParams, UpdateConsensusKeyParams, SmartRollupAddMessagesParams, SmartRollupOriginateParams, FailingNoopParams } from '../operations/types';\nimport { ContractAbstraction, ContractStorageType, DefaultContractType } from './contract';\nimport { IncreasePaidStorageOperation } from '../operations/increase-paid-storage-operation';\nimport { TransferTicketOperation } from '../operations/transfer-ticket-operation';\nimport { DrainDelegateOperation } from '../operations';\nimport { BallotOperation } from '../operations';\nimport { ProposalsOperation } from '../operations/proposals-operation';\nimport { UpdateConsensusKeyOperation } from '../operations/update-consensus-key-operation';\nimport { SmartRollupAddMessagesOperation } from '../operations/smart-rollup-add-messages-operation';\nimport { SmartRollupOriginateOperation } from '../operations/smart-rollup-originate-operation';\nimport { FailingNoopOperation } from '../operations/failing-noop-operation';\nexport type ContractSchema = Schema | unknown;\nexport interface StorageProvider {\n /**\n *\n * @description Return a well formatted json object of the contract storage\n *\n * @param contract contract address you want to get the storage from\n * @param schema optional schema can either be the contract script rpc response or a michelson-encoder schema\n *\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-context-contracts-contract-id-script\n */\n getStorage(contract: string, schema?: ContractSchema): Promise;\n /**\n *\n * @description Return a well formatted json object of the contract big map storage\n *\n * @param contract contract address you want to get the storage from\n * @param key contract big map key to fetch value from\n * @param schema optional schema can either be the contract script rpc response or a michelson-encoder schema\n *\n * @deprecated Deprecated in favor of getBigMapKeyByID\n *\n * @see https://tezos.gitlab.io/api/rpc.html#post-block-id-context-contracts-contract-id-big-map-get\n */\n getBigMapKey(contract: string, key: string, schema?: ContractSchema): Promise;\n /**\n *\n * @description Return a well formatted json object of a big map value\n *\n * @param id Big Map ID\n * @param keyToEncode key to query (will be encoded properly according to the schema)\n * @param schema Big Map schema (can be determined using your contract type)\n * @param block optional block level to fetch the value from\n *\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-context-big-maps-big-map-id-script-expr\n */\n getBigMapKeyByID(id: string, keyToEncode: BigMapKeyType, schema: Schema, block?: number): Promise;\n /**\n *\n * @description Fetch multiple values in a big map\n *\n * @param id Big Map ID\n * @param keysToEncode Array of keys to query (will be encoded properly according to the schema)\n * @param schema Big Map schema (can be determined using your contract type)\n * @param block optional block level to fetch the values from\n * @param batchSize optional batch size representing the number of requests to execute in parallel\n * @returns An object containing the keys queried in the big map and their value in a well-formatted JSON object format\n *\n */\n getBigMapKeysByID(id: string, keysToEncode: Array, schema: Schema, block?: number, batchSize?: number): Promise>;\n /**\n *\n * @description Return a well formatted json object of a sapling state\n *\n * @param id Sapling state ID\n * @param block optional block level to fetch the value from\n *\n */\n getSaplingDiffByID(id: string, block?: number): Promise;\n}\nexport interface ContractProvider extends StorageProvider {\n /**\n *\n * @description Originate a new contract according to the script in parameters. Will sign and inject an operation using the current context\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param OriginationOperation Originate operation parameter\n */\n originate(contract: OriginateParams>): Promise>;\n /**\n *\n * @description Set the delegate for a contract. Will sign and inject an operation using the current context\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param SetDelegate operation parameter\n */\n setDelegate(params: DelegateParams): Promise;\n /**\n *\n * @description Register the current address as delegate. Will sign and inject an operation using the current context\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param RegisterDelegate operation parameter\n */\n registerDelegate(params: RegisterDelegateParams): Promise;\n /**\n *\n * @description Transfer tz from current address to a specific address. Will sign and inject an operation using the current context\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param Transfer operation parameter\n */\n transfer(params: TransferParams): Promise;\n /**\n *\n * @description Transfer tickets from an implicit account to a contract or another implicit account.\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param TransferTicket operation parameter\n */\n transferTicket(params: TransferTicketParams): Promise;\n /**\n *\n * @description Reveal the current address. Will throw an error if the address is already revealed.\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param Reveal operation parameter\n */\n reveal(params: RevealParams): Promise;\n at>(address: string, contractAbstractionComposer?: (abs: ContractAbstraction, context: Context) => T): Promise;\n /**\n *\n * @description Batch a group of operation together. Operations will be applied in the order in which they are added to the batch\n *\n * @param params List of operation to batch together\n */\n batch(params?: ParamsWithKind[]): OperationBatch;\n /**\n *\n * @description Register a Micheline expression in a global table of constants. Will sign and inject an operation using the current context\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param params registerGlobalConstant operation parameter\n */\n registerGlobalConstant(params: RegisterGlobalConstantParams): Promise;\n /**\n *\n * @description Increase the amount of bytes in a smart contract storage by paying a fee\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param params IncreasePaidStorage operation parameter\n */\n increasePaidStorage(params: IncreasePaidStorageParams): Promise;\n /**\n *\n * @description Submit a drain delegate operation\n *\n * @returns An operation handle with the result from the RPC node\n *\n * @param DrainDelegateParams DrainDelegate operation parameter\n */\n drainDelegate(params: DrainDelegateParams): Promise;\n /**\n *\n * @description Submit ballot for an ongoing proposal\n *\n * @returns An operation handle with the result from the RPC node\n *\n * @param BallotParams Ballot operation parameter\n */\n ballot(params: BallotParams): Promise;\n /**\n *\n * @description Submit proposal\n *\n * @returns An operation handle with the result from the RPC node\n *\n * @param ProposalsParams Proposals operation parameter\n */\n proposals(params: ProposalsParams): Promise;\n /**\n *\n * @description Update consensus key\n *\n * @returns An operation handle with the result from the RPC node\n *\n * @param UpdateConsensusKeyParams UpdateConsensusKey operation parameter\n */\n updateConsensusKey(params: UpdateConsensusKeyParams): Promise;\n /**\n *\n * @description Smart Rollup Add Messages\n *\n * @returns An operation handle with the result from the RPC node\n *\n * @param SmartRollupAddMessagesParams smartRollupAddMessages operation parameter\n */\n smartRollupAddMessages(params: SmartRollupAddMessagesParams): Promise;\n /**\n * @description Smart rollup originate\n *\n * @returns An operation handle with the result from the RPC node\n *\n * @param SmartRollupOriginateParams smartRollupOriginate operation parameter\n */\n smartRollupOriginate(params: SmartRollupOriginateParams): Promise;\n /**\n *\n * @description Send arbitrary data inside a failing_noop operation that's guaranteed to fail.\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param params FailingNoop operation parameter\n */\n failingNoop(params: FailingNoopParams): Promise;\n}\n"},{name:"@taquito/contract/lambda-view.d.ts",dts:"import { MichelsonV1Expression } from '@taquito/rpc';\nimport { Contract, ContractAbstraction, WalletContract } from './contract';\nimport { ContractProvider } from './interface';\nimport { Wallet } from '../wallet';\n/**\n *\n * @deprecated LambdaView has been deprecated in favor of rpc.runView to simulate calls to views following the TZIP-4 standard\n */\nexport default class LambdaView {\n private lambdaContract;\n private viewContract;\n readonly viewMethod: string;\n private contractParameter;\n readonly voidLambda: object;\n constructor(lambdaContract: Contract | WalletContract, viewContract: ContractAbstraction, viewMethod?: string, contractParameter?: MichelsonV1Expression);\n execute(): Promise;\n private createVoidLambda;\n private getView;\n}\n"},{name:"@taquito/contract/manager-lambda.d.ts",dts:"export declare const MANAGER_LAMBDA: {\n setDelegate: (key: string) => ({\n prim: string;\n args?: undefined;\n } | {\n prim: string;\n args: ({\n prim: string;\n string?: undefined;\n } | {\n string: string;\n prim?: undefined;\n })[];\n })[];\n removeDelegate: () => ({\n prim: string;\n args?: undefined;\n } | {\n prim: string;\n args: {\n prim: string;\n }[];\n })[];\n transferImplicit: (key: string, mutez: number) => ({\n prim: string;\n args?: undefined;\n } | {\n prim: string;\n args: ({\n prim: string;\n string?: undefined;\n } | {\n string: string;\n prim?: undefined;\n })[];\n } | {\n prim: string;\n args: ({\n prim: string;\n int?: undefined;\n } | {\n int: string;\n prim?: undefined;\n })[];\n })[];\n transferToContract: (key: string, amount: number) => ({\n prim: string;\n args?: undefined;\n } | {\n prim: string;\n args: ({\n prim: string;\n string?: undefined;\n } | {\n string: string;\n prim?: undefined;\n })[];\n } | {\n prim: string;\n args: {\n prim: string;\n }[][];\n } | {\n prim: string;\n args: ({\n prim: string;\n int?: undefined;\n } | {\n int: string;\n prim?: undefined;\n })[];\n })[];\n};\n"},{name:"@taquito/contract/prepare.d.ts",dts:"import { OriginateParams, RPCOriginationOperation, TransferParams, RPCTransferOperation, DelegateParams, RPCDelegateOperation, RegisterDelegateParams, RPCRevealOperation, RevealParams, RegisterGlobalConstantParams, RPCRegisterGlobalConstantOperation, TransferTicketParams, RPCTransferTicketOperation, IncreasePaidStorageParams, RPCIncreasePaidStorageOperation, DrainDelegateParams, RPCDrainDelegateOperation, BallotParams, RPCBallotOperation, ProposalsParams, RPCProposalsOperation, UpdateConsensusKeyParams, RPCUpdateConsensusKeyOperation, SmartRollupAddMessagesParams, RPCSmartRollupAddMessagesOperation, RPCSmartRollupOriginateOperation, ActivationParams, RPCActivateOperation, SmartRollupOriginateParams } from '../operations/types';\nexport declare const createActivationOperation: ({ pkh, secret }: ActivationParams) => Promise;\nexport declare const createOriginationOperation: ({ code, init, balance, delegate, storage, fee, gasLimit, storageLimit, mutez, }: OriginateParams) => Promise;\nexport declare const createTransferOperation: ({ to, amount, parameter, fee, gasLimit, storageLimit, mutez, }: TransferParams) => Promise;\nexport declare const createSetDelegateOperation: ({ delegate, source, fee, gasLimit, storageLimit, }: DelegateParams) => Promise;\nexport declare const createRegisterDelegateOperation: ({ fee, gasLimit, storageLimit, }: RegisterDelegateParams, source: string) => Promise;\nexport declare const createRevealOperation: ({ fee, gasLimit, storageLimit, }: RevealParams, source: string, publicKey: string) => Promise;\nexport declare const createRegisterGlobalConstantOperation: ({ value, source, fee, gasLimit, storageLimit, }: RegisterGlobalConstantParams) => Promise;\nexport declare const createTransferTicketOperation: ({ ticketContents, ticketTy, ticketTicketer, ticketAmount, destination, entrypoint, source, fee, gasLimit, storageLimit, }: TransferTicketParams) => Promise;\nexport declare const createIncreasePaidStorageOperation: ({ source, fee, gasLimit, storageLimit, amount, destination, }: IncreasePaidStorageParams) => Promise;\nexport declare const createDrainDelegateOperation: ({ consensus_key, delegate, destination, }: DrainDelegateParams) => Promise;\nexport declare const createBallotOperation: ({ source, proposal, ballot }: BallotParams) => Promise;\nexport declare const createProposalsOperation: ({ source, proposals }: ProposalsParams) => Promise;\nexport declare const createUpdateConsensusKeyOperation: ({ source, fee, gasLimit, storageLimit, pk, }: UpdateConsensusKeyParams) => Promise;\nexport declare const createSmartRollupAddMessagesOperation: ({ source, fee, gasLimit, storageLimit, message, }: SmartRollupAddMessagesParams) => Promise;\nexport declare const createSmartRollupOriginateOperation: ({ source, fee, gasLimit, storageLimit, pvmKind, kernel, parametersType, }: SmartRollupOriginateParams) => Promise;\n"},{name:"@taquito/contract/rpc-contract-provider.d.ts",dts:"import { BigMapKeyType, MichelsonMap, MichelsonMapKey, Schema } from '@taquito/michelson-encoder';\nimport { OperationBatch } from '../batch/rpc-batch-provider';\nimport { Context } from '../context';\nimport { DelegateOperation } from '../operations/delegate-operation';\nimport { OriginationOperation } from '../operations/origination-operation';\nimport { RegisterGlobalConstantOperation } from '../operations/register-global-constant-operation';\nimport { RevealOperation } from '../operations/reveal-operation';\nimport { TransactionOperation } from '../operations/transaction-operation';\nimport { DelegateParams, OriginateParams, ParamsWithKind, RegisterDelegateParams, RegisterGlobalConstantParams, RevealParams, TransferParams, TransferTicketParams, IncreasePaidStorageParams, DrainDelegateParams, BallotParams, ProposalsParams, UpdateConsensusKeyParams, SmartRollupAddMessagesParams, SmartRollupOriginateParams, FailingNoopParams } from '../operations/types';\nimport { DefaultContractType, ContractStorageType, ContractAbstraction } from './contract';\nimport { ContractProvider, ContractSchema, StorageProvider } from './interface';\nimport { EstimationProvider } from '../estimate/estimate-provider-interface';\nimport { TransferTicketOperation } from '../operations/transfer-ticket-operation';\nimport { IncreasePaidStorageOperation } from '../operations/increase-paid-storage-operation';\nimport { BallotOperation } from '../operations/ballot-operation';\nimport { DrainDelegateOperation } from '../operations/drain-delegate-operation';\nimport { ProposalsOperation } from '../operations/proposals-operation';\nimport { UpdateConsensusKeyOperation } from '../operations/update-consensus-key-operation';\nimport { SmartRollupAddMessagesOperation } from '../operations/smart-rollup-add-messages-operation';\nimport { SmartRollupOriginateOperation } from '../operations/smart-rollup-originate-operation';\nimport { Provider } from '../provider';\nimport { FailingNoopOperation } from '../operations/failing-noop-operation';\nexport declare class RpcContractProvider extends Provider implements ContractProvider, StorageProvider {\n private estimator;\n constructor(context: Context, estimator: EstimationProvider);\n contractProviderTypeSymbol: symbol;\n private prepare;\n /**\n *\n * @description Return a well formatted json object of the contract storage\n *\n * @param contract contract address you want to get the storage from\n * @param schema optional schema can either be the contract script rpc response or a michelson-encoder schema\n * @throws {@link InvalidContractAddressError}\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-context-contracts-contract-id-script\n */\n getStorage(contract: string, schema?: ContractSchema): Promise;\n /**\n *\n * @description Return a well formatted json object of the contract big map storage\n *\n * @param contract contract address you want to get the storage from\n * @param key contract big map key to fetch value from\n * @param schema optional schema can either be the contract script rpc response or a michelson-encoder schema\n * @throws {@link InvalidContractAddressError}\n * @deprecated Deprecated in favor of getBigMapKeyByID\n *\n * @see https://tezos.gitlab.io/api/rpc.html#post-block-id-context-contracts-contract-id-big-map-get\n */\n getBigMapKey(contract: string, key: string, schema?: ContractSchema): Promise;\n /**\n *\n * @description Return a well formatted json object of a big map value\n *\n * @param id Big Map ID\n * @param keyToEncode key to query (will be encoded properly according to the schema)\n * @param schema Big Map schema (can be determined using your contract type)\n * @param block optional block level to fetch the values from\n *\n * @see https://tezos.gitlab.io/api/rpc.html#get-block-id-context-big-maps-big-map-id-script-expr\n */\n getBigMapKeyByID(id: string, keyToEncode: BigMapKeyType, schema: Schema, block?: number): Promise;\n /**\n *\n * @description Fetch multiple values in a big map\n * All values will be fetched on the same block level. If a block is specified in the request, the values will be fetched at it.\n * Otherwise, a first request will be done to the node to fetch the level of the head and all values will be fetched at this level.\n * If one of the keys does not exist in the big map, its value will be set to undefined.\n *\n * @param id Big Map ID\n * @param keys Array of keys to query (will be encoded properly according to the schema)\n * @param schema Big Map schema (can be determined using your contract type)\n * @param block optional block level to fetch the values from\n * @param batchSize optional batch size representing the number of requests to execute in parallel\n * @returns A MichelsonMap containing the keys queried in the big map and their value in a well-formatted JSON object format\n *\n */\n getBigMapKeysByID(id: string, keys: Array, schema: Schema, block?: number, batchSize?: number): Promise>;\n private getBlockForRequest;\n private getBigMapValueOrUndefined;\n /**\n *\n * @description Return a well formatted json object of a sapling state\n *\n * @param id Sapling state ID\n * @param block optional block level to fetch the value from\n *\n */\n getSaplingDiffByID(id: string, block?: number): Promise;\n /**\n *\n * @description Originate a new contract according to the script in parameters. Will sign and inject an operation using the current context\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @warn You cannot specify storage and init at the same time (use init to pass the raw michelson representation of storage)\n *\n * @param OriginationOperation Originate operation parameter\n */\n originate(params: OriginateParams>): Promise>;\n /**\n *\n * @description Set the delegate for a contract. Will sign and inject an operation using the current context\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param SetDelegate operation parameter\n */\n setDelegate(params: DelegateParams): Promise;\n /**\n *\n * @description Register the current address as delegate. Will sign and inject an operation using the current context\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param RegisterDelegate operation parameter\n */\n registerDelegate(params: RegisterDelegateParams): Promise;\n /**\n *\n * @description Transfer tz from current address to a specific address. Will sign and inject an operation using the current context\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param Transfer operation parameter\n */\n transfer(params: TransferParams): Promise;\n /**\n *\n * @description Transfer Tickets to a smart contract address\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param TransferTicketParams operation parameter\n */\n transferTicket(params: TransferTicketParams): Promise;\n /**\n *\n * @description Reveal the current address. Will throw an error if the address is already revealed.\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param RevealParams operation parameter\n */\n reveal(params: RevealParams): Promise;\n /**\n *\n * @description Register a Micheline expression in a global table of constants. Will sign and inject an operation using the current context\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param params registerGlobalConstant operation parameter\n */\n registerGlobalConstant(params: RegisterGlobalConstantParams): Promise;\n /**\n *\n * @description Increase the paid storage of a smart contract\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param params increasePaidStorage operation parameter\n */\n increasePaidStorage(params: IncreasePaidStorageParams): Promise;\n /**\n *\n * @description Transfers the spendable balance of the delegate to destination when consensus_key is the active consensus key of delegate\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param params drainDelegate operation parameter\n */\n drainDelegate(params: DrainDelegateParams): Promise;\n /**\n *\n * @description Submit a ballot vote to a specified proposal\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param BallotParams Ballot operation parameter\n */\n ballot(params: BallotParams): Promise;\n /**\n *\n * @description Submit or upvote a proposal during the Proposal period\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param ProposalsParams Proposals operation parameter\n */\n proposals(params: ProposalsParams): Promise;\n /**\n *\n * @description Updates the consensus key of the baker to public_key starting from the current cycle plus PRESERVED_CYCLES + 1\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param UpdateConsensusKeyParams\n */\n updateConsensusKey(params: UpdateConsensusKeyParams): Promise;\n /**\n * @description Adds messages to the rollup inbox that can be executed/claimed after it gets cemented\n * @param SmartRollupAddMessagesParams\n * @returns An operation handle with results from the RPC node\n */\n smartRollupAddMessages(params: SmartRollupAddMessagesParams): Promise;\n /**\n * @description Creates a smart rollup originate operation\n * @param SmartRollupOriginateParams\n * @returns An operation handle with results from the RPC node\n */\n smartRollupOriginate(params: SmartRollupOriginateParams): Promise;\n /**\n *\n * @description A failing_noop operation that is guaranteed to fail.\n *\n * @returns A FailingNoopOperation object representing the signed failing_noop operation\n *\n * @param params failingNoop operation parameter\n */\n failingNoop(params: FailingNoopParams): Promise;\n /**\n *\n * @description Create an smart contract abstraction for the address specified.\n *\n * @param address Smart contract address\n * @throws {@link InvalidContractAddressError}\n */\n at(address: string, contractAbstractionComposer?: ContractAbstractionComposer): Promise;\n /**\n *\n * @description Batch a group of operation together. Operations will be applied in the order in which they are added to the batch\n *\n * @returns A batch object from which we can add more operation or send a command to execute the batch\n *\n * @param params List of operation to batch together\n */\n batch(params?: ParamsWithKind[]): OperationBatch;\n}\ntype ContractAbstractionComposer = (abs: ContractAbstraction, context: Context) => T;\nexport {};\n"},{name:"@taquito/contract/sapling-state-abstraction.d.ts",dts:"import BigNumber from 'bignumber.js';\nimport { ContractProvider } from './interface';\nexport declare class SaplingStateAbstraction {\n private id;\n private provider;\n constructor(id: BigNumber, provider: ContractProvider);\n /**\n *\n * @description Fetch the sapling state\n *\n * @param block optional block level to fetch the values from (head will be use by default)\n * @returns Return a json object of the sapling_state\n *\n */\n getSaplingDiff(block?: number): Promise;\n getId(): string;\n}\n"},{name:"@taquito/contract/semantic.d.ts",dts:"import { Semantic } from '@taquito/michelson-encoder';\nimport { ContractProvider } from './interface';\n/**\n * @description Override the default michelson encoder semantic to provide richer abstraction over storage properties\n * @param provider ContractProvider (contract API)\n */\nexport declare const smartContractAbstractionSemantic: (p: ContractProvider) => Semantic;\n"},{name:"@taquito/contract/view_lambda.d.ts",dts:"export declare const VIEW_LAMBDA: {\n code: ({\n prim: string;\n args: {\n prim: string;\n args: ({\n prim: string;\n args?: undefined;\n } | {\n prim: string;\n args: ({\n prim: string;\n args: {\n prim: string;\n }[];\n } | {\n prim: string;\n args?: undefined;\n })[];\n })[];\n }[];\n } | {\n prim: string;\n args: {\n prim: string;\n }[];\n } | {\n prim: string;\n args: {\n prim: string;\n }[][];\n })[];\n storage: string;\n};\n"},{name:"@taquito/estimate/errors.d.ts",dts:"import { TaquitoError } from '@taquito/core';\n/**\n * @category Error\n * @description Error that indicates unable to get public key to estimate reveal operation in Wallet API\n */\nexport declare class RevealEstimateError extends TaquitoError {\n constructor();\n}\n"},{name:"@taquito/estimate/estimate-provider-interface.d.ts",dts:"import { OriginateParams, TransferParams, DelegateParams, RegisterDelegateParams, ParamsWithKind } from '../operations';\nimport { RevealParams, RegisterGlobalConstantParams, TransferTicketParams, IncreasePaidStorageParams, UpdateConsensusKeyParams, SmartRollupAddMessagesParams, SmartRollupOriginateParams } from '../operations/types';\nimport { Estimate } from './estimate';\nimport { ContractMethod, ContractMethodObject, ContractProvider } from '../contract';\nexport interface EstimationProvider {\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for an origination operation\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation\n *\n * @param Estimate\n */\n originate(params: OriginateParams): Promise;\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for an transfer operation\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation\n *\n * @param Estimate\n */\n transfer({ fee, storageLimit, gasLimit, ...rest }: TransferParams): Promise;\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for an transferTicket operation\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation\n *\n * @param Estimate\n */\n transferTicket({ fee, storageLimit, gasLimit, ...rest }: TransferTicketParams): Promise;\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for a delegate operation\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation\n *\n * @param Estimate\n */\n setDelegate(params: DelegateParams): Promise;\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for a delegate operation\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation\n *\n * @param Estimate\n */\n registerDelegate(params?: RegisterDelegateParams): Promise;\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for a reveal operation\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation or undefined if the account is already revealed\n *\n * @param Estimate\n */\n reveal(params?: RevealParams): Promise;\n batch(params: ParamsWithKind[]): Promise;\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for registering an expression (registerGlobalConstant operation)\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation\n *\n * @param params registerGlobalConstant operation parameter\n */\n registerGlobalConstant(params: RegisterGlobalConstantParams): Promise;\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for an increase paid storage operation\n *\n * @returns An estimation of gasLimit, storageLimit, and fees for the operation\n *\n * @param Estimate\n */\n increasePaidStorage(params: IncreasePaidStorageParams): Promise;\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for an Update Consensus Key operation\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation\n *\n * @param Estimate\n */\n updateConsensusKey(params: UpdateConsensusKeyParams): Promise;\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for an Smart Rollup Add Messages operation\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation\n *\n * @param Estimate\n */\n smartRollupAddMessages(params: SmartRollupAddMessagesParams): Promise;\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for contract call\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the contract call\n *\n * @param Estimate\n */\n contractCall(contractMethod: ContractMethod | ContractMethodObject): Promise;\n /**\n * @description Estimate gasLimit, storageLimit and fees for an Smart Rollup Originate operation\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation\n *\n * @param SmartRollupOrigianteParams\n */\n smartRollupOriginate(params: SmartRollupOriginateParams): Promise;\n}\n"},{name:"@taquito/estimate/estimate.d.ts",dts:"export interface EstimateProperties {\n milligasLimit: number;\n storageLimit: number;\n opSize: number;\n minimalFeePerStorageByteMutez: number;\n baseFeeMutez?: number;\n}\n/**\n * Examples of use :\n *\n * Estimate a transfer operation :\n * ```\n * // Assuming that provider and signer are already configured...\n *\n * const amount = 2;\n * const address = 'tz1h3rQ8wBxFd8L9B3d7Jhaawu6Z568XU3xY';\n *\n * // Estimate gasLimit, storageLimit and fees for a transfer operation\n * const est = await Tezos.estimate.transfer({ to: address, amount: amount })\n * console.log(est.burnFeeMutez, est.gasLimit, est.minimalFeeMutez, est.storageLimit,\n * est.suggestedFeeMutez, est.totalCost, est.usingBaseFeeMutez)\n *\n * ```\n *\n * Estimate a contract origination :\n * ```\n * // generic.json is referring to a Michelson Smart Contract\n *\n * const genericMultisigJSON = require('./generic.json')\n * const est = await Tezos.estimate.originate({\n * code: genericMultisigJSON,\n * storage: {\n * stored_counter: 0,\n * threshold: 1,\n * keys: ['edpkuLxx9PQD8fZ45eUzrK3BhfDZJHhBuK4Zi49DcEGANwd2rpX82t']\n * }\n * })\n * console.log(est.burnFeeMutez, est.gasLimit, est.minimalFeeMutez, est.storageLimit,\n * est.suggestedFeeMutez, est.totalCost, est.usingBaseFeeMutez)\n *\n * ```\n */\nexport declare class Estimate {\n private readonly _milligasLimit;\n private readonly _storageLimit;\n readonly opSize: number | string;\n private readonly minimalFeePerStorageByteMutez;\n /**\n * @description Base fee in mutez (1 mutez = 1e10\u22126 tez)\n */\n private readonly baseFeeMutez;\n constructor(_milligasLimit: number | string, _storageLimit: number | string, opSize: number | string, minimalFeePerStorageByteMutez: number | string, \n /**\n * @description Base fee in mutez (1 mutez = 1e10\u22126 tez)\n */\n baseFeeMutez?: number | string);\n /**\n * @description The number of Mutez that will be burned for the storage of the [operation](https://tezos.gitlab.io/user/glossary.html#operations). (Storage + Allocation fees)\n */\n get burnFeeMutez(): number;\n /**\n * @description The limit on the amount of storage an [operation](https://tezos.gitlab.io/user/glossary.html#operations) can use.\n */\n get storageLimit(): number;\n /**\n * @description The limit on the amount of [gas](https://tezos.gitlab.io/user/glossary.html#gas) a given operation can consume.\n */\n get gasLimit(): number;\n private get operationFeeMutez();\n private roundUp;\n /**\n * @description Minimum fees for the [operation](https://tezos.gitlab.io/user/glossary.html#operations) according to [baker](https://tezos.gitlab.io/user/glossary.html#baker) defaults.\n */\n get minimalFeeMutez(): number;\n /**\n * @description The suggested fee for the operation which includes minimal fees and a small buffer.\n */\n get suggestedFeeMutez(): number;\n /**\n * @description Fees according to your specified base fee will ensure that at least minimum fees are used.\n */\n get usingBaseFeeMutez(): number;\n /**\n * @description The sum of `minimalFeeMutez` + `burnFeeMutez`.\n */\n get totalCost(): number;\n /**\n * @description Since Delphinet, consumed gas is provided in milligas for more precision.\n * This function returns an estimation of the gas that operation will consume in milligas.\n */\n get consumedMilligas(): number;\n static createEstimateInstanceFromProperties(estimateProperties: EstimateProperties[]): Estimate;\n static createArrayEstimateInstancesFromProperties(estimateProperties: EstimateProperties[]): Estimate[];\n}\n"},{name:"@taquito/estimate/index.d.ts",dts:"export * from './estimate';\nexport * from './estimate-provider-interface';\nexport * from './rpc-estimate-provider';\nexport * from './errors';\n"},{name:"@taquito/estimate/rpc-estimate-provider.d.ts",dts:"import { DelegateParams, OriginateParams, ParamsWithKind, RegisterDelegateParams, TransferParams, RevealParams, RegisterGlobalConstantParams, TransferTicketParams, IncreasePaidStorageParams, UpdateConsensusKeyParams, SmartRollupAddMessagesParams, SmartRollupOriginateParams } from '../operations/types';\nimport { Estimate } from './estimate';\nimport { EstimationProvider } from '../estimate/estimate-provider-interface';\nimport { ContractMethod, ContractMethodObject, ContractProvider } from '../contract';\nimport { Provider } from '../provider';\nexport declare class RPCEstimateProvider extends Provider implements EstimationProvider {\n private readonly ALLOCATION_STORAGE;\n private readonly ORIGINATION_STORAGE;\n private readonly OP_SIZE_REVEAL;\n private prepare;\n private getKeys;\n private getEstimationPropertiesFromOperationContent;\n private calculateEstimates;\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for an origination operation\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation\n *\n * @param OriginationOperation Originate operation parameter\n */\n originate(params: OriginateParams): Promise;\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for an transfer operation\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation\n *\n * @param TransferOperation Originate operation parameter\n */\n transfer({ fee, storageLimit, gasLimit, ...rest }: TransferParams): Promise;\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for a transferTicket operation\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation\n *\n * @param TransferTicketParams operation parameter\n */\n transferTicket({ fee, storageLimit, gasLimit, ...rest }: TransferTicketParams): Promise;\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for a delegate operation\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation\n *\n * @param Estimate\n */\n setDelegate({ fee, gasLimit, storageLimit, ...rest }: DelegateParams): Promise;\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for a each operation in the batch\n *\n * @returns An array of Estimate objects. If a reveal operation is needed, the first element of the array is the Estimate for the reveal operation.\n */\n batch(params: ParamsWithKind[]): Promise;\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for a delegate operation\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation\n *\n * @param Estimate\n */\n registerDelegate({ fee, storageLimit, gasLimit, ...rest }: RegisterDelegateParams, source?: string): Promise;\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees to reveal the current account\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation or undefined if the account is already revealed\n *\n * @param Estimate\n */\n reveal(params?: RevealParams): Promise;\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for an registerGlobalConstant operation\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation\n *\n * @param params registerGlobalConstant operation parameter\n */\n registerGlobalConstant({ fee, storageLimit, gasLimit, ...rest }: RegisterGlobalConstantParams): Promise;\n /**\n *\n * @description Estimate gasLimit, storageLimit, and fees for an increasePaidStorage operation\n *\n * @returns An estimation of gasLimit, storageLimit, and fees for the operation\n *\n * @param params increasePaidStorage operation parameters\n */\n increasePaidStorage({ fee, storageLimit, gasLimit, ...rest }: IncreasePaidStorageParams): Promise;\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for an Update Consensus Key operation\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation\n *\n * @param Estimate\n */\n updateConsensusKey(params: UpdateConsensusKeyParams): Promise;\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for a smart_rollup_add_messages operation\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation\n *\n * @param Estimate\n */\n smartRollupAddMessages(params: SmartRollupAddMessagesParams): Promise;\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for an Smart Rollup Originate operation\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the operation\n *\n * @param SmartRollupOriginateParams\n */\n smartRollupOriginate(params: SmartRollupOriginateParams): Promise;\n /**\n *\n * @description Estimate gasLimit, storageLimit and fees for contract call\n *\n * @returns An estimation of gasLimit, storageLimit and fees for the contract call\n *\n * @param Estimate\n */\n contractCall(contractMethod: ContractMethod | ContractMethodObject): Promise;\n}\n"},{name:"@taquito/extension/extension.d.ts",dts:'import { Context } from "../context";\nexport interface Extension {\n configureContext(context: Context): void;\n}\n'},{name:"@taquito/forger/composite-forger.d.ts",dts:"import { Forger, ForgeParams, ForgeResponse } from '@taquito/local-forging';\nexport declare class CompositeForger implements Forger {\n private forgers;\n constructor(forgers: Forger[]);\n forge({ branch, contents }: ForgeParams): Promise;\n}\n"},{name:"@taquito/forger/errors.d.ts",dts:"import { TaquitoError, TezosToolkitConfigError } from '@taquito/core';\n/**\n * @category Error\n * @description Error that indicates CompositeForger.forge() results doesn't match each other\n */\nexport declare class ForgingMismatchError extends TaquitoError {\n readonly results: string[];\n constructor(results: string[]);\n}\n/**\n * @category Error\n * @description Error that indicates no forger has been configured for CompositeForger\n */\nexport declare class UnspecifiedForgerError extends TezosToolkitConfigError {\n constructor();\n}\n"},{name:"@taquito/forger/rpc-forger.d.ts",dts:"import { Forger, ForgeParams, ForgeResponse } from '@taquito/local-forging';\nimport { Context } from '../context';\nexport declare class RpcForger implements Forger {\n private context;\n constructor(context: Context);\n forge({ branch, contents }: ForgeParams): Promise;\n}\n"},{name:"@taquito/forger/taquito-local-forger.d.ts",dts:"import { Forger, ForgeParams, ForgeResponse } from '@taquito/local-forging';\nimport { Context } from '../context';\nexport declare class TaquitoLocalForger implements Forger {\n private context;\n constructor(context: Context);\n private getNextProto;\n forge({ branch, contents }: ForgeParams): Promise;\n}\n"},{name:"@taquito/global-constants/default-global-constants-provider.d.ts",dts:"import { GlobalConstantHashAndValue } from '@taquito/michel-codec';\nimport { GlobalConstantHash, GlobalConstantsProvider } from './interface-global-constants-provider';\nexport declare class DefaultGlobalConstantsProvider implements GlobalConstantsProvider {\n private _globalConstantsLibrary;\n /**\n *\n * @description Allows to load global constant hashes and their corresponding Michelson JSON values\n */\n loadGlobalConstant(globalConstant: GlobalConstantHashAndValue): void;\n /**\n *\n * @description Retrieve the Michelson value of a global constant based on its hash\n *\n * @param hash a string representing the global constant hash\n * @returns Expr, the JSON Michelson value\n */\n getGlobalConstantByHash(hash: GlobalConstantHash): Promise;\n}\n"},{name:"@taquito/global-constants/errors.d.ts",dts:"import { TaquitoError, TezosToolkitConfigError } from '@taquito/core';\n/**\n * @category Error\n * @description Error that indicates that a global constant does not exist\n */\nexport declare class GlobalConstantNotFound extends TaquitoError {\n readonly hash: string;\n constructor(hash: string);\n}\n/**\n * @category Error\n * @description Error that indicates the global constant provider not being configured under TezosToolkit\n */\nexport declare class UnconfiguredGlobalConstantsProviderError extends TezosToolkitConfigError {\n constructor();\n}\n"},{name:"@taquito/global-constants/interface-global-constants-provider.d.ts",dts:'import { Expr } from "@taquito/michel-codec";\nexport type GlobalConstantHash = string;\nexport interface GlobalConstantsProvider {\n /**\n *\n * @description Retrieve the Michelson value of a global constant based on its hash\n *\n * @param hash a string representing the global constant hash\n */\n getGlobalConstantByHash(hash: GlobalConstantHash): Promise;\n}\n'},{name:"@taquito/global-constants/noop-global-constants-provider.d.ts",dts:"import { Expr } from '@taquito/michel-codec';\nimport { GlobalConstantHash, GlobalConstantsProvider } from './interface-global-constants-provider';\nexport declare class NoopGlobalConstantsProvider implements GlobalConstantsProvider {\n getGlobalConstantByHash(_hash: GlobalConstantHash): Promise;\n}\n"},{name:"@taquito/injector/helper.d.ts",dts:"import { HttpResponseError } from '@taquito/http-utils';\nexport declare function formatErrorMessage(error: HttpResponseError, stringToReplace: string): HttpResponseError;\n"},{name:"@taquito/injector/interface.d.ts",dts:"export type InjectorParams = string;\nexport type TxHash = string;\nexport interface Injector {\n inject(signedOperationBytes: InjectorParams): Promise;\n}\n"},{name:"@taquito/injector/rpc-injector.d.ts",dts:"import { Injector } from './interface';\nimport { Context } from '../context';\nexport declare class RpcInjector implements Injector {\n private context;\n constructor(context: Context);\n inject(signedOperationBytes: string): Promise;\n}\n"},{name:"@taquito/operations/ballot-operation.d.ts",dts:"import { OperationContentsAndResult, OperationContentsAndResultBallot, OperationContentsBallot } from '@taquito/rpc';\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport { ForgedBytes } from './types';\n/**\n *\n * @description BallotOperation provides utility functions to fetch a new operation of kind ballot\n *\n */\nexport declare class BallotOperation extends Operation {\n private readonly params;\n readonly source: string;\n constructor(hash: string, params: OperationContentsBallot, source: string, raw: ForgedBytes, results: OperationContentsAndResult[], context: Context);\n get operationResults(): OperationContentsAndResultBallot | undefined;\n get period(): number | undefined;\n get proposal(): string;\n get ballot(): import(\"@taquito/rpc\").BallotVote;\n}\n"},{name:"@taquito/operations/batch-operation.d.ts",dts:"import { OperationContents, OperationContentsAndResult } from '@taquito/rpc';\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport { FeeConsumingOperation, ForgedBytes, GasConsumingOperation, StorageConsumingOperation } from './types';\nexport declare class BatchOperation extends Operation implements GasConsumingOperation, StorageConsumingOperation, FeeConsumingOperation {\n private readonly params;\n readonly source: string;\n constructor(hash: string, params: OperationContents[], source: string, raw: ForgedBytes, results: OperationContentsAndResult[], context: Context);\n private sumProp;\n getOriginatedContractAddresses(): string[];\n get status(): import(\"@taquito/rpc\").OperationResultStatusEnum | \"unknown\";\n get fee(): any;\n get gasLimit(): any;\n get storageLimit(): any;\n get consumedGas(): string;\n get consumedMilliGas(): string;\n get storageDiff(): string;\n get errors(): import(\"@taquito/rpc\").TezosGenericOperationError[];\n}\n"},{name:"@taquito/operations/delegate-operation.d.ts",dts:"import { OperationContentsAndResult, OperationContentsDelegation } from '@taquito/rpc';\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport { FeeConsumingOperation, ForgedBytes, GasConsumingOperation, StorageConsumingOperation } from './types';\n/**\n * @description Delegation operation provide utility function to fetch newly issued delegation\n *\n * @warn Currently support only one delegation per operation\n */\nexport declare class DelegateOperation extends Operation implements GasConsumingOperation, StorageConsumingOperation, FeeConsumingOperation {\n private readonly params;\n readonly source: string;\n constructor(hash: string, params: OperationContentsDelegation, source: string, raw: ForgedBytes, results: OperationContentsAndResult[], context: Context);\n get operationResults(): import(\"@taquito/rpc\").OperationResultDelegation | undefined;\n get status(): import(\"@taquito/rpc\").OperationResultStatusEnum | \"unknown\";\n get delegate(): string | undefined;\n get isRegisterOperation(): boolean;\n get fee(): number;\n get gasLimit(): number;\n get storageLimit(): number;\n get consumedGas(): string | undefined;\n get consumedMilliGas(): string | undefined;\n get errors(): import(\"@taquito/rpc\").TezosGenericOperationError[] | undefined;\n}\n"},{name:"@taquito/operations/drain-delegate-operation.d.ts",dts:"import { OperationContentsAndResult, OperationContentsDrainDelegate } from '@taquito/rpc';\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport { ForgedBytes } from './types';\n/**\n *\n * @description DrainDelegateOperation provides utility functions to fetch a new operation of kind drain_delegate\n *\n */\nexport declare class DrainDelegateOperation extends Operation {\n private readonly params;\n constructor(hash: string, params: OperationContentsDrainDelegate, raw: ForgedBytes, results: OperationContentsAndResult[], context: Context);\n get operationResults(): import(\"@taquito/rpc\").OperationMetadataBalanceUpdates[] | undefined;\n get consensusKey(): string;\n get delegate(): string;\n get destination(): string;\n}\n"},{name:"@taquito/operations/errors.d.ts",dts:"import { ParameterValidationError, RpcError, TaquitoError } from '@taquito/core';\nimport { MichelsonV1ExpressionBase, OperationResultDelegation, OperationResultOrigination, OperationResultRegisterGlobalConstant, OperationResultReveal, OperationResultSmartRollupOriginate, OperationResultTransaction, OperationResultTransferTicket, PreapplyResponse, TezosGenericOperationError } from '@taquito/rpc';\nexport interface TezosOperationErrorWithMessage extends TezosGenericOperationError {\n with: MichelsonV1ExpressionBase;\n}\n/**\n * @category Error\n * @description Generic tezos error that will be thrown when a mistake occurs when doing an operation; more details here https://tezos.gitlab.io/api/errors.html\n */\nexport declare class TezosOperationError extends RpcError {\n readonly errors: TezosGenericOperationError[];\n readonly errorDetails?: string | undefined;\n id: string;\n kind: string;\n constructor(errors: TezosGenericOperationError[], errorDetails?: string | undefined);\n}\n/**\n * @category Error\n * @description Tezos error that will be thrown when a mistake happens during the preapply stage\n */\nexport declare class TezosPreapplyFailureError extends Error {\n readonly result: any;\n constructor(result: any);\n}\nexport type MergedOperationResult = OperationResultTransaction & OperationResultOrigination & OperationResultDelegation & OperationResultRegisterGlobalConstant & OperationResultTransferTicket & Partial & OperationResultReveal & {\n fee?: string;\n};\nexport declare const flattenOperationResult: (response: PreapplyResponse | PreapplyResponse[]) => MergedOperationResult[];\n/***\n * @description Flatten all error from preapply response (including internal error)\n */\nexport declare const flattenErrors: (response: PreapplyResponse | PreapplyResponse[], status?: string) => TezosGenericOperationError[];\n/**\n * @category Error\n * @description Error that indicates a general failure happening during an origination operation\n */\nexport declare class OriginationOperationError extends TaquitoError {\n readonly message: string;\n constructor(message: string);\n}\n/**\n * @category Error\n * @description Error that indicates an invalid estimate value being passed\n */\nexport declare class InvalidEstimateValueError extends ParameterValidationError {\n readonly message: string;\n constructor(message: string);\n}\n"},{name:"@taquito/operations/failing-noop-operation.d.ts",dts:"import { OpKind } from '@taquito/rpc';\n/**\n * @description FailingNoopOperation interface that contains information about a signed failing_noop operation\n */\nexport interface FailingNoopOperation {\n signedContent: {\n branch: string;\n contents: [\n {\n kind: OpKind.FAILING_NOOP;\n arbitrary: string;\n }\n ];\n };\n bytes: string;\n signature: string;\n}\n"},{name:"@taquito/operations/increase-paid-storage-operation.d.ts",dts:"import { OperationContentsAndResult, OperationContentsIncreasePaidStorage } from '@taquito/rpc';\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport { FeeConsumingOperation, ForgedBytes, GasConsumingOperation, StorageConsumingOperation } from './types';\n/**\n *\n * @description IncreasePaidStorageOperation provides utility functions to fetch a new operation of kind increase_paid_storage\n *\n */\nexport declare class IncreasePaidStorageOperation extends Operation implements GasConsumingOperation, StorageConsumingOperation, FeeConsumingOperation {\n private readonly params;\n readonly source: string;\n constructor(hash: string, params: OperationContentsIncreasePaidStorage, source: string, raw: ForgedBytes, results: OperationContentsAndResult[], context: Context);\n get operationResults(): import(\"@taquito/rpc\").OperationResultIncreasePaidStorage | undefined;\n get status(): import(\"@taquito/rpc\").OperationResultStatusEnum | \"unknown\";\n get fee(): number;\n get gasLimit(): number;\n get storageLimit(): number;\n get errors(): import(\"@taquito/rpc\").TezosGenericOperationError[] | undefined;\n get consumedMilliGas(): string | undefined;\n get amount(): string;\n get destination(): string;\n}\n"},{name:"@taquito/operations/index.d.ts",dts:"export { OpKind, withKind, ParamsWithKind, RPCOpWithFee, RPCOpWithSource, SourceKinds, GasConsumingOperation, StorageConsumingOperation, FeeConsumingOperation, OriginateParamsBase, OriginateParams, ActivationParams, RPCOriginationOperation, RPCRevealOperation, ForgedBytes, DelegateParams, RegisterDelegateParams, RPCDelegateOperation, TransferParams, RPCTransferOperation, RPCActivateOperation, RPCOperation, PrepareOperationParams, DrainDelegateParams, RPCDrainDelegateOperation, BallotParams, RPCBallotOperation, } from './types';\nexport { TezosOperationError, TezosOperationErrorWithMessage, TezosPreapplyFailureError, InvalidEstimateValueError, } from './errors';\nexport { BatchOperation } from './batch-operation';\nexport { DelegateOperation } from './delegate-operation';\nexport { OriginationOperation } from './origination-operation';\nexport { TransactionOperation } from './transaction-operation';\nexport { BallotOperation } from './ballot-operation';\nexport { DrainDelegateOperation } from './drain-delegate-operation';\nexport { Operation } from './operations';\n"},{name:"@taquito/operations/operations.d.ts",dts:'import { OperationContentsAndResult, OperationContentsAndResultReveal } from \'@taquito/rpc\';\nimport { Context } from \'../context\';\nimport { ForgedBytes } from \'./types\';\n/**\n * @description Utility class to interact with Tezos operations\n */\nexport declare class Operation {\n readonly hash: string;\n readonly raw: ForgedBytes;\n readonly results: OperationContentsAndResult[];\n protected readonly context: Context;\n private _pollingConfig$;\n private lastHead;\n private currentHead$;\n private confirmed$;\n protected _foundAt: number;\n get includedInBlock(): number;\n /**\n *\n * @param hash Operation hash\n * @param raw Raw operation that was injected\n * @param context Taquito context allowing access to rpc and signer\n * @throws {@link InvalidOperationHashError}\n */\n constructor(hash: string, raw: ForgedBytes, results: OperationContentsAndResult[], context: Context);\n get revealOperation(): false | OperationContentsAndResultReveal | undefined;\n get revealStatus(): import("@taquito/rpc").OperationResultStatusEnum | "unknown";\n get status(): import("@taquito/rpc").OperationResultStatusEnum | "unknown";\n /**\n *\n * @param confirmations [0] Number of confirmation to wait for\n * @param timeout [180] Timeout\n */\n confirmation(confirmations?: number, timeout?: number): Promise;\n}\n'},{name:"@taquito/operations/origination-operation.d.ts",dts:"import { OperationContentsAndResult, OperationContentsOrigination } from '@taquito/rpc';\nimport { Context } from '../context';\nimport { DefaultContractType } from '../contract/contract';\nimport { RpcContractProvider } from '../contract/rpc-contract-provider';\nimport { Operation } from './operations';\nimport { FeeConsumingOperation, ForgedBytes, GasConsumingOperation, StorageConsumingOperation } from './types';\n/**\n * @description Origination operation provide utility function to fetch newly originated contract\n *\n * @warn Currently support only one origination per operation\n */\nexport declare class OriginationOperation extends Operation implements GasConsumingOperation, StorageConsumingOperation, FeeConsumingOperation {\n private readonly params;\n private contractProvider;\n /**\n * @description Contract address of the newly originated contract\n */\n readonly contractAddress?: string;\n constructor(hash: string, params: OperationContentsOrigination, raw: ForgedBytes, results: OperationContentsAndResult[], context: Context, contractProvider: RpcContractProvider);\n get status(): import(\"@taquito/rpc\").OperationResultStatusEnum | \"unknown\";\n get operationResults(): import(\"@taquito/rpc\").OperationResultOrigination | undefined;\n get fee(): number;\n get gasLimit(): number;\n get storageLimit(): number;\n get consumedGas(): string | undefined;\n get consumedMilliGas(): string | undefined;\n get storageDiff(): string | undefined;\n get storageSize(): string | undefined;\n get errors(): import(\"@taquito/rpc\").TezosGenericOperationError[] | undefined;\n /**\n * @description Provide the contract abstract of the newly originated contract\n * @throws {@link OriginationOperationError}\n */\n contract(confirmations?: number, timeout?: number): Promise;\n}\n"},{name:"@taquito/operations/proposals-operation.d.ts",dts:"import { OperationContentsAndResult, OperationContentsAndResultProposals, OperationContentsProposals } from '@taquito/rpc';\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport { ForgedBytes } from './types';\n/**\n *\n * @description ProposalsOperation provides utility functions to fetch a new operation of kind proposals\n *\n */\nexport declare class ProposalsOperation extends Operation {\n private readonly params;\n readonly source: string;\n constructor(hash: string, params: OperationContentsProposals, source: string, raw: ForgedBytes, results: OperationContentsAndResult[], context: Context);\n get operationResults(): OperationContentsAndResultProposals | undefined;\n get proposals(): string[];\n get period(): number | undefined;\n}\n"},{name:"@taquito/operations/register-global-constant-operation.d.ts",dts:'import { OperationContentsAndResult, OperationContentsRegisterGlobalConstant } from \'@taquito/rpc\';\nimport { Context } from \'../context\';\nimport { Operation } from \'./operations\';\nimport { FeeConsumingOperation, ForgedBytes, GasConsumingOperation, StorageConsumingOperation } from \'./types\';\n/**\n * @description RegisterGlobalConstantOperation provides utility functions to fetch a newly issued operation of kind register_global_constant\n */\nexport declare class RegisterGlobalConstantOperation extends Operation implements GasConsumingOperation, StorageConsumingOperation, FeeConsumingOperation {\n private readonly params;\n readonly source: string;\n /**\n * @description Hash (index) of the newly registered constant\n */\n readonly globalConstantHash?: string;\n constructor(hash: string, params: OperationContentsRegisterGlobalConstant, source: string, raw: ForgedBytes, results: OperationContentsAndResult[], context: Context);\n get operationResults(): import("@taquito/rpc").OperationResultRegisterGlobalConstant | undefined;\n get status(): import("@taquito/rpc").OperationResultStatusEnum | "unknown";\n get registeredExpression(): import("@taquito/rpc").MichelsonV1Expression;\n get fee(): number;\n get gasLimit(): number;\n get storageLimit(): number;\n get errors(): import("@taquito/rpc").TezosGenericOperationError[] | undefined;\n get consumedGas(): string | undefined;\n get consumedMilliGas(): string | undefined;\n}\n'},{name:"@taquito/operations/reveal-operation.d.ts",dts:"import { OperationContentsAndResult, OperationContentsAndResultReveal, OperationContentsReveal } from '@taquito/rpc';\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport { FeeConsumingOperation, ForgedBytes, GasConsumingOperation, StorageConsumingOperation } from './types';\n/**\n * @description Reveal operation provides utility functions to fetch a newly issued revelation\n */\nexport declare class RevealOperation extends Operation implements GasConsumingOperation, StorageConsumingOperation, FeeConsumingOperation {\n private readonly params;\n readonly source: string;\n constructor(hash: string, params: OperationContentsReveal, source: string, raw: ForgedBytes, results: OperationContentsAndResult[], context: Context);\n get operationResults(): OperationContentsAndResultReveal[];\n get status(): import(\"@taquito/rpc\").OperationResultStatusEnum | \"unknown\";\n get fee(): number;\n get gasLimit(): number;\n get storageLimit(): number;\n get publicKey(): string;\n private sumProp;\n get consumedGas(): string;\n get consumedMilliGas(): string;\n get storageDiff(): string;\n get storageSize(): string;\n get errors(): import(\"@taquito/rpc\").TezosGenericOperationError[];\n}\n"},{name:"@taquito/operations/smart-rollup-add-messages-operation.d.ts",dts:"import { OperationContentsAndResult, OperationContentsSmartRollupAddMessages } from '@taquito/rpc';\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport { FeeConsumingOperation, ForgedBytes, GasConsumingOperation, StorageConsumingOperation } from './types';\n/**\n * @description SmartRollupAddMessagesOperation provides utility to fetch properties of SmartRollupAddMessages\n */\nexport declare class SmartRollupAddMessagesOperation extends Operation implements GasConsumingOperation, StorageConsumingOperation, FeeConsumingOperation {\n private readonly params;\n readonly source: string;\n constructor(hash: string, params: OperationContentsSmartRollupAddMessages, source: string, raw: ForgedBytes, results: OperationContentsAndResult[], context: Context);\n get operationResults(): import(\"@taquito/rpc\").OperationResultSmartRollupAddMessages | undefined;\n get status(): import(\"@taquito/rpc\").OperationResultStatusEnum | \"unknown\";\n get message(): string[];\n get fee(): number;\n get gasLimit(): number;\n get storageLimit(): number;\n get consumedMilliGas(): string | undefined;\n get errors(): import(\"@taquito/rpc\").TezosGenericOperationError[] | undefined;\n}\n"},{name:"@taquito/operations/smart-rollup-originate-operation.d.ts",dts:'import { OperationContentsAndResult, OperationContentsSmartRollupOriginate } from \'@taquito/rpc\';\nimport { Context } from \'../context\';\nimport { Operation } from \'./operations\';\nimport { FeeConsumingOperation, ForgedBytes, GasConsumingOperation, StorageConsumingOperation } from \'./types\';\n/**\n *\n * @description SmartRollupOriginate Operation provides utility to fetch properties for Operation of kind SmartRollupOriginate\n *\n */\nexport declare class SmartRollupOriginateOperation extends Operation implements GasConsumingOperation, StorageConsumingOperation, FeeConsumingOperation {\n private readonly params;\n readonly source: string;\n constructor(hash: string, params: OperationContentsSmartRollupOriginate, source: string, raw: ForgedBytes, results: OperationContentsAndResult[], context: Context);\n get operationResults(): import("@taquito/rpc").OperationResultSmartRollupOriginate | undefined;\n get status(): import("@taquito/rpc").OperationResultStatusEnum | "unknown";\n get fee(): number;\n get gasLimit(): number;\n get storageLimit(): number;\n get consumedMilliGas(): string | undefined;\n get pvmKind(): import("@taquito/rpc").PvmKind;\n get kernel(): string;\n get errors(): import("@taquito/rpc").TezosGenericOperationError[] | undefined;\n}\n'},{name:"@taquito/operations/transaction-operation.d.ts",dts:"import { OperationContentsAndResult, OperationContentsAndResultTransaction, OperationContentsTransaction } from '@taquito/rpc';\nimport BigNumber from 'bignumber.js';\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport { FeeConsumingOperation, ForgedBytes, GasConsumingOperation, StorageConsumingOperation } from './types';\n/**\n * @description Transaction operation provides utility functions to fetch a newly issued transaction\n *\n * @warn Currently supports one transaction per operation\n */\nexport declare class TransactionOperation extends Operation implements GasConsumingOperation, StorageConsumingOperation, FeeConsumingOperation {\n private readonly params;\n readonly source: string;\n constructor(hash: string, params: OperationContentsTransaction, source: string, raw: ForgedBytes, results: OperationContentsAndResult[], context: Context);\n get operationResults(): OperationContentsAndResultTransaction[];\n get status(): import(\"@taquito/rpc\").OperationResultStatusEnum | \"unknown\";\n get amount(): BigNumber;\n get destination(): string;\n get fee(): number;\n get gasLimit(): number;\n get storageLimit(): number;\n private sumProp;\n get consumedGas(): string;\n get consumedMilliGas(): string;\n get storageDiff(): string;\n get storageSize(): string;\n get errors(): import(\"@taquito/rpc\").TezosGenericOperationError[];\n}\n"},{name:"@taquito/operations/transfer-ticket-operation.d.ts",dts:"import { OperationContentsAndResult, OperationContentsTransferTicket } from '@taquito/rpc';\nimport { Context } from '../context';\nimport { Operation } from '../operations';\nimport { GasConsumingOperation, StorageConsumingOperation, FeeConsumingOperation, ForgedBytes } from './types';\n/**\n *\n * @description Transfer tickets from a Tezos address (tz1, tz2 or tz3) to a smart contract address (KT1) (everything on layer 1 at this step)\n *\n * @warn Currently only supports one L2 ticket holder transfer at once. ie. one collection of tickets owned by tz1, tz2 or tz3 to a smart contract.\n */\nexport declare class TransferTicketOperation extends Operation implements GasConsumingOperation, StorageConsumingOperation, FeeConsumingOperation {\n private readonly params;\n private readonly source;\n constructor(hash: string, params: OperationContentsTransferTicket, source: string, raw: ForgedBytes, results: OperationContentsAndResult[], context: Context);\n get operationResults(): import(\"@taquito/rpc\").OperationResultTransferTicket | undefined;\n get status(): import(\"@taquito/rpc\").OperationResultStatusEnum | \"unknown\";\n get fee(): number;\n get gasLimit(): number;\n get storageLimit(): number;\n get consumedGas(): string | undefined;\n get consumedMilliGas(): string | undefined;\n}\n"},{name:"@taquito/operations/types.d.ts",dts:"import { OperationObject, InternalOperationResultKindEnum, OpKind, TransactionOperationParameter, MichelsonV1Expression, BallotVote, PvmKind } from '@taquito/rpc';\nimport { BlockIdentifier } from '../read-provider/interface';\nexport { OpKind } from '@taquito/rpc';\nexport type withKind = T & {\n kind: K;\n};\nexport type ParamsWithKind = withKind | withKind | withKind | withKind | withKind | withKind | withKind | withKind | withKind | withKind | withKind;\nexport type ParamsWithKindExtended = ParamsWithKind | withKind;\nexport declare const attachKind: (op: T, kind: K) => withKind;\nexport declare const findWithKind: (arr: T[], kind: K) => (T & {\n kind: K;\n}) | undefined;\nexport declare const isKind: (op: T, kind: K) => op is withKind;\nexport type RPCOpWithFee = RPCTransferOperation | RPCOriginationOperation | RPCDelegateOperation | RPCRevealOperation | RPCRegisterGlobalConstantOperation | RPCIncreasePaidStorageOperation | RPCTransferTicketOperation | RPCUpdateConsensusKeyOperation | RPCSmartRollupAddMessagesOperation | RPCSmartRollupOriginateOperation;\nexport type RPCOpWithSource = RPCTransferOperation | RPCOriginationOperation | RPCDelegateOperation | RPCRevealOperation | RPCRegisterGlobalConstantOperation | RPCIncreasePaidStorageOperation | RPCTransferTicketOperation | RPCUpdateConsensusKeyOperation | RPCSmartRollupAddMessagesOperation | RPCSmartRollupOriginateOperation;\nexport declare const isOpWithFee: (op: T) => op is withKind;\nexport declare const isOpRequireReveal: (op: T) => op is withKind;\nexport type SourceKinds = InternalOperationResultKindEnum;\nexport declare const isSourceOp: (op: T) => op is withKind;\nexport declare const hasMetadata: (op: T) => op is T & {\n metadata: K;\n};\nexport declare const hasMetadataWithResult: (op: T) => op is T & {\n metadata: {\n operation_result: K;\n };\n};\nexport declare const hasMetadataWithInternalOperationResult: (op: T) => op is T & {\n metadata: {\n internal_operation_results?: K | undefined;\n };\n};\nexport interface GasConsumingOperation {\n consumedGas?: string;\n gasLimit: number;\n}\nexport interface StorageConsumingOperation {\n storageDiff?: string;\n storageSize?: string;\n storageLimit: number;\n}\nexport interface FeeConsumingOperation {\n fee: number;\n}\nexport type OriginateParamsBase = {\n balance?: string | number;\n code: string | object[];\n delegate?: string;\n fee?: number;\n gasLimit?: number;\n storageLimit?: number;\n mutez?: boolean;\n};\n/**\n * @description Parameters for originate method\n */\nexport type OriginateParams = OriginateParamsBase & ({\n init?: never;\n /** JS representation of a storage object */\n storage: TStorage;\n} | {\n /** Initial storage object value. Either Micheline or JSON encoded */\n init: string | object;\n storage?: never;\n});\nexport interface ActivationParams {\n pkh: string;\n secret: string;\n}\n/**\n * @description RPC origination operation\n */\nexport interface RPCOriginationOperation {\n kind: OpKind.ORIGINATION;\n fee: number;\n gas_limit: number;\n storage_limit: number;\n balance: string;\n delegate?: string;\n source?: string;\n script: {\n code: any;\n storage: any;\n };\n}\n/**\n * @description RPC reveal operation\n */\nexport interface RPCRevealOperation {\n kind: OpKind.REVEAL;\n fee: number;\n public_key: string;\n source?: string;\n gas_limit: number;\n storage_limit: number;\n}\nexport interface RevealParams {\n fee?: number;\n gasLimit?: number;\n storageLimit?: number;\n}\n/**\n * @description Result of a forge operation contains the operation plus its encoded version\n */\nexport interface ForgedBytes {\n opbytes: string;\n opOb: OperationObject;\n counter: number;\n}\n/**\n * @description Parameters for setDelegate method\n */\nexport interface DelegateParams {\n source: string;\n delegate?: string;\n fee?: number;\n gasLimit?: number;\n storageLimit?: number;\n}\n/**\n * @description Parameters for registerDelegate method\n */\nexport interface RegisterDelegateParams {\n fee?: number;\n gasLimit?: number;\n storageLimit?: number;\n}\n/**\n * @description RPC delegation operation\n */\nexport interface RPCDelegateOperation {\n kind: OpKind.DELEGATION;\n source?: string;\n fee: number;\n gas_limit: number;\n storage_limit: number;\n delegate?: string;\n}\n/**\n * @description Parameters for transfer method\n */\nexport interface TransferParams {\n to: string;\n source?: string;\n amount: number;\n fee?: number;\n parameter?: TransactionOperationParameter;\n gasLimit?: number;\n storageLimit?: number;\n mutez?: boolean;\n}\n/**\n * @description RPC register global constant operation\n */\nexport interface RPCRegisterGlobalConstantOperation {\n kind: OpKind.REGISTER_GLOBAL_CONSTANT;\n fee: number;\n gas_limit: number;\n storage_limit: number;\n source: string;\n value: MichelsonV1Expression;\n}\n/**\n * @description Parameters for the `registerGlobalConstant` method\n */\nexport interface RegisterGlobalConstantParams {\n value: MichelsonV1Expression;\n source?: string;\n fee?: number;\n gasLimit?: number;\n storageLimit?: number;\n}\n/**\n * @description RPC transfer operation\n */\nexport interface RPCTransferOperation {\n kind: OpKind.TRANSACTION;\n fee: number;\n gas_limit: number;\n storage_limit: number;\n amount: string;\n source?: string;\n destination: string;\n parameters?: TransactionOperationParameter;\n}\n/**\n * @description RPC activate account operation\n */\nexport interface RPCActivateOperation {\n kind: OpKind.ACTIVATION;\n pkh: string;\n secret: string;\n}\n/**\n * @description Parameters for the transferTicket contract provider\n */\nexport interface TransferTicketParams {\n source?: string;\n fee?: number;\n gasLimit?: number;\n storageLimit?: number;\n ticketContents: MichelsonV1Expression;\n ticketTy: MichelsonV1Expression;\n ticketTicketer: string;\n ticketAmount: number;\n destination: string;\n entrypoint: string;\n}\n/**\n * @description Rpc transfer-ticket operation\n */\nexport interface RPCTransferTicketOperation {\n kind: OpKind.TRANSFER_TICKET;\n source?: string;\n fee: number;\n gas_limit: number;\n storage_limit: number;\n ticket_contents: MichelsonV1Expression;\n ticket_ty: MichelsonV1Expression;\n ticket_ticketer: string;\n ticket_amount: number;\n destination: string;\n entrypoint: string;\n}\n/**\n * @description Parameters for the increasePaidStorage method\n */\nexport interface IncreasePaidStorageParams {\n source?: string;\n fee?: number;\n gasLimit?: number;\n storageLimit?: number;\n amount: number;\n destination: string;\n}\n/**\n * @description RPC IncreasePaidStorage operation\n */\nexport interface RPCIncreasePaidStorageOperation {\n kind: OpKind.INCREASE_PAID_STORAGE;\n source: string;\n fee: number;\n gas_limit: number;\n storage_limit: number;\n amount: number;\n destination: string;\n}\n/**\n * @description Parameters for the DrainDelegate method\n */\nexport interface DrainDelegateParams {\n consensus_key: string;\n delegate: string;\n destination: string;\n}\n/**\n * @description RPC DrainDelegate operation\n */\nexport interface RPCDrainDelegateOperation {\n kind: OpKind.DRAIN_DELEGATE;\n consensus_key: string;\n delegate: string;\n destination: string;\n}\n/**\n * @description Ballot operation params\n */\nexport interface BallotParams {\n source?: string;\n proposal: string;\n ballot: BallotVote;\n}\nexport interface RPCBallotOperation {\n kind: OpKind.BALLOT;\n source: string;\n period: number;\n proposal: string;\n ballot: BallotVote;\n}\nexport interface ProposalsParams {\n source?: string;\n proposals: string[];\n}\nexport interface RPCProposalsOperation {\n kind: OpKind.PROPOSALS;\n source: string;\n period: number;\n proposals: string[];\n}\nexport interface UpdateConsensusKeyParams {\n source?: string;\n fee?: number;\n gasLimit?: number;\n storageLimit?: number;\n pk: string;\n}\nexport interface RPCUpdateConsensusKeyOperation {\n kind: OpKind.UPDATE_CONSENSUS_KEY;\n source: string;\n fee: number;\n gas_limit: number;\n storage_limit: number;\n pk: string;\n}\nexport interface RPCSmartRollupAddMessagesOperation {\n kind: OpKind.SMART_ROLLUP_ADD_MESSAGES;\n source: string;\n fee: number;\n gas_limit: number;\n storage_limit: number;\n message: string[];\n}\nexport interface SmartRollupAddMessagesParams {\n source?: string;\n fee?: number;\n gasLimit?: number;\n storageLimit?: number;\n message: string[];\n}\nexport interface SmartRollupOriginateParams {\n source?: string;\n fee?: number;\n gasLimit?: number;\n storageLimit?: number;\n pvmKind: PvmKind;\n kernel: string;\n parametersType: MichelsonV1Expression;\n}\nexport interface RPCSmartRollupOriginateOperation {\n kind: OpKind.SMART_ROLLUP_ORIGINATE;\n source: string;\n fee: number;\n gas_limit: number;\n storage_limit: number;\n pvm_kind: PvmKind;\n kernel: string;\n parameters_ty: MichelsonV1Expression;\n}\n/**\n * @description RPC failing noop operation\n */\nexport interface RPCFailingNoopOperation {\n kind: OpKind.FAILING_NOOP;\n arbitrary: string;\n}\n/**\n * @description Parameters for the `failingNoop` method\n */\nexport interface FailingNoopParams {\n arbitrary: string;\n basedOnBlock: BlockIdentifier;\n}\nexport type RPCOperation = RPCOriginationOperation | RPCTransferOperation | RPCDelegateOperation | RPCRevealOperation | RPCActivateOperation | RPCRegisterGlobalConstantOperation | RPCTransferTicketOperation | RPCIncreasePaidStorageOperation | RPCDrainDelegateOperation | RPCBallotOperation | RPCProposalsOperation | RPCUpdateConsensusKeyOperation | RPCSmartRollupAddMessagesOperation | RPCFailingNoopOperation | RPCSmartRollupOriginateOperation;\nexport type PrepareOperationParams = {\n operation: RPCOperation | RPCOperation[];\n source?: string;\n};\n"},{name:"@taquito/operations/update-consensus-key-operation.d.ts",dts:"import { OperationContentsAndResult, OperationContentsUpdateConsensusKey } from '@taquito/rpc';\nimport { Context } from '../context';\nimport { Operation } from './operations';\nimport { FeeConsumingOperation, ForgedBytes, GasConsumingOperation, StorageConsumingOperation } from './types';\n/**\n *\n * @description UpdateConsensusKeyOperation provides utility to fetch properties for Operation of kind UpdateConsensusKey\n *\n */\nexport declare class UpdateConsensusKeyOperation extends Operation implements GasConsumingOperation, StorageConsumingOperation, FeeConsumingOperation {\n private readonly params;\n readonly source: string;\n constructor(hash: string, params: OperationContentsUpdateConsensusKey, source: string, raw: ForgedBytes, results: OperationContentsAndResult[], context: Context);\n get operationResults(): import(\"@taquito/rpc\").OperationResultUpdateConsensusKey | undefined;\n get status(): import(\"@taquito/rpc\").OperationResultStatusEnum | \"unknown\";\n get fee(): number;\n get gasLimit(): number;\n get storageLimit(): number;\n get pk(): string;\n get consumedMilliGas(): string | undefined;\n get errors(): import(\"@taquito/rpc\").TezosGenericOperationError[] | undefined;\n}\n"},{name:"@taquito/packer/interface.d.ts",dts:"import { PackDataParams, PackDataResponse } from '@taquito/rpc';\nexport interface Packer {\n packData(data: PackDataParams): Promise;\n}\n"},{name:"@taquito/packer/michel-codec-packer.d.ts",dts:"import { Packer } from './interface';\nimport { PackDataResponse, PackDataParams } from '@taquito/rpc';\nexport declare class MichelCodecPacker implements Packer {\n packData(data: PackDataParams): Promise;\n}\n"},{name:"@taquito/packer/rpc-packer.d.ts",dts:"import { Packer } from './interface';\nimport { Context } from '../context';\nimport { PackDataParams, PackDataResponse } from '@taquito/rpc';\nexport declare class RpcPacker implements Packer {\n private context;\n constructor(context: Context);\n packData(data: PackDataParams): Promise;\n}\n"},{name:"@taquito/parser/interface.d.ts",dts:"import { OriginateParams } from '../operations/types';\nexport interface ParserProvider {\n prepareCodeOrigination(params: OriginateParams): Promise;\n}\n"},{name:"@taquito/parser/michel-codec-parser.d.ts",dts:"import { Context } from '../context';\nimport { ParserProvider } from './interface';\nimport { Expr } from '@taquito/michel-codec';\nimport { OriginateParams } from '../operations/types';\nexport declare class MichelCodecParser implements ParserProvider {\n private context;\n constructor(context: Context);\n private getNextProto;\n parseScript(src: string): Promise;\n parseMichelineExpression(src: string): Promise;\n parseJSON(src: object): Promise;\n prepareCodeOrigination(params: OriginateParams): Promise;\n private formatCodeParam;\n private formatInitParam;\n private findGlobalConstantsHashAndValue;\n}\n"},{name:"@taquito/parser/noop-parser.d.ts",dts:'import { OriginateParams } from "../operations/types";\nimport { ParserProvider } from "./interface";\nexport declare class NoopParser implements ParserProvider {\n prepareCodeOrigination(params: OriginateParams): Promise;\n}\n'},{name:"@taquito/prepare/index.d.ts",dts:"export * from './interface';\nexport * from './prepare-provider';\n"},{name:"@taquito/prepare/interface.d.ts",dts:"import { OperationContents, PreapplyParams } from '@taquito/rpc';\nimport { BallotParams, DelegateParams, DrainDelegateParams, IncreasePaidStorageParams, OriginateParams, ProposalsParams, RegisterGlobalConstantParams, RevealParams, TransferParams, TransferTicketParams, UpdateConsensusKeyParams, ActivationParams } from '../operations/types';\nimport { ContractMethod } from '../contract/contract-methods/contract-method-flat-param';\nimport { ContractMethodObject } from '../contract/contract-methods/contract-method-object-param';\nimport { ContractProvider } from '../contract/interface';\nimport { ParamsWithKind } from '../operations/types';\nimport { ForgeParams } from '@taquito/local-forging';\n/**\n * @description PrepareProvider is a utility class to output the prepared format of an operation\n */\nexport interface PreparationProvider {\n /**\n * @description Method to prepare an activation operation\n * @param operation RPCOperation object or RPCOperation array\n * @param source string or undefined source pkh\n * @returns a PreparedOperation object\n */\n activate(params: ActivationParams): Promise;\n /**\n *\n * @description Method to prepare a reveal operation\n * @param params reveal operation parameters\n * @param source string or undefined source pkh\n * @returns a PreparedOperation object\n */\n reveal(params: RevealParams): Promise;\n /**\n * @description Method to prepare an origination operation\n * @param params originate operation parameters\n * @param source string or undefined source pkh\n * @returns a PreparedOperation object\n */\n originate(params: OriginateParams): Promise;\n /**\n *\n * @description Method to prepare a transaction operation\n *\n * @param params transaction operation parameters\n * @param source string or undefined source pkh\n *\n * @returns a PreparedOperation object\n */\n transaction(params: TransferParams): Promise;\n /**\n *\n * @description Method to prepare a delegation operation\n * @param params delegation operation parameters\n * @param source string or undefined source pkh\n * @returns a PreparedOperation object\n */\n delegation(params: DelegateParams): Promise;\n /**\n * @description Method to prepare a register_global_constant operation\n * @param params registerGlobalConstant operation parameters\n * @param source string or undefined source pkh\n * @returns a PreparedOperation object\n */\n registerGlobalConstant(params: RegisterGlobalConstantParams): Promise;\n /**\n * @description Method to prepare an update_consensus_key operation\n * @param params updateConsensusKey operation parameters\n * @param source string or undefined source pkh\n * @returns a PreparedOperation object\n */\n updateConsensusKey(params: UpdateConsensusKeyParams): Promise;\n /**\n *\n * @description Method to prepare a transfer_ticket operation\n * @param params TransferTicketx operation parameters\n * @param source string or undefined source pkh\n * @returns a PreparedOperation object\n */\n transferTicket(params: TransferTicketParams): Promise;\n /**\n * @description Method to prepare an increase_paid_storage operation\n * @param params increasePaidStorage operation parameters\n * @param source string or undefined source pkh\n * @returns a PreparedOperation object\n */\n increasePaidStorage(params: IncreasePaidStorageParams): Promise;\n /**\n * @description Method to prepare a ballot operation\n * @param params ballot operation parameters\n * @returns a PreparedOperation object\n */\n ballot(params: BallotParams): Promise;\n /**\n *\n * @description Method to prepare a proposals operation\n * @param params proposals operation parameters\n * @returns a PreparedOperation object\n */\n proposals(params: ProposalsParams): Promise;\n /**\n * @description Method to prepare a drain_delegate operation\n * @param params drainDelegatex operation parameters\n * @returns a PreparedOperation object\n */\n drainDelegate(params: DrainDelegateParams): Promise;\n /**\n *\n * @description Method to prepare a batch operation\n * @param params x operation parameters\n * @returns a PreparedOperation object\n */\n batch(batchParams: ParamsWithKind[]): Promise;\n /**\n * @description Method to prepare a contract call (transfer) operation\n * @param contractMethod ContractMethod or ContractMethodObject retrieved from smart contract\n * @returns a PreparedOperation object\n */\n contractCall(contractMethod: ContractMethod | ContractMethodObject): Promise;\n /**\n *\n * @description Method to convert a PreparedOperation to the params needed for the preapplyOperation method\n * @param prepared a Prepared Operation\n * @returns a PreapplyParams object\n */\n toPreapply(prepared: PreparedOperation): Promise;\n /**\n *\n * @description Method to convert a PreparedOperation to the params needed for forging\n * @param param a Prepared Operation\n * @returns a ForgeParams object\n */\n toForge(param: PreparedOperation): ForgeParams;\n}\nexport interface PreparedOperation {\n opOb: {\n branch: string;\n contents: OperationContents[];\n protocol: string;\n };\n counter: number;\n}\n"},{name:"@taquito/prepare/prepare-provider.d.ts",dts:"import { PreapplyParams } from '@taquito/rpc';\nimport { DelegateParams, RevealParams, RegisterGlobalConstantParams, TransferParams, OriginateParams, UpdateConsensusKeyParams, TransferTicketParams, IncreasePaidStorageParams, BallotParams, ProposalsParams, DrainDelegateParams, ParamsWithKind, SmartRollupAddMessagesParams, SmartRollupOriginateParams, RegisterDelegateParams, ActivationParams } from '../operations/types';\nimport { PreparationProvider, PreparedOperation } from './interface';\nimport { Context } from '../context';\nimport { ContractMethod } from '../contract/contract-methods/contract-method-flat-param';\nimport { ContractMethodObject } from '../contract/contract-methods/contract-method-object-param';\nimport { ContractProvider } from '../contract/interface';\nimport { DefaultContractType, ContractStorageType } from '../contract';\nimport { Estimate } from '../estimate';\nimport { ForgeParams } from '@taquito/local-forging';\nimport { Provider } from '../provider';\n/**\n * @description PrepareProvider is a utility class to output the prepared format of an operation\n */\nexport declare class PrepareProvider extends Provider implements PreparationProvider {\n #private;\n protected context: Context;\n constructor(context: Context);\n private getBlockHash;\n private getProtocolHash;\n private getHeadCounter;\n private adjustGasForBatchOperation;\n private getAccountLimits;\n private getFee;\n private getSource;\n private addRevealOperationIfNeeded;\n private getKeys;\n private convertIntoArray;\n private constructOpContents;\n /**\n *\n * @description Method to prepare an activation operation\n * @param operation RPCOperation object or RPCOperation array\n * @param source string or undefined source pkh\n * @returns a PreparedOperation object\n */\n activate({ pkh, secret }: ActivationParams): Promise;\n /**\n *\n * @description Method to prepare a reveal operation\n * @param operation RPCOperation object or RPCOperation array\n * @param source string or undefined source pkh\n * @returns a PreparedOperation object\n */\n reveal({ fee, gasLimit, storageLimit }: RevealParams): Promise;\n /**\n *\n * @description Method to prepare an origination operation\n * @param operation RPCOperation object or RPCOperation array\n * @param source string or undefined source pkh\n * @returns a PreparedOperation object\n */\n originate({ fee, storageLimit, gasLimit, ...rest }: OriginateParams>, source?: string): Promise;\n /**\n *\n * @description Method to prepare a transaction operation\n * @param operation RPCOperation object or RPCOperation array\n * @param source string or undefined source pkh\n * @returns a PreparedOperation object\n */\n transaction({ fee, storageLimit, gasLimit, ...rest }: TransferParams): Promise;\n /**\n *\n * @description Method to prepare a delegation operation\n * @param operation RPCOperation object or RPCOperation array\n * @param source string or undefined source pkh\n * @returns a PreparedOperation object\n */\n delegation({ fee, storageLimit, gasLimit, ...rest }: DelegateParams): Promise;\n /**\n *\n * @description Method to prepare a register delegate operation\n * @param operation RPCOperation object or RPCOperation array\n * @param source string or undefined source pkh\n * @returns a PreparedOperation object\n */\n registerDelegate({ fee, storageLimit, gasLimit }: RegisterDelegateParams, source?: string): Promise;\n /**\n *\n * @description Method to prepare a register_global_constant operation\n * @param operation RPCOperation object or RPCOperation array\n * @param source string or undefined source pkh\n * @returns a PreparedOperation object\n */\n registerGlobalConstant({ fee, storageLimit, gasLimit, ...rest }: RegisterGlobalConstantParams): Promise;\n /**\n *\n * @description Method to prepare an update_consensus_key operation\n * @param operation RPCOperation object or RPCOperation array\n * @param source string or undefined source pkh\n * @returns a PreparedOperation object\n */\n updateConsensusKey({ fee, storageLimit, gasLimit, ...rest }: UpdateConsensusKeyParams, source?: string): Promise;\n /**\n *\n * @description Method to prepare an increase_paid_storage operation\n * @param operation RPCOperation object or RPCOperation array\n * @param source string or undefined source pkh\n * @returns a PreparedOperation object\n */\n increasePaidStorage({ fee, storageLimit, gasLimit, ...rest }: IncreasePaidStorageParams): Promise;\n /**\n *\n * @description Method to prepare a ballot operation\n * @param operation RPCOperation object or RPCOperation array\n * @returns a PreparedOperation object\n */\n ballot(params: BallotParams): Promise;\n /**\n *\n * @description Method to prepare a proposals operation\n * @param operation RPCOperation object or RPCOperation array\n * @returns a PreparedOperation object\n */\n proposals(params: ProposalsParams): Promise;\n /**\n *\n * @description Method to prepare a drain_delegate operation\n * @param operation RPCOperation object or RPCOperation array\n * @returns a PreparedOperation object\n */\n drainDelegate(params: DrainDelegateParams, source?: string): Promise;\n /**\n *\n * @description Method to prepare a transfer_ticket operation\n * @param operation RPCOperation object or RPCOperation array\n * @param source string or undefined source pkh\n * @returns a PreparedOperation object\n */\n transferTicket({ fee, storageLimit, gasLimit, ...rest }: TransferTicketParams): Promise;\n /**\n *\n * @description Method to prepare a smart_rollup_add_messages operation\n * @param operation RPCOperation object or RPCOperation array\n * @param source string or undefined source pkh\n * @returns a PreparedOperation object\n */\n smartRollupAddMessages({ fee, storageLimit, gasLimit, ...rest }: SmartRollupAddMessagesParams): Promise;\n /**\n *\n * @description Method to prepare a smart_rollup_originate operation\n * @param operation RPCOperation object or RPCOperation array\n * @returns a PreparedOperation object\n */\n smartRollupOriginate({ fee, storageLimit, gasLimit, ...rest }: SmartRollupOriginateParams): Promise;\n /**\n *\n * @description Method to prepare a batch operation\n * @param operation RPCOperation object or RPCOperation array\n * @returns a PreparedOperation object\n */\n batch(batchParams: ParamsWithKind[], estimates?: Estimate[]): Promise;\n /**\n *\n * @description Method to prepare a batch operation\n * @param operation RPCOperation object or RPCOperation array\n * @returns a PreparedOperation object\n */\n contractCall(contractMethod: ContractMethod | ContractMethodObject): Promise;\n /**\n *\n * @description Method to convert a PreparedOperation to the params needed for the preapplyOperation method\n * @param prepared a Prepared Operation\n * @returns a PreapplyParams object\n */\n toPreapply(prepared: PreparedOperation): Promise;\n /**\n *\n * @description Method to convert a PreparedOperation to the params needed for forging\n * @param param a Prepared Operation\n * @returns a ForgeParams object\n */\n toForge({ opOb: { contents, branch } }: PreparedOperation): ForgeParams;\n}\n"},{name:"@taquito/read-provider/interface.d.ts",dts:"import { BlockResponse, EntrypointsResponse, MichelsonV1Expression, SaplingDiffResponse, ScriptedContracts } from '@taquito/rpc';\nimport BigNumber from 'bignumber.js';\nexport type BigMapQuery = {\n id: string;\n expr: string;\n};\nexport type SaplingStateQuery = {\n id: string;\n};\nexport type BlockIdentifier = 'head' | `head~${number}` | `B${string}` | number;\nexport interface TzReadProvider {\n /**\n * @description Access the balance of a contract.\n * @param address address from which we want to retrieve the balance\n * @param block from which we want to retrieve the balance\n * @returns the balance in mutez\n */\n getBalance(address: string, block: BlockIdentifier): Promise;\n /**\n * @description Access the delegate of a contract, if any.\n * @param address contract address from which we want to retrieve the delegate (baker)\n * @param block from which we want to retrieve the delegate\n * @returns the public key hash of the delegate or null if no delegate\n */\n getDelegate(address: string, block: BlockIdentifier): Promise;\n /**\n * @description Access the next protocol hash\n * @param block from which we want to retrieve the next protocol hash\n */\n getNextProtocol(block: BlockIdentifier): Promise;\n /**\n * @description Access protocol constants used in Taquito\n * @param block from which we want to retrieve the constants\n */\n getProtocolConstants(block: BlockIdentifier): Promise<{\n time_between_blocks?: BigNumber[];\n minimal_block_delay?: BigNumber;\n hard_gas_limit_per_operation: BigNumber;\n hard_gas_limit_per_block: BigNumber;\n hard_storage_limit_per_operation: BigNumber;\n cost_per_byte: BigNumber;\n smart_rollup_origination_size: number;\n }>;\n /**\n * @description Access the script (code and storage) of a smart contract\n * @param contract contract address from which we want to retrieve the script\n * @param block from which we want to retrieve the storage value\n * @returns Note: The code must be in the JSON format and not contain global constant\n */\n getScript(contract: string, block: BlockIdentifier): Promise;\n /**\n * @description Access the storage of a contract\n * @param contract contract address from which we want to retrieve the storage\n * @param block from which we want to retrieve the storage value\n */\n getStorage(contract: string, block: BlockIdentifier): Promise;\n /**\n * @description Access the block hash\n */\n getBlockHash(block: BlockIdentifier): Promise;\n /**\n * @description Access the block level\n */\n getBlockLevel(block: BlockIdentifier): Promise;\n /**\n * @description Access the counter of an address\n * @param pkh from which we want to retrieve the counter\n * @param block from which we want to retrieve the counter\n */\n getCounter(pkh: string, block: BlockIdentifier): Promise;\n /**\n * @description Access the timestamp of a block\n * @param block from which we want to retrieve the timestamp\n * @returns date ISO format zero UTC offset (\"2022-01-19T22:37:07Z\")\n */\n getBlockTimestamp(block: BlockIdentifier): Promise;\n /**\n * @description Access the value associated with a key in a big map.\n * @param bigMapQuery Big Map ID and Expression hash to query (A b58check encoded Blake2b hash of the expression)\n * @param block from which we want to retrieve the big map value\n */\n getBigMapValue(bigMapQuery: BigMapQuery, block: BlockIdentifier): Promise;\n /**\n * @description Access the value associated with a sapling state ID.\n * @param id Sapling state ID\n * @param block from which we want to retrieve the sapling state\n */\n getSaplingDiffById(saplingStateQuery: SaplingStateQuery, block: BlockIdentifier): Promise;\n /**\n * @description Access the sapling state of a smart contract.\n * @param contractAddress The address of the smart contract\n * @param block The block you want to retrieve the sapling state from\n */\n getSaplingDiffByContract(contractAddress: string, block: BlockIdentifier): Promise;\n /**\n * @description Return the list of entrypoints of the contract\n * @param contract address of the contract we want to get the entrypoints of\n */\n getEntrypoints(contract: string): Promise;\n /**\n * @description Access the chain id\n */\n getChainId(): Promise;\n /**\n * @description Indicate if an account is revealed\n * @param publicKeyHash of the account\n * @param block from which we want to know if the account is revealed\n */\n isAccountRevealed(publicKeyHash: string, block: BlockIdentifier): Promise;\n /**\n * @description Return all the information about a block\n * @param block from which we want to retrieve the information\n */\n getBlock(block: BlockIdentifier): Promise;\n /**\n * @description Return a list of the ancestors of the given block which, if referred to as the branch in an operation header, are recent enough for that operation to be included in the current block.\n * @param block from which we want to retrieve the information\n */\n getLiveBlocks(block: BlockIdentifier): Promise;\n}\n"},{name:"@taquito/read-provider/rpc-read-adapter.d.ts",dts:"import { BlockResponse, EntrypointsResponse, MichelsonV1Expression, RpcClientInterface, SaplingDiffResponse, ScriptedContracts } from '@taquito/rpc';\nimport BigNumber from 'bignumber.js';\nimport { BigMapQuery, BlockIdentifier, SaplingStateQuery, TzReadProvider } from './interface';\n/**\n * @description Converts calls from TzReadProvider into calls to the wrapped RpcClient in a format it can understand.\n */\nexport declare class RpcReadAdapter implements TzReadProvider {\n private rpc;\n constructor(rpc: RpcClientInterface);\n /**\n * @description Access the balance of a contract.\n * @param address address from which we want to retrieve the balance\n * @param block from which we want to retrieve the balance\n * @returns the balance in mutez\n */\n getBalance(address: string, block: BlockIdentifier): Promise;\n /**\n * @description Access the delegate of a contract, if any.\n * @param address contract address from which we want to retrieve the delegate (baker)\n * @param block from which we want to retrieve the delegate\n * @returns the public key hash of the delegate or null if no delegate\n */\n getDelegate(address: string, block: BlockIdentifier): Promise;\n /**\n * @description Access the next protocol hash\n * @param block from which we want to retrieve the next protocol hash\n */\n getNextProtocol(block: BlockIdentifier): Promise;\n /**\n * @description Access protocol constants used in Taquito\n * @param block from which we want to retrieve the constants\n */\n getProtocolConstants(block: BlockIdentifier): Promise<{\n time_between_blocks?: BigNumber[];\n minimal_block_delay?: BigNumber | undefined;\n hard_gas_limit_per_operation: BigNumber;\n hard_gas_limit_per_block: BigNumber;\n hard_storage_limit_per_operation: BigNumber;\n cost_per_byte: BigNumber;\n smart_rollup_origination_size: number;\n }>;\n /**\n * @description Access the script (code and storage) of a smart contract\n * @param contract contract address from which we want to retrieve the script\n * @param block from which we want to retrieve the storage value\n * @returns Note: The code must be in the JSON format and not contain global constant\n */\n getScript(contract: string, block: BlockIdentifier): Promise;\n /**\n * @description Access the storage value of a contract\n * @param contract contract address from which we want to retrieve the storage\n * @param block from which we want to retrieve the storage value\n */\n getStorage(contract: string, block: BlockIdentifier): Promise;\n /**\n * @description Access the block hash\n */\n getBlockHash(block: BlockIdentifier): Promise;\n /**\n * @description Access the block level\n */\n getBlockLevel(block: BlockIdentifier): Promise;\n /**\n * @description Access the counter of an address\n * @param pkh from which we want to retrieve the counter\n * @param block from which we want to retrieve the counter\n */\n getCounter(pkh: string, block: BlockIdentifier): Promise;\n /**\n * @description Access the timestamp of a block\n * @param block from which we want to retrieve the timestamp\n * @returns date ISO format zero UTC offset (\"2022-01-19T22:37:07Z\")\n */\n getBlockTimestamp(block: BlockIdentifier): Promise;\n /**\n * @description Access the value associated with a key in a big map.\n * @param bigMapQuery Big Map ID and Expression hash to query (A b58check encoded Blake2b hash of the expression)\n * @param block from which we want to retrieve the big map value\n */\n getBigMapValue(bigMapQuery: BigMapQuery, block: BlockIdentifier): Promise;\n /**\n * @description Access the value associated with a sapling state ID.\n * @param id Sapling state ID\n * @param block from which we want to retrieve the sapling state\n */\n getSaplingDiffById(saplingStateQuery: SaplingStateQuery, block: BlockIdentifier): Promise;\n /**\n * @description Access the sapling state of a smart contract.\n * @param contractAddress The address of the smart contract\n * @param block The block you want to retrieve the sapling state from\n */\n getSaplingDiffByContract(contractAddress: string, block: BlockIdentifier): Promise;\n /**\n * @description Return the list of entrypoints of the contract\n * @param contract address of the contract we want to get the entrypoints of\n */\n getEntrypoints(contract: string): Promise;\n /**\n * @description Access the chain id\n */\n getChainId(): Promise;\n /**\n * @description Indicate if an account is revealed\n * @param publicKeyHash of the account\n * @param block from which we want to know if the account is revealed\n */\n isAccountRevealed(publicKeyHash: string, block: BlockIdentifier): Promise;\n /**\n * @description Return all the information about a block\n * @param block from which we want to retrieve the information\n */\n getBlock(block: BlockIdentifier): Promise;\n /**\n * @description Return a list of the ancestors of the given block which, if referred to as the branch in an operation header, are recent enough for that operation to be included in the current block.\n * @param block from which we want to retrieve the information\n */\n getLiveBlocks(block: BlockIdentifier): Promise;\n}\n"},{name:"@taquito/signer/errors.d.ts",dts:"import { TezosToolkitConfigError } from '@taquito/core';\n/**\n * @category Error\n * @description Error that indicates no signer has been configured in the TezosToolkit instance\n */\nexport declare class UnconfiguredSignerError extends TezosToolkitConfigError {\n constructor();\n}\n"},{name:"@taquito/signer/interface.d.ts",dts:"/**\n * @description Signer interface which is used across taquito in order to sign and inject operation\n */\nexport interface Signer {\n /**\n *\n * @param op Operation to sign\n * @param magicByte Magic bytes 11 for block, 12 for preattestation/preendorsement, 13 for attestation/endorsements, 3 for generic, 5 for the PACK format of michelson\n */\n sign(op: string, magicByte?: Uint8Array): Promise<{\n bytes: string;\n sig: string;\n prefixSig: string;\n sbytes: string;\n }>;\n /**\n * @description Return the public key of the account used by the signer\n */\n publicKey(): Promise;\n /**\n * @description Return the public key hash of the account used by the signer\n */\n publicKeyHash(): Promise;\n /**\n * @description Optionally return the secret key of the account used by the signer\n */\n secretKey(): Promise;\n}\n"},{name:"@taquito/signer/noop.d.ts",dts:"import { Signer } from './interface';\n/**\n * @description Default signer implementation which does nothing and produce invalid signature\n * @throw {@link UnconfiguredSignerError}\n */\nexport declare class NoopSigner implements Signer {\n publicKey(): Promise;\n publicKeyHash(): Promise;\n secretKey(): Promise;\n sign(_bytes: string, _watermark?: Uint8Array): Promise;\n}\n"},{name:"@taquito/subscribe/create-observable-from-subscription.d.ts",dts:"import { BlockResponse } from '@taquito/rpc';\nimport { Observable } from 'rxjs';\nimport { OperationContent, Subscription } from './interface';\nexport declare function createObservableFromSubscription(sub: Subscription): Observable;\n"},{name:"@taquito/subscribe/errors.d.ts",dts:"import { ParameterValidationError } from '@taquito/core';\nimport { FilterExpression } from '../taquito';\n/**\n * @category Error\n * @description Error that indicates an unsupported event being passed or used\n */\nexport declare class UnsupportedEventError extends ParameterValidationError {\n readonly type: string;\n constructor(type: string);\n}\n/**\n * @category Error\n * @description Error that indicates an invalid filter expression being passed or used\n */\nexport declare class InvalidFilterExpressionError extends ParameterValidationError {\n readonly invalidExpression: FilterExpression;\n constructor(invalidExpression: FilterExpression);\n}\n"},{name:"@taquito/subscribe/filters.d.ts",dts:"import { OpFilter, FilterExpression, Filter, OperationContent } from './interface';\nimport { InternalOperationResult } from '@taquito/rpc';\nexport declare const eventFilter: (result: InternalOperationResult, address?: string, tag?: string, excludeFailedOperations?: boolean) => boolean;\nexport declare const evaluateOpFilter: (op: OperationContent, filter: OpFilter) => boolean | undefined;\nexport declare const evaluateExpression: (op: OperationContent, exp: FilterExpression) => boolean;\nexport declare const evaluateFilter: (op: OperationContent, filter: Filter) => boolean;\n"},{name:"@taquito/subscribe/interface.d.ts",dts:"import { BlockResponse, InternalOperationResult, OperationEntry } from '@taquito/rpc';\nexport type FilterExpression = {\n or?: ExpressionOrOpFilter[];\n and?: ExpressionOrOpFilter[];\n};\nexport interface OpHashFilter {\n opHash: string;\n}\nexport interface SourceFilter {\n source: string;\n}\nexport interface KindFilter {\n kind: string;\n}\nexport interface DestinationFilter {\n destination: string;\n}\nexport interface EventFilter {\n address?: string;\n tag?: string;\n excludeFailedOperations?: boolean;\n}\nexport interface EventSubscription extends InternalOperationResult {\n opHash: string;\n blockHash: string;\n level: number;\n}\nexport type OpFilter = OpHashFilter | SourceFilter | KindFilter | DestinationFilter | EventFilter;\nexport type ExpressionOrOpFilter = OpFilter | FilterExpression;\nexport type Filter = ExpressionOrOpFilter | ExpressionOrOpFilter[];\nexport type OperationContent = OperationEntry['contents'][0] & {\n hash: string;\n};\nexport interface SubscribeProvider {\n subscribe(filter: 'head'): Subscription;\n subscribeBlock(filter: 'head'): Subscription;\n subscribeOperation(filter: Filter): Subscription;\n subscribeEvent(filter?: EventFilter): Subscription;\n}\nexport interface Subscription {\n on(type: 'error', cb: (error: Error) => void): void;\n on(type: 'data', cb: (data: T) => void): void;\n on(type: 'close', cb: () => void): void;\n off(type: 'error', cb: (error: Error) => void): void;\n off(type: 'data', cb: (data: T) => void): void;\n off(type: 'close', cb: () => void): void;\n close(): void;\n}\n"},{name:"@taquito/subscribe/observable-subscription.d.ts",dts:"import { Observable, OperatorFunction } from 'rxjs';\nimport { Subscription } from './interface';\nexport { UnsupportedEventError } from './errors';\nexport declare class ObservableSubscription implements Subscription {\n private shouldRetry;\n private operatorFunction;\n private errorListeners;\n private messageListeners;\n private closeListeners;\n private completed$;\n constructor(obs: Observable, shouldRetry?: boolean, operatorFunction?: OperatorFunction);\n private call;\n private remove;\n on(type: 'error', cb: (error: Error) => void): void;\n on(type: 'data', cb: (data: T) => void): void;\n on(type: 'close', cb: () => void): void;\n off(type: 'error', cb: (error: Error) => void): void;\n off(type: 'data', cb: (data: T) => void): void;\n off(type: 'close', cb: () => void): void;\n close(): void;\n}\n"},{name:"@taquito/subscribe/polling-subcribe-provider.d.ts",dts:"import { BlockResponse, InternalOperationResult } from '@taquito/rpc';\nimport { OperatorFunction } from 'rxjs';\nimport { Context } from '../context';\nimport { Filter, EventFilter, SubscribeProvider, Subscription, OperationContent } from './interface';\nexport interface PollingSubscribeProviderConfig {\n pollingIntervalMilliseconds?: number;\n shouldObservableSubscriptionRetry: boolean;\n observableSubscriptionRetryFunction: OperatorFunction;\n}\nexport declare const defaultConfigStreamer: PollingSubscribeProviderConfig;\nexport declare class PollingSubscribeProvider implements SubscribeProvider {\n private context;\n private _config$;\n private timer$;\n private newBlock$;\n constructor(context: Context, config?: Partial);\n get config(): PollingSubscribeProviderConfig;\n private getConfirmationPollingInterval;\n subscribeBlock(_filter: 'head'): Subscription;\n subscribe(_filter: 'head'): Subscription;\n subscribeOperation(filter: Filter): Subscription;\n subscribeEvent(eventFilter?: EventFilter): Subscription;\n}\n"},{name:"@taquito/tz/interface.d.ts",dts:"import BigNumber from 'bignumber.js';\nimport { Operation } from '../operations/operations';\nexport interface TzProvider {\n /**\n *\n * @param address Tezos address you want to get the balance for (eg tz1...)\n */\n getBalance(address: string): Promise;\n /**\n *\n * @param address Tezos address you want to get the delegate for (eg tz1...)\n */\n getDelegate(address: string): Promise;\n activate(pkh: string, secret: string): Promise;\n}\n"},{name:"@taquito/tz/rpc-tz-provider.d.ts",dts:"import BigNumber from 'bignumber.js';\nimport { Context } from '../context';\nimport { Operation } from '../operations/operations';\nimport { TzProvider } from './interface';\nimport { Provider } from '../provider';\nexport declare class RpcTzProvider extends Provider implements TzProvider {\n constructor(context: Context);\n private prepare;\n getBalance(address: string): Promise;\n getDelegate(address: string): Promise;\n activate(pkh: string, secret: string): Promise;\n}\n"},{name:"@taquito/wallet/batch-operation.d.ts",dts:"import { BlockResponse, OperationContentsAndResultReveal } from '@taquito/rpc';\nimport { Observable } from 'rxjs';\nimport { Context } from '../context';\nimport { WalletOperation, OperationStatus } from './operation';\nexport declare class BatchWalletOperation extends WalletOperation {\n readonly opHash: string;\n protected readonly context: Context;\n constructor(opHash: string, context: Context, newHead$: Observable);\n revealOperation(): Promise;\n getOriginatedContractAddresses: () => Promise;\n status(): Promise;\n}\n"},{name:"@taquito/wallet/delegation-operation.d.ts",dts:"import { BlockResponse, OperationContentsAndResultDelegation, OperationContentsAndResultReveal } from '@taquito/rpc';\nimport { Observable } from 'rxjs';\nimport { Context } from '../context';\nimport { WalletOperation, OperationStatus } from './operation';\nexport declare class DelegationWalletOperation extends WalletOperation {\n readonly opHash: string;\n protected readonly context: Context;\n constructor(opHash: string, context: Context, newHead$: Observable);\n revealOperation(): Promise;\n delegationOperation(): Promise;\n status(): Promise;\n}\n"},{name:"@taquito/wallet/errors.d.ts",dts:"import { TezosToolkitConfigError, NetworkError } from '@taquito/core';\n/**\n * @category Error\n * @description Error that indicates undefined confirmation has not been specified or configured\n */\nexport declare class ConfirmationUndefinedError extends TezosToolkitConfigError {\n constructor();\n}\n/**\n * @category Error\n * @description Error that indicates a generic failure when trying to fetch an observable\n */\nexport declare class ObservableError extends NetworkError {\n readonly message: string;\n constructor(message: string);\n}\n"},{name:"@taquito/wallet/increase-paid-storage-operation.d.ts",dts:"import { WalletOperation, OperationStatus } from './operation';\nimport { Context } from '../context';\nimport { Observable } from 'rxjs';\nimport { BlockResponse, OperationContentsAndResultReveal, OperationContentsAndResultIncreasePaidStorage } from '@taquito/rpc';\nexport declare class IncreasePaidStorageWalletOperation extends WalletOperation {\n readonly opHash: string;\n protected readonly context: Context;\n constructor(opHash: string, context: Context, newHead$: Observable);\n revealOperation(): Promise;\n increasePaidStorageOperation(): Promise;\n status(): Promise;\n}\n"},{name:"@taquito/wallet/index.d.ts",dts:"export * from './wallet';\nexport * from './operation';\nexport * from './transaction-operation';\nexport * from './origination-operation';\nexport * from './delegation-operation';\nexport * from './interface';\nexport * from './legacy';\n"},{name:"@taquito/wallet/interface.d.ts",dts:"import { DelegateParams, FailingNoopParams, IncreasePaidStorageParams, OriginateParams, TransferParams } from '../operations/types';\nexport type WalletDefinedFields = 'source';\nexport type WalletTransferParams = Omit;\nexport type WalletOriginateParams = Omit, WalletDefinedFields>;\nexport type WalletDelegateParams = Omit;\nexport type WalletFailingNoopParams = Omit;\nexport type WalletIncreasePaidStorageParams = Omit;\nexport interface WalletProvider {\n /**\n * @description Request the public key hash from the wallet\n */\n getPKH: () => Promise;\n /**\n * @description Get the public key from the wallet\n */\n getPK: () => Promise;\n /**\n * @description Transform WalletTransferParams into a format compliant with the underlying wallet\n */\n mapTransferParamsToWalletParams: (params: () => Promise) => Promise;\n /**\n * @description Transform WalletOriginateParams into a format compliant with the underlying wallet\n */\n mapOriginateParamsToWalletParams: (params: () => Promise) => Promise;\n /**\n * @description Transform WalletDelegateParams into a format compliant with the underlying wallet\n */\n mapDelegateParamsToWalletParams: (params: () => Promise) => Promise;\n /**\n * @description Transform WalletIncreasePaidStorageParams into a format compliant with the underlying wallet\n */\n mapIncreasePaidStorageWalletParams: (params: () => Promise) => Promise;\n /**\n * @description Request the wallet to send an operation batch\n */\n sendOperations: (params: any[]) => Promise;\n /**\n * @description Request the wallet to sign a payload\n */\n sign(bytes: string, watermark?: Uint8Array): Promise;\n}\n"},{name:"@taquito/wallet/legacy.d.ts",dts:"import { Context } from '../context';\nimport { OpKind } from '../operations/types';\nimport { WalletDelegateParams, WalletIncreasePaidStorageParams, WalletOriginateParams, WalletProvider, WalletTransferParams } from './interface';\nimport { WalletParamsWithKind } from './wallet';\nexport declare class LegacyWalletProvider implements WalletProvider {\n private context;\n constructor(context: Context);\n getPKH(): Promise;\n getPK(): Promise;\n mapTransferParamsToWalletParams(params: () => Promise): Promise>;\n mapOriginateParamsToWalletParams(params: () => Promise): Promise>;\n mapDelegateParamsToWalletParams(params: () => Promise): Promise>;\n mapIncreasePaidStorageWalletParams(params: () => Promise): Promise>;\n sendOperations(params: WalletParamsWithKind[]): Promise;\n sign(bytes: string, watermark?: Uint8Array): Promise;\n}\n"},{name:"@taquito/wallet/operation-factory.d.ts",dts:"import { BlockResponse } from '@taquito/rpc';\nimport { Observable, SchedulerLike } from 'rxjs';\nimport { Context } from '../context';\nimport { BatchWalletOperation } from './batch-operation';\nimport { DelegationWalletOperation } from './delegation-operation';\nimport { IncreasePaidStorageWalletOperation } from './increase-paid-storage-operation';\nimport { WalletOperation } from './operation';\nimport { OriginationWalletOperation } from './origination-operation';\nimport { TransactionWalletOperation } from './transaction-operation';\nexport declare function timeoutAfter(timeoutMillisec: number): (source: Observable) => Observable;\nexport declare const createNewPollingBasedHeadObservable: (sharedHeadOb: Observable, context: Context, _scheduler?: SchedulerLike) => Observable;\nexport interface OperationFactoryConfig {\n blockIdentifier?: string;\n}\nexport declare class OperationFactory {\n private context;\n constructor(context: Context);\n private sharedHeadObs;\n private createNewHeadObservable;\n private createPastBlockWalker;\n private createHeadObservableFromConfig;\n createOperation(hash: string, config?: OperationFactoryConfig): Promise;\n createBatchOperation(hash: string, config?: OperationFactoryConfig): Promise;\n createTransactionOperation(hash: string, config?: OperationFactoryConfig): Promise;\n createDelegationOperation(hash: string, config?: OperationFactoryConfig): Promise;\n createOriginationOperation(hash: string, config?: OperationFactoryConfig): Promise;\n createIncreasePaidStorageOperation(hash: string, config?: OperationFactoryConfig): Promise;\n}\n"},{name:"@taquito/wallet/operation.d.ts",dts:"import { BlockResponse, OperationContentsAndResult, OperationResultStatusEnum } from '@taquito/rpc';\nimport { Observable, ReplaySubject } from 'rxjs';\nimport { Context } from '../context';\nimport { Receipt } from './receipt';\nimport { BlockIdentifier } from '../read-provider/interface';\nexport type OperationStatus = 'pending' | 'unknown' | OperationResultStatusEnum;\n/**\n * @description WalletOperation allows to monitor operation inclusion on chains and surface information related to the operation\n */\nexport declare class WalletOperation {\n readonly opHash: string;\n protected readonly context: Context;\n private _newHead$;\n protected _operationResult: ReplaySubject;\n protected _includedInBlock: ReplaySubject;\n protected _included: boolean;\n private lastHead;\n protected newHead$: Observable;\n private confirmed$;\n operationResults(): Promise;\n /**\n * @description Receipt expose the total amount of tezos token burn and spent on fees\n * The promise returned by receipt will resolve only once the transaction is included\n */\n receipt(): Promise;\n /**\n *\n * @param opHash Operation hash\n * @param raw Raw operation that was injected\n * @param context Taquito context allowing access to rpc and signer\n * @throws {InvalidOperationHashError}\n */\n constructor(opHash: string, context: Context, _newHead$: Observable);\n getCurrentConfirmation(): Promise;\n isInCurrentBranch(tipBlockIdentifier?: BlockIdentifier): Promise;\n confirmationObservable(confirmations?: number): Observable<{\n block: BlockResponse;\n expectedConfirmation: number;\n currentConfirmation: number;\n completed: boolean;\n isInCurrentBranch: () => Promise;\n }>;\n /**\n *\n * @param confirmations [0] Number of confirmation to wait for\n */\n confirmation(confirmations?: number): Promise<{\n block: BlockResponse;\n expectedConfirmation: number;\n currentConfirmation: number;\n completed: boolean;\n isInCurrentBranch: () => Promise;\n } | undefined>;\n}\n"},{name:"@taquito/wallet/origination-operation.d.ts",dts:"import { BlockResponse, OperationContentsAndResultOrigination, OperationContentsAndResultReveal } from '@taquito/rpc';\nimport { Observable } from 'rxjs';\nimport { Context } from '../context';\nimport { DefaultWalletType } from '../contract/contract';\nimport { WalletOperation, OperationStatus } from './operation';\nexport declare class OriginationWalletOperation extends WalletOperation {\n readonly opHash: string;\n protected readonly context: Context;\n constructor(opHash: string, context: Context, newHead$: Observable);\n originationOperation(): Promise;\n revealOperation(): Promise;\n status(): Promise;\n contract(): Promise;\n}\n"},{name:"@taquito/wallet/receipt.d.ts",dts:"import { OperationContentsAndResult } from '@taquito/rpc';\nimport BigNumber from 'bignumber.js';\nexport interface Receipt {\n totalFee: BigNumber;\n totalGas: BigNumber;\n totalMilliGas: BigNumber;\n totalStorage: BigNumber;\n totalAllocationBurn: BigNumber;\n totalOriginationBurn: BigNumber;\n totalPaidStorageDiff: BigNumber;\n totalStorageBurn: BigNumber;\n}\nexport declare const receiptFromOperation: (op: OperationContentsAndResult[], { ALLOCATION_BURN, ORIGINATION_BURN }?: {\n ALLOCATION_BURN: number;\n ORIGINATION_BURN: number;\n}) => Receipt;\n"},{name:"@taquito/wallet/transaction-operation.d.ts",dts:"import { WalletOperation, OperationStatus } from './operation';\nimport { Context } from '../context';\nimport { Observable } from 'rxjs';\nimport { BlockResponse, OperationContentsAndResultReveal, OperationContentsAndResultTransaction } from '@taquito/rpc';\nexport declare class TransactionWalletOperation extends WalletOperation {\n readonly opHash: string;\n protected readonly context: Context;\n constructor(opHash: string, context: Context, newHead$: Observable);\n revealOperation(): Promise;\n transactionOperation(): Promise;\n status(): Promise;\n}\n"},{name:"@taquito/wallet/wallet.d.ts",dts:"import { Context } from '../context';\nimport { ContractAbstraction, ContractStorageType, DefaultWalletType, SendParams } from '../contract';\nimport { ContractMethod } from '../contract/contract-methods/contract-method-flat-param';\nimport { ContractMethodObject } from '../contract/contract-methods/contract-method-object-param';\nimport { OpKind, withKind } from '../operations/types';\nimport { OriginationWalletOperation } from './origination-operation';\nimport { WalletDelegateParams, WalletFailingNoopParams, WalletIncreasePaidStorageParams, WalletOriginateParams, WalletProvider, WalletTransferParams } from './interface';\nexport interface PKHOption {\n forceRefetch?: boolean;\n}\nexport type WalletParamsWithKind = withKind | withKind | withKind | withKind;\nexport declare class WalletOperationBatch {\n private walletProvider;\n private context;\n private operations;\n constructor(walletProvider: WalletProvider, context: Context);\n /**\n *\n * @description Add a transaction operation to the batch\n *\n * @param params Transfer operation parameter\n */\n withTransfer(params: WalletTransferParams): this;\n /**\n *\n * @description Add a contract call to the batch\n *\n * @param params Call a contract method\n * @param options Generic operation parameters\n */\n withContractCall(params: ContractMethod | ContractMethodObject, options?: Partial): this;\n /**\n *\n * @description Add a delegation operation to the batch\n *\n * @param params Delegation operation parameter\n */\n withDelegation(params: WalletDelegateParams): this;\n /**\n *\n * @description Add an origination operation to the batch\n *\n * @param params Origination operation parameter\n */\n withOrigination(params: WalletOriginateParams>): this;\n /**\n *\n * @description Add an IncreasePaidStorage operation to the batch\n *\n * @param param IncreasePaidStorage operation parameter\n */\n withIncreasePaidStorage(params: WalletIncreasePaidStorageParams): this;\n private mapOperation;\n /**\n *\n * @description Add a group operation to the batch. Operation will be applied in the order they are in the params array\n *\n * @param params Operations parameter\n * @throws {@link InvalidOperationKindError}\n */\n with(params: WalletParamsWithKind[]): this;\n /**\n *\n * @description Submit batch operation to wallet\n *\n */\n send(): Promise;\n}\nexport declare class Wallet {\n private context;\n constructor(context: Context);\n private get walletProvider();\n private _pkh?;\n private _pk?;\n /**\n * @description Retrieve the PKH of the account that is currently in use by the wallet\n *\n * @param option Option to use while fetching the PKH.\n * If forceRefetch is specified the wallet provider implementation will refetch the PKH from the wallet\n */\n pkh({ forceRefetch }?: PKHOption): Promise;\n /**\n * @description Retrieve the PK of the account that is currently in use by the wallet\n *\n * @param option Option to use while fetching the PK.\n * If forceRefetch is specified the wallet provider implementation will refetch the PK from the wallet\n */\n pk({ forceRefetch }?: PKHOption): Promise;\n private walletCommand;\n /**\n *\n * @description Originate a new contract according to the script in parameters.\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param originateParams Originate operation parameter\n */\n originate(params: WalletOriginateParams>): {\n send: () => Promise>;\n };\n /**\n *\n * @description Set the delegate for a contract.\n *\n * @returns An operation handle with the result from the rpc node\n *\n * @param delegateParams operation parameter\n */\n setDelegate(params: WalletDelegateParams): {\n send: () => Promise;\n };\n /**\n *\n * @description failing_noop operation that is guaranteed to fail. DISCLAIMER: Not all wallets support signing failing_noop operations.\n *\n * @returns Signature for a failing_noop\n *\n * @param params operation parameter\n */\n signFailingNoop(params: WalletFailingNoopParams): Promise<{\n signature: string;\n bytes: string;\n signedContent: {\n branch: string;\n contents: {\n kind: OpKind;\n arbitrary: string;\n }[];\n };\n }>;\n /**\n *\n * @description Register the current address as delegate.\n *\n * @returns An operation handle with the result from the rpc node\n *\n */\n registerDelegate(): {\n send: () => Promise;\n };\n /**\n *\n * @description Transfer tezos tokens from current address to a specific address or call a smart contract.\n *\n * @returns A wallet command from which we can send the operation to the wallet\n *\n * @param params operation parameter\n */\n transfer(params: WalletTransferParams): {\n send: () => Promise;\n };\n /**\n *\n * @description\n *\n * @returns\n *\n * @param params\n */\n increasePaidStorage(params: WalletIncreasePaidStorageParams): {\n send: () => Promise;\n };\n /**\n *\n * @description Create a batch of operation\n *\n * @returns A batch object from which we can add more operation or send a command to the wallet to execute the batch\n *\n * @param params List of operation to initialize the batch with\n */\n batch(params?: Parameters[0]): WalletOperationBatch;\n /**\n *\n * @description Create an smart contract abstraction for the address specified. Calling entrypoints with the returned\n * smart contract abstraction will leverage the wallet provider to make smart contract calls\n *\n * @param address Smart contract address\n * @throws {@link InvalidContractAddressError} If the contract address is not valid\n */\n at>(address: string, contractAbstractionComposer?: (abs: ContractAbstraction, context: Context) => T): Promise;\n /**\n * @deprecated Deprecated in favor of {@link Wallet.pk} will be removed in v19.1\n * @description Retrieve the PK of the account that is currently in use by the wallet\n */\n getPK(): Promise;\n}\n"},{name:"@taquito/constants.d.ts",dts:'export declare const DEFAULT_GAS_LIMIT: {\n DELEGATION: number;\n ORIGINATION: number;\n TRANSFER: number;\n REVEAL_TZ1: number;\n REVEAL_TZ2: number;\n REVEAL_TZ3: number;\n REVEAL_TZ4: number;\n};\nexport declare const DEFAULT_FEE: {\n DELEGATION: number;\n ORIGINATION: number;\n TRANSFER: number;\n REVEAL: number;\n};\nexport declare const DEFAULT_STORAGE_LIMIT: {\n DELEGATION: number;\n ORIGINATION: number;\n TRANSFER: number;\n REVEAL: number;\n};\nexport declare const COST_PER_BYTE = 250;\nexport declare enum Protocols {\n Pt24m4xi = "Pt24m4xiPbLDhVgVfABUjirbmda3yohdN82Sp9FeuAXJ4eV9otd",\n PsBABY5H = "PsBABY5HQTSkA4297zNHfsZNKtxULfL18y95qb3m53QJiXGmrbU",\n PsBabyM1 = "PsBabyM1eUXZseaJdmXFApDSBqj8YBfwELoxZHHW77EMcAbbwAS",\n PsCARTHA = "PsCARTHAGazKbHtnKfLzQg3kms52kSRpgnDY982a9oYsSXRLQEb",\n PsDELPH1 = "PsDELPH1Kxsxt8f9eWbxQeRxkjfbxoqM52jvs5Y5fBxWWh4ifpo",\n PtEdo2Zk = "PtEdo2ZkT9oKpimTah6x2embF25oss54njMuPzkJTEi5RqfdZFA",\n PsFLorena = "PsFLorenaUUuikDWvMDr6fGBRG8kt3e3D3fHoXK1j1BFRxeSH4i",\n PtGRANADs = "PtGRANADsDU8R9daYKAgWnQYAJ64omN1o3KMGVCykShA97vQbvV",\n PtHangz2 = "PtHangz2aRngywmSRGGvrcTyMbbdpWdpFKuS4uMWxg2RaH9i1qx",\n PsiThaCa = "PsiThaCaT47Zboaw71QWScM8sXeMM7bbQFncK9FLqYc6EKdpjVP",\n Psithaca2 = "Psithaca2MLRFYargivpo7YvUr7wUDqyxrdhC5CQq78mRvimz6A",\n PtJakart2 = "PtJakart2xVj7pYXJBXrqHgd82rdkLey5ZeeGwDgPp9rhQUbSqY",\n PtKathman = "PtKathmankSpLLDALzWw7CGD2j2MtyveTwboEYokqUCP4a1LxMg",\n PtLimaPtL = "PtLimaPtLMwfNinJi9rCfDPWea8dFgTZ1MeJ9f1m2SRic6ayiwW",\n PtMumbaii = "PtMumbaiiFFEGbew1rRjzSPyzRbA51Tm3RVZL5suHPxSZYDhCEc",\n PtMumbai2 = "PtMumbai2TmsJHNGRkD8v8YDbtao7BLUC3wjASn1inAKLFCjaH1",\n PtNairobi = "PtNairobiyssHuh87hEhfVBGCVrK3WnS8Z2FT4ymB5tAa4r1nQf",\n ProxfordY = "ProxfordYmVfjWnRcgjWH36fW6PArwqykTFzotUxRs6gmTcZDuH",\n ProtoALpha = "ProtoALphaALphaALphaALphaALphaALphaALphaALphaDdp3zK"\n}\nexport declare const protocols: {\n \'004\': Protocols[];\n \'005\': Protocols[];\n \'006\': Protocols[];\n \'007\': Protocols[];\n \'008\': Protocols[];\n \'009\': Protocols[];\n \'010\': Protocols[];\n \'011\': Protocols[];\n \'012\': Protocols[];\n \'013\': Protocols[];\n \'014\': Protocols[];\n \'015\': Protocols[];\n \'016\': Protocols[];\n \'017\': Protocols[];\n \'019\': Protocols[];\n \'020\': Protocols[];\n};\nexport declare enum ChainIds {\n MAINNET = "NetXdQprcVkpaWU",\n CARTHAGENET = "NetXjD3HPJJjmcd",\n DELPHINET = "NetXm8tYqnMWky1",\n EDONET = "NetXSgo1ZT2DRUG",\n FLORENCENET = "NetXxkAx4woPLyu",\n GRANADANET = "NetXz969SFaFn8k",\n HANGZHOUNET = "NetXZSsxBpMQeAT",\n ITHACANET = "NetXbhmtAbMukLc",\n ITHACANET2 = "NetXnHfVqm9iesp",\n JAKARTANET2 = "NetXLH1uAxK7CCh",\n KATHMANDUNET = "NetXazhm4yetmff",\n LIMANET = "NetXizpkH94bocH",\n MUMBAINET = "NetXQw6nWSnrJ5t",\n MUMBAINET2 = "NetXgbcrNtXD2yA",\n NAIROBINET = "NetXyuzvDo2Ugzb",\n OXFORDNET2 = "NetXxWsskGahzQB"\n}\nexport declare const getRevealGasLimit: (address: string) => number;\n'},{name:"@taquito/context.d.ts",dts:"import { RpcClientInterface } from '@taquito/rpc';\nimport { Protocols } from './constants';\nimport { Forger } from '@taquito/local-forging';\nimport { Injector } from './injector/interface';\nimport { Signer } from './signer/interface';\nimport { OperationFactory } from './wallet/operation-factory';\nimport { RpcTzProvider } from './tz/rpc-tz-provider';\nimport { RPCEstimateProvider } from './estimate/rpc-estimate-provider';\nimport { RpcContractProvider } from './contract/rpc-contract-provider';\nimport { RPCBatchProvider } from './batch/rpc-batch-provider';\nimport { Wallet, WalletProvider } from './wallet';\nimport { ParserProvider } from './parser/interface';\nimport { Packer } from './packer/interface';\nimport { BehaviorSubject } from 'rxjs';\nimport { GlobalConstantsProvider } from './global-constants/interface-global-constants-provider';\nimport { TzReadProvider } from './read-provider/interface';\nimport { SubscribeProvider } from './subscribe/interface';\nimport { PrepareProvider } from './prepare/prepare-provider';\nexport interface TaquitoProvider> {\n new (context: Context, ...rest: K): T;\n}\nexport interface ConfigConfirmation {\n confirmationPollingTimeoutSecond: number;\n defaultConfirmationCount: number;\n}\nexport declare const defaultConfigConfirmation: ConfigConfirmation;\n/**\n * @description Encapsulate common service used throughout different part of the library\n */\nexport declare class Context {\n private _rpc;\n private _signer;\n private _proto?;\n readonly _config: BehaviorSubject<{\n confirmationPollingTimeoutSecond: number;\n defaultConfirmationCount: number;\n }>;\n private _rpcClient;\n private _forger;\n private _parser;\n private _injector;\n private _walletProvider;\n readonly operationFactory: OperationFactory;\n private _packer;\n private providerDecorator;\n private _globalConstantsProvider;\n private _readProvider;\n private _stream;\n readonly tz: RpcTzProvider;\n readonly estimate: RPCEstimateProvider;\n readonly contract: RpcContractProvider;\n readonly prepare: PrepareProvider;\n readonly batch: RPCBatchProvider;\n readonly wallet: Wallet;\n constructor(_rpc: RpcClientInterface | string, _signer?: Signer, _proto?: Protocols | undefined, _config?: BehaviorSubject<{\n confirmationPollingTimeoutSecond: number;\n defaultConfirmationCount: number;\n }>, forger?: Forger, injector?: Injector, packer?: Packer, wallet?: WalletProvider, parser?: ParserProvider, globalConstantsProvider?: GlobalConstantsProvider, readProvider?: TzReadProvider, stream?: SubscribeProvider);\n get config(): ConfigConfirmation;\n set config(value: ConfigConfirmation);\n setPartialConfig(value: Partial): void;\n get rpc(): RpcClientInterface;\n set rpc(value: RpcClientInterface);\n get injector(): Injector;\n set injector(value: Injector);\n get forger(): Forger;\n set forger(value: Forger);\n get signer(): Signer;\n set signer(value: Signer);\n get walletProvider(): WalletProvider;\n set walletProvider(value: WalletProvider);\n set proto(value: Protocols | undefined);\n get proto(): Protocols | undefined;\n get parser(): ParserProvider;\n set parser(value: ParserProvider);\n get packer(): Packer;\n set packer(value: Packer);\n get globalConstantsProvider(): GlobalConstantsProvider;\n set globalConstantsProvider(value: GlobalConstantsProvider);\n get readProvider(): TzReadProvider;\n set readProvider(value: TzReadProvider);\n get stream(): SubscribeProvider;\n set stream(value: SubscribeProvider);\n isAnyProtocolActive(protocol?: string[]): Promise;\n isAnySignerConfigured(): boolean;\n /**\n * @description Create a copy of the current context. Useful when you have long running operation and you do not want a context change to affect the operation\n */\n clone(): Context;\n /**\n * @description Allows extensions set on the TezosToolkit to inject logic into the context\n */\n registerProviderDecorator(fx: (context: Context) => Context): void;\n /**\n * @description Applies the decorators on a cloned instance of the context and returned this cloned instance.\n * The decorators are functions that inject logic into the context.\n * They are provided by the extensions set on the TezosToolkit by calling the registerProviderDecorator method.\n */\n withExtensions: () => Context;\n}\n"},{name:"@taquito/errors.d.ts",dts:"import { ParameterValidationError, RpcError, NetworkError } from '@taquito/core';\n/**\n * @category Error\n * @description Error that indicates invalid confirmation count has been passed or configured\n */\nexport declare class InvalidConfirmationCountError extends ParameterValidationError {\n readonly invalidConfirmations: number;\n constructor(invalidConfirmations: number);\n}\n/**\n * @category Error\n * @description Error that indicates that confirmation polling timed out\n */\nexport declare class ConfirmationTimeoutError extends NetworkError {\n readonly message: string;\n constructor(message: string);\n}\n/**\n * @category Error\n * @description Error that indicates an error being returned from the RPC response\n */\nexport declare class RPCResponseError extends RpcError {\n readonly message: string;\n readonly cause?: any;\n constructor(message: string, cause?: any);\n}\n"},{name:"@taquito/provider.d.ts",dts:'import { OperationContentsAndResult, RPCRunOperationParam, RPCSimulateOperationParam, RpcClientInterface } from \'@taquito/rpc\';\nimport { Context } from \'./context\';\nimport { ForgedBytes, ParamsWithKind, RPCOperation } from \'./operations/types\';\nimport { PreparedOperation } from \'./prepare\';\nimport { Estimate } from \'./estimate\';\nexport declare abstract class Provider {\n protected context: Context;\n get rpc(): RpcClientInterface;\n get signer(): import("./taquito").Signer;\n constructor(context: Context);\n protected forge({ opOb: { branch, contents, protocol }, counter }: PreparedOperation): Promise<{\n opbytes: string;\n opOb: {\n branch: string;\n contents: import("@taquito/rpc").OperationContents[];\n protocol: string;\n };\n counter: number;\n }>;\n protected estimate({ fee, gasLimit, storageLimit, ...rest }: T, estimator: (param: T) => Promise): Promise<{\n fee: number | undefined;\n gasLimit: number | undefined;\n storageLimit: number | undefined;\n }>;\n getRPCOp(param: ParamsWithKind): Promise;\n protected runOperation(op: RPCRunOperationParam): Promise<{\n opResponse: import("@taquito/rpc").PreapplyResponse;\n op: RPCRunOperationParam;\n context: Context;\n }>;\n protected simulate(op: RPCSimulateOperationParam): Promise<{\n opResponse: import("@taquito/rpc").PreapplyResponse;\n op: RPCSimulateOperationParam;\n context: Context;\n }>;\n protected isRevealOpNeeded(op: RPCOperation[] | ParamsWithKind[], pkh: string): Promise;\n protected isAccountRevealRequired(publicKeyHash: string): Promise;\n protected isRevealRequiredForOpType(op: RPCOperation[] | ParamsWithKind[]): boolean;\n protected signAndInject(forgedBytes: ForgedBytes): Promise<{\n hash: string;\n forgedBytes: ForgedBytes;\n opResponse: OperationContentsAndResult[];\n context: Context;\n }>;\n}\n'},{name:"@taquito/taquito.d.ts",dts:"/**\n * @packageDocumentation\n * @module @taquito/taquito\n */\nimport { RpcClientInterface } from '@taquito/rpc';\nimport { Forger } from '@taquito/local-forging';\nimport { RPCBatchProvider } from './batch/rpc-batch-provider';\nimport { Protocols } from './constants';\nimport { ConfigConfirmation, TaquitoProvider } from './context';\nimport { ContractProvider } from './contract/interface';\nimport { Extension } from './extension/extension';\nimport { format } from '@taquito/utils';\nimport { GlobalConstantsProvider } from './global-constants/interface-global-constants-provider';\nimport { Packer } from './packer/interface';\nimport { TzReadProvider } from './read-provider/interface';\nimport { PreparationProvider } from './prepare/interface';\nimport { Signer } from './signer/interface';\nimport { SubscribeProvider } from './subscribe/interface';\nimport { TzProvider } from './tz/interface';\nimport { Wallet, WalletProvider } from './wallet';\nimport { OperationFactory } from './wallet/operation-factory';\nimport { EstimationProvider } from './estimate/estimate-provider-interface';\nimport { ParserProvider } from './parser/interface';\nimport { Injector } from './injector/interface';\nexport { MichelsonMap, UnitValue } from '@taquito/michelson-encoder';\nexport { Forger, ForgeParams, ForgeResponse } from '@taquito/local-forging';\nexport * from './constants';\nexport * from './context';\nexport { TaquitoProvider } from './context';\nexport * from './contract';\nexport * from './contract/big-map';\nexport { CompositeForger } from './forger/composite-forger';\nexport { RpcForger } from './forger/rpc-forger';\nexport * from './operations';\nexport { OperationBatch } from './batch/rpc-batch-provider';\nexport * from './signer/interface';\nexport * from './subscribe/interface';\nexport { SubscribeProvider } from './subscribe/interface';\nexport { PollingSubscribeProvider } from './subscribe/polling-subcribe-provider';\nexport { ObservableSubscription } from './subscribe/observable-subscription';\nexport * from './tz/interface';\nexport * from './wallet';\nexport { Extension } from './extension/extension';\nexport * from './injector/interface';\nexport * from './injector/rpc-injector';\nexport * from './parser/interface';\nexport * from './parser/michel-codec-parser';\nexport * from './parser/noop-parser';\nexport * from './packer/interface';\nexport * from './packer/michel-codec-packer';\nexport * from './packer/rpc-packer';\nexport * from './global-constants/default-global-constants-provider';\nexport * from './global-constants/errors';\nexport * from './global-constants/interface-global-constants-provider';\nexport { BigMapQuery, SaplingStateQuery, BlockIdentifier, TzReadProvider, } from './read-provider/interface';\nexport { RpcReadAdapter } from './read-provider/rpc-read-adapter';\nexport * from './estimate';\nexport { TaquitoLocalForger } from './forger/taquito-local-forger';\nexport * from './prepare';\nexport interface SetProviderOptions {\n forger?: Forger;\n wallet?: WalletProvider;\n rpc?: string | RpcClientInterface;\n readProvider?: TzReadProvider;\n stream?: string | SubscribeProvider;\n signer?: Signer;\n protocol?: Protocols;\n config?: Partial;\n packer?: Packer;\n globalConstantsProvider?: GlobalConstantsProvider;\n parserProvider?: ParserProvider;\n injectorProvider?: Injector;\n}\nexport interface VersionInfo {\n commitHash: string;\n version: string;\n}\n/**\n * @description Facade class that surfaces all of the libraries capability and allow it's configuration\n *\n * @param _rpc The RPC server to use\n */\nexport declare class TezosToolkit {\n private _rpc;\n private _options;\n private _rpcClient;\n private _wallet;\n private _context;\n /**\n * @deprecated TezosToolkit.batch has been deprecated in favor of TezosToolkit.contract.batch\n *\n */\n batch: RPCBatchProvider['batch'];\n readonly format: typeof format;\n constructor(_rpc: RpcClientInterface | string);\n /**\n * @description Sets configuration on the Tezos Taquito instance. Allows user to choose which signer, rpc client, rpc url, forger and so forth\n *\n * @param options rpc url or rpcClient to use to interact with the Tezos network\n *\n * @example Tezos.setProvider({rpc: 'https://mainnet.ecadinfra.com/', signer: new InMemorySigner.fromSecretKey(\u201cedsk...\u201d)})\n * @example Tezos.setProvider({ config: { confirmationPollingTimeoutSecond: 300 }})\n *\n */\n setProvider({ rpc, stream, signer, protocol, config, forger, wallet, packer, globalConstantsProvider, readProvider, parserProvider, injectorProvider, }: SetProviderOptions): void;\n /**\n * @description Sets signer provider on the Tezos Taquito instance.\n *\n * @param options signer to use to interact with the Tezos network\n *\n * @example Tezos.setSignerProvider(new InMemorySigner.fromSecretKey('edsk...'))\n *\n */\n setSignerProvider(signer?: SetProviderOptions['signer']): void;\n /**\n * @description Sets rpc provider on the Tezos Taquito instance\n *\n * @param options rpc url or rpcClient to use to interact with the Tezos network\n *\n * @example Tezos.setRpcProvider('https://mainnet.ecadinfra.com/')\n *\n */\n setRpcProvider(rpc?: SetProviderOptions['rpc']): void;\n /**\n * @description Sets forger provider on the Tezos Taquito instance\n * The `LocalForger` from `@taquito/local-forging` is set by default.\n *\n * @param options forger to use to interact with the Tezos network\n *\n * @example Tezos.setForgerProvider(this.getFactory(RpcForger)())\n *\n */\n setForgerProvider(forger?: SetProviderOptions['forger']): void;\n /**\n * @description Sets stream provider on the Tezos Taquito instance\n *\n * @param options stream to use to interact with the Tezos network\n *\n * @example Tezos.setStreamProvider(...)\n *\n */\n setStreamProvider(stream?: SetProviderOptions['stream']): void;\n /**\n * @description Sets wallet provider on the Tezos Taquito instance\n *\n * @param options wallet to use to interact with the Tezos network\n *\n * @example Tezos.setWalletProvider(...)\n *\n */\n setWalletProvider(wallet?: SetProviderOptions['wallet']): void;\n /**\n * @description Sets Packer provider on the Tezos Taquito instance\n *\n * @param options packer to use to interact with the Tezos network\n *\n * @example Tezos.setPackerProvider(new MichelCodecPacker())\n *\n */\n setPackerProvider(packer?: SetProviderOptions['packer']): void;\n /**\n * @description Sets global constants provider on the Tezos Taquito instance\n *\n * @param options globalConstantsProvider to use to interact with the Tezos network\n *\n * @example\n * ```\n * const globalConst = new DefaultGlobalConstantsProvider();\n * globalConst.loadGlobalConstant({\n * \"expruu5BTdW7ajqJ9XPTF3kgcV78pRiaBW3Gq31mgp3WSYjjUBYxre\": { prim: \"int\" },\n * // ...\n * })\n * Tezos.setGlobalConstantsProvider(globalConst);\n * ```\n *\n */\n setGlobalConstantsProvider(globalConstantsProvider?: SetProviderOptions['globalConstantsProvider']): void;\n /**\n * @description Sets read provider on the Tezos Taquito instance\n * By default reads are done from the RPC usign the RpcReadAdapter class, this can be overridden to read from an indexer that implements the TzReadProvider interface\n *\n * @param options TzReadProvider to use to interact with the Tezos network\n *\n */\n setReadProvider(readProvider?: SetProviderOptions['readProvider']): void;\n /**\n * @description Sets parser provider on the Tezos Taquito instance\n *\n * @param options parserProvider to use to interact with the Tezos network\n *\n */\n setParserProvider(parserProvider?: SetProviderOptions['parserProvider']): void;\n /**\n * @description Sets injector provider on the Tezos Taquito instance\n *\n * @param options Injector to use to interact with the Tezos network by default RpcInjector\n *\n */\n setInjectorProvider(injectorProvider?: SetProviderOptions['injectorProvider']): void;\n /**\n * @description Provide access to tezos account management\n */\n get tz(): TzProvider;\n /**\n * @description Provide access to smart contract utilities\n */\n get contract(): ContractProvider;\n /**\n * @description Provide access to tezos operation preparation utilities\n */\n get prepare(): PreparationProvider;\n get wallet(): Wallet;\n get operation(): OperationFactory;\n /**\n * @description Provide access to operation estimation utilities\n */\n get estimate(): EstimationProvider;\n /**\n * @description Provide access to streaming utilities backed by an streamer implementation\n */\n get stream(): SubscribeProvider;\n /**\n * @description Provide access to the currently used rpc client\n */\n get rpc(): RpcClientInterface;\n /**\n * @description Provide access to the currently used signer\n */\n get signer(): Signer;\n /**\n * @description Provide access to the currently used globalConstantsProvider\n */\n get globalConstants(): GlobalConstantsProvider;\n /**\n * @description Allow to add a module to the TezosToolkit instance. This method adds the appropriate Providers(s) required by the module to the internal context.\n *\n * @param module extension to add to the TezosToolkit instance\n *\n * @example Tezos.addExtension(new Tzip16Module());\n */\n addExtension(module: Extension | Extension[]): void;\n getFactory>(ctor: TaquitoProvider): (...args: K) => T;\n /**\n * @description Gets an object containing the version of Taquito library and git sha of the commit this library is compiled from\n */\n getVersionInfo(): VersionInfo;\n}\n"},{name:"@taquito/version.d.ts",dts:"export declare const VERSION: {\n commitHash: string;\n version: string;\n};\n"},{name:"@taquito/utils/dist/types/constants.d.ts",dts:'export declare enum Prefix {\n TZ1 = "tz1",\n TZ2 = "tz2",\n TZ3 = "tz3",\n TZ4 = "tz4",\n KT = "KT",\n KT1 = "KT1",\n EDSK2 = "edsk2",\n SPSK = "spsk",\n P2SK = "p2sk",\n EDPK = "edpk",\n SPPK = "sppk",\n P2PK = "p2pk",\n BLPK = "BLpk",\n EDESK = "edesk",\n SPESK = "spesk",\n P2ESK = "p2esk",\n EDSK = "edsk",\n EDSIG = "edsig",\n SPSIG = "spsig",\n P2SIG = "p2sig",\n SIG = "sig",\n NET = "Net",\n NCE = "nce",\n B = "B",\n O = "o",\n LO = "Lo",\n LLO = "LLo",\n P = "P",\n CO = "Co",\n ID = "id",\n EXPR = "expr",\n TZ = "TZ",\n VH = "vh",\n SASK = "sask",\n ZET1 = "zet1",\n SR1 = "sr1",\n SRC1 = "src1"\n}\nexport declare const prefix: {\n tz1: Uint8Array;\n tz2: Uint8Array;\n tz3: Uint8Array;\n tz4: Uint8Array;\n KT: Uint8Array;\n KT1: Uint8Array;\n edsk: Uint8Array;\n edsk2: Uint8Array;\n spsk: Uint8Array;\n p2sk: Uint8Array;\n edpk: Uint8Array;\n sppk: Uint8Array;\n p2pk: Uint8Array;\n BLpk: Uint8Array;\n edesk: Uint8Array;\n spesk: Uint8Array;\n p2esk: Uint8Array;\n edsig: Uint8Array;\n spsig: Uint8Array;\n p2sig: Uint8Array;\n sig: Uint8Array;\n Net: Uint8Array;\n nce: Uint8Array;\n B: Uint8Array;\n o: Uint8Array;\n Lo: Uint8Array;\n LLo: Uint8Array;\n P: Uint8Array;\n Co: Uint8Array;\n id: Uint8Array;\n expr: Uint8Array;\n TZ: Uint8Array;\n vh: Uint8Array;\n sask: Uint8Array;\n zet1: Uint8Array;\n sr1: Uint8Array;\n src1: Uint8Array;\n};\nexport declare const prefixLength: {\n [key: string]: number;\n};\n'},{name:"@taquito/utils/dist/types/errors.d.ts",dts:"import { ParameterValidationError, UnsupportedActionError } from '@taquito/core';\nexport { InvalidAddressError, InvalidBlockHashError, InvalidHexStringError, InvalidMessageError, InvalidKeyError, InvalidPublicKeyError, InvalidSignatureError, InvalidContractAddressError, InvalidChainIdError, InvalidKeyHashError, InvalidOperationHashError, InvalidOperationKindError, DeprecationError, ProhibitedActionError, } from '@taquito/core';\n/**\n * @category Error\n * @description Error that indicates invalid protocol hash being passed or used\n */\nexport declare class InvalidProtocolHashError extends ParameterValidationError {\n readonly protocolHash: string;\n readonly errorDetails?: string | undefined;\n name: string;\n constructor(protocolHash: string, errorDetails?: string | undefined);\n}\n/**\n * @category Error\n * @description Error that indicates unable to convert data type from one to another\n */\nexport declare class ValueConversionError extends UnsupportedActionError {\n readonly value: string;\n readonly desiredType: string;\n constructor(value: string, desiredType: string);\n}\n"},{name:"@taquito/utils/dist/types/format.d.ts",dts:"import BigNumber from 'bignumber.js';\ntype Format = 'tz' | 'mtz' | 'mutez';\nexport declare function format(from: Format | undefined, to: Format | undefined, amount: number | string | BigNumber): string | number | BigNumber;\nexport {};\n"},{name:"@taquito/utils/dist/types/taquito-utils.d.ts",dts:"/**\n * @packageDocumentation\n * @module @taquito/utils\n */\n/// \nimport { Buffer } from 'buffer';\nimport BigNumber from 'bignumber.js';\nexport * from './validators';\nexport { VERSION } from './version';\nexport { prefix, Prefix, prefixLength } from './constants';\nexport { verifySignature, validatePkAndExtractPrefix } from './verify-signature';\nexport * from './errors';\nexport { format } from './format';\n/**\n *\n * @description Hash a string using the BLAKE2b algorithm, base58 encode the hash obtained and appends the prefix 'expr' to it\n *\n * @param value Value in hex\n */\nexport declare function encodeExpr(value: string): string;\n/**\n *\n * @description Return the operation hash of a signed operation\n * @param value Value in hex of a signed operation\n */\nexport declare function encodeOpHash(value: string): string;\n/**\n *\n * @description Base58 encode a string or a Uint8Array and append a prefix to it\n *\n * @param value Value to base58 encode\n * @param prefix prefix to append to the encoded string\n */\nexport declare function b58cencode(value: string | Uint8Array, prefix: Uint8Array): string;\n/**\n *\n * @description Base58 decode a string and remove the prefix from it\n *\n * @param value Value to base58 decode\n * @param prefix prefix to remove from the decoded string\n */\nexport declare const b58cdecode: (enc: string, prefixArg: Uint8Array) => Uint8Array;\n/**\n *\n * @description Base58 decode a string with predefined prefix\n *\n * @param value Value to base58 decode\n */\nexport declare function b58decode(payload: string): string;\n/**\n *\n * @description b58 decode a string without predefined prefix\n * @param value\n * @returns string of bytes\n */\nexport declare function b58decodeL2Address(payload: string): string;\n/**\n *\n * @description Base58 encode an address using predefined prefix\n *\n * @param value Address to base58 encode (tz1, tz2, tz3 or KT1)\n */\nexport declare function encodePubKey(value: string): string;\n/**\n *\n * @description Base58 encode an address without predefined prefix\n * @param value Address to base58 encode (tz4) hex dec\n * @returns return address\n */\nexport declare function encodeL2Address(value: string): string;\n/**\n *\n * @description Base58 encode a key according to its prefix\n *\n * @param value Key to base58 encode\n */\nexport declare function encodeKey(value: string): string | undefined;\n/**\n *\n * @description Base58 encode a key hash according to its prefix\n *\n * @param value Key hash to base58 encode\n */\nexport declare function encodeKeyHash(value: string): string | undefined;\n/**\n *\n * @description Convert an hex string to a Uint8Array\n *\n * @param hex Hex string to convert\n * @throws {@link ValueConversionError}\n */\nexport declare const hex2buf: (hex: string) => Uint8Array;\n/**\n *\n * @description Merge 2 buffers together\n *\n * @param b1 First buffer\n * @param b2 Second buffer\n */\nexport declare const mergebuf: (b1: Uint8Array, b2: Uint8Array) => Uint8Array;\n/**\n *\n * @description Flatten a michelson json representation to an array\n *\n * @param s michelson json\n */\nexport declare const mic2arr: (s: any) => any;\n/**\n *\n * @description Convert a Uint8Array to an hex string\n *\n * @param buffer Uint8Array to convert\n */\nexport declare const buf2hex: (buffer: Uint8Array) => string;\n/**\n *\n * @description Gets Tezos address (PKH) from Public Key\n *\n * @param publicKey Public Key\n * @returns A string of the Tezos address (PKH) that was derived from the given Public Key\n */\nexport declare const getPkhfromPk: (publicKey: string) => string;\n/**\n *\n * @description Convert a string to bytes\n *\n * @param str String to convert\n */\nexport declare function char2Bytes(str: string): string;\n/**\n *\n * @description Convert bytes to a string\n *\n * @param str Bytes to convert\n */\nexport declare function bytes2Char(hex: string): string;\n/**\n *\n * @description Convert hex string/UintArray/Buffer to bytes\n *\n * @param hex String value to convert to bytes\n */\nexport declare function hex2Bytes(hex: string): Buffer;\n/**\n *\n * @description Converts a number or Bignumber to hexadecimal string\n *\n * @param val The value that will be converted to a hexadecimal string value\n */\nexport declare function toHexBuf(val: number | BigNumber, bitLength?: number): Buffer;\n/**\n *\n * @description Converts a number or BigNumber to a padded hexadecimal string\n * @param val The value that will be converted into a padded hexadecimal string value\n * @param bitLength The length of bits\n *\n */\nexport declare function num2PaddedHex(val: number | BigNumber, bitLength?: number): string;\n/**\n *\n * @description Strips the first 2 characters of a hex string (0x)\n *\n * @param hex string to strip prefix from\n */\nexport declare function stripHexPrefix(hex: string): string;\n"},{name:"@taquito/utils/dist/types/validators.d.ts",dts:"import { Prefix } from './constants';\nexport declare enum ValidationResult {\n NO_PREFIX_MATCHED = 0,\n INVALID_CHECKSUM = 1,\n INVALID_LENGTH = 2,\n VALID = 3\n}\nexport declare function isValidPrefix(value: unknown): value is Prefix;\n/**\n * @description Used to check if an address or a contract address is valid.\n *\n * @returns\n * 0 (NO_PREFIX_MATCHED), 1 (INVALID_CHECKSUM), 2 (INVALID_LENGTH) or 3 (VALID).\n *\n * @example\n * ```\n * import { validateAddress } from '@taquito/utils';\n * const pkh = 'tz1L9r8mWmRPndRhuvMCWESLGSVeFzQ9NAWx'\n * const validation = validateAddress(pkh)\n * console.log(validation)\n * // This example return 3 which correspond to VALID\n * ```\n */\nexport declare function validateAddress(value: string): ValidationResult;\n/**\n * @description Used to check if a chain id is valid.\n *\n * @returns\n * 0 (NO_PREFIX_MATCHED), 1 (INVALID_CHECKSUM), 2 (INVALID_LENGTH) or 3 (VALID).\n *\n * @example\n * ```\n * import { validateChain } from '@taquito/utils';\n * const chainId = 'NetXdQprcVkpaWU'\n * const validation = validateChain(chainId)\n * console.log(validation)\n * // This example return 3 which correspond to VALID\n * ```\n */\nexport declare function validateChain(value: string): ValidationResult;\n/**\n * @description Used to check if a contract address is valid.\n *\n * @returns\n * 0 (NO_PREFIX_MATCHED), 1 (INVALID_CHECKSUM), 2 (INVALID_LENGTH) or 3 (VALID).\n *\n * @example\n * ```\n * import { validateContractAddress } from '@taquito/utils';\n * const contractAddress = 'KT1JVErLYTgtY8uGGZ4mso2npTSxqVLDRVbC'\n * const validation = validateContractAddress(contractAddress)\n * console.log(validation)\n * // This example return 3 which correspond to VALID\n * ```\n */\nexport declare function validateContractAddress(value: string): ValidationResult;\n/**\n * @description Used to check if a key hash is valid.\n *\n * @returns\n * 0 (NO_PREFIX_MATCHED), 1 (INVALID_CHECKSUM), 2 (INVALID_LENGTH) or 3 (VALID).\n *\n * @example\n * ```\n * import { validateKeyHash } from '@taquito/utils';\n * const keyHashWithoutPrefix = '1L9r8mWmRPndRhuvMCWESLGSVeFzQ9NAWx'\n * const validation = validateKeyHash(keyHashWithoutPrefix)\n * console.log(validation)\n * // This example return 0 which correspond to NO_PREFIX_MATCHED\n * ```\n */\nexport declare function validateKeyHash(value: string): ValidationResult;\n/**\n * @description Used to check if a signature is valid.\n *\n * @returns\n * 0 (NO_PREFIX_MATCHED), 1 (INVALID_CHECKSUM), 2 (INVALID_LENGTH) or 3 (VALID).\n *\n * @example\n * ```\n * import { validateSignature } from '@taquito/utils';\n * const signature = 'edsigtkpiSSschcaCt9pUVrpNPf7TTcgvgDEDD6NCEHMy8NNQJCGnMfLZzYoQj74yLjo9wx6MPVV29CvVzgi7qEcEUok3k7AuMg'\n * const validation = validateSignature(signature)\n * console.log(validation)\n * // This example return 3 which correspond to VALID\n * ```\n */\nexport declare function validateSignature(value: string): ValidationResult;\n/**\n * @description Used to check if a public key is valid.\n *\n * @returns\n * 0 (NO_PREFIX_MATCHED), 1 (INVALID_CHECKSUM), 2 (INVALID_LENGTH) or 3 (VALID).\n *\n * @example\n * ```\n * import { validatePublicKey } from '@taquito/utils';\n * const publicKey = 'edpkvS5QFv7KRGfa3b87gg9DBpxSm3NpSwnjhUjNBQrRUUR66F7C9g'\n * const validation = validatePublicKey(publicKey)\n * console.log(validation)\n * // This example return 3 which correspond to VALID\n * ```\n */\nexport declare function validatePublicKey(value: string): ValidationResult;\n/**\n * @description Used to check if an operation hash is valid.\n *\n * @returns\n * 0 (NO_PREFIX_MATCHED), 1 (INVALID_CHECKSUM), 2 (INVALID_LENGTH) or 3 (VALID).\n *\n * @example\n * ```\n * import { validateOperation } from '@taquito/utils';\n * const operationHash = 'oo6JPEAy8VuMRGaFuMmLNFFGdJgiaKfnmT1CpHJfKP3Ye5ZahiP'\n * const validation = validateOperation(operationHash)\n * console.log(validation)\n * // This example return 3 which correspond to VALID\n * ```\n */\nexport declare function validateOperation(value: string): ValidationResult;\n/**\n * @description Used to check if a protocol hash is valid.\n *\n * @returns\n * 0 (NO_PREFIX_MATCHED), 1 (INVALID_CHECKSUM), 2 (INVALID_LENGTH) or 3 (VALID).\n *\n * @example\n * ```\n * import { validateProtocol } from '@taquito/utils';\n * const protocolHash = 'PtHangz2aRngywmSRGGvrcTyMbbdpWdpFKuS4uMWxg2RaH9i1qx'\n * const validation = validateProtocol(protocolHash)\n * console.log(validation)\n * // This example return 3 which correspond to VALID\n * ```\n */\nexport declare function validateProtocol(value: string): ValidationResult;\n/**\n * @description Used to check if a block hash is valid.\n *\n * @returns\n * 0 (NO_PREFIX_MATCHED), 1 (INVALID_CHECKSUM), 2 (INVALID_LENGTH) or 3 (VALID).\n *\n * @example\n * ```\n * import { validateBlock } from '@taquito/utils';\n * const blockHash = 'PtHangz2aRngywmSRGGvrcTyMbbdpWdpFKuS4uMWxg2RaH9i1qx'\n * const validation = validateBlock(blockHash)\n * console.log(validation)\n * // This example return 3 which correspond to VALID\n * ```\n */\nexport declare function validateBlock(value: string): ValidationResult;\n/**\n * @description Used to check if a spending key is valid.\n * @returns 0 (NO_PREFIX_MATCHED), 1 (INVALID_CHECKSUM), 2 (INVALID_LENGTH) or 3 (VALID).\n *\n */\nexport declare function validateSpendingKey(value: any): ValidationResult;\nexport declare function invalidDetail(validation: ValidationResult): string;\nexport declare function validateSmartRollupAddress(value: string): ValidationResult;\n"},{name:"@taquito/utils/dist/types/verify-signature.d.ts",dts:"import { Prefix } from './taquito-utils';\ntype PkPrefix = Prefix.EDPK | Prefix.SPPK | Prefix.P2PK | Prefix.BLPK;\n/**\n * @description Verify signature of a payload\n *\n * @param messageBytes The forged message including the magic byte (11 for block,\n * 12 for preattestation/preendorsement, 13 for attestation/endorsement, 3 for generic, 5 for the PACK format of michelson)\n * @param publicKey The public key to verify the signature against\n * @param signature The signature to verify\n * @returns A boolean indicating if the signature matches\n * @throws {@link InvalidPublicKeyError} | {@link InvalidSignatureError} | {@link InvalidMessageError}\n * @example\n * ```\n * const message = '03d0c10e3ed11d7c6e3357f6ef335bab9e8f2bd54d0ce20c482e241191a6e4b8ce6c01be917311d9ac46959750e405d57e268e2ed9e174a80794fbd504e12a4a000141eb3781afed2f69679ff2bbe1c5375950b0e40d00ff000000005e05050505050507070100000024747a32526773486e74516b72794670707352466261313652546656503539684b72654a4d07070100000024747a315a6672455263414c42776d4171776f6e525859565142445439426a4e6a42484a750001';\n * const pk = 'sppk7c7hkPj47yjYFEHX85q46sFJGw6RBrqoVSHwAJAT4e14KJwzoey';\n * const sig = 'spsig1cdLkp1RLgUHAp13aRFkZ6MQDPp7xCnjAExGL3MBSdMDmT6JgQSX8cufyDgJRM3sinFtiCzLbsyP6d365EHoNevxhT47nx'\n *\n * const response = verifySignature(message, pk, sig);\n * ```\n *\n */\nexport declare function verifySignature(messageBytes: string, publicKey: string, signature: string, watermark?: Uint8Array): boolean;\nexport declare function validatePkAndExtractPrefix(publicKey: string): PkPrefix;\nexport {};\n"},{name:"@taquito/utils/dist/types/version.d.ts",dts:"export declare const VERSION: {\n commitHash: string;\n version: string;\n};\n"},{name:"@taquito/utils/node_modules/base-x/src/index.d.ts",dts:"declare function base(ALPHABET: string): base.BaseConverter;\nexport = base;\ndeclare namespace base {\n interface BaseConverter {\n encode(buffer: Uint8Array | number[]): string;\n decodeUnsafe(string: string): Uint8Array | undefined;\n decode(string: string): Uint8Array;\n }\n}\n"},{name:"@taquito/utils/node_modules/bs58/index.d.ts",dts:"import { BaseConverter } from 'base-x';\n\ndeclare const base58: BaseConverter;\n\nexport = base58;\n"},{name:"@taquito/utils/node_modules/bs58check/index.d.ts",dts:'/// \n\ndeclare const bs58check: {\n encode(buffer: Buffer | number[] | Uint8Array): string;\n decodeUnsafe(string: string): Uint8Array | undefined;\n decode(string: string): Uint8Array;\n};\n\nexport = bs58check;\n'}];var s=t(64740),i=t(17624);const p=function(e){let n;const{colorMode:t}=(0,o.U)();return(0,i.jsx)(r.Suspense,{fallback:(0,i.jsx)("div",{children:"Loading"}),children:(0,i.jsx)(s.cp,{...e,defaultLanguage:"typescript",beforeMount:function(t){n=t,t.editor.defineTheme("vs-dark",{base:"vs-dark",inherit:!0,rules:[{background:"121212"}],colors:{"editor.background":"#121212"}}),t.languages.typescript.typescriptDefaults.setCompilerOptions({target:t.languages.typescript.ScriptTarget.ES2017,allowNonTsExtensions:!0,moduleResolution:t.languages.typescript.ModuleResolutionKind.NodeJs,module:t.languages.typescript.ModuleKind.ESNext,typeRoots:["node_modules/@types"]}),a.forEach((e=>{const n=`file:///node_modules/${e.name}`;t.languages.typescript.typescriptDefaults.addExtraLib(e.dts,n)})),e.editorWillMount&&e.editorWillMount(t)},onMount:function(t){t.setModel(n.editor.createModel(e.value,e.language,n.Uri.parse(`file:///main-${Math.random()}.ts`)))},theme:"dark"===t?"vs-dark":"light"})})}},6960:(e,n,t)=>{"use strict";t.d(n,{c:()=>o});var r=t(11504);const o=function(){if("undefined"==typeof window)return{width:999,height:999};const[e,n]=(0,r.useState)({width:window.innerWidth,height:window.innerHeight});return(0,r.useEffect)((()=>{function e(){n({width:window.innerWidth,height:window.innerHeight})}return window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)}),[]),e}},95860:(e,n,t)=>{"use strict";t.r(n),t.d(n,{default:()=>u});var r=t(11504),o=t(82084),a=t.n(o),s=t(89600),i=t(6960);const p="runbox__boR",c="row_BFIh";let l=function(e){return e[e.INIT=0]="INIT",e[e.STARTED=1]="STARTED",e[e.ENDED=2]="ENDED",e}({});var d=t(60656),m=t(75852),g=t(17624);const u=function(){if("undefined"==typeof window)return null;const e=new URLSearchParams(window.location.search),n=e.has("code")?atob(e.get("code")):'import { DAppClient, BeaconEvent } from "@airgap/beacon-sdk";\n\nconst dAppClient = new DAppClient({ name: "Beacon Docs" });\n\n// Listen for all the active account changes\ndAppClient.subscribeToEvent(BeaconEvent.ACTIVE_ACCOUNT_SET, async (account) => {\n // An active account has been set, update the dApp UI\n console.log(BeaconEvent.ACTIVE_ACCOUNT_SET, "triggered:", account);\n});\n\ntry {\n console.log("Requesting permissions...");\n const permissions = await dAppClient.requestPermissions();\n console.log("Got permissions:", permissions.address);\n} catch (error) {\n console.error("Got error:", error);\n}',[o,u]=(0,r.useState)(n),[y,f]=(0,r.useState)(""),[h,P]=(0,r.useState)(l.INIT),b=(0,i.c)(),T=e=>{u(e)},E=100,R={width:b.width,height:200},x={width:.6*b.width,height:b.height-E},v={width:b.width,height:b.height-E-R.height},S={width:(.4-.05)*b.width,height:b.height};return(0,g.jsx)(d.c,{fallback:(0,g.jsx)(g.Fragment,{}),children:()=>{const{DAppClient:e}=t(24444),n=t(23080).c,{copyShareUrl:r,runBeaconCode:i}=t(25328),d=async()=>{f(""),P(l.INIT)};return(0,g.jsxs)(s.c,{title:"Beacon",description:"Beacon Playground",noFooter:!0,children:[(0,g.jsxs)("div",{className:a()(p),children:[(0,g.jsx)("button",{onClick:async()=>{h!==l.STARTED&&(await d(),P(l.STARTED),await i(o,f),P(l.ENDED))},className:"button button--primary margin-bottom--lg margin-right--xs",children:"Run Code"}),(0,g.jsx)("button",{onClick:async()=>{d();const n=new e({name:"Cleanup"});await n.destroy()},className:"button button--secondary margin-bottom--lg margin-right--xs",children:"Reset"}),(0,g.jsx)("button",{onClick:d,className:"button button--secondary margin-bottom--lg margin-right--xs",children:"Clear Output"}),(0,g.jsx)("button",{onClick:()=>{r(o)},className:"button button--secondary margin-bottom--lg margin-right--xs",children:"Share Code (Copy to Clipboard)"})]}),(0,g.jsx)("div",{className:a()(c),children:(0,g.jsxs)(m.c,{fallback:e=>{let{error:n,tryAgain:t}=e;return(0,g.jsxs)("div",{children:[(0,g.jsxs)("p",{children:["This editor crashed because of error: ",n.message,"."]}),(0,g.jsx)("button",{onClick:t,children:"Try Again!"})]})},children:[(0,g.jsx)(n,{...b.width>600?x:R,language:"typescript",value:o,onChange:T,options:{minimap:{enabled:!1},wordWrap:"on"}}),(0,g.jsx)(n,{...b.width>600?S:v,language:"shell",value:y,options:{readOnly:!0,minimap:{enabled:!1},wordWrap:"on"}})]})})]})}})}},25328:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";__webpack_require__.r(__webpack_exports__),__webpack_require__.d(__webpack_exports__,{copyShareUrl:()=>copyShareUrl,reset:()=>reset,runBeaconCode:()=>runBeaconCode});var _node_modules_beacon_sdk_dist_cjs__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(54581),_node_modules_beacon_sdk_dist_cjs__WEBPACK_IMPORTED_MODULE_0___default=__webpack_require__.n(_node_modules_beacon_sdk_dist_cjs__WEBPACK_IMPORTED_MODULE_0__),typescript__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(54216),typescript__WEBPACK_IMPORTED_MODULE_1___default=__webpack_require__.n(typescript__WEBPACK_IMPORTED_MODULE_1__),_taquito_taquito__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(37560),_taquito_beacon_wallet__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(31116),console=__webpack_require__(10320);function replaceAll(e,n,t){return e.split(n).join(t)}const removeImports=e=>{const n=e.split("\n");let t=!0;return n.map((e=>{e.trim().startsWith("import")&&(t=!1);const n=t?e:void 0;return(e.indexOf("@airgap/beacon-sdk")>=0||e.indexOf("@taquito")>=0)&&(t=!0),n})).filter((e=>!!e)).join("\n")},runBeaconCode=(rawCode,setOutput)=>{let code=rawCode,output="";const appendOutput=e=>{output+="\n"+e,setOutput(output.trim())},myLog=function(){for(var e=arguments.length,n=new Array(e),t=0;t"object"==typeof e?JSON.stringify(e,null,2):e)).join(" "))};let runnable;return code=replaceAll(code,"console.log(","progress("),code=removeImports(code),code=typescript__WEBPACK_IMPORTED_MODULE_1__.transpile(`({\n run: async (beacon: any, taquito: any, taquitoWallet: any, progress: any): string => {\n Object.keys(beacon).forEach(key => {\n window[key] = beacon[key]\n })\n Object.keys(taquito).forEach(key => {\n window[key] = taquito[key]\n })\n Object.keys(taquitoWallet).forEach(key => {\n window[key] = taquitoWallet[key]\n })\n return (async () => {\n ${code};\n if (typeof result !== 'undefined') {\n return result\n }\n })()\n })`),new Promise((resolve=>{try{runnable=eval(code),runnable.run(_node_modules_beacon_sdk_dist_cjs__WEBPACK_IMPORTED_MODULE_0__,_taquito_taquito__WEBPACK_IMPORTED_MODULE_2__,_taquito_beacon_wallet__WEBPACK_IMPORTED_MODULE_3__,myLog).then((e=>{e&&appendOutput("Returned:\n"+JSON.stringify(e,null,2)),resolve(e)})).catch((e=>{console.warn(e),appendOutput(JSON.stringify(e,null,2)),resolve(e)}))}catch(e){appendOutput(e),console.error(e),resolve(e)}}))},copyShareUrl=e=>{const n=`https://${window.location.host}/playground?code=${btoa(e)}`;navigator.clipboard.writeText(n).catch((e=>console.error("Failed to copy to url!",e)))},reset=async()=>{const e=new _node_modules_beacon_sdk_dist_cjs__WEBPACK_IMPORTED_MODULE_0__.DAppClient({name:"Cleanup"});await e.destroy()}},64132:e=>{function n(e){var n=new Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}n.keys=()=>[],n.resolve=n,n.id=64132,e.exports=n},65924:()=>{},93375:()=>{},79100:()=>{},73236:()=>{},13716:()=>{},64758:()=>{},15772:()=>{},95496:()=>{},78020:()=>{},19024:()=>{},49444:()=>{},36216:()=>{},31720:()=>{}}]); \ No newline at end of file diff --git a/assets/js/0e7ff25a.730f04dd.js b/assets/js/0e7ff25a.730f04dd.js new file mode 100644 index 00000000..bb060cd1 --- /dev/null +++ b/assets/js/0e7ff25a.730f04dd.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkbeacon_docs=self.webpackChunkbeacon_docs||[]).push([[3992],{66924:(e,n,a)=>{a.r(n),a.d(n,{assets:()=>u,contentTitle:()=>l,default:()=>g,frontMatter:()=>r,metadata:()=>c,toc:()=>d});var t=a(17624),i=a(4552),o=a(61268),s=a(87768);const r={title:"Sign Payload"},l=void 0,c={id:"guides/sign-payload",title:"Sign Payload",description:"The SignPayload functionality in Beacon allows developers to sign various types of payloads.",source:"@site/docs/guides/sign-payload.mdx",sourceDirName:"guides",slug:"/guides/sign-payload",permalink:"/guides/sign-payload",draft:!1,unlisted:!1,editUrl:"https://github.com/airgap-it/beacon-docs/edit/main/src/docs/guides/sign-payload.mdx",tags:[],version:"current",frontMatter:{title:"Sign Payload"},sidebar:"docs",previous:{title:"Request Permissions",permalink:"/guides/request-permissions"},next:{title:"Broadcast Request",permalink:"/guides/broadcast-request"}},u={},d=[{value:"HEX Prefixed With 05",id:"hex-prefixed-with-05",level:2},{value:"HEX Prefixed With 03",id:"hex-prefixed-with-03",level:2},{value:"RAW",id:"raw",level:2}];function p(e){const n={a:"a",admonition:"admonition",code:"code",h2:"h2",p:"p",pre:"pre",...(0,i.M)(),...e.components};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)(n.p,{children:["The ",(0,t.jsx)(n.code,{children:"SignPayload"})," functionality in Beacon allows developers to sign various types of payloads.\nThis page provides some examples for signing payloads in different formats: HEX Prefixed with 05, HEX Prefixed with 03, and RAW."]}),"\n",(0,t.jsx)(n.h2,{id:"hex-prefixed-with-05",children:"HEX Prefixed With 05"}),"\n",(0,t.jsxs)(o.c,{groupId:"beaconOrTaquitoSP1",defaultValue:"beacon",values:[{label:"Beacon",value:"beacon"},{label:"Taquito",value:"taquito"}],children:[(0,t.jsx)(s.c,{value:"beacon",children:(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-ts",metastring:"live",live:!0,children:'// beacon sign payload micheline\nimport { DAppClient, SigningType } from "@airgap/beacon-sdk";\n\nconst dAppClient = new DAppClient({ name: "Beacon Docs" });\n\nconst response = await dAppClient.requestSignPayload({\n signingType: SigningType.MICHELINE,\n // This hex string needs to be prefixed with 05\n // The following is packed data, it can also be signed by Kukai\n payload: `05010000004254657a6f73205369676e6564204d6573736167653a206d79646170702e636f6d20323032312d30312d31345431353a31363a30345a2048656c6c6f20776f726c6421`,\n});\n\nconsole.log(`Signature: ${response.signature}`);\n'})})}),(0,t.jsx)(s.c,{value:"taquito",children:(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-ts",metastring:"live",live:!0,children:'// taquito sign payload micheline\nimport { TezosToolkit } from "@taquito/taquito";\nimport { BeaconWallet } from "@taquito/beacon-wallet";\nimport { SigningType } from "@airgap/beacon-sdk";\n\nconst Tezos = new TezosToolkit("https://mainnet.api.tez.ie");\nconst wallet = new BeaconWallet({ name: "Beacon Docs Taquito" });\n\nTezos.setWalletProvider(wallet);\n\nconst response = await wallet.client.requestSignPayload({\n signingType: SigningType.MICHELINE,\n // This hex string needs to be prefixed with 05\n // The following is packed data, it can also be signed by Kukai\n payload: `05010000004254657a6f73205369676e6564204d6573736167653a206d79646170702e636f6d20323032312d30312d31345431353a31363a30345a2048656c6c6f20776f726c6421`,\n});\n\nconsole.log(`Signature: ${response.signature}`);\n'})})})]}),"\n",(0,t.jsx)(n.h2,{id:"hex-prefixed-with-03",children:"HEX Prefixed With 03"}),"\n",(0,t.jsxs)(o.c,{groupId:"beaconOrTaquitoSP2",defaultValue:"beacon",values:[{label:"Beacon",value:"beacon"},{label:"Taquito",value:"taquito"}],children:[(0,t.jsx)(s.c,{value:"beacon",children:(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-ts",metastring:"live",live:!0,children:'// beacon sign payload operation\nimport { DAppClient, SigningType } from "@airgap/beacon-sdk";\n\nconst dAppClient = new DAppClient({ name: "Beacon Docs" });\n\nconst response = await dAppClient.requestSignPayload({\n signingType: SigningType.OPERATION,\n payload: "0300", // This hex string needs to be prefixed with 03\n});\n\nconsole.log(`Signature: ${response.signature}`);\n'})})}),(0,t.jsx)(s.c,{value:"taquito",children:(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-ts",metastring:"live",live:!0,children:'// taquito sign payload operation\nimport { TezosToolkit } from "@taquito/taquito";\nimport { BeaconWallet } from "@taquito/beacon-wallet";\nimport { SigningType } from "@airgap/beacon-sdk";\n\nconst Tezos = new TezosToolkit("https://mainnet.api.tez.ie");\nconst wallet = new BeaconWallet({ name: "Beacon Docs Taquito" });\n\nTezos.setWalletProvider(wallet);\n\nconst response = await wallet.client.requestSignPayload({\n signingType: SigningType.OPERATION,\n payload: "0300", // This hex string needs to be prefixed with 03\n});\n\nconsole.log(`Signature: ${response.signature}`);\n'})})})]}),"\n",(0,t.jsx)(n.h2,{id:"raw",children:"RAW"}),"\n",(0,t.jsx)(n.admonition,{type:"warning",children:(0,t.jsxs)(n.p,{children:["Not all wallets support the ",(0,t.jsx)(n.code,{children:"RAW"})," signing type. Additionally, the signatures can be different depending on the wallet that was used. For the preferred way of signing arbitrary data, please check the docs here: ",(0,t.jsx)(n.a,{href:"https://tezostaquito.io/docs/signing/#generating-a-signature-with-beacon-sdk",children:"https://tezostaquito.io/docs/signing/#generating-a-signature-with-beacon-sdk"})]})}),"\n",(0,t.jsxs)(o.c,{groupId:"beaconOrTaquitoSP3",defaultValue:"beacon",values:[{label:"Beacon",value:"beacon"},{label:"Taquito",value:"taquito"}],children:[(0,t.jsx)(s.c,{value:"beacon",children:(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-ts",metastring:"live",live:!0,children:'// beacon sign payload raw\nimport { DAppClient, SigningType } from "@airgap/beacon-sdk";\n\nconst dAppClient = new DAppClient({ name: "Beacon Docs" });\n\nconst response = await dAppClient.requestSignPayload({\n signingType: SigningType.RAW,\n payload: "any string that will be signed",\n});\n\nconsole.log(`Signature: ${response.signature}`);\n'})})}),(0,t.jsx)(s.c,{value:"taquito",children:(0,t.jsx)(n.pre,{children:(0,t.jsx)(n.code,{className:"language-ts",metastring:"live",live:!0,children:'// taquito sign payload raw\nimport { TezosToolkit } from "@taquito/taquito";\nimport { BeaconWallet } from "@taquito/beacon-wallet";\nimport { SigningType } from "@airgap/beacon-sdk";\n\nconst Tezos = new TezosToolkit("https://mainnet.api.tez.ie");\nconst wallet = new BeaconWallet({ name: "Beacon Docs Taquito" });\n\nTezos.setWalletProvider(wallet);\n\nconst response = await wallet.client.requestSignPayload({\n signingType: SigningType.RAW,\n payload: "any string that will be signed",\n});\n\nconsole.log(`Signature: ${response.signature}`);\n'})})})]})]})}function g(e={}){const{wrapper:n}={...(0,i.M)(),...e.components};return n?(0,t.jsx)(n,{...e,children:(0,t.jsx)(p,{...e})}):p(e)}},87768:(e,n,a)=>{a.d(n,{c:()=>s});a(11504);var t=a(65456);const i={tabItem:"tabItem_Ymn6"};var o=a(17624);function s(e){let{children:n,hidden:a,className:s}=e;return(0,o.jsx)("div",{role:"tabpanel",className:(0,t.c)(i.tabItem,s),hidden:a,children:n})}},61268:(e,n,a)=>{a.d(n,{c:()=>T});var t=a(11504),i=a(65456),o=a(53943),s=a(55592),r=a(95288),l=a(10632),c=a(27128),u=a(21148);function d(e){return t.Children.toArray(e).filter((e=>"\n"!==e)).map((e=>{if(!e||(0,t.isValidElement)(e)&&function(e){const{props:n}=e;return!!n&&"object"==typeof n&&"value"in n}(e))return e;throw new Error(`Docusaurus error: Bad child <${"string"==typeof e.type?e.type:e.type.name}>: all children of the component should be , and every should have a unique "value" prop.`)}))?.filter(Boolean)??[]}function p(e){const{values:n,children:a}=e;return(0,t.useMemo)((()=>{const e=n??function(e){return d(e).map((e=>{let{props:{value:n,label:a,attributes:t,default:i}}=e;return{value:n,label:a,attributes:t,default:i}}))}(a);return function(e){const n=(0,c.w)(e,((e,n)=>e.value===n.value));if(n.length>0)throw new Error(`Docusaurus error: Duplicate values "${n.map((e=>e.value)).join(", ")}" found in . Every value needs to be unique.`)}(e),e}),[n,a])}function g(e){let{value:n,tabValues:a}=e;return a.some((e=>e.value===n))}function h(e){let{queryString:n=!1,groupId:a}=e;const i=(0,s.Uz)(),o=function(e){let{queryString:n=!1,groupId:a}=e;if("string"==typeof n)return n;if(!1===n)return null;if(!0===n&&!a)throw new Error('Docusaurus error: The component groupId prop is required if queryString=true, because this value is used as the search param name. You can also provide an explicit value such as queryString="my-search-param".');return a??null}({queryString:n,groupId:a});return[(0,l._M)(o),(0,t.useCallback)((e=>{if(!o)return;const n=new URLSearchParams(i.location.search);n.set(o,e),i.replace({...i.location,search:n.toString()})}),[o,i])]}function f(e){const{defaultValue:n,queryString:a=!1,groupId:i}=e,o=p(e),[s,l]=(0,t.useState)((()=>function(e){let{defaultValue:n,tabValues:a}=e;if(0===a.length)throw new Error("Docusaurus error: the component requires at least one children component");if(n){if(!g({value:n,tabValues:a}))throw new Error(`Docusaurus error: The has a defaultValue "${n}" but none of its children has the corresponding value. Available values are: ${a.map((e=>e.value)).join(", ")}. If you intend to show no default tab, use defaultValue={null} instead.`);return n}const t=a.find((e=>e.default))??a[0];if(!t)throw new Error("Unexpected error: 0 tabValues");return t.value}({defaultValue:n,tabValues:o}))),[c,d]=h({queryString:a,groupId:i}),[f,m]=function(e){let{groupId:n}=e;const a=function(e){return e?`docusaurus.tab.${e}`:null}(n),[i,o]=(0,u.IN)(a);return[i,(0,t.useCallback)((e=>{a&&o.set(e)}),[a,o])]}({groupId:i}),b=(()=>{const e=c??f;return g({value:e,tabValues:o})?e:null})();(0,r.c)((()=>{b&&l(b)}),[b]);return{selectedValue:s,selectValue:(0,t.useCallback)((e=>{if(!g({value:e,tabValues:o}))throw new Error(`Can't select invalid tab value=${e}`);l(e),d(e),m(e)}),[d,m,o]),tabValues:o}}var m=a(93664);const b={tabList:"tabList__CuJ",tabItem:"tabItem_LNqP"};var v=a(17624);function y(e){let{className:n,block:a,selectedValue:t,selectValue:s,tabValues:r}=e;const l=[],{blockElementScrollPositionUntilNextRender:c}=(0,o.MV)(),u=e=>{const n=e.currentTarget,a=l.indexOf(n),i=r[a].value;i!==t&&(c(n),s(i))},d=e=>{let n=null;switch(e.key){case"Enter":u(e);break;case"ArrowRight":{const a=l.indexOf(e.currentTarget)+1;n=l[a]??l[0];break}case"ArrowLeft":{const a=l.indexOf(e.currentTarget)-1;n=l[a]??l[l.length-1];break}}n?.focus()};return(0,v.jsx)("ul",{role:"tablist","aria-orientation":"horizontal",className:(0,i.c)("tabs",{"tabs--block":a},n),children:r.map((e=>{let{value:n,label:a,attributes:o}=e;return(0,v.jsx)("li",{role:"tab",tabIndex:t===n?0:-1,"aria-selected":t===n,ref:e=>l.push(e),onKeyDown:d,onClick:u,...o,className:(0,i.c)("tabs__item",b.tabItem,o?.className,{"tabs__item--active":t===n}),children:a??n},n)}))})}function w(e){let{lazy:n,children:a,selectedValue:i}=e;const o=(Array.isArray(a)?a:[a]).filter(Boolean);if(n){const e=o.find((e=>e.props.value===i));return e?(0,t.cloneElement)(e,{className:"margin-top--md"}):null}return(0,v.jsx)("div",{className:"margin-top--md",children:o.map(((e,n)=>(0,t.cloneElement)(e,{key:n,hidden:e.props.value!==i})))})}function x(e){const n=f(e);return(0,v.jsxs)("div",{className:(0,i.c)("tabs-container",b.tabList),children:[(0,v.jsx)(y,{...e,...n}),(0,v.jsx)(w,{...e,...n})]})}function T(e){const n=(0,m.c)();return(0,v.jsx)(x,{...e,children:d(e.children)},String(n))}},4552:(e,n,a)=>{a.d(n,{I:()=>r,M:()=>s});var t=a(11504);const i={},o=t.createContext(i);function s(e){const n=t.useContext(o);return t.useMemo((function(){return"function"==typeof e?e(n):{...n,...e}}),[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:s(e.components),t.createElement(o.Provider,{value:n},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/0fd61c0d.832539c0.js b/assets/js/0fd61c0d.832539c0.js new file mode 100644 index 00000000..dbb14a65 --- /dev/null +++ b/assets/js/0fd61c0d.832539c0.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkbeacon_docs=self.webpackChunkbeacon_docs||[]).push([[6564],{68828:(t,i,e)=>{e.r(i),e.d(i,{assets:()=>l,contentTitle:()=>s,default:()=>p,frontMatter:()=>d,metadata:()=>o,toc:()=>r});var n=e(17624),c=e(4552),a=e(40900);const d={title:"Push Notification"},s=void 0,o={id:"advanced/push-notification",title:"Push Notification",description:"Push Notifications are in beta. There is no wallet that supports it at the moment.",source:"@site/docs/advanced/push-notification.mdx",sourceDirName:"advanced",slug:"/advanced/push-notification",permalink:"/advanced/push-notification",draft:!1,unlisted:!1,editUrl:"https://github.com/airgap-it/beacon-docs/edit/main/src/docs/advanced/push-notification.mdx",tags:[],version:"current",frontMatter:{title:"Push Notification"}},l={},r=[];function g(t){const i={a:"a",admonition:"admonition",img:"img",p:"p",strong:"strong",...(0,c.M)(),...t.components};return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(i.admonition,{type:"warning",children:(0,n.jsxs)(i.p,{children:["Push Notifications are in ",(0,n.jsx)(i.strong,{children:"beta"}),". There is no wallet that supports it at the moment."]})}),"\n","\n","\n",(0,n.jsx)(a.c,{chart:"\nsequenceDiagram\n rect rgba(0, 0, 255, .2)\n Note over dApp,Peer: Only for Extensions
Extensions have 200ms to respond\n dApp->>Peer: Ping\n Peer->>dApp: Pong\n end\n rect rgba(0, 0, 255, .2)\n Note over dApp,Peer: dApp sends publicKey to Peer\n dApp->>Peer: PairingRequest\n Note over dApp,Peer: Peer stores the dApp publicKey
Encrypts own publicKey with dApp publicKey
Send back encrypted publicKey\n Peer->>dApp: PairingResponse\n end\n"}),"\n",(0,n.jsx)(i.p,{children:(0,n.jsx)(i.a,{href:"https://mermaid-js.github.io/mermaid-live-editor/#/edit/eyJjb2RlIjoic2VxdWVuY2VEaWFncmFtXG4gICAgcGFydGljaXBhbnQgREFwcFxuICAgIHBhcnRpY2lwYW50IFdhbGxldFxuICAgIHBhcnRpY2lwYW50IFB1c2ggT3JhY2xlXG4gICAgcGFydGljaXBhbnQgV2FsbGV0IEJhY2tlbmRcbiAgICBEQXBwLT4-V2FsbGV0OiAxLiBQZXJtaXNzaW9uIFJlcXVlc3RcbiAgICBXYWxsZXQtPj5QdXNoIE9yYWNsZTogMi4gR2V0IENoYWxsZW5nZVxuICAgIFdhbGxldC0-PlB1c2ggT3JhY2xlOiAzLiBSZWdpc3RlclxuICAgIFdhbGxldC0-PkRBcHA6IDQuIFBlcm1pc3Npb24gUmVzcG9uc2VcbiAgICBEQXBwLT4-UHVzaCBPcmFjbGU6IDUuIFJlcXVlc3QgTm90aWZpY2F0aW9uXG4gICAgUHVzaCBPcmFjbGUtPj5XYWxsZXQgQmFja2VuZDogNi4gTm90aWZ5IGJhY2tlbmRcbiAgICBXYWxsZXQgQmFja2VuZC0-PldhbGxldDogNy4gU2VuZCBQdXNoIG5vdGlmaWNhdGlvblxuIiwibWVybWFpZCI6eyJ0aGVtZSI6ImRlZmF1bHQifSwidXBkYXRlRWRpdG9yIjpmYWxzZX0",children:(0,n.jsx)(i.img,{src:"https://mermaid.ink/img/eyJjb2RlIjoic2VxdWVuY2VEaWFncmFtXG4gICAgcGFydGljaXBhbnQgREFwcFxuICAgIHBhcnRpY2lwYW50IFdhbGxldFxuICAgIHBhcnRpY2lwYW50IFB1c2ggT3JhY2xlXG4gICAgcGFydGljaXBhbnQgV2FsbGV0IEJhY2tlbmRcbiAgICBEQXBwLT4-V2FsbGV0OiAxLiBQZXJtaXNzaW9uIFJlcXVlc3RcbiAgICBXYWxsZXQtPj5QdXNoIE9yYWNsZTogMi4gR2V0IENoYWxsZW5nZVxuICAgIFdhbGxldC0-PlB1c2ggT3JhY2xlOiAzLiBSZWdpc3RlclxuICAgIFdhbGxldC0-PkRBcHA6IDQuIFBlcm1pc3Npb24gUmVzcG9uc2VcbiAgICBEQXBwLT4-UHVzaCBPcmFjbGU6IDUuIFJlcXVlc3QgTm90aWZpY2F0aW9uXG4gICAgUHVzaCBPcmFjbGUtPj5XYWxsZXQgQmFja2VuZDogNi4gTm90aWZ5IGJhY2tlbmRcbiAgICBXYWxsZXQgQmFja2VuZC0-PldhbGxldDogNy4gU2VuZCBQdXNoIG5vdGlmaWNhdGlvblxuIiwibWVybWFpZCI6eyJ0aGVtZSI6ImRlZmF1bHQifSwidXBkYXRlRWRpdG9yIjpmYWxzZX0",alt:""})})})]})}function p(t={}){const{wrapper:i}={...(0,c.M)(),...t.components};return i?(0,n.jsx)(i,{...t,children:(0,n.jsx)(g,{...t})}):g(t)}},40900:(t,i,e)=>{e.d(i,{c:()=>d});var n=e(11504),c=e(37160),a=e(17624);c.K.initialize({startOnLoad:!0});const d=t=>{let{chart:i}=t;return(0,n.useEffect)((()=>{c.K.contentLoaded()}),[]),(0,a.jsx)("div",{className:"mermaid",children:i})}}}]); \ No newline at end of file diff --git a/assets/js/100.9e5e1a8d.js b/assets/js/100.9e5e1a8d.js new file mode 100644 index 00000000..c2d54cf3 --- /dev/null +++ b/assets/js/100.9e5e1a8d.js @@ -0,0 +1,10066 @@ +"use strict"; +exports.id = 100; +exports.ids = [100]; +exports.modules = { + +/***/ 32304: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + cn: () => (/* reexport */ layout) +}); + +// UNUSED EXPORTS: acyclic, normalize, rank + +// EXTERNAL MODULE: ./node_modules/lodash-es/forEach.js +var forEach = __webpack_require__(50080); +// EXTERNAL MODULE: ./node_modules/lodash-es/uniqueId.js +var uniqueId = __webpack_require__(41696); +// EXTERNAL MODULE: ./node_modules/lodash-es/has.js + 1 modules +var has = __webpack_require__(7248); +// EXTERNAL MODULE: ./node_modules/lodash-es/constant.js +var constant = __webpack_require__(11160); +// EXTERNAL MODULE: ./node_modules/lodash-es/flatten.js +var flatten = __webpack_require__(9552); +// EXTERNAL MODULE: ./node_modules/lodash-es/map.js +var map = __webpack_require__(92696); +// EXTERNAL MODULE: ./node_modules/lodash-es/range.js + 2 modules +var range = __webpack_require__(52264); +// EXTERNAL MODULE: ./node_modules/dagre-d3-es/src/graphlib/index.js +var graphlib = __webpack_require__(95536); +;// CONCATENATED MODULE: ./node_modules/dagre-d3-es/src/dagre/data/list.js +/* + * Simple doubly linked list implementation derived from Cormen, et al., + * "Introduction to Algorithms". + */ + + + +class List { + constructor() { + var sentinel = {}; + sentinel._next = sentinel._prev = sentinel; + this._sentinel = sentinel; + } + dequeue() { + var sentinel = this._sentinel; + var entry = sentinel._prev; + if (entry !== sentinel) { + unlink(entry); + return entry; + } + } + enqueue(entry) { + var sentinel = this._sentinel; + if (entry._prev && entry._next) { + unlink(entry); + } + entry._next = sentinel._next; + sentinel._next._prev = entry; + sentinel._next = entry; + entry._prev = sentinel; + } + toString() { + var strs = []; + var sentinel = this._sentinel; + var curr = sentinel._prev; + while (curr !== sentinel) { + strs.push(JSON.stringify(curr, filterOutLinks)); + curr = curr._prev; + } + return '[' + strs.join(', ') + ']'; + } +} + +function unlink(entry) { + entry._prev._next = entry._next; + entry._next._prev = entry._prev; + delete entry._next; + delete entry._prev; +} + +function filterOutLinks(k, v) { + if (k !== '_next' && k !== '_prev') { + return v; + } +} + +;// CONCATENATED MODULE: ./node_modules/dagre-d3-es/src/dagre/greedy-fas.js + + + + +/* + * A greedy heuristic for finding a feedback arc set for a graph. A feedback + * arc set is a set of edges that can be removed to make a graph acyclic. + * The algorithm comes from: P. Eades, X. Lin, and W. F. Smyth, "A fast and + * effective heuristic for the feedback arc set problem." This implementation + * adjusts that from the paper to allow for weighted edges. + */ + + +var DEFAULT_WEIGHT_FN = constant/* default */.c(1); + +function greedyFAS(g, weightFn) { + if (g.nodeCount() <= 1) { + return []; + } + var state = buildState(g, weightFn || DEFAULT_WEIGHT_FN); + var results = doGreedyFAS(state.graph, state.buckets, state.zeroIdx); + + // Expand multi-edges + return flatten/* default */.c( + map/* default */.c(results, function (e) { + return g.outEdges(e.v, e.w); + }) + ); +} + +function doGreedyFAS(g, buckets, zeroIdx) { + var results = []; + var sources = buckets[buckets.length - 1]; + var sinks = buckets[0]; + + var entry; + while (g.nodeCount()) { + while ((entry = sinks.dequeue())) { + removeNode(g, buckets, zeroIdx, entry); + } + while ((entry = sources.dequeue())) { + removeNode(g, buckets, zeroIdx, entry); + } + if (g.nodeCount()) { + for (var i = buckets.length - 2; i > 0; --i) { + entry = buckets[i].dequeue(); + if (entry) { + results = results.concat(removeNode(g, buckets, zeroIdx, entry, true)); + break; + } + } + } + } + + return results; +} + +function removeNode(g, buckets, zeroIdx, entry, collectPredecessors) { + var results = collectPredecessors ? [] : undefined; + + forEach/* default */.c(g.inEdges(entry.v), function (edge) { + var weight = g.edge(edge); + var uEntry = g.node(edge.v); + + if (collectPredecessors) { + results.push({ v: edge.v, w: edge.w }); + } + + uEntry.out -= weight; + assignBucket(buckets, zeroIdx, uEntry); + }); + + forEach/* default */.c(g.outEdges(entry.v), function (edge) { + var weight = g.edge(edge); + var w = edge.w; + var wEntry = g.node(w); + wEntry['in'] -= weight; + assignBucket(buckets, zeroIdx, wEntry); + }); + + g.removeNode(entry.v); + + return results; +} + +function buildState(g, weightFn) { + var fasGraph = new graphlib/* Graph */.M(); + var maxIn = 0; + var maxOut = 0; + + forEach/* default */.c(g.nodes(), function (v) { + fasGraph.setNode(v, { v: v, in: 0, out: 0 }); + }); + + // Aggregate weights on nodes, but also sum the weights across multi-edges + // into a single edge for the fasGraph. + forEach/* default */.c(g.edges(), function (e) { + var prevWeight = fasGraph.edge(e.v, e.w) || 0; + var weight = weightFn(e); + var edgeWeight = prevWeight + weight; + fasGraph.setEdge(e.v, e.w, edgeWeight); + maxOut = Math.max(maxOut, (fasGraph.node(e.v).out += weight)); + maxIn = Math.max(maxIn, (fasGraph.node(e.w)['in'] += weight)); + }); + + var buckets = range/* default */.c(maxOut + maxIn + 3).map(function () { + return new List(); + }); + var zeroIdx = maxIn + 1; + + forEach/* default */.c(fasGraph.nodes(), function (v) { + assignBucket(buckets, zeroIdx, fasGraph.node(v)); + }); + + return { graph: fasGraph, buckets: buckets, zeroIdx: zeroIdx }; +} + +function assignBucket(buckets, zeroIdx, entry) { + if (!entry.out) { + buckets[0].enqueue(entry); + } else if (!entry['in']) { + buckets[buckets.length - 1].enqueue(entry); + } else { + buckets[entry.out - entry['in'] + zeroIdx].enqueue(entry); + } +} + +;// CONCATENATED MODULE: ./node_modules/dagre-d3-es/src/dagre/acyclic.js + + + + + +function run(g) { + var fas = g.graph().acyclicer === 'greedy' ? greedyFAS(g, weightFn(g)) : dfsFAS(g); + forEach/* default */.c(fas, function (e) { + var label = g.edge(e); + g.removeEdge(e); + label.forwardName = e.name; + label.reversed = true; + g.setEdge(e.w, e.v, label, uniqueId/* default */.c('rev')); + }); + + function weightFn(g) { + return function (e) { + return g.edge(e).weight; + }; + } +} + +function dfsFAS(g) { + var fas = []; + var stack = {}; + var visited = {}; + + function dfs(v) { + if (has/* default */.c(visited, v)) { + return; + } + visited[v] = true; + stack[v] = true; + forEach/* default */.c(g.outEdges(v), function (e) { + if (has/* default */.c(stack, e.w)) { + fas.push(e); + } else { + dfs(e.w); + } + }); + delete stack[v]; + } + + forEach/* default */.c(g.nodes(), dfs); + return fas; +} + +function undo(g) { + forEach/* default */.c(g.edges(), function (e) { + var label = g.edge(e); + if (label.reversed) { + g.removeEdge(e); + + var forwardName = label.forwardName; + delete label.reversed; + delete label.forwardName; + g.setEdge(e.w, e.v, label, forwardName); + } + }); +} + +// EXTERNAL MODULE: ./node_modules/lodash-es/merge.js + 6 modules +var merge = __webpack_require__(89064); +// EXTERNAL MODULE: ./node_modules/lodash-es/pick.js + 4 modules +var pick = __webpack_require__(17488); +// EXTERNAL MODULE: ./node_modules/lodash-es/defaults.js +var defaults = __webpack_require__(12804); +// EXTERNAL MODULE: ./node_modules/lodash-es/isSymbol.js +var isSymbol = __webpack_require__(46380); +;// CONCATENATED MODULE: ./node_modules/lodash-es/_baseExtremum.js + + +/** + * The base implementation of methods like `_.max` and `_.min` which accepts a + * `comparator` to determine the extremum value. + * + * @private + * @param {Array} array The array to iterate over. + * @param {Function} iteratee The iteratee invoked per iteration. + * @param {Function} comparator The comparator used to compare values. + * @returns {*} Returns the extremum value. + */ +function baseExtremum(array, iteratee, comparator) { + var index = -1, + length = array.length; + + while (++index < length) { + var value = array[index], + current = iteratee(value); + + if (current != null && (computed === undefined + ? (current === current && !(0,isSymbol/* default */.c)(current)) + : comparator(current, computed) + )) { + var computed = current, + result = value; + } + } + return result; +} + +/* harmony default export */ const _baseExtremum = (baseExtremum); + +;// CONCATENATED MODULE: ./node_modules/lodash-es/_baseGt.js +/** + * The base implementation of `_.gt` which doesn't coerce arguments. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is greater than `other`, + * else `false`. + */ +function baseGt(value, other) { + return value > other; +} + +/* harmony default export */ const _baseGt = (baseGt); + +// EXTERNAL MODULE: ./node_modules/lodash-es/identity.js +var identity = __webpack_require__(5816); +;// CONCATENATED MODULE: ./node_modules/lodash-es/max.js + + + + +/** + * Computes the maximum value of `array`. If `array` is empty or falsey, + * `undefined` is returned. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Math + * @param {Array} array The array to iterate over. + * @returns {*} Returns the maximum value. + * @example + * + * _.max([4, 2, 8, 6]); + * // => 8 + * + * _.max([]); + * // => undefined + */ +function max(array) { + return (array && array.length) + ? _baseExtremum(array, identity/* default */.c, _baseGt) + : undefined; +} + +/* harmony default export */ const lodash_es_max = (max); + +;// CONCATENATED MODULE: ./node_modules/lodash-es/last.js +/** + * Gets the last element of `array`. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to query. + * @returns {*} Returns the last element of `array`. + * @example + * + * _.last([1, 2, 3]); + * // => 3 + */ +function last(array) { + var length = array == null ? 0 : array.length; + return length ? array[length - 1] : undefined; +} + +/* harmony default export */ const lodash_es_last = (last); + +// EXTERNAL MODULE: ./node_modules/lodash-es/_baseAssignValue.js +var _baseAssignValue = __webpack_require__(78848); +// EXTERNAL MODULE: ./node_modules/lodash-es/_baseForOwn.js +var _baseForOwn = __webpack_require__(79985); +// EXTERNAL MODULE: ./node_modules/lodash-es/_baseIteratee.js + 16 modules +var _baseIteratee = __webpack_require__(91312); +;// CONCATENATED MODULE: ./node_modules/lodash-es/mapValues.js + + + + +/** + * Creates an object with the same keys as `object` and values generated + * by running each own enumerable string keyed property of `object` thru + * `iteratee`. The iteratee is invoked with three arguments: + * (value, key, object). + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns the new mapped object. + * @see _.mapKeys + * @example + * + * var users = { + * 'fred': { 'user': 'fred', 'age': 40 }, + * 'pebbles': { 'user': 'pebbles', 'age': 1 } + * }; + * + * _.mapValues(users, function(o) { return o.age; }); + * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) + * + * // The `_.property` iteratee shorthand. + * _.mapValues(users, 'age'); + * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed) + */ +function mapValues(object, iteratee) { + var result = {}; + iteratee = (0,_baseIteratee/* default */.c)(iteratee, 3); + + (0,_baseForOwn/* default */.c)(object, function(value, key, object) { + (0,_baseAssignValue/* default */.c)(result, key, iteratee(value, key, object)); + }); + return result; +} + +/* harmony default export */ const lodash_es_mapValues = (mapValues); + +// EXTERNAL MODULE: ./node_modules/lodash-es/isUndefined.js +var isUndefined = __webpack_require__(60372); +;// CONCATENATED MODULE: ./node_modules/lodash-es/_baseLt.js +/** + * The base implementation of `_.lt` which doesn't coerce arguments. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {boolean} Returns `true` if `value` is less than `other`, + * else `false`. + */ +function baseLt(value, other) { + return value < other; +} + +/* harmony default export */ const _baseLt = (baseLt); + +;// CONCATENATED MODULE: ./node_modules/lodash-es/min.js + + + + +/** + * Computes the minimum value of `array`. If `array` is empty or falsey, + * `undefined` is returned. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Math + * @param {Array} array The array to iterate over. + * @returns {*} Returns the minimum value. + * @example + * + * _.min([4, 2, 8, 6]); + * // => 2 + * + * _.min([]); + * // => undefined + */ +function min(array) { + return (array && array.length) + ? _baseExtremum(array, identity/* default */.c, _baseLt) + : undefined; +} + +/* harmony default export */ const lodash_es_min = (min); + +// EXTERNAL MODULE: ./node_modules/lodash-es/_root.js +var _root = __webpack_require__(43936); +;// CONCATENATED MODULE: ./node_modules/lodash-es/now.js + + +/** + * Gets the timestamp of the number of milliseconds that have elapsed since + * the Unix epoch (1 January 1970 00:00:00 UTC). + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Date + * @returns {number} Returns the timestamp. + * @example + * + * _.defer(function(stamp) { + * console.log(_.now() - stamp); + * }, _.now()); + * // => Logs the number of milliseconds it took for the deferred invocation. + */ +var now = function() { + return _root/* default */.c.Date.now(); +}; + +/* harmony default export */ const lodash_es_now = (now); + +;// CONCATENATED MODULE: ./node_modules/dagre-d3-es/src/dagre/util.js +/* provided dependency */ var console = __webpack_require__(10320); + + + + + +/* + * Adds a dummy node to the graph and return v. + */ +function addDummyNode(g, type, attrs, name) { + var v; + do { + v = uniqueId/* default */.c(name); + } while (g.hasNode(v)); + + attrs.dummy = type; + g.setNode(v, attrs); + return v; +} + +/* + * Returns a new graph with only simple edges. Handles aggregation of data + * associated with multi-edges. + */ +function simplify(g) { + var simplified = new graphlib/* Graph */.M().setGraph(g.graph()); + forEach/* default */.c(g.nodes(), function (v) { + simplified.setNode(v, g.node(v)); + }); + forEach/* default */.c(g.edges(), function (e) { + var simpleLabel = simplified.edge(e.v, e.w) || { weight: 0, minlen: 1 }; + var label = g.edge(e); + simplified.setEdge(e.v, e.w, { + weight: simpleLabel.weight + label.weight, + minlen: Math.max(simpleLabel.minlen, label.minlen), + }); + }); + return simplified; +} + +function asNonCompoundGraph(g) { + var simplified = new graphlib/* Graph */.M({ multigraph: g.isMultigraph() }).setGraph(g.graph()); + forEach/* default */.c(g.nodes(), function (v) { + if (!g.children(v).length) { + simplified.setNode(v, g.node(v)); + } + }); + forEach/* default */.c(g.edges(), function (e) { + simplified.setEdge(e, g.edge(e)); + }); + return simplified; +} + +function successorWeights(g) { + var weightMap = _.map(g.nodes(), function (v) { + var sucs = {}; + _.forEach(g.outEdges(v), function (e) { + sucs[e.w] = (sucs[e.w] || 0) + g.edge(e).weight; + }); + return sucs; + }); + return _.zipObject(g.nodes(), weightMap); +} + +function predecessorWeights(g) { + var weightMap = _.map(g.nodes(), function (v) { + var preds = {}; + _.forEach(g.inEdges(v), function (e) { + preds[e.v] = (preds[e.v] || 0) + g.edge(e).weight; + }); + return preds; + }); + return _.zipObject(g.nodes(), weightMap); +} + +/* + * Finds where a line starting at point ({x, y}) would intersect a rectangle + * ({x, y, width, height}) if it were pointing at the rectangle's center. + */ +function intersectRect(rect, point) { + var x = rect.x; + var y = rect.y; + + // Rectangle intersection algorithm from: + // http://math.stackexchange.com/questions/108113/find-edge-between-two-boxes + var dx = point.x - x; + var dy = point.y - y; + var w = rect.width / 2; + var h = rect.height / 2; + + if (!dx && !dy) { + throw new Error('Not possible to find intersection inside of the rectangle'); + } + + var sx, sy; + if (Math.abs(dy) * w > Math.abs(dx) * h) { + // Intersection is top or bottom of rect. + if (dy < 0) { + h = -h; + } + sx = (h * dx) / dy; + sy = h; + } else { + // Intersection is left or right of rect. + if (dx < 0) { + w = -w; + } + sx = w; + sy = (w * dy) / dx; + } + + return { x: x + sx, y: y + sy }; +} + +/* + * Given a DAG with each node assigned "rank" and "order" properties, this + * function will produce a matrix with the ids of each node. + */ +function buildLayerMatrix(g) { + var layering = map/* default */.c(range/* default */.c(util_maxRank(g) + 1), function () { + return []; + }); + forEach/* default */.c(g.nodes(), function (v) { + var node = g.node(v); + var rank = node.rank; + if (!isUndefined/* default */.c(rank)) { + layering[rank][node.order] = v; + } + }); + return layering; +} + +/* + * Adjusts the ranks for all nodes in the graph such that all nodes v have + * rank(v) >= 0 and at least one node w has rank(w) = 0. + */ +function normalizeRanks(g) { + var min = lodash_es_min( + map/* default */.c(g.nodes(), function (v) { + return g.node(v).rank; + }) + ); + forEach/* default */.c(g.nodes(), function (v) { + var node = g.node(v); + if (has/* default */.c(node, 'rank')) { + node.rank -= min; + } + }); +} + +function removeEmptyRanks(g) { + // Ranks may not start at 0, so we need to offset them + var offset = lodash_es_min( + map/* default */.c(g.nodes(), function (v) { + return g.node(v).rank; + }) + ); + + var layers = []; + forEach/* default */.c(g.nodes(), function (v) { + var rank = g.node(v).rank - offset; + if (!layers[rank]) { + layers[rank] = []; + } + layers[rank].push(v); + }); + + var delta = 0; + var nodeRankFactor = g.graph().nodeRankFactor; + forEach/* default */.c(layers, function (vs, i) { + if (isUndefined/* default */.c(vs) && i % nodeRankFactor !== 0) { + --delta; + } else if (delta) { + forEach/* default */.c(vs, function (v) { + g.node(v).rank += delta; + }); + } + }); +} + +function addBorderNode(g, prefix, rank, order) { + var node = { + width: 0, + height: 0, + }; + if (arguments.length >= 4) { + node.rank = rank; + node.order = order; + } + return addDummyNode(g, 'border', node, prefix); +} + +function util_maxRank(g) { + return lodash_es_max( + map/* default */.c(g.nodes(), function (v) { + var rank = g.node(v).rank; + if (!isUndefined/* default */.c(rank)) { + return rank; + } + }) + ); +} + +/* + * Partition a collection into two groups: `lhs` and `rhs`. If the supplied + * function returns true for an entry it goes into `lhs`. Otherwise it goes + * into `rhs. + */ +function partition(collection, fn) { + var result = { lhs: [], rhs: [] }; + forEach/* default */.c(collection, function (value) { + if (fn(value)) { + result.lhs.push(value); + } else { + result.rhs.push(value); + } + }); + return result; +} + +/* + * Returns a new function that wraps `fn` with a timer. The wrapper logs the + * time it takes to execute the function. + */ +function util_time(name, fn) { + var start = lodash_es_now(); + try { + return fn(); + } finally { + console.log(name + ' time: ' + (lodash_es_now() - start) + 'ms'); + } +} + +function notime(name, fn) { + return fn(); +} + +;// CONCATENATED MODULE: ./node_modules/dagre-d3-es/src/dagre/add-border-segments.js + + + + + +function addBorderSegments(g) { + function dfs(v) { + var children = g.children(v); + var node = g.node(v); + if (children.length) { + forEach/* default */.c(children, dfs); + } + + if (has/* default */.c(node, 'minRank')) { + node.borderLeft = []; + node.borderRight = []; + for (var rank = node.minRank, maxRank = node.maxRank + 1; rank < maxRank; ++rank) { + add_border_segments_addBorderNode(g, 'borderLeft', '_bl', v, node, rank); + add_border_segments_addBorderNode(g, 'borderRight', '_br', v, node, rank); + } + } + } + + forEach/* default */.c(g.children(), dfs); +} + +function add_border_segments_addBorderNode(g, prop, prefix, sg, sgNode, rank) { + var label = { width: 0, height: 0, rank: rank, borderType: prop }; + var prev = sgNode[prop][rank - 1]; + var curr = addDummyNode(g, 'border', label, prefix); + sgNode[prop][rank] = curr; + g.setParent(curr, sg); + if (prev) { + g.setEdge(prev, curr, { weight: 1 }); + } +} + +;// CONCATENATED MODULE: ./node_modules/dagre-d3-es/src/dagre/coordinate-system.js + + + + +function adjust(g) { + var rankDir = g.graph().rankdir.toLowerCase(); + if (rankDir === 'lr' || rankDir === 'rl') { + swapWidthHeight(g); + } +} + +function coordinate_system_undo(g) { + var rankDir = g.graph().rankdir.toLowerCase(); + if (rankDir === 'bt' || rankDir === 'rl') { + reverseY(g); + } + + if (rankDir === 'lr' || rankDir === 'rl') { + swapXY(g); + swapWidthHeight(g); + } +} + +function swapWidthHeight(g) { + forEach/* default */.c(g.nodes(), function (v) { + swapWidthHeightOne(g.node(v)); + }); + forEach/* default */.c(g.edges(), function (e) { + swapWidthHeightOne(g.edge(e)); + }); +} + +function swapWidthHeightOne(attrs) { + var w = attrs.width; + attrs.width = attrs.height; + attrs.height = w; +} + +function reverseY(g) { + forEach/* default */.c(g.nodes(), function (v) { + reverseYOne(g.node(v)); + }); + + forEach/* default */.c(g.edges(), function (e) { + var edge = g.edge(e); + forEach/* default */.c(edge.points, reverseYOne); + if (has/* default */.c(edge, 'y')) { + reverseYOne(edge); + } + }); +} + +function reverseYOne(attrs) { + attrs.y = -attrs.y; +} + +function swapXY(g) { + forEach/* default */.c(g.nodes(), function (v) { + swapXYOne(g.node(v)); + }); + + forEach/* default */.c(g.edges(), function (e) { + var edge = g.edge(e); + forEach/* default */.c(edge.points, swapXYOne); + if (has/* default */.c(edge, 'x')) { + swapXYOne(edge); + } + }); +} + +function swapXYOne(attrs) { + var x = attrs.x; + attrs.x = attrs.y; + attrs.y = x; +} + +;// CONCATENATED MODULE: ./node_modules/dagre-d3-es/src/dagre/normalize.js + + + + + +/* + * Breaks any long edges in the graph into short segments that span 1 layer + * each. This operation is undoable with the denormalize function. + * + * Pre-conditions: + * + * 1. The input graph is a DAG. + * 2. Each node in the graph has a "rank" property. + * + * Post-condition: + * + * 1. All edges in the graph have a length of 1. + * 2. Dummy nodes are added where edges have been split into segments. + * 3. The graph is augmented with a "dummyChains" attribute which contains + * the first dummy in each chain of dummy nodes produced. + */ +function normalize_run(g) { + g.graph().dummyChains = []; + forEach/* default */.c(g.edges(), function (edge) { + normalizeEdge(g, edge); + }); +} + +function normalizeEdge(g, e) { + var v = e.v; + var vRank = g.node(v).rank; + var w = e.w; + var wRank = g.node(w).rank; + var name = e.name; + var edgeLabel = g.edge(e); + var labelRank = edgeLabel.labelRank; + + if (wRank === vRank + 1) return; + + g.removeEdge(e); + + var dummy, attrs, i; + for (i = 0, ++vRank; vRank < wRank; ++i, ++vRank) { + edgeLabel.points = []; + attrs = { + width: 0, + height: 0, + edgeLabel: edgeLabel, + edgeObj: e, + rank: vRank, + }; + dummy = addDummyNode(g, 'edge', attrs, '_d'); + if (vRank === labelRank) { + attrs.width = edgeLabel.width; + attrs.height = edgeLabel.height; + // @ts-expect-error + attrs.dummy = 'edge-label'; + // @ts-expect-error + attrs.labelpos = edgeLabel.labelpos; + } + g.setEdge(v, dummy, { weight: edgeLabel.weight }, name); + if (i === 0) { + g.graph().dummyChains.push(dummy); + } + v = dummy; + } + + g.setEdge(v, w, { weight: edgeLabel.weight }, name); +} + +function normalize_undo(g) { + forEach/* default */.c(g.graph().dummyChains, function (v) { + var node = g.node(v); + var origLabel = node.edgeLabel; + var w; + g.setEdge(node.edgeObj, origLabel); + while (node.dummy) { + w = g.successors(v)[0]; + g.removeNode(v); + origLabel.points.push({ x: node.x, y: node.y }); + if (node.dummy === 'edge-label') { + origLabel.x = node.x; + origLabel.y = node.y; + origLabel.width = node.width; + origLabel.height = node.height; + } + v = w; + node = g.node(v); + } + }); +} + +;// CONCATENATED MODULE: ./node_modules/lodash-es/minBy.js + + + + +/** + * This method is like `_.min` except that it accepts `iteratee` which is + * invoked for each element in `array` to generate the criterion by which + * the value is ranked. The iteratee is invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Math + * @param {Array} array The array to iterate over. + * @param {Function} [iteratee=_.identity] The iteratee invoked per element. + * @returns {*} Returns the minimum value. + * @example + * + * var objects = [{ 'n': 1 }, { 'n': 2 }]; + * + * _.minBy(objects, function(o) { return o.n; }); + * // => { 'n': 1 } + * + * // The `_.property` iteratee shorthand. + * _.minBy(objects, 'n'); + * // => { 'n': 1 } + */ +function minBy(array, iteratee) { + return (array && array.length) + ? _baseExtremum(array, (0,_baseIteratee/* default */.c)(iteratee, 2), _baseLt) + : undefined; +} + +/* harmony default export */ const lodash_es_minBy = (minBy); + +;// CONCATENATED MODULE: ./node_modules/dagre-d3-es/src/dagre/rank/util.js + + + + +/* + * Initializes ranks for the input graph using the longest path algorithm. This + * algorithm scales well and is fast in practice, it yields rather poor + * solutions. Nodes are pushed to the lowest layer possible, leaving the bottom + * ranks wide and leaving edges longer than necessary. However, due to its + * speed, this algorithm is good for getting an initial ranking that can be fed + * into other algorithms. + * + * This algorithm does not normalize layers because it will be used by other + * algorithms in most cases. If using this algorithm directly, be sure to + * run normalize at the end. + * + * Pre-conditions: + * + * 1. Input graph is a DAG. + * 2. Input graph node labels can be assigned properties. + * + * Post-conditions: + * + * 1. Each node will be assign an (unnormalized) "rank" property. + */ +function longestPath(g) { + var visited = {}; + + function dfs(v) { + var label = g.node(v); + if (has/* default */.c(visited, v)) { + return label.rank; + } + visited[v] = true; + + var rank = lodash_es_min( + map/* default */.c(g.outEdges(v), function (e) { + return dfs(e.w) - g.edge(e).minlen; + }) + ); + + if ( + rank === Number.POSITIVE_INFINITY || // return value of _.map([]) for Lodash 3 + rank === undefined || // return value of _.map([]) for Lodash 4 + rank === null + ) { + // return value of _.map([null]) + rank = 0; + } + + return (label.rank = rank); + } + + forEach/* default */.c(g.sources(), dfs); +} + +/* + * Returns the amount of slack for the given edge. The slack is defined as the + * difference between the length of the edge and its minimum length. + */ +function slack(g, e) { + return g.node(e.w).rank - g.node(e.v).rank - g.edge(e).minlen; +} + +;// CONCATENATED MODULE: ./node_modules/dagre-d3-es/src/dagre/rank/feasible-tree.js + + + + + + +/* + * Constructs a spanning tree with tight edges and adjusted the input node's + * ranks to achieve this. A tight edge is one that is has a length that matches + * its "minlen" attribute. + * + * The basic structure for this function is derived from Gansner, et al., "A + * Technique for Drawing Directed Graphs." + * + * Pre-conditions: + * + * 1. Graph must be a DAG. + * 2. Graph must be connected. + * 3. Graph must have at least one node. + * 5. Graph nodes must have been previously assigned a "rank" property that + * respects the "minlen" property of incident edges. + * 6. Graph edges must have a "minlen" property. + * + * Post-conditions: + * + * - Graph nodes will have their rank adjusted to ensure that all edges are + * tight. + * + * Returns a tree (undirected graph) that is constructed using only "tight" + * edges. + */ +function feasibleTree(g) { + var t = new graphlib/* Graph */.M({ directed: false }); + + // Choose arbitrary node from which to start our tree + var start = g.nodes()[0]; + var size = g.nodeCount(); + t.setNode(start, {}); + + var edge, delta; + while (tightTree(t, g) < size) { + edge = findMinSlackEdge(t, g); + delta = t.hasNode(edge.v) ? slack(g, edge) : -slack(g, edge); + shiftRanks(t, g, delta); + } + + return t; +} + +/* + * Finds a maximal tree of tight edges and returns the number of nodes in the + * tree. + */ +function tightTree(t, g) { + function dfs(v) { + forEach/* default */.c(g.nodeEdges(v), function (e) { + var edgeV = e.v, + w = v === edgeV ? e.w : edgeV; + if (!t.hasNode(w) && !slack(g, e)) { + t.setNode(w, {}); + t.setEdge(v, w, {}); + dfs(w); + } + }); + } + + forEach/* default */.c(t.nodes(), dfs); + return t.nodeCount(); +} + +/* + * Finds the edge with the smallest slack that is incident on tree and returns + * it. + */ +function findMinSlackEdge(t, g) { + return lodash_es_minBy(g.edges(), function (e) { + if (t.hasNode(e.v) !== t.hasNode(e.w)) { + return slack(g, e); + } + }); +} + +function shiftRanks(t, g, delta) { + forEach/* default */.c(t.nodes(), function (v) { + g.node(v).rank += delta; + }); +} + +// EXTERNAL MODULE: ./node_modules/lodash-es/isArrayLike.js +var isArrayLike = __webpack_require__(42440); +// EXTERNAL MODULE: ./node_modules/lodash-es/keys.js +var keys = __webpack_require__(62420); +;// CONCATENATED MODULE: ./node_modules/lodash-es/_createFind.js + + + + +/** + * Creates a `_.find` or `_.findLast` function. + * + * @private + * @param {Function} findIndexFunc The function to find the collection index. + * @returns {Function} Returns the new find function. + */ +function createFind(findIndexFunc) { + return function(collection, predicate, fromIndex) { + var iterable = Object(collection); + if (!(0,isArrayLike/* default */.c)(collection)) { + var iteratee = (0,_baseIteratee/* default */.c)(predicate, 3); + collection = (0,keys/* default */.c)(collection); + predicate = function(key) { return iteratee(iterable[key], key, iterable); }; + } + var index = findIndexFunc(collection, predicate, fromIndex); + return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined; + }; +} + +/* harmony default export */ const _createFind = (createFind); + +// EXTERNAL MODULE: ./node_modules/lodash-es/_baseFindIndex.js +var _baseFindIndex = __webpack_require__(16428); +// EXTERNAL MODULE: ./node_modules/lodash-es/toFinite.js + 3 modules +var toFinite = __webpack_require__(92400); +;// CONCATENATED MODULE: ./node_modules/lodash-es/toInteger.js + + +/** + * Converts `value` to an integer. + * + * **Note:** This method is loosely based on + * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger). + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted integer. + * @example + * + * _.toInteger(3.2); + * // => 3 + * + * _.toInteger(Number.MIN_VALUE); + * // => 0 + * + * _.toInteger(Infinity); + * // => 1.7976931348623157e+308 + * + * _.toInteger('3.2'); + * // => 3 + */ +function toInteger(value) { + var result = (0,toFinite/* default */.c)(value), + remainder = result % 1; + + return result === result ? (remainder ? result - remainder : result) : 0; +} + +/* harmony default export */ const lodash_es_toInteger = (toInteger); + +;// CONCATENATED MODULE: ./node_modules/lodash-es/findIndex.js + + + + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeMax = Math.max; + +/** + * This method is like `_.find` except that it returns the index of the first + * element `predicate` returns truthy for instead of the element itself. + * + * @static + * @memberOf _ + * @since 1.1.0 + * @category Array + * @param {Array} array The array to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=0] The index to search from. + * @returns {number} Returns the index of the found element, else `-1`. + * @example + * + * var users = [ + * { 'user': 'barney', 'active': false }, + * { 'user': 'fred', 'active': false }, + * { 'user': 'pebbles', 'active': true } + * ]; + * + * _.findIndex(users, function(o) { return o.user == 'barney'; }); + * // => 0 + * + * // The `_.matches` iteratee shorthand. + * _.findIndex(users, { 'user': 'fred', 'active': false }); + * // => 1 + * + * // The `_.matchesProperty` iteratee shorthand. + * _.findIndex(users, ['active', false]); + * // => 0 + * + * // The `_.property` iteratee shorthand. + * _.findIndex(users, 'active'); + * // => 2 + */ +function findIndex(array, predicate, fromIndex) { + var length = array == null ? 0 : array.length; + if (!length) { + return -1; + } + var index = fromIndex == null ? 0 : lodash_es_toInteger(fromIndex); + if (index < 0) { + index = nativeMax(length + index, 0); + } + return (0,_baseFindIndex/* default */.c)(array, (0,_baseIteratee/* default */.c)(predicate, 3), index); +} + +/* harmony default export */ const lodash_es_findIndex = (findIndex); + +;// CONCATENATED MODULE: ./node_modules/lodash-es/find.js + + + +/** + * Iterates over elements of `collection`, returning the first element + * `predicate` returns truthy for. The predicate is invoked with three + * arguments: (value, index|key, collection). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to inspect. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @param {number} [fromIndex=0] The index to search from. + * @returns {*} Returns the matched element, else `undefined`. + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false }, + * { 'user': 'pebbles', 'age': 1, 'active': true } + * ]; + * + * _.find(users, function(o) { return o.age < 40; }); + * // => object for 'barney' + * + * // The `_.matches` iteratee shorthand. + * _.find(users, { 'age': 1, 'active': true }); + * // => object for 'pebbles' + * + * // The `_.matchesProperty` iteratee shorthand. + * _.find(users, ['active', false]); + * // => object for 'fred' + * + * // The `_.property` iteratee shorthand. + * _.find(users, 'active'); + * // => object for 'barney' + */ +var find = _createFind(lodash_es_findIndex); + +/* harmony default export */ const lodash_es_find = (find); + +// EXTERNAL MODULE: ./node_modules/lodash-es/filter.js + 1 modules +var filter = __webpack_require__(55720); +;// CONCATENATED MODULE: ./node_modules/dagre-d3-es/src/graphlib/alg/dijkstra.js + + + + + +var DEFAULT_WEIGHT_FUNC = constant/* default */.c(1); + +function dijkstra_dijkstra(g, source, weightFn, edgeFn) { + return runDijkstra( + g, + String(source), + weightFn || DEFAULT_WEIGHT_FUNC, + edgeFn || + function (v) { + return g.outEdges(v); + } + ); +} + +function runDijkstra(g, source, weightFn, edgeFn) { + var results = {}; + var pq = new PriorityQueue(); + var v, vEntry; + + var updateNeighbors = function (edge) { + var w = edge.v !== v ? edge.v : edge.w; + var wEntry = results[w]; + var weight = weightFn(edge); + var distance = vEntry.distance + weight; + + if (weight < 0) { + throw new Error( + 'dijkstra does not allow negative edge weights. ' + + 'Bad edge: ' + + edge + + ' Weight: ' + + weight + ); + } + + if (distance < wEntry.distance) { + wEntry.distance = distance; + wEntry.predecessor = v; + pq.decrease(w, distance); + } + }; + + g.nodes().forEach(function (v) { + var distance = v === source ? 0 : Number.POSITIVE_INFINITY; + results[v] = { distance: distance }; + pq.add(v, distance); + }); + + while (pq.size() > 0) { + v = pq.removeMin(); + vEntry = results[v]; + if (vEntry.distance === Number.POSITIVE_INFINITY) { + break; + } + + edgeFn(v).forEach(updateNeighbors); + } + + return results; +} + +;// CONCATENATED MODULE: ./node_modules/dagre-d3-es/src/graphlib/alg/dijkstra-all.js + + + + + +function dijkstraAll(g, weightFunc, edgeFunc) { + return _.transform( + g.nodes(), + function (acc, v) { + acc[v] = dijkstra(g, v, weightFunc, edgeFunc); + }, + {} + ); +} + +;// CONCATENATED MODULE: ./node_modules/dagre-d3-es/src/graphlib/alg/floyd-warshall.js + + + + +var floyd_warshall_DEFAULT_WEIGHT_FUNC = constant/* default */.c(1); + +function floydWarshall(g, weightFn, edgeFn) { + return runFloydWarshall( + g, + weightFn || floyd_warshall_DEFAULT_WEIGHT_FUNC, + edgeFn || + function (v) { + return g.outEdges(v); + } + ); +} + +function runFloydWarshall(g, weightFn, edgeFn) { + var results = {}; + var nodes = g.nodes(); + + nodes.forEach(function (v) { + results[v] = {}; + results[v][v] = { distance: 0 }; + nodes.forEach(function (w) { + if (v !== w) { + results[v][w] = { distance: Number.POSITIVE_INFINITY }; + } + }); + edgeFn(v).forEach(function (edge) { + var w = edge.v === v ? edge.w : edge.v; + var d = weightFn(edge); + results[v][w] = { distance: d, predecessor: v }; + }); + }); + + nodes.forEach(function (k) { + var rowK = results[k]; + nodes.forEach(function (i) { + var rowI = results[i]; + nodes.forEach(function (j) { + var ik = rowI[k]; + var kj = rowK[j]; + var ij = rowI[j]; + var altDistance = ik.distance + kj.distance; + if (altDistance < ij.distance) { + ij.distance = altDistance; + ij.predecessor = kj.predecessor; + } + }); + }); + }); + + return results; +} + +// EXTERNAL MODULE: ./node_modules/lodash-es/_baseKeys.js + 1 modules +var _baseKeys = __webpack_require__(61376); +// EXTERNAL MODULE: ./node_modules/lodash-es/_getTag.js + 3 modules +var _getTag = __webpack_require__(17188); +// EXTERNAL MODULE: ./node_modules/lodash-es/_baseGetTag.js + 2 modules +var _baseGetTag = __webpack_require__(67724); +// EXTERNAL MODULE: ./node_modules/lodash-es/isArray.js +var isArray = __webpack_require__(78820); +// EXTERNAL MODULE: ./node_modules/lodash-es/isObjectLike.js +var isObjectLike = __webpack_require__(23584); +;// CONCATENATED MODULE: ./node_modules/lodash-es/isString.js + + + + +/** `Object#toString` result references. */ +var stringTag = '[object String]'; + +/** + * Checks if `value` is classified as a `String` primitive or object. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a string, else `false`. + * @example + * + * _.isString('abc'); + * // => true + * + * _.isString(1); + * // => false + */ +function isString(value) { + return typeof value == 'string' || + (!(0,isArray/* default */.c)(value) && (0,isObjectLike/* default */.c)(value) && (0,_baseGetTag/* default */.c)(value) == stringTag); +} + +/* harmony default export */ const lodash_es_isString = (isString); + +// EXTERNAL MODULE: ./node_modules/lodash-es/_baseProperty.js +var _baseProperty = __webpack_require__(60472); +;// CONCATENATED MODULE: ./node_modules/lodash-es/_asciiSize.js + + +/** + * Gets the size of an ASCII `string`. + * + * @private + * @param {string} string The string inspect. + * @returns {number} Returns the string size. + */ +var asciiSize = (0,_baseProperty/* default */.c)('length'); + +/* harmony default export */ const _asciiSize = (asciiSize); + +;// CONCATENATED MODULE: ./node_modules/lodash-es/_hasUnicode.js +/** Used to compose unicode character classes. */ +var rsAstralRange = '\\ud800-\\udfff', + rsComboMarksRange = '\\u0300-\\u036f', + reComboHalfMarksRange = '\\ufe20-\\ufe2f', + rsComboSymbolsRange = '\\u20d0-\\u20ff', + rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange, + rsVarRange = '\\ufe0e\\ufe0f'; + +/** Used to compose unicode capture groups. */ +var rsZWJ = '\\u200d'; + +/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */ +var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']'); + +/** + * Checks if `string` contains Unicode symbols. + * + * @private + * @param {string} string The string to inspect. + * @returns {boolean} Returns `true` if a symbol is found, else `false`. + */ +function hasUnicode(string) { + return reHasUnicode.test(string); +} + +/* harmony default export */ const _hasUnicode = (hasUnicode); + +;// CONCATENATED MODULE: ./node_modules/lodash-es/_unicodeSize.js +/** Used to compose unicode character classes. */ +var _unicodeSize_rsAstralRange = '\\ud800-\\udfff', + _unicodeSize_rsComboMarksRange = '\\u0300-\\u036f', + _unicodeSize_reComboHalfMarksRange = '\\ufe20-\\ufe2f', + _unicodeSize_rsComboSymbolsRange = '\\u20d0-\\u20ff', + _unicodeSize_rsComboRange = _unicodeSize_rsComboMarksRange + _unicodeSize_reComboHalfMarksRange + _unicodeSize_rsComboSymbolsRange, + _unicodeSize_rsVarRange = '\\ufe0e\\ufe0f'; + +/** Used to compose unicode capture groups. */ +var rsAstral = '[' + _unicodeSize_rsAstralRange + ']', + rsCombo = '[' + _unicodeSize_rsComboRange + ']', + rsFitz = '\\ud83c[\\udffb-\\udfff]', + rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')', + rsNonAstral = '[^' + _unicodeSize_rsAstralRange + ']', + rsRegional = '(?:\\ud83c[\\udde6-\\uddff]){2}', + rsSurrPair = '[\\ud800-\\udbff][\\udc00-\\udfff]', + _unicodeSize_rsZWJ = '\\u200d'; + +/** Used to compose unicode regexes. */ +var reOptMod = rsModifier + '?', + rsOptVar = '[' + _unicodeSize_rsVarRange + ']?', + rsOptJoin = '(?:' + _unicodeSize_rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*', + rsSeq = rsOptVar + reOptMod + rsOptJoin, + rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')'; + +/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */ +var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g'); + +/** + * Gets the size of a Unicode `string`. + * + * @private + * @param {string} string The string inspect. + * @returns {number} Returns the string size. + */ +function unicodeSize(string) { + var result = reUnicode.lastIndex = 0; + while (reUnicode.test(string)) { + ++result; + } + return result; +} + +/* harmony default export */ const _unicodeSize = (unicodeSize); + +;// CONCATENATED MODULE: ./node_modules/lodash-es/_stringSize.js + + + + +/** + * Gets the number of symbols in `string`. + * + * @private + * @param {string} string The string to inspect. + * @returns {number} Returns the string size. + */ +function stringSize(string) { + return _hasUnicode(string) + ? _unicodeSize(string) + : _asciiSize(string); +} + +/* harmony default export */ const _stringSize = (stringSize); + +;// CONCATENATED MODULE: ./node_modules/lodash-es/size.js + + + + + + +/** `Object#toString` result references. */ +var mapTag = '[object Map]', + setTag = '[object Set]'; + +/** + * Gets the size of `collection` by returning its length for array-like + * values or the number of own enumerable string keyed properties for objects. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object|string} collection The collection to inspect. + * @returns {number} Returns the collection size. + * @example + * + * _.size([1, 2, 3]); + * // => 3 + * + * _.size({ 'a': 1, 'b': 2 }); + * // => 2 + * + * _.size('pebbles'); + * // => 7 + */ +function size(collection) { + if (collection == null) { + return 0; + } + if ((0,isArrayLike/* default */.c)(collection)) { + return lodash_es_isString(collection) ? _stringSize(collection) : collection.length; + } + var tag = (0,_getTag/* default */.c)(collection); + if (tag == mapTag || tag == setTag) { + return collection.size; + } + return (0,_baseKeys/* default */.c)(collection).length; +} + +/* harmony default export */ const lodash_es_size = (size); + +;// CONCATENATED MODULE: ./node_modules/dagre-d3-es/src/graphlib/alg/topsort.js + + + + +topsort_topsort.CycleException = topsort_CycleException; + +function topsort_topsort(g) { + var visited = {}; + var stack = {}; + var results = []; + + function visit(node) { + if (has/* default */.c(stack, node)) { + throw new topsort_CycleException(); + } + + if (!has/* default */.c(visited, node)) { + stack[node] = true; + visited[node] = true; + forEach/* default */.c(g.predecessors(node), visit); + delete stack[node]; + results.push(node); + } + } + + forEach/* default */.c(g.sinks(), visit); + + if (lodash_es_size(visited) !== g.nodeCount()) { + throw new topsort_CycleException(); + } + + return results; +} + +function topsort_CycleException() {} +topsort_CycleException.prototype = new Error(); // must be an instance of Error to pass testing + +;// CONCATENATED MODULE: ./node_modules/dagre-d3-es/src/graphlib/alg/is-acyclic.js + + + + +function isAcyclic(g) { + try { + topsort(g); + } catch (e) { + if (e instanceof CycleException) { + return false; + } + throw e; + } + return true; +} + +;// CONCATENATED MODULE: ./node_modules/dagre-d3-es/src/graphlib/alg/dfs.js + + + + +/* + * A helper that preforms a pre- or post-order traversal on the input graph + * and returns the nodes in the order they were visited. If the graph is + * undirected then this algorithm will navigate using neighbors. If the graph + * is directed then this algorithm will navigate using successors. + * + * Order must be one of "pre" or "post". + */ +function dfs(g, vs, order) { + if (!isArray/* default */.c(vs)) { + vs = [vs]; + } + + var navigation = (g.isDirected() ? g.successors : g.neighbors).bind(g); + + var acc = []; + var visited = {}; + forEach/* default */.c(vs, function (v) { + if (!g.hasNode(v)) { + throw new Error('Graph does not have node: ' + v); + } + + doDfs(g, v, order === 'post', visited, navigation, acc); + }); + return acc; +} + +function doDfs(g, v, postorder, visited, navigation, acc) { + if (!has/* default */.c(visited, v)) { + visited[v] = true; + + if (!postorder) { + acc.push(v); + } + forEach/* default */.c(navigation(v), function (w) { + doDfs(g, w, postorder, visited, navigation, acc); + }); + if (postorder) { + acc.push(v); + } + } +} + +;// CONCATENATED MODULE: ./node_modules/dagre-d3-es/src/graphlib/alg/postorder.js + + + + +function postorder(g, vs) { + return dfs(g, vs, 'post'); +} + +;// CONCATENATED MODULE: ./node_modules/dagre-d3-es/src/graphlib/alg/preorder.js + + + + +function preorder(g, vs) { + return dfs(g, vs, 'pre'); +} + +// EXTERNAL MODULE: ./node_modules/dagre-d3-es/src/graphlib/graph.js + 9 modules +var graph = __webpack_require__(58048); +;// CONCATENATED MODULE: ./node_modules/dagre-d3-es/src/graphlib/alg/prim.js + + + + + + +function prim(g, weightFunc) { + var result = new Graph(); + var parents = {}; + var pq = new PriorityQueue(); + var v; + + function updateNeighbors(edge) { + var w = edge.v === v ? edge.w : edge.v; + var pri = pq.priority(w); + if (pri !== undefined) { + var edgeWeight = weightFunc(edge); + if (edgeWeight < pri) { + parents[w] = v; + pq.decrease(w, edgeWeight); + } + } + } + + if (g.nodeCount() === 0) { + return result; + } + + _.each(g.nodes(), function (v) { + pq.add(v, Number.POSITIVE_INFINITY); + result.setNode(v); + }); + + // Start from an arbitrary node + pq.decrease(g.nodes()[0], 0); + + var init = false; + while (pq.size() > 0) { + v = pq.removeMin(); + if (_.has(parents, v)) { + result.setEdge(v, parents[v]); + } else if (init) { + throw new Error('Input graph is not connected: ' + g); + } else { + init = true; + } + + g.nodeEdges(v).forEach(updateNeighbors); + } + + return result; +} + +;// CONCATENATED MODULE: ./node_modules/dagre-d3-es/src/graphlib/alg/index.js + + + + + + + + + + + + + + +;// CONCATENATED MODULE: ./node_modules/dagre-d3-es/src/dagre/rank/network-simplex.js + + + + + + + + +// Expose some internals for testing purposes +networkSimplex.initLowLimValues = initLowLimValues; +networkSimplex.initCutValues = initCutValues; +networkSimplex.calcCutValue = calcCutValue; +networkSimplex.leaveEdge = leaveEdge; +networkSimplex.enterEdge = enterEdge; +networkSimplex.exchangeEdges = exchangeEdges; + +/* + * The network simplex algorithm assigns ranks to each node in the input graph + * and iteratively improves the ranking to reduce the length of edges. + * + * Preconditions: + * + * 1. The input graph must be a DAG. + * 2. All nodes in the graph must have an object value. + * 3. All edges in the graph must have "minlen" and "weight" attributes. + * + * Postconditions: + * + * 1. All nodes in the graph will have an assigned "rank" attribute that has + * been optimized by the network simplex algorithm. Ranks start at 0. + * + * + * A rough sketch of the algorithm is as follows: + * + * 1. Assign initial ranks to each node. We use the longest path algorithm, + * which assigns ranks to the lowest position possible. In general this + * leads to very wide bottom ranks and unnecessarily long edges. + * 2. Construct a feasible tight tree. A tight tree is one such that all + * edges in the tree have no slack (difference between length of edge + * and minlen for the edge). This by itself greatly improves the assigned + * rankings by shorting edges. + * 3. Iteratively find edges that have negative cut values. Generally a + * negative cut value indicates that the edge could be removed and a new + * tree edge could be added to produce a more compact graph. + * + * Much of the algorithms here are derived from Gansner, et al., "A Technique + * for Drawing Directed Graphs." The structure of the file roughly follows the + * structure of the overall algorithm. + */ +function networkSimplex(g) { + g = simplify(g); + longestPath(g); + var t = feasibleTree(g); + initLowLimValues(t); + initCutValues(t, g); + + var e, f; + while ((e = leaveEdge(t))) { + f = enterEdge(t, g, e); + exchangeEdges(t, g, e, f); + } +} + +/* + * Initializes cut values for all edges in the tree. + */ +function initCutValues(t, g) { + var vs = postorder(t, t.nodes()); + vs = vs.slice(0, vs.length - 1); + forEach/* default */.c(vs, function (v) { + assignCutValue(t, g, v); + }); +} + +function assignCutValue(t, g, child) { + var childLab = t.node(child); + var parent = childLab.parent; + t.edge(child, parent).cutvalue = calcCutValue(t, g, child); +} + +/* + * Given the tight tree, its graph, and a child in the graph calculate and + * return the cut value for the edge between the child and its parent. + */ +function calcCutValue(t, g, child) { + var childLab = t.node(child); + var parent = childLab.parent; + // True if the child is on the tail end of the edge in the directed graph + var childIsTail = true; + // The graph's view of the tree edge we're inspecting + var graphEdge = g.edge(child, parent); + // The accumulated cut value for the edge between this node and its parent + var cutValue = 0; + + if (!graphEdge) { + childIsTail = false; + graphEdge = g.edge(parent, child); + } + + cutValue = graphEdge.weight; + + forEach/* default */.c(g.nodeEdges(child), function (e) { + var isOutEdge = e.v === child, + other = isOutEdge ? e.w : e.v; + + if (other !== parent) { + var pointsToHead = isOutEdge === childIsTail, + otherWeight = g.edge(e).weight; + + cutValue += pointsToHead ? otherWeight : -otherWeight; + if (isTreeEdge(t, child, other)) { + var otherCutValue = t.edge(child, other).cutvalue; + cutValue += pointsToHead ? -otherCutValue : otherCutValue; + } + } + }); + + return cutValue; +} + +function initLowLimValues(tree, root) { + if (arguments.length < 2) { + root = tree.nodes()[0]; + } + dfsAssignLowLim(tree, {}, 1, root); +} + +function dfsAssignLowLim(tree, visited, nextLim, v, parent) { + var low = nextLim; + var label = tree.node(v); + + visited[v] = true; + forEach/* default */.c(tree.neighbors(v), function (w) { + if (!has/* default */.c(visited, w)) { + nextLim = dfsAssignLowLim(tree, visited, nextLim, w, v); + } + }); + + label.low = low; + label.lim = nextLim++; + if (parent) { + label.parent = parent; + } else { + // TODO should be able to remove this when we incrementally update low lim + delete label.parent; + } + + return nextLim; +} + +function leaveEdge(tree) { + return lodash_es_find(tree.edges(), function (e) { + return tree.edge(e).cutvalue < 0; + }); +} + +function enterEdge(t, g, edge) { + var v = edge.v; + var w = edge.w; + + // For the rest of this function we assume that v is the tail and w is the + // head, so if we don't have this edge in the graph we should flip it to + // match the correct orientation. + if (!g.hasEdge(v, w)) { + v = edge.w; + w = edge.v; + } + + var vLabel = t.node(v); + var wLabel = t.node(w); + var tailLabel = vLabel; + var flip = false; + + // If the root is in the tail of the edge then we need to flip the logic that + // checks for the head and tail nodes in the candidates function below. + if (vLabel.lim > wLabel.lim) { + tailLabel = wLabel; + flip = true; + } + + var candidates = filter/* default */.c(g.edges(), function (edge) { + return ( + flip === isDescendant(t, t.node(edge.v), tailLabel) && + flip !== isDescendant(t, t.node(edge.w), tailLabel) + ); + }); + + return lodash_es_minBy(candidates, function (edge) { + return slack(g, edge); + }); +} + +function exchangeEdges(t, g, e, f) { + var v = e.v; + var w = e.w; + t.removeEdge(v, w); + t.setEdge(f.v, f.w, {}); + initLowLimValues(t); + initCutValues(t, g); + updateRanks(t, g); +} + +function updateRanks(t, g) { + var root = lodash_es_find(t.nodes(), function (v) { + return !g.node(v).parent; + }); + var vs = preorder(t, root); + vs = vs.slice(1); + forEach/* default */.c(vs, function (v) { + var parent = t.node(v).parent, + edge = g.edge(v, parent), + flipped = false; + + if (!edge) { + edge = g.edge(parent, v); + flipped = true; + } + + g.node(v).rank = g.node(parent).rank + (flipped ? edge.minlen : -edge.minlen); + }); +} + +/* + * Returns true if the edge is in the tree. + */ +function isTreeEdge(tree, u, v) { + return tree.hasEdge(u, v); +} + +/* + * Returns true if the specified node is descendant of the root node per the + * assigned low and lim attributes in the tree. + */ +function isDescendant(tree, vLabel, rootLabel) { + return rootLabel.low <= vLabel.lim && vLabel.lim <= rootLabel.lim; +} + +;// CONCATENATED MODULE: ./node_modules/dagre-d3-es/src/dagre/rank/index.js + + + + + + +/* + * Assigns a rank to each node in the input graph that respects the "minlen" + * constraint specified on edges between nodes. + * + * This basic structure is derived from Gansner, et al., "A Technique for + * Drawing Directed Graphs." + * + * Pre-conditions: + * + * 1. Graph must be a connected DAG + * 2. Graph nodes must be objects + * 3. Graph edges must have "weight" and "minlen" attributes + * + * Post-conditions: + * + * 1. Graph nodes will have a "rank" attribute based on the results of the + * algorithm. Ranks can start at any index (including negative), we'll + * fix them up later. + */ +function rank(g) { + switch (g.graph().ranker) { + case 'network-simplex': + networkSimplexRanker(g); + break; + case 'tight-tree': + tightTreeRanker(g); + break; + case 'longest-path': + longestPathRanker(g); + break; + default: + networkSimplexRanker(g); + } +} + +// A fast and simple ranker, but results are far from optimal. +var longestPathRanker = longestPath; + +function tightTreeRanker(g) { + longestPath(g); + feasibleTree(g); +} + +function networkSimplexRanker(g) { + networkSimplex(g); +} + +// EXTERNAL MODULE: ./node_modules/lodash-es/values.js + 1 modules +var values = __webpack_require__(36); +// EXTERNAL MODULE: ./node_modules/lodash-es/reduce.js + 2 modules +var reduce = __webpack_require__(90460); +;// CONCATENATED MODULE: ./node_modules/dagre-d3-es/src/dagre/nesting-graph.js + + + + + +/* + * A nesting graph creates dummy nodes for the tops and bottoms of subgraphs, + * adds appropriate edges to ensure that all cluster nodes are placed between + * these boundries, and ensures that the graph is connected. + * + * In addition we ensure, through the use of the minlen property, that nodes + * and subgraph border nodes to not end up on the same rank. + * + * Preconditions: + * + * 1. Input graph is a DAG + * 2. Nodes in the input graph has a minlen attribute + * + * Postconditions: + * + * 1. Input graph is connected. + * 2. Dummy nodes are added for the tops and bottoms of subgraphs. + * 3. The minlen attribute for nodes is adjusted to ensure nodes do not + * get placed on the same rank as subgraph border nodes. + * + * The nesting graph idea comes from Sander, "Layout of Compound Directed + * Graphs." + */ +function nesting_graph_run(g) { + var root = addDummyNode(g, 'root', {}, '_root'); + var depths = treeDepths(g); + var height = lodash_es_max(values/* default */.c(depths)) - 1; // Note: depths is an Object not an array + var nodeSep = 2 * height + 1; + + g.graph().nestingRoot = root; + + // Multiply minlen by nodeSep to align nodes on non-border ranks. + forEach/* default */.c(g.edges(), function (e) { + g.edge(e).minlen *= nodeSep; + }); + + // Calculate a weight that is sufficient to keep subgraphs vertically compact + var weight = sumWeights(g) + 1; + + // Create border nodes and link them up + forEach/* default */.c(g.children(), function (child) { + nesting_graph_dfs(g, root, nodeSep, weight, height, depths, child); + }); + + // Save the multiplier for node layers for later removal of empty border + // layers. + g.graph().nodeRankFactor = nodeSep; +} + +function nesting_graph_dfs(g, root, nodeSep, weight, height, depths, v) { + var children = g.children(v); + if (!children.length) { + if (v !== root) { + g.setEdge(root, v, { weight: 0, minlen: nodeSep }); + } + return; + } + + var top = addBorderNode(g, '_bt'); + var bottom = addBorderNode(g, '_bb'); + var label = g.node(v); + + g.setParent(top, v); + label.borderTop = top; + g.setParent(bottom, v); + label.borderBottom = bottom; + + forEach/* default */.c(children, function (child) { + nesting_graph_dfs(g, root, nodeSep, weight, height, depths, child); + + var childNode = g.node(child); + var childTop = childNode.borderTop ? childNode.borderTop : child; + var childBottom = childNode.borderBottom ? childNode.borderBottom : child; + var thisWeight = childNode.borderTop ? weight : 2 * weight; + var minlen = childTop !== childBottom ? 1 : height - depths[v] + 1; + + g.setEdge(top, childTop, { + weight: thisWeight, + minlen: minlen, + nestingEdge: true, + }); + + g.setEdge(childBottom, bottom, { + weight: thisWeight, + minlen: minlen, + nestingEdge: true, + }); + }); + + if (!g.parent(v)) { + g.setEdge(root, top, { weight: 0, minlen: height + depths[v] }); + } +} + +function treeDepths(g) { + var depths = {}; + function dfs(v, depth) { + var children = g.children(v); + if (children && children.length) { + forEach/* default */.c(children, function (child) { + dfs(child, depth + 1); + }); + } + depths[v] = depth; + } + forEach/* default */.c(g.children(), function (v) { + dfs(v, 1); + }); + return depths; +} + +function sumWeights(g) { + return reduce/* default */.c( + g.edges(), + function (acc, e) { + return acc + g.edge(e).weight; + }, + 0 + ); +} + +function cleanup(g) { + var graphLabel = g.graph(); + g.removeNode(graphLabel.nestingRoot); + delete graphLabel.nestingRoot; + forEach/* default */.c(g.edges(), function (e) { + var edge = g.edge(e); + if (edge.nestingEdge) { + g.removeEdge(e); + } + }); +} + +// EXTERNAL MODULE: ./node_modules/lodash-es/_baseClone.js + 15 modules +var _baseClone = __webpack_require__(48492); +;// CONCATENATED MODULE: ./node_modules/lodash-es/cloneDeep.js + + +/** Used to compose bitmasks for cloning. */ +var CLONE_DEEP_FLAG = 1, + CLONE_SYMBOLS_FLAG = 4; + +/** + * This method is like `_.clone` except that it recursively clones `value`. + * + * @static + * @memberOf _ + * @since 1.0.0 + * @category Lang + * @param {*} value The value to recursively clone. + * @returns {*} Returns the deep cloned value. + * @see _.clone + * @example + * + * var objects = [{ 'a': 1 }, { 'b': 2 }]; + * + * var deep = _.cloneDeep(objects); + * console.log(deep[0] === objects[0]); + * // => false + */ +function cloneDeep(value) { + return (0,_baseClone/* default */.c)(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG); +} + +/* harmony default export */ const lodash_es_cloneDeep = (cloneDeep); + +;// CONCATENATED MODULE: ./node_modules/dagre-d3-es/src/dagre/order/add-subgraph-constraints.js + + + + +function addSubgraphConstraints(g, cg, vs) { + var prev = {}, + rootPrev; + + forEach/* default */.c(vs, function (v) { + var child = g.parent(v), + parent, + prevChild; + while (child) { + parent = g.parent(child); + if (parent) { + prevChild = prev[parent]; + prev[parent] = child; + } else { + prevChild = rootPrev; + rootPrev = child; + } + if (prevChild && prevChild !== child) { + cg.setEdge(prevChild, child); + return; + } + child = parent; + } + }); + + /* + function dfs(v) { + var children = v ? g.children(v) : g.children(); + if (children.length) { + var min = Number.POSITIVE_INFINITY, + subgraphs = []; + _.each(children, function(child) { + var childMin = dfs(child); + if (g.children(child).length) { + subgraphs.push({ v: child, order: childMin }); + } + min = Math.min(min, childMin); + }); + _.reduce(_.sortBy(subgraphs, "order"), function(prev, curr) { + cg.setEdge(prev.v, curr.v); + return curr; + }); + return min; + } + return g.node(v).order; + } + dfs(undefined); + */ +} + +;// CONCATENATED MODULE: ./node_modules/dagre-d3-es/src/dagre/order/build-layer-graph.js + + + + + +/* + * Constructs a graph that can be used to sort a layer of nodes. The graph will + * contain all base and subgraph nodes from the request layer in their original + * hierarchy and any edges that are incident on these nodes and are of the type + * requested by the "relationship" parameter. + * + * Nodes from the requested rank that do not have parents are assigned a root + * node in the output graph, which is set in the root graph attribute. This + * makes it easy to walk the hierarchy of movable nodes during ordering. + * + * Pre-conditions: + * + * 1. Input graph is a DAG + * 2. Base nodes in the input graph have a rank attribute + * 3. Subgraph nodes in the input graph has minRank and maxRank attributes + * 4. Edges have an assigned weight + * + * Post-conditions: + * + * 1. Output graph has all nodes in the movable rank with preserved + * hierarchy. + * 2. Root nodes in the movable layer are made children of the node + * indicated by the root attribute of the graph. + * 3. Non-movable nodes incident on movable nodes, selected by the + * relationship parameter, are included in the graph (without hierarchy). + * 4. Edges incident on movable nodes, selected by the relationship + * parameter, are added to the output graph. + * 5. The weights for copied edges are aggregated as need, since the output + * graph is not a multi-graph. + */ +function buildLayerGraph(g, rank, relationship) { + var root = createRootNode(g), + result = new graphlib/* Graph */.M({ compound: true }) + .setGraph({ root: root }) + .setDefaultNodeLabel(function (v) { + return g.node(v); + }); + + forEach/* default */.c(g.nodes(), function (v) { + var node = g.node(v), + parent = g.parent(v); + + if (node.rank === rank || (node.minRank <= rank && rank <= node.maxRank)) { + result.setNode(v); + result.setParent(v, parent || root); + + // This assumes we have only short edges! + forEach/* default */.c(g[relationship](v), function (e) { + var u = e.v === v ? e.w : e.v, + edge = result.edge(u, v), + weight = !isUndefined/* default */.c(edge) ? edge.weight : 0; + result.setEdge(u, v, { weight: g.edge(e).weight + weight }); + }); + + if (has/* default */.c(node, 'minRank')) { + result.setNode(v, { + borderLeft: node.borderLeft[rank], + borderRight: node.borderRight[rank], + }); + } + } + }); + + return result; +} + +function createRootNode(g) { + var v; + while (g.hasNode((v = uniqueId/* default */.c('_root')))); + return v; +} + +// EXTERNAL MODULE: ./node_modules/lodash-es/_assignValue.js +var _assignValue = __webpack_require__(77412); +;// CONCATENATED MODULE: ./node_modules/lodash-es/_baseZipObject.js +/** + * This base implementation of `_.zipObject` which assigns values using `assignFunc`. + * + * @private + * @param {Array} props The property identifiers. + * @param {Array} values The property values. + * @param {Function} assignFunc The function to assign values. + * @returns {Object} Returns the new object. + */ +function baseZipObject(props, values, assignFunc) { + var index = -1, + length = props.length, + valsLength = values.length, + result = {}; + + while (++index < length) { + var value = index < valsLength ? values[index] : undefined; + assignFunc(result, props[index], value); + } + return result; +} + +/* harmony default export */ const _baseZipObject = (baseZipObject); + +;// CONCATENATED MODULE: ./node_modules/lodash-es/zipObject.js + + + +/** + * This method is like `_.fromPairs` except that it accepts two arrays, + * one of property identifiers and one of corresponding values. + * + * @static + * @memberOf _ + * @since 0.4.0 + * @category Array + * @param {Array} [props=[]] The property identifiers. + * @param {Array} [values=[]] The property values. + * @returns {Object} Returns the new object. + * @example + * + * _.zipObject(['a', 'b'], [1, 2]); + * // => { 'a': 1, 'b': 2 } + */ +function zipObject(props, values) { + return _baseZipObject(props || [], values || [], _assignValue/* default */.c); +} + +/* harmony default export */ const lodash_es_zipObject = (zipObject); + +// EXTERNAL MODULE: ./node_modules/lodash-es/_baseFlatten.js + 1 modules +var _baseFlatten = __webpack_require__(40571); +// EXTERNAL MODULE: ./node_modules/lodash-es/_arrayMap.js +var _arrayMap = __webpack_require__(1304); +// EXTERNAL MODULE: ./node_modules/lodash-es/_baseGet.js +var _baseGet = __webpack_require__(60604); +// EXTERNAL MODULE: ./node_modules/lodash-es/_baseMap.js +var _baseMap = __webpack_require__(67980); +;// CONCATENATED MODULE: ./node_modules/lodash-es/_baseSortBy.js +/** + * The base implementation of `_.sortBy` which uses `comparer` to define the + * sort order of `array` and replaces criteria objects with their corresponding + * values. + * + * @private + * @param {Array} array The array to sort. + * @param {Function} comparer The function to define sort order. + * @returns {Array} Returns `array`. + */ +function baseSortBy(array, comparer) { + var length = array.length; + + array.sort(comparer); + while (length--) { + array[length] = array[length].value; + } + return array; +} + +/* harmony default export */ const _baseSortBy = (baseSortBy); + +// EXTERNAL MODULE: ./node_modules/lodash-es/_baseUnary.js +var _baseUnary = __webpack_require__(71180); +;// CONCATENATED MODULE: ./node_modules/lodash-es/_compareAscending.js + + +/** + * Compares values to sort them in ascending order. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @returns {number} Returns the sort order indicator for `value`. + */ +function compareAscending(value, other) { + if (value !== other) { + var valIsDefined = value !== undefined, + valIsNull = value === null, + valIsReflexive = value === value, + valIsSymbol = (0,isSymbol/* default */.c)(value); + + var othIsDefined = other !== undefined, + othIsNull = other === null, + othIsReflexive = other === other, + othIsSymbol = (0,isSymbol/* default */.c)(other); + + if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) || + (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) || + (valIsNull && othIsDefined && othIsReflexive) || + (!valIsDefined && othIsReflexive) || + !valIsReflexive) { + return 1; + } + if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) || + (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) || + (othIsNull && valIsDefined && valIsReflexive) || + (!othIsDefined && valIsReflexive) || + !othIsReflexive) { + return -1; + } + } + return 0; +} + +/* harmony default export */ const _compareAscending = (compareAscending); + +;// CONCATENATED MODULE: ./node_modules/lodash-es/_compareMultiple.js + + +/** + * Used by `_.orderBy` to compare multiple properties of a value to another + * and stable sort them. + * + * If `orders` is unspecified, all values are sorted in ascending order. Otherwise, + * specify an order of "desc" for descending or "asc" for ascending sort order + * of corresponding values. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {boolean[]|string[]} orders The order to sort by for each property. + * @returns {number} Returns the sort order indicator for `object`. + */ +function compareMultiple(object, other, orders) { + var index = -1, + objCriteria = object.criteria, + othCriteria = other.criteria, + length = objCriteria.length, + ordersLength = orders.length; + + while (++index < length) { + var result = _compareAscending(objCriteria[index], othCriteria[index]); + if (result) { + if (index >= ordersLength) { + return result; + } + var order = orders[index]; + return result * (order == 'desc' ? -1 : 1); + } + } + // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications + // that causes it, under certain circumstances, to provide the same value for + // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247 + // for more details. + // + // This also ensures a stable sort in V8 and other engines. + // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details. + return object.index - other.index; +} + +/* harmony default export */ const _compareMultiple = (compareMultiple); + +;// CONCATENATED MODULE: ./node_modules/lodash-es/_baseOrderBy.js + + + + + + + + + + +/** + * The base implementation of `_.orderBy` without param guards. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by. + * @param {string[]} orders The sort orders of `iteratees`. + * @returns {Array} Returns the new sorted array. + */ +function baseOrderBy(collection, iteratees, orders) { + if (iteratees.length) { + iteratees = (0,_arrayMap/* default */.c)(iteratees, function(iteratee) { + if ((0,isArray/* default */.c)(iteratee)) { + return function(value) { + return (0,_baseGet/* default */.c)(value, iteratee.length === 1 ? iteratee[0] : iteratee); + } + } + return iteratee; + }); + } else { + iteratees = [identity/* default */.c]; + } + + var index = -1; + iteratees = (0,_arrayMap/* default */.c)(iteratees, (0,_baseUnary/* default */.c)(_baseIteratee/* default */.c)); + + var result = (0,_baseMap/* default */.c)(collection, function(value, key, collection) { + var criteria = (0,_arrayMap/* default */.c)(iteratees, function(iteratee) { + return iteratee(value); + }); + return { 'criteria': criteria, 'index': ++index, 'value': value }; + }); + + return _baseSortBy(result, function(object, other) { + return _compareMultiple(object, other, orders); + }); +} + +/* harmony default export */ const _baseOrderBy = (baseOrderBy); + +// EXTERNAL MODULE: ./node_modules/lodash-es/_baseRest.js +var _baseRest = __webpack_require__(34880); +// EXTERNAL MODULE: ./node_modules/lodash-es/_isIterateeCall.js +var _isIterateeCall = __webpack_require__(15552); +;// CONCATENATED MODULE: ./node_modules/lodash-es/sortBy.js + + + + + +/** + * Creates an array of elements, sorted in ascending order by the results of + * running each element in a collection thru each iteratee. This method + * performs a stable sort, that is, it preserves the original sort order of + * equal elements. The iteratees are invoked with one argument: (value). + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {...(Function|Function[])} [iteratees=[_.identity]] + * The iteratees to sort by. + * @returns {Array} Returns the new sorted array. + * @example + * + * var users = [ + * { 'user': 'fred', 'age': 48 }, + * { 'user': 'barney', 'age': 36 }, + * { 'user': 'fred', 'age': 30 }, + * { 'user': 'barney', 'age': 34 } + * ]; + * + * _.sortBy(users, [function(o) { return o.user; }]); + * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]] + * + * _.sortBy(users, ['user', 'age']); + * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]] + */ +var sortBy = (0,_baseRest/* default */.c)(function(collection, iteratees) { + if (collection == null) { + return []; + } + var length = iteratees.length; + if (length > 1 && (0,_isIterateeCall/* default */.c)(collection, iteratees[0], iteratees[1])) { + iteratees = []; + } else if (length > 2 && (0,_isIterateeCall/* default */.c)(iteratees[0], iteratees[1], iteratees[2])) { + iteratees = [iteratees[0]]; + } + return _baseOrderBy(collection, (0,_baseFlatten/* default */.c)(iteratees, 1), []); +}); + +/* harmony default export */ const lodash_es_sortBy = (sortBy); + +;// CONCATENATED MODULE: ./node_modules/dagre-d3-es/src/dagre/order/cross-count.js + + + + +/* + * A function that takes a layering (an array of layers, each with an array of + * ordererd nodes) and a graph and returns a weighted crossing count. + * + * Pre-conditions: + * + * 1. Input graph must be simple (not a multigraph), directed, and include + * only simple edges. + * 2. Edges in the input graph must have assigned weights. + * + * Post-conditions: + * + * 1. The graph and layering matrix are left unchanged. + * + * This algorithm is derived from Barth, et al., "Bilayer Cross Counting." + */ +function crossCount(g, layering) { + var cc = 0; + for (var i = 1; i < layering.length; ++i) { + cc += twoLayerCrossCount(g, layering[i - 1], layering[i]); + } + return cc; +} + +function twoLayerCrossCount(g, northLayer, southLayer) { + // Sort all of the edges between the north and south layers by their position + // in the north layer and then the south. Map these edges to the position of + // their head in the south layer. + var southPos = lodash_es_zipObject( + southLayer, + map/* default */.c(southLayer, function (v, i) { + return i; + }) + ); + var southEntries = flatten/* default */.c( + map/* default */.c(northLayer, function (v) { + return lodash_es_sortBy( + map/* default */.c(g.outEdges(v), function (e) { + return { pos: southPos[e.w], weight: g.edge(e).weight }; + }), + 'pos' + ); + }) + ); + + // Build the accumulator tree + var firstIndex = 1; + while (firstIndex < southLayer.length) firstIndex <<= 1; + var treeSize = 2 * firstIndex - 1; + firstIndex -= 1; + var tree = map/* default */.c(new Array(treeSize), function () { + return 0; + }); + + // Calculate the weighted crossings + var cc = 0; + forEach/* default */.c( + // @ts-expect-error + southEntries.forEach(function (entry) { + var index = entry.pos + firstIndex; + tree[index] += entry.weight; + var weightSum = 0; + // @ts-expect-error + while (index > 0) { + // @ts-expect-error + if (index % 2) { + weightSum += tree[index + 1]; + } + // @ts-expect-error + index = (index - 1) >> 1; + tree[index] += entry.weight; + } + cc += entry.weight * weightSum; + }) + ); + + return cc; +} + +;// CONCATENATED MODULE: ./node_modules/dagre-d3-es/src/dagre/order/init-order.js + + + + +/* + * Assigns an initial order value for each node by performing a DFS search + * starting from nodes in the first rank. Nodes are assigned an order in their + * rank as they are first visited. + * + * This approach comes from Gansner, et al., "A Technique for Drawing Directed + * Graphs." + * + * Returns a layering matrix with an array per layer and each layer sorted by + * the order of its nodes. + */ +function initOrder(g) { + var visited = {}; + var simpleNodes = filter/* default */.c(g.nodes(), function (v) { + return !g.children(v).length; + }); + var maxRank = lodash_es_max( + map/* default */.c(simpleNodes, function (v) { + return g.node(v).rank; + }) + ); + var layers = map/* default */.c(range/* default */.c(maxRank + 1), function () { + return []; + }); + + function dfs(v) { + if (has/* default */.c(visited, v)) return; + visited[v] = true; + var node = g.node(v); + layers[node.rank].push(v); + forEach/* default */.c(g.successors(v), dfs); + } + + var orderedVs = lodash_es_sortBy(simpleNodes, function (v) { + return g.node(v).rank; + }); + forEach/* default */.c(orderedVs, dfs); + + return layers; +} + +;// CONCATENATED MODULE: ./node_modules/dagre-d3-es/src/dagre/order/barycenter.js + + + + +function barycenter(g, movable) { + return map/* default */.c(movable, function (v) { + var inV = g.inEdges(v); + if (!inV.length) { + return { v: v }; + } else { + var result = reduce/* default */.c( + inV, + function (acc, e) { + var edge = g.edge(e), + nodeU = g.node(e.v); + return { + sum: acc.sum + edge.weight * nodeU.order, + weight: acc.weight + edge.weight, + }; + }, + { sum: 0, weight: 0 } + ); + + return { + v: v, + barycenter: result.sum / result.weight, + weight: result.weight, + }; + } + }); +} + +;// CONCATENATED MODULE: ./node_modules/dagre-d3-es/src/dagre/order/resolve-conflicts.js + + + + +/* + * Given a list of entries of the form {v, barycenter, weight} and a + * constraint graph this function will resolve any conflicts between the + * constraint graph and the barycenters for the entries. If the barycenters for + * an entry would violate a constraint in the constraint graph then we coalesce + * the nodes in the conflict into a new node that respects the contraint and + * aggregates barycenter and weight information. + * + * This implementation is based on the description in Forster, "A Fast and + * Simple Hueristic for Constrained Two-Level Crossing Reduction," thought it + * differs in some specific details. + * + * Pre-conditions: + * + * 1. Each entry has the form {v, barycenter, weight}, or if the node has + * no barycenter, then {v}. + * + * Returns: + * + * A new list of entries of the form {vs, i, barycenter, weight}. The list + * `vs` may either be a singleton or it may be an aggregation of nodes + * ordered such that they do not violate constraints from the constraint + * graph. The property `i` is the lowest original index of any of the + * elements in `vs`. + */ +function resolveConflicts(entries, cg) { + var mappedEntries = {}; + forEach/* default */.c(entries, function (entry, i) { + var tmp = (mappedEntries[entry.v] = { + indegree: 0, + in: [], + out: [], + vs: [entry.v], + i: i, + }); + if (!isUndefined/* default */.c(entry.barycenter)) { + // @ts-expect-error + tmp.barycenter = entry.barycenter; + // @ts-expect-error + tmp.weight = entry.weight; + } + }); + + forEach/* default */.c(cg.edges(), function (e) { + var entryV = mappedEntries[e.v]; + var entryW = mappedEntries[e.w]; + if (!isUndefined/* default */.c(entryV) && !isUndefined/* default */.c(entryW)) { + entryW.indegree++; + entryV.out.push(mappedEntries[e.w]); + } + }); + + var sourceSet = filter/* default */.c(mappedEntries, function (entry) { + // @ts-expect-error + return !entry.indegree; + }); + + return doResolveConflicts(sourceSet); +} + +function doResolveConflicts(sourceSet) { + var entries = []; + + function handleIn(vEntry) { + return function (uEntry) { + if (uEntry.merged) { + return; + } + if ( + isUndefined/* default */.c(uEntry.barycenter) || + isUndefined/* default */.c(vEntry.barycenter) || + uEntry.barycenter >= vEntry.barycenter + ) { + mergeEntries(vEntry, uEntry); + } + }; + } + + function handleOut(vEntry) { + return function (wEntry) { + wEntry['in'].push(vEntry); + if (--wEntry.indegree === 0) { + sourceSet.push(wEntry); + } + }; + } + + while (sourceSet.length) { + var entry = sourceSet.pop(); + entries.push(entry); + forEach/* default */.c(entry['in'].reverse(), handleIn(entry)); + forEach/* default */.c(entry.out, handleOut(entry)); + } + + return map/* default */.c( + filter/* default */.c(entries, function (entry) { + return !entry.merged; + }), + function (entry) { + return pick/* default */.c(entry, ['vs', 'i', 'barycenter', 'weight']); + } + ); +} + +function mergeEntries(target, source) { + var sum = 0; + var weight = 0; + + if (target.weight) { + sum += target.barycenter * target.weight; + weight += target.weight; + } + + if (source.weight) { + sum += source.barycenter * source.weight; + weight += source.weight; + } + + target.vs = source.vs.concat(target.vs); + target.barycenter = sum / weight; + target.weight = weight; + target.i = Math.min(source.i, target.i); + source.merged = true; +} + +;// CONCATENATED MODULE: ./node_modules/dagre-d3-es/src/dagre/order/sort.js + + + + + +function sort(entries, biasRight) { + var parts = partition(entries, function (entry) { + return has/* default */.c(entry, 'barycenter'); + }); + var sortable = parts.lhs, + unsortable = lodash_es_sortBy(parts.rhs, function (entry) { + return -entry.i; + }), + vs = [], + sum = 0, + weight = 0, + vsIndex = 0; + + sortable.sort(compareWithBias(!!biasRight)); + + vsIndex = consumeUnsortable(vs, unsortable, vsIndex); + + forEach/* default */.c(sortable, function (entry) { + vsIndex += entry.vs.length; + vs.push(entry.vs); + sum += entry.barycenter * entry.weight; + weight += entry.weight; + vsIndex = consumeUnsortable(vs, unsortable, vsIndex); + }); + + var result = { vs: flatten/* default */.c(vs) }; + if (weight) { + result.barycenter = sum / weight; + result.weight = weight; + } + return result; +} + +function consumeUnsortable(vs, unsortable, index) { + var last; + while (unsortable.length && (last = lodash_es_last(unsortable)).i <= index) { + unsortable.pop(); + vs.push(last.vs); + index++; + } + return index; +} + +function compareWithBias(bias) { + return function (entryV, entryW) { + if (entryV.barycenter < entryW.barycenter) { + return -1; + } else if (entryV.barycenter > entryW.barycenter) { + return 1; + } + + return !bias ? entryV.i - entryW.i : entryW.i - entryV.i; + }; +} + +;// CONCATENATED MODULE: ./node_modules/dagre-d3-es/src/dagre/order/sort-subgraph.js + + + + + + + +function sortSubgraph(g, v, cg, biasRight) { + var movable = g.children(v); + var node = g.node(v); + var bl = node ? node.borderLeft : undefined; + var br = node ? node.borderRight : undefined; + var subgraphs = {}; + + if (bl) { + movable = filter/* default */.c(movable, function (w) { + return w !== bl && w !== br; + }); + } + + var barycenters = barycenter(g, movable); + forEach/* default */.c(barycenters, function (entry) { + if (g.children(entry.v).length) { + var subgraphResult = sortSubgraph(g, entry.v, cg, biasRight); + subgraphs[entry.v] = subgraphResult; + if (has/* default */.c(subgraphResult, 'barycenter')) { + mergeBarycenters(entry, subgraphResult); + } + } + }); + + var entries = resolveConflicts(barycenters, cg); + expandSubgraphs(entries, subgraphs); + + var result = sort(entries, biasRight); + + if (bl) { + result.vs = flatten/* default */.c([bl, result.vs, br]); + if (g.predecessors(bl).length) { + var blPred = g.node(g.predecessors(bl)[0]), + brPred = g.node(g.predecessors(br)[0]); + if (!has/* default */.c(result, 'barycenter')) { + result.barycenter = 0; + result.weight = 0; + } + result.barycenter = + (result.barycenter * result.weight + blPred.order + brPred.order) / (result.weight + 2); + result.weight += 2; + } + } + + return result; +} + +function expandSubgraphs(entries, subgraphs) { + forEach/* default */.c(entries, function (entry) { + entry.vs = flatten/* default */.c( + entry.vs.map(function (v) { + if (subgraphs[v]) { + return subgraphs[v].vs; + } + return v; + }) + ); + }); +} + +function mergeBarycenters(target, other) { + if (!isUndefined/* default */.c(target.barycenter)) { + target.barycenter = + (target.barycenter * target.weight + other.barycenter * other.weight) / + (target.weight + other.weight); + target.weight += other.weight; + } else { + target.barycenter = other.barycenter; + target.weight = other.weight; + } +} + +;// CONCATENATED MODULE: ./node_modules/dagre-d3-es/src/dagre/order/index.js + + + + + + + + + + + +/* + * Applies heuristics to minimize edge crossings in the graph and sets the best + * order solution as an order attribute on each node. + * + * Pre-conditions: + * + * 1. Graph must be DAG + * 2. Graph nodes must be objects with a "rank" attribute + * 3. Graph edges must have the "weight" attribute + * + * Post-conditions: + * + * 1. Graph nodes will have an "order" attribute based on the results of the + * algorithm. + */ +function order(g) { + var maxRank = util_maxRank(g), + downLayerGraphs = buildLayerGraphs(g, range/* default */.c(1, maxRank + 1), 'inEdges'), + upLayerGraphs = buildLayerGraphs(g, range/* default */.c(maxRank - 1, -1, -1), 'outEdges'); + + var layering = initOrder(g); + assignOrder(g, layering); + + var bestCC = Number.POSITIVE_INFINITY, + best; + + for (var i = 0, lastBest = 0; lastBest < 4; ++i, ++lastBest) { + sweepLayerGraphs(i % 2 ? downLayerGraphs : upLayerGraphs, i % 4 >= 2); + + layering = buildLayerMatrix(g); + var cc = crossCount(g, layering); + if (cc < bestCC) { + lastBest = 0; + best = lodash_es_cloneDeep(layering); + bestCC = cc; + } + } + + assignOrder(g, best); +} + +function buildLayerGraphs(g, ranks, relationship) { + return map/* default */.c(ranks, function (rank) { + return buildLayerGraph(g, rank, relationship); + }); +} + +function sweepLayerGraphs(layerGraphs, biasRight) { + var cg = new graphlib/* Graph */.M(); + forEach/* default */.c(layerGraphs, function (lg) { + var root = lg.graph().root; + var sorted = sortSubgraph(lg, root, cg, biasRight); + forEach/* default */.c(sorted.vs, function (v, i) { + lg.node(v).order = i; + }); + addSubgraphConstraints(lg, cg, sorted.vs); + }); +} + +function assignOrder(g, layering) { + forEach/* default */.c(layering, function (layer) { + forEach/* default */.c(layer, function (v, i) { + g.node(v).order = i; + }); + }); +} + +;// CONCATENATED MODULE: ./node_modules/dagre-d3-es/src/dagre/parent-dummy-chains.js + + + + +function parentDummyChains(g) { + var postorderNums = parent_dummy_chains_postorder(g); + + forEach/* default */.c(g.graph().dummyChains, function (v) { + var node = g.node(v); + var edgeObj = node.edgeObj; + var pathData = findPath(g, postorderNums, edgeObj.v, edgeObj.w); + var path = pathData.path; + var lca = pathData.lca; + var pathIdx = 0; + var pathV = path[pathIdx]; + var ascending = true; + + while (v !== edgeObj.w) { + node = g.node(v); + + if (ascending) { + while ((pathV = path[pathIdx]) !== lca && g.node(pathV).maxRank < node.rank) { + pathIdx++; + } + + if (pathV === lca) { + ascending = false; + } + } + + if (!ascending) { + while ( + pathIdx < path.length - 1 && + g.node((pathV = path[pathIdx + 1])).minRank <= node.rank + ) { + pathIdx++; + } + pathV = path[pathIdx]; + } + + g.setParent(v, pathV); + v = g.successors(v)[0]; + } + }); +} + +// Find a path from v to w through the lowest common ancestor (LCA). Return the +// full path and the LCA. +function findPath(g, postorderNums, v, w) { + var vPath = []; + var wPath = []; + var low = Math.min(postorderNums[v].low, postorderNums[w].low); + var lim = Math.max(postorderNums[v].lim, postorderNums[w].lim); + var parent; + var lca; + + // Traverse up from v to find the LCA + parent = v; + do { + parent = g.parent(parent); + vPath.push(parent); + } while (parent && (postorderNums[parent].low > low || lim > postorderNums[parent].lim)); + lca = parent; + + // Traverse from w to LCA + parent = w; + while ((parent = g.parent(parent)) !== lca) { + wPath.push(parent); + } + + return { path: vPath.concat(wPath.reverse()), lca: lca }; +} + +function parent_dummy_chains_postorder(g) { + var result = {}; + var lim = 0; + + function dfs(v) { + var low = lim; + forEach/* default */.c(g.children(v), dfs); + result[v] = { low: low, lim: lim++ }; + } + forEach/* default */.c(g.children(), dfs); + + return result; +} + +// EXTERNAL MODULE: ./node_modules/lodash-es/_castFunction.js +var _castFunction = __webpack_require__(12176); +;// CONCATENATED MODULE: ./node_modules/lodash-es/forOwn.js + + + +/** + * Iterates over own enumerable string keyed properties of an object and + * invokes `iteratee` for each property. The iteratee is invoked with three + * arguments: (value, key, object). Iteratee functions may exit iteration + * early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @since 0.3.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forOwnRight + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forOwn(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a' then 'b' (iteration order is not guaranteed). + */ +function forOwn(object, iteratee) { + return object && (0,_baseForOwn/* default */.c)(object, (0,_castFunction/* default */.c)(iteratee)); +} + +/* harmony default export */ const lodash_es_forOwn = (forOwn); + +// EXTERNAL MODULE: ./node_modules/lodash-es/_baseFor.js + 1 modules +var _baseFor = __webpack_require__(19004); +// EXTERNAL MODULE: ./node_modules/lodash-es/keysIn.js + 2 modules +var keysIn = __webpack_require__(97000); +;// CONCATENATED MODULE: ./node_modules/lodash-es/forIn.js + + + + +/** + * Iterates over own and inherited enumerable string keyed properties of an + * object and invokes `iteratee` for each property. The iteratee is invoked + * with three arguments: (value, key, object). Iteratee functions may exit + * iteration early by explicitly returning `false`. + * + * @static + * @memberOf _ + * @since 0.3.0 + * @category Object + * @param {Object} object The object to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Object} Returns `object`. + * @see _.forInRight + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.forIn(new Foo, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed). + */ +function forIn(object, iteratee) { + return object == null + ? object + : (0,_baseFor/* default */.c)(object, (0,_castFunction/* default */.c)(iteratee), keysIn/* default */.c); +} + +/* harmony default export */ const lodash_es_forIn = (forIn); + +;// CONCATENATED MODULE: ./node_modules/dagre-d3-es/src/dagre/position/bk.js + + + + +/* + * This module provides coordinate assignment based on Brandes and Köpf, "Fast + * and Simple Horizontal Coordinate Assignment." + */ + + + +/* + * Marks all edges in the graph with a type-1 conflict with the "type1Conflict" + * property. A type-1 conflict is one where a non-inner segment crosses an + * inner segment. An inner segment is an edge with both incident nodes marked + * with the "dummy" property. + * + * This algorithm scans layer by layer, starting with the second, for type-1 + * conflicts between the current layer and the previous layer. For each layer + * it scans the nodes from left to right until it reaches one that is incident + * on an inner segment. It then scans predecessors to determine if they have + * edges that cross that inner segment. At the end a final scan is done for all + * nodes on the current rank to see if they cross the last visited inner + * segment. + * + * This algorithm (safely) assumes that a dummy node will only be incident on a + * single node in the layers being scanned. + */ +function findType1Conflicts(g, layering) { + var conflicts = {}; + + function visitLayer(prevLayer, layer) { + var // last visited node in the previous layer that is incident on an inner + // segment. + k0 = 0, + // Tracks the last node in this layer scanned for crossings with a type-1 + // segment. + scanPos = 0, + prevLayerLength = prevLayer.length, + lastNode = lodash_es_last(layer); + + forEach/* default */.c(layer, function (v, i) { + var w = findOtherInnerSegmentNode(g, v), + k1 = w ? g.node(w).order : prevLayerLength; + + if (w || v === lastNode) { + forEach/* default */.c(layer.slice(scanPos, i + 1), function (scanNode) { + forEach/* default */.c(g.predecessors(scanNode), function (u) { + var uLabel = g.node(u), + uPos = uLabel.order; + if ((uPos < k0 || k1 < uPos) && !(uLabel.dummy && g.node(scanNode).dummy)) { + addConflict(conflicts, u, scanNode); + } + }); + }); + // @ts-expect-error + scanPos = i + 1; + k0 = k1; + } + }); + + return layer; + } + + reduce/* default */.c(layering, visitLayer); + return conflicts; +} + +function findType2Conflicts(g, layering) { + var conflicts = {}; + + function scan(south, southPos, southEnd, prevNorthBorder, nextNorthBorder) { + var v; + forEach/* default */.c(range/* default */.c(southPos, southEnd), function (i) { + v = south[i]; + if (g.node(v).dummy) { + forEach/* default */.c(g.predecessors(v), function (u) { + var uNode = g.node(u); + if (uNode.dummy && (uNode.order < prevNorthBorder || uNode.order > nextNorthBorder)) { + addConflict(conflicts, u, v); + } + }); + } + }); + } + + function visitLayer(north, south) { + var prevNorthPos = -1, + nextNorthPos, + southPos = 0; + + forEach/* default */.c(south, function (v, southLookahead) { + if (g.node(v).dummy === 'border') { + var predecessors = g.predecessors(v); + if (predecessors.length) { + nextNorthPos = g.node(predecessors[0]).order; + scan(south, southPos, southLookahead, prevNorthPos, nextNorthPos); + // @ts-expect-error + southPos = southLookahead; + prevNorthPos = nextNorthPos; + } + } + scan(south, southPos, south.length, nextNorthPos, north.length); + }); + + return south; + } + + reduce/* default */.c(layering, visitLayer); + return conflicts; +} + +function findOtherInnerSegmentNode(g, v) { + if (g.node(v).dummy) { + return lodash_es_find(g.predecessors(v), function (u) { + return g.node(u).dummy; + }); + } +} + +function addConflict(conflicts, v, w) { + if (v > w) { + var tmp = v; + v = w; + w = tmp; + } + + var conflictsV = conflicts[v]; + if (!conflictsV) { + conflicts[v] = conflictsV = {}; + } + conflictsV[w] = true; +} + +function hasConflict(conflicts, v, w) { + if (v > w) { + var tmp = v; + v = w; + w = tmp; + } + return has/* default */.c(conflicts[v], w); +} + +/* + * Try to align nodes into vertical "blocks" where possible. This algorithm + * attempts to align a node with one of its median neighbors. If the edge + * connecting a neighbor is a type-1 conflict then we ignore that possibility. + * If a previous node has already formed a block with a node after the node + * we're trying to form a block with, we also ignore that possibility - our + * blocks would be split in that scenario. + */ +function verticalAlignment(g, layering, conflicts, neighborFn) { + var root = {}, + align = {}, + pos = {}; + + // We cache the position here based on the layering because the graph and + // layering may be out of sync. The layering matrix is manipulated to + // generate different extreme alignments. + forEach/* default */.c(layering, function (layer) { + forEach/* default */.c(layer, function (v, order) { + root[v] = v; + align[v] = v; + pos[v] = order; + }); + }); + + forEach/* default */.c(layering, function (layer) { + var prevIdx = -1; + forEach/* default */.c(layer, function (v) { + var ws = neighborFn(v); + if (ws.length) { + ws = lodash_es_sortBy(ws, function (w) { + return pos[w]; + }); + var mp = (ws.length - 1) / 2; + for (var i = Math.floor(mp), il = Math.ceil(mp); i <= il; ++i) { + var w = ws[i]; + if (align[v] === v && prevIdx < pos[w] && !hasConflict(conflicts, v, w)) { + align[w] = v; + align[v] = root[v] = root[w]; + prevIdx = pos[w]; + } + } + } + }); + }); + + return { root: root, align: align }; +} + +function horizontalCompaction(g, layering, root, align, reverseSep) { + // This portion of the algorithm differs from BK due to a number of problems. + // Instead of their algorithm we construct a new block graph and do two + // sweeps. The first sweep places blocks with the smallest possible + // coordinates. The second sweep removes unused space by moving blocks to the + // greatest coordinates without violating separation. + var xs = {}, + blockG = buildBlockGraph(g, layering, root, reverseSep), + borderType = reverseSep ? 'borderLeft' : 'borderRight'; + + function iterate(setXsFunc, nextNodesFunc) { + var stack = blockG.nodes(); + var elem = stack.pop(); + var visited = {}; + while (elem) { + if (visited[elem]) { + setXsFunc(elem); + } else { + visited[elem] = true; + stack.push(elem); + stack = stack.concat(nextNodesFunc(elem)); + } + + elem = stack.pop(); + } + } + + // First pass, assign smallest coordinates + function pass1(elem) { + xs[elem] = blockG.inEdges(elem).reduce(function (acc, e) { + return Math.max(acc, xs[e.v] + blockG.edge(e)); + }, 0); + } + + // Second pass, assign greatest coordinates + function pass2(elem) { + var min = blockG.outEdges(elem).reduce(function (acc, e) { + return Math.min(acc, xs[e.w] - blockG.edge(e)); + }, Number.POSITIVE_INFINITY); + + var node = g.node(elem); + if (min !== Number.POSITIVE_INFINITY && node.borderType !== borderType) { + xs[elem] = Math.max(xs[elem], min); + } + } + + iterate(pass1, blockG.predecessors.bind(blockG)); + iterate(pass2, blockG.successors.bind(blockG)); + + // Assign x coordinates to all nodes + forEach/* default */.c(align, function (v) { + xs[v] = xs[root[v]]; + }); + + return xs; +} + +function buildBlockGraph(g, layering, root, reverseSep) { + var blockGraph = new graphlib/* Graph */.M(), + graphLabel = g.graph(), + sepFn = sep(graphLabel.nodesep, graphLabel.edgesep, reverseSep); + + forEach/* default */.c(layering, function (layer) { + var u; + forEach/* default */.c(layer, function (v) { + var vRoot = root[v]; + blockGraph.setNode(vRoot); + if (u) { + var uRoot = root[u], + prevMax = blockGraph.edge(uRoot, vRoot); + blockGraph.setEdge(uRoot, vRoot, Math.max(sepFn(g, v, u), prevMax || 0)); + } + u = v; + }); + }); + + return blockGraph; +} + +/* + * Returns the alignment that has the smallest width of the given alignments. + */ +function findSmallestWidthAlignment(g, xss) { + return lodash_es_minBy(values/* default */.c(xss), function (xs) { + var max = Number.NEGATIVE_INFINITY; + var min = Number.POSITIVE_INFINITY; + + lodash_es_forIn(xs, function (x, v) { + var halfWidth = width(g, v) / 2; + + max = Math.max(x + halfWidth, max); + min = Math.min(x - halfWidth, min); + }); + + return max - min; + }); +} + +/* + * Align the coordinates of each of the layout alignments such that + * left-biased alignments have their minimum coordinate at the same point as + * the minimum coordinate of the smallest width alignment and right-biased + * alignments have their maximum coordinate at the same point as the maximum + * coordinate of the smallest width alignment. + */ +function alignCoordinates(xss, alignTo) { + var alignToVals = values/* default */.c(alignTo), + alignToMin = lodash_es_min(alignToVals), + alignToMax = lodash_es_max(alignToVals); + + forEach/* default */.c(['u', 'd'], function (vert) { + forEach/* default */.c(['l', 'r'], function (horiz) { + var alignment = vert + horiz, + xs = xss[alignment], + delta; + if (xs === alignTo) return; + + var xsVals = values/* default */.c(xs); + delta = horiz === 'l' ? alignToMin - lodash_es_min(xsVals) : alignToMax - lodash_es_max(xsVals); + + if (delta) { + xss[alignment] = lodash_es_mapValues(xs, function (x) { + return x + delta; + }); + } + }); + }); +} + +function balance(xss, align) { + return lodash_es_mapValues(xss.ul, function (ignore, v) { + if (align) { + return xss[align.toLowerCase()][v]; + } else { + var xs = lodash_es_sortBy(map/* default */.c(xss, v)); + return (xs[1] + xs[2]) / 2; + } + }); +} + +function positionX(g) { + var layering = buildLayerMatrix(g); + var conflicts = merge/* default */.c(findType1Conflicts(g, layering), findType2Conflicts(g, layering)); + + var xss = {}; + var adjustedLayering; + forEach/* default */.c(['u', 'd'], function (vert) { + adjustedLayering = vert === 'u' ? layering : values/* default */.c(layering).reverse(); + forEach/* default */.c(['l', 'r'], function (horiz) { + if (horiz === 'r') { + adjustedLayering = map/* default */.c(adjustedLayering, function (inner) { + return values/* default */.c(inner).reverse(); + }); + } + + var neighborFn = (vert === 'u' ? g.predecessors : g.successors).bind(g); + var align = verticalAlignment(g, adjustedLayering, conflicts, neighborFn); + var xs = horizontalCompaction(g, adjustedLayering, align.root, align.align, horiz === 'r'); + if (horiz === 'r') { + xs = lodash_es_mapValues(xs, function (x) { + return -x; + }); + } + xss[vert + horiz] = xs; + }); + }); + + var smallestWidth = findSmallestWidthAlignment(g, xss); + alignCoordinates(xss, smallestWidth); + return balance(xss, g.graph().align); +} + +function sep(nodeSep, edgeSep, reverseSep) { + return function (g, v, w) { + var vLabel = g.node(v); + var wLabel = g.node(w); + var sum = 0; + var delta; + + sum += vLabel.width / 2; + if (has/* default */.c(vLabel, 'labelpos')) { + switch (vLabel.labelpos.toLowerCase()) { + case 'l': + delta = -vLabel.width / 2; + break; + case 'r': + delta = vLabel.width / 2; + break; + } + } + if (delta) { + sum += reverseSep ? delta : -delta; + } + delta = 0; + + sum += (vLabel.dummy ? edgeSep : nodeSep) / 2; + sum += (wLabel.dummy ? edgeSep : nodeSep) / 2; + + sum += wLabel.width / 2; + if (has/* default */.c(wLabel, 'labelpos')) { + switch (wLabel.labelpos.toLowerCase()) { + case 'l': + delta = wLabel.width / 2; + break; + case 'r': + delta = -wLabel.width / 2; + break; + } + } + if (delta) { + sum += reverseSep ? delta : -delta; + } + delta = 0; + + return sum; + }; +} + +function width(g, v) { + return g.node(v).width; +} + +;// CONCATENATED MODULE: ./node_modules/dagre-d3-es/src/dagre/position/index.js + + + + + + +function position(g) { + g = asNonCompoundGraph(g); + + positionY(g); + lodash_es_forOwn(positionX(g), function (x, v) { + g.node(v).x = x; + }); +} + +function positionY(g) { + var layering = buildLayerMatrix(g); + var rankSep = g.graph().ranksep; + var prevY = 0; + forEach/* default */.c(layering, function (layer) { + var maxHeight = lodash_es_max( + map/* default */.c(layer, function (v) { + return g.node(v).height; + }) + ); + forEach/* default */.c(layer, function (v) { + g.node(v).y = prevY + maxHeight / 2; + }); + prevY += maxHeight + rankSep; + }); +} + +;// CONCATENATED MODULE: ./node_modules/dagre-d3-es/src/dagre/layout.js + + + + + + + + + + + + + + + +function layout(g, opts) { + var time = opts && opts.debugTiming ? util_time : notime; + time('layout', function () { + var layoutGraph = time(' buildLayoutGraph', function () { + return buildLayoutGraph(g); + }); + time(' runLayout', function () { + runLayout(layoutGraph, time); + }); + time(' updateInputGraph', function () { + updateInputGraph(g, layoutGraph); + }); + }); +} + +function runLayout(g, time) { + time(' makeSpaceForEdgeLabels', function () { + makeSpaceForEdgeLabels(g); + }); + time(' removeSelfEdges', function () { + removeSelfEdges(g); + }); + time(' acyclic', function () { + run(g); + }); + time(' nestingGraph.run', function () { + nesting_graph_run(g); + }); + time(' rank', function () { + rank(asNonCompoundGraph(g)); + }); + time(' injectEdgeLabelProxies', function () { + injectEdgeLabelProxies(g); + }); + time(' removeEmptyRanks', function () { + removeEmptyRanks(g); + }); + time(' nestingGraph.cleanup', function () { + cleanup(g); + }); + time(' normalizeRanks', function () { + normalizeRanks(g); + }); + time(' assignRankMinMax', function () { + assignRankMinMax(g); + }); + time(' removeEdgeLabelProxies', function () { + removeEdgeLabelProxies(g); + }); + time(' normalize.run', function () { + normalize_run(g); + }); + time(' parentDummyChains', function () { + parentDummyChains(g); + }); + time(' addBorderSegments', function () { + addBorderSegments(g); + }); + time(' order', function () { + order(g); + }); + time(' insertSelfEdges', function () { + insertSelfEdges(g); + }); + time(' adjustCoordinateSystem', function () { + adjust(g); + }); + time(' position', function () { + position(g); + }); + time(' positionSelfEdges', function () { + positionSelfEdges(g); + }); + time(' removeBorderNodes', function () { + removeBorderNodes(g); + }); + time(' normalize.undo', function () { + normalize_undo(g); + }); + time(' fixupEdgeLabelCoords', function () { + fixupEdgeLabelCoords(g); + }); + time(' undoCoordinateSystem', function () { + coordinate_system_undo(g); + }); + time(' translateGraph', function () { + translateGraph(g); + }); + time(' assignNodeIntersects', function () { + assignNodeIntersects(g); + }); + time(' reversePoints', function () { + reversePointsForReversedEdges(g); + }); + time(' acyclic.undo', function () { + undo(g); + }); +} + +/* + * Copies final layout information from the layout graph back to the input + * graph. This process only copies whitelisted attributes from the layout graph + * to the input graph, so it serves as a good place to determine what + * attributes can influence layout. + */ +function updateInputGraph(inputGraph, layoutGraph) { + forEach/* default */.c(inputGraph.nodes(), function (v) { + var inputLabel = inputGraph.node(v); + var layoutLabel = layoutGraph.node(v); + + if (inputLabel) { + inputLabel.x = layoutLabel.x; + inputLabel.y = layoutLabel.y; + + if (layoutGraph.children(v).length) { + inputLabel.width = layoutLabel.width; + inputLabel.height = layoutLabel.height; + } + } + }); + + forEach/* default */.c(inputGraph.edges(), function (e) { + var inputLabel = inputGraph.edge(e); + var layoutLabel = layoutGraph.edge(e); + + inputLabel.points = layoutLabel.points; + if (has/* default */.c(layoutLabel, 'x')) { + inputLabel.x = layoutLabel.x; + inputLabel.y = layoutLabel.y; + } + }); + + inputGraph.graph().width = layoutGraph.graph().width; + inputGraph.graph().height = layoutGraph.graph().height; +} + +var graphNumAttrs = ['nodesep', 'edgesep', 'ranksep', 'marginx', 'marginy']; +var graphDefaults = { ranksep: 50, edgesep: 20, nodesep: 50, rankdir: 'tb' }; +var graphAttrs = ['acyclicer', 'ranker', 'rankdir', 'align']; +var nodeNumAttrs = ['width', 'height']; +var nodeDefaults = { width: 0, height: 0 }; +var edgeNumAttrs = ['minlen', 'weight', 'width', 'height', 'labeloffset']; +var edgeDefaults = { + minlen: 1, + weight: 1, + width: 0, + height: 0, + labeloffset: 10, + labelpos: 'r', +}; +var edgeAttrs = ['labelpos']; + +/* + * Constructs a new graph from the input graph, which can be used for layout. + * This process copies only whitelisted attributes from the input graph to the + * layout graph. Thus this function serves as a good place to determine what + * attributes can influence layout. + */ +function buildLayoutGraph(inputGraph) { + var g = new graphlib/* Graph */.M({ multigraph: true, compound: true }); + var graph = canonicalize(inputGraph.graph()); + + g.setGraph( + merge/* default */.c({}, graphDefaults, selectNumberAttrs(graph, graphNumAttrs), pick/* default */.c(graph, graphAttrs)) + ); + + forEach/* default */.c(inputGraph.nodes(), function (v) { + var node = canonicalize(inputGraph.node(v)); + g.setNode(v, defaults/* default */.c(selectNumberAttrs(node, nodeNumAttrs), nodeDefaults)); + g.setParent(v, inputGraph.parent(v)); + }); + + forEach/* default */.c(inputGraph.edges(), function (e) { + var edge = canonicalize(inputGraph.edge(e)); + g.setEdge( + e, + merge/* default */.c({}, edgeDefaults, selectNumberAttrs(edge, edgeNumAttrs), pick/* default */.c(edge, edgeAttrs)) + ); + }); + + return g; +} + +/* + * This idea comes from the Gansner paper: to account for edge labels in our + * layout we split each rank in half by doubling minlen and halving ranksep. + * Then we can place labels at these mid-points between nodes. + * + * We also add some minimal padding to the width to push the label for the edge + * away from the edge itself a bit. + */ +function makeSpaceForEdgeLabels(g) { + var graph = g.graph(); + graph.ranksep /= 2; + forEach/* default */.c(g.edges(), function (e) { + var edge = g.edge(e); + edge.minlen *= 2; + if (edge.labelpos.toLowerCase() !== 'c') { + if (graph.rankdir === 'TB' || graph.rankdir === 'BT') { + edge.width += edge.labeloffset; + } else { + edge.height += edge.labeloffset; + } + } + }); +} + +/* + * Creates temporary dummy nodes that capture the rank in which each edge's + * label is going to, if it has one of non-zero width and height. We do this + * so that we can safely remove empty ranks while preserving balance for the + * label's position. + */ +function injectEdgeLabelProxies(g) { + forEach/* default */.c(g.edges(), function (e) { + var edge = g.edge(e); + if (edge.width && edge.height) { + var v = g.node(e.v); + var w = g.node(e.w); + var label = { rank: (w.rank - v.rank) / 2 + v.rank, e: e }; + addDummyNode(g, 'edge-proxy', label, '_ep'); + } + }); +} + +function assignRankMinMax(g) { + var maxRank = 0; + forEach/* default */.c(g.nodes(), function (v) { + var node = g.node(v); + if (node.borderTop) { + node.minRank = g.node(node.borderTop).rank; + node.maxRank = g.node(node.borderBottom).rank; + // @ts-expect-error + maxRank = lodash_es_max(maxRank, node.maxRank); + } + }); + g.graph().maxRank = maxRank; +} + +function removeEdgeLabelProxies(g) { + forEach/* default */.c(g.nodes(), function (v) { + var node = g.node(v); + if (node.dummy === 'edge-proxy') { + g.edge(node.e).labelRank = node.rank; + g.removeNode(v); + } + }); +} + +function translateGraph(g) { + var minX = Number.POSITIVE_INFINITY; + var maxX = 0; + var minY = Number.POSITIVE_INFINITY; + var maxY = 0; + var graphLabel = g.graph(); + var marginX = graphLabel.marginx || 0; + var marginY = graphLabel.marginy || 0; + + function getExtremes(attrs) { + var x = attrs.x; + var y = attrs.y; + var w = attrs.width; + var h = attrs.height; + minX = Math.min(minX, x - w / 2); + maxX = Math.max(maxX, x + w / 2); + minY = Math.min(minY, y - h / 2); + maxY = Math.max(maxY, y + h / 2); + } + + forEach/* default */.c(g.nodes(), function (v) { + getExtremes(g.node(v)); + }); + forEach/* default */.c(g.edges(), function (e) { + var edge = g.edge(e); + if (has/* default */.c(edge, 'x')) { + getExtremes(edge); + } + }); + + minX -= marginX; + minY -= marginY; + + forEach/* default */.c(g.nodes(), function (v) { + var node = g.node(v); + node.x -= minX; + node.y -= minY; + }); + + forEach/* default */.c(g.edges(), function (e) { + var edge = g.edge(e); + forEach/* default */.c(edge.points, function (p) { + p.x -= minX; + p.y -= minY; + }); + if (has/* default */.c(edge, 'x')) { + edge.x -= minX; + } + if (has/* default */.c(edge, 'y')) { + edge.y -= minY; + } + }); + + graphLabel.width = maxX - minX + marginX; + graphLabel.height = maxY - minY + marginY; +} + +function assignNodeIntersects(g) { + forEach/* default */.c(g.edges(), function (e) { + var edge = g.edge(e); + var nodeV = g.node(e.v); + var nodeW = g.node(e.w); + var p1, p2; + if (!edge.points) { + edge.points = []; + p1 = nodeW; + p2 = nodeV; + } else { + p1 = edge.points[0]; + p2 = edge.points[edge.points.length - 1]; + } + edge.points.unshift(intersectRect(nodeV, p1)); + edge.points.push(intersectRect(nodeW, p2)); + }); +} + +function fixupEdgeLabelCoords(g) { + forEach/* default */.c(g.edges(), function (e) { + var edge = g.edge(e); + if (has/* default */.c(edge, 'x')) { + if (edge.labelpos === 'l' || edge.labelpos === 'r') { + edge.width -= edge.labeloffset; + } + switch (edge.labelpos) { + case 'l': + edge.x -= edge.width / 2 + edge.labeloffset; + break; + case 'r': + edge.x += edge.width / 2 + edge.labeloffset; + break; + } + } + }); +} + +function reversePointsForReversedEdges(g) { + forEach/* default */.c(g.edges(), function (e) { + var edge = g.edge(e); + if (edge.reversed) { + edge.points.reverse(); + } + }); +} + +function removeBorderNodes(g) { + forEach/* default */.c(g.nodes(), function (v) { + if (g.children(v).length) { + var node = g.node(v); + var t = g.node(node.borderTop); + var b = g.node(node.borderBottom); + var l = g.node(lodash_es_last(node.borderLeft)); + var r = g.node(lodash_es_last(node.borderRight)); + + node.width = Math.abs(r.x - l.x); + node.height = Math.abs(b.y - t.y); + node.x = l.x + node.width / 2; + node.y = t.y + node.height / 2; + } + }); + + forEach/* default */.c(g.nodes(), function (v) { + if (g.node(v).dummy === 'border') { + g.removeNode(v); + } + }); +} + +function removeSelfEdges(g) { + forEach/* default */.c(g.edges(), function (e) { + if (e.v === e.w) { + var node = g.node(e.v); + if (!node.selfEdges) { + node.selfEdges = []; + } + node.selfEdges.push({ e: e, label: g.edge(e) }); + g.removeEdge(e); + } + }); +} + +function insertSelfEdges(g) { + var layers = buildLayerMatrix(g); + forEach/* default */.c(layers, function (layer) { + var orderShift = 0; + forEach/* default */.c(layer, function (v, i) { + var node = g.node(v); + node.order = i + orderShift; + forEach/* default */.c(node.selfEdges, function (selfEdge) { + addDummyNode( + g, + 'selfedge', + { + width: selfEdge.label.width, + height: selfEdge.label.height, + rank: node.rank, + order: i + ++orderShift, + e: selfEdge.e, + label: selfEdge.label, + }, + '_se' + ); + }); + delete node.selfEdges; + }); + }); +} + +function positionSelfEdges(g) { + forEach/* default */.c(g.nodes(), function (v) { + var node = g.node(v); + if (node.dummy === 'selfedge') { + var selfNode = g.node(node.e.v); + var x = selfNode.x + selfNode.width / 2; + var y = selfNode.y; + var dx = node.x - x; + var dy = selfNode.height / 2; + g.setEdge(node.e, node.label); + g.removeNode(v); + node.label.points = [ + { x: x + (2 * dx) / 3, y: y - dy }, + { x: x + (5 * dx) / 6, y: y - dy }, + { x: x + dx, y: y }, + { x: x + (5 * dx) / 6, y: y + dy }, + { x: x + (2 * dx) / 3, y: y + dy }, + ]; + node.label.x = node.x; + node.label.y = node.y; + } + }); +} + +function selectNumberAttrs(obj, attrs) { + return lodash_es_mapValues(pick/* default */.c(obj, attrs), Number); +} + +function canonicalize(attrs) { + var newAttrs = {}; + forEach/* default */.c(attrs, function (v, k) { + newAttrs[k.toLowerCase()] = v; + }); + return newAttrs; +} + +;// CONCATENATED MODULE: ./node_modules/dagre-d3-es/src/dagre/index.js + + + + + + + + +/***/ }), + +/***/ 58048: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + M: () => (/* binding */ Graph) +}); + +// EXTERNAL MODULE: ./node_modules/lodash-es/has.js + 1 modules +var has = __webpack_require__(7248); +// EXTERNAL MODULE: ./node_modules/lodash-es/constant.js +var constant = __webpack_require__(11160); +// EXTERNAL MODULE: ./node_modules/lodash-es/isFunction.js +var isFunction = __webpack_require__(59680); +// EXTERNAL MODULE: ./node_modules/lodash-es/keys.js +var keys = __webpack_require__(62420); +// EXTERNAL MODULE: ./node_modules/lodash-es/filter.js + 1 modules +var filter = __webpack_require__(55720); +// EXTERNAL MODULE: ./node_modules/lodash-es/isEmpty.js +var isEmpty = __webpack_require__(28796); +// EXTERNAL MODULE: ./node_modules/lodash-es/forEach.js +var forEach = __webpack_require__(50080); +// EXTERNAL MODULE: ./node_modules/lodash-es/isUndefined.js +var isUndefined = __webpack_require__(60372); +// EXTERNAL MODULE: ./node_modules/lodash-es/_baseFlatten.js + 1 modules +var _baseFlatten = __webpack_require__(40571); +// EXTERNAL MODULE: ./node_modules/lodash-es/_baseRest.js +var _baseRest = __webpack_require__(34880); +// EXTERNAL MODULE: ./node_modules/lodash-es/_SetCache.js + 2 modules +var _SetCache = __webpack_require__(34528); +// EXTERNAL MODULE: ./node_modules/lodash-es/_baseFindIndex.js +var _baseFindIndex = __webpack_require__(16428); +;// CONCATENATED MODULE: ./node_modules/lodash-es/_baseIsNaN.js +/** + * The base implementation of `_.isNaN` without support for number objects. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`. + */ +function baseIsNaN(value) { + return value !== value; +} + +/* harmony default export */ const _baseIsNaN = (baseIsNaN); + +;// CONCATENATED MODULE: ./node_modules/lodash-es/_strictIndexOf.js +/** + * A specialized version of `_.indexOf` which performs strict equality + * comparisons of values, i.e. `===`. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function strictIndexOf(array, value, fromIndex) { + var index = fromIndex - 1, + length = array.length; + + while (++index < length) { + if (array[index] === value) { + return index; + } + } + return -1; +} + +/* harmony default export */ const _strictIndexOf = (strictIndexOf); + +;// CONCATENATED MODULE: ./node_modules/lodash-es/_baseIndexOf.js + + + + +/** + * The base implementation of `_.indexOf` without `fromIndex` bounds checks. + * + * @private + * @param {Array} array The array to inspect. + * @param {*} value The value to search for. + * @param {number} fromIndex The index to search from. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function baseIndexOf(array, value, fromIndex) { + return value === value + ? _strictIndexOf(array, value, fromIndex) + : (0,_baseFindIndex/* default */.c)(array, _baseIsNaN, fromIndex); +} + +/* harmony default export */ const _baseIndexOf = (baseIndexOf); + +;// CONCATENATED MODULE: ./node_modules/lodash-es/_arrayIncludes.js + + +/** + * A specialized version of `_.includes` for arrays without support for + * specifying an index to search from. + * + * @private + * @param {Array} [array] The array to inspect. + * @param {*} target The value to search for. + * @returns {boolean} Returns `true` if `target` is found, else `false`. + */ +function arrayIncludes(array, value) { + var length = array == null ? 0 : array.length; + return !!length && _baseIndexOf(array, value, 0) > -1; +} + +/* harmony default export */ const _arrayIncludes = (arrayIncludes); + +;// CONCATENATED MODULE: ./node_modules/lodash-es/_arrayIncludesWith.js +/** + * This function is like `arrayIncludes` except that it accepts a comparator. + * + * @private + * @param {Array} [array] The array to inspect. + * @param {*} target The value to search for. + * @param {Function} comparator The comparator invoked per element. + * @returns {boolean} Returns `true` if `target` is found, else `false`. + */ +function arrayIncludesWith(array, value, comparator) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (comparator(value, array[index])) { + return true; + } + } + return false; +} + +/* harmony default export */ const _arrayIncludesWith = (arrayIncludesWith); + +// EXTERNAL MODULE: ./node_modules/lodash-es/_cacheHas.js +var _cacheHas = __webpack_require__(5960); +// EXTERNAL MODULE: ./node_modules/lodash-es/_Set.js +var _Set = __webpack_require__(61268); +;// CONCATENATED MODULE: ./node_modules/lodash-es/noop.js +/** + * This method returns `undefined`. + * + * @static + * @memberOf _ + * @since 2.3.0 + * @category Util + * @example + * + * _.times(2, _.noop); + * // => [undefined, undefined] + */ +function noop() { + // No operation performed. +} + +/* harmony default export */ const lodash_es_noop = (noop); + +// EXTERNAL MODULE: ./node_modules/lodash-es/_setToArray.js +var _setToArray = __webpack_require__(46492); +;// CONCATENATED MODULE: ./node_modules/lodash-es/_createSet.js + + + + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0; + +/** + * Creates a set object of `values`. + * + * @private + * @param {Array} values The values to add to the set. + * @returns {Object} Returns the new set. + */ +var createSet = !(_Set/* default */.c && (1 / (0,_setToArray/* default */.c)(new _Set/* default */.c([,-0]))[1]) == INFINITY) ? lodash_es_noop : function(values) { + return new _Set/* default */.c(values); +}; + +/* harmony default export */ const _createSet = (createSet); + +;// CONCATENATED MODULE: ./node_modules/lodash-es/_baseUniq.js + + + + + + + +/** Used as the size to enable large array optimizations. */ +var LARGE_ARRAY_SIZE = 200; + +/** + * The base implementation of `_.uniqBy` without support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} [iteratee] The iteratee invoked per element. + * @param {Function} [comparator] The comparator invoked per element. + * @returns {Array} Returns the new duplicate free array. + */ +function baseUniq(array, iteratee, comparator) { + var index = -1, + includes = _arrayIncludes, + length = array.length, + isCommon = true, + result = [], + seen = result; + + if (comparator) { + isCommon = false; + includes = _arrayIncludesWith; + } + else if (length >= LARGE_ARRAY_SIZE) { + var set = iteratee ? null : _createSet(array); + if (set) { + return (0,_setToArray/* default */.c)(set); + } + isCommon = false; + includes = _cacheHas/* default */.c; + seen = new _SetCache/* default */.c; + } + else { + seen = iteratee ? [] : result; + } + outer: + while (++index < length) { + var value = array[index], + computed = iteratee ? iteratee(value) : value; + + value = (comparator || value !== 0) ? value : 0; + if (isCommon && computed === computed) { + var seenIndex = seen.length; + while (seenIndex--) { + if (seen[seenIndex] === computed) { + continue outer; + } + } + if (iteratee) { + seen.push(computed); + } + result.push(value); + } + else if (!includes(seen, computed, comparator)) { + if (seen !== result) { + seen.push(computed); + } + result.push(value); + } + } + return result; +} + +/* harmony default export */ const _baseUniq = (baseUniq); + +// EXTERNAL MODULE: ./node_modules/lodash-es/isArrayLikeObject.js +var isArrayLikeObject = __webpack_require__(19724); +;// CONCATENATED MODULE: ./node_modules/lodash-es/union.js + + + + + +/** + * Creates an array of unique values, in order, from all given arrays using + * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero) + * for equality comparisons. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {...Array} [arrays] The arrays to inspect. + * @returns {Array} Returns the new array of combined values. + * @example + * + * _.union([2], [1, 2]); + * // => [2, 1] + */ +var union = (0,_baseRest/* default */.c)(function(arrays) { + return _baseUniq((0,_baseFlatten/* default */.c)(arrays, 1, isArrayLikeObject/* default */.c, true)); +}); + +/* harmony default export */ const lodash_es_union = (union); + +// EXTERNAL MODULE: ./node_modules/lodash-es/values.js + 1 modules +var values = __webpack_require__(36); +// EXTERNAL MODULE: ./node_modules/lodash-es/reduce.js + 2 modules +var reduce = __webpack_require__(90460); +;// CONCATENATED MODULE: ./node_modules/dagre-d3-es/src/graphlib/graph.js + + +var DEFAULT_EDGE_NAME = '\x00'; +var GRAPH_NODE = '\x00'; +var EDGE_KEY_DELIM = '\x01'; + +// Implementation notes: +// +// * Node id query functions should return string ids for the nodes +// * Edge id query functions should return an "edgeObj", edge object, that is +// composed of enough information to uniquely identify an edge: {v, w, name}. +// * Internally we use an "edgeId", a stringified form of the edgeObj, to +// reference edges. This is because we need a performant way to look these +// edges up and, object properties, which have string keys, are the closest +// we're going to get to a performant hashtable in JavaScript. + +// Implementation notes: +// +// * Node id query functions should return string ids for the nodes +// * Edge id query functions should return an "edgeObj", edge object, that is +// composed of enough information to uniquely identify an edge: {v, w, name}. +// * Internally we use an "edgeId", a stringified form of the edgeObj, to +// reference edges. This is because we need a performant way to look these +// edges up and, object properties, which have string keys, are the closest +// we're going to get to a performant hashtable in JavaScript. +class Graph { + constructor(opts = {}) { + this._isDirected = has/* default */.c(opts, 'directed') ? opts.directed : true; + this._isMultigraph = has/* default */.c(opts, 'multigraph') ? opts.multigraph : false; + this._isCompound = has/* default */.c(opts, 'compound') ? opts.compound : false; + + // Label for the graph itself + this._label = undefined; + + // Defaults to be set when creating a new node + this._defaultNodeLabelFn = constant/* default */.c(undefined); + + // Defaults to be set when creating a new edge + this._defaultEdgeLabelFn = constant/* default */.c(undefined); + + // v -> label + this._nodes = {}; + + if (this._isCompound) { + // v -> parent + this._parent = {}; + + // v -> children + this._children = {}; + this._children[GRAPH_NODE] = {}; + } + + // v -> edgeObj + this._in = {}; + + // u -> v -> Number + this._preds = {}; + + // v -> edgeObj + this._out = {}; + + // v -> w -> Number + this._sucs = {}; + + // e -> edgeObj + this._edgeObjs = {}; + + // e -> label + this._edgeLabels = {}; + } + /* === Graph functions ========= */ + isDirected() { + return this._isDirected; + } + isMultigraph() { + return this._isMultigraph; + } + isCompound() { + return this._isCompound; + } + setGraph(label) { + this._label = label; + return this; + } + graph() { + return this._label; + } + /* === Node functions ========== */ + setDefaultNodeLabel(newDefault) { + if (!isFunction/* default */.c(newDefault)) { + newDefault = constant/* default */.c(newDefault); + } + this._defaultNodeLabelFn = newDefault; + return this; + } + nodeCount() { + return this._nodeCount; + } + nodes() { + return keys/* default */.c(this._nodes); + } + sources() { + var self = this; + return filter/* default */.c(this.nodes(), function (v) { + return isEmpty/* default */.c(self._in[v]); + }); + } + sinks() { + var self = this; + return filter/* default */.c(this.nodes(), function (v) { + return isEmpty/* default */.c(self._out[v]); + }); + } + setNodes(vs, value) { + var args = arguments; + var self = this; + forEach/* default */.c(vs, function (v) { + if (args.length > 1) { + self.setNode(v, value); + } else { + self.setNode(v); + } + }); + return this; + } + setNode(v, value) { + if (has/* default */.c(this._nodes, v)) { + if (arguments.length > 1) { + this._nodes[v] = value; + } + return this; + } + + // @ts-expect-error + this._nodes[v] = arguments.length > 1 ? value : this._defaultNodeLabelFn(v); + if (this._isCompound) { + this._parent[v] = GRAPH_NODE; + this._children[v] = {}; + this._children[GRAPH_NODE][v] = true; + } + this._in[v] = {}; + this._preds[v] = {}; + this._out[v] = {}; + this._sucs[v] = {}; + ++this._nodeCount; + return this; + } + node(v) { + return this._nodes[v]; + } + hasNode(v) { + return has/* default */.c(this._nodes, v); + } + removeNode(v) { + var self = this; + if (has/* default */.c(this._nodes, v)) { + var removeEdge = function (e) { + self.removeEdge(self._edgeObjs[e]); + }; + delete this._nodes[v]; + if (this._isCompound) { + this._removeFromParentsChildList(v); + delete this._parent[v]; + forEach/* default */.c(this.children(v), function (child) { + self.setParent(child); + }); + delete this._children[v]; + } + forEach/* default */.c(keys/* default */.c(this._in[v]), removeEdge); + delete this._in[v]; + delete this._preds[v]; + forEach/* default */.c(keys/* default */.c(this._out[v]), removeEdge); + delete this._out[v]; + delete this._sucs[v]; + --this._nodeCount; + } + return this; + } + setParent(v, parent) { + if (!this._isCompound) { + throw new Error('Cannot set parent in a non-compound graph'); + } + + if (isUndefined/* default */.c(parent)) { + parent = GRAPH_NODE; + } else { + // Coerce parent to string + parent += ''; + for (var ancestor = parent; !isUndefined/* default */.c(ancestor); ancestor = this.parent(ancestor)) { + if (ancestor === v) { + throw new Error('Setting ' + parent + ' as parent of ' + v + ' would create a cycle'); + } + } + + this.setNode(parent); + } + + this.setNode(v); + this._removeFromParentsChildList(v); + this._parent[v] = parent; + this._children[parent][v] = true; + return this; + } + _removeFromParentsChildList(v) { + delete this._children[this._parent[v]][v]; + } + parent(v) { + if (this._isCompound) { + var parent = this._parent[v]; + if (parent !== GRAPH_NODE) { + return parent; + } + } + } + children(v) { + if (isUndefined/* default */.c(v)) { + v = GRAPH_NODE; + } + + if (this._isCompound) { + var children = this._children[v]; + if (children) { + return keys/* default */.c(children); + } + } else if (v === GRAPH_NODE) { + return this.nodes(); + } else if (this.hasNode(v)) { + return []; + } + } + predecessors(v) { + var predsV = this._preds[v]; + if (predsV) { + return keys/* default */.c(predsV); + } + } + successors(v) { + var sucsV = this._sucs[v]; + if (sucsV) { + return keys/* default */.c(sucsV); + } + } + neighbors(v) { + var preds = this.predecessors(v); + if (preds) { + return lodash_es_union(preds, this.successors(v)); + } + } + isLeaf(v) { + var neighbors; + if (this.isDirected()) { + neighbors = this.successors(v); + } else { + neighbors = this.neighbors(v); + } + return neighbors.length === 0; + } + filterNodes(filter) { + // @ts-expect-error + var copy = new this.constructor({ + directed: this._isDirected, + multigraph: this._isMultigraph, + compound: this._isCompound, + }); + + copy.setGraph(this.graph()); + + var self = this; + forEach/* default */.c(this._nodes, function (value, v) { + if (filter(v)) { + copy.setNode(v, value); + } + }); + + forEach/* default */.c(this._edgeObjs, function (e) { + // @ts-expect-error + if (copy.hasNode(e.v) && copy.hasNode(e.w)) { + copy.setEdge(e, self.edge(e)); + } + }); + + var parents = {}; + function findParent(v) { + var parent = self.parent(v); + if (parent === undefined || copy.hasNode(parent)) { + parents[v] = parent; + return parent; + } else if (parent in parents) { + return parents[parent]; + } else { + return findParent(parent); + } + } + + if (this._isCompound) { + forEach/* default */.c(copy.nodes(), function (v) { + copy.setParent(v, findParent(v)); + }); + } + + return copy; + } + /* === Edge functions ========== */ + setDefaultEdgeLabel(newDefault) { + if (!isFunction/* default */.c(newDefault)) { + newDefault = constant/* default */.c(newDefault); + } + this._defaultEdgeLabelFn = newDefault; + return this; + } + edgeCount() { + return this._edgeCount; + } + edges() { + return values/* default */.c(this._edgeObjs); + } + setPath(vs, value) { + var self = this; + var args = arguments; + reduce/* default */.c(vs, function (v, w) { + if (args.length > 1) { + self.setEdge(v, w, value); + } else { + self.setEdge(v, w); + } + return w; + }); + return this; + } + /* + * setEdge(v, w, [value, [name]]) + * setEdge({ v, w, [name] }, [value]) + */ + setEdge() { + var v, w, name, value; + var valueSpecified = false; + var arg0 = arguments[0]; + + if (typeof arg0 === 'object' && arg0 !== null && 'v' in arg0) { + v = arg0.v; + w = arg0.w; + name = arg0.name; + if (arguments.length === 2) { + value = arguments[1]; + valueSpecified = true; + } + } else { + v = arg0; + w = arguments[1]; + name = arguments[3]; + if (arguments.length > 2) { + value = arguments[2]; + valueSpecified = true; + } + } + + v = '' + v; + w = '' + w; + if (!isUndefined/* default */.c(name)) { + name = '' + name; + } + + var e = edgeArgsToId(this._isDirected, v, w, name); + if (has/* default */.c(this._edgeLabels, e)) { + if (valueSpecified) { + this._edgeLabels[e] = value; + } + return this; + } + + if (!isUndefined/* default */.c(name) && !this._isMultigraph) { + throw new Error('Cannot set a named edge when isMultigraph = false'); + } + + // It didn't exist, so we need to create it. + // First ensure the nodes exist. + this.setNode(v); + this.setNode(w); + + // @ts-expect-error + this._edgeLabels[e] = valueSpecified ? value : this._defaultEdgeLabelFn(v, w, name); + + var edgeObj = edgeArgsToObj(this._isDirected, v, w, name); + // Ensure we add undirected edges in a consistent way. + v = edgeObj.v; + w = edgeObj.w; + + Object.freeze(edgeObj); + this._edgeObjs[e] = edgeObj; + incrementOrInitEntry(this._preds[w], v); + incrementOrInitEntry(this._sucs[v], w); + this._in[w][e] = edgeObj; + this._out[v][e] = edgeObj; + this._edgeCount++; + return this; + } + edge(v, w, name) { + var e = + arguments.length === 1 + ? edgeObjToId(this._isDirected, arguments[0]) + : edgeArgsToId(this._isDirected, v, w, name); + return this._edgeLabels[e]; + } + hasEdge(v, w, name) { + var e = + arguments.length === 1 + ? edgeObjToId(this._isDirected, arguments[0]) + : edgeArgsToId(this._isDirected, v, w, name); + return has/* default */.c(this._edgeLabels, e); + } + removeEdge(v, w, name) { + var e = + arguments.length === 1 + ? edgeObjToId(this._isDirected, arguments[0]) + : edgeArgsToId(this._isDirected, v, w, name); + var edge = this._edgeObjs[e]; + if (edge) { + v = edge.v; + w = edge.w; + delete this._edgeLabels[e]; + delete this._edgeObjs[e]; + decrementOrRemoveEntry(this._preds[w], v); + decrementOrRemoveEntry(this._sucs[v], w); + delete this._in[w][e]; + delete this._out[v][e]; + this._edgeCount--; + } + return this; + } + inEdges(v, u) { + var inV = this._in[v]; + if (inV) { + var edges = values/* default */.c(inV); + if (!u) { + return edges; + } + return filter/* default */.c(edges, function (edge) { + return edge.v === u; + }); + } + } + outEdges(v, w) { + var outV = this._out[v]; + if (outV) { + var edges = values/* default */.c(outV); + if (!w) { + return edges; + } + return filter/* default */.c(edges, function (edge) { + return edge.w === w; + }); + } + } + nodeEdges(v, w) { + var inEdges = this.inEdges(v, w); + if (inEdges) { + return inEdges.concat(this.outEdges(v, w)); + } + } +} + +/* Number of nodes in the graph. Should only be changed by the implementation. */ +Graph.prototype._nodeCount = 0; + +/* Number of edges in the graph. Should only be changed by the implementation. */ +Graph.prototype._edgeCount = 0; + +function incrementOrInitEntry(map, k) { + if (map[k]) { + map[k]++; + } else { + map[k] = 1; + } +} + +function decrementOrRemoveEntry(map, k) { + if (!--map[k]) { + delete map[k]; + } +} + +function edgeArgsToId(isDirected, v_, w_, name) { + var v = '' + v_; + var w = '' + w_; + if (!isDirected && v > w) { + var tmp = v; + v = w; + w = tmp; + } + return v + EDGE_KEY_DELIM + w + EDGE_KEY_DELIM + (isUndefined/* default */.c(name) ? DEFAULT_EDGE_NAME : name); +} + +function edgeArgsToObj(isDirected, v_, w_, name) { + var v = '' + v_; + var w = '' + w_; + if (!isDirected && v > w) { + var tmp = v; + v = w; + w = tmp; + } + var edgeObj = { v: v, w: w }; + if (name) { + edgeObj.name = name; + } + return edgeObj; +} + +function edgeObjToId(isDirected, edgeObj) { + return edgeArgsToId(isDirected, edgeObj.v, edgeObj.w, edgeObj.name); +} + + +/***/ }), + +/***/ 95536: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ M: () => (/* reexport safe */ _graph_js__WEBPACK_IMPORTED_MODULE_0__.M) +/* harmony export */ }); +/* unused harmony export version */ +/* harmony import */ var _graph_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(58048); +// Includes only the "core" of graphlib + + + +const version = '2.1.9-pre'; + + + + +/***/ }), + +/***/ 34528: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + c: () => (/* binding */ _SetCache) +}); + +// EXTERNAL MODULE: ./node_modules/lodash-es/_MapCache.js + 14 modules +var _MapCache = __webpack_require__(86320); +;// CONCATENATED MODULE: ./node_modules/lodash-es/_setCacheAdd.js +/** Used to stand-in for `undefined` hash values. */ +var HASH_UNDEFINED = '__lodash_hash_undefined__'; + +/** + * Adds `value` to the array cache. + * + * @private + * @name add + * @memberOf SetCache + * @alias push + * @param {*} value The value to cache. + * @returns {Object} Returns the cache instance. + */ +function setCacheAdd(value) { + this.__data__.set(value, HASH_UNDEFINED); + return this; +} + +/* harmony default export */ const _setCacheAdd = (setCacheAdd); + +;// CONCATENATED MODULE: ./node_modules/lodash-es/_setCacheHas.js +/** + * Checks if `value` is in the array cache. + * + * @private + * @name has + * @memberOf SetCache + * @param {*} value The value to search for. + * @returns {number} Returns `true` if `value` is found, else `false`. + */ +function setCacheHas(value) { + return this.__data__.has(value); +} + +/* harmony default export */ const _setCacheHas = (setCacheHas); + +;// CONCATENATED MODULE: ./node_modules/lodash-es/_SetCache.js + + + + +/** + * + * Creates an array cache object to store unique values. + * + * @private + * @constructor + * @param {Array} [values] The values to cache. + */ +function SetCache(values) { + var index = -1, + length = values == null ? 0 : values.length; + + this.__data__ = new _MapCache/* default */.c; + while (++index < length) { + this.add(values[index]); + } +} + +// Add methods to `SetCache`. +SetCache.prototype.add = SetCache.prototype.push = _setCacheAdd; +SetCache.prototype.has = _setCacheHas; + +/* harmony default export */ const _SetCache = (SetCache); + + +/***/ }), + +/***/ 56812: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ c: () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/** + * A specialized version of `_.forEach` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns `array`. + */ +function arrayEach(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (iteratee(array[index], index, array) === false) { + break; + } + } + return array; +} + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (arrayEach); + + +/***/ }), + +/***/ 46091: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ c: () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/** + * A specialized version of `_.filter` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ +function arrayFilter(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length, + resIndex = 0, + result = []; + + while (++index < length) { + var value = array[index]; + if (predicate(value, index, array)) { + result[resIndex++] = value; + } + } + return result; +} + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (arrayFilter); + + +/***/ }), + +/***/ 1304: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ c: () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/** + * A specialized version of `_.map` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ +function arrayMap(array, iteratee) { + var index = -1, + length = array == null ? 0 : array.length, + result = Array(length); + + while (++index < length) { + result[index] = iteratee(array[index], index, array); + } + return result; +} + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (arrayMap); + + +/***/ }), + +/***/ 25072: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ c: () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/** + * Appends the elements of `values` to `array`. + * + * @private + * @param {Array} array The array to modify. + * @param {Array} values The values to append. + * @returns {Array} Returns `array`. + */ +function arrayPush(array, values) { + var index = -1, + length = values.length, + offset = array.length; + + while (++index < length) { + array[offset + index] = values[index]; + } + return array; +} + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (arrayPush); + + +/***/ }), + +/***/ 48492: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + c: () => (/* binding */ _baseClone) +}); + +// EXTERNAL MODULE: ./node_modules/lodash-es/_Stack.js + 5 modules +var _Stack = __webpack_require__(97184); +// EXTERNAL MODULE: ./node_modules/lodash-es/_arrayEach.js +var _arrayEach = __webpack_require__(56812); +// EXTERNAL MODULE: ./node_modules/lodash-es/_assignValue.js +var _assignValue = __webpack_require__(77412); +// EXTERNAL MODULE: ./node_modules/lodash-es/_copyObject.js +var _copyObject = __webpack_require__(58904); +// EXTERNAL MODULE: ./node_modules/lodash-es/keys.js +var keys = __webpack_require__(62420); +;// CONCATENATED MODULE: ./node_modules/lodash-es/_baseAssign.js + + + +/** + * The base implementation of `_.assign` without support for multiple sources + * or `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @returns {Object} Returns `object`. + */ +function baseAssign(object, source) { + return object && (0,_copyObject/* default */.c)(source, (0,keys/* default */.c)(source), object); +} + +/* harmony default export */ const _baseAssign = (baseAssign); + +// EXTERNAL MODULE: ./node_modules/lodash-es/keysIn.js + 2 modules +var keysIn = __webpack_require__(97000); +;// CONCATENATED MODULE: ./node_modules/lodash-es/_baseAssignIn.js + + + +/** + * The base implementation of `_.assignIn` without support for multiple sources + * or `customizer` functions. + * + * @private + * @param {Object} object The destination object. + * @param {Object} source The source object. + * @returns {Object} Returns `object`. + */ +function baseAssignIn(object, source) { + return object && (0,_copyObject/* default */.c)(source, (0,keysIn/* default */.c)(source), object); +} + +/* harmony default export */ const _baseAssignIn = (baseAssignIn); + +// EXTERNAL MODULE: ./node_modules/lodash-es/_cloneBuffer.js +var _cloneBuffer = __webpack_require__(86656); +// EXTERNAL MODULE: ./node_modules/lodash-es/_copyArray.js +var _copyArray = __webpack_require__(32488); +// EXTERNAL MODULE: ./node_modules/lodash-es/_getSymbols.js +var _getSymbols = __webpack_require__(10772); +;// CONCATENATED MODULE: ./node_modules/lodash-es/_copySymbols.js + + + +/** + * Copies own symbols of `source` to `object`. + * + * @private + * @param {Object} source The object to copy symbols from. + * @param {Object} [object={}] The object to copy symbols to. + * @returns {Object} Returns `object`. + */ +function copySymbols(source, object) { + return (0,_copyObject/* default */.c)(source, (0,_getSymbols/* default */.c)(source), object); +} + +/* harmony default export */ const _copySymbols = (copySymbols); + +// EXTERNAL MODULE: ./node_modules/lodash-es/_arrayPush.js +var _arrayPush = __webpack_require__(25072); +// EXTERNAL MODULE: ./node_modules/lodash-es/_getPrototype.js +var _getPrototype = __webpack_require__(75388); +// EXTERNAL MODULE: ./node_modules/lodash-es/stubArray.js +var stubArray = __webpack_require__(41716); +;// CONCATENATED MODULE: ./node_modules/lodash-es/_getSymbolsIn.js + + + + + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeGetSymbols = Object.getOwnPropertySymbols; + +/** + * Creates an array of the own and inherited enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ +var getSymbolsIn = !nativeGetSymbols ? stubArray/* default */.c : function(object) { + var result = []; + while (object) { + (0,_arrayPush/* default */.c)(result, (0,_getSymbols/* default */.c)(object)); + object = (0,_getPrototype/* default */.c)(object); + } + return result; +}; + +/* harmony default export */ const _getSymbolsIn = (getSymbolsIn); + +;// CONCATENATED MODULE: ./node_modules/lodash-es/_copySymbolsIn.js + + + +/** + * Copies own and inherited symbols of `source` to `object`. + * + * @private + * @param {Object} source The object to copy symbols from. + * @param {Object} [object={}] The object to copy symbols to. + * @returns {Object} Returns `object`. + */ +function copySymbolsIn(source, object) { + return (0,_copyObject/* default */.c)(source, _getSymbolsIn(source), object); +} + +/* harmony default export */ const _copySymbolsIn = (copySymbolsIn); + +// EXTERNAL MODULE: ./node_modules/lodash-es/_getAllKeys.js +var _getAllKeys = __webpack_require__(22980); +// EXTERNAL MODULE: ./node_modules/lodash-es/_baseGetAllKeys.js +var _baseGetAllKeys = __webpack_require__(30176); +;// CONCATENATED MODULE: ./node_modules/lodash-es/_getAllKeysIn.js + + + + +/** + * Creates an array of own and inherited enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ +function getAllKeysIn(object) { + return (0,_baseGetAllKeys/* default */.c)(object, keysIn/* default */.c, _getSymbolsIn); +} + +/* harmony default export */ const _getAllKeysIn = (getAllKeysIn); + +// EXTERNAL MODULE: ./node_modules/lodash-es/_getTag.js + 3 modules +var _getTag = __webpack_require__(17188); +;// CONCATENATED MODULE: ./node_modules/lodash-es/_initCloneArray.js +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var _initCloneArray_hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Initializes an array clone. + * + * @private + * @param {Array} array The array to clone. + * @returns {Array} Returns the initialized clone. + */ +function initCloneArray(array) { + var length = array.length, + result = new array.constructor(length); + + // Add properties assigned by `RegExp#exec`. + if (length && typeof array[0] == 'string' && _initCloneArray_hasOwnProperty.call(array, 'index')) { + result.index = array.index; + result.input = array.input; + } + return result; +} + +/* harmony default export */ const _initCloneArray = (initCloneArray); + +// EXTERNAL MODULE: ./node_modules/lodash-es/_cloneArrayBuffer.js +var _cloneArrayBuffer = __webpack_require__(40976); +;// CONCATENATED MODULE: ./node_modules/lodash-es/_cloneDataView.js + + +/** + * Creates a clone of `dataView`. + * + * @private + * @param {Object} dataView The data view to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the cloned data view. + */ +function cloneDataView(dataView, isDeep) { + var buffer = isDeep ? (0,_cloneArrayBuffer/* default */.c)(dataView.buffer) : dataView.buffer; + return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength); +} + +/* harmony default export */ const _cloneDataView = (cloneDataView); + +;// CONCATENATED MODULE: ./node_modules/lodash-es/_cloneRegExp.js +/** Used to match `RegExp` flags from their coerced string values. */ +var reFlags = /\w*$/; + +/** + * Creates a clone of `regexp`. + * + * @private + * @param {Object} regexp The regexp to clone. + * @returns {Object} Returns the cloned regexp. + */ +function cloneRegExp(regexp) { + var result = new regexp.constructor(regexp.source, reFlags.exec(regexp)); + result.lastIndex = regexp.lastIndex; + return result; +} + +/* harmony default export */ const _cloneRegExp = (cloneRegExp); + +// EXTERNAL MODULE: ./node_modules/lodash-es/_Symbol.js +var _Symbol = __webpack_require__(24048); +;// CONCATENATED MODULE: ./node_modules/lodash-es/_cloneSymbol.js + + +/** Used to convert symbols to primitives and strings. */ +var symbolProto = _Symbol/* default */.c ? _Symbol/* default */.c.prototype : undefined, + symbolValueOf = symbolProto ? symbolProto.valueOf : undefined; + +/** + * Creates a clone of the `symbol` object. + * + * @private + * @param {Object} symbol The symbol object to clone. + * @returns {Object} Returns the cloned symbol object. + */ +function cloneSymbol(symbol) { + return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {}; +} + +/* harmony default export */ const _cloneSymbol = (cloneSymbol); + +// EXTERNAL MODULE: ./node_modules/lodash-es/_cloneTypedArray.js +var _cloneTypedArray = __webpack_require__(70552); +;// CONCATENATED MODULE: ./node_modules/lodash-es/_initCloneByTag.js + + + + + + +/** `Object#toString` result references. */ +var boolTag = '[object Boolean]', + dateTag = '[object Date]', + mapTag = '[object Map]', + numberTag = '[object Number]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]'; + +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]', + float32Tag = '[object Float32Array]', + float64Tag = '[object Float64Array]', + int8Tag = '[object Int8Array]', + int16Tag = '[object Int16Array]', + int32Tag = '[object Int32Array]', + uint8Tag = '[object Uint8Array]', + uint8ClampedTag = '[object Uint8ClampedArray]', + uint16Tag = '[object Uint16Array]', + uint32Tag = '[object Uint32Array]'; + +/** + * Initializes an object clone based on its `toStringTag`. + * + * **Note:** This function only supports cloning values with tags of + * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`. + * + * @private + * @param {Object} object The object to clone. + * @param {string} tag The `toStringTag` of the object to clone. + * @param {boolean} [isDeep] Specify a deep clone. + * @returns {Object} Returns the initialized clone. + */ +function initCloneByTag(object, tag, isDeep) { + var Ctor = object.constructor; + switch (tag) { + case arrayBufferTag: + return (0,_cloneArrayBuffer/* default */.c)(object); + + case boolTag: + case dateTag: + return new Ctor(+object); + + case dataViewTag: + return _cloneDataView(object, isDeep); + + case float32Tag: case float64Tag: + case int8Tag: case int16Tag: case int32Tag: + case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag: + return (0,_cloneTypedArray/* default */.c)(object, isDeep); + + case mapTag: + return new Ctor; + + case numberTag: + case stringTag: + return new Ctor(object); + + case regexpTag: + return _cloneRegExp(object); + + case setTag: + return new Ctor; + + case symbolTag: + return _cloneSymbol(object); + } +} + +/* harmony default export */ const _initCloneByTag = (initCloneByTag); + +// EXTERNAL MODULE: ./node_modules/lodash-es/_initCloneObject.js + 1 modules +var _initCloneObject = __webpack_require__(1684); +// EXTERNAL MODULE: ./node_modules/lodash-es/isArray.js +var isArray = __webpack_require__(78820); +// EXTERNAL MODULE: ./node_modules/lodash-es/isBuffer.js + 1 modules +var isBuffer = __webpack_require__(57274); +// EXTERNAL MODULE: ./node_modules/lodash-es/isObjectLike.js +var isObjectLike = __webpack_require__(23584); +;// CONCATENATED MODULE: ./node_modules/lodash-es/_baseIsMap.js + + + +/** `Object#toString` result references. */ +var _baseIsMap_mapTag = '[object Map]'; + +/** + * The base implementation of `_.isMap` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a map, else `false`. + */ +function baseIsMap(value) { + return (0,isObjectLike/* default */.c)(value) && (0,_getTag/* default */.c)(value) == _baseIsMap_mapTag; +} + +/* harmony default export */ const _baseIsMap = (baseIsMap); + +// EXTERNAL MODULE: ./node_modules/lodash-es/_baseUnary.js +var _baseUnary = __webpack_require__(71180); +// EXTERNAL MODULE: ./node_modules/lodash-es/_nodeUtil.js +var _nodeUtil = __webpack_require__(17576); +;// CONCATENATED MODULE: ./node_modules/lodash-es/isMap.js + + + + +/* Node.js helper references. */ +var nodeIsMap = _nodeUtil/* default */.c && _nodeUtil/* default */.c.isMap; + +/** + * Checks if `value` is classified as a `Map` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a map, else `false`. + * @example + * + * _.isMap(new Map); + * // => true + * + * _.isMap(new WeakMap); + * // => false + */ +var isMap = nodeIsMap ? (0,_baseUnary/* default */.c)(nodeIsMap) : _baseIsMap; + +/* harmony default export */ const lodash_es_isMap = (isMap); + +// EXTERNAL MODULE: ./node_modules/lodash-es/isObject.js +var isObject = __webpack_require__(5368); +;// CONCATENATED MODULE: ./node_modules/lodash-es/_baseIsSet.js + + + +/** `Object#toString` result references. */ +var _baseIsSet_setTag = '[object Set]'; + +/** + * The base implementation of `_.isSet` without Node.js optimizations. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a set, else `false`. + */ +function baseIsSet(value) { + return (0,isObjectLike/* default */.c)(value) && (0,_getTag/* default */.c)(value) == _baseIsSet_setTag; +} + +/* harmony default export */ const _baseIsSet = (baseIsSet); + +;// CONCATENATED MODULE: ./node_modules/lodash-es/isSet.js + + + + +/* Node.js helper references. */ +var nodeIsSet = _nodeUtil/* default */.c && _nodeUtil/* default */.c.isSet; + +/** + * Checks if `value` is classified as a `Set` object. + * + * @static + * @memberOf _ + * @since 4.3.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a set, else `false`. + * @example + * + * _.isSet(new Set); + * // => true + * + * _.isSet(new WeakSet); + * // => false + */ +var isSet = nodeIsSet ? (0,_baseUnary/* default */.c)(nodeIsSet) : _baseIsSet; + +/* harmony default export */ const lodash_es_isSet = (isSet); + +;// CONCATENATED MODULE: ./node_modules/lodash-es/_baseClone.js + + + + + + + + + + + + + + + + + + + + + + + +/** Used to compose bitmasks for cloning. */ +var CLONE_DEEP_FLAG = 1, + CLONE_FLAT_FLAG = 2, + CLONE_SYMBOLS_FLAG = 4; + +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + _baseClone_boolTag = '[object Boolean]', + _baseClone_dateTag = '[object Date]', + errorTag = '[object Error]', + funcTag = '[object Function]', + genTag = '[object GeneratorFunction]', + _baseClone_mapTag = '[object Map]', + _baseClone_numberTag = '[object Number]', + objectTag = '[object Object]', + _baseClone_regexpTag = '[object RegExp]', + _baseClone_setTag = '[object Set]', + _baseClone_stringTag = '[object String]', + _baseClone_symbolTag = '[object Symbol]', + weakMapTag = '[object WeakMap]'; + +var _baseClone_arrayBufferTag = '[object ArrayBuffer]', + _baseClone_dataViewTag = '[object DataView]', + _baseClone_float32Tag = '[object Float32Array]', + _baseClone_float64Tag = '[object Float64Array]', + _baseClone_int8Tag = '[object Int8Array]', + _baseClone_int16Tag = '[object Int16Array]', + _baseClone_int32Tag = '[object Int32Array]', + _baseClone_uint8Tag = '[object Uint8Array]', + _baseClone_uint8ClampedTag = '[object Uint8ClampedArray]', + _baseClone_uint16Tag = '[object Uint16Array]', + _baseClone_uint32Tag = '[object Uint32Array]'; + +/** Used to identify `toStringTag` values supported by `_.clone`. */ +var cloneableTags = {}; +cloneableTags[argsTag] = cloneableTags[arrayTag] = +cloneableTags[_baseClone_arrayBufferTag] = cloneableTags[_baseClone_dataViewTag] = +cloneableTags[_baseClone_boolTag] = cloneableTags[_baseClone_dateTag] = +cloneableTags[_baseClone_float32Tag] = cloneableTags[_baseClone_float64Tag] = +cloneableTags[_baseClone_int8Tag] = cloneableTags[_baseClone_int16Tag] = +cloneableTags[_baseClone_int32Tag] = cloneableTags[_baseClone_mapTag] = +cloneableTags[_baseClone_numberTag] = cloneableTags[objectTag] = +cloneableTags[_baseClone_regexpTag] = cloneableTags[_baseClone_setTag] = +cloneableTags[_baseClone_stringTag] = cloneableTags[_baseClone_symbolTag] = +cloneableTags[_baseClone_uint8Tag] = cloneableTags[_baseClone_uint8ClampedTag] = +cloneableTags[_baseClone_uint16Tag] = cloneableTags[_baseClone_uint32Tag] = true; +cloneableTags[errorTag] = cloneableTags[funcTag] = +cloneableTags[weakMapTag] = false; + +/** + * The base implementation of `_.clone` and `_.cloneDeep` which tracks + * traversed objects. + * + * @private + * @param {*} value The value to clone. + * @param {boolean} bitmask The bitmask flags. + * 1 - Deep clone + * 2 - Flatten inherited properties + * 4 - Clone symbols + * @param {Function} [customizer] The function to customize cloning. + * @param {string} [key] The key of `value`. + * @param {Object} [object] The parent object of `value`. + * @param {Object} [stack] Tracks traversed objects and their clone counterparts. + * @returns {*} Returns the cloned value. + */ +function baseClone(value, bitmask, customizer, key, object, stack) { + var result, + isDeep = bitmask & CLONE_DEEP_FLAG, + isFlat = bitmask & CLONE_FLAT_FLAG, + isFull = bitmask & CLONE_SYMBOLS_FLAG; + + if (customizer) { + result = object ? customizer(value, key, object, stack) : customizer(value); + } + if (result !== undefined) { + return result; + } + if (!(0,isObject/* default */.c)(value)) { + return value; + } + var isArr = (0,isArray/* default */.c)(value); + if (isArr) { + result = _initCloneArray(value); + if (!isDeep) { + return (0,_copyArray/* default */.c)(value, result); + } + } else { + var tag = (0,_getTag/* default */.c)(value), + isFunc = tag == funcTag || tag == genTag; + + if ((0,isBuffer/* default */.c)(value)) { + return (0,_cloneBuffer/* default */.c)(value, isDeep); + } + if (tag == objectTag || tag == argsTag || (isFunc && !object)) { + result = (isFlat || isFunc) ? {} : (0,_initCloneObject/* default */.c)(value); + if (!isDeep) { + return isFlat + ? _copySymbolsIn(value, _baseAssignIn(result, value)) + : _copySymbols(value, _baseAssign(result, value)); + } + } else { + if (!cloneableTags[tag]) { + return object ? value : {}; + } + result = _initCloneByTag(value, tag, isDeep); + } + } + // Check for circular references and return its corresponding clone. + stack || (stack = new _Stack/* default */.c); + var stacked = stack.get(value); + if (stacked) { + return stacked; + } + stack.set(value, result); + + if (lodash_es_isSet(value)) { + value.forEach(function(subValue) { + result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack)); + }); + } else if (lodash_es_isMap(value)) { + value.forEach(function(subValue, key) { + result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack)); + }); + } + + var keysFunc = isFull + ? (isFlat ? _getAllKeysIn : _getAllKeys/* default */.c) + : (isFlat ? keysIn/* default */.c : keys/* default */.c); + + var props = isArr ? undefined : keysFunc(value); + (0,_arrayEach/* default */.c)(props || value, function(subValue, key) { + if (props) { + key = subValue; + subValue = value[key]; + } + // Recursively populate clone (susceptible to call stack limits). + (0,_assignValue/* default */.c)(result, key, baseClone(subValue, bitmask, customizer, key, value, stack)); + }); + return result; +} + +/* harmony default export */ const _baseClone = (baseClone); + + +/***/ }), + +/***/ 92816: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + c: () => (/* binding */ _baseEach) +}); + +// EXTERNAL MODULE: ./node_modules/lodash-es/_baseForOwn.js +var _baseForOwn = __webpack_require__(79985); +// EXTERNAL MODULE: ./node_modules/lodash-es/isArrayLike.js +var isArrayLike = __webpack_require__(42440); +;// CONCATENATED MODULE: ./node_modules/lodash-es/_createBaseEach.js + + +/** + * Creates a `baseEach` or `baseEachRight` function. + * + * @private + * @param {Function} eachFunc The function to iterate over a collection. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new base function. + */ +function createBaseEach(eachFunc, fromRight) { + return function(collection, iteratee) { + if (collection == null) { + return collection; + } + if (!(0,isArrayLike/* default */.c)(collection)) { + return eachFunc(collection, iteratee); + } + var length = collection.length, + index = fromRight ? length : -1, + iterable = Object(collection); + + while ((fromRight ? index-- : ++index < length)) { + if (iteratee(iterable[index], index, iterable) === false) { + break; + } + } + return collection; + }; +} + +/* harmony default export */ const _createBaseEach = (createBaseEach); + +;// CONCATENATED MODULE: ./node_modules/lodash-es/_baseEach.js + + + +/** + * The base implementation of `_.forEach` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + */ +var baseEach = _createBaseEach(_baseForOwn/* default */.c); + +/* harmony default export */ const _baseEach = (baseEach); + + +/***/ }), + +/***/ 16428: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ c: () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/** + * The base implementation of `_.findIndex` and `_.findLastIndex` without + * support for iteratee shorthands. + * + * @private + * @param {Array} array The array to inspect. + * @param {Function} predicate The function invoked per iteration. + * @param {number} fromIndex The index to search from. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {number} Returns the index of the matched value, else `-1`. + */ +function baseFindIndex(array, predicate, fromIndex, fromRight) { + var length = array.length, + index = fromIndex + (fromRight ? 1 : -1); + + while ((fromRight ? index-- : ++index < length)) { + if (predicate(array[index], index, array)) { + return index; + } + } + return -1; +} + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseFindIndex); + + +/***/ }), + +/***/ 40571: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + c: () => (/* binding */ _baseFlatten) +}); + +// EXTERNAL MODULE: ./node_modules/lodash-es/_arrayPush.js +var _arrayPush = __webpack_require__(25072); +// EXTERNAL MODULE: ./node_modules/lodash-es/_Symbol.js +var _Symbol = __webpack_require__(24048); +// EXTERNAL MODULE: ./node_modules/lodash-es/isArguments.js + 1 modules +var isArguments = __webpack_require__(59636); +// EXTERNAL MODULE: ./node_modules/lodash-es/isArray.js +var isArray = __webpack_require__(78820); +;// CONCATENATED MODULE: ./node_modules/lodash-es/_isFlattenable.js + + + + +/** Built-in value references. */ +var spreadableSymbol = _Symbol/* default */.c ? _Symbol/* default */.c.isConcatSpreadable : undefined; + +/** + * Checks if `value` is a flattenable `arguments` object or array. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is flattenable, else `false`. + */ +function isFlattenable(value) { + return (0,isArray/* default */.c)(value) || (0,isArguments/* default */.c)(value) || + !!(spreadableSymbol && value && value[spreadableSymbol]); +} + +/* harmony default export */ const _isFlattenable = (isFlattenable); + +;// CONCATENATED MODULE: ./node_modules/lodash-es/_baseFlatten.js + + + +/** + * The base implementation of `_.flatten` with support for restricting flattening. + * + * @private + * @param {Array} array The array to flatten. + * @param {number} depth The maximum recursion depth. + * @param {boolean} [predicate=isFlattenable] The function invoked per iteration. + * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks. + * @param {Array} [result=[]] The initial result value. + * @returns {Array} Returns the new flattened array. + */ +function baseFlatten(array, depth, predicate, isStrict, result) { + var index = -1, + length = array.length; + + predicate || (predicate = _isFlattenable); + result || (result = []); + + while (++index < length) { + var value = array[index]; + if (depth > 0 && predicate(value)) { + if (depth > 1) { + // Recursively flatten arrays (susceptible to call stack limits). + baseFlatten(value, depth - 1, predicate, isStrict, result); + } else { + (0,_arrayPush/* default */.c)(result, value); + } + } else if (!isStrict) { + result[result.length] = value; + } + } + return result; +} + +/* harmony default export */ const _baseFlatten = (baseFlatten); + + +/***/ }), + +/***/ 79985: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ c: () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _baseFor_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(19004); +/* harmony import */ var _keys_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(62420); + + + +/** + * The base implementation of `_.forOwn` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Object} Returns `object`. + */ +function baseForOwn(object, iteratee) { + return object && (0,_baseFor_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .c)(object, iteratee, _keys_js__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .c); +} + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseForOwn); + + +/***/ }), + +/***/ 60604: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ c: () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _castPath_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(58356); +/* harmony import */ var _toKey_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(32128); + + + +/** + * The base implementation of `_.get` without support for default values. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @returns {*} Returns the resolved value. + */ +function baseGet(object, path) { + path = (0,_castPath_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .c)(path, object); + + var index = 0, + length = path.length; + + while (object != null && index < length) { + object = object[(0,_toKey_js__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .c)(path[index++])]; + } + return (index && index == length) ? object : undefined; +} + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseGet); + + +/***/ }), + +/***/ 30176: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ c: () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _arrayPush_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(25072); +/* harmony import */ var _isArray_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(78820); + + + +/** + * The base implementation of `getAllKeys` and `getAllKeysIn` which uses + * `keysFunc` and `symbolsFunc` to get the enumerable property names and + * symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Function} keysFunc The function to get the keys of `object`. + * @param {Function} symbolsFunc The function to get the symbols of `object`. + * @returns {Array} Returns the array of property names and symbols. + */ +function baseGetAllKeys(object, keysFunc, symbolsFunc) { + var result = keysFunc(object); + return (0,_isArray_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .c)(object) ? result : (0,_arrayPush_js__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .c)(result, symbolsFunc(object)); +} + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseGetAllKeys); + + +/***/ }), + +/***/ 91312: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + c: () => (/* binding */ _baseIteratee) +}); + +// EXTERNAL MODULE: ./node_modules/lodash-es/_Stack.js + 5 modules +var _Stack = __webpack_require__(97184); +// EXTERNAL MODULE: ./node_modules/lodash-es/_SetCache.js + 2 modules +var _SetCache = __webpack_require__(34528); +;// CONCATENATED MODULE: ./node_modules/lodash-es/_arraySome.js +/** + * A specialized version of `_.some` for arrays without support for iteratee + * shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {boolean} Returns `true` if any element passes the predicate check, + * else `false`. + */ +function arraySome(array, predicate) { + var index = -1, + length = array == null ? 0 : array.length; + + while (++index < length) { + if (predicate(array[index], index, array)) { + return true; + } + } + return false; +} + +/* harmony default export */ const _arraySome = (arraySome); + +// EXTERNAL MODULE: ./node_modules/lodash-es/_cacheHas.js +var _cacheHas = __webpack_require__(5960); +;// CONCATENATED MODULE: ./node_modules/lodash-es/_equalArrays.js + + + + +/** Used to compose bitmasks for value comparisons. */ +var COMPARE_PARTIAL_FLAG = 1, + COMPARE_UNORDERED_FLAG = 2; + +/** + * A specialized version of `baseIsEqualDeep` for arrays with support for + * partial deep comparisons. + * + * @private + * @param {Array} array The array to compare. + * @param {Array} other The other array to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `array` and `other` objects. + * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`. + */ +function equalArrays(array, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & COMPARE_PARTIAL_FLAG, + arrLength = array.length, + othLength = other.length; + + if (arrLength != othLength && !(isPartial && othLength > arrLength)) { + return false; + } + // Check that cyclic values are equal. + var arrStacked = stack.get(array); + var othStacked = stack.get(other); + if (arrStacked && othStacked) { + return arrStacked == other && othStacked == array; + } + var index = -1, + result = true, + seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new _SetCache/* default */.c : undefined; + + stack.set(array, other); + stack.set(other, array); + + // Ignore non-index properties. + while (++index < arrLength) { + var arrValue = array[index], + othValue = other[index]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, arrValue, index, other, array, stack) + : customizer(arrValue, othValue, index, array, other, stack); + } + if (compared !== undefined) { + if (compared) { + continue; + } + result = false; + break; + } + // Recursively compare arrays (susceptible to call stack limits). + if (seen) { + if (!_arraySome(other, function(othValue, othIndex) { + if (!(0,_cacheHas/* default */.c)(seen, othIndex) && + (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) { + return seen.push(othIndex); + } + })) { + result = false; + break; + } + } else if (!( + arrValue === othValue || + equalFunc(arrValue, othValue, bitmask, customizer, stack) + )) { + result = false; + break; + } + } + stack['delete'](array); + stack['delete'](other); + return result; +} + +/* harmony default export */ const _equalArrays = (equalArrays); + +// EXTERNAL MODULE: ./node_modules/lodash-es/_Symbol.js +var _Symbol = __webpack_require__(24048); +// EXTERNAL MODULE: ./node_modules/lodash-es/_Uint8Array.js +var _Uint8Array = __webpack_require__(91392); +// EXTERNAL MODULE: ./node_modules/lodash-es/eq.js +var eq = __webpack_require__(73048); +;// CONCATENATED MODULE: ./node_modules/lodash-es/_mapToArray.js +/** + * Converts `map` to its key-value pairs. + * + * @private + * @param {Object} map The map to convert. + * @returns {Array} Returns the key-value pairs. + */ +function mapToArray(map) { + var index = -1, + result = Array(map.size); + + map.forEach(function(value, key) { + result[++index] = [key, value]; + }); + return result; +} + +/* harmony default export */ const _mapToArray = (mapToArray); + +// EXTERNAL MODULE: ./node_modules/lodash-es/_setToArray.js +var _setToArray = __webpack_require__(46492); +;// CONCATENATED MODULE: ./node_modules/lodash-es/_equalByTag.js + + + + + + + +/** Used to compose bitmasks for value comparisons. */ +var _equalByTag_COMPARE_PARTIAL_FLAG = 1, + _equalByTag_COMPARE_UNORDERED_FLAG = 2; + +/** `Object#toString` result references. */ +var boolTag = '[object Boolean]', + dateTag = '[object Date]', + errorTag = '[object Error]', + mapTag = '[object Map]', + numberTag = '[object Number]', + regexpTag = '[object RegExp]', + setTag = '[object Set]', + stringTag = '[object String]', + symbolTag = '[object Symbol]'; + +var arrayBufferTag = '[object ArrayBuffer]', + dataViewTag = '[object DataView]'; + +/** Used to convert symbols to primitives and strings. */ +var symbolProto = _Symbol/* default */.c ? _Symbol/* default */.c.prototype : undefined, + symbolValueOf = symbolProto ? symbolProto.valueOf : undefined; + +/** + * A specialized version of `baseIsEqualDeep` for comparing objects of + * the same `toStringTag`. + * + * **Note:** This function only supports comparing values with tags of + * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {string} tag The `toStringTag` of the objects to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) { + switch (tag) { + case dataViewTag: + if ((object.byteLength != other.byteLength) || + (object.byteOffset != other.byteOffset)) { + return false; + } + object = object.buffer; + other = other.buffer; + + case arrayBufferTag: + if ((object.byteLength != other.byteLength) || + !equalFunc(new _Uint8Array/* default */.c(object), new _Uint8Array/* default */.c(other))) { + return false; + } + return true; + + case boolTag: + case dateTag: + case numberTag: + // Coerce booleans to `1` or `0` and dates to milliseconds. + // Invalid dates are coerced to `NaN`. + return (0,eq/* default */.c)(+object, +other); + + case errorTag: + return object.name == other.name && object.message == other.message; + + case regexpTag: + case stringTag: + // Coerce regexes to strings and treat strings, primitives and objects, + // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring + // for more details. + return object == (other + ''); + + case mapTag: + var convert = _mapToArray; + + case setTag: + var isPartial = bitmask & _equalByTag_COMPARE_PARTIAL_FLAG; + convert || (convert = _setToArray/* default */.c); + + if (object.size != other.size && !isPartial) { + return false; + } + // Assume cyclic values are equal. + var stacked = stack.get(object); + if (stacked) { + return stacked == other; + } + bitmask |= _equalByTag_COMPARE_UNORDERED_FLAG; + + // Recursively compare objects (susceptible to call stack limits). + stack.set(object, other); + var result = _equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack); + stack['delete'](object); + return result; + + case symbolTag: + if (symbolValueOf) { + return symbolValueOf.call(object) == symbolValueOf.call(other); + } + } + return false; +} + +/* harmony default export */ const _equalByTag = (equalByTag); + +// EXTERNAL MODULE: ./node_modules/lodash-es/_getAllKeys.js +var _getAllKeys = __webpack_require__(22980); +;// CONCATENATED MODULE: ./node_modules/lodash-es/_equalObjects.js + + +/** Used to compose bitmasks for value comparisons. */ +var _equalObjects_COMPARE_PARTIAL_FLAG = 1; + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var _equalObjects_hasOwnProperty = objectProto.hasOwnProperty; + +/** + * A specialized version of `baseIsEqualDeep` for objects with support for + * partial deep comparisons. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} stack Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function equalObjects(object, other, bitmask, customizer, equalFunc, stack) { + var isPartial = bitmask & _equalObjects_COMPARE_PARTIAL_FLAG, + objProps = (0,_getAllKeys/* default */.c)(object), + objLength = objProps.length, + othProps = (0,_getAllKeys/* default */.c)(other), + othLength = othProps.length; + + if (objLength != othLength && !isPartial) { + return false; + } + var index = objLength; + while (index--) { + var key = objProps[index]; + if (!(isPartial ? key in other : _equalObjects_hasOwnProperty.call(other, key))) { + return false; + } + } + // Check that cyclic values are equal. + var objStacked = stack.get(object); + var othStacked = stack.get(other); + if (objStacked && othStacked) { + return objStacked == other && othStacked == object; + } + var result = true; + stack.set(object, other); + stack.set(other, object); + + var skipCtor = isPartial; + while (++index < objLength) { + key = objProps[index]; + var objValue = object[key], + othValue = other[key]; + + if (customizer) { + var compared = isPartial + ? customizer(othValue, objValue, key, other, object, stack) + : customizer(objValue, othValue, key, object, other, stack); + } + // Recursively compare objects (susceptible to call stack limits). + if (!(compared === undefined + ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack)) + : compared + )) { + result = false; + break; + } + skipCtor || (skipCtor = key == 'constructor'); + } + if (result && !skipCtor) { + var objCtor = object.constructor, + othCtor = other.constructor; + + // Non `Object` object instances with different constructors are not equal. + if (objCtor != othCtor && + ('constructor' in object && 'constructor' in other) && + !(typeof objCtor == 'function' && objCtor instanceof objCtor && + typeof othCtor == 'function' && othCtor instanceof othCtor)) { + result = false; + } + } + stack['delete'](object); + stack['delete'](other); + return result; +} + +/* harmony default export */ const _equalObjects = (equalObjects); + +// EXTERNAL MODULE: ./node_modules/lodash-es/_getTag.js + 3 modules +var _getTag = __webpack_require__(17188); +// EXTERNAL MODULE: ./node_modules/lodash-es/isArray.js +var isArray = __webpack_require__(78820); +// EXTERNAL MODULE: ./node_modules/lodash-es/isBuffer.js + 1 modules +var isBuffer = __webpack_require__(57274); +// EXTERNAL MODULE: ./node_modules/lodash-es/isTypedArray.js + 1 modules +var isTypedArray = __webpack_require__(93416); +;// CONCATENATED MODULE: ./node_modules/lodash-es/_baseIsEqualDeep.js + + + + + + + + + +/** Used to compose bitmasks for value comparisons. */ +var _baseIsEqualDeep_COMPARE_PARTIAL_FLAG = 1; + +/** `Object#toString` result references. */ +var argsTag = '[object Arguments]', + arrayTag = '[object Array]', + objectTag = '[object Object]'; + +/** Used for built-in method references. */ +var _baseIsEqualDeep_objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var _baseIsEqualDeep_hasOwnProperty = _baseIsEqualDeep_objectProto.hasOwnProperty; + +/** + * A specialized version of `baseIsEqual` for arrays and objects which performs + * deep comparisons and tracks traversed objects enabling objects with circular + * references to be compared. + * + * @private + * @param {Object} object The object to compare. + * @param {Object} other The other object to compare. + * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details. + * @param {Function} customizer The function to customize comparisons. + * @param {Function} equalFunc The function to determine equivalents of values. + * @param {Object} [stack] Tracks traversed `object` and `other` objects. + * @returns {boolean} Returns `true` if the objects are equivalent, else `false`. + */ +function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) { + var objIsArr = (0,isArray/* default */.c)(object), + othIsArr = (0,isArray/* default */.c)(other), + objTag = objIsArr ? arrayTag : (0,_getTag/* default */.c)(object), + othTag = othIsArr ? arrayTag : (0,_getTag/* default */.c)(other); + + objTag = objTag == argsTag ? objectTag : objTag; + othTag = othTag == argsTag ? objectTag : othTag; + + var objIsObj = objTag == objectTag, + othIsObj = othTag == objectTag, + isSameTag = objTag == othTag; + + if (isSameTag && (0,isBuffer/* default */.c)(object)) { + if (!(0,isBuffer/* default */.c)(other)) { + return false; + } + objIsArr = true; + objIsObj = false; + } + if (isSameTag && !objIsObj) { + stack || (stack = new _Stack/* default */.c); + return (objIsArr || (0,isTypedArray/* default */.c)(object)) + ? _equalArrays(object, other, bitmask, customizer, equalFunc, stack) + : _equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack); + } + if (!(bitmask & _baseIsEqualDeep_COMPARE_PARTIAL_FLAG)) { + var objIsWrapped = objIsObj && _baseIsEqualDeep_hasOwnProperty.call(object, '__wrapped__'), + othIsWrapped = othIsObj && _baseIsEqualDeep_hasOwnProperty.call(other, '__wrapped__'); + + if (objIsWrapped || othIsWrapped) { + var objUnwrapped = objIsWrapped ? object.value() : object, + othUnwrapped = othIsWrapped ? other.value() : other; + + stack || (stack = new _Stack/* default */.c); + return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack); + } + } + if (!isSameTag) { + return false; + } + stack || (stack = new _Stack/* default */.c); + return _equalObjects(object, other, bitmask, customizer, equalFunc, stack); +} + +/* harmony default export */ const _baseIsEqualDeep = (baseIsEqualDeep); + +// EXTERNAL MODULE: ./node_modules/lodash-es/isObjectLike.js +var isObjectLike = __webpack_require__(23584); +;// CONCATENATED MODULE: ./node_modules/lodash-es/_baseIsEqual.js + + + +/** + * The base implementation of `_.isEqual` which supports partial comparisons + * and tracks traversed objects. + * + * @private + * @param {*} value The value to compare. + * @param {*} other The other value to compare. + * @param {boolean} bitmask The bitmask flags. + * 1 - Unordered comparison + * 2 - Partial comparison + * @param {Function} [customizer] The function to customize comparisons. + * @param {Object} [stack] Tracks traversed `value` and `other` objects. + * @returns {boolean} Returns `true` if the values are equivalent, else `false`. + */ +function baseIsEqual(value, other, bitmask, customizer, stack) { + if (value === other) { + return true; + } + if (value == null || other == null || (!(0,isObjectLike/* default */.c)(value) && !(0,isObjectLike/* default */.c)(other))) { + return value !== value && other !== other; + } + return _baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack); +} + +/* harmony default export */ const _baseIsEqual = (baseIsEqual); + +;// CONCATENATED MODULE: ./node_modules/lodash-es/_baseIsMatch.js + + + +/** Used to compose bitmasks for value comparisons. */ +var _baseIsMatch_COMPARE_PARTIAL_FLAG = 1, + _baseIsMatch_COMPARE_UNORDERED_FLAG = 2; + +/** + * The base implementation of `_.isMatch` without support for iteratee shorthands. + * + * @private + * @param {Object} object The object to inspect. + * @param {Object} source The object of property values to match. + * @param {Array} matchData The property names, values, and compare flags to match. + * @param {Function} [customizer] The function to customize comparisons. + * @returns {boolean} Returns `true` if `object` is a match, else `false`. + */ +function baseIsMatch(object, source, matchData, customizer) { + var index = matchData.length, + length = index, + noCustomizer = !customizer; + + if (object == null) { + return !length; + } + object = Object(object); + while (index--) { + var data = matchData[index]; + if ((noCustomizer && data[2]) + ? data[1] !== object[data[0]] + : !(data[0] in object) + ) { + return false; + } + } + while (++index < length) { + data = matchData[index]; + var key = data[0], + objValue = object[key], + srcValue = data[1]; + + if (noCustomizer && data[2]) { + if (objValue === undefined && !(key in object)) { + return false; + } + } else { + var stack = new _Stack/* default */.c; + if (customizer) { + var result = customizer(objValue, srcValue, key, object, source, stack); + } + if (!(result === undefined + ? _baseIsEqual(srcValue, objValue, _baseIsMatch_COMPARE_PARTIAL_FLAG | _baseIsMatch_COMPARE_UNORDERED_FLAG, customizer, stack) + : result + )) { + return false; + } + } + } + return true; +} + +/* harmony default export */ const _baseIsMatch = (baseIsMatch); + +// EXTERNAL MODULE: ./node_modules/lodash-es/isObject.js +var isObject = __webpack_require__(5368); +;// CONCATENATED MODULE: ./node_modules/lodash-es/_isStrictComparable.js + + +/** + * Checks if `value` is suitable for strict equality comparisons, i.e. `===`. + * + * @private + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` if suitable for strict + * equality comparisons, else `false`. + */ +function isStrictComparable(value) { + return value === value && !(0,isObject/* default */.c)(value); +} + +/* harmony default export */ const _isStrictComparable = (isStrictComparable); + +// EXTERNAL MODULE: ./node_modules/lodash-es/keys.js +var keys = __webpack_require__(62420); +;// CONCATENATED MODULE: ./node_modules/lodash-es/_getMatchData.js + + + +/** + * Gets the property names, values, and compare flags of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the match data of `object`. + */ +function getMatchData(object) { + var result = (0,keys/* default */.c)(object), + length = result.length; + + while (length--) { + var key = result[length], + value = object[key]; + + result[length] = [key, value, _isStrictComparable(value)]; + } + return result; +} + +/* harmony default export */ const _getMatchData = (getMatchData); + +;// CONCATENATED MODULE: ./node_modules/lodash-es/_matchesStrictComparable.js +/** + * A specialized version of `matchesProperty` for source values suitable + * for strict equality comparisons, i.e. `===`. + * + * @private + * @param {string} key The key of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ +function matchesStrictComparable(key, srcValue) { + return function(object) { + if (object == null) { + return false; + } + return object[key] === srcValue && + (srcValue !== undefined || (key in Object(object))); + }; +} + +/* harmony default export */ const _matchesStrictComparable = (matchesStrictComparable); + +;// CONCATENATED MODULE: ./node_modules/lodash-es/_baseMatches.js + + + + +/** + * The base implementation of `_.matches` which doesn't clone `source`. + * + * @private + * @param {Object} source The object of property values to match. + * @returns {Function} Returns the new spec function. + */ +function baseMatches(source) { + var matchData = _getMatchData(source); + if (matchData.length == 1 && matchData[0][2]) { + return _matchesStrictComparable(matchData[0][0], matchData[0][1]); + } + return function(object) { + return object === source || _baseIsMatch(object, source, matchData); + }; +} + +/* harmony default export */ const _baseMatches = (baseMatches); + +// EXTERNAL MODULE: ./node_modules/lodash-es/_baseGet.js +var _baseGet = __webpack_require__(60604); +;// CONCATENATED MODULE: ./node_modules/lodash-es/get.js + + +/** + * Gets the value at `path` of `object`. If the resolved value is + * `undefined`, the `defaultValue` is returned in its place. + * + * @static + * @memberOf _ + * @since 3.7.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path of the property to get. + * @param {*} [defaultValue] The value returned for `undefined` resolved values. + * @returns {*} Returns the resolved value. + * @example + * + * var object = { 'a': [{ 'b': { 'c': 3 } }] }; + * + * _.get(object, 'a[0].b.c'); + * // => 3 + * + * _.get(object, ['a', '0', 'b', 'c']); + * // => 3 + * + * _.get(object, 'a.b.c', 'default'); + * // => 'default' + */ +function get(object, path, defaultValue) { + var result = object == null ? undefined : (0,_baseGet/* default */.c)(object, path); + return result === undefined ? defaultValue : result; +} + +/* harmony default export */ const lodash_es_get = (get); + +// EXTERNAL MODULE: ./node_modules/lodash-es/hasIn.js + 1 modules +var hasIn = __webpack_require__(73556); +// EXTERNAL MODULE: ./node_modules/lodash-es/_isKey.js +var _isKey = __webpack_require__(27544); +// EXTERNAL MODULE: ./node_modules/lodash-es/_toKey.js +var _toKey = __webpack_require__(32128); +;// CONCATENATED MODULE: ./node_modules/lodash-es/_baseMatchesProperty.js + + + + + + + + +/** Used to compose bitmasks for value comparisons. */ +var _baseMatchesProperty_COMPARE_PARTIAL_FLAG = 1, + _baseMatchesProperty_COMPARE_UNORDERED_FLAG = 2; + +/** + * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`. + * + * @private + * @param {string} path The path of the property to get. + * @param {*} srcValue The value to match. + * @returns {Function} Returns the new spec function. + */ +function baseMatchesProperty(path, srcValue) { + if ((0,_isKey/* default */.c)(path) && _isStrictComparable(srcValue)) { + return _matchesStrictComparable((0,_toKey/* default */.c)(path), srcValue); + } + return function(object) { + var objValue = lodash_es_get(object, path); + return (objValue === undefined && objValue === srcValue) + ? (0,hasIn/* default */.c)(object, path) + : _baseIsEqual(srcValue, objValue, _baseMatchesProperty_COMPARE_PARTIAL_FLAG | _baseMatchesProperty_COMPARE_UNORDERED_FLAG); + }; +} + +/* harmony default export */ const _baseMatchesProperty = (baseMatchesProperty); + +// EXTERNAL MODULE: ./node_modules/lodash-es/identity.js +var identity = __webpack_require__(5816); +// EXTERNAL MODULE: ./node_modules/lodash-es/_baseProperty.js +var _baseProperty = __webpack_require__(60472); +;// CONCATENATED MODULE: ./node_modules/lodash-es/_basePropertyDeep.js + + +/** + * A specialized version of `baseProperty` which supports deep paths. + * + * @private + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + */ +function basePropertyDeep(path) { + return function(object) { + return (0,_baseGet/* default */.c)(object, path); + }; +} + +/* harmony default export */ const _basePropertyDeep = (basePropertyDeep); + +;// CONCATENATED MODULE: ./node_modules/lodash-es/property.js + + + + + +/** + * Creates a function that returns the value at `path` of a given object. + * + * @static + * @memberOf _ + * @since 2.4.0 + * @category Util + * @param {Array|string} path The path of the property to get. + * @returns {Function} Returns the new accessor function. + * @example + * + * var objects = [ + * { 'a': { 'b': 2 } }, + * { 'a': { 'b': 1 } } + * ]; + * + * _.map(objects, _.property('a.b')); + * // => [2, 1] + * + * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b'); + * // => [1, 2] + */ +function property(path) { + return (0,_isKey/* default */.c)(path) ? (0,_baseProperty/* default */.c)((0,_toKey/* default */.c)(path)) : _basePropertyDeep(path); +} + +/* harmony default export */ const lodash_es_property = (property); + +;// CONCATENATED MODULE: ./node_modules/lodash-es/_baseIteratee.js + + + + + + +/** + * The base implementation of `_.iteratee`. + * + * @private + * @param {*} [value=_.identity] The value to convert to an iteratee. + * @returns {Function} Returns the iteratee. + */ +function baseIteratee(value) { + // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9. + // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details. + if (typeof value == 'function') { + return value; + } + if (value == null) { + return identity/* default */.c; + } + if (typeof value == 'object') { + return (0,isArray/* default */.c)(value) + ? _baseMatchesProperty(value[0], value[1]) + : _baseMatches(value); + } + return lodash_es_property(value); +} + +/* harmony default export */ const _baseIteratee = (baseIteratee); + + +/***/ }), + +/***/ 67980: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ c: () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _baseEach_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(92816); +/* harmony import */ var _isArrayLike_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(42440); + + + +/** + * The base implementation of `_.map` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + */ +function baseMap(collection, iteratee) { + var index = -1, + result = (0,_isArrayLike_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .c)(collection) ? Array(collection.length) : []; + + (0,_baseEach_js__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .c)(collection, function(value, key, collection) { + result[++index] = iteratee(value, key, collection); + }); + return result; +} + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseMap); + + +/***/ }), + +/***/ 60472: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ c: () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/** + * The base implementation of `_.property` without support for deep paths. + * + * @private + * @param {string} key The key of the property to get. + * @returns {Function} Returns the new accessor function. + */ +function baseProperty(key) { + return function(object) { + return object == null ? undefined : object[key]; + }; +} + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (baseProperty); + + +/***/ }), + +/***/ 5960: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ c: () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/** + * Checks if a `cache` value for `key` exists. + * + * @private + * @param {Object} cache The cache to query. + * @param {string} key The key of the entry to check. + * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`. + */ +function cacheHas(cache, key) { + return cache.has(key); +} + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (cacheHas); + + +/***/ }), + +/***/ 12176: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ c: () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _identity_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(5816); + + +/** + * Casts `value` to `identity` if it's not a function. + * + * @private + * @param {*} value The value to inspect. + * @returns {Function} Returns cast function. + */ +function castFunction(value) { + return typeof value == 'function' ? value : _identity_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .c; +} + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (castFunction); + + +/***/ }), + +/***/ 58356: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + c: () => (/* binding */ _castPath) +}); + +// EXTERNAL MODULE: ./node_modules/lodash-es/isArray.js +var isArray = __webpack_require__(78820); +// EXTERNAL MODULE: ./node_modules/lodash-es/_isKey.js +var _isKey = __webpack_require__(27544); +// EXTERNAL MODULE: ./node_modules/lodash-es/memoize.js +var memoize = __webpack_require__(30528); +;// CONCATENATED MODULE: ./node_modules/lodash-es/_memoizeCapped.js + + +/** Used as the maximum memoize cache size. */ +var MAX_MEMOIZE_SIZE = 500; + +/** + * A specialized version of `_.memoize` which clears the memoized function's + * cache when it exceeds `MAX_MEMOIZE_SIZE`. + * + * @private + * @param {Function} func The function to have its output memoized. + * @returns {Function} Returns the new memoized function. + */ +function memoizeCapped(func) { + var result = (0,memoize/* default */.c)(func, function(key) { + if (cache.size === MAX_MEMOIZE_SIZE) { + cache.clear(); + } + return key; + }); + + var cache = result.cache; + return result; +} + +/* harmony default export */ const _memoizeCapped = (memoizeCapped); + +;// CONCATENATED MODULE: ./node_modules/lodash-es/_stringToPath.js + + +/** Used to match property names within property paths. */ +var rePropName = /[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g; + +/** Used to match backslashes in property paths. */ +var reEscapeChar = /\\(\\)?/g; + +/** + * Converts `string` to a property path array. + * + * @private + * @param {string} string The string to convert. + * @returns {Array} Returns the property path array. + */ +var stringToPath = _memoizeCapped(function(string) { + var result = []; + if (string.charCodeAt(0) === 46 /* . */) { + result.push(''); + } + string.replace(rePropName, function(match, number, quote, subString) { + result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match)); + }); + return result; +}); + +/* harmony default export */ const _stringToPath = (stringToPath); + +// EXTERNAL MODULE: ./node_modules/lodash-es/toString.js + 1 modules +var lodash_es_toString = __webpack_require__(90400); +;// CONCATENATED MODULE: ./node_modules/lodash-es/_castPath.js + + + + + +/** + * Casts `value` to a path array if it's not one. + * + * @private + * @param {*} value The value to inspect. + * @param {Object} [object] The object to query keys on. + * @returns {Array} Returns the cast property path array. + */ +function castPath(value, object) { + if ((0,isArray/* default */.c)(value)) { + return value; + } + return (0,_isKey/* default */.c)(value, object) ? [value] : _stringToPath((0,lodash_es_toString/* default */.c)(value)); +} + +/* harmony default export */ const _castPath = (castPath); + + +/***/ }), + +/***/ 22980: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ c: () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _baseGetAllKeys_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(30176); +/* harmony import */ var _getSymbols_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(10772); +/* harmony import */ var _keys_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(62420); + + + + +/** + * Creates an array of own enumerable property names and symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names and symbols. + */ +function getAllKeys(object) { + return (0,_baseGetAllKeys_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .c)(object, _keys_js__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .c, _getSymbols_js__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .c); +} + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (getAllKeys); + + +/***/ }), + +/***/ 10772: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ c: () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _arrayFilter_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(46091); +/* harmony import */ var _stubArray_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(41716); + + + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Built-in value references. */ +var propertyIsEnumerable = objectProto.propertyIsEnumerable; + +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeGetSymbols = Object.getOwnPropertySymbols; + +/** + * Creates an array of the own enumerable symbols of `object`. + * + * @private + * @param {Object} object The object to query. + * @returns {Array} Returns the array of symbols. + */ +var getSymbols = !nativeGetSymbols ? _stubArray_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .c : function(object) { + if (object == null) { + return []; + } + object = Object(object); + return (0,_arrayFilter_js__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .c)(nativeGetSymbols(object), function(symbol) { + return propertyIsEnumerable.call(object, symbol); + }); +}; + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (getSymbols); + + +/***/ }), + +/***/ 18872: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ c: () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _castPath_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(58356); +/* harmony import */ var _isArguments_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(59636); +/* harmony import */ var _isArray_js__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(78820); +/* harmony import */ var _isIndex_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(748); +/* harmony import */ var _isLength_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(54968); +/* harmony import */ var _toKey_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(32128); + + + + + + + +/** + * Checks if `path` exists on `object`. + * + * @private + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @param {Function} hasFunc The function to check properties. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + */ +function hasPath(object, path, hasFunc) { + path = (0,_castPath_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .c)(path, object); + + var index = -1, + length = path.length, + result = false; + + while (++index < length) { + var key = (0,_toKey_js__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .c)(path[index]); + if (!(result = object != null && hasFunc(object, key))) { + break; + } + object = object[key]; + } + if (result || ++index != length) { + return result; + } + length = object == null ? 0 : object.length; + return !!length && (0,_isLength_js__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .c)(length) && (0,_isIndex_js__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .c)(key, length) && + ((0,_isArray_js__WEBPACK_IMPORTED_MODULE_4__/* ["default"] */ .c)(object) || (0,_isArguments_js__WEBPACK_IMPORTED_MODULE_5__/* ["default"] */ .c)(object)); +} + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (hasPath); + + +/***/ }), + +/***/ 27544: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ c: () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _isArray_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(78820); +/* harmony import */ var _isSymbol_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(46380); + + + +/** Used to match property names within property paths. */ +var reIsDeepProp = /\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/, + reIsPlainProp = /^\w*$/; + +/** + * Checks if `value` is a property name and not a property path. + * + * @private + * @param {*} value The value to check. + * @param {Object} [object] The object to query keys on. + * @returns {boolean} Returns `true` if `value` is a property name, else `false`. + */ +function isKey(value, object) { + if ((0,_isArray_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .c)(value)) { + return false; + } + var type = typeof value; + if (type == 'number' || type == 'symbol' || type == 'boolean' || + value == null || (0,_isSymbol_js__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .c)(value)) { + return true; + } + return reIsPlainProp.test(value) || !reIsDeepProp.test(value) || + (object != null && value in Object(object)); +} + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (isKey); + + +/***/ }), + +/***/ 46492: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ c: () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/** + * Converts `set` to an array of its values. + * + * @private + * @param {Object} set The set to convert. + * @returns {Array} Returns the values. + */ +function setToArray(set) { + var index = -1, + result = Array(set.size); + + set.forEach(function(value) { + result[++index] = value; + }); + return result; +} + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (setToArray); + + +/***/ }), + +/***/ 32128: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ c: () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _isSymbol_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(46380); + + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0; + +/** + * Converts `value` to a string key if it's not a string or symbol. + * + * @private + * @param {*} value The value to inspect. + * @returns {string|symbol} Returns the key. + */ +function toKey(value) { + if (typeof value == 'string' || (0,_isSymbol_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .c)(value)) { + return value; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; +} + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (toKey); + + +/***/ }), + +/***/ 12804: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ c: () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _baseRest_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(34880); +/* harmony import */ var _eq_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(73048); +/* harmony import */ var _isIterateeCall_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(15552); +/* harmony import */ var _keysIn_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(97000); + + + + + +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var hasOwnProperty = objectProto.hasOwnProperty; + +/** + * Assigns own and inherited enumerable string keyed properties of source + * objects to the destination object for all destination properties that + * resolve to `undefined`. Source objects are applied from left to right. + * Once a property is set, additional values of the same property are ignored. + * + * **Note:** This method mutates `object`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The destination object. + * @param {...Object} [sources] The source objects. + * @returns {Object} Returns `object`. + * @see _.defaultsDeep + * @example + * + * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 }); + * // => { 'a': 1, 'b': 2 } + */ +var defaults = (0,_baseRest_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .c)(function(object, sources) { + object = Object(object); + + var index = -1; + var length = sources.length; + var guard = length > 2 ? sources[2] : undefined; + + if (guard && (0,_isIterateeCall_js__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .c)(sources[0], sources[1], guard)) { + length = 1; + } + + while (++index < length) { + var source = sources[index]; + var props = (0,_keysIn_js__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .c)(source); + var propsIndex = -1; + var propsLength = props.length; + + while (++propsIndex < propsLength) { + var key = props[propsIndex]; + var value = object[key]; + + if (value === undefined || + ((0,_eq_js__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .c)(value, objectProto[key]) && !hasOwnProperty.call(object, key))) { + object[key] = source[key]; + } + } + } + + return object; +}); + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (defaults); + + +/***/ }), + +/***/ 55720: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + c: () => (/* binding */ lodash_es_filter) +}); + +// EXTERNAL MODULE: ./node_modules/lodash-es/_arrayFilter.js +var _arrayFilter = __webpack_require__(46091); +// EXTERNAL MODULE: ./node_modules/lodash-es/_baseEach.js + 1 modules +var _baseEach = __webpack_require__(92816); +;// CONCATENATED MODULE: ./node_modules/lodash-es/_baseFilter.js + + +/** + * The base implementation of `_.filter` without support for iteratee shorthands. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} predicate The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + */ +function baseFilter(collection, predicate) { + var result = []; + (0,_baseEach/* default */.c)(collection, function(value, index, collection) { + if (predicate(value, index, collection)) { + result.push(value); + } + }); + return result; +} + +/* harmony default export */ const _baseFilter = (baseFilter); + +// EXTERNAL MODULE: ./node_modules/lodash-es/_baseIteratee.js + 16 modules +var _baseIteratee = __webpack_require__(91312); +// EXTERNAL MODULE: ./node_modules/lodash-es/isArray.js +var isArray = __webpack_require__(78820); +;// CONCATENATED MODULE: ./node_modules/lodash-es/filter.js + + + + + +/** + * Iterates over elements of `collection`, returning an array of all elements + * `predicate` returns truthy for. The predicate is invoked with three + * arguments: (value, index|key, collection). + * + * **Note:** Unlike `_.remove`, this method returns a new array. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [predicate=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new filtered array. + * @see _.reject + * @example + * + * var users = [ + * { 'user': 'barney', 'age': 36, 'active': true }, + * { 'user': 'fred', 'age': 40, 'active': false } + * ]; + * + * _.filter(users, function(o) { return !o.active; }); + * // => objects for ['fred'] + * + * // The `_.matches` iteratee shorthand. + * _.filter(users, { 'age': 36, 'active': true }); + * // => objects for ['barney'] + * + * // The `_.matchesProperty` iteratee shorthand. + * _.filter(users, ['active', false]); + * // => objects for ['fred'] + * + * // The `_.property` iteratee shorthand. + * _.filter(users, 'active'); + * // => objects for ['barney'] + * + * // Combining several predicates using `_.overEvery` or `_.overSome`. + * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]])); + * // => objects for ['fred', 'barney'] + */ +function filter(collection, predicate) { + var func = (0,isArray/* default */.c)(collection) ? _arrayFilter/* default */.c : _baseFilter; + return func(collection, (0,_baseIteratee/* default */.c)(predicate, 3)); +} + +/* harmony default export */ const lodash_es_filter = (filter); + + +/***/ }), + +/***/ 9552: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ c: () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _baseFlatten_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(40571); + + +/** + * Flattens `array` a single level deep. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Array + * @param {Array} array The array to flatten. + * @returns {Array} Returns the new flattened array. + * @example + * + * _.flatten([1, [2, [3, [4]], 5]]); + * // => [1, 2, [3, [4]], 5] + */ +function flatten(array) { + var length = array == null ? 0 : array.length; + return length ? (0,_baseFlatten_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .c)(array, 1) : []; +} + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (flatten); + + +/***/ }), + +/***/ 50080: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ c: () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _arrayEach_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(56812); +/* harmony import */ var _baseEach_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(92816); +/* harmony import */ var _castFunction_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(12176); +/* harmony import */ var _isArray_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(78820); + + + + + +/** + * Iterates over elements of `collection` and invokes `iteratee` for each element. + * The iteratee is invoked with three arguments: (value, index|key, collection). + * Iteratee functions may exit iteration early by explicitly returning `false`. + * + * **Note:** As with other "Collections" methods, objects with a "length" + * property are iterated like arrays. To avoid this behavior use `_.forIn` + * or `_.forOwn` for object iteration. + * + * @static + * @memberOf _ + * @since 0.1.0 + * @alias each + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array|Object} Returns `collection`. + * @see _.forEachRight + * @example + * + * _.forEach([1, 2], function(value) { + * console.log(value); + * }); + * // => Logs `1` then `2`. + * + * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) { + * console.log(key); + * }); + * // => Logs 'a' then 'b' (iteration order is not guaranteed). + */ +function forEach(collection, iteratee) { + var func = (0,_isArray_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .c)(collection) ? _arrayEach_js__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .c : _baseEach_js__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .c; + return func(collection, (0,_castFunction_js__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .c)(iteratee)); +} + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (forEach); + + +/***/ }), + +/***/ 7248: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + c: () => (/* binding */ lodash_es_has) +}); + +;// CONCATENATED MODULE: ./node_modules/lodash-es/_baseHas.js +/** Used for built-in method references. */ +var objectProto = Object.prototype; + +/** Used to check objects for own properties. */ +var _baseHas_hasOwnProperty = objectProto.hasOwnProperty; + +/** + * The base implementation of `_.has` without support for deep paths. + * + * @private + * @param {Object} [object] The object to query. + * @param {Array|string} key The key to check. + * @returns {boolean} Returns `true` if `key` exists, else `false`. + */ +function baseHas(object, key) { + return object != null && _baseHas_hasOwnProperty.call(object, key); +} + +/* harmony default export */ const _baseHas = (baseHas); + +// EXTERNAL MODULE: ./node_modules/lodash-es/_hasPath.js +var _hasPath = __webpack_require__(18872); +;// CONCATENATED MODULE: ./node_modules/lodash-es/has.js + + + +/** + * Checks if `path` is a direct property of `object`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + * @example + * + * var object = { 'a': { 'b': 2 } }; + * var other = _.create({ 'a': _.create({ 'b': 2 }) }); + * + * _.has(object, 'a'); + * // => true + * + * _.has(object, 'a.b'); + * // => true + * + * _.has(object, ['a', 'b']); + * // => true + * + * _.has(other, 'a'); + * // => false + */ +function has(object, path) { + return object != null && (0,_hasPath/* default */.c)(object, path, _baseHas); +} + +/* harmony default export */ const lodash_es_has = (has); + + +/***/ }), + +/***/ 73556: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + c: () => (/* binding */ lodash_es_hasIn) +}); + +;// CONCATENATED MODULE: ./node_modules/lodash-es/_baseHasIn.js +/** + * The base implementation of `_.hasIn` without support for deep paths. + * + * @private + * @param {Object} [object] The object to query. + * @param {Array|string} key The key to check. + * @returns {boolean} Returns `true` if `key` exists, else `false`. + */ +function baseHasIn(object, key) { + return object != null && key in Object(object); +} + +/* harmony default export */ const _baseHasIn = (baseHasIn); + +// EXTERNAL MODULE: ./node_modules/lodash-es/_hasPath.js +var _hasPath = __webpack_require__(18872); +;// CONCATENATED MODULE: ./node_modules/lodash-es/hasIn.js + + + +/** + * Checks if `path` is a direct or inherited property of `object`. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Object + * @param {Object} object The object to query. + * @param {Array|string} path The path to check. + * @returns {boolean} Returns `true` if `path` exists, else `false`. + * @example + * + * var object = _.create({ 'a': _.create({ 'b': 2 }) }); + * + * _.hasIn(object, 'a'); + * // => true + * + * _.hasIn(object, 'a.b'); + * // => true + * + * _.hasIn(object, ['a', 'b']); + * // => true + * + * _.hasIn(object, 'b'); + * // => false + */ +function hasIn(object, path) { + return object != null && (0,_hasPath/* default */.c)(object, path, _baseHasIn); +} + +/* harmony default export */ const lodash_es_hasIn = (hasIn); + + +/***/ }), + +/***/ 46380: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ c: () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _baseGetTag_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(67724); +/* harmony import */ var _isObjectLike_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(23584); + + + +/** `Object#toString` result references. */ +var symbolTag = '[object Symbol]'; + +/** + * Checks if `value` is classified as a `Symbol` primitive or object. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is a symbol, else `false`. + * @example + * + * _.isSymbol(Symbol.iterator); + * // => true + * + * _.isSymbol('abc'); + * // => false + */ +function isSymbol(value) { + return typeof value == 'symbol' || + ((0,_isObjectLike_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .c)(value) && (0,_baseGetTag_js__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .c)(value) == symbolTag); +} + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (isSymbol); + + +/***/ }), + +/***/ 60372: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ c: () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/** + * Checks if `value` is `undefined`. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Lang + * @param {*} value The value to check. + * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`. + * @example + * + * _.isUndefined(void 0); + * // => true + * + * _.isUndefined(null); + * // => false + */ +function isUndefined(value) { + return value === undefined; +} + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (isUndefined); + + +/***/ }), + +/***/ 62420: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ c: () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _arrayLikeKeys_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(46900); +/* harmony import */ var _baseKeys_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(61376); +/* harmony import */ var _isArrayLike_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(42440); + + + + +/** + * Creates an array of the own enumerable property names of `object`. + * + * **Note:** Non-object values are coerced to objects. See the + * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys) + * for more details. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property names. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.keys(new Foo); + * // => ['a', 'b'] (iteration order is not guaranteed) + * + * _.keys('hi'); + * // => ['0', '1'] + */ +function keys(object) { + return (0,_isArrayLike_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .c)(object) ? (0,_arrayLikeKeys_js__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .c)(object) : (0,_baseKeys_js__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .c)(object); +} + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (keys); + + +/***/ }), + +/***/ 92696: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ c: () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _arrayMap_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1304); +/* harmony import */ var _baseIteratee_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(91312); +/* harmony import */ var _baseMap_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(67980); +/* harmony import */ var _isArray_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(78820); + + + + + +/** + * Creates an array of values by running each element in `collection` thru + * `iteratee`. The iteratee is invoked with three arguments: + * (value, index|key, collection). + * + * Many lodash methods are guarded to work as iteratees for methods like + * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`. + * + * The guarded methods are: + * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`, + * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`, + * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`, + * `template`, `trim`, `trimEnd`, `trimStart`, and `words` + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @returns {Array} Returns the new mapped array. + * @example + * + * function square(n) { + * return n * n; + * } + * + * _.map([4, 8], square); + * // => [16, 64] + * + * _.map({ 'a': 4, 'b': 8 }, square); + * // => [16, 64] (iteration order is not guaranteed) + * + * var users = [ + * { 'user': 'barney' }, + * { 'user': 'fred' } + * ]; + * + * // The `_.property` iteratee shorthand. + * _.map(users, 'user'); + * // => ['barney', 'fred'] + */ +function map(collection, iteratee) { + var func = (0,_isArray_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .c)(collection) ? _arrayMap_js__WEBPACK_IMPORTED_MODULE_1__/* ["default"] */ .c : _baseMap_js__WEBPACK_IMPORTED_MODULE_2__/* ["default"] */ .c; + return func(collection, (0,_baseIteratee_js__WEBPACK_IMPORTED_MODULE_3__/* ["default"] */ .c)(iteratee, 3)); +} + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (map); + + +/***/ }), + +/***/ 17488: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + c: () => (/* binding */ lodash_es_pick) +}); + +// EXTERNAL MODULE: ./node_modules/lodash-es/_baseGet.js +var _baseGet = __webpack_require__(60604); +// EXTERNAL MODULE: ./node_modules/lodash-es/_assignValue.js +var _assignValue = __webpack_require__(77412); +// EXTERNAL MODULE: ./node_modules/lodash-es/_castPath.js + 2 modules +var _castPath = __webpack_require__(58356); +// EXTERNAL MODULE: ./node_modules/lodash-es/_isIndex.js +var _isIndex = __webpack_require__(748); +// EXTERNAL MODULE: ./node_modules/lodash-es/isObject.js +var isObject = __webpack_require__(5368); +// EXTERNAL MODULE: ./node_modules/lodash-es/_toKey.js +var _toKey = __webpack_require__(32128); +;// CONCATENATED MODULE: ./node_modules/lodash-es/_baseSet.js + + + + + + +/** + * The base implementation of `_.set`. + * + * @private + * @param {Object} object The object to modify. + * @param {Array|string} path The path of the property to set. + * @param {*} value The value to set. + * @param {Function} [customizer] The function to customize path creation. + * @returns {Object} Returns `object`. + */ +function baseSet(object, path, value, customizer) { + if (!(0,isObject/* default */.c)(object)) { + return object; + } + path = (0,_castPath/* default */.c)(path, object); + + var index = -1, + length = path.length, + lastIndex = length - 1, + nested = object; + + while (nested != null && ++index < length) { + var key = (0,_toKey/* default */.c)(path[index]), + newValue = value; + + if (key === '__proto__' || key === 'constructor' || key === 'prototype') { + return object; + } + + if (index != lastIndex) { + var objValue = nested[key]; + newValue = customizer ? customizer(objValue, key, nested) : undefined; + if (newValue === undefined) { + newValue = (0,isObject/* default */.c)(objValue) + ? objValue + : ((0,_isIndex/* default */.c)(path[index + 1]) ? [] : {}); + } + } + (0,_assignValue/* default */.c)(nested, key, newValue); + nested = nested[key]; + } + return object; +} + +/* harmony default export */ const _baseSet = (baseSet); + +;// CONCATENATED MODULE: ./node_modules/lodash-es/_basePickBy.js + + + + +/** + * The base implementation of `_.pickBy` without support for iteratee shorthands. + * + * @private + * @param {Object} object The source object. + * @param {string[]} paths The property paths to pick. + * @param {Function} predicate The function invoked per property. + * @returns {Object} Returns the new object. + */ +function basePickBy(object, paths, predicate) { + var index = -1, + length = paths.length, + result = {}; + + while (++index < length) { + var path = paths[index], + value = (0,_baseGet/* default */.c)(object, path); + + if (predicate(value, path)) { + _baseSet(result, (0,_castPath/* default */.c)(path, object), value); + } + } + return result; +} + +/* harmony default export */ const _basePickBy = (basePickBy); + +// EXTERNAL MODULE: ./node_modules/lodash-es/hasIn.js + 1 modules +var hasIn = __webpack_require__(73556); +;// CONCATENATED MODULE: ./node_modules/lodash-es/_basePick.js + + + +/** + * The base implementation of `_.pick` without support for individual + * property identifiers. + * + * @private + * @param {Object} object The source object. + * @param {string[]} paths The property paths to pick. + * @returns {Object} Returns the new object. + */ +function basePick(object, paths) { + return _basePickBy(object, paths, function(value, path) { + return (0,hasIn/* default */.c)(object, path); + }); +} + +/* harmony default export */ const _basePick = (basePick); + +// EXTERNAL MODULE: ./node_modules/lodash-es/flatten.js +var flatten = __webpack_require__(9552); +// EXTERNAL MODULE: ./node_modules/lodash-es/_overRest.js + 1 modules +var _overRest = __webpack_require__(10648); +// EXTERNAL MODULE: ./node_modules/lodash-es/_setToString.js + 2 modules +var _setToString = __webpack_require__(99669); +;// CONCATENATED MODULE: ./node_modules/lodash-es/_flatRest.js + + + + +/** + * A specialized version of `baseRest` which flattens the rest array. + * + * @private + * @param {Function} func The function to apply a rest parameter to. + * @returns {Function} Returns the new function. + */ +function flatRest(func) { + return (0,_setToString/* default */.c)((0,_overRest/* default */.c)(func, undefined, flatten/* default */.c), func + ''); +} + +/* harmony default export */ const _flatRest = (flatRest); + +;// CONCATENATED MODULE: ./node_modules/lodash-es/pick.js + + + +/** + * Creates an object composed of the picked `object` properties. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The source object. + * @param {...(string|string[])} [paths] The property paths to pick. + * @returns {Object} Returns the new object. + * @example + * + * var object = { 'a': 1, 'b': '2', 'c': 3 }; + * + * _.pick(object, ['a', 'c']); + * // => { 'a': 1, 'c': 3 } + */ +var pick = _flatRest(function(object, paths) { + return object == null ? {} : _basePick(object, paths); +}); + +/* harmony default export */ const lodash_es_pick = (pick); + + +/***/ }), + +/***/ 52264: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + c: () => (/* binding */ lodash_es_range) +}); + +;// CONCATENATED MODULE: ./node_modules/lodash-es/_baseRange.js +/* Built-in method references for those with the same name as other `lodash` methods. */ +var nativeCeil = Math.ceil, + nativeMax = Math.max; + +/** + * The base implementation of `_.range` and `_.rangeRight` which doesn't + * coerce arguments. + * + * @private + * @param {number} start The start of the range. + * @param {number} end The end of the range. + * @param {number} step The value to increment or decrement by. + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Array} Returns the range of numbers. + */ +function baseRange(start, end, step, fromRight) { + var index = -1, + length = nativeMax(nativeCeil((end - start) / (step || 1)), 0), + result = Array(length); + + while (length--) { + result[fromRight ? length : ++index] = start; + start += step; + } + return result; +} + +/* harmony default export */ const _baseRange = (baseRange); + +// EXTERNAL MODULE: ./node_modules/lodash-es/_isIterateeCall.js +var _isIterateeCall = __webpack_require__(15552); +// EXTERNAL MODULE: ./node_modules/lodash-es/toFinite.js + 3 modules +var toFinite = __webpack_require__(92400); +;// CONCATENATED MODULE: ./node_modules/lodash-es/_createRange.js + + + + +/** + * Creates a `_.range` or `_.rangeRight` function. + * + * @private + * @param {boolean} [fromRight] Specify iterating from right to left. + * @returns {Function} Returns the new range function. + */ +function createRange(fromRight) { + return function(start, end, step) { + if (step && typeof step != 'number' && (0,_isIterateeCall/* default */.c)(start, end, step)) { + end = step = undefined; + } + // Ensure the sign of `-0` is preserved. + start = (0,toFinite/* default */.c)(start); + if (end === undefined) { + end = start; + start = 0; + } else { + end = (0,toFinite/* default */.c)(end); + } + step = step === undefined ? (start < end ? 1 : -1) : (0,toFinite/* default */.c)(step); + return _baseRange(start, end, step, fromRight); + }; +} + +/* harmony default export */ const _createRange = (createRange); + +;// CONCATENATED MODULE: ./node_modules/lodash-es/range.js + + +/** + * Creates an array of numbers (positive and/or negative) progressing from + * `start` up to, but not including, `end`. A step of `-1` is used if a negative + * `start` is specified without an `end` or `step`. If `end` is not specified, + * it's set to `start` with `start` then set to `0`. + * + * **Note:** JavaScript follows the IEEE-754 standard for resolving + * floating-point values which can produce unexpected results. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {number} [start=0] The start of the range. + * @param {number} end The end of the range. + * @param {number} [step=1] The value to increment or decrement by. + * @returns {Array} Returns the range of numbers. + * @see _.inRange, _.rangeRight + * @example + * + * _.range(4); + * // => [0, 1, 2, 3] + * + * _.range(-4); + * // => [0, -1, -2, -3] + * + * _.range(1, 5); + * // => [1, 2, 3, 4] + * + * _.range(0, 20, 5); + * // => [0, 5, 10, 15] + * + * _.range(0, -4, -1); + * // => [0, -1, -2, -3] + * + * _.range(1, 4, 0); + * // => [1, 1, 1] + * + * _.range(0); + * // => [] + */ +var range = _createRange(); + +/* harmony default export */ const lodash_es_range = (range); + + +/***/ }), + +/***/ 90460: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + c: () => (/* binding */ lodash_es_reduce) +}); + +;// CONCATENATED MODULE: ./node_modules/lodash-es/_arrayReduce.js +/** + * A specialized version of `_.reduce` for arrays without support for + * iteratee shorthands. + * + * @private + * @param {Array} [array] The array to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @param {boolean} [initAccum] Specify using the first element of `array` as + * the initial value. + * @returns {*} Returns the accumulated value. + */ +function arrayReduce(array, iteratee, accumulator, initAccum) { + var index = -1, + length = array == null ? 0 : array.length; + + if (initAccum && length) { + accumulator = array[++index]; + } + while (++index < length) { + accumulator = iteratee(accumulator, array[index], index, array); + } + return accumulator; +} + +/* harmony default export */ const _arrayReduce = (arrayReduce); + +// EXTERNAL MODULE: ./node_modules/lodash-es/_baseEach.js + 1 modules +var _baseEach = __webpack_require__(92816); +// EXTERNAL MODULE: ./node_modules/lodash-es/_baseIteratee.js + 16 modules +var _baseIteratee = __webpack_require__(91312); +;// CONCATENATED MODULE: ./node_modules/lodash-es/_baseReduce.js +/** + * The base implementation of `_.reduce` and `_.reduceRight`, without support + * for iteratee shorthands, which iterates over `collection` using `eachFunc`. + * + * @private + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} iteratee The function invoked per iteration. + * @param {*} accumulator The initial value. + * @param {boolean} initAccum Specify using the first or last element of + * `collection` as the initial value. + * @param {Function} eachFunc The function to iterate over `collection`. + * @returns {*} Returns the accumulated value. + */ +function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) { + eachFunc(collection, function(value, index, collection) { + accumulator = initAccum + ? (initAccum = false, value) + : iteratee(accumulator, value, index, collection); + }); + return accumulator; +} + +/* harmony default export */ const _baseReduce = (baseReduce); + +// EXTERNAL MODULE: ./node_modules/lodash-es/isArray.js +var isArray = __webpack_require__(78820); +;// CONCATENATED MODULE: ./node_modules/lodash-es/reduce.js + + + + + + +/** + * Reduces `collection` to a value which is the accumulated result of running + * each element in `collection` thru `iteratee`, where each successive + * invocation is supplied the return value of the previous. If `accumulator` + * is not given, the first element of `collection` is used as the initial + * value. The iteratee is invoked with four arguments: + * (accumulator, value, index|key, collection). + * + * Many lodash methods are guarded to work as iteratees for methods like + * `_.reduce`, `_.reduceRight`, and `_.transform`. + * + * The guarded methods are: + * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`, + * and `sortBy` + * + * @static + * @memberOf _ + * @since 0.1.0 + * @category Collection + * @param {Array|Object} collection The collection to iterate over. + * @param {Function} [iteratee=_.identity] The function invoked per iteration. + * @param {*} [accumulator] The initial value. + * @returns {*} Returns the accumulated value. + * @see _.reduceRight + * @example + * + * _.reduce([1, 2], function(sum, n) { + * return sum + n; + * }, 0); + * // => 3 + * + * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) { + * (result[value] || (result[value] = [])).push(key); + * return result; + * }, {}); + * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed) + */ +function reduce(collection, iteratee, accumulator) { + var func = (0,isArray/* default */.c)(collection) ? _arrayReduce : _baseReduce, + initAccum = arguments.length < 3; + + return func(collection, (0,_baseIteratee/* default */.c)(iteratee, 4), accumulator, initAccum, _baseEach/* default */.c); +} + +/* harmony default export */ const lodash_es_reduce = (reduce); + + +/***/ }), + +/***/ 41716: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ c: () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/** + * This method returns a new empty array. + * + * @static + * @memberOf _ + * @since 4.13.0 + * @category Util + * @returns {Array} Returns the new empty array. + * @example + * + * var arrays = _.times(2, _.stubArray); + * + * console.log(arrays); + * // => [[], []] + * + * console.log(arrays[0] === arrays[1]); + * // => false + */ +function stubArray() { + return []; +} + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (stubArray); + + +/***/ }), + +/***/ 92400: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + c: () => (/* binding */ lodash_es_toFinite) +}); + +;// CONCATENATED MODULE: ./node_modules/lodash-es/_trimmedEndIndex.js +/** Used to match a single whitespace character. */ +var reWhitespace = /\s/; + +/** + * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace + * character of `string`. + * + * @private + * @param {string} string The string to inspect. + * @returns {number} Returns the index of the last non-whitespace character. + */ +function trimmedEndIndex(string) { + var index = string.length; + + while (index-- && reWhitespace.test(string.charAt(index))) {} + return index; +} + +/* harmony default export */ const _trimmedEndIndex = (trimmedEndIndex); + +;// CONCATENATED MODULE: ./node_modules/lodash-es/_baseTrim.js + + +/** Used to match leading whitespace. */ +var reTrimStart = /^\s+/; + +/** + * The base implementation of `_.trim`. + * + * @private + * @param {string} string The string to trim. + * @returns {string} Returns the trimmed string. + */ +function baseTrim(string) { + return string + ? string.slice(0, _trimmedEndIndex(string) + 1).replace(reTrimStart, '') + : string; +} + +/* harmony default export */ const _baseTrim = (baseTrim); + +// EXTERNAL MODULE: ./node_modules/lodash-es/isObject.js +var isObject = __webpack_require__(5368); +// EXTERNAL MODULE: ./node_modules/lodash-es/isSymbol.js +var isSymbol = __webpack_require__(46380); +;// CONCATENATED MODULE: ./node_modules/lodash-es/toNumber.js + + + + +/** Used as references for various `Number` constants. */ +var NAN = 0 / 0; + +/** Used to detect bad signed hexadecimal string values. */ +var reIsBadHex = /^[-+]0x[0-9a-f]+$/i; + +/** Used to detect binary string values. */ +var reIsBinary = /^0b[01]+$/i; + +/** Used to detect octal string values. */ +var reIsOctal = /^0o[0-7]+$/i; + +/** Built-in method references without a dependency on `root`. */ +var freeParseInt = parseInt; + +/** + * Converts `value` to a number. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to process. + * @returns {number} Returns the number. + * @example + * + * _.toNumber(3.2); + * // => 3.2 + * + * _.toNumber(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toNumber(Infinity); + * // => Infinity + * + * _.toNumber('3.2'); + * // => 3.2 + */ +function toNumber(value) { + if (typeof value == 'number') { + return value; + } + if ((0,isSymbol/* default */.c)(value)) { + return NAN; + } + if ((0,isObject/* default */.c)(value)) { + var other = typeof value.valueOf == 'function' ? value.valueOf() : value; + value = (0,isObject/* default */.c)(other) ? (other + '') : other; + } + if (typeof value != 'string') { + return value === 0 ? value : +value; + } + value = _baseTrim(value); + var isBinary = reIsBinary.test(value); + return (isBinary || reIsOctal.test(value)) + ? freeParseInt(value.slice(2), isBinary ? 2 : 8) + : (reIsBadHex.test(value) ? NAN : +value); +} + +/* harmony default export */ const lodash_es_toNumber = (toNumber); + +;// CONCATENATED MODULE: ./node_modules/lodash-es/toFinite.js + + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0, + MAX_INTEGER = 1.7976931348623157e+308; + +/** + * Converts `value` to a finite number. + * + * @static + * @memberOf _ + * @since 4.12.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {number} Returns the converted number. + * @example + * + * _.toFinite(3.2); + * // => 3.2 + * + * _.toFinite(Number.MIN_VALUE); + * // => 5e-324 + * + * _.toFinite(Infinity); + * // => 1.7976931348623157e+308 + * + * _.toFinite('3.2'); + * // => 3.2 + */ +function toFinite(value) { + if (!value) { + return value === 0 ? value : 0; + } + value = lodash_es_toNumber(value); + if (value === INFINITY || value === -INFINITY) { + var sign = (value < 0 ? -1 : 1); + return sign * MAX_INTEGER; + } + return value === value ? value : 0; +} + +/* harmony default export */ const lodash_es_toFinite = (toFinite); + + +/***/ }), + +/***/ 90400: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + c: () => (/* binding */ lodash_es_toString) +}); + +// EXTERNAL MODULE: ./node_modules/lodash-es/_Symbol.js +var _Symbol = __webpack_require__(24048); +// EXTERNAL MODULE: ./node_modules/lodash-es/_arrayMap.js +var _arrayMap = __webpack_require__(1304); +// EXTERNAL MODULE: ./node_modules/lodash-es/isArray.js +var isArray = __webpack_require__(78820); +// EXTERNAL MODULE: ./node_modules/lodash-es/isSymbol.js +var isSymbol = __webpack_require__(46380); +;// CONCATENATED MODULE: ./node_modules/lodash-es/_baseToString.js + + + + + +/** Used as references for various `Number` constants. */ +var INFINITY = 1 / 0; + +/** Used to convert symbols to primitives and strings. */ +var symbolProto = _Symbol/* default */.c ? _Symbol/* default */.c.prototype : undefined, + symbolToString = symbolProto ? symbolProto.toString : undefined; + +/** + * The base implementation of `_.toString` which doesn't convert nullish + * values to empty strings. + * + * @private + * @param {*} value The value to process. + * @returns {string} Returns the string. + */ +function baseToString(value) { + // Exit early for strings to avoid a performance hit in some environments. + if (typeof value == 'string') { + return value; + } + if ((0,isArray/* default */.c)(value)) { + // Recursively convert values (susceptible to call stack limits). + return (0,_arrayMap/* default */.c)(value, baseToString) + ''; + } + if ((0,isSymbol/* default */.c)(value)) { + return symbolToString ? symbolToString.call(value) : ''; + } + var result = (value + ''); + return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result; +} + +/* harmony default export */ const _baseToString = (baseToString); + +;// CONCATENATED MODULE: ./node_modules/lodash-es/toString.js + + +/** + * Converts `value` to a string. An empty string is returned for `null` + * and `undefined` values. The sign of `-0` is preserved. + * + * @static + * @memberOf _ + * @since 4.0.0 + * @category Lang + * @param {*} value The value to convert. + * @returns {string} Returns the converted string. + * @example + * + * _.toString(null); + * // => '' + * + * _.toString(-0); + * // => '-0' + * + * _.toString([1, 2, 3]); + * // => '1,2,3' + */ +function toString_toString(value) { + return value == null ? '' : _baseToString(value); +} + +/* harmony default export */ const lodash_es_toString = (toString_toString); + + +/***/ }), + +/***/ 41696: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ c: () => (__WEBPACK_DEFAULT_EXPORT__) +/* harmony export */ }); +/* harmony import */ var _toString_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(90400); + + +/** Used to generate unique IDs. */ +var idCounter = 0; + +/** + * Generates a unique ID. If `prefix` is given, the ID is appended to it. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Util + * @param {string} [prefix=''] The value to prefix the ID with. + * @returns {string} Returns the unique ID. + * @example + * + * _.uniqueId('contact_'); + * // => 'contact_104' + * + * _.uniqueId(); + * // => '105' + */ +function uniqueId(prefix) { + var id = ++idCounter; + return (0,_toString_js__WEBPACK_IMPORTED_MODULE_0__/* ["default"] */ .c)(prefix) + id; +} + +/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (uniqueId); + + +/***/ }), + +/***/ 36: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + + +// EXPORTS +__webpack_require__.d(__webpack_exports__, { + c: () => (/* binding */ lodash_es_values) +}); + +// EXTERNAL MODULE: ./node_modules/lodash-es/_arrayMap.js +var _arrayMap = __webpack_require__(1304); +;// CONCATENATED MODULE: ./node_modules/lodash-es/_baseValues.js + + +/** + * The base implementation of `_.values` and `_.valuesIn` which creates an + * array of `object` property values corresponding to the property names + * of `props`. + * + * @private + * @param {Object} object The object to query. + * @param {Array} props The property names to get values for. + * @returns {Object} Returns the array of property values. + */ +function baseValues(object, props) { + return (0,_arrayMap/* default */.c)(props, function(key) { + return object[key]; + }); +} + +/* harmony default export */ const _baseValues = (baseValues); + +// EXTERNAL MODULE: ./node_modules/lodash-es/keys.js +var keys = __webpack_require__(62420); +;// CONCATENATED MODULE: ./node_modules/lodash-es/values.js + + + +/** + * Creates an array of the own enumerable string keyed property values of `object`. + * + * **Note:** Non-object values are coerced to objects. + * + * @static + * @since 0.1.0 + * @memberOf _ + * @category Object + * @param {Object} object The object to query. + * @returns {Array} Returns the array of property values. + * @example + * + * function Foo() { + * this.a = 1; + * this.b = 2; + * } + * + * Foo.prototype.c = 3; + * + * _.values(new Foo); + * // => [1, 2] (iteration order is not guaranteed) + * + * _.values('hi'); + * // => ['h', 'i'] + */ +function values(object) { + return object == null ? [] : _baseValues(object, (0,keys/* default */.c)(object)); +} + +/* harmony default export */ const lodash_es_values = (values); + + +/***/ }), + +/***/ 79100: +/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => { + +/* harmony export */ __webpack_require__.d(__webpack_exports__, { +/* harmony export */ diagram: () => (/* binding */ diagram) +/* harmony export */ }); +/* harmony import */ var _mermaid_0603ccf8_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(37160); +/* harmony import */ var d3__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(37352); +/* harmony import */ var dagre_d3_es_src_dagre_index_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(32304); +/* harmony import */ var dagre_d3_es_src_graphlib_index_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(95536); +/* harmony import */ var dayjs__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(62264); +/* harmony import */ var _braintree_sanitize_url__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(86208); +/* harmony import */ var dompurify__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(57776); + + + + + + + + + + + + + +var parser = function() { + var o = function(k, v, o2, l) { + for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v) + ; + return o2; + }, $V0 = [1, 3], $V1 = [1, 4], $V2 = [1, 5], $V3 = [1, 6], $V4 = [5, 6, 8, 9, 11, 13, 31, 32, 33, 34, 35, 36, 44, 62, 63], $V5 = [1, 18], $V6 = [2, 7], $V7 = [1, 22], $V8 = [1, 23], $V9 = [1, 24], $Va = [1, 25], $Vb = [1, 26], $Vc = [1, 27], $Vd = [1, 20], $Ve = [1, 28], $Vf = [1, 29], $Vg = [62, 63], $Vh = [5, 8, 9, 11, 13, 31, 32, 33, 34, 35, 36, 44, 51, 53, 62, 63], $Vi = [1, 47], $Vj = [1, 48], $Vk = [1, 49], $Vl = [1, 50], $Vm = [1, 51], $Vn = [1, 52], $Vo = [1, 53], $Vp = [53, 54], $Vq = [1, 64], $Vr = [1, 60], $Vs = [1, 61], $Vt = [1, 62], $Vu = [1, 63], $Vv = [1, 65], $Vw = [1, 69], $Vx = [1, 70], $Vy = [1, 67], $Vz = [1, 68], $VA = [5, 8, 9, 11, 13, 31, 32, 33, 34, 35, 36, 44, 62, 63]; + var parser2 = { + trace: function trace() { + }, + yy: {}, + symbols_: { "error": 2, "start": 3, "directive": 4, "NEWLINE": 5, "RD": 6, "diagram": 7, "EOF": 8, "acc_title": 9, "acc_title_value": 10, "acc_descr": 11, "acc_descr_value": 12, "acc_descr_multiline_value": 13, "requirementDef": 14, "elementDef": 15, "relationshipDef": 16, "requirementType": 17, "requirementName": 18, "STRUCT_START": 19, "requirementBody": 20, "ID": 21, "COLONSEP": 22, "id": 23, "TEXT": 24, "text": 25, "RISK": 26, "riskLevel": 27, "VERIFYMTHD": 28, "verifyType": 29, "STRUCT_STOP": 30, "REQUIREMENT": 31, "FUNCTIONAL_REQUIREMENT": 32, "INTERFACE_REQUIREMENT": 33, "PERFORMANCE_REQUIREMENT": 34, "PHYSICAL_REQUIREMENT": 35, "DESIGN_CONSTRAINT": 36, "LOW_RISK": 37, "MED_RISK": 38, "HIGH_RISK": 39, "VERIFY_ANALYSIS": 40, "VERIFY_DEMONSTRATION": 41, "VERIFY_INSPECTION": 42, "VERIFY_TEST": 43, "ELEMENT": 44, "elementName": 45, "elementBody": 46, "TYPE": 47, "type": 48, "DOCREF": 49, "ref": 50, "END_ARROW_L": 51, "relationship": 52, "LINE": 53, "END_ARROW_R": 54, "CONTAINS": 55, "COPIES": 56, "DERIVES": 57, "SATISFIES": 58, "VERIFIES": 59, "REFINES": 60, "TRACES": 61, "unqString": 62, "qString": 63, "$accept": 0, "$end": 1 }, + terminals_: { 2: "error", 5: "NEWLINE", 6: "RD", 8: "EOF", 9: "acc_title", 10: "acc_title_value", 11: "acc_descr", 12: "acc_descr_value", 13: "acc_descr_multiline_value", 19: "STRUCT_START", 21: "ID", 22: "COLONSEP", 24: "TEXT", 26: "RISK", 28: "VERIFYMTHD", 30: "STRUCT_STOP", 31: "REQUIREMENT", 32: "FUNCTIONAL_REQUIREMENT", 33: "INTERFACE_REQUIREMENT", 34: "PERFORMANCE_REQUIREMENT", 35: "PHYSICAL_REQUIREMENT", 36: "DESIGN_CONSTRAINT", 37: "LOW_RISK", 38: "MED_RISK", 39: "HIGH_RISK", 40: "VERIFY_ANALYSIS", 41: "VERIFY_DEMONSTRATION", 42: "VERIFY_INSPECTION", 43: "VERIFY_TEST", 44: "ELEMENT", 47: "TYPE", 49: "DOCREF", 51: "END_ARROW_L", 53: "LINE", 54: "END_ARROW_R", 55: "CONTAINS", 56: "COPIES", 57: "DERIVES", 58: "SATISFIES", 59: "VERIFIES", 60: "REFINES", 61: "TRACES", 62: "unqString", 63: "qString" }, + productions_: [0, [3, 3], [3, 2], [3, 4], [4, 2], [4, 2], [4, 1], [7, 0], [7, 2], [7, 2], [7, 2], [7, 2], [7, 2], [14, 5], [20, 5], [20, 5], [20, 5], [20, 5], [20, 2], [20, 1], [17, 1], [17, 1], [17, 1], [17, 1], [17, 1], [17, 1], [27, 1], [27, 1], [27, 1], [29, 1], [29, 1], [29, 1], [29, 1], [15, 5], [46, 5], [46, 5], [46, 2], [46, 1], [16, 5], [16, 5], [52, 1], [52, 1], [52, 1], [52, 1], [52, 1], [52, 1], [52, 1], [18, 1], [18, 1], [23, 1], [23, 1], [25, 1], [25, 1], [45, 1], [45, 1], [48, 1], [48, 1], [50, 1], [50, 1]], + performAction: function anonymous(yytext, yyleng, yylineno, yy, yystate, $$, _$) { + var $0 = $$.length - 1; + switch (yystate) { + case 4: + this.$ = $$[$0].trim(); + yy.setAccTitle(this.$); + break; + case 5: + case 6: + this.$ = $$[$0].trim(); + yy.setAccDescription(this.$); + break; + case 7: + this.$ = []; + break; + case 13: + yy.addRequirement($$[$0 - 3], $$[$0 - 4]); + break; + case 14: + yy.setNewReqId($$[$0 - 2]); + break; + case 15: + yy.setNewReqText($$[$0 - 2]); + break; + case 16: + yy.setNewReqRisk($$[$0 - 2]); + break; + case 17: + yy.setNewReqVerifyMethod($$[$0 - 2]); + break; + case 20: + this.$ = yy.RequirementType.REQUIREMENT; + break; + case 21: + this.$ = yy.RequirementType.FUNCTIONAL_REQUIREMENT; + break; + case 22: + this.$ = yy.RequirementType.INTERFACE_REQUIREMENT; + break; + case 23: + this.$ = yy.RequirementType.PERFORMANCE_REQUIREMENT; + break; + case 24: + this.$ = yy.RequirementType.PHYSICAL_REQUIREMENT; + break; + case 25: + this.$ = yy.RequirementType.DESIGN_CONSTRAINT; + break; + case 26: + this.$ = yy.RiskLevel.LOW_RISK; + break; + case 27: + this.$ = yy.RiskLevel.MED_RISK; + break; + case 28: + this.$ = yy.RiskLevel.HIGH_RISK; + break; + case 29: + this.$ = yy.VerifyType.VERIFY_ANALYSIS; + break; + case 30: + this.$ = yy.VerifyType.VERIFY_DEMONSTRATION; + break; + case 31: + this.$ = yy.VerifyType.VERIFY_INSPECTION; + break; + case 32: + this.$ = yy.VerifyType.VERIFY_TEST; + break; + case 33: + yy.addElement($$[$0 - 3]); + break; + case 34: + yy.setNewElementType($$[$0 - 2]); + break; + case 35: + yy.setNewElementDocRef($$[$0 - 2]); + break; + case 38: + yy.addRelationship($$[$0 - 2], $$[$0], $$[$0 - 4]); + break; + case 39: + yy.addRelationship($$[$0 - 2], $$[$0 - 4], $$[$0]); + break; + case 40: + this.$ = yy.Relationships.CONTAINS; + break; + case 41: + this.$ = yy.Relationships.COPIES; + break; + case 42: + this.$ = yy.Relationships.DERIVES; + break; + case 43: + this.$ = yy.Relationships.SATISFIES; + break; + case 44: + this.$ = yy.Relationships.VERIFIES; + break; + case 45: + this.$ = yy.Relationships.REFINES; + break; + case 46: + this.$ = yy.Relationships.TRACES; + break; + } + }, + table: [{ 3: 1, 4: 2, 6: $V0, 9: $V1, 11: $V2, 13: $V3 }, { 1: [3] }, { 3: 8, 4: 2, 5: [1, 7], 6: $V0, 9: $V1, 11: $V2, 13: $V3 }, { 5: [1, 9] }, { 10: [1, 10] }, { 12: [1, 11] }, o($V4, [2, 6]), { 3: 12, 4: 2, 6: $V0, 9: $V1, 11: $V2, 13: $V3 }, { 1: [2, 2] }, { 4: 17, 5: $V5, 7: 13, 8: $V6, 9: $V1, 11: $V2, 13: $V3, 14: 14, 15: 15, 16: 16, 17: 19, 23: 21, 31: $V7, 32: $V8, 33: $V9, 34: $Va, 35: $Vb, 36: $Vc, 44: $Vd, 62: $Ve, 63: $Vf }, o($V4, [2, 4]), o($V4, [2, 5]), { 1: [2, 1] }, { 8: [1, 30] }, { 4: 17, 5: $V5, 7: 31, 8: $V6, 9: $V1, 11: $V2, 13: $V3, 14: 14, 15: 15, 16: 16, 17: 19, 23: 21, 31: $V7, 32: $V8, 33: $V9, 34: $Va, 35: $Vb, 36: $Vc, 44: $Vd, 62: $Ve, 63: $Vf }, { 4: 17, 5: $V5, 7: 32, 8: $V6, 9: $V1, 11: $V2, 13: $V3, 14: 14, 15: 15, 16: 16, 17: 19, 23: 21, 31: $V7, 32: $V8, 33: $V9, 34: $Va, 35: $Vb, 36: $Vc, 44: $Vd, 62: $Ve, 63: $Vf }, { 4: 17, 5: $V5, 7: 33, 8: $V6, 9: $V1, 11: $V2, 13: $V3, 14: 14, 15: 15, 16: 16, 17: 19, 23: 21, 31: $V7, 32: $V8, 33: $V9, 34: $Va, 35: $Vb, 36: $Vc, 44: $Vd, 62: $Ve, 63: $Vf }, { 4: 17, 5: $V5, 7: 34, 8: $V6, 9: $V1, 11: $V2, 13: $V3, 14: 14, 15: 15, 16: 16, 17: 19, 23: 21, 31: $V7, 32: $V8, 33: $V9, 34: $Va, 35: $Vb, 36: $Vc, 44: $Vd, 62: $Ve, 63: $Vf }, { 4: 17, 5: $V5, 7: 35, 8: $V6, 9: $V1, 11: $V2, 13: $V3, 14: 14, 15: 15, 16: 16, 17: 19, 23: 21, 31: $V7, 32: $V8, 33: $V9, 34: $Va, 35: $Vb, 36: $Vc, 44: $Vd, 62: $Ve, 63: $Vf }, { 18: 36, 62: [1, 37], 63: [1, 38] }, { 45: 39, 62: [1, 40], 63: [1, 41] }, { 51: [1, 42], 53: [1, 43] }, o($Vg, [2, 20]), o($Vg, [2, 21]), o($Vg, [2, 22]), o($Vg, [2, 23]), o($Vg, [2, 24]), o($Vg, [2, 25]), o($Vh, [2, 49]), o($Vh, [2, 50]), { 1: [2, 3] }, { 8: [2, 8] }, { 8: [2, 9] }, { 8: [2, 10] }, { 8: [2, 11] }, { 8: [2, 12] }, { 19: [1, 44] }, { 19: [2, 47] }, { 19: [2, 48] }, { 19: [1, 45] }, { 19: [2, 53] }, { 19: [2, 54] }, { 52: 46, 55: $Vi, 56: $Vj, 57: $Vk, 58: $Vl, 59: $Vm, 60: $Vn, 61: $Vo }, { 52: 54, 55: $Vi, 56: $Vj, 57: $Vk, 58: $Vl, 59: $Vm, 60: $Vn, 61: $Vo }, { 5: [1, 55] }, { 5: [1, 56] }, { 53: [1, 57] }, o($Vp, [2, 40]), o($Vp, [2, 41]), o($Vp, [2, 42]), o($Vp, [2, 43]), o($Vp, [2, 44]), o($Vp, [2, 45]), o($Vp, [2, 46]), { 54: [1, 58] }, { 5: $Vq, 20: 59, 21: $Vr, 24: $Vs, 26: $Vt, 28: $Vu, 30: $Vv }, { 5: $Vw, 30: $Vx, 46: 66, 47: $Vy, 49: $Vz }, { 23: 71, 62: $Ve, 63: $Vf }, { 23: 72, 62: $Ve, 63: $Vf }, o($VA, [2, 13]), { 22: [1, 73] }, { 22: [1, 74] }, { 22: [1, 75] }, { 22: [1, 76] }, { 5: $Vq, 20: 77, 21: $Vr, 24: $Vs, 26: $Vt, 28: $Vu, 30: $Vv }, o($VA, [2, 19]), o($VA, [2, 33]), { 22: [1, 78] }, { 22: [1, 79] }, { 5: $Vw, 30: $Vx, 46: 80, 47: $Vy, 49: $Vz }, o($VA, [2, 37]), o($VA, [2, 38]), o($VA, [2, 39]), { 23: 81, 62: $Ve, 63: $Vf }, { 25: 82, 62: [1, 83], 63: [1, 84] }, { 27: 85, 37: [1, 86], 38: [1, 87], 39: [1, 88] }, { 29: 89, 40: [1, 90], 41: [1, 91], 42: [1, 92], 43: [1, 93] }, o($VA, [2, 18]), { 48: 94, 62: [1, 95], 63: [1, 96] }, { 50: 97, 62: [1, 98], 63: [1, 99] }, o($VA, [2, 36]), { 5: [1, 100] }, { 5: [1, 101] }, { 5: [2, 51] }, { 5: [2, 52] }, { 5: [1, 102] }, { 5: [2, 26] }, { 5: [2, 27] }, { 5: [2, 28] }, { 5: [1, 103] }, { 5: [2, 29] }, { 5: [2, 30] }, { 5: [2, 31] }, { 5: [2, 32] }, { 5: [1, 104] }, { 5: [2, 55] }, { 5: [2, 56] }, { 5: [1, 105] }, { 5: [2, 57] }, { 5: [2, 58] }, { 5: $Vq, 20: 106, 21: $Vr, 24: $Vs, 26: $Vt, 28: $Vu, 30: $Vv }, { 5: $Vq, 20: 107, 21: $Vr, 24: $Vs, 26: $Vt, 28: $Vu, 30: $Vv }, { 5: $Vq, 20: 108, 21: $Vr, 24: $Vs, 26: $Vt, 28: $Vu, 30: $Vv }, { 5: $Vq, 20: 109, 21: $Vr, 24: $Vs, 26: $Vt, 28: $Vu, 30: $Vv }, { 5: $Vw, 30: $Vx, 46: 110, 47: $Vy, 49: $Vz }, { 5: $Vw, 30: $Vx, 46: 111, 47: $Vy, 49: $Vz }, o($VA, [2, 14]), o($VA, [2, 15]), o($VA, [2, 16]), o($VA, [2, 17]), o($VA, [2, 34]), o($VA, [2, 35])], + defaultActions: { 8: [2, 2], 12: [2, 1], 30: [2, 3], 31: [2, 8], 32: [2, 9], 33: [2, 10], 34: [2, 11], 35: [2, 12], 37: [2, 47], 38: [2, 48], 40: [2, 53], 41: [2, 54], 83: [2, 51], 84: [2, 52], 86: [2, 26], 87: [2, 27], 88: [2, 28], 90: [2, 29], 91: [2, 30], 92: [2, 31], 93: [2, 32], 95: [2, 55], 96: [2, 56], 98: [2, 57], 99: [2, 58] }, + parseError: function parseError(str, hash) { + if (hash.recoverable) { + this.trace(str); + } else { + var error = new Error(str); + error.hash = hash; + throw error; + } + }, + parse: function parse(input) { + var self = this, stack = [0], tstack = [], vstack = [null], lstack = [], table = this.table, yytext = "", yylineno = 0, yyleng = 0, TERROR = 2, EOF = 1; + var args = lstack.slice.call(arguments, 1); + var lexer2 = Object.create(this.lexer); + var sharedState = { yy: {} }; + for (var k in this.yy) { + if (Object.prototype.hasOwnProperty.call(this.yy, k)) { + sharedState.yy[k] = this.yy[k]; + } + } + lexer2.setInput(input, sharedState.yy); + sharedState.yy.lexer = lexer2; + sharedState.yy.parser = this; + if (typeof lexer2.yylloc == "undefined") { + lexer2.yylloc = {}; + } + var yyloc = lexer2.yylloc; + lstack.push(yyloc); + var ranges = lexer2.options && lexer2.options.ranges; + if (typeof sharedState.yy.parseError === "function") { + this.parseError = sharedState.yy.parseError; + } else { + this.parseError = Object.getPrototypeOf(this).parseError; + } + function lex() { + var token; + token = tstack.pop() || lexer2.lex() || EOF; + if (typeof token !== "number") { + if (token instanceof Array) { + tstack = token; + token = tstack.pop(); + } + token = self.symbols_[token] || token; + } + return token; + } + var symbol, state, action, r, yyval = {}, p, len, newState, expected; + while (true) { + state = stack[stack.length - 1]; + if (this.defaultActions[state]) { + action = this.defaultActions[state]; + } else { + if (symbol === null || typeof symbol == "undefined") { + symbol = lex(); + } + action = table[state] && table[state][symbol]; + } + if (typeof action === "undefined" || !action.length || !action[0]) { + var errStr = ""; + expected = []; + for (p in table[state]) { + if (this.terminals_[p] && p > TERROR) { + expected.push("'" + this.terminals_[p] + "'"); + } + } + if (lexer2.showPosition) { + errStr = "Parse error on line " + (yylineno + 1) + ":\n" + lexer2.showPosition() + "\nExpecting " + expected.join(", ") + ", got '" + (this.terminals_[symbol] || symbol) + "'"; + } else { + errStr = "Parse error on line " + (yylineno + 1) + ": Unexpected " + (symbol == EOF ? "end of input" : "'" + (this.terminals_[symbol] || symbol) + "'"); + } + this.parseError(errStr, { + text: lexer2.match, + token: this.terminals_[symbol] || symbol, + line: lexer2.yylineno, + loc: yyloc, + expected + }); + } + if (action[0] instanceof Array && action.length > 1) { + throw new Error("Parse Error: multiple actions possible at state: " + state + ", token: " + symbol); + } + switch (action[0]) { + case 1: + stack.push(symbol); + vstack.push(lexer2.yytext); + lstack.push(lexer2.yylloc); + stack.push(action[1]); + symbol = null; + { + yyleng = lexer2.yyleng; + yytext = lexer2.yytext; + yylineno = lexer2.yylineno; + yyloc = lexer2.yylloc; + } + break; + case 2: + len = this.productions_[action[1]][1]; + yyval.$ = vstack[vstack.length - len]; + yyval._$ = { + first_line: lstack[lstack.length - (len || 1)].first_line, + last_line: lstack[lstack.length - 1].last_line, + first_column: lstack[lstack.length - (len || 1)].first_column, + last_column: lstack[lstack.length - 1].last_column + }; + if (ranges) { + yyval._$.range = [ + lstack[lstack.length - (len || 1)].range[0], + lstack[lstack.length - 1].range[1] + ]; + } + r = this.performAction.apply(yyval, [ + yytext, + yyleng, + yylineno, + sharedState.yy, + action[1], + vstack, + lstack + ].concat(args)); + if (typeof r !== "undefined") { + return r; + } + if (len) { + stack = stack.slice(0, -1 * len * 2); + vstack = vstack.slice(0, -1 * len); + lstack = lstack.slice(0, -1 * len); + } + stack.push(this.productions_[action[1]][0]); + vstack.push(yyval.$); + lstack.push(yyval._$); + newState = table[stack[stack.length - 2]][stack[stack.length - 1]]; + stack.push(newState); + break; + case 3: + return true; + } + } + return true; + } + }; + var lexer = function() { + var lexer2 = { + EOF: 1, + parseError: function parseError(str, hash) { + if (this.yy.parser) { + this.yy.parser.parseError(str, hash); + } else { + throw new Error(str); + } + }, + // resets the lexer, sets new input + setInput: function(input, yy) { + this.yy = yy || this.yy || {}; + this._input = input; + this._more = this._backtrack = this.done = false; + this.yylineno = this.yyleng = 0; + this.yytext = this.matched = this.match = ""; + this.conditionStack = ["INITIAL"]; + this.yylloc = { + first_line: 1, + first_column: 0, + last_line: 1, + last_column: 0 + }; + if (this.options.ranges) { + this.yylloc.range = [0, 0]; + } + this.offset = 0; + return this; + }, + // consumes and returns one char from the input + input: function() { + var ch = this._input[0]; + this.yytext += ch; + this.yyleng++; + this.offset++; + this.match += ch; + this.matched += ch; + var lines = ch.match(/(?:\r\n?|\n).*/g); + if (lines) { + this.yylineno++; + this.yylloc.last_line++; + } else { + this.yylloc.last_column++; + } + if (this.options.ranges) { + this.yylloc.range[1]++; + } + this._input = this._input.slice(1); + return ch; + }, + // unshifts one char (or a string) into the input + unput: function(ch) { + var len = ch.length; + var lines = ch.split(/(?:\r\n?|\n)/g); + this._input = ch + this._input; + this.yytext = this.yytext.substr(0, this.yytext.length - len); + this.offset -= len; + var oldLines = this.match.split(/(?:\r\n?|\n)/g); + this.match = this.match.substr(0, this.match.length - 1); + this.matched = this.matched.substr(0, this.matched.length - 1); + if (lines.length - 1) { + this.yylineno -= lines.length - 1; + } + var r = this.yylloc.range; + this.yylloc = { + first_line: this.yylloc.first_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.first_column, + last_column: lines ? (lines.length === oldLines.length ? this.yylloc.first_column : 0) + oldLines[oldLines.length - lines.length].length - lines[0].length : this.yylloc.first_column - len + }; + if (this.options.ranges) { + this.yylloc.range = [r[0], r[0] + this.yyleng - len]; + } + this.yyleng = this.yytext.length; + return this; + }, + // When called from action, caches matched text and appends it on next action + more: function() { + this._more = true; + return this; + }, + // When called from action, signals the lexer that this rule fails to match the input, so the next matching rule (regex) should be tested instead. + reject: function() { + if (this.options.backtrack_lexer) { + this._backtrack = true; + } else { + return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n" + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + } + return this; + }, + // retain first n characters of the match + less: function(n) { + this.unput(this.match.slice(n)); + }, + // displays already matched input, i.e. for error messages + pastInput: function() { + var past = this.matched.substr(0, this.matched.length - this.match.length); + return (past.length > 20 ? "..." : "") + past.substr(-20).replace(/\n/g, ""); + }, + // displays upcoming input, i.e. for error messages + upcomingInput: function() { + var next = this.match; + if (next.length < 20) { + next += this._input.substr(0, 20 - next.length); + } + return (next.substr(0, 20) + (next.length > 20 ? "..." : "")).replace(/\n/g, ""); + }, + // displays the character position where the lexing error occurred, i.e. for error messages + showPosition: function() { + var pre = this.pastInput(); + var c = new Array(pre.length + 1).join("-"); + return pre + this.upcomingInput() + "\n" + c + "^"; + }, + // test the lexed token: return FALSE when not a match, otherwise return token + test_match: function(match, indexed_rule) { + var token, lines, backup; + if (this.options.backtrack_lexer) { + backup = { + yylineno: this.yylineno, + yylloc: { + first_line: this.yylloc.first_line, + last_line: this.last_line, + first_column: this.yylloc.first_column, + last_column: this.yylloc.last_column + }, + yytext: this.yytext, + match: this.match, + matches: this.matches, + matched: this.matched, + yyleng: this.yyleng, + offset: this.offset, + _more: this._more, + _input: this._input, + yy: this.yy, + conditionStack: this.conditionStack.slice(0), + done: this.done + }; + if (this.options.ranges) { + backup.yylloc.range = this.yylloc.range.slice(0); + } + } + lines = match[0].match(/(?:\r\n?|\n).*/g); + if (lines) { + this.yylineno += lines.length; + } + this.yylloc = { + first_line: this.yylloc.last_line, + last_line: this.yylineno + 1, + first_column: this.yylloc.last_column, + last_column: lines ? lines[lines.length - 1].length - lines[lines.length - 1].match(/\r?\n?/)[0].length : this.yylloc.last_column + match[0].length + }; + this.yytext += match[0]; + this.match += match[0]; + this.matches = match; + this.yyleng = this.yytext.length; + if (this.options.ranges) { + this.yylloc.range = [this.offset, this.offset += this.yyleng]; + } + this._more = false; + this._backtrack = false; + this._input = this._input.slice(match[0].length); + this.matched += match[0]; + token = this.performAction.call(this, this.yy, this, indexed_rule, this.conditionStack[this.conditionStack.length - 1]); + if (this.done && this._input) { + this.done = false; + } + if (token) { + return token; + } else if (this._backtrack) { + for (var k in backup) { + this[k] = backup[k]; + } + return false; + } + return false; + }, + // return next match in input + next: function() { + if (this.done) { + return this.EOF; + } + if (!this._input) { + this.done = true; + } + var token, match, tempMatch, index; + if (!this._more) { + this.yytext = ""; + this.match = ""; + } + var rules = this._currentRules(); + for (var i = 0; i < rules.length; i++) { + tempMatch = this._input.match(this.rules[rules[i]]); + if (tempMatch && (!match || tempMatch[0].length > match[0].length)) { + match = tempMatch; + index = i; + if (this.options.backtrack_lexer) { + token = this.test_match(tempMatch, rules[i]); + if (token !== false) { + return token; + } else if (this._backtrack) { + match = false; + continue; + } else { + return false; + } + } else if (!this.options.flex) { + break; + } + } + } + if (match) { + token = this.test_match(match, rules[index]); + if (token !== false) { + return token; + } + return false; + } + if (this._input === "") { + return this.EOF; + } else { + return this.parseError("Lexical error on line " + (this.yylineno + 1) + ". Unrecognized text.\n" + this.showPosition(), { + text: "", + token: null, + line: this.yylineno + }); + } + }, + // return next match that has a token + lex: function lex() { + var r = this.next(); + if (r) { + return r; + } else { + return this.lex(); + } + }, + // activates a new lexer condition state (pushes the new lexer condition state onto the condition stack) + begin: function begin(condition) { + this.conditionStack.push(condition); + }, + // pop the previously active lexer condition state off the condition stack + popState: function popState() { + var n = this.conditionStack.length - 1; + if (n > 0) { + return this.conditionStack.pop(); + } else { + return this.conditionStack[0]; + } + }, + // produce the lexer rule set which is active for the currently active lexer condition state + _currentRules: function _currentRules() { + if (this.conditionStack.length && this.conditionStack[this.conditionStack.length - 1]) { + return this.conditions[this.conditionStack[this.conditionStack.length - 1]].rules; + } else { + return this.conditions["INITIAL"].rules; + } + }, + // return the currently active lexer condition state; when an index argument is provided it produces the N-th previous condition state, if available + topState: function topState(n) { + n = this.conditionStack.length - 1 - Math.abs(n || 0); + if (n >= 0) { + return this.conditionStack[n]; + } else { + return "INITIAL"; + } + }, + // alias for begin(condition) + pushState: function pushState(condition) { + this.begin(condition); + }, + // return the number of states currently on the stack + stateStackSize: function stateStackSize() { + return this.conditionStack.length; + }, + options: { "case-insensitive": true }, + performAction: function anonymous(yy, yy_, $avoiding_name_collisions, YY_START) { + switch ($avoiding_name_collisions) { + case 0: + return "title"; + case 1: + this.begin("acc_title"); + return 9; + case 2: + this.popState(); + return "acc_title_value"; + case 3: + this.begin("acc_descr"); + return 11; + case 4: + this.popState(); + return "acc_descr_value"; + case 5: + this.begin("acc_descr_multiline"); + break; + case 6: + this.popState(); + break; + case 7: + return "acc_descr_multiline_value"; + case 8: + return 5; + case 9: + break; + case 10: + break; + case 11: + break; + case 12: + return 8; + case 13: + return 6; + case 14: + return 19; + case 15: + return 30; + case 16: + return 22; + case 17: + return 21; + case 18: + return 24; + case 19: + return 26; + case 20: + return 28; + case 21: + return 31; + case 22: + return 32; + case 23: + return 33; + case 24: + return 34; + case 25: + return 35; + case 26: + return 36; + case 27: + return 37; + case 28: + return 38; + case 29: + return 39; + case 30: + return 40; + case 31: + return 41; + case 32: + return 42; + case 33: + return 43; + case 34: + return 44; + case 35: + return 55; + case 36: + return 56; + case 37: + return 57; + case 38: + return 58; + case 39: + return 59; + case 40: + return 60; + case 41: + return 61; + case 42: + return 47; + case 43: + return 49; + case 44: + return 51; + case 45: + return 54; + case 46: + return 53; + case 47: + this.begin("string"); + break; + case 48: + this.popState(); + break; + case 49: + return "qString"; + case 50: + yy_.yytext = yy_.yytext.trim(); + return 62; + } + }, + rules: [/^(?:title\s[^#\n;]+)/i, /^(?:accTitle\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*:\s*)/i, /^(?:(?!\n||)*[^\n]*)/i, /^(?:accDescr\s*\{\s*)/i, /^(?:[\}])/i, /^(?:[^\}]*)/i, /^(?:(\r?\n)+)/i, /^(?:\s+)/i, /^(?:#[^\n]*)/i, /^(?:%[^\n]*)/i, /^(?:$)/i, /^(?:requirementDiagram\b)/i, /^(?:\{)/i, /^(?:\})/i, /^(?::)/i, /^(?:id\b)/i, /^(?:text\b)/i, /^(?:risk\b)/i, /^(?:verifyMethod\b)/i, /^(?:requirement\b)/i, /^(?:functionalRequirement\b)/i, /^(?:interfaceRequirement\b)/i, /^(?:performanceRequirement\b)/i, /^(?:physicalRequirement\b)/i, /^(?:designConstraint\b)/i, /^(?:low\b)/i, /^(?:medium\b)/i, /^(?:high\b)/i, /^(?:analysis\b)/i, /^(?:demonstration\b)/i, /^(?:inspection\b)/i, /^(?:test\b)/i, /^(?:element\b)/i, /^(?:contains\b)/i, /^(?:copies\b)/i, /^(?:derives\b)/i, /^(?:satisfies\b)/i, /^(?:verifies\b)/i, /^(?:refines\b)/i, /^(?:traces\b)/i, /^(?:type\b)/i, /^(?:docref\b)/i, /^(?:<-)/i, /^(?:->)/i, /^(?:-)/i, /^(?:["])/i, /^(?:["])/i, /^(?:[^"]*)/i, /^(?:[\w][^\r\n\{\<\>\-\=]*)/i], + conditions: { "acc_descr_multiline": { "rules": [6, 7], "inclusive": false }, "acc_descr": { "rules": [4], "inclusive": false }, "acc_title": { "rules": [2], "inclusive": false }, "unqString": { "rules": [], "inclusive": false }, "token": { "rules": [], "inclusive": false }, "string": { "rules": [48, 49], "inclusive": false }, "INITIAL": { "rules": [0, 1, 3, 5, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 50], "inclusive": true } } + }; + return lexer2; + }(); + parser2.lexer = lexer; + function Parser() { + this.yy = {}; + } + Parser.prototype = parser2; + parser2.Parser = Parser; + return new Parser(); +}(); +parser.parser = parser; +const parser$1 = parser; +let relations = []; +let latestRequirement = {}; +let requirements = {}; +let latestElement = {}; +let elements = {}; +const RequirementType = { + REQUIREMENT: "Requirement", + FUNCTIONAL_REQUIREMENT: "Functional Requirement", + INTERFACE_REQUIREMENT: "Interface Requirement", + PERFORMANCE_REQUIREMENT: "Performance Requirement", + PHYSICAL_REQUIREMENT: "Physical Requirement", + DESIGN_CONSTRAINT: "Design Constraint" +}; +const RiskLevel = { + LOW_RISK: "Low", + MED_RISK: "Medium", + HIGH_RISK: "High" +}; +const VerifyType = { + VERIFY_ANALYSIS: "Analysis", + VERIFY_DEMONSTRATION: "Demonstration", + VERIFY_INSPECTION: "Inspection", + VERIFY_TEST: "Test" +}; +const Relationships = { + CONTAINS: "contains", + COPIES: "copies", + DERIVES: "derives", + SATISFIES: "satisfies", + VERIFIES: "verifies", + REFINES: "refines", + TRACES: "traces" +}; +const addRequirement = (name, type) => { + if (requirements[name] === void 0) { + requirements[name] = { + name, + type, + id: latestRequirement.id, + text: latestRequirement.text, + risk: latestRequirement.risk, + verifyMethod: latestRequirement.verifyMethod + }; + } + latestRequirement = {}; + return requirements[name]; +}; +const getRequirements = () => requirements; +const setNewReqId = (id) => { + if (latestRequirement !== void 0) { + latestRequirement.id = id; + } +}; +const setNewReqText = (text) => { + if (latestRequirement !== void 0) { + latestRequirement.text = text; + } +}; +const setNewReqRisk = (risk) => { + if (latestRequirement !== void 0) { + latestRequirement.risk = risk; + } +}; +const setNewReqVerifyMethod = (verifyMethod) => { + if (latestRequirement !== void 0) { + latestRequirement.verifyMethod = verifyMethod; + } +}; +const addElement = (name) => { + if (elements[name] === void 0) { + elements[name] = { + name, + type: latestElement.type, + docRef: latestElement.docRef + }; + _mermaid_0603ccf8_js__WEBPACK_IMPORTED_MODULE_6__.l.info("Added new requirement: ", name); + } + latestElement = {}; + return elements[name]; +}; +const getElements = () => elements; +const setNewElementType = (type) => { + if (latestElement !== void 0) { + latestElement.type = type; + } +}; +const setNewElementDocRef = (docRef) => { + if (latestElement !== void 0) { + latestElement.docRef = docRef; + } +}; +const addRelationship = (type, src, dst) => { + relations.push({ + type, + src, + dst + }); +}; +const getRelationships = () => relations; +const clear = () => { + relations = []; + latestRequirement = {}; + requirements = {}; + latestElement = {}; + elements = {}; + (0,_mermaid_0603ccf8_js__WEBPACK_IMPORTED_MODULE_6__.t)(); +}; +const db = { + RequirementType, + RiskLevel, + VerifyType, + Relationships, + getConfig: () => (0,_mermaid_0603ccf8_js__WEBPACK_IMPORTED_MODULE_6__.c)().req, + addRequirement, + getRequirements, + setNewReqId, + setNewReqText, + setNewReqRisk, + setNewReqVerifyMethod, + setAccTitle: _mermaid_0603ccf8_js__WEBPACK_IMPORTED_MODULE_6__.s, + getAccTitle: _mermaid_0603ccf8_js__WEBPACK_IMPORTED_MODULE_6__.g, + setAccDescription: _mermaid_0603ccf8_js__WEBPACK_IMPORTED_MODULE_6__.b, + getAccDescription: _mermaid_0603ccf8_js__WEBPACK_IMPORTED_MODULE_6__.a, + addElement, + getElements, + setNewElementType, + setNewElementDocRef, + addRelationship, + getRelationships, + clear +}; +const getStyles = (options) => ` + + marker { + fill: ${options.relationColor}; + stroke: ${options.relationColor}; + } + + marker.cross { + stroke: ${options.lineColor}; + } + + svg { + font-family: ${options.fontFamily}; + font-size: ${options.fontSize}; + } + + .reqBox { + fill: ${options.requirementBackground}; + fill-opacity: 1.0; + stroke: ${options.requirementBorderColor}; + stroke-width: ${options.requirementBorderSize}; + } + + .reqTitle, .reqLabel{ + fill: ${options.requirementTextColor}; + } + .reqLabelBox { + fill: ${options.relationLabelBackground}; + fill-opacity: 1.0; + } + + .req-title-line { + stroke: ${options.requirementBorderColor}; + stroke-width: ${options.requirementBorderSize}; + } + .relationshipLine { + stroke: ${options.relationColor}; + stroke-width: 1; + } + .relationshipLabel { + fill: ${options.relationLabelColor}; + } + +`; +const styles = getStyles; +const ReqMarkers = { + CONTAINS: "contains", + ARROW: "arrow" +}; +const insertLineEndings = (parentNode, conf2) => { + let containsNode = parentNode.append("defs").append("marker").attr("id", ReqMarkers.CONTAINS + "_line_ending").attr("refX", 0).attr("refY", conf2.line_height / 2).attr("markerWidth", conf2.line_height).attr("markerHeight", conf2.line_height).attr("orient", "auto").append("g"); + containsNode.append("circle").attr("cx", conf2.line_height / 2).attr("cy", conf2.line_height / 2).attr("r", conf2.line_height / 2).attr("fill", "none"); + containsNode.append("line").attr("x1", 0).attr("x2", conf2.line_height).attr("y1", conf2.line_height / 2).attr("y2", conf2.line_height / 2).attr("stroke-width", 1); + containsNode.append("line").attr("y1", 0).attr("y2", conf2.line_height).attr("x1", conf2.line_height / 2).attr("x2", conf2.line_height / 2).attr("stroke-width", 1); + parentNode.append("defs").append("marker").attr("id", ReqMarkers.ARROW + "_line_ending").attr("refX", conf2.line_height).attr("refY", 0.5 * conf2.line_height).attr("markerWidth", conf2.line_height).attr("markerHeight", conf2.line_height).attr("orient", "auto").append("path").attr( + "d", + `M0,0 + L${conf2.line_height},${conf2.line_height / 2} + M${conf2.line_height},${conf2.line_height / 2} + L0,${conf2.line_height}` + ).attr("stroke-width", 1); +}; +const markers = { + ReqMarkers, + insertLineEndings +}; +let conf = {}; +let relCnt = 0; +const newRectNode = (parentNode, id) => { + return parentNode.insert("rect", "#" + id).attr("class", "req reqBox").attr("x", 0).attr("y", 0).attr("width", conf.rect_min_width + "px").attr("height", conf.rect_min_height + "px"); +}; +const newTitleNode = (parentNode, id, txts) => { + let x = conf.rect_min_width / 2; + let title = parentNode.append("text").attr("class", "req reqLabel reqTitle").attr("id", id).attr("x", x).attr("y", conf.rect_padding).attr("dominant-baseline", "hanging"); + let i = 0; + txts.forEach((textStr) => { + if (i == 0) { + title.append("tspan").attr("text-anchor", "middle").attr("x", conf.rect_min_width / 2).attr("dy", 0).text(textStr); + } else { + title.append("tspan").attr("text-anchor", "middle").attr("x", conf.rect_min_width / 2).attr("dy", conf.line_height * 0.75).text(textStr); + } + i++; + }); + let yPadding = 1.5 * conf.rect_padding; + let linePadding = i * conf.line_height * 0.75; + let totalY = yPadding + linePadding; + parentNode.append("line").attr("class", "req-title-line").attr("x1", "0").attr("x2", conf.rect_min_width).attr("y1", totalY).attr("y2", totalY); + return { + titleNode: title, + y: totalY + }; +}; +const newBodyNode = (parentNode, id, txts, yStart) => { + let body = parentNode.append("text").attr("class", "req reqLabel").attr("id", id).attr("x", conf.rect_padding).attr("y", yStart).attr("dominant-baseline", "hanging"); + let currentRow = 0; + const charLimit = 30; + let wrappedTxts = []; + txts.forEach((textStr) => { + let currentTextLen = textStr.length; + while (currentTextLen > charLimit && currentRow < 3) { + let firstPart = textStr.substring(0, charLimit); + textStr = textStr.substring(charLimit, textStr.length); + currentTextLen = textStr.length; + wrappedTxts[wrappedTxts.length] = firstPart; + currentRow++; + } + if (currentRow == 3) { + let lastStr = wrappedTxts[wrappedTxts.length - 1]; + wrappedTxts[wrappedTxts.length - 1] = lastStr.substring(0, lastStr.length - 4) + "..."; + } else { + wrappedTxts[wrappedTxts.length] = textStr; + } + currentRow = 0; + }); + wrappedTxts.forEach((textStr) => { + body.append("tspan").attr("x", conf.rect_padding).attr("dy", conf.line_height).text(textStr); + }); + return body; +}; +const addEdgeLabel = (parentNode, svgPath, conf2, txt) => { + const len = svgPath.node().getTotalLength(); + const labelPoint = svgPath.node().getPointAtLength(len * 0.5); + const labelId = "rel" + relCnt; + relCnt++; + const labelNode = parentNode.append("text").attr("class", "req relationshipLabel").attr("id", labelId).attr("x", labelPoint.x).attr("y", labelPoint.y).attr("text-anchor", "middle").attr("dominant-baseline", "middle").text(txt); + const labelBBox = labelNode.node().getBBox(); + parentNode.insert("rect", "#" + labelId).attr("class", "req reqLabelBox").attr("x", labelPoint.x - labelBBox.width / 2).attr("y", labelPoint.y - labelBBox.height / 2).attr("width", labelBBox.width).attr("height", labelBBox.height).attr("fill", "white").attr("fill-opacity", "85%"); +}; +const drawRelationshipFromLayout = function(svg, rel, g, insert, diagObj) { + const edge = g.edge(elementString(rel.src), elementString(rel.dst)); + const lineFunction = (0,d3__WEBPACK_IMPORTED_MODULE_0__/* .line */ .cFK)().x(function(d) { + return d.x; + }).y(function(d) { + return d.y; + }); + const svgPath = svg.insert("path", "#" + insert).attr("class", "er relationshipLine").attr("d", lineFunction(edge.points)).attr("fill", "none"); + if (rel.type == diagObj.db.Relationships.CONTAINS) { + svgPath.attr( + "marker-start", + "url(" + _mermaid_0603ccf8_js__WEBPACK_IMPORTED_MODULE_6__.e.getUrl(conf.arrowMarkerAbsolute) + "#" + rel.type + "_line_ending)" + ); + } else { + svgPath.attr("stroke-dasharray", "10,7"); + svgPath.attr( + "marker-end", + "url(" + _mermaid_0603ccf8_js__WEBPACK_IMPORTED_MODULE_6__.e.getUrl(conf.arrowMarkerAbsolute) + "#" + markers.ReqMarkers.ARROW + "_line_ending)" + ); + } + addEdgeLabel(svg, svgPath, conf, `<<${rel.type}>>`); + return; +}; +const drawReqs = (reqs, graph, svgNode) => { + Object.keys(reqs).forEach((reqName) => { + let req = reqs[reqName]; + reqName = elementString(reqName); + _mermaid_0603ccf8_js__WEBPACK_IMPORTED_MODULE_6__.l.info("Added new requirement: ", reqName); + const groupNode = svgNode.append("g").attr("id", reqName); + const textId = "req-" + reqName; + const rectNode = newRectNode(groupNode, textId); + let titleNodeInfo = newTitleNode(groupNode, reqName + "_title", [ + `<<${req.type}>>`, + `${req.name}` + ]); + newBodyNode( + groupNode, + reqName + "_body", + [ + `Id: ${req.id}`, + `Text: ${req.text}`, + `Risk: ${req.risk}`, + `Verification: ${req.verifyMethod}` + ], + titleNodeInfo.y + ); + const rectBBox = rectNode.node().getBBox(); + graph.setNode(reqName, { + width: rectBBox.width, + height: rectBBox.height, + shape: "rect", + id: reqName + }); + }); +}; +const drawElements = (els, graph, svgNode) => { + Object.keys(els).forEach((elName) => { + let el = els[elName]; + const id = elementString(elName); + const groupNode = svgNode.append("g").attr("id", id); + const textId = "element-" + id; + const rectNode = newRectNode(groupNode, textId); + let titleNodeInfo = newTitleNode(groupNode, textId + "_title", [`<>`, `${elName}`]); + newBodyNode( + groupNode, + textId + "_body", + [`Type: ${el.type || "Not Specified"}`, `Doc Ref: ${el.docRef || "None"}`], + titleNodeInfo.y + ); + const rectBBox = rectNode.node().getBBox(); + graph.setNode(id, { + width: rectBBox.width, + height: rectBBox.height, + shape: "rect", + id + }); + }); +}; +const addRelationships = (relationships, g) => { + relationships.forEach(function(r) { + let src = elementString(r.src); + let dst = elementString(r.dst); + g.setEdge(src, dst, { relationship: r }); + }); + return relationships; +}; +const adjustEntities = function(svgNode, graph) { + graph.nodes().forEach(function(v) { + if (v !== void 0 && graph.node(v) !== void 0) { + svgNode.select("#" + v); + svgNode.select("#" + v).attr( + "transform", + "translate(" + (graph.node(v).x - graph.node(v).width / 2) + "," + (graph.node(v).y - graph.node(v).height / 2) + " )" + ); + } + }); + return; +}; +const elementString = (str) => { + return str.replace(/\s/g, "").replace(/\./g, "_"); +}; +const draw = (text, id, _version, diagObj) => { + conf = (0,_mermaid_0603ccf8_js__WEBPACK_IMPORTED_MODULE_6__.c)().requirement; + const securityLevel = conf.securityLevel; + let sandboxElement; + if (securityLevel === "sandbox") { + sandboxElement = (0,d3__WEBPACK_IMPORTED_MODULE_0__/* .select */ .MlD)("#i" + id); + } + const root = securityLevel === "sandbox" ? (0,d3__WEBPACK_IMPORTED_MODULE_0__/* .select */ .MlD)(sandboxElement.nodes()[0].contentDocument.body) : (0,d3__WEBPACK_IMPORTED_MODULE_0__/* .select */ .MlD)("body"); + const svg = root.select(`[id='${id}']`); + markers.insertLineEndings(svg, conf); + const g = new dagre_d3_es_src_graphlib_index_js__WEBPACK_IMPORTED_MODULE_2__/* .Graph */ .M({ + multigraph: false, + compound: false, + directed: true + }).setGraph({ + rankdir: conf.layoutDirection, + marginx: 20, + marginy: 20, + nodesep: 100, + edgesep: 100, + ranksep: 100 + }).setDefaultEdgeLabel(function() { + return {}; + }); + let requirements2 = diagObj.db.getRequirements(); + let elements2 = diagObj.db.getElements(); + let relationships = diagObj.db.getRelationships(); + drawReqs(requirements2, g, svg); + drawElements(elements2, g, svg); + addRelationships(relationships, g); + (0,dagre_d3_es_src_dagre_index_js__WEBPACK_IMPORTED_MODULE_1__/* .layout */ .cn)(g); + adjustEntities(svg, g); + relationships.forEach(function(rel) { + drawRelationshipFromLayout(svg, rel, g, id, diagObj); + }); + const padding = conf.rect_padding; + const svgBounds = svg.node().getBBox(); + const width = svgBounds.width + padding * 2; + const height = svgBounds.height + padding * 2; + (0,_mermaid_0603ccf8_js__WEBPACK_IMPORTED_MODULE_6__.i)(svg, height, width, conf.useMaxWidth); + svg.attr("viewBox", `${svgBounds.x - padding} ${svgBounds.y - padding} ${width} ${height}`); +}; +const renderer = { + draw +}; +const diagram = { + parser: parser$1, + db, + renderer, + styles +}; + + + +/***/ }) + +}; +; \ No newline at end of file diff --git a/assets/js/101ac4ba.aa0e7e92.js b/assets/js/101ac4ba.aa0e7e92.js new file mode 100644 index 00000000..3ef980f1 --- /dev/null +++ b/assets/js/101ac4ba.aa0e7e92.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkbeacon_docs=self.webpackChunkbeacon_docs||[]).push([[8596],{85804:(e,t,i)=>{i.r(t),i.d(t,{assets:()=>o,contentTitle:()=>r,default:()=>u,frontMatter:()=>a,metadata:()=>l,toc:()=>c});var s=i(17624),n=i(4552);const a={title:"Security Audits",slug:"/security-audits"},r=void 0,l={id:"introduction/security-audit",title:"Security Audits",description:"Beacon SDK has and will be regularly audited by third parties, their reports will be made publicly available.",source:"@site/docs/introduction/security-audit.mdx",sourceDirName:"introduction",slug:"/security-audits",permalink:"/security-audits",draft:!1,unlisted:!1,editUrl:"https://github.com/airgap-it/beacon-docs/edit/main/src/docs/introduction/security-audit.mdx",tags:[],version:"current",frontMatter:{title:"Security Audits",slug:"/security-audits"},sidebar:"docs",previous:{title:"dApps",permalink:"/dapps"},next:{title:"Installation",permalink:"/getting-started/installation"}},o={},c=[{value:"17.09.20 - Beacon SDK Audit by Least Authority",id:"170920---beacon-sdk-audit-by-least-authority",level:2},{value:"Disclosing Security Vulnerabilities",id:"disclosing-security-vulnerabilities",level:2}];function d(e){const t={a:"a",h2:"h2",li:"li",p:"p",ul:"ul",...(0,n.M)(),...e.components};return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(t.p,{children:"Beacon SDK has and will be regularly audited by third parties, their reports will be made publicly available."}),"\n",(0,s.jsx)(t.h2,{id:"170920---beacon-sdk-audit-by-least-authority",children:"17.09.20 - Beacon SDK Audit by Least Authority"}),"\n",(0,s.jsx)(t.p,{children:"In collaboration with the AirGap team, Least Authority conducted an audit of the tzip-10 Typescript implementation Beacon SDK. In total 5 issues have been identified by Least Authority. 3 of these have been resolved, 1 has been partially addressed and 1 was consciously not resolved."}),"\n",(0,s.jsxs)(t.ul,{children:["\n",(0,s.jsx)(t.li,{children:(0,s.jsx)(t.a,{href:"https://medium.com/airgap-it/beacon-sdk-audited-by-least-authority-fa12f83e91e0",children:"Blogpost - Beacon SDK Audit"})}),"\n",(0,s.jsxs)(t.li,{children:["\n",(0,s.jsx)("a",{target:"_blank",href:i(35240).c,children:(0,s.jsx)(t.p,{children:"Report - Beacon SDK Audit Report"})}),"\n"]}),"\n"]}),"\n",(0,s.jsx)(t.h2,{id:"disclosing-security-vulnerabilities",children:"Disclosing Security Vulnerabilities"}),"\n",(0,s.jsxs)(t.p,{children:["If you discover a security vulnerability within this library, please send an e-mail to ",(0,s.jsx)(t.a,{href:"mailto:hi@airgap.it",children:"hi@airgap.it"}),". All security vulnerabilities will be promptly addressed."]})]})}function u(e={}){const{wrapper:t}={...(0,n.M)(),...e.components};return t?(0,s.jsx)(t,{...e,children:(0,s.jsx)(d,{...e})}):d(e)}},35240:(e,t,i)=>{i.d(t,{c:()=>s});const s=i.p+"assets/files/LeastAuthorityReport-1a9f7b44c55b9cb77ba2c8f4bc4f2654.pdf"},4552:(e,t,i)=>{i.d(t,{I:()=>l,M:()=>r});var s=i(11504);const n={},a=s.createContext(n);function r(e){const t=s.useContext(a);return s.useMemo((function(){return"function"==typeof e?e(t):{...t,...e}}),[t,e])}function l(e){let t;return t=e.disableParentContext?"function"==typeof e.components?e.components(n):e.components||n:r(e.components),s.createElement(a.Provider,{value:t},e.children)}}}]); \ No newline at end of file diff --git a/assets/js/1180.e861f86b.js b/assets/js/1180.e861f86b.js new file mode 100644 index 00000000..7fec1108 --- /dev/null +++ b/assets/js/1180.e861f86b.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkbeacon_docs=self.webpackChunkbeacon_docs||[]).push([[1180],{21048:(e,t,i)=>{i.d(t,{c:()=>r});var s=i(89612),n=i(72120);const r=(e,t)=>s.c.lang.round(n.c.parse(e)[t])},77784:(e,t,i)=>{i.d(t,{c:()=>n});var s=i(48492);const n=function(e){return(0,s.c)(e,4)}},41180:(e,t,i)=>{i.d(t,{diagram:()=>M});var s,n,r=i(37160),l=i(77784),o=i(21048),a=i(19837),c=i(79680),h=i(95536),u=i(37352),d=(i(62264),i(86208),i(24300),i(10320)),g=function(){var e=function(e,t,i,s){for(i=i||{},s=e.length;s--;i[e[s]]=t);return i},t=[1,7],i=[1,13],s=[1,14],n=[1,15],r=[1,19],l=[1,16],o=[1,17],a=[1,18],c=[8,30],h=[8,21,28,29,30,31,32,40,44,47],u=[1,23],d=[1,24],g=[8,15,16,21,28,29,30,31,32,40,44,47],y=[8,15,16,21,27,28,29,30,31,32,40,44,47],p=[1,49],b={trace:function(){},yy:{},symbols_:{error:2,spaceLines:3,SPACELINE:4,NL:5,seperator:6,SPACE:7,EOF:8,start:9,BLOCK_DIAGRAM_KEY:10,document:11,stop:12,statement:13,link:14,LINK:15,START_LINK:16,LINK_LABEL:17,STR:18,nodeStatement:19,columnsStatement:20,SPACE_BLOCK:21,blockStatement:22,classDefStatement:23,cssClassStatement:24,styleStatement:25,node:26,SIZE:27,COLUMNS:28,"id-block":29,end:30,block:31,NODE_ID:32,nodeShapeNLabel:33,dirList:34,DIR:35,NODE_DSTART:36,NODE_DEND:37,BLOCK_ARROW_START:38,BLOCK_ARROW_END:39,classDef:40,CLASSDEF_ID:41,CLASSDEF_STYLEOPTS:42,DEFAULT:43,class:44,CLASSENTITY_IDS:45,STYLECLASS:46,style:47,STYLE_ENTITY_IDS:48,STYLE_DEFINITION_DATA:49,$accept:0,$end:1},terminals_:{2:"error",4:"SPACELINE",5:"NL",7:"SPACE",8:"EOF",10:"BLOCK_DIAGRAM_KEY",15:"LINK",16:"START_LINK",17:"LINK_LABEL",18:"STR",21:"SPACE_BLOCK",27:"SIZE",28:"COLUMNS",29:"id-block",30:"end",31:"block",32:"NODE_ID",35:"DIR",36:"NODE_DSTART",37:"NODE_DEND",38:"BLOCK_ARROW_START",39:"BLOCK_ARROW_END",40:"classDef",41:"CLASSDEF_ID",42:"CLASSDEF_STYLEOPTS",43:"DEFAULT",44:"class",45:"CLASSENTITY_IDS",46:"STYLECLASS",47:"style",48:"STYLE_ENTITY_IDS",49:"STYLE_DEFINITION_DATA"},productions_:[0,[3,1],[3,2],[3,2],[6,1],[6,1],[6,1],[9,3],[12,1],[12,1],[12,2],[12,2],[11,1],[11,2],[14,1],[14,4],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[13,1],[19,3],[19,2],[19,1],[20,1],[22,4],[22,3],[26,1],[26,2],[34,1],[34,2],[33,3],[33,4],[23,3],[23,3],[24,3],[25,3]],performAction:function(e,t,i,s,n,r,l){var o=r.length-1;switch(n){case 4:s.getLogger().debug("Rule: seperator (NL) ");break;case 5:s.getLogger().debug("Rule: seperator (Space) ");break;case 6:s.getLogger().debug("Rule: seperator (EOF) ");break;case 7:s.getLogger().debug("Rule: hierarchy: ",r[o-1]),s.setHierarchy(r[o-1]);break;case 8:s.getLogger().debug("Stop NL ");break;case 9:s.getLogger().debug("Stop EOF ");break;case 10:s.getLogger().debug("Stop NL2 ");break;case 11:s.getLogger().debug("Stop EOF2 ");break;case 12:s.getLogger().debug("Rule: statement: ",r[o]),"number"==typeof r[o].length?this.$=r[o]:this.$=[r[o]];break;case 13:s.getLogger().debug("Rule: statement #2: ",r[o-1]),this.$=[r[o-1]].concat(r[o]);break;case 14:s.getLogger().debug("Rule: link: ",r[o],e),this.$={edgeTypeStr:r[o],label:""};break;case 15:s.getLogger().debug("Rule: LABEL link: ",r[o-3],r[o-1],r[o]),this.$={edgeTypeStr:r[o],label:r[o-1]};break;case 18:const t=parseInt(r[o]),i=s.generateId();this.$={id:i,type:"space",label:"",width:t,children:[]};break;case 23:s.getLogger().debug("Rule: (nodeStatement link node) ",r[o-2],r[o-1],r[o]," typestr: ",r[o-1].edgeTypeStr);const n=s.edgeStrToEdgeData(r[o-1].edgeTypeStr);this.$=[{id:r[o-2].id,label:r[o-2].label,type:r[o-2].type,directions:r[o-2].directions},{id:r[o-2].id+"-"+r[o].id,start:r[o-2].id,end:r[o].id,label:r[o-1].label,type:"edge",directions:r[o].directions,arrowTypeEnd:n,arrowTypeStart:"arrow_open"},{id:r[o].id,label:r[o].label,type:s.typeStr2Type(r[o].typeStr),directions:r[o].directions}];break;case 24:s.getLogger().debug("Rule: nodeStatement (abc88 node size) ",r[o-1],r[o]),this.$={id:r[o-1].id,label:r[o-1].label,type:s.typeStr2Type(r[o-1].typeStr),directions:r[o-1].directions,widthInColumns:parseInt(r[o],10)};break;case 25:s.getLogger().debug("Rule: nodeStatement (node) ",r[o]),this.$={id:r[o].id,label:r[o].label,type:s.typeStr2Type(r[o].typeStr),directions:r[o].directions,widthInColumns:1};break;case 26:s.getLogger().debug("APA123",this?this:"na"),s.getLogger().debug("COLUMNS: ",r[o]),this.$={type:"column-setting",columns:"auto"===r[o]?-1:parseInt(r[o])};break;case 27:s.getLogger().debug("Rule: id-block statement : ",r[o-2],r[o-1]),s.generateId(),this.$={...r[o-2],type:"composite",children:r[o-1]};break;case 28:s.getLogger().debug("Rule: blockStatement : ",r[o-2],r[o-1],r[o]);const l=s.generateId();this.$={id:l,type:"composite",label:"",children:r[o-1]};break;case 29:s.getLogger().debug("Rule: node (NODE_ID seperator): ",r[o]),this.$={id:r[o]};break;case 30:s.getLogger().debug("Rule: node (NODE_ID nodeShapeNLabel seperator): ",r[o-1],r[o]),this.$={id:r[o-1],label:r[o].label,typeStr:r[o].typeStr,directions:r[o].directions};break;case 31:s.getLogger().debug("Rule: dirList: ",r[o]),this.$=[r[o]];break;case 32:s.getLogger().debug("Rule: dirList: ",r[o-1],r[o]),this.$=[r[o-1]].concat(r[o]);break;case 33:s.getLogger().debug("Rule: nodeShapeNLabel: ",r[o-2],r[o-1],r[o]),this.$={typeStr:r[o-2]+r[o],label:r[o-1]};break;case 34:s.getLogger().debug("Rule: BLOCK_ARROW nodeShapeNLabel: ",r[o-3],r[o-2]," #3:",r[o-1],r[o]),this.$={typeStr:r[o-3]+r[o],label:r[o-2],directions:r[o-1]};break;case 35:case 36:this.$={type:"classDef",id:r[o-1].trim(),css:r[o].trim()};break;case 37:this.$={type:"applyClass",id:r[o-1].trim(),styleClass:r[o].trim()};break;case 38:this.$={type:"applyStyles",id:r[o-1].trim(),stylesStr:r[o].trim()}}},table:[{9:1,10:[1,2]},{1:[3]},{11:3,13:4,19:5,20:6,21:t,22:8,23:9,24:10,25:11,26:12,28:i,29:s,31:n,32:r,40:l,44:o,47:a},{8:[1,20]},e(c,[2,12],{13:4,19:5,20:6,22:8,23:9,24:10,25:11,26:12,11:21,21:t,28:i,29:s,31:n,32:r,40:l,44:o,47:a}),e(h,[2,16],{14:22,15:u,16:d}),e(h,[2,17]),e(h,[2,18]),e(h,[2,19]),e(h,[2,20]),e(h,[2,21]),e(h,[2,22]),e(g,[2,25],{27:[1,25]}),e(h,[2,26]),{19:26,26:12,32:r},{11:27,13:4,19:5,20:6,21:t,22:8,23:9,24:10,25:11,26:12,28:i,29:s,31:n,32:r,40:l,44:o,47:a},{41:[1,28],43:[1,29]},{45:[1,30]},{48:[1,31]},e(y,[2,29],{33:32,36:[1,33],38:[1,34]}),{1:[2,7]},e(c,[2,13]),{26:35,32:r},{32:[2,14]},{17:[1,36]},e(g,[2,24]),{11:37,13:4,14:22,15:u,16:d,19:5,20:6,21:t,22:8,23:9,24:10,25:11,26:12,28:i,29:s,31:n,32:r,40:l,44:o,47:a},{30:[1,38]},{42:[1,39]},{42:[1,40]},{46:[1,41]},{49:[1,42]},e(y,[2,30]),{18:[1,43]},{18:[1,44]},e(g,[2,23]),{18:[1,45]},{30:[1,46]},e(h,[2,28]),e(h,[2,35]),e(h,[2,36]),e(h,[2,37]),e(h,[2,38]),{37:[1,47]},{34:48,35:p},{15:[1,50]},e(h,[2,27]),e(y,[2,33]),{39:[1,51]},{34:52,35:p,39:[2,31]},{32:[2,15]},e(y,[2,34]),{39:[2,32]}],defaultActions:{20:[2,7],23:[2,14],50:[2,15],52:[2,32]},parseError:function(e,t){if(!t.recoverable){var i=new Error(e);throw i.hash=t,i}this.trace(e)},parse:function(e){var t=this,i=[0],s=[],n=[null],r=[],l=this.table,o="",a=0,c=0,h=r.slice.call(arguments,1),u=Object.create(this.lexer),d={yy:{}};for(var g in this.yy)Object.prototype.hasOwnProperty.call(this.yy,g)&&(d.yy[g]=this.yy[g]);u.setInput(e,d.yy),d.yy.lexer=u,d.yy.parser=this,void 0===u.yylloc&&(u.yylloc={});var y=u.yylloc;r.push(y);var p=u.options&&u.options.ranges;"function"==typeof d.yy.parseError?this.parseError=d.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var b,x,S,L,f,m,_,k,E,w={};;){if(x=i[i.length-1],this.defaultActions[x]?S=this.defaultActions[x]:(null==b&&(E=void 0,"number"!=typeof(E=s.pop()||u.lex()||1)&&(E instanceof Array&&(E=(s=E).pop()),E=t.symbols_[E]||E),b=E),S=l[x]&&l[x][b]),void 0===S||!S.length||!S[0]){var v="";for(f in k=[],l[x])this.terminals_[f]&&f>2&&k.push("'"+this.terminals_[f]+"'");v=u.showPosition?"Parse error on line "+(a+1)+":\n"+u.showPosition()+"\nExpecting "+k.join(", ")+", got '"+(this.terminals_[b]||b)+"'":"Parse error on line "+(a+1)+": Unexpected "+(1==b?"end of input":"'"+(this.terminals_[b]||b)+"'"),this.parseError(v,{text:u.match,token:this.terminals_[b]||b,line:u.yylineno,loc:y,expected:k})}if(S[0]instanceof Array&&S.length>1)throw new Error("Parse Error: multiple actions possible at state: "+x+", token: "+b);switch(S[0]){case 1:i.push(b),n.push(u.yytext),r.push(u.yylloc),i.push(S[1]),b=null,c=u.yyleng,o=u.yytext,a=u.yylineno,y=u.yylloc;break;case 2:if(m=this.productions_[S[1]][1],w.$=n[n.length-m],w._$={first_line:r[r.length-(m||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(m||1)].first_column,last_column:r[r.length-1].last_column},p&&(w._$.range=[r[r.length-(m||1)].range[0],r[r.length-1].range[1]]),void 0!==(L=this.performAction.apply(w,[o,c,a,d.yy,S[1],n,r].concat(h))))return L;m&&(i=i.slice(0,-1*m*2),n=n.slice(0,-1*m),r=r.slice(0,-1*m)),i.push(this.productions_[S[1]][0]),n.push(w.$),r.push(w._$),_=l[i[i.length-2]][i[i.length-1]],i.push(_);break;case 3:return!0}}return!0}},x={EOF:1,parseError:function(e,t){if(!this.yy.parser)throw new Error(e);this.yy.parser.parseError(e,t)},setInput:function(e,t){return this.yy=t||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},unput:function(e){var t=e.length,i=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var s=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),i.length-1&&(this.yylineno-=i.length-1);var n=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:i?(i.length===s.length?this.yylloc.first_column:0)+s[s.length-i.length].length-i[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[n[0],n[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(e){this.unput(this.match.slice(e))},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},test_match:function(e,t){var i,s,n;if(this.options.backtrack_lexer&&(n={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(n.yylloc.range=this.yylloc.range.slice(0))),(s=e[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=s.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:s?s[s.length-1].length-s[s.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],i=this.performAction.call(this,this.yy,this,t,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),i)return i;if(this._backtrack){for(var r in n)this[r]=n[r];return!1}return!1},next:function(){if(this.done)return this.EOF;var e,t,i,s;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var n=this._currentRules(),r=0;rt[0].length)){if(t=i,s=r,this.options.backtrack_lexer){if(!1!==(e=this.test_match(i,n[r])))return e;if(this._backtrack){t=!1;continue}return!1}if(!this.options.flex)break}return t?!1!==(e=this.test_match(t,n[s]))&&e:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return e||this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(e){return(e=this.conditionStack.length-1-Math.abs(e||0))>=0?this.conditionStack[e]:"INITIAL"},pushState:function(e){this.begin(e)},stateStackSize:function(){return this.conditionStack.length},options:{},performAction:function(e,t,i,s){switch(i){case 0:return 10;case 1:return e.getLogger().debug("Found space-block"),31;case 2:return e.getLogger().debug("Found nl-block"),31;case 3:return e.getLogger().debug("Found space-block"),29;case 4:e.getLogger().debug(".",t.yytext);break;case 5:e.getLogger().debug("_",t.yytext);break;case 6:return 5;case 7:return t.yytext=-1,28;case 8:return t.yytext=t.yytext.replace(/columns\s+/,""),e.getLogger().debug("COLUMNS (LEX)",t.yytext),28;case 9:case 77:case 78:case 100:this.pushState("md_string");break;case 10:return"MD_STR";case 11:case 35:case 80:this.popState();break;case 12:this.pushState("string");break;case 13:e.getLogger().debug("LEX: POPPING STR:",t.yytext),this.popState();break;case 14:return e.getLogger().debug("LEX: STR end:",t.yytext),"STR";case 15:return t.yytext=t.yytext.replace(/space\:/,""),e.getLogger().debug("SPACE NUM (LEX)",t.yytext),21;case 16:return t.yytext="1",e.getLogger().debug("COLUMNS (LEX)",t.yytext),21;case 17:return 43;case 18:return"LINKSTYLE";case 19:return"INTERPOLATE";case 20:return this.pushState("CLASSDEF"),40;case 21:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";case 22:return this.popState(),this.pushState("CLASSDEFID"),41;case 23:return this.popState(),42;case 24:return this.pushState("CLASS"),44;case 25:return this.popState(),this.pushState("CLASS_STYLE"),45;case 26:return this.popState(),46;case 27:return this.pushState("STYLE_STMNT"),47;case 28:return this.popState(),this.pushState("STYLE_DEFINITION"),48;case 29:return this.popState(),49;case 30:return this.pushState("acc_title"),"acc_title";case 31:return this.popState(),"acc_title_value";case 32:return this.pushState("acc_descr"),"acc_descr";case 33:return this.popState(),"acc_descr_value";case 34:this.pushState("acc_descr_multiline");break;case 36:return"acc_descr_multiline_value";case 37:return 30;case 38:case 39:case 41:case 42:case 45:return this.popState(),e.getLogger().debug("Lex: (("),"NODE_DEND";case 40:return this.popState(),e.getLogger().debug("Lex: ))"),"NODE_DEND";case 43:return this.popState(),e.getLogger().debug("Lex: (-"),"NODE_DEND";case 44:return this.popState(),e.getLogger().debug("Lex: -)"),"NODE_DEND";case 46:return this.popState(),e.getLogger().debug("Lex: ]]"),"NODE_DEND";case 47:return this.popState(),e.getLogger().debug("Lex: ("),"NODE_DEND";case 48:return this.popState(),e.getLogger().debug("Lex: ])"),"NODE_DEND";case 49:case 50:return this.popState(),e.getLogger().debug("Lex: /]"),"NODE_DEND";case 51:return this.popState(),e.getLogger().debug("Lex: )]"),"NODE_DEND";case 52:return this.popState(),e.getLogger().debug("Lex: )"),"NODE_DEND";case 53:return this.popState(),e.getLogger().debug("Lex: ]>"),"NODE_DEND";case 54:return this.popState(),e.getLogger().debug("Lex: ]"),"NODE_DEND";case 55:return e.getLogger().debug("Lexa: -)"),this.pushState("NODE"),36;case 56:return e.getLogger().debug("Lexa: (-"),this.pushState("NODE"),36;case 57:return e.getLogger().debug("Lexa: ))"),this.pushState("NODE"),36;case 58:case 60:case 61:case 62:case 65:return e.getLogger().debug("Lexa: )"),this.pushState("NODE"),36;case 59:return e.getLogger().debug("Lex: ((("),this.pushState("NODE"),36;case 63:return e.getLogger().debug("Lexc: >"),this.pushState("NODE"),36;case 64:return e.getLogger().debug("Lexa: (["),this.pushState("NODE"),36;case 66:case 67:case 68:case 69:case 70:case 71:case 72:return this.pushState("NODE"),36;case 73:return e.getLogger().debug("Lexa: ["),this.pushState("NODE"),36;case 74:return this.pushState("BLOCK_ARROW"),e.getLogger().debug("LEX ARR START"),38;case 75:return e.getLogger().debug("Lex: NODE_ID",t.yytext),32;case 76:return e.getLogger().debug("Lex: EOF",t.yytext),8;case 79:return"NODE_DESCR";case 81:e.getLogger().debug("Lex: Starting string"),this.pushState("string");break;case 82:e.getLogger().debug("LEX ARR: Starting string"),this.pushState("string");break;case 83:return e.getLogger().debug("LEX: NODE_DESCR:",t.yytext),"NODE_DESCR";case 84:e.getLogger().debug("LEX POPPING"),this.popState();break;case 85:e.getLogger().debug("Lex: =>BAE"),this.pushState("ARROW_DIR");break;case 86:return t.yytext=t.yytext.replace(/^,\s*/,""),e.getLogger().debug("Lex (right): dir:",t.yytext),"DIR";case 87:return t.yytext=t.yytext.replace(/^,\s*/,""),e.getLogger().debug("Lex (left):",t.yytext),"DIR";case 88:return t.yytext=t.yytext.replace(/^,\s*/,""),e.getLogger().debug("Lex (x):",t.yytext),"DIR";case 89:return t.yytext=t.yytext.replace(/^,\s*/,""),e.getLogger().debug("Lex (y):",t.yytext),"DIR";case 90:return t.yytext=t.yytext.replace(/^,\s*/,""),e.getLogger().debug("Lex (up):",t.yytext),"DIR";case 91:return t.yytext=t.yytext.replace(/^,\s*/,""),e.getLogger().debug("Lex (down):",t.yytext),"DIR";case 92:return t.yytext="]>",e.getLogger().debug("Lex (ARROW_DIR end):",t.yytext),this.popState(),this.popState(),"BLOCK_ARROW_END";case 93:return e.getLogger().debug("Lex: LINK","#"+t.yytext+"#"),15;case 94:case 95:case 96:return e.getLogger().debug("Lex: LINK",t.yytext),15;case 97:case 98:case 99:return e.getLogger().debug("Lex: START_LINK",t.yytext),this.pushState("LLABEL"),16;case 101:return e.getLogger().debug("Lex: Starting string"),this.pushState("string"),"LINK_LABEL";case 102:return this.popState(),e.getLogger().debug("Lex: LINK","#"+t.yytext+"#"),15;case 103:case 104:return this.popState(),e.getLogger().debug("Lex: LINK",t.yytext),15;case 105:return e.getLogger().debug("Lex: COLON",t.yytext),t.yytext=t.yytext.slice(1),27}},rules:[/^(?:block-beta\b)/,/^(?:block\s+)/,/^(?:block\n+)/,/^(?:block:)/,/^(?:[\s]+)/,/^(?:[\n]+)/,/^(?:((\u000D\u000A)|(\u000A)))/,/^(?:columns\s+auto\b)/,/^(?:columns\s+[\d]+)/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]*)/,/^(?:space[:]\d+)/,/^(?:space\b)/,/^(?:default\b)/,/^(?:linkStyle\b)/,/^(?:interpolate\b)/,/^(?:classDef\s+)/,/^(?:DEFAULT\s+)/,/^(?:\w+\s+)/,/^(?:[^\n]*)/,/^(?:class\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:style\s+)/,/^(?:(\w+)+((,\s*\w+)*))/,/^(?:[^\n]*)/,/^(?:accTitle\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*:\s*)/,/^(?:(?!\n||)*[^\n]*)/,/^(?:accDescr\s*\{\s*)/,/^(?:[\}])/,/^(?:[^\}]*)/,/^(?:end\b\s*)/,/^(?:\(\(\()/,/^(?:\)\)\))/,/^(?:[\)]\))/,/^(?:\}\})/,/^(?:\})/,/^(?:\(-)/,/^(?:-\))/,/^(?:\(\()/,/^(?:\]\])/,/^(?:\()/,/^(?:\]\))/,/^(?:\\\])/,/^(?:\/\])/,/^(?:\)\])/,/^(?:[\)])/,/^(?:\]>)/,/^(?:[\]])/,/^(?:-\))/,/^(?:\(-)/,/^(?:\)\))/,/^(?:\))/,/^(?:\(\(\()/,/^(?:\(\()/,/^(?:\{\{)/,/^(?:\{)/,/^(?:>)/,/^(?:\(\[)/,/^(?:\()/,/^(?:\[\[)/,/^(?:\[\|)/,/^(?:\[\()/,/^(?:\)\)\))/,/^(?:\[\\)/,/^(?:\[\/)/,/^(?:\[\\)/,/^(?:\[)/,/^(?:<\[)/,/^(?:[^\(\[\n\-\)\{\}\s\<\>:]+)/,/^(?:$)/,/^(?:["][`])/,/^(?:["][`])/,/^(?:[^`"]+)/,/^(?:[`]["])/,/^(?:["])/,/^(?:["])/,/^(?:[^"]+)/,/^(?:["])/,/^(?:\]>\s*\()/,/^(?:,?\s*right\s*)/,/^(?:,?\s*left\s*)/,/^(?:,?\s*x\s*)/,/^(?:,?\s*y\s*)/,/^(?:,?\s*up\s*)/,/^(?:,?\s*down\s*)/,/^(?:\)\s*)/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?:\s*~~[\~]+\s*)/,/^(?:\s*[xo<]?--\s*)/,/^(?:\s*[xo<]?==\s*)/,/^(?:\s*[xo<]?-\.\s*)/,/^(?:["][`])/,/^(?:["])/,/^(?:\s*[xo<]?--+[-xo>]\s*)/,/^(?:\s*[xo<]?==+[=xo>]\s*)/,/^(?:\s*[xo<]?-?\.+-[xo>]?\s*)/,/^(?::\d+)/],conditions:{STYLE_DEFINITION:{rules:[29],inclusive:!1},STYLE_STMNT:{rules:[28],inclusive:!1},CLASSDEFID:{rules:[23],inclusive:!1},CLASSDEF:{rules:[21,22],inclusive:!1},CLASS_STYLE:{rules:[26],inclusive:!1},CLASS:{rules:[25],inclusive:!1},LLABEL:{rules:[100,101,102,103,104],inclusive:!1},ARROW_DIR:{rules:[86,87,88,89,90,91,92],inclusive:!1},BLOCK_ARROW:{rules:[77,82,85],inclusive:!1},NODE:{rules:[38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,78,81],inclusive:!1},md_string:{rules:[10,11,79,80],inclusive:!1},space:{rules:[],inclusive:!1},string:{rules:[13,14,83,84],inclusive:!1},acc_descr_multiline:{rules:[35,36],inclusive:!1},acc_descr:{rules:[33],inclusive:!1},acc_title:{rules:[31],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,9,12,15,16,17,18,19,20,24,27,30,32,34,37,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,93,94,95,96,97,98,99,105],inclusive:!0}}};function S(){this.yy={}}return b.lexer=x,S.prototype=b,b.Parser=S,new S}();g.parser=g;const y=g;let p={},b=[],x={};const S="color",L="fill";let f={};const m=function(e,t=""){void 0===f[e]&&(f[e]={id:e,styles:[],textStyles:[]});const i=f[e];null!=t&&t.split(",").forEach((e=>{const t=e.replace(/([^;]*);/,"$1").trim();if(e.match(S)){const e=t.replace(L,"bgFill").replace(S,L);i.textStyles.push(e)}i.styles.push(t)}))},_=function(e,t=""){const i=p[e];null!=t&&(i.styles=t.split(","))},k=function(e,t){e.split(",").forEach((function(e){let i=p[e];if(void 0===i){const t=e.trim();p[t]={id:t,type:"na",children:[]},i=p[t]}i.classes||(i.classes=[]),i.classes.push(t)}))},E=(e,t)=>{const i=e.flat(),s=[];for(const n of i)if("classDef"!==n.type)if("applyClass"!==n.type)if("applyStyles"!==n.type)if("column-setting"===n.type)t.columns=n.columns||-1;else if("edge"===n.type)x[n.id]?x[n.id]++:x[n.id]=1,n.id=x[n.id]+"-"+n.id,b.push(n);else{n.label||("composite"===n.type?n.label="":n.label=n.id);const e=!p[n.id];if(e?p[n.id]=n:("na"!==n.type&&(p[n.id].type=n.type),n.label!==n.id&&(p[n.id].label=n.label)),n.children&&E(n.children,n),"space"===n.type){const e=n.width||1;for(let t=0;t(0,r.E)().block,typeStr2Type:function(e){switch(r.l.debug("typeStr2Type",e),e){case"[]":return"square";case"()":return r.l.debug("we have a round"),"round";case"(())":return"circle";case">]":return"rect_left_inv_arrow";case"{}":return"diamond";case"{{}}":return"hexagon";case"([])":return"stadium";case"[[]]":return"subroutine";case"[()]":return"cylinder";case"((()))":return"doublecircle";case"[//]":return"lean_right";case"[\\\\]":return"lean_left";case"[/\\]":return"trapezoid";case"[\\/]":return"inv_trapezoid";case"<[]>":return"block_arrow";default:return"na"}},edgeTypeStr2Type:function(e){return r.l.debug("typeStr2Type",e),"=="===e?"thick":"normal"},edgeStrToEdgeData:function(e){switch(e.trim()){case"--x":return"arrow_cross";case"--o":return"arrow_circle";default:return"arrow_point"}},getLogger:()=>d,getBlocksFlat:()=>[...Object.values(p)],getBlocks:()=>w||[],getEdges:()=>b,setHierarchy:e=>{v.children=e,E(e,v),w=v.children},getBlock:e=>p[e],setBlock:e=>{p[e.id]=e},getColumns:e=>{const t=p[e];return t?t.columns?t.columns:t.children?t.children.length:-1:-1},getClasses:function(){return f},clear:()=>{r.l.debug("Clear called"),(0,r.t)(),v={id:"root",type:"composite",children:[],columns:-1},p={root:v},w=[],f={},b=[],x={}},generateId:()=>(D++,"id-"+Math.random().toString(36).substr(2,12)+"-"+D)},N=(e,t)=>{const i=o.c,s=i(e,"r"),n=i(e,"g"),r=i(e,"b");return a.c(s,n,r,t)},I=e=>`.label {\n font-family: ${e.fontFamily};\n color: ${e.nodeTextColor||e.textColor};\n }\n .cluster-label text {\n fill: ${e.titleColor};\n }\n .cluster-label span,p {\n color: ${e.titleColor};\n }\n\n\n\n .label text,span,p {\n fill: ${e.nodeTextColor||e.textColor};\n color: ${e.nodeTextColor||e.textColor};\n }\n\n .node rect,\n .node circle,\n .node ellipse,\n .node polygon,\n .node path {\n fill: ${e.mainBkg};\n stroke: ${e.nodeBorder};\n stroke-width: 1px;\n }\n .flowchart-label text {\n text-anchor: middle;\n }\n // .flowchart-label .text-outer-tspan {\n // text-anchor: middle;\n // }\n // .flowchart-label .text-inner-tspan {\n // text-anchor: start;\n // }\n\n .node .label {\n text-align: center;\n }\n .node.clickable {\n cursor: pointer;\n }\n\n .arrowheadPath {\n fill: ${e.arrowheadColor};\n }\n\n .edgePath .path {\n stroke: ${e.lineColor};\n stroke-width: 2.0px;\n }\n\n .flowchart-link {\n stroke: ${e.lineColor};\n fill: none;\n }\n\n .edgeLabel {\n background-color: ${e.edgeLabelBackground};\n rect {\n opacity: 0.5;\n background-color: ${e.edgeLabelBackground};\n fill: ${e.edgeLabelBackground};\n }\n text-align: center;\n }\n\n /* For html labels only */\n .labelBkg {\n background-color: ${N(e.edgeLabelBackground,.5)};\n // background-color:\n }\n\n .node .cluster {\n // fill: ${N(e.mainBkg,.5)};\n fill: ${N(e.clusterBkg,.5)};\n stroke: ${N(e.clusterBorder,.2)};\n box-shadow: rgba(50, 50, 93, 0.25) 0px 13px 27px -5px, rgba(0, 0, 0, 0.3) 0px 8px 16px -8px;\n stroke-width: 1px;\n }\n\n .cluster text {\n fill: ${e.titleColor};\n }\n\n .cluster span,p {\n color: ${e.titleColor};\n }\n /* .cluster div {\n color: ${e.titleColor};\n } */\n\n div.mermaidTooltip {\n position: absolute;\n text-align: center;\n max-width: 200px;\n padding: 2px;\n font-family: ${e.fontFamily};\n font-size: 12px;\n background: ${e.tertiaryColor};\n border: 1px solid ${e.border2};\n border-radius: 2px;\n pointer-events: none;\n z-index: 100;\n }\n\n .flowchartTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${e.textColor};\n }\n`;function T(e,t,i=!1){var s,n,l;const o=e;let a="default";((null==(s=null==o?void 0:o.classes)?void 0:s.length)||0)>0&&(a=((null==o?void 0:o.classes)||[]).join(" ")),a+=" flowchart-label";let c,h=0,u="";switch(o.type){case"round":h=5,u="rect";break;case"composite":h=0,u="composite",c=0;break;case"square":case"group":default:u="rect";break;case"diamond":u="question";break;case"hexagon":u="hexagon";break;case"block_arrow":u="block_arrow";break;case"odd":case"rect_left_inv_arrow":u="rect_left_inv_arrow";break;case"lean_right":u="lean_right";break;case"lean_left":u="lean_left";break;case"trapezoid":u="trapezoid";break;case"inv_trapezoid":u="inv_trapezoid";break;case"circle":u="circle";break;case"ellipse":u="ellipse";break;case"stadium":u="stadium";break;case"subroutine":u="subroutine";break;case"cylinder":u="cylinder";break;case"doublecircle":u="doublecircle"}const d=(0,r.k)((null==o?void 0:o.styles)||[]),g=o.label,y=o.size||{width:0,height:0,x:0,y:0};return{labelStyle:d.labelStyle,shape:u,labelText:g,rx:h,ry:h,class:a,style:d.style,id:o.id,directions:o.directions,width:y.width,height:y.height,x:y.x,y:y.y,positioned:i,intersect:void 0,type:o.type,padding:c??((null==(l=null==(n=(0,r.E)())?void 0:n.block)?void 0:l.padding)||0)}}async function z(e,t,i){const s=T(t,0,!1);if("group"===s.type)return;const n=await(0,c.e)(e,s),r=n.node().getBBox(),l=i.getBlock(s.id);l.size={width:r.width,height:r.height,x:0,y:0,node:n},i.setBlock(l),n.remove()}async function C(e,t,i){const s=T(t,0,!0);"space"!==i.getBlock(s.id).type&&(await(0,c.e)(e,s),t.intersect=null==s?void 0:s.intersect,(0,c.p)(s))}async function O(e,t,i,s){for(const n of t)await s(e,n,i),n.children&&await O(e,n.children,i,s)}const A=(null==(n=null==(s=(0,r.c)())?void 0:s.block)?void 0:n.padding)||8;function R(e,t){if(0===e||!Number.isInteger(e))throw new Error("Columns must be an integer !== 0.");if(t<0||!Number.isInteger(t))throw new Error("Position must be a non-negative integer."+t);if(e<0)return{px:t,py:0};if(1===e)return{px:0,py:t};return{px:t%e,py:Math.floor(t/e)}}const B=e=>{let t=0,i=0;for(const s of e.children){const{width:n,height:l,x:o,y:a}=s.size||{width:0,height:0,x:0,y:0};r.l.debug("getMaxChildSize abc95 child:",s.id,"width:",n,"height:",l,"x:",o,"y:",a,s.type),"space"!==s.type&&(n>t&&(t=n/(e.widthInColumns||1)),l>i&&(i=l))}return{width:t,height:i}};function P(e,t,i=0,s=0){var n,l,o,a,c,h,u,d,g,y,p;r.l.debug("setBlockSizes abc95 (start)",e.id,null==(n=null==e?void 0:e.size)?void 0:n.x,"block width =",null==e?void 0:e.size,"sieblingWidth",i),(null==(l=null==e?void 0:e.size)?void 0:l.width)||(e.size={width:i,height:s,x:0,y:0});let b=0,x=0;if((null==(o=e.children)?void 0:o.length)>0){for(const i of e.children)P(i,t);const n=B(e);b=n.width,x=n.height,r.l.debug("setBlockSizes abc95 maxWidth of",e.id,":s children is ",b,x);for(const t of e.children)t.size&&(r.l.debug(`abc95 Setting size of children of ${e.id} id=${t.id} ${b} ${x} ${t.size}`),t.size.width=b*(t.widthInColumns||1)+A*((t.widthInColumns||1)-1),t.size.height=x,t.size.x=0,t.size.y=0,r.l.debug(`abc95 updating size of ${e.id} children child:${t.id} maxWidth:${b} maxHeight:${x}`));for(const i of e.children)P(i,t,b,x);const l=e.columns||-1;let o=0;for(const t of e.children)o+=t.widthInColumns||1;let d=e.children.length;l>0&&l0?Math.min(e.children.length,l):e.children.length;if(t>0){const i=(y-t*A-A)/t;r.l.debug("abc95 (growing to fit) width",e.id,y,null==(u=e.size)?void 0:u.width,i);for(const t of e.children)t.size&&(t.size.width=i)}}e.size={width:y,height:p,x:0,y:0}}r.l.debug("setBlockSizes abc94 (done)",e.id,null==(d=null==e?void 0:e.size)?void 0:d.x,null==(g=null==e?void 0:e.size)?void 0:g.width,null==(y=null==e?void 0:e.size)?void 0:y.y,null==(p=null==e?void 0:e.size)?void 0:p.height)}function F(e,t){var i,s,n,l,o,a,c,h,u,d,g,y,p,b,x,S,L;r.l.debug(`abc85 layout blocks (=>layoutBlocks) ${e.id} x: ${null==(i=null==e?void 0:e.size)?void 0:i.x} y: ${null==(s=null==e?void 0:e.size)?void 0:s.y} width: ${null==(n=null==e?void 0:e.size)?void 0:n.width}`);const f=e.columns||-1;if(r.l.debug("layoutBlocks columns abc95",e.id,"=>",f,e),e.children&&e.children.length>0){const t=(null==(o=null==(l=null==e?void 0:e.children[0])?void 0:l.size)?void 0:o.width)||0,i=e.children.length*t+(e.children.length-1)*A;r.l.debug("widthOfChildren 88",i,"posX");let s=0;r.l.debug("abc91 block?.size?.x",e.id,null==(a=null==e?void 0:e.size)?void 0:a.x);let n=(null==(c=null==e?void 0:e.size)?void 0:c.x)?(null==(h=null==e?void 0:e.size)?void 0:h.x)+(-(null==(u=null==e?void 0:e.size)?void 0:u.width)/2||0):-A,x=0;for(const l of e.children){const t=e;if(!l.size)continue;const{width:i,height:o}=l.size,{px:a,py:c}=R(f,s);if(c!=x&&(x=c,n=(null==(d=null==e?void 0:e.size)?void 0:d.x)?(null==(g=null==e?void 0:e.size)?void 0:g.x)+(-(null==(y=null==e?void 0:e.size)?void 0:y.width)/2||0):-A,r.l.debug("New row in layout for block",e.id," and child ",l.id,x)),r.l.debug(`abc89 layout blocks (child) id: ${l.id} Pos: ${s} (px, py) ${a},${c} (${null==(p=null==t?void 0:t.size)?void 0:p.x},${null==(b=null==t?void 0:t.size)?void 0:b.y}) parent: ${t.id} width: ${i}${A}`),t.size){const e=i/2;l.size.x=n+A+e,r.l.debug(`abc91 layout blocks (calc) px, pyid:${l.id} startingPos=X${n} new startingPosX${l.size.x} ${e} padding=${A} width=${i} halfWidth=${e} => x:${l.size.x} y:${l.size.y} ${l.widthInColumns} (width * (child?.w || 1)) / 2 ${i*((null==l?void 0:l.widthInColumns)||1)/2}`),n=l.size.x+e,l.size.y=t.size.y-t.size.height/2+c*(o+A)+o/2+A,r.l.debug(`abc88 layout blocks (calc) px, pyid:${l.id}startingPosX${n}${A}${e}=>x:${l.size.x}y:${l.size.y}${l.widthInColumns}(width * (child?.w || 1)) / 2${i*((null==l?void 0:l.widthInColumns)||1)/2}`)}l.children&&F(l),s+=(null==l?void 0:l.widthInColumns)||1,r.l.debug("abc88 columnsPos",l,s)}}r.l.debug(`layout blocks (<==layoutBlocks) ${e.id} x: ${null==(x=null==e?void 0:e.size)?void 0:x.x} y: ${null==(S=null==e?void 0:e.size)?void 0:S.y} width: ${null==(L=null==e?void 0:e.size)?void 0:L.width}`)}function Y(e,{minX:t,minY:i,maxX:s,maxY:n}={minX:0,minY:0,maxX:0,maxY:0}){if(e.size&&"root"!==e.id){const{x:r,y:l,width:o,height:a}=e.size;r-o/2s&&(s=r+o/2),l+a/2>n&&(n=l+a/2)}if(e.children)for(const r of e.children)({minX:t,minY:i,maxX:s,maxY:n}=Y(r,{minX:t,minY:i,maxX:s,maxY:n}));return{minX:t,minY:i,maxX:s,maxY:n}}function K(e){const t=e.getBlock("root");if(!t)return;P(t,e,0,0),F(t),r.l.debug("getBlocks",JSON.stringify(t,null,2));const{minX:i,minY:s,maxX:n,maxY:l}=Y(t);return{x:i,y:s,width:n-i,height:l-s}}const M={parser:y,db:$,renderer:{draw:async function(e,t,i,s){const{securityLevel:n,block:l}=(0,r.E)(),o=s.db;let a;"sandbox"===n&&(a=(0,u.MlD)("#i"+t));const d="sandbox"===n?(0,u.MlD)(a.nodes()[0].contentDocument.body):(0,u.MlD)("body"),g="sandbox"===n?d.select(`[id="${t}"]`):(0,u.MlD)(`[id="${t}"]`);(0,c.a)(g,["point","circle","cross"],s.type,t);const y=o.getBlocks(),p=o.getBlocksFlat(),b=o.getEdges(),x=g.insert("g").attr("class","block");await async function(e,t,i){await O(e,t,i,z)}(x,y,o);const S=K(o);if(await async function(e,t,i){await O(e,t,i,C)}(x,y,o),await async function(e,t,i,s,n){const r=new h.M({multigraph:!0,compound:!0});r.setGraph({rankdir:"TB",nodesep:10,ranksep:10,marginx:8,marginy:8});for(const l of i)l.size&&r.setNode(l.id,{width:l.size.width,height:l.size.height,intersect:l.intersect});for(const l of t)if(l.start&&l.end){const t=s.getBlock(l.start),i=s.getBlock(l.end);if((null==t?void 0:t.size)&&(null==i?void 0:i.size)){const s=t.size,o=i.size,a=[{x:s.x,y:s.y},{x:s.x+(o.x-s.x)/2,y:s.y+(o.y-s.y)/2},{x:o.x,y:o.y}];await(0,c.h)(e,{v:l.start,w:l.end,name:l.id},{...l,arrowTypeEnd:l.arrowTypeEnd,arrowTypeStart:l.arrowTypeStart,points:a,classes:"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1"},void 0,"block",r,n),l.label&&(await(0,c.f)(e,{...l,label:l.label,labelStyle:"stroke: #333; stroke-width: 1.5px;fill:none;",arrowTypeEnd:l.arrowTypeEnd,arrowTypeStart:l.arrowTypeStart,points:a,classes:"edge-thickness-normal edge-pattern-solid flowchart-link LS-a1 LE-b1"}),await(0,c.j)({...l,x:a[1].x,y:a[1].y},{originalPath:a}))}}}(x,b,p,o,t),S){const e=S,t=Math.max(1,Math.round(e.width/e.height*.125)),i=e.height+t+10,s=e.width+10,{useMaxWidth:n}=l;(0,r.i)(g,i,s,!!n),r.l.debug("Here Bounds",S,e),g.attr("viewBox",`${e.x-5} ${e.y-5} ${e.width+10} ${e.height+10}`)}(0,u.knW)(u.ovr)},getClasses:function(e,t){return t.db.getClasses()}},styles:I}}}]); \ No newline at end of file diff --git a/assets/js/11cb34b0.49c3d493.js b/assets/js/11cb34b0.49c3d493.js new file mode 100644 index 00000000..b7f77115 --- /dev/null +++ b/assets/js/11cb34b0.49c3d493.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkbeacon_docs=self.webpackChunkbeacon_docs||[]).push([[1952],{50590:e=>{e.exports=JSON.parse('{"name":"docusaurus-plugin-content-pages","id":"default"}')}}]); \ No newline at end of file diff --git a/assets/js/1240.2a295395.js b/assets/js/1240.2a295395.js new file mode 100644 index 00000000..9abf7200 --- /dev/null +++ b/assets/js/1240.2a295395.js @@ -0,0 +1,2 @@ +/*! For license information please see 1240.2a295395.js.LICENSE.txt */ +(self.webpackChunkbeacon_docs=self.webpackChunkbeacon_docs||[]).push([[1240],{75352:function(e,t,n){var r;r=function(e){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.i=function(e){return e},n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{configurable:!1,enumerable:!0,get:r})},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=7)}([function(t,n){t.exports=e},function(e,t,n){"use strict";var r=n(0).FDLayoutConstants;function i(){}for(var a in r)i[a]=r[a];i.DEFAULT_USE_MULTI_LEVEL_SCALING=!1,i.DEFAULT_RADIAL_SEPARATION=r.DEFAULT_EDGE_LENGTH,i.DEFAULT_COMPONENT_SEPERATION=60,i.TILE=!0,i.TILING_PADDING_VERTICAL=10,i.TILING_PADDING_HORIZONTAL=10,i.TREE_REDUCTION_ON_INCREMENTAL=!1,e.exports=i},function(e,t,n){"use strict";var r=n(0).FDLayoutEdge;function i(e,t,n){r.call(this,e,t,n)}for(var a in i.prototype=Object.create(r.prototype),r)i[a]=r[a];e.exports=i},function(e,t,n){"use strict";var r=n(0).LGraph;function i(e,t,n){r.call(this,e,t,n)}for(var a in i.prototype=Object.create(r.prototype),r)i[a]=r[a];e.exports=i},function(e,t,n){"use strict";var r=n(0).LGraphManager;function i(e){r.call(this,e)}for(var a in i.prototype=Object.create(r.prototype),r)i[a]=r[a];e.exports=i},function(e,t,n){"use strict";var r=n(0).FDLayoutNode,i=n(0).IMath;function a(e,t,n,i){r.call(this,e,t,n,i)}for(var o in a.prototype=Object.create(r.prototype),r)a[o]=r[o];a.prototype.move=function(){var e=this.graphManager.getLayout();this.displacementX=e.coolingFactor*(this.springForceX+this.repulsionForceX+this.gravitationForceX)/this.noOfChildren,this.displacementY=e.coolingFactor*(this.springForceY+this.repulsionForceY+this.gravitationForceY)/this.noOfChildren,Math.abs(this.displacementX)>e.coolingFactor*e.maxNodeDisplacement&&(this.displacementX=e.coolingFactor*e.maxNodeDisplacement*i.sign(this.displacementX)),Math.abs(this.displacementY)>e.coolingFactor*e.maxNodeDisplacement&&(this.displacementY=e.coolingFactor*e.maxNodeDisplacement*i.sign(this.displacementY)),null==this.child||0==this.child.getNodes().length?this.moveBy(this.displacementX,this.displacementY):this.propogateDisplacementToChildren(this.displacementX,this.displacementY),e.totalDisplacement+=Math.abs(this.displacementX)+Math.abs(this.displacementY),this.springForceX=0,this.springForceY=0,this.repulsionForceX=0,this.repulsionForceY=0,this.gravitationForceX=0,this.gravitationForceY=0,this.displacementX=0,this.displacementY=0},a.prototype.propogateDisplacementToChildren=function(e,t){for(var n,r=this.getChild().getNodes(),i=0;i0)this.positionNodesRadially(e);else{this.reduceTrees(),this.graphManager.resetAllNodesToApplyGravitation();var t=new Set(this.getAllNodes()),n=this.nodesWithGravity.filter((function(e){return t.has(e)}));this.graphManager.setAllNodesToApplyGravitation(n),this.positionNodesRandomly()}}return this.initSpringEmbedder(),this.runSpringEmbedder(),!0},m.prototype.tick=function(){if(this.totalIterations++,this.totalIterations===this.maxIterations&&!this.isTreeGrowing&&!this.isGrowthFinished){if(!(this.prunedNodesAll.length>0))return!0;this.isTreeGrowing=!0}if(this.totalIterations%u.CONVERGENCE_CHECK_PERIOD==0&&!this.isTreeGrowing&&!this.isGrowthFinished){if(this.isConverged()){if(!(this.prunedNodesAll.length>0))return!0;this.isTreeGrowing=!0}this.coolingCycle++,0==this.layoutQuality?this.coolingAdjuster=this.coolingCycle:1==this.layoutQuality&&(this.coolingAdjuster=this.coolingCycle/3),this.coolingFactor=Math.max(this.initialCoolingFactor-Math.pow(this.coolingCycle,Math.log(100*(this.initialCoolingFactor-this.finalTemperature))/Math.log(this.maxCoolingCycle))/100*this.coolingAdjuster,this.finalTemperature),this.animationPeriod=Math.ceil(this.initialAnimationPeriod*Math.sqrt(this.coolingFactor))}if(this.isTreeGrowing){if(this.growTreeIterations%10==0)if(this.prunedNodesAll.length>0){this.graphManager.updateBounds(),this.updateGrid(),this.growTree(this.prunedNodesAll),this.graphManager.resetAllNodesToApplyGravitation();var e=new Set(this.getAllNodes()),t=this.nodesWithGravity.filter((function(t){return e.has(t)}));this.graphManager.setAllNodesToApplyGravitation(t),this.graphManager.updateBounds(),this.updateGrid(),this.coolingFactor=u.DEFAULT_COOLING_FACTOR_INCREMENTAL}else this.isTreeGrowing=!1,this.isGrowthFinished=!0;this.growTreeIterations++}if(this.isGrowthFinished){if(this.isConverged())return!0;this.afterGrowthIterations%10==0&&(this.graphManager.updateBounds(),this.updateGrid()),this.coolingFactor=u.DEFAULT_COOLING_FACTOR_INCREMENTAL*((100-this.afterGrowthIterations)/100),this.afterGrowthIterations++}var n=!this.isTreeGrowing&&!this.isGrowthFinished,r=this.growTreeIterations%10==1&&this.isTreeGrowing||this.afterGrowthIterations%10==1&&this.isGrowthFinished;return this.totalDisplacement=0,this.graphManager.updateBounds(),this.calcSpringForces(),this.calcRepulsionForces(n,r),this.calcGravitationalForces(),this.moveNodes(),this.animate(),!1},m.prototype.getPositionsData=function(){for(var e=this.graphManager.getAllNodes(),t={},n=0;n1)for(s=0;sr&&(r=Math.floor(o.y)),a=Math.floor(o.x+l.DEFAULT_COMPONENT_SEPERATION)}this.transform(new d(c.WORLD_CENTER_X-o.x/2,c.WORLD_CENTER_Y-o.y/2))},m.radialLayout=function(e,t,n){var r=Math.max(this.maxDiagonalInTree(e),l.DEFAULT_RADIAL_SEPARATION);m.branchRadialLayout(t,null,0,359,0,r);var i=v.calculateBounds(e),a=new y;a.setDeviceOrgX(i.getMinX()),a.setDeviceOrgY(i.getMinY()),a.setWorldOrgX(n.x),a.setWorldOrgY(n.y);for(var o=0;o1;){var y=v[0];v.splice(0,1);var b=c.indexOf(y);b>=0&&c.splice(b,1),g--,h--}d=null!=t?(c.indexOf(v[0])+1)%g:0;for(var x=Math.abs(r-n)/h,w=d;p!=h;w=++w%g){var E=c[w].getOtherEnd(e);if(E!=t){var _=(n+p*x)%360,T=(_+x)%360;m.branchRadialLayout(E,e,_,T,i+a,a),p++}}},m.maxDiagonalInTree=function(e){for(var t=g.MIN_VALUE,n=0;nt&&(t=r)}return t},m.prototype.calcRepulsionRange=function(){return 2*(this.level+1)*this.idealEdgeLength},m.prototype.groupZeroDegreeMembers=function(){var e=this,t={};this.memberGroups={},this.idToDummyNode={};for(var n=[],r=this.graphManager.getAllNodes(),i=0;i1){var r="DummyCompound_"+n;e.memberGroups[r]=t[n];var i=t[n][0].getParent(),a=new o(e.graphManager);a.id=r,a.paddingLeft=i.paddingLeft||0,a.paddingRight=i.paddingRight||0,a.paddingBottom=i.paddingBottom||0,a.paddingTop=i.paddingTop||0,e.idToDummyNode[r]=a;var s=e.getGraphManager().add(e.newGraph(),a),l=i.getChild();l.add(a);for(var u=0;u=0;e--){var t=this.compoundOrder[e],n=t.id,r=t.paddingLeft,i=t.paddingTop;this.adjustLocations(this.tiledMemberPack[n],t.rect.x,t.rect.y,r,i)}},m.prototype.repopulateZeroDegreeMembers=function(){var e=this,t=this.tiledZeroDegreePack;Object.keys(t).forEach((function(n){var r=e.idToDummyNode[n],i=r.paddingLeft,a=r.paddingTop;e.adjustLocations(t[n],r.rect.x,r.rect.y,i,a)}))},m.prototype.getToBeTiled=function(e){var t=e.id;if(null!=this.toBeTiled[t])return this.toBeTiled[t];var n=e.getChild();if(null==n)return this.toBeTiled[t]=!1,!1;for(var r=n.getNodes(),i=0;i0)return this.toBeTiled[t]=!1,!1;if(null!=a.getChild()){if(!this.getToBeTiled(a))return this.toBeTiled[t]=!1,!1}else this.toBeTiled[a.id]=!1}return this.toBeTiled[t]=!0,!0},m.prototype.getNodeDegree=function(e){e.id;for(var t=e.getEdges(),n=0,r=0;rl&&(l=c.rect.height)}n+=l+e.verticalPadding}},m.prototype.tileCompoundMembers=function(e,t){var n=this;this.tiledMemberPack=[],Object.keys(e).forEach((function(r){var i=t[r];n.tiledMemberPack[r]=n.tileNodes(e[r],i.paddingLeft+i.paddingRight),i.rect.width=n.tiledMemberPack[r].width,i.rect.height=n.tiledMemberPack[r].height}))},m.prototype.tileNodes=function(e,t){var n={rows:[],rowWidth:[],rowHeight:[],width:0,height:t,verticalPadding:l.TILING_PADDING_VERTICAL,horizontalPadding:l.TILING_PADDING_HORIZONTAL};e.sort((function(e,t){return e.rect.width*e.rect.height>t.rect.width*t.rect.height?-1:e.rect.width*e.rect.height0&&(a+=e.horizontalPadding),e.rowWidth[n]=a,e.width0&&(o+=e.verticalPadding);var s=0;o>e.rowHeight[n]&&(s=e.rowHeight[n],e.rowHeight[n]=o,s=e.rowHeight[n]-s),e.height+=s,e.rows[n].push(t)},m.prototype.getShortestRowIndex=function(e){for(var t=-1,n=Number.MAX_VALUE,r=0;rn&&(t=r,n=e.rowWidth[r]);return t},m.prototype.canAddHorizontal=function(e,t,n){var r=this.getShortestRowIndex(e);if(r<0)return!0;var i=e.rowWidth[r];if(i+e.horizontalPadding+t<=e.width)return!0;var a,o,s=0;return e.rowHeight[r]0&&(s=n+e.verticalPadding-e.rowHeight[r]),a=e.width-i>=t+e.horizontalPadding?(e.height+s)/(i+t+e.horizontalPadding):(e.height+s)/e.width,s=n+e.verticalPadding,(o=e.widtha&&t!=n){r.splice(-1,1),e.rows[n].push(i),e.rowWidth[t]=e.rowWidth[t]-a,e.rowWidth[n]=e.rowWidth[n]+a,e.width=e.rowWidth[instance.getLongestRowIndex(e)];for(var o=Number.MIN_VALUE,s=0;so&&(o=r[s].height);t>0&&(o+=e.verticalPadding);var l=e.rowHeight[t]+e.rowHeight[n];e.rowHeight[t]=o,e.rowHeight[n]0)for(var c=i;c<=a;c++)l[0]+=this.grid[c][o-1].length+this.grid[c][o].length-1;if(a0)for(c=o;c<=s;c++)l[3]+=this.grid[i-1][c].length+this.grid[i][c].length-1;for(var h,d,p=g.MAX_VALUE,f=0;f0&&(o=n.getGraphManager().add(n.newGraph(),a),this.processChildrenList(o,h,n))}},h.prototype.stop=function(){return this.stopped=!0,this};var p=function(e){e("layout","cose-bilkent",h)};"undefined"!=typeof cytoscape&&p(cytoscape),e.exports=p}])},e.exports=r(n(75352))},79460:(e,t,n)=>{"use strict";var r=n(10320),i=n(73336),a=n(24416),o=n(19448),s=n(32552),l=n(51768);function u(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var c=u(i),h=u(a),d=u(o),p=u(s),g=u(l);function f(e){return f="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},f(e)}function v(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function y(e,t){for(var n=0;ne.length)&&(t=e.length);for(var n=0,r=new Array(t);nt?1:0},J=null!=Object.assign?Object.assign.bind(Object):function(e){for(var t=arguments,n=1;n255)return;t.push(Math.floor(a))}var o=r[1]||r[2]||r[3],s=r[1]&&r[2]&&r[3];if(o&&!s)return;var l=n[4];if(void 0!==l){if((l=parseFloat(l))<0||l>1)return;t.push(l)}}return t}(e)||function(e){var t,n,r,i,a,o,s,l;function u(e,t,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?e+6*(t-e)*n:n<.5?t:n<2/3?e+(t-e)*(2/3-n)*6:e}var c=new RegExp("^"+K+"$").exec(e);if(c){if((n=parseInt(c[1]))<0?n=(360- -1*n%360)%360:n>360&&(n%=360),n/=360,(r=parseFloat(c[2]))<0||r>100)return;if(r/=100,(i=parseFloat(c[3]))<0||i>100)return;if(i/=100,void 0!==(a=c[4])&&((a=parseFloat(a))<0||a>1))return;if(0===r)o=s=l=Math.round(255*i);else{var h=i<.5?i*(1+r):i+r-i*r,d=2*i-h;o=Math.round(255*u(d,h,n+1/3)),s=Math.round(255*u(d,h,n)),l=Math.round(255*u(d,h,n-1/3))}t=[o,s,l,a]}return t}(e)},te={transparent:[0,0,0,0],aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],grey:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]},ne=function(e){for(var t=e.map,n=e.keys,r=n.length,i=0;i1&&void 0!==arguments[1]?arguments[1]:ue;!(t=e.next()).done;)n=65599*n+t.value|0;return n},de=function(e){return 65599*(arguments.length>1&&void 0!==arguments[1]?arguments[1]:ue)+e|0},pe=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:ce;return(t<<5)+t+e|0},ge=function(e){return 2097152*e[0]+e[1]},fe=function(e,t){return[de(e[0],t[0]),pe(e[1],t[1])]},ve=function(e,t){var n={value:0,done:!1},r=0,i=e.length;return he({next:function(){return r=0&&(e[r]!==t||(e.splice(r,1),!n));r--);},Re=function(e){e.splice(0,e.length)},Be=function(e,t,n){return n&&(t=j(n,t)),e[t]},Fe=function(e,t,n,r){n&&(t=j(n,t)),e[t]=r},ze="undefined"!=typeof Map?Map:function(){function e(){v(this,e),this._obj={}}return m(e,[{key:"set",value:function(e,t){return this._obj[e]=t,this}},{key:"delete",value:function(e){return this._obj[e]=void 0,this}},{key:"clear",value:function(){this._obj={}}},{key:"has",value:function(e){return void 0!==this._obj[e]}},{key:"get",value:function(e){return this._obj[e]}}]),e}(),Ge=function(){function e(t){if(v(this,e),this._obj=Object.create(null),this.size=0,null!=t){var n;n=null!=t.instanceString&&t.instanceString()===this.instanceString()?t.toArray():t;for(var r=0;r2&&void 0!==arguments[2])||arguments[2];if(void 0!==e&&void 0!==t&&F(e)){var r=t.group;if(null==r&&(r=t.data&&null!=t.data.source&&null!=t.data.target?"edges":"nodes"),"nodes"===r||"edges"===r){this.length=1,this[0]=this;var i=this._private={cy:e,single:!0,data:t.data||{},position:t.position||{x:0,y:0},autoWidth:void 0,autoHeight:void 0,autoPadding:void 0,compoundBoundsClean:!1,listeners:[],group:r,style:{},rstyle:{},styleCxts:[],styleKeys:{},removed:!0,selected:!!t.selected,selectable:void 0===t.selectable||!!t.selectable,locked:!!t.locked,grabbed:!1,grabbable:void 0===t.grabbable||!!t.grabbable,pannable:void 0===t.pannable?"edges"===r:!!t.pannable,active:!1,classes:new Ye,animation:{current:[],queue:[]},rscratch:{},scratch:t.scratch||{},edges:[],children:[],parent:t.parent&&t.parent.isNode()?t.parent:null,traversalCache:{},backgrounding:!1,bbCache:null,bbCacheShift:{x:0,y:0},bodyBounds:null,overlayBounds:null,labelBounds:{all:null,source:null,target:null,main:null},arrowBounds:{source:null,target:null,"mid-source":null,"mid-target":null}};if(null==i.position.x&&(i.position.x=0),null==i.position.y&&(i.position.y=0),t.renderedPosition){var a=t.renderedPosition,o=e.pan(),s=e.zoom();i.position={x:(a.x-o.x)/s,y:(a.y-o.y)/s}}var l=[];S(t.classes)?l=t.classes:L(t.classes)&&(l=t.classes.split(/\s+/));for(var u=0,c=l.length;u0;){var E=m.pop(),_=v(E),T=E.id();if(d[T]=_,_!==1/0)for(var D=E.neighborhood().intersect(g),C=0;C0)for(n.unshift(t);c[i];){var a=c[i];n.unshift(a.edge),n.unshift(a.node),i=(r=a.node).id()}return o.spawn(n)}}}},He={kruskal:function(e){e=e||function(e){return 1};for(var t=this.byGroup(),n=t.nodes,r=t.edges,i=n.length,a=new Array(i),o=n,s=function(e){for(var t=0;t0;){if(l=v.pop(),u=l.id(),y.delete(u),E++,u===d){for(var _=[],T=i,D=d,C=b[D];_.unshift(T),null!=C&&_.unshift(C),null!=(T=m[D]);)C=b[D=T.id()];return{found:!0,distance:p[u],path:this.spawn(_),steps:E}}f[u]=!0;for(var N=l._private.edges,A=0;AC&&(p[D]=C,y[D]=T,m[D]=x),!i){var N=T*u+_;!i&&p[N]>C&&(p[N]=C,y[N]=_,m[N]=x)}}}for(var A=0;A1&&void 0!==arguments[1]?arguments[1]:a,r=[],i=m(e);;){if(null==i)return t.spawn();var o=y(i),l=o.edge,u=o.pred;if(r.unshift(i[0]),i.same(n)&&r.length>0)break;null!=l&&r.unshift(l),i=u}return s.spawn(r)},hasNegativeWeightCycle:g,negativeWeightCycles:f}}},et=Math.sqrt(2),tt=function(e,t,n){0===n.length&&Ne("Karger-Stein must be run on a connected (sub)graph");for(var r=n[e],i=r[1],a=r[2],o=t[i],s=t[a],l=n,u=l.length-1;u>=0;u--){var c=l[u],h=c[1],d=c[2];(t[h]===o&&t[d]===s||t[h]===s&&t[d]===o)&&l.splice(u,1)}for(var p=0;pr;){var i=Math.floor(Math.random()*t.length);t=tt(i,e,t),n--}return t},rt={kargerStein:function(){var e=this,t=this.byGroup(),n=t.nodes,r=t.edges;r.unmergeBy((function(e){return e.isLoop()}));var i=n.length,a=r.length,o=Math.ceil(Math.pow(Math.log(i)/Math.LN2,2)),s=Math.floor(i/et);if(!(i<2)){for(var l=[],u=0;u0?1:e<0?-1:0},ct=function(e,t){return Math.sqrt(ht(e,t))},ht=function(e,t){var n=t.x-e.x,r=t.y-e.y;return n*n+r*r},dt=function(e){for(var t=e.length,n=0,r=0;r=e.x1&&e.y2>=e.y1)return{x1:e.x1,y1:e.y1,x2:e.x2,y2:e.y2,w:e.x2-e.x1,h:e.y2-e.y1};if(null!=e.w&&null!=e.h&&e.w>=0&&e.h>=0)return{x1:e.x1,y1:e.y1,x2:e.x1+e.w,y2:e.y1+e.h,w:e.w,h:e.h}}},yt=function(e,t){e.x1=Math.min(e.x1,t.x1),e.x2=Math.max(e.x2,t.x2),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,t.y1),e.y2=Math.max(e.y2,t.y2),e.h=e.y2-e.y1},mt=function(e,t,n){e.x1=Math.min(e.x1,t),e.x2=Math.max(e.x2,t),e.w=e.x2-e.x1,e.y1=Math.min(e.y1,n),e.y2=Math.max(e.y2,n),e.h=e.y2-e.y1},bt=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;return e.x1-=t,e.x2+=t,e.y1-=t,e.y2+=t,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},xt=function(e){var t,n,r,i,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:[0];if(1===a.length)t=n=r=i=a[0];else if(2===a.length)t=r=a[0],i=n=a[1];else if(4===a.length){var o=x(a,4);t=o[0],n=o[1],r=o[2],i=o[3]}return e.x1-=i,e.x2+=n,e.y1-=t,e.y2+=r,e.w=e.x2-e.x1,e.h=e.y2-e.y1,e},wt=function(e,t){e.x1=t.x1,e.y1=t.y1,e.x2=t.x2,e.y2=t.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1},Et=function(e,t){return!(e.x1>t.x2)&&(!(t.x1>e.x2)&&(!(e.x2t.y2)&&!(t.y1>e.y2)))))))},_t=function(e,t,n){return e.x1<=t&&t<=e.x2&&e.y1<=n&&n<=e.y2},Tt=function(e,t){return _t(e,t.x1,t.y1)&&_t(e,t.x2,t.y2)},Dt=function(e,t,n,r,i,a,o){var s,l=Vt(i,a),u=i/2,c=a/2,h=r-c-o;if((s=Bt(e,t,n,r,n-u+l-o,h,n+u-l+o,h,!1)).length>0)return s;var d=n+u+o;if((s=Bt(e,t,n,r,d,r-c+l-o,d,r+c-l+o,!1)).length>0)return s;var p=r+c+o;if((s=Bt(e,t,n,r,n-u+l-o,p,n+u-l+o,p,!1)).length>0)return s;var g,f=n-u-o;if((s=Bt(e,t,n,r,f,r-c+l-o,f,r+c-l+o,!1)).length>0)return s;var v=n-u+l,y=r-c+l;if((g=Pt(e,t,n,r,v,y,l+o)).length>0&&g[0]<=v&&g[1]<=y)return[g[0],g[1]];var m=n+u-l,b=r-c+l;if((g=Pt(e,t,n,r,m,b,l+o)).length>0&&g[0]>=m&&g[1]<=b)return[g[0],g[1]];var x=n+u-l,w=r+c-l;if((g=Pt(e,t,n,r,x,w,l+o)).length>0&&g[0]>=x&&g[1]>=w)return[g[0],g[1]];var E=n-u+l,_=r+c-l;return(g=Pt(e,t,n,r,E,_,l+o)).length>0&&g[0]<=E&&g[1]>=_?[g[0],g[1]]:[]},Ct=function(e,t,n,r,i,a,o){var s=o,l=Math.min(n,i),u=Math.max(n,i),c=Math.min(r,a),h=Math.max(r,a);return l-s<=e&&e<=u+s&&c-s<=t&&t<=h+s},Nt=function(e,t,n,r,i,a,o,s,l){var u=Math.min(n,o,i)-l,c=Math.max(n,o,i)+l,h=Math.min(r,s,a)-l,d=Math.max(r,s,a)+l;return!(ec||td)},At=function(e,t,n,r,i,a,o,s){var l=[];!function(e,t,n,r,i){var a,o,s,l,u,c,h,d;0===e&&(e=1e-5),s=-27*(r/=e)+(t/=e)*(9*(n/=e)-t*t*2),a=(o=(3*n-t*t)/9)*o*o+(s/=54)*s,i[1]=0,h=t/3,a>0?(u=(u=s+Math.sqrt(a))<0?-Math.pow(-u,1/3):Math.pow(u,1/3),c=(c=s-Math.sqrt(a))<0?-Math.pow(-c,1/3):Math.pow(c,1/3),i[0]=-h+u+c,h+=(u+c)/2,i[4]=i[2]=-h,h=Math.sqrt(3)*(-c+u)/2,i[3]=h,i[5]=-h):(i[5]=i[3]=0,0===a?(d=s<0?-Math.pow(-s,1/3):Math.pow(s,1/3),i[0]=2*d-h,i[4]=i[2]=-(d+h)):(l=(o=-o)*o*o,l=Math.acos(s/Math.sqrt(l)),d=2*Math.sqrt(o),i[0]=-h+d*Math.cos(l/3),i[2]=-h+d*Math.cos((l+2*Math.PI)/3),i[4]=-h+d*Math.cos((l+4*Math.PI)/3)))}(1*n*n-4*n*i+2*n*o+4*i*i-4*i*o+o*o+r*r-4*r*a+2*r*s+4*a*a-4*a*s+s*s,9*n*i-3*n*n-3*n*o-6*i*i+3*i*o+9*r*a-3*r*r-3*r*s-6*a*a+3*a*s,3*n*n-6*n*i+n*o-n*e+2*i*i+2*i*e-o*e+3*r*r-6*r*a+r*s-r*t+2*a*a+2*a*t-s*t,1*n*i-n*n+n*e-i*e+r*a-r*r+r*t-a*t,l);for(var u=[],c=0;c<6;c+=2)Math.abs(l[c+1])<1e-7&&l[c]>=0&&l[c]<=1&&u.push(l[c]);u.push(1),u.push(0);for(var h,d,p,g=-1,f=0;f=0?pl?(e-i)*(e-i)+(t-a)*(t-a):u-h},kt=function(e,t,n){for(var r,i,a,o,s=0,l=0;l=e&&e>=a||r<=e&&e<=a))continue;(e-r)/(a-r)*(o-i)+i>t&&s++}return s%2!=0},St=function(e,t,n,r,i,a,o,s,l){var u,c=new Array(n.length);null!=s[0]?(u=Math.atan(s[1]/s[0]),s[0]<0?u+=Math.PI/2:u=-u-Math.PI/2):u=s;for(var h,d=Math.cos(-u),p=Math.sin(-u),g=0;g0){var f=Mt(c,-l);h=It(f)}else h=c;return kt(e,t,h)},It=function(e){for(var t,n,r,i,a,o,s,l,u=new Array(e.length/2),c=0;c=0&&g<=1&&v.push(g),f>=0&&f<=1&&v.push(f),0===v.length)return[];var y=v[0]*s[0]+e,m=v[0]*s[1]+t;return v.length>1?v[0]==v[1]?[y,m]:[y,m,v[1]*s[0]+e,v[1]*s[1]+t]:[y,m]},Rt=function(e,t,n){return t<=e&&e<=n||n<=e&&e<=t?e:e<=t&&t<=n||n<=t&&t<=e?t:n},Bt=function(e,t,n,r,i,a,o,s,l){var u=e-i,c=n-e,h=o-i,d=t-a,p=r-t,g=s-a,f=h*d-g*u,v=c*d-p*u,y=g*c-h*p;if(0!==y){var m=f/y,b=v/y,x=-.001;return x<=m&&m<=1.001&&x<=b&&b<=1.001||l?[e+m*c,t+m*p]:[]}return 0===f||0===v?Rt(e,n,o)===o?[o,s]:Rt(e,n,i)===i?[i,a]:Rt(i,o,n)===n?[n,r]:[]:[]},Ft=function(e,t,n,r,i,a,o,s){var l,u,c,h,d,p,g=[],f=new Array(n.length),v=!0;if(null==a&&(v=!1),v){for(var y=0;y0){var m=Mt(f,-s);u=It(m)}else u=f}else u=n;for(var b=0;bu&&(u=t)},d=function(e){return l[e]},p=0;p0?x.edgesTo(b)[0]:b.edgesTo(x)[0];var E=r(w);b=b.id(),p[b]>p[y]+E&&(p[b]=p[y]+E,g.nodes.indexOf(b)<0?g.push(b):g.updateItem(b),u[b]=0,l[b]=[]),p[b]==p[y]+E&&(u[b]=u[b]+u[y],l[b].push(y))}else for(var _=0;_0;){for(var N=n.pop(),A=0;A0&&o.push(n[s]);0!==o.length&&i.push(r.collection(o))}return i}(c,l,t,r);return b=function(e){for(var t=0;t5&&void 0!==arguments[5]?arguments[5]:hn,o=r,s=0;s=2?yn(e,t,n,0,gn,fn):yn(e,t,n,0,pn)},squaredEuclidean:function(e,t,n){return yn(e,t,n,0,gn)},manhattan:function(e,t,n){return yn(e,t,n,0,pn)},max:function(e,t,n){return yn(e,t,n,-1/0,vn)}};function bn(e,t,n,r,i,a){var o;return o=k(e)?e:mn[e]||mn.euclidean,0===t&&k(e)?o(i,a):o(t,n,r,i,a)}mn["squared-euclidean"]=mn.squaredEuclidean,mn.squaredeuclidean=mn.squaredEuclidean;var xn=Oe({k:2,m:2,sensitivityThreshold:1e-4,distance:"euclidean",maxIterations:10,attributes:[],testMode:!1,testCentroids:null}),wn=function(e){return xn(e)},En=function(e,t,n,r,i){var a="kMedoids"!==i?function(e){return n[e]}:function(e){return r[e](n)},o=n,s=t;return bn(e,r.length,a,(function(e){return r[e](t)}),o,s)},_n=function(e,t,n){for(var r=n.length,i=new Array(r),a=new Array(r),o=new Array(t),s=null,l=0;ln)return!1}return!0},Nn=function(e,t,n){for(var r=0;ri&&(i=t[l][u],a=u);o[a].push(e[l])}for(var c=0;c=i.threshold||"dendrogram"===i.mode&&1===e.length)return!1;var p,g=t[o],f=t[r[o]];p="dendrogram"===i.mode?{left:g,right:f,key:g.key}:{value:g.value.concat(f.value),key:g.key},e[g.index]=p,e.splice(f.index,1),t[g.key]=p;for(var v=0;vn[f.key][y.key]&&(a=n[f.key][y.key])):"max"===i.linkage?(a=n[g.key][y.key],n[g.key][y.key]1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,r=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],i=!(arguments.length>5&&void 0!==arguments[5])||arguments[5];arguments.length>3&&void 0!==arguments[3]&&!arguments[3]?(n0&&e.splice(0,t)):e=e.slice(t,n);for(var a=0,o=e.length-1;o>=0;o--){var s=e[o];i?isFinite(s)||(e[o]=-1/0,a++):e.splice(o,1)}r&&e.sort((function(e,t){return e-t}));var l=e.length,u=Math.floor(l/2);return l%2!=0?e[u+1+a]:(e[u-1+a]+e[u+a])/2}(e):"mean"===t?function(e){for(var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,r=0,i=0,a=t;a1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,r=1/0,i=t;i1&&void 0!==arguments[1]?arguments[1]:0,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:e.length,r=-1/0,i=t;io&&(a=l,o=t[i*e+l])}a>0&&r.push(a)}for(var u=0;u=C?(N=C,C=L,A=k):L>N&&(N=L);for(var S=0;S0?1:0;_[E%u.minIterations*t+F]=z,B+=z}if(B>0&&(E>=u.minIterations-1||E==u.maxIterations-1)){for(var G=0,Y=0;Y0&&r.push(i);return r}(t,a,o),U=function(e,t,n){for(var r=jn(e,t,n),i=0;il&&(s=u,l=c)}n[i]=a[s]}return jn(e,t,n)}(t,r,V),j={},q=0;q1)}}));var l=Object.keys(t).filter((function(e){return t[e].cutVertex})).map((function(t){return e.getElementById(t)}));return{cut:e.spawn(l),components:i}},Kn=function(){var e=this,t={},n=0,r=[],i=[],a=e.spawn(e),o=function o(s){if(i.push(s),t[s]={index:n,low:n++,explored:!1},e.getElementById(s).connectedEdges().intersection(e).forEach((function(e){var n=e.target().id();n!==s&&(n in t||o(n),t[n].explored||(t[s].low=Math.min(t[s].low,t[n].low)))})),t[s].index===t[s].low){for(var l=e.spawn();;){var u=i.pop();if(l.merge(e.getElementById(u)),t[u].low=t[s].index,t[u].explored=!0,u===s)break}var c=l.edgesWith(l),h=l.merge(c);r.push(h),a=a.difference(h)}};return e.forEach((function(e){if(e.isNode()){var n=e.id();n in t||o(n)}})),{cut:a,components:r}},Zn={};[Ue,qe,He,$e,Ze,Je,rt,Ht,$t,Zt,Jt,cn,Mn,Yn,Hn,{hierholzer:function(e){if(!I(e)){var t=arguments;e={root:t[0],directed:t[1]}}var n,r,i,a=Wn(e),o=a.root,s=a.directed,l=this,u=!1;o&&(i=L(o)?this.filter(o)[0].id():o[0].id());var c={},h={};s?l.forEach((function(e){var t=e.id();if(e.isNode()){var i=e.indegree(!0),a=e.outdegree(!0),o=i-a,s=a-i;1==o?n?u=!0:n=t:1==s?r?u=!0:r=t:(s>1||o>1)&&(u=!0),c[t]=[],e.outgoers().forEach((function(e){e.isEdge()&&c[t].push(e.id())}))}else h[t]=[void 0,e.target().id()]})):l.forEach((function(e){var t=e.id();e.isNode()?(e.degree(!0)%2&&(n?r?u=!0:r=t:n=t),c[t]=[],e.connectedEdges().forEach((function(e){return c[t].push(e.id())}))):h[t]=[e.source().id(),e.target().id()]}));var d={found:!1,trail:void 0};if(u)return d;if(r&&n)if(s){if(i&&r!=i)return d;i=r}else{if(i&&r!=i&&n!=i)return d;i||(i=r)}else i||(i=l[0].id());var p=function(e){for(var t,n,r,i=e,a=[e];c[i].length;)t=c[i].shift(),n=h[t][0],i!=(r=h[t][1])?(c[r]=c[r].filter((function(e){return e!=t})),i=r):s||i==n||(c[n]=c[n].filter((function(e){return e!=t})),i=n),a.unshift(t),a.unshift(i);return a},g=[],f=[];for(f=p(i);1!=f.length;)0==c[f[0]].length?(g.unshift(l.getElementById(f.shift())),g.unshift(l.getElementById(f.shift()))):f=p(f.shift()).concat(f);for(var v in g.unshift(l.getElementById(f.shift())),c)if(c[v].length)return d;return d.found=!0,d.trail=this.spawn(g,!0),d}},{hopcroftTarjanBiconnected:$n,htbc:$n,htb:$n,hopcroftTarjanBiconnectedComponents:$n},{tarjanStronglyConnected:Kn,tsc:Kn,tscc:Kn,tarjanStronglyConnectedComponents:Kn}].forEach((function(e){J(Zn,e)}));var Qn=function e(t){if(!(this instanceof e))return new e(t);this.id="Thenable/1.0.7",this.state=0,this.fulfillValue=void 0,this.rejectReason=void 0,this.onFulfilled=[],this.onRejected=[],this.proxy={then:this.then.bind(this)},"function"==typeof t&&t.call(this,this.fulfill.bind(this),this.reject.bind(this))};Qn.prototype={fulfill:function(e){return Jn(this,1,"fulfillValue",e)},reject:function(e){return Jn(this,2,"rejectReason",e)},then:function(e,t){var n=this,r=new Qn;return n.onFulfilled.push(nr(e,r,"fulfill")),n.onRejected.push(nr(t,r,"reject")),er(n),r.proxy}};var Jn=function(e,t,n,r){return 0===e.state&&(e.state=t,e[n]=r,er(e)),e},er=function(e){1===e.state?tr(e,"onFulfilled",e.fulfillValue):2===e.state&&tr(e,"onRejected",e.rejectReason)},tr=function(e,t,n){if(0!==e[t].length){var r=e[t];e[t]=[];var i=function(){for(var e=0;e0:void 0}},clearQueue:function(){return function(){var e=this,t=void 0!==e.length?e:[e];if(!(this._private.cy||this).styleEnabled())return this;for(var n=0;n0&&this.spawn(r).updateStyle().emit("class"),t},addClass:function(e){return this.toggleClass(e,!0)},hasClass:function(e){var t=this[0];return null!=t&&t._private.classes.has(e)},toggleClass:function(e,t){S(e)||(e=e.match(/\S+/g)||[]);for(var n=this,r=void 0===t,i=[],a=0,o=n.length;a0&&this.spawn(i).updateStyle().emit("class"),n},removeClass:function(e){return this.toggleClass(e,!1)},flashClass:function(e,t){var n=this;if(null==t)t=250;else if(0===t)return n;return n.addClass(e),setTimeout((function(){n.removeClass(e)}),t),n}};dr.className=dr.classNames=dr.classes;var pr={metaChar:"[\\!\\\"\\#\\$\\%\\&\\'\\(\\)\\*\\+\\,\\.\\/\\:\\;\\<\\=\\>\\?\\@\\[\\]\\^\\`\\{\\|\\}\\~]",comparatorOp:"=|\\!=|>|>=|<|<=|\\$=|\\^=|\\*=",boolOp:"\\?|\\!|\\^",string:"\"(?:\\\\\"|[^\"])*\"|'(?:\\\\'|[^'])*'",number:H,meta:"degree|indegree|outdegree",separator:"\\s*,\\s*",descendant:"\\s+",child:"\\s+>\\s+",subject:"\\$",group:"node|edge|\\*",directedEdge:"\\s+->\\s+",undirectedEdge:"\\s+<->\\s+"};pr.variable="(?:[\\w-.]|(?:\\\\"+pr.metaChar+"))+",pr.className="(?:[\\w-]|(?:\\\\"+pr.metaChar+"))+",pr.value=pr.string+"|"+pr.number,pr.id=pr.variable,function(){var e,t,n;for(e=pr.comparatorOp.split("|"),n=0;n=0||"="!==t&&(pr.comparatorOp+="|\\!"+t)}();var gr=0,fr=1,vr=2,yr=3,mr=4,br=5,xr=6,wr=7,Er=8,_r=9,Tr=10,Dr=11,Cr=12,Nr=13,Ar=14,Lr=15,kr=16,Sr=17,Ir=18,Mr=19,Or=20,Pr=[{selector:":selected",matches:function(e){return e.selected()}},{selector:":unselected",matches:function(e){return!e.selected()}},{selector:":selectable",matches:function(e){return e.selectable()}},{selector:":unselectable",matches:function(e){return!e.selectable()}},{selector:":locked",matches:function(e){return e.locked()}},{selector:":unlocked",matches:function(e){return!e.locked()}},{selector:":visible",matches:function(e){return e.visible()}},{selector:":hidden",matches:function(e){return!e.visible()}},{selector:":transparent",matches:function(e){return e.transparent()}},{selector:":grabbed",matches:function(e){return e.grabbed()}},{selector:":free",matches:function(e){return!e.grabbed()}},{selector:":removed",matches:function(e){return e.removed()}},{selector:":inside",matches:function(e){return!e.removed()}},{selector:":grabbable",matches:function(e){return e.grabbable()}},{selector:":ungrabbable",matches:function(e){return!e.grabbable()}},{selector:":animated",matches:function(e){return e.animated()}},{selector:":unanimated",matches:function(e){return!e.animated()}},{selector:":parent",matches:function(e){return e.isParent()}},{selector:":childless",matches:function(e){return e.isChildless()}},{selector:":child",matches:function(e){return e.isChild()}},{selector:":orphan",matches:function(e){return e.isOrphan()}},{selector:":nonorphan",matches:function(e){return e.isChild()}},{selector:":compound",matches:function(e){return e.isNode()?e.isParent():e.source().isParent()||e.target().isParent()}},{selector:":loop",matches:function(e){return e.isLoop()}},{selector:":simple",matches:function(e){return e.isSimple()}},{selector:":active",matches:function(e){return e.active()}},{selector:":inactive",matches:function(e){return!e.active()}},{selector:":backgrounding",matches:function(e){return e.backgrounding()}},{selector:":nonbackgrounding",matches:function(e){return!e.backgrounding()}}].sort((function(e,t){return function(e,t){return-1*Q(e,t)}(e.selector,t.selector)})),Rr=function(){for(var e,t={},n=0;n0&&u.edgeCount>0)return Le("The selector `"+e+"` is invalid because it uses both a compound selector and an edge selector"),!1;if(u.edgeCount>1)return Le("The selector `"+e+"` is invalid because it uses multiple edge selectors"),!1;1===u.edgeCount&&Le("The selector `"+e+"` is deprecated. Edge selectors do not take effect on changes to source and target nodes after an edge is added, for performance reasons. Use a class or data selector on edges instead, updating the class or data of an edge when your app detects a change in source or target nodes.")}return!0},toString:function(){if(null!=this.toStringCache)return this.toStringCache;for(var e=function(e){return null==e?"":e},t=function(t){return L(t)?'"'+t+'"':e(t)},n=function(e){return" "+e+" "},r=function(r,a){var o=r.type,s=r.value;switch(o){case gr:var l=e(s);return l.substring(0,l.length-1);case yr:var u=r.field,c=r.operator;return"["+u+n(e(c))+t(s)+"]";case br:var h=r.operator,d=r.field;return"["+e(h)+d+"]";case mr:return"["+r.field+"]";case xr:var p=r.operator;return"[["+r.field+n(e(p))+t(s)+"]]";case wr:return s;case Er:return"#"+s;case _r:return"."+s;case Sr:case Lr:return i(r.parent,a)+n(">")+i(r.child,a);case Ir:case kr:return i(r.ancestor,a)+" "+i(r.descendant,a);case Mr:var g=i(r.left,a),f=i(r.subject,a),v=i(r.right,a);return g+(g.length>0?" ":"")+f+v;case Or:return""}},i=function(e,t){return e.checks.reduce((function(n,i,a){return n+(t===e&&0===a?"$":"")+r(i,t)}),"")},a="",o=0;o1&&o=0&&(t=t.replace("!",""),c=!0),t.indexOf("@")>=0&&(t=t.replace("@",""),u=!0),(o||l||u)&&(i=o||s?""+e:"",a=""+n),u&&(e=i=i.toLowerCase(),n=a=a.toLowerCase()),t){case"*=":r=i.indexOf(a)>=0;break;case"$=":r=i.indexOf(a,i.length-a.length)>=0;break;case"^=":r=0===i.indexOf(a);break;case"=":r=e===n;break;case">":h=!0,r=e>n;break;case">=":h=!0,r=e>=n;break;case"<":h=!0,r=e0;){var u=i.shift();t(u),a.add(u.id()),o&&r(i,a,u)}return e}function ni(e,t,n){if(n.isParent())for(var r=n._private.children,i=0;i1&&void 0!==arguments[1])||arguments[1],ni)},ei.forEachUp=function(e){return ti(this,e,!(arguments.length>1&&void 0!==arguments[1])||arguments[1],ri)},ei.forEachUpAndDown=function(e){return ti(this,e,!(arguments.length>1&&void 0!==arguments[1])||arguments[1],ii)},ei.ancestors=ei.parents,(Zr=Qr={data:cr.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),removeData:cr.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,immutableKeys:{id:!0,source:!0,target:!0,parent:!0},updateStyle:!0}),scratch:cr.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:cr.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),rscratch:cr.data({field:"rscratch",allowBinding:!1,allowSetting:!0,settingTriggersEvent:!1,allowGetting:!0}),removeRscratch:cr.removeData({field:"rscratch",triggerEvent:!1}),id:function(){var e=this[0];if(e)return e._private.data.id}}).attr=Zr.data,Zr.removeAttr=Zr.removeData;var ai,oi,si=Qr,li={};function ui(e){return function(t){var n=this;if(void 0===t&&(t=!0),0!==n.length&&n.isNode()&&!n.removed()){for(var r=0,i=n[0],a=i._private.edges,o=0;ot})),minIndegree:ci("indegree",(function(e,t){return et})),minOutdegree:ci("outdegree",(function(e,t){return et}))}),J(li,{totalDegree:function(e){for(var t=0,n=this.nodes(),r=0;r0,c=u;u&&(l=l[0]);var h=c?l.position():{x:0,y:0};return i={x:s.x-h.x,y:s.y-h.y},void 0===e?i:i[e]}for(var d=0;d0,v=f;f&&(g=g[0]);var y=v?g.position():{x:0,y:0};void 0!==t?p.position(e,t+y[e]):void 0!==i&&p.position({x:i.x+y.x,y:i.y+y.y})}}else if(!a)return;return this}},ai.modelPosition=ai.point=ai.position,ai.modelPositions=ai.points=ai.positions,ai.renderedPoint=ai.renderedPosition,ai.relativePoint=ai.relativePosition;var pi,gi,fi=oi;pi=gi={},gi.renderedBoundingBox=function(e){var t=this.boundingBox(e),n=this.cy(),r=n.zoom(),i=n.pan(),a=t.x1*r+i.x,o=t.x2*r+i.x,s=t.y1*r+i.y,l=t.y2*r+i.y;return{x1:a,x2:o,y1:s,y2:l,w:o-a,h:l-s}},gi.dirtyCompoundBoundsCache=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.cy();return t.styleEnabled()&&t.hasCompoundNodes()?(this.forEachUp((function(t){if(t.isParent()){var n=t._private;n.compoundBoundsClean=!1,n.bbCache=null,e||t.emitAndNotify("bounds")}})),this):this},gi.updateCompoundBounds=function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this.cy();if(!t.styleEnabled()||!t.hasCompoundNodes())return this;if(!e&&t.batching())return this;function n(e){if(e.isParent()){var t=e._private,n=e.children(),r="include"===e.pstyle("compound-sizing-wrt-labels").value,i={width:{val:e.pstyle("min-width").pfValue,left:e.pstyle("min-width-bias-left"),right:e.pstyle("min-width-bias-right")},height:{val:e.pstyle("min-height").pfValue,top:e.pstyle("min-height-bias-top"),bottom:e.pstyle("min-height-bias-bottom")}},a=n.boundingBox({includeLabels:r,includeOverlays:!1,useCache:!1}),o=t.position;0!==a.w&&0!==a.h||((a={w:e.pstyle("width").pfValue,h:e.pstyle("height").pfValue}).x1=o.x-a.w/2,a.x2=o.x+a.w/2,a.y1=o.y-a.h/2,a.y2=o.y+a.h/2);var s=i.width.left.value;"px"===i.width.left.units&&i.width.val>0&&(s=100*s/i.width.val);var l=i.width.right.value;"px"===i.width.right.units&&i.width.val>0&&(l=100*l/i.width.val);var u=i.height.top.value;"px"===i.height.top.units&&i.height.val>0&&(u=100*u/i.height.val);var c=i.height.bottom.value;"px"===i.height.bottom.units&&i.height.val>0&&(c=100*c/i.height.val);var h=y(i.width.val-a.w,s,l),d=h.biasDiff,p=h.biasComplementDiff,g=y(i.height.val-a.h,u,c),f=g.biasDiff,v=g.biasComplementDiff;t.autoPadding=function(e,t,n,r){if("%"!==n.units)return"px"===n.units?n.pfValue:0;switch(r){case"width":return e>0?n.pfValue*e:0;case"height":return t>0?n.pfValue*t:0;case"average":return e>0&&t>0?n.pfValue*(e+t)/2:0;case"min":return e>0&&t>0?e>t?n.pfValue*t:n.pfValue*e:0;case"max":return e>0&&t>0?e>t?n.pfValue*e:n.pfValue*t:0;default:return 0}}(a.w,a.h,e.pstyle("padding"),e.pstyle("padding-relative-to").value),t.autoWidth=Math.max(a.w,i.width.val),o.x=(-d+a.x1+a.x2+p)/2,t.autoHeight=Math.max(a.h,i.height.val),o.y=(-f+a.y1+a.y2+v)/2}function y(e,t,n){var r=0,i=0,a=t+n;return e>0&&a>0&&(r=t/a*e,i=n/a*e),{biasDiff:r,biasComplementDiff:i}}}for(var r=0;re.x2?r:e.x2,e.y1=ne.y2?i:e.y2,e.w=e.x2-e.x1,e.h=e.y2-e.y1)},mi=function(e,t){return null==t?e:yi(e,t.x1,t.y1,t.x2,t.y2)},bi=function(e,t,n){return Be(e,t,n)},xi=function(e,t,n){if(!t.cy().headless()){var r,i,a=t._private,o=a.rstyle,s=o.arrowWidth/2;if("none"!==t.pstyle(n+"-arrow-shape").value){"source"===n?(r=o.srcX,i=o.srcY):"target"===n?(r=o.tgtX,i=o.tgtY):(r=o.midX,i=o.midY);var l=a.arrowBounds=a.arrowBounds||{},u=l[n]=l[n]||{};u.x1=r-s,u.y1=i-s,u.x2=r+s,u.y2=i+s,u.w=u.x2-u.x1,u.h=u.y2-u.y1,bt(u,1),yi(e,u.x1,u.y1,u.x2,u.y2)}}},wi=function(e,t,n){if(!t.cy().headless()){var r;r=n?n+"-":"";var i=t._private,a=i.rstyle;if(t.pstyle(r+"label").strValue){var o,s,l,u,c=t.pstyle("text-halign"),h=t.pstyle("text-valign"),d=bi(a,"labelWidth",n),p=bi(a,"labelHeight",n),g=bi(a,"labelX",n),f=bi(a,"labelY",n),v=t.pstyle(r+"text-margin-x").pfValue,y=t.pstyle(r+"text-margin-y").pfValue,m=t.isEdge(),b=t.pstyle(r+"text-rotation"),x=t.pstyle("text-outline-width").pfValue,w=t.pstyle("text-border-width").pfValue/2,E=t.pstyle("text-background-padding").pfValue,_=p,T=d,D=T/2,C=_/2;if(m)o=g-D,s=g+D,l=f-C,u=f+C;else{switch(c.value){case"left":o=g-T,s=g;break;case"center":o=g-D,s=g+D;break;case"right":o=g,s=g+T}switch(h.value){case"top":l=f-_,u=f;break;case"center":l=f-C,u=f+C;break;case"bottom":l=f,u=f+_}}o+=v-Math.max(x,w)-E-2,s+=v+Math.max(x,w)+E+2,l+=y-Math.max(x,w)-E-2,u+=y+Math.max(x,w)+E+2;var N=n||"main",A=i.labelBounds,L=A[N]=A[N]||{};L.x1=o,L.y1=l,L.x2=s,L.y2=u,L.w=s-o,L.h=u-l;var k=m&&"autorotate"===b.strValue,S=null!=b.pfValue&&0!==b.pfValue;if(k||S){var I=k?bi(i.rstyle,"labelAngle",n):b.pfValue,M=Math.cos(I),O=Math.sin(I),P=(o+s)/2,R=(l+u)/2;if(!m){switch(c.value){case"left":P=s;break;case"right":P=o}switch(h.value){case"top":R=u;break;case"bottom":R=l}}var B=function(e,t){return{x:(e-=P)*M-(t-=R)*O+P,y:e*O+t*M+R}},F=B(o,l),z=B(o,u),G=B(s,l),Y=B(s,u);o=Math.min(F.x,z.x,G.x,Y.x),s=Math.max(F.x,z.x,G.x,Y.x),l=Math.min(F.y,z.y,G.y,Y.y),u=Math.max(F.y,z.y,G.y,Y.y)}var X=N+"Rot",V=A[X]=A[X]||{};V.x1=o,V.y1=l,V.x2=s,V.y2=u,V.w=s-o,V.h=u-l,yi(e,o,l,s,u),yi(i.labelBounds.all,o,l,s,u)}return e}},Ei=function(e,t){var n,r,i,a,o,s,l,u=e._private.cy,c=u.styleEnabled(),h=u.headless(),d=vt(),p=e._private,g=e.isNode(),f=e.isEdge(),v=p.rstyle,y=g&&c?e.pstyle("bounds-expansion").pfValue:[0],m=function(e){return"none"!==e.pstyle("display").value},b=!c||m(e)&&(!f||m(e.source())&&m(e.target()));if(b){var x=0;c&&t.includeOverlays&&0!==e.pstyle("overlay-opacity").value&&(x=e.pstyle("overlay-padding").value);var w=0;c&&t.includeUnderlays&&0!==e.pstyle("underlay-opacity").value&&(w=e.pstyle("underlay-padding").value);var E=Math.max(x,w),_=0;if(c&&(_=e.pstyle("width").pfValue/2),g&&t.includeNodes){var T=e.position();o=T.x,s=T.y;var D=e.outerWidth()/2,C=e.outerHeight()/2;yi(d,n=o-D,i=s-C,r=o+D,a=s+C),c&&t.includeOutlines&&function(e,t){if(!t.cy().headless()){var n,r,i,a=t.pstyle("outline-opacity").value,o=t.pstyle("outline-width").value;if(a>0&&o>0){var s=t.pstyle("outline-offset").value,l=t.pstyle("shape").value,u=o+s,c=(e.w+2*u)/e.w,h=(e.h+2*u)/e.h,d=0;["diamond","pentagon","round-triangle"].includes(l)?(c=(e.w+2.4*u)/e.w,d=-u/3.6):["concave-hexagon","rhomboid","right-rhomboid"].includes(l)?c=(e.w+2.4*u)/e.w:"star"===l?(c=(e.w+2.8*u)/e.w,h=(e.h+2.6*u)/e.h,d=-u/3.8):"triangle"===l?(c=(e.w+2.8*u)/e.w,h=(e.h+2.4*u)/e.h,d=-u/1.4):"vee"===l&&(c=(e.w+4.4*u)/e.w,h=(e.h+3.8*u)/e.h,d=.5*-u);var p=e.h*h-e.h,g=e.w*c-e.w;if(xt(e,[Math.ceil(p/2),Math.ceil(g/2)]),0!==d){var f=(r=0,i=d,{x1:(n=e).x1+r,x2:n.x2+r,y1:n.y1+i,y2:n.y2+i,w:n.w,h:n.h});yt(e,f)}}}}(d,e)}else if(f&&t.includeEdges)if(c&&!h){var N=e.pstyle("curve-style").strValue;if(n=Math.min(v.srcX,v.midX,v.tgtX),r=Math.max(v.srcX,v.midX,v.tgtX),i=Math.min(v.srcY,v.midY,v.tgtY),a=Math.max(v.srcY,v.midY,v.tgtY),yi(d,n-=_,i-=_,r+=_,a+=_),"haystack"===N){var A=v.haystackPts;if(A&&2===A.length){if(n=A[0].x,i=A[0].y,n>(r=A[1].x)){var L=n;n=r,r=L}if(i>(a=A[1].y)){var k=i;i=a,a=k}yi(d,n-_,i-_,r+_,a+_)}}else if("bezier"===N||"unbundled-bezier"===N||"segments"===N||"taxi"===N){var S;switch(N){case"bezier":case"unbundled-bezier":S=v.bezierPts;break;case"segments":case"taxi":S=v.linePts}if(null!=S)for(var I=0;I(r=P.x)){var R=n;n=r,r=R}if((i=O.y)>(a=P.y)){var B=i;i=a,a=B}yi(d,n-=_,i-=_,r+=_,a+=_)}if(c&&t.includeEdges&&f&&(xi(d,e,"mid-source"),xi(d,e,"mid-target"),xi(d,e,"source"),xi(d,e,"target")),c)if("yes"===e.pstyle("ghost").value){var F=e.pstyle("ghost-offset-x").pfValue,z=e.pstyle("ghost-offset-y").pfValue;yi(d,d.x1+F,d.y1+z,d.x2+F,d.y2+z)}var G=p.bodyBounds=p.bodyBounds||{};wt(G,d),xt(G,y),bt(G,1),c&&(n=d.x1,r=d.x2,i=d.y1,a=d.y2,yi(d,n-E,i-E,r+E,a+E));var Y=p.overlayBounds=p.overlayBounds||{};wt(Y,d),xt(Y,y),bt(Y,1);var X=p.labelBounds=p.labelBounds||{};null!=X.all?((l=X.all).x1=1/0,l.y1=1/0,l.x2=-1/0,l.y2=-1/0,l.w=0,l.h=0):X.all=vt(),c&&t.includeLabels&&(t.includeMainLabels&&wi(d,e,null),f&&(t.includeSourceLabels&&wi(d,e,"source"),t.includeTargetLabels&&wi(d,e,"target")))}return d.x1=vi(d.x1),d.y1=vi(d.y1),d.x2=vi(d.x2),d.y2=vi(d.y2),d.w=vi(d.x2-d.x1),d.h=vi(d.y2-d.y1),d.w>0&&d.h>0&&b&&(xt(d,y),bt(d,1)),d},_i=function(e){var t=0,n=function(e){return(e?1:0)<0&&void 0!==arguments[0]?arguments[0]:Vi,t=arguments.length>1?arguments[1]:void 0,n=0;n=0;s--)o(s);return this},ji.removeAllListeners=function(){return this.removeListener("*")},ji.emit=ji.trigger=function(e,t,n){var r=this.listeners,i=r.length;return this.emitting++,S(t)||(t=[t]),Wi(this,(function(e,a){null!=n&&(r=[{event:a.event,type:a.type,namespace:a.namespace,callback:n}],i=r.length);for(var o=function(n){var i=r[n];if(i.type===a.type&&(!i.namespace||i.namespace===a.namespace||".*"===i.namespace)&&e.eventMatches(e.context,i,a)){var o=[a];null!=t&&function(e,t){for(var n=0;n1&&!r){var i=this.length-1,a=this[i],o=a._private.data.id;this[i]=void 0,this[e]=a,n.set(o,{ele:a,index:e})}return this.length--,this},unmergeOne:function(e){e=e[0];var t=this._private,n=e._private.data.id,r=t.map.get(n);if(!r)return this;var i=r.index;return this.unmergeAt(i),this},unmerge:function(e){var t=this._private.cy;if(!e)return this;if(e&&L(e)){var n=e;e=t.mutableElements().filter(n)}for(var r=0;r=0;t--){e(this[t])&&this.unmergeAt(t)}return this},map:function(e,t){for(var n=[],r=this,i=0;ir&&(r=s,n=o)}return{value:r,ele:n}},min:function(e,t){for(var n,r=1/0,i=this,a=0;a=0&&i1&&void 0!==arguments[1])||arguments[1],n=this[0],r=n.cy();if(r.styleEnabled()&&n){this.cleanStyle();var i=n._private.style[e];return null!=i?i:t?r.style().getDefaultProperty(e):null}},numericStyle:function(e){var t=this[0];if(t.cy().styleEnabled()&&t){var n=t.pstyle(e);return void 0!==n.pfValue?n.pfValue:n.value}},numericStyleUnits:function(e){var t=this[0];if(t.cy().styleEnabled())return t?t.pstyle(e).units:void 0},renderedStyle:function(e){var t=this.cy();if(!t.styleEnabled())return this;var n=this[0];return n?t.style().getRenderedStyle(n,e):void 0},style:function(e,t){var n=this.cy();if(!n.styleEnabled())return this;var r=n.style();if(I(e)){var i=e;r.applyBypass(this,i,false),this.emitAndNotify("style")}else if(L(e)){if(void 0===t){var a=this[0];return a?r.getStylePropertyValue(a,e):void 0}r.applyBypass(this,e,t,false),this.emitAndNotify("style")}else if(void 0===e){var o=this[0];return o?r.getRawStyle(o):void 0}return this},removeStyle:function(e){var t=this.cy();if(!t.styleEnabled())return this;var n=t.style(),r=this;if(void 0===e)for(var i=0;i0&&t.push(c[0]),t.push(s[0])}return this.spawn(t,!0).filter(e)}),"neighborhood"),closedNeighborhood:function(e){return this.neighborhood().add(this).filter(e)},openNeighborhood:function(e){return this.neighborhood(e)}}),ba.neighbourhood=ba.neighborhood,ba.closedNeighbourhood=ba.closedNeighborhood,ba.openNeighbourhood=ba.openNeighborhood,J(ba,{source:Jr((function(e){var t,n=this[0];return n&&(t=n._private.source||n.cy().collection()),t&&e?t.filter(e):t}),"source"),target:Jr((function(e){var t,n=this[0];return n&&(t=n._private.target||n.cy().collection()),t&&e?t.filter(e):t}),"target"),sources:_a({attr:"source"}),targets:_a({attr:"target"})}),J(ba,{edgesWith:Jr(Ta(),"edgesWith"),edgesTo:Jr(Ta({thisIsSrc:!0}),"edgesTo")}),J(ba,{connectedEdges:Jr((function(e){for(var t=[],n=0;n0);return a},component:function(){var e=this[0];return e.cy().mutableElements().components(e)[0]}}),ba.componentsOf=ba.components;var Ca=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(void 0!==e){var i=new ze,a=!1;if(t){if(t.length>0&&I(t[0])&&!R(t[0])){a=!0;for(var o=[],s=new Ye,l=0,u=t.length;l0&&void 0!==arguments[0])||arguments[0],r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=this,a=i.cy(),o=a._private,s=[],l=[],u=0,c=i.length;u0){for(var R=e.length===i.length?i:new Ca(a,e),B=0;B0&&void 0!==arguments[0])||arguments[0],t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this,r=[],i={},a=n._private.cy;function o(e){var n=i[e.id()];t&&e.removed()||n||(i[e.id()]=!0,e.isNode()?(r.push(e),function(e){for(var t=e._private.edges,n=0;n0&&(e?_.emitAndNotify("remove"):t&&_.emit("remove"));for(var T=0;T=.001?function(t,r){for(var a=0;a0?i=l:r=l}while(Math.abs(s)>a&&++uh&&Math.abs(s.v)>h;);return a?function(e){return u[e*(u.length-1)|0]}:c}}(),Sa=function(e,t,n,r){var i=La(e,t,n,r);return function(e,t,n){return e+(t-e)*i(n)}},Ia={linear:function(e,t,n){return e+(t-e)*n},ease:Sa(.25,.1,.25,1),"ease-in":Sa(.42,0,1,1),"ease-out":Sa(0,0,.58,1),"ease-in-out":Sa(.42,0,.58,1),"ease-in-sine":Sa(.47,0,.745,.715),"ease-out-sine":Sa(.39,.575,.565,1),"ease-in-out-sine":Sa(.445,.05,.55,.95),"ease-in-quad":Sa(.55,.085,.68,.53),"ease-out-quad":Sa(.25,.46,.45,.94),"ease-in-out-quad":Sa(.455,.03,.515,.955),"ease-in-cubic":Sa(.55,.055,.675,.19),"ease-out-cubic":Sa(.215,.61,.355,1),"ease-in-out-cubic":Sa(.645,.045,.355,1),"ease-in-quart":Sa(.895,.03,.685,.22),"ease-out-quart":Sa(.165,.84,.44,1),"ease-in-out-quart":Sa(.77,0,.175,1),"ease-in-quint":Sa(.755,.05,.855,.06),"ease-out-quint":Sa(.23,1,.32,1),"ease-in-out-quint":Sa(.86,0,.07,1),"ease-in-expo":Sa(.95,.05,.795,.035),"ease-out-expo":Sa(.19,1,.22,1),"ease-in-out-expo":Sa(1,0,0,1),"ease-in-circ":Sa(.6,.04,.98,.335),"ease-out-circ":Sa(.075,.82,.165,1),"ease-in-out-circ":Sa(.785,.135,.15,.86),spring:function(e,t,n){if(0===n)return Ia.linear;var r=ka(e,t,n);return function(e,t,n){return e+(t-e)*r(n)}},"cubic-bezier":Sa};function Ma(e,t,n,r,i){if(1===r)return n;if(t===n)return n;var a=i(t,n,r);return null==e||((e.roundValue||e.color)&&(a=Math.round(a)),void 0!==e.min&&(a=Math.max(a,e.min)),void 0!==e.max&&(a=Math.min(a,e.max))),a}function Oa(e,t){return null!=e.pfValue||null!=e.value?null==e.pfValue||null!=t&&"%"===t.type.units?e.value:e.pfValue:e}function Pa(e,t,n,r,i){var a=null!=i?i.type:null;n<0?n=0:n>1&&(n=1);var o=Oa(e,i),s=Oa(t,i);if(M(o)&&M(s))return Ma(a,o,s,n,r);if(S(o)&&S(s)){for(var l=[],u=0;u0?("spring"===h&&d.push(o.duration),o.easingImpl=Ia[h].apply(null,d)):o.easingImpl=Ia[h]}var p,g=o.easingImpl;if(p=0===o.duration?1:(n-l)/o.duration,o.applying&&(p=o.progress),p<0?p=0:p>1&&(p=1),null==o.delay){var f=o.startPosition,v=o.position;if(v&&i&&!e.locked()){var y={};Ba(f.x,v.x)&&(y.x=Pa(f.x,v.x,p,g)),Ba(f.y,v.y)&&(y.y=Pa(f.y,v.y,p,g)),e.position(y)}var m=o.startPan,b=o.pan,x=a.pan,w=null!=b&&r;w&&(Ba(m.x,b.x)&&(x.x=Pa(m.x,b.x,p,g)),Ba(m.y,b.y)&&(x.y=Pa(m.y,b.y,p,g)),e.emit("pan"));var E=o.startZoom,_=o.zoom,T=null!=_&&r;T&&(Ba(E,_)&&(a.zoom=ft(a.minZoom,Pa(E,_,p,g),a.maxZoom)),e.emit("zoom")),(w||T)&&e.emit("viewport");var D=o.style;if(D&&D.length>0&&i){for(var C=0;C=0;t--){(0,e[t])()}e.splice(0,e.length)},c=a.length-1;c>=0;c--){var h=a[c],d=h._private;d.stopped?(a.splice(c,1),d.hooked=!1,d.playing=!1,d.started=!1,u(d.frames)):(d.playing||d.applying)&&(d.playing&&d.applying&&(d.applying=!1),d.started||Fa(0,h,e),Ra(t,h,e,n),d.applying&&(d.applying=!1),u(d.frames),null!=d.step&&d.step(e),h.completed()&&(a.splice(c,1),d.hooked=!1,d.playing=!1,d.started=!1,u(d.completes)),s=!0)}return n||0!==a.length||0!==o.length||r.push(t),s}for(var a=!1,o=0;o0?t.notify("draw",n):t.notify("draw")),n.unmerge(r),t.emit("step")}var Ga={animate:cr.animate(),animation:cr.animation(),animated:cr.animated(),clearQueue:cr.clearQueue(),delay:cr.delay(),delayAnimation:cr.delayAnimation(),stop:cr.stop(),addToAnimationPool:function(e){this.styleEnabled()&&this._private.aniEles.merge(e)},stopAnimationLoop:function(){this._private.animationsRunning=!1},startAnimationLoop:function(){var e=this;if(e._private.animationsRunning=!0,e.styleEnabled()){var t=e.renderer();t&&t.beforeRender?t.beforeRender((function(t,n){za(n,e)}),t.beforeRenderPriorities.animations):function t(){e._private.animationsRunning&&se((function(n){za(n,e),t()}))}()}}},Ya={qualifierCompare:function(e,t){return null==e||null==t?null==e&&null==t:e.sameText(t)},eventMatches:function(e,t,n){var r=t.qualifier;return null==r||e!==n.target&&R(n.target)&&r.matches(n.target)},addEventFields:function(e,t){t.cy=e,t.target=e},callbackContext:function(e,t,n){return null!=t.qualifier?n.target:e}},Xa=function(e){return L(e)?new Wr(e):e},Va={createEmitter:function(){var e=this._private;return e.emitter||(e.emitter=new Ui(Ya,this)),this},emitter:function(){return this._private.emitter},on:function(e,t,n){return this.emitter().on(e,Xa(t),n),this},removeListener:function(e,t,n){return this.emitter().removeListener(e,Xa(t),n),this},removeAllListeners:function(){return this.emitter().removeAllListeners(),this},one:function(e,t,n){return this.emitter().one(e,Xa(t),n),this},once:function(e,t,n){return this.emitter().one(e,Xa(t),n),this},emit:function(e,t){return this.emitter().emit(e,t),this},emitAndNotify:function(e,t){return this.emit(e),this.notify(e,t),this}};cr.eventAliasesOn(Va);var Ua={png:function(e){return e=e||{},this._private.renderer.png(e)},jpg:function(e){var t=this._private.renderer;return(e=e||{}).bg=e.bg||"#fff",t.jpg(e)}};Ua.jpeg=Ua.jpg;var ja={layout:function(e){var t=this;if(null!=e)if(null!=e.name){var n=e.name,r=t.extension("layout",n);if(null!=r){var i;i=L(e.eles)?t.$(e.eles):null!=e.eles?e.eles:t.$();var a=new r(J({},e,{cy:t,eles:i}));return a}Ne("No such layout `"+n+"` found. Did you forget to import it and `cytoscape.use()` it?")}else Ne("A `name` must be specified to make a layout");else Ne("Layout options must be specified to make a layout")}};ja.createLayout=ja.makeLayout=ja.layout;var qa={notify:function(e,t){var n=this._private;if(this.batching()){n.batchNotifications=n.batchNotifications||{};var r=n.batchNotifications[e]=n.batchNotifications[e]||this.collection();null!=t&&r.merge(t)}else if(n.notificationsEnabled){var i=this.renderer();!this.destroyed()&&i&&i.notify(e,t)}},notifications:function(e){var t=this._private;return void 0===e?t.notificationsEnabled:(t.notificationsEnabled=!!e,this)},noNotifications:function(e){this.notifications(!1),e(),this.notifications(!0)},batching:function(){return this._private.batchCount>0},startBatch:function(){var e=this._private;return null==e.batchCount&&(e.batchCount=0),0===e.batchCount&&(e.batchStyleEles=this.collection(),e.batchNotifications={}),e.batchCount++,this},endBatch:function(){var e=this._private;if(0===e.batchCount)return this;if(e.batchCount--,0===e.batchCount){e.batchStyleEles.updateStyle();var t=this.renderer();Object.keys(e.batchNotifications).forEach((function(n){var r=e.batchNotifications[n];r.empty()?t.notify(n):t.notify(n,r)}))}return this},batch:function(e){return this.startBatch(),e(),this.endBatch(),this},batchData:function(e){var t=this;return this.batch((function(){for(var n=Object.keys(e),r=0;r0;)t.removeChild(t.childNodes[0]);e._private.renderer=null,e.mutableElements().forEach((function(e){var t=e._private;t.rscratch={},t.rstyle={},t.animation.current=[],t.animation.queue=[]}))},onRender:function(e){return this.on("render",e)},offRender:function(e){return this.off("render",e)}};Wa.invalidateDimensions=Wa.resize;var $a={collection:function(e,t){return L(e)?this.$(e):P(e)?e.collection():S(e)?(t||(t={}),new Ca(this,e,t.unique,t.removed)):new Ca(this)},nodes:function(e){var t=this.$((function(e){return e.isNode()}));return e?t.filter(e):t},edges:function(e){var t=this.$((function(e){return e.isEdge()}));return e?t.filter(e):t},$:function(e){var t=this._private.elements;return e?t.filter(e):t.spawnSelf()},mutableElements:function(){return this._private.elements}};$a.elements=$a.filter=$a.$;var Ka={},Za="t";Ka.apply=function(e){for(var t=this,n=t._private.cy.collection(),r=0;r0;if(d||h&&p){var g=void 0;d&&p||d?g=u.properties:p&&(g=u.mappedProperties);for(var f=0;f1&&(v=1),s.color){var w=i.valueMin[0],E=i.valueMax[0],_=i.valueMin[1],T=i.valueMax[1],D=i.valueMin[2],C=i.valueMax[2],N=null==i.valueMin[3]?1:i.valueMin[3],A=null==i.valueMax[3]?1:i.valueMax[3],L=[Math.round(w+(E-w)*v),Math.round(_+(T-_)*v),Math.round(D+(C-D)*v),Math.round(N+(A-N)*v)];n={bypass:i.bypass,name:i.name,value:L,strValue:"rgb("+L[0]+", "+L[1]+", "+L[2]+")"}}else{if(!s.number)return!1;var k=i.valueMin+(i.valueMax-i.valueMin)*v;n=this.parse(i.name,k,i.bypass,d)}if(!n)return f(),!1;n.mapping=i,i=n;break;case o.data:for(var S=i.field.split("."),I=h.data,O=0;O0&&a>0){for(var s={},l=!1,u=0;u0?e.delayAnimation(o).play().promise().then(t):t()})).then((function(){return e.animation({style:s,duration:a,easing:e.pstyle("transition-timing-function").value,queue:!1}).play().promise()})).then((function(){n.removeBypasses(e,i),e.emitAndNotify("style"),r.transitioning=!1}))}else r.transitioning&&(this.removeBypasses(e,i),e.emitAndNotify("style"),r.transitioning=!1)},Ka.checkTrigger=function(e,t,n,r,i,a){var o=this.properties[t],s=i(o);null!=s&&s(n,r)&&a(o)},Ka.checkZOrderTrigger=function(e,t,n,r){var i=this;this.checkTrigger(e,t,n,r,(function(e){return e.triggersZOrder}),(function(){i._private.cy.notify("zorder",e)}))},Ka.checkBoundsTrigger=function(e,t,n,r){this.checkTrigger(e,t,n,r,(function(e){return e.triggersBounds}),(function(i){e.dirtyCompoundBoundsCache(),e.dirtyBoundingBoxCache(),!i.triggersBoundsOfParallelBeziers||"curve-style"!==t||"bezier"!==n&&"bezier"!==r||e.parallelEdges().forEach((function(e){e.isBundledBezier()&&e.dirtyBoundingBoxCache()})),!i.triggersBoundsOfConnectedEdges||"display"!==t||"none"!==n&&"none"!==r||e.connectedEdges().forEach((function(e){e.dirtyBoundingBoxCache()}))}))},Ka.checkTriggers=function(e,t,n,r){e.dirtyStyleCache(),this.checkZOrderTrigger(e,t,n,r),this.checkBoundsTrigger(e,t,n,r)};var Qa={applyBypass:function(e,t,n,r){var i=[];if("*"===t||"**"===t){if(void 0!==n)for(var a=0;at.length?a.substr(t.length):""}function s(){n=n.length>r.length?n.substr(r.length):""}for(a=a.replace(/[/][*](\s|.)+?[*][/]/g,"");;){if(a.match(/^\s*$/))break;var l=a.match(/^\s*((?:.|\s)+?)\s*\{((?:.|\s)+?)\}/);if(!l){Le("Halting stylesheet parsing: String stylesheet contains more to parse but no selector and block found in: "+a);break}t=l[0];var u=l[1];if("core"!==u)if(new Wr(u).invalid){Le("Skipping parsing of block: Invalid selector found in string stylesheet: "+u),o();continue}var c=l[2],h=!1;n=c;for(var d=[];;){if(n.match(/^\s*$/))break;var p=n.match(/^\s*(.+?)\s*:\s*(.+?)(?:\s*;|\s*$)/);if(!p){Le("Skipping parsing of block: Invalid formatting of style property and value definitions found in:"+c),h=!0;break}r=p[0];var g=p[1],f=p[2];if(this.properties[g])i.parse(g,f)?(d.push({name:g,val:f}),s()):(Le("Skipping property: Invalid property definition in: "+r),s());else Le("Skipping property: Invalid property name in: "+r),s()}if(h){o();break}i.selector(u);for(var v=0;v=7&&"d"===t[0]&&(u=new RegExp(s.data.regex).exec(t))){if(n)return!1;var d=s.data;return{name:e,value:u,strValue:""+t,mapped:d,field:u[1],bypass:n}}if(t.length>=10&&"m"===t[0]&&(c=new RegExp(s.mapData.regex).exec(t))){if(n)return!1;if(h.multiple)return!1;var p=s.mapData;if(!h.color&&!h.number)return!1;var g=this.parse(e,c[4]);if(!g||g.mapped)return!1;var f=this.parse(e,c[5]);if(!f||f.mapped)return!1;if(g.pfValue===f.pfValue||g.strValue===f.strValue)return Le("`"+e+": "+t+"` is not a valid mapper because the output range is zero; converting to `"+e+": "+g.strValue+"`"),this.parse(e,g.strValue);if(h.color){var v=g.value,y=f.value;if(!(v[0]!==y[0]||v[1]!==y[1]||v[2]!==y[2]||v[3]!==y[3]&&(null!=v[3]&&1!==v[3]||null!=y[3]&&1!==y[3])))return!1}return{name:e,value:c,strValue:""+t,mapped:p,field:c[1],fieldMin:parseFloat(c[2]),fieldMax:parseFloat(c[3]),valueMin:g.value,valueMax:f.value,bypass:n}}}if(h.multiple&&"multiple"!==r){var m;if(m=l?t.split(/\s+/):S(t)?t:[t],h.evenMultiple&&m.length%2!=0)return null;for(var b=[],x=[],w=[],E="",_=!1,T=0;T0?" ":"")+D.strValue}return h.validate&&!h.validate(b,x)?null:h.singleEnum&&_?1===b.length&&L(b[0])?{name:e,value:b[0],strValue:b[0],bypass:n}:null:{name:e,value:b,pfValue:w,strValue:E,bypass:n,units:x}}var C,N,A=function(){for(var r=0;rh.max||h.strictMax&&t===h.max))return null;var B={name:e,value:t,strValue:""+t+(I||""),units:I,bypass:n};return h.unitless||"px"!==I&&"em"!==I?B.pfValue=t:B.pfValue="px"!==I&&I?this.getEmSizeInPixels()*t:t,"ms"!==I&&"s"!==I||(B.pfValue="ms"===I?t:1e3*t),"deg"!==I&&"rad"!==I||(B.pfValue="rad"===I?t:(C=t,Math.PI*C/180)),"%"===I&&(B.pfValue=t/100),B}if(h.propList){var F=[],z=""+t;if("none"===z);else{for(var G=z.split(/\s*,\s*|\s+/),Y=0;Y0&&l>0&&!isNaN(n.w)&&!isNaN(n.h)&&n.w>0&&n.h>0)return{zoom:o=(o=(o=Math.min((s-2*t)/n.w,(l-2*t)/n.h))>this._private.maxZoom?this._private.maxZoom:o)=n.minZoom&&(n.maxZoom=t),this},minZoom:function(e){return void 0===e?this._private.minZoom:this.zoomRange({min:e})},maxZoom:function(e){return void 0===e?this._private.maxZoom:this.zoomRange({max:e})},getZoomedViewport:function(e){var t,n,r=this._private,i=r.pan,a=r.zoom,o=!1;if(r.zoomingEnabled||(o=!0),M(e)?n=e:I(e)&&(n=e.level,null!=e.position?t=it(e.position,a,i):null!=e.renderedPosition&&(t=e.renderedPosition),null==t||r.panningEnabled||(o=!0)),n=(n=n>r.maxZoom?r.maxZoom:n)t.maxZoom||!t.zoomingEnabled?a=!0:(t.zoom=s,i.push("zoom"))}if(r&&(!a||!e.cancelOnFailedZoom)&&t.panningEnabled){var l=e.pan;M(l.x)&&(t.pan.x=l.x,o=!1),M(l.y)&&(t.pan.y=l.y,o=!1),o||i.push("pan")}return i.length>0&&(i.push("viewport"),this.emit(i.join(" ")),this.notify("viewport")),this},center:function(e){var t=this.getCenterPan(e);return t&&(this._private.pan=t,this.emit("pan viewport"),this.notify("viewport")),this},getCenterPan:function(e,t){if(this._private.panningEnabled){if(L(e)){var n=e;e=this.mutableElements().filter(n)}else P(e)||(e=this.mutableElements());if(0!==e.length){var r=e.boundingBox(),i=this.width(),a=this.height();return{x:(i-(t=void 0===t?this._private.zoom:t)*(r.x1+r.x2))/2,y:(a-t*(r.y1+r.y2))/2}}}},reset:function(){return this._private.panningEnabled&&this._private.zoomingEnabled?(this.viewport({pan:{x:0,y:0},zoom:1}),this):this},invalidateSize:function(){this._private.sizeCache=null},size:function(){var e,t,n=this._private,r=n.container,i=this;return n.sizeCache=n.sizeCache||(r?(e=i.window().getComputedStyle(r),t=function(t){return parseFloat(e.getPropertyValue(t))},{width:r.clientWidth-t("padding-left")-t("padding-right"),height:r.clientHeight-t("padding-top")-t("padding-bottom")}):{width:1,height:1})},width:function(){return this.size().width},height:function(){return this.size().height},extent:function(){var e=this._private.pan,t=this._private.zoom,n=this.renderedExtent(),r={x1:(n.x1-e.x)/t,x2:(n.x2-e.x)/t,y1:(n.y1-e.y)/t,y2:(n.y2-e.y)/t};return r.w=r.x2-r.x1,r.h=r.y2-r.y1,r},renderedExtent:function(){var e=this.width(),t=this.height();return{x1:0,y1:0,x2:e,y2:t,w:e,h:t}},multiClickDebounceTime:function(e){return e?(this._private.multiClickDebounceTime=e,this):this._private.multiClickDebounceTime}};lo.centre=lo.center,lo.autolockNodes=lo.autolock,lo.autoungrabifyNodes=lo.autoungrabify;var uo={data:cr.data({field:"data",bindingEvent:"data",allowBinding:!0,allowSetting:!0,settingEvent:"data",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeData:cr.removeData({field:"data",event:"data",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0}),scratch:cr.data({field:"scratch",bindingEvent:"scratch",allowBinding:!0,allowSetting:!0,settingEvent:"scratch",settingTriggersEvent:!0,triggerFnName:"trigger",allowGetting:!0,updateStyle:!0}),removeScratch:cr.removeData({field:"scratch",event:"scratch",triggerFnName:"trigger",triggerEvent:!0,updateStyle:!0})};uo.attr=uo.data,uo.removeAttr=uo.removeData;var co=function(e){var t=this,n=(e=J({},e)).container;n&&!O(n)&&O(n[0])&&(n=n[0]);var r=n?n._cyreg:null;(r=r||{})&&r.cy&&(r.cy.destroy(),r={});var i=r.readies=r.readies||[];n&&(n._cyreg=r),r.cy=t;var a=void 0!==E&&void 0!==n&&!e.headless,o=e;o.layout=J({name:a?"grid":"null"},o.layout),o.renderer=J({name:a?"canvas":"null"},o.renderer);var s=function(e,t,n){return void 0!==t?t:void 0!==n?n:e},l=this._private={container:n,ready:!1,options:o,elements:new Ca(this),listeners:[],aniEles:new Ca(this),data:o.data||{},scratch:{},layout:null,renderer:null,destroyed:!1,notificationsEnabled:!0,minZoom:1e-50,maxZoom:1e50,zoomingEnabled:s(!0,o.zoomingEnabled),userZoomingEnabled:s(!0,o.userZoomingEnabled),panningEnabled:s(!0,o.panningEnabled),userPanningEnabled:s(!0,o.userPanningEnabled),boxSelectionEnabled:s(!0,o.boxSelectionEnabled),autolock:s(!1,o.autolock,o.autolockNodes),autoungrabify:s(!1,o.autoungrabify,o.autoungrabifyNodes),autounselectify:s(!1,o.autounselectify),styleEnabled:void 0===o.styleEnabled?a:o.styleEnabled,zoom:M(o.zoom)?o.zoom:1,pan:{x:I(o.pan)&&M(o.pan.x)?o.pan.x:0,y:I(o.pan)&&M(o.pan.y)?o.pan.y:0},animation:{current:[],queue:[]},hasCompoundNodes:!1,multiClickDebounceTime:s(250,o.multiClickDebounceTime)};this.createEmitter(),this.selectionType(o.selectionType),this.zoomRange({min:o.minZoom,max:o.maxZoom});l.styleEnabled&&t.setStyle([]);var u=J({},o,o.renderer);t.initRenderer(u);!function(e,t){if(e.some(Y))return ir.all(e).then(t);t(e)}([o.style,o.elements],(function(e){var n=e[0],a=e[1];l.styleEnabled&&t.style().append(n),function(e,n,r){t.notifications(!1);var i=t.mutableElements();i.length>0&&i.remove(),null!=e&&(I(e)||S(e))&&t.add(e),t.one("layoutready",(function(e){t.notifications(!0),t.emit(e),t.one("load",n),t.emitAndNotify("load")})).one("layoutstop",(function(){t.one("done",r),t.emit("done")}));var a=J({},t._private.options.layout);a.eles=t.elements(),t.layout(a).run()}(a,(function(){t.startAnimationLoop(),l.ready=!0,k(o.ready)&&t.on("ready",o.ready);for(var e=0;e0,u=vt(n.boundingBox?n.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()});if(P(n.roots))e=n.roots;else if(S(n.roots)){for(var c=[],h=0;h0;){var k=C.shift(),I=D(k,N);if(I)k.outgoers().filter((function(e){return e.isNode()&&i.has(e)})).forEach(A);else if(null===I){Le("Detected double maximal shift for node `"+k.id()+"`. Bailing maximal adjustment due to cycle. Use `options.maximal: true` only on DAGs.");break}}}T();var M=0;if(n.avoidOverlap)for(var O=0;O0&&y[0].length<=3?l/2:0),h=2*Math.PI/y[r].length*i;return 0===r&&1===y[0].length&&(c=1),{x:H+c*Math.cos(h),y:W+c*Math.sin(h)}}return{x:H+(i+1-(a+1)/2)*o,y:(r+1)*s}})),this};var mo={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,radius:void 0,startAngle:1.5*Math.PI,sweep:void 0,clockwise:!0,sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,t){return!0},ready:void 0,stop:void 0,transform:function(e,t){return t}};function bo(e){this.options=J({},mo,e)}bo.prototype.run=function(){var e=this.options,t=e,n=e.cy,r=t.eles,i=void 0!==t.counterclockwise?!t.counterclockwise:t.clockwise,a=r.nodes().not(":parent");t.sort&&(a=a.sort(t.sort));for(var o,s=vt(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:n.width(),h:n.height()}),l=s.x1+s.w/2,u=s.y1+s.h/2,c=(void 0===t.sweep?2*Math.PI-2*Math.PI/a.length:t.sweep)/Math.max(1,a.length-1),h=0,d=0;d1&&t.avoidOverlap){h*=1.75;var v=Math.cos(c)-Math.cos(0),y=Math.sin(c)-Math.sin(0),m=Math.sqrt(h*h/(v*v+y*y));o=Math.max(m,o)}return r.nodes().layoutPositions(this,t,(function(e,n){var r=t.startAngle+n*c*(i?1:-1),a=o*Math.cos(r),s=o*Math.sin(r);return{x:l+a,y:u+s}})),this};var xo,wo={fit:!0,padding:30,startAngle:1.5*Math.PI,sweep:void 0,clockwise:!0,equidistant:!1,minNodeSpacing:10,boundingBox:void 0,avoidOverlap:!0,nodeDimensionsIncludeLabels:!1,height:void 0,width:void 0,spacingFactor:void 0,concentric:function(e){return e.degree()},levelWidth:function(e){return e.maxDegree()/4},animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,t){return!0},ready:void 0,stop:void 0,transform:function(e,t){return t}};function Eo(e){this.options=J({},wo,e)}Eo.prototype.run=function(){for(var e=this.options,t=e,n=void 0!==t.counterclockwise?!t.counterclockwise:t.clockwise,r=e.cy,i=t.eles,a=i.nodes().not(":parent"),o=vt(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:r.width(),h:r.height()}),s=o.x1+o.w/2,l=o.y1+o.h/2,u=[],c=0,h=0;h0)Math.abs(m[0].value-x.value)>=v&&(m=[],y.push(m));m.push(x)}var w=c+t.minNodeSpacing;if(!t.avoidOverlap){var E=y.length>0&&y[0].length>1,_=(Math.min(o.w,o.h)/2-w)/(y.length+E?1:0);w=Math.min(w,_)}for(var T=0,D=0;D1&&t.avoidOverlap){var L=Math.cos(A)-Math.cos(0),k=Math.sin(A)-Math.sin(0),S=Math.sqrt(w*w/(L*L+k*k));T=Math.max(S,T)}C.r=T,T+=w}if(t.equidistant){for(var I=0,M=0,O=0;O=e.numIter)&&(So(r,e),r.temperature=r.temperature*e.coolingFactor,!(r.temperature=e.animationThreshold&&a(),se(t)):(Vo(r,e),s())}()}else{for(;u;)u=o(l),l++;Vo(r,e),s()}return this},To.prototype.stop=function(){return this.stopped=!0,this.thread&&this.thread.stop(),this.emit("layoutstop"),this},To.prototype.destroy=function(){return this.thread&&this.thread.stop(),this};var Do=function(e,t,n){for(var r=n.eles.edges(),i=n.eles.nodes(),a=vt(n.boundingBox?n.boundingBox:{x1:0,y1:0,w:e.width(),h:e.height()}),o={isCompound:e.hasCompoundNodes(),layoutNodes:[],idToIndex:{},nodeSize:i.size(),graphSet:[],indexToGraph:[],layoutEdges:[],edgeSize:r.size(),temperature:n.initialTemp,clientWidth:a.w,clientHeight:a.h,boundingBox:a},s=n.eles.components(),l={},u=0;u0){o.graphSet.push(w);for(u=0;ur.count?0:r.graph},No=function e(t,n,r,i){var a=i.graphSet[r];if(-10)var s=(u=r.nodeOverlap*o)*i/(f=Math.sqrt(i*i+a*a)),l=u*a/f;else{var u,c=Ro(e,i,a),h=Ro(t,-1*i,-1*a),d=h.x-c.x,p=h.y-c.y,g=d*d+p*p,f=Math.sqrt(g);s=(u=(e.nodeRepulsion+t.nodeRepulsion)/g)*d/f,l=u*p/f}e.isLocked||(e.offsetX-=s,e.offsetY-=l),t.isLocked||(t.offsetX+=s,t.offsetY+=l)}},Po=function(e,t,n,r){if(n>0)var i=e.maxX-t.minX;else i=t.maxX-e.minX;if(r>0)var a=e.maxY-t.minY;else a=t.maxY-e.minY;return i>=0&&a>=0?Math.sqrt(i*i+a*a):0},Ro=function(e,t,n){var r=e.positionX,i=e.positionY,a=e.height||1,o=e.width||1,s=n/t,l=a/o,u={};return 0===t&&0n?(u.x=r,u.y=i+a/2,u):0t&&-1*l<=s&&s<=l?(u.x=r-o/2,u.y=i-o*n/2/t,u):0=l)?(u.x=r+a*t/2/n,u.y=i+a/2,u):0>n&&(s<=-1*l||s>=l)?(u.x=r-a*t/2/n,u.y=i-a/2,u):u},Bo=function(e,t){for(var n=0;n1){var g=t.gravity*h/p,f=t.gravity*d/p;c.offsetX+=g,c.offsetY+=f}}}}},zo=function(e,t){var n=[],r=0,i=-1;for(n.push.apply(n,e.graphSet[0]),i+=e.graphSet[0].length;r<=i;){var a=n[r++],o=e.idToIndex[a],s=e.layoutNodes[o],l=s.children;if(0n)var i={x:n*e/r,y:n*t/r};else i={x:e,y:t};return i},Xo=function e(t,n){var r=t.parentId;if(null!=r){var i=n.layoutNodes[n.idToIndex[r]],a=!1;return(null==i.maxX||t.maxX+i.padRight>i.maxX)&&(i.maxX=t.maxX+i.padRight,a=!0),(null==i.minX||t.minX-i.padLefti.maxY)&&(i.maxY=t.maxY+i.padBottom,a=!0),(null==i.minY||t.minY-i.padTopg&&(h+=p+t.componentSpacing,c=0,d=0,p=0)}}},Uo={fit:!0,padding:30,boundingBox:void 0,avoidOverlap:!0,avoidOverlapPadding:10,nodeDimensionsIncludeLabels:!1,spacingFactor:void 0,condense:!1,rows:void 0,cols:void 0,position:function(e){},sort:void 0,animate:!1,animationDuration:500,animationEasing:void 0,animateFilter:function(e,t){return!0},ready:void 0,stop:void 0,transform:function(e,t){return t}};function jo(e){this.options=J({},Uo,e)}jo.prototype.run=function(){var e=this.options,t=e,n=e.cy,r=t.eles,i=r.nodes().not(":parent");t.sort&&(i=i.sort(t.sort));var a=vt(t.boundingBox?t.boundingBox:{x1:0,y1:0,w:n.width(),h:n.height()});if(0===a.h||0===a.w)r.nodes().layoutPositions(this,t,(function(e){return{x:a.x1,y:a.y1}}));else{var o=i.size(),s=Math.sqrt(o*a.h/a.w),l=Math.round(s),u=Math.round(a.w/a.h*s),c=function(e){if(null==e)return Math.min(l,u);Math.min(l,u)==l?l=e:u=e},h=function(e){if(null==e)return Math.max(l,u);Math.max(l,u)==l?l=e:u=e},d=t.rows,p=null!=t.cols?t.cols:t.columns;if(null!=d&&null!=p)l=d,u=p;else if(null!=d&&null==p)l=d,u=Math.ceil(o/l);else if(null==d&&null!=p)u=p,l=Math.ceil(o/u);else if(u*l>o){var g=c(),f=h();(g-1)*f>=o?c(g-1):(f-1)*g>=o&&h(f-1)}else for(;u*l=o?h(y+1):c(v+1)}var m=a.w/u,b=a.h/l;if(t.condense&&(m=0,b=0),t.avoidOverlap)for(var x=0;x=u&&(S=0,k++)},M={},O=0;O(r=Lt(e,t,x[w],x[w+1],x[w+2],x[w+3])))return v(n,r),!0}else if("bezier"===a.edgeType||"multibezier"===a.edgeType||"self"===a.edgeType||"compound"===a.edgeType)for(x=a.allpts,w=0;w+5(r=At(e,t,x[w],x[w+1],x[w+2],x[w+3],x[w+4],x[w+5])))return v(n,r),!0;m=m||i.source,b=b||i.target;var E=o.getArrowWidth(l,c),_=[{name:"source",x:a.arrowStartX,y:a.arrowStartY,angle:a.srcArrowAngle},{name:"target",x:a.arrowEndX,y:a.arrowEndY,angle:a.tgtArrowAngle},{name:"mid-source",x:a.midX,y:a.midY,angle:a.midsrcArrowAngle},{name:"mid-target",x:a.midX,y:a.midY,angle:a.midtgtArrowAngle}];for(w=0;w<_.length;w++){var T=_[w],D=s.arrowShapes[n.pstyle(T.name+"-arrow-shape").value],C=n.pstyle("width").pfValue;if(D.roughCollide(e,t,E,T.angle,{x:T.x,y:T.y},C,d)&&D.collide(e,t,E,T.angle,{x:T.x,y:T.y},C,d))return v(n),!0}h&&u.length>0&&(y(m),y(b))}function b(e,t,n){return Be(e,t,n)}function x(n,r){var i,a=n._private,o=g;i=r?r+"-":"",n.boundingBox();var s=a.labelBounds[r||"main"],l=n.pstyle(i+"label").value;if("yes"===n.pstyle("text-events").strValue&&l){var u=b(a.rscratch,"labelX",r),c=b(a.rscratch,"labelY",r),h=b(a.rscratch,"labelAngle",r),d=n.pstyle(i+"text-margin-x").pfValue,p=n.pstyle(i+"text-margin-y").pfValue,f=s.x1-o-d,y=s.x2+o-d,m=s.y1-o-p,x=s.y2+o-p;if(h){var w=Math.cos(h),E=Math.sin(h),_=function(e,t){return{x:(e-=u)*w-(t-=c)*E+u,y:e*E+t*w+c}},T=_(f,m),D=_(f,x),C=_(y,m),N=_(y,x),A=[T.x+d,T.y+p,C.x+d,C.y+p,N.x+d,N.y+p,D.x+d,D.y+p];if(kt(e,t,A))return v(n),!0}else if(_t(s,e,t))return v(n),!0}}n&&(l=l.interactive);for(var w=l.length-1;w>=0;w--){var E=l[w];E.isNode()?y(E)||x(E):m(E)||x(E)||x(E,"source")||x(E,"target")}return u},getAllInBox:function(e,t,n,r){for(var i,a,o=this.getCachedZSortedEles().interactive,s=[],l=Math.min(e,n),u=Math.max(e,n),c=Math.min(t,r),h=Math.max(t,r),d=vt({x1:e=l,y1:t=c,x2:n=u,y2:r=h}),p=0;p0?Math.max(e-t,0):Math.min(e+t,0)},N=C(T,E),A=C(D,_),L=!1;"auto"===v?f=Math.abs(N)>Math.abs(A)?i:r:v===l||v===s?(f=r,L=!0):v!==a&&v!==o||(f=i,L=!0);var k,S=f===r,I=S?A:N,M=S?D:T,O=ut(M),P=!1;(L&&(m||x)||!(v===s&&M<0||v===l&&M>0||v===a&&M>0||v===o&&M<0)||(I=(O*=-1)*Math.abs(I),P=!0),m)?k=(b<0?1+b:b)*I:k=(b<0?I:0)+b*O;var R=function(e){return Math.abs(e)=Math.abs(I)},B=R(k),F=R(Math.abs(I)-Math.abs(k));if((B||F)&&!P)if(S){var z=Math.abs(M)<=h/2,G=Math.abs(T)<=d/2;if(z){var Y=(u.x1+u.x2)/2,X=u.y1,V=u.y2;n.segpts=[Y,X,Y,V]}else if(G){var U=(u.y1+u.y2)/2,j=u.x1,q=u.x2;n.segpts=[j,U,q,U]}else n.segpts=[u.x1,u.y2]}else{var H=Math.abs(M)<=c/2,W=Math.abs(D)<=p/2;if(H){var $=(u.y1+u.y2)/2,K=u.x1,Z=u.x2;n.segpts=[K,$,Z,$]}else if(W){var Q=(u.x1+u.x2)/2,J=u.y1,ee=u.y2;n.segpts=[Q,J,Q,ee]}else n.segpts=[u.x2,u.y1]}else if(S){var te=u.y1+k+(g?h/2*O:0),ne=u.x1,re=u.x2;n.segpts=[ne,te,re,te]}else{var ie=u.x1+k+(g?c/2*O:0),ae=u.y1,oe=u.y2;n.segpts=[ie,ae,ie,oe]}},as.tryToCorrectInvalidPoints=function(e,t){var n=e._private.rscratch;if("bezier"===n.edgeType){var r=t.srcPos,i=t.tgtPos,a=t.srcW,o=t.srcH,s=t.tgtW,l=t.tgtH,u=t.srcShape,c=t.tgtShape,h=!M(n.startX)||!M(n.startY),d=!M(n.arrowStartX)||!M(n.arrowStartY),p=!M(n.endX)||!M(n.endY),g=!M(n.arrowEndX)||!M(n.arrowEndY),f=3*(this.getArrowWidth(e.pstyle("width").pfValue,e.pstyle("arrow-scale").value)*this.arrowShapeWidth),v=ct({x:n.ctrlpts[0],y:n.ctrlpts[1]},{x:n.startX,y:n.startY}),y=vd.poolIndex()){var p=h;h=d,d=p}var g=s.srcPos=h.position(),f=s.tgtPos=d.position(),v=s.srcW=h.outerWidth(),y=s.srcH=h.outerHeight(),m=s.tgtW=d.outerWidth(),b=s.tgtH=d.outerHeight(),x=s.srcShape=n.nodeShapes[t.getNodeShape(h)],w=s.tgtShape=n.nodeShapes[t.getNodeShape(d)];s.dirCounts={north:0,west:0,south:0,east:0,northwest:0,southwest:0,northeast:0,southeast:0};for(var E=0;E0){var X=u,V=ht(X,ot(t)),U=ht(X,ot(Y)),j=V;if(U2)ht(X,{x:Y[2],y:Y[3]})0){var ie=c,ae=ht(ie,ot(t)),oe=ht(ie,ot(re)),se=ae;if(oe2)ht(ie,{x:re[2],y:re[3]})=u||m){c={cp:f,segment:y};break}}if(c)break}var b=c.cp,x=c.segment,w=(u-d)/x.length,E=x.t1-x.t0,_=s?x.t0+E*w:x.t1-E*w;_=ft(0,_,1),t=gt(b.p0,b.p1,b.p2,_),i=function(e,t,n,r){var i=ft(0,r-.001,1),a=ft(0,r+.001,1),o=gt(e,t,n,i),s=gt(e,t,n,a);return ds(o,s)}(b.p0,b.p1,b.p2,_);break;case"straight":case"segments":case"haystack":for(var T,D,C,N,A=0,L=r.allpts.length,k=0;k+3=u));k+=2);var S=(u-D)/T;S=ft(0,S,1),t=function(e,t,n,r){var i=t.x-e.x,a=t.y-e.y,o=ct(e,t),s=i/o,l=a/o;return n=null==n?0:n,r=null!=r?r:n*o,{x:e.x+s*r,y:e.y+l*r}}(C,N,S),i=ds(C,N)}o("labelX",n,t.x),o("labelY",n,t.y),o("labelAutoAngle",n,i)}};u("source"),u("target"),this.applyLabelDimensions(e)}},cs.applyLabelDimensions=function(e){this.applyPrefixedLabelDimensions(e),e.isEdge()&&(this.applyPrefixedLabelDimensions(e,"source"),this.applyPrefixedLabelDimensions(e,"target"))},cs.applyPrefixedLabelDimensions=function(e,t){var n=e._private,r=this.getLabelText(e,t),i=this.calculateLabelDimensions(e,r),a=e.pstyle("line-height").pfValue,o=e.pstyle("text-wrap").strValue,s=Be(n.rscratch,"labelWrapCachedLines",t)||[],l="wrap"!==o?1:Math.max(s.length,1),u=i.height/l,c=u*a,h=i.width,d=i.height+(l-1)*(a-1)*u;Fe(n.rstyle,"labelWidth",t,h),Fe(n.rscratch,"labelWidth",t,h),Fe(n.rstyle,"labelHeight",t,d),Fe(n.rscratch,"labelHeight",t,d),Fe(n.rscratch,"labelLineHeight",t,c)},cs.getLabelText=function(e,t){var n=e._private,r=t?t+"-":"",i=e.pstyle(r+"label").strValue,a=e.pstyle("text-transform").value,o=function(e,r){return r?(Fe(n.rscratch,e,t,r),r):Be(n.rscratch,e,t)};if(!i)return"";"none"==a||("uppercase"==a?i=i.toUpperCase():"lowercase"==a&&(i=i.toLowerCase()));var s=e.pstyle("text-wrap").value;if("wrap"===s){var l=o("labelKey");if(null!=l&&o("labelWrapKey")===l)return o("labelWrapCachedText");for(var u=i.split("\n"),c=e.pstyle("text-max-width").pfValue,h="anywhere"===e.pstyle("text-overflow-wrap").value,d=[],p=/[\s\u200b]+/,g=h?"":" ",f=0;fc){for(var b=v.split(p),x="",w=0;wT)break;D+=i[N],N===i.length-1&&(C=!0)}return C||(D+="\u2026"),D}return i},cs.getLabelJustification=function(e){var t=e.pstyle("text-justification").strValue,n=e.pstyle("text-halign").strValue;if("auto"!==t)return t;if(!e.isNode())return"center";switch(n){case"left":return"right";case"right":return"left";default:return"center"}},cs.calculateLabelDimensions=function(e,t){var n=ve(t,e._private.labelDimsKey),r=this.labelDimCache||(this.labelDimCache=[]),i=r[n];if(null!=i)return i;var a=e.pstyle("font-style").strValue,o=e.pstyle("font-size").pfValue,s=e.pstyle("font-family").strValue,l=e.pstyle("font-weight").strValue,u=this.labelCalcCanvas,c=this.labelCalcCanvasContext;if(!u){u=this.labelCalcCanvas=document.createElement("canvas"),c=this.labelCalcCanvasContext=u.getContext("2d");var h=u.style;h.position="absolute",h.left="-9999px",h.top="-9999px",h.zIndex="-1",h.visibility="hidden",h.pointerEvents="none"}c.font="".concat(a," ").concat(l," ").concat(o,"px ").concat(s);for(var d=0,p=0,g=t.split("\n"),f=0;f1&&void 0!==arguments[1])||arguments[1];if(t.merge(e),n)for(var r=0;r=e.desktopTapThreshold2}var C=i(t);v&&(e.hoverData.tapholdCancelled=!0);n=!0,r(f,["mousemove","vmousemove","tapdrag"],t,{x:c[0],y:c[1]});var N=function(){e.data.bgActivePosistion=void 0,e.hoverData.selecting||o.emit({originalEvent:t,type:"boxstart",position:{x:c[0],y:c[1]}}),g[4]=1,e.hoverData.selecting=!0,e.redrawHint("select",!0),e.redraw()};if(3===e.hoverData.which){if(v){var A={originalEvent:t,type:"cxtdrag",position:{x:c[0],y:c[1]}};m?m.emit(A):o.emit(A),e.hoverData.cxtDragged=!0,e.hoverData.cxtOver&&f===e.hoverData.cxtOver||(e.hoverData.cxtOver&&e.hoverData.cxtOver.emit({originalEvent:t,type:"cxtdragout",position:{x:c[0],y:c[1]}}),e.hoverData.cxtOver=f,f&&f.emit({originalEvent:t,type:"cxtdragover",position:{x:c[0],y:c[1]}}))}}else if(e.hoverData.dragging){if(n=!0,o.panningEnabled()&&o.userPanningEnabled()){var L;if(e.hoverData.justStartedPan){var k=e.hoverData.mdownPos;L={x:(c[0]-k[0])*s,y:(c[1]-k[1])*s},e.hoverData.justStartedPan=!1}else L={x:b[0]*s,y:b[1]*s};o.panBy(L),o.emit("dragpan"),e.hoverData.dragged=!0}c=e.projectIntoViewport(t.clientX,t.clientY)}else if(1!=g[4]||null!=m&&!m.pannable()){if(m&&m.pannable()&&m.active()&&m.unactivate(),m&&m.grabbed()||f==y||(y&&r(y,["mouseout","tapdragout"],t,{x:c[0],y:c[1]}),f&&r(f,["mouseover","tapdragover"],t,{x:c[0],y:c[1]}),e.hoverData.last=f),m)if(v){if(o.boxSelectionEnabled()&&C)m&&m.grabbed()&&(d(x),m.emit("freeon"),x.emit("free"),e.dragData.didDrag&&(m.emit("dragfreeon"),x.emit("dragfree"))),N();else if(m&&m.grabbed()&&e.nodeIsDraggable(m)){var S=!e.dragData.didDrag;S&&e.redrawHint("eles",!0),e.dragData.didDrag=!0,e.hoverData.draggingEles||u(x,{inDragLayer:!0});var I={x:0,y:0};if(M(b[0])&&M(b[1])&&(I.x+=b[0],I.y+=b[1],S)){var O=e.hoverData.dragDelta;O&&M(O[0])&&M(O[1])&&(I.x+=O[0],I.y+=O[1])}e.hoverData.draggingEles=!0,x.silentShift(I).emit("position drag"),e.redrawHint("drag",!0),e.redraw()}}else!function(){var t=e.hoverData.dragDelta=e.hoverData.dragDelta||[];0===t.length?(t.push(b[0]),t.push(b[1])):(t[0]+=b[0],t[1]+=b[1])}();n=!0}else if(v){if(e.hoverData.dragging||!o.boxSelectionEnabled()||!C&&o.panningEnabled()&&o.userPanningEnabled()){if(!e.hoverData.selecting&&o.panningEnabled()&&o.userPanningEnabled()){a(m,e.hoverData.downs)&&(e.hoverData.dragging=!0,e.hoverData.justStartedPan=!0,g[4]=0,e.data.bgActivePosistion=ot(h),e.redrawHint("select",!0),e.redraw())}}else N();m&&m.pannable()&&m.active()&&m.unactivate()}return g[2]=c[0],g[3]=c[1],n?(t.stopPropagation&&t.stopPropagation(),t.preventDefault&&t.preventDefault(),!1):void 0}}),!1),e.registerBinding(t,"mouseup",(function(t){if(e.hoverData.capture){e.hoverData.capture=!1;var a=e.cy,o=e.projectIntoViewport(t.clientX,t.clientY),s=e.selection,l=e.findNearestElement(o[0],o[1],!0,!1),u=e.dragData.possibleDragElements,c=e.hoverData.down,h=i(t);if(e.data.bgActivePosistion&&(e.redrawHint("select",!0),e.redraw()),e.hoverData.tapholdCancelled=!0,e.data.bgActivePosistion=void 0,c&&c.unactivate(),3===e.hoverData.which){var p={originalEvent:t,type:"cxttapend",position:{x:o[0],y:o[1]}};if(c?c.emit(p):a.emit(p),!e.hoverData.cxtDragged){var g={originalEvent:t,type:"cxttap",position:{x:o[0],y:o[1]}};c?c.emit(g):a.emit(g)}e.hoverData.cxtDragged=!1,e.hoverData.which=null}else if(1===e.hoverData.which){if(r(l,["mouseup","tapend","vmouseup"],t,{x:o[0],y:o[1]}),e.dragData.didDrag||e.hoverData.dragged||e.hoverData.selecting||e.hoverData.isOverThresholdDrag||(r(c,["click","tap","vclick"],t,{x:o[0],y:o[1]}),x=!1,t.timeStamp-w<=a.multiClickDebounceTime()?(b&&clearTimeout(b),x=!0,w=null,r(c,["dblclick","dbltap","vdblclick"],t,{x:o[0],y:o[1]})):(b=setTimeout((function(){x||r(c,["oneclick","onetap","voneclick"],t,{x:o[0],y:o[1]})}),a.multiClickDebounceTime()),w=t.timeStamp)),null!=c||e.dragData.didDrag||e.hoverData.selecting||e.hoverData.dragged||i(t)||(a.$(n).unselect(["tapunselect"]),u.length>0&&e.redrawHint("eles",!0),e.dragData.possibleDragElements=u=a.collection()),l!=c||e.dragData.didDrag||e.hoverData.selecting||null!=l&&l._private.selectable&&(e.hoverData.dragging||("additive"===a.selectionType()||h?l.selected()?l.unselect(["tapunselect"]):l.select(["tapselect"]):h||(a.$(n).unmerge(l).unselect(["tapunselect"]),l.select(["tapselect"]))),e.redrawHint("eles",!0)),e.hoverData.selecting){var f=a.collection(e.getAllInBox(s[0],s[1],s[2],s[3]));e.redrawHint("select",!0),f.length>0&&e.redrawHint("eles",!0),a.emit({type:"boxend",originalEvent:t,position:{x:o[0],y:o[1]}});var v=function(e){return e.selectable()&&!e.selected()};"additive"===a.selectionType()||h||a.$(n).unmerge(f).unselect(),f.emit("box").stdFilter(v).select().emit("boxselect"),e.redraw()}if(e.hoverData.dragging&&(e.hoverData.dragging=!1,e.redrawHint("select",!0),e.redrawHint("eles",!0),e.redraw()),!s[4]){e.redrawHint("drag",!0),e.redrawHint("eles",!0);var y=c&&c.grabbed();d(u),y&&(c.emit("freeon"),u.emit("free"),e.dragData.didDrag&&(c.emit("dragfreeon"),u.emit("dragfree")))}}s[4]=0,e.hoverData.down=null,e.hoverData.cxtStarted=!1,e.hoverData.draggingEles=!1,e.hoverData.selecting=!1,e.hoverData.isOverThresholdDrag=!1,e.dragData.didDrag=!1,e.hoverData.dragged=!1,e.hoverData.dragDelta=[],e.hoverData.mdownPos=null,e.hoverData.mdownGPos=null}}),!1);var _,T,D,C,N,A,L,k,S,I,O,P,R,B=function(t){if(!e.scrollingPage){var n=e.cy,r=n.zoom(),i=n.pan(),a=e.projectIntoViewport(t.clientX,t.clientY),o=[a[0]*r+i.x,a[1]*r+i.y];if(e.hoverData.draggingEles||e.hoverData.dragging||e.hoverData.cxtStarted||0!==e.selection[4])t.preventDefault();else if(n.panningEnabled()&&n.userPanningEnabled()&&n.zoomingEnabled()&&n.userZoomingEnabled()){var s;t.preventDefault(),e.data.wheelZooming=!0,clearTimeout(e.data.wheelTimeout),e.data.wheelTimeout=setTimeout((function(){e.data.wheelZooming=!1,e.redrawHint("eles",!0),e.redraw()}),150),s=null!=t.deltaY?t.deltaY/-250:null!=t.wheelDeltaY?t.wheelDeltaY/1e3:t.wheelDelta/1e3,s*=e.wheelSensitivity,1===t.deltaMode&&(s*=33);var l=n.zoom()*Math.pow(10,s);"gesturechange"===t.type&&(l=e.gestureStartZoom*t.scale),n.zoom({level:l,renderedPosition:{x:o[0],y:o[1]}}),n.emit("gesturechange"===t.type?"pinchzoom":"scrollzoom")}}};e.registerBinding(e.container,"wheel",B,!0),e.registerBinding(t,"scroll",(function(t){e.scrollingPage=!0,clearTimeout(e.scrollingPageTimeout),e.scrollingPageTimeout=setTimeout((function(){e.scrollingPage=!1}),250)}),!0),e.registerBinding(e.container,"gesturestart",(function(t){e.gestureStartZoom=e.cy.zoom(),e.hasTouchStarted||t.preventDefault()}),!0),e.registerBinding(e.container,"gesturechange",(function(t){e.hasTouchStarted||B(t)}),!0),e.registerBinding(e.container,"mouseout",(function(t){var n=e.projectIntoViewport(t.clientX,t.clientY);e.cy.emit({originalEvent:t,type:"mouseout",position:{x:n[0],y:n[1]}})}),!1),e.registerBinding(e.container,"mouseover",(function(t){var n=e.projectIntoViewport(t.clientX,t.clientY);e.cy.emit({originalEvent:t,type:"mouseover",position:{x:n[0],y:n[1]}})}),!1);var F,z,G,Y,X,V,U,j=function(e,t,n,r){return Math.sqrt((n-e)*(n-e)+(r-t)*(r-t))},q=function(e,t,n,r){return(n-e)*(n-e)+(r-t)*(r-t)};if(e.registerBinding(e.container,"touchstart",F=function(t){if(e.hasTouchStarted=!0,E(t)){g(),e.touchData.capture=!0,e.data.bgActivePosistion=void 0;var n=e.cy,i=e.touchData.now,a=e.touchData.earlier;if(t.touches[0]){var o=e.projectIntoViewport(t.touches[0].clientX,t.touches[0].clientY);i[0]=o[0],i[1]=o[1]}if(t.touches[1]){o=e.projectIntoViewport(t.touches[1].clientX,t.touches[1].clientY);i[2]=o[0],i[3]=o[1]}if(t.touches[2]){o=e.projectIntoViewport(t.touches[2].clientX,t.touches[2].clientY);i[4]=o[0],i[5]=o[1]}if(t.touches[1]){e.touchData.singleTouchMoved=!0,d(e.dragData.touchDragEles);var l=e.findContainerClientCoords();S=l[0],I=l[1],O=l[2],P=l[3],_=t.touches[0].clientX-S,T=t.touches[0].clientY-I,D=t.touches[1].clientX-S,C=t.touches[1].clientY-I,R=0<=_&&_<=O&&0<=D&&D<=O&&0<=T&&T<=P&&0<=C&&C<=P;var c=n.pan(),p=n.zoom();N=j(_,T,D,C),A=q(_,T,D,C),k=[((L=[(_+D)/2,(T+C)/2])[0]-c.x)/p,(L[1]-c.y)/p];if(A<4e4&&!t.touches[2]){var f=e.findNearestElement(i[0],i[1],!0,!0),v=e.findNearestElement(i[2],i[3],!0,!0);return f&&f.isNode()?(f.activate().emit({originalEvent:t,type:"cxttapstart",position:{x:i[0],y:i[1]}}),e.touchData.start=f):v&&v.isNode()?(v.activate().emit({originalEvent:t,type:"cxttapstart",position:{x:i[0],y:i[1]}}),e.touchData.start=v):n.emit({originalEvent:t,type:"cxttapstart",position:{x:i[0],y:i[1]}}),e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxt=!0,e.touchData.cxtDragged=!1,e.data.bgActivePosistion=void 0,void e.redraw()}}if(t.touches[2])n.boxSelectionEnabled()&&t.preventDefault();else if(t.touches[1]);else if(t.touches[0]){var y=e.findNearestElements(i[0],i[1],!0,!0),m=y[0];if(null!=m&&(m.activate(),e.touchData.start=m,e.touchData.starts=y,e.nodeIsGrabbable(m))){var b=e.dragData.touchDragEles=n.collection(),x=null;e.redrawHint("eles",!0),e.redrawHint("drag",!0),m.selected()?(x=n.$((function(t){return t.selected()&&e.nodeIsGrabbable(t)})),u(x,{addToList:b})):h(m,{addToList:b}),s(m);var w=function(e){return{originalEvent:t,type:e,position:{x:i[0],y:i[1]}}};m.emit(w("grabon")),x?x.forEach((function(e){e.emit(w("grab"))})):m.emit(w("grab"))}r(m,["touchstart","tapstart","vmousedown"],t,{x:i[0],y:i[1]}),null==m&&(e.data.bgActivePosistion={x:o[0],y:o[1]},e.redrawHint("select",!0),e.redraw()),e.touchData.singleTouchMoved=!1,e.touchData.singleTouchStartTime=+new Date,clearTimeout(e.touchData.tapholdTimeout),e.touchData.tapholdTimeout=setTimeout((function(){!1!==e.touchData.singleTouchMoved||e.pinching||e.touchData.selecting||r(e.touchData.start,["taphold"],t,{x:i[0],y:i[1]})}),e.tapholdDuration)}if(t.touches.length>=1){for(var M=e.touchData.startPosition=[null,null,null,null,null,null],B=0;B=e.touchTapThreshold2}if(n&&e.touchData.cxt){t.preventDefault();var x=t.touches[0].clientX-S,w=t.touches[0].clientY-I,L=t.touches[1].clientX-S,O=t.touches[1].clientY-I,P=q(x,w,L,O);if(P/A>=2.25||P>=22500){e.touchData.cxt=!1,e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);var B={originalEvent:t,type:"cxttapend",position:{x:s[0],y:s[1]}};e.touchData.start?(e.touchData.start.unactivate().emit(B),e.touchData.start=null):o.emit(B)}}if(n&&e.touchData.cxt){B={originalEvent:t,type:"cxtdrag",position:{x:s[0],y:s[1]}};e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),e.touchData.start?e.touchData.start.emit(B):o.emit(B),e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxtDragged=!0;var F=e.findNearestElement(s[0],s[1],!0,!0);e.touchData.cxtOver&&F===e.touchData.cxtOver||(e.touchData.cxtOver&&e.touchData.cxtOver.emit({originalEvent:t,type:"cxtdragout",position:{x:s[0],y:s[1]}}),e.touchData.cxtOver=F,F&&F.emit({originalEvent:t,type:"cxtdragover",position:{x:s[0],y:s[1]}}))}else if(n&&t.touches[2]&&o.boxSelectionEnabled())t.preventDefault(),e.data.bgActivePosistion=void 0,this.lastThreeTouch=+new Date,e.touchData.selecting||o.emit({originalEvent:t,type:"boxstart",position:{x:s[0],y:s[1]}}),e.touchData.selecting=!0,e.touchData.didSelect=!0,i[4]=1,i&&0!==i.length&&void 0!==i[0]?(i[2]=(s[0]+s[2]+s[4])/3,i[3]=(s[1]+s[3]+s[5])/3):(i[0]=(s[0]+s[2]+s[4])/3,i[1]=(s[1]+s[3]+s[5])/3,i[2]=(s[0]+s[2]+s[4])/3+1,i[3]=(s[1]+s[3]+s[5])/3+1),e.redrawHint("select",!0),e.redraw();else if(n&&t.touches[1]&&!e.touchData.didSelect&&o.zoomingEnabled()&&o.panningEnabled()&&o.userZoomingEnabled()&&o.userPanningEnabled()){if(t.preventDefault(),e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),ee=e.dragData.touchDragEles){e.redrawHint("drag",!0);for(var z=0;z0&&!e.hoverData.draggingEles&&!e.swipePanning&&null!=e.data.bgActivePosistion&&(e.data.bgActivePosistion=void 0,e.redrawHint("select",!0),e.redraw())}},!1),e.registerBinding(t,"touchcancel",G=function(t){var n=e.touchData.start;e.touchData.capture=!1,n&&n.unactivate()}),e.registerBinding(t,"touchend",Y=function(t){var i=e.touchData.start;if(e.touchData.capture){0===t.touches.length&&(e.touchData.capture=!1),t.preventDefault();var a=e.selection;e.swipePanning=!1,e.hoverData.draggingEles=!1;var o,s=e.cy,l=s.zoom(),u=e.touchData.now,c=e.touchData.earlier;if(t.touches[0]){var h=e.projectIntoViewport(t.touches[0].clientX,t.touches[0].clientY);u[0]=h[0],u[1]=h[1]}if(t.touches[1]){h=e.projectIntoViewport(t.touches[1].clientX,t.touches[1].clientY);u[2]=h[0],u[3]=h[1]}if(t.touches[2]){h=e.projectIntoViewport(t.touches[2].clientX,t.touches[2].clientY);u[4]=h[0],u[5]=h[1]}if(i&&i.unactivate(),e.touchData.cxt){if(o={originalEvent:t,type:"cxttapend",position:{x:u[0],y:u[1]}},i?i.emit(o):s.emit(o),!e.touchData.cxtDragged){var p={originalEvent:t,type:"cxttap",position:{x:u[0],y:u[1]}};i?i.emit(p):s.emit(p)}return e.touchData.start&&(e.touchData.start._private.grabbed=!1),e.touchData.cxt=!1,e.touchData.start=null,void e.redraw()}if(!t.touches[2]&&s.boxSelectionEnabled()&&e.touchData.selecting){e.touchData.selecting=!1;var g=s.collection(e.getAllInBox(a[0],a[1],a[2],a[3]));a[0]=void 0,a[1]=void 0,a[2]=void 0,a[3]=void 0,a[4]=0,e.redrawHint("select",!0),s.emit({type:"boxend",originalEvent:t,position:{x:u[0],y:u[1]}});g.emit("box").stdFilter((function(e){return e.selectable()&&!e.selected()})).select().emit("boxselect"),g.nonempty()&&e.redrawHint("eles",!0),e.redraw()}if(null!=i&&i.unactivate(),t.touches[2])e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);else if(t.touches[1]);else if(t.touches[0]);else if(!t.touches[0]){e.data.bgActivePosistion=void 0,e.redrawHint("select",!0);var f=e.dragData.touchDragEles;if(null!=i){var v=i._private.grabbed;d(f),e.redrawHint("drag",!0),e.redrawHint("eles",!0),v&&(i.emit("freeon"),f.emit("free"),e.dragData.didDrag&&(i.emit("dragfreeon"),f.emit("dragfree"))),r(i,["touchend","tapend","vmouseup","tapdragout"],t,{x:u[0],y:u[1]}),i.unactivate(),e.touchData.start=null}else{var y=e.findNearestElement(u[0],u[1],!0,!0);r(y,["touchend","tapend","vmouseup","tapdragout"],t,{x:u[0],y:u[1]})}var m=e.touchData.startPosition[0]-u[0],b=m*m,x=e.touchData.startPosition[1]-u[1],w=(b+x*x)*l*l;e.touchData.singleTouchMoved||(i||s.$(":selected").unselect(["tapunselect"]),r(i,["tap","vclick"],t,{x:u[0],y:u[1]}),X=!1,t.timeStamp-U<=s.multiClickDebounceTime()?(V&&clearTimeout(V),X=!0,U=null,r(i,["dbltap","vdblclick"],t,{x:u[0],y:u[1]})):(V=setTimeout((function(){X||r(i,["onetap","voneclick"],t,{x:u[0],y:u[1]})}),s.multiClickDebounceTime()),U=t.timeStamp)),null!=i&&!e.dragData.didDrag&&i._private.selectable&&w2){for(var A=[u[0],u[1]],L=Math.pow(A[0]-e,2)+Math.pow(A[1]-t,2),k=1;k0)return f[0]}return null},d=Object.keys(c),p=0;p0?l:Dt(i,a,e,t,n,r,o)},checkPoint:function(e,t,n,r,i,a,o){var s=Vt(r,i),l=2*s;if(St(e,t,this.points,a,o,r,i-l,[0,-1],n))return!0;if(St(e,t,this.points,a,o,r-l,i,[0,-1],n))return!0;var u=r/2+2*n,c=i/2+2*n;return!!kt(e,t,[a-u,o-c,a-u,o,a+u,o,a+u,o-c])||(!!Ot(e,t,l,l,a+r/2-s,o+i/2-s,n)||!!Ot(e,t,l,l,a-r/2+s,o+i/2-s,n))}}},xs.registerNodeShapes=function(){var e=this.nodeShapes={},t=this;this.generateEllipse(),this.generatePolygon("triangle",Gt(3,0)),this.generateRoundPolygon("round-triangle",Gt(3,0)),this.generatePolygon("rectangle",Gt(4,0)),e.square=e.rectangle,this.generateRoundRectangle(),this.generateCutRectangle(),this.generateBarrel(),this.generateBottomRoundrectangle();var n=[0,1,1,0,0,-1,-1,0];this.generatePolygon("diamond",n),this.generateRoundPolygon("round-diamond",n),this.generatePolygon("pentagon",Gt(5,0)),this.generateRoundPolygon("round-pentagon",Gt(5,0)),this.generatePolygon("hexagon",Gt(6,0)),this.generateRoundPolygon("round-hexagon",Gt(6,0)),this.generatePolygon("heptagon",Gt(7,0)),this.generateRoundPolygon("round-heptagon",Gt(7,0)),this.generatePolygon("octagon",Gt(8,0)),this.generateRoundPolygon("round-octagon",Gt(8,0));var r=new Array(20),i=Xt(5,0),a=Xt(5,Math.PI/5),o=.5*(3-Math.sqrt(5));o*=1.57;for(var s=0;s=e.deqFastCost*f)break}else if(i){if(p>=e.deqCost*l||p>=e.deqAvgCost*s)break}else if(g>=e.deqNoDrawCost*Ds)break;var v=e.deq(t,h,c);if(!(v.length>0))break;for(var y=0;y0&&(e.onDeqd(t,u),!i&&e.shouldRedraw(t,u,h,c)&&r())}),i(t))}}},Ns=function(){function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:Te;v(this,e),this.idsByKey=new ze,this.keyForId=new ze,this.cachesByLvl=new ze,this.lvls=[],this.getKey=t,this.doesEleInvalidateKey=n}return m(e,[{key:"getIdsFor",value:function(e){null==e&&Ne("Can not get id list for null key");var t=this.idsByKey,n=this.idsByKey.get(e);return n||(n=new Ye,t.set(e,n)),n}},{key:"addIdForKey",value:function(e,t){null!=e&&this.getIdsFor(e).add(t)}},{key:"deleteIdForKey",value:function(e,t){null!=e&&this.getIdsFor(e).delete(t)}},{key:"getNumberOfIdsForKey",value:function(e){return null==e?0:this.getIdsFor(e).size}},{key:"updateKeyMappingFor",value:function(e){var t=e.id(),n=this.keyForId.get(t),r=this.getKey(e);this.deleteIdForKey(n,t),this.addIdForKey(r,t),this.keyForId.set(t,r)}},{key:"deleteKeyMappingFor",value:function(e){var t=e.id(),n=this.keyForId.get(t);this.deleteIdForKey(n,t),this.keyForId.delete(t)}},{key:"keyHasChangedFor",value:function(e){var t=e.id();return this.keyForId.get(t)!==this.getKey(e)}},{key:"isInvalid",value:function(e){return this.keyHasChangedFor(e)||this.doesEleInvalidateKey(e)}},{key:"getCachesAt",value:function(e){var t=this.cachesByLvl,n=this.lvls,r=t.get(e);return r||(r=new ze,t.set(e,r),n.push(e)),r}},{key:"getCache",value:function(e,t){return this.getCachesAt(t).get(e)}},{key:"get",value:function(e,t){var n=this.getKey(e),r=this.getCache(n,t);return null!=r&&this.updateKeyMappingFor(e),r}},{key:"getForCachedKey",value:function(e,t){var n=this.keyForId.get(e.id());return this.getCache(n,t)}},{key:"hasCache",value:function(e,t){return this.getCachesAt(t).has(e)}},{key:"has",value:function(e,t){var n=this.getKey(e);return this.hasCache(n,t)}},{key:"setCache",value:function(e,t,n){n.key=e,this.getCachesAt(t).set(e,n)}},{key:"set",value:function(e,t,n){var r=this.getKey(e);this.setCache(r,t,n),this.updateKeyMappingFor(e)}},{key:"deleteCache",value:function(e,t){this.getCachesAt(t).delete(e)}},{key:"delete",value:function(e,t){var n=this.getKey(e);this.deleteCache(n,t)}},{key:"invalidateKey",value:function(e){var t=this;this.lvls.forEach((function(n){return t.deleteCache(e,n)}))}},{key:"invalidate",value:function(e){var t=e.id(),n=this.keyForId.get(t);this.deleteKeyMappingFor(e);var r=this.doesEleInvalidateKey(e);return r&&this.invalidateKey(n),r||0===this.getNumberOfIdsForKey(n)}}]),e}(),As={dequeue:"dequeue",downscale:"downscale",highQuality:"highQuality"},Ls=Oe({getKey:null,doesEleInvalidateKey:Te,drawElement:null,getBoundingBox:null,getRotationPoint:null,getRotationOffset:null,isVisible:_e,allowEdgeTxrCaching:!0,allowParentTxrCaching:!0}),ks=function(e,t){var n=this;n.renderer=e,n.onDequeues=[];var r=Ls(t);J(n,r),n.lookup=new Ns(r.getKey,r.doesEleInvalidateKey),n.setupDequeueing()},Ss=ks.prototype;Ss.reasons=As,Ss.getTextureQueue=function(e){var t=this;return t.eleImgCaches=t.eleImgCaches||{},t.eleImgCaches[e]=t.eleImgCaches[e]||[]},Ss.getRetiredTextureQueue=function(e){var t=this.eleImgCaches.retired=this.eleImgCaches.retired||{};return t[e]=t[e]||[]},Ss.getElementQueue=function(){return this.eleCacheQueue=this.eleCacheQueue||new h.default((function(e,t){return t.reqs-e.reqs}))},Ss.getElementKeyToQueue=function(){return this.eleKeyToCacheQueue=this.eleKeyToCacheQueue||{}},Ss.getElement=function(e,t,n,r,i){var a=this,o=this.renderer,s=o.cy.zoom(),l=this.lookup;if(!t||0===t.w||0===t.h||isNaN(t.w)||isNaN(t.h)||!e.visible()||e.removed())return null;if(!a.allowEdgeTxrCaching&&e.isEdge()||!a.allowParentTxrCaching&&e.isParent())return null;if(null==r&&(r=Math.ceil(lt(s*n))),r<-4)r=-4;else if(s>=7.99||r>3)return null;var u=Math.pow(2,r),c=t.h*u,h=t.w*u,d=o.eleTextBiggerThanMin(e,u);if(!this.isVisible(e,d))return null;var p,g=l.get(e,r);if(g&&g.invalidated&&(g.invalidated=!1,g.texture.invalidatedWidth-=g.width),g)return g;if(p=c<=25?25:c<=50?50:50*Math.ceil(c/50),c>1024||h>1024)return null;var f=a.getTextureQueue(p),v=f[f.length-2],y=function(){return a.recycleTexture(p,h)||a.addTexture(p,h)};v||(v=f[f.length-1]),v||(v=y()),v.width-v.usedWidthr;N--)D=a.getElement(e,t,n,N,As.downscale);C()}else{var A;if(!x&&!w&&!E)for(var L=r-1;L>=-4;L--){var k=l.get(e,L);if(k){A=k;break}}if(b(A))return a.queueElement(e,r),A;v.context.translate(v.usedWidth,0),v.context.scale(u,u),this.drawElement(v.context,e,t,d,!1),v.context.scale(1/u,1/u),v.context.translate(-v.usedWidth,0)}return g={x:v.usedWidth,texture:v,level:r,scale:u,width:h,height:c,scaledLabelShown:d},v.usedWidth+=Math.ceil(h+8),v.eleCaches.push(g),l.set(e,r,g),a.checkTextureFullness(v),g},Ss.invalidateElements=function(e){for(var t=0;t=.2*e.width&&this.retireTexture(e)},Ss.checkTextureFullness=function(e){var t=this.getTextureQueue(e.height);e.usedWidth/e.width>.8&&e.fullnessChecks>=10?Pe(t,e):e.fullnessChecks++},Ss.retireTexture=function(e){var t=e.height,n=this.getTextureQueue(t),r=this.lookup;Pe(n,e),e.retired=!0;for(var i=e.eleCaches,a=0;a=t)return a.retired=!1,a.usedWidth=0,a.invalidatedWidth=0,a.fullnessChecks=0,Re(a.eleCaches),a.context.setTransform(1,0,0,1,0,0),a.context.clearRect(0,0,a.width,a.height),Pe(r,a),n.push(a),a}},Ss.queueElement=function(e,t){var n=this.getElementQueue(),r=this.getElementKeyToQueue(),i=this.getKey(e),a=r[i];if(a)a.level=Math.max(a.level,t),a.eles.merge(e),a.reqs++,n.updateItem(a);else{var o={eles:e.spawn().merge(e),level:t,reqs:1,key:i};n.push(o),r[i]=o}},Ss.dequeue=function(e){for(var t=this,n=t.getElementQueue(),r=t.getElementKeyToQueue(),i=[],a=t.lookup,o=0;o<1&&n.size()>0;o++){var s=n.pop(),l=s.key,u=s.eles[0],c=a.hasCache(u,s.level);if(r[l]=null,!c){i.push(s);var h=t.getBoundingBox(u);t.getElement(u,h,e,s.level,As.dequeue)}}return i},Ss.removeFromQueue=function(e){var t=this.getElementQueue(),n=this.getElementKeyToQueue(),r=this.getKey(e),i=n[r];null!=i&&(1===i.eles.length?(i.reqs=Ee,t.updateItem(i),t.pop(),n[r]=null):i.eles.unmerge(e))},Ss.onDequeue=function(e){this.onDequeues.push(e)},Ss.offDequeue=function(e){Pe(this.onDequeues,e)},Ss.setupDequeueing=Cs({deqRedrawThreshold:100,deqCost:.15,deqAvgCost:.1,deqNoDrawCost:.9,deqFastCost:.9,deq:function(e,t,n){return e.dequeue(t,n)},onDeqd:function(e,t){for(var n=0;n=3.99||n>2)return null;r.validateLayersElesOrdering(n,e);var o,s,l=r.layersByLevel,u=Math.pow(2,n),c=l[n]=l[n]||[];if(r.levelIsComplete(n,e))return c;!function(){var t=function(t){if(r.validateLayersElesOrdering(t,e),r.levelIsComplete(t,e))return s=l[t],!0},i=function(e){if(!s)for(var r=n+e;-4<=r&&r<=2&&!t(r);r+=e);};i(1),i(-1);for(var a=c.length-1;a>=0;a--){var o=c[a];o.invalid&&Pe(c,o)}}();var h=function(t){var i=(t=t||{}).after;if(function(){if(!o){o=vt();for(var t=0;t16e6)return null;var a=r.makeLayer(o,n);if(null!=i){var s=c.indexOf(i)+1;c.splice(s,0,a)}else(void 0===t.insert||t.insert)&&c.unshift(a);return a};if(r.skipping&&!a)return null;for(var d=null,p=e.length/1,g=!a,f=0;f=p||!Tt(d.bb,v.boundingBox()))&&!(d=h({insert:!0,after:d})))return null;s||g?r.queueLayer(d,v):r.drawEleInLayer(d,v,n,t),d.eles.push(v),m[n]=d}}return s||(g?null:c)},Ms.getEleLevelForLayerLevel=function(e,t){return e},Ms.drawEleInLayer=function(e,t,n,r){var i=this.renderer,a=e.context,o=t.boundingBox();0!==o.w&&0!==o.h&&t.visible()&&(n=this.getEleLevelForLayerLevel(n,r),i.setImgSmoothing(a,!1),i.drawCachedElement(a,t,null,null,n,true),i.setImgSmoothing(a,!0))},Ms.levelIsComplete=function(e,t){var n=this.layersByLevel[e];if(!n||0===n.length)return!1;for(var r=0,i=0;i0)return!1;if(a.invalid)return!1;r+=a.eles.length}return r===t.length},Ms.validateLayersElesOrdering=function(e,t){var n=this.layersByLevel[e];if(n)for(var r=0;r0){e=!0;break}}return e},Ms.invalidateElements=function(e){var t=this;0!==e.length&&(t.lastInvalidationTime=le(),0!==e.length&&t.haveLayers()&&t.updateElementsInLayers(e,(function(e,n,r){t.invalidateLayer(e)})))},Ms.invalidateLayer=function(e){if(this.lastInvalidationTime=le(),!e.invalid){var t=e.level,n=e.eles,r=this.layersByLevel[t];Pe(r,e),e.elesQueue=[],e.invalid=!0,e.replacement&&(e.replacement.invalid=!0);for(var i=0;i3&&void 0!==arguments[3])||arguments[3],i=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],a=!(arguments.length>5&&void 0!==arguments[5])||arguments[5],o=this,s=t._private.rscratch;if((!a||t.visible())&&!s.badLine&&null!=s.allpts&&!isNaN(s.allpts[0])){var l;n&&(l=n,e.translate(-l.x1,-l.y1));var u=a?t.pstyle("opacity").value:1,c=a?t.pstyle("line-opacity").value:1,h=t.pstyle("curve-style").value,d=t.pstyle("line-style").value,p=t.pstyle("width").pfValue,g=t.pstyle("line-cap").value,f=u*c,v=u*c,y=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:f;"straight-triangle"===h?(o.eleStrokeStyle(e,t,n),o.drawEdgeTrianglePath(t,e,s.allpts)):(e.lineWidth=p,e.lineCap=g,o.eleStrokeStyle(e,t,n),o.drawEdgePath(t,e,s.allpts,d),e.lineCap="butt")},m=function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:v;o.drawArrowheads(e,t,n)};if(e.lineJoin="round","yes"===t.pstyle("ghost").value){var b=t.pstyle("ghost-offset-x").pfValue,x=t.pstyle("ghost-offset-y").pfValue,w=t.pstyle("ghost-opacity").value,E=f*w;e.translate(b,x),y(E),m(E),e.translate(-b,-x)}i&&o.drawEdgeUnderlay(e,t),y(),m(),i&&o.drawEdgeOverlay(e,t),o.drawElementText(e,t,null,r),n&&e.translate(l.x1,l.y1)}}},Zs=function(e){if(!["overlay","underlay"].includes(e))throw new Error("Invalid state");return function(t,n){if(n.visible()){var r=n.pstyle("".concat(e,"-opacity")).value;if(0!==r){var i=this,a=i.usePaths(),o=n._private.rscratch,s=2*n.pstyle("".concat(e,"-padding")).pfValue,l=n.pstyle("".concat(e,"-color")).value;t.lineWidth=s,"self"!==o.edgeType||a?t.lineCap="round":t.lineCap="butt",i.colorStrokeStyle(t,l[0],l[1],l[2],r),i.drawEdgePath(n,t,o.allpts,"solid")}}}};Ks.drawEdgeOverlay=Zs("overlay"),Ks.drawEdgeUnderlay=Zs("underlay"),Ks.drawEdgePath=function(e,t,n,r){var i,a=e._private.rscratch,o=t,s=!1,l=this.usePaths(),u=e.pstyle("line-dash-pattern").pfValue,c=e.pstyle("line-dash-offset").pfValue;if(l){var h=n.join("$");a.pathCacheKey&&a.pathCacheKey===h?(i=t=a.pathCache,s=!0):(i=t=new Path2D,a.pathCacheKey=h,a.pathCache=i)}if(o.setLineDash)switch(r){case"dotted":o.setLineDash([1,1]);break;case"dashed":o.setLineDash(u),o.lineDashOffset=c;break;case"solid":o.setLineDash([])}if(!s&&!a.badLine)switch(t.beginPath&&t.beginPath(),t.moveTo(n[0],n[1]),a.edgeType){case"bezier":case"self":case"compound":case"multibezier":for(var d=2;d+35&&void 0!==arguments[5]?arguments[5]:5,o=arguments.length>6?arguments[6]:void 0;e.beginPath(),e.moveTo(t+a,n),e.lineTo(t+r-a,n),e.quadraticCurveTo(t+r,n,t+r,n+a),e.lineTo(t+r,n+i-a),e.quadraticCurveTo(t+r,n+i,t+r-a,n+i),e.lineTo(t+a,n+i),e.quadraticCurveTo(t,n+i,t,n+i-a),e.lineTo(t,n+a),e.quadraticCurveTo(t,n,t+a,n),e.closePath(),o?e.stroke():e.fill()}Js.eleTextBiggerThanMin=function(e,t){if(!t){var n=e.cy().zoom(),r=this.getPixelRatio(),i=Math.ceil(lt(n*r));t=Math.pow(2,i)}return!(e.pstyle("font-size").pfValue*t5&&void 0!==arguments[5])||arguments[5],o=this;if(null==r){if(a&&!o.eleTextBiggerThanMin(t))return}else if(!1===r)return;if(t.isNode()){var s=t.pstyle("label");if(!s||!s.value)return;var l=o.getLabelJustification(t);e.textAlign=l,e.textBaseline="bottom"}else{var u=t.element()._private.rscratch.badLine,c=t.pstyle("label"),h=t.pstyle("source-label"),d=t.pstyle("target-label");if(u||(!c||!c.value)&&(!h||!h.value)&&(!d||!d.value))return;e.textAlign="center",e.textBaseline="bottom"}var p,g=!n;n&&(p=n,e.translate(-p.x1,-p.y1)),null==i?(o.drawText(e,t,null,g,a),t.isEdge()&&(o.drawText(e,t,"source",g,a),o.drawText(e,t,"target",g,a))):o.drawText(e,t,i,g,a),n&&e.translate(p.x1,p.y1)},Js.getFontCache=function(e){var t;this.fontCaches=this.fontCaches||[];for(var n=0;n2&&void 0!==arguments[2])||arguments[2],r=t.pstyle("font-style").strValue,i=t.pstyle("font-size").pfValue+"px",a=t.pstyle("font-family").strValue,o=t.pstyle("font-weight").strValue,s=n?t.effectiveOpacity()*t.pstyle("text-opacity").value:1,l=t.pstyle("text-outline-opacity").value*s,u=t.pstyle("color").value,c=t.pstyle("text-outline-color").value;e.font=r+" "+o+" "+i+" "+a,e.lineJoin="round",this.colorFillStyle(e,u[0],u[1],u[2],s),this.colorStrokeStyle(e,c[0],c[1],c[2],l)},Js.getTextAngle=function(e,t){var n=e._private.rscratch,r=t?t+"-":"",i=e.pstyle(r+"text-rotation"),a=Be(n,"labelAngle",t);return"autorotate"===i.strValue?e.isEdge()?a:0:"none"===i.strValue?0:i.pfValue},Js.drawText=function(e,t,n){var r=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],i=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],a=t._private.rscratch,o=i?t.effectiveOpacity():1;if(!i||0!==o&&0!==t.pstyle("text-opacity").value){"main"===n&&(n=null);var s,l,u=Be(a,"labelX",n),c=Be(a,"labelY",n),h=this.getLabelText(t,n);if(null!=h&&""!==h&&!isNaN(u)&&!isNaN(c)){this.setupTextStyle(e,t,i);var d,p=n?n+"-":"",g=Be(a,"labelWidth",n),f=Be(a,"labelHeight",n),v=t.pstyle(p+"text-margin-x").pfValue,y=t.pstyle(p+"text-margin-y").pfValue,m=t.isEdge(),b=t.pstyle("text-halign").value,x=t.pstyle("text-valign").value;switch(m&&(b="center",x="center"),u+=v,c+=y,0!==(d=r?this.getTextAngle(t,n):0)&&(s=u,l=c,e.translate(s,l),e.rotate(d),u=0,c=0),x){case"top":break;case"center":c+=f/2;break;case"bottom":c+=f}var w=t.pstyle("text-background-opacity").value,E=t.pstyle("text-border-opacity").value,_=t.pstyle("text-border-width").pfValue,T=t.pstyle("text-background-padding").pfValue,D=0===t.pstyle("text-background-shape").strValue.indexOf("round");if(w>0||_>0&&E>0){var C=u-T;switch(b){case"left":C-=g;break;case"center":C-=g/2}var N=c-f-T,A=g+2*T,L=f+2*T;if(w>0){var k=e.fillStyle,S=t.pstyle("text-background-color").value;e.fillStyle="rgba("+S[0]+","+S[1]+","+S[2]+","+w*o+")",D?el(e,C,N,A,L,2):e.fillRect(C,N,A,L),e.fillStyle=k}if(_>0&&E>0){var I=e.strokeStyle,M=e.lineWidth,O=t.pstyle("text-border-color").value,P=t.pstyle("text-border-style").value;if(e.strokeStyle="rgba("+O[0]+","+O[1]+","+O[2]+","+E*o+")",e.lineWidth=_,e.setLineDash)switch(P){case"dotted":e.setLineDash([1,1]);break;case"dashed":e.setLineDash([4,2]);break;case"double":e.lineWidth=_/4,e.setLineDash([]);break;case"solid":e.setLineDash([])}if(D?el(e,C,N,A,L,2,"stroke"):e.strokeRect(C,N,A,L),"double"===P){var R=_/2;D?el(e,C+R,N+R,A-2*R,L-2*R,2,"stroke"):e.strokeRect(C+R,N+R,A-2*R,L-2*R)}e.setLineDash&&e.setLineDash([]),e.lineWidth=M,e.strokeStyle=I}}var B=2*t.pstyle("text-outline-width").pfValue;if(B>0&&(e.lineWidth=B),"wrap"===t.pstyle("text-wrap").value){var F=Be(a,"labelWrapCachedLines",n),z=Be(a,"labelLineHeight",n),G=g/2,Y=this.getLabelJustification(t);switch("auto"===Y||("left"===b?"left"===Y?u+=-g:"center"===Y&&(u+=-G):"center"===b?"left"===Y?u+=-G:"right"===Y&&(u+=G):"right"===b&&("center"===Y?u+=G:"right"===Y&&(u+=g))),x){case"top":case"center":case"bottom":c-=(F.length-1)*z}for(var X=0;X0&&e.strokeText(F[X],u,c),e.fillText(F[X],u,c),c+=z}else B>0&&e.strokeText(h,u,c),e.fillText(h,u,c);0!==d&&(e.rotate(-d),e.translate(-s,-l))}}};var tl={drawNode:function(e,t,n){var r,i,a=!(arguments.length>3&&void 0!==arguments[3])||arguments[3],o=!(arguments.length>4&&void 0!==arguments[4])||arguments[4],s=!(arguments.length>5&&void 0!==arguments[5])||arguments[5],l=this,u=t._private,c=u.rscratch,h=t.position();if(M(h.x)&&M(h.y)&&(!s||t.visible())){var d,p,g=s?t.effectiveOpacity():1,f=l.usePaths(),v=!1,y=t.padding();r=t.width()+2*y,i=t.height()+2*y,n&&(p=n,e.translate(-p.x1,-p.y1));for(var m=t.pstyle("background-image").value,b=new Array(m.length),x=new Array(m.length),w=0,E=0;E0&&void 0!==arguments[0]?arguments[0]:N;l.eleFillStyle(e,t,n)},F=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:k;l.colorStrokeStyle(e,A[0],A[1],A[2],t)},z=function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:P;l.colorStrokeStyle(e,I[0],I[1],I[2],t)},G=function(e,t,n,r){var i,a=l.nodePathCache=l.nodePathCache||[],o=ye("polygon"===n?n+","+r.join(","):n,""+t,""+e),s=a[o],u=!1;return null!=s?(i=s,u=!0,c.pathCache=i):(i=new Path2D,a[o]=c.pathCache=i),{path:i,cacheHit:u}},Y=t.pstyle("shape").strValue,X=t.pstyle("shape-polygon-points").pfValue;if(f){e.translate(h.x,h.y);var V=G(r,i,Y,X);d=V.path,v=V.cacheHit}var U=function(){if(!v){var n=h;f&&(n={x:0,y:0}),l.nodeShapes[l.getNodeShape(t)].draw(d||e,n.x,n.y,r,i)}f?e.fill(d):e.fill()},j=function(){for(var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:g,r=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=u.backgrounding,a=0,o=0;o0&&void 0!==arguments[0]&&arguments[0],a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:g;l.hasPie(t)&&(l.drawPie(e,t,a),n&&(f||l.nodeShapes[l.getNodeShape(t)].draw(e,h.x,h.y,r,i)))},H=function(){var t=(D>0?D:-D)*(arguments.length>0&&void 0!==arguments[0]?arguments[0]:g),n=D>0?0:255;0!==D&&(l.colorFillStyle(e,n,n,n,t),f?e.fill(d):e.fill())},W=function(){if(C>0){if(e.lineWidth=C,e.lineCap="butt",e.setLineDash)switch(L){case"dotted":e.setLineDash([1,1]);break;case"dashed":e.setLineDash([4,2]);break;case"solid":case"double":e.setLineDash([])}if(f?e.stroke(d):e.stroke(),"double"===L){e.lineWidth=C/3;var t=e.globalCompositeOperation;e.globalCompositeOperation="destination-out",f?e.stroke(d):e.stroke(),e.globalCompositeOperation=t}e.setLineDash&&e.setLineDash([])}},$=function(){if(S>0){if(e.lineWidth=S,e.lineCap="butt",e.setLineDash)switch(O){case"dotted":e.setLineDash([1,1]);break;case"dashed":e.setLineDash([4,2]);break;case"solid":case"double":e.setLineDash([])}var n=h;f&&(n={x:0,y:0});var a,o=l.getNodeShape(t),s=(r+C+(S+R))/r,u=(i+C+(S+R))/i,c=r*s,d=i*u,p=l.nodeShapes[o].points;if(f)a=G(c,d,o,p).path;if("ellipse"===o)l.drawEllipsePath(a||e,n.x,n.y,c,d);else if(["round-diamond","round-heptagon","round-hexagon","round-octagon","round-pentagon","round-polygon","round-triangle","round-tag"].includes(o)){var g=0,v=0,y=0;"round-diamond"===o?g=1.4*(C+R+S):"round-heptagon"===o?(g=1.075*(C+R+S),y=-(C/2+R+S)/35):"round-hexagon"===o?g=1.12*(C+R+S):"round-pentagon"===o?(g=1.13*(C+R+S),y=-(C/2+R+S)/15):"round-tag"===o?(g=1.12*(C+R+S),v=.07*(C/2+S+R)):"round-triangle"===o&&(g=(C+R+S)*(Math.PI/2),y=-(C+R/2+S)/Math.PI),0!==g&&(s=(r+g)/r,u=(i+g)/i),l.drawRoundPolygonPath(a||e,n.x+v,n.y+y,r*s,i*u,p)}else if(["roundrectangle","round-rectangle"].includes(o))l.drawRoundRectanglePath(a||e,n.x,n.y,c,d);else if(["cutrectangle","cut-rectangle"].includes(o))l.drawCutRectanglePath(a||e,n.x,n.y,c,d);else if(["bottomroundrectangle","bottom-round-rectangle"].includes(o))l.drawBottomRoundRectanglePath(a||e,n.x,n.y,c,d);else if("barrel"===o)l.drawBarrelPath(a||e,n.x,n.y,c,d);else if(o.startsWith("polygon")||["rhomboid","right-rhomboid","round-tag","tag","vee"].includes(o)){p=It(Mt(p,(C+S+R)/r)),l.drawPolygonPath(a||e,n.x,n.y,r,i,p)}else{p=It(Mt(p,-((C+S+R)/r))),l.drawPolygonPath(a||e,n.x,n.y,r,i,p)}if(f?e.stroke(a):e.stroke(),"double"===O){e.lineWidth=C/3;var m=e.globalCompositeOperation;e.globalCompositeOperation="destination-out",f?e.stroke(a):e.stroke(),e.globalCompositeOperation=m}e.setLineDash&&e.setLineDash([])}};if("yes"===t.pstyle("ghost").value){var K=t.pstyle("ghost-offset-x").pfValue,Z=t.pstyle("ghost-offset-y").pfValue,Q=t.pstyle("ghost-opacity").value,J=Q*g;e.translate(K,Z),z(),$(),B(Q*N),U(),j(J,!0),F(Q*k),W(),q(0!==D||0!==C),j(J,!1),H(J),e.translate(-K,-Z)}f&&e.translate(-h.x,-h.y),o&&l.drawNodeUnderlay(e,t,h,r,i),f&&e.translate(h.x,h.y),z(),$(),B(),U(),j(g,!0),F(),W(),q(0!==D||0!==C),j(g,!1),H(),f&&e.translate(-h.x,-h.y),l.drawElementText(e,t,null,a),o&&l.drawNodeOverlay(e,t,h,r,i),n&&e.translate(p.x1,p.y1)}}},nl=function(e){if(!["overlay","underlay"].includes(e))throw new Error("Invalid state");return function(t,n,r,i,a){if(n.visible()){var o=n.pstyle("".concat(e,"-padding")).pfValue,s=n.pstyle("".concat(e,"-opacity")).value,l=n.pstyle("".concat(e,"-color")).value,u=n.pstyle("".concat(e,"-shape")).value;if(s>0){if(r=r||n.position(),null==i||null==a){var c=n.padding();i=n.width()+2*c,a=n.height()+2*c}this.colorFillStyle(t,l[0],l[1],l[2],s),this.nodeShapes[u].draw(t,r.x,r.y,i+2*o,a+2*o),t.fill()}}}};tl.drawNodeOverlay=nl("overlay"),tl.drawNodeUnderlay=nl("underlay"),tl.hasPie=function(e){return(e=e[0])._private.hasPie},tl.drawPie=function(e,t,n,r){t=t[0],r=r||t.position();var i=t.cy().style(),a=t.pstyle("pie-size"),o=r.x,s=r.y,l=t.width(),u=t.height(),c=Math.min(l,u)/2,h=0;this.usePaths()&&(o=0,s=0),"%"===a.units?c*=a.pfValue:void 0!==a.pfValue&&(c=a.pfValue/2);for(var d=1;d<=i.pieBackgroundN;d++){var p=t.pstyle("pie-"+d+"-background-size").value,g=t.pstyle("pie-"+d+"-background-color").value,f=t.pstyle("pie-"+d+"-background-opacity").value*n,v=p/100;v+h>1&&(v=1-h);var y=1.5*Math.PI+2*Math.PI*h,m=y+2*Math.PI*v;0===p||h>=1||h+v>1||(e.beginPath(),e.moveTo(o,s),e.arc(o,s,c,y,m),e.closePath(),this.colorFillStyle(e,g[0],g[1],g[2],f),e.fill(),h+=v)}};var rl={};rl.getPixelRatio=function(){var e=this.data.contexts[0];if(null!=this.forcedPixelRatio)return this.forcedPixelRatio;var t=e.backingStorePixelRatio||e.webkitBackingStorePixelRatio||e.mozBackingStorePixelRatio||e.msBackingStorePixelRatio||e.oBackingStorePixelRatio||e.backingStorePixelRatio||1;return(window.devicePixelRatio||1)/t},rl.paintCache=function(e){for(var t,n=this.paintCaches=this.paintCaches||[],r=!0,i=0;io.minMbLowQualFrames&&(o.motionBlurPxRatio=o.mbPxRBlurry)),o.clearingMotionBlur&&(o.motionBlurPxRatio=1),o.textureDrawLastFrame&&!h&&(c[o.NODE]=!0,c[o.SELECT_BOX]=!0);var m=l.style(),b=l.zoom(),x=void 0!==i?i:b,w=l.pan(),E={x:w.x,y:w.y},_={zoom:b,pan:{x:w.x,y:w.y}},T=o.prevViewport;void 0===T||_.zoom!==T.zoom||_.pan.x!==T.pan.x||_.pan.y!==T.pan.y||f&&!g||(o.motionBlurPxRatio=1),a&&(E=a),x*=s,E.x*=s,E.y*=s;var D=o.getCachedZSortedEles();function C(e,t,n,r,i){var a=e.globalCompositeOperation;e.globalCompositeOperation="destination-out",o.colorFillStyle(e,255,255,255,o.motionBlurTransparency),e.fillRect(t,n,r,i),e.globalCompositeOperation=a}function N(e,r){var s,l,c,h;o.clearingMotionBlur||e!==u.bufferContexts[o.MOTIONBLUR_BUFFER_NODE]&&e!==u.bufferContexts[o.MOTIONBLUR_BUFFER_DRAG]?(s=E,l=x,c=o.canvasWidth,h=o.canvasHeight):(s={x:w.x*p,y:w.y*p},l=b*p,c=o.canvasWidth*p,h=o.canvasHeight*p),e.setTransform(1,0,0,1,0,0),"motionBlur"===r?C(e,0,0,c,h):t||void 0!==r&&!r||e.clearRect(0,0,c,h),n||(e.translate(s.x,s.y),e.scale(l,l)),a&&e.translate(a.x,a.y),i&&e.scale(i,i)}if(h||(o.textureDrawLastFrame=!1),h){if(o.textureDrawLastFrame=!0,!o.textureCache){o.textureCache={},o.textureCache.bb=l.mutableElements().boundingBox(),o.textureCache.texture=o.data.bufferCanvases[o.TEXTURE_BUFFER];var A=o.data.bufferContexts[o.TEXTURE_BUFFER];A.setTransform(1,0,0,1,0,0),A.clearRect(0,0,o.canvasWidth*o.textureMult,o.canvasHeight*o.textureMult),o.render({forcedContext:A,drawOnlyNodeLayer:!0,forcedPxRatio:s*o.textureMult}),(_=o.textureCache.viewport={zoom:l.zoom(),pan:l.pan(),width:o.canvasWidth,height:o.canvasHeight}).mpan={x:(0-_.pan.x)/_.zoom,y:(0-_.pan.y)/_.zoom}}c[o.DRAG]=!1,c[o.NODE]=!1;var L=u.contexts[o.NODE],k=o.textureCache.texture;_=o.textureCache.viewport;L.setTransform(1,0,0,1,0,0),d?C(L,0,0,_.width,_.height):L.clearRect(0,0,_.width,_.height);var S=m.core("outside-texture-bg-color").value,I=m.core("outside-texture-bg-opacity").value;o.colorFillStyle(L,S[0],S[1],S[2],I),L.fillRect(0,0,_.width,_.height);b=l.zoom();N(L,!1),L.clearRect(_.mpan.x,_.mpan.y,_.width/_.zoom/s,_.height/_.zoom/s),L.drawImage(k,_.mpan.x,_.mpan.y,_.width/_.zoom/s,_.height/_.zoom/s)}else o.textureOnViewport&&!t&&(o.textureCache=null);var M=l.extent(),O=o.pinching||o.hoverData.dragging||o.swipePanning||o.data.wheelZooming||o.hoverData.draggingEles||o.cy.animated(),P=o.hideEdgesOnViewport&&O,R=[];if(R[o.NODE]=!c[o.NODE]&&d&&!o.clearedForMotionBlur[o.NODE]||o.clearingMotionBlur,R[o.NODE]&&(o.clearedForMotionBlur[o.NODE]=!0),R[o.DRAG]=!c[o.DRAG]&&d&&!o.clearedForMotionBlur[o.DRAG]||o.clearingMotionBlur,R[o.DRAG]&&(o.clearedForMotionBlur[o.DRAG]=!0),c[o.NODE]||n||r||R[o.NODE]){var B=d&&!R[o.NODE]&&1!==p;N(L=t||(B?o.data.bufferContexts[o.MOTIONBLUR_BUFFER_NODE]:u.contexts[o.NODE]),d&&!B?"motionBlur":void 0),P?o.drawCachedNodes(L,D.nondrag,s,M):o.drawLayeredElements(L,D.nondrag,s,M),o.debug&&o.drawDebugPoints(L,D.nondrag),n||d||(c[o.NODE]=!1)}if(!r&&(c[o.DRAG]||n||R[o.DRAG])){B=d&&!R[o.DRAG]&&1!==p;N(L=t||(B?o.data.bufferContexts[o.MOTIONBLUR_BUFFER_DRAG]:u.contexts[o.DRAG]),d&&!B?"motionBlur":void 0),P?o.drawCachedNodes(L,D.drag,s,M):o.drawCachedElements(L,D.drag,s,M),o.debug&&o.drawDebugPoints(L,D.drag),n||d||(c[o.DRAG]=!1)}if(o.showFps||!r&&c[o.SELECT_BOX]&&!n){if(N(L=t||u.contexts[o.SELECT_BOX]),1==o.selection[4]&&(o.hoverData.selecting||o.touchData.selecting)){b=o.cy.zoom();var F=m.core("selection-box-border-width").value/b;L.lineWidth=F,L.fillStyle="rgba("+m.core("selection-box-color").value[0]+","+m.core("selection-box-color").value[1]+","+m.core("selection-box-color").value[2]+","+m.core("selection-box-opacity").value+")",L.fillRect(o.selection[0],o.selection[1],o.selection[2]-o.selection[0],o.selection[3]-o.selection[1]),F>0&&(L.strokeStyle="rgba("+m.core("selection-box-border-color").value[0]+","+m.core("selection-box-border-color").value[1]+","+m.core("selection-box-border-color").value[2]+","+m.core("selection-box-opacity").value+")",L.strokeRect(o.selection[0],o.selection[1],o.selection[2]-o.selection[0],o.selection[3]-o.selection[1]))}if(u.bgActivePosistion&&!o.hoverData.selecting){b=o.cy.zoom();var z=u.bgActivePosistion;L.fillStyle="rgba("+m.core("active-bg-color").value[0]+","+m.core("active-bg-color").value[1]+","+m.core("active-bg-color").value[2]+","+m.core("active-bg-opacity").value+")",L.beginPath(),L.arc(z.x,z.y,m.core("active-bg-size").pfValue/b,0,2*Math.PI),L.fill()}var G=o.lastRedrawTime;if(o.showFps&&G){G=Math.round(G);var Y=Math.round(1e3/G);L.setTransform(1,0,0,1,0,0),L.fillStyle="rgba(255, 0, 0, 0.75)",L.strokeStyle="rgba(255, 0, 0, 0.75)",L.lineWidth=1,L.fillText("1 frame = "+G+" ms = "+Y+" fps",0,20);L.strokeRect(0,30,250,20),L.fillRect(0,30,250*Math.min(Y/60,1),20)}n||(c[o.SELECT_BOX]=!1)}if(d&&1!==p){var X=u.contexts[o.NODE],V=o.data.bufferCanvases[o.MOTIONBLUR_BUFFER_NODE],U=u.contexts[o.DRAG],j=o.data.bufferCanvases[o.MOTIONBLUR_BUFFER_DRAG],q=function(e,t,n){e.setTransform(1,0,0,1,0,0),n||!y?e.clearRect(0,0,o.canvasWidth,o.canvasHeight):C(e,0,0,o.canvasWidth,o.canvasHeight);var r=p;e.drawImage(t,0,0,o.canvasWidth*r,o.canvasHeight*r,0,0,o.canvasWidth,o.canvasHeight)};(c[o.NODE]||R[o.NODE])&&(q(X,V,R[o.NODE]),c[o.NODE]=!1),(c[o.DRAG]||R[o.DRAG])&&(q(U,j,R[o.DRAG]),c[o.DRAG]=!1)}o.prevViewport=_,o.clearingMotionBlur&&(o.clearingMotionBlur=!1,o.motionBlurCleared=!0,o.motionBlur=!0),d&&(o.motionBlurTimeout=setTimeout((function(){o.motionBlurTimeout=null,o.clearedForMotionBlur[o.NODE]=!1,o.clearedForMotionBlur[o.DRAG]=!1,o.motionBlur=!1,o.clearingMotionBlur=!h,o.mbFrames=0,c[o.NODE]=!0,c[o.DRAG]=!0,o.redraw()}),100)),t||l.emit("render")};for(var il={drawPolygonPath:function(e,t,n,r,i,a){var o=r/2,s=i/2;e.beginPath&&e.beginPath(),e.moveTo(t+o*a[0],n+s*a[1]);for(var l=1;l0&&a>0){d.clearRect(0,0,i,a),d.globalCompositeOperation="source-over";var p=this.getCachedZSortedEles();if(e.full)d.translate(-n.x1*l,-n.y1*l),d.scale(l,l),this.drawElements(d,p),d.scale(1/l,1/l),d.translate(n.x1*l,n.y1*l);else{var g=t.pan(),f={x:g.x*l,y:g.y*l};l*=t.zoom(),d.translate(f.x,f.y),d.scale(l,l),this.drawElements(d,p),d.scale(1/l,1/l),d.translate(-f.x,-f.y)}e.bg&&(d.globalCompositeOperation="destination-over",d.fillStyle=e.bg,d.rect(0,0,i,a),d.fill())}return h},hl.png=function(e){return pl(e,this.bufferCanvasImage(e),"image/png")},hl.jpg=function(e){return pl(e,this.bufferCanvasImage(e),"image/jpeg")};var gl={nodeShapeImpl:function(e,t,n,r,i,a,o){switch(e){case"ellipse":return this.drawEllipsePath(t,n,r,i,a);case"polygon":return this.drawPolygonPath(t,n,r,i,a,o);case"round-polygon":return this.drawRoundPolygonPath(t,n,r,i,a,o);case"roundrectangle":case"round-rectangle":return this.drawRoundRectanglePath(t,n,r,i,a);case"cutrectangle":case"cut-rectangle":return this.drawCutRectanglePath(t,n,r,i,a);case"bottomroundrectangle":case"bottom-round-rectangle":return this.drawBottomRoundRectanglePath(t,n,r,i,a);case"barrel":return this.drawBarrelPath(t,n,r,i,a)}}},fl=yl,vl=yl.prototype;function yl(e){var t=this;t.data={canvases:new Array(vl.CANVAS_LAYERS),contexts:new Array(vl.CANVAS_LAYERS),canvasNeedsRedraw:new Array(vl.CANVAS_LAYERS),bufferCanvases:new Array(vl.BUFFER_COUNT),bufferContexts:new Array(vl.CANVAS_LAYERS)};var n="-webkit-tap-highlight-color",r="rgba(0,0,0,0)";t.data.canvasContainer=document.createElement("div");var i=t.data.canvasContainer.style;t.data.canvasContainer.style[n]=r,i.position="relative",i.zIndex="0",i.overflow="hidden";var a=e.cy.container();a.appendChild(t.data.canvasContainer),a.style[n]=r;var o={"-webkit-user-select":"none","-moz-user-select":"-moz-none","user-select":"none","-webkit-tap-highlight-color":"rgba(0,0,0,0)","outline-style":"none"};_&&_.userAgent.match(/msie|trident|edge/i)&&(o["-ms-touch-action"]="none",o["touch-action"]="none");for(var s=0;s{e.exports=n(73328)},73328:function(e,t){var n,r,i;(function(){var a,o,s,l,u,c,h,d,p,g,f,v,y,m,b;s=Math.floor,g=Math.min,o=function(e,t){return et?1:0},p=function(e,t,n,r,i){var a;if(null==n&&(n=0),null==i&&(i=o),n<0)throw new Error("lo must be non-negative");for(null==r&&(r=e.length);nn;0<=n?t++:t--)u.push(t);return u}.apply(this).reverse(),l=[],r=0,i=a.length;rf;0<=f?++c:--c)v.push(u(e,n));return v},m=function(e,t,n,r){var i,a,s;for(null==r&&(r=o),i=e[n];n>t&&r(i,a=e[s=n-1>>1])<0;)e[n]=a,n=s;return e[n]=i},b=function(e,t,n){var r,i,a,s,l;for(null==n&&(n=o),i=e.length,l=t,a=e[t],r=2*t+1;rt&&(this.rect.x-=(this.labelWidth-t)/2,this.setWidth(this.labelWidth)),this.labelHeight>n&&("center"==this.labelPos?this.rect.y-=(this.labelHeight-n)/2:"top"==this.labelPos&&(this.rect.y-=this.labelHeight-n),this.setHeight(this.labelHeight))}}},u.prototype.getInclusionTreeDepth=function(){if(this.inclusionTreeDepth==i.MAX_VALUE)throw"assert failed";return this.inclusionTreeDepth},u.prototype.transform=function(e){var t=this.rect.x;t>o.WORLD_BOUNDARY?t=o.WORLD_BOUNDARY:t<-o.WORLD_BOUNDARY&&(t=-o.WORLD_BOUNDARY);var n=this.rect.y;n>o.WORLD_BOUNDARY?n=o.WORLD_BOUNDARY:n<-o.WORLD_BOUNDARY&&(n=-o.WORLD_BOUNDARY);var r=new l(t,n),i=e.inverseTransformPoint(r);this.setLocation(i.x,i.y)},u.prototype.getLeft=function(){return this.rect.x},u.prototype.getRight=function(){return this.rect.x+this.rect.width},u.prototype.getTop=function(){return this.rect.y},u.prototype.getBottom=function(){return this.rect.y+this.rect.height},u.prototype.getParent=function(){return null==this.owner?null:this.owner.getParent()},e.exports=u},function(e,t,n){"use strict";function r(e,t){null==e&&null==t?(this.x=0,this.y=0):(this.x=e,this.y=t)}r.prototype.getX=function(){return this.x},r.prototype.getY=function(){return this.y},r.prototype.setX=function(e){this.x=e},r.prototype.setY=function(e){this.y=e},r.prototype.getDifference=function(e){return new DimensionD(this.x-e.x,this.y-e.y)},r.prototype.getCopy=function(){return new r(this.x,this.y)},r.prototype.translate=function(e){return this.x+=e.width,this.y+=e.height,this},e.exports=r},function(e,t,n){"use strict";var r=n(2),i=n(10),a=n(0),o=n(6),s=n(3),l=n(1),u=n(13),c=n(12),h=n(11);function d(e,t,n){r.call(this,n),this.estimatedSize=i.MIN_VALUE,this.margin=a.DEFAULT_GRAPH_MARGIN,this.edges=[],this.nodes=[],this.isConnected=!1,this.parent=e,null!=t&&t instanceof o?this.graphManager=t:null!=t&&t instanceof Layout&&(this.graphManager=t.graphManager)}for(var p in d.prototype=Object.create(r.prototype),r)d[p]=r[p];d.prototype.getNodes=function(){return this.nodes},d.prototype.getEdges=function(){return this.edges},d.prototype.getGraphManager=function(){return this.graphManager},d.prototype.getParent=function(){return this.parent},d.prototype.getLeft=function(){return this.left},d.prototype.getRight=function(){return this.right},d.prototype.getTop=function(){return this.top},d.prototype.getBottom=function(){return this.bottom},d.prototype.isConnected=function(){return this.isConnected},d.prototype.add=function(e,t,n){if(null==t&&null==n){var r=e;if(null==this.graphManager)throw"Graph has no graph mgr!";if(this.getNodes().indexOf(r)>-1)throw"Node already in graph!";return r.owner=this,this.getNodes().push(r),r}var i=e;if(!(this.getNodes().indexOf(t)>-1&&this.getNodes().indexOf(n)>-1))throw"Source or target not in graph!";if(t.owner!=n.owner||t.owner!=this)throw"Both owners must be this graph!";return t.owner!=n.owner?null:(i.source=t,i.target=n,i.isInterGraph=!1,this.getEdges().push(i),t.edges.push(i),n!=t&&n.edges.push(i),i)},d.prototype.remove=function(e){var t=e;if(e instanceof s){if(null==t)throw"Node is null!";if(null==t.owner||t.owner!=this)throw"Owner graph is invalid!";if(null==this.graphManager)throw"Owner graph manager is invalid!";for(var n=t.edges.slice(),r=n.length,i=0;i-1&&c>-1))throw"Source and/or target doesn't know this edge!";if(a.source.edges.splice(u,1),a.target!=a.source&&a.target.edges.splice(c,1),-1==(o=a.source.owner.getEdges().indexOf(a)))throw"Not in owner's edge list!";a.source.owner.getEdges().splice(o,1)}},d.prototype.updateLeftTop=function(){for(var e,t,n,r=i.MAX_VALUE,a=i.MAX_VALUE,o=this.getNodes(),s=o.length,l=0;l(e=u.getTop())&&(r=e),a>(t=u.getLeft())&&(a=t)}return r==i.MAX_VALUE?null:(n=null!=o[0].getParent().paddingLeft?o[0].getParent().paddingLeft:this.margin,this.left=a-n,this.top=r-n,new c(this.left,this.top))},d.prototype.updateBounds=function(e){for(var t,n,r,a,o,s=i.MAX_VALUE,l=-i.MAX_VALUE,c=i.MAX_VALUE,h=-i.MAX_VALUE,d=this.nodes,p=d.length,g=0;g(t=f.getLeft())&&(s=t),l<(n=f.getRight())&&(l=n),c>(r=f.getTop())&&(c=r),h<(a=f.getBottom())&&(h=a)}var v=new u(s,c,l-s,h-c);s==i.MAX_VALUE&&(this.left=this.parent.getLeft(),this.right=this.parent.getRight(),this.top=this.parent.getTop(),this.bottom=this.parent.getBottom()),o=null!=d[0].getParent().paddingLeft?d[0].getParent().paddingLeft:this.margin,this.left=v.x-o,this.right=v.x+v.width+o,this.top=v.y-o,this.bottom=v.y+v.height+o},d.calculateBounds=function(e){for(var t,n,r,a,o=i.MAX_VALUE,s=-i.MAX_VALUE,l=i.MAX_VALUE,c=-i.MAX_VALUE,h=e.length,d=0;d(t=p.getLeft())&&(o=t),s<(n=p.getRight())&&(s=n),l>(r=p.getTop())&&(l=r),c<(a=p.getBottom())&&(c=a)}return new u(o,l,s-o,c-l)},d.prototype.getInclusionTreeDepth=function(){return this==this.graphManager.getRoot()?1:this.parent.getInclusionTreeDepth()},d.prototype.getEstimatedSize=function(){if(this.estimatedSize==i.MIN_VALUE)throw"assert failed";return this.estimatedSize},d.prototype.calcEstimatedSize=function(){for(var e=0,t=this.nodes,n=t.length,r=0;r=this.nodes.length){var l=0;i.forEach((function(t){t.owner==e&&l++})),l==this.nodes.length&&(this.isConnected=!0)}}else this.isConnected=!0},e.exports=d},function(e,t,n){"use strict";var r,i=n(1);function a(e){r=n(5),this.layout=e,this.graphs=[],this.edges=[]}a.prototype.addRoot=function(){var e=this.layout.newGraph(),t=this.layout.newNode(null),n=this.add(e,t);return this.setRootGraph(n),this.rootGraph},a.prototype.add=function(e,t,n,r,i){if(null==n&&null==r&&null==i){if(null==e)throw"Graph is null!";if(null==t)throw"Parent node is null!";if(this.graphs.indexOf(e)>-1)throw"Graph already in this graph mgr!";if(this.graphs.push(e),null!=e.parent)throw"Already has a parent!";if(null!=t.child)throw"Already has a child!";return e.parent=t,t.child=e,e}i=n,n=e;var a=(r=t).getOwner(),o=i.getOwner();if(null==a||a.getGraphManager()!=this)throw"Source not in this graph mgr!";if(null==o||o.getGraphManager()!=this)throw"Target not in this graph mgr!";if(a==o)return n.isInterGraph=!1,a.add(n,r,i);if(n.isInterGraph=!0,n.source=r,n.target=i,this.edges.indexOf(n)>-1)throw"Edge already in inter-graph edge list!";if(this.edges.push(n),null==n.source||null==n.target)throw"Edge source and/or target is null!";if(-1!=n.source.edges.indexOf(n)||-1!=n.target.edges.indexOf(n))throw"Edge already in source and/or target incidency list!";return n.source.edges.push(n),n.target.edges.push(n),n},a.prototype.remove=function(e){if(e instanceof r){var t=e;if(t.getGraphManager()!=this)throw"Graph not in this graph mgr";if(t!=this.rootGraph&&(null==t.parent||t.parent.graphManager!=this))throw"Invalid parent node!";for(var n,a=[],o=(a=a.concat(t.getEdges())).length,s=0;s=t.getRight()?n[0]+=Math.min(t.getX()-e.getX(),e.getRight()-t.getRight()):t.getX()<=e.getX()&&t.getRight()>=e.getRight()&&(n[0]+=Math.min(e.getX()-t.getX(),t.getRight()-e.getRight())),e.getY()<=t.getY()&&e.getBottom()>=t.getBottom()?n[1]+=Math.min(t.getY()-e.getY(),e.getBottom()-t.getBottom()):t.getY()<=e.getY()&&t.getBottom()>=e.getBottom()&&(n[1]+=Math.min(e.getY()-t.getY(),t.getBottom()-e.getBottom()));var a=Math.abs((t.getCenterY()-e.getCenterY())/(t.getCenterX()-e.getCenterX()));t.getCenterY()===e.getCenterY()&&t.getCenterX()===e.getCenterX()&&(a=1);var o=a*n[0],s=n[1]/a;n[0]o)return n[0]=r,n[1]=l,n[2]=a,n[3]=b,!1;if(ia)return n[0]=s,n[1]=i,n[2]=y,n[3]=o,!1;if(ra?(n[0]=c,n[1]=h,_=!0):(n[0]=u,n[1]=l,_=!0):D===N&&(r>a?(n[0]=s,n[1]=l,_=!0):(n[0]=d,n[1]=h,_=!0)),-C===N?a>r?(n[2]=m,n[3]=b,T=!0):(n[2]=y,n[3]=v,T=!0):C===N&&(a>r?(n[2]=f,n[3]=v,T=!0):(n[2]=x,n[3]=b,T=!0)),_&&T)return!1;if(r>a?i>o?(A=this.getCardinalDirection(D,N,4),L=this.getCardinalDirection(C,N,2)):(A=this.getCardinalDirection(-D,N,3),L=this.getCardinalDirection(-C,N,1)):i>o?(A=this.getCardinalDirection(-D,N,1),L=this.getCardinalDirection(-C,N,3)):(A=this.getCardinalDirection(D,N,2),L=this.getCardinalDirection(C,N,4)),!_)switch(A){case 1:S=l,k=r+-g/N,n[0]=k,n[1]=S;break;case 2:k=d,S=i+p*N,n[0]=k,n[1]=S;break;case 3:S=h,k=r+g/N,n[0]=k,n[1]=S;break;case 4:k=c,S=i+-p*N,n[0]=k,n[1]=S}if(!T)switch(L){case 1:M=v,I=a+-E/N,n[2]=I,n[3]=M;break;case 2:I=x,M=o+w*N,n[2]=I,n[3]=M;break;case 3:M=b,I=a+E/N,n[2]=I,n[3]=M;break;case 4:I=m,M=o+-w*N,n[2]=I,n[3]=M}}return!1},i.getCardinalDirection=function(e,t,n){return e>t?n:1+n%4},i.getIntersection=function(e,t,n,i){if(null==i)return this.getIntersection2(e,t,n);var a,o,s,l,u,c,h,d=e.x,p=e.y,g=t.x,f=t.y,v=n.x,y=n.y,m=i.x,b=i.y;return 0==(h=(a=f-p)*(l=v-m)-(o=b-y)*(s=d-g))?null:new r((s*(c=m*y-v*b)-l*(u=g*p-d*f))/h,(o*u-a*c)/h)},i.angleOfVector=function(e,t,n,r){var i=void 0;return e!==n?(i=Math.atan((r-t)/(n-e)),n0?1:e<0?-1:0},r.floor=function(e){return e<0?Math.ceil(e):Math.floor(e)},r.ceil=function(e){return e<0?Math.floor(e):Math.ceil(e)},e.exports=r},function(e,t,n){"use strict";function r(){}r.MAX_VALUE=2147483647,r.MIN_VALUE=-2147483648,e.exports=r},function(e,t,n){"use strict";var r=function(){function e(e,t){for(var n=0;n0&&t;){for(s.push(u[0]);s.length>0&&t;){var c=s[0];s.splice(0,1),o.add(c);var h=c.getEdges();for(a=0;a-1&&u.splice(f,1)}o=new Set,l=new Map}else e=[]}return e},d.prototype.createDummyNodesForBendpoints=function(e){for(var t=[],n=e.source,r=this.graphManager.calcLowestCommonAncestor(e.source,e.target),i=0;i0){for(var i=this.edgeToDummyNodes.get(n),a=0;a=0&&t.splice(h,1),c.getNeighborsList().forEach((function(e){if(n.indexOf(e)<0){var t=r.get(e)-1;1==t&&l.push(e),r.set(e,t)}}))}n=n.concat(l),1!=t.length&&2!=t.length||(i=!0,a=t[0])}return a},d.prototype.setGraphManager=function(e){this.graphManager=e},e.exports=d},function(e,t,n){"use strict";function r(){}r.seed=1,r.x=0,r.nextDouble=function(){return r.x=1e4*Math.sin(r.seed++),r.x-Math.floor(r.x)},e.exports=r},function(e,t,n){"use strict";var r=n(4);function i(e,t){this.lworldOrgX=0,this.lworldOrgY=0,this.ldeviceOrgX=0,this.ldeviceOrgY=0,this.lworldExtX=1,this.lworldExtY=1,this.ldeviceExtX=1,this.ldeviceExtY=1}i.prototype.getWorldOrgX=function(){return this.lworldOrgX},i.prototype.setWorldOrgX=function(e){this.lworldOrgX=e},i.prototype.getWorldOrgY=function(){return this.lworldOrgY},i.prototype.setWorldOrgY=function(e){this.lworldOrgY=e},i.prototype.getWorldExtX=function(){return this.lworldExtX},i.prototype.setWorldExtX=function(e){this.lworldExtX=e},i.prototype.getWorldExtY=function(){return this.lworldExtY},i.prototype.setWorldExtY=function(e){this.lworldExtY=e},i.prototype.getDeviceOrgX=function(){return this.ldeviceOrgX},i.prototype.setDeviceOrgX=function(e){this.ldeviceOrgX=e},i.prototype.getDeviceOrgY=function(){return this.ldeviceOrgY},i.prototype.setDeviceOrgY=function(e){this.ldeviceOrgY=e},i.prototype.getDeviceExtX=function(){return this.ldeviceExtX},i.prototype.setDeviceExtX=function(e){this.ldeviceExtX=e},i.prototype.getDeviceExtY=function(){return this.ldeviceExtY},i.prototype.setDeviceExtY=function(e){this.ldeviceExtY=e},i.prototype.transformX=function(e){var t=0,n=this.lworldExtX;return 0!=n&&(t=this.ldeviceOrgX+(e-this.lworldOrgX)*this.ldeviceExtX/n),t},i.prototype.transformY=function(e){var t=0,n=this.lworldExtY;return 0!=n&&(t=this.ldeviceOrgY+(e-this.lworldOrgY)*this.ldeviceExtY/n),t},i.prototype.inverseTransformX=function(e){var t=0,n=this.ldeviceExtX;return 0!=n&&(t=this.lworldOrgX+(e-this.ldeviceOrgX)*this.lworldExtX/n),t},i.prototype.inverseTransformY=function(e){var t=0,n=this.ldeviceExtY;return 0!=n&&(t=this.lworldOrgY+(e-this.ldeviceOrgY)*this.lworldExtY/n),t},i.prototype.inverseTransformPoint=function(e){return new r(this.inverseTransformX(e.x),this.inverseTransformY(e.y))},e.exports=i},function(e,t,n){"use strict";var r=n(15),i=n(7),a=n(0),o=n(8),s=n(9);function l(){r.call(this),this.useSmartIdealEdgeLengthCalculation=i.DEFAULT_USE_SMART_IDEAL_EDGE_LENGTH_CALCULATION,this.idealEdgeLength=i.DEFAULT_EDGE_LENGTH,this.springConstant=i.DEFAULT_SPRING_STRENGTH,this.repulsionConstant=i.DEFAULT_REPULSION_STRENGTH,this.gravityConstant=i.DEFAULT_GRAVITY_STRENGTH,this.compoundGravityConstant=i.DEFAULT_COMPOUND_GRAVITY_STRENGTH,this.gravityRangeFactor=i.DEFAULT_GRAVITY_RANGE_FACTOR,this.compoundGravityRangeFactor=i.DEFAULT_COMPOUND_GRAVITY_RANGE_FACTOR,this.displacementThresholdPerNode=3*i.DEFAULT_EDGE_LENGTH/100,this.coolingFactor=i.DEFAULT_COOLING_FACTOR_INCREMENTAL,this.initialCoolingFactor=i.DEFAULT_COOLING_FACTOR_INCREMENTAL,this.totalDisplacement=0,this.oldTotalDisplacement=0,this.maxIterations=i.MAX_ITERATIONS}for(var u in l.prototype=Object.create(r.prototype),r)l[u]=r[u];l.prototype.initParameters=function(){r.prototype.initParameters.call(this,arguments),this.totalIterations=0,this.notAnimatedIterations=0,this.useFRGridVariant=i.DEFAULT_USE_SMART_REPULSION_RANGE_CALCULATION,this.grid=[]},l.prototype.calcIdealEdgeLengths=function(){for(var e,t,n,r,o,s,l=this.getGraphManager().getAllEdges(),u=0;ui.ADAPTATION_LOWER_NODE_LIMIT&&(this.coolingFactor=Math.max(this.coolingFactor*i.COOLING_ADAPTATION_FACTOR,this.coolingFactor-(e-i.ADAPTATION_LOWER_NODE_LIMIT)/(i.ADAPTATION_UPPER_NODE_LIMIT-i.ADAPTATION_LOWER_NODE_LIMIT)*this.coolingFactor*(1-i.COOLING_ADAPTATION_FACTOR))),this.maxNodeDisplacement=i.MAX_NODE_DISPLACEMENT_INCREMENTAL):(e>i.ADAPTATION_LOWER_NODE_LIMIT?this.coolingFactor=Math.max(i.COOLING_ADAPTATION_FACTOR,1-(e-i.ADAPTATION_LOWER_NODE_LIMIT)/(i.ADAPTATION_UPPER_NODE_LIMIT-i.ADAPTATION_LOWER_NODE_LIMIT)*(1-i.COOLING_ADAPTATION_FACTOR)):this.coolingFactor=1,this.initialCoolingFactor=this.coolingFactor,this.maxNodeDisplacement=i.MAX_NODE_DISPLACEMENT),this.maxIterations=Math.max(5*this.getAllNodes().length,this.maxIterations),this.totalDisplacementThreshold=this.displacementThresholdPerNode*this.getAllNodes().length,this.repulsionRange=this.calcRepulsionRange()},l.prototype.calcSpringForces=function(){for(var e,t=this.getAllEdges(),n=0;n0&&void 0!==arguments[0])||arguments[0],s=arguments.length>1&&void 0!==arguments[1]&&arguments[1],l=this.getAllNodes();if(this.useFRGridVariant)for(this.totalIterations%i.GRID_CALCULATION_CHECK_PERIOD==1&&o&&this.updateGrid(),a=new Set,e=0;e(l=t.getEstimatedSize()*this.gravityRangeFactor)||s>l)&&(e.gravitationForceX=-this.gravityConstant*i,e.gravitationForceY=-this.gravityConstant*a):(o>(l=t.getEstimatedSize()*this.compoundGravityRangeFactor)||s>l)&&(e.gravitationForceX=-this.gravityConstant*i*this.compoundGravityConstant,e.gravitationForceY=-this.gravityConstant*a*this.compoundGravityConstant)},l.prototype.isConverged=function(){var e,t=!1;return this.totalIterations>this.maxIterations/3&&(t=Math.abs(this.totalDisplacement-this.oldTotalDisplacement)<2),e=this.totalDisplacement=s.length||u>=s[0].length))for(var c=0;ce}}]),e}();e.exports=a},function(e,t,n){"use strict";var r=function(){function e(e,t){for(var n=0;n2&&void 0!==arguments[2]?arguments[2]:1,i=arguments.length>3&&void 0!==arguments[3]?arguments[3]:-1,a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:-1;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.sequence1=t,this.sequence2=n,this.match_score=r,this.mismatch_penalty=i,this.gap_penalty=a,this.iMax=t.length+1,this.jMax=n.length+1,this.grid=new Array(this.iMax);for(var o=0;o=0;n--){var r=this.listeners[n];r.event===e&&r.callback===t&&this.listeners.splice(n,1)}},i.emit=function(e,t){for(var n=0;n{var r=n(94212),i=n(62688),a=n(43916),o=n(16952),s=n(51016);function l(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t{var r=n(65968),i=n(23740),a=n(24996),o=n(82600),s=n(7336);function l(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t{var r=n(27892)(n(97188),"Map");e.exports=r},41476:(e,t,n)=>{var r=n(98720),i=n(54760),a=n(50088),o=n(29776),s=n(8619);function l(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t{var r=n(97188).Symbol;e.exports=r},12040:e=>{e.exports=function(e,t){for(var n=-1,r=null==e?0:e.length,i=Array(r);++n{var r=n(76139),i=n(70864),a=Object.prototype.hasOwnProperty;e.exports=function(e,t,n){var o=e[t];a.call(e,t)&&i(o,n)&&(void 0!==n||t in e)||r(e,t,n)}},56600:(e,t,n)=>{var r=n(70864);e.exports=function(e,t){for(var n=e.length;n--;)if(r(e[n][0],t))return n;return-1}},76139:(e,t,n)=>{var r=n(97792);e.exports=function(e,t,n){"__proto__"==t&&r?r(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}},34240:(e,t,n)=>{var r=n(97736),i=n(7668);e.exports=function(e,t){for(var n=0,a=(t=r(t,e)).length;null!=e&&n{var r=n(4748),i=n(5664),a=n(73168),o=r?r.toStringTag:void 0;e.exports=function(e){return null==e?void 0===e?"[object Undefined]":"[object Null]":o&&o in Object(e)?i(e):a(e)}},67200:(e,t,n)=>{var r=n(87920),i=n(86084),a=n(8940),o=n(87456),s=/^\[object .+?Constructor\]$/,l=Function.prototype,u=Object.prototype,c=l.toString,h=u.hasOwnProperty,d=RegExp("^"+c.call(h).replace(/[\\^$.*+?()[\]{}|]/g,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$");e.exports=function(e){return!(!a(e)||i(e))&&(r(e)?d:s).test(o(e))}},86040:(e,t,n)=>{var r=n(28288),i=n(97736),a=n(51188),o=n(8940),s=n(7668);e.exports=function(e,t,n,l){if(!o(e))return e;for(var u=-1,c=(t=i(t,e)).length,h=c-1,d=e;null!=d&&++u{var r=n(4748),i=n(12040),a=n(30108),o=n(77712),s=r?r.prototype:void 0,l=s?s.toString:void 0;e.exports=function e(t){if("string"==typeof t)return t;if(a(t))return i(t,e)+"";if(o(t))return l?l.call(t):"";var n=t+"";return"0"==n&&1/t==-Infinity?"-0":n}},34428:(e,t,n)=>{var r=n(15608),i=/^\s+/;e.exports=function(e){return e?e.slice(0,r(e)+1).replace(i,""):e}},97736:(e,t,n)=>{var r=n(30108),i=n(19640),a=n(30976),o=n(71972);e.exports=function(e,t){return r(e)?e:i(e,t)?[e]:a(o(e))}},68416:e=>{e.exports=function(e,t){var n=-1,r=e.length;for(t||(t=Array(r));++n{var r=n(97188)["__core-js_shared__"];e.exports=r},97792:(e,t,n)=>{var r=n(27892),i=function(){try{var e=r(Object,"defineProperty");return e({},"",{}),e}catch(t){}}();e.exports=i},4848:(e,t,n)=>{var r="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g;e.exports=r},36068:(e,t,n)=>{var r=n(16096);e.exports=function(e,t){var n=e.__data__;return r(t)?n["string"==typeof t?"string":"hash"]:n.map}},27892:(e,t,n)=>{var r=n(67200),i=n(15692);e.exports=function(e,t){var n=i(e,t);return r(n)?n:void 0}},5664:(e,t,n)=>{var r=n(4748),i=Object.prototype,a=i.hasOwnProperty,o=i.toString,s=r?r.toStringTag:void 0;e.exports=function(e){var t=a.call(e,s),n=e[s];try{e[s]=void 0;var r=!0}catch(l){}var i=o.call(e);return r&&(t?e[s]=n:delete e[s]),i}},15692:e=>{e.exports=function(e,t){return null==e?void 0:e[t]}},94212:(e,t,n)=>{var r=n(45604);e.exports=function(){this.__data__=r?r(null):{},this.size=0}},62688:e=>{e.exports=function(e){var t=this.has(e)&&delete this.__data__[e];return this.size-=t?1:0,t}},43916:(e,t,n)=>{var r=n(45604),i=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;if(r){var n=t[e];return"__lodash_hash_undefined__"===n?void 0:n}return i.call(t,e)?t[e]:void 0}},16952:(e,t,n)=>{var r=n(45604),i=Object.prototype.hasOwnProperty;e.exports=function(e){var t=this.__data__;return r?void 0!==t[e]:i.call(t,e)}},51016:(e,t,n)=>{var r=n(45604);e.exports=function(e,t){var n=this.__data__;return this.size+=this.has(e)?0:1,n[e]=r&&void 0===t?"__lodash_hash_undefined__":t,this}},51188:e=>{var t=/^(?:0|[1-9]\d*)$/;e.exports=function(e,n){var r=typeof e;return!!(n=null==n?9007199254740991:n)&&("number"==r||"symbol"!=r&&t.test(e))&&e>-1&&e%1==0&&e{var r=n(30108),i=n(77712),a=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,o=/^\w*$/;e.exports=function(e,t){if(r(e))return!1;var n=typeof e;return!("number"!=n&&"symbol"!=n&&"boolean"!=n&&null!=e&&!i(e))||(o.test(e)||!a.test(e)||null!=t&&e in Object(t))}},16096:e=>{e.exports=function(e){var t=typeof e;return"string"==t||"number"==t||"symbol"==t||"boolean"==t?"__proto__"!==e:null===e}},86084:(e,t,n)=>{var r,i=n(55280),a=(r=/[^.]+$/.exec(i&&i.keys&&i.keys.IE_PROTO||""))?"Symbol(src)_1."+r:"";e.exports=function(e){return!!a&&a in e}},65968:e=>{e.exports=function(){this.__data__=[],this.size=0}},23740:(e,t,n)=>{var r=n(56600),i=Array.prototype.splice;e.exports=function(e){var t=this.__data__,n=r(t,e);return!(n<0)&&(n==t.length-1?t.pop():i.call(t,n,1),--this.size,!0)}},24996:(e,t,n)=>{var r=n(56600);e.exports=function(e){var t=this.__data__,n=r(t,e);return n<0?void 0:t[n][1]}},82600:(e,t,n)=>{var r=n(56600);e.exports=function(e){return r(this.__data__,e)>-1}},7336:(e,t,n)=>{var r=n(56600);e.exports=function(e,t){var n=this.__data__,i=r(n,e);return i<0?(++this.size,n.push([e,t])):n[i][1]=t,this}},98720:(e,t,n)=>{var r=n(11276),i=n(93040),a=n(70420);e.exports=function(){this.size=0,this.__data__={hash:new r,map:new(a||i),string:new r}}},54760:(e,t,n)=>{var r=n(36068);e.exports=function(e){var t=r(this,e).delete(e);return this.size-=t?1:0,t}},50088:(e,t,n)=>{var r=n(36068);e.exports=function(e){return r(this,e).get(e)}},29776:(e,t,n)=>{var r=n(36068);e.exports=function(e){return r(this,e).has(e)}},8619:(e,t,n)=>{var r=n(36068);e.exports=function(e,t){var n=r(this,e),i=n.size;return n.set(e,t),this.size+=n.size==i?0:1,this}},9032:(e,t,n)=>{var r=n(1576);e.exports=function(e){var t=r(e,(function(e){return 500===n.size&&n.clear(),e})),n=t.cache;return t}},45604:(e,t,n)=>{var r=n(27892)(Object,"create");e.exports=r},73168:e=>{var t=Object.prototype.toString;e.exports=function(e){return t.call(e)}},97188:(e,t,n)=>{var r=n(4848),i="object"==typeof self&&self&&self.Object===Object&&self,a=r||i||Function("return this")();e.exports=a},30976:(e,t,n)=>{var r=n(9032),i=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,a=/\\(\\)?/g,o=r((function(e){var t=[];return 46===e.charCodeAt(0)&&t.push(""),e.replace(i,(function(e,n,r,i){t.push(r?i.replace(a,"$1"):n||e)})),t}));e.exports=o},7668:(e,t,n)=>{var r=n(77712);e.exports=function(e){if("string"==typeof e||r(e))return e;var t=e+"";return"0"==t&&1/e==-Infinity?"-0":t}},87456:e=>{var t=Function.prototype.toString;e.exports=function(e){if(null!=e){try{return t.call(e)}catch(n){}try{return e+""}catch(n){}}return""}},15608:e=>{var t=/\s/;e.exports=function(e){for(var n=e.length;n--&&t.test(e.charAt(n)););return n}},73336:(e,t,n)=>{var r=n(8940),i=n(19868),a=n(8472),o=Math.max,s=Math.min;e.exports=function(e,t,n){var l,u,c,h,d,p,g=0,f=!1,v=!1,y=!0;if("function"!=typeof e)throw new TypeError("Expected a function");function m(t){var n=l,r=u;return l=u=void 0,g=t,h=e.apply(r,n)}function b(e){var n=e-p;return void 0===p||n>=t||n<0||v&&e-g>=c}function x(){var e=i();if(b(e))return w(e);d=setTimeout(x,function(e){var n=t-(e-p);return v?s(n,c-(e-g)):n}(e))}function w(e){return d=void 0,y&&l?m(e):(l=u=void 0,h)}function E(){var e=i(),n=b(e);if(l=arguments,u=this,p=e,n){if(void 0===d)return function(e){return g=e,d=setTimeout(x,t),f?m(e):h}(p);if(v)return clearTimeout(d),d=setTimeout(x,t),m(p)}return void 0===d&&(d=setTimeout(x,t)),h}return t=a(t)||0,r(n)&&(f=!!n.leading,c=(v="maxWait"in n)?o(a(n.maxWait)||0,t):c,y="trailing"in n?!!n.trailing:y),E.cancel=function(){void 0!==d&&clearTimeout(d),g=0,l=p=u=d=void 0},E.flush=function(){return void 0===d?h:w(i())},E}},70864:e=>{e.exports=function(e,t){return e===t||e!=e&&t!=t}},19448:(e,t,n)=>{var r=n(34240);e.exports=function(e,t,n){var i=null==e?void 0:r(e,t);return void 0===i?n:i}},30108:e=>{var t=Array.isArray;e.exports=t},87920:(e,t,n)=>{var r=n(16944),i=n(8940);e.exports=function(e){if(!i(e))return!1;var t=r(e);return"[object Function]"==t||"[object GeneratorFunction]"==t||"[object AsyncFunction]"==t||"[object Proxy]"==t}},8940:e=>{e.exports=function(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}},22892:e=>{e.exports=function(e){return null!=e&&"object"==typeof e}},77712:(e,t,n)=>{var r=n(16944),i=n(22892);e.exports=function(e){return"symbol"==typeof e||i(e)&&"[object Symbol]"==r(e)}},1576:(e,t,n)=>{var r=n(41476);function i(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new TypeError("Expected a function");var n=function(){var r=arguments,i=t?t.apply(this,r):r[0],a=n.cache;if(a.has(i))return a.get(i);var o=e.apply(this,r);return n.cache=a.set(i,o)||a,o};return n.cache=new(i.Cache||r),n}i.Cache=r,e.exports=i},19868:(e,t,n)=>{var r=n(97188);e.exports=function(){return r.Date.now()}},32552:(e,t,n)=>{var r=n(86040);e.exports=function(e,t,n){return null==e?e:r(e,t,n)}},8472:(e,t,n)=>{var r=n(34428),i=n(8940),a=n(77712),o=/^[-+]0x[0-9a-f]+$/i,s=/^0b[01]+$/i,l=/^0o[0-7]+$/i,u=parseInt;e.exports=function(e){if("number"==typeof e)return e;if(a(e))return NaN;if(i(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=i(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=r(e);var n=s.test(e);return n||l.test(e)?u(e.slice(2),n?2:8):o.test(e)?NaN:+e}},51768:(e,t,n)=>{var r=n(12040),i=n(68416),a=n(30108),o=n(77712),s=n(30976),l=n(7668),u=n(71972);e.exports=function(e){return a(e)?r(e,l):o(e)?[e]:i(s(u(e)))}},71972:(e,t,n)=>{var r=n(46524);e.exports=function(e){return null==e?"":r(e)}},61240:(e,t,n)=>{"use strict";n.d(t,{diagram:()=>w});var r=n(37160),i=n(79460),a=n(81176),o=n(37352),s=n(94918),l=n(34176),u=n(67612),c=n(85219),h=(n(62264),n(86208),n(24300),function(){var e=function(e,t,n,r){for(n=n||{},r=e.length;r--;n[e[r]]=t);return n},t=[1,4],n=[1,13],r=[1,12],i=[1,15],a=[1,16],o=[1,20],s=[1,19],l=[6,7,8],u=[1,26],c=[1,24],h=[1,25],d=[6,7,11],p=[1,6,13,15,16,19,22],g=[1,33],f=[1,34],v=[1,6,7,11,13,15,16,19,22],y={trace:function(){},yy:{},symbols_:{error:2,start:3,mindMap:4,spaceLines:5,SPACELINE:6,NL:7,MINDMAP:8,document:9,stop:10,EOF:11,statement:12,SPACELIST:13,node:14,ICON:15,CLASS:16,nodeWithId:17,nodeWithoutId:18,NODE_DSTART:19,NODE_DESCR:20,NODE_DEND:21,NODE_ID:22,$accept:0,$end:1},terminals_:{2:"error",6:"SPACELINE",7:"NL",8:"MINDMAP",11:"EOF",13:"SPACELIST",15:"ICON",16:"CLASS",19:"NODE_DSTART",20:"NODE_DESCR",21:"NODE_DEND",22:"NODE_ID"},productions_:[0,[3,1],[3,2],[5,1],[5,2],[5,2],[4,2],[4,3],[10,1],[10,1],[10,1],[10,2],[10,2],[9,3],[9,2],[12,2],[12,2],[12,2],[12,1],[12,1],[12,1],[12,1],[12,1],[14,1],[14,1],[18,3],[17,1],[17,4]],performAction:function(e,t,n,r,i,a,o){var s=a.length-1;switch(i){case 6:case 7:return r;case 8:r.getLogger().trace("Stop NL ");break;case 9:r.getLogger().trace("Stop EOF ");break;case 11:r.getLogger().trace("Stop NL2 ");break;case 12:r.getLogger().trace("Stop EOF2 ");break;case 15:r.getLogger().info("Node: ",a[s].id),r.addNode(a[s-1].length,a[s].id,a[s].descr,a[s].type);break;case 16:r.getLogger().trace("Icon: ",a[s]),r.decorateNode({icon:a[s]});break;case 17:case 21:r.decorateNode({class:a[s]});break;case 18:r.getLogger().trace("SPACELIST");break;case 19:r.getLogger().trace("Node: ",a[s].id),r.addNode(0,a[s].id,a[s].descr,a[s].type);break;case 20:r.decorateNode({icon:a[s]});break;case 25:r.getLogger().trace("node found ..",a[s-2]),this.$={id:a[s-1],descr:a[s-1],type:r.getType(a[s-2],a[s])};break;case 26:this.$={id:a[s],descr:a[s],type:r.nodeType.DEFAULT};break;case 27:r.getLogger().trace("node found ..",a[s-3]),this.$={id:a[s-3],descr:a[s-1],type:r.getType(a[s-2],a[s])}}},table:[{3:1,4:2,5:3,6:[1,5],8:t},{1:[3]},{1:[2,1]},{4:6,6:[1,7],7:[1,8],8:t},{6:n,7:[1,10],9:9,12:11,13:r,14:14,15:i,16:a,17:17,18:18,19:o,22:s},e(l,[2,3]),{1:[2,2]},e(l,[2,4]),e(l,[2,5]),{1:[2,6],6:n,12:21,13:r,14:14,15:i,16:a,17:17,18:18,19:o,22:s},{6:n,9:22,12:11,13:r,14:14,15:i,16:a,17:17,18:18,19:o,22:s},{6:u,7:c,10:23,11:h},e(d,[2,22],{17:17,18:18,14:27,15:[1,28],16:[1,29],19:o,22:s}),e(d,[2,18]),e(d,[2,19]),e(d,[2,20]),e(d,[2,21]),e(d,[2,23]),e(d,[2,24]),e(d,[2,26],{19:[1,30]}),{20:[1,31]},{6:u,7:c,10:32,11:h},{1:[2,7],6:n,12:21,13:r,14:14,15:i,16:a,17:17,18:18,19:o,22:s},e(p,[2,14],{7:g,11:f}),e(v,[2,8]),e(v,[2,9]),e(v,[2,10]),e(d,[2,15]),e(d,[2,16]),e(d,[2,17]),{20:[1,35]},{21:[1,36]},e(p,[2,13],{7:g,11:f}),e(v,[2,11]),e(v,[2,12]),{21:[1,37]},e(d,[2,25]),e(d,[2,27])],defaultActions:{2:[2,1],6:[2,2]},parseError:function(e,t){if(!t.recoverable){var n=new Error(e);throw n.hash=t,n}this.trace(e)},parse:function(e){var t=this,n=[0],r=[],i=[null],a=[],o=this.table,s="",l=0,u=0,c=a.slice.call(arguments,1),h=Object.create(this.lexer),d={yy:{}};for(var p in this.yy)Object.prototype.hasOwnProperty.call(this.yy,p)&&(d.yy[p]=this.yy[p]);h.setInput(e,d.yy),d.yy.lexer=h,d.yy.parser=this,void 0===h.yylloc&&(h.yylloc={});var g=h.yylloc;a.push(g);var f=h.options&&h.options.ranges;"function"==typeof d.yy.parseError?this.parseError=d.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var v,y,m,b,x,w,E,_,T,D={};;){if(y=n[n.length-1],this.defaultActions[y]?m=this.defaultActions[y]:(null==v&&(T=void 0,"number"!=typeof(T=r.pop()||h.lex()||1)&&(T instanceof Array&&(T=(r=T).pop()),T=t.symbols_[T]||T),v=T),m=o[y]&&o[y][v]),void 0===m||!m.length||!m[0]){var C="";for(x in _=[],o[y])this.terminals_[x]&&x>2&&_.push("'"+this.terminals_[x]+"'");C=h.showPosition?"Parse error on line "+(l+1)+":\n"+h.showPosition()+"\nExpecting "+_.join(", ")+", got '"+(this.terminals_[v]||v)+"'":"Parse error on line "+(l+1)+": Unexpected "+(1==v?"end of input":"'"+(this.terminals_[v]||v)+"'"),this.parseError(C,{text:h.match,token:this.terminals_[v]||v,line:h.yylineno,loc:g,expected:_})}if(m[0]instanceof Array&&m.length>1)throw new Error("Parse Error: multiple actions possible at state: "+y+", token: "+v);switch(m[0]){case 1:n.push(v),i.push(h.yytext),a.push(h.yylloc),n.push(m[1]),v=null,u=h.yyleng,s=h.yytext,l=h.yylineno,g=h.yylloc;break;case 2:if(w=this.productions_[m[1]][1],D.$=i[i.length-w],D._$={first_line:a[a.length-(w||1)].first_line,last_line:a[a.length-1].last_line,first_column:a[a.length-(w||1)].first_column,last_column:a[a.length-1].last_column},f&&(D._$.range=[a[a.length-(w||1)].range[0],a[a.length-1].range[1]]),void 0!==(b=this.performAction.apply(D,[s,u,l,d.yy,m[1],i,a].concat(c))))return b;w&&(n=n.slice(0,-1*w*2),i=i.slice(0,-1*w),a=a.slice(0,-1*w)),n.push(this.productions_[m[1]][0]),i.push(D.$),a.push(D._$),E=o[n[n.length-2]][n[n.length-1]],n.push(E);break;case 3:return!0}}return!0}},m={EOF:1,parseError:function(e,t){if(!this.yy.parser)throw new Error(e);this.yy.parser.parseError(e,t)},setInput:function(e,t){return this.yy=t||this.yy||{},this._input=e,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var e=this._input[0];return this.yytext+=e,this.yyleng++,this.offset++,this.match+=e,this.matched+=e,e.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),e},unput:function(e){var t=e.length,n=e.split(/(?:\r\n?|\n)/g);this._input=e+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-t),this.offset-=t;var r=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),n.length-1&&(this.yylineno-=n.length-1);var i=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:n?(n.length===r.length?this.yylloc.first_column:0)+r[r.length-n.length].length-n[0].length:this.yylloc.first_column-t},this.options.ranges&&(this.yylloc.range=[i[0],i[0]+this.yyleng-t]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(e){this.unput(this.match.slice(e))},pastInput:function(){var e=this.matched.substr(0,this.matched.length-this.match.length);return(e.length>20?"...":"")+e.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var e=this.match;return e.length<20&&(e+=this._input.substr(0,20-e.length)),(e.substr(0,20)+(e.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var e=this.pastInput(),t=new Array(e.length+1).join("-");return e+this.upcomingInput()+"\n"+t+"^"},test_match:function(e,t){var n,r,i;if(this.options.backtrack_lexer&&(i={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(i.yylloc.range=this.yylloc.range.slice(0))),(r=e[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=r.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:r?r[r.length-1].length-r[r.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+e[0].length},this.yytext+=e[0],this.match+=e[0],this.matches=e,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(e[0].length),this.matched+=e[0],n=this.performAction.call(this,this.yy,this,t,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),n)return n;if(this._backtrack){for(var a in i)this[a]=i[a];return!1}return!1},next:function(){if(this.done)return this.EOF;var e,t,n,r;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var i=this._currentRules(),a=0;at[0].length)){if(t=n,r=a,this.options.backtrack_lexer){if(!1!==(e=this.test_match(n,i[a])))return e;if(this._backtrack){t=!1;continue}return!1}if(!this.options.flex)break}return t?!1!==(e=this.test_match(t,i[r]))&&e:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var e=this.next();return e||this.lex()},begin:function(e){this.conditionStack.push(e)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(e){return(e=this.conditionStack.length-1-Math.abs(e||0))>=0?this.conditionStack[e]:"INITIAL"},pushState:function(e){this.begin(e)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(e,t,n,r){switch(n){case 0:return e.getLogger().trace("Found comment",t.yytext),6;case 1:return 8;case 2:this.begin("CLASS");break;case 3:return this.popState(),16;case 4:case 23:case 26:this.popState();break;case 5:e.getLogger().trace("Begin icon"),this.begin("ICON");break;case 6:return e.getLogger().trace("SPACELINE"),6;case 7:return 7;case 8:return 15;case 9:e.getLogger().trace("end icon"),this.popState();break;case 10:return e.getLogger().trace("Exploding node"),this.begin("NODE"),19;case 11:return e.getLogger().trace("Cloud"),this.begin("NODE"),19;case 12:return e.getLogger().trace("Explosion Bang"),this.begin("NODE"),19;case 13:return e.getLogger().trace("Cloud Bang"),this.begin("NODE"),19;case 14:case 15:case 16:case 17:return this.begin("NODE"),19;case 18:return 13;case 19:return 22;case 20:return 11;case 21:this.begin("NSTR2");break;case 22:return"NODE_DESCR";case 24:e.getLogger().trace("Starting NSTR"),this.begin("NSTR");break;case 25:return e.getLogger().trace("description:",t.yytext),"NODE_DESCR";case 27:return this.popState(),e.getLogger().trace("node end ))"),"NODE_DEND";case 28:return this.popState(),e.getLogger().trace("node end )"),"NODE_DEND";case 29:return this.popState(),e.getLogger().trace("node end ...",t.yytext),"NODE_DEND";case 30:case 33:case 34:return this.popState(),e.getLogger().trace("node end (("),"NODE_DEND";case 31:case 32:return this.popState(),e.getLogger().trace("node end (-"),"NODE_DEND";case 35:case 36:return e.getLogger().trace("Long description:",t.yytext),20}},rules:[/^(?:\s*%%.*)/i,/^(?:mindmap\b)/i,/^(?::::)/i,/^(?:.+)/i,/^(?:\n)/i,/^(?:::icon\()/i,/^(?:[\s]+[\n])/i,/^(?:[\n]+)/i,/^(?:[^\)]+)/i,/^(?:\))/i,/^(?:-\))/i,/^(?:\(-)/i,/^(?:\)\))/i,/^(?:\))/i,/^(?:\(\()/i,/^(?:\{\{)/i,/^(?:\()/i,/^(?:\[)/i,/^(?:[\s]+)/i,/^(?:[^\(\[\n\)\{\}]+)/i,/^(?:$)/i,/^(?:["][`])/i,/^(?:[^`"]+)/i,/^(?:[`]["])/i,/^(?:["])/i,/^(?:[^"]+)/i,/^(?:["])/i,/^(?:[\)]\))/i,/^(?:[\)])/i,/^(?:[\]])/i,/^(?:\}\})/i,/^(?:\(-)/i,/^(?:-\))/i,/^(?:\(\()/i,/^(?:\()/i,/^(?:[^\)\]\(\}]+)/i,/^(?:.+(?!\(\())/i],conditions:{CLASS:{rules:[3,4],inclusive:!1},ICON:{rules:[8,9],inclusive:!1},NSTR2:{rules:[22,23],inclusive:!1},NSTR:{rules:[25,26],inclusive:!1},NODE:{rules:[21,24,27,28,29,30,31,32,33,34,35,36],inclusive:!1},INITIAL:{rules:[0,1,2,5,6,7,10,11,12,13,14,15,16,17,18,19,20],inclusive:!0}}};function b(){this.yy={}}return y.lexer=m,b.prototype=y,y.Parser=b,new b}());h.parser=h;const d=h;let p=[],g=0,f={};const v={DEFAULT:0,NO_BORDER:0,ROUNDED_RECT:1,RECT:2,CIRCLE:3,CLOUD:4,BANG:5,HEXAGON:6},y={clear:()=>{p=[],g=0,f={}},addNode:(e,t,n,i)=>{var a,o;r.l.info("addNode",e,t,n,i);const s=(0,r.c)();let l=(null==(a=s.mindmap)?void 0:a.padding)??r.A.mindmap.padding;switch(i){case v.ROUNDED_RECT:case v.RECT:case v.HEXAGON:l*=2}const u={id:g++,nodeId:(0,r.d)(t,s),level:e,descr:(0,r.d)(n,s),type:i,children:[],width:(null==(o=s.mindmap)?void 0:o.maxNodeWidth)??r.A.mindmap.maxNodeWidth,padding:l},c=function(e){for(let t=p.length-1;t>=0;t--)if(p[t].levelp.length>0?p[0]:null,nodeType:v,getType:(e,t)=>{switch(r.l.debug("In get type",e,t),e){case"[":return v.RECT;case"(":return")"===t?v.ROUNDED_RECT:v.CLOUD;case"((":return v.CIRCLE;case")":return v.CLOUD;case"))":return v.BANG;case"{{":return v.HEXAGON;default:return v.DEFAULT}},setElementForId:(e,t)=>{f[e]=t},decorateNode:e=>{if(!e)return;const t=(0,r.c)(),n=p[p.length-1];e.icon&&(n.icon=(0,r.d)(e.icon,t)),e.class&&(n.class=(0,r.d)(e.class,t))},type2Str:e=>{switch(e){case v.DEFAULT:return"no-border";case v.RECT:return"rect";case v.ROUNDED_RECT:return"rounded-rect";case v.CIRCLE:return"circle";case v.CLOUD:return"cloud";case v.BANG:return"bang";case v.HEXAGON:return"hexgon";default:return"no-border"}},getLogger:()=>r.l,getElementById:e=>f[e]};function m(e,t,n,i,a){!function(e,t,n,i,a){const o=a.htmlLabels,l=i%11,u=t.append("g");n.section=l;let c="section-"+l;l<0&&(c+=" section-root"),u.attr("class",(n.class?n.class+" ":"")+"mindmap-node "+c);const h=u.append("g"),d=u.append("g"),p=n.descr.replace(/()/g,"\n");(0,s.a)(d,p,{useHtmlLabels:o,width:n.width,classes:"mindmap-node-label"}),o||d.attr("dy","1em").attr("alignment-baseline","middle").attr("dominant-baseline","middle").attr("text-anchor","middle");const g=d.node().getBBox(),[f]=(0,r.C)(a.fontSize);if(n.height=g.height+1.1*f*.5+n.padding,n.width=g.width+2*n.padding,n.icon)if(n.type===e.nodeType.CIRCLE)n.height+=50,n.width+=50,u.append("foreignObject").attr("height","50px").attr("width",n.width).attr("style","text-align: center;").append("div").attr("class","icon-container").append("i").attr("class","node-icon-"+l+" "+n.icon),d.attr("transform","translate("+n.width/2+", "+(n.height/2-1.5*n.padding)+")");else{n.width+=50;const e=n.height;n.height=Math.max(e,60);const t=Math.abs(n.height-e);u.append("foreignObject").attr("width","60px").attr("height",n.height).attr("style","text-align: center;margin-top:"+t/2+"px;").append("div").attr("class","icon-container").append("i").attr("class","node-icon-"+l+" "+n.icon),d.attr("transform","translate("+(25+n.width/2)+", "+(t/2+n.padding/2)+")")}else if(o){const e=(n.width-g.width)/2,t=(n.height-g.height)/2;d.attr("transform","translate("+e+", "+t+")")}else{const e=n.width/2,t=n.padding/2;d.attr("transform","translate("+e+", "+t+")")}switch(n.type){case e.nodeType.DEFAULT:!function(e,t,n,r){t.append("path").attr("id","node-"+n.id).attr("class","node-bkg node-"+e.type2Str(n.type)).attr("d",`M0 ${n.height-5} v${10-n.height} q0,-5 5,-5 h${n.width-10} q5,0 5,5 v${n.height-5} H0 Z`),t.append("line").attr("class","node-line-"+r).attr("x1",0).attr("y1",n.height).attr("x2",n.width).attr("y2",n.height)}(e,h,n,l);break;case e.nodeType.ROUNDED_RECT:!function(e,t,n){t.append("rect").attr("id","node-"+n.id).attr("class","node-bkg node-"+e.type2Str(n.type)).attr("height",n.height).attr("rx",n.padding).attr("ry",n.padding).attr("width",n.width)}(e,h,n);break;case e.nodeType.RECT:!function(e,t,n){t.append("rect").attr("id","node-"+n.id).attr("class","node-bkg node-"+e.type2Str(n.type)).attr("height",n.height).attr("width",n.width)}(e,h,n);break;case e.nodeType.CIRCLE:h.attr("transform","translate("+n.width/2+", "+ +n.height/2+")"),function(e,t,n){t.append("circle").attr("id","node-"+n.id).attr("class","node-bkg node-"+e.type2Str(n.type)).attr("r",n.width/2)}(e,h,n);break;case e.nodeType.CLOUD:!function(e,t,n){const r=n.width,i=n.height,a=.15*r,o=.25*r,s=.35*r,l=.2*r;t.append("path").attr("id","node-"+n.id).attr("class","node-bkg node-"+e.type2Str(n.type)).attr("d",`M0 0 a${a},${a} 0 0,1 ${.25*r},${-1*r*.1}\n a${s},${s} 1 0,1 ${.4*r},${-1*r*.1}\n a${o},${o} 1 0,1 ${.35*r},${1*r*.2}\n\n a${a},${a} 1 0,1 ${.15*r},${1*i*.35}\n a${l},${l} 1 0,1 ${-1*r*.15},${1*i*.65}\n\n a${o},${a} 1 0,1 ${-1*r*.25},${.15*r}\n a${s},${s} 1 0,1 ${-1*r*.5},0\n a${a},${a} 1 0,1 ${-1*r*.25},${-1*r*.15}\n\n a${a},${a} 1 0,1 ${-1*r*.1},${-1*i*.35}\n a${l},${l} 1 0,1 ${.1*r},${-1*i*.65}\n\n H0 V0 Z`)}(e,h,n);break;case e.nodeType.BANG:!function(e,t,n){const r=n.width,i=n.height,a=.15*r;t.append("path").attr("id","node-"+n.id).attr("class","node-bkg node-"+e.type2Str(n.type)).attr("d",`M0 0 a${a},${a} 1 0,0 ${.25*r},${-1*i*.1}\n a${a},${a} 1 0,0 ${.25*r},0\n a${a},${a} 1 0,0 ${.25*r},0\n a${a},${a} 1 0,0 ${.25*r},${1*i*.1}\n\n a${a},${a} 1 0,0 ${.15*r},${1*i*.33}\n a${.8*a},${.8*a} 1 0,0 0,${1*i*.34}\n a${a},${a} 1 0,0 ${-1*r*.15},${1*i*.33}\n\n a${a},${a} 1 0,0 ${-1*r*.25},${.15*i}\n a${a},${a} 1 0,0 ${-1*r*.25},0\n a${a},${a} 1 0,0 ${-1*r*.25},0\n a${a},${a} 1 0,0 ${-1*r*.25},${-1*i*.15}\n\n a${a},${a} 1 0,0 ${-1*r*.1},${-1*i*.33}\n a${.8*a},${.8*a} 1 0,0 0,${-1*i*.34}\n a${a},${a} 1 0,0 ${.1*r},${-1*i*.33}\n\n H0 V0 Z`)}(e,h,n);break;case e.nodeType.HEXAGON:!function(e,t,n){const r=n.height,i=r/4,a=n.width-n.padding+2*i;!function(e,t,n,r,i){e.insert("polygon",":first-child").attr("points",r.map((function(e){return e.x+","+e.y})).join(" ")).attr("transform","translate("+(i.width-t)/2+", "+n+")")}(t,a,r,[{x:i,y:0},{x:a-i,y:0},{x:a,y:-r/2},{x:a-i,y:-r},{x:i,y:-r},{x:0,y:-r/2}],n)}(0,h,n)}e.setElementForId(n.id,u),n.height}(e,t,n,i,a),n.children&&n.children.forEach(((n,r)=>{m(e,t,n,i<0?r:i,a)}))}function b(e,t,n,r){t.add({group:"nodes",data:{id:e.id.toString(),labelText:e.descr,height:e.height,width:e.width,level:r,nodeId:e.id,padding:e.padding,type:e.type},position:{x:e.x,y:e.y}}),e.children&&e.children.forEach((i=>{b(i,t,n,r+1),t.add({group:"edges",data:{id:`${e.id}_${i.id}`,source:e.id,target:i.id,depth:r,section:i.section}})}))}function x(e,t){return new Promise((n=>{const a=(0,o.MlD)("body").append("div").attr("id","cy").attr("style","display:none"),s=i({container:document.getElementById("cy"),style:[{selector:"edge",style:{"curve-style":"bezier"}}]});a.remove(),b(e,s,t,0),s.nodes().forEach((function(e){e.layoutDimensions=()=>{const t=e.data();return{w:t.width,h:t.height}}})),s.layout({name:"cose-bilkent",quality:"proof",styleEnabled:!1,animate:!1}).run(),s.ready((e=>{r.l.info("Ready",e),n(s)}))}))}i.use(a);const w={db:y,renderer:{draw:async(e,t,n,i)=>{var a,o;r.l.debug("Rendering mindmap diagram\n"+e);const s=i.db,l=s.getMindmap();if(!l)return;const u=(0,r.c)();u.htmlLabels=!1;const c=(0,r.z)(t),h=c.append("g");h.attr("class","mindmap-edges");const d=c.append("g");d.attr("class","mindmap-nodes"),m(s,d,l,-1,u);const p=await x(l,u);!function(e,t){t.edges().map(((t,n)=>{const i=t.data();if(t[0]._private.bodyBounds){const a=t[0]._private.rscratch;r.l.trace("Edge: ",n,i),e.insert("path").attr("d",`M ${a.startX},${a.startY} L ${a.midX},${a.midY} L${a.endX},${a.endY} `).attr("class","edge section-edge-"+i.section+" edge-depth-"+i.depth)}}))}(h,p),function(e,t){t.nodes().map(((t,n)=>{const i=t.data();i.x=t.position().x,i.y=t.position().y,function(e,t){const n=e.getElementById(t.id),r=t.x||0,i=t.y||0;n.attr("transform","translate("+r+","+i+")")}(e,i);const a=e.getElementById(i.nodeId);r.l.info("Id:",n,"Position: (",t.position().x,", ",t.position().y,")",i),a.attr("transform",`translate(${t.position().x-i.width/2}, ${t.position().y-i.height/2})`),a.attr("attr",`apa-${n})`)}))}(s,p),(0,r.o)(void 0,c,(null==(a=u.mindmap)?void 0:a.padding)??r.A.mindmap.padding,(null==(o=u.mindmap)?void 0:o.useMaxWidth)??r.A.mindmap.useMaxWidth)}},parser:d,styles:e=>`\n .edge {\n stroke-width: 3;\n }\n ${(e=>{let t="";for(let n=0;n{s.d(e,{D:()=>l,S:()=>c,a:()=>h,b:()=>a,c:()=>o,d:()=>B,p:()=>r,s:()=>F});var i=s(37160),n=function(){var t=function(t,e,s,i){for(s=s||{},i=t.length;i--;s[t[i]]=e);return s},e=[1,2],s=[1,3],i=[1,4],n=[2,4],r=[1,9],o=[1,11],a=[1,15],c=[1,16],l=[1,17],h=[1,18],u=[1,30],d=[1,19],p=[1,20],y=[1,21],f=[1,22],m=[1,23],g=[1,25],S=[1,26],_=[1,27],k=[1,28],T=[1,29],b=[1,32],E=[1,33],x=[1,34],C=[1,35],$=[1,31],v=[1,4,5,15,16,18,20,21,23,24,25,26,27,28,32,34,36,37,41,44,45,46,47,50],D=[1,4,5,13,14,15,16,18,20,21,23,24,25,26,27,28,32,34,36,37,41,44,45,46,47,50],A=[4,5,15,16,18,20,21,23,24,25,26,27,28,32,34,36,37,41,44,45,46,47,50],L={trace:function(){},yy:{},symbols_:{error:2,start:3,SPACE:4,NL:5,SD:6,document:7,line:8,statement:9,classDefStatement:10,cssClassStatement:11,idStatement:12,DESCR:13,"--\x3e":14,HIDE_EMPTY:15,scale:16,WIDTH:17,COMPOSIT_STATE:18,STRUCT_START:19,STRUCT_STOP:20,STATE_DESCR:21,AS:22,ID:23,FORK:24,JOIN:25,CHOICE:26,CONCURRENT:27,note:28,notePosition:29,NOTE_TEXT:30,direction:31,acc_title:32,acc_title_value:33,acc_descr:34,acc_descr_value:35,acc_descr_multiline_value:36,classDef:37,CLASSDEF_ID:38,CLASSDEF_STYLEOPTS:39,DEFAULT:40,class:41,CLASSENTITY_IDS:42,STYLECLASS:43,direction_tb:44,direction_bt:45,direction_rl:46,direction_lr:47,eol:48,";":49,EDGE_STATE:50,STYLE_SEPARATOR:51,left_of:52,right_of:53,$accept:0,$end:1},terminals_:{2:"error",4:"SPACE",5:"NL",6:"SD",13:"DESCR",14:"--\x3e",15:"HIDE_EMPTY",16:"scale",17:"WIDTH",18:"COMPOSIT_STATE",19:"STRUCT_START",20:"STRUCT_STOP",21:"STATE_DESCR",22:"AS",23:"ID",24:"FORK",25:"JOIN",26:"CHOICE",27:"CONCURRENT",28:"note",30:"NOTE_TEXT",32:"acc_title",33:"acc_title_value",34:"acc_descr",35:"acc_descr_value",36:"acc_descr_multiline_value",37:"classDef",38:"CLASSDEF_ID",39:"CLASSDEF_STYLEOPTS",40:"DEFAULT",41:"class",42:"CLASSENTITY_IDS",43:"STYLECLASS",44:"direction_tb",45:"direction_bt",46:"direction_rl",47:"direction_lr",49:";",50:"EDGE_STATE",51:"STYLE_SEPARATOR",52:"left_of",53:"right_of"},productions_:[0,[3,2],[3,2],[3,2],[7,0],[7,2],[8,2],[8,1],[8,1],[9,1],[9,1],[9,1],[9,2],[9,3],[9,4],[9,1],[9,2],[9,1],[9,4],[9,3],[9,6],[9,1],[9,1],[9,1],[9,1],[9,4],[9,4],[9,1],[9,2],[9,2],[9,1],[10,3],[10,3],[11,3],[31,1],[31,1],[31,1],[31,1],[48,1],[48,1],[12,1],[12,1],[12,3],[12,3],[29,1],[29,1]],performAction:function(t,e,s,i,n,r,o){var a=r.length-1;switch(n){case 3:return i.setRootDoc(r[a]),r[a];case 4:this.$=[];break;case 5:"nl"!=r[a]&&(r[a-1].push(r[a]),this.$=r[a-1]);break;case 6:case 7:case 11:this.$=r[a];break;case 8:this.$="nl";break;case 12:const t=r[a-1];t.description=i.trimColon(r[a]),this.$=t;break;case 13:this.$={stmt:"relation",state1:r[a-2],state2:r[a]};break;case 14:const e=i.trimColon(r[a]);this.$={stmt:"relation",state1:r[a-3],state2:r[a-1],description:e};break;case 18:this.$={stmt:"state",id:r[a-3],type:"default",description:"",doc:r[a-1]};break;case 19:var c=r[a],l=r[a-2].trim();if(r[a].match(":")){var h=r[a].split(":");c=h[0],l=[l,h[1]]}this.$={stmt:"state",id:c,type:"default",description:l};break;case 20:this.$={stmt:"state",id:r[a-3],type:"default",description:r[a-5],doc:r[a-1]};break;case 21:this.$={stmt:"state",id:r[a],type:"fork"};break;case 22:this.$={stmt:"state",id:r[a],type:"join"};break;case 23:this.$={stmt:"state",id:r[a],type:"choice"};break;case 24:this.$={stmt:"state",id:i.getDividerId(),type:"divider"};break;case 25:this.$={stmt:"state",id:r[a-1].trim(),note:{position:r[a-2].trim(),text:r[a].trim()}};break;case 28:this.$=r[a].trim(),i.setAccTitle(this.$);break;case 29:case 30:this.$=r[a].trim(),i.setAccDescription(this.$);break;case 31:case 32:this.$={stmt:"classDef",id:r[a-1].trim(),classes:r[a].trim()};break;case 33:this.$={stmt:"applyClass",id:r[a-1].trim(),styleClass:r[a].trim()};break;case 34:i.setDirection("TB"),this.$={stmt:"dir",value:"TB"};break;case 35:i.setDirection("BT"),this.$={stmt:"dir",value:"BT"};break;case 36:i.setDirection("RL"),this.$={stmt:"dir",value:"RL"};break;case 37:i.setDirection("LR"),this.$={stmt:"dir",value:"LR"};break;case 40:case 41:this.$={stmt:"state",id:r[a].trim(),type:"default",description:""};break;case 42:case 43:this.$={stmt:"state",id:r[a-2].trim(),classes:[r[a].trim()],type:"default",description:""}}},table:[{3:1,4:e,5:s,6:i},{1:[3]},{3:5,4:e,5:s,6:i},{3:6,4:e,5:s,6:i},t([1,4,5,15,16,18,21,23,24,25,26,27,28,32,34,36,37,41,44,45,46,47,50],n,{7:7}),{1:[2,1]},{1:[2,2]},{1:[2,3],4:r,5:o,8:8,9:10,10:12,11:13,12:14,15:a,16:c,18:l,21:h,23:u,24:d,25:p,26:y,27:f,28:m,31:24,32:g,34:S,36:_,37:k,41:T,44:b,45:E,46:x,47:C,50:$},t(v,[2,5]),{9:36,10:12,11:13,12:14,15:a,16:c,18:l,21:h,23:u,24:d,25:p,26:y,27:f,28:m,31:24,32:g,34:S,36:_,37:k,41:T,44:b,45:E,46:x,47:C,50:$},t(v,[2,7]),t(v,[2,8]),t(v,[2,9]),t(v,[2,10]),t(v,[2,11],{13:[1,37],14:[1,38]}),t(v,[2,15]),{17:[1,39]},t(v,[2,17],{19:[1,40]}),{22:[1,41]},t(v,[2,21]),t(v,[2,22]),t(v,[2,23]),t(v,[2,24]),{29:42,30:[1,43],52:[1,44],53:[1,45]},t(v,[2,27]),{33:[1,46]},{35:[1,47]},t(v,[2,30]),{38:[1,48],40:[1,49]},{42:[1,50]},t(D,[2,40],{51:[1,51]}),t(D,[2,41],{51:[1,52]}),t(v,[2,34]),t(v,[2,35]),t(v,[2,36]),t(v,[2,37]),t(v,[2,6]),t(v,[2,12]),{12:53,23:u,50:$},t(v,[2,16]),t(A,n,{7:54}),{23:[1,55]},{23:[1,56]},{22:[1,57]},{23:[2,44]},{23:[2,45]},t(v,[2,28]),t(v,[2,29]),{39:[1,58]},{39:[1,59]},{43:[1,60]},{23:[1,61]},{23:[1,62]},t(v,[2,13],{13:[1,63]}),{4:r,5:o,8:8,9:10,10:12,11:13,12:14,15:a,16:c,18:l,20:[1,64],21:h,23:u,24:d,25:p,26:y,27:f,28:m,31:24,32:g,34:S,36:_,37:k,41:T,44:b,45:E,46:x,47:C,50:$},t(v,[2,19],{19:[1,65]}),{30:[1,66]},{23:[1,67]},t(v,[2,31]),t(v,[2,32]),t(v,[2,33]),t(D,[2,42]),t(D,[2,43]),t(v,[2,14]),t(v,[2,18]),t(A,n,{7:68}),t(v,[2,25]),t(v,[2,26]),{4:r,5:o,8:8,9:10,10:12,11:13,12:14,15:a,16:c,18:l,20:[1,69],21:h,23:u,24:d,25:p,26:y,27:f,28:m,31:24,32:g,34:S,36:_,37:k,41:T,44:b,45:E,46:x,47:C,50:$},t(v,[2,20])],defaultActions:{5:[2,1],6:[2,2],44:[2,44],45:[2,45]},parseError:function(t,e){if(!e.recoverable){var s=new Error(t);throw s.hash=e,s}this.trace(t)},parse:function(t){var e=this,s=[0],i=[],n=[null],r=[],o=this.table,a="",c=0,l=0,h=r.slice.call(arguments,1),u=Object.create(this.lexer),d={yy:{}};for(var p in this.yy)Object.prototype.hasOwnProperty.call(this.yy,p)&&(d.yy[p]=this.yy[p]);u.setInput(t,d.yy),d.yy.lexer=u,d.yy.parser=this,void 0===u.yylloc&&(u.yylloc={});var y=u.yylloc;r.push(y);var f=u.options&&u.options.ranges;"function"==typeof d.yy.parseError?this.parseError=d.yy.parseError:this.parseError=Object.getPrototypeOf(this).parseError;for(var m,g,S,_,k,T,b,E,x,C={};;){if(g=s[s.length-1],this.defaultActions[g]?S=this.defaultActions[g]:(null==m&&(x=void 0,"number"!=typeof(x=i.pop()||u.lex()||1)&&(x instanceof Array&&(x=(i=x).pop()),x=e.symbols_[x]||x),m=x),S=o[g]&&o[g][m]),void 0===S||!S.length||!S[0]){var $="";for(k in E=[],o[g])this.terminals_[k]&&k>2&&E.push("'"+this.terminals_[k]+"'");$=u.showPosition?"Parse error on line "+(c+1)+":\n"+u.showPosition()+"\nExpecting "+E.join(", ")+", got '"+(this.terminals_[m]||m)+"'":"Parse error on line "+(c+1)+": Unexpected "+(1==m?"end of input":"'"+(this.terminals_[m]||m)+"'"),this.parseError($,{text:u.match,token:this.terminals_[m]||m,line:u.yylineno,loc:y,expected:E})}if(S[0]instanceof Array&&S.length>1)throw new Error("Parse Error: multiple actions possible at state: "+g+", token: "+m);switch(S[0]){case 1:s.push(m),n.push(u.yytext),r.push(u.yylloc),s.push(S[1]),m=null,l=u.yyleng,a=u.yytext,c=u.yylineno,y=u.yylloc;break;case 2:if(T=this.productions_[S[1]][1],C.$=n[n.length-T],C._$={first_line:r[r.length-(T||1)].first_line,last_line:r[r.length-1].last_line,first_column:r[r.length-(T||1)].first_column,last_column:r[r.length-1].last_column},f&&(C._$.range=[r[r.length-(T||1)].range[0],r[r.length-1].range[1]]),void 0!==(_=this.performAction.apply(C,[a,l,c,d.yy,S[1],n,r].concat(h))))return _;T&&(s=s.slice(0,-1*T*2),n=n.slice(0,-1*T),r=r.slice(0,-1*T)),s.push(this.productions_[S[1]][0]),n.push(C.$),r.push(C._$),b=o[s[s.length-2]][s[s.length-1]],s.push(b);break;case 3:return!0}}return!0}},I={EOF:1,parseError:function(t,e){if(!this.yy.parser)throw new Error(t);this.yy.parser.parseError(t,e)},setInput:function(t,e){return this.yy=e||this.yy||{},this._input=t,this._more=this._backtrack=this.done=!1,this.yylineno=this.yyleng=0,this.yytext=this.matched=this.match="",this.conditionStack=["INITIAL"],this.yylloc={first_line:1,first_column:0,last_line:1,last_column:0},this.options.ranges&&(this.yylloc.range=[0,0]),this.offset=0,this},input:function(){var t=this._input[0];return this.yytext+=t,this.yyleng++,this.offset++,this.match+=t,this.matched+=t,t.match(/(?:\r\n?|\n).*/g)?(this.yylineno++,this.yylloc.last_line++):this.yylloc.last_column++,this.options.ranges&&this.yylloc.range[1]++,this._input=this._input.slice(1),t},unput:function(t){var e=t.length,s=t.split(/(?:\r\n?|\n)/g);this._input=t+this._input,this.yytext=this.yytext.substr(0,this.yytext.length-e),this.offset-=e;var i=this.match.split(/(?:\r\n?|\n)/g);this.match=this.match.substr(0,this.match.length-1),this.matched=this.matched.substr(0,this.matched.length-1),s.length-1&&(this.yylineno-=s.length-1);var n=this.yylloc.range;return this.yylloc={first_line:this.yylloc.first_line,last_line:this.yylineno+1,first_column:this.yylloc.first_column,last_column:s?(s.length===i.length?this.yylloc.first_column:0)+i[i.length-s.length].length-s[0].length:this.yylloc.first_column-e},this.options.ranges&&(this.yylloc.range=[n[0],n[0]+this.yyleng-e]),this.yyleng=this.yytext.length,this},more:function(){return this._more=!0,this},reject:function(){return this.options.backtrack_lexer?(this._backtrack=!0,this):this.parseError("Lexical error on line "+(this.yylineno+1)+". You can only invoke reject() in the lexer when the lexer is of the backtracking persuasion (options.backtrack_lexer = true).\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},less:function(t){this.unput(this.match.slice(t))},pastInput:function(){var t=this.matched.substr(0,this.matched.length-this.match.length);return(t.length>20?"...":"")+t.substr(-20).replace(/\n/g,"")},upcomingInput:function(){var t=this.match;return t.length<20&&(t+=this._input.substr(0,20-t.length)),(t.substr(0,20)+(t.length>20?"...":"")).replace(/\n/g,"")},showPosition:function(){var t=this.pastInput(),e=new Array(t.length+1).join("-");return t+this.upcomingInput()+"\n"+e+"^"},test_match:function(t,e){var s,i,n;if(this.options.backtrack_lexer&&(n={yylineno:this.yylineno,yylloc:{first_line:this.yylloc.first_line,last_line:this.last_line,first_column:this.yylloc.first_column,last_column:this.yylloc.last_column},yytext:this.yytext,match:this.match,matches:this.matches,matched:this.matched,yyleng:this.yyleng,offset:this.offset,_more:this._more,_input:this._input,yy:this.yy,conditionStack:this.conditionStack.slice(0),done:this.done},this.options.ranges&&(n.yylloc.range=this.yylloc.range.slice(0))),(i=t[0].match(/(?:\r\n?|\n).*/g))&&(this.yylineno+=i.length),this.yylloc={first_line:this.yylloc.last_line,last_line:this.yylineno+1,first_column:this.yylloc.last_column,last_column:i?i[i.length-1].length-i[i.length-1].match(/\r?\n?/)[0].length:this.yylloc.last_column+t[0].length},this.yytext+=t[0],this.match+=t[0],this.matches=t,this.yyleng=this.yytext.length,this.options.ranges&&(this.yylloc.range=[this.offset,this.offset+=this.yyleng]),this._more=!1,this._backtrack=!1,this._input=this._input.slice(t[0].length),this.matched+=t[0],s=this.performAction.call(this,this.yy,this,e,this.conditionStack[this.conditionStack.length-1]),this.done&&this._input&&(this.done=!1),s)return s;if(this._backtrack){for(var r in n)this[r]=n[r];return!1}return!1},next:function(){if(this.done)return this.EOF;var t,e,s,i;this._input||(this.done=!0),this._more||(this.yytext="",this.match="");for(var n=this._currentRules(),r=0;re[0].length)){if(e=s,i=r,this.options.backtrack_lexer){if(!1!==(t=this.test_match(s,n[r])))return t;if(this._backtrack){e=!1;continue}return!1}if(!this.options.flex)break}return e?!1!==(t=this.test_match(e,n[i]))&&t:""===this._input?this.EOF:this.parseError("Lexical error on line "+(this.yylineno+1)+". Unrecognized text.\n"+this.showPosition(),{text:"",token:null,line:this.yylineno})},lex:function(){var t=this.next();return t||this.lex()},begin:function(t){this.conditionStack.push(t)},popState:function(){return this.conditionStack.length-1>0?this.conditionStack.pop():this.conditionStack[0]},_currentRules:function(){return this.conditionStack.length&&this.conditionStack[this.conditionStack.length-1]?this.conditions[this.conditionStack[this.conditionStack.length-1]].rules:this.conditions.INITIAL.rules},topState:function(t){return(t=this.conditionStack.length-1-Math.abs(t||0))>=0?this.conditionStack[t]:"INITIAL"},pushState:function(t){this.begin(t)},stateStackSize:function(){return this.conditionStack.length},options:{"case-insensitive":!0},performAction:function(t,e,s,i){switch(s){case 0:return 40;case 1:case 39:return 44;case 2:case 40:return 45;case 3:case 41:return 46;case 4:case 42:return 47;case 5:case 6:case 8:case 9:case 10:case 11:case 51:case 53:case 59:break;case 7:case 74:return 5;case 12:case 29:return this.pushState("SCALE"),16;case 13:case 30:return 17;case 14:case 20:case 31:case 46:case 49:this.popState();break;case 15:return this.begin("acc_title"),32;case 16:return this.popState(),"acc_title_value";case 17:return this.begin("acc_descr"),34;case 18:return this.popState(),"acc_descr_value";case 19:this.begin("acc_descr_multiline");break;case 21:return"acc_descr_multiline_value";case 22:return this.pushState("CLASSDEF"),37;case 23:return this.popState(),this.pushState("CLASSDEFID"),"DEFAULT_CLASSDEF_ID";case 24:return this.popState(),this.pushState("CLASSDEFID"),38;case 25:return this.popState(),39;case 26:return this.pushState("CLASS"),41;case 27:return this.popState(),this.pushState("CLASS_STYLE"),42;case 28:return this.popState(),43;case 32:this.pushState("STATE");break;case 33:case 36:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),24;case 34:case 37:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),25;case 35:case 38:return this.popState(),e.yytext=e.yytext.slice(0,-10).trim(),26;case 43:this.pushState("STATE_STRING");break;case 44:return this.pushState("STATE_ID"),"AS";case 45:case 61:return this.popState(),"ID";case 47:return"STATE_DESCR";case 48:return 18;case 50:return this.popState(),this.pushState("struct"),19;case 52:return this.popState(),20;case 54:return this.begin("NOTE"),28;case 55:return this.popState(),this.pushState("NOTE_ID"),52;case 56:return this.popState(),this.pushState("NOTE_ID"),53;case 57:this.popState(),this.pushState("FLOATING_NOTE");break;case 58:return this.popState(),this.pushState("FLOATING_NOTE_ID"),"AS";case 60:return"NOTE_TEXT";case 62:return this.popState(),this.pushState("NOTE_TEXT"),23;case 63:return this.popState(),e.yytext=e.yytext.substr(2).trim(),30;case 64:return this.popState(),e.yytext=e.yytext.slice(0,-8).trim(),30;case 65:case 66:return 6;case 67:return 15;case 68:return 50;case 69:return 23;case 70:return e.yytext=e.yytext.trim(),13;case 71:return 14;case 72:return 27;case 73:return 51;case 75:return"INVALID"}},rules:[/^(?:default\b)/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:[^\}]%%[^\n]*)/i,/^(?:[\n]+)/i,/^(?:[\s]+)/i,/^(?:((?!\n)\s)+)/i,/^(?:#[^\n]*)/i,/^(?:%[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:accTitle\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*:\s*)/i,/^(?:(?!\n||)*[^\n]*)/i,/^(?:accDescr\s*\{\s*)/i,/^(?:[\}])/i,/^(?:[^\}]*)/i,/^(?:classDef\s+)/i,/^(?:DEFAULT\s+)/i,/^(?:\w+\s+)/i,/^(?:[^\n]*)/i,/^(?:class\s+)/i,/^(?:(\w+)+((,\s*\w+)*))/i,/^(?:[^\n]*)/i,/^(?:scale\s+)/i,/^(?:\d+)/i,/^(?:\s+width\b)/i,/^(?:state\s+)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*<>)/i,/^(?:.*\[\[fork\]\])/i,/^(?:.*\[\[join\]\])/i,/^(?:.*\[\[choice\]\])/i,/^(?:.*direction\s+TB[^\n]*)/i,/^(?:.*direction\s+BT[^\n]*)/i,/^(?:.*direction\s+RL[^\n]*)/i,/^(?:.*direction\s+LR[^\n]*)/i,/^(?:["])/i,/^(?:\s*as\s+)/i,/^(?:[^\n\{]*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n\s\{]+)/i,/^(?:\n)/i,/^(?:\{)/i,/^(?:%%(?!\{)[^\n]*)/i,/^(?:\})/i,/^(?:[\n])/i,/^(?:note\s+)/i,/^(?:left of\b)/i,/^(?:right of\b)/i,/^(?:")/i,/^(?:\s*as\s*)/i,/^(?:["])/i,/^(?:[^"]*)/i,/^(?:[^\n]*)/i,/^(?:\s*[^:\n\s\-]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:[\s\S]*?end note\b)/i,/^(?:stateDiagram\s+)/i,/^(?:stateDiagram-v2\s+)/i,/^(?:hide empty description\b)/i,/^(?:\[\*\])/i,/^(?:[^:\n\s\-\{]+)/i,/^(?:\s*:[^:\n;]+)/i,/^(?:-->)/i,/^(?:--)/i,/^(?::::)/i,/^(?:$)/i,/^(?:.)/i],conditions:{LINE:{rules:[9,10],inclusive:!1},struct:{rules:[9,10,22,26,32,39,40,41,42,51,52,53,54,68,69,70,71,72],inclusive:!1},FLOATING_NOTE_ID:{rules:[61],inclusive:!1},FLOATING_NOTE:{rules:[58,59,60],inclusive:!1},NOTE_TEXT:{rules:[63,64],inclusive:!1},NOTE_ID:{rules:[62],inclusive:!1},NOTE:{rules:[55,56,57],inclusive:!1},CLASS_STYLE:{rules:[28],inclusive:!1},CLASS:{rules:[27],inclusive:!1},CLASSDEFID:{rules:[25],inclusive:!1},CLASSDEF:{rules:[23,24],inclusive:!1},acc_descr_multiline:{rules:[20,21],inclusive:!1},acc_descr:{rules:[18],inclusive:!1},acc_title:{rules:[16],inclusive:!1},SCALE:{rules:[13,14,30,31],inclusive:!1},ALIAS:{rules:[],inclusive:!1},STATE_ID:{rules:[45],inclusive:!1},STATE_STRING:{rules:[46,47],inclusive:!1},FORK_STATE:{rules:[],inclusive:!1},STATE:{rules:[9,10,33,34,35,36,37,38,43,44,48,49,50],inclusive:!1},ID:{rules:[9,10],inclusive:!1},INITIAL:{rules:[0,1,2,3,4,5,6,7,8,10,11,12,15,17,19,22,26,29,32,50,54,65,66,67,68,69,70,71,73,74,75],inclusive:!0}}};function O(){this.yy={}}return L.lexer=I,O.prototype=L,L.Parser=O,new O}();n.parser=n;const r=n,o="TB",a="state",c="relation",l="default",h="divider",u="[*]",d="start",p=u,y="color",f="fill";let m="LR",g=[],S={};let _={root:{relations:[],states:{},documents:{}}},k=_.root,T=0,b=0;const E=t=>JSON.parse(JSON.stringify(t)),x=(t,e,s)=>{if(e.stmt===c)x(t,e.state1,!0),x(t,e.state2,!1);else if(e.stmt===a&&("[*]"===e.id?(e.id=s?t.id+"_start":t.id+"_end",e.start=s):e.id=e.id.trim()),e.doc){const t=[];let s,n=[];for(s=0;s0&&n.length>0){const s={stmt:a,id:(0,i.F)(),type:"divider",doc:E(n)};t.push(E(s)),e.doc=t}e.doc.forEach((t=>x(e,t,!0)))}},C=function(t,e=l,s=null,n=null,r=null,o=null,a=null,c=null){const h=null==t?void 0:t.trim();if(void 0===k.states[h]?(i.l.info("Adding state ",h,n),k.states[h]={id:h,descriptions:[],type:e,doc:s,note:r,classes:[],styles:[],textStyles:[]}):(k.states[h].doc||(k.states[h].doc=s),k.states[h].type||(k.states[h].type=e)),n&&(i.l.info("Setting state description",h,n),"string"==typeof n&&I(h,n.trim()),"object"==typeof n&&n.forEach((t=>I(h,t.trim())))),r&&(k.states[h].note=r,k.states[h].note.text=i.e.sanitizeText(k.states[h].note.text,(0,i.c)())),o){i.l.info("Setting state classes",h,o);("string"==typeof o?[o]:o).forEach((t=>N(h,t.trim())))}if(a){i.l.info("Setting state styles",h,a);("string"==typeof a?[a]:a).forEach((t=>R(h,t.trim())))}if(c){i.l.info("Setting state styles",h,a);("string"==typeof c?[c]:c).forEach((t=>w(h,t.trim())))}},$=function(t){_={root:{relations:[],states:{},documents:{}}},k=_.root,T=0,S={},t||(0,i.t)()},v=function(t){return k.states[t]};function D(t=""){let e=t;return t===u&&(T++,e=`${d}${T}`),e}function A(t="",e=l){return t===u?d:e}const L=function(t,e,s){if("object"==typeof t)!function(t,e,s){let n=D(t.id.trim()),r=A(t.id.trim(),t.type),o=D(e.id.trim()),a=A(e.id.trim(),e.type);C(n,r,t.doc,t.description,t.note,t.classes,t.styles,t.textStyles),C(o,a,e.doc,e.description,e.note,e.classes,e.styles,e.textStyles),k.relations.push({id1:n,id2:o,relationTitle:i.e.sanitizeText(s,(0,i.c)())})}(t,e,s);else{const n=D(t.trim()),r=A(t),o=function(t=""){let e=t;return t===p&&(T++,e=`end${T}`),e}(e.trim()),a=function(t="",e=l){return t===p?"end":e}(e);C(n,r),C(o,a),k.relations.push({id1:n,id2:o,title:i.e.sanitizeText(s,(0,i.c)())})}},I=function(t,e){const s=k.states[t],n=e.startsWith(":")?e.replace(":","").trim():e;s.descriptions.push(i.e.sanitizeText(n,(0,i.c)()))},O=function(t,e=""){void 0===S[t]&&(S[t]={id:t,styles:[],textStyles:[]});const s=S[t];null!=e&&e.split(",").forEach((t=>{const e=t.replace(/([^;]*);/,"$1").trim();if(t.match(y)){const t=e.replace(f,"bgFill").replace(y,f);s.textStyles.push(t)}s.styles.push(e)}))},N=function(t,e){t.split(",").forEach((function(t){let s=v(t);if(void 0===s){const e=t.trim();C(e),s=v(e)}s.classes.push(e)}))},R=function(t,e){const s=v(t);void 0!==s&&s.textStyles.push(e)},w=function(t,e){const s=v(t);void 0!==s&&s.textStyles.push(e)},B={getConfig:()=>(0,i.c)().state,addState:C,clear:$,getState:v,getStates:function(){return k.states},getRelations:function(){return k.relations},getClasses:function(){return S},getDirection:()=>m,addRelation:L,getDividerId:()=>(b++,"divider-id-"+b),setDirection:t=>{m=t},cleanupLabel:function(t){return":"===t.substring(0,1)?t.substr(2).trim():t.trim()},lineType:{LINE:0,DOTTED_LINE:1},relationType:{AGGREGATION:0,EXTENSION:1,COMPOSITION:2,DEPENDENCY:3},logDocuments:function(){i.l.info("Documents = ",_)},getRootDoc:()=>g,setRootDoc:t=>{i.l.info("Setting root doc",t),g=t},getRootDocV2:()=>(x({id:"root"},{id:"root",doc:g},!0),{id:"root",doc:g}),extract:t=>{let e;e=t.doc?t.doc:t,i.l.info(e),$(!0),i.l.info("Extract",e),e.forEach((t=>{switch(t.stmt){case a:C(t.id.trim(),t.type,t.doc,t.description,t.note,t.classes,t.styles,t.textStyles);break;case c:L(t.state1,t.state2,t.description);break;case"classDef":O(t.id.trim(),t.classes);break;case"applyClass":N(t.id.trim(),t.styleClass)}}))},trimColon:t=>t&&":"===t[0]?t.substr(1).trim():t.trim(),getAccTitle:i.g,setAccTitle:i.s,getAccDescription:i.a,setAccDescription:i.b,addStyleClass:O,setCssClass:N,addDescription:I,setDiagramTitle:i.q,getDiagramTitle:i.r},F=t=>`\ndefs #statediagram-barbEnd {\n fill: ${t.transitionColor};\n stroke: ${t.transitionColor};\n }\ng.stateGroup text {\n fill: ${t.nodeBorder};\n stroke: none;\n font-size: 10px;\n}\ng.stateGroup text {\n fill: ${t.textColor};\n stroke: none;\n font-size: 10px;\n\n}\ng.stateGroup .state-title {\n font-weight: bolder;\n fill: ${t.stateLabelColor};\n}\n\ng.stateGroup rect {\n fill: ${t.mainBkg};\n stroke: ${t.nodeBorder};\n}\n\ng.stateGroup line {\n stroke: ${t.lineColor};\n stroke-width: 1;\n}\n\n.transition {\n stroke: ${t.transitionColor};\n stroke-width: 1;\n fill: none;\n}\n\n.stateGroup .composit {\n fill: ${t.background};\n border-bottom: 1px\n}\n\n.stateGroup .alt-composit {\n fill: #e0e0e0;\n border-bottom: 1px\n}\n\n.state-note {\n stroke: ${t.noteBorderColor};\n fill: ${t.noteBkgColor};\n\n text {\n fill: ${t.noteTextColor};\n stroke: none;\n font-size: 10px;\n }\n}\n\n.stateLabel .box {\n stroke: none;\n stroke-width: 0;\n fill: ${t.mainBkg};\n opacity: 0.5;\n}\n\n.edgeLabel .label rect {\n fill: ${t.labelBackgroundColor};\n opacity: 0.5;\n}\n.edgeLabel .label text {\n fill: ${t.transitionLabelColor||t.tertiaryTextColor};\n}\n.label div .edgeLabel {\n color: ${t.transitionLabelColor||t.tertiaryTextColor};\n}\n\n.stateLabel text {\n fill: ${t.stateLabelColor};\n font-size: 10px;\n font-weight: bold;\n}\n\n.node circle.state-start {\n fill: ${t.specialStateColor};\n stroke: ${t.specialStateColor};\n}\n\n.node .fork-join {\n fill: ${t.specialStateColor};\n stroke: ${t.specialStateColor};\n}\n\n.node circle.state-end {\n fill: ${t.innerEndBackground};\n stroke: ${t.background};\n stroke-width: 1.5\n}\n.end-state-inner {\n fill: ${t.compositeBackground||t.background};\n // stroke: ${t.background};\n stroke-width: 1.5\n}\n\n.node rect {\n fill: ${t.stateBkg||t.mainBkg};\n stroke: ${t.stateBorder||t.nodeBorder};\n stroke-width: 1px;\n}\n.node polygon {\n fill: ${t.mainBkg};\n stroke: ${t.stateBorder||t.nodeBorder};;\n stroke-width: 1px;\n}\n#statediagram-barbEnd {\n fill: ${t.lineColor};\n}\n\n.statediagram-cluster rect {\n fill: ${t.compositeTitleBackground};\n stroke: ${t.stateBorder||t.nodeBorder};\n stroke-width: 1px;\n}\n\n.cluster-label, .nodeLabel {\n color: ${t.stateLabelColor};\n}\n\n.statediagram-cluster rect.outer {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state .divider {\n stroke: ${t.stateBorder||t.nodeBorder};\n}\n\n.statediagram-state .title-state {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-cluster.statediagram-cluster .inner {\n fill: ${t.compositeBackground||t.background};\n}\n.statediagram-cluster.statediagram-cluster-alt .inner {\n fill: ${t.altBackground?t.altBackground:"#efefef"};\n}\n\n.statediagram-cluster .inner {\n rx:0;\n ry:0;\n}\n\n.statediagram-state rect.basic {\n rx: 5px;\n ry: 5px;\n}\n.statediagram-state rect.divider {\n stroke-dasharray: 10,10;\n fill: ${t.altBackground?t.altBackground:"#efefef"};\n}\n\n.note-edge {\n stroke-dasharray: 5;\n}\n\n.statediagram-note rect {\n fill: ${t.noteBkgColor};\n stroke: ${t.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n.statediagram-note rect {\n fill: ${t.noteBkgColor};\n stroke: ${t.noteBorderColor};\n stroke-width: 1px;\n rx: 0;\n ry: 0;\n}\n\n.statediagram-note text {\n fill: ${t.noteTextColor};\n}\n\n.statediagram-note .nodeLabel {\n color: ${t.noteTextColor};\n}\n.statediagram .edgeLabel {\n color: red; // ${t.noteTextColor};\n}\n\n#dependencyStart, #dependencyEnd {\n fill: ${t.lineColor};\n stroke: ${t.lineColor};\n stroke-width: 1;\n}\n\n.statediagramTitleText {\n text-anchor: middle;\n font-size: 18px;\n fill: ${t.textColor};\n}\n`}}]); \ No newline at end of file diff --git a/assets/js/1436.be7c2667.js b/assets/js/1436.be7c2667.js new file mode 100644 index 00000000..cc51f1ba --- /dev/null +++ b/assets/js/1436.be7c2667.js @@ -0,0 +1,2 @@ +/*! For license information please see 1436.be7c2667.js.LICENSE.txt */ +(self.webpackChunkbeacon_docs=self.webpackChunkbeacon_docs||[]).push([[1436],{60656:(e,n,t)=>{"use strict";t.d(n,{c:()=>o});t(11504);var r=t(93664),s=t(17624);function o(e){let{children:n,fallback:t}=e;return(0,r.c)()?(0,s.jsx)(s.Fragment,{children:n?.()}):t??null}},54581:module=>{var factory;self,factory=()=>(()=>{var __webpack_modules__={"./node_modules/@stablelib/binary/lib/binary.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, "__esModule", ({ value: true }));\n/**\n * Package binary provides functions for encoding and decoding numbers in byte arrays.\n */\nvar int_1 = __webpack_require__(/*! @stablelib/int */ "./node_modules/@stablelib/int/lib/int.js");\n// TODO(dchest): add asserts for correct value ranges and array offsets.\n/**\n * Reads 2 bytes from array starting at offset as big-endian\n * signed 16-bit integer and returns it.\n */\nfunction readInt16BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return (((array[offset + 0] << 8) | array[offset + 1]) << 16) >> 16;\n}\nexports.readInt16BE = readInt16BE;\n/**\n * Reads 2 bytes from array starting at offset as big-endian\n * unsigned 16-bit integer and returns it.\n */\nfunction readUint16BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return ((array[offset + 0] << 8) | array[offset + 1]) >>> 0;\n}\nexports.readUint16BE = readUint16BE;\n/**\n * Reads 2 bytes from array starting at offset as little-endian\n * signed 16-bit integer and returns it.\n */\nfunction readInt16LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return (((array[offset + 1] << 8) | array[offset]) << 16) >> 16;\n}\nexports.readInt16LE = readInt16LE;\n/**\n * Reads 2 bytes from array starting at offset as little-endian\n * unsigned 16-bit integer and returns it.\n */\nfunction readUint16LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return ((array[offset + 1] << 8) | array[offset]) >>> 0;\n}\nexports.readUint16LE = readUint16LE;\n/**\n * Writes 2-byte big-endian representation of 16-bit unsigned\n * value to byte array starting at offset.\n *\n * If byte array is not given, creates a new 2-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint16BE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(2); }\n if (offset === void 0) { offset = 0; }\n out[offset + 0] = value >>> 8;\n out[offset + 1] = value >>> 0;\n return out;\n}\nexports.writeUint16BE = writeUint16BE;\nexports.writeInt16BE = writeUint16BE;\n/**\n * Writes 2-byte little-endian representation of 16-bit unsigned\n * value to array starting at offset.\n *\n * If byte array is not given, creates a new 2-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint16LE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(2); }\n if (offset === void 0) { offset = 0; }\n out[offset + 0] = value >>> 0;\n out[offset + 1] = value >>> 8;\n return out;\n}\nexports.writeUint16LE = writeUint16LE;\nexports.writeInt16LE = writeUint16LE;\n/**\n * Reads 4 bytes from array starting at offset as big-endian\n * signed 32-bit integer and returns it.\n */\nfunction readInt32BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return (array[offset] << 24) |\n (array[offset + 1] << 16) |\n (array[offset + 2] << 8) |\n array[offset + 3];\n}\nexports.readInt32BE = readInt32BE;\n/**\n * Reads 4 bytes from array starting at offset as big-endian\n * unsigned 32-bit integer and returns it.\n */\nfunction readUint32BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return ((array[offset] << 24) |\n (array[offset + 1] << 16) |\n (array[offset + 2] << 8) |\n array[offset + 3]) >>> 0;\n}\nexports.readUint32BE = readUint32BE;\n/**\n * Reads 4 bytes from array starting at offset as little-endian\n * signed 32-bit integer and returns it.\n */\nfunction readInt32LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return (array[offset + 3] << 24) |\n (array[offset + 2] << 16) |\n (array[offset + 1] << 8) |\n array[offset];\n}\nexports.readInt32LE = readInt32LE;\n/**\n * Reads 4 bytes from array starting at offset as little-endian\n * unsigned 32-bit integer and returns it.\n */\nfunction readUint32LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n return ((array[offset + 3] << 24) |\n (array[offset + 2] << 16) |\n (array[offset + 1] << 8) |\n array[offset]) >>> 0;\n}\nexports.readUint32LE = readUint32LE;\n/**\n * Writes 4-byte big-endian representation of 32-bit unsigned\n * value to byte array starting at offset.\n *\n * If byte array is not given, creates a new 4-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint32BE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(4); }\n if (offset === void 0) { offset = 0; }\n out[offset + 0] = value >>> 24;\n out[offset + 1] = value >>> 16;\n out[offset + 2] = value >>> 8;\n out[offset + 3] = value >>> 0;\n return out;\n}\nexports.writeUint32BE = writeUint32BE;\nexports.writeInt32BE = writeUint32BE;\n/**\n * Writes 4-byte little-endian representation of 32-bit unsigned\n * value to array starting at offset.\n *\n * If byte array is not given, creates a new 4-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint32LE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(4); }\n if (offset === void 0) { offset = 0; }\n out[offset + 0] = value >>> 0;\n out[offset + 1] = value >>> 8;\n out[offset + 2] = value >>> 16;\n out[offset + 3] = value >>> 24;\n return out;\n}\nexports.writeUint32LE = writeUint32LE;\nexports.writeInt32LE = writeUint32LE;\n/**\n * Reads 8 bytes from array starting at offset as big-endian\n * signed 64-bit integer and returns it.\n *\n * IMPORTANT: due to JavaScript limitation, supports exact\n * numbers in range -9007199254740991 to 9007199254740991.\n * If the number stored in the byte array is outside this range,\n * the result is not exact.\n */\nfunction readInt64BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var hi = readInt32BE(array, offset);\n var lo = readInt32BE(array, offset + 4);\n return hi * 0x100000000 + lo - ((lo >> 31) * 0x100000000);\n}\nexports.readInt64BE = readInt64BE;\n/**\n * Reads 8 bytes from array starting at offset as big-endian\n * unsigned 64-bit integer and returns it.\n *\n * IMPORTANT: due to JavaScript limitation, supports values up to 2^53-1.\n */\nfunction readUint64BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var hi = readUint32BE(array, offset);\n var lo = readUint32BE(array, offset + 4);\n return hi * 0x100000000 + lo;\n}\nexports.readUint64BE = readUint64BE;\n/**\n * Reads 8 bytes from array starting at offset as little-endian\n * signed 64-bit integer and returns it.\n *\n * IMPORTANT: due to JavaScript limitation, supports exact\n * numbers in range -9007199254740991 to 9007199254740991.\n * If the number stored in the byte array is outside this range,\n * the result is not exact.\n */\nfunction readInt64LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var lo = readInt32LE(array, offset);\n var hi = readInt32LE(array, offset + 4);\n return hi * 0x100000000 + lo - ((lo >> 31) * 0x100000000);\n}\nexports.readInt64LE = readInt64LE;\n/**\n * Reads 8 bytes from array starting at offset as little-endian\n * unsigned 64-bit integer and returns it.\n *\n * IMPORTANT: due to JavaScript limitation, supports values up to 2^53-1.\n */\nfunction readUint64LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var lo = readUint32LE(array, offset);\n var hi = readUint32LE(array, offset + 4);\n return hi * 0x100000000 + lo;\n}\nexports.readUint64LE = readUint64LE;\n/**\n * Writes 8-byte big-endian representation of 64-bit unsigned\n * value to byte array starting at offset.\n *\n * Due to JavaScript limitation, supports values up to 2^53-1.\n *\n * If byte array is not given, creates a new 8-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint64BE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(8); }\n if (offset === void 0) { offset = 0; }\n writeUint32BE(value / 0x100000000 >>> 0, out, offset);\n writeUint32BE(value >>> 0, out, offset + 4);\n return out;\n}\nexports.writeUint64BE = writeUint64BE;\nexports.writeInt64BE = writeUint64BE;\n/**\n * Writes 8-byte little-endian representation of 64-bit unsigned\n * value to byte array starting at offset.\n *\n * Due to JavaScript limitation, supports values up to 2^53-1.\n *\n * If byte array is not given, creates a new 8-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeUint64LE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(8); }\n if (offset === void 0) { offset = 0; }\n writeUint32LE(value >>> 0, out, offset);\n writeUint32LE(value / 0x100000000 >>> 0, out, offset + 4);\n return out;\n}\nexports.writeUint64LE = writeUint64LE;\nexports.writeInt64LE = writeUint64LE;\n/**\n * Reads bytes from array starting at offset as big-endian\n * unsigned bitLen-bit integer and returns it.\n *\n * Supports bit lengths divisible by 8, up to 48.\n */\nfunction readUintBE(bitLength, array, offset) {\n if (offset === void 0) { offset = 0; }\n // TODO(dchest): implement support for bitLengths non-divisible by 8\n if (bitLength % 8 !== 0) {\n throw new Error("readUintBE supports only bitLengths divisible by 8");\n }\n if (bitLength / 8 > array.length - offset) {\n throw new Error("readUintBE: array is too short for the given bitLength");\n }\n var result = 0;\n var mul = 1;\n for (var i = bitLength / 8 + offset - 1; i >= offset; i--) {\n result += array[i] * mul;\n mul *= 256;\n }\n return result;\n}\nexports.readUintBE = readUintBE;\n/**\n * Reads bytes from array starting at offset as little-endian\n * unsigned bitLen-bit integer and returns it.\n *\n * Supports bit lengths divisible by 8, up to 48.\n */\nfunction readUintLE(bitLength, array, offset) {\n if (offset === void 0) { offset = 0; }\n // TODO(dchest): implement support for bitLengths non-divisible by 8\n if (bitLength % 8 !== 0) {\n throw new Error("readUintLE supports only bitLengths divisible by 8");\n }\n if (bitLength / 8 > array.length - offset) {\n throw new Error("readUintLE: array is too short for the given bitLength");\n }\n var result = 0;\n var mul = 1;\n for (var i = offset; i < offset + bitLength / 8; i++) {\n result += array[i] * mul;\n mul *= 256;\n }\n return result;\n}\nexports.readUintLE = readUintLE;\n/**\n * Writes a big-endian representation of bitLen-bit unsigned\n * value to array starting at offset.\n *\n * Supports bit lengths divisible by 8, up to 48.\n *\n * If byte array is not given, creates a new one.\n *\n * Returns the output byte array.\n */\nfunction writeUintBE(bitLength, value, out, offset) {\n if (out === void 0) { out = new Uint8Array(bitLength / 8); }\n if (offset === void 0) { offset = 0; }\n // TODO(dchest): implement support for bitLengths non-divisible by 8\n if (bitLength % 8 !== 0) {\n throw new Error("writeUintBE supports only bitLengths divisible by 8");\n }\n if (!int_1.isSafeInteger(value)) {\n throw new Error("writeUintBE value must be an integer");\n }\n var div = 1;\n for (var i = bitLength / 8 + offset - 1; i >= offset; i--) {\n out[i] = (value / div) & 0xff;\n div *= 256;\n }\n return out;\n}\nexports.writeUintBE = writeUintBE;\n/**\n * Writes a little-endian representation of bitLen-bit unsigned\n * value to array starting at offset.\n *\n * Supports bit lengths divisible by 8, up to 48.\n *\n * If byte array is not given, creates a new one.\n *\n * Returns the output byte array.\n */\nfunction writeUintLE(bitLength, value, out, offset) {\n if (out === void 0) { out = new Uint8Array(bitLength / 8); }\n if (offset === void 0) { offset = 0; }\n // TODO(dchest): implement support for bitLengths non-divisible by 8\n if (bitLength % 8 !== 0) {\n throw new Error("writeUintLE supports only bitLengths divisible by 8");\n }\n if (!int_1.isSafeInteger(value)) {\n throw new Error("writeUintLE value must be an integer");\n }\n var div = 1;\n for (var i = offset; i < offset + bitLength / 8; i++) {\n out[i] = (value / div) & 0xff;\n div *= 256;\n }\n return out;\n}\nexports.writeUintLE = writeUintLE;\n/**\n * Reads 4 bytes from array starting at offset as big-endian\n * 32-bit floating-point number and returns it.\n */\nfunction readFloat32BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat32(offset);\n}\nexports.readFloat32BE = readFloat32BE;\n/**\n * Reads 4 bytes from array starting at offset as little-endian\n * 32-bit floating-point number and returns it.\n */\nfunction readFloat32LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat32(offset, true);\n}\nexports.readFloat32LE = readFloat32LE;\n/**\n * Reads 8 bytes from array starting at offset as big-endian\n * 64-bit floating-point number ("double") and returns it.\n */\nfunction readFloat64BE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat64(offset);\n}\nexports.readFloat64BE = readFloat64BE;\n/**\n * Reads 8 bytes from array starting at offset as little-endian\n * 64-bit floating-point number ("double") and returns it.\n */\nfunction readFloat64LE(array, offset) {\n if (offset === void 0) { offset = 0; }\n var view = new DataView(array.buffer, array.byteOffset, array.byteLength);\n return view.getFloat64(offset, true);\n}\nexports.readFloat64LE = readFloat64LE;\n/**\n * Writes 4-byte big-endian floating-point representation of value\n * to byte array starting at offset.\n *\n * If byte array is not given, creates a new 4-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeFloat32BE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(4); }\n if (offset === void 0) { offset = 0; }\n var view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n view.setFloat32(offset, value);\n return out;\n}\nexports.writeFloat32BE = writeFloat32BE;\n/**\n * Writes 4-byte little-endian floating-point representation of value\n * to byte array starting at offset.\n *\n * If byte array is not given, creates a new 4-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeFloat32LE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(4); }\n if (offset === void 0) { offset = 0; }\n var view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n view.setFloat32(offset, value, true);\n return out;\n}\nexports.writeFloat32LE = writeFloat32LE;\n/**\n * Writes 8-byte big-endian floating-point representation of value\n * to byte array starting at offset.\n *\n * If byte array is not given, creates a new 8-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeFloat64BE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(8); }\n if (offset === void 0) { offset = 0; }\n var view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n view.setFloat64(offset, value);\n return out;\n}\nexports.writeFloat64BE = writeFloat64BE;\n/**\n * Writes 8-byte little-endian floating-point representation of value\n * to byte array starting at offset.\n *\n * If byte array is not given, creates a new 8-byte one.\n *\n * Returns the output byte array.\n */\nfunction writeFloat64LE(value, out, offset) {\n if (out === void 0) { out = new Uint8Array(8); }\n if (offset === void 0) { offset = 0; }\n var view = new DataView(out.buffer, out.byteOffset, out.byteLength);\n view.setFloat64(offset, value, true);\n return out;\n}\nexports.writeFloat64LE = writeFloat64LE;\n//# sourceMappingURL=binary.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@stablelib/binary/lib/binary.js?')},"./node_modules/@stablelib/blake2b/lib/blake2b.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\n// Copyright (C) 2017 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nvar binary_1 = __webpack_require__(/*! @stablelib/binary */ "./node_modules/@stablelib/binary/lib/binary.js");\nvar wipe_1 = __webpack_require__(/*! @stablelib/wipe */ "./node_modules/@stablelib/wipe/lib/wipe.js");\nexports.BLOCK_SIZE = 128;\nexports.DIGEST_LENGTH = 64;\nexports.KEY_LENGTH = 64;\nexports.PERSONALIZATION_LENGTH = 16;\nexports.SALT_LENGTH = 16;\nexports.MAX_LEAF_SIZE = Math.pow(2, 32) - 1;\nexports.MAX_FANOUT = 255;\nexports.MAX_MAX_DEPTH = 255; // not a typo\nvar IV = new Uint32Array([\n // low bits // high bits\n 0xf3bcc908, 0x6a09e667,\n 0x84caa73b, 0xbb67ae85,\n 0xfe94f82b, 0x3c6ef372,\n 0x5f1d36f1, 0xa54ff53a,\n 0xade682d1, 0x510e527f,\n 0x2b3e6c1f, 0x9b05688c,\n 0xfb41bd6b, 0x1f83d9ab,\n 0x137e2179, 0x5be0cd19,\n]);\n// Note: sigma values are doubled since we store\n// 64-bit ints as two 32-bit ints in arrays.\nvar SIGMA = [\n [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30],\n [28, 20, 8, 16, 18, 30, 26, 12, 2, 24, 0, 4, 22, 14, 10, 6],\n [22, 16, 24, 0, 10, 4, 30, 26, 20, 28, 6, 12, 14, 2, 18, 8],\n [14, 18, 6, 2, 26, 24, 22, 28, 4, 12, 10, 20, 8, 0, 30, 16],\n [18, 0, 10, 14, 4, 8, 20, 30, 28, 2, 22, 24, 12, 16, 6, 26],\n [4, 24, 12, 20, 0, 22, 16, 6, 8, 26, 14, 10, 30, 28, 2, 18],\n [24, 10, 2, 30, 28, 26, 8, 20, 0, 14, 12, 6, 18, 4, 16, 22],\n [26, 22, 14, 28, 24, 2, 6, 18, 10, 0, 30, 8, 16, 12, 4, 20],\n [12, 30, 28, 18, 22, 6, 0, 16, 24, 4, 26, 14, 2, 8, 20, 10],\n [20, 4, 16, 8, 14, 12, 2, 10, 30, 22, 18, 28, 6, 24, 26, 0],\n [0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28, 30],\n [28, 20, 8, 16, 18, 30, 26, 12, 2, 24, 0, 4, 22, 14, 10, 6]\n];\n/**\n * BLAKE2b hash function.\n */\nvar BLAKE2b = /** @class */ (function () {\n function BLAKE2b(digestLength, config) {\n if (digestLength === void 0) { digestLength = 64; }\n this.digestLength = digestLength;\n this.blockSize = exports.BLOCK_SIZE;\n // Note: Int32Arrays for state and message are used for performance reasons.\n this._state = new Int32Array(IV); // hash state, initialized with IV\n this._buffer = new Uint8Array(exports.BLOCK_SIZE); // buffer for data\n this._bufferLength = 0; // number of bytes in buffer\n this._ctr = new Uint32Array(4);\n this._flag = new Uint32Array(4);\n this._lastNode = false;\n this._finished = false;\n this._vtmp = new Uint32Array(32);\n this._mtmp = new Uint32Array(32);\n // Validate digest length.\n if (digestLength < 1 || digestLength > exports.DIGEST_LENGTH) {\n throw new Error("blake2b: wrong digest length");\n }\n // Validate config, if present.\n if (config) {\n this.validateConfig(config);\n }\n // Get key length from config.\n var keyLength = 0;\n if (config && config.key) {\n keyLength = config.key.length;\n }\n // Get tree fanout and maxDepth from config.\n var fanout = 1;\n var maxDepth = 1;\n if (config && config.tree) {\n fanout = config.tree.fanout;\n maxDepth = config.tree.maxDepth;\n }\n // Xor common parameters into state.\n this._state[0] ^= digestLength | (keyLength << 8) | (fanout << 16) | (maxDepth << 24);\n // Xor tree parameters into state.\n if (config && config.tree) {\n this._state[1] ^= config.tree.leafSize;\n this._state[2] ^= config.tree.nodeOffsetLowBits;\n this._state[3] ^= config.tree.nodeOffsetHighBits;\n this._state[4] ^= config.tree.nodeDepth | (config.tree.innerDigestLength << 8);\n this._lastNode = config.tree.lastNode;\n }\n // Xor salt into state.\n if (config && config.salt) {\n this._state[8] ^= binary_1.readUint32LE(config.salt, 0);\n this._state[9] ^= binary_1.readUint32LE(config.salt, 4);\n this._state[10] ^= binary_1.readUint32LE(config.salt, 8);\n this._state[11] ^= binary_1.readUint32LE(config.salt, 12);\n }\n // Xor personalization into state.\n if (config && config.personalization) {\n this._state[12] ^= binary_1.readUint32LE(config.personalization, 0);\n this._state[13] ^= binary_1.readUint32LE(config.personalization, 4);\n this._state[14] ^= binary_1.readUint32LE(config.personalization, 8);\n this._state[15] ^= binary_1.readUint32LE(config.personalization, 12);\n }\n // Save a copy of initialized state for reset.\n this._initialState = new Uint32Array(this._state);\n // Process key.\n if (config && config.key && keyLength > 0) {\n this._paddedKey = new Uint8Array(exports.BLOCK_SIZE);\n this._paddedKey.set(config.key);\n // Put padded key into buffer.\n this._buffer.set(this._paddedKey);\n this._bufferLength = exports.BLOCK_SIZE;\n }\n }\n BLAKE2b.prototype.reset = function () {\n // Restore initial state.\n this._state.set(this._initialState);\n if (this._paddedKey) {\n // Put padded key into buffer.\n this._buffer.set(this._paddedKey);\n this._bufferLength = exports.BLOCK_SIZE;\n }\n else {\n this._bufferLength = 0;\n }\n // Clear counters and flags.\n wipe_1.wipe(this._ctr);\n wipe_1.wipe(this._flag);\n this._finished = false;\n return this;\n };\n BLAKE2b.prototype.validateConfig = function (config) {\n if (config.key && config.key.length > exports.KEY_LENGTH) {\n throw new Error("blake2b: wrong key length");\n }\n if (config.salt && config.salt.length !== exports.SALT_LENGTH) {\n throw new Error("blake2b: wrong salt length");\n }\n if (config.personalization &&\n config.personalization.length !== exports.PERSONALIZATION_LENGTH) {\n throw new Error("blake2b: wrong personalization length");\n }\n if (config.tree) {\n if (config.tree.fanout < 0 || config.tree.fanout > exports.MAX_FANOUT) {\n throw new Error("blake2b: wrong tree fanout");\n }\n if (config.tree.maxDepth < 0 || config.tree.maxDepth > exports.MAX_MAX_DEPTH) {\n throw new Error("blake2b: wrong tree depth");\n }\n if (config.tree.leafSize < 0 || config.tree.leafSize > exports.MAX_LEAF_SIZE) {\n throw new Error("blake2b: wrong leaf size");\n }\n if (config.tree.innerDigestLength < 0 ||\n config.tree.innerDigestLength > exports.DIGEST_LENGTH) {\n throw new Error("blake2b: wrong tree inner digest length");\n }\n }\n };\n BLAKE2b.prototype.update = function (data, dataLength) {\n if (dataLength === void 0) { dataLength = data.length; }\n if (this._finished) {\n throw new Error("blake2b: can\'t update because hash was finished.");\n }\n var left = exports.BLOCK_SIZE - this._bufferLength;\n var dataPos = 0;\n if (dataLength === 0) {\n return this;\n }\n // Finish buffer.\n if (dataLength > left) {\n for (var i = 0; i < left; i++) {\n this._buffer[this._bufferLength + i] = data[dataPos + i];\n }\n this._processBlock(exports.BLOCK_SIZE);\n dataPos += left;\n dataLength -= left;\n this._bufferLength = 0;\n }\n // Process data blocks.\n while (dataLength > exports.BLOCK_SIZE) {\n for (var i = 0; i < exports.BLOCK_SIZE; i++) {\n this._buffer[i] = data[dataPos + i];\n }\n this._processBlock(exports.BLOCK_SIZE);\n dataPos += exports.BLOCK_SIZE;\n dataLength -= exports.BLOCK_SIZE;\n this._bufferLength = 0;\n }\n // Copy leftovers to buffer.\n for (var i = 0; i < dataLength; i++) {\n this._buffer[this._bufferLength + i] = data[dataPos + i];\n }\n this._bufferLength += dataLength;\n return this;\n };\n BLAKE2b.prototype.finish = function (out) {\n if (!this._finished) {\n for (var i = this._bufferLength; i < exports.BLOCK_SIZE; i++) {\n this._buffer[i] = 0;\n }\n // Set last block flag.\n this._flag[0] = 0xffffffff;\n this._flag[1] = 0xffffffff;\n // Set last node flag if last node in tree.\n if (this._lastNode) {\n this._flag[2] = 0xffffffff;\n this._flag[3] = 0xffffffff;\n }\n this._processBlock(this._bufferLength);\n this._finished = true;\n }\n // Reuse buffer as temporary space for digest.\n var tmp = this._buffer.subarray(0, 64);\n for (var i = 0; i < 16; i++) {\n binary_1.writeUint32LE(this._state[i], tmp, i * 4);\n }\n out.set(tmp.subarray(0, out.length));\n return this;\n };\n BLAKE2b.prototype.digest = function () {\n var out = new Uint8Array(this.digestLength);\n this.finish(out);\n return out;\n };\n BLAKE2b.prototype.clean = function () {\n wipe_1.wipe(this._vtmp);\n wipe_1.wipe(this._mtmp);\n wipe_1.wipe(this._state);\n wipe_1.wipe(this._buffer);\n wipe_1.wipe(this._initialState);\n if (this._paddedKey) {\n wipe_1.wipe(this._paddedKey);\n }\n this._bufferLength = 0;\n wipe_1.wipe(this._ctr);\n wipe_1.wipe(this._flag);\n this._lastNode = false;\n this._finished = false;\n };\n BLAKE2b.prototype.saveState = function () {\n if (this._finished) {\n throw new Error("blake2b: cannot save finished state");\n }\n return {\n state: new Uint32Array(this._state),\n buffer: new Uint8Array(this._buffer),\n bufferLength: this._bufferLength,\n ctr: new Uint32Array(this._ctr),\n flag: new Uint32Array(this._flag),\n lastNode: this._lastNode,\n paddedKey: this._paddedKey ? new Uint8Array(this._paddedKey) : undefined,\n initialState: new Uint32Array(this._initialState)\n };\n };\n BLAKE2b.prototype.restoreState = function (savedState) {\n this._state.set(savedState.state);\n this._buffer.set(savedState.buffer);\n this._bufferLength = savedState.bufferLength;\n this._ctr.set(savedState.ctr);\n this._flag.set(savedState.flag);\n this._lastNode = savedState.lastNode;\n if (this._paddedKey) {\n wipe_1.wipe(this._paddedKey);\n }\n this._paddedKey = savedState.paddedKey ? new Uint8Array(savedState.paddedKey) : undefined;\n this._initialState.set(savedState.initialState);\n return this;\n };\n BLAKE2b.prototype.cleanSavedState = function (savedState) {\n wipe_1.wipe(savedState.state);\n wipe_1.wipe(savedState.buffer);\n wipe_1.wipe(savedState.initialState);\n if (savedState.paddedKey) {\n wipe_1.wipe(savedState.paddedKey);\n }\n savedState.bufferLength = 0;\n wipe_1.wipe(savedState.ctr);\n wipe_1.wipe(savedState.flag);\n savedState.lastNode = false;\n };\n BLAKE2b.prototype._G = function (v, al, bl, cl, dl, ah, bh, ch, dh, ml0, mh0, ml1, mh1) {\n var vla = v[al], vha = v[ah], vlb = v[bl], vhb = v[bh], vlc = v[cl], vhc = v[ch], vld = v[dl], vhd = v[dh];\n // 64-bit: va += vb\n var w = vla & 0xffff, x = vla >>> 16, y = vha & 0xffff, z = vha >>> 16;\n w += vlb & 0xffff;\n x += vlb >>> 16;\n y += vhb & 0xffff;\n z += vhb >>> 16;\n x += w >>> 16;\n y += x >>> 16;\n z += y >>> 16;\n vha = (y & 0xffff) | (z << 16);\n vla = (w & 0xffff) | (x << 16);\n // 64-bit: va += m[sigma[r][2 * i + 0]]\n w = vla & 0xffff;\n x = vla >>> 16;\n y = vha & 0xffff;\n z = vha >>> 16;\n w += ml0 & 0xffff;\n x += ml0 >>> 16;\n y += mh0 & 0xffff;\n z += mh0 >>> 16;\n x += w >>> 16;\n y += x >>> 16;\n z += y >>> 16;\n vha = (y & 0xffff) | (z << 16);\n vla = (w & 0xffff) | (x << 16);\n // 64-bit: vd ^= va\n vld ^= vla;\n vhd ^= vha;\n // 64-bit: rot(vd, 32)\n w = vhd;\n vhd = vld;\n vld = w;\n // 64-bit: vc += vd\n w = vlc & 0xffff;\n x = vlc >>> 16;\n y = vhc & 0xffff;\n z = vhc >>> 16;\n w += vld & 0xffff;\n x += vld >>> 16;\n y += vhd & 0xffff;\n z += vhd >>> 16;\n x += w >>> 16;\n y += x >>> 16;\n z += y >>> 16;\n vhc = (y & 0xffff) | (z << 16);\n vlc = (w & 0xffff) | (x << 16);\n // 64-bit: vb ^= vc\n vlb ^= vlc;\n vhb ^= vhc;\n // 64-bit: rot(vb, 24)\n w = vlb << 8 | vhb >>> 24;\n vlb = vhb << 8 | vlb >>> 24;\n vhb = w;\n // 64-bit: va += vb\n w = vla & 0xffff;\n x = vla >>> 16;\n y = vha & 0xffff;\n z = vha >>> 16;\n w += vlb & 0xffff;\n x += vlb >>> 16;\n y += vhb & 0xffff;\n z += vhb >>> 16;\n x += w >>> 16;\n y += x >>> 16;\n z += y >>> 16;\n vha = (y & 0xffff) | (z << 16);\n vla = (w & 0xffff) | (x << 16);\n // 64-bit: va += m[sigma[r][2 * i + 1]\n w = vla & 0xffff;\n x = vla >>> 16;\n y = vha & 0xffff;\n z = vha >>> 16;\n w += ml1 & 0xffff;\n x += ml1 >>> 16;\n y += mh1 & 0xffff;\n z += mh1 >>> 16;\n x += w >>> 16;\n y += x >>> 16;\n z += y >>> 16;\n vha = (y & 0xffff) | (z << 16);\n vla = (w & 0xffff) | (x << 16);\n // 64-bit: vd ^= va\n vld ^= vla;\n vhd ^= vha;\n // 64-bit: rot(vd, 16)\n w = vld << 16 | vhd >>> 16;\n vld = vhd << 16 | vld >>> 16;\n vhd = w;\n // 64-bit: vc += vd\n w = vlc & 0xffff;\n x = vlc >>> 16;\n y = vhc & 0xffff;\n z = vhc >>> 16;\n w += vld & 0xffff;\n x += vld >>> 16;\n y += vhd & 0xffff;\n z += vhd >>> 16;\n x += w >>> 16;\n y += x >>> 16;\n z += y >>> 16;\n vhc = (y & 0xffff) | (z << 16);\n vlc = (w & 0xffff) | (x << 16);\n // 64-bit: vb ^= vc\n vlb ^= vlc;\n vhb ^= vhc;\n // 64-bit: rot(vb, 63)\n w = vhb << 1 | vlb >>> 31;\n vlb = vlb << 1 | vhb >>> 31;\n vhb = w;\n v[al] = vla;\n v[ah] = vha;\n v[bl] = vlb;\n v[bh] = vhb;\n v[cl] = vlc;\n v[ch] = vhc;\n v[dl] = vld;\n v[dh] = vhd;\n };\n BLAKE2b.prototype._incrementCounter = function (n) {\n for (var i = 0; i < 3; i++) {\n var a = this._ctr[i] + n;\n this._ctr[i] = a >>> 0;\n if (this._ctr[i] === a) {\n return;\n }\n n = 1;\n }\n };\n BLAKE2b.prototype._processBlock = function (length) {\n this._incrementCounter(length);\n var v = this._vtmp;\n v.set(this._state);\n v.set(IV, 16);\n v[12 * 2 + 0] ^= this._ctr[0];\n v[12 * 2 + 1] ^= this._ctr[1];\n v[13 * 2 + 0] ^= this._ctr[2];\n v[13 * 2 + 1] ^= this._ctr[3];\n v[14 * 2 + 0] ^= this._flag[0];\n v[14 * 2 + 1] ^= this._flag[1];\n v[15 * 2 + 0] ^= this._flag[2];\n v[15 * 2 + 1] ^= this._flag[3];\n var m = this._mtmp;\n for (var i = 0; i < 32; i++) {\n m[i] = binary_1.readUint32LE(this._buffer, i * 4);\n }\n for (var r = 0; r < 12; r++) {\n this._G(v, 0, 8, 16, 24, 1, 9, 17, 25, m[SIGMA[r][0]], m[SIGMA[r][0] + 1], m[SIGMA[r][1]], m[SIGMA[r][1] + 1]);\n this._G(v, 2, 10, 18, 26, 3, 11, 19, 27, m[SIGMA[r][2]], m[SIGMA[r][2] + 1], m[SIGMA[r][3]], m[SIGMA[r][3] + 1]);\n this._G(v, 4, 12, 20, 28, 5, 13, 21, 29, m[SIGMA[r][4]], m[SIGMA[r][4] + 1], m[SIGMA[r][5]], m[SIGMA[r][5] + 1]);\n this._G(v, 6, 14, 22, 30, 7, 15, 23, 31, m[SIGMA[r][6]], m[SIGMA[r][6] + 1], m[SIGMA[r][7]], m[SIGMA[r][7] + 1]);\n this._G(v, 0, 10, 20, 30, 1, 11, 21, 31, m[SIGMA[r][8]], m[SIGMA[r][8] + 1], m[SIGMA[r][9]], m[SIGMA[r][9] + 1]);\n this._G(v, 2, 12, 22, 24, 3, 13, 23, 25, m[SIGMA[r][10]], m[SIGMA[r][10] + 1], m[SIGMA[r][11]], m[SIGMA[r][11] + 1]);\n this._G(v, 4, 14, 16, 26, 5, 15, 17, 27, m[SIGMA[r][12]], m[SIGMA[r][12] + 1], m[SIGMA[r][13]], m[SIGMA[r][13] + 1]);\n this._G(v, 6, 8, 18, 28, 7, 9, 19, 29, m[SIGMA[r][14]], m[SIGMA[r][14] + 1], m[SIGMA[r][15]], m[SIGMA[r][15] + 1]);\n }\n for (var i = 0; i < 16; i++) {\n this._state[i] ^= v[i] ^ v[i + 16];\n }\n };\n return BLAKE2b;\n}());\nexports.BLAKE2b = BLAKE2b;\nfunction hash(data, digestLength, config) {\n if (digestLength === void 0) { digestLength = exports.DIGEST_LENGTH; }\n var h = new BLAKE2b(digestLength, config);\n h.update(data);\n var digest = h.digest();\n h.clean();\n return digest;\n}\nexports.hash = hash;\n//# sourceMappingURL=blake2b.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@stablelib/blake2b/lib/blake2b.js?')},"./node_modules/@stablelib/bytes/lib/bytes.js":(__unused_webpack_module,exports)=>{"use strict";eval('\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nfunction concat() {\n // Calculate sum of lengths of all arrays.\n var totalLength = 0;\n for (var i = 0; i < arguments.length; i++) {\n totalLength += arguments[i].length;\n }\n // Allocate new array of calculated length.\n var result = new Uint8Array(totalLength);\n // Copy all arrays into result.\n var offset = 0;\n for (var i = 0; i < arguments.length; i++) {\n var arg = arguments[i];\n result.set(arg, offset);\n offset += arg.length;\n }\n return result;\n}\nexports.concat = concat;\n//# sourceMappingURL=bytes.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@stablelib/bytes/lib/bytes.js?')},"./node_modules/@stablelib/chacha/lib/chacha.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, "__esModule", ({ value: true }));\n/**\n * Package chacha implements ChaCha stream cipher.\n */\nvar binary_1 = __webpack_require__(/*! @stablelib/binary */ "./node_modules/@stablelib/binary/lib/binary.js");\nvar wipe_1 = __webpack_require__(/*! @stablelib/wipe */ "./node_modules/@stablelib/wipe/lib/wipe.js");\n// Number of ChaCha rounds (ChaCha20).\nvar ROUNDS = 20;\n// Applies the ChaCha core function to 16-byte input,\n// 32-byte key key, and puts the result into 64-byte array out.\nfunction core(out, input, key) {\n var j0 = 0x61707865; // "expa" -- ChaCha\'s "sigma" constant\n var j1 = 0x3320646E; // "nd 3" for 32-byte keys\n var j2 = 0x79622D32; // "2-by"\n var j3 = 0x6B206574; // "te k"\n var j4 = (key[3] << 24) | (key[2] << 16) | (key[1] << 8) | key[0];\n var j5 = (key[7] << 24) | (key[6] << 16) | (key[5] << 8) | key[4];\n var j6 = (key[11] << 24) | (key[10] << 16) | (key[9] << 8) | key[8];\n var j7 = (key[15] << 24) | (key[14] << 16) | (key[13] << 8) | key[12];\n var j8 = (key[19] << 24) | (key[18] << 16) | (key[17] << 8) | key[16];\n var j9 = (key[23] << 24) | (key[22] << 16) | (key[21] << 8) | key[20];\n var j10 = (key[27] << 24) | (key[26] << 16) | (key[25] << 8) | key[24];\n var j11 = (key[31] << 24) | (key[30] << 16) | (key[29] << 8) | key[28];\n var j12 = (input[3] << 24) | (input[2] << 16) | (input[1] << 8) | input[0];\n var j13 = (input[7] << 24) | (input[6] << 16) | (input[5] << 8) | input[4];\n var j14 = (input[11] << 24) | (input[10] << 16) | (input[9] << 8) | input[8];\n var j15 = (input[15] << 24) | (input[14] << 16) | (input[13] << 8) | input[12];\n var x0 = j0;\n var x1 = j1;\n var x2 = j2;\n var x3 = j3;\n var x4 = j4;\n var x5 = j5;\n var x6 = j6;\n var x7 = j7;\n var x8 = j8;\n var x9 = j9;\n var x10 = j10;\n var x11 = j11;\n var x12 = j12;\n var x13 = j13;\n var x14 = j14;\n var x15 = j15;\n for (var i = 0; i < ROUNDS; i += 2) {\n x0 = x0 + x4 | 0;\n x12 ^= x0;\n x12 = x12 >>> (32 - 16) | x12 << 16;\n x8 = x8 + x12 | 0;\n x4 ^= x8;\n x4 = x4 >>> (32 - 12) | x4 << 12;\n x1 = x1 + x5 | 0;\n x13 ^= x1;\n x13 = x13 >>> (32 - 16) | x13 << 16;\n x9 = x9 + x13 | 0;\n x5 ^= x9;\n x5 = x5 >>> (32 - 12) | x5 << 12;\n x2 = x2 + x6 | 0;\n x14 ^= x2;\n x14 = x14 >>> (32 - 16) | x14 << 16;\n x10 = x10 + x14 | 0;\n x6 ^= x10;\n x6 = x6 >>> (32 - 12) | x6 << 12;\n x3 = x3 + x7 | 0;\n x15 ^= x3;\n x15 = x15 >>> (32 - 16) | x15 << 16;\n x11 = x11 + x15 | 0;\n x7 ^= x11;\n x7 = x7 >>> (32 - 12) | x7 << 12;\n x2 = x2 + x6 | 0;\n x14 ^= x2;\n x14 = x14 >>> (32 - 8) | x14 << 8;\n x10 = x10 + x14 | 0;\n x6 ^= x10;\n x6 = x6 >>> (32 - 7) | x6 << 7;\n x3 = x3 + x7 | 0;\n x15 ^= x3;\n x15 = x15 >>> (32 - 8) | x15 << 8;\n x11 = x11 + x15 | 0;\n x7 ^= x11;\n x7 = x7 >>> (32 - 7) | x7 << 7;\n x1 = x1 + x5 | 0;\n x13 ^= x1;\n x13 = x13 >>> (32 - 8) | x13 << 8;\n x9 = x9 + x13 | 0;\n x5 ^= x9;\n x5 = x5 >>> (32 - 7) | x5 << 7;\n x0 = x0 + x4 | 0;\n x12 ^= x0;\n x12 = x12 >>> (32 - 8) | x12 << 8;\n x8 = x8 + x12 | 0;\n x4 ^= x8;\n x4 = x4 >>> (32 - 7) | x4 << 7;\n x0 = x0 + x5 | 0;\n x15 ^= x0;\n x15 = x15 >>> (32 - 16) | x15 << 16;\n x10 = x10 + x15 | 0;\n x5 ^= x10;\n x5 = x5 >>> (32 - 12) | x5 << 12;\n x1 = x1 + x6 | 0;\n x12 ^= x1;\n x12 = x12 >>> (32 - 16) | x12 << 16;\n x11 = x11 + x12 | 0;\n x6 ^= x11;\n x6 = x6 >>> (32 - 12) | x6 << 12;\n x2 = x2 + x7 | 0;\n x13 ^= x2;\n x13 = x13 >>> (32 - 16) | x13 << 16;\n x8 = x8 + x13 | 0;\n x7 ^= x8;\n x7 = x7 >>> (32 - 12) | x7 << 12;\n x3 = x3 + x4 | 0;\n x14 ^= x3;\n x14 = x14 >>> (32 - 16) | x14 << 16;\n x9 = x9 + x14 | 0;\n x4 ^= x9;\n x4 = x4 >>> (32 - 12) | x4 << 12;\n x2 = x2 + x7 | 0;\n x13 ^= x2;\n x13 = x13 >>> (32 - 8) | x13 << 8;\n x8 = x8 + x13 | 0;\n x7 ^= x8;\n x7 = x7 >>> (32 - 7) | x7 << 7;\n x3 = x3 + x4 | 0;\n x14 ^= x3;\n x14 = x14 >>> (32 - 8) | x14 << 8;\n x9 = x9 + x14 | 0;\n x4 ^= x9;\n x4 = x4 >>> (32 - 7) | x4 << 7;\n x1 = x1 + x6 | 0;\n x12 ^= x1;\n x12 = x12 >>> (32 - 8) | x12 << 8;\n x11 = x11 + x12 | 0;\n x6 ^= x11;\n x6 = x6 >>> (32 - 7) | x6 << 7;\n x0 = x0 + x5 | 0;\n x15 ^= x0;\n x15 = x15 >>> (32 - 8) | x15 << 8;\n x10 = x10 + x15 | 0;\n x5 ^= x10;\n x5 = x5 >>> (32 - 7) | x5 << 7;\n }\n binary_1.writeUint32LE(x0 + j0 | 0, out, 0);\n binary_1.writeUint32LE(x1 + j1 | 0, out, 4);\n binary_1.writeUint32LE(x2 + j2 | 0, out, 8);\n binary_1.writeUint32LE(x3 + j3 | 0, out, 12);\n binary_1.writeUint32LE(x4 + j4 | 0, out, 16);\n binary_1.writeUint32LE(x5 + j5 | 0, out, 20);\n binary_1.writeUint32LE(x6 + j6 | 0, out, 24);\n binary_1.writeUint32LE(x7 + j7 | 0, out, 28);\n binary_1.writeUint32LE(x8 + j8 | 0, out, 32);\n binary_1.writeUint32LE(x9 + j9 | 0, out, 36);\n binary_1.writeUint32LE(x10 + j10 | 0, out, 40);\n binary_1.writeUint32LE(x11 + j11 | 0, out, 44);\n binary_1.writeUint32LE(x12 + j12 | 0, out, 48);\n binary_1.writeUint32LE(x13 + j13 | 0, out, 52);\n binary_1.writeUint32LE(x14 + j14 | 0, out, 56);\n binary_1.writeUint32LE(x15 + j15 | 0, out, 60);\n}\n/**\n * Encrypt src with ChaCha20 stream generated for the given 32-byte key and\n * 8-byte (as in original implementation) or 12-byte (as in RFC7539) nonce and\n * write the result into dst and return it.\n *\n * dst and src may be the same, but otherwise must not overlap.\n *\n * If nonce is 12 bytes, users should not encrypt more than 256 GiB with the\n * same key and nonce, otherwise the stream will repeat. The function will\n * throw error if counter overflows to prevent this.\n *\n * If nonce is 8 bytes, the output is practically unlimited (2^70 bytes, which\n * is more than a million petabytes). However, it is not recommended to\n * generate 8-byte nonces randomly, as the chance of collision is high.\n *\n * Never use the same key and nonce to encrypt more than one message.\n *\n * If nonceInplaceCounterLength is not 0, the nonce is assumed to be a 16-byte\n * array with stream counter in first nonceInplaceCounterLength bytes and nonce\n * in the last remaining bytes. The counter will be incremented inplace for\n * each ChaCha block. This is useful if you need to encrypt one stream of data\n * in chunks.\n */\nfunction streamXOR(key, nonce, src, dst, nonceInplaceCounterLength) {\n if (nonceInplaceCounterLength === void 0) { nonceInplaceCounterLength = 0; }\n // We only support 256-bit keys.\n if (key.length !== 32) {\n throw new Error("ChaCha: key size must be 32 bytes");\n }\n if (dst.length < src.length) {\n throw new Error("ChaCha: destination is shorter than source");\n }\n var nc;\n var counterLength;\n if (nonceInplaceCounterLength === 0) {\n if (nonce.length !== 8 && nonce.length !== 12) {\n throw new Error("ChaCha nonce must be 8 or 12 bytes");\n }\n nc = new Uint8Array(16);\n // First counterLength bytes of nc are counter, starting with zero.\n counterLength = nc.length - nonce.length;\n // Last bytes of nc after counterLength are nonce, set them.\n nc.set(nonce, counterLength);\n }\n else {\n if (nonce.length !== 16) {\n throw new Error("ChaCha nonce with counter must be 16 bytes");\n }\n // This will update passed nonce with counter inplace.\n nc = nonce;\n counterLength = nonceInplaceCounterLength;\n }\n // Allocate temporary space for ChaCha block.\n var block = new Uint8Array(64);\n for (var i = 0; i < src.length; i += 64) {\n // Generate a block.\n core(block, nc, key);\n // XOR block bytes with src into dst.\n for (var j = i; j < i + 64 && j < src.length; j++) {\n dst[j] = src[j] ^ block[j - i];\n }\n // Increment counter.\n incrementCounter(nc, 0, counterLength);\n }\n // Cleanup temporary space.\n wipe_1.wipe(block);\n if (nonceInplaceCounterLength === 0) {\n // Cleanup counter.\n wipe_1.wipe(nc);\n }\n return dst;\n}\nexports.streamXOR = streamXOR;\n/**\n * Generate ChaCha20 stream for the given 32-byte key and 8-byte or 12-byte\n * nonce and write it into dst and return it.\n *\n * Never use the same key and nonce to generate more than one stream.\n *\n * If nonceInplaceCounterLength is not 0, it behaves the same with respect to\n * the nonce as described in the streamXOR documentation.\n *\n * stream is like streamXOR with all-zero src.\n */\nfunction stream(key, nonce, dst, nonceInplaceCounterLength) {\n if (nonceInplaceCounterLength === void 0) { nonceInplaceCounterLength = 0; }\n wipe_1.wipe(dst);\n return streamXOR(key, nonce, dst, dst, nonceInplaceCounterLength);\n}\nexports.stream = stream;\nfunction incrementCounter(counter, pos, len) {\n var carry = 1;\n while (len--) {\n carry = carry + (counter[pos] & 0xff) | 0;\n counter[pos] = carry & 0xff;\n carry >>>= 8;\n pos++;\n }\n if (carry > 0) {\n throw new Error("ChaCha: counter overflow");\n }\n}\n//# sourceMappingURL=chacha.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@stablelib/chacha/lib/chacha.js?')},"./node_modules/@stablelib/chacha20poly1305/lib/chacha20poly1305.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nvar chacha_1 = __webpack_require__(/*! @stablelib/chacha */ "./node_modules/@stablelib/chacha/lib/chacha.js");\nvar poly1305_1 = __webpack_require__(/*! @stablelib/poly1305 */ "./node_modules/@stablelib/poly1305/lib/poly1305.js");\nvar wipe_1 = __webpack_require__(/*! @stablelib/wipe */ "./node_modules/@stablelib/wipe/lib/wipe.js");\nvar binary_1 = __webpack_require__(/*! @stablelib/binary */ "./node_modules/@stablelib/binary/lib/binary.js");\nvar constant_time_1 = __webpack_require__(/*! @stablelib/constant-time */ "./node_modules/@stablelib/constant-time/lib/constant-time.js");\nexports.KEY_LENGTH = 32;\nexports.NONCE_LENGTH = 12;\nexports.TAG_LENGTH = 16;\nvar ZEROS = new Uint8Array(16);\n/**\n * ChaCha20-Poly1305 Authenticated Encryption with Associated Data.\n *\n * Defined in RFC7539.\n */\nvar ChaCha20Poly1305 = /** @class */ (function () {\n /**\n * Creates a new instance with the given 32-byte key.\n */\n function ChaCha20Poly1305(key) {\n this.nonceLength = exports.NONCE_LENGTH;\n this.tagLength = exports.TAG_LENGTH;\n if (key.length !== exports.KEY_LENGTH) {\n throw new Error("ChaCha20Poly1305 needs 32-byte key");\n }\n // Copy key.\n this._key = new Uint8Array(key);\n }\n /**\n * Encrypts and authenticates plaintext, authenticates associated data,\n * and returns sealed ciphertext, which includes authentication tag.\n *\n * RFC7539 specifies 12 bytes for nonce. It may be this 12-byte nonce\n * ("IV"), or full 16-byte counter (called "32-bit fixed-common part")\n * and nonce.\n *\n * If dst is given (it must be the size of plaintext + the size of tag\n * length) the result will be put into it. Dst and plaintext must not\n * overlap.\n */\n ChaCha20Poly1305.prototype.seal = function (nonce, plaintext, associatedData, dst) {\n if (nonce.length > 16) {\n throw new Error("ChaCha20Poly1305: incorrect nonce length");\n }\n // Allocate space for counter, and set nonce as last bytes of it.\n var counter = new Uint8Array(16);\n counter.set(nonce, counter.length - nonce.length);\n // Generate authentication key by taking first 32-bytes of stream.\n // We pass full counter, which has 12-byte nonce and 4-byte block counter,\n // and it will get incremented after generating the block, which is\n // exactly what we need: we only use the first 32 bytes of 64-byte\n // ChaCha block and discard the next 32 bytes.\n var authKey = new Uint8Array(32);\n chacha_1.stream(this._key, counter, authKey, 4);\n // Allocate space for sealed ciphertext.\n var resultLength = plaintext.length + this.tagLength;\n var result;\n if (dst) {\n if (dst.length !== resultLength) {\n throw new Error("ChaCha20Poly1305: incorrect destination length");\n }\n result = dst;\n }\n else {\n result = new Uint8Array(resultLength);\n }\n // Encrypt plaintext.\n chacha_1.streamXOR(this._key, counter, plaintext, result, 4);\n // Authenticate.\n // XXX: can "simplify" here: pass full result (which is already padded\n // due to zeroes prepared for tag), and ciphertext length instead of\n // subarray of result.\n this._authenticate(result.subarray(result.length - this.tagLength, result.length), authKey, result.subarray(0, result.length - this.tagLength), associatedData);\n // Cleanup.\n wipe_1.wipe(counter);\n return result;\n };\n /**\n * Authenticates sealed ciphertext (which includes authentication tag) and\n * associated data, decrypts ciphertext and returns decrypted plaintext.\n *\n * RFC7539 specifies 12 bytes for nonce. It may be this 12-byte nonce\n * ("IV"), or full 16-byte counter (called "32-bit fixed-common part")\n * and nonce.\n *\n * If authentication fails, it returns null.\n *\n * If dst is given (it must be of ciphertext length minus tag length),\n * the result will be put into it. Dst and plaintext must not overlap.\n */\n ChaCha20Poly1305.prototype.open = function (nonce, sealed, associatedData, dst) {\n if (nonce.length > 16) {\n throw new Error("ChaCha20Poly1305: incorrect nonce length");\n }\n // Sealed ciphertext should at least contain tag.\n if (sealed.length < this.tagLength) {\n // TODO(dchest): should we throw here instead?\n return null;\n }\n // Allocate space for counter, and set nonce as last bytes of it.\n var counter = new Uint8Array(16);\n counter.set(nonce, counter.length - nonce.length);\n // Generate authentication key by taking first 32-bytes of stream.\n var authKey = new Uint8Array(32);\n chacha_1.stream(this._key, counter, authKey, 4);\n // Authenticate.\n // XXX: can simplify and avoid allocation: since authenticate()\n // already allocates tag (from Poly1305.digest(), it can return)\n // it instead of copying to calculatedTag. But then in seal()\n // we\'ll need to copy it.\n var calculatedTag = new Uint8Array(this.tagLength);\n this._authenticate(calculatedTag, authKey, sealed.subarray(0, sealed.length - this.tagLength), associatedData);\n // Constant-time compare tags and return null if they differ.\n if (!constant_time_1.equal(calculatedTag, sealed.subarray(sealed.length - this.tagLength, sealed.length))) {\n return null;\n }\n // Allocate space for decrypted plaintext.\n var resultLength = sealed.length - this.tagLength;\n var result;\n if (dst) {\n if (dst.length !== resultLength) {\n throw new Error("ChaCha20Poly1305: incorrect destination length");\n }\n result = dst;\n }\n else {\n result = new Uint8Array(resultLength);\n }\n // Decrypt.\n chacha_1.streamXOR(this._key, counter, sealed.subarray(0, sealed.length - this.tagLength), result, 4);\n // Cleanup.\n wipe_1.wipe(counter);\n return result;\n };\n ChaCha20Poly1305.prototype.clean = function () {\n wipe_1.wipe(this._key);\n return this;\n };\n ChaCha20Poly1305.prototype._authenticate = function (tagOut, authKey, ciphertext, associatedData) {\n // Initialize Poly1305 with authKey.\n var h = new poly1305_1.Poly1305(authKey);\n // Authenticate padded associated data.\n if (associatedData) {\n h.update(associatedData);\n if (associatedData.length % 16 > 0) {\n h.update(ZEROS.subarray(associatedData.length % 16));\n }\n }\n // Authenticate padded ciphertext.\n h.update(ciphertext);\n if (ciphertext.length % 16 > 0) {\n h.update(ZEROS.subarray(ciphertext.length % 16));\n }\n // Authenticate length of associated data.\n // XXX: can avoid allocation here?\n var length = new Uint8Array(8);\n if (associatedData) {\n binary_1.writeUint64LE(associatedData.length, length);\n }\n h.update(length);\n // Authenticate length of ciphertext.\n binary_1.writeUint64LE(ciphertext.length, length);\n h.update(length);\n // Get tag and copy it into tagOut.\n var tag = h.digest();\n for (var i = 0; i < tag.length; i++) {\n tagOut[i] = tag[i];\n }\n // Cleanup.\n h.clean();\n wipe_1.wipe(tag);\n wipe_1.wipe(length);\n };\n return ChaCha20Poly1305;\n}());\nexports.ChaCha20Poly1305 = ChaCha20Poly1305;\n//# sourceMappingURL=chacha20poly1305.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@stablelib/chacha20poly1305/lib/chacha20poly1305.js?')},"./node_modules/@stablelib/constant-time/lib/constant-time.js":(__unused_webpack_module,exports)=>{"use strict";eval('\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, "__esModule", ({ value: true }));\n/**\n * Package constant-time provides functions for performing algorithmically constant-time operations.\n */\n/**\n * NOTE! Due to the inability to guarantee real constant time evaluation of\n * anything in JavaScript VM, this is module is the best effort.\n */\n/**\n * Returns resultIfOne if subject is 1, or resultIfZero if subject is 0.\n *\n * Supports only 32-bit integers, so resultIfOne or resultIfZero are not\n * integers, they\'ll be converted to them with bitwise operations.\n */\nfunction select(subject, resultIfOne, resultIfZero) {\n return (~(subject - 1) & resultIfOne) | ((subject - 1) & resultIfZero);\n}\nexports.select = select;\n/**\n * Returns 1 if a <= b, or 0 if not.\n * Arguments must be positive 32-bit integers less than or equal to 2^31 - 1.\n */\nfunction lessOrEqual(a, b) {\n return (((a | 0) - (b | 0) - 1) >>> 31) & 1;\n}\nexports.lessOrEqual = lessOrEqual;\n/**\n * Returns 1 if a and b are of equal length and their contents\n * are equal, or 0 otherwise.\n *\n * Note that unlike in equal(), zero-length inputs are considered\n * the same, so this function will return 1.\n */\nfunction compare(a, b) {\n if (a.length !== b.length) {\n return 0;\n }\n var result = 0;\n for (var i = 0; i < a.length; i++) {\n result |= a[i] ^ b[i];\n }\n return (1 & ((result - 1) >>> 8));\n}\nexports.compare = compare;\n/**\n * Returns true if a and b are of equal non-zero length,\n * and their contents are equal, or false otherwise.\n *\n * Note that unlike in compare() zero-length inputs are considered\n * _not_ equal, so this function will return false.\n */\nfunction equal(a, b) {\n if (a.length === 0 || b.length === 0) {\n return false;\n }\n return compare(a, b) !== 0;\n}\nexports.equal = equal;\n//# sourceMappingURL=constant-time.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@stablelib/constant-time/lib/constant-time.js?')},"./node_modules/@stablelib/ed25519/lib/ed25519.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.convertSecretKeyToX25519 = exports.convertPublicKeyToX25519 = exports.verify = exports.sign = exports.extractPublicKeyFromSecretKey = exports.generateKeyPair = exports.generateKeyPairFromSeed = exports.SEED_LENGTH = exports.SECRET_KEY_LENGTH = exports.PUBLIC_KEY_LENGTH = exports.SIGNATURE_LENGTH = void 0;\n/**\n * Package ed25519 implements Ed25519 public-key signature algorithm.\n */\nconst random_1 = __webpack_require__(/*! @stablelib/random */ "./node_modules/@stablelib/random/lib/random.js");\nconst sha512_1 = __webpack_require__(/*! @stablelib/sha512 */ "./node_modules/@stablelib/sha512/lib/sha512.js");\nconst wipe_1 = __webpack_require__(/*! @stablelib/wipe */ "./node_modules/@stablelib/wipe/lib/wipe.js");\nexports.SIGNATURE_LENGTH = 64;\nexports.PUBLIC_KEY_LENGTH = 32;\nexports.SECRET_KEY_LENGTH = 64;\nexports.SEED_LENGTH = 32;\n// Returns new zero-filled 16-element GF (Float64Array).\n// If passed an array of numbers, prefills the returned\n// array with them.\n//\n// We use Float64Array, because we need 48-bit numbers\n// for this implementation.\nfunction gf(init) {\n const r = new Float64Array(16);\n if (init) {\n for (let i = 0; i < init.length; i++) {\n r[i] = init[i];\n }\n }\n return r;\n}\n// Base point.\nconst _9 = new Uint8Array(32);\n_9[0] = 9;\nconst gf0 = gf();\nconst gf1 = gf([1]);\nconst D = gf([\n 0x78a3, 0x1359, 0x4dca, 0x75eb, 0xd8ab, 0x4141, 0x0a4d, 0x0070,\n 0xe898, 0x7779, 0x4079, 0x8cc7, 0xfe73, 0x2b6f, 0x6cee, 0x5203\n]);\nconst D2 = gf([\n 0xf159, 0x26b2, 0x9b94, 0xebd6, 0xb156, 0x8283, 0x149a, 0x00e0,\n 0xd130, 0xeef3, 0x80f2, 0x198e, 0xfce7, 0x56df, 0xd9dc, 0x2406\n]);\nconst X = gf([\n 0xd51a, 0x8f25, 0x2d60, 0xc956, 0xa7b2, 0x9525, 0xc760, 0x692c,\n 0xdc5c, 0xfdd6, 0xe231, 0xc0a4, 0x53fe, 0xcd6e, 0x36d3, 0x2169\n]);\nconst Y = gf([\n 0x6658, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666,\n 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666, 0x6666\n]);\nconst I = gf([\n 0xa0b0, 0x4a0e, 0x1b27, 0xc4ee, 0xe478, 0xad2f, 0x1806, 0x2f43,\n 0xd7a7, 0x3dfb, 0x0099, 0x2b4d, 0xdf0b, 0x4fc1, 0x2480, 0x2b83\n]);\nfunction set25519(r, a) {\n for (let i = 0; i < 16; i++) {\n r[i] = a[i] | 0;\n }\n}\nfunction car25519(o) {\n let c = 1;\n for (let i = 0; i < 16; i++) {\n let v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c - 1 + 37 * (c - 1);\n}\nfunction sel25519(p, q, b) {\n const c = ~(b - 1);\n for (let i = 0; i < 16; i++) {\n const t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\nfunction pack25519(o, n) {\n const m = gf();\n const t = gf();\n for (let i = 0; i < 16; i++) {\n t[i] = n[i];\n }\n car25519(t);\n car25519(t);\n car25519(t);\n for (let j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (let i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i - 1] >> 16) & 1);\n m[i - 1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14] >> 16) & 1);\n const b = (m[15] >> 16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1 - b);\n }\n for (let i = 0; i < 16; i++) {\n o[2 * i] = t[i] & 0xff;\n o[2 * i + 1] = t[i] >> 8;\n }\n}\nfunction verify32(x, y) {\n let d = 0;\n for (let i = 0; i < 32; i++) {\n d |= x[i] ^ y[i];\n }\n return (1 & ((d - 1) >>> 8)) - 1;\n}\nfunction neq25519(a, b) {\n const c = new Uint8Array(32);\n const d = new Uint8Array(32);\n pack25519(c, a);\n pack25519(d, b);\n return verify32(c, d);\n}\nfunction par25519(a) {\n const d = new Uint8Array(32);\n pack25519(d, a);\n return d[0] & 1;\n}\nfunction unpack25519(o, n) {\n for (let i = 0; i < 16; i++) {\n o[i] = n[2 * i] + (n[2 * i + 1] << 8);\n }\n o[15] &= 0x7fff;\n}\nfunction add(o, a, b) {\n for (let i = 0; i < 16; i++) {\n o[i] = a[i] + b[i];\n }\n}\nfunction sub(o, a, b) {\n for (let i = 0; i < 16; i++) {\n o[i] = a[i] - b[i];\n }\n}\nfunction mul(o, a, b) {\n let v, c, t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7], b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11], b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15];\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n // first car\n c = 1;\n v = t0 + c + 65535;\n c = Math.floor(v / 65536);\n t0 = v - c * 65536;\n v = t1 + c + 65535;\n c = Math.floor(v / 65536);\n t1 = v - c * 65536;\n v = t2 + c + 65535;\n c = Math.floor(v / 65536);\n t2 = v - c * 65536;\n v = t3 + c + 65535;\n c = Math.floor(v / 65536);\n t3 = v - c * 65536;\n v = t4 + c + 65535;\n c = Math.floor(v / 65536);\n t4 = v - c * 65536;\n v = t5 + c + 65535;\n c = Math.floor(v / 65536);\n t5 = v - c * 65536;\n v = t6 + c + 65535;\n c = Math.floor(v / 65536);\n t6 = v - c * 65536;\n v = t7 + c + 65535;\n c = Math.floor(v / 65536);\n t7 = v - c * 65536;\n v = t8 + c + 65535;\n c = Math.floor(v / 65536);\n t8 = v - c * 65536;\n v = t9 + c + 65535;\n c = Math.floor(v / 65536);\n t9 = v - c * 65536;\n v = t10 + c + 65535;\n c = Math.floor(v / 65536);\n t10 = v - c * 65536;\n v = t11 + c + 65535;\n c = Math.floor(v / 65536);\n t11 = v - c * 65536;\n v = t12 + c + 65535;\n c = Math.floor(v / 65536);\n t12 = v - c * 65536;\n v = t13 + c + 65535;\n c = Math.floor(v / 65536);\n t13 = v - c * 65536;\n v = t14 + c + 65535;\n c = Math.floor(v / 65536);\n t14 = v - c * 65536;\n v = t15 + c + 65535;\n c = Math.floor(v / 65536);\n t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\n // second car\n c = 1;\n v = t0 + c + 65535;\n c = Math.floor(v / 65536);\n t0 = v - c * 65536;\n v = t1 + c + 65535;\n c = Math.floor(v / 65536);\n t1 = v - c * 65536;\n v = t2 + c + 65535;\n c = Math.floor(v / 65536);\n t2 = v - c * 65536;\n v = t3 + c + 65535;\n c = Math.floor(v / 65536);\n t3 = v - c * 65536;\n v = t4 + c + 65535;\n c = Math.floor(v / 65536);\n t4 = v - c * 65536;\n v = t5 + c + 65535;\n c = Math.floor(v / 65536);\n t5 = v - c * 65536;\n v = t6 + c + 65535;\n c = Math.floor(v / 65536);\n t6 = v - c * 65536;\n v = t7 + c + 65535;\n c = Math.floor(v / 65536);\n t7 = v - c * 65536;\n v = t8 + c + 65535;\n c = Math.floor(v / 65536);\n t8 = v - c * 65536;\n v = t9 + c + 65535;\n c = Math.floor(v / 65536);\n t9 = v - c * 65536;\n v = t10 + c + 65535;\n c = Math.floor(v / 65536);\n t10 = v - c * 65536;\n v = t11 + c + 65535;\n c = Math.floor(v / 65536);\n t11 = v - c * 65536;\n v = t12 + c + 65535;\n c = Math.floor(v / 65536);\n t12 = v - c * 65536;\n v = t13 + c + 65535;\n c = Math.floor(v / 65536);\n t13 = v - c * 65536;\n v = t14 + c + 65535;\n c = Math.floor(v / 65536);\n t14 = v - c * 65536;\n v = t15 + c + 65535;\n c = Math.floor(v / 65536);\n t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\n o[0] = t0;\n o[1] = t1;\n o[2] = t2;\n o[3] = t3;\n o[4] = t4;\n o[5] = t5;\n o[6] = t6;\n o[7] = t7;\n o[8] = t8;\n o[9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\nfunction square(o, a) {\n mul(o, a, a);\n}\nfunction inv25519(o, i) {\n const c = gf();\n let a;\n for (a = 0; a < 16; a++) {\n c[a] = i[a];\n }\n for (a = 253; a >= 0; a--) {\n square(c, c);\n if (a !== 2 && a !== 4) {\n mul(c, c, i);\n }\n }\n for (a = 0; a < 16; a++) {\n o[a] = c[a];\n }\n}\nfunction pow2523(o, i) {\n const c = gf();\n let a;\n for (a = 0; a < 16; a++) {\n c[a] = i[a];\n }\n for (a = 250; a >= 0; a--) {\n square(c, c);\n if (a !== 1) {\n mul(c, c, i);\n }\n }\n for (a = 0; a < 16; a++) {\n o[a] = c[a];\n }\n}\nfunction edadd(p, q) {\n const a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf(), g = gf(), h = gf(), t = gf();\n sub(a, p[1], p[0]);\n sub(t, q[1], q[0]);\n mul(a, a, t);\n add(b, p[0], p[1]);\n add(t, q[0], q[1]);\n mul(b, b, t);\n mul(c, p[3], q[3]);\n mul(c, c, D2);\n mul(d, p[2], q[2]);\n add(d, d, d);\n sub(e, b, a);\n sub(f, d, c);\n add(g, d, c);\n add(h, b, a);\n mul(p[0], e, f);\n mul(p[1], h, g);\n mul(p[2], g, f);\n mul(p[3], e, h);\n}\nfunction cswap(p, q, b) {\n for (let i = 0; i < 4; i++) {\n sel25519(p[i], q[i], b);\n }\n}\nfunction pack(r, p) {\n const tx = gf(), ty = gf(), zi = gf();\n inv25519(zi, p[2]);\n mul(tx, p[0], zi);\n mul(ty, p[1], zi);\n pack25519(r, ty);\n r[31] ^= par25519(tx) << 7;\n}\nfunction scalarmult(p, q, s) {\n set25519(p[0], gf0);\n set25519(p[1], gf1);\n set25519(p[2], gf1);\n set25519(p[3], gf0);\n for (let i = 255; i >= 0; --i) {\n const b = (s[(i / 8) | 0] >> (i & 7)) & 1;\n cswap(p, q, b);\n edadd(q, p);\n edadd(p, p);\n cswap(p, q, b);\n }\n}\nfunction scalarbase(p, s) {\n const q = [gf(), gf(), gf(), gf()];\n set25519(q[0], X);\n set25519(q[1], Y);\n set25519(q[2], gf1);\n mul(q[3], X, Y);\n scalarmult(p, q, s);\n}\n// Generates key pair from secret 32-byte seed.\nfunction generateKeyPairFromSeed(seed) {\n if (seed.length !== exports.SEED_LENGTH) {\n throw new Error(`ed25519: seed must be ${exports.SEED_LENGTH} bytes`);\n }\n const d = (0, sha512_1.hash)(seed);\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n const publicKey = new Uint8Array(32);\n const p = [gf(), gf(), gf(), gf()];\n scalarbase(p, d);\n pack(publicKey, p);\n const secretKey = new Uint8Array(64);\n secretKey.set(seed);\n secretKey.set(publicKey, 32);\n return {\n publicKey,\n secretKey\n };\n}\nexports.generateKeyPairFromSeed = generateKeyPairFromSeed;\nfunction generateKeyPair(prng) {\n const seed = (0, random_1.randomBytes)(32, prng);\n const result = generateKeyPairFromSeed(seed);\n (0, wipe_1.wipe)(seed);\n return result;\n}\nexports.generateKeyPair = generateKeyPair;\nfunction extractPublicKeyFromSecretKey(secretKey) {\n if (secretKey.length !== exports.SECRET_KEY_LENGTH) {\n throw new Error(`ed25519: secret key must be ${exports.SECRET_KEY_LENGTH} bytes`);\n }\n return new Uint8Array(secretKey.subarray(32));\n}\nexports.extractPublicKeyFromSecretKey = extractPublicKeyFromSecretKey;\nconst L = new Float64Array([\n 0xed, 0xd3, 0xf5, 0x5c, 0x1a, 0x63, 0x12, 0x58, 0xd6, 0x9c, 0xf7, 0xa2,\n 0xde, 0xf9, 0xde, 0x14, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x10\n]);\nfunction modL(r, x) {\n let carry;\n let i;\n let j;\n let k;\n for (i = 63; i >= 32; --i) {\n carry = 0;\n for (j = i - 32, k = i - 12; j < k; ++j) {\n x[j] += carry - 16 * x[i] * L[j - (i - 32)];\n carry = Math.floor((x[j] + 128) / 256);\n x[j] -= carry * 256;\n }\n x[j] += carry;\n x[i] = 0;\n }\n carry = 0;\n for (j = 0; j < 32; j++) {\n x[j] += carry - (x[31] >> 4) * L[j];\n carry = x[j] >> 8;\n x[j] &= 255;\n }\n for (j = 0; j < 32; j++) {\n x[j] -= carry * L[j];\n }\n for (i = 0; i < 32; i++) {\n x[i + 1] += x[i] >> 8;\n r[i] = x[i] & 255;\n }\n}\nfunction reduce(r) {\n const x = new Float64Array(64);\n for (let i = 0; i < 64; i++) {\n x[i] = r[i];\n }\n for (let i = 0; i < 64; i++) {\n r[i] = 0;\n }\n modL(r, x);\n}\n// Returns 64-byte signature of the message under the 64-byte secret key.\nfunction sign(secretKey, message) {\n const x = new Float64Array(64);\n const p = [gf(), gf(), gf(), gf()];\n const d = (0, sha512_1.hash)(secretKey.subarray(0, 32));\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n const signature = new Uint8Array(64);\n signature.set(d.subarray(32), 32);\n const hs = new sha512_1.SHA512();\n hs.update(signature.subarray(32));\n hs.update(message);\n const r = hs.digest();\n hs.clean();\n reduce(r);\n scalarbase(p, r);\n pack(signature, p);\n hs.reset();\n hs.update(signature.subarray(0, 32));\n hs.update(secretKey.subarray(32));\n hs.update(message);\n const h = hs.digest();\n reduce(h);\n for (let i = 0; i < 32; i++) {\n x[i] = r[i];\n }\n for (let i = 0; i < 32; i++) {\n for (let j = 0; j < 32; j++) {\n x[i + j] += h[i] * d[j];\n }\n }\n modL(signature.subarray(32), x);\n return signature;\n}\nexports.sign = sign;\nfunction unpackneg(r, p) {\n const t = gf(), chk = gf(), num = gf(), den = gf(), den2 = gf(), den4 = gf(), den6 = gf();\n set25519(r[2], gf1);\n unpack25519(r[1], p);\n square(num, r[1]);\n mul(den, num, D);\n sub(num, num, r[2]);\n add(den, r[2], den);\n square(den2, den);\n square(den4, den2);\n mul(den6, den4, den2);\n mul(t, den6, num);\n mul(t, t, den);\n pow2523(t, t);\n mul(t, t, num);\n mul(t, t, den);\n mul(t, t, den);\n mul(r[0], t, den);\n square(chk, r[0]);\n mul(chk, chk, den);\n if (neq25519(chk, num)) {\n mul(r[0], r[0], I);\n }\n square(chk, r[0]);\n mul(chk, chk, den);\n if (neq25519(chk, num)) {\n return -1;\n }\n if (par25519(r[0]) === (p[31] >> 7)) {\n sub(r[0], gf0, r[0]);\n }\n mul(r[3], r[0], r[1]);\n return 0;\n}\nfunction verify(publicKey, message, signature) {\n const t = new Uint8Array(32);\n const p = [gf(), gf(), gf(), gf()];\n const q = [gf(), gf(), gf(), gf()];\n if (signature.length !== exports.SIGNATURE_LENGTH) {\n throw new Error(`ed25519: signature must be ${exports.SIGNATURE_LENGTH} bytes`);\n }\n if (unpackneg(q, publicKey)) {\n return false;\n }\n const hs = new sha512_1.SHA512();\n hs.update(signature.subarray(0, 32));\n hs.update(publicKey);\n hs.update(message);\n const h = hs.digest();\n reduce(h);\n scalarmult(p, q, h);\n scalarbase(q, signature.subarray(32));\n edadd(p, q);\n pack(t, p);\n if (verify32(signature, t)) {\n return false;\n }\n return true;\n}\nexports.verify = verify;\n/**\n * Convert Ed25519 public key to X25519 public key.\n *\n * Throws if given an invalid public key.\n */\nfunction convertPublicKeyToX25519(publicKey) {\n let q = [gf(), gf(), gf(), gf()];\n if (unpackneg(q, publicKey)) {\n throw new Error("Ed25519: invalid public key");\n }\n // Formula: montgomeryX = (edwardsY + 1)*inverse(1 - edwardsY) mod p\n let a = gf();\n let b = gf();\n let y = q[1];\n add(a, gf1, y);\n sub(b, gf1, y);\n inv25519(b, b);\n mul(a, a, b);\n let z = new Uint8Array(32);\n pack25519(z, a);\n return z;\n}\nexports.convertPublicKeyToX25519 = convertPublicKeyToX25519;\n/**\n * Convert Ed25519 secret (private) key to X25519 secret key.\n */\nfunction convertSecretKeyToX25519(secretKey) {\n const d = (0, sha512_1.hash)(secretKey.subarray(0, 32));\n d[0] &= 248;\n d[31] &= 127;\n d[31] |= 64;\n const o = new Uint8Array(d.subarray(0, 32));\n (0, wipe_1.wipe)(d);\n return o;\n}\nexports.convertSecretKeyToX25519 = convertSecretKeyToX25519;\n//# sourceMappingURL=ed25519.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@stablelib/ed25519/lib/ed25519.js?')},"./node_modules/@stablelib/hash/lib/hash.js":(__unused_webpack_module,exports)=>{"use strict";eval('\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nfunction isSerializableHash(h) {\n return (typeof h.saveState !== "undefined" &&\n typeof h.restoreState !== "undefined" &&\n typeof h.cleanSavedState !== "undefined");\n}\nexports.isSerializableHash = isSerializableHash;\n// TODO(dchest): figure out the standardized interface for XOF such as\n// SHAKE and BLAKE2X.\n//# sourceMappingURL=hash.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@stablelib/hash/lib/hash.js?')},"./node_modules/@stablelib/hkdf/lib/hkdf.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nvar hmac_1 = __webpack_require__(/*! @stablelib/hmac */ "./node_modules/@stablelib/hmac/lib/hmac.js");\nvar wipe_1 = __webpack_require__(/*! @stablelib/wipe */ "./node_modules/@stablelib/wipe/lib/wipe.js");\n/**\n * HMAC-based Extract-and-Expand Key Derivation Function.\n *\n * Implements HKDF from RFC5869.\n *\n * Expands the given master key with salt and info into\n * a limited stream of key material.\n */\nvar HKDF = /** @class */ (function () {\n /**\n * Create a new HKDF instance for the given hash function\n * with the master key, optional salt, and info.\n *\n * - Master key is a high-entropy secret key (not a password).\n * - Salt is a non-secret random value.\n * - Info is application- and/or context-specific information.\n */\n function HKDF(hash, key, salt, info) {\n if (salt === void 0) { salt = new Uint8Array(0); }\n this._counter = new Uint8Array(1); // starts with zero\n this._hash = hash;\n this._info = info;\n // HKDF-Extract uses salt as HMAC key, and key as data.\n var okm = hmac_1.hmac(this._hash, salt, key);\n // Initialize HMAC for expanding with extracted key.\n this._hmac = new hmac_1.HMAC(hash, okm);\n // Allocate buffer.\n this._buffer = new Uint8Array(this._hmac.digestLength);\n this._bufpos = this._buffer.length;\n }\n // Fill buffer with new block of HKDF-Extract output.\n HKDF.prototype._fillBuffer = function () {\n // Increment counter.\n this._counter[0]++;\n var ctr = this._counter[0];\n // Check if counter overflowed.\n if (ctr === 0) {\n throw new Error("hkdf: cannot expand more");\n }\n // Prepare HMAC instance for new data with old key.\n this._hmac.reset();\n // Hash in previous output if it was generated\n // (i.e. counter is greater than 1).\n if (ctr > 1) {\n this._hmac.update(this._buffer);\n }\n // Hash in info if it exists.\n if (this._info) {\n this._hmac.update(this._info);\n }\n // Hash in the counter.\n this._hmac.update(this._counter);\n // Output result to buffer and clean HMAC instance.\n this._hmac.finish(this._buffer);\n // Reset buffer position.\n this._bufpos = 0;\n };\n /**\n * Expand returns next key material of the given length.\n *\n * It throws if expansion limit is reached (which is\n * 254 digests of the underlying HMAC function).\n */\n HKDF.prototype.expand = function (length) {\n var out = new Uint8Array(length);\n for (var i = 0; i < out.length; i++) {\n if (this._bufpos === this._buffer.length) {\n this._fillBuffer();\n }\n out[i] = this._buffer[this._bufpos++];\n }\n return out;\n };\n HKDF.prototype.clean = function () {\n this._hmac.clean();\n wipe_1.wipe(this._buffer);\n wipe_1.wipe(this._counter);\n this._bufpos = 0;\n };\n return HKDF;\n}());\nexports.HKDF = HKDF;\n// TODO(dchest): maybe implement deriveKey?\n//# sourceMappingURL=hkdf.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@stablelib/hkdf/lib/hkdf.js?')},"./node_modules/@stablelib/hmac/lib/hmac.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, "__esModule", ({ value: true }));\n/**\n * Package hmac implements HMAC algorithm.\n */\nvar hash_1 = __webpack_require__(/*! @stablelib/hash */ "./node_modules/@stablelib/hash/lib/hash.js");\nvar constant_time_1 = __webpack_require__(/*! @stablelib/constant-time */ "./node_modules/@stablelib/constant-time/lib/constant-time.js");\nvar wipe_1 = __webpack_require__(/*! @stablelib/wipe */ "./node_modules/@stablelib/wipe/lib/wipe.js");\n/**\n * HMAC implements hash-based message authentication algorithm.\n */\nvar HMAC = /** @class */ (function () {\n /**\n * Constructs a new HMAC with the given Hash and secret key.\n */\n function HMAC(hash, key) {\n this._finished = false; // true if HMAC was finalized\n // Initialize inner and outer hashes.\n this._inner = new hash();\n this._outer = new hash();\n // Set block and digest sizes for this HMAC\n // instance to values from the hash.\n this.blockSize = this._outer.blockSize;\n this.digestLength = this._outer.digestLength;\n // Pad temporary stores a key (or its hash) padded with zeroes.\n var pad = new Uint8Array(this.blockSize);\n if (key.length > this.blockSize) {\n // If key is bigger than hash block size, it must be\n // hashed and this hash is used as a key instead.\n this._inner.update(key).finish(pad).clean();\n }\n else {\n // Otherwise, copy the key into pad.\n pad.set(key);\n }\n // Now two different keys are derived from padded key\n // by xoring a different byte value to each.\n // To make inner hash key, xor byte 0x36 into pad.\n for (var i = 0; i < pad.length; i++) {\n pad[i] ^= 0x36;\n }\n // Update inner hash with the result.\n this._inner.update(pad);\n // To make outer hash key, xor byte 0x5c into pad.\n // But since we already xored 0x36 there, we must\n // first undo this by xoring it again.\n for (var i = 0; i < pad.length; i++) {\n pad[i] ^= 0x36 ^ 0x5c;\n }\n // Update outer hash with the result.\n this._outer.update(pad);\n // Save states of both hashes, so that we can quickly restore\n // them later in reset() without the need to remember the actual\n // key and perform this initialization again.\n if (hash_1.isSerializableHash(this._inner) && hash_1.isSerializableHash(this._outer)) {\n this._innerKeyedState = this._inner.saveState();\n this._outerKeyedState = this._outer.saveState();\n }\n // Clean pad.\n wipe_1.wipe(pad);\n }\n /**\n * Returns HMAC state to the state initialized with key\n * to make it possible to run HMAC over the other data with the same\n * key without creating a new instance.\n */\n HMAC.prototype.reset = function () {\n if (!hash_1.isSerializableHash(this._inner) || !hash_1.isSerializableHash(this._outer)) {\n throw new Error("hmac: can\'t reset() because hash doesn\'t implement restoreState()");\n }\n // Restore keyed states of inner and outer hashes.\n this._inner.restoreState(this._innerKeyedState);\n this._outer.restoreState(this._outerKeyedState);\n this._finished = false;\n return this;\n };\n /**\n * Cleans HMAC state.\n */\n HMAC.prototype.clean = function () {\n if (hash_1.isSerializableHash(this._inner)) {\n this._inner.cleanSavedState(this._innerKeyedState);\n }\n if (hash_1.isSerializableHash(this._outer)) {\n this._outer.cleanSavedState(this._outerKeyedState);\n }\n this._inner.clean();\n this._outer.clean();\n };\n /**\n * Updates state with provided data.\n */\n HMAC.prototype.update = function (data) {\n this._inner.update(data);\n return this;\n };\n /**\n * Finalizes HMAC and puts the result in out.\n */\n HMAC.prototype.finish = function (out) {\n if (this._finished) {\n // If HMAC was finalized, outer hash is also finalized,\n // so it produces the same digest it produced when it\n // was finalized.\n this._outer.finish(out);\n return this;\n }\n // Finalize inner hash and store the result temporarily.\n this._inner.finish(out);\n // Update outer hash with digest of inner hash and and finalize it.\n this._outer.update(out.subarray(0, this.digestLength)).finish(out);\n this._finished = true;\n return this;\n };\n /**\n * Returns the computed message authentication code.\n */\n HMAC.prototype.digest = function () {\n var out = new Uint8Array(this.digestLength);\n this.finish(out);\n return out;\n };\n /**\n * Saves HMAC state.\n * This function is needed for PBKDF2 optimization.\n */\n HMAC.prototype.saveState = function () {\n if (!hash_1.isSerializableHash(this._inner)) {\n throw new Error("hmac: can\'t saveState() because hash doesn\'t implement it");\n }\n return this._inner.saveState();\n };\n HMAC.prototype.restoreState = function (savedState) {\n if (!hash_1.isSerializableHash(this._inner) || !hash_1.isSerializableHash(this._outer)) {\n throw new Error("hmac: can\'t restoreState() because hash doesn\'t implement it");\n }\n this._inner.restoreState(savedState);\n this._outer.restoreState(this._outerKeyedState);\n this._finished = false;\n return this;\n };\n HMAC.prototype.cleanSavedState = function (savedState) {\n if (!hash_1.isSerializableHash(this._inner)) {\n throw new Error("hmac: can\'t cleanSavedState() because hash doesn\'t implement it");\n }\n this._inner.cleanSavedState(savedState);\n };\n return HMAC;\n}());\nexports.HMAC = HMAC;\n/**\n * Returns HMAC using the given hash constructor for the key over data.\n */\nfunction hmac(hash, key, data) {\n var h = new HMAC(hash, key);\n h.update(data);\n var digest = h.digest();\n h.clean();\n return digest;\n}\nexports.hmac = hmac;\n/**\n * Returns true if two HMAC digests are equal.\n * Uses constant-time comparison to avoid leaking timing information.\n *\n * Example:\n *\n * const receivedDigest = ...\n * const realDigest = hmac(SHA256, key, data);\n * if (!equal(receivedDigest, realDigest)) {\n * throw new Error("Authentication error");\n * }\n */\nexports.equal = constant_time_1.equal;\n//# sourceMappingURL=hmac.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@stablelib/hmac/lib/hmac.js?')},"./node_modules/@stablelib/int/lib/int.js":(__unused_webpack_module,exports)=>{"use strict";eval('\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, "__esModule", ({ value: true }));\n/**\n * Package int provides helper functions for integerss.\n */\n// Shim using 16-bit pieces.\nfunction imulShim(a, b) {\n var ah = (a >>> 16) & 0xffff, al = a & 0xffff;\n var bh = (b >>> 16) & 0xffff, bl = b & 0xffff;\n return ((al * bl) + (((ah * bl + al * bh) << 16) >>> 0) | 0);\n}\n/** 32-bit integer multiplication. */\n// Use system Math.imul if available, otherwise use our shim.\nexports.mul = Math.imul || imulShim;\n/** 32-bit integer addition. */\nfunction add(a, b) {\n return (a + b) | 0;\n}\nexports.add = add;\n/** 32-bit integer subtraction. */\nfunction sub(a, b) {\n return (a - b) | 0;\n}\nexports.sub = sub;\n/** 32-bit integer left rotation */\nfunction rotl(x, n) {\n return x << n | x >>> (32 - n);\n}\nexports.rotl = rotl;\n/** 32-bit integer left rotation */\nfunction rotr(x, n) {\n return x << (32 - n) | x >>> n;\n}\nexports.rotr = rotr;\nfunction isIntegerShim(n) {\n return typeof n === "number" && isFinite(n) && Math.floor(n) === n;\n}\n/**\n * Returns true if the argument is an integer number.\n *\n * In ES2015, Number.isInteger.\n */\nexports.isInteger = Number.isInteger || isIntegerShim;\n/**\n * Math.pow(2, 53) - 1\n *\n * In ES2015 Number.MAX_SAFE_INTEGER.\n */\nexports.MAX_SAFE_INTEGER = 9007199254740991;\n/**\n * Returns true if the argument is a safe integer number\n * (-MIN_SAFE_INTEGER < number <= MAX_SAFE_INTEGER)\n *\n * In ES2015, Number.isSafeInteger.\n */\nexports.isSafeInteger = function (n) {\n return exports.isInteger(n) && (n >= -exports.MAX_SAFE_INTEGER && n <= exports.MAX_SAFE_INTEGER);\n};\n//# sourceMappingURL=int.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@stablelib/int/lib/int.js?')},"./node_modules/@stablelib/nacl/lib/box.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.openBox = exports.box = exports.precomputeSharedKey = exports.generateKeyPair = void 0;\nconst x25519_1 = __webpack_require__(/*! @stablelib/x25519 */ "./node_modules/@stablelib/x25519/lib/x25519.js");\nconst xsalsa20_1 = __webpack_require__(/*! @stablelib/xsalsa20 */ "./node_modules/@stablelib/xsalsa20/lib/xsalsa20.js");\nconst secretbox_1 = __webpack_require__(/*! ./secretbox */ "./node_modules/@stablelib/nacl/lib/secretbox.js");\nconst wipe_1 = __webpack_require__(/*! @stablelib/wipe */ "./node_modules/@stablelib/wipe/lib/wipe.js");\nvar x25519_2 = __webpack_require__(/*! @stablelib/x25519 */ "./node_modules/@stablelib/x25519/lib/x25519.js");\nObject.defineProperty(exports, "generateKeyPair", ({ enumerable: true, get: function () { return x25519_2.generateKeyPair; } }));\nconst zeros16 = new Uint8Array(16);\nfunction precomputeSharedKey(theirPublicKey, mySecretKey) {\n // Compute scalar multiplication result.\n const key = (0, x25519_1.scalarMult)(mySecretKey, theirPublicKey);\n // Hash key with HSalsa function.\n (0, xsalsa20_1.hsalsa)(key, zeros16, key);\n return key;\n}\nexports.precomputeSharedKey = precomputeSharedKey;\nfunction box(theirPublicKey, mySecretKey, nonce, data) {\n const sharedKey = precomputeSharedKey(theirPublicKey, mySecretKey);\n const result = (0, secretbox_1.secretBox)(sharedKey, nonce, data);\n (0, wipe_1.wipe)(sharedKey);\n return result;\n}\nexports.box = box;\nfunction openBox(theirPublicKey, mySecretKey, nonce, data) {\n const sharedKey = precomputeSharedKey(theirPublicKey, mySecretKey);\n const result = (0, secretbox_1.openSecretBox)(sharedKey, nonce, data);\n (0, wipe_1.wipe)(sharedKey);\n return result;\n}\nexports.openBox = openBox;\n//# sourceMappingURL=box.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@stablelib/nacl/lib/box.js?')},"./node_modules/@stablelib/nacl/lib/nacl.js":function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval('\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, "__esModule", ({ value: true }));\n/**\n * Package nacl implements NaCl (Networking and Cryptography library) cryptography.\n */\n__exportStar(__webpack_require__(/*! ./box */ "./node_modules/@stablelib/nacl/lib/box.js"), exports);\n__exportStar(__webpack_require__(/*! ./secretbox */ "./node_modules/@stablelib/nacl/lib/secretbox.js"), exports);\n//# sourceMappingURL=nacl.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@stablelib/nacl/lib/nacl.js?')},"./node_modules/@stablelib/nacl/lib/secretbox.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.generateKey = exports.openSecretBox = exports.secretBox = void 0;\nconst xsalsa20_1 = __webpack_require__(/*! @stablelib/xsalsa20 */ "./node_modules/@stablelib/xsalsa20/lib/xsalsa20.js");\nconst poly1305_1 = __webpack_require__(/*! @stablelib/poly1305 */ "./node_modules/@stablelib/poly1305/lib/poly1305.js");\nconst wipe_1 = __webpack_require__(/*! @stablelib/wipe */ "./node_modules/@stablelib/wipe/lib/wipe.js");\nconst random_1 = __webpack_require__(/*! @stablelib/random */ "./node_modules/@stablelib/random/lib/random.js");\nfunction secretBox(key, nonce, data) {\n if (nonce.length !== 24) {\n throw new Error("secretBox nonce must be 24 bytes");\n }\n const firstBlock = new Uint8Array(64);\n // Allocate place for nonce and counter.\n const nonceCounter = new Uint8Array(24 + 8);\n // Set first bytes to nonce. Last 8 bytes will be counter.\n nonceCounter.set(nonce);\n // Generate first block of XSalsa20 stream, of which\n // first 32 bytes will be authentication key, and the rest\n // will be used for encryption.\n (0, xsalsa20_1.stream)(key, nonceCounter, firstBlock, 8);\n // Allocate result, which will contain 16-byte authenticator\n // concatenated with ciphertext.\n const result = new Uint8Array(16 + data.length);\n // Encrypt first 32 bytes of data with last 32 bytes of generated stream.\n for (let i = 0; i < 32 && i < data.length; i++) {\n result[16 + i] = data[i] ^ firstBlock[32 + i];\n }\n // Encrypt the rest of data.\n if (data.length > 32) {\n (0, xsalsa20_1.streamXOR)(key, nonceCounter, data.subarray(32), result.subarray(16 + 32), 8);\n }\n // Calculate Poly1305 authenticator of encrypted data using\n // authentication key in the first block of XSalsa20 stream.\n const auth = (0, poly1305_1.oneTimeAuth)(firstBlock.subarray(0, 32), result.subarray(16));\n // Copy authenticator to the beginning of result.\n for (let i = 0; i < auth.length; i++) {\n result[i] = auth[i];\n }\n // Clean auth.\n (0, wipe_1.wipe)(auth);\n // Clean first block.\n (0, wipe_1.wipe)(firstBlock);\n // Clean nonceCounter.\n (0, wipe_1.wipe)(nonceCounter);\n return result;\n}\nexports.secretBox = secretBox;\nfunction openSecretBox(key, nonce, box) {\n if (nonce.length !== 24) {\n throw new Error("secretBox nonce must be 24 bytes");\n }\n if (box.length < 16) {\n throw new Error("secretBox data must be at least 16 bytes");\n }\n const firstBlock = new Uint8Array(64);\n // Allocate place for nonce and counter.\n const nonceCounter = new Uint8Array(24 + 8);\n // Set first bytes to nonce. Last 8 bytes will be counter.\n nonceCounter.set(nonce);\n // Generate first block of XSalsa20 stream, of which\n // first 32 bytes will be authentication key, and the rest\n // will be used for encryption.\n (0, xsalsa20_1.stream)(key, nonceCounter, firstBlock, 8);\n // Calculate Poly1305 authenticator of encrypted data using\n // authentication key in the first block of XSalsa20 stream.\n const auth = (0, poly1305_1.oneTimeAuth)(firstBlock.subarray(0, 32), box.subarray(16));\n // Check authenticator.\n if (!(0, poly1305_1.equal)(auth, box.subarray(0, 16))) {\n // Authenticator is incorrect: ciphertext or authenticator\n // was corrupted, maybe maliciously.\n return null;\n }\n // Authenticator verifies, so we can decrypt ciphertext.\n const ciphertext = box.subarray(16);\n // Allocate result array.\n const result = new Uint8Array(ciphertext.length);\n // Decrypt first 32 bytes of box with last 32 bytes of generated stream.\n for (let i = 0; i < 32 && i < ciphertext.length; i++) {\n result[i] = ciphertext[i] ^ firstBlock[32 + i];\n }\n // Decrypt the rest of data.\n if (ciphertext.length > 32) {\n (0, xsalsa20_1.streamXOR)(key, nonceCounter, ciphertext.subarray(32), result.subarray(32), 8);\n }\n // Clean auth.\n (0, wipe_1.wipe)(auth);\n // Clean first block.\n (0, wipe_1.wipe)(firstBlock);\n // Clean nonceCounter.\n (0, wipe_1.wipe)(nonceCounter);\n return result;\n}\nexports.openSecretBox = openSecretBox;\n/** Generates a 32-byte random secret key. */\nfunction generateKey(prng) {\n return (0, random_1.randomBytes)(32, prng);\n}\nexports.generateKey = generateKey;\n//# sourceMappingURL=secretbox.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@stablelib/nacl/lib/secretbox.js?')},"./node_modules/@stablelib/poly1305/lib/poly1305.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, "__esModule", ({ value: true }));\n/**\n * Package poly1305 implements Poly1305 one-time message authentication algorithm.\n */\nvar constant_time_1 = __webpack_require__(/*! @stablelib/constant-time */ "./node_modules/@stablelib/constant-time/lib/constant-time.js");\nvar wipe_1 = __webpack_require__(/*! @stablelib/wipe */ "./node_modules/@stablelib/wipe/lib/wipe.js");\nexports.DIGEST_LENGTH = 16;\n// Port of Andrew Moon\'s Poly1305-donna-16. Public domain.\n// https://github.com/floodyberry/poly1305-donna\n/**\n * Poly1305 computes 16-byte authenticator of message using\n * a one-time 32-byte key.\n *\n * Important: key should be used for only one message,\n * it should never repeat.\n */\nvar Poly1305 = /** @class */ (function () {\n function Poly1305(key) {\n this.digestLength = exports.DIGEST_LENGTH;\n this._buffer = new Uint8Array(16);\n this._r = new Uint16Array(10);\n this._h = new Uint16Array(10);\n this._pad = new Uint16Array(8);\n this._leftover = 0;\n this._fin = 0;\n this._finished = false;\n var t0 = key[0] | key[1] << 8;\n this._r[0] = (t0) & 0x1fff;\n var t1 = key[2] | key[3] << 8;\n this._r[1] = ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n var t2 = key[4] | key[5] << 8;\n this._r[2] = ((t1 >>> 10) | (t2 << 6)) & 0x1f03;\n var t3 = key[6] | key[7] << 8;\n this._r[3] = ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n var t4 = key[8] | key[9] << 8;\n this._r[4] = ((t3 >>> 4) | (t4 << 12)) & 0x00ff;\n this._r[5] = ((t4 >>> 1)) & 0x1ffe;\n var t5 = key[10] | key[11] << 8;\n this._r[6] = ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n var t6 = key[12] | key[13] << 8;\n this._r[7] = ((t5 >>> 11) | (t6 << 5)) & 0x1f81;\n var t7 = key[14] | key[15] << 8;\n this._r[8] = ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n this._r[9] = ((t7 >>> 5)) & 0x007f;\n this._pad[0] = key[16] | key[17] << 8;\n this._pad[1] = key[18] | key[19] << 8;\n this._pad[2] = key[20] | key[21] << 8;\n this._pad[3] = key[22] | key[23] << 8;\n this._pad[4] = key[24] | key[25] << 8;\n this._pad[5] = key[26] | key[27] << 8;\n this._pad[6] = key[28] | key[29] << 8;\n this._pad[7] = key[30] | key[31] << 8;\n }\n Poly1305.prototype._blocks = function (m, mpos, bytes) {\n var hibit = this._fin ? 0 : 1 << 11;\n var h0 = this._h[0], h1 = this._h[1], h2 = this._h[2], h3 = this._h[3], h4 = this._h[4], h5 = this._h[5], h6 = this._h[6], h7 = this._h[7], h8 = this._h[8], h9 = this._h[9];\n var r0 = this._r[0], r1 = this._r[1], r2 = this._r[2], r3 = this._r[3], r4 = this._r[4], r5 = this._r[5], r6 = this._r[6], r7 = this._r[7], r8 = this._r[8], r9 = this._r[9];\n while (bytes >= 16) {\n var t0 = m[mpos + 0] | m[mpos + 1] << 8;\n h0 += (t0) & 0x1fff;\n var t1 = m[mpos + 2] | m[mpos + 3] << 8;\n h1 += ((t0 >>> 13) | (t1 << 3)) & 0x1fff;\n var t2 = m[mpos + 4] | m[mpos + 5] << 8;\n h2 += ((t1 >>> 10) | (t2 << 6)) & 0x1fff;\n var t3 = m[mpos + 6] | m[mpos + 7] << 8;\n h3 += ((t2 >>> 7) | (t3 << 9)) & 0x1fff;\n var t4 = m[mpos + 8] | m[mpos + 9] << 8;\n h4 += ((t3 >>> 4) | (t4 << 12)) & 0x1fff;\n h5 += ((t4 >>> 1)) & 0x1fff;\n var t5 = m[mpos + 10] | m[mpos + 11] << 8;\n h6 += ((t4 >>> 14) | (t5 << 2)) & 0x1fff;\n var t6 = m[mpos + 12] | m[mpos + 13] << 8;\n h7 += ((t5 >>> 11) | (t6 << 5)) & 0x1fff;\n var t7 = m[mpos + 14] | m[mpos + 15] << 8;\n h8 += ((t6 >>> 8) | (t7 << 8)) & 0x1fff;\n h9 += ((t7 >>> 5)) | hibit;\n var c = 0;\n var d0 = c;\n d0 += h0 * r0;\n d0 += h1 * (5 * r9);\n d0 += h2 * (5 * r8);\n d0 += h3 * (5 * r7);\n d0 += h4 * (5 * r6);\n c = (d0 >>> 13);\n d0 &= 0x1fff;\n d0 += h5 * (5 * r5);\n d0 += h6 * (5 * r4);\n d0 += h7 * (5 * r3);\n d0 += h8 * (5 * r2);\n d0 += h9 * (5 * r1);\n c += (d0 >>> 13);\n d0 &= 0x1fff;\n var d1 = c;\n d1 += h0 * r1;\n d1 += h1 * r0;\n d1 += h2 * (5 * r9);\n d1 += h3 * (5 * r8);\n d1 += h4 * (5 * r7);\n c = (d1 >>> 13);\n d1 &= 0x1fff;\n d1 += h5 * (5 * r6);\n d1 += h6 * (5 * r5);\n d1 += h7 * (5 * r4);\n d1 += h8 * (5 * r3);\n d1 += h9 * (5 * r2);\n c += (d1 >>> 13);\n d1 &= 0x1fff;\n var d2 = c;\n d2 += h0 * r2;\n d2 += h1 * r1;\n d2 += h2 * r0;\n d2 += h3 * (5 * r9);\n d2 += h4 * (5 * r8);\n c = (d2 >>> 13);\n d2 &= 0x1fff;\n d2 += h5 * (5 * r7);\n d2 += h6 * (5 * r6);\n d2 += h7 * (5 * r5);\n d2 += h8 * (5 * r4);\n d2 += h9 * (5 * r3);\n c += (d2 >>> 13);\n d2 &= 0x1fff;\n var d3 = c;\n d3 += h0 * r3;\n d3 += h1 * r2;\n d3 += h2 * r1;\n d3 += h3 * r0;\n d3 += h4 * (5 * r9);\n c = (d3 >>> 13);\n d3 &= 0x1fff;\n d3 += h5 * (5 * r8);\n d3 += h6 * (5 * r7);\n d3 += h7 * (5 * r6);\n d3 += h8 * (5 * r5);\n d3 += h9 * (5 * r4);\n c += (d3 >>> 13);\n d3 &= 0x1fff;\n var d4 = c;\n d4 += h0 * r4;\n d4 += h1 * r3;\n d4 += h2 * r2;\n d4 += h3 * r1;\n d4 += h4 * r0;\n c = (d4 >>> 13);\n d4 &= 0x1fff;\n d4 += h5 * (5 * r9);\n d4 += h6 * (5 * r8);\n d4 += h7 * (5 * r7);\n d4 += h8 * (5 * r6);\n d4 += h9 * (5 * r5);\n c += (d4 >>> 13);\n d4 &= 0x1fff;\n var d5 = c;\n d5 += h0 * r5;\n d5 += h1 * r4;\n d5 += h2 * r3;\n d5 += h3 * r2;\n d5 += h4 * r1;\n c = (d5 >>> 13);\n d5 &= 0x1fff;\n d5 += h5 * r0;\n d5 += h6 * (5 * r9);\n d5 += h7 * (5 * r8);\n d5 += h8 * (5 * r7);\n d5 += h9 * (5 * r6);\n c += (d5 >>> 13);\n d5 &= 0x1fff;\n var d6 = c;\n d6 += h0 * r6;\n d6 += h1 * r5;\n d6 += h2 * r4;\n d6 += h3 * r3;\n d6 += h4 * r2;\n c = (d6 >>> 13);\n d6 &= 0x1fff;\n d6 += h5 * r1;\n d6 += h6 * r0;\n d6 += h7 * (5 * r9);\n d6 += h8 * (5 * r8);\n d6 += h9 * (5 * r7);\n c += (d6 >>> 13);\n d6 &= 0x1fff;\n var d7 = c;\n d7 += h0 * r7;\n d7 += h1 * r6;\n d7 += h2 * r5;\n d7 += h3 * r4;\n d7 += h4 * r3;\n c = (d7 >>> 13);\n d7 &= 0x1fff;\n d7 += h5 * r2;\n d7 += h6 * r1;\n d7 += h7 * r0;\n d7 += h8 * (5 * r9);\n d7 += h9 * (5 * r8);\n c += (d7 >>> 13);\n d7 &= 0x1fff;\n var d8 = c;\n d8 += h0 * r8;\n d8 += h1 * r7;\n d8 += h2 * r6;\n d8 += h3 * r5;\n d8 += h4 * r4;\n c = (d8 >>> 13);\n d8 &= 0x1fff;\n d8 += h5 * r3;\n d8 += h6 * r2;\n d8 += h7 * r1;\n d8 += h8 * r0;\n d8 += h9 * (5 * r9);\n c += (d8 >>> 13);\n d8 &= 0x1fff;\n var d9 = c;\n d9 += h0 * r9;\n d9 += h1 * r8;\n d9 += h2 * r7;\n d9 += h3 * r6;\n d9 += h4 * r5;\n c = (d9 >>> 13);\n d9 &= 0x1fff;\n d9 += h5 * r4;\n d9 += h6 * r3;\n d9 += h7 * r2;\n d9 += h8 * r1;\n d9 += h9 * r0;\n c += (d9 >>> 13);\n d9 &= 0x1fff;\n c = (((c << 2) + c)) | 0;\n c = (c + d0) | 0;\n d0 = c & 0x1fff;\n c = (c >>> 13);\n d1 += c;\n h0 = d0;\n h1 = d1;\n h2 = d2;\n h3 = d3;\n h4 = d4;\n h5 = d5;\n h6 = d6;\n h7 = d7;\n h8 = d8;\n h9 = d9;\n mpos += 16;\n bytes -= 16;\n }\n this._h[0] = h0;\n this._h[1] = h1;\n this._h[2] = h2;\n this._h[3] = h3;\n this._h[4] = h4;\n this._h[5] = h5;\n this._h[6] = h6;\n this._h[7] = h7;\n this._h[8] = h8;\n this._h[9] = h9;\n };\n Poly1305.prototype.finish = function (mac, macpos) {\n if (macpos === void 0) { macpos = 0; }\n var g = new Uint16Array(10);\n var c;\n var mask;\n var f;\n var i;\n if (this._leftover) {\n i = this._leftover;\n this._buffer[i++] = 1;\n for (; i < 16; i++) {\n this._buffer[i] = 0;\n }\n this._fin = 1;\n this._blocks(this._buffer, 0, 16);\n }\n c = this._h[1] >>> 13;\n this._h[1] &= 0x1fff;\n for (i = 2; i < 10; i++) {\n this._h[i] += c;\n c = this._h[i] >>> 13;\n this._h[i] &= 0x1fff;\n }\n this._h[0] += (c * 5);\n c = this._h[0] >>> 13;\n this._h[0] &= 0x1fff;\n this._h[1] += c;\n c = this._h[1] >>> 13;\n this._h[1] &= 0x1fff;\n this._h[2] += c;\n g[0] = this._h[0] + 5;\n c = g[0] >>> 13;\n g[0] &= 0x1fff;\n for (i = 1; i < 10; i++) {\n g[i] = this._h[i] + c;\n c = g[i] >>> 13;\n g[i] &= 0x1fff;\n }\n g[9] -= (1 << 13);\n mask = (c ^ 1) - 1;\n for (i = 0; i < 10; i++) {\n g[i] &= mask;\n }\n mask = ~mask;\n for (i = 0; i < 10; i++) {\n this._h[i] = (this._h[i] & mask) | g[i];\n }\n this._h[0] = ((this._h[0]) | (this._h[1] << 13)) & 0xffff;\n this._h[1] = ((this._h[1] >>> 3) | (this._h[2] << 10)) & 0xffff;\n this._h[2] = ((this._h[2] >>> 6) | (this._h[3] << 7)) & 0xffff;\n this._h[3] = ((this._h[3] >>> 9) | (this._h[4] << 4)) & 0xffff;\n this._h[4] = ((this._h[4] >>> 12) | (this._h[5] << 1) | (this._h[6] << 14)) & 0xffff;\n this._h[5] = ((this._h[6] >>> 2) | (this._h[7] << 11)) & 0xffff;\n this._h[6] = ((this._h[7] >>> 5) | (this._h[8] << 8)) & 0xffff;\n this._h[7] = ((this._h[8] >>> 8) | (this._h[9] << 5)) & 0xffff;\n f = this._h[0] + this._pad[0];\n this._h[0] = f & 0xffff;\n for (i = 1; i < 8; i++) {\n f = (((this._h[i] + this._pad[i]) | 0) + (f >>> 16)) | 0;\n this._h[i] = f & 0xffff;\n }\n mac[macpos + 0] = this._h[0] >>> 0;\n mac[macpos + 1] = this._h[0] >>> 8;\n mac[macpos + 2] = this._h[1] >>> 0;\n mac[macpos + 3] = this._h[1] >>> 8;\n mac[macpos + 4] = this._h[2] >>> 0;\n mac[macpos + 5] = this._h[2] >>> 8;\n mac[macpos + 6] = this._h[3] >>> 0;\n mac[macpos + 7] = this._h[3] >>> 8;\n mac[macpos + 8] = this._h[4] >>> 0;\n mac[macpos + 9] = this._h[4] >>> 8;\n mac[macpos + 10] = this._h[5] >>> 0;\n mac[macpos + 11] = this._h[5] >>> 8;\n mac[macpos + 12] = this._h[6] >>> 0;\n mac[macpos + 13] = this._h[6] >>> 8;\n mac[macpos + 14] = this._h[7] >>> 0;\n mac[macpos + 15] = this._h[7] >>> 8;\n this._finished = true;\n return this;\n };\n Poly1305.prototype.update = function (m) {\n var mpos = 0;\n var bytes = m.length;\n var want;\n if (this._leftover) {\n want = (16 - this._leftover);\n if (want > bytes) {\n want = bytes;\n }\n for (var i = 0; i < want; i++) {\n this._buffer[this._leftover + i] = m[mpos + i];\n }\n bytes -= want;\n mpos += want;\n this._leftover += want;\n if (this._leftover < 16) {\n return this;\n }\n this._blocks(this._buffer, 0, 16);\n this._leftover = 0;\n }\n if (bytes >= 16) {\n want = bytes - (bytes % 16);\n this._blocks(m, mpos, want);\n mpos += want;\n bytes -= want;\n }\n if (bytes) {\n for (var i = 0; i < bytes; i++) {\n this._buffer[this._leftover + i] = m[mpos + i];\n }\n this._leftover += bytes;\n }\n return this;\n };\n Poly1305.prototype.digest = function () {\n // TODO(dchest): it behaves differently than other hashes/HMAC,\n // because it throws when finished \u2014 others just return saved result.\n if (this._finished) {\n throw new Error("Poly1305 was finished");\n }\n var mac = new Uint8Array(16);\n this.finish(mac);\n return mac;\n };\n Poly1305.prototype.clean = function () {\n wipe_1.wipe(this._buffer);\n wipe_1.wipe(this._r);\n wipe_1.wipe(this._h);\n wipe_1.wipe(this._pad);\n this._leftover = 0;\n this._fin = 0;\n this._finished = true; // mark as finished even if not\n return this;\n };\n return Poly1305;\n}());\nexports.Poly1305 = Poly1305;\n/**\n * Returns 16-byte authenticator of data using a one-time 32-byte key.\n *\n * Important: key should be used for only one message, it should never repeat.\n */\nfunction oneTimeAuth(key, data) {\n var h = new Poly1305(key);\n h.update(data);\n var digest = h.digest();\n h.clean();\n return digest;\n}\nexports.oneTimeAuth = oneTimeAuth;\n/**\n * Returns true if two authenticators are 16-byte long and equal.\n * Uses contant-time comparison to avoid leaking timing information.\n */\nfunction equal(a, b) {\n if (a.length !== exports.DIGEST_LENGTH || b.length !== exports.DIGEST_LENGTH) {\n return false;\n }\n return constant_time_1.equal(a, b);\n}\nexports.equal = equal;\n//# sourceMappingURL=poly1305.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@stablelib/poly1305/lib/poly1305.js?')},"./node_modules/@stablelib/random/lib/random.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.randomStringForEntropy = exports.randomString = exports.randomUint32 = exports.randomBytes = exports.defaultRandomSource = void 0;\nconst system_1 = __webpack_require__(/*! ./source/system */ "./node_modules/@stablelib/random/lib/source/system.js");\nconst binary_1 = __webpack_require__(/*! @stablelib/binary */ "./node_modules/@stablelib/binary/lib/binary.js");\nconst wipe_1 = __webpack_require__(/*! @stablelib/wipe */ "./node_modules/@stablelib/wipe/lib/wipe.js");\nexports.defaultRandomSource = new system_1.SystemRandomSource();\nfunction randomBytes(length, prng = exports.defaultRandomSource) {\n return prng.randomBytes(length);\n}\nexports.randomBytes = randomBytes;\n/**\n * Returns a uniformly random unsigned 32-bit integer.\n */\nfunction randomUint32(prng = exports.defaultRandomSource) {\n // Generate 4-byte random buffer.\n const buf = randomBytes(4, prng);\n // Convert bytes from buffer into a 32-bit integer.\n // It\'s not important which byte order to use, since\n // the result is random.\n const result = (0, binary_1.readUint32LE)(buf);\n // Clean the buffer.\n (0, wipe_1.wipe)(buf);\n return result;\n}\nexports.randomUint32 = randomUint32;\n/** 62 alphanumeric characters for default charset of randomString() */\nconst ALPHANUMERIC = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";\n/**\n * Returns a uniform random string of the given length\n * with characters from the given charset.\n *\n * Charset must not have more than 256 characters.\n *\n * Default charset generates case-sensitive alphanumeric\n * strings (0-9, A-Z, a-z).\n */\nfunction randomString(length, charset = ALPHANUMERIC, prng = exports.defaultRandomSource) {\n if (charset.length < 2) {\n throw new Error("randomString charset is too short");\n }\n if (charset.length > 256) {\n throw new Error("randomString charset is too long");\n }\n let out = \'\';\n const charsLen = charset.length;\n const maxByte = 256 - (256 % charsLen);\n while (length > 0) {\n const buf = randomBytes(Math.ceil(length * 256 / maxByte), prng);\n for (let i = 0; i < buf.length && length > 0; i++) {\n const randomByte = buf[i];\n if (randomByte < maxByte) {\n out += charset.charAt(randomByte % charsLen);\n length--;\n }\n }\n (0, wipe_1.wipe)(buf);\n }\n return out;\n}\nexports.randomString = randomString;\n/**\n * Returns uniform random string containing at least the given\n * number of bits of entropy.\n *\n * For example, randomStringForEntropy(128) will return a 22-character\n * alphanumeric string, while randomStringForEntropy(128, "0123456789")\n * will return a 39-character numeric string, both will contain at\n * least 128 bits of entropy.\n *\n * Default charset generates case-sensitive alphanumeric\n * strings (0-9, A-Z, a-z).\n */\nfunction randomStringForEntropy(bits, charset = ALPHANUMERIC, prng = exports.defaultRandomSource) {\n const length = Math.ceil(bits / (Math.log(charset.length) / Math.LN2));\n return randomString(length, charset, prng);\n}\nexports.randomStringForEntropy = randomStringForEntropy;\n//# sourceMappingURL=random.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@stablelib/random/lib/random.js?')},"./node_modules/@stablelib/random/lib/source/browser.js":(__unused_webpack_module,exports)=>{"use strict";eval('\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.BrowserRandomSource = void 0;\nconst QUOTA = 65536;\nclass BrowserRandomSource {\n constructor() {\n this.isAvailable = false;\n this.isInstantiated = false;\n const browserCrypto = typeof self !== \'undefined\'\n ? (self.crypto || self.msCrypto) // IE11 has msCrypto\n : null;\n if (browserCrypto && browserCrypto.getRandomValues !== undefined) {\n this._crypto = browserCrypto;\n this.isAvailable = true;\n this.isInstantiated = true;\n }\n }\n randomBytes(length) {\n if (!this.isAvailable || !this._crypto) {\n throw new Error("Browser random byte generator is not available.");\n }\n const out = new Uint8Array(length);\n for (let i = 0; i < out.length; i += QUOTA) {\n this._crypto.getRandomValues(out.subarray(i, i + Math.min(out.length - i, QUOTA)));\n }\n return out;\n }\n}\nexports.BrowserRandomSource = BrowserRandomSource;\n//# sourceMappingURL=browser.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@stablelib/random/lib/source/browser.js?')},"./node_modules/@stablelib/random/lib/source/node.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.NodeRandomSource = void 0;\nconst wipe_1 = __webpack_require__(/*! @stablelib/wipe */ "./node_modules/@stablelib/wipe/lib/wipe.js");\nclass NodeRandomSource {\n constructor() {\n this.isAvailable = false;\n this.isInstantiated = false;\n if (true) {\n const nodeCrypto = __webpack_require__(/*! crypto */ "?25ed");\n if (nodeCrypto && nodeCrypto.randomBytes) {\n this._crypto = nodeCrypto;\n this.isAvailable = true;\n this.isInstantiated = true;\n }\n }\n }\n randomBytes(length) {\n if (!this.isAvailable || !this._crypto) {\n throw new Error("Node.js random byte generator is not available.");\n }\n // Get random bytes (result is Buffer).\n let buffer = this._crypto.randomBytes(length);\n // Make sure we got the length that we requested.\n if (buffer.length !== length) {\n throw new Error("NodeRandomSource: got fewer bytes than requested");\n }\n // Allocate output array.\n const out = new Uint8Array(length);\n // Copy bytes from buffer to output.\n for (let i = 0; i < out.length; i++) {\n out[i] = buffer[i];\n }\n // Cleanup.\n (0, wipe_1.wipe)(buffer);\n return out;\n }\n}\nexports.NodeRandomSource = NodeRandomSource;\n//# sourceMappingURL=node.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@stablelib/random/lib/source/node.js?')},"./node_modules/@stablelib/random/lib/source/system.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.SystemRandomSource = void 0;\nconst browser_1 = __webpack_require__(/*! ./browser */ "./node_modules/@stablelib/random/lib/source/browser.js");\nconst node_1 = __webpack_require__(/*! ./node */ "./node_modules/@stablelib/random/lib/source/node.js");\nclass SystemRandomSource {\n constructor() {\n this.isAvailable = false;\n this.name = "";\n // Try browser.\n this._source = new browser_1.BrowserRandomSource();\n if (this._source.isAvailable) {\n this.isAvailable = true;\n this.name = "Browser";\n return;\n }\n // If no browser source, try Node.\n this._source = new node_1.NodeRandomSource();\n if (this._source.isAvailable) {\n this.isAvailable = true;\n this.name = "Node";\n return;\n }\n // No sources, we\'re out of options.\n }\n randomBytes(length) {\n if (!this.isAvailable) {\n throw new Error("System random byte generator is not available.");\n }\n return this._source.randomBytes(length);\n }\n}\nexports.SystemRandomSource = SystemRandomSource;\n//# sourceMappingURL=system.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@stablelib/random/lib/source/system.js?')},"./node_modules/@stablelib/salsa20/lib/salsa20.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, "__esModule", ({ value: true }));\n/**\n * Package salsa20 implements Salsa20 stream cipher.\n */\nvar binary_1 = __webpack_require__(/*! @stablelib/binary */ "./node_modules/@stablelib/binary/lib/binary.js");\nvar wipe_1 = __webpack_require__(/*! @stablelib/wipe */ "./node_modules/@stablelib/wipe/lib/wipe.js");\n// Number of Salsa20 rounds (Salsa20/20).\nvar ROUNDS = 20;\n/**\n * Applies the Salsa20 core function to 16-byte input,\n * 32-byte key key, and puts the result into 64-byte array out.\n */\nfunction core(out, input, key) {\n var j0 = 0x61707865; // "expa"\n var j1 = (key[3] << 24) | (key[2] << 16) | (key[1] << 8) | key[0];\n var j2 = (key[7] << 24) | (key[6] << 16) | (key[5] << 8) | key[4];\n var j3 = (key[11] << 24) | (key[10] << 16) | (key[9] << 8) | key[8];\n var j4 = (key[15] << 24) | (key[14] << 16) | (key[13] << 8) | key[12];\n var j5 = 0x3320646E; // "nd 3"\n var j6 = (input[3] << 24) | (input[2] << 16) | (input[1] << 8) | input[0];\n var j7 = (input[7] << 24) | (input[6] << 16) | (input[5] << 8) | input[4];\n var j8 = (input[11] << 24) | (input[10] << 16) | (input[9] << 8) | input[8];\n var j9 = (input[15] << 24) | (input[14] << 16) | (input[13] << 8) | input[12];\n var j10 = 0x79622D32; // "2-by"\n var j11 = (key[19] << 24) | (key[18] << 16) | (key[17] << 8) | key[16];\n var j12 = (key[23] << 24) | (key[22] << 16) | (key[21] << 8) | key[20];\n var j13 = (key[27] << 24) | (key[26] << 16) | (key[25] << 8) | key[24];\n var j14 = (key[31] << 24) | (key[30] << 16) | (key[29] << 8) | key[28];\n var j15 = 0x6B206574; // "te k"\n var x0 = j0;\n var x1 = j1;\n var x2 = j2;\n var x3 = j3;\n var x4 = j4;\n var x5 = j5;\n var x6 = j6;\n var x7 = j7;\n var x8 = j8;\n var x9 = j9;\n var x10 = j10;\n var x11 = j11;\n var x12 = j12;\n var x13 = j13;\n var x14 = j14;\n var x15 = j15;\n var u;\n for (var i = 0; i < ROUNDS; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u << 7 | u >>> (32 - 7);\n u = x4 + x0 | 0;\n x8 ^= u << 9 | u >>> (32 - 9);\n u = x8 + x4 | 0;\n x12 ^= u << 13 | u >>> (32 - 13);\n u = x12 + x8 | 0;\n x0 ^= u << 18 | u >>> (32 - 18);\n u = x5 + x1 | 0;\n x9 ^= u << 7 | u >>> (32 - 7);\n u = x9 + x5 | 0;\n x13 ^= u << 9 | u >>> (32 - 9);\n u = x13 + x9 | 0;\n x1 ^= u << 13 | u >>> (32 - 13);\n u = x1 + x13 | 0;\n x5 ^= u << 18 | u >>> (32 - 18);\n u = x10 + x6 | 0;\n x14 ^= u << 7 | u >>> (32 - 7);\n u = x14 + x10 | 0;\n x2 ^= u << 9 | u >>> (32 - 9);\n u = x2 + x14 | 0;\n x6 ^= u << 13 | u >>> (32 - 13);\n u = x6 + x2 | 0;\n x10 ^= u << 18 | u >>> (32 - 18);\n u = x15 + x11 | 0;\n x3 ^= u << 7 | u >>> (32 - 7);\n u = x3 + x15 | 0;\n x7 ^= u << 9 | u >>> (32 - 9);\n u = x7 + x3 | 0;\n x11 ^= u << 13 | u >>> (32 - 13);\n u = x11 + x7 | 0;\n x15 ^= u << 18 | u >>> (32 - 18);\n u = x0 + x3 | 0;\n x1 ^= u << 7 | u >>> (32 - 7);\n u = x1 + x0 | 0;\n x2 ^= u << 9 | u >>> (32 - 9);\n u = x2 + x1 | 0;\n x3 ^= u << 13 | u >>> (32 - 13);\n u = x3 + x2 | 0;\n x0 ^= u << 18 | u >>> (32 - 18);\n u = x5 + x4 | 0;\n x6 ^= u << 7 | u >>> (32 - 7);\n u = x6 + x5 | 0;\n x7 ^= u << 9 | u >>> (32 - 9);\n u = x7 + x6 | 0;\n x4 ^= u << 13 | u >>> (32 - 13);\n u = x4 + x7 | 0;\n x5 ^= u << 18 | u >>> (32 - 18);\n u = x10 + x9 | 0;\n x11 ^= u << 7 | u >>> (32 - 7);\n u = x11 + x10 | 0;\n x8 ^= u << 9 | u >>> (32 - 9);\n u = x8 + x11 | 0;\n x9 ^= u << 13 | u >>> (32 - 13);\n u = x9 + x8 | 0;\n x10 ^= u << 18 | u >>> (32 - 18);\n u = x15 + x14 | 0;\n x12 ^= u << 7 | u >>> (32 - 7);\n u = x12 + x15 | 0;\n x13 ^= u << 9 | u >>> (32 - 9);\n u = x13 + x12 | 0;\n x14 ^= u << 13 | u >>> (32 - 13);\n u = x14 + x13 | 0;\n x15 ^= u << 18 | u >>> (32 - 18);\n }\n binary_1.writeUint32LE(x0 + j0 | 0, out, 0);\n binary_1.writeUint32LE(x1 + j1 | 0, out, 4);\n binary_1.writeUint32LE(x2 + j2 | 0, out, 8);\n binary_1.writeUint32LE(x3 + j3 | 0, out, 12);\n binary_1.writeUint32LE(x4 + j4 | 0, out, 16);\n binary_1.writeUint32LE(x5 + j5 | 0, out, 20);\n binary_1.writeUint32LE(x6 + j6 | 0, out, 24);\n binary_1.writeUint32LE(x7 + j7 | 0, out, 28);\n binary_1.writeUint32LE(x8 + j8 | 0, out, 32);\n binary_1.writeUint32LE(x9 + j9 | 0, out, 36);\n binary_1.writeUint32LE(x10 + j10 | 0, out, 40);\n binary_1.writeUint32LE(x11 + j11 | 0, out, 44);\n binary_1.writeUint32LE(x12 + j12 | 0, out, 48);\n binary_1.writeUint32LE(x13 + j13 | 0, out, 52);\n binary_1.writeUint32LE(x14 + j14 | 0, out, 56);\n binary_1.writeUint32LE(x15 + j15 | 0, out, 60);\n}\n/**\n * Encrypt src with Salsa20/20 stream generated for the given 32-byte key\n * and 8-byte and write the result into dst and return it.\n *\n * dst and src may be the same, but otherwise must not overlap.\n *\n * Never use the same key and nonce to encrypt more than one message.\n *\n * If nonceInplaceCounterLength is not 0, the nonce is assumed to be a 16-byte\n * array with stream counter in first nonceInplaceCounterLength bytes and nonce\n * in the last remaining bytes. The counter will be incremented inplace for\n * each Salsa20 block. This is useful if you need to encrypt one stream of data\n * in chunks.\n */\nfunction streamXOR(key, nonce, src, dst, nonceInplaceCounterLength) {\n if (nonceInplaceCounterLength === void 0) { nonceInplaceCounterLength = 0; }\n // We only support 256-bit keys.\n if (key.length !== 32) {\n throw new Error("Salsa20: key size must be 32 bytes");\n }\n if (dst.length < src.length) {\n throw new Error("Salsa20: destination is shorter than source");\n }\n var nc;\n var counterStart;\n if (nonceInplaceCounterLength === 0) {\n if (nonce.length !== 8) {\n throw new Error("Salsa20 nonce must be 8 bytes");\n }\n nc = new Uint8Array(16);\n // First bytes of nc are nonce, set it.\n nc.set(nonce);\n // Last bytes are counter.\n counterStart = nonce.length;\n }\n else {\n if (nonce.length !== 16) {\n throw new Error("Salsa20 nonce with counter must be 16 bytes");\n }\n // This will update passed nonce with counter inplace.\n nc = nonce;\n counterStart = 16 - nonceInplaceCounterLength;\n }\n // Allocate temporary space for Salsa20 block.\n var block = new Uint8Array(64);\n for (var i = 0; i < src.length; i += 64) {\n // Generate a block.\n core(block, nc, key);\n // XOR block bytes with src into dst.\n for (var j = i; j < i + 64 && j < src.length; j++) {\n dst[j] = src[j] ^ block[j - i];\n }\n // Increment counter.\n incrementCounter(nc, counterStart, nc.length - counterStart);\n }\n // Cleanup temporary space.\n wipe_1.wipe(block);\n if (nonceInplaceCounterLength === 0) {\n // Cleanup counter.\n wipe_1.wipe(nc);\n }\n return dst;\n}\nexports.streamXOR = streamXOR;\n/**\n * Generate Salsa20/20 stream for the given 32-byte key and 8-byte nonce\n * and write it into dst and return it.\n *\n * Never use the same key and nonce to generate more than one stream.\n *\n * If nonceInplaceCounterLength is not 0, it behaves the same\n * with respect to the nonce as described in streamXOR documentation.\n *\n * stream is like streamXOR with all-zero src.\n */\nfunction stream(key, nonce, dst, nonceInplaceCounterLength) {\n if (nonceInplaceCounterLength === void 0) { nonceInplaceCounterLength = 0; }\n wipe_1.wipe(dst);\n return streamXOR(key, nonce, dst, dst, nonceInplaceCounterLength);\n}\nexports.stream = stream;\nfunction incrementCounter(counter, pos, len) {\n var carry = 1;\n while (len--) {\n carry = carry + (counter[pos] & 0xff) | 0;\n counter[pos] = carry & 0xff;\n carry >>>= 8;\n pos++;\n }\n if (carry > 0) {\n throw new Error("Salsa20: counter overflow");\n }\n}\n//# sourceMappingURL=salsa20.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@stablelib/salsa20/lib/salsa20.js?')},"./node_modules/@stablelib/sha256/lib/sha256.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nvar binary_1 = __webpack_require__(/*! @stablelib/binary */ "./node_modules/@stablelib/binary/lib/binary.js");\nvar wipe_1 = __webpack_require__(/*! @stablelib/wipe */ "./node_modules/@stablelib/wipe/lib/wipe.js");\nexports.DIGEST_LENGTH = 32;\nexports.BLOCK_SIZE = 64;\n/**\n * SHA2-256 cryptographic hash algorithm.\n */\nvar SHA256 = /** @class */ (function () {\n function SHA256() {\n /** Length of hash output */\n this.digestLength = exports.DIGEST_LENGTH;\n /** Block size */\n this.blockSize = exports.BLOCK_SIZE;\n // Note: Int32Array is used instead of Uint32Array for performance reasons.\n this._state = new Int32Array(8); // hash state\n this._temp = new Int32Array(64); // temporary state\n this._buffer = new Uint8Array(128); // buffer for data to hash\n this._bufferLength = 0; // number of bytes in buffer\n this._bytesHashed = 0; // number of total bytes hashed\n this._finished = false; // indicates whether the hash was finalized\n this.reset();\n }\n SHA256.prototype._initState = function () {\n this._state[0] = 0x6a09e667;\n this._state[1] = 0xbb67ae85;\n this._state[2] = 0x3c6ef372;\n this._state[3] = 0xa54ff53a;\n this._state[4] = 0x510e527f;\n this._state[5] = 0x9b05688c;\n this._state[6] = 0x1f83d9ab;\n this._state[7] = 0x5be0cd19;\n };\n /**\n * Resets hash state making it possible\n * to re-use this instance to hash other data.\n */\n SHA256.prototype.reset = function () {\n this._initState();\n this._bufferLength = 0;\n this._bytesHashed = 0;\n this._finished = false;\n return this;\n };\n /**\n * Cleans internal buffers and resets hash state.\n */\n SHA256.prototype.clean = function () {\n wipe_1.wipe(this._buffer);\n wipe_1.wipe(this._temp);\n this.reset();\n };\n /**\n * Updates hash state with the given data.\n *\n * Throws error when trying to update already finalized hash:\n * instance must be reset to update it again.\n */\n SHA256.prototype.update = function (data, dataLength) {\n if (dataLength === void 0) { dataLength = data.length; }\n if (this._finished) {\n throw new Error("SHA256: can\'t update because hash was finished.");\n }\n var dataPos = 0;\n this._bytesHashed += dataLength;\n if (this._bufferLength > 0) {\n while (this._bufferLength < this.blockSize && dataLength > 0) {\n this._buffer[this._bufferLength++] = data[dataPos++];\n dataLength--;\n }\n if (this._bufferLength === this.blockSize) {\n hashBlocks(this._temp, this._state, this._buffer, 0, this.blockSize);\n this._bufferLength = 0;\n }\n }\n if (dataLength >= this.blockSize) {\n dataPos = hashBlocks(this._temp, this._state, data, dataPos, dataLength);\n dataLength %= this.blockSize;\n }\n while (dataLength > 0) {\n this._buffer[this._bufferLength++] = data[dataPos++];\n dataLength--;\n }\n return this;\n };\n /**\n * Finalizes hash state and puts hash into out.\n * If hash was already finalized, puts the same value.\n */\n SHA256.prototype.finish = function (out) {\n if (!this._finished) {\n var bytesHashed = this._bytesHashed;\n var left = this._bufferLength;\n var bitLenHi = (bytesHashed / 0x20000000) | 0;\n var bitLenLo = bytesHashed << 3;\n var padLength = (bytesHashed % 64 < 56) ? 64 : 128;\n this._buffer[left] = 0x80;\n for (var i = left + 1; i < padLength - 8; i++) {\n this._buffer[i] = 0;\n }\n binary_1.writeUint32BE(bitLenHi, this._buffer, padLength - 8);\n binary_1.writeUint32BE(bitLenLo, this._buffer, padLength - 4);\n hashBlocks(this._temp, this._state, this._buffer, 0, padLength);\n this._finished = true;\n }\n for (var i = 0; i < this.digestLength / 4; i++) {\n binary_1.writeUint32BE(this._state[i], out, i * 4);\n }\n return this;\n };\n /**\n * Returns the final hash digest.\n */\n SHA256.prototype.digest = function () {\n var out = new Uint8Array(this.digestLength);\n this.finish(out);\n return out;\n };\n /**\n * Function useful for HMAC/PBKDF2 optimization.\n * Returns hash state to be used with restoreState().\n * Only chain value is saved, not buffers or other\n * state variables.\n */\n SHA256.prototype.saveState = function () {\n if (this._finished) {\n throw new Error("SHA256: cannot save finished state");\n }\n return {\n state: new Int32Array(this._state),\n buffer: this._bufferLength > 0 ? new Uint8Array(this._buffer) : undefined,\n bufferLength: this._bufferLength,\n bytesHashed: this._bytesHashed\n };\n };\n /**\n * Function useful for HMAC/PBKDF2 optimization.\n * Restores state saved by saveState() and sets bytesHashed\n * to the given value.\n */\n SHA256.prototype.restoreState = function (savedState) {\n this._state.set(savedState.state);\n this._bufferLength = savedState.bufferLength;\n if (savedState.buffer) {\n this._buffer.set(savedState.buffer);\n }\n this._bytesHashed = savedState.bytesHashed;\n this._finished = false;\n return this;\n };\n /**\n * Cleans state returned by saveState().\n */\n SHA256.prototype.cleanSavedState = function (savedState) {\n wipe_1.wipe(savedState.state);\n if (savedState.buffer) {\n wipe_1.wipe(savedState.buffer);\n }\n savedState.bufferLength = 0;\n savedState.bytesHashed = 0;\n };\n return SHA256;\n}());\nexports.SHA256 = SHA256;\n// Constants\nvar K = new Int32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b,\n 0x59f111f1, 0x923f82a4, 0xab1c5ed5, 0xd807aa98, 0x12835b01,\n 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7,\n 0xc19bf174, 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da, 0x983e5152,\n 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147,\n 0x06ca6351, 0x14292967, 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc,\n 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819,\n 0xd6990624, 0xf40e3585, 0x106aa070, 0x19a4c116, 0x1e376c08,\n 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f,\n 0x682e6ff3, 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\nfunction hashBlocks(w, v, p, pos, len) {\n while (len >= 64) {\n var a = v[0];\n var b = v[1];\n var c = v[2];\n var d = v[3];\n var e = v[4];\n var f = v[5];\n var g = v[6];\n var h = v[7];\n for (var i = 0; i < 16; i++) {\n var j = pos + i * 4;\n w[i] = binary_1.readUint32BE(p, j);\n }\n for (var i = 16; i < 64; i++) {\n var u = w[i - 2];\n var t1 = (u >>> 17 | u << (32 - 17)) ^ (u >>> 19 | u << (32 - 19)) ^ (u >>> 10);\n u = w[i - 15];\n var t2 = (u >>> 7 | u << (32 - 7)) ^ (u >>> 18 | u << (32 - 18)) ^ (u >>> 3);\n w[i] = (t1 + w[i - 7] | 0) + (t2 + w[i - 16] | 0);\n }\n for (var i = 0; i < 64; i++) {\n var t1 = (((((e >>> 6 | e << (32 - 6)) ^ (e >>> 11 | e << (32 - 11)) ^\n (e >>> 25 | e << (32 - 25))) + ((e & f) ^ (~e & g))) | 0) +\n ((h + ((K[i] + w[i]) | 0)) | 0)) | 0;\n var t2 = (((a >>> 2 | a << (32 - 2)) ^ (a >>> 13 | a << (32 - 13)) ^\n (a >>> 22 | a << (32 - 22))) + ((a & b) ^ (a & c) ^ (b & c))) | 0;\n h = g;\n g = f;\n f = e;\n e = (d + t1) | 0;\n d = c;\n c = b;\n b = a;\n a = (t1 + t2) | 0;\n }\n v[0] += a;\n v[1] += b;\n v[2] += c;\n v[3] += d;\n v[4] += e;\n v[5] += f;\n v[6] += g;\n v[7] += h;\n pos += 64;\n len -= 64;\n }\n return pos;\n}\nfunction hash(data) {\n var h = new SHA256();\n h.update(data);\n var digest = h.digest();\n h.clean();\n return digest;\n}\nexports.hash = hash;\n//# sourceMappingURL=sha256.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@stablelib/sha256/lib/sha256.js?')},"./node_modules/@stablelib/sha512/lib/sha512.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nvar binary_1 = __webpack_require__(/*! @stablelib/binary */ "./node_modules/@stablelib/binary/lib/binary.js");\nvar wipe_1 = __webpack_require__(/*! @stablelib/wipe */ "./node_modules/@stablelib/wipe/lib/wipe.js");\nexports.DIGEST_LENGTH = 64;\nexports.BLOCK_SIZE = 128;\n/**\n * SHA-2-512 cryptographic hash algorithm.\n */\nvar SHA512 = /** @class */ (function () {\n function SHA512() {\n /** Length of hash output */\n this.digestLength = exports.DIGEST_LENGTH;\n /** Block size */\n this.blockSize = exports.BLOCK_SIZE;\n // Note: Int32Array is used instead of Uint32Array for performance reasons.\n this._stateHi = new Int32Array(8); // hash state, high bytes\n this._stateLo = new Int32Array(8); // hash state, low bytes\n this._tempHi = new Int32Array(16); // temporary state, high bytes\n this._tempLo = new Int32Array(16); // temporary state, low bytes\n this._buffer = new Uint8Array(256); // buffer for data to hash\n this._bufferLength = 0; // number of bytes in buffer\n this._bytesHashed = 0; // number of total bytes hashed\n this._finished = false; // indicates whether the hash was finalized\n this.reset();\n }\n SHA512.prototype._initState = function () {\n this._stateHi[0] = 0x6a09e667;\n this._stateHi[1] = 0xbb67ae85;\n this._stateHi[2] = 0x3c6ef372;\n this._stateHi[3] = 0xa54ff53a;\n this._stateHi[4] = 0x510e527f;\n this._stateHi[5] = 0x9b05688c;\n this._stateHi[6] = 0x1f83d9ab;\n this._stateHi[7] = 0x5be0cd19;\n this._stateLo[0] = 0xf3bcc908;\n this._stateLo[1] = 0x84caa73b;\n this._stateLo[2] = 0xfe94f82b;\n this._stateLo[3] = 0x5f1d36f1;\n this._stateLo[4] = 0xade682d1;\n this._stateLo[5] = 0x2b3e6c1f;\n this._stateLo[6] = 0xfb41bd6b;\n this._stateLo[7] = 0x137e2179;\n };\n /**\n * Resets hash state making it possible\n * to re-use this instance to hash other data.\n */\n SHA512.prototype.reset = function () {\n this._initState();\n this._bufferLength = 0;\n this._bytesHashed = 0;\n this._finished = false;\n return this;\n };\n /**\n * Cleans internal buffers and resets hash state.\n */\n SHA512.prototype.clean = function () {\n wipe_1.wipe(this._buffer);\n wipe_1.wipe(this._tempHi);\n wipe_1.wipe(this._tempLo);\n this.reset();\n };\n /**\n * Updates hash state with the given data.\n *\n * Throws error when trying to update already finalized hash:\n * instance must be reset to update it again.\n */\n SHA512.prototype.update = function (data, dataLength) {\n if (dataLength === void 0) { dataLength = data.length; }\n if (this._finished) {\n throw new Error("SHA512: can\'t update because hash was finished.");\n }\n var dataPos = 0;\n this._bytesHashed += dataLength;\n if (this._bufferLength > 0) {\n while (this._bufferLength < exports.BLOCK_SIZE && dataLength > 0) {\n this._buffer[this._bufferLength++] = data[dataPos++];\n dataLength--;\n }\n if (this._bufferLength === this.blockSize) {\n hashBlocks(this._tempHi, this._tempLo, this._stateHi, this._stateLo, this._buffer, 0, this.blockSize);\n this._bufferLength = 0;\n }\n }\n if (dataLength >= this.blockSize) {\n dataPos = hashBlocks(this._tempHi, this._tempLo, this._stateHi, this._stateLo, data, dataPos, dataLength);\n dataLength %= this.blockSize;\n }\n while (dataLength > 0) {\n this._buffer[this._bufferLength++] = data[dataPos++];\n dataLength--;\n }\n return this;\n };\n /**\n * Finalizes hash state and puts hash into out.\n * If hash was already finalized, puts the same value.\n */\n SHA512.prototype.finish = function (out) {\n if (!this._finished) {\n var bytesHashed = this._bytesHashed;\n var left = this._bufferLength;\n var bitLenHi = (bytesHashed / 0x20000000) | 0;\n var bitLenLo = bytesHashed << 3;\n var padLength = (bytesHashed % 128 < 112) ? 128 : 256;\n this._buffer[left] = 0x80;\n for (var i = left + 1; i < padLength - 8; i++) {\n this._buffer[i] = 0;\n }\n binary_1.writeUint32BE(bitLenHi, this._buffer, padLength - 8);\n binary_1.writeUint32BE(bitLenLo, this._buffer, padLength - 4);\n hashBlocks(this._tempHi, this._tempLo, this._stateHi, this._stateLo, this._buffer, 0, padLength);\n this._finished = true;\n }\n for (var i = 0; i < this.digestLength / 8; i++) {\n binary_1.writeUint32BE(this._stateHi[i], out, i * 8);\n binary_1.writeUint32BE(this._stateLo[i], out, i * 8 + 4);\n }\n return this;\n };\n /**\n * Returns the final hash digest.\n */\n SHA512.prototype.digest = function () {\n var out = new Uint8Array(this.digestLength);\n this.finish(out);\n return out;\n };\n /**\n * Function useful for HMAC/PBKDF2 optimization. Returns hash state to be\n * used with restoreState(). Only chain value is saved, not buffers or\n * other state variables.\n */\n SHA512.prototype.saveState = function () {\n if (this._finished) {\n throw new Error("SHA256: cannot save finished state");\n }\n return {\n stateHi: new Int32Array(this._stateHi),\n stateLo: new Int32Array(this._stateLo),\n buffer: this._bufferLength > 0 ? new Uint8Array(this._buffer) : undefined,\n bufferLength: this._bufferLength,\n bytesHashed: this._bytesHashed\n };\n };\n /**\n * Function useful for HMAC/PBKDF2 optimization. Restores state saved by\n * saveState() and sets bytesHashed to the given value.\n */\n SHA512.prototype.restoreState = function (savedState) {\n this._stateHi.set(savedState.stateHi);\n this._stateLo.set(savedState.stateLo);\n this._bufferLength = savedState.bufferLength;\n if (savedState.buffer) {\n this._buffer.set(savedState.buffer);\n }\n this._bytesHashed = savedState.bytesHashed;\n this._finished = false;\n return this;\n };\n /**\n * Cleans state returned by saveState().\n */\n SHA512.prototype.cleanSavedState = function (savedState) {\n wipe_1.wipe(savedState.stateHi);\n wipe_1.wipe(savedState.stateLo);\n if (savedState.buffer) {\n wipe_1.wipe(savedState.buffer);\n }\n savedState.bufferLength = 0;\n savedState.bytesHashed = 0;\n };\n return SHA512;\n}());\nexports.SHA512 = SHA512;\n// Constants\nvar K = new Int32Array([\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]);\nfunction hashBlocks(wh, wl, hh, hl, m, pos, len) {\n var ah0 = hh[0], ah1 = hh[1], ah2 = hh[2], ah3 = hh[3], ah4 = hh[4], ah5 = hh[5], ah6 = hh[6], ah7 = hh[7], al0 = hl[0], al1 = hl[1], al2 = hl[2], al3 = hl[3], al4 = hl[4], al5 = hl[5], al6 = hl[6], al7 = hl[7];\n var h, l;\n var th, tl;\n var a, b, c, d;\n while (len >= 128) {\n for (var i = 0; i < 16; i++) {\n var j = 8 * i + pos;\n wh[i] = binary_1.readUint32BE(m, j);\n wl[i] = binary_1.readUint32BE(m, j + 4);\n }\n for (var i = 0; i < 80; i++) {\n var bh0 = ah0;\n var bh1 = ah1;\n var bh2 = ah2;\n var bh3 = ah3;\n var bh4 = ah4;\n var bh5 = ah5;\n var bh6 = ah6;\n var bh7 = ah7;\n var bl0 = al0;\n var bl1 = al1;\n var bl2 = al2;\n var bl3 = al3;\n var bl4 = al4;\n var bl5 = al5;\n var bl6 = al6;\n var bl7 = al7;\n // add\n h = ah7;\n l = al7;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n // Sigma1\n h = ((ah4 >>> 14) | (al4 << (32 - 14))) ^ ((ah4 >>> 18) |\n (al4 << (32 - 18))) ^ ((al4 >>> (41 - 32)) | (ah4 << (32 - (41 - 32))));\n l = ((al4 >>> 14) | (ah4 << (32 - 14))) ^ ((al4 >>> 18) |\n (ah4 << (32 - 18))) ^ ((ah4 >>> (41 - 32)) | (al4 << (32 - (41 - 32))));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // Ch\n h = (ah4 & ah5) ^ (~ah4 & ah6);\n l = (al4 & al5) ^ (~al4 & al6);\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // K\n h = K[i * 2];\n l = K[i * 2 + 1];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // w\n h = wh[i % 16];\n l = wl[i % 16];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n th = c & 0xffff | d << 16;\n tl = a & 0xffff | b << 16;\n // add\n h = th;\n l = tl;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n // Sigma0\n h = ((ah0 >>> 28) | (al0 << (32 - 28))) ^ ((al0 >>> (34 - 32)) |\n (ah0 << (32 - (34 - 32)))) ^ ((al0 >>> (39 - 32)) | (ah0 << (32 - (39 - 32))));\n l = ((al0 >>> 28) | (ah0 << (32 - 28))) ^ ((ah0 >>> (34 - 32)) |\n (al0 << (32 - (34 - 32)))) ^ ((ah0 >>> (39 - 32)) | (al0 << (32 - (39 - 32))));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // Maj\n h = (ah0 & ah1) ^ (ah0 & ah2) ^ (ah1 & ah2);\n l = (al0 & al1) ^ (al0 & al2) ^ (al1 & al2);\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n bh7 = (c & 0xffff) | (d << 16);\n bl7 = (a & 0xffff) | (b << 16);\n // add\n h = bh3;\n l = bl3;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = th;\n l = tl;\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n bh3 = (c & 0xffff) | (d << 16);\n bl3 = (a & 0xffff) | (b << 16);\n ah1 = bh0;\n ah2 = bh1;\n ah3 = bh2;\n ah4 = bh3;\n ah5 = bh4;\n ah6 = bh5;\n ah7 = bh6;\n ah0 = bh7;\n al1 = bl0;\n al2 = bl1;\n al3 = bl2;\n al4 = bl3;\n al5 = bl4;\n al6 = bl5;\n al7 = bl6;\n al0 = bl7;\n if (i % 16 === 15) {\n for (var j = 0; j < 16; j++) {\n // add\n h = wh[j];\n l = wl[j];\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = wh[(j + 9) % 16];\n l = wl[(j + 9) % 16];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // sigma0\n th = wh[(j + 1) % 16];\n tl = wl[(j + 1) % 16];\n h = ((th >>> 1) | (tl << (32 - 1))) ^ ((th >>> 8) |\n (tl << (32 - 8))) ^ (th >>> 7);\n l = ((tl >>> 1) | (th << (32 - 1))) ^ ((tl >>> 8) |\n (th << (32 - 8))) ^ ((tl >>> 7) | (th << (32 - 7)));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n // sigma1\n th = wh[(j + 14) % 16];\n tl = wl[(j + 14) % 16];\n h = ((th >>> 19) | (tl << (32 - 19))) ^ ((tl >>> (61 - 32)) |\n (th << (32 - (61 - 32)))) ^ (th >>> 6);\n l = ((tl >>> 19) | (th << (32 - 19))) ^ ((th >>> (61 - 32)) |\n (tl << (32 - (61 - 32)))) ^ ((tl >>> 6) | (th << (32 - 6)));\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n wh[j] = (c & 0xffff) | (d << 16);\n wl[j] = (a & 0xffff) | (b << 16);\n }\n }\n }\n // add\n h = ah0;\n l = al0;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[0];\n l = hl[0];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[0] = ah0 = (c & 0xffff) | (d << 16);\n hl[0] = al0 = (a & 0xffff) | (b << 16);\n h = ah1;\n l = al1;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[1];\n l = hl[1];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[1] = ah1 = (c & 0xffff) | (d << 16);\n hl[1] = al1 = (a & 0xffff) | (b << 16);\n h = ah2;\n l = al2;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[2];\n l = hl[2];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[2] = ah2 = (c & 0xffff) | (d << 16);\n hl[2] = al2 = (a & 0xffff) | (b << 16);\n h = ah3;\n l = al3;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[3];\n l = hl[3];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[3] = ah3 = (c & 0xffff) | (d << 16);\n hl[3] = al3 = (a & 0xffff) | (b << 16);\n h = ah4;\n l = al4;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[4];\n l = hl[4];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[4] = ah4 = (c & 0xffff) | (d << 16);\n hl[4] = al4 = (a & 0xffff) | (b << 16);\n h = ah5;\n l = al5;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[5];\n l = hl[5];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[5] = ah5 = (c & 0xffff) | (d << 16);\n hl[5] = al5 = (a & 0xffff) | (b << 16);\n h = ah6;\n l = al6;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[6];\n l = hl[6];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[6] = ah6 = (c & 0xffff) | (d << 16);\n hl[6] = al6 = (a & 0xffff) | (b << 16);\n h = ah7;\n l = al7;\n a = l & 0xffff;\n b = l >>> 16;\n c = h & 0xffff;\n d = h >>> 16;\n h = hh[7];\n l = hl[7];\n a += l & 0xffff;\n b += l >>> 16;\n c += h & 0xffff;\n d += h >>> 16;\n b += a >>> 16;\n c += b >>> 16;\n d += c >>> 16;\n hh[7] = ah7 = (c & 0xffff) | (d << 16);\n hl[7] = al7 = (a & 0xffff) | (b << 16);\n pos += 128;\n len -= 128;\n }\n return pos;\n}\nfunction hash(data) {\n var h = new SHA512();\n h.update(data);\n var digest = h.digest();\n h.clean();\n return digest;\n}\nexports.hash = hash;\n//# sourceMappingURL=sha512.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@stablelib/sha512/lib/sha512.js?')},"./node_modules/@stablelib/utf8/lib/utf8.js":(__unused_webpack_module,exports)=>{"use strict";eval('\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, "__esModule", ({ value: true }));\n/**\n * Package utf8 implements UTF-8 encoding and decoding.\n */\nvar INVALID_UTF16 = "utf8: invalid string";\nvar INVALID_UTF8 = "utf8: invalid source encoding";\n/**\n * Encodes the given string into UTF-8 byte array.\n * Throws if the source string has invalid UTF-16 encoding.\n */\nfunction encode(s) {\n // Calculate result length and allocate output array.\n // encodedLength() also validates string and throws errors,\n // so we don\'t need repeat validation here.\n var arr = new Uint8Array(encodedLength(s));\n var pos = 0;\n for (var i = 0; i < s.length; i++) {\n var c = s.charCodeAt(i);\n if (c < 0x80) {\n arr[pos++] = c;\n }\n else if (c < 0x800) {\n arr[pos++] = 0xc0 | c >> 6;\n arr[pos++] = 0x80 | c & 0x3f;\n }\n else if (c < 0xd800) {\n arr[pos++] = 0xe0 | c >> 12;\n arr[pos++] = 0x80 | (c >> 6) & 0x3f;\n arr[pos++] = 0x80 | c & 0x3f;\n }\n else {\n i++; // get one more character\n c = (c & 0x3ff) << 10;\n c |= s.charCodeAt(i) & 0x3ff;\n c += 0x10000;\n arr[pos++] = 0xf0 | c >> 18;\n arr[pos++] = 0x80 | (c >> 12) & 0x3f;\n arr[pos++] = 0x80 | (c >> 6) & 0x3f;\n arr[pos++] = 0x80 | c & 0x3f;\n }\n }\n return arr;\n}\nexports.encode = encode;\n/**\n * Returns the number of bytes required to encode the given string into UTF-8.\n * Throws if the source string has invalid UTF-16 encoding.\n */\nfunction encodedLength(s) {\n var result = 0;\n for (var i = 0; i < s.length; i++) {\n var c = s.charCodeAt(i);\n if (c < 0x80) {\n result += 1;\n }\n else if (c < 0x800) {\n result += 2;\n }\n else if (c < 0xd800) {\n result += 3;\n }\n else if (c <= 0xdfff) {\n if (i >= s.length - 1) {\n throw new Error(INVALID_UTF16);\n }\n i++; // "eat" next character\n result += 4;\n }\n else {\n throw new Error(INVALID_UTF16);\n }\n }\n return result;\n}\nexports.encodedLength = encodedLength;\n/**\n * Decodes the given byte array from UTF-8 into a string.\n * Throws if encoding is invalid.\n */\nfunction decode(arr) {\n var chars = [];\n for (var i = 0; i < arr.length; i++) {\n var b = arr[i];\n if (b & 0x80) {\n var min = void 0;\n if (b < 0xe0) {\n // Need 1 more byte.\n if (i >= arr.length) {\n throw new Error(INVALID_UTF8);\n }\n var n1 = arr[++i];\n if ((n1 & 0xc0) !== 0x80) {\n throw new Error(INVALID_UTF8);\n }\n b = (b & 0x1f) << 6 | (n1 & 0x3f);\n min = 0x80;\n }\n else if (b < 0xf0) {\n // Need 2 more bytes.\n if (i >= arr.length - 1) {\n throw new Error(INVALID_UTF8);\n }\n var n1 = arr[++i];\n var n2 = arr[++i];\n if ((n1 & 0xc0) !== 0x80 || (n2 & 0xc0) !== 0x80) {\n throw new Error(INVALID_UTF8);\n }\n b = (b & 0x0f) << 12 | (n1 & 0x3f) << 6 | (n2 & 0x3f);\n min = 0x800;\n }\n else if (b < 0xf8) {\n // Need 3 more bytes.\n if (i >= arr.length - 2) {\n throw new Error(INVALID_UTF8);\n }\n var n1 = arr[++i];\n var n2 = arr[++i];\n var n3 = arr[++i];\n if ((n1 & 0xc0) !== 0x80 || (n2 & 0xc0) !== 0x80 || (n3 & 0xc0) !== 0x80) {\n throw new Error(INVALID_UTF8);\n }\n b = (b & 0x0f) << 18 | (n1 & 0x3f) << 12 | (n2 & 0x3f) << 6 | (n3 & 0x3f);\n min = 0x10000;\n }\n else {\n throw new Error(INVALID_UTF8);\n }\n if (b < min || (b >= 0xd800 && b <= 0xdfff)) {\n throw new Error(INVALID_UTF8);\n }\n if (b >= 0x10000) {\n // Surrogate pair.\n if (b > 0x10ffff) {\n throw new Error(INVALID_UTF8);\n }\n b -= 0x10000;\n chars.push(String.fromCharCode(0xd800 | (b >> 10)));\n b = 0xdc00 | (b & 0x3ff);\n }\n }\n chars.push(String.fromCharCode(b));\n }\n return chars.join("");\n}\nexports.decode = decode;\n//# sourceMappingURL=utf8.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@stablelib/utf8/lib/utf8.js?')},"./node_modules/@stablelib/wipe/lib/wipe.js":(__unused_webpack_module,exports)=>{"use strict";eval("\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\n/**\n * Sets all values in the given array to zero and returns it.\n *\n * The fact that it sets bytes to zero can be relied on.\n *\n * There is no guarantee that this function makes data disappear from memory,\n * as runtime implementation can, for example, have copying garbage collector\n * that will make copies of sensitive data before we wipe it. Or that an\n * operating system will write our data to swap or sleep image. Another thing\n * is that an optimizing compiler can remove calls to this function or make it\n * no-op. There's nothing we can do with it, so we just do our best and hope\n * that everything will be okay and good will triumph over evil.\n */\nfunction wipe(array) {\n // Right now it's similar to array.fill(0). If it turns\n // out that runtimes optimize this call away, maybe\n // we can try something else.\n for (var i = 0; i < array.length; i++) {\n array[i] = 0;\n }\n return array;\n}\nexports.wipe = wipe;\n//# sourceMappingURL=wipe.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@stablelib/wipe/lib/wipe.js?")},"./node_modules/@stablelib/x25519-session/lib/keyagreement.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\n// Copyright (C) 2020 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.X25519Session = exports.SECRET_SEED_LENGTH = exports.SAVED_STATE_LENGTH = exports.ACCEPT_MESSAGE_LENGTH = exports.OFFER_MESSAGE_LENGTH = void 0;\nconst random_1 = __webpack_require__(/*! @stablelib/random */ "./node_modules/@stablelib/random/lib/random.js");\nconst wipe_1 = __webpack_require__(/*! @stablelib/wipe */ "./node_modules/@stablelib/wipe/lib/wipe.js");\nconst x25519_1 = __webpack_require__(/*! @stablelib/x25519 */ "./node_modules/@stablelib/x25519/lib/x25519.js");\nconst x25519_session_1 = __webpack_require__(/*! ./x25519-session */ "./node_modules/@stablelib/x25519-session/lib/x25519-session.js");\n/** Constants for key agreement */\nexports.OFFER_MESSAGE_LENGTH = x25519_1.PUBLIC_KEY_LENGTH;\nexports.ACCEPT_MESSAGE_LENGTH = x25519_1.PUBLIC_KEY_LENGTH;\nexports.SAVED_STATE_LENGTH = x25519_1.SECRET_KEY_LENGTH;\nexports.SECRET_SEED_LENGTH = x25519_1.SECRET_KEY_LENGTH;\n/**\n * X25519 key agreement using ephemeral key pairs.\n *\n * Note that unless this key agreement is combined with an authentication\n * method, such as public key signatures, it\'s vulnerable to man-in-the-middle\n * attacks.\n */\nclass X25519Session {\n constructor(secretSeed, prng) {\n this.offerMessageLength = exports.OFFER_MESSAGE_LENGTH;\n this.acceptMessageLength = exports.ACCEPT_MESSAGE_LENGTH;\n this.sharedKeyLength = x25519_1.SHARED_KEY_LENGTH;\n this.savedStateLength = exports.SAVED_STATE_LENGTH;\n this._seed = secretSeed || (0, random_1.randomBytes)(x25519_1.SECRET_KEY_LENGTH, prng);\n }\n saveState() {\n return new Uint8Array(this._seed);\n }\n restoreState(savedState) {\n this._seed = new Uint8Array(savedState);\n return this;\n }\n clean() {\n if (this._seed) {\n (0, wipe_1.wipe)(this._seed);\n }\n if (this._keyPair) {\n (0, wipe_1.wipe)(this._keyPair.secretKey);\n (0, wipe_1.wipe)(this._keyPair.publicKey);\n }\n if (this._sharedKey) {\n (0, wipe_1.wipe)(this._sharedKey);\n }\n if (this._sessionKeys) {\n (0, wipe_1.wipe)(this._sessionKeys.receive);\n (0, wipe_1.wipe)(this._sessionKeys.send);\n }\n }\n offer() {\n this._keyPair = (0, x25519_1.generateKeyPairFromSeed)(this._seed);\n return new Uint8Array(this._keyPair.publicKey);\n }\n accept(offerMsg) {\n if (this._keyPair) {\n throw new Error("X25519Session: accept shouldn\'t be called by offering party");\n }\n if (offerMsg.length !== this.offerMessageLength) {\n throw new Error("X25519Session: incorrect offer message length");\n }\n if (this._sharedKey) {\n throw new Error("X25519Session: accept was already called");\n }\n const keyPair = (0, x25519_1.generateKeyPairFromSeed)(this._seed);\n this._sharedKey = (0, x25519_1.sharedKey)(keyPair.secretKey, offerMsg);\n this._sessionKeys = (0, x25519_session_1.clientSessionKeysFromSharedKey)(this._sharedKey, keyPair.publicKey, offerMsg);\n (0, wipe_1.wipe)(keyPair.secretKey);\n return keyPair.publicKey;\n }\n finish(acceptMsg) {\n if (acceptMsg.length !== this.acceptMessageLength) {\n throw new Error("X25519Session: incorrect accept message length");\n }\n if (!this._keyPair) {\n throw new Error("X25519Session: no offer state");\n }\n if (this._sharedKey) {\n throw new Error("X25519Session: finish was already called");\n }\n this._sharedKey = (0, x25519_1.sharedKey)(this._keyPair.secretKey, acceptMsg);\n this._sessionKeys = (0, x25519_session_1.serverSessionKeysFromSharedKey)(this._sharedKey, this._keyPair.publicKey, acceptMsg);\n return this;\n }\n getSharedKey() {\n if (!this._sharedKey) {\n throw new Error("X25519Session: no shared key established");\n }\n return new Uint8Array(this._sharedKey);\n }\n getSessionKeys() {\n if (!this._sessionKeys) {\n throw new Error("X25519Session: no shared key established");\n }\n return {\n receive: new Uint8Array(this._sessionKeys.receive),\n send: new Uint8Array(this._sessionKeys.send),\n };\n }\n}\nexports.X25519Session = X25519Session;\n//# sourceMappingURL=keyagreement.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@stablelib/x25519-session/lib/keyagreement.js?')},"./node_modules/@stablelib/x25519-session/lib/x25519-session.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.clientSessionKeys = exports.serverSessionKeys = exports.clientSessionKeysFromSharedKey = exports.serverSessionKeysFromSharedKey = exports.X25519Session = void 0;\n/**\n * Package x25519-session implements libsodium compatible session keys generation based on X25519 key agreement.\n */\nconst blake2b_1 = __webpack_require__(/*! @stablelib/blake2b */ "./node_modules/@stablelib/blake2b/lib/blake2b.js");\nconst x25519_1 = __webpack_require__(/*! @stablelib/x25519 */ "./node_modules/@stablelib/x25519/lib/x25519.js");\nvar keyagreement_1 = __webpack_require__(/*! ./keyagreement */ "./node_modules/@stablelib/x25519-session/lib/keyagreement.js");\nObject.defineProperty(exports, "X25519Session", ({ enumerable: true, get: function () { return keyagreement_1.X25519Session; } }));\nconst SESSION_KEY_LENGTH = 32;\n/**\n * Generates server-side session encryption keys from the shared key obtained during agreement phase.\n */\nfunction serverSessionKeysFromSharedKey(sharedKey, myPublicKey, theirPublicKey, hash = blake2b_1.BLAKE2b) {\n const state = new hash();\n if (state.digestLength !== SESSION_KEY_LENGTH * 2) {\n throw new Error("X25519: incorrect digest length");\n }\n const h = state.update(sharedKey).update(theirPublicKey).update(myPublicKey).digest();\n return {\n send: h.subarray(0, SESSION_KEY_LENGTH),\n receive: h.subarray(SESSION_KEY_LENGTH),\n };\n}\nexports.serverSessionKeysFromSharedKey = serverSessionKeysFromSharedKey;\n/**\n * Generates client-side session encryption keys from the shared key obtained during agreement phase.\n */\nfunction clientSessionKeysFromSharedKey(sharedKey, myPublicKey, theirPublicKey, hash = blake2b_1.BLAKE2b) {\n const state = new hash();\n if (state.digestLength !== SESSION_KEY_LENGTH * 2) {\n throw new Error("X25519: incorrect digest length");\n }\n const h = state.update(sharedKey).update(myPublicKey).update(theirPublicKey).digest();\n return {\n receive: h.subarray(0, SESSION_KEY_LENGTH),\n send: h.subarray(SESSION_KEY_LENGTH),\n };\n}\nexports.clientSessionKeysFromSharedKey = clientSessionKeysFromSharedKey;\n/**\n * Generates server-side session encryption keys. Uses a key pair and a peer\'s public key to generate the shared key.\n */\nfunction serverSessionKeys(myKeyPair, theirPublicKey, hash = blake2b_1.BLAKE2b) {\n const sk = (0, x25519_1.sharedKey)(myKeyPair.secretKey, theirPublicKey);\n return serverSessionKeysFromSharedKey(sk, myKeyPair.publicKey, theirPublicKey, hash);\n}\nexports.serverSessionKeys = serverSessionKeys;\n/**\n * Generates client-side session encryption keys. Uses a key pair and a peer\'s public key to generate the shared key.\n */\nfunction clientSessionKeys(myKeyPair, theirPublicKey, hash = blake2b_1.BLAKE2b) {\n const sk = (0, x25519_1.sharedKey)(myKeyPair.secretKey, theirPublicKey);\n return clientSessionKeysFromSharedKey(sk, myKeyPair.publicKey, theirPublicKey, hash);\n}\nexports.clientSessionKeys = clientSessionKeys;\n//# sourceMappingURL=x25519-session.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@stablelib/x25519-session/lib/x25519-session.js?')},"./node_modules/@stablelib/x25519/lib/x25519.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.sharedKey = exports.generateKeyPair = exports.generateKeyPairFromSeed = exports.scalarMultBase = exports.scalarMult = exports.SHARED_KEY_LENGTH = exports.SECRET_KEY_LENGTH = exports.PUBLIC_KEY_LENGTH = void 0;\n/**\n * Package x25519 implements X25519 key agreement.\n */\nconst random_1 = __webpack_require__(/*! @stablelib/random */ "./node_modules/@stablelib/random/lib/random.js");\nconst wipe_1 = __webpack_require__(/*! @stablelib/wipe */ "./node_modules/@stablelib/wipe/lib/wipe.js");\nexports.PUBLIC_KEY_LENGTH = 32;\nexports.SECRET_KEY_LENGTH = 32;\nexports.SHARED_KEY_LENGTH = 32;\n// Returns new zero-filled 16-element GF (Float64Array).\n// If passed an array of numbers, prefills the returned\n// array with them.\n//\n// We use Float64Array, because we need 48-bit numbers\n// for this implementation.\nfunction gf(init) {\n const r = new Float64Array(16);\n if (init) {\n for (let i = 0; i < init.length; i++) {\n r[i] = init[i];\n }\n }\n return r;\n}\n// Base point.\nconst _9 = new Uint8Array(32);\n_9[0] = 9;\nconst _121665 = gf([0xdb41, 1]);\nfunction car25519(o) {\n let c = 1;\n for (let i = 0; i < 16; i++) {\n let v = o[i] + c + 65535;\n c = Math.floor(v / 65536);\n o[i] = v - c * 65536;\n }\n o[0] += c - 1 + 37 * (c - 1);\n}\nfunction sel25519(p, q, b) {\n const c = ~(b - 1);\n for (let i = 0; i < 16; i++) {\n const t = c & (p[i] ^ q[i]);\n p[i] ^= t;\n q[i] ^= t;\n }\n}\nfunction pack25519(o, n) {\n const m = gf();\n const t = gf();\n for (let i = 0; i < 16; i++) {\n t[i] = n[i];\n }\n car25519(t);\n car25519(t);\n car25519(t);\n for (let j = 0; j < 2; j++) {\n m[0] = t[0] - 0xffed;\n for (let i = 1; i < 15; i++) {\n m[i] = t[i] - 0xffff - ((m[i - 1] >> 16) & 1);\n m[i - 1] &= 0xffff;\n }\n m[15] = t[15] - 0x7fff - ((m[14] >> 16) & 1);\n const b = (m[15] >> 16) & 1;\n m[14] &= 0xffff;\n sel25519(t, m, 1 - b);\n }\n for (let i = 0; i < 16; i++) {\n o[2 * i] = t[i] & 0xff;\n o[2 * i + 1] = t[i] >> 8;\n }\n}\nfunction unpack25519(o, n) {\n for (let i = 0; i < 16; i++) {\n o[i] = n[2 * i] + (n[2 * i + 1] << 8);\n }\n o[15] &= 0x7fff;\n}\nfunction add(o, a, b) {\n for (let i = 0; i < 16; i++) {\n o[i] = a[i] + b[i];\n }\n}\nfunction sub(o, a, b) {\n for (let i = 0; i < 16; i++) {\n o[i] = a[i] - b[i];\n }\n}\nfunction mul(o, a, b) {\n let v, c, t0 = 0, t1 = 0, t2 = 0, t3 = 0, t4 = 0, t5 = 0, t6 = 0, t7 = 0, t8 = 0, t9 = 0, t10 = 0, t11 = 0, t12 = 0, t13 = 0, t14 = 0, t15 = 0, t16 = 0, t17 = 0, t18 = 0, t19 = 0, t20 = 0, t21 = 0, t22 = 0, t23 = 0, t24 = 0, t25 = 0, t26 = 0, t27 = 0, t28 = 0, t29 = 0, t30 = 0, b0 = b[0], b1 = b[1], b2 = b[2], b3 = b[3], b4 = b[4], b5 = b[5], b6 = b[6], b7 = b[7], b8 = b[8], b9 = b[9], b10 = b[10], b11 = b[11], b12 = b[12], b13 = b[13], b14 = b[14], b15 = b[15];\n v = a[0];\n t0 += v * b0;\n t1 += v * b1;\n t2 += v * b2;\n t3 += v * b3;\n t4 += v * b4;\n t5 += v * b5;\n t6 += v * b6;\n t7 += v * b7;\n t8 += v * b8;\n t9 += v * b9;\n t10 += v * b10;\n t11 += v * b11;\n t12 += v * b12;\n t13 += v * b13;\n t14 += v * b14;\n t15 += v * b15;\n v = a[1];\n t1 += v * b0;\n t2 += v * b1;\n t3 += v * b2;\n t4 += v * b3;\n t5 += v * b4;\n t6 += v * b5;\n t7 += v * b6;\n t8 += v * b7;\n t9 += v * b8;\n t10 += v * b9;\n t11 += v * b10;\n t12 += v * b11;\n t13 += v * b12;\n t14 += v * b13;\n t15 += v * b14;\n t16 += v * b15;\n v = a[2];\n t2 += v * b0;\n t3 += v * b1;\n t4 += v * b2;\n t5 += v * b3;\n t6 += v * b4;\n t7 += v * b5;\n t8 += v * b6;\n t9 += v * b7;\n t10 += v * b8;\n t11 += v * b9;\n t12 += v * b10;\n t13 += v * b11;\n t14 += v * b12;\n t15 += v * b13;\n t16 += v * b14;\n t17 += v * b15;\n v = a[3];\n t3 += v * b0;\n t4 += v * b1;\n t5 += v * b2;\n t6 += v * b3;\n t7 += v * b4;\n t8 += v * b5;\n t9 += v * b6;\n t10 += v * b7;\n t11 += v * b8;\n t12 += v * b9;\n t13 += v * b10;\n t14 += v * b11;\n t15 += v * b12;\n t16 += v * b13;\n t17 += v * b14;\n t18 += v * b15;\n v = a[4];\n t4 += v * b0;\n t5 += v * b1;\n t6 += v * b2;\n t7 += v * b3;\n t8 += v * b4;\n t9 += v * b5;\n t10 += v * b6;\n t11 += v * b7;\n t12 += v * b8;\n t13 += v * b9;\n t14 += v * b10;\n t15 += v * b11;\n t16 += v * b12;\n t17 += v * b13;\n t18 += v * b14;\n t19 += v * b15;\n v = a[5];\n t5 += v * b0;\n t6 += v * b1;\n t7 += v * b2;\n t8 += v * b3;\n t9 += v * b4;\n t10 += v * b5;\n t11 += v * b6;\n t12 += v * b7;\n t13 += v * b8;\n t14 += v * b9;\n t15 += v * b10;\n t16 += v * b11;\n t17 += v * b12;\n t18 += v * b13;\n t19 += v * b14;\n t20 += v * b15;\n v = a[6];\n t6 += v * b0;\n t7 += v * b1;\n t8 += v * b2;\n t9 += v * b3;\n t10 += v * b4;\n t11 += v * b5;\n t12 += v * b6;\n t13 += v * b7;\n t14 += v * b8;\n t15 += v * b9;\n t16 += v * b10;\n t17 += v * b11;\n t18 += v * b12;\n t19 += v * b13;\n t20 += v * b14;\n t21 += v * b15;\n v = a[7];\n t7 += v * b0;\n t8 += v * b1;\n t9 += v * b2;\n t10 += v * b3;\n t11 += v * b4;\n t12 += v * b5;\n t13 += v * b6;\n t14 += v * b7;\n t15 += v * b8;\n t16 += v * b9;\n t17 += v * b10;\n t18 += v * b11;\n t19 += v * b12;\n t20 += v * b13;\n t21 += v * b14;\n t22 += v * b15;\n v = a[8];\n t8 += v * b0;\n t9 += v * b1;\n t10 += v * b2;\n t11 += v * b3;\n t12 += v * b4;\n t13 += v * b5;\n t14 += v * b6;\n t15 += v * b7;\n t16 += v * b8;\n t17 += v * b9;\n t18 += v * b10;\n t19 += v * b11;\n t20 += v * b12;\n t21 += v * b13;\n t22 += v * b14;\n t23 += v * b15;\n v = a[9];\n t9 += v * b0;\n t10 += v * b1;\n t11 += v * b2;\n t12 += v * b3;\n t13 += v * b4;\n t14 += v * b5;\n t15 += v * b6;\n t16 += v * b7;\n t17 += v * b8;\n t18 += v * b9;\n t19 += v * b10;\n t20 += v * b11;\n t21 += v * b12;\n t22 += v * b13;\n t23 += v * b14;\n t24 += v * b15;\n v = a[10];\n t10 += v * b0;\n t11 += v * b1;\n t12 += v * b2;\n t13 += v * b3;\n t14 += v * b4;\n t15 += v * b5;\n t16 += v * b6;\n t17 += v * b7;\n t18 += v * b8;\n t19 += v * b9;\n t20 += v * b10;\n t21 += v * b11;\n t22 += v * b12;\n t23 += v * b13;\n t24 += v * b14;\n t25 += v * b15;\n v = a[11];\n t11 += v * b0;\n t12 += v * b1;\n t13 += v * b2;\n t14 += v * b3;\n t15 += v * b4;\n t16 += v * b5;\n t17 += v * b6;\n t18 += v * b7;\n t19 += v * b8;\n t20 += v * b9;\n t21 += v * b10;\n t22 += v * b11;\n t23 += v * b12;\n t24 += v * b13;\n t25 += v * b14;\n t26 += v * b15;\n v = a[12];\n t12 += v * b0;\n t13 += v * b1;\n t14 += v * b2;\n t15 += v * b3;\n t16 += v * b4;\n t17 += v * b5;\n t18 += v * b6;\n t19 += v * b7;\n t20 += v * b8;\n t21 += v * b9;\n t22 += v * b10;\n t23 += v * b11;\n t24 += v * b12;\n t25 += v * b13;\n t26 += v * b14;\n t27 += v * b15;\n v = a[13];\n t13 += v * b0;\n t14 += v * b1;\n t15 += v * b2;\n t16 += v * b3;\n t17 += v * b4;\n t18 += v * b5;\n t19 += v * b6;\n t20 += v * b7;\n t21 += v * b8;\n t22 += v * b9;\n t23 += v * b10;\n t24 += v * b11;\n t25 += v * b12;\n t26 += v * b13;\n t27 += v * b14;\n t28 += v * b15;\n v = a[14];\n t14 += v * b0;\n t15 += v * b1;\n t16 += v * b2;\n t17 += v * b3;\n t18 += v * b4;\n t19 += v * b5;\n t20 += v * b6;\n t21 += v * b7;\n t22 += v * b8;\n t23 += v * b9;\n t24 += v * b10;\n t25 += v * b11;\n t26 += v * b12;\n t27 += v * b13;\n t28 += v * b14;\n t29 += v * b15;\n v = a[15];\n t15 += v * b0;\n t16 += v * b1;\n t17 += v * b2;\n t18 += v * b3;\n t19 += v * b4;\n t20 += v * b5;\n t21 += v * b6;\n t22 += v * b7;\n t23 += v * b8;\n t24 += v * b9;\n t25 += v * b10;\n t26 += v * b11;\n t27 += v * b12;\n t28 += v * b13;\n t29 += v * b14;\n t30 += v * b15;\n t0 += 38 * t16;\n t1 += 38 * t17;\n t2 += 38 * t18;\n t3 += 38 * t19;\n t4 += 38 * t20;\n t5 += 38 * t21;\n t6 += 38 * t22;\n t7 += 38 * t23;\n t8 += 38 * t24;\n t9 += 38 * t25;\n t10 += 38 * t26;\n t11 += 38 * t27;\n t12 += 38 * t28;\n t13 += 38 * t29;\n t14 += 38 * t30;\n // t15 left as is\n // first car\n c = 1;\n v = t0 + c + 65535;\n c = Math.floor(v / 65536);\n t0 = v - c * 65536;\n v = t1 + c + 65535;\n c = Math.floor(v / 65536);\n t1 = v - c * 65536;\n v = t2 + c + 65535;\n c = Math.floor(v / 65536);\n t2 = v - c * 65536;\n v = t3 + c + 65535;\n c = Math.floor(v / 65536);\n t3 = v - c * 65536;\n v = t4 + c + 65535;\n c = Math.floor(v / 65536);\n t4 = v - c * 65536;\n v = t5 + c + 65535;\n c = Math.floor(v / 65536);\n t5 = v - c * 65536;\n v = t6 + c + 65535;\n c = Math.floor(v / 65536);\n t6 = v - c * 65536;\n v = t7 + c + 65535;\n c = Math.floor(v / 65536);\n t7 = v - c * 65536;\n v = t8 + c + 65535;\n c = Math.floor(v / 65536);\n t8 = v - c * 65536;\n v = t9 + c + 65535;\n c = Math.floor(v / 65536);\n t9 = v - c * 65536;\n v = t10 + c + 65535;\n c = Math.floor(v / 65536);\n t10 = v - c * 65536;\n v = t11 + c + 65535;\n c = Math.floor(v / 65536);\n t11 = v - c * 65536;\n v = t12 + c + 65535;\n c = Math.floor(v / 65536);\n t12 = v - c * 65536;\n v = t13 + c + 65535;\n c = Math.floor(v / 65536);\n t13 = v - c * 65536;\n v = t14 + c + 65535;\n c = Math.floor(v / 65536);\n t14 = v - c * 65536;\n v = t15 + c + 65535;\n c = Math.floor(v / 65536);\n t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\n // second car\n c = 1;\n v = t0 + c + 65535;\n c = Math.floor(v / 65536);\n t0 = v - c * 65536;\n v = t1 + c + 65535;\n c = Math.floor(v / 65536);\n t1 = v - c * 65536;\n v = t2 + c + 65535;\n c = Math.floor(v / 65536);\n t2 = v - c * 65536;\n v = t3 + c + 65535;\n c = Math.floor(v / 65536);\n t3 = v - c * 65536;\n v = t4 + c + 65535;\n c = Math.floor(v / 65536);\n t4 = v - c * 65536;\n v = t5 + c + 65535;\n c = Math.floor(v / 65536);\n t5 = v - c * 65536;\n v = t6 + c + 65535;\n c = Math.floor(v / 65536);\n t6 = v - c * 65536;\n v = t7 + c + 65535;\n c = Math.floor(v / 65536);\n t7 = v - c * 65536;\n v = t8 + c + 65535;\n c = Math.floor(v / 65536);\n t8 = v - c * 65536;\n v = t9 + c + 65535;\n c = Math.floor(v / 65536);\n t9 = v - c * 65536;\n v = t10 + c + 65535;\n c = Math.floor(v / 65536);\n t10 = v - c * 65536;\n v = t11 + c + 65535;\n c = Math.floor(v / 65536);\n t11 = v - c * 65536;\n v = t12 + c + 65535;\n c = Math.floor(v / 65536);\n t12 = v - c * 65536;\n v = t13 + c + 65535;\n c = Math.floor(v / 65536);\n t13 = v - c * 65536;\n v = t14 + c + 65535;\n c = Math.floor(v / 65536);\n t14 = v - c * 65536;\n v = t15 + c + 65535;\n c = Math.floor(v / 65536);\n t15 = v - c * 65536;\n t0 += c - 1 + 37 * (c - 1);\n o[0] = t0;\n o[1] = t1;\n o[2] = t2;\n o[3] = t3;\n o[4] = t4;\n o[5] = t5;\n o[6] = t6;\n o[7] = t7;\n o[8] = t8;\n o[9] = t9;\n o[10] = t10;\n o[11] = t11;\n o[12] = t12;\n o[13] = t13;\n o[14] = t14;\n o[15] = t15;\n}\nfunction square(o, a) {\n mul(o, a, a);\n}\nfunction inv25519(o, inp) {\n const c = gf();\n for (let i = 0; i < 16; i++) {\n c[i] = inp[i];\n }\n for (let i = 253; i >= 0; i--) {\n square(c, c);\n if (i !== 2 && i !== 4) {\n mul(c, c, inp);\n }\n }\n for (let i = 0; i < 16; i++) {\n o[i] = c[i];\n }\n}\nfunction scalarMult(n, p) {\n const z = new Uint8Array(32);\n const x = new Float64Array(80);\n const a = gf(), b = gf(), c = gf(), d = gf(), e = gf(), f = gf();\n for (let i = 0; i < 31; i++) {\n z[i] = n[i];\n }\n z[31] = (n[31] & 127) | 64;\n z[0] &= 248;\n unpack25519(x, p);\n for (let i = 0; i < 16; i++) {\n b[i] = x[i];\n }\n a[0] = d[0] = 1;\n for (let i = 254; i >= 0; --i) {\n const r = (z[i >>> 3] >>> (i & 7)) & 1;\n sel25519(a, b, r);\n sel25519(c, d, r);\n add(e, a, c);\n sub(a, a, c);\n add(c, b, d);\n sub(b, b, d);\n square(d, e);\n square(f, a);\n mul(a, c, a);\n mul(c, b, e);\n add(e, a, c);\n sub(a, a, c);\n square(b, a);\n sub(c, d, f);\n mul(a, c, _121665);\n add(a, a, d);\n mul(c, c, a);\n mul(a, d, f);\n mul(d, b, x);\n square(b, e);\n sel25519(a, b, r);\n sel25519(c, d, r);\n }\n for (let i = 0; i < 16; i++) {\n x[i + 16] = a[i];\n x[i + 32] = c[i];\n x[i + 48] = b[i];\n x[i + 64] = d[i];\n }\n const x32 = x.subarray(32);\n const x16 = x.subarray(16);\n inv25519(x32, x32);\n mul(x16, x16, x32);\n const q = new Uint8Array(32);\n pack25519(q, x16);\n return q;\n}\nexports.scalarMult = scalarMult;\nfunction scalarMultBase(n) {\n return scalarMult(n, _9);\n}\nexports.scalarMultBase = scalarMultBase;\nfunction generateKeyPairFromSeed(seed) {\n if (seed.length !== exports.SECRET_KEY_LENGTH) {\n throw new Error(`x25519: seed must be ${exports.SECRET_KEY_LENGTH} bytes`);\n }\n const secretKey = new Uint8Array(seed);\n const publicKey = scalarMultBase(secretKey);\n return {\n publicKey,\n secretKey\n };\n}\nexports.generateKeyPairFromSeed = generateKeyPairFromSeed;\nfunction generateKeyPair(prng) {\n const seed = (0, random_1.randomBytes)(32, prng);\n const result = generateKeyPairFromSeed(seed);\n (0, wipe_1.wipe)(seed);\n return result;\n}\nexports.generateKeyPair = generateKeyPair;\n/**\n * Returns a shared key between our secret key and a peer\'s public key.\n *\n * Throws an error if the given keys are of wrong length.\n *\n * If rejectZero is true throws if the calculated shared key is all-zero.\n * From RFC 7748:\n *\n * > Protocol designers using Diffie-Hellman over the curves defined in\n * > this document must not assume "contributory behavior". Specially,\n * > contributory behavior means that both parties\' private keys\n * > contribute to the resulting shared key. Since curve25519 and\n * > curve448 have cofactors of 8 and 4 (respectively), an input point of\n * > small order will eliminate any contribution from the other party\'s\n * > private key. This situation can be detected by checking for the all-\n * > zero output, which implementations MAY do, as specified in Section 6.\n * > However, a large number of existing implementations do not do this.\n *\n * IMPORTANT: the returned key is a raw result of scalar multiplication.\n * To use it as a key material, hash it with a cryptographic hash function.\n */\nfunction sharedKey(mySecretKey, theirPublicKey, rejectZero = false) {\n if (mySecretKey.length !== exports.PUBLIC_KEY_LENGTH) {\n throw new Error("X25519: incorrect secret key length");\n }\n if (theirPublicKey.length !== exports.PUBLIC_KEY_LENGTH) {\n throw new Error("X25519: incorrect public key length");\n }\n const result = scalarMult(mySecretKey, theirPublicKey);\n if (rejectZero) {\n let zeros = 0;\n for (let i = 0; i < result.length; i++) {\n zeros |= result[i];\n }\n if (zeros === 0) {\n throw new Error("X25519: invalid shared key");\n }\n }\n return result;\n}\nexports.sharedKey = sharedKey;\n//# sourceMappingURL=x25519.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@stablelib/x25519/lib/x25519.js?')},"./node_modules/@stablelib/xsalsa20/lib/xsalsa20.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\n// Copyright (C) 2016 Dmitry Chestnykh\n// MIT License. See LICENSE file for details.\nObject.defineProperty(exports, "__esModule", ({ value: true }));\n/**\n * Package xsalsa20 implements XSalsa20 stream cipher.\n */\nvar binary_1 = __webpack_require__(/*! @stablelib/binary */ "./node_modules/@stablelib/binary/lib/binary.js");\nvar salsa20_1 = __webpack_require__(/*! @stablelib/salsa20 */ "./node_modules/@stablelib/salsa20/lib/salsa20.js");\nvar wipe_1 = __webpack_require__(/*! @stablelib/wipe */ "./node_modules/@stablelib/wipe/lib/wipe.js");\n/**\n * Encrypt src with Salsa20/20 stream generated for the given 32-byte key\n * and 24-byte and write the result into dst and return it.\n *\n * dst and src may be the same, but otherwise must not overlap.\n *\n * Never use the same key and nonce to encrypt more than one message.\n */\nfunction streamXOR(key, nonce, src, dst, nonceInplaceCounterLength) {\n if (nonceInplaceCounterLength === void 0) { nonceInplaceCounterLength = 0; }\n if (nonceInplaceCounterLength === 0) {\n if (nonce.length !== 24) {\n throw new Error("XSalsa20 nonce must be 24 bytes");\n }\n }\n else {\n if (nonce.length !== 32) {\n throw new Error("XSalsa20 nonce with counter must be 32 bytes");\n }\n }\n // Use HSalsa one-way function to transform first 16 bytes of\n // 24-byte extended nonce and key into a new key for Salsa\n // stream -- "subkey".\n var subkey = hsalsa(key, nonce.subarray(0, 16), new Uint8Array(32));\n // Use last 8 bytes of 24-byte extended nonce as an actual nonce,\n // and a subkey derived in the previous step as key to encrypt.\n //\n // If nonceInplaceCounterLength > 0, we\'ll still pass the correct\n // nonce || counter, as we don\'t limit the end of nonce subarray.\n var result = salsa20_1.streamXOR(subkey, nonce.subarray(16), src, dst, nonceInplaceCounterLength);\n // Clean subkey.\n wipe_1.wipe(subkey);\n return result;\n}\nexports.streamXOR = streamXOR;\n/**\n * Generate Salsa20/20 stream for the given 32-byte key and\n * 24-byte nonce and write it into dst and return it.\n *\n * Never use the same key and nonce to generate more than one stream.\n *\n * stream is like streamXOR with all-zero src.\n */\nfunction stream(key, nonce, dst, nonceInplaceCounterLength) {\n if (nonceInplaceCounterLength === void 0) { nonceInplaceCounterLength = 0; }\n wipe_1.wipe(dst);\n return streamXOR(key, nonce, dst, dst, nonceInplaceCounterLength);\n}\nexports.stream = stream;\n// Number of Salsa20 rounds (Salsa20/20).\nvar ROUNDS = 20;\n/**\n * HSalsa20 is a one-way function used in XSalsa20 to extend nonce,\n * and in NaCl to hash X25519 shared keys. It takes 32-byte key and\n * 16-byte src and writes 32-byte result into dst and returns it.\n */\nfunction hsalsa(key, src, dst) {\n var x0 = 0x61707865; // "expa"\n var x1 = (key[3] << 24) | (key[2] << 16) | (key[1] << 8) | key[0];\n var x2 = (key[7] << 24) | (key[6] << 16) | (key[5] << 8) | key[4];\n var x3 = (key[11] << 24) | (key[10] << 16) | (key[9] << 8) | key[8];\n var x4 = (key[15] << 24) | (key[14] << 16) | (key[13] << 8) | key[12];\n var x5 = 0x3320646E; // "nd 3"\n var x6 = (src[3] << 24) | (src[2] << 16) | (src[1] << 8) | src[0];\n var x7 = (src[7] << 24) | (src[6] << 16) | (src[5] << 8) | src[4];\n var x8 = (src[11] << 24) | (src[10] << 16) | (src[9] << 8) | src[8];\n var x9 = (src[15] << 24) | (src[14] << 16) | (src[13] << 8) | src[12];\n var x10 = 0x79622D32; // "2-by"\n var x11 = (key[19] << 24) | (key[18] << 16) | (key[17] << 8) | key[16];\n var x12 = (key[23] << 24) | (key[22] << 16) | (key[21] << 8) | key[20];\n var x13 = (key[27] << 24) | (key[26] << 16) | (key[25] << 8) | key[24];\n var x14 = (key[31] << 24) | (key[30] << 16) | (key[29] << 8) | key[28];\n var x15 = 0x6B206574; // "te k"\n var u;\n for (var i = 0; i < ROUNDS; i += 2) {\n u = x0 + x12 | 0;\n x4 ^= u << 7 | u >>> (32 - 7);\n u = x4 + x0 | 0;\n x8 ^= u << 9 | u >>> (32 - 9);\n u = x8 + x4 | 0;\n x12 ^= u << 13 | u >>> (32 - 13);\n u = x12 + x8 | 0;\n x0 ^= u << 18 | u >>> (32 - 18);\n u = x5 + x1 | 0;\n x9 ^= u << 7 | u >>> (32 - 7);\n u = x9 + x5 | 0;\n x13 ^= u << 9 | u >>> (32 - 9);\n u = x13 + x9 | 0;\n x1 ^= u << 13 | u >>> (32 - 13);\n u = x1 + x13 | 0;\n x5 ^= u << 18 | u >>> (32 - 18);\n u = x10 + x6 | 0;\n x14 ^= u << 7 | u >>> (32 - 7);\n u = x14 + x10 | 0;\n x2 ^= u << 9 | u >>> (32 - 9);\n u = x2 + x14 | 0;\n x6 ^= u << 13 | u >>> (32 - 13);\n u = x6 + x2 | 0;\n x10 ^= u << 18 | u >>> (32 - 18);\n u = x15 + x11 | 0;\n x3 ^= u << 7 | u >>> (32 - 7);\n u = x3 + x15 | 0;\n x7 ^= u << 9 | u >>> (32 - 9);\n u = x7 + x3 | 0;\n x11 ^= u << 13 | u >>> (32 - 13);\n u = x11 + x7 | 0;\n x15 ^= u << 18 | u >>> (32 - 18);\n u = x0 + x3 | 0;\n x1 ^= u << 7 | u >>> (32 - 7);\n u = x1 + x0 | 0;\n x2 ^= u << 9 | u >>> (32 - 9);\n u = x2 + x1 | 0;\n x3 ^= u << 13 | u >>> (32 - 13);\n u = x3 + x2 | 0;\n x0 ^= u << 18 | u >>> (32 - 18);\n u = x5 + x4 | 0;\n x6 ^= u << 7 | u >>> (32 - 7);\n u = x6 + x5 | 0;\n x7 ^= u << 9 | u >>> (32 - 9);\n u = x7 + x6 | 0;\n x4 ^= u << 13 | u >>> (32 - 13);\n u = x4 + x7 | 0;\n x5 ^= u << 18 | u >>> (32 - 18);\n u = x10 + x9 | 0;\n x11 ^= u << 7 | u >>> (32 - 7);\n u = x11 + x10 | 0;\n x8 ^= u << 9 | u >>> (32 - 9);\n u = x8 + x11 | 0;\n x9 ^= u << 13 | u >>> (32 - 13);\n u = x9 + x8 | 0;\n x10 ^= u << 18 | u >>> (32 - 18);\n u = x15 + x14 | 0;\n x12 ^= u << 7 | u >>> (32 - 7);\n u = x12 + x15 | 0;\n x13 ^= u << 9 | u >>> (32 - 9);\n u = x13 + x12 | 0;\n x14 ^= u << 13 | u >>> (32 - 13);\n u = x14 + x13 | 0;\n x15 ^= u << 18 | u >>> (32 - 18);\n }\n binary_1.writeUint32LE(x0, dst, 0);\n binary_1.writeUint32LE(x5, dst, 4);\n binary_1.writeUint32LE(x10, dst, 8);\n binary_1.writeUint32LE(x15, dst, 12);\n binary_1.writeUint32LE(x6, dst, 16);\n binary_1.writeUint32LE(x7, dst, 20);\n binary_1.writeUint32LE(x8, dst, 24);\n binary_1.writeUint32LE(x9, dst, 28);\n return dst;\n}\nexports.hsalsa = hsalsa;\n//# sourceMappingURL=xsalsa20.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@stablelib/xsalsa20/lib/xsalsa20.js?')},"./node_modules/@walletconnect/core/dist/index.es.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CORE_CONTEXT: () => (/* binding */ Q),\n/* harmony export */ CORE_DEFAULT: () => (/* binding */ Qe),\n/* harmony export */ CORE_PROTOCOL: () => (/* binding */ le),\n/* harmony export */ CORE_STORAGE_OPTIONS: () => (/* binding */ Ze),\n/* harmony export */ CORE_STORAGE_PREFIX: () => (/* binding */ O),\n/* harmony export */ CORE_VERSION: () => (/* binding */ Xe),\n/* harmony export */ CRYPTO_CLIENT_SEED: () => (/* binding */ de),\n/* harmony export */ CRYPTO_CONTEXT: () => (/* binding */ et),\n/* harmony export */ CRYPTO_JWT_TTL: () => (/* binding */ tt),\n/* harmony export */ Core: () => (/* binding */ Nr),\n/* harmony export */ Crypto: () => (/* binding */ Tt),\n/* harmony export */ EXPIRER_CONTEXT: () => (/* binding */ Ct),\n/* harmony export */ EXPIRER_DEFAULT_TTL: () => (/* binding */ yr),\n/* harmony export */ EXPIRER_EVENTS: () => (/* binding */ v),\n/* harmony export */ EXPIRER_STORAGE_VERSION: () => (/* binding */ Rt),\n/* harmony export */ Expirer: () => (/* binding */ Bt),\n/* harmony export */ HISTORY_CONTEXT: () => (/* binding */ vt),\n/* harmony export */ HISTORY_EVENTS: () => (/* binding */ R),\n/* harmony export */ HISTORY_STORAGE_VERSION: () => (/* binding */ It),\n/* harmony export */ JsonRpcHistory: () => (/* binding */ Kt),\n/* harmony export */ KEYCHAIN_CONTEXT: () => (/* binding */ it),\n/* harmony export */ KEYCHAIN_STORAGE_VERSION: () => (/* binding */ st),\n/* harmony export */ KeyChain: () => (/* binding */ St),\n/* harmony export */ MESSAGES_CONTEXT: () => (/* binding */ rt),\n/* harmony export */ MESSAGES_STORAGE_VERSION: () => (/* binding */ nt),\n/* harmony export */ MessageTracker: () => (/* binding */ Pt),\n/* harmony export */ PAIRING_CONTEXT: () => (/* binding */ Et),\n/* harmony export */ PAIRING_DEFAULT_TTL: () => (/* binding */ Dr),\n/* harmony export */ PAIRING_EVENTS: () => (/* binding */ V),\n/* harmony export */ PAIRING_RPC_OPTS: () => (/* binding */ F),\n/* harmony export */ PAIRING_STORAGE_VERSION: () => (/* binding */ wt),\n/* harmony export */ PENDING_SUB_RESOLUTION_TIMEOUT: () => (/* binding */ ft),\n/* harmony export */ PUBLISHER_CONTEXT: () => (/* binding */ at),\n/* harmony export */ PUBLISHER_DEFAULT_TTL: () => (/* binding */ ot),\n/* harmony export */ Pairing: () => (/* binding */ kt),\n/* harmony export */ RELAYER_CONTEXT: () => (/* binding */ ut),\n/* harmony export */ RELAYER_DEFAULT_LOGGER: () => (/* binding */ ct),\n/* harmony export */ RELAYER_DEFAULT_PROTOCOL: () => (/* binding */ ht),\n/* harmony export */ RELAYER_DEFAULT_RELAY_URL: () => (/* binding */ ge),\n/* harmony export */ RELAYER_EVENTS: () => (/* binding */ D),\n/* harmony export */ RELAYER_FAILOVER_RELAY_URL: () => (/* binding */ pe),\n/* harmony export */ RELAYER_PROVIDER_EVENTS: () => (/* binding */ P),\n/* harmony export */ RELAYER_RECONNECT_TIMEOUT: () => (/* binding */ dt),\n/* harmony export */ RELAYER_SDK_VERSION: () => (/* binding */ gt),\n/* harmony export */ RELAYER_STORAGE_OPTIONS: () => (/* binding */ gr),\n/* harmony export */ RELAYER_SUBSCRIBER_SUFFIX: () => (/* binding */ lt),\n/* harmony export */ RELAYER_TRANSPORT_CUTOFF: () => (/* binding */ pt),\n/* harmony export */ Relayer: () => (/* binding */ Ut),\n/* harmony export */ STORE_STORAGE_VERSION: () => (/* binding */ Dt),\n/* harmony export */ SUBSCRIBER_CONTEXT: () => (/* binding */ mt),\n/* harmony export */ SUBSCRIBER_DEFAULT_TTL: () => (/* binding */ pr),\n/* harmony export */ SUBSCRIBER_EVENTS: () => (/* binding */ w),\n/* harmony export */ SUBSCRIBER_STORAGE_VERSION: () => (/* binding */ bt),\n/* harmony export */ Store: () => (/* binding */ Mt),\n/* harmony export */ Subscriber: () => (/* binding */ At),\n/* harmony export */ TRUSTED_VERIFY_URLS: () => (/* binding */ _t),\n/* harmony export */ VERIFY_CONTEXT: () => (/* binding */ Z),\n/* harmony export */ VERIFY_FALLBACK_SERVER: () => (/* binding */ ee),\n/* harmony export */ VERIFY_SERVER: () => (/* binding */ $),\n/* harmony export */ Verify: () => (/* binding */ Vt),\n/* harmony export */ WALLETCONNECT_CLIENT_ID: () => (/* binding */ yt),\n/* harmony export */ "default": () => (/* binding */ te)\n/* harmony export */ });\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! events */ "./node_modules/events/events.js");\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(events__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _walletconnect_keyvaluestorage__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @walletconnect/keyvaluestorage */ "./node_modules/@walletconnect/keyvaluestorage/dist/index.es.js");\n/* harmony import */ var _walletconnect_heartbeat__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @walletconnect/heartbeat */ "./node_modules/@walletconnect/heartbeat/dist/cjs/index.js");\n/* harmony import */ var _walletconnect_heartbeat__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_walletconnect_heartbeat__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _walletconnect_logger__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @walletconnect/logger */ "./node_modules/@walletconnect/logger/dist/cjs/index.js");\n/* harmony import */ var _walletconnect_logger__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_walletconnect_logger__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _walletconnect_types__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @walletconnect/types */ "./node_modules/@walletconnect/types/dist/index.es.js");\n/* harmony import */ var _walletconnect_safe_json__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @walletconnect/safe-json */ "./node_modules/@walletconnect/safe-json/dist/esm/index.js");\n/* harmony import */ var _walletconnect_relay_auth__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @walletconnect/relay-auth */ "./node_modules/@walletconnect/relay-auth/dist/esm/index.js");\n/* harmony import */ var _walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @walletconnect/utils */ "./node_modules/@walletconnect/utils/dist/index.es.js");\n/* harmony import */ var uint8arrays__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! uint8arrays */ "./node_modules/uint8arrays/esm/src/index.js");\n/* harmony import */ var _walletconnect_time__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @walletconnect/time */ "./node_modules/@walletconnect/time/dist/cjs/index.js");\n/* harmony import */ var _walletconnect_time__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_walletconnect_time__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _walletconnect_jsonrpc_provider__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @walletconnect/jsonrpc-provider */ "./node_modules/@walletconnect/jsonrpc-provider/dist/esm/index.js");\n/* harmony import */ var _walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @walletconnect/jsonrpc-utils */ "./node_modules/@walletconnect/jsonrpc-utils/dist/esm/index.js");\n/* harmony import */ var _walletconnect_jsonrpc_ws_connection__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @walletconnect/jsonrpc-ws-connection */ "./node_modules/@walletconnect/jsonrpc-ws-connection/dist/index.es.js");\n/* harmony import */ var lodash_isequal__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! lodash.isequal */ "./node_modules/lodash.isequal/index.js");\n/* harmony import */ var lodash_isequal__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(lodash_isequal__WEBPACK_IMPORTED_MODULE_11__);\nfunction Vi(r,e){if(r.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),i=0;i>>0,b=new Uint8Array(S);I!==_;){for(var T=u[I],A=0,C=S-1;(T!==0||A>>0,b[C]=T%a>>>0,T=T/a>>>0;if(T!==0)throw new Error("Non-zero carry");z=A,I++}for(var x=S-z;x!==S&&b[x]===0;)x++;for(var j=h.repeat(m);x>>0,S=new Uint8Array(_);u[m];){var b=t[u.charCodeAt(m)];if(b===255)return;for(var T=0,A=_-1;(b!==0||T>>0,S[A]=b%256>>>0,b=b/256>>>0;if(b!==0)throw new Error("Non-zero carry");I=T,m++}if(u[m]!==" "){for(var C=_-I;C!==_&&S[C]===0;)C++;for(var x=new Uint8Array(z+(_-C)),j=z;C!==_;)x[j++]=S[C++];return x}}}function M(u){var m=y(u);if(m)return m;throw new Error(`Non-${e} character`)}return{encode:p,decodeUnsafe:y,decode:M}}var qi=Vi,ji=qi;const Ne=r=>{if(r instanceof Uint8Array&&r.constructor.name==="Uint8Array")return r;if(r instanceof ArrayBuffer)return new Uint8Array(r);if(ArrayBuffer.isView(r))return new Uint8Array(r.buffer,r.byteOffset,r.byteLength);throw new Error("Unknown type, must be binary type")},Gi=r=>new TextEncoder().encode(r),Yi=r=>new TextDecoder().decode(r);class Hi{constructor(e,t,i){this.name=e,this.prefix=t,this.baseEncode=i}encode(e){if(e instanceof Uint8Array)return`${this.prefix}${this.baseEncode(e)}`;throw Error("Unknown type, must be binary type")}}class Ji{constructor(e,t,i){if(this.name=e,this.prefix=t,t.codePointAt(0)===void 0)throw new Error("Invalid prefix character");this.prefixCodePoint=t.codePointAt(0),this.baseDecode=i}decode(e){if(typeof e=="string"){if(e.codePointAt(0)!==this.prefixCodePoint)throw Error(`Unable to decode multibase string ${JSON.stringify(e)}, ${this.name} decoder only supports inputs prefixed with ${this.prefix}`);return this.baseDecode(e.slice(this.prefix.length))}else throw Error("Can only multibase decode strings")}or(e){return Ue(this,e)}}class Wi{constructor(e){this.decoders=e}or(e){return Ue(this,e)}decode(e){const t=e[0],i=this.decoders[t];if(i)return i.decode(e);throw RangeError(`Unable to decode multibase string ${JSON.stringify(e)}, only inputs prefixed with ${Object.keys(this.decoders)} are supported`)}}const Ue=(r,e)=>new Wi({...r.decoders||{[r.prefix]:r},...e.decoders||{[e.prefix]:e}});class Xi{constructor(e,t,i,s){this.name=e,this.prefix=t,this.baseEncode=i,this.baseDecode=s,this.encoder=new Hi(e,t,i),this.decoder=new Ji(e,t,s)}encode(e){return this.encoder.encode(e)}decode(e){return this.decoder.decode(e)}}const X=({name:r,prefix:e,encode:t,decode:i})=>new Xi(r,e,t,i),B=({prefix:r,name:e,alphabet:t})=>{const{encode:i,decode:s}=ji(t,e);return X({prefix:r,name:e,encode:i,decode:n=>Ne(s(n))})},Qi=(r,e,t,i)=>{const s={};for(let d=0;d=8&&(a-=8,o[l++]=255&h>>a)}if(a>=t||255&h<<8-a)throw new SyntaxError("Unexpected end of data");return o},Zi=(r,e,t)=>{const i=e[e.length-1]==="=",s=(1<t;)o-=t,n+=e[s&a>>o];if(o&&(n+=e[s&a<X({prefix:e,name:r,encode(s){return Zi(s,i,t)},decode(s){return Qi(s,i,t,r)}}),es=X({prefix:"\\0",name:"identity",encode:r=>Yi(r),decode:r=>Gi(r)});var ts=Object.freeze({__proto__:null,identity:es});const is=g({prefix:"0",name:"base2",alphabet:"01",bitsPerChar:1});var ss=Object.freeze({__proto__:null,base2:is});const rs=g({prefix:"7",name:"base8",alphabet:"01234567",bitsPerChar:3});var ns=Object.freeze({__proto__:null,base8:rs});const os=B({prefix:"9",name:"base10",alphabet:"0123456789"});var as=Object.freeze({__proto__:null,base10:os});const hs=g({prefix:"f",name:"base16",alphabet:"0123456789abcdef",bitsPerChar:4}),cs=g({prefix:"F",name:"base16upper",alphabet:"0123456789ABCDEF",bitsPerChar:4});var us=Object.freeze({__proto__:null,base16:hs,base16upper:cs});const ls=g({prefix:"b",name:"base32",alphabet:"abcdefghijklmnopqrstuvwxyz234567",bitsPerChar:5}),ds=g({prefix:"B",name:"base32upper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567",bitsPerChar:5}),gs=g({prefix:"c",name:"base32pad",alphabet:"abcdefghijklmnopqrstuvwxyz234567=",bitsPerChar:5}),ps=g({prefix:"C",name:"base32padupper",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567=",bitsPerChar:5}),Ds=g({prefix:"v",name:"base32hex",alphabet:"0123456789abcdefghijklmnopqrstuv",bitsPerChar:5}),ys=g({prefix:"V",name:"base32hexupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV",bitsPerChar:5}),ms=g({prefix:"t",name:"base32hexpad",alphabet:"0123456789abcdefghijklmnopqrstuv=",bitsPerChar:5}),bs=g({prefix:"T",name:"base32hexpadupper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUV=",bitsPerChar:5}),fs=g({prefix:"h",name:"base32z",alphabet:"ybndrfg8ejkmcpqxot1uwisza345h769",bitsPerChar:5});var Es=Object.freeze({__proto__:null,base32:ls,base32upper:ds,base32pad:gs,base32padupper:ps,base32hex:Ds,base32hexupper:ys,base32hexpad:ms,base32hexpadupper:bs,base32z:fs});const ws=B({prefix:"k",name:"base36",alphabet:"0123456789abcdefghijklmnopqrstuvwxyz"}),vs=B({prefix:"K",name:"base36upper",alphabet:"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"});var Is=Object.freeze({__proto__:null,base36:ws,base36upper:vs});const Cs=B({name:"base58btc",prefix:"z",alphabet:"123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"}),Rs=B({name:"base58flickr",prefix:"Z",alphabet:"123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ"});var _s=Object.freeze({__proto__:null,base58btc:Cs,base58flickr:Rs});const Ss=g({prefix:"m",name:"base64",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",bitsPerChar:6}),Ts=g({prefix:"M",name:"base64pad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",bitsPerChar:6}),Ps=g({prefix:"u",name:"base64url",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_",bitsPerChar:6}),xs=g({prefix:"U",name:"base64urlpad",alphabet:"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=",bitsPerChar:6});var Os=Object.freeze({__proto__:null,base64:Ss,base64pad:Ts,base64url:Ps,base64urlpad:xs});const Le=Array.from("\\u{1F680}\\u{1FA90}\\u2604\\u{1F6F0}\\u{1F30C}\\u{1F311}\\u{1F312}\\u{1F313}\\u{1F314}\\u{1F315}\\u{1F316}\\u{1F317}\\u{1F318}\\u{1F30D}\\u{1F30F}\\u{1F30E}\\u{1F409}\\u2600\\u{1F4BB}\\u{1F5A5}\\u{1F4BE}\\u{1F4BF}\\u{1F602}\\u2764\\u{1F60D}\\u{1F923}\\u{1F60A}\\u{1F64F}\\u{1F495}\\u{1F62D}\\u{1F618}\\u{1F44D}\\u{1F605}\\u{1F44F}\\u{1F601}\\u{1F525}\\u{1F970}\\u{1F494}\\u{1F496}\\u{1F499}\\u{1F622}\\u{1F914}\\u{1F606}\\u{1F644}\\u{1F4AA}\\u{1F609}\\u263A\\u{1F44C}\\u{1F917}\\u{1F49C}\\u{1F614}\\u{1F60E}\\u{1F607}\\u{1F339}\\u{1F926}\\u{1F389}\\u{1F49E}\\u270C\\u2728\\u{1F937}\\u{1F631}\\u{1F60C}\\u{1F338}\\u{1F64C}\\u{1F60B}\\u{1F497}\\u{1F49A}\\u{1F60F}\\u{1F49B}\\u{1F642}\\u{1F493}\\u{1F929}\\u{1F604}\\u{1F600}\\u{1F5A4}\\u{1F603}\\u{1F4AF}\\u{1F648}\\u{1F447}\\u{1F3B6}\\u{1F612}\\u{1F92D}\\u2763\\u{1F61C}\\u{1F48B}\\u{1F440}\\u{1F62A}\\u{1F611}\\u{1F4A5}\\u{1F64B}\\u{1F61E}\\u{1F629}\\u{1F621}\\u{1F92A}\\u{1F44A}\\u{1F973}\\u{1F625}\\u{1F924}\\u{1F449}\\u{1F483}\\u{1F633}\\u270B\\u{1F61A}\\u{1F61D}\\u{1F634}\\u{1F31F}\\u{1F62C}\\u{1F643}\\u{1F340}\\u{1F337}\\u{1F63B}\\u{1F613}\\u2B50\\u2705\\u{1F97A}\\u{1F308}\\u{1F608}\\u{1F918}\\u{1F4A6}\\u2714\\u{1F623}\\u{1F3C3}\\u{1F490}\\u2639\\u{1F38A}\\u{1F498}\\u{1F620}\\u261D\\u{1F615}\\u{1F33A}\\u{1F382}\\u{1F33B}\\u{1F610}\\u{1F595}\\u{1F49D}\\u{1F64A}\\u{1F639}\\u{1F5E3}\\u{1F4AB}\\u{1F480}\\u{1F451}\\u{1F3B5}\\u{1F91E}\\u{1F61B}\\u{1F534}\\u{1F624}\\u{1F33C}\\u{1F62B}\\u26BD\\u{1F919}\\u2615\\u{1F3C6}\\u{1F92B}\\u{1F448}\\u{1F62E}\\u{1F646}\\u{1F37B}\\u{1F343}\\u{1F436}\\u{1F481}\\u{1F632}\\u{1F33F}\\u{1F9E1}\\u{1F381}\\u26A1\\u{1F31E}\\u{1F388}\\u274C\\u270A\\u{1F44B}\\u{1F630}\\u{1F928}\\u{1F636}\\u{1F91D}\\u{1F6B6}\\u{1F4B0}\\u{1F353}\\u{1F4A2}\\u{1F91F}\\u{1F641}\\u{1F6A8}\\u{1F4A8}\\u{1F92C}\\u2708\\u{1F380}\\u{1F37A}\\u{1F913}\\u{1F619}\\u{1F49F}\\u{1F331}\\u{1F616}\\u{1F476}\\u{1F974}\\u25B6\\u27A1\\u2753\\u{1F48E}\\u{1F4B8}\\u2B07\\u{1F628}\\u{1F31A}\\u{1F98B}\\u{1F637}\\u{1F57A}\\u26A0\\u{1F645}\\u{1F61F}\\u{1F635}\\u{1F44E}\\u{1F932}\\u{1F920}\\u{1F927}\\u{1F4CC}\\u{1F535}\\u{1F485}\\u{1F9D0}\\u{1F43E}\\u{1F352}\\u{1F617}\\u{1F911}\\u{1F30A}\\u{1F92F}\\u{1F437}\\u260E\\u{1F4A7}\\u{1F62F}\\u{1F486}\\u{1F446}\\u{1F3A4}\\u{1F647}\\u{1F351}\\u2744\\u{1F334}\\u{1F4A3}\\u{1F438}\\u{1F48C}\\u{1F4CD}\\u{1F940}\\u{1F922}\\u{1F445}\\u{1F4A1}\\u{1F4A9}\\u{1F450}\\u{1F4F8}\\u{1F47B}\\u{1F910}\\u{1F92E}\\u{1F3BC}\\u{1F975}\\u{1F6A9}\\u{1F34E}\\u{1F34A}\\u{1F47C}\\u{1F48D}\\u{1F4E3}\\u{1F942}"),As=Le.reduce((r,e,t)=>(r[t]=e,r),[]),zs=Le.reduce((r,e,t)=>(r[e.codePointAt(0)]=t,r),[]);function Ns(r){return r.reduce((e,t)=>(e+=As[t],e),"")}function Us(r){const e=[];for(const t of r){const i=zs[t.codePointAt(0)];if(i===void 0)throw new Error(`Non-base256emoji character: ${t}`);e.push(i)}return new Uint8Array(e)}const Ls=X({prefix:"\\u{1F680}",name:"base256emoji",encode:Ns,decode:Us});var Fs=Object.freeze({__proto__:null,base256emoji:Ls}),$s=$e,Fe=128,Ms=127,ks=~Ms,Ks=Math.pow(2,31);function $e(r,e,t){e=e||[],t=t||0;for(var i=t;r>=Ks;)e[t++]=r&255|Fe,r/=128;for(;r&ks;)e[t++]=r&255|Fe,r>>>=7;return e[t]=r|0,$e.bytes=t-i+1,e}var Bs=he,Vs=128,Me=127;function he(r,i){var t=0,i=i||0,s=0,n=i,o,a=r.length;do{if(n>=a)throw he.bytes=0,new RangeError("Could not decode varint");o=r[n++],t+=s<28?(o&Me)<=Vs);return he.bytes=n-i,t}var qs=Math.pow(2,7),js=Math.pow(2,14),Gs=Math.pow(2,21),Ys=Math.pow(2,28),Hs=Math.pow(2,35),Js=Math.pow(2,42),Ws=Math.pow(2,49),Xs=Math.pow(2,56),Qs=Math.pow(2,63),Zs=function(r){return r(ke.encode(r,e,t),e),Be=r=>ke.encodingLength(r),ce=(r,e)=>{const t=e.byteLength,i=Be(r),s=i+Be(t),n=new Uint8Array(s+t);return Ke(r,n,0),Ke(t,n,i),n.set(e,s),new tr(r,t,e,n)};class tr{constructor(e,t,i,s){this.code=e,this.size=t,this.digest=i,this.bytes=s}}const Ve=({name:r,code:e,encode:t})=>new ir(r,e,t);class ir{constructor(e,t,i){this.name=e,this.code=t,this.encode=i}digest(e){if(e instanceof Uint8Array){const t=this.encode(e);return t instanceof Uint8Array?ce(this.code,t):t.then(i=>ce(this.code,i))}else throw Error("Unknown type, must be binary type")}}const qe=r=>async e=>new Uint8Array(await crypto.subtle.digest(r,e)),sr=Ve({name:"sha2-256",code:18,encode:qe("SHA-256")}),rr=Ve({name:"sha2-512",code:19,encode:qe("SHA-512")});var nr=Object.freeze({__proto__:null,sha256:sr,sha512:rr});const je=0,or="identity",Ge=Ne,ar=r=>ce(je,Ge(r)),hr={code:je,name:or,encode:Ge,digest:ar};var cr=Object.freeze({__proto__:null,identity:hr});new TextEncoder,new TextDecoder;const Ye={...ts,...ss,...ns,...as,...us,...Es,...Is,..._s,...Os,...Fs};({...nr,...cr});function He(r){return globalThis.Buffer!=null?new Uint8Array(r.buffer,r.byteOffset,r.byteLength):r}function ur(r=0){return globalThis.Buffer!=null&&globalThis.Buffer.allocUnsafe!=null?He(globalThis.Buffer.allocUnsafe(r)):new Uint8Array(r)}function Je(r,e,t,i){return{name:r,prefix:e,encoder:{name:r,prefix:e,encode:t},decoder:{decode:i}}}const We=Je("utf8","u",r=>"u"+new TextDecoder("utf8").decode(r),r=>new TextEncoder().encode(r.substring(1))),ue=Je("ascii","a",r=>{let e="a";for(let t=0;t{r=r.substring(1);const e=ur(r.length);for(let t=0;t{if(!this.initialized){const i=await this.getKeyChain();typeof i<"u"&&(this.keychain=i),this.initialized=!0}},this.has=i=>(this.isInitialized(),this.keychain.has(i)),this.set=async(i,s)=>{this.isInitialized(),this.keychain.set(i,s),await this.persist()},this.get=i=>{this.isInitialized();const s=this.keychain.get(i);if(typeof s>"u"){const{message:n}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.getInternalError)("NO_MATCHING_KEY",`${this.name}: ${i}`);throw new Error(n)}return s},this.del=async i=>{this.isInitialized(),this.keychain.delete(i),await this.persist()},this.core=e,this.logger=(0,_walletconnect_logger__WEBPACK_IMPORTED_MODULE_3__.generateChildLogger)(t,this.name)}get context(){return (0,_walletconnect_logger__WEBPACK_IMPORTED_MODULE_3__.getLoggerContext)(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}async setKeyChain(e){await this.core.storage.setItem(this.storageKey,(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.mapToObj)(e))}async getKeyChain(){const e=await this.core.storage.getItem(this.storageKey);return typeof e<"u"?(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.objToMap)(e):void 0}async persist(){await this.setKeyChain(this.keychain)}isInitialized(){if(!this.initialized){const{message:e}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.getInternalError)("NOT_INITIALIZED",this.name);throw new Error(e)}}}class Tt{constructor(e,t,i){this.core=e,this.logger=t,this.name=et,this.initialized=!1,this.init=async()=>{this.initialized||(await this.keychain.init(),this.initialized=!0)},this.hasKeys=s=>(this.isInitialized(),this.keychain.has(s)),this.getClientId=async()=>{this.isInitialized();const s=await this.getClientSeed(),n=_walletconnect_relay_auth__WEBPACK_IMPORTED_MODULE_5__.generateKeyPair(s);return _walletconnect_relay_auth__WEBPACK_IMPORTED_MODULE_5__.encodeIss(n.publicKey)},this.generateKeyPair=()=>{this.isInitialized();const s=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.generateKeyPair)();return this.setPrivateKey(s.publicKey,s.privateKey)},this.signJWT=async s=>{this.isInitialized();const n=await this.getClientSeed(),o=_walletconnect_relay_auth__WEBPACK_IMPORTED_MODULE_5__.generateKeyPair(n),a=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.generateRandomBytes32)(),h=tt;return await _walletconnect_relay_auth__WEBPACK_IMPORTED_MODULE_5__.signJWT(a,s,h,o)},this.generateSharedKey=(s,n,o)=>{this.isInitialized();const a=this.getPrivateKey(s),h=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.deriveSymKey)(a,n);return this.setSymKey(h,o)},this.setSymKey=async(s,n)=>{this.isInitialized();const o=n||(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.hashKey)(s);return await this.keychain.set(o,s),o},this.deleteKeyPair=async s=>{this.isInitialized(),await this.keychain.del(s)},this.deleteSymKey=async s=>{this.isInitialized(),await this.keychain.del(s)},this.encode=async(s,n,o)=>{this.isInitialized();const a=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.validateEncoding)(o),h=(0,_walletconnect_safe_json__WEBPACK_IMPORTED_MODULE_4__.safeJsonStringify)(n);if((0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.isTypeOneEnvelope)(a)){const y=a.senderPublicKey,M=a.receiverPublicKey;s=await this.generateSharedKey(y,M)}const l=this.getSymKey(s),{type:d,senderPublicKey:p}=a;return (0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.encrypt)({type:d,symKey:l,message:h,senderPublicKey:p})},this.decode=async(s,n,o)=>{this.isInitialized();const a=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.validateDecoding)(n,o);if((0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.isTypeOneEnvelope)(a)){const h=a.receiverPublicKey,l=a.senderPublicKey;s=await this.generateSharedKey(h,l)}try{const h=this.getSymKey(s),l=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.decrypt)({symKey:h,encoded:n});return (0,_walletconnect_safe_json__WEBPACK_IMPORTED_MODULE_4__.safeJsonParse)(l)}catch(h){this.logger.error(`Failed to decode message from topic: \'${s}\', clientId: \'${await this.getClientId()}\'`),this.logger.error(h)}},this.getPayloadType=s=>{const n=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.deserialize)(s);return (0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.decodeTypeByte)(n.type)},this.getPayloadSenderPublicKey=s=>{const n=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.deserialize)(s);return n.senderPublicKey?(0,uint8arrays__WEBPACK_IMPORTED_MODULE_6__.toString)(n.senderPublicKey,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.BASE16):void 0},this.core=e,this.logger=(0,_walletconnect_logger__WEBPACK_IMPORTED_MODULE_3__.generateChildLogger)(t,this.name),this.keychain=i||new St(this.core,this.logger)}get context(){return (0,_walletconnect_logger__WEBPACK_IMPORTED_MODULE_3__.getLoggerContext)(this.logger)}async setPrivateKey(e,t){return await this.keychain.set(e,t),e}getPrivateKey(e){return this.keychain.get(e)}async getClientSeed(){let e="";try{e=this.keychain.get(de)}catch{e=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.generateRandomBytes32)(),await this.keychain.set(de,e)}return dr(e,"base16")}getSymKey(e){return this.keychain.get(e)}isInitialized(){if(!this.initialized){const{message:e}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.getInternalError)("NOT_INITIALIZED",this.name);throw new Error(e)}}}class Pt extends _walletconnect_types__WEBPACK_IMPORTED_MODULE_13__.IMessageTracker{constructor(e,t){super(e,t),this.logger=e,this.core=t,this.messages=new Map,this.name=rt,this.version=nt,this.initialized=!1,this.storagePrefix=O,this.init=async()=>{if(!this.initialized){this.logger.trace("Initialized");try{const i=await this.getRelayerMessages();typeof i<"u"&&(this.messages=i),this.logger.debug(`Successfully Restored records for ${this.name}`),this.logger.trace({type:"method",method:"restore",size:this.messages.size})}catch(i){this.logger.debug(`Failed to Restore records for ${this.name}`),this.logger.error(i)}finally{this.initialized=!0}}},this.set=async(i,s)=>{this.isInitialized();const n=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.hashMessage)(s);let o=this.messages.get(i);return typeof o>"u"&&(o={}),typeof o[n]<"u"||(o[n]=s,this.messages.set(i,o),await this.persist()),n},this.get=i=>{this.isInitialized();let s=this.messages.get(i);return typeof s>"u"&&(s={}),s},this.has=(i,s)=>{this.isInitialized();const n=this.get(i),o=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.hashMessage)(s);return typeof n[o]<"u"},this.del=async i=>{this.isInitialized(),this.messages.delete(i),await this.persist()},this.logger=(0,_walletconnect_logger__WEBPACK_IMPORTED_MODULE_3__.generateChildLogger)(e,this.name),this.core=t}get context(){return (0,_walletconnect_logger__WEBPACK_IMPORTED_MODULE_3__.getLoggerContext)(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}async setRelayerMessages(e){await this.core.storage.setItem(this.storageKey,(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.mapToObj)(e))}async getRelayerMessages(){const e=await this.core.storage.getItem(this.storageKey);return typeof e<"u"?(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.objToMap)(e):void 0}async persist(){await this.setRelayerMessages(this.messages)}isInitialized(){if(!this.initialized){const{message:e}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.getInternalError)("NOT_INITIALIZED",this.name);throw new Error(e)}}}class mr extends _walletconnect_types__WEBPACK_IMPORTED_MODULE_13__.IPublisher{constructor(e,t){super(e,t),this.relayer=e,this.logger=t,this.events=new events__WEBPACK_IMPORTED_MODULE_0__.EventEmitter,this.name=at,this.queue=new Map,this.publishTimeout=(0,_walletconnect_time__WEBPACK_IMPORTED_MODULE_7__.toMiliseconds)(_walletconnect_time__WEBPACK_IMPORTED_MODULE_7__.TEN_SECONDS),this.needsTransportRestart=!1,this.publish=async(i,s,n)=>{var o;this.logger.debug("Publishing Payload"),this.logger.trace({type:"method",method:"publish",params:{topic:i,message:s,opts:n}});try{const a=n?.ttl||ot,h=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.getRelayProtocolName)(n),l=n?.prompt||!1,d=n?.tag||0,p=n?.id||(0,_walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_9__.getBigIntRpcId)().toString(),y={topic:i,message:s,opts:{ttl:a,relay:h,prompt:l,tag:d,id:p}},M=setTimeout(()=>this.queue.set(p,y),this.publishTimeout);try{await await (0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.createExpiringPromise)(this.rpcPublish(i,s,a,h,l,d,p),this.publishTimeout,"Failed to publish payload, please try again."),this.removeRequestFromQueue(p),this.relayer.events.emit(D.publish,y)}catch(u){if(this.logger.debug("Publishing Payload stalled"),this.needsTransportRestart=!0,(o=n?.internal)!=null&&o.throwOnFailedPublish)throw this.removeRequestFromQueue(p),u;return}finally{clearTimeout(M)}this.logger.debug("Successfully Published Payload"),this.logger.trace({type:"method",method:"publish",params:{topic:i,message:s,opts:n}})}catch(a){throw this.logger.debug("Failed to Publish Payload"),this.logger.error(a),a}},this.on=(i,s)=>{this.events.on(i,s)},this.once=(i,s)=>{this.events.once(i,s)},this.off=(i,s)=>{this.events.off(i,s)},this.removeListener=(i,s)=>{this.events.removeListener(i,s)},this.relayer=e,this.logger=(0,_walletconnect_logger__WEBPACK_IMPORTED_MODULE_3__.generateChildLogger)(t,this.name),this.registerEventListeners()}get context(){return (0,_walletconnect_logger__WEBPACK_IMPORTED_MODULE_3__.getLoggerContext)(this.logger)}rpcPublish(e,t,i,s,n,o,a){var h,l,d,p;const y={method:(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.getRelayProtocolApi)(s.protocol).publish,params:{topic:e,message:t,ttl:i,prompt:n,tag:o},id:a};return (0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.isUndefined)((h=y.params)==null?void 0:h.prompt)&&((l=y.params)==null||delete l.prompt),(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.isUndefined)((d=y.params)==null?void 0:d.tag)&&((p=y.params)==null||delete p.tag),this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"message",direction:"outgoing",request:y}),this.relayer.request(y)}removeRequestFromQueue(e){this.queue.delete(e)}checkQueue(){this.queue.forEach(async e=>{const{topic:t,message:i,opts:s}=e;await this.publish(t,i,s)})}registerEventListeners(){this.relayer.core.heartbeat.on(_walletconnect_heartbeat__WEBPACK_IMPORTED_MODULE_2__.HEARTBEAT_EVENTS.pulse,()=>{if(this.needsTransportRestart){this.needsTransportRestart=!1,this.relayer.events.emit(D.connection_stalled);return}this.checkQueue()}),this.relayer.on(D.message_ack,e=>{this.removeRequestFromQueue(e.id.toString())})}}class br{constructor(){this.map=new Map,this.set=(e,t)=>{const i=this.get(e);this.exists(e,t)||this.map.set(e,[...i,t])},this.get=e=>this.map.get(e)||[],this.exists=(e,t)=>this.get(e).includes(t),this.delete=(e,t)=>{if(typeof t>"u"){this.map.delete(e);return}if(!this.map.has(e))return;const i=this.get(e);if(!this.exists(e,t))return;const s=i.filter(n=>n!==t);if(!s.length){this.map.delete(e);return}this.map.set(e,s)},this.clear=()=>{this.map.clear()}}get topics(){return Array.from(this.map.keys())}}var fr=Object.defineProperty,Er=Object.defineProperties,wr=Object.getOwnPropertyDescriptors,xt=Object.getOwnPropertySymbols,vr=Object.prototype.hasOwnProperty,Ir=Object.prototype.propertyIsEnumerable,Ot=(r,e,t)=>e in r?fr(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,q=(r,e)=>{for(var t in e||(e={}))vr.call(e,t)&&Ot(r,t,e[t]);if(xt)for(var t of xt(e))Ir.call(e,t)&&Ot(r,t,e[t]);return r},De=(r,e)=>Er(r,wr(e));class At extends _walletconnect_types__WEBPACK_IMPORTED_MODULE_13__.ISubscriber{constructor(e,t){super(e,t),this.relayer=e,this.logger=t,this.subscriptions=new Map,this.topicMap=new br,this.events=new events__WEBPACK_IMPORTED_MODULE_0__.EventEmitter,this.name=mt,this.version=bt,this.pending=new Map,this.cached=[],this.initialized=!1,this.pendingSubscriptionWatchLabel="pending_sub_watch_label",this.pollingInterval=20,this.storagePrefix=O,this.subscribeTimeout=1e4,this.restartInProgress=!1,this.batchSubscribeTopicsLimit=500,this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),this.registerEventListeners(),this.clientId=await this.relayer.core.crypto.getClientId())},this.subscribe=async(i,s)=>{await this.restartToComplete(),this.isInitialized(),this.logger.debug("Subscribing Topic"),this.logger.trace({type:"method",method:"subscribe",params:{topic:i,opts:s}});try{const n=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.getRelayProtocolName)(s),o={topic:i,relay:n};this.pending.set(i,o);const a=await this.rpcSubscribe(i,n);return this.onSubscribe(a,o),this.logger.debug("Successfully Subscribed Topic"),this.logger.trace({type:"method",method:"subscribe",params:{topic:i,opts:s}}),a}catch(n){throw this.logger.debug("Failed to Subscribe Topic"),this.logger.error(n),n}},this.unsubscribe=async(i,s)=>{await this.restartToComplete(),this.isInitialized(),typeof s?.id<"u"?await this.unsubscribeById(i,s.id,s):await this.unsubscribeByTopic(i,s)},this.isSubscribed=async i=>this.topics.includes(i)?!0:await new Promise((s,n)=>{const o=new _walletconnect_time__WEBPACK_IMPORTED_MODULE_7__.Watch;o.start(this.pendingSubscriptionWatchLabel);const a=setInterval(()=>{!this.pending.has(i)&&this.topics.includes(i)&&(clearInterval(a),o.stop(this.pendingSubscriptionWatchLabel),s(!0)),o.elapsed(this.pendingSubscriptionWatchLabel)>=ft&&(clearInterval(a),o.stop(this.pendingSubscriptionWatchLabel),n(new Error("Subscription resolution timeout")))},this.pollingInterval)}).catch(()=>!1),this.on=(i,s)=>{this.events.on(i,s)},this.once=(i,s)=>{this.events.once(i,s)},this.off=(i,s)=>{this.events.off(i,s)},this.removeListener=(i,s)=>{this.events.removeListener(i,s)},this.restart=async()=>{this.restartInProgress=!0,await this.restore(),await this.reset(),this.restartInProgress=!1},this.relayer=e,this.logger=(0,_walletconnect_logger__WEBPACK_IMPORTED_MODULE_3__.generateChildLogger)(t,this.name),this.clientId=""}get context(){return (0,_walletconnect_logger__WEBPACK_IMPORTED_MODULE_3__.getLoggerContext)(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.relayer.core.customStoragePrefix+"//"+this.name}get length(){return this.subscriptions.size}get ids(){return Array.from(this.subscriptions.keys())}get values(){return Array.from(this.subscriptions.values())}get topics(){return this.topicMap.topics}hasSubscription(e,t){let i=!1;try{i=this.getSubscription(e).topic===t}catch{}return i}onEnable(){this.cached=[],this.initialized=!0}onDisable(){this.cached=this.values,this.subscriptions.clear(),this.topicMap.clear()}async unsubscribeByTopic(e,t){const i=this.topicMap.get(e);await Promise.all(i.map(async s=>await this.unsubscribeById(e,s,t)))}async unsubscribeById(e,t,i){this.logger.debug("Unsubscribing Topic"),this.logger.trace({type:"method",method:"unsubscribe",params:{topic:e,id:t,opts:i}});try{const s=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.getRelayProtocolName)(i);await this.rpcUnsubscribe(e,t,s);const n=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.getSdkError)("USER_DISCONNECTED",`${this.name}, ${e}`);await this.onUnsubscribe(e,t,n),this.logger.debug("Successfully Unsubscribed Topic"),this.logger.trace({type:"method",method:"unsubscribe",params:{topic:e,id:t,opts:i}})}catch(s){throw this.logger.debug("Failed to Unsubscribe Topic"),this.logger.error(s),s}}async rpcSubscribe(e,t){const i={method:(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.getRelayProtocolApi)(t.protocol).subscribe,params:{topic:e}};this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:i});try{await await (0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.createExpiringPromise)(this.relayer.request(i),this.subscribeTimeout)}catch{this.logger.debug("Outgoing Relay Subscribe Payload stalled"),this.relayer.events.emit(D.connection_stalled)}return (0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.hashMessage)(e+this.clientId)}async rpcBatchSubscribe(e){if(!e.length)return;const t=e[0].relay,i={method:(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.getRelayProtocolApi)(t.protocol).batchSubscribe,params:{topics:e.map(s=>s.topic)}};this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:i});try{return await await (0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.createExpiringPromise)(this.relayer.request(i),this.subscribeTimeout)}catch{this.logger.debug("Outgoing Relay Payload stalled"),this.relayer.events.emit(D.connection_stalled)}}rpcUnsubscribe(e,t,i){const s={method:(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.getRelayProtocolApi)(i.protocol).unsubscribe,params:{topic:e,id:t}};return this.logger.debug("Outgoing Relay Payload"),this.logger.trace({type:"payload",direction:"outgoing",request:s}),this.relayer.request(s)}onSubscribe(e,t){this.setSubscription(e,De(q({},t),{id:e})),this.pending.delete(t.topic)}onBatchSubscribe(e){e.length&&e.forEach(t=>{this.setSubscription(t.id,q({},t)),this.pending.delete(t.topic)})}async onUnsubscribe(e,t,i){this.events.removeAllListeners(t),this.hasSubscription(t,e)&&this.deleteSubscription(t,i),await this.relayer.messages.del(e)}async setRelayerSubscriptions(e){await this.relayer.core.storage.setItem(this.storageKey,e)}async getRelayerSubscriptions(){return await this.relayer.core.storage.getItem(this.storageKey)}setSubscription(e,t){this.subscriptions.has(e)||(this.logger.debug("Setting subscription"),this.logger.trace({type:"method",method:"setSubscription",id:e,subscription:t}),this.addSubscription(e,t))}addSubscription(e,t){this.subscriptions.set(e,q({},t)),this.topicMap.set(t.topic,e),this.events.emit(w.created,t)}getSubscription(e){this.logger.debug("Getting subscription"),this.logger.trace({type:"method",method:"getSubscription",id:e});const t=this.subscriptions.get(e);if(!t){const{message:i}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.getInternalError)("NO_MATCHING_KEY",`${this.name}: ${e}`);throw new Error(i)}return t}deleteSubscription(e,t){this.logger.debug("Deleting subscription"),this.logger.trace({type:"method",method:"deleteSubscription",id:e,reason:t});const i=this.getSubscription(e);this.subscriptions.delete(e),this.topicMap.delete(i.topic,e),this.events.emit(w.deleted,De(q({},i),{reason:t}))}async persist(){await this.setRelayerSubscriptions(this.values),this.events.emit(w.sync)}async reset(){if(this.cached.length){const e=Math.ceil(this.cached.length/this.batchSubscribeTopicsLimit);for(let t=0;t"u"||!e.length)return;if(this.subscriptions.size){const{message:t}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.getInternalError)("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(t),this.logger.error(`${this.name}: ${JSON.stringify(this.values)}`),new Error(t)}this.cached=e,this.logger.debug(`Successfully Restored subscriptions for ${this.name}`),this.logger.trace({type:"method",method:"restore",subscriptions:this.values})}catch(e){this.logger.debug(`Failed to Restore subscriptions for ${this.name}`),this.logger.error(e)}}async batchSubscribe(e){if(!e.length)return;const t=await this.rpcBatchSubscribe(e);(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.isValidArray)(t)&&this.onBatchSubscribe(t.map((i,s)=>De(q({},e[s]),{id:i})))}async onConnect(){this.restartInProgress||(await this.restart(),this.onEnable())}onDisconnect(){this.onDisable()}async checkPending(){if(!this.initialized||this.relayer.transportExplicitlyClosed)return;const e=[];this.pending.forEach(t=>{e.push(t)}),await this.batchSubscribe(e)}registerEventListeners(){this.relayer.core.heartbeat.on(_walletconnect_heartbeat__WEBPACK_IMPORTED_MODULE_2__.HEARTBEAT_EVENTS.pulse,async()=>{await this.checkPending()}),this.relayer.on(D.connect,async()=>{await this.onConnect()}),this.relayer.on(D.disconnect,()=>{this.onDisconnect()}),this.events.on(w.created,async e=>{const t=w.created;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,data:e}),await this.persist()}),this.events.on(w.deleted,async e=>{const t=w.deleted;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,data:e}),await this.persist()})}isInitialized(){if(!this.initialized){const{message:e}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.getInternalError)("NOT_INITIALIZED",this.name);throw new Error(e)}}async restartToComplete(){this.restartInProgress&&await new Promise(e=>{const t=setInterval(()=>{this.restartInProgress||(clearInterval(t),e())},this.pollingInterval)})}}var Cr=Object.defineProperty,zt=Object.getOwnPropertySymbols,Rr=Object.prototype.hasOwnProperty,_r=Object.prototype.propertyIsEnumerable,Nt=(r,e,t)=>e in r?Cr(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Sr=(r,e)=>{for(var t in e||(e={}))Rr.call(e,t)&&Nt(r,t,e[t]);if(zt)for(var t of zt(e))_r.call(e,t)&&Nt(r,t,e[t]);return r};class Ut extends _walletconnect_types__WEBPACK_IMPORTED_MODULE_13__.IRelayer{constructor(e){super(e),this.protocol="wc",this.version=2,this.events=new events__WEBPACK_IMPORTED_MODULE_0__.EventEmitter,this.name=ut,this.transportExplicitlyClosed=!1,this.initialized=!1,this.connectionAttemptInProgress=!1,this.connectionStatusPollingInterval=20,this.staleConnectionErrors=["socket hang up","socket stalled"],this.hasExperiencedNetworkDisruption=!1,this.request=async t=>{this.logger.debug("Publishing Request Payload");try{return await this.toEstablishConnection(),await this.provider.request(t)}catch(i){throw this.logger.debug("Failed to Publish Request"),this.logger.error(i),i}},this.onPayloadHandler=t=>{this.onProviderPayload(t)},this.onConnectHandler=()=>{this.events.emit(D.connect)},this.onDisconnectHandler=()=>{this.onProviderDisconnect()},this.onProviderErrorHandler=t=>{this.logger.error(t),this.events.emit(D.error,t),this.logger.info("Fatal socket error received, closing transport"),this.transportClose()},this.registerProviderListeners=()=>{this.provider.on(P.payload,this.onPayloadHandler),this.provider.on(P.connect,this.onConnectHandler),this.provider.on(P.disconnect,this.onDisconnectHandler),this.provider.on(P.error,this.onProviderErrorHandler)},this.core=e.core,this.logger=typeof e.logger<"u"&&typeof e.logger!="string"?(0,_walletconnect_logger__WEBPACK_IMPORTED_MODULE_3__.generateChildLogger)(e.logger,this.name):(0,_walletconnect_logger__WEBPACK_IMPORTED_MODULE_3__.pino)((0,_walletconnect_logger__WEBPACK_IMPORTED_MODULE_3__.getDefaultLoggerOptions)({level:e.logger||ct})),this.messages=new Pt(this.logger,e.core),this.subscriber=new At(this,this.logger),this.publisher=new mr(this,this.logger),this.relayUrl=e?.relayUrl||ge,this.projectId=e.projectId,this.bundleId=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.getBundleId)(),this.provider={}}async init(){this.logger.trace("Initialized"),this.registerEventListeners(),await this.createProvider(),await Promise.all([this.messages.init(),this.subscriber.init()]);try{await this.transportOpen()}catch{this.logger.warn(`Connection via ${this.relayUrl} failed, attempting to connect via failover domain ${pe}...`),await this.restartTransport(pe)}this.initialized=!0,setTimeout(async()=>{this.subscriber.topics.length===0&&(this.logger.info("No topics subscribed to after init, closing transport"),await this.transportClose(),this.transportExplicitlyClosed=!1)},pt)}get context(){return (0,_walletconnect_logger__WEBPACK_IMPORTED_MODULE_3__.getLoggerContext)(this.logger)}get connected(){return this.provider.connection.connected}get connecting(){return this.provider.connection.connecting}async publish(e,t,i){this.isInitialized(),await this.publisher.publish(e,t,i),await this.recordMessageEvent({topic:e,message:t,publishedAt:Date.now()})}async subscribe(e,t){var i;this.isInitialized();let s=((i=this.subscriber.topicMap.get(e))==null?void 0:i[0])||"";if(s)return s;let n;const o=a=>{a.topic===e&&(this.subscriber.off(w.created,o),n())};return await Promise.all([new Promise(a=>{n=a,this.subscriber.on(w.created,o)}),new Promise(async a=>{s=await this.subscriber.subscribe(e,t),a()})]),s}async unsubscribe(e,t){this.isInitialized(),await this.subscriber.unsubscribe(e,t)}on(e,t){this.events.on(e,t)}once(e,t){this.events.once(e,t)}off(e,t){this.events.off(e,t)}removeListener(e,t){this.events.removeListener(e,t)}async transportClose(){this.transportExplicitlyClosed=!0,this.hasExperiencedNetworkDisruption&&this.connected?await (0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.createExpiringPromise)(this.provider.disconnect(),1e3,"provider.disconnect()").catch(()=>this.onProviderDisconnect()):this.connected&&await this.provider.disconnect()}async transportOpen(e){if(this.transportExplicitlyClosed=!1,await this.confirmOnlineStateOrThrow(),!this.connectionAttemptInProgress){e&&e!==this.relayUrl&&(this.relayUrl=e,await this.transportClose(),await this.createProvider()),this.connectionAttemptInProgress=!0;try{await Promise.all([new Promise(t=>{if(!this.initialized)return t();this.subscriber.once(w.resubscribed,()=>{t()})}),new Promise(async(t,i)=>{try{await (0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.createExpiringPromise)(this.provider.connect(),1e4,`Socket stalled when trying to connect to ${this.relayUrl}`)}catch(s){i(s);return}t()})])}catch(t){this.logger.error(t);const i=t;if(!this.isConnectionStalled(i.message))throw t;this.provider.events.emit(P.disconnect)}finally{this.connectionAttemptInProgress=!1,this.hasExperiencedNetworkDisruption=!1}}}async restartTransport(e){await this.confirmOnlineStateOrThrow(),!this.connectionAttemptInProgress&&(this.relayUrl=e||this.relayUrl,await this.transportClose(),await this.createProvider(),await this.transportOpen())}async confirmOnlineStateOrThrow(){if(!await (0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.isOnline)())throw new Error("No internet connection detected. Please restart your network and try again.")}isConnectionStalled(e){return this.staleConnectionErrors.some(t=>e.includes(t))}async createProvider(){this.provider.connection&&this.unregisterProviderListeners();const e=await this.core.crypto.signJWT(this.relayUrl);this.provider=new _walletconnect_jsonrpc_provider__WEBPACK_IMPORTED_MODULE_8__.JsonRpcProvider(new _walletconnect_jsonrpc_ws_connection__WEBPACK_IMPORTED_MODULE_10__["default"]((0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.formatRelayRpcUrl)({sdkVersion:gt,protocol:this.protocol,version:this.version,relayUrl:this.relayUrl,projectId:this.projectId,auth:e,useOnCloseEvent:!0,bundleId:this.bundleId}))),this.registerProviderListeners()}async recordMessageEvent(e){const{topic:t,message:i}=e;await this.messages.set(t,i)}async shouldIgnoreMessageEvent(e){const{topic:t,message:i}=e;if(!i||i.length===0)return this.logger.debug(`Ignoring invalid/empty message: ${i}`),!0;if(!await this.subscriber.isSubscribed(t))return this.logger.debug(`Ignoring message for non-subscribed topic ${t}`),!0;const s=this.messages.has(t,i);return s&&this.logger.debug(`Ignoring duplicate message: ${i}`),s}async onProviderPayload(e){if(this.logger.debug("Incoming Relay Payload"),this.logger.trace({type:"payload",direction:"incoming",payload:e}),(0,_walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_9__.isJsonRpcRequest)(e)){if(!e.method.endsWith(lt))return;const t=e.params,{topic:i,message:s,publishedAt:n}=t.data,o={topic:i,message:s,publishedAt:n};this.logger.debug("Emitting Relayer Payload"),this.logger.trace(Sr({type:"event",event:t.id},o)),this.events.emit(t.id,o),await this.acknowledgePayload(e),await this.onMessageEvent(o)}else (0,_walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_9__.isJsonRpcResponse)(e)&&this.events.emit(D.message_ack,e)}async onMessageEvent(e){await this.shouldIgnoreMessageEvent(e)||(this.events.emit(D.message,e),await this.recordMessageEvent(e))}async acknowledgePayload(e){const t=(0,_walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_9__.formatJsonRpcResult)(e.id,!0);await this.provider.connection.send(t)}unregisterProviderListeners(){this.provider.off(P.payload,this.onPayloadHandler),this.provider.off(P.connect,this.onConnectHandler),this.provider.off(P.disconnect,this.onDisconnectHandler),this.provider.off(P.error,this.onProviderErrorHandler)}async registerEventListeners(){this.events.on(D.connection_stalled,()=>{this.restartTransport().catch(t=>this.logger.error(t))});let e=await (0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.isOnline)();(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.subscribeToNetworkChange)(async t=>{this.initialized&&e!==t&&(e=t,t?await this.restartTransport().catch(i=>this.logger.error(i)):(this.hasExperiencedNetworkDisruption=!0,await this.transportClose().catch(i=>this.logger.error(i))))})}onProviderDisconnect(){this.events.emit(D.disconnect),this.attemptToReconnect()}attemptToReconnect(){this.transportExplicitlyClosed||(this.logger.info("attemptToReconnect called. Connecting..."),setTimeout(async()=>{await this.restartTransport().catch(e=>this.logger.error(e))},(0,_walletconnect_time__WEBPACK_IMPORTED_MODULE_7__.toMiliseconds)(dt)))}isInitialized(){if(!this.initialized){const{message:e}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.getInternalError)("NOT_INITIALIZED",this.name);throw new Error(e)}}async toEstablishConnection(){if(await this.confirmOnlineStateOrThrow(),!this.connected){if(this.connectionAttemptInProgress)return await new Promise(e=>{const t=setInterval(()=>{this.connected&&(clearInterval(t),e())},this.connectionStatusPollingInterval)});await this.restartTransport()}}}var Tr=Object.defineProperty,Lt=Object.getOwnPropertySymbols,Pr=Object.prototype.hasOwnProperty,xr=Object.prototype.propertyIsEnumerable,Ft=(r,e,t)=>e in r?Tr(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,$t=(r,e)=>{for(var t in e||(e={}))Pr.call(e,t)&&Ft(r,t,e[t]);if(Lt)for(var t of Lt(e))xr.call(e,t)&&Ft(r,t,e[t]);return r};class Mt extends _walletconnect_types__WEBPACK_IMPORTED_MODULE_13__.IStore{constructor(e,t,i,s=O,n=void 0){super(e,t,i,s),this.core=e,this.logger=t,this.name=i,this.map=new Map,this.version=Dt,this.cached=[],this.initialized=!1,this.storagePrefix=O,this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),await this.restore(),this.cached.forEach(o=>{this.getKey&&o!==null&&!(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.isUndefined)(o)?this.map.set(this.getKey(o),o):(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.isProposalStruct)(o)?this.map.set(o.id,o):(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.isSessionStruct)(o)&&this.map.set(o.topic,o)}),this.cached=[],this.initialized=!0)},this.set=async(o,a)=>{this.isInitialized(),this.map.has(o)?await this.update(o,a):(this.logger.debug("Setting value"),this.logger.trace({type:"method",method:"set",key:o,value:a}),this.map.set(o,a),await this.persist())},this.get=o=>(this.isInitialized(),this.logger.debug("Getting value"),this.logger.trace({type:"method",method:"get",key:o}),this.getData(o)),this.getAll=o=>(this.isInitialized(),o?this.values.filter(a=>Object.keys(o).every(h=>lodash_isequal__WEBPACK_IMPORTED_MODULE_11___default()(a[h],o[h]))):this.values),this.update=async(o,a)=>{this.isInitialized(),this.logger.debug("Updating value"),this.logger.trace({type:"method",method:"update",key:o,update:a});const h=$t($t({},this.getData(o)),a);this.map.set(o,h),await this.persist()},this.delete=async(o,a)=>{this.isInitialized(),this.map.has(o)&&(this.logger.debug("Deleting value"),this.logger.trace({type:"method",method:"delete",key:o,reason:a}),this.map.delete(o),await this.persist())},this.logger=(0,_walletconnect_logger__WEBPACK_IMPORTED_MODULE_3__.generateChildLogger)(t,this.name),this.storagePrefix=s,this.getKey=n}get context(){return (0,_walletconnect_logger__WEBPACK_IMPORTED_MODULE_3__.getLoggerContext)(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}get length(){return this.map.size}get keys(){return Array.from(this.map.keys())}get values(){return Array.from(this.map.values())}async setDataStore(e){await this.core.storage.setItem(this.storageKey,e)}async getDataStore(){return await this.core.storage.getItem(this.storageKey)}getData(e){const t=this.map.get(e);if(!t){const{message:i}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.getInternalError)("NO_MATCHING_KEY",`${this.name}: ${e}`);throw this.logger.error(i),new Error(i)}return t}async persist(){await this.setDataStore(this.values)}async restore(){try{const e=await this.getDataStore();if(typeof e>"u"||!e.length)return;if(this.map.size){const{message:t}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.getInternalError)("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(t),new Error(t)}this.cached=e,this.logger.debug(`Successfully Restored value for ${this.name}`),this.logger.trace({type:"method",method:"restore",value:this.values})}catch(e){this.logger.debug(`Failed to Restore value for ${this.name}`),this.logger.error(e)}}isInitialized(){if(!this.initialized){const{message:e}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.getInternalError)("NOT_INITIALIZED",this.name);throw new Error(e)}}}class kt{constructor(e,t){this.core=e,this.logger=t,this.name=Et,this.version=wt,this.events=new (events__WEBPACK_IMPORTED_MODULE_0___default()),this.initialized=!1,this.storagePrefix=O,this.ignoredPayloadTypes=[_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.TYPE_1],this.registeredMethods=[],this.init=async()=>{this.initialized||(await this.pairings.init(),await this.cleanup(),this.registerRelayerEvents(),this.registerExpirerEvents(),this.initialized=!0,this.logger.trace("Initialized"))},this.register=({methods:i})=>{this.isInitialized(),this.registeredMethods=[...new Set([...this.registeredMethods,...i])]},this.create=async()=>{this.isInitialized();const i=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.generateRandomBytes32)(),s=await this.core.crypto.setSymKey(i),n=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.calcExpiry)(_walletconnect_time__WEBPACK_IMPORTED_MODULE_7__.FIVE_MINUTES),o={protocol:ht},a={topic:s,expiry:n,relay:o,active:!1},h=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.formatUri)({protocol:this.core.protocol,version:this.core.version,topic:s,symKey:i,relay:o});return await this.pairings.set(s,a),await this.core.relayer.subscribe(s),this.core.expirer.set(s,n),{topic:s,uri:h}},this.pair=async i=>{this.isInitialized(),this.isValidPair(i);const{topic:s,symKey:n,relay:o}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.parseUri)(i.uri);let a;if(this.pairings.keys.includes(s)&&(a=this.pairings.get(s),a.active))throw new Error(`Pairing already exists: ${s}. Please try again with a new connection URI.`);const h=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.calcExpiry)(_walletconnect_time__WEBPACK_IMPORTED_MODULE_7__.FIVE_MINUTES),l={topic:s,relay:o,expiry:h,active:!1};return await this.pairings.set(s,l),this.core.expirer.set(s,h),i.activatePairing&&await this.activate({topic:s}),this.events.emit(V.create,l),this.core.crypto.keychain.has(s)||(await this.core.crypto.setSymKey(n,s),await this.core.relayer.subscribe(s,{relay:o})),l},this.activate=async({topic:i})=>{this.isInitialized();const s=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.calcExpiry)(_walletconnect_time__WEBPACK_IMPORTED_MODULE_7__.THIRTY_DAYS);await this.pairings.update(i,{active:!0,expiry:s}),this.core.expirer.set(i,s)},this.ping=async i=>{this.isInitialized(),await this.isValidPing(i);const{topic:s}=i;if(this.pairings.keys.includes(s)){const n=await this.sendRequest(s,"wc_pairingPing",{}),{done:o,resolve:a,reject:h}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.createDelayedPromise)();this.events.once((0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.engineEvent)("pairing_ping",n),({error:l})=>{l?h(l):a()}),await o()}},this.updateExpiry=async({topic:i,expiry:s})=>{this.isInitialized(),await this.pairings.update(i,{expiry:s})},this.updateMetadata=async({topic:i,metadata:s})=>{this.isInitialized(),await this.pairings.update(i,{peerMetadata:s})},this.getPairings=()=>(this.isInitialized(),this.pairings.values),this.disconnect=async i=>{this.isInitialized(),await this.isValidDisconnect(i);const{topic:s}=i;this.pairings.keys.includes(s)&&(await this.sendRequest(s,"wc_pairingDelete",(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.getSdkError)("USER_DISCONNECTED")),await this.deletePairing(s))},this.sendRequest=async(i,s,n)=>{const o=(0,_walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_9__.formatJsonRpcRequest)(s,n),a=await this.core.crypto.encode(i,o),h=F[s].req;return this.core.history.set(i,o),this.core.relayer.publish(i,a,h),o.id},this.sendResult=async(i,s,n)=>{const o=(0,_walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_9__.formatJsonRpcResult)(i,n),a=await this.core.crypto.encode(s,o),h=await this.core.history.get(s,i),l=F[h.request.method].res;await this.core.relayer.publish(s,a,l),await this.core.history.resolve(o)},this.sendError=async(i,s,n)=>{const o=(0,_walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_9__.formatJsonRpcError)(i,n),a=await this.core.crypto.encode(s,o),h=await this.core.history.get(s,i),l=F[h.request.method]?F[h.request.method].res:F.unregistered_method.res;await this.core.relayer.publish(s,a,l),await this.core.history.resolve(o)},this.deletePairing=async(i,s)=>{await this.core.relayer.unsubscribe(i),await Promise.all([this.pairings.delete(i,(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.getSdkError)("USER_DISCONNECTED")),this.core.crypto.deleteSymKey(i),s?Promise.resolve():this.core.expirer.del(i)])},this.cleanup=async()=>{const i=this.pairings.getAll().filter(s=>(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.isExpired)(s.expiry));await Promise.all(i.map(s=>this.deletePairing(s.topic)))},this.onRelayEventRequest=i=>{const{topic:s,payload:n}=i;switch(n.method){case"wc_pairingPing":return this.onPairingPingRequest(s,n);case"wc_pairingDelete":return this.onPairingDeleteRequest(s,n);default:return this.onUnknownRpcMethodRequest(s,n)}},this.onRelayEventResponse=async i=>{const{topic:s,payload:n}=i,o=(await this.core.history.get(s,n.id)).request.method;switch(o){case"wc_pairingPing":return this.onPairingPingResponse(s,n);default:return this.onUnknownRpcMethodResponse(o)}},this.onPairingPingRequest=async(i,s)=>{const{id:n}=s;try{this.isValidPing({topic:i}),await this.sendResult(n,i,!0),this.events.emit(V.ping,{id:n,topic:i})}catch(o){await this.sendError(n,i,o),this.logger.error(o)}},this.onPairingPingResponse=(i,s)=>{const{id:n}=s;setTimeout(()=>{(0,_walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_9__.isJsonRpcResult)(s)?this.events.emit((0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.engineEvent)("pairing_ping",n),{}):(0,_walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_9__.isJsonRpcError)(s)&&this.events.emit((0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.engineEvent)("pairing_ping",n),{error:s.error})},500)},this.onPairingDeleteRequest=async(i,s)=>{const{id:n}=s;try{this.isValidDisconnect({topic:i}),await this.deletePairing(i),this.events.emit(V.delete,{id:n,topic:i})}catch(o){await this.sendError(n,i,o),this.logger.error(o)}},this.onUnknownRpcMethodRequest=async(i,s)=>{const{id:n,method:o}=s;try{if(this.registeredMethods.includes(o))return;const a=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.getSdkError)("WC_METHOD_UNSUPPORTED",o);await this.sendError(n,i,a),this.logger.error(a)}catch(a){await this.sendError(n,i,a),this.logger.error(a)}},this.onUnknownRpcMethodResponse=i=>{this.registeredMethods.includes(i)||this.logger.error((0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.getSdkError)("WC_METHOD_UNSUPPORTED",i))},this.isValidPair=i=>{var s;if(!(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.isValidParams)(i)){const{message:o}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.getInternalError)("MISSING_OR_INVALID",`pair() params: ${i}`);throw new Error(o)}if(!(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.isValidUrl)(i.uri)){const{message:o}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.getInternalError)("MISSING_OR_INVALID",`pair() uri: ${i.uri}`);throw new Error(o)}const n=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.parseUri)(i.uri);if(!((s=n?.relay)!=null&&s.protocol)){const{message:o}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.getInternalError)("MISSING_OR_INVALID","pair() uri#relay-protocol");throw new Error(o)}if(!(n!=null&&n.symKey)){const{message:o}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.getInternalError)("MISSING_OR_INVALID","pair() uri#symKey");throw new Error(o)}},this.isValidPing=async i=>{if(!(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.isValidParams)(i)){const{message:n}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.getInternalError)("MISSING_OR_INVALID",`ping() params: ${i}`);throw new Error(n)}const{topic:s}=i;await this.isValidPairingTopic(s)},this.isValidDisconnect=async i=>{if(!(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.isValidParams)(i)){const{message:n}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.getInternalError)("MISSING_OR_INVALID",`disconnect() params: ${i}`);throw new Error(n)}const{topic:s}=i;await this.isValidPairingTopic(s)},this.isValidPairingTopic=async i=>{if(!(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.isValidString)(i,!1)){const{message:s}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.getInternalError)("MISSING_OR_INVALID",`pairing topic should be a string: ${i}`);throw new Error(s)}if(!this.pairings.keys.includes(i)){const{message:s}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.getInternalError)("NO_MATCHING_KEY",`pairing topic doesn\'t exist: ${i}`);throw new Error(s)}if((0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.isExpired)(this.pairings.get(i).expiry)){await this.deletePairing(i);const{message:s}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.getInternalError)("EXPIRED",`pairing topic: ${i}`);throw new Error(s)}},this.core=e,this.logger=(0,_walletconnect_logger__WEBPACK_IMPORTED_MODULE_3__.generateChildLogger)(t,this.name),this.pairings=new Mt(this.core,this.logger,this.name,this.storagePrefix)}get context(){return (0,_walletconnect_logger__WEBPACK_IMPORTED_MODULE_3__.getLoggerContext)(this.logger)}isInitialized(){if(!this.initialized){const{message:e}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.getInternalError)("NOT_INITIALIZED",this.name);throw new Error(e)}}registerRelayerEvents(){this.core.relayer.on(D.message,async e=>{const{topic:t,message:i}=e;if(!this.pairings.keys.includes(t)||this.ignoredPayloadTypes.includes(this.core.crypto.getPayloadType(i)))return;const s=await this.core.crypto.decode(t,i);try{(0,_walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_9__.isJsonRpcRequest)(s)?(this.core.history.set(t,s),this.onRelayEventRequest({topic:t,payload:s})):(0,_walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_9__.isJsonRpcResponse)(s)&&(await this.core.history.resolve(s),await this.onRelayEventResponse({topic:t,payload:s}),this.core.history.delete(t,s.id))}catch(n){this.logger.error(n)}})}registerExpirerEvents(){this.core.expirer.on(v.expired,async e=>{const{topic:t}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.parseExpirerTarget)(e.target);t&&this.pairings.keys.includes(t)&&(await this.deletePairing(t,!0),this.events.emit(V.expire,{topic:t}))})}}class Kt extends _walletconnect_types__WEBPACK_IMPORTED_MODULE_13__.IJsonRpcHistory{constructor(e,t){super(e,t),this.core=e,this.logger=t,this.records=new Map,this.events=new events__WEBPACK_IMPORTED_MODULE_0__.EventEmitter,this.name=vt,this.version=It,this.cached=[],this.initialized=!1,this.storagePrefix=O,this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),await this.restore(),this.cached.forEach(i=>this.records.set(i.id,i)),this.cached=[],this.registerEventListeners(),this.initialized=!0)},this.set=(i,s,n)=>{if(this.isInitialized(),this.logger.debug("Setting JSON-RPC request history record"),this.logger.trace({type:"method",method:"set",topic:i,request:s,chainId:n}),this.records.has(s.id))return;const o={id:s.id,topic:i,request:{method:s.method,params:s.params||null},chainId:n,expiry:(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.calcExpiry)(_walletconnect_time__WEBPACK_IMPORTED_MODULE_7__.THIRTY_DAYS)};this.records.set(o.id,o),this.events.emit(R.created,o)},this.resolve=async i=>{if(this.isInitialized(),this.logger.debug("Updating JSON-RPC response history record"),this.logger.trace({type:"method",method:"update",response:i}),!this.records.has(i.id))return;const s=await this.getRecord(i.id);typeof s.response>"u"&&(s.response=(0,_walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_9__.isJsonRpcError)(i)?{error:i.error}:{result:i.result},this.records.set(s.id,s),this.events.emit(R.updated,s))},this.get=async(i,s)=>(this.isInitialized(),this.logger.debug("Getting record"),this.logger.trace({type:"method",method:"get",topic:i,id:s}),await this.getRecord(s)),this.delete=(i,s)=>{this.isInitialized(),this.logger.debug("Deleting record"),this.logger.trace({type:"method",method:"delete",id:s}),this.values.forEach(n=>{if(n.topic===i){if(typeof s<"u"&&n.id!==s)return;this.records.delete(n.id),this.events.emit(R.deleted,n)}})},this.exists=async(i,s)=>(this.isInitialized(),this.records.has(s)?(await this.getRecord(s)).topic===i:!1),this.on=(i,s)=>{this.events.on(i,s)},this.once=(i,s)=>{this.events.once(i,s)},this.off=(i,s)=>{this.events.off(i,s)},this.removeListener=(i,s)=>{this.events.removeListener(i,s)},this.logger=(0,_walletconnect_logger__WEBPACK_IMPORTED_MODULE_3__.generateChildLogger)(t,this.name)}get context(){return (0,_walletconnect_logger__WEBPACK_IMPORTED_MODULE_3__.getLoggerContext)(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}get size(){return this.records.size}get keys(){return Array.from(this.records.keys())}get values(){return Array.from(this.records.values())}get pending(){const e=[];return this.values.forEach(t=>{if(typeof t.response<"u")return;const i={topic:t.topic,request:(0,_walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_9__.formatJsonRpcRequest)(t.request.method,t.request.params,t.id),chainId:t.chainId};return e.push(i)}),e}async setJsonRpcRecords(e){await this.core.storage.setItem(this.storageKey,e)}async getJsonRpcRecords(){return await this.core.storage.getItem(this.storageKey)}getRecord(e){this.isInitialized();const t=this.records.get(e);if(!t){const{message:i}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.getInternalError)("NO_MATCHING_KEY",`${this.name}: ${e}`);throw new Error(i)}return t}async persist(){await this.setJsonRpcRecords(this.values),this.events.emit(R.sync)}async restore(){try{const e=await this.getJsonRpcRecords();if(typeof e>"u"||!e.length)return;if(this.records.size){const{message:t}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.getInternalError)("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(t),new Error(t)}this.cached=e,this.logger.debug(`Successfully Restored records for ${this.name}`),this.logger.trace({type:"method",method:"restore",records:this.values})}catch(e){this.logger.debug(`Failed to Restore records for ${this.name}`),this.logger.error(e)}}registerEventListeners(){this.events.on(R.created,e=>{const t=R.created;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,record:e}),this.persist()}),this.events.on(R.updated,e=>{const t=R.updated;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,record:e}),this.persist()}),this.events.on(R.deleted,e=>{const t=R.deleted;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,record:e}),this.persist()}),this.core.heartbeat.on(_walletconnect_heartbeat__WEBPACK_IMPORTED_MODULE_2__.HEARTBEAT_EVENTS.pulse,()=>{this.cleanup()})}cleanup(){try{this.records.forEach(e=>{(0,_walletconnect_time__WEBPACK_IMPORTED_MODULE_7__.toMiliseconds)(e.expiry||0)-Date.now()<=0&&(this.logger.info(`Deleting expired history log: ${e.id}`),this.delete(e.topic,e.id))})}catch(e){this.logger.warn(e)}}isInitialized(){if(!this.initialized){const{message:e}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.getInternalError)("NOT_INITIALIZED",this.name);throw new Error(e)}}}class Bt extends _walletconnect_types__WEBPACK_IMPORTED_MODULE_13__.IExpirer{constructor(e,t){super(e,t),this.core=e,this.logger=t,this.expirations=new Map,this.events=new events__WEBPACK_IMPORTED_MODULE_0__.EventEmitter,this.name=Ct,this.version=Rt,this.cached=[],this.initialized=!1,this.storagePrefix=O,this.init=async()=>{this.initialized||(this.logger.trace("Initialized"),await this.restore(),this.cached.forEach(i=>this.expirations.set(i.target,i)),this.cached=[],this.registerEventListeners(),this.initialized=!0)},this.has=i=>{try{const s=this.formatTarget(i);return typeof this.getExpiration(s)<"u"}catch{return!1}},this.set=(i,s)=>{this.isInitialized();const n=this.formatTarget(i),o={target:n,expiry:s};this.expirations.set(n,o),this.checkExpiry(n,o),this.events.emit(v.created,{target:n,expiration:o})},this.get=i=>{this.isInitialized();const s=this.formatTarget(i);return this.getExpiration(s)},this.del=i=>{if(this.isInitialized(),this.has(i)){const s=this.formatTarget(i),n=this.getExpiration(s);this.expirations.delete(s),this.events.emit(v.deleted,{target:s,expiration:n})}},this.on=(i,s)=>{this.events.on(i,s)},this.once=(i,s)=>{this.events.once(i,s)},this.off=(i,s)=>{this.events.off(i,s)},this.removeListener=(i,s)=>{this.events.removeListener(i,s)},this.logger=(0,_walletconnect_logger__WEBPACK_IMPORTED_MODULE_3__.generateChildLogger)(t,this.name)}get context(){return (0,_walletconnect_logger__WEBPACK_IMPORTED_MODULE_3__.getLoggerContext)(this.logger)}get storageKey(){return this.storagePrefix+this.version+this.core.customStoragePrefix+"//"+this.name}get length(){return this.expirations.size}get keys(){return Array.from(this.expirations.keys())}get values(){return Array.from(this.expirations.values())}formatTarget(e){if(typeof e=="string")return (0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.formatTopicTarget)(e);if(typeof e=="number")return (0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.formatIdTarget)(e);const{message:t}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.getInternalError)("UNKNOWN_TYPE",`Target type: ${typeof e}`);throw new Error(t)}async setExpirations(e){await this.core.storage.setItem(this.storageKey,e)}async getExpirations(){return await this.core.storage.getItem(this.storageKey)}async persist(){await this.setExpirations(this.values),this.events.emit(v.sync)}async restore(){try{const e=await this.getExpirations();if(typeof e>"u"||!e.length)return;if(this.expirations.size){const{message:t}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.getInternalError)("RESTORE_WILL_OVERRIDE",this.name);throw this.logger.error(t),new Error(t)}this.cached=e,this.logger.debug(`Successfully Restored expirations for ${this.name}`),this.logger.trace({type:"method",method:"restore",expirations:this.values})}catch(e){this.logger.debug(`Failed to Restore expirations for ${this.name}`),this.logger.error(e)}}getExpiration(e){const t=this.expirations.get(e);if(!t){const{message:i}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.getInternalError)("NO_MATCHING_KEY",`${this.name}: ${e}`);throw this.logger.error(i),new Error(i)}return t}checkExpiry(e,t){const{expiry:i}=t;(0,_walletconnect_time__WEBPACK_IMPORTED_MODULE_7__.toMiliseconds)(i)-Date.now()<=0&&this.expire(e,t)}expire(e,t){this.expirations.delete(e),this.events.emit(v.expired,{target:e,expiration:t})}checkExpirations(){this.core.relayer.connected&&this.expirations.forEach((e,t)=>this.checkExpiry(t,e))}registerEventListeners(){this.core.heartbeat.on(_walletconnect_heartbeat__WEBPACK_IMPORTED_MODULE_2__.HEARTBEAT_EVENTS.pulse,()=>this.checkExpirations()),this.events.on(v.created,e=>{const t=v.created;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,data:e}),this.persist()}),this.events.on(v.expired,e=>{const t=v.expired;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,data:e}),this.persist()}),this.events.on(v.deleted,e=>{const t=v.deleted;this.logger.info(`Emitting ${t}`),this.logger.debug({type:"event",event:t,data:e}),this.persist()})}isInitialized(){if(!this.initialized){const{message:e}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.getInternalError)("NOT_INITIALIZED",this.name);throw new Error(e)}}}class Vt extends _walletconnect_types__WEBPACK_IMPORTED_MODULE_13__.IVerify{constructor(e,t){super(e,t),this.projectId=e,this.logger=t,this.name=Z,this.initialized=!1,this.queue=[],this.verifyDisabled=!1,this.init=async i=>{if(this.verifyDisabled||(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.isReactNative)()||!(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.isBrowser)())return;const s=this.getVerifyUrl(i?.verifyUrl);this.verifyUrl!==s&&this.removeIframe(),this.verifyUrl=s;try{await this.createIframe()}catch(n){this.logger.info(`Verify iframe failed to load: ${this.verifyUrl}`),this.logger.info(n)}if(!this.initialized){this.removeIframe(),this.verifyUrl=ee;try{await this.createIframe()}catch(n){this.logger.info(`Verify iframe failed to load: ${this.verifyUrl}`),this.logger.info(n),this.verifyDisabled=!0}}},this.register=async i=>{this.initialized?this.sendPost(i.attestationId):(this.addToQueue(i.attestationId),await this.init())},this.resolve=async i=>{if(this.isDevEnv)return"";const s=this.getVerifyUrl(i?.verifyUrl);let n;try{n=await this.fetchAttestation(i.attestationId,s)}catch(o){this.logger.info(`failed to resolve attestation: ${i.attestationId} from url: ${s}`),this.logger.info(o),n=await this.fetchAttestation(i.attestationId,ee)}return n},this.fetchAttestation=async(i,s)=>{this.logger.info(`resolving attestation: ${i} from url: ${s}`);const n=this.startAbortTimer(_walletconnect_time__WEBPACK_IMPORTED_MODULE_7__.ONE_SECOND*2),o=await fetch(`${s}/attestation/${i}`,{signal:this.abortController.signal});return clearTimeout(n),o.status===200?await o.json():void 0},this.addToQueue=i=>{this.queue.push(i)},this.processQueue=()=>{this.queue.length!==0&&(this.queue.forEach(i=>this.sendPost(i)),this.queue=[])},this.sendPost=i=>{var s;try{if(!this.iframe)return;(s=this.iframe.contentWindow)==null||s.postMessage(i,"*"),this.logger.info(`postMessage sent: ${i} ${this.verifyUrl}`)}catch{}},this.createIframe=async()=>{let i;const s=n=>{n.data==="verify_ready"&&(this.initialized=!0,this.processQueue(),window.removeEventListener("message",s),i())};await Promise.race([new Promise(n=>{if(document.getElementById(Z))return n();window.addEventListener("message",s);const o=document.createElement("iframe");o.id=Z,o.src=`${this.verifyUrl}/${this.projectId}`,o.style.display="none",document.body.append(o),this.iframe=o,i=n}),new Promise((n,o)=>setTimeout(()=>{window.removeEventListener("message",s),o("verify iframe load timeout")},(0,_walletconnect_time__WEBPACK_IMPORTED_MODULE_7__.toMiliseconds)(_walletconnect_time__WEBPACK_IMPORTED_MODULE_7__.FIVE_SECONDS)))])},this.removeIframe=()=>{this.iframe&&(this.iframe.remove(),this.iframe=void 0,this.initialized=!1)},this.getVerifyUrl=i=>{let s=i||$;return _t.includes(s)||(this.logger.info(`verify url: ${s}, not included in trusted list, assigning default: ${$}`),s=$),s},this.logger=(0,_walletconnect_logger__WEBPACK_IMPORTED_MODULE_3__.generateChildLogger)(t,this.name),this.verifyUrl=$,this.abortController=new AbortController,this.isDevEnv=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_12__.isNode)()&&process.env.IS_VITEST}get context(){return (0,_walletconnect_logger__WEBPACK_IMPORTED_MODULE_3__.getLoggerContext)(this.logger)}startAbortTimer(e){return this.abortController=new AbortController,setTimeout(()=>this.abortController.abort(),(0,_walletconnect_time__WEBPACK_IMPORTED_MODULE_7__.toMiliseconds)(e))}}var Or=Object.defineProperty,qt=Object.getOwnPropertySymbols,Ar=Object.prototype.hasOwnProperty,zr=Object.prototype.propertyIsEnumerable,jt=(r,e,t)=>e in r?Or(r,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):r[e]=t,Gt=(r,e)=>{for(var t in e||(e={}))Ar.call(e,t)&&jt(r,t,e[t]);if(qt)for(var t of qt(e))zr.call(e,t)&&jt(r,t,e[t]);return r};class te extends _walletconnect_types__WEBPACK_IMPORTED_MODULE_13__.ICore{constructor(e){super(e),this.protocol=le,this.version=Xe,this.name=Q,this.events=new events__WEBPACK_IMPORTED_MODULE_0__.EventEmitter,this.initialized=!1,this.on=(i,s)=>this.events.on(i,s),this.once=(i,s)=>this.events.once(i,s),this.off=(i,s)=>this.events.off(i,s),this.removeListener=(i,s)=>this.events.removeListener(i,s),this.projectId=e?.projectId,this.relayUrl=e?.relayUrl||ge,this.customStoragePrefix=e!=null&&e.customStoragePrefix?`:${e.customStoragePrefix}`:"";const t=typeof e?.logger<"u"&&typeof e?.logger!="string"?e.logger:(0,_walletconnect_logger__WEBPACK_IMPORTED_MODULE_3__.pino)((0,_walletconnect_logger__WEBPACK_IMPORTED_MODULE_3__.getDefaultLoggerOptions)({level:e?.logger||Qe.logger}));this.logger=(0,_walletconnect_logger__WEBPACK_IMPORTED_MODULE_3__.generateChildLogger)(t,this.name),this.heartbeat=new _walletconnect_heartbeat__WEBPACK_IMPORTED_MODULE_2__.HeartBeat,this.crypto=new Tt(this,this.logger,e?.keychain),this.history=new Kt(this,this.logger),this.expirer=new Bt(this,this.logger),this.storage=e!=null&&e.storage?e.storage:new _walletconnect_keyvaluestorage__WEBPACK_IMPORTED_MODULE_1__["default"](Gt(Gt({},Ze),e?.storageOptions)),this.relayer=new Ut({core:this,logger:this.logger,relayUrl:this.relayUrl,projectId:this.projectId}),this.pairing=new kt(this,this.logger),this.verify=new Vt(this.projectId||"",this.logger)}static async init(e){const t=new te(e);await t.initialize();const i=await t.crypto.getClientId();return await t.storage.setItem(yt,i),t}get context(){return (0,_walletconnect_logger__WEBPACK_IMPORTED_MODULE_3__.getLoggerContext)(this.logger)}async start(){this.initialized||await this.initialize()}async initialize(){this.logger.trace("Initialized");try{await this.crypto.init(),await this.history.init(),await this.expirer.init(),await this.relayer.init(),await this.heartbeat.init(),await this.pairing.init(),this.initialized=!0,this.logger.info("Core Initialization Success")}catch(e){throw this.logger.warn(`Core Initialization Failure at epoch ${Date.now()}`,e),this.logger.error(e.message),e}}}const Nr=te;\n//# sourceMappingURL=index.es.js.map\n\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/core/dist/index.es.js?')},"./node_modules/@walletconnect/environment/dist/cjs/crypto.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.isBrowserCryptoAvailable = exports.getSubtleCrypto = exports.getBrowerCrypto = void 0;\nfunction getBrowerCrypto() {\n return (__webpack_require__.g === null || __webpack_require__.g === void 0 ? void 0 : __webpack_require__.g.crypto) || (__webpack_require__.g === null || __webpack_require__.g === void 0 ? void 0 : __webpack_require__.g.msCrypto) || {};\n}\nexports.getBrowerCrypto = getBrowerCrypto;\nfunction getSubtleCrypto() {\n const browserCrypto = getBrowerCrypto();\n return browserCrypto.subtle || browserCrypto.webkitSubtle;\n}\nexports.getSubtleCrypto = getSubtleCrypto;\nfunction isBrowserCryptoAvailable() {\n return !!getBrowerCrypto() && !!getSubtleCrypto();\n}\nexports.isBrowserCryptoAvailable = isBrowserCryptoAvailable;\n//# sourceMappingURL=crypto.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/environment/dist/cjs/crypto.js?')},"./node_modules/@walletconnect/environment/dist/cjs/env.js":(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.isBrowser = exports.isNode = exports.isReactNative = void 0;\nfunction isReactNative() {\n return (typeof document === "undefined" &&\n typeof navigator !== "undefined" &&\n navigator.product === "ReactNative");\n}\nexports.isReactNative = isReactNative;\nfunction isNode() {\n return (typeof process !== "undefined" &&\n typeof process.versions !== "undefined" &&\n typeof process.versions.node !== "undefined");\n}\nexports.isNode = isNode;\nfunction isBrowser() {\n return !isReactNative() && !isNode();\n}\nexports.isBrowser = isBrowser;\n//# sourceMappingURL=env.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/environment/dist/cjs/env.js?')},"./node_modules/@walletconnect/environment/dist/cjs/index.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nconst tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");\ntslib_1.__exportStar(__webpack_require__(/*! ./crypto */ "./node_modules/@walletconnect/environment/dist/cjs/crypto.js"), exports);\ntslib_1.__exportStar(__webpack_require__(/*! ./env */ "./node_modules/@walletconnect/environment/dist/cjs/env.js"), exports);\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/environment/dist/cjs/index.js?')},"./node_modules/@walletconnect/events/dist/esm/events.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ IEvents: () => (/* binding */ IEvents)\n/* harmony export */ });\nclass IEvents {\n}\n//# sourceMappingURL=events.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/events/dist/esm/events.js?")},"./node_modules/@walletconnect/events/dist/esm/index.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ IEvents: () => (/* reexport safe */ _events__WEBPACK_IMPORTED_MODULE_0__.IEvents)\n/* harmony export */ });\n/* harmony import */ var _events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./events */ "./node_modules/@walletconnect/events/dist/esm/events.js");\n\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/events/dist/esm/index.js?')},"./node_modules/@walletconnect/heartbeat/dist/cjs/constants/heartbeat.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.HEARTBEAT_EVENTS = exports.HEARTBEAT_INTERVAL = void 0;\nconst time_1 = __webpack_require__(/*! @walletconnect/time */ "./node_modules/@walletconnect/time/dist/cjs/index.js");\nexports.HEARTBEAT_INTERVAL = time_1.FIVE_SECONDS;\nexports.HEARTBEAT_EVENTS = {\n pulse: "heartbeat_pulse",\n};\n//# sourceMappingURL=heartbeat.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/heartbeat/dist/cjs/constants/heartbeat.js?')},"./node_modules/@walletconnect/heartbeat/dist/cjs/constants/index.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nconst tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");\ntslib_1.__exportStar(__webpack_require__(/*! ./heartbeat */ "./node_modules/@walletconnect/heartbeat/dist/cjs/constants/heartbeat.js"), exports);\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/heartbeat/dist/cjs/constants/index.js?')},"./node_modules/@walletconnect/heartbeat/dist/cjs/heartbeat.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.HeartBeat = void 0;\nconst tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");\nconst events_1 = __webpack_require__(/*! events */ "./node_modules/events/events.js");\nconst time_1 = __webpack_require__(/*! @walletconnect/time */ "./node_modules/@walletconnect/time/dist/cjs/index.js");\nconst types_1 = __webpack_require__(/*! ./types */ "./node_modules/@walletconnect/heartbeat/dist/cjs/types/index.js");\nconst constants_1 = __webpack_require__(/*! ./constants */ "./node_modules/@walletconnect/heartbeat/dist/cjs/constants/index.js");\nclass HeartBeat extends types_1.IHeartBeat {\n constructor(opts) {\n super(opts);\n this.events = new events_1.EventEmitter();\n this.interval = constants_1.HEARTBEAT_INTERVAL;\n this.interval = (opts === null || opts === void 0 ? void 0 : opts.interval) || constants_1.HEARTBEAT_INTERVAL;\n }\n static init(opts) {\n return tslib_1.__awaiter(this, void 0, void 0, function* () {\n const heartbeat = new HeartBeat(opts);\n yield heartbeat.init();\n return heartbeat;\n });\n }\n init() {\n return tslib_1.__awaiter(this, void 0, void 0, function* () {\n yield this.initialize();\n });\n }\n stop() {\n clearInterval(this.intervalRef);\n }\n on(event, listener) {\n this.events.on(event, listener);\n }\n once(event, listener) {\n this.events.once(event, listener);\n }\n off(event, listener) {\n this.events.off(event, listener);\n }\n removeListener(event, listener) {\n this.events.removeListener(event, listener);\n }\n initialize() {\n return tslib_1.__awaiter(this, void 0, void 0, function* () {\n this.intervalRef = setInterval(() => this.pulse(), time_1.toMiliseconds(this.interval));\n });\n }\n pulse() {\n this.events.emit(constants_1.HEARTBEAT_EVENTS.pulse);\n }\n}\nexports.HeartBeat = HeartBeat;\n//# sourceMappingURL=heartbeat.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/heartbeat/dist/cjs/heartbeat.js?')},"./node_modules/@walletconnect/heartbeat/dist/cjs/index.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nconst tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");\ntslib_1.__exportStar(__webpack_require__(/*! ./heartbeat */ "./node_modules/@walletconnect/heartbeat/dist/cjs/heartbeat.js"), exports);\ntslib_1.__exportStar(__webpack_require__(/*! ./types */ "./node_modules/@walletconnect/heartbeat/dist/cjs/types/index.js"), exports);\ntslib_1.__exportStar(__webpack_require__(/*! ./constants */ "./node_modules/@walletconnect/heartbeat/dist/cjs/constants/index.js"), exports);\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/heartbeat/dist/cjs/index.js?')},"./node_modules/@walletconnect/heartbeat/dist/cjs/types/heartbeat.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.IHeartBeat = void 0;\nconst events_1 = __webpack_require__(/*! @walletconnect/events */ "./node_modules/@walletconnect/events/dist/esm/index.js");\nclass IHeartBeat extends events_1.IEvents {\n constructor(opts) {\n super();\n }\n}\nexports.IHeartBeat = IHeartBeat;\n//# sourceMappingURL=heartbeat.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/heartbeat/dist/cjs/types/heartbeat.js?')},"./node_modules/@walletconnect/heartbeat/dist/cjs/types/index.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nconst tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");\ntslib_1.__exportStar(__webpack_require__(/*! ./heartbeat */ "./node_modules/@walletconnect/heartbeat/dist/cjs/types/heartbeat.js"), exports);\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/heartbeat/dist/cjs/types/index.js?')},"./node_modules/@walletconnect/jsonrpc-provider/dist/esm/index.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ JsonRpcProvider: () => (/* reexport safe */ _provider__WEBPACK_IMPORTED_MODULE_0__.JsonRpcProvider),\n/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var _provider__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./provider */ "./node_modules/@walletconnect/jsonrpc-provider/dist/esm/provider.js");\n\n\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_provider__WEBPACK_IMPORTED_MODULE_0__["default"]);\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/jsonrpc-provider/dist/esm/index.js?')},"./node_modules/@walletconnect/jsonrpc-provider/dist/esm/provider.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ JsonRpcProvider: () => (/* binding */ JsonRpcProvider),\n/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! events */ "./node_modules/events/events.js");\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(events__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @walletconnect/jsonrpc-utils */ "./node_modules/@walletconnect/jsonrpc-utils/dist/esm/index.js");\n\n\nclass JsonRpcProvider extends _walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_1__.IJsonRpcProvider {\n constructor(connection) {\n super(connection);\n this.events = new events__WEBPACK_IMPORTED_MODULE_0__.EventEmitter();\n this.hasRegisteredEventListeners = false;\n this.connection = this.setConnection(connection);\n if (this.connection.connected) {\n this.registerEventListeners();\n }\n }\n async connect(connection = this.connection) {\n await this.open(connection);\n }\n async disconnect() {\n await this.close();\n }\n on(event, listener) {\n this.events.on(event, listener);\n }\n once(event, listener) {\n this.events.once(event, listener);\n }\n off(event, listener) {\n this.events.off(event, listener);\n }\n removeListener(event, listener) {\n this.events.removeListener(event, listener);\n }\n async request(request, context) {\n return this.requestStrict((0,_walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_1__.formatJsonRpcRequest)(request.method, request.params || [], request.id || (0,_walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_1__.getBigIntRpcId)().toString()), context);\n }\n async requestStrict(request, context) {\n return new Promise(async (resolve, reject) => {\n if (!this.connection.connected) {\n try {\n await this.open();\n }\n catch (e) {\n reject(e);\n }\n }\n this.events.on(`${request.id}`, response => {\n if ((0,_walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_1__.isJsonRpcError)(response)) {\n reject(response.error);\n }\n else {\n resolve(response.result);\n }\n });\n try {\n await this.connection.send(request, context);\n }\n catch (e) {\n reject(e);\n }\n });\n }\n setConnection(connection = this.connection) {\n return connection;\n }\n onPayload(payload) {\n this.events.emit("payload", payload);\n if ((0,_walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_1__.isJsonRpcResponse)(payload)) {\n this.events.emit(`${payload.id}`, payload);\n }\n else {\n this.events.emit("message", {\n type: payload.method,\n data: payload.params,\n });\n }\n }\n onClose(event) {\n if (event && event.code === 3000) {\n this.events.emit("error", new Error(`WebSocket connection closed abnormally with code: ${event.code} ${event.reason ? `(${event.reason})` : ""}`));\n }\n this.events.emit("disconnect");\n }\n async open(connection = this.connection) {\n if (this.connection === connection && this.connection.connected)\n return;\n if (this.connection.connected)\n this.close();\n if (typeof connection === "string") {\n await this.connection.open(connection);\n connection = this.connection;\n }\n this.connection = this.setConnection(connection);\n await this.connection.open();\n this.registerEventListeners();\n this.events.emit("connect");\n }\n async close() {\n await this.connection.close();\n }\n registerEventListeners() {\n if (this.hasRegisteredEventListeners)\n return;\n this.connection.on("payload", (payload) => this.onPayload(payload));\n this.connection.on("close", (event) => this.onClose(event));\n this.connection.on("error", (error) => this.events.emit("error", error));\n this.connection.on("register_error", (error) => this.onClose());\n this.hasRegisteredEventListeners = true;\n }\n}\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (JsonRpcProvider);\n//# sourceMappingURL=provider.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/jsonrpc-provider/dist/esm/provider.js?')},"./node_modules/@walletconnect/jsonrpc-types/dist/esm/index.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ IBaseJsonRpcProvider: () => (/* reexport safe */ _provider__WEBPACK_IMPORTED_MODULE_2__.IBaseJsonRpcProvider),\n/* harmony export */ IEvents: () => (/* reexport safe */ _misc__WEBPACK_IMPORTED_MODULE_1__.IEvents),\n/* harmony export */ IJsonRpcConnection: () => (/* reexport safe */ _provider__WEBPACK_IMPORTED_MODULE_2__.IJsonRpcConnection),\n/* harmony export */ IJsonRpcProvider: () => (/* reexport safe */ _provider__WEBPACK_IMPORTED_MODULE_2__.IJsonRpcProvider)\n/* harmony export */ });\n/* harmony import */ var _jsonrpc__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./jsonrpc */ "./node_modules/@walletconnect/jsonrpc-types/dist/esm/jsonrpc.js");\n/* harmony import */ var _misc__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./misc */ "./node_modules/@walletconnect/jsonrpc-types/dist/esm/misc.js");\n/* harmony import */ var _provider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./provider */ "./node_modules/@walletconnect/jsonrpc-types/dist/esm/provider.js");\n/* harmony import */ var _validator__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./validator */ "./node_modules/@walletconnect/jsonrpc-types/dist/esm/validator.js");\n\n\n\n\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/jsonrpc-types/dist/esm/index.js?')},"./node_modules/@walletconnect/jsonrpc-types/dist/esm/jsonrpc.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n\n//# sourceMappingURL=jsonrpc.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/jsonrpc-types/dist/esm/jsonrpc.js?")},"./node_modules/@walletconnect/jsonrpc-types/dist/esm/misc.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ IEvents: () => (/* binding */ IEvents)\n/* harmony export */ });\nclass IEvents {\n}\n//# sourceMappingURL=misc.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/jsonrpc-types/dist/esm/misc.js?")},"./node_modules/@walletconnect/jsonrpc-types/dist/esm/provider.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ IBaseJsonRpcProvider: () => (/* binding */ IBaseJsonRpcProvider),\n/* harmony export */ IJsonRpcConnection: () => (/* binding */ IJsonRpcConnection),\n/* harmony export */ IJsonRpcProvider: () => (/* binding */ IJsonRpcProvider)\n/* harmony export */ });\n/* harmony import */ var _misc__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./misc */ "./node_modules/@walletconnect/jsonrpc-types/dist/esm/misc.js");\n\nclass IJsonRpcConnection extends _misc__WEBPACK_IMPORTED_MODULE_0__.IEvents {\n constructor(opts) {\n super();\n }\n}\nclass IBaseJsonRpcProvider extends _misc__WEBPACK_IMPORTED_MODULE_0__.IEvents {\n constructor() {\n super();\n }\n}\nclass IJsonRpcProvider extends IBaseJsonRpcProvider {\n constructor(connection) {\n super();\n }\n}\n//# sourceMappingURL=provider.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/jsonrpc-types/dist/esm/provider.js?')},"./node_modules/@walletconnect/jsonrpc-types/dist/esm/validator.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n\n//# sourceMappingURL=validator.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/jsonrpc-types/dist/esm/validator.js?")},"./node_modules/@walletconnect/jsonrpc-utils/dist/esm/constants.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DEFAULT_ERROR: () => (/* binding */ DEFAULT_ERROR),\n/* harmony export */ INTERNAL_ERROR: () => (/* binding */ INTERNAL_ERROR),\n/* harmony export */ INVALID_PARAMS: () => (/* binding */ INVALID_PARAMS),\n/* harmony export */ INVALID_REQUEST: () => (/* binding */ INVALID_REQUEST),\n/* harmony export */ METHOD_NOT_FOUND: () => (/* binding */ METHOD_NOT_FOUND),\n/* harmony export */ PARSE_ERROR: () => (/* binding */ PARSE_ERROR),\n/* harmony export */ RESERVED_ERROR_CODES: () => (/* binding */ RESERVED_ERROR_CODES),\n/* harmony export */ SERVER_ERROR: () => (/* binding */ SERVER_ERROR),\n/* harmony export */ SERVER_ERROR_CODE_RANGE: () => (/* binding */ SERVER_ERROR_CODE_RANGE),\n/* harmony export */ STANDARD_ERROR_MAP: () => (/* binding */ STANDARD_ERROR_MAP)\n/* harmony export */ });\nconst PARSE_ERROR = "PARSE_ERROR";\nconst INVALID_REQUEST = "INVALID_REQUEST";\nconst METHOD_NOT_FOUND = "METHOD_NOT_FOUND";\nconst INVALID_PARAMS = "INVALID_PARAMS";\nconst INTERNAL_ERROR = "INTERNAL_ERROR";\nconst SERVER_ERROR = "SERVER_ERROR";\nconst RESERVED_ERROR_CODES = [-32700, -32600, -32601, -32602, -32603];\nconst SERVER_ERROR_CODE_RANGE = [-32000, -32099];\nconst STANDARD_ERROR_MAP = {\n [PARSE_ERROR]: { code: -32700, message: "Parse error" },\n [INVALID_REQUEST]: { code: -32600, message: "Invalid Request" },\n [METHOD_NOT_FOUND]: { code: -32601, message: "Method not found" },\n [INVALID_PARAMS]: { code: -32602, message: "Invalid params" },\n [INTERNAL_ERROR]: { code: -32603, message: "Internal error" },\n [SERVER_ERROR]: { code: -32000, message: "Server error" },\n};\nconst DEFAULT_ERROR = SERVER_ERROR;\n//# sourceMappingURL=constants.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/jsonrpc-utils/dist/esm/constants.js?')},"./node_modules/@walletconnect/jsonrpc-utils/dist/esm/env.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ isNodeJs: () => (/* binding */ isNodeJs)\n/* harmony export */ });\n/* harmony import */ var _walletconnect_environment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @walletconnect/environment */ "./node_modules/@walletconnect/environment/dist/cjs/index.js");\n/* harmony import */ var _walletconnect_environment__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_walletconnect_environment__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _walletconnect_environment__WEBPACK_IMPORTED_MODULE_0__) if(["default","isNodeJs"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _walletconnect_environment__WEBPACK_IMPORTED_MODULE_0__[__WEBPACK_IMPORT_KEY__]\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n\nconst isNodeJs = _walletconnect_environment__WEBPACK_IMPORTED_MODULE_0__.isNode;\n\n//# sourceMappingURL=env.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/jsonrpc-utils/dist/esm/env.js?')},"./node_modules/@walletconnect/jsonrpc-utils/dist/esm/error.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ getError: () => (/* binding */ getError),\n/* harmony export */ getErrorByCode: () => (/* binding */ getErrorByCode),\n/* harmony export */ isReservedErrorCode: () => (/* binding */ isReservedErrorCode),\n/* harmony export */ isServerErrorCode: () => (/* binding */ isServerErrorCode),\n/* harmony export */ isValidErrorCode: () => (/* binding */ isValidErrorCode),\n/* harmony export */ parseConnectionError: () => (/* binding */ parseConnectionError),\n/* harmony export */ validateJsonRpcError: () => (/* binding */ validateJsonRpcError)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constants */ "./node_modules/@walletconnect/jsonrpc-utils/dist/esm/constants.js");\n\nfunction isServerErrorCode(code) {\n return code <= _constants__WEBPACK_IMPORTED_MODULE_0__.SERVER_ERROR_CODE_RANGE[0] && code >= _constants__WEBPACK_IMPORTED_MODULE_0__.SERVER_ERROR_CODE_RANGE[1];\n}\nfunction isReservedErrorCode(code) {\n return _constants__WEBPACK_IMPORTED_MODULE_0__.RESERVED_ERROR_CODES.includes(code);\n}\nfunction isValidErrorCode(code) {\n return typeof code === "number";\n}\nfunction getError(type) {\n if (!Object.keys(_constants__WEBPACK_IMPORTED_MODULE_0__.STANDARD_ERROR_MAP).includes(type)) {\n return _constants__WEBPACK_IMPORTED_MODULE_0__.STANDARD_ERROR_MAP[_constants__WEBPACK_IMPORTED_MODULE_0__.DEFAULT_ERROR];\n }\n return _constants__WEBPACK_IMPORTED_MODULE_0__.STANDARD_ERROR_MAP[type];\n}\nfunction getErrorByCode(code) {\n const match = Object.values(_constants__WEBPACK_IMPORTED_MODULE_0__.STANDARD_ERROR_MAP).find(e => e.code === code);\n if (!match) {\n return _constants__WEBPACK_IMPORTED_MODULE_0__.STANDARD_ERROR_MAP[_constants__WEBPACK_IMPORTED_MODULE_0__.DEFAULT_ERROR];\n }\n return match;\n}\nfunction validateJsonRpcError(response) {\n if (typeof response.error.code === "undefined") {\n return { valid: false, error: "Missing code for JSON-RPC error" };\n }\n if (typeof response.error.message === "undefined") {\n return { valid: false, error: "Missing message for JSON-RPC error" };\n }\n if (!isValidErrorCode(response.error.code)) {\n return {\n valid: false,\n error: `Invalid error code type for JSON-RPC: ${response.error.code}`,\n };\n }\n if (isReservedErrorCode(response.error.code)) {\n const error = getErrorByCode(response.error.code);\n if (error.message !== _constants__WEBPACK_IMPORTED_MODULE_0__.STANDARD_ERROR_MAP[_constants__WEBPACK_IMPORTED_MODULE_0__.DEFAULT_ERROR].message &&\n response.error.message === error.message) {\n return {\n valid: false,\n error: `Invalid error code message for JSON-RPC: ${response.error.code}`,\n };\n }\n }\n return { valid: true };\n}\nfunction parseConnectionError(e, url, type) {\n return e.message.includes("getaddrinfo ENOTFOUND") || e.message.includes("connect ECONNREFUSED")\n ? new Error(`Unavailable ${type} RPC url at ${url}`)\n : e;\n}\n//# sourceMappingURL=error.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/jsonrpc-utils/dist/esm/error.js?')},"./node_modules/@walletconnect/jsonrpc-utils/dist/esm/format.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ formatErrorMessage: () => (/* binding */ formatErrorMessage),\n/* harmony export */ formatJsonRpcError: () => (/* binding */ formatJsonRpcError),\n/* harmony export */ formatJsonRpcRequest: () => (/* binding */ formatJsonRpcRequest),\n/* harmony export */ formatJsonRpcResult: () => (/* binding */ formatJsonRpcResult),\n/* harmony export */ getBigIntRpcId: () => (/* binding */ getBigIntRpcId),\n/* harmony export */ payloadId: () => (/* binding */ payloadId)\n/* harmony export */ });\n/* harmony import */ var _error__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./error */ "./node_modules/@walletconnect/jsonrpc-utils/dist/esm/error.js");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constants */ "./node_modules/@walletconnect/jsonrpc-utils/dist/esm/constants.js");\n\n\nfunction payloadId(entropy = 3) {\n const date = Date.now() * Math.pow(10, entropy);\n const extra = Math.floor(Math.random() * Math.pow(10, entropy));\n return date + extra;\n}\nfunction getBigIntRpcId(entropy = 6) {\n return BigInt(payloadId(entropy));\n}\nfunction formatJsonRpcRequest(method, params, id) {\n return {\n id: id || payloadId(),\n jsonrpc: "2.0",\n method,\n params,\n };\n}\nfunction formatJsonRpcResult(id, result) {\n return {\n id,\n jsonrpc: "2.0",\n result,\n };\n}\nfunction formatJsonRpcError(id, error, data) {\n return {\n id,\n jsonrpc: "2.0",\n error: formatErrorMessage(error, data),\n };\n}\nfunction formatErrorMessage(error, data) {\n if (typeof error === "undefined") {\n return (0,_error__WEBPACK_IMPORTED_MODULE_0__.getError)(_constants__WEBPACK_IMPORTED_MODULE_1__.INTERNAL_ERROR);\n }\n if (typeof error === "string") {\n error = Object.assign(Object.assign({}, (0,_error__WEBPACK_IMPORTED_MODULE_0__.getError)(_constants__WEBPACK_IMPORTED_MODULE_1__.SERVER_ERROR)), { message: error });\n }\n if (typeof data !== "undefined") {\n error.data = data;\n }\n if ((0,_error__WEBPACK_IMPORTED_MODULE_0__.isReservedErrorCode)(error.code)) {\n error = (0,_error__WEBPACK_IMPORTED_MODULE_0__.getErrorByCode)(error.code);\n }\n return error;\n}\n//# sourceMappingURL=format.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/jsonrpc-utils/dist/esm/format.js?')},"./node_modules/@walletconnect/jsonrpc-utils/dist/esm/index.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DEFAULT_ERROR: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.DEFAULT_ERROR),\n/* harmony export */ IBaseJsonRpcProvider: () => (/* reexport safe */ _types__WEBPACK_IMPORTED_MODULE_5__.IBaseJsonRpcProvider),\n/* harmony export */ IEvents: () => (/* reexport safe */ _types__WEBPACK_IMPORTED_MODULE_5__.IEvents),\n/* harmony export */ IJsonRpcConnection: () => (/* reexport safe */ _types__WEBPACK_IMPORTED_MODULE_5__.IJsonRpcConnection),\n/* harmony export */ IJsonRpcProvider: () => (/* reexport safe */ _types__WEBPACK_IMPORTED_MODULE_5__.IJsonRpcProvider),\n/* harmony export */ INTERNAL_ERROR: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.INTERNAL_ERROR),\n/* harmony export */ INVALID_PARAMS: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.INVALID_PARAMS),\n/* harmony export */ INVALID_REQUEST: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.INVALID_REQUEST),\n/* harmony export */ METHOD_NOT_FOUND: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.METHOD_NOT_FOUND),\n/* harmony export */ PARSE_ERROR: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.PARSE_ERROR),\n/* harmony export */ RESERVED_ERROR_CODES: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.RESERVED_ERROR_CODES),\n/* harmony export */ SERVER_ERROR: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.SERVER_ERROR),\n/* harmony export */ SERVER_ERROR_CODE_RANGE: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.SERVER_ERROR_CODE_RANGE),\n/* harmony export */ STANDARD_ERROR_MAP: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_0__.STANDARD_ERROR_MAP),\n/* harmony export */ formatErrorMessage: () => (/* reexport safe */ _format__WEBPACK_IMPORTED_MODULE_3__.formatErrorMessage),\n/* harmony export */ formatJsonRpcError: () => (/* reexport safe */ _format__WEBPACK_IMPORTED_MODULE_3__.formatJsonRpcError),\n/* harmony export */ formatJsonRpcRequest: () => (/* reexport safe */ _format__WEBPACK_IMPORTED_MODULE_3__.formatJsonRpcRequest),\n/* harmony export */ formatJsonRpcResult: () => (/* reexport safe */ _format__WEBPACK_IMPORTED_MODULE_3__.formatJsonRpcResult),\n/* harmony export */ getBigIntRpcId: () => (/* reexport safe */ _format__WEBPACK_IMPORTED_MODULE_3__.getBigIntRpcId),\n/* harmony export */ getError: () => (/* reexport safe */ _error__WEBPACK_IMPORTED_MODULE_1__.getError),\n/* harmony export */ getErrorByCode: () => (/* reexport safe */ _error__WEBPACK_IMPORTED_MODULE_1__.getErrorByCode),\n/* harmony export */ isHttpUrl: () => (/* reexport safe */ _url__WEBPACK_IMPORTED_MODULE_6__.isHttpUrl),\n/* harmony export */ isJsonRpcError: () => (/* reexport safe */ _validators__WEBPACK_IMPORTED_MODULE_7__.isJsonRpcError),\n/* harmony export */ isJsonRpcPayload: () => (/* reexport safe */ _validators__WEBPACK_IMPORTED_MODULE_7__.isJsonRpcPayload),\n/* harmony export */ isJsonRpcRequest: () => (/* reexport safe */ _validators__WEBPACK_IMPORTED_MODULE_7__.isJsonRpcRequest),\n/* harmony export */ isJsonRpcResponse: () => (/* reexport safe */ _validators__WEBPACK_IMPORTED_MODULE_7__.isJsonRpcResponse),\n/* harmony export */ isJsonRpcResult: () => (/* reexport safe */ _validators__WEBPACK_IMPORTED_MODULE_7__.isJsonRpcResult),\n/* harmony export */ isJsonRpcValidationInvalid: () => (/* reexport safe */ _validators__WEBPACK_IMPORTED_MODULE_7__.isJsonRpcValidationInvalid),\n/* harmony export */ isLocalhostUrl: () => (/* reexport safe */ _url__WEBPACK_IMPORTED_MODULE_6__.isLocalhostUrl),\n/* harmony export */ isReservedErrorCode: () => (/* reexport safe */ _error__WEBPACK_IMPORTED_MODULE_1__.isReservedErrorCode),\n/* harmony export */ isServerErrorCode: () => (/* reexport safe */ _error__WEBPACK_IMPORTED_MODULE_1__.isServerErrorCode),\n/* harmony export */ isValidDefaultRoute: () => (/* reexport safe */ _routing__WEBPACK_IMPORTED_MODULE_4__.isValidDefaultRoute),\n/* harmony export */ isValidErrorCode: () => (/* reexport safe */ _error__WEBPACK_IMPORTED_MODULE_1__.isValidErrorCode),\n/* harmony export */ isValidLeadingWildcardRoute: () => (/* reexport safe */ _routing__WEBPACK_IMPORTED_MODULE_4__.isValidLeadingWildcardRoute),\n/* harmony export */ isValidRoute: () => (/* reexport safe */ _routing__WEBPACK_IMPORTED_MODULE_4__.isValidRoute),\n/* harmony export */ isValidTrailingWildcardRoute: () => (/* reexport safe */ _routing__WEBPACK_IMPORTED_MODULE_4__.isValidTrailingWildcardRoute),\n/* harmony export */ isValidWildcardRoute: () => (/* reexport safe */ _routing__WEBPACK_IMPORTED_MODULE_4__.isValidWildcardRoute),\n/* harmony export */ isWsUrl: () => (/* reexport safe */ _url__WEBPACK_IMPORTED_MODULE_6__.isWsUrl),\n/* harmony export */ parseConnectionError: () => (/* reexport safe */ _error__WEBPACK_IMPORTED_MODULE_1__.parseConnectionError),\n/* harmony export */ payloadId: () => (/* reexport safe */ _format__WEBPACK_IMPORTED_MODULE_3__.payloadId),\n/* harmony export */ validateJsonRpcError: () => (/* reexport safe */ _error__WEBPACK_IMPORTED_MODULE_1__.validateJsonRpcError)\n/* harmony export */ });\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./constants */ "./node_modules/@walletconnect/jsonrpc-utils/dist/esm/constants.js");\n/* harmony import */ var _error__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./error */ "./node_modules/@walletconnect/jsonrpc-utils/dist/esm/error.js");\n/* harmony import */ var _env__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./env */ "./node_modules/@walletconnect/jsonrpc-utils/dist/esm/env.js");\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _env__WEBPACK_IMPORTED_MODULE_2__) if(["default","DEFAULT_ERROR","INTERNAL_ERROR","INVALID_PARAMS","INVALID_REQUEST","METHOD_NOT_FOUND","PARSE_ERROR","RESERVED_ERROR_CODES","SERVER_ERROR","SERVER_ERROR_CODE_RANGE","STANDARD_ERROR_MAP","getError","getErrorByCode","isReservedErrorCode","isServerErrorCode","isValidErrorCode","parseConnectionError","validateJsonRpcError"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _env__WEBPACK_IMPORTED_MODULE_2__[__WEBPACK_IMPORT_KEY__]\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n/* harmony import */ var _format__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./format */ "./node_modules/@walletconnect/jsonrpc-utils/dist/esm/format.js");\n/* harmony import */ var _routing__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./routing */ "./node_modules/@walletconnect/jsonrpc-utils/dist/esm/routing.js");\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./types */ "./node_modules/@walletconnect/jsonrpc-utils/dist/esm/types.js");\n/* harmony import */ var _url__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./url */ "./node_modules/@walletconnect/jsonrpc-utils/dist/esm/url.js");\n/* harmony import */ var _validators__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./validators */ "./node_modules/@walletconnect/jsonrpc-utils/dist/esm/validators.js");\n\n\n\n\n\n\n\n\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/jsonrpc-utils/dist/esm/index.js?')},"./node_modules/@walletconnect/jsonrpc-utils/dist/esm/routing.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ isValidDefaultRoute: () => (/* binding */ isValidDefaultRoute),\n/* harmony export */ isValidLeadingWildcardRoute: () => (/* binding */ isValidLeadingWildcardRoute),\n/* harmony export */ isValidRoute: () => (/* binding */ isValidRoute),\n/* harmony export */ isValidTrailingWildcardRoute: () => (/* binding */ isValidTrailingWildcardRoute),\n/* harmony export */ isValidWildcardRoute: () => (/* binding */ isValidWildcardRoute)\n/* harmony export */ });\nfunction isValidRoute(route) {\n if (route.includes("*")) {\n return isValidWildcardRoute(route);\n }\n if (/\\W/g.test(route)) {\n return false;\n }\n return true;\n}\nfunction isValidDefaultRoute(route) {\n return route === "*";\n}\nfunction isValidWildcardRoute(route) {\n if (isValidDefaultRoute(route)) {\n return true;\n }\n if (!route.includes("*")) {\n return false;\n }\n if (route.split("*").length !== 2) {\n return false;\n }\n if (route.split("*").filter(x => x.trim() === "").length !== 1) {\n return false;\n }\n return true;\n}\nfunction isValidLeadingWildcardRoute(route) {\n return !isValidDefaultRoute(route) && isValidWildcardRoute(route) && !route.split("*")[0].trim();\n}\nfunction isValidTrailingWildcardRoute(route) {\n return !isValidDefaultRoute(route) && isValidWildcardRoute(route) && !route.split("*")[1].trim();\n}\n//# sourceMappingURL=routing.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/jsonrpc-utils/dist/esm/routing.js?')},"./node_modules/@walletconnect/jsonrpc-utils/dist/esm/types.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ IBaseJsonRpcProvider: () => (/* reexport safe */ _walletconnect_jsonrpc_types__WEBPACK_IMPORTED_MODULE_0__.IBaseJsonRpcProvider),\n/* harmony export */ IEvents: () => (/* reexport safe */ _walletconnect_jsonrpc_types__WEBPACK_IMPORTED_MODULE_0__.IEvents),\n/* harmony export */ IJsonRpcConnection: () => (/* reexport safe */ _walletconnect_jsonrpc_types__WEBPACK_IMPORTED_MODULE_0__.IJsonRpcConnection),\n/* harmony export */ IJsonRpcProvider: () => (/* reexport safe */ _walletconnect_jsonrpc_types__WEBPACK_IMPORTED_MODULE_0__.IJsonRpcProvider)\n/* harmony export */ });\n/* harmony import */ var _walletconnect_jsonrpc_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @walletconnect/jsonrpc-types */ "./node_modules/@walletconnect/jsonrpc-types/dist/esm/index.js");\n\n//# sourceMappingURL=types.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/jsonrpc-utils/dist/esm/types.js?')},"./node_modules/@walletconnect/jsonrpc-utils/dist/esm/url.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ isHttpUrl: () => (/* binding */ isHttpUrl),\n/* harmony export */ isLocalhostUrl: () => (/* binding */ isLocalhostUrl),\n/* harmony export */ isWsUrl: () => (/* binding */ isWsUrl)\n/* harmony export */ });\nconst HTTP_REGEX = "^https?:";\nconst WS_REGEX = "^wss?:";\nfunction getUrlProtocol(url) {\n const matches = url.match(new RegExp(/^\\w+:/, "gi"));\n if (!matches || !matches.length)\n return;\n return matches[0];\n}\nfunction matchRegexProtocol(url, regex) {\n const protocol = getUrlProtocol(url);\n if (typeof protocol === "undefined")\n return false;\n return new RegExp(regex).test(protocol);\n}\nfunction isHttpUrl(url) {\n return matchRegexProtocol(url, HTTP_REGEX);\n}\nfunction isWsUrl(url) {\n return matchRegexProtocol(url, WS_REGEX);\n}\nfunction isLocalhostUrl(url) {\n return new RegExp("wss?://localhost(:d{2,5})?").test(url);\n}\n//# sourceMappingURL=url.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/jsonrpc-utils/dist/esm/url.js?')},"./node_modules/@walletconnect/jsonrpc-utils/dist/esm/validators.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ isJsonRpcError: () => (/* binding */ isJsonRpcError),\n/* harmony export */ isJsonRpcPayload: () => (/* binding */ isJsonRpcPayload),\n/* harmony export */ isJsonRpcRequest: () => (/* binding */ isJsonRpcRequest),\n/* harmony export */ isJsonRpcResponse: () => (/* binding */ isJsonRpcResponse),\n/* harmony export */ isJsonRpcResult: () => (/* binding */ isJsonRpcResult),\n/* harmony export */ isJsonRpcValidationInvalid: () => (/* binding */ isJsonRpcValidationInvalid)\n/* harmony export */ });\nfunction isJsonRpcPayload(payload) {\n return (typeof payload === "object" &&\n "id" in payload &&\n "jsonrpc" in payload &&\n payload.jsonrpc === "2.0");\n}\nfunction isJsonRpcRequest(payload) {\n return isJsonRpcPayload(payload) && "method" in payload;\n}\nfunction isJsonRpcResponse(payload) {\n return isJsonRpcPayload(payload) && (isJsonRpcResult(payload) || isJsonRpcError(payload));\n}\nfunction isJsonRpcResult(payload) {\n return "result" in payload;\n}\nfunction isJsonRpcError(payload) {\n return "error" in payload;\n}\nfunction isJsonRpcValidationInvalid(validation) {\n return "error" in validation && validation.valid === false;\n}\n//# sourceMappingURL=validators.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/jsonrpc-utils/dist/esm/validators.js?')},"./node_modules/@walletconnect/jsonrpc-ws-connection/dist/index.es.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ WsConnection: () => (/* binding */ f),\n/* harmony export */ "default": () => (/* binding */ f)\n/* harmony export */ });\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! events */ "./node_modules/events/events.js");\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(events__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _walletconnect_safe_json__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @walletconnect/safe-json */ "./node_modules/@walletconnect/safe-json/dist/esm/index.js");\n/* harmony import */ var _walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @walletconnect/jsonrpc-utils */ "./node_modules/@walletconnect/jsonrpc-utils/dist/esm/index.js");\nconst w=()=>typeof WebSocket<"u"?WebSocket:typeof __webpack_require__.g<"u"&&typeof __webpack_require__.g.WebSocket<"u"?__webpack_require__.g.WebSocket:typeof window<"u"&&typeof window.WebSocket<"u"?window.WebSocket:typeof self<"u"&&typeof self.WebSocket<"u"?self.WebSocket:__webpack_require__(/*! ws */ "./node_modules/ws/browser.js"),b=()=>typeof WebSocket<"u"||typeof __webpack_require__.g<"u"&&typeof __webpack_require__.g.WebSocket<"u"||typeof window<"u"&&typeof window.WebSocket<"u"||typeof self<"u"&&typeof self.WebSocket<"u",a=c=>c.split("?")[0],h=10,S=w();class f{constructor(e){if(this.url=e,this.events=new events__WEBPACK_IMPORTED_MODULE_0__.EventEmitter,this.registering=!1,!(0,_walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_2__.isWsUrl)(e))throw new Error(`Provided URL is not compatible with WebSocket connection: ${e}`);this.url=e}get connected(){return typeof this.socket<"u"}get connecting(){return this.registering}on(e,t){this.events.on(e,t)}once(e,t){this.events.once(e,t)}off(e,t){this.events.off(e,t)}removeListener(e,t){this.events.removeListener(e,t)}async open(e=this.url){await this.register(e)}async close(){return new Promise((e,t)=>{if(typeof this.socket>"u"){t(new Error("Connection already closed"));return}this.socket.onclose=n=>{this.onClose(n),e()},this.socket.close()})}async send(e){typeof this.socket>"u"&&(this.socket=await this.register());try{this.socket.send((0,_walletconnect_safe_json__WEBPACK_IMPORTED_MODULE_1__.safeJsonStringify)(e))}catch(t){this.onError(e.id,t)}}register(e=this.url){if(!(0,_walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_2__.isWsUrl)(e))throw new Error(`Provided URL is not compatible with WebSocket connection: ${e}`);if(this.registering){const t=this.events.getMaxListeners();return(this.events.listenerCount("register_error")>=t||this.events.listenerCount("open")>=t)&&this.events.setMaxListeners(t+1),new Promise((n,o)=>{this.events.once("register_error",s=>{this.resetMaxListeners(),o(s)}),this.events.once("open",()=>{if(this.resetMaxListeners(),typeof this.socket>"u")return o(new Error("WebSocket connection is missing or invalid"));n(this.socket)})})}return this.url=e,this.registering=!0,new Promise((t,n)=>{const o=new URLSearchParams(e).get("origin"),s=(0,_walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_2__.isReactNative)()?{headers:{origin:o}}:{rejectUnauthorized:!(0,_walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_2__.isLocalhostUrl)(e)},i=new S(e,[],s);b()?i.onerror=r=>{const l=r;n(this.emitError(l.error))}:i.on("error",r=>{n(this.emitError(r))}),i.onopen=()=>{this.onOpen(i),t(i)}})}onOpen(e){e.onmessage=t=>this.onPayload(t),e.onclose=t=>this.onClose(t),this.socket=e,this.registering=!1,this.events.emit("open")}onClose(e){this.socket=void 0,this.registering=!1,this.events.emit("close",e)}onPayload(e){if(typeof e.data>"u")return;const t=typeof e.data=="string"?(0,_walletconnect_safe_json__WEBPACK_IMPORTED_MODULE_1__.safeJsonParse)(e.data):e.data;this.events.emit("payload",t)}onError(e,t){const n=this.parseError(t),o=n.message||n.toString(),s=(0,_walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_2__.formatJsonRpcError)(e,o);this.events.emit("payload",s)}parseError(e,t=this.url){return (0,_walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_2__.parseConnectionError)(e,a(t),"WS")}resetMaxListeners(){this.events.getMaxListeners()>h&&this.events.setMaxListeners(h)}emitError(e){const t=this.parseError(new Error(e?.message||`WebSocket connection failed for host: ${a(this.url)}`));return this.events.emit("register_error",t),t}}\n//# sourceMappingURL=index.es.js.map\n\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/jsonrpc-ws-connection/dist/index.es.js?')},"./node_modules/@walletconnect/keyvaluestorage/dist/index.es.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ KeyValueStorage: () => (/* binding */ h),\n/* harmony export */ "default": () => (/* binding */ h)\n/* harmony export */ });\n/* harmony import */ var unstorage__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! unstorage */ "./node_modules/unstorage/dist/index.mjs");\n/* harmony import */ var idb_keyval__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! idb-keyval */ "./node_modules/idb-keyval/dist/index.js");\n/* harmony import */ var _walletconnect_safe_json__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @walletconnect/safe-json */ "./node_modules/@walletconnect/safe-json/dist/esm/index.js");\nfunction C(i){return i}const x="idb-keyval";var z=(i={})=>{const t=i.base&&i.base.length>0?`${i.base}:`:"",e=s=>t+s;let n;return i.dbName&&i.storeName&&(n=(0,idb_keyval__WEBPACK_IMPORTED_MODULE_1__.createStore)(i.dbName,i.storeName)),{name:x,options:i,async hasItem(s){return!(typeof await (0,idb_keyval__WEBPACK_IMPORTED_MODULE_1__.get)(e(s),n)>"u")},async getItem(s){return await (0,idb_keyval__WEBPACK_IMPORTED_MODULE_1__.get)(e(s),n)??null},setItem(s,a){return (0,idb_keyval__WEBPACK_IMPORTED_MODULE_1__.set)(e(s),a,n)},removeItem(s){return (0,idb_keyval__WEBPACK_IMPORTED_MODULE_1__.del)(e(s),n)},getKeys(){return (0,idb_keyval__WEBPACK_IMPORTED_MODULE_1__.keys)(n)},clear(){return (0,idb_keyval__WEBPACK_IMPORTED_MODULE_1__.clear)(n)}}};const D="WALLET_CONNECT_V2_INDEXED_DB",E="keyvaluestorage";class _{constructor(){this.indexedDb=(0,unstorage__WEBPACK_IMPORTED_MODULE_2__.createStorage)({driver:z({dbName:D,storeName:E})})}async getKeys(){return this.indexedDb.getKeys()}async getEntries(){return(await this.indexedDb.getItems(await this.indexedDb.getKeys())).map(t=>[t.key,t.value])}async getItem(t){const e=await this.indexedDb.getItem(t);if(e!==null)return e}async setItem(t,e){await this.indexedDb.setItem(t,(0,_walletconnect_safe_json__WEBPACK_IMPORTED_MODULE_0__.safeJsonStringify)(e))}async removeItem(t){await this.indexedDb.removeItem(t)}}var l=typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof __webpack_require__.g<"u"?__webpack_require__.g:typeof self<"u"?self:{},c={exports:{}};(function(){let i;function t(){}i=t,i.prototype.getItem=function(e){return this.hasOwnProperty(e)?String(this[e]):null},i.prototype.setItem=function(e,n){this[e]=String(n)},i.prototype.removeItem=function(e){delete this[e]},i.prototype.clear=function(){const e=this;Object.keys(e).forEach(function(n){e[n]=void 0,delete e[n]})},i.prototype.key=function(e){return e=e||0,Object.keys(this)[e]},i.prototype.__defineGetter__("length",function(){return Object.keys(this).length}),typeof l<"u"&&l.localStorage?c.exports=l.localStorage:typeof window<"u"&&window.localStorage?c.exports=window.localStorage:c.exports=new t})();function k(i){var t;return[i[0],(0,_walletconnect_safe_json__WEBPACK_IMPORTED_MODULE_0__.safeJsonParse)((t=i[1])!=null?t:"")]}class K{constructor(){this.localStorage=c.exports}async getKeys(){return Object.keys(this.localStorage)}async getEntries(){return Object.entries(this.localStorage).map(k)}async getItem(t){const e=this.localStorage.getItem(t);if(e!==null)return (0,_walletconnect_safe_json__WEBPACK_IMPORTED_MODULE_0__.safeJsonParse)(e)}async setItem(t,e){this.localStorage.setItem(t,(0,_walletconnect_safe_json__WEBPACK_IMPORTED_MODULE_0__.safeJsonStringify)(e))}async removeItem(t){this.localStorage.removeItem(t)}}const N="wc_storage_version",y=1,O=async(i,t,e)=>{const n=N,s=await t.getItem(n);if(s&&s>=y){e(t);return}const a=await i.getKeys();if(!a.length){e(t);return}const m=[];for(;a.length;){const r=a.shift();if(!r)continue;const o=r.toLowerCase();if(o.includes("wc@")||o.includes("walletconnect")||o.includes("wc_")||o.includes("wallet_connect")){const f=await i.getItem(r);await t.setItem(r,f),m.push(r)}}await t.setItem(n,y),e(t),j(i,m)},j=async(i,t)=>{t.length&&t.forEach(async e=>{await i.removeItem(e)})};class h{constructor(){this.initialized=!1,this.setInitialized=e=>{this.storage=e,this.initialized=!0};const t=new K;this.storage=t;try{const e=new _;O(t,e,this.setInitialized)}catch{this.initialized=!0}}async getKeys(){return await this.initialize(),this.storage.getKeys()}async getEntries(){return await this.initialize(),this.storage.getEntries()}async getItem(t){return await this.initialize(),this.storage.getItem(t)}async setItem(t,e){return await this.initialize(),this.storage.setItem(t,e)}async removeItem(t){return await this.initialize(),this.storage.removeItem(t)}async initialize(){this.initialized||await new Promise(t=>{const e=setInterval(()=>{this.initialized&&(clearInterval(e),t())},20)})}}\n//# sourceMappingURL=index.es.js.map\n\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/keyvaluestorage/dist/index.es.js?')},"./node_modules/@walletconnect/logger/dist/cjs/constants.js":(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.PINO_CUSTOM_CONTEXT_KEY = exports.PINO_LOGGER_DEFAULTS = void 0;\nexports.PINO_LOGGER_DEFAULTS = {\n level: "info",\n};\nexports.PINO_CUSTOM_CONTEXT_KEY = "custom_context";\n//# sourceMappingURL=constants.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/logger/dist/cjs/constants.js?')},"./node_modules/@walletconnect/logger/dist/cjs/index.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.pino = void 0;\nconst tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");\nconst pino_1 = tslib_1.__importDefault(__webpack_require__(/*! pino */ "./node_modules/pino/browser.js"));\nObject.defineProperty(exports, "pino", ({ enumerable: true, get: function () { return pino_1.default; } }));\ntslib_1.__exportStar(__webpack_require__(/*! ./constants */ "./node_modules/@walletconnect/logger/dist/cjs/constants.js"), exports);\ntslib_1.__exportStar(__webpack_require__(/*! ./utils */ "./node_modules/@walletconnect/logger/dist/cjs/utils.js"), exports);\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/logger/dist/cjs/index.js?')},"./node_modules/@walletconnect/logger/dist/cjs/utils.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.generateChildLogger = exports.formatChildLoggerContext = exports.getLoggerContext = exports.setBrowserLoggerContext = exports.getBrowserLoggerContext = exports.getDefaultLoggerOptions = void 0;\nconst constants_1 = __webpack_require__(/*! ./constants */ "./node_modules/@walletconnect/logger/dist/cjs/constants.js");\nfunction getDefaultLoggerOptions(opts) {\n return Object.assign(Object.assign({}, opts), { level: (opts === null || opts === void 0 ? void 0 : opts.level) || constants_1.PINO_LOGGER_DEFAULTS.level });\n}\nexports.getDefaultLoggerOptions = getDefaultLoggerOptions;\nfunction getBrowserLoggerContext(logger, customContextKey = constants_1.PINO_CUSTOM_CONTEXT_KEY) {\n return logger[customContextKey] || "";\n}\nexports.getBrowserLoggerContext = getBrowserLoggerContext;\nfunction setBrowserLoggerContext(logger, context, customContextKey = constants_1.PINO_CUSTOM_CONTEXT_KEY) {\n logger[customContextKey] = context;\n return logger;\n}\nexports.setBrowserLoggerContext = setBrowserLoggerContext;\nfunction getLoggerContext(logger, customContextKey = constants_1.PINO_CUSTOM_CONTEXT_KEY) {\n let context = "";\n if (typeof logger.bindings === "undefined") {\n context = getBrowserLoggerContext(logger, customContextKey);\n }\n else {\n context = logger.bindings().context || "";\n }\n return context;\n}\nexports.getLoggerContext = getLoggerContext;\nfunction formatChildLoggerContext(logger, childContext, customContextKey = constants_1.PINO_CUSTOM_CONTEXT_KEY) {\n const parentContext = getLoggerContext(logger, customContextKey);\n const context = parentContext.trim()\n ? `${parentContext}/${childContext}`\n : childContext;\n return context;\n}\nexports.formatChildLoggerContext = formatChildLoggerContext;\nfunction generateChildLogger(logger, childContext, customContextKey = constants_1.PINO_CUSTOM_CONTEXT_KEY) {\n const context = formatChildLoggerContext(logger, childContext, customContextKey);\n const child = logger.child({ context });\n return setBrowserLoggerContext(child, context, customContextKey);\n}\nexports.generateChildLogger = generateChildLogger;\n//# sourceMappingURL=utils.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/logger/dist/cjs/utils.js?')},"./node_modules/@walletconnect/relay-api/dist/esm/index.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ RELAY_JSONRPC: () => (/* reexport safe */ _jsonrpc__WEBPACK_IMPORTED_MODULE_2__.RELAY_JSONRPC),\n/* harmony export */ isPublishMethod: () => (/* reexport safe */ _validators__WEBPACK_IMPORTED_MODULE_3__.isPublishMethod),\n/* harmony export */ isPublishParams: () => (/* reexport safe */ _validators__WEBPACK_IMPORTED_MODULE_3__.isPublishParams),\n/* harmony export */ isPublishRequest: () => (/* reexport safe */ _validators__WEBPACK_IMPORTED_MODULE_3__.isPublishRequest),\n/* harmony export */ isSubscribeMethod: () => (/* reexport safe */ _validators__WEBPACK_IMPORTED_MODULE_3__.isSubscribeMethod),\n/* harmony export */ isSubscribeParams: () => (/* reexport safe */ _validators__WEBPACK_IMPORTED_MODULE_3__.isSubscribeParams),\n/* harmony export */ isSubscribeRequest: () => (/* reexport safe */ _validators__WEBPACK_IMPORTED_MODULE_3__.isSubscribeRequest),\n/* harmony export */ isSubscriptionMethod: () => (/* reexport safe */ _validators__WEBPACK_IMPORTED_MODULE_3__.isSubscriptionMethod),\n/* harmony export */ isSubscriptionParams: () => (/* reexport safe */ _validators__WEBPACK_IMPORTED_MODULE_3__.isSubscriptionParams),\n/* harmony export */ isSubscriptionRequest: () => (/* reexport safe */ _validators__WEBPACK_IMPORTED_MODULE_3__.isSubscriptionRequest),\n/* harmony export */ isUnsubscribeMethod: () => (/* reexport safe */ _validators__WEBPACK_IMPORTED_MODULE_3__.isUnsubscribeMethod),\n/* harmony export */ isUnsubscribeParams: () => (/* reexport safe */ _validators__WEBPACK_IMPORTED_MODULE_3__.isUnsubscribeParams),\n/* harmony export */ isUnsubscribeRequest: () => (/* reexport safe */ _validators__WEBPACK_IMPORTED_MODULE_3__.isUnsubscribeRequest),\n/* harmony export */ parsePublishRequest: () => (/* reexport safe */ _parsers__WEBPACK_IMPORTED_MODULE_1__.parsePublishRequest),\n/* harmony export */ parseSubscribeRequest: () => (/* reexport safe */ _parsers__WEBPACK_IMPORTED_MODULE_1__.parseSubscribeRequest),\n/* harmony export */ parseSubscriptionRequest: () => (/* reexport safe */ _parsers__WEBPACK_IMPORTED_MODULE_1__.parseSubscriptionRequest),\n/* harmony export */ parseUnsubscribeRequest: () => (/* reexport safe */ _parsers__WEBPACK_IMPORTED_MODULE_1__.parseUnsubscribeRequest)\n/* harmony export */ });\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./types */ "./node_modules/@walletconnect/relay-api/dist/esm/types.js");\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_types__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _types__WEBPACK_IMPORTED_MODULE_0__) if(__WEBPACK_IMPORT_KEY__ !== "default") __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _types__WEBPACK_IMPORTED_MODULE_0__[__WEBPACK_IMPORT_KEY__]\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n/* harmony import */ var _parsers__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./parsers */ "./node_modules/@walletconnect/relay-api/dist/esm/parsers.js");\n/* harmony import */ var _jsonrpc__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./jsonrpc */ "./node_modules/@walletconnect/relay-api/dist/esm/jsonrpc.js");\n/* harmony import */ var _validators__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./validators */ "./node_modules/@walletconnect/relay-api/dist/esm/validators.js");\n\n\n\n\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/relay-api/dist/esm/index.js?')},"./node_modules/@walletconnect/relay-api/dist/esm/jsonrpc.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ RELAY_JSONRPC: () => (/* binding */ RELAY_JSONRPC)\n/* harmony export */ });\nconst RELAY_JSONRPC = {\n waku: {\n publish: "waku_publish",\n batchPublish: "waku_batchPublish",\n subscribe: "waku_subscribe",\n batchSubscribe: "waku_batchSubscribe",\n subscription: "waku_subscription",\n unsubscribe: "waku_unsubscribe",\n batchUnsubscribe: "waku_batchUnsubscribe",\n },\n irn: {\n publish: "irn_publish",\n batchPublish: "irn_batchPublish",\n subscribe: "irn_subscribe",\n batchSubscribe: "irn_batchSubscribe",\n subscription: "irn_subscription",\n unsubscribe: "irn_unsubscribe",\n batchUnsubscribe: "irn_batchUnsubscribe",\n },\n iridium: {\n publish: "iridium_publish",\n batchPublish: "iridium_batchPublish",\n subscribe: "iridium_subscribe",\n batchSubscribe: "iridium_batchSubscribe",\n subscription: "iridium_subscription",\n unsubscribe: "iridium_unsubscribe",\n batchUnsubscribe: "iridium_batchUnsubscribe",\n },\n};\n//# sourceMappingURL=jsonrpc.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/relay-api/dist/esm/jsonrpc.js?')},"./node_modules/@walletconnect/relay-api/dist/esm/misc.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ assertType: () => (/* binding */ assertType),\n/* harmony export */ checkParams: () => (/* binding */ checkParams),\n/* harmony export */ hasExactParamsLength: () => (/* binding */ hasExactParamsLength),\n/* harmony export */ hasRequiredParams: () => (/* binding */ hasRequiredParams),\n/* harmony export */ hasRequiredParamsLength: () => (/* binding */ hasRequiredParamsLength),\n/* harmony export */ methodEndsWith: () => (/* binding */ methodEndsWith)\n/* harmony export */ });\nfunction assertType(obj, key, type = "string") {\n if (!obj[key] || typeof obj[key] !== type) {\n throw new Error(`Missing or invalid "${key}" param`);\n }\n}\nfunction hasRequiredParams(params, required) {\n let matches = true;\n required.forEach(key => {\n const exists = key in params;\n if (!exists) {\n matches = false;\n }\n });\n return matches;\n}\nfunction hasExactParamsLength(params, length) {\n return Array.isArray(params)\n ? params.length === length\n : Object.keys(params).length === length;\n}\nfunction hasRequiredParamsLength(params, minLength) {\n return Array.isArray(params)\n ? params.length >= minLength\n : Object.keys(params).length >= minLength;\n}\nfunction checkParams(params, required, optional) {\n const exact = !optional.length;\n const matchesLength = exact\n ? hasExactParamsLength(params, required.length)\n : hasRequiredParamsLength(params, required.length);\n if (!matchesLength)\n return false;\n return hasRequiredParams(params, required);\n}\nfunction methodEndsWith(method, expected, separator = "_") {\n const split = method.split(separator);\n return (split[split.length - 1].trim().toLowerCase() ===\n expected.trim().toLowerCase());\n}\n//# sourceMappingURL=misc.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/relay-api/dist/esm/misc.js?')},"./node_modules/@walletconnect/relay-api/dist/esm/parsers.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ parsePublishRequest: () => (/* binding */ parsePublishRequest),\n/* harmony export */ parseSubscribeRequest: () => (/* binding */ parseSubscribeRequest),\n/* harmony export */ parseSubscriptionRequest: () => (/* binding */ parseSubscriptionRequest),\n/* harmony export */ parseUnsubscribeRequest: () => (/* binding */ parseUnsubscribeRequest)\n/* harmony export */ });\n/* harmony import */ var _misc__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./misc */ "./node_modules/@walletconnect/relay-api/dist/esm/misc.js");\n/* harmony import */ var _validators__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./validators */ "./node_modules/@walletconnect/relay-api/dist/esm/validators.js");\n\n\nfunction parseSubscribeRequest(request) {\n if (!(0,_validators__WEBPACK_IMPORTED_MODULE_1__.isSubscribeMethod)(request.method)) {\n throw new Error("JSON-RPC Request has invalid subscribe method");\n }\n if (!(0,_validators__WEBPACK_IMPORTED_MODULE_1__.isSubscribeParams)(request.params)) {\n throw new Error("JSON-RPC Request has invalid subscribe params");\n }\n const params = request.params;\n (0,_misc__WEBPACK_IMPORTED_MODULE_0__.assertType)(params, "topic");\n return params;\n}\nfunction parsePublishRequest(request) {\n if (!(0,_validators__WEBPACK_IMPORTED_MODULE_1__.isPublishMethod)(request.method)) {\n throw new Error("JSON-RPC Request has invalid publish method");\n }\n if (!(0,_validators__WEBPACK_IMPORTED_MODULE_1__.isPublishParams)(request.params)) {\n throw new Error("JSON-RPC Request has invalid publish params");\n }\n const params = request.params;\n (0,_misc__WEBPACK_IMPORTED_MODULE_0__.assertType)(params, "topic");\n (0,_misc__WEBPACK_IMPORTED_MODULE_0__.assertType)(params, "message");\n (0,_misc__WEBPACK_IMPORTED_MODULE_0__.assertType)(params, "ttl", "number");\n return params;\n}\nfunction parseUnsubscribeRequest(request) {\n if (!(0,_validators__WEBPACK_IMPORTED_MODULE_1__.isUnsubscribeMethod)(request.method)) {\n throw new Error("JSON-RPC Request has invalid unsubscribe method");\n }\n if (!(0,_validators__WEBPACK_IMPORTED_MODULE_1__.isUnsubscribeParams)(request.params)) {\n throw new Error("JSON-RPC Request has invalid unsubscribe params");\n }\n const params = request.params;\n (0,_misc__WEBPACK_IMPORTED_MODULE_0__.assertType)(params, "id");\n return params;\n}\nfunction parseSubscriptionRequest(request) {\n if (!(0,_validators__WEBPACK_IMPORTED_MODULE_1__.isSubscriptionMethod)(request.method)) {\n throw new Error("JSON-RPC Request has invalid subscription method");\n }\n if (!(0,_validators__WEBPACK_IMPORTED_MODULE_1__.isSubscriptionParams)(request.params)) {\n throw new Error("JSON-RPC Request has invalid subscription params");\n }\n const params = request.params;\n (0,_misc__WEBPACK_IMPORTED_MODULE_0__.assertType)(params, "id");\n (0,_misc__WEBPACK_IMPORTED_MODULE_0__.assertType)(params, "data");\n return params;\n}\n//# sourceMappingURL=parsers.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/relay-api/dist/esm/parsers.js?')},"./node_modules/@walletconnect/relay-api/dist/esm/types.js":()=>{eval("//# sourceMappingURL=types.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/relay-api/dist/esm/types.js?")},"./node_modules/@walletconnect/relay-api/dist/esm/validators.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ isPublishMethod: () => (/* binding */ isPublishMethod),\n/* harmony export */ isPublishParams: () => (/* binding */ isPublishParams),\n/* harmony export */ isPublishRequest: () => (/* binding */ isPublishRequest),\n/* harmony export */ isSubscribeMethod: () => (/* binding */ isSubscribeMethod),\n/* harmony export */ isSubscribeParams: () => (/* binding */ isSubscribeParams),\n/* harmony export */ isSubscribeRequest: () => (/* binding */ isSubscribeRequest),\n/* harmony export */ isSubscriptionMethod: () => (/* binding */ isSubscriptionMethod),\n/* harmony export */ isSubscriptionParams: () => (/* binding */ isSubscriptionParams),\n/* harmony export */ isSubscriptionRequest: () => (/* binding */ isSubscriptionRequest),\n/* harmony export */ isUnsubscribeMethod: () => (/* binding */ isUnsubscribeMethod),\n/* harmony export */ isUnsubscribeParams: () => (/* binding */ isUnsubscribeParams),\n/* harmony export */ isUnsubscribeRequest: () => (/* binding */ isUnsubscribeRequest)\n/* harmony export */ });\n/* harmony import */ var _misc__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./misc */ "./node_modules/@walletconnect/relay-api/dist/esm/misc.js");\n\nfunction isSubscribeRequest(request) {\n return isSubscribeMethod(request.method) && isSubscribeParams(request.params);\n}\nfunction isSubscribeMethod(method) {\n return (0,_misc__WEBPACK_IMPORTED_MODULE_0__.methodEndsWith)(method, "subscribe");\n}\nfunction isSubscribeParams(params) {\n const required = ["topic"];\n const optional = [];\n return (0,_misc__WEBPACK_IMPORTED_MODULE_0__.checkParams)(params, required, optional);\n}\nfunction isPublishRequest(request) {\n return isPublishMethod(request.method) && isPublishParams(request.params);\n}\nfunction isPublishMethod(method) {\n return (0,_misc__WEBPACK_IMPORTED_MODULE_0__.methodEndsWith)(method, "publish");\n}\nfunction isPublishParams(params) {\n const required = ["message", "topic", "ttl"];\n const optional = ["prompt", "tag"];\n return (0,_misc__WEBPACK_IMPORTED_MODULE_0__.checkParams)(params, required, optional);\n}\nfunction isUnsubscribeRequest(request) {\n return (isUnsubscribeMethod(request.method) && isUnsubscribeParams(request.params));\n}\nfunction isUnsubscribeMethod(method) {\n return (0,_misc__WEBPACK_IMPORTED_MODULE_0__.methodEndsWith)(method, "unsubscribe");\n}\nfunction isUnsubscribeParams(params) {\n const required = ["id", "topic"];\n const optional = [];\n return (0,_misc__WEBPACK_IMPORTED_MODULE_0__.checkParams)(params, required, optional);\n}\nfunction isSubscriptionRequest(request) {\n return (isSubscriptionMethod(request.method) && isSubscriptionParams(request.params));\n}\nfunction isSubscriptionMethod(method) {\n return (0,_misc__WEBPACK_IMPORTED_MODULE_0__.methodEndsWith)(method, "subscription");\n}\nfunction isSubscriptionParams(params) {\n const required = ["id", "data"];\n const optional = [];\n return (0,_misc__WEBPACK_IMPORTED_MODULE_0__.checkParams)(params, required, optional);\n}\n//# sourceMappingURL=validators.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/relay-api/dist/esm/validators.js?')},"./node_modules/@walletconnect/relay-auth/dist/esm/api.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ generateKeyPair: () => (/* binding */ generateKeyPair),\n/* harmony export */ signJWT: () => (/* binding */ signJWT),\n/* harmony export */ verifyJWT: () => (/* binding */ verifyJWT)\n/* harmony export */ });\n/* harmony import */ var _stablelib_ed25519__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @stablelib/ed25519 */ "./node_modules/@stablelib/ed25519/lib/ed25519.js");\n/* harmony import */ var _stablelib_random__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @stablelib/random */ "./node_modules/@stablelib/random/lib/random.js");\n/* harmony import */ var _walletconnect_time__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @walletconnect/time */ "./node_modules/@walletconnect/time/dist/cjs/index.js");\n/* harmony import */ var _walletconnect_time__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_walletconnect_time__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./constants */ "./node_modules/@walletconnect/relay-auth/dist/esm/constants.js");\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./utils */ "./node_modules/@walletconnect/relay-auth/dist/esm/utils.js");\n\n\n\n\n\nfunction generateKeyPair(seed = (0,_stablelib_random__WEBPACK_IMPORTED_MODULE_1__.randomBytes)(_constants__WEBPACK_IMPORTED_MODULE_3__.KEY_PAIR_SEED_LENGTH)) {\n return _stablelib_ed25519__WEBPACK_IMPORTED_MODULE_0__.generateKeyPairFromSeed(seed);\n}\nasync function signJWT(sub, aud, ttl, keyPair, iat = (0,_walletconnect_time__WEBPACK_IMPORTED_MODULE_2__.fromMiliseconds)(Date.now())) {\n const header = { alg: _constants__WEBPACK_IMPORTED_MODULE_3__.JWT_IRIDIUM_ALG, typ: _constants__WEBPACK_IMPORTED_MODULE_3__.JWT_IRIDIUM_TYP };\n const iss = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.encodeIss)(keyPair.publicKey);\n const exp = iat + ttl;\n const payload = { iss, sub, aud, iat, exp };\n const data = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.encodeData)({ header, payload });\n const signature = _stablelib_ed25519__WEBPACK_IMPORTED_MODULE_0__.sign(keyPair.secretKey, data);\n return (0,_utils__WEBPACK_IMPORTED_MODULE_4__.encodeJWT)({ header, payload, signature });\n}\nasync function verifyJWT(jwt) {\n const { header, payload, data, signature } = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.decodeJWT)(jwt);\n if (header.alg !== _constants__WEBPACK_IMPORTED_MODULE_3__.JWT_IRIDIUM_ALG || header.typ !== _constants__WEBPACK_IMPORTED_MODULE_3__.JWT_IRIDIUM_TYP) {\n throw new Error("JWT must use EdDSA algorithm");\n }\n const publicKey = (0,_utils__WEBPACK_IMPORTED_MODULE_4__.decodeIss)(payload.iss);\n return _stablelib_ed25519__WEBPACK_IMPORTED_MODULE_0__.verify(publicKey, data, signature);\n}\n//# sourceMappingURL=api.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/relay-auth/dist/esm/api.js?')},"./node_modules/@walletconnect/relay-auth/dist/esm/constants.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DATA_ENCODING: () => (/* binding */ DATA_ENCODING),\n/* harmony export */ DID_DELIMITER: () => (/* binding */ DID_DELIMITER),\n/* harmony export */ DID_METHOD: () => (/* binding */ DID_METHOD),\n/* harmony export */ DID_PREFIX: () => (/* binding */ DID_PREFIX),\n/* harmony export */ JSON_ENCODING: () => (/* binding */ JSON_ENCODING),\n/* harmony export */ JWT_DELIMITER: () => (/* binding */ JWT_DELIMITER),\n/* harmony export */ JWT_ENCODING: () => (/* binding */ JWT_ENCODING),\n/* harmony export */ JWT_IRIDIUM_ALG: () => (/* binding */ JWT_IRIDIUM_ALG),\n/* harmony export */ JWT_IRIDIUM_TYP: () => (/* binding */ JWT_IRIDIUM_TYP),\n/* harmony export */ KEY_PAIR_SEED_LENGTH: () => (/* binding */ KEY_PAIR_SEED_LENGTH),\n/* harmony export */ MULTICODEC_ED25519_BASE: () => (/* binding */ MULTICODEC_ED25519_BASE),\n/* harmony export */ MULTICODEC_ED25519_ENCODING: () => (/* binding */ MULTICODEC_ED25519_ENCODING),\n/* harmony export */ MULTICODEC_ED25519_HEADER: () => (/* binding */ MULTICODEC_ED25519_HEADER),\n/* harmony export */ MULTICODEC_ED25519_LENGTH: () => (/* binding */ MULTICODEC_ED25519_LENGTH)\n/* harmony export */ });\nconst JWT_IRIDIUM_ALG = "EdDSA";\nconst JWT_IRIDIUM_TYP = "JWT";\nconst JWT_DELIMITER = ".";\nconst JWT_ENCODING = "base64url";\nconst JSON_ENCODING = "utf8";\nconst DATA_ENCODING = "utf8";\nconst DID_DELIMITER = ":";\nconst DID_PREFIX = "did";\nconst DID_METHOD = "key";\nconst MULTICODEC_ED25519_ENCODING = "base58btc";\nconst MULTICODEC_ED25519_BASE = "z";\nconst MULTICODEC_ED25519_HEADER = "K36";\nconst MULTICODEC_ED25519_LENGTH = 32;\nconst KEY_PAIR_SEED_LENGTH = 32;\n//# sourceMappingURL=constants.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/relay-auth/dist/esm/constants.js?')},"./node_modules/@walletconnect/relay-auth/dist/esm/index.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ DATA_ENCODING: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_1__.DATA_ENCODING),\n/* harmony export */ DID_DELIMITER: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_1__.DID_DELIMITER),\n/* harmony export */ DID_METHOD: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_1__.DID_METHOD),\n/* harmony export */ DID_PREFIX: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_1__.DID_PREFIX),\n/* harmony export */ JSON_ENCODING: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_1__.JSON_ENCODING),\n/* harmony export */ JWT_DELIMITER: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_1__.JWT_DELIMITER),\n/* harmony export */ JWT_ENCODING: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_1__.JWT_ENCODING),\n/* harmony export */ JWT_IRIDIUM_ALG: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_1__.JWT_IRIDIUM_ALG),\n/* harmony export */ JWT_IRIDIUM_TYP: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_1__.JWT_IRIDIUM_TYP),\n/* harmony export */ KEY_PAIR_SEED_LENGTH: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_1__.KEY_PAIR_SEED_LENGTH),\n/* harmony export */ MULTICODEC_ED25519_BASE: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_1__.MULTICODEC_ED25519_BASE),\n/* harmony export */ MULTICODEC_ED25519_ENCODING: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_1__.MULTICODEC_ED25519_ENCODING),\n/* harmony export */ MULTICODEC_ED25519_HEADER: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_1__.MULTICODEC_ED25519_HEADER),\n/* harmony export */ MULTICODEC_ED25519_LENGTH: () => (/* reexport safe */ _constants__WEBPACK_IMPORTED_MODULE_1__.MULTICODEC_ED25519_LENGTH),\n/* harmony export */ decodeData: () => (/* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_3__.decodeData),\n/* harmony export */ decodeIss: () => (/* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_3__.decodeIss),\n/* harmony export */ decodeJSON: () => (/* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_3__.decodeJSON),\n/* harmony export */ decodeJWT: () => (/* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_3__.decodeJWT),\n/* harmony export */ decodeSig: () => (/* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_3__.decodeSig),\n/* harmony export */ encodeData: () => (/* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_3__.encodeData),\n/* harmony export */ encodeIss: () => (/* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_3__.encodeIss),\n/* harmony export */ encodeJSON: () => (/* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_3__.encodeJSON),\n/* harmony export */ encodeJWT: () => (/* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_3__.encodeJWT),\n/* harmony export */ encodeSig: () => (/* reexport safe */ _utils__WEBPACK_IMPORTED_MODULE_3__.encodeSig),\n/* harmony export */ generateKeyPair: () => (/* reexport safe */ _api__WEBPACK_IMPORTED_MODULE_0__.generateKeyPair),\n/* harmony export */ signJWT: () => (/* reexport safe */ _api__WEBPACK_IMPORTED_MODULE_0__.signJWT),\n/* harmony export */ verifyJWT: () => (/* reexport safe */ _api__WEBPACK_IMPORTED_MODULE_0__.verifyJWT)\n/* harmony export */ });\n/* harmony import */ var _api__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./api */ "./node_modules/@walletconnect/relay-auth/dist/esm/api.js");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./constants */ "./node_modules/@walletconnect/relay-auth/dist/esm/constants.js");\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./types */ "./node_modules/@walletconnect/relay-auth/dist/esm/types.js");\n/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_types__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in _types__WEBPACK_IMPORTED_MODULE_2__) if(["default","generateKeyPair","signJWT","verifyJWT","DATA_ENCODING","DID_DELIMITER","DID_METHOD","DID_PREFIX","JSON_ENCODING","JWT_DELIMITER","JWT_ENCODING","JWT_IRIDIUM_ALG","JWT_IRIDIUM_TYP","KEY_PAIR_SEED_LENGTH","MULTICODEC_ED25519_BASE","MULTICODEC_ED25519_ENCODING","MULTICODEC_ED25519_HEADER","MULTICODEC_ED25519_LENGTH"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => _types__WEBPACK_IMPORTED_MODULE_2__[__WEBPACK_IMPORT_KEY__]\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./utils */ "./node_modules/@walletconnect/relay-auth/dist/esm/utils.js");\n\n\n\n\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/relay-auth/dist/esm/index.js?')},"./node_modules/@walletconnect/relay-auth/dist/esm/types.js":()=>{eval("//# sourceMappingURL=types.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/relay-auth/dist/esm/types.js?")},"./node_modules/@walletconnect/relay-auth/dist/esm/utils.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ decodeData: () => (/* binding */ decodeData),\n/* harmony export */ decodeIss: () => (/* binding */ decodeIss),\n/* harmony export */ decodeJSON: () => (/* binding */ decodeJSON),\n/* harmony export */ decodeJWT: () => (/* binding */ decodeJWT),\n/* harmony export */ decodeSig: () => (/* binding */ decodeSig),\n/* harmony export */ encodeData: () => (/* binding */ encodeData),\n/* harmony export */ encodeIss: () => (/* binding */ encodeIss),\n/* harmony export */ encodeJSON: () => (/* binding */ encodeJSON),\n/* harmony export */ encodeJWT: () => (/* binding */ encodeJWT),\n/* harmony export */ encodeSig: () => (/* binding */ encodeSig)\n/* harmony export */ });\n/* harmony import */ var uint8arrays_concat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! uint8arrays/concat */ "./node_modules/uint8arrays/esm/src/concat.js");\n/* harmony import */ var uint8arrays_to_string__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! uint8arrays/to-string */ "./node_modules/uint8arrays/esm/src/to-string.js");\n/* harmony import */ var uint8arrays_from_string__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! uint8arrays/from-string */ "./node_modules/uint8arrays/esm/src/from-string.js");\n/* harmony import */ var _walletconnect_safe_json__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @walletconnect/safe-json */ "./node_modules/@walletconnect/safe-json/dist/esm/index.js");\n/* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./constants */ "./node_modules/@walletconnect/relay-auth/dist/esm/constants.js");\n\n\n\n\n\nfunction decodeJSON(str) {\n return (0,_walletconnect_safe_json__WEBPACK_IMPORTED_MODULE_3__.safeJsonParse)((0,uint8arrays_to_string__WEBPACK_IMPORTED_MODULE_1__.toString)((0,uint8arrays_from_string__WEBPACK_IMPORTED_MODULE_2__.fromString)(str, _constants__WEBPACK_IMPORTED_MODULE_4__.JWT_ENCODING), _constants__WEBPACK_IMPORTED_MODULE_4__.JSON_ENCODING));\n}\nfunction encodeJSON(val) {\n return (0,uint8arrays_to_string__WEBPACK_IMPORTED_MODULE_1__.toString)((0,uint8arrays_from_string__WEBPACK_IMPORTED_MODULE_2__.fromString)((0,_walletconnect_safe_json__WEBPACK_IMPORTED_MODULE_3__.safeJsonStringify)(val), _constants__WEBPACK_IMPORTED_MODULE_4__.JSON_ENCODING), _constants__WEBPACK_IMPORTED_MODULE_4__.JWT_ENCODING);\n}\nfunction encodeIss(publicKey) {\n const header = (0,uint8arrays_from_string__WEBPACK_IMPORTED_MODULE_2__.fromString)(_constants__WEBPACK_IMPORTED_MODULE_4__.MULTICODEC_ED25519_HEADER, _constants__WEBPACK_IMPORTED_MODULE_4__.MULTICODEC_ED25519_ENCODING);\n const multicodec = _constants__WEBPACK_IMPORTED_MODULE_4__.MULTICODEC_ED25519_BASE +\n (0,uint8arrays_to_string__WEBPACK_IMPORTED_MODULE_1__.toString)((0,uint8arrays_concat__WEBPACK_IMPORTED_MODULE_0__.concat)([header, publicKey]), _constants__WEBPACK_IMPORTED_MODULE_4__.MULTICODEC_ED25519_ENCODING);\n return [_constants__WEBPACK_IMPORTED_MODULE_4__.DID_PREFIX, _constants__WEBPACK_IMPORTED_MODULE_4__.DID_METHOD, multicodec].join(_constants__WEBPACK_IMPORTED_MODULE_4__.DID_DELIMITER);\n}\nfunction decodeIss(issuer) {\n const [prefix, method, multicodec] = issuer.split(_constants__WEBPACK_IMPORTED_MODULE_4__.DID_DELIMITER);\n if (prefix !== _constants__WEBPACK_IMPORTED_MODULE_4__.DID_PREFIX || method !== _constants__WEBPACK_IMPORTED_MODULE_4__.DID_METHOD) {\n throw new Error(`Issuer must be a DID with method "key"`);\n }\n const base = multicodec.slice(0, 1);\n if (base !== _constants__WEBPACK_IMPORTED_MODULE_4__.MULTICODEC_ED25519_BASE) {\n throw new Error(`Issuer must be a key in mulicodec format`);\n }\n const bytes = (0,uint8arrays_from_string__WEBPACK_IMPORTED_MODULE_2__.fromString)(multicodec.slice(1), _constants__WEBPACK_IMPORTED_MODULE_4__.MULTICODEC_ED25519_ENCODING);\n const type = (0,uint8arrays_to_string__WEBPACK_IMPORTED_MODULE_1__.toString)(bytes.slice(0, 2), _constants__WEBPACK_IMPORTED_MODULE_4__.MULTICODEC_ED25519_ENCODING);\n if (type !== _constants__WEBPACK_IMPORTED_MODULE_4__.MULTICODEC_ED25519_HEADER) {\n throw new Error(`Issuer must be a public key with type "Ed25519"`);\n }\n const publicKey = bytes.slice(2);\n if (publicKey.length !== _constants__WEBPACK_IMPORTED_MODULE_4__.MULTICODEC_ED25519_LENGTH) {\n throw new Error(`Issuer must be a public key with length 32 bytes`);\n }\n return publicKey;\n}\nfunction encodeSig(bytes) {\n return (0,uint8arrays_to_string__WEBPACK_IMPORTED_MODULE_1__.toString)(bytes, _constants__WEBPACK_IMPORTED_MODULE_4__.JWT_ENCODING);\n}\nfunction decodeSig(encoded) {\n return (0,uint8arrays_from_string__WEBPACK_IMPORTED_MODULE_2__.fromString)(encoded, _constants__WEBPACK_IMPORTED_MODULE_4__.JWT_ENCODING);\n}\nfunction encodeData(params) {\n return (0,uint8arrays_from_string__WEBPACK_IMPORTED_MODULE_2__.fromString)([encodeJSON(params.header), encodeJSON(params.payload)].join(_constants__WEBPACK_IMPORTED_MODULE_4__.JWT_DELIMITER), _constants__WEBPACK_IMPORTED_MODULE_4__.DATA_ENCODING);\n}\nfunction decodeData(data) {\n const params = (0,uint8arrays_to_string__WEBPACK_IMPORTED_MODULE_1__.toString)(data, _constants__WEBPACK_IMPORTED_MODULE_4__.DATA_ENCODING).split(_constants__WEBPACK_IMPORTED_MODULE_4__.JWT_DELIMITER);\n const header = decodeJSON(params[0]);\n const payload = decodeJSON(params[1]);\n return { header, payload };\n}\nfunction encodeJWT(params) {\n return [\n encodeJSON(params.header),\n encodeJSON(params.payload),\n encodeSig(params.signature),\n ].join(_constants__WEBPACK_IMPORTED_MODULE_4__.JWT_DELIMITER);\n}\nfunction decodeJWT(jwt) {\n const params = jwt.split(_constants__WEBPACK_IMPORTED_MODULE_4__.JWT_DELIMITER);\n const header = decodeJSON(params[0]);\n const payload = decodeJSON(params[1]);\n const signature = decodeSig(params[2]);\n const data = (0,uint8arrays_from_string__WEBPACK_IMPORTED_MODULE_2__.fromString)(params.slice(0, 2).join(_constants__WEBPACK_IMPORTED_MODULE_4__.JWT_DELIMITER), _constants__WEBPACK_IMPORTED_MODULE_4__.DATA_ENCODING);\n return { header, payload, signature, data };\n}\n//# sourceMappingURL=utils.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/relay-auth/dist/esm/utils.js?')},"./node_modules/@walletconnect/safe-json/dist/esm/index.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ safeJsonParse: () => (/* binding */ safeJsonParse),\n/* harmony export */ safeJsonStringify: () => (/* binding */ safeJsonStringify)\n/* harmony export */ });\nconst JSONStringify = data => JSON.stringify(data, (_, value) => typeof value === "bigint" ? value.toString() + "n" : value);\nconst JSONParse = json => {\n const numbersBiggerThanMaxInt = /([\\[:])?(\\d{17,}|(?:[9](?:[1-9]07199254740991|0[1-9]7199254740991|00[8-9]199254740991|007[2-9]99254740991|007199[3-9]54740991|0071992[6-9]4740991|00719925[5-9]740991|007199254[8-9]40991|0071992547[5-9]0991|00719925474[1-9]991|00719925474099[2-9])))([,\\}\\]])/g;\n const serializedData = json.replace(numbersBiggerThanMaxInt, "$1\\"$2n\\"$3");\n return JSON.parse(serializedData, (_, value) => {\n const isCustomFormatBigInt = typeof value === "string" && value.match(/^\\d+n$/);\n if (isCustomFormatBigInt)\n return BigInt(value.substring(0, value.length - 1));\n return value;\n });\n};\nfunction safeJsonParse(value) {\n if (typeof value !== "string") {\n throw new Error(`Cannot safe json parse value of type ${typeof value}`);\n }\n try {\n return JSONParse(value);\n }\n catch (_a) {\n return value;\n }\n}\nfunction safeJsonStringify(value) {\n return typeof value === "string" ? value : JSONStringify(value) || "";\n}\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/safe-json/dist/esm/index.js?')},"./node_modules/@walletconnect/sign-client/dist/index.es.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ENGINE_CONTEXT: () => (/* binding */ ce),\n/* harmony export */ ENGINE_QUEUE_STATES: () => (/* binding */ I),\n/* harmony export */ ENGINE_RPC_OPTS: () => (/* binding */ V),\n/* harmony export */ HISTORY_CONTEXT: () => (/* binding */ is),\n/* harmony export */ HISTORY_EVENTS: () => (/* binding */ ts),\n/* harmony export */ HISTORY_STORAGE_VERSION: () => (/* binding */ rs),\n/* harmony export */ METHODS_TO_VERIFY: () => (/* binding */ pe),\n/* harmony export */ PROPOSAL_CONTEXT: () => (/* binding */ ne),\n/* harmony export */ PROPOSAL_EXPIRY: () => (/* binding */ ns),\n/* harmony export */ PROPOSAL_EXPIRY_MESSAGE: () => (/* binding */ oe),\n/* harmony export */ REQUEST_CONTEXT: () => (/* binding */ le),\n/* harmony export */ SESSION_CONTEXT: () => (/* binding */ ae),\n/* harmony export */ SESSION_EXPIRY: () => (/* binding */ A),\n/* harmony export */ SESSION_REQUEST_EXPIRY_BOUNDARIES: () => (/* binding */ U),\n/* harmony export */ SIGN_CLIENT_CONTEXT: () => (/* binding */ H),\n/* harmony export */ SIGN_CLIENT_DEFAULT: () => (/* binding */ M),\n/* harmony export */ SIGN_CLIENT_EVENTS: () => (/* binding */ es),\n/* harmony export */ SIGN_CLIENT_PROTOCOL: () => (/* binding */ X),\n/* harmony export */ SIGN_CLIENT_STORAGE_OPTIONS: () => (/* binding */ ss),\n/* harmony export */ SIGN_CLIENT_STORAGE_PREFIX: () => (/* binding */ G),\n/* harmony export */ SIGN_CLIENT_VERSION: () => (/* binding */ F),\n/* harmony export */ SignClient: () => (/* binding */ ms),\n/* harmony export */ WALLETCONNECT_DEEPLINK_CHOICE: () => (/* binding */ W),\n/* harmony export */ "default": () => (/* binding */ Q)\n/* harmony export */ });\n/* harmony import */ var _walletconnect_core__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @walletconnect/core */ "./node_modules/@walletconnect/core/dist/index.es.js");\n/* harmony import */ var _walletconnect_logger__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @walletconnect/logger */ "./node_modules/@walletconnect/logger/dist/cjs/index.js");\n/* harmony import */ var _walletconnect_logger__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_walletconnect_logger__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _walletconnect_types__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @walletconnect/types */ "./node_modules/@walletconnect/types/dist/index.es.js");\n/* harmony import */ var _walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @walletconnect/utils */ "./node_modules/@walletconnect/utils/dist/index.es.js");\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! events */ "./node_modules/events/events.js");\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(events__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _walletconnect_time__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @walletconnect/time */ "./node_modules/@walletconnect/time/dist/cjs/index.js");\n/* harmony import */ var _walletconnect_time__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_walletconnect_time__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @walletconnect/jsonrpc-utils */ "./node_modules/@walletconnect/jsonrpc-utils/dist/esm/index.js");\nconst X="wc",F=2,H="client",G=`${X}@${F}:${H}:`,M={name:H,logger:"error",controller:!1,relayUrl:"wss://relay.walletconnect.com"},es={session_proposal:"session_proposal",session_update:"session_update",session_extend:"session_extend",session_ping:"session_ping",session_delete:"session_delete",session_expire:"session_expire",session_request:"session_request",session_request_sent:"session_request_sent",session_event:"session_event",proposal_expire:"proposal_expire"},ss={database:":memory:"},W="WALLETCONNECT_DEEPLINK_CHOICE",ts={created:"history_created",updated:"history_updated",deleted:"history_deleted",sync:"history_sync"},is="history",rs="0.3",ne="proposal",ns=_walletconnect_time__WEBPACK_IMPORTED_MODULE_2__.THIRTY_DAYS,oe="Proposal expired",ae="session",A=_walletconnect_time__WEBPACK_IMPORTED_MODULE_2__.SEVEN_DAYS,ce="engine",V={wc_sessionPropose:{req:{ttl:_walletconnect_time__WEBPACK_IMPORTED_MODULE_2__.FIVE_MINUTES,prompt:!0,tag:1100},res:{ttl:_walletconnect_time__WEBPACK_IMPORTED_MODULE_2__.FIVE_MINUTES,prompt:!1,tag:1101}},wc_sessionSettle:{req:{ttl:_walletconnect_time__WEBPACK_IMPORTED_MODULE_2__.FIVE_MINUTES,prompt:!1,tag:1102},res:{ttl:_walletconnect_time__WEBPACK_IMPORTED_MODULE_2__.FIVE_MINUTES,prompt:!1,tag:1103}},wc_sessionUpdate:{req:{ttl:_walletconnect_time__WEBPACK_IMPORTED_MODULE_2__.ONE_DAY,prompt:!1,tag:1104},res:{ttl:_walletconnect_time__WEBPACK_IMPORTED_MODULE_2__.ONE_DAY,prompt:!1,tag:1105}},wc_sessionExtend:{req:{ttl:_walletconnect_time__WEBPACK_IMPORTED_MODULE_2__.ONE_DAY,prompt:!1,tag:1106},res:{ttl:_walletconnect_time__WEBPACK_IMPORTED_MODULE_2__.ONE_DAY,prompt:!1,tag:1107}},wc_sessionRequest:{req:{ttl:_walletconnect_time__WEBPACK_IMPORTED_MODULE_2__.FIVE_MINUTES,prompt:!0,tag:1108},res:{ttl:_walletconnect_time__WEBPACK_IMPORTED_MODULE_2__.FIVE_MINUTES,prompt:!1,tag:1109}},wc_sessionEvent:{req:{ttl:_walletconnect_time__WEBPACK_IMPORTED_MODULE_2__.FIVE_MINUTES,prompt:!0,tag:1110},res:{ttl:_walletconnect_time__WEBPACK_IMPORTED_MODULE_2__.FIVE_MINUTES,prompt:!1,tag:1111}},wc_sessionDelete:{req:{ttl:_walletconnect_time__WEBPACK_IMPORTED_MODULE_2__.ONE_DAY,prompt:!1,tag:1112},res:{ttl:_walletconnect_time__WEBPACK_IMPORTED_MODULE_2__.ONE_DAY,prompt:!1,tag:1113}},wc_sessionPing:{req:{ttl:_walletconnect_time__WEBPACK_IMPORTED_MODULE_2__.THIRTY_SECONDS,prompt:!1,tag:1114},res:{ttl:_walletconnect_time__WEBPACK_IMPORTED_MODULE_2__.THIRTY_SECONDS,prompt:!1,tag:1115}}},U={min:_walletconnect_time__WEBPACK_IMPORTED_MODULE_2__.FIVE_MINUTES,max:_walletconnect_time__WEBPACK_IMPORTED_MODULE_2__.SEVEN_DAYS},I={idle:"IDLE",active:"ACTIVE"},le="request",pe=["wc_sessionPropose","wc_sessionRequest","wc_authRequest"];var os=Object.defineProperty,as=Object.defineProperties,cs=Object.getOwnPropertyDescriptors,he=Object.getOwnPropertySymbols,ls=Object.prototype.hasOwnProperty,ps=Object.prototype.propertyIsEnumerable,de=(m,r,e)=>r in m?os(m,r,{enumerable:!0,configurable:!0,writable:!0,value:e}):m[r]=e,g=(m,r)=>{for(var e in r||(r={}))ls.call(r,e)&&de(m,e,r[e]);if(he)for(var e of he(r))ps.call(r,e)&&de(m,e,r[e]);return m},b=(m,r)=>as(m,cs(r));class hs extends _walletconnect_types__WEBPACK_IMPORTED_MODULE_4__.IEngine{constructor(r){super(r),this.name=ce,this.events=new (events__WEBPACK_IMPORTED_MODULE_1___default()),this.initialized=!1,this.ignoredPayloadTypes=[_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.TYPE_1],this.requestQueue={state:I.idle,queue:[]},this.sessionRequestQueue={state:I.idle,queue:[]},this.requestQueueDelay=_walletconnect_time__WEBPACK_IMPORTED_MODULE_2__.ONE_SECOND,this.init=async()=>{this.initialized||(await this.cleanup(),this.registerRelayerEvents(),this.registerExpirerEvents(),this.registerPairingEvents(),this.client.core.pairing.register({methods:Object.keys(V)}),this.initialized=!0,setTimeout(()=>{this.sessionRequestQueue.queue=this.getPendingSessionRequests(),this.processSessionRequestQueue()},(0,_walletconnect_time__WEBPACK_IMPORTED_MODULE_2__.toMiliseconds)(this.requestQueueDelay)))},this.connect=async e=>{await this.isInitialized();const s=b(g({},e),{requiredNamespaces:e.requiredNamespaces||{},optionalNamespaces:e.optionalNamespaces||{}});await this.isValidConnect(s);const{pairingTopic:t,requiredNamespaces:i,optionalNamespaces:n,sessionProperties:o,relays:a}=s;let c=t,p,d=!1;if(c&&(d=this.client.core.pairing.pairings.get(c).active),!c||!d){const{topic:v,uri:S}=await this.client.core.pairing.create();c=v,p=S}const h=await this.client.core.crypto.generateKeyPair(),R=g({requiredNamespaces:i,optionalNamespaces:n,relays:a??[{protocol:_walletconnect_core__WEBPACK_IMPORTED_MODULE_6__.RELAYER_DEFAULT_PROTOCOL}],proposer:{publicKey:h,metadata:this.client.metadata}},o&&{sessionProperties:o}),{reject:w,resolve:T,done:K}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.createDelayedPromise)(_walletconnect_time__WEBPACK_IMPORTED_MODULE_2__.FIVE_MINUTES,oe);if(this.events.once((0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.engineEvent)("session_connect"),async({error:v,session:S})=>{if(v)w(v);else if(S){S.self.publicKey=h;const B=b(g({},S),{requiredNamespaces:S.requiredNamespaces,optionalNamespaces:S.optionalNamespaces});await this.client.session.set(S.topic,B),await this.setExpiry(S.topic,S.expiry),c&&await this.client.core.pairing.updateMetadata({topic:c,metadata:S.peer.metadata}),T(B)}}),!c){const{message:v}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getInternalError)("NO_MATCHING_KEY",`connect() pairing topic: ${c}`);throw new Error(v)}const L=await this.sendRequest({topic:c,method:"wc_sessionPropose",params:R}),ue=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.calcExpiry)(_walletconnect_time__WEBPACK_IMPORTED_MODULE_2__.FIVE_MINUTES);return await this.setProposal(L,g({id:L,expiry:ue},R)),{uri:p,approval:K}},this.pair=async e=>(await this.isInitialized(),await this.client.core.pairing.pair(e)),this.approve=async e=>{await this.isInitialized(),await this.isValidApprove(e);const{id:s,relayProtocol:t,namespaces:i,sessionProperties:n}=e,o=this.client.proposal.get(s);let{pairingTopic:a,proposer:c,requiredNamespaces:p,optionalNamespaces:d}=o;a=a||"",(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isValidObject)(p)||(p=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getRequiredNamespacesFromNamespaces)(i,"approve()"));const h=await this.client.core.crypto.generateKeyPair(),R=c.publicKey,w=await this.client.core.crypto.generateSharedKey(h,R);a&&s&&(await this.client.core.pairing.updateMetadata({topic:a,metadata:c.metadata}),await this.sendResult({id:s,topic:a,result:{relay:{protocol:t??"irn"},responderPublicKey:h}}),await this.client.proposal.delete(s,(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getSdkError)("USER_DISCONNECTED")),await this.client.core.pairing.activate({topic:a}));const T=g({relay:{protocol:t??"irn"},namespaces:i,requiredNamespaces:p,optionalNamespaces:d,pairingTopic:a,controller:{publicKey:h,metadata:this.client.metadata},expiry:(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.calcExpiry)(A)},n&&{sessionProperties:n});await this.client.core.relayer.subscribe(w),await this.sendRequest({topic:w,method:"wc_sessionSettle",params:T,throwOnFailedPublish:!0});const K=b(g({},T),{topic:w,pairingTopic:a,acknowledged:!1,self:T.controller,peer:{publicKey:c.publicKey,metadata:c.metadata},controller:h});return await this.client.session.set(w,K),await this.setExpiry(w,(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.calcExpiry)(A)),{topic:w,acknowledged:()=>new Promise(L=>setTimeout(()=>L(this.client.session.get(w)),500))}},this.reject=async e=>{await this.isInitialized(),await this.isValidReject(e);const{id:s,reason:t}=e,{pairingTopic:i}=this.client.proposal.get(s);i&&(await this.sendError(s,i,t),await this.client.proposal.delete(s,(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getSdkError)("USER_DISCONNECTED")))},this.update=async e=>{await this.isInitialized(),await this.isValidUpdate(e);const{topic:s,namespaces:t}=e,i=await this.sendRequest({topic:s,method:"wc_sessionUpdate",params:{namespaces:t}}),{done:n,resolve:o,reject:a}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.createDelayedPromise)();return this.events.once((0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.engineEvent)("session_update",i),({error:c})=>{c?a(c):o()}),await this.client.session.update(s,{namespaces:t}),{acknowledged:n}},this.extend=async e=>{await this.isInitialized(),await this.isValidExtend(e);const{topic:s}=e,t=await this.sendRequest({topic:s,method:"wc_sessionExtend",params:{}}),{done:i,resolve:n,reject:o}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.createDelayedPromise)();return this.events.once((0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.engineEvent)("session_extend",t),({error:a})=>{a?o(a):n()}),await this.setExpiry(s,(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.calcExpiry)(A)),{acknowledged:i}},this.request=async e=>{await this.isInitialized(),await this.isValidRequest(e);const{chainId:s,request:t,topic:i,expiry:n}=e,o=(0,_walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_3__.payloadId)(),{done:a,resolve:c,reject:p}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.createDelayedPromise)(n,"Request expired. Please try again.");return this.events.once((0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.engineEvent)("session_request",o),({error:d,result:h})=>{d?p(d):c(h)}),await Promise.all([new Promise(async d=>{await this.sendRequest({clientRpcId:o,topic:i,method:"wc_sessionRequest",params:{request:t,chainId:s},expiry:n,throwOnFailedPublish:!0}).catch(h=>p(h)),this.client.events.emit("session_request_sent",{topic:i,request:t,chainId:s,id:o}),d()}),new Promise(async d=>{const h=await (0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getDeepLink)(this.client.core.storage,W);(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.handleDeeplinkRedirect)({id:o,topic:i,wcDeepLink:h}),d()}),a()]).then(d=>d[2])},this.respond=async e=>{await this.isInitialized(),await this.isValidRespond(e);const{topic:s,response:t}=e,{id:i}=t;(0,_walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_3__.isJsonRpcResult)(t)?await this.sendResult({id:i,topic:s,result:t.result,throwOnFailedPublish:!0}):(0,_walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_3__.isJsonRpcError)(t)&&await this.sendError(i,s,t.error),this.cleanupAfterResponse(e)},this.ping=async e=>{await this.isInitialized(),await this.isValidPing(e);const{topic:s}=e;if(this.client.session.keys.includes(s)){const t=await this.sendRequest({topic:s,method:"wc_sessionPing",params:{}}),{done:i,resolve:n,reject:o}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.createDelayedPromise)();this.events.once((0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.engineEvent)("session_ping",t),({error:a})=>{a?o(a):n()}),await i()}else this.client.core.pairing.pairings.keys.includes(s)&&await this.client.core.pairing.ping({topic:s})},this.emit=async e=>{await this.isInitialized(),await this.isValidEmit(e);const{topic:s,event:t,chainId:i}=e;await this.sendRequest({topic:s,method:"wc_sessionEvent",params:{event:t,chainId:i}})},this.disconnect=async e=>{await this.isInitialized(),await this.isValidDisconnect(e);const{topic:s}=e;this.client.session.keys.includes(s)?(await this.sendRequest({topic:s,method:"wc_sessionDelete",params:(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getSdkError)("USER_DISCONNECTED"),throwOnFailedPublish:!0}),await this.deleteSession(s)):await this.client.core.pairing.disconnect({topic:s})},this.find=e=>(this.isInitialized(),this.client.session.getAll().filter(s=>(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isSessionCompatible)(s,e))),this.getPendingSessionRequests=()=>(this.isInitialized(),this.client.pendingRequest.getAll()),this.cleanupDuplicatePairings=async e=>{if(e.pairingTopic)try{const s=this.client.core.pairing.pairings.get(e.pairingTopic),t=this.client.core.pairing.pairings.getAll().filter(i=>{var n,o;return((n=i.peerMetadata)==null?void 0:n.url)&&((o=i.peerMetadata)==null?void 0:o.url)===e.peer.metadata.url&&i.topic&&i.topic!==s.topic});if(t.length===0)return;this.client.logger.info(`Cleaning up ${t.length} duplicate pairing(s)`),await Promise.all(t.map(i=>this.client.core.pairing.disconnect({topic:i.topic}))),this.client.logger.info("Duplicate pairings clean up finished")}catch(s){this.client.logger.error(s)}},this.deleteSession=async(e,s)=>{const{self:t}=this.client.session.get(e);await this.client.core.relayer.unsubscribe(e),this.client.session.delete(e,(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getSdkError)("USER_DISCONNECTED")),this.client.core.crypto.keychain.has(t.publicKey)&&await this.client.core.crypto.deleteKeyPair(t.publicKey),this.client.core.crypto.keychain.has(e)&&await this.client.core.crypto.deleteSymKey(e),s||this.client.core.expirer.del(e),this.client.core.storage.removeItem(W).catch(i=>this.client.logger.warn(i))},this.deleteProposal=async(e,s)=>{await Promise.all([this.client.proposal.delete(e,(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getSdkError)("USER_DISCONNECTED")),s?Promise.resolve():this.client.core.expirer.del(e)])},this.deletePendingSessionRequest=async(e,s,t=!1)=>{await Promise.all([this.client.pendingRequest.delete(e,s),t?Promise.resolve():this.client.core.expirer.del(e)]),this.sessionRequestQueue.queue=this.sessionRequestQueue.queue.filter(i=>i.id!==e),t&&(this.sessionRequestQueue.state=I.idle)},this.setExpiry=async(e,s)=>{this.client.session.keys.includes(e)&&await this.client.session.update(e,{expiry:s}),this.client.core.expirer.set(e,s)},this.setProposal=async(e,s)=>{await this.client.proposal.set(e,s),this.client.core.expirer.set(e,s.expiry)},this.setPendingSessionRequest=async e=>{const s=V.wc_sessionRequest.req.ttl,{id:t,topic:i,params:n,verifyContext:o}=e;await this.client.pendingRequest.set(t,{id:t,topic:i,params:n,verifyContext:o}),s&&this.client.core.expirer.set(t,(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.calcExpiry)(s))},this.sendRequest=async e=>{const{topic:s,method:t,params:i,expiry:n,relayRpcId:o,clientRpcId:a,throwOnFailedPublish:c}=e,p=(0,_walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_3__.formatJsonRpcRequest)(t,i,a);if((0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isBrowser)()&&pe.includes(t)){const R=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.hashMessage)(JSON.stringify(p));this.client.core.verify.register({attestationId:R})}const d=await this.client.core.crypto.encode(s,p),h=V[t].req;return n&&(h.ttl=n),o&&(h.id=o),this.client.core.history.set(s,p),c?(h.internal=b(g({},h.internal),{throwOnFailedPublish:!0}),await this.client.core.relayer.publish(s,d,h)):this.client.core.relayer.publish(s,d,h).catch(R=>this.client.logger.error(R)),p.id},this.sendResult=async e=>{const{id:s,topic:t,result:i,throwOnFailedPublish:n}=e,o=(0,_walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_3__.formatJsonRpcResult)(s,i),a=await this.client.core.crypto.encode(t,o),c=await this.client.core.history.get(t,s),p=V[c.request.method].res;n?(p.internal=b(g({},p.internal),{throwOnFailedPublish:!0}),await this.client.core.relayer.publish(t,a,p)):this.client.core.relayer.publish(t,a,p).catch(d=>this.client.logger.error(d)),await this.client.core.history.resolve(o)},this.sendError=async(e,s,t)=>{const i=(0,_walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_3__.formatJsonRpcError)(e,t),n=await this.client.core.crypto.encode(s,i),o=await this.client.core.history.get(s,e),a=V[o.request.method].res;this.client.core.relayer.publish(s,n,a),await this.client.core.history.resolve(i)},this.cleanup=async()=>{const e=[],s=[];this.client.session.getAll().forEach(t=>{(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isExpired)(t.expiry)&&e.push(t.topic)}),this.client.proposal.getAll().forEach(t=>{(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isExpired)(t.expiry)&&s.push(t.id)}),await Promise.all([...e.map(t=>this.deleteSession(t)),...s.map(t=>this.deleteProposal(t))])},this.onRelayEventRequest=async e=>{this.requestQueue.queue.push(e),await this.processRequestsQueue()},this.processRequestsQueue=async()=>{if(this.requestQueue.state===I.active){this.client.logger.info("Request queue already active, skipping...");return}for(this.client.logger.info(`Request queue starting with ${this.requestQueue.queue.length} requests`);this.requestQueue.queue.length>0;){this.requestQueue.state=I.active;const e=this.requestQueue.queue.shift();if(e)try{this.processRequest(e),await new Promise(s=>setTimeout(s,300))}catch(s){this.client.logger.warn(s)}}this.requestQueue.state=I.idle},this.processRequest=e=>{const{topic:s,payload:t}=e,i=t.method;switch(i){case"wc_sessionPropose":return this.onSessionProposeRequest(s,t);case"wc_sessionSettle":return this.onSessionSettleRequest(s,t);case"wc_sessionUpdate":return this.onSessionUpdateRequest(s,t);case"wc_sessionExtend":return this.onSessionExtendRequest(s,t);case"wc_sessionPing":return this.onSessionPingRequest(s,t);case"wc_sessionDelete":return this.onSessionDeleteRequest(s,t);case"wc_sessionRequest":return this.onSessionRequest(s,t);case"wc_sessionEvent":return this.onSessionEventRequest(s,t);default:return this.client.logger.info(`Unsupported request method ${i}`)}},this.onRelayEventResponse=async e=>{const{topic:s,payload:t}=e,i=(await this.client.core.history.get(s,t.id)).request.method;switch(i){case"wc_sessionPropose":return this.onSessionProposeResponse(s,t);case"wc_sessionSettle":return this.onSessionSettleResponse(s,t);case"wc_sessionUpdate":return this.onSessionUpdateResponse(s,t);case"wc_sessionExtend":return this.onSessionExtendResponse(s,t);case"wc_sessionPing":return this.onSessionPingResponse(s,t);case"wc_sessionRequest":return this.onSessionRequestResponse(s,t);default:return this.client.logger.info(`Unsupported response method ${i}`)}},this.onRelayEventUnknownPayload=e=>{const{topic:s}=e,{message:t}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getInternalError)("MISSING_OR_INVALID",`Decoded payload on topic ${s} is not identifiable as a JSON-RPC request or a response.`);throw new Error(t)},this.onSessionProposeRequest=async(e,s)=>{const{params:t,id:i}=s;try{this.isValidConnect(g({},s.params));const n=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.calcExpiry)(_walletconnect_time__WEBPACK_IMPORTED_MODULE_2__.FIVE_MINUTES),o=g({id:i,pairingTopic:e,expiry:n},t);await this.setProposal(i,o);const a=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.hashMessage)(JSON.stringify(s)),c=await this.getVerifyContext(a,o.proposer.metadata);this.client.events.emit("session_proposal",{id:i,params:o,verifyContext:c})}catch(n){await this.sendError(i,e,n),this.client.logger.error(n)}},this.onSessionProposeResponse=async(e,s)=>{const{id:t}=s;if((0,_walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_3__.isJsonRpcResult)(s)){const{result:i}=s;this.client.logger.trace({type:"method",method:"onSessionProposeResponse",result:i});const n=this.client.proposal.get(t);this.client.logger.trace({type:"method",method:"onSessionProposeResponse",proposal:n});const o=n.proposer.publicKey;this.client.logger.trace({type:"method",method:"onSessionProposeResponse",selfPublicKey:o});const a=i.responderPublicKey;this.client.logger.trace({type:"method",method:"onSessionProposeResponse",peerPublicKey:a});const c=await this.client.core.crypto.generateSharedKey(o,a);this.client.logger.trace({type:"method",method:"onSessionProposeResponse",sessionTopic:c});const p=await this.client.core.relayer.subscribe(c);this.client.logger.trace({type:"method",method:"onSessionProposeResponse",subscriptionId:p}),await this.client.core.pairing.activate({topic:e})}else (0,_walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_3__.isJsonRpcError)(s)&&(await this.client.proposal.delete(t,(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getSdkError)("USER_DISCONNECTED")),this.events.emit((0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.engineEvent)("session_connect"),{error:s.error}))},this.onSessionSettleRequest=async(e,s)=>{const{id:t,params:i}=s;try{this.isValidSessionSettleRequest(i);const{relay:n,controller:o,expiry:a,namespaces:c,requiredNamespaces:p,optionalNamespaces:d,sessionProperties:h,pairingTopic:R}=s.params,w=g({topic:e,relay:n,expiry:a,namespaces:c,acknowledged:!0,pairingTopic:R,requiredNamespaces:p,optionalNamespaces:d,controller:o.publicKey,self:{publicKey:"",metadata:this.client.metadata},peer:{publicKey:o.publicKey,metadata:o.metadata}},h&&{sessionProperties:h});await this.sendResult({id:s.id,topic:e,result:!0}),this.events.emit((0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.engineEvent)("session_connect"),{session:w}),this.cleanupDuplicatePairings(w)}catch(n){await this.sendError(t,e,n),this.client.logger.error(n)}},this.onSessionSettleResponse=async(e,s)=>{const{id:t}=s;(0,_walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_3__.isJsonRpcResult)(s)?(await this.client.session.update(e,{acknowledged:!0}),this.events.emit((0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.engineEvent)("session_approve",t),{})):(0,_walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_3__.isJsonRpcError)(s)&&(await this.client.session.delete(e,(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getSdkError)("USER_DISCONNECTED")),this.events.emit((0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.engineEvent)("session_approve",t),{error:s.error}))},this.onSessionUpdateRequest=async(e,s)=>{const{params:t,id:i}=s;try{const n=`${e}_session_update`,o=_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.MemoryStore.get(n);if(o&&this.isRequestOutOfSync(o,i)){this.client.logger.info(`Discarding out of sync request - ${i}`);return}this.isValidUpdate(g({topic:e},t)),await this.client.session.update(e,{namespaces:t.namespaces}),await this.sendResult({id:i,topic:e,result:!0}),this.client.events.emit("session_update",{id:i,topic:e,params:t}),_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.MemoryStore.set(n,i)}catch(n){await this.sendError(i,e,n),this.client.logger.error(n)}},this.isRequestOutOfSync=(e,s)=>parseInt(s.toString().slice(0,-3))<=parseInt(e.toString().slice(0,-3)),this.onSessionUpdateResponse=(e,s)=>{const{id:t}=s;(0,_walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_3__.isJsonRpcResult)(s)?this.events.emit((0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.engineEvent)("session_update",t),{}):(0,_walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_3__.isJsonRpcError)(s)&&this.events.emit((0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.engineEvent)("session_update",t),{error:s.error})},this.onSessionExtendRequest=async(e,s)=>{const{id:t}=s;try{this.isValidExtend({topic:e}),await this.setExpiry(e,(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.calcExpiry)(A)),await this.sendResult({id:t,topic:e,result:!0}),this.client.events.emit("session_extend",{id:t,topic:e})}catch(i){await this.sendError(t,e,i),this.client.logger.error(i)}},this.onSessionExtendResponse=(e,s)=>{const{id:t}=s;(0,_walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_3__.isJsonRpcResult)(s)?this.events.emit((0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.engineEvent)("session_extend",t),{}):(0,_walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_3__.isJsonRpcError)(s)&&this.events.emit((0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.engineEvent)("session_extend",t),{error:s.error})},this.onSessionPingRequest=async(e,s)=>{const{id:t}=s;try{this.isValidPing({topic:e}),await this.sendResult({id:t,topic:e,result:!0}),this.client.events.emit("session_ping",{id:t,topic:e})}catch(i){await this.sendError(t,e,i),this.client.logger.error(i)}},this.onSessionPingResponse=(e,s)=>{const{id:t}=s;setTimeout(()=>{(0,_walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_3__.isJsonRpcResult)(s)?this.events.emit((0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.engineEvent)("session_ping",t),{}):(0,_walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_3__.isJsonRpcError)(s)&&this.events.emit((0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.engineEvent)("session_ping",t),{error:s.error})},500)},this.onSessionDeleteRequest=async(e,s)=>{const{id:t}=s;try{this.isValidDisconnect({topic:e,reason:s.params}),await Promise.all([new Promise(i=>{this.client.core.relayer.once(_walletconnect_core__WEBPACK_IMPORTED_MODULE_6__.RELAYER_EVENTS.publish,async()=>{i(await this.deleteSession(e))})}),this.sendResult({id:t,topic:e,result:!0})]),this.client.events.emit("session_delete",{id:t,topic:e})}catch(i){this.client.logger.error(i)}},this.onSessionRequest=async(e,s)=>{const{id:t,params:i}=s;try{this.isValidRequest(g({topic:e},i));const n=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.hashMessage)(JSON.stringify((0,_walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_3__.formatJsonRpcRequest)("wc_sessionRequest",i,t))),o=this.client.session.get(e),a=await this.getVerifyContext(n,o.peer.metadata),c={id:t,topic:e,params:i,verifyContext:a};await this.setPendingSessionRequest(c),this.addSessionRequestToSessionRequestQueue(c),this.processSessionRequestQueue()}catch(n){await this.sendError(t,e,n),this.client.logger.error(n)}},this.onSessionRequestResponse=(e,s)=>{const{id:t}=s;(0,_walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_3__.isJsonRpcResult)(s)?this.events.emit((0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.engineEvent)("session_request",t),{result:s.result}):(0,_walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_3__.isJsonRpcError)(s)&&this.events.emit((0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.engineEvent)("session_request",t),{error:s.error})},this.onSessionEventRequest=async(e,s)=>{const{id:t,params:i}=s;try{const n=`${e}_session_event_${i.event.name}`,o=_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.MemoryStore.get(n);if(o&&this.isRequestOutOfSync(o,t)){this.client.logger.info(`Discarding out of sync request - ${t}`);return}this.isValidEmit(g({topic:e},i)),this.client.events.emit("session_event",{id:t,topic:e,params:i}),_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.MemoryStore.set(n,t)}catch(n){await this.sendError(t,e,n),this.client.logger.error(n)}},this.addSessionRequestToSessionRequestQueue=e=>{this.sessionRequestQueue.queue.push(e)},this.cleanupAfterResponse=e=>{this.deletePendingSessionRequest(e.response.id,{message:"fulfilled",code:0}),setTimeout(()=>{this.sessionRequestQueue.state=I.idle,this.processSessionRequestQueue()},(0,_walletconnect_time__WEBPACK_IMPORTED_MODULE_2__.toMiliseconds)(this.requestQueueDelay))},this.processSessionRequestQueue=()=>{if(this.sessionRequestQueue.state===I.active){this.client.logger.info("session request queue is already active.");return}const e=this.sessionRequestQueue.queue[0];if(!e){this.client.logger.info("session request queue is empty.");return}try{this.sessionRequestQueue.state=I.active,this.client.events.emit("session_request",e)}catch(s){this.client.logger.error(s)}},this.onPairingCreated=e=>{if(e.active)return;const s=this.client.proposal.getAll().find(t=>t.pairingTopic===e.topic);s&&this.onSessionProposeRequest(e.topic,(0,_walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_3__.formatJsonRpcRequest)("wc_sessionPropose",{requiredNamespaces:s.requiredNamespaces,optionalNamespaces:s.optionalNamespaces,relays:s.relays,proposer:s.proposer,sessionProperties:s.sessionProperties},s.id))},this.isValidConnect=async e=>{if(!(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isValidParams)(e)){const{message:a}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getInternalError)("MISSING_OR_INVALID",`connect() params: ${JSON.stringify(e)}`);throw new Error(a)}const{pairingTopic:s,requiredNamespaces:t,optionalNamespaces:i,sessionProperties:n,relays:o}=e;if((0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isUndefined)(s)||await this.isValidPairingTopic(s),!(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isValidRelays)(o,!0)){const{message:a}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getInternalError)("MISSING_OR_INVALID",`connect() relays: ${o}`);throw new Error(a)}!(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isUndefined)(t)&&(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isValidObject)(t)!==0&&this.validateNamespaces(t,"requiredNamespaces"),!(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isUndefined)(i)&&(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isValidObject)(i)!==0&&this.validateNamespaces(i,"optionalNamespaces"),(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isUndefined)(n)||this.validateSessionProps(n,"sessionProperties")},this.validateNamespaces=(e,s)=>{const t=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isValidRequiredNamespaces)(e,"connect()",s);if(t)throw new Error(t.message)},this.isValidApprove=async e=>{if(!(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isValidParams)(e))throw new Error((0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getInternalError)("MISSING_OR_INVALID",`approve() params: ${e}`).message);const{id:s,namespaces:t,relayProtocol:i,sessionProperties:n}=e;await this.isValidProposalId(s);const o=this.client.proposal.get(s),a=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isValidNamespaces)(t,"approve()");if(a)throw new Error(a.message);const c=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isConformingNamespaces)(o.requiredNamespaces,t,"approve()");if(c)throw new Error(c.message);if(!(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isValidString)(i,!0)){const{message:p}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getInternalError)("MISSING_OR_INVALID",`approve() relayProtocol: ${i}`);throw new Error(p)}(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isUndefined)(n)||this.validateSessionProps(n,"sessionProperties")},this.isValidReject=async e=>{if(!(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isValidParams)(e)){const{message:i}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getInternalError)("MISSING_OR_INVALID",`reject() params: ${e}`);throw new Error(i)}const{id:s,reason:t}=e;if(await this.isValidProposalId(s),!(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isValidErrorReason)(t)){const{message:i}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getInternalError)("MISSING_OR_INVALID",`reject() reason: ${JSON.stringify(t)}`);throw new Error(i)}},this.isValidSessionSettleRequest=e=>{if(!(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isValidParams)(e)){const{message:c}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getInternalError)("MISSING_OR_INVALID",`onSessionSettleRequest() params: ${e}`);throw new Error(c)}const{relay:s,controller:t,namespaces:i,expiry:n}=e;if(!(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isValidRelay)(s)){const{message:c}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getInternalError)("MISSING_OR_INVALID","onSessionSettleRequest() relay protocol should be a string");throw new Error(c)}const o=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isValidController)(t,"onSessionSettleRequest()");if(o)throw new Error(o.message);const a=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isValidNamespaces)(i,"onSessionSettleRequest()");if(a)throw new Error(a.message);if((0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isExpired)(n)){const{message:c}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getInternalError)("EXPIRED","onSessionSettleRequest()");throw new Error(c)}},this.isValidUpdate=async e=>{if(!(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isValidParams)(e)){const{message:a}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getInternalError)("MISSING_OR_INVALID",`update() params: ${e}`);throw new Error(a)}const{topic:s,namespaces:t}=e;await this.isValidSessionTopic(s);const i=this.client.session.get(s),n=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isValidNamespaces)(t,"update()");if(n)throw new Error(n.message);const o=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isConformingNamespaces)(i.requiredNamespaces,t,"update()");if(o)throw new Error(o.message)},this.isValidExtend=async e=>{if(!(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isValidParams)(e)){const{message:t}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getInternalError)("MISSING_OR_INVALID",`extend() params: ${e}`);throw new Error(t)}const{topic:s}=e;await this.isValidSessionTopic(s)},this.isValidRequest=async e=>{if(!(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isValidParams)(e)){const{message:a}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getInternalError)("MISSING_OR_INVALID",`request() params: ${e}`);throw new Error(a)}const{topic:s,request:t,chainId:i,expiry:n}=e;await this.isValidSessionTopic(s);const{namespaces:o}=this.client.session.get(s);if(!(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isValidNamespacesChainId)(o,i)){const{message:a}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getInternalError)("MISSING_OR_INVALID",`request() chainId: ${i}`);throw new Error(a)}if(!(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isValidRequest)(t)){const{message:a}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getInternalError)("MISSING_OR_INVALID",`request() ${JSON.stringify(t)}`);throw new Error(a)}if(!(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isValidNamespacesRequest)(o,i,t.method)){const{message:a}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getInternalError)("MISSING_OR_INVALID",`request() method: ${t.method}`);throw new Error(a)}if(n&&!(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isValidRequestExpiry)(n,U)){const{message:a}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getInternalError)("MISSING_OR_INVALID",`request() expiry: ${n}. Expiry must be a number (in seconds) between ${U.min} and ${U.max}`);throw new Error(a)}},this.isValidRespond=async e=>{if(!(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isValidParams)(e)){const{message:i}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getInternalError)("MISSING_OR_INVALID",`respond() params: ${e}`);throw new Error(i)}const{topic:s,response:t}=e;if(await this.isValidSessionTopic(s),!(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isValidResponse)(t)){const{message:i}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getInternalError)("MISSING_OR_INVALID",`respond() response: ${JSON.stringify(t)}`);throw new Error(i)}},this.isValidPing=async e=>{if(!(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isValidParams)(e)){const{message:t}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getInternalError)("MISSING_OR_INVALID",`ping() params: ${e}`);throw new Error(t)}const{topic:s}=e;await this.isValidSessionOrPairingTopic(s)},this.isValidEmit=async e=>{if(!(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isValidParams)(e)){const{message:o}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getInternalError)("MISSING_OR_INVALID",`emit() params: ${e}`);throw new Error(o)}const{topic:s,event:t,chainId:i}=e;await this.isValidSessionTopic(s);const{namespaces:n}=this.client.session.get(s);if(!(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isValidNamespacesChainId)(n,i)){const{message:o}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getInternalError)("MISSING_OR_INVALID",`emit() chainId: ${i}`);throw new Error(o)}if(!(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isValidEvent)(t)){const{message:o}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getInternalError)("MISSING_OR_INVALID",`emit() event: ${JSON.stringify(t)}`);throw new Error(o)}if(!(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isValidNamespacesEvent)(n,i,t.name)){const{message:o}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getInternalError)("MISSING_OR_INVALID",`emit() event: ${JSON.stringify(t)}`);throw new Error(o)}},this.isValidDisconnect=async e=>{if(!(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isValidParams)(e)){const{message:t}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getInternalError)("MISSING_OR_INVALID",`disconnect() params: ${e}`);throw new Error(t)}const{topic:s}=e;await this.isValidSessionOrPairingTopic(s)},this.getVerifyContext=async(e,s)=>{const t={verified:{verifyUrl:s.verifyUrl||_walletconnect_core__WEBPACK_IMPORTED_MODULE_6__.VERIFY_SERVER,validation:"UNKNOWN",origin:s.url||""}};try{const i=await this.client.core.verify.resolve({attestationId:e,verifyUrl:s.verifyUrl});i&&(t.verified.origin=i.origin,t.verified.isScam=i.isScam,t.verified.validation=i.origin===new URL(s.url).origin?"VALID":"INVALID")}catch(i){this.client.logger.info(i)}return this.client.logger.info(`Verify context: ${JSON.stringify(t)}`),t},this.validateSessionProps=(e,s)=>{Object.values(e).forEach(t=>{if(!(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isValidString)(t,!1)){const{message:i}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getInternalError)("MISSING_OR_INVALID",`${s} must be in Record format. Received: ${JSON.stringify(t)}`);throw new Error(i)}})}}async isInitialized(){if(!this.initialized){const{message:r}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getInternalError)("NOT_INITIALIZED",this.name);throw new Error(r)}await this.client.core.relayer.confirmOnlineStateOrThrow()}registerRelayerEvents(){this.client.core.relayer.on(_walletconnect_core__WEBPACK_IMPORTED_MODULE_6__.RELAYER_EVENTS.message,async r=>{const{topic:e,message:s}=r;if(this.ignoredPayloadTypes.includes(this.client.core.crypto.getPayloadType(s)))return;const t=await this.client.core.crypto.decode(e,s);try{(0,_walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_3__.isJsonRpcRequest)(t)?(this.client.core.history.set(e,t),this.onRelayEventRequest({topic:e,payload:t})):(0,_walletconnect_jsonrpc_utils__WEBPACK_IMPORTED_MODULE_3__.isJsonRpcResponse)(t)?(await this.client.core.history.resolve(t),await this.onRelayEventResponse({topic:e,payload:t}),this.client.core.history.delete(e,t.id)):this.onRelayEventUnknownPayload({topic:e,payload:t})}catch(i){this.client.logger.error(i)}})}registerExpirerEvents(){this.client.core.expirer.on(_walletconnect_core__WEBPACK_IMPORTED_MODULE_6__.EXPIRER_EVENTS.expired,async r=>{const{topic:e,id:s}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.parseExpirerTarget)(r.target);if(s&&this.client.pendingRequest.keys.includes(s))return await this.deletePendingSessionRequest(s,(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getInternalError)("EXPIRED"),!0);e?this.client.session.keys.includes(e)&&(await this.deleteSession(e,!0),this.client.events.emit("session_expire",{topic:e})):s&&(await this.deleteProposal(s,!0),this.client.events.emit("proposal_expire",{id:s}))})}registerPairingEvents(){this.client.core.pairing.events.on(_walletconnect_core__WEBPACK_IMPORTED_MODULE_6__.PAIRING_EVENTS.create,r=>this.onPairingCreated(r))}isValidPairingTopic(r){if(!(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isValidString)(r,!1)){const{message:e}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getInternalError)("MISSING_OR_INVALID",`pairing topic should be a string: ${r}`);throw new Error(e)}if(!this.client.core.pairing.pairings.keys.includes(r)){const{message:e}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getInternalError)("NO_MATCHING_KEY",`pairing topic doesn\'t exist: ${r}`);throw new Error(e)}if((0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isExpired)(this.client.core.pairing.pairings.get(r).expiry)){const{message:e}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getInternalError)("EXPIRED",`pairing topic: ${r}`);throw new Error(e)}}async isValidSessionTopic(r){if(!(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isValidString)(r,!1)){const{message:e}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getInternalError)("MISSING_OR_INVALID",`session topic should be a string: ${r}`);throw new Error(e)}if(!this.client.session.keys.includes(r)){const{message:e}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getInternalError)("NO_MATCHING_KEY",`session topic doesn\'t exist: ${r}`);throw new Error(e)}if((0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isExpired)(this.client.session.get(r).expiry)){await this.deleteSession(r);const{message:e}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getInternalError)("EXPIRED",`session topic: ${r}`);throw new Error(e)}}async isValidSessionOrPairingTopic(r){if(this.client.session.keys.includes(r))await this.isValidSessionTopic(r);else if(this.client.core.pairing.pairings.keys.includes(r))this.isValidPairingTopic(r);else if((0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isValidString)(r,!1)){const{message:e}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getInternalError)("NO_MATCHING_KEY",`session or pairing topic doesn\'t exist: ${r}`);throw new Error(e)}else{const{message:e}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getInternalError)("MISSING_OR_INVALID",`session or pairing topic should be a string: ${r}`);throw new Error(e)}}async isValidProposalId(r){if(!(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isValidId)(r)){const{message:e}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getInternalError)("MISSING_OR_INVALID",`proposal id should be a number: ${r}`);throw new Error(e)}if(!this.client.proposal.keys.includes(r)){const{message:e}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getInternalError)("NO_MATCHING_KEY",`proposal id doesn\'t exist: ${r}`);throw new Error(e)}if((0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.isExpired)(this.client.proposal.get(r).expiry)){await this.deleteProposal(r);const{message:e}=(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getInternalError)("EXPIRED",`proposal id: ${r}`);throw new Error(e)}}}class ds extends _walletconnect_core__WEBPACK_IMPORTED_MODULE_6__.Store{constructor(r,e){super(r,e,ne,G),this.core=r,this.logger=e}}class us extends _walletconnect_core__WEBPACK_IMPORTED_MODULE_6__.Store{constructor(r,e){super(r,e,ae,G),this.core=r,this.logger=e}}class gs extends _walletconnect_core__WEBPACK_IMPORTED_MODULE_6__.Store{constructor(r,e){super(r,e,le,G,s=>s.id),this.core=r,this.logger=e}}class Q extends _walletconnect_types__WEBPACK_IMPORTED_MODULE_4__.ISignClient{constructor(r){super(r),this.protocol=X,this.version=F,this.name=M.name,this.events=new events__WEBPACK_IMPORTED_MODULE_1__.EventEmitter,this.on=(s,t)=>this.events.on(s,t),this.once=(s,t)=>this.events.once(s,t),this.off=(s,t)=>this.events.off(s,t),this.removeListener=(s,t)=>this.events.removeListener(s,t),this.removeAllListeners=s=>this.events.removeAllListeners(s),this.connect=async s=>{try{return await this.engine.connect(s)}catch(t){throw this.logger.error(t.message),t}},this.pair=async s=>{try{return await this.engine.pair(s)}catch(t){throw this.logger.error(t.message),t}},this.approve=async s=>{try{return await this.engine.approve(s)}catch(t){throw this.logger.error(t.message),t}},this.reject=async s=>{try{return await this.engine.reject(s)}catch(t){throw this.logger.error(t.message),t}},this.update=async s=>{try{return await this.engine.update(s)}catch(t){throw this.logger.error(t.message),t}},this.extend=async s=>{try{return await this.engine.extend(s)}catch(t){throw this.logger.error(t.message),t}},this.request=async s=>{try{return await this.engine.request(s)}catch(t){throw this.logger.error(t.message),t}},this.respond=async s=>{try{return await this.engine.respond(s)}catch(t){throw this.logger.error(t.message),t}},this.ping=async s=>{try{return await this.engine.ping(s)}catch(t){throw this.logger.error(t.message),t}},this.emit=async s=>{try{return await this.engine.emit(s)}catch(t){throw this.logger.error(t.message),t}},this.disconnect=async s=>{try{return await this.engine.disconnect(s)}catch(t){throw this.logger.error(t.message),t}},this.find=s=>{try{return this.engine.find(s)}catch(t){throw this.logger.error(t.message),t}},this.getPendingSessionRequests=()=>{try{return this.engine.getPendingSessionRequests()}catch(s){throw this.logger.error(s.message),s}},this.name=r?.name||M.name,this.metadata=r?.metadata||(0,_walletconnect_utils__WEBPACK_IMPORTED_MODULE_5__.getAppMetadata)();const e=typeof r?.logger<"u"&&typeof r?.logger!="string"?r.logger:(0,_walletconnect_logger__WEBPACK_IMPORTED_MODULE_0__.pino)((0,_walletconnect_logger__WEBPACK_IMPORTED_MODULE_0__.getDefaultLoggerOptions)({level:r?.logger||M.logger}));this.core=r?.core||new _walletconnect_core__WEBPACK_IMPORTED_MODULE_6__.Core(r),this.logger=(0,_walletconnect_logger__WEBPACK_IMPORTED_MODULE_0__.generateChildLogger)(e,this.name),this.session=new us(this.core,this.logger),this.proposal=new ds(this.core,this.logger),this.pendingRequest=new gs(this.core,this.logger),this.engine=new hs(this)}static async init(r){const e=new Q(r);return await e.initialize(),e}get context(){return (0,_walletconnect_logger__WEBPACK_IMPORTED_MODULE_0__.getLoggerContext)(this.logger)}get pairing(){return this.core.pairing.pairings}async initialize(){this.logger.trace("Initialized");try{await this.core.start(),await this.session.init(),await this.proposal.init(),await this.pendingRequest.init(),await this.engine.init(),this.core.verify.init({verifyUrl:this.metadata.verifyUrl}),this.logger.info("SignClient Initialization Success")}catch(r){throw this.logger.info("SignClient Initialization Failure"),this.logger.error(r.message),r}}}const ms=Q;\n//# sourceMappingURL=index.es.js.map\n\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/sign-client/dist/index.es.js?')},"./node_modules/@walletconnect/time/dist/cjs/constants/index.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nconst tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");\ntslib_1.__exportStar(__webpack_require__(/*! ./misc */ "./node_modules/@walletconnect/time/dist/cjs/constants/misc.js"), exports);\ntslib_1.__exportStar(__webpack_require__(/*! ./time */ "./node_modules/@walletconnect/time/dist/cjs/constants/time.js"), exports);\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/time/dist/cjs/constants/index.js?')},"./node_modules/@walletconnect/time/dist/cjs/constants/misc.js":(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.ONE_THOUSAND = exports.ONE_HUNDRED = void 0;\nexports.ONE_HUNDRED = 100;\nexports.ONE_THOUSAND = 1000;\n//# sourceMappingURL=misc.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/time/dist/cjs/constants/misc.js?')},"./node_modules/@walletconnect/time/dist/cjs/constants/time.js":(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.ONE_YEAR = exports.FOUR_WEEKS = exports.THREE_WEEKS = exports.TWO_WEEKS = exports.ONE_WEEK = exports.THIRTY_DAYS = exports.SEVEN_DAYS = exports.FIVE_DAYS = exports.THREE_DAYS = exports.ONE_DAY = exports.TWENTY_FOUR_HOURS = exports.TWELVE_HOURS = exports.SIX_HOURS = exports.THREE_HOURS = exports.ONE_HOUR = exports.SIXTY_MINUTES = exports.THIRTY_MINUTES = exports.TEN_MINUTES = exports.FIVE_MINUTES = exports.ONE_MINUTE = exports.SIXTY_SECONDS = exports.THIRTY_SECONDS = exports.TEN_SECONDS = exports.FIVE_SECONDS = exports.ONE_SECOND = void 0;\nexports.ONE_SECOND = 1;\nexports.FIVE_SECONDS = 5;\nexports.TEN_SECONDS = 10;\nexports.THIRTY_SECONDS = 30;\nexports.SIXTY_SECONDS = 60;\nexports.ONE_MINUTE = exports.SIXTY_SECONDS;\nexports.FIVE_MINUTES = exports.ONE_MINUTE * 5;\nexports.TEN_MINUTES = exports.ONE_MINUTE * 10;\nexports.THIRTY_MINUTES = exports.ONE_MINUTE * 30;\nexports.SIXTY_MINUTES = exports.ONE_MINUTE * 60;\nexports.ONE_HOUR = exports.SIXTY_MINUTES;\nexports.THREE_HOURS = exports.ONE_HOUR * 3;\nexports.SIX_HOURS = exports.ONE_HOUR * 6;\nexports.TWELVE_HOURS = exports.ONE_HOUR * 12;\nexports.TWENTY_FOUR_HOURS = exports.ONE_HOUR * 24;\nexports.ONE_DAY = exports.TWENTY_FOUR_HOURS;\nexports.THREE_DAYS = exports.ONE_DAY * 3;\nexports.FIVE_DAYS = exports.ONE_DAY * 5;\nexports.SEVEN_DAYS = exports.ONE_DAY * 7;\nexports.THIRTY_DAYS = exports.ONE_DAY * 30;\nexports.ONE_WEEK = exports.SEVEN_DAYS;\nexports.TWO_WEEKS = exports.ONE_WEEK * 2;\nexports.THREE_WEEKS = exports.ONE_WEEK * 3;\nexports.FOUR_WEEKS = exports.ONE_WEEK * 4;\nexports.ONE_YEAR = exports.ONE_DAY * 365;\n//# sourceMappingURL=time.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/time/dist/cjs/constants/time.js?')},"./node_modules/@walletconnect/time/dist/cjs/index.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nconst tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");\ntslib_1.__exportStar(__webpack_require__(/*! ./utils */ "./node_modules/@walletconnect/time/dist/cjs/utils/index.js"), exports);\ntslib_1.__exportStar(__webpack_require__(/*! ./watch */ "./node_modules/@walletconnect/time/dist/cjs/watch.js"), exports);\ntslib_1.__exportStar(__webpack_require__(/*! ./types */ "./node_modules/@walletconnect/time/dist/cjs/types/index.js"), exports);\ntslib_1.__exportStar(__webpack_require__(/*! ./constants */ "./node_modules/@walletconnect/time/dist/cjs/constants/index.js"), exports);\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/time/dist/cjs/index.js?')},"./node_modules/@walletconnect/time/dist/cjs/types/index.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nconst tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");\ntslib_1.__exportStar(__webpack_require__(/*! ./watch */ "./node_modules/@walletconnect/time/dist/cjs/types/watch.js"), exports);\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/time/dist/cjs/types/index.js?')},"./node_modules/@walletconnect/time/dist/cjs/types/watch.js":(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.IWatch = void 0;\nclass IWatch {\n}\nexports.IWatch = IWatch;\n//# sourceMappingURL=watch.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/time/dist/cjs/types/watch.js?')},"./node_modules/@walletconnect/time/dist/cjs/utils/convert.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.fromMiliseconds = exports.toMiliseconds = void 0;\nconst constants_1 = __webpack_require__(/*! ../constants */ "./node_modules/@walletconnect/time/dist/cjs/constants/index.js");\nfunction toMiliseconds(seconds) {\n return seconds * constants_1.ONE_THOUSAND;\n}\nexports.toMiliseconds = toMiliseconds;\nfunction fromMiliseconds(miliseconds) {\n return Math.floor(miliseconds / constants_1.ONE_THOUSAND);\n}\nexports.fromMiliseconds = fromMiliseconds;\n//# sourceMappingURL=convert.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/time/dist/cjs/utils/convert.js?')},"./node_modules/@walletconnect/time/dist/cjs/utils/delay.js":(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.delay = void 0;\nfunction delay(timeout) {\n return new Promise(resolve => {\n setTimeout(() => {\n resolve(true);\n }, timeout);\n });\n}\nexports.delay = delay;\n//# sourceMappingURL=delay.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/time/dist/cjs/utils/delay.js?')},"./node_modules/@walletconnect/time/dist/cjs/utils/index.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nconst tslib_1 = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");\ntslib_1.__exportStar(__webpack_require__(/*! ./delay */ "./node_modules/@walletconnect/time/dist/cjs/utils/delay.js"), exports);\ntslib_1.__exportStar(__webpack_require__(/*! ./convert */ "./node_modules/@walletconnect/time/dist/cjs/utils/convert.js"), exports);\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/time/dist/cjs/utils/index.js?')},"./node_modules/@walletconnect/time/dist/cjs/watch.js":(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.Watch = void 0;\nclass Watch {\n constructor() {\n this.timestamps = new Map();\n }\n start(label) {\n if (this.timestamps.has(label)) {\n throw new Error(`Watch already started for label: ${label}`);\n }\n this.timestamps.set(label, { started: Date.now() });\n }\n stop(label) {\n const timestamp = this.get(label);\n if (typeof timestamp.elapsed !== "undefined") {\n throw new Error(`Watch already stopped for label: ${label}`);\n }\n const elapsed = Date.now() - timestamp.started;\n this.timestamps.set(label, { started: timestamp.started, elapsed });\n }\n get(label) {\n const timestamp = this.timestamps.get(label);\n if (typeof timestamp === "undefined") {\n throw new Error(`No timestamp found for label: ${label}`);\n }\n return timestamp;\n }\n elapsed(label) {\n const timestamp = this.get(label);\n const elapsed = timestamp.elapsed || Date.now() - timestamp.started;\n return elapsed;\n }\n}\nexports.Watch = Watch;\nexports["default"] = Watch;\n//# sourceMappingURL=watch.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/time/dist/cjs/watch.js?')},"./node_modules/@walletconnect/types/dist/index.es.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ ICore: () => (/* binding */ n),\n/* harmony export */ ICrypto: () => (/* binding */ l),\n/* harmony export */ IEngine: () => (/* binding */ S),\n/* harmony export */ IEngineEvents: () => (/* binding */ C),\n/* harmony export */ IExpirer: () => (/* binding */ E),\n/* harmony export */ IJsonRpcHistory: () => (/* binding */ h),\n/* harmony export */ IKeyChain: () => (/* binding */ x),\n/* harmony export */ IMessageTracker: () => (/* binding */ a),\n/* harmony export */ IPairing: () => (/* binding */ m),\n/* harmony export */ IPublisher: () => (/* binding */ u),\n/* harmony export */ IRelayer: () => (/* binding */ g),\n/* harmony export */ ISignClient: () => (/* binding */ b),\n/* harmony export */ ISignClientEvents: () => (/* binding */ v),\n/* harmony export */ IStore: () => (/* binding */ p),\n/* harmony export */ ISubscriber: () => (/* binding */ d),\n/* harmony export */ ISubscriberTopicMap: () => (/* binding */ I),\n/* harmony export */ IVerify: () => (/* binding */ y)\n/* harmony export */ });\n/* harmony import */ var _walletconnect_events__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @walletconnect/events */ "./node_modules/@walletconnect/events/dist/esm/index.js");\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! events */ "./node_modules/events/events.js");\n/* harmony import */ var events__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(events__WEBPACK_IMPORTED_MODULE_1__);\nclass n extends _walletconnect_events__WEBPACK_IMPORTED_MODULE_0__.IEvents{constructor(s){super(),this.opts=s,this.protocol="wc",this.version=2}}class l{constructor(s,t,o){this.core=s,this.logger=t}}class h extends _walletconnect_events__WEBPACK_IMPORTED_MODULE_0__.IEvents{constructor(s,t){super(),this.core=s,this.logger=t,this.records=new Map}}class a{constructor(s,t){this.logger=s,this.core=t}}class u extends _walletconnect_events__WEBPACK_IMPORTED_MODULE_0__.IEvents{constructor(s,t){super(),this.relayer=s,this.logger=t}}class g extends _walletconnect_events__WEBPACK_IMPORTED_MODULE_0__.IEvents{constructor(s){super()}}class p{constructor(s,t,o,w){this.core=s,this.logger=t,this.name=o}}class I{constructor(){this.map=new Map}}class d extends _walletconnect_events__WEBPACK_IMPORTED_MODULE_0__.IEvents{constructor(s,t){super(),this.relayer=s,this.logger=t}}class x{constructor(s,t){this.core=s,this.logger=t}}class E extends _walletconnect_events__WEBPACK_IMPORTED_MODULE_0__.IEvents{constructor(s,t){super(),this.core=s,this.logger=t}}class m{constructor(s,t){this.logger=s,this.core=t}}class y{constructor(s,t){this.projectId=s,this.logger=t}}class v extends (events__WEBPACK_IMPORTED_MODULE_1___default()){constructor(){super()}}class b{constructor(s){this.opts=s,this.protocol="wc",this.version=2}}class C extends events__WEBPACK_IMPORTED_MODULE_1__.EventEmitter{constructor(){super()}}class S{constructor(s){this.client=s}}\n//# sourceMappingURL=index.es.js.map\n\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/types/dist/index.es.js?')},"./node_modules/@walletconnect/utils/dist/index.es.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BASE10: () => (/* binding */ J),\n/* harmony export */ BASE16: () => (/* binding */ p),\n/* harmony export */ BASE64: () => (/* binding */ F),\n/* harmony export */ COLON: () => (/* binding */ zn),\n/* harmony export */ DEFAULT_DEPTH: () => (/* binding */ ne),\n/* harmony export */ EMPTY_SPACE: () => (/* binding */ q),\n/* harmony export */ ENV_MAP: () => (/* binding */ m),\n/* harmony export */ INTERNAL_ERRORS: () => (/* binding */ nn),\n/* harmony export */ MemoryStore: () => (/* binding */ tr),\n/* harmony export */ ONE_THOUSAND: () => (/* binding */ Yn),\n/* harmony export */ REACT_NATIVE_PRODUCT: () => (/* binding */ Ce),\n/* harmony export */ RELAYER_DEFAULT_PROTOCOL: () => (/* binding */ Fe),\n/* harmony export */ SDK_ERRORS: () => (/* binding */ en),\n/* harmony export */ SDK_TYPE: () => (/* binding */ $e),\n/* harmony export */ SLASH: () => (/* binding */ je),\n/* harmony export */ TYPE_0: () => (/* binding */ Q),\n/* harmony export */ TYPE_1: () => (/* binding */ _),\n/* harmony export */ UTF8: () => (/* binding */ H),\n/* harmony export */ appendToQueryString: () => (/* binding */ De),\n/* harmony export */ assertType: () => (/* binding */ nt),\n/* harmony export */ buildApprovedNamespaces: () => (/* binding */ $t),\n/* harmony export */ calcExpiry: () => (/* binding */ pt),\n/* harmony export */ capitalize: () => (/* binding */ ct),\n/* harmony export */ capitalizeWord: () => (/* binding */ xe),\n/* harmony export */ createDelayedPromise: () => (/* binding */ at),\n/* harmony export */ createExpiringPromise: () => (/* binding */ ut),\n/* harmony export */ decodeTypeByte: () => (/* binding */ $),\n/* harmony export */ decrypt: () => (/* binding */ Fn),\n/* harmony export */ deriveSymKey: () => (/* binding */ Mn),\n/* harmony export */ deserialize: () => (/* binding */ ee),\n/* harmony export */ encodeTypeByte: () => (/* binding */ Pe),\n/* harmony export */ encrypt: () => (/* binding */ xn),\n/* harmony export */ engineEvent: () => (/* binding */ yt),\n/* harmony export */ enumify: () => (/* binding */ it),\n/* harmony export */ formatAccountId: () => (/* binding */ Ee),\n/* harmony export */ formatAccountWithChain: () => (/* binding */ Tn),\n/* harmony export */ formatChainId: () => (/* binding */ ve),\n/* harmony export */ formatExpirerTarget: () => (/* binding */ re),\n/* harmony export */ formatIdTarget: () => (/* binding */ dt),\n/* harmony export */ formatMessage: () => (/* binding */ $n),\n/* harmony export */ formatMessageContext: () => (/* binding */ tt),\n/* harmony export */ formatRelayParams: () => (/* binding */ We),\n/* harmony export */ formatRelayRpcUrl: () => (/* binding */ Xn),\n/* harmony export */ formatTopicTarget: () => (/* binding */ lt),\n/* harmony export */ formatUA: () => (/* binding */ Me),\n/* harmony export */ formatUri: () => (/* binding */ It),\n/* harmony export */ generateKeyPair: () => (/* binding */ kn),\n/* harmony export */ generateRandomBytes32: () => (/* binding */ Vn),\n/* harmony export */ getAccountsChains: () => (/* binding */ A),\n/* harmony export */ getAccountsFromNamespaces: () => (/* binding */ Un),\n/* harmony export */ getAddressFromAccount: () => (/* binding */ be),\n/* harmony export */ getAddressesFromAccounts: () => (/* binding */ An),\n/* harmony export */ getAppMetadata: () => (/* binding */ Qn),\n/* harmony export */ getBrowserOnlineStatus: () => (/* binding */ pn),\n/* harmony export */ getBundleId: () => (/* binding */ Jn),\n/* harmony export */ getChainFromAccount: () => (/* binding */ Ne),\n/* harmony export */ getChainsFromAccounts: () => (/* binding */ Oe),\n/* harmony export */ getChainsFromNamespace: () => (/* binding */ L),\n/* harmony export */ getChainsFromNamespaces: () => (/* binding */ _n),\n/* harmony export */ getChainsFromRequiredNamespaces: () => (/* binding */ Cn),\n/* harmony export */ getDeepLink: () => (/* binding */ gt),\n/* harmony export */ getDidAddress: () => (/* binding */ we),\n/* harmony export */ getDidAddressSegments: () => (/* binding */ x),\n/* harmony export */ getDidChainId: () => (/* binding */ Se),\n/* harmony export */ getEnvironment: () => (/* binding */ T),\n/* harmony export */ getHttpUrl: () => (/* binding */ et),\n/* harmony export */ getInternalError: () => (/* binding */ N),\n/* harmony export */ getJavascriptID: () => (/* binding */ Ve),\n/* harmony export */ getJavascriptOS: () => (/* binding */ ke),\n/* harmony export */ getLastItems: () => (/* binding */ Le),\n/* harmony export */ getNamespacedDidChainId: () => (/* binding */ jn),\n/* harmony export */ getNamespacesChains: () => (/* binding */ Je),\n/* harmony export */ getNamespacesEventsForChainId: () => (/* binding */ Ze),\n/* harmony export */ getNamespacesMethodsForChainId: () => (/* binding */ Qe),\n/* harmony export */ getNodeOnlineStatus: () => (/* binding */ yn),\n/* harmony export */ getReactNativeOnlineStatus: () => (/* binding */ mn),\n/* harmony export */ getRelayClientMetadata: () => (/* binding */ Zn),\n/* harmony export */ getRelayProtocolApi: () => (/* binding */ Et),\n/* harmony export */ getRelayProtocolName: () => (/* binding */ vt),\n/* harmony export */ getRequiredNamespacesFromNamespaces: () => (/* binding */ jt),\n/* harmony export */ getSdkError: () => (/* binding */ U),\n/* harmony export */ getUniqueValues: () => (/* binding */ Y),\n/* harmony export */ handleDeeplinkRedirect: () => (/* binding */ ht),\n/* harmony export */ hasOverlap: () => (/* binding */ O),\n/* harmony export */ hashKey: () => (/* binding */ Kn),\n/* harmony export */ hashMessage: () => (/* binding */ Ln),\n/* harmony export */ isBrowser: () => (/* binding */ D),\n/* harmony export */ isCaipNamespace: () => (/* binding */ oe),\n/* harmony export */ isConformingNamespaces: () => (/* binding */ dn),\n/* harmony export */ isExpired: () => (/* binding */ mt),\n/* harmony export */ isNode: () => (/* binding */ te),\n/* harmony export */ isOnline: () => (/* binding */ er),\n/* harmony export */ isProposalStruct: () => (/* binding */ Vt),\n/* harmony export */ isReactNative: () => (/* binding */ C),\n/* harmony export */ isSessionCompatible: () => (/* binding */ Dt),\n/* harmony export */ isSessionStruct: () => (/* binding */ Mt),\n/* harmony export */ isTypeOneEnvelope: () => (/* binding */ qn),\n/* harmony export */ isUndefined: () => (/* binding */ w),\n/* harmony export */ isValidAccountId: () => (/* binding */ tn),\n/* harmony export */ isValidAccounts: () => (/* binding */ sn),\n/* harmony export */ isValidActions: () => (/* binding */ an),\n/* harmony export */ isValidArray: () => (/* binding */ k),\n/* harmony export */ isValidChainId: () => (/* binding */ V),\n/* harmony export */ isValidChains: () => (/* binding */ rn),\n/* harmony export */ isValidController: () => (/* binding */ Kt),\n/* harmony export */ isValidErrorReason: () => (/* binding */ qt),\n/* harmony export */ isValidEvent: () => (/* binding */ Wt),\n/* harmony export */ isValidId: () => (/* binding */ Ft),\n/* harmony export */ isValidNamespaceAccounts: () => (/* binding */ cn),\n/* harmony export */ isValidNamespaceActions: () => (/* binding */ ce),\n/* harmony export */ isValidNamespaceChains: () => (/* binding */ on),\n/* harmony export */ isValidNamespaceMethodsOrEvents: () => (/* binding */ ie),\n/* harmony export */ isValidNamespaces: () => (/* binding */ un),\n/* harmony export */ isValidNamespacesChainId: () => (/* binding */ zt),\n/* harmony export */ isValidNamespacesEvent: () => (/* binding */ Jt),\n/* harmony export */ isValidNamespacesRequest: () => (/* binding */ Yt),\n/* harmony export */ isValidNumber: () => (/* binding */ G),\n/* harmony export */ isValidObject: () => (/* binding */ B),\n/* harmony export */ isValidParams: () => (/* binding */ Ht),\n/* harmony export */ isValidRelay: () => (/* binding */ ln),\n/* harmony export */ isValidRelays: () => (/* binding */ xt),\n/* harmony export */ isValidRequest: () => (/* binding */ Bt),\n/* harmony export */ isValidRequestExpiry: () => (/* binding */ Xt),\n/* harmony export */ isValidRequiredNamespaces: () => (/* binding */ Lt),\n/* harmony export */ isValidResponse: () => (/* binding */ Gt),\n/* harmony export */ isValidString: () => (/* binding */ h),\n/* harmony export */ isValidUrl: () => (/* binding */ kt),\n/* harmony export */ mapEntries: () => (/* binding */ st),\n/* harmony export */ mapToObj: () => (/* binding */ rt),\n/* harmony export */ mergeArrays: () => (/* binding */ S),\n/* harmony export */ normalizeNamespaces: () => (/* binding */ se),\n/* harmony export */ objToMap: () => (/* binding */ ot),\n/* harmony export */ parseAccountId: () => (/* binding */ z),\n/* harmony export */ parseChainId: () => (/* binding */ ge),\n/* harmony export */ parseContextNames: () => (/* binding */ Ke),\n/* harmony export */ parseExpirerTarget: () => (/* binding */ ft),\n/* harmony export */ parseNamespaceKey: () => (/* binding */ Xe),\n/* harmony export */ parseRelayParams: () => (/* binding */ Be),\n/* harmony export */ parseTopic: () => (/* binding */ Ge),\n/* harmony export */ parseUri: () => (/* binding */ wt),\n/* harmony export */ serialize: () => (/* binding */ Re),\n/* harmony export */ subscribeToBrowserNetworkChange: () => (/* binding */ hn),\n/* harmony export */ subscribeToNetworkChange: () => (/* binding */ nr),\n/* harmony export */ subscribeToReactNativeNetworkChange: () => (/* binding */ gn),\n/* harmony export */ validateDecoding: () => (/* binding */ Hn),\n/* harmony export */ validateEncoding: () => (/* binding */ Te)\n/* harmony export */ });\n/* harmony import */ var _stablelib_chacha20poly1305__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @stablelib/chacha20poly1305 */ "./node_modules/@stablelib/chacha20poly1305/lib/chacha20poly1305.js");\n/* harmony import */ var _stablelib_hkdf__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @stablelib/hkdf */ "./node_modules/@stablelib/hkdf/lib/hkdf.js");\n/* harmony import */ var _stablelib_random__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @stablelib/random */ "./node_modules/@stablelib/random/lib/random.js");\n/* harmony import */ var _stablelib_sha256__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @stablelib/sha256 */ "./node_modules/@stablelib/sha256/lib/sha256.js");\n/* harmony import */ var _stablelib_x25519__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @stablelib/x25519 */ "./node_modules/@stablelib/x25519/lib/x25519.js");\n/* harmony import */ var uint8arrays__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! uint8arrays */ "./node_modules/uint8arrays/esm/src/index.js");\n/* harmony import */ var detect_browser__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! detect-browser */ "./node_modules/detect-browser/es/index.js");\n/* harmony import */ var _walletconnect_time__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @walletconnect/time */ "./node_modules/@walletconnect/time/dist/cjs/index.js");\n/* harmony import */ var _walletconnect_time__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_walletconnect_time__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _walletconnect_window_getters__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @walletconnect/window-getters */ "./node_modules/@walletconnect/window-getters/dist/cjs/index.js");\n/* harmony import */ var _walletconnect_window_metadata__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @walletconnect/window-metadata */ "./node_modules/@walletconnect/window-metadata/dist/cjs/index.js");\n/* harmony import */ var query_string__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! query-string */ "./node_modules/query-string/index.js");\n/* harmony import */ var _walletconnect_relay_api__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @walletconnect/relay-api */ "./node_modules/@walletconnect/relay-api/dist/esm/index.js");\nconst K=":";function ge(e){const[n,t]=e.split(K);return{namespace:n,reference:t}}function ve(e){const{namespace:n,reference:t}=e;return[n,t].join(K)}function z(e){const[n,t,r]=e.split(K);return{namespace:n,reference:t,address:r}}function Ee(e){const{namespace:n,reference:t,address:r}=e;return[n,t,r].join(K)}function Y(e,n){const t=[];return e.forEach(r=>{const o=n(r);t.includes(o)||t.push(o)}),t}function be(e){const{address:n}=z(e);return n}function Ne(e){const{namespace:n,reference:t}=z(e);return ve({namespace:n,reference:t})}function Tn(e,n){const{namespace:t,reference:r}=ge(n);return Ee({namespace:t,reference:r,address:e})}function An(e){return Y(e,be)}function Oe(e){return Y(e,Ne)}function Un(e,n=[]){const t=[];return Object.keys(e).forEach(r=>{if(n.length&&!n.includes(r))return;const o=e[r];t.push(...o.accounts)}),t}function _n(e,n=[]){const t=[];return Object.keys(e).forEach(r=>{if(n.length&&!n.includes(r))return;const o=e[r];t.push(...Oe(o.accounts))}),t}function Cn(e,n=[]){const t=[];return Object.keys(e).forEach(r=>{if(n.length&&!n.includes(r))return;const o=e[r];t.push(...L(r,o))}),t}function L(e,n){return e.includes(":")?[e]:n.chains||[]}const x=e=>e?.split(":"),Se=e=>{const n=e&&x(e);if(n)return n[3]},jn=e=>{const n=e&&x(e);if(n)return n[2]+":"+n[3]},we=e=>{const n=e&&x(e);if(n)return n.pop()},$n=(e,n)=>{const t=`${e.domain} wants you to sign in with your Ethereum account:`,r=we(n),o=e.statement,s=`URI: ${e.aud}`,i=`Version: ${e.version}`,d=`Chain ID: ${Se(n)}`,l=`Nonce: ${e.nonce}`,c=`Issued At: ${e.iat}`,u=e.resources&&e.resources.length>0?`Resources:\n${e.resources.map(a=>`- ${a}`).join(`\n`)}`:void 0;return[t,r,"",o,"",s,i,d,l,c,u].filter(a=>a!=null).join(`\n`)},J="base10",p="base16",F="base64pad",H="utf8",Q=0,_=1,Dn=0,Ie=1,Z=12,X=32;function kn(){const e=_stablelib_x25519__WEBPACK_IMPORTED_MODULE_4__.generateKeyPair();return{privateKey:(0,uint8arrays__WEBPACK_IMPORTED_MODULE_5__.toString)(e.secretKey,p),publicKey:(0,uint8arrays__WEBPACK_IMPORTED_MODULE_5__.toString)(e.publicKey,p)}}function Vn(){const e=(0,_stablelib_random__WEBPACK_IMPORTED_MODULE_2__.randomBytes)(X);return (0,uint8arrays__WEBPACK_IMPORTED_MODULE_5__.toString)(e,p)}function Mn(e,n){const t=_stablelib_x25519__WEBPACK_IMPORTED_MODULE_4__.sharedKey((0,uint8arrays__WEBPACK_IMPORTED_MODULE_5__.fromString)(e,p),(0,uint8arrays__WEBPACK_IMPORTED_MODULE_5__.fromString)(n,p),!0),r=new _stablelib_hkdf__WEBPACK_IMPORTED_MODULE_1__.HKDF(_stablelib_sha256__WEBPACK_IMPORTED_MODULE_3__.SHA256,t).expand(X);return (0,uint8arrays__WEBPACK_IMPORTED_MODULE_5__.toString)(r,p)}function Kn(e){const n=(0,_stablelib_sha256__WEBPACK_IMPORTED_MODULE_3__.hash)((0,uint8arrays__WEBPACK_IMPORTED_MODULE_5__.fromString)(e,p));return (0,uint8arrays__WEBPACK_IMPORTED_MODULE_5__.toString)(n,p)}function Ln(e){const n=(0,_stablelib_sha256__WEBPACK_IMPORTED_MODULE_3__.hash)((0,uint8arrays__WEBPACK_IMPORTED_MODULE_5__.fromString)(e,H));return (0,uint8arrays__WEBPACK_IMPORTED_MODULE_5__.toString)(n,p)}function Pe(e){return (0,uint8arrays__WEBPACK_IMPORTED_MODULE_5__.fromString)(`${e}`,J)}function $(e){return Number((0,uint8arrays__WEBPACK_IMPORTED_MODULE_5__.toString)(e,J))}function xn(e){const n=Pe(typeof e.type<"u"?e.type:Q);if($(n)===_&&typeof e.senderPublicKey>"u")throw new Error("Missing sender public key for type 1 envelope");const t=typeof e.senderPublicKey<"u"?(0,uint8arrays__WEBPACK_IMPORTED_MODULE_5__.fromString)(e.senderPublicKey,p):void 0,r=typeof e.iv<"u"?(0,uint8arrays__WEBPACK_IMPORTED_MODULE_5__.fromString)(e.iv,p):(0,_stablelib_random__WEBPACK_IMPORTED_MODULE_2__.randomBytes)(Z),o=new _stablelib_chacha20poly1305__WEBPACK_IMPORTED_MODULE_0__.ChaCha20Poly1305((0,uint8arrays__WEBPACK_IMPORTED_MODULE_5__.fromString)(e.symKey,p)).seal(r,(0,uint8arrays__WEBPACK_IMPORTED_MODULE_5__.fromString)(e.message,H));return Re({type:n,sealed:o,iv:r,senderPublicKey:t})}function Fn(e){const n=new _stablelib_chacha20poly1305__WEBPACK_IMPORTED_MODULE_0__.ChaCha20Poly1305((0,uint8arrays__WEBPACK_IMPORTED_MODULE_5__.fromString)(e.symKey,p)),{sealed:t,iv:r}=ee(e.encoded),o=n.open(r,t);if(o===null)throw new Error("Failed to decrypt");return (0,uint8arrays__WEBPACK_IMPORTED_MODULE_5__.toString)(o,H)}function Re(e){if($(e.type)===_){if(typeof e.senderPublicKey>"u")throw new Error("Missing sender public key for type 1 envelope");return (0,uint8arrays__WEBPACK_IMPORTED_MODULE_5__.toString)((0,uint8arrays__WEBPACK_IMPORTED_MODULE_5__.concat)([e.type,e.senderPublicKey,e.iv,e.sealed]),F)}return (0,uint8arrays__WEBPACK_IMPORTED_MODULE_5__.toString)((0,uint8arrays__WEBPACK_IMPORTED_MODULE_5__.concat)([e.type,e.iv,e.sealed]),F)}function ee(e){const n=(0,uint8arrays__WEBPACK_IMPORTED_MODULE_5__.fromString)(e,F),t=n.slice(Dn,Ie),r=Ie;if($(t)===_){const d=r+X,l=d+Z,c=n.slice(r,d),u=n.slice(d,l),a=n.slice(l);return{type:t,sealed:a,iv:u,senderPublicKey:c}}const o=r+Z,s=n.slice(r,o),i=n.slice(o);return{type:t,sealed:i,iv:s}}function Hn(e,n){const t=ee(e);return Te({type:$(t.type),senderPublicKey:typeof t.senderPublicKey<"u"?(0,uint8arrays__WEBPACK_IMPORTED_MODULE_5__.toString)(t.senderPublicKey,p):void 0,receiverPublicKey:n?.receiverPublicKey})}function Te(e){const n=e?.type||Q;if(n===_){if(typeof e?.senderPublicKey>"u")throw new Error("missing sender public key");if(typeof e?.receiverPublicKey>"u")throw new Error("missing receiver public key")}return{type:n,senderPublicKey:e?.senderPublicKey,receiverPublicKey:e?.receiverPublicKey}}function qn(e){return e.type===_&&typeof e.senderPublicKey=="string"&&typeof e.receiverPublicKey=="string"}var Bn=Object.defineProperty,Ae=Object.getOwnPropertySymbols,Gn=Object.prototype.hasOwnProperty,Wn=Object.prototype.propertyIsEnumerable,Ue=(e,n,t)=>n in e?Bn(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t,_e=(e,n)=>{for(var t in n||(n={}))Gn.call(n,t)&&Ue(e,t,n[t]);if(Ae)for(var t of Ae(n))Wn.call(n,t)&&Ue(e,t,n[t]);return e};const Ce="ReactNative",m={reactNative:"react-native",node:"node",browser:"browser",unknown:"unknown"},q=" ",zn=":",je="/",ne=2,Yn=1e3,$e="js";function te(){return typeof process<"u"&&typeof process.versions<"u"&&typeof process.versions.node<"u"}function C(){return!(0,_walletconnect_window_getters__WEBPACK_IMPORTED_MODULE_7__.getDocument)()&&!!(0,_walletconnect_window_getters__WEBPACK_IMPORTED_MODULE_7__.getNavigator)()&&navigator.product===Ce}function D(){return!te()&&!!(0,_walletconnect_window_getters__WEBPACK_IMPORTED_MODULE_7__.getNavigator)()}function T(){return C()?m.reactNative:te()?m.node:D()?m.browser:m.unknown}function Jn(){var e;try{return C()&&typeof __webpack_require__.g<"u"&&typeof(__webpack_require__.g==null?void 0:__webpack_require__.g.Application)<"u"?(e=__webpack_require__.g.Application)==null?void 0:e.applicationId:void 0}catch{return}}function De(e,n){let t=query_string__WEBPACK_IMPORTED_MODULE_9__.parse(e);return t=_e(_e({},t),n),e=query_string__WEBPACK_IMPORTED_MODULE_9__.stringify(t),e}function Qn(){return (0,_walletconnect_window_metadata__WEBPACK_IMPORTED_MODULE_8__.getWindowMetadata)()||{name:"",description:"",url:"",icons:[""]}}function Zn(e,n){var t;const r=T(),o={protocol:e,version:n,env:r};return r==="browser"&&(o.host=((t=(0,_walletconnect_window_getters__WEBPACK_IMPORTED_MODULE_7__.getLocation)())==null?void 0:t.host)||"unknown"),o}function ke(){if(T()===m.reactNative&&typeof __webpack_require__.g<"u"&&typeof(__webpack_require__.g==null?void 0:__webpack_require__.g.Platform)<"u"){const{OS:t,Version:r}=__webpack_require__.g.Platform;return[t,r].join("-")}const e=(0,detect_browser__WEBPACK_IMPORTED_MODULE_11__.detect)();if(e===null)return"unknown";const n=e.os?e.os.replace(" ","").toLowerCase():"unknown";return e.type==="browser"?[n,e.name,e.version].join("-"):[n,e.version].join("-")}function Ve(){var e;const n=T();return n===m.browser?[n,((e=(0,_walletconnect_window_getters__WEBPACK_IMPORTED_MODULE_7__.getLocation)())==null?void 0:e.host)||"unknown"].join(":"):n}function Me(e,n,t){const r=ke(),o=Ve();return[[e,n].join("-"),[$e,t].join("-"),r,o].join("/")}function Xn({protocol:e,version:n,relayUrl:t,sdkVersion:r,auth:o,projectId:s,useOnCloseEvent:i,bundleId:d}){const l=t.split("?"),c=Me(e,n,r),u={auth:o,ua:c,projectId:s,useOnCloseEvent:i||void 0,origin:d||void 0},a=De(l[1]||"",u);return l[0]+"?"+a}function et(e){let n=(e.match(/^[^:]+(?=:\\/\\/)/gi)||[])[0];const t=typeof n<"u"?e.split("://")[1]:e;return n=n==="wss"?"https":"http",[n,t].join("://")}function nt(e,n,t){if(!e[n]||typeof e[n]!==t)throw new Error(`Missing or invalid "${n}" param`)}function Ke(e,n=ne){return Le(e.split(je),n)}function tt(e){return Ke(e).join(q)}function O(e,n){return e.filter(t=>n.includes(t)).length===e.length}function Le(e,n=ne){return e.slice(Math.max(e.length-n,0))}function rt(e){return Object.fromEntries(e.entries())}function ot(e){return new Map(Object.entries(e))}function st(e,n){const t={};return Object.keys(e).forEach(r=>{t[r]=n(e[r])}),t}const it=e=>e;function xe(e){return e.trim().replace(/^\\w/,n=>n.toUpperCase())}function ct(e){return e.split(q).map(n=>xe(n)).join(q)}function at(e=_walletconnect_time__WEBPACK_IMPORTED_MODULE_6__.FIVE_MINUTES,n){const t=(0,_walletconnect_time__WEBPACK_IMPORTED_MODULE_6__.toMiliseconds)(e||_walletconnect_time__WEBPACK_IMPORTED_MODULE_6__.FIVE_MINUTES);let r,o,s;return{resolve:i=>{s&&r&&(clearTimeout(s),r(i))},reject:i=>{s&&o&&(clearTimeout(s),o(i))},done:()=>new Promise((i,d)=>{s=setTimeout(()=>{d(new Error(n))},t),r=i,o=d})}}function ut(e,n,t){return new Promise(async(r,o)=>{const s=setTimeout(()=>o(new Error(t)),n);try{const i=await e;r(i)}catch(i){o(i)}clearTimeout(s)})}function re(e,n){if(typeof n=="string"&&n.startsWith(`${e}:`))return n;if(e.toLowerCase()==="topic"){if(typeof n!="string")throw new Error(\'Value must be "string" for expirer target type: topic\');return`topic:${n}`}else if(e.toLowerCase()==="id"){if(typeof n!="number")throw new Error(\'Value must be "number" for expirer target type: id\');return`id:${n}`}throw new Error(`Unknown expirer target type: ${e}`)}function lt(e){return re("topic",e)}function dt(e){return re("id",e)}function ft(e){const[n,t]=e.split(":"),r={id:void 0,topic:void 0};if(n==="topic"&&typeof t=="string")r.topic=t;else if(n==="id"&&Number.isInteger(Number(t)))r.id=Number(t);else throw new Error(`Invalid target, expected id:number or topic:string, got ${n}:${t}`);return r}function pt(e,n){return (0,_walletconnect_time__WEBPACK_IMPORTED_MODULE_6__.fromMiliseconds)((n||Date.now())+(0,_walletconnect_time__WEBPACK_IMPORTED_MODULE_6__.toMiliseconds)(e))}function mt(e){return Date.now()>=(0,_walletconnect_time__WEBPACK_IMPORTED_MODULE_6__.toMiliseconds)(e)}function yt(e,n){return`${e}${n?`:${n}`:""}`}function S(e=[],n=[]){return[...new Set([...e,...n])]}async function ht({id:e,topic:n,wcDeepLink:t}){try{if(!t)return;const r=typeof t=="string"?JSON.parse(t):t;let o=r?.href;if(typeof o!="string")return;o.endsWith("/")&&(o=o.slice(0,-1));const s=`${o}/wc?requestId=${e}&sessionTopic=${n}`,i=T();i===m.browser?s.startsWith("https://")?window.open(s,"_blank","noreferrer noopener"):window.open(s,"_self","noreferrer noopener"):i===m.reactNative&&typeof(__webpack_require__.g==null?void 0:__webpack_require__.g.Linking)<"u"&&await __webpack_require__.g.Linking.openURL(s)}catch(r){console.error(r)}}async function gt(e,n){try{return await e.getItem(n)||(D()?localStorage.getItem(n):void 0)}catch(t){console.error(t)}}const Fe="irn";function vt(e){return e?.relay||{protocol:Fe}}function Et(e){const n=_walletconnect_relay_api__WEBPACK_IMPORTED_MODULE_10__.RELAY_JSONRPC[e];if(typeof n>"u")throw new Error(`Relay Protocol not supported: ${e}`);return n}var bt=Object.defineProperty,He=Object.getOwnPropertySymbols,Nt=Object.prototype.hasOwnProperty,Ot=Object.prototype.propertyIsEnumerable,qe=(e,n,t)=>n in e?bt(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t,St=(e,n)=>{for(var t in n||(n={}))Nt.call(n,t)&&qe(e,t,n[t]);if(He)for(var t of He(n))Ot.call(n,t)&&qe(e,t,n[t]);return e};function Be(e,n="-"){const t={},r="relay"+n;return Object.keys(e).forEach(o=>{if(o.startsWith(r)){const s=o.replace(r,""),i=e[o];t[s]=i}}),t}function wt(e){e=e.includes("wc://")?e.replace("wc://",""):e,e=e.includes("wc:")?e.replace("wc:",""):e;const n=e.indexOf(":"),t=e.indexOf("?")!==-1?e.indexOf("?"):void 0,r=e.substring(0,n),o=e.substring(n+1,t).split("@"),s=typeof t<"u"?e.substring(t):"",i=query_string__WEBPACK_IMPORTED_MODULE_9__.parse(s);return{protocol:r,topic:Ge(o[0]),version:parseInt(o[1],10),symKey:i.symKey,relay:Be(i)}}function Ge(e){return e.startsWith("//")?e.substring(2):e}function We(e,n="-"){const t="relay",r={};return Object.keys(e).forEach(o=>{const s=t+n+o;e[o]&&(r[s]=e[o])}),r}function It(e){return`${e.protocol}:${e.topic}@${e.version}?`+query_string__WEBPACK_IMPORTED_MODULE_9__.stringify(St({symKey:e.symKey},We(e.relay)))}var Pt=Object.defineProperty,Rt=Object.defineProperties,Tt=Object.getOwnPropertyDescriptors,ze=Object.getOwnPropertySymbols,At=Object.prototype.hasOwnProperty,Ut=Object.prototype.propertyIsEnumerable,Ye=(e,n,t)=>n in e?Pt(e,n,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[n]=t,_t=(e,n)=>{for(var t in n||(n={}))At.call(n,t)&&Ye(e,t,n[t]);if(ze)for(var t of ze(n))Ut.call(n,t)&&Ye(e,t,n[t]);return e},Ct=(e,n)=>Rt(e,Tt(n));function A(e){const n=[];return e.forEach(t=>{const[r,o]=t.split(":");n.push(`${r}:${o}`)}),n}function Je(e){const n=[];return Object.values(e).forEach(t=>{n.push(...A(t.accounts))}),n}function Qe(e,n){const t=[];return Object.values(e).forEach(r=>{A(r.accounts).includes(n)&&t.push(...r.methods)}),t}function Ze(e,n){const t=[];return Object.values(e).forEach(r=>{A(r.accounts).includes(n)&&t.push(...r.events)}),t}function jt(e,n){const t=un(e,n);if(t)throw new Error(t.message);const r={};for(const[o,s]of Object.entries(e))r[o]={methods:s.methods,events:s.events,chains:s.accounts.map(i=>`${i.split(":")[0]}:${i.split(":")[1]}`)};return r}function $t(e){const{proposal:{requiredNamespaces:n,optionalNamespaces:t={}},supportedNamespaces:r}=e,o=se(n),s=se(t),i={};Object.keys(r).forEach(c=>{const u=r[c].chains,a=r[c].methods,b=r[c].events,I=r[c].accounts;u.forEach(y=>{if(!I.some(f=>f.includes(y)))throw new Error(`No accounts provided for chain ${y} in namespace ${c}`)}),i[c]={chains:u,methods:a,events:b,accounts:I}});const d=dn(n,i,"approve()");if(d)throw new Error(d.message);const l={};return!Object.keys(n).length&&!Object.keys(t).length?i:(Object.keys(o).forEach(c=>{const u=r[c].chains.filter(y=>{var f,g;return(g=(f=o[c])==null?void 0:f.chains)==null?void 0:g.includes(y)}),a=r[c].methods.filter(y=>{var f,g;return(g=(f=o[c])==null?void 0:f.methods)==null?void 0:g.includes(y)}),b=r[c].events.filter(y=>{var f,g;return(g=(f=o[c])==null?void 0:f.events)==null?void 0:g.includes(y)}),I=u.map(y=>r[c].accounts.filter(f=>f.includes(`${y}:`))).flat();l[c]={chains:u,methods:a,events:b,accounts:I}}),Object.keys(s).forEach(c=>{var u,a,b,I,y,f;if(!r[c])return;const g=(a=(u=s[c])==null?void 0:u.chains)==null?void 0:a.filter(P=>r[c].chains.includes(P)),vn=r[c].methods.filter(P=>{var R,j;return(j=(R=s[c])==null?void 0:R.methods)==null?void 0:j.includes(P)}),En=r[c].events.filter(P=>{var R,j;return(j=(R=s[c])==null?void 0:R.events)==null?void 0:j.includes(P)}),bn=g?.map(P=>r[c].accounts.filter(R=>R.includes(`${P}:`))).flat();l[c]={chains:S((b=l[c])==null?void 0:b.chains,g),methods:S((I=l[c])==null?void 0:I.methods,vn),events:S((y=l[c])==null?void 0:y.events,En),accounts:S((f=l[c])==null?void 0:f.accounts,bn)}}),l)}function oe(e){return e.includes(":")}function Xe(e){return oe(e)?e.split(":")[0]:e}function se(e){var n,t,r;const o={};if(!B(e))return o;for(const[s,i]of Object.entries(e)){const d=oe(s)?[s]:i.chains,l=i.methods||[],c=i.events||[],u=Xe(s);o[u]=Ct(_t({},o[u]),{chains:S(d,(n=o[u])==null?void 0:n.chains),methods:S(l,(t=o[u])==null?void 0:t.methods),events:S(c,(r=o[u])==null?void 0:r.events)})}return o}const en={INVALID_METHOD:{message:"Invalid method.",code:1001},INVALID_EVENT:{message:"Invalid event.",code:1002},INVALID_UPDATE_REQUEST:{message:"Invalid update request.",code:1003},INVALID_EXTEND_REQUEST:{message:"Invalid extend request.",code:1004},INVALID_SESSION_SETTLE_REQUEST:{message:"Invalid session settle request.",code:1005},UNAUTHORIZED_METHOD:{message:"Unauthorized method.",code:3001},UNAUTHORIZED_EVENT:{message:"Unauthorized event.",code:3002},UNAUTHORIZED_UPDATE_REQUEST:{message:"Unauthorized update request.",code:3003},UNAUTHORIZED_EXTEND_REQUEST:{message:"Unauthorized extend request.",code:3004},USER_REJECTED:{message:"User rejected.",code:5e3},USER_REJECTED_CHAINS:{message:"User rejected chains.",code:5001},USER_REJECTED_METHODS:{message:"User rejected methods.",code:5002},USER_REJECTED_EVENTS:{message:"User rejected events.",code:5003},UNSUPPORTED_CHAINS:{message:"Unsupported chains.",code:5100},UNSUPPORTED_METHODS:{message:"Unsupported methods.",code:5101},UNSUPPORTED_EVENTS:{message:"Unsupported events.",code:5102},UNSUPPORTED_ACCOUNTS:{message:"Unsupported accounts.",code:5103},UNSUPPORTED_NAMESPACE_KEY:{message:"Unsupported namespace key.",code:5104},USER_DISCONNECTED:{message:"User disconnected.",code:6e3},SESSION_SETTLEMENT_FAILED:{message:"Session settlement failed.",code:7e3},WC_METHOD_UNSUPPORTED:{message:"Unsupported wc_ method.",code:10001}},nn={NOT_INITIALIZED:{message:"Not initialized.",code:1},NO_MATCHING_KEY:{message:"No matching key.",code:2},RESTORE_WILL_OVERRIDE:{message:"Restore will override.",code:3},RESUBSCRIBED:{message:"Resubscribed.",code:4},MISSING_OR_INVALID:{message:"Missing or invalid.",code:5},EXPIRED:{message:"Expired.",code:6},UNKNOWN_TYPE:{message:"Unknown type.",code:7},MISMATCHED_TOPIC:{message:"Mismatched topic.",code:8},NON_CONFORMING_NAMESPACES:{message:"Non conforming namespaces.",code:9}};function N(e,n){const{message:t,code:r}=nn[e];return{message:n?`${t} ${n}`:t,code:r}}function U(e,n){const{message:t,code:r}=en[e];return{message:n?`${t} ${n}`:t,code:r}}function k(e,n){return Array.isArray(e)?typeof n<"u"&&e.length?e.every(n):!0:!1}function B(e){return Object.getPrototypeOf(e)===Object.prototype&&Object.keys(e).length}function w(e){return typeof e>"u"}function h(e,n){return n&&w(e)?!0:typeof e=="string"&&!!e.trim().length}function G(e,n){return n&&w(e)?!0:typeof e=="number"&&!isNaN(e)}function Dt(e,n){const{requiredNamespaces:t}=n,r=Object.keys(e.namespaces),o=Object.keys(t);let s=!0;return O(o,r)?(r.forEach(i=>{const{accounts:d,methods:l,events:c}=e.namespaces[i],u=A(d),a=t[i];(!O(L(i,a),u)||!O(a.methods,l)||!O(a.events,c))&&(s=!1)}),s):!1}function V(e){return h(e,!1)&&e.includes(":")?e.split(":").length===2:!1}function tn(e){if(h(e,!1)&&e.includes(":")){const n=e.split(":");if(n.length===3){const t=n[0]+":"+n[1];return!!n[2]&&V(t)}}return!1}function kt(e){if(h(e,!1))try{return typeof new URL(e)<"u"}catch{return!1}return!1}function Vt(e){var n;return(n=e?.proposer)==null?void 0:n.publicKey}function Mt(e){return e?.topic}function Kt(e,n){let t=null;return h(e?.publicKey,!1)||(t=N("MISSING_OR_INVALID",`${n} controller public key should be a string`)),t}function ie(e){let n=!0;return k(e)?e.length&&(n=e.every(t=>h(t,!1))):n=!1,n}function rn(e,n,t){let r=null;return k(n)&&n.length?n.forEach(o=>{r||V(o)||(r=U("UNSUPPORTED_CHAINS",`${t}, chain ${o} should be a string and conform to "namespace:chainId" format`))}):V(e)||(r=U("UNSUPPORTED_CHAINS",`${t}, chains must be defined as "namespace:chainId" e.g. "eip155:1": {...} in the namespace key OR as an array of CAIP-2 chainIds e.g. eip155: { chains: ["eip155:1", "eip155:5"] }`)),r}function on(e,n,t){let r=null;return Object.entries(e).forEach(([o,s])=>{if(r)return;const i=rn(o,L(o,s),`${n} ${t}`);i&&(r=i)}),r}function sn(e,n){let t=null;return k(e)?e.forEach(r=>{t||tn(r)||(t=U("UNSUPPORTED_ACCOUNTS",`${n}, account ${r} should be a string and conform to "namespace:chainId:address" format`))}):t=U("UNSUPPORTED_ACCOUNTS",`${n}, accounts should be an array of strings conforming to "namespace:chainId:address" format`),t}function cn(e,n){let t=null;return Object.values(e).forEach(r=>{if(t)return;const o=sn(r?.accounts,`${n} namespace`);o&&(t=o)}),t}function an(e,n){let t=null;return ie(e?.methods)?ie(e?.events)||(t=U("UNSUPPORTED_EVENTS",`${n}, events should be an array of strings or empty array for no events`)):t=U("UNSUPPORTED_METHODS",`${n}, methods should be an array of strings or empty array for no methods`),t}function ce(e,n){let t=null;return Object.values(e).forEach(r=>{if(t)return;const o=an(r,`${n}, namespace`);o&&(t=o)}),t}function Lt(e,n,t){let r=null;if(e&&B(e)){const o=ce(e,n);o&&(r=o);const s=on(e,n,t);s&&(r=s)}else r=N("MISSING_OR_INVALID",`${n}, ${t} should be an object with data`);return r}function un(e,n){let t=null;if(e&&B(e)){const r=ce(e,n);r&&(t=r);const o=cn(e,n);o&&(t=o)}else t=N("MISSING_OR_INVALID",`${n}, namespaces should be an object with data`);return t}function ln(e){return h(e.protocol,!0)}function xt(e,n){let t=!1;return n&&!e?t=!0:e&&k(e)&&e.length&&e.forEach(r=>{t=ln(r)}),t}function Ft(e){return typeof e=="number"}function Ht(e){return typeof e<"u"&&typeof e!==null}function qt(e){return!(!e||typeof e!="object"||!e.code||!G(e.code,!1)||!e.message||!h(e.message,!1))}function Bt(e){return!(w(e)||!h(e.method,!1))}function Gt(e){return!(w(e)||w(e.result)&&w(e.error)||!G(e.id,!1)||!h(e.jsonrpc,!1))}function Wt(e){return!(w(e)||!h(e.name,!1))}function zt(e,n){return!(!V(n)||!Je(e).includes(n))}function Yt(e,n,t){return h(t,!1)?Qe(e,n).includes(t):!1}function Jt(e,n,t){return h(t,!1)?Ze(e,n).includes(t):!1}function dn(e,n,t){let r=null;const o=Qt(e),s=Zt(n),i=Object.keys(o),d=Object.keys(s),l=fn(Object.keys(e)),c=fn(Object.keys(n)),u=l.filter(a=>!c.includes(a));return u.length&&(r=N("NON_CONFORMING_NAMESPACES",`${t} namespaces keys don\'t satisfy requiredNamespaces.\n Required: ${u.toString()}\n Received: ${Object.keys(n).toString()}`)),O(i,d)||(r=N("NON_CONFORMING_NAMESPACES",`${t} namespaces chains don\'t satisfy required namespaces.\n Required: ${i.toString()}\n Approved: ${d.toString()}`)),Object.keys(n).forEach(a=>{if(!a.includes(":")||r)return;const b=A(n[a].accounts);b.includes(a)||(r=N("NON_CONFORMING_NAMESPACES",`${t} namespaces accounts don\'t satisfy namespace accounts for ${a}\n Required: ${a}\n Approved: ${b.toString()}`))}),i.forEach(a=>{r||(O(o[a].methods,s[a].methods)?O(o[a].events,s[a].events)||(r=N("NON_CONFORMING_NAMESPACES",`${t} namespaces events don\'t satisfy namespace events for ${a}`)):r=N("NON_CONFORMING_NAMESPACES",`${t} namespaces methods don\'t satisfy namespace methods for ${a}`))}),r}function Qt(e){const n={};return Object.keys(e).forEach(t=>{var r;t.includes(":")?n[t]=e[t]:(r=e[t].chains)==null||r.forEach(o=>{n[o]={methods:e[t].methods,events:e[t].events}})}),n}function fn(e){return[...new Set(e.map(n=>n.includes(":")?n.split(":")[0]:n))]}function Zt(e){const n={};return Object.keys(e).forEach(t=>{if(t.includes(":"))n[t]=e[t];else{const r=A(e[t].accounts);r?.forEach(o=>{n[o]={accounts:e[t].accounts.filter(s=>s.includes(`${o}:`)),methods:e[t].methods,events:e[t].events}})}}),n}function Xt(e,n){return G(e,!1)&&e<=n.max&&e>=n.min}function er(){const e=T();return new Promise(n=>{switch(e){case m.browser:n(pn());break;case m.reactNative:n(mn());break;case m.node:n(yn());break;default:n(!0)}})}function pn(){return D()&&navigator?.onLine}async function mn(){if(C()&&typeof __webpack_require__.g<"u"&&__webpack_require__.g!=null&&__webpack_require__.g.NetInfo){const e=await(__webpack_require__.g==null?void 0:__webpack_require__.g.NetInfo.fetch());return e?.isConnected}return!0}function yn(){return!0}function nr(e){switch(T()){case m.browser:hn(e);break;case m.reactNative:gn(e);break;case m.node:break}}function hn(e){!C()&&D()&&(window.addEventListener("online",()=>e(!0)),window.addEventListener("offline",()=>e(!1)))}function gn(e){C()&&typeof __webpack_require__.g<"u"&&__webpack_require__.g!=null&&__webpack_require__.g.NetInfo&&__webpack_require__.g?.NetInfo.addEventListener(n=>e(n?.isConnected))}const ae={};class tr{static get(n){return ae[n]}static set(n,t){ae[n]=t}static delete(n){delete ae[n]}}\n//# sourceMappingURL=index.es.js.map\n\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/utils/dist/index.es.js?')},"./node_modules/@walletconnect/window-getters/dist/cjs/index.js":(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.getLocalStorage = exports.getLocalStorageOrThrow = exports.getCrypto = exports.getCryptoOrThrow = exports.getLocation = exports.getLocationOrThrow = exports.getNavigator = exports.getNavigatorOrThrow = exports.getDocument = exports.getDocumentOrThrow = exports.getFromWindowOrThrow = exports.getFromWindow = void 0;\nfunction getFromWindow(name) {\n let res = undefined;\n if (typeof window !== "undefined" && typeof window[name] !== "undefined") {\n res = window[name];\n }\n return res;\n}\nexports.getFromWindow = getFromWindow;\nfunction getFromWindowOrThrow(name) {\n const res = getFromWindow(name);\n if (!res) {\n throw new Error(`${name} is not defined in Window`);\n }\n return res;\n}\nexports.getFromWindowOrThrow = getFromWindowOrThrow;\nfunction getDocumentOrThrow() {\n return getFromWindowOrThrow("document");\n}\nexports.getDocumentOrThrow = getDocumentOrThrow;\nfunction getDocument() {\n return getFromWindow("document");\n}\nexports.getDocument = getDocument;\nfunction getNavigatorOrThrow() {\n return getFromWindowOrThrow("navigator");\n}\nexports.getNavigatorOrThrow = getNavigatorOrThrow;\nfunction getNavigator() {\n return getFromWindow("navigator");\n}\nexports.getNavigator = getNavigator;\nfunction getLocationOrThrow() {\n return getFromWindowOrThrow("location");\n}\nexports.getLocationOrThrow = getLocationOrThrow;\nfunction getLocation() {\n return getFromWindow("location");\n}\nexports.getLocation = getLocation;\nfunction getCryptoOrThrow() {\n return getFromWindowOrThrow("crypto");\n}\nexports.getCryptoOrThrow = getCryptoOrThrow;\nfunction getCrypto() {\n return getFromWindow("crypto");\n}\nexports.getCrypto = getCrypto;\nfunction getLocalStorageOrThrow() {\n return getFromWindowOrThrow("localStorage");\n}\nexports.getLocalStorageOrThrow = getLocalStorageOrThrow;\nfunction getLocalStorage() {\n return getFromWindow("localStorage");\n}\nexports.getLocalStorage = getLocalStorage;\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/window-getters/dist/cjs/index.js?')},"./node_modules/@walletconnect/window-metadata/dist/cjs/index.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.getWindowMetadata = void 0;\nconst window_getters_1 = __webpack_require__(/*! @walletconnect/window-getters */ "./node_modules/@walletconnect/window-getters/dist/cjs/index.js");\nfunction getWindowMetadata() {\n let doc;\n let loc;\n try {\n doc = window_getters_1.getDocumentOrThrow();\n loc = window_getters_1.getLocationOrThrow();\n }\n catch (e) {\n return null;\n }\n function getIcons() {\n const links = doc.getElementsByTagName("link");\n const icons = [];\n for (let i = 0; i < links.length; i++) {\n const link = links[i];\n const rel = link.getAttribute("rel");\n if (rel) {\n if (rel.toLowerCase().indexOf("icon") > -1) {\n const href = link.getAttribute("href");\n if (href) {\n if (href.toLowerCase().indexOf("https:") === -1 &&\n href.toLowerCase().indexOf("http:") === -1 &&\n href.indexOf("//") !== 0) {\n let absoluteHref = loc.protocol + "//" + loc.host;\n if (href.indexOf("/") === 0) {\n absoluteHref += href;\n }\n else {\n const path = loc.pathname.split("/");\n path.pop();\n const finalPath = path.join("/");\n absoluteHref += finalPath + "/" + href;\n }\n icons.push(absoluteHref);\n }\n else if (href.indexOf("//") === 0) {\n const absoluteUrl = loc.protocol + href;\n icons.push(absoluteUrl);\n }\n else {\n icons.push(href);\n }\n }\n }\n }\n }\n return icons;\n }\n function getWindowMetadataOfAny(...args) {\n const metaTags = doc.getElementsByTagName("meta");\n for (let i = 0; i < metaTags.length; i++) {\n const tag = metaTags[i];\n const attributes = ["itemprop", "property", "name"]\n .map((target) => tag.getAttribute(target))\n .filter((attr) => {\n if (attr) {\n return args.includes(attr);\n }\n return false;\n });\n if (attributes.length && attributes) {\n const content = tag.getAttribute("content");\n if (content) {\n return content;\n }\n }\n }\n return "";\n }\n function getName() {\n let name = getWindowMetadataOfAny("name", "og:site_name", "og:title", "twitter:title");\n if (!name) {\n name = doc.title;\n }\n return name;\n }\n function getDescription() {\n const description = getWindowMetadataOfAny("description", "og:description", "twitter:description", "keywords");\n return description;\n }\n const name = getName();\n const description = getDescription();\n const url = loc.origin;\n const icons = getIcons();\n const meta = {\n description,\n url,\n icons,\n name,\n };\n return meta;\n}\nexports.getWindowMetadata = getWindowMetadata;\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://beacon/./node_modules/@walletconnect/window-metadata/dist/cjs/index.js?')},"./node_modules/base-x/src/index.js":(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n// @ts-ignore\nvar _Buffer = (__webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer)\nfunction base (ALPHABET) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256)\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i)\n var xc = x.charCodeAt(0)\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i\n }\n var BASE = ALPHABET.length\n var LEADER = ALPHABET.charAt(0)\n var FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\n function encode (source) {\n if (Array.isArray(source) || source instanceof Uint8Array) { source = _Buffer.from(source) }\n if (!_Buffer.isBuffer(source)) { throw new TypeError('Expected Buffer') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0\n var length = 0\n var pbegin = 0\n var pend = source.length\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++\n zeroes++\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n var b58 = new Uint8Array(size)\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin]\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0\n b58[it1] = (carry % BASE) >>> 0\n carry = (carry / BASE) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n pbegin++\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length\n while (it2 !== size && b58[it2] === 0) {\n it2++\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes)\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return _Buffer.alloc(0) }\n var psz = 0\n // Skip and count leading '1's.\n var zeroes = 0\n var length = 0\n while (source[psz] === LEADER) {\n zeroes++\n psz++\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size)\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)]\n // Invalid character\n if (carry === 255) { return }\n var i = 0\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0\n b256[it3] = (carry % 256) >>> 0\n carry = (carry / 256) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n psz++\n }\n // Skip leading zeroes in b256.\n var it4 = size - length\n while (it4 !== size && b256[it4] === 0) {\n it4++\n }\n var vch = _Buffer.allocUnsafe(zeroes + (size - it4))\n vch.fill(0x00, 0, zeroes)\n var j = zeroes\n while (it4 !== size) {\n vch[j++] = b256[it4++]\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string)\n if (buffer) { return buffer }\n throw new Error('Non-base' + BASE + ' character')\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nmodule.exports = base\n\n\n//# sourceURL=webpack://beacon/./node_modules/base-x/src/index.js?")},"./node_modules/base64-js/index.js":(__unused_webpack_module,exports)=>{"use strict";eval("\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n\n\n//# sourceURL=webpack://beacon/./node_modules/base64-js/index.js?")},"./node_modules/bs58/index.js":(module,__unused_webpack_exports,__webpack_require__)=>{eval("var basex = __webpack_require__(/*! base-x */ \"./node_modules/base-x/src/index.js\")\nvar ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n\nmodule.exports = basex(ALPHABET)\n\n\n//# sourceURL=webpack://beacon/./node_modules/bs58/index.js?")},"./node_modules/bs58check/base.js":(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nvar base58 = __webpack_require__(/*! bs58 */ "./node_modules/bs58/index.js")\nvar Buffer = (__webpack_require__(/*! safe-buffer */ "./node_modules/safe-buffer/index.js").Buffer)\n\nmodule.exports = function (checksumFn) {\n // Encode a buffer as a base58-check encoded string\n function encode (payload) {\n var checksum = checksumFn(payload)\n\n return base58.encode(Buffer.concat([\n payload,\n checksum\n ], payload.length + 4))\n }\n\n function decodeRaw (buffer) {\n var payload = buffer.slice(0, -4)\n var checksum = buffer.slice(-4)\n var newChecksum = checksumFn(payload)\n\n if (checksum[0] ^ newChecksum[0] |\n checksum[1] ^ newChecksum[1] |\n checksum[2] ^ newChecksum[2] |\n checksum[3] ^ newChecksum[3]) return\n\n return payload\n }\n\n // Decode a base58-check encoded string to a buffer, no result if checksum is wrong\n function decodeUnsafe (string) {\n var buffer = base58.decodeUnsafe(string)\n if (!buffer) return\n\n return decodeRaw(buffer)\n }\n\n function decode (string) {\n var buffer = base58.decode(string)\n var payload = decodeRaw(buffer, checksumFn)\n if (!payload) throw new Error(\'Invalid checksum\')\n return payload\n }\n\n return {\n encode: encode,\n decode: decode,\n decodeUnsafe: decodeUnsafe\n }\n}\n\n\n//# sourceURL=webpack://beacon/./node_modules/bs58check/base.js?')},"./node_modules/bs58check/index.js":(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar createHash = __webpack_require__(/*! create-hash */ \"./node_modules/create-hash/browser.js\")\nvar bs58checkBase = __webpack_require__(/*! ./base */ \"./node_modules/bs58check/base.js\")\n\n// SHA256(SHA256(buffer))\nfunction sha256x2 (buffer) {\n var tmp = createHash('sha256').update(buffer).digest()\n return createHash('sha256').update(tmp).digest()\n}\n\nmodule.exports = bs58checkBase(sha256x2)\n\n\n//# sourceURL=webpack://beacon/./node_modules/bs58check/index.js?")},"./node_modules/buffer/index.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n\n\nconst base64 = __webpack_require__(/*! base64-js */ \"./node_modules/base64-js/index.js\")\nconst ieee754 = __webpack_require__(/*! ieee754 */ \"./node_modules/ieee754/index.js\")\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n\n\n//# sourceURL=webpack://beacon/./node_modules/buffer/index.js?")},"./node_modules/cipher-base/index.js":(module,__unused_webpack_exports,__webpack_require__)=>{eval("var Buffer = (__webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer)\nvar Transform = (__webpack_require__(/*! stream */ \"./node_modules/stream-browserify/index.js\").Transform)\nvar StringDecoder = (__webpack_require__(/*! string_decoder */ \"./node_modules/string_decoder/lib/string_decoder.js\").StringDecoder)\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")\n\nfunction CipherBase (hashMode) {\n Transform.call(this)\n this.hashMode = typeof hashMode === 'string'\n if (this.hashMode) {\n this[hashMode] = this._finalOrDigest\n } else {\n this.final = this._finalOrDigest\n }\n if (this._final) {\n this.__final = this._final\n this._final = null\n }\n this._decoder = null\n this._encoding = null\n}\ninherits(CipherBase, Transform)\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n if (typeof data === 'string') {\n data = Buffer.from(data, inputEnc)\n }\n\n var outData = this._update(data)\n if (this.hashMode) return this\n\n if (outputEnc) {\n outData = this._toString(outData, outputEnc)\n }\n\n return outData\n}\n\nCipherBase.prototype.setAutoPadding = function () {}\nCipherBase.prototype.getAuthTag = function () {\n throw new Error('trying to get auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAuthTag = function () {\n throw new Error('trying to set auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAAD = function () {\n throw new Error('trying to set aad in unsupported state')\n}\n\nCipherBase.prototype._transform = function (data, _, next) {\n var err\n try {\n if (this.hashMode) {\n this._update(data)\n } else {\n this.push(this._update(data))\n }\n } catch (e) {\n err = e\n } finally {\n next(err)\n }\n}\nCipherBase.prototype._flush = function (done) {\n var err\n try {\n this.push(this.__final())\n } catch (e) {\n err = e\n }\n\n done(err)\n}\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n var outData = this.__final() || Buffer.alloc(0)\n if (outputEnc) {\n outData = this._toString(outData, outputEnc, true)\n }\n return outData\n}\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n if (!this._decoder) {\n this._decoder = new StringDecoder(enc)\n this._encoding = enc\n }\n\n if (this._encoding !== enc) throw new Error('can\\'t switch encodings')\n\n var out = this._decoder.write(value)\n if (fin) {\n out += this._decoder.end()\n }\n\n return out\n}\n\nmodule.exports = CipherBase\n\n\n//# sourceURL=webpack://beacon/./node_modules/cipher-base/index.js?")},"./node_modules/create-hash/browser.js":(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\nvar inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits_browser.js")\nvar MD5 = __webpack_require__(/*! md5.js */ "./node_modules/md5.js/index.js")\nvar RIPEMD160 = __webpack_require__(/*! ripemd160 */ "./node_modules/ripemd160/index.js")\nvar sha = __webpack_require__(/*! sha.js */ "./node_modules/sha.js/index.js")\nvar Base = __webpack_require__(/*! cipher-base */ "./node_modules/cipher-base/index.js")\n\nfunction Hash (hash) {\n Base.call(this, \'digest\')\n\n this._hash = hash\n}\n\ninherits(Hash, Base)\n\nHash.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHash.prototype._final = function () {\n return this._hash.digest()\n}\n\nmodule.exports = function createHash (alg) {\n alg = alg.toLowerCase()\n if (alg === \'md5\') return new MD5()\n if (alg === \'rmd160\' || alg === \'ripemd160\') return new RIPEMD160()\n\n return new Hash(sha(alg))\n}\n\n\n//# sourceURL=webpack://beacon/./node_modules/create-hash/browser.js?')},"./node_modules/decode-uri-component/index.js":module=>{"use strict";eval("\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp('(' + token + ')|([^%]+?)', 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn [decodeURIComponent(components.join(''))];\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher) || [];\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher) || [];\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n\n\n//# sourceURL=webpack://beacon/./node_modules/decode-uri-component/index.js?")},"./node_modules/detect-browser/es/index.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ BotInfo: () => (/* binding */ BotInfo),\n/* harmony export */ BrowserInfo: () => (/* binding */ BrowserInfo),\n/* harmony export */ NodeInfo: () => (/* binding */ NodeInfo),\n/* harmony export */ ReactNativeInfo: () => (/* binding */ ReactNativeInfo),\n/* harmony export */ SearchBotDeviceInfo: () => (/* binding */ SearchBotDeviceInfo),\n/* harmony export */ browserName: () => (/* binding */ browserName),\n/* harmony export */ detect: () => (/* binding */ detect),\n/* harmony export */ detectOS: () => (/* binding */ detectOS),\n/* harmony export */ getNodeVersion: () => (/* binding */ getNodeVersion),\n/* harmony export */ parseUserAgent: () => (/* binding */ parseUserAgent)\n/* harmony export */ });\nvar __spreadArray = (undefined && undefined.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\nvar BrowserInfo = /** @class */ (function () {\n function BrowserInfo(name, version, os) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.type = 'browser';\n }\n return BrowserInfo;\n}());\n\nvar NodeInfo = /** @class */ (function () {\n function NodeInfo(version) {\n this.version = version;\n this.type = 'node';\n this.name = 'node';\n this.os = process.platform;\n }\n return NodeInfo;\n}());\n\nvar SearchBotDeviceInfo = /** @class */ (function () {\n function SearchBotDeviceInfo(name, version, os, bot) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.bot = bot;\n this.type = 'bot-device';\n }\n return SearchBotDeviceInfo;\n}());\n\nvar BotInfo = /** @class */ (function () {\n function BotInfo() {\n this.type = 'bot';\n this.bot = true; // NOTE: deprecated test name instead\n this.name = 'bot';\n this.version = null;\n this.os = null;\n }\n return BotInfo;\n}());\n\nvar ReactNativeInfo = /** @class */ (function () {\n function ReactNativeInfo() {\n this.type = 'react-native';\n this.name = 'react-native';\n this.version = null;\n this.os = null;\n }\n return ReactNativeInfo;\n}());\n\n// tslint:disable-next-line:max-line-length\nvar SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/;\nvar SEARCHBOT_OS_REGEX = /(nuhk|curl|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\\ Jeeves\\/Teoma|ia_archiver)/;\nvar REQUIRED_VERSION_PARTS = 3;\nvar userAgentRules = [\n ['aol', /AOLShield\\/([0-9\\._]+)/],\n ['edge', /Edge\\/([0-9\\._]+)/],\n ['edge-ios', /EdgiOS\\/([0-9\\._]+)/],\n ['yandexbrowser', /YaBrowser\\/([0-9\\._]+)/],\n ['kakaotalk', /KAKAOTALK\\s([0-9\\.]+)/],\n ['samsung', /SamsungBrowser\\/([0-9\\.]+)/],\n ['silk', /\\bSilk\\/([0-9._-]+)\\b/],\n ['miui', /MiuiBrowser\\/([0-9\\.]+)$/],\n ['beaker', /BeakerBrowser\\/([0-9\\.]+)/],\n ['edge-chromium', /EdgA?\\/([0-9\\.]+)/],\n [\n 'chromium-webview',\n /(?!Chrom.*OPR)wv\\).*Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/,\n ],\n ['chrome', /(?!Chrom.*OPR)Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/],\n ['phantomjs', /PhantomJS\\/([0-9\\.]+)(:?\\s|$)/],\n ['crios', /CriOS\\/([0-9\\.]+)(:?\\s|$)/],\n ['firefox', /Firefox\\/([0-9\\.]+)(?:\\s|$)/],\n ['fxios', /FxiOS\\/([0-9\\.]+)/],\n ['opera-mini', /Opera Mini.*Version\\/([0-9\\.]+)/],\n ['opera', /Opera\\/([0-9\\.]+)(?:\\s|$)/],\n ['opera', /OPR\\/([0-9\\.]+)(:?\\s|$)/],\n ['pie', /^Microsoft Pocket Internet Explorer\\/(\\d+\\.\\d+)$/],\n ['pie', /^Mozilla\\/\\d\\.\\d+\\s\\(compatible;\\s(?:MSP?IE|MSInternet Explorer) (\\d+\\.\\d+);.*Windows CE.*\\)$/],\n ['netfront', /^Mozilla\\/\\d\\.\\d+.*NetFront\\/(\\d.\\d)/],\n ['ie', /Trident\\/7\\.0.*rv\\:([0-9\\.]+).*\\).*Gecko$/],\n ['ie', /MSIE\\s([0-9\\.]+);.*Trident\\/[4-7].0/],\n ['ie', /MSIE\\s(7\\.0)/],\n ['bb10', /BB10;\\sTouch.*Version\\/([0-9\\.]+)/],\n ['android', /Android\\s([0-9\\.]+)/],\n ['ios', /Version\\/([0-9\\._]+).*Mobile.*Safari.*/],\n ['safari', /Version\\/([0-9\\._]+).*Safari/],\n ['facebook', /FB[AS]V\\/([0-9\\.]+)/],\n ['instagram', /Instagram\\s([0-9\\.]+)/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Mobile/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Gecko\\)$/],\n ['curl', /^curl\\/([0-9\\.]+)$/],\n ['searchbot', SEARCHBOX_UA_REGEX],\n];\nvar operatingSystemRules = [\n ['iOS', /iP(hone|od|ad)/],\n ['Android OS', /Android/],\n ['BlackBerry OS', /BlackBerry|BB10/],\n ['Windows Mobile', /IEMobile/],\n ['Amazon OS', /Kindle/],\n ['Windows 3.11', /Win16/],\n ['Windows 95', /(Windows 95)|(Win95)|(Windows_95)/],\n ['Windows 98', /(Windows 98)|(Win98)/],\n ['Windows 2000', /(Windows NT 5.0)|(Windows 2000)/],\n ['Windows XP', /(Windows NT 5.1)|(Windows XP)/],\n ['Windows Server 2003', /(Windows NT 5.2)/],\n ['Windows Vista', /(Windows NT 6.0)/],\n ['Windows 7', /(Windows NT 6.1)/],\n ['Windows 8', /(Windows NT 6.2)/],\n ['Windows 8.1', /(Windows NT 6.3)/],\n ['Windows 10', /(Windows NT 10.0)/],\n ['Windows ME', /Windows ME/],\n ['Windows CE', /Windows CE|WinCE|Microsoft Pocket Internet Explorer/],\n ['Open BSD', /OpenBSD/],\n ['Sun OS', /SunOS/],\n ['Chrome OS', /CrOS/],\n ['Linux', /(Linux)|(X11)/],\n ['Mac OS', /(Mac_PowerPC)|(Macintosh)/],\n ['QNX', /QNX/],\n ['BeOS', /BeOS/],\n ['OS/2', /OS\\/2/],\n];\nfunction detect(userAgent) {\n if (!!userAgent) {\n return parseUserAgent(userAgent);\n }\n if (typeof document === 'undefined' &&\n typeof navigator !== 'undefined' &&\n navigator.product === 'ReactNative') {\n return new ReactNativeInfo();\n }\n if (typeof navigator !== 'undefined') {\n return parseUserAgent(navigator.userAgent);\n }\n return getNodeVersion();\n}\nfunction matchUserAgent(ua) {\n // opted for using reduce here rather than Array#first with a regex.test call\n // this is primarily because using the reduce we only perform the regex\n // execution once rather than once for the test and for the exec again below\n // probably something that needs to be benchmarked though\n return (ua !== '' &&\n userAgentRules.reduce(function (matched, _a) {\n var browser = _a[0], regex = _a[1];\n if (matched) {\n return matched;\n }\n var uaMatch = regex.exec(ua);\n return !!uaMatch && [browser, uaMatch];\n }, false));\n}\nfunction browserName(ua) {\n var data = matchUserAgent(ua);\n return data ? data[0] : null;\n}\nfunction parseUserAgent(ua) {\n var matchedRule = matchUserAgent(ua);\n if (!matchedRule) {\n return null;\n }\n var name = matchedRule[0], match = matchedRule[1];\n if (name === 'searchbot') {\n return new BotInfo();\n }\n // Do not use RegExp for split operation as some browser do not support it (See: http://blog.stevenlevithan.com/archives/cross-browser-split)\n var versionParts = match[1] && match[1].split('.').join('_').split('_').slice(0, 3);\n if (versionParts) {\n if (versionParts.length < REQUIRED_VERSION_PARTS) {\n versionParts = __spreadArray(__spreadArray([], versionParts, true), createVersionParts(REQUIRED_VERSION_PARTS - versionParts.length), true);\n }\n }\n else {\n versionParts = [];\n }\n var version = versionParts.join('.');\n var os = detectOS(ua);\n var searchBotMatch = SEARCHBOT_OS_REGEX.exec(ua);\n if (searchBotMatch && searchBotMatch[1]) {\n return new SearchBotDeviceInfo(name, version, os, searchBotMatch[1]);\n }\n return new BrowserInfo(name, version, os);\n}\nfunction detectOS(ua) {\n for (var ii = 0, count = operatingSystemRules.length; ii < count; ii++) {\n var _a = operatingSystemRules[ii], os = _a[0], regex = _a[1];\n var match = regex.exec(ua);\n if (match) {\n return os;\n }\n }\n return null;\n}\nfunction getNodeVersion() {\n var isNode = typeof process !== 'undefined' && process.version;\n return isNode ? new NodeInfo(process.version.slice(1)) : null;\n}\nfunction createVersionParts(count) {\n var output = [];\n for (var ii = 0; ii < count; ii++) {\n output.push('0');\n }\n return output;\n}\n\n\n//# sourceURL=webpack://beacon/./node_modules/detect-browser/es/index.js?")},"./node_modules/events/events.js":module=>{"use strict";eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n\n\n//# sourceURL=webpack://beacon/./node_modules/events/events.js?")},"./node_modules/filter-obj/index.js":module=>{"use strict";eval("\nmodule.exports = function (obj, predicate) {\n\tvar ret = {};\n\tvar keys = Object.keys(obj);\n\tvar isArr = Array.isArray(predicate);\n\n\tfor (var i = 0; i < keys.length; i++) {\n\t\tvar key = keys[i];\n\t\tvar val = obj[key];\n\n\t\tif (isArr ? predicate.indexOf(key) !== -1 : predicate(key, val, obj)) {\n\t\t\tret[key] = val;\n\t\t}\n\t}\n\n\treturn ret;\n};\n\n\n//# sourceURL=webpack://beacon/./node_modules/filter-obj/index.js?")},"./node_modules/hash-base/index.js":(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\nvar Buffer = (__webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer)\nvar Transform = (__webpack_require__(/*! readable-stream */ \"./node_modules/hash-base/node_modules/readable-stream/readable-browser.js\").Transform)\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n throw new TypeError(prefix + ' must be a string or a buffer')\n }\n}\n\nfunction HashBase (blockSize) {\n Transform.call(this)\n\n this._block = Buffer.allocUnsafe(blockSize)\n this._blockSize = blockSize\n this._blockOffset = 0\n this._length = [0, 0, 0, 0]\n\n this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n var error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n throwIfNotStringOrBuffer(data, 'Data')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n // consume data\n var block = this._block\n var offset = 0\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n this._update()\n this._blockOffset = 0\n }\n while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n // update length\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry\n carry = (this._length[j] / 0x0100000000) | 0\n if (carry > 0) this._length[j] -= 0x0100000000 * carry\n }\n\n return this\n}\n\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n var digest = this._digest()\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n // reset state\n this._block.fill(0)\n this._blockOffset = 0\n for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n return digest\n}\n\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n\n\n//# sourceURL=webpack://beacon/./node_modules/hash-base/index.js?")},"./node_modules/hash-base/node_modules/readable-stream/errors-browser.js":module=>{"use strict";eval("\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n\n\n//# sourceURL=webpack://beacon/./node_modules/hash-base/node_modules/readable-stream/errors-browser.js?")},"./node_modules/hash-base/node_modules/readable-stream/lib/_stream_duplex.js":(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n};\n/**/\n\nmodule.exports = Duplex;\nvar Readable = __webpack_require__(/*! ./_stream_readable */ \"./node_modules/hash-base/node_modules/readable-stream/lib/_stream_readable.js\");\nvar Writable = __webpack_require__(/*! ./_stream_writable */ \"./node_modules/hash-base/node_modules/readable-stream/lib/_stream_writable.js\");\n__webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")(Duplex, Readable);\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n\n//# sourceURL=webpack://beacon/./node_modules/hash-base/node_modules/readable-stream/lib/_stream_duplex.js?")},"./node_modules/hash-base/node_modules/readable-stream/lib/_stream_passthrough.js":(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// "Software"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n\n\nmodule.exports = PassThrough;\nvar Transform = __webpack_require__(/*! ./_stream_transform */ "./node_modules/hash-base/node_modules/readable-stream/lib/_stream_transform.js");\n__webpack_require__(/*! inherits */ "./node_modules/inherits/inherits_browser.js")(PassThrough, Transform);\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};\n\n//# sourceURL=webpack://beacon/./node_modules/hash-base/node_modules/readable-stream/lib/_stream_passthrough.js?')},"./node_modules/hash-base/node_modules/readable-stream/lib/_stream_readable.js":(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n\nmodule.exports = Readable;\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = (__webpack_require__(/*! events */ \"./node_modules/events/events.js\").EventEmitter);\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = __webpack_require__(/*! ./internal/streams/stream */ \"./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/stream-browser.js\");\n/**/\n\nvar Buffer = (__webpack_require__(/*! buffer */ \"./node_modules/buffer/index.js\").Buffer);\nvar OurUint8Array = (typeof __webpack_require__.g !== 'undefined' ? __webpack_require__.g : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\nvar debugUtil = __webpack_require__(/*! util */ \"?1e44\");\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\nvar BufferList = __webpack_require__(/*! ./internal/streams/buffer_list */ \"./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/buffer_list.js\");\nvar destroyImpl = __webpack_require__(/*! ./internal/streams/destroy */ \"./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/destroy.js\");\nvar _require = __webpack_require__(/*! ./internal/streams/state */ \"./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/state.js\"),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = (__webpack_require__(/*! ../errors */ \"./node_modules/hash-base/node_modules/readable-stream/errors-browser.js\").codes),\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n__webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ \"./node_modules/hash-base/node_modules/readable-stream/lib/_stream_duplex.js\");\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'end' (and potentially 'finish')\n this.autoDestroy = !!options.autoDestroy;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = (__webpack_require__(/*! string_decoder/ */ \"./node_modules/string_decoder/lib/string_decoder.js\").StringDecoder);\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\nfunction Readable(options) {\n Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ \"./node_modules/hash-base/node_modules/readable-stream/lib/_stream_duplex.js\");\n if (!(this instanceof Readable)) return new Readable(options);\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex);\n\n // legacy\n this.readable = true;\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n }\n\n // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n return er;\n}\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = (__webpack_require__(/*! string_decoder/ */ \"./node_modules/string_decoder/lib/string_decoder.js\").StringDecoder);\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder;\n // If setEncoding(null), decoder.encoding equals utf8\n this._readableState.encoding = this._readableState.decoder.encoding;\n\n // Iterate over current buffer to convert already stored Buffers:\n var p = this._readableState.buffer.head;\n var content = '';\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n this._readableState.buffer.clear();\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n }\n\n // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n return dest;\n};\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0;\n\n // Try start flowing on next tick if stream isn't explicitly paused\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true;\n\n // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n state.paused = false;\n return this;\n};\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n if (!state.reading) {\n stream.read(0);\n }\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n this._readableState.paused = true;\n return this;\n};\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null);\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n return this;\n};\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = __webpack_require__(/*! ./internal/streams/async_iterator */ \"./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/async_iterator.js\");\n }\n return createReadableStreamAsyncIterator(this);\n };\n}\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n});\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length);\n\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = __webpack_require__(/*! ./internal/streams/from */ \"./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/from-browser.js\");\n }\n return from(Readable, iterable, opts);\n };\n}\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}\n\n//# sourceURL=webpack://beacon/./node_modules/hash-base/node_modules/readable-stream/lib/_stream_readable.js?")},"./node_modules/hash-base/node_modules/readable-stream/lib/_stream_transform.js":(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n\n\nmodule.exports = Transform;\nvar _require$codes = (__webpack_require__(/*! ../errors */ \"./node_modules/hash-base/node_modules/readable-stream/errors-browser.js\").codes),\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\nvar Duplex = __webpack_require__(/*! ./_stream_duplex */ \"./node_modules/hash-base/node_modules/readable-stream/lib/_stream_duplex.js\");\n__webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")(Transform, Duplex);\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null)\n // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n var _this = this;\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null)\n // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}\n\n//# sourceURL=webpack://beacon/./node_modules/hash-base/node_modules/readable-stream/lib/_stream_transform.js?")},"./node_modules/hash-base/node_modules/readable-stream/lib/_stream_writable.js":(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n\n\nmodule.exports = Writable;\n\n/* */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar internalUtil = {\n deprecate: __webpack_require__(/*! util-deprecate */ \"./node_modules/util-deprecate/browser.js\")\n};\n/**/\n\n/**/\nvar Stream = __webpack_require__(/*! ./internal/streams/stream */ \"./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/stream-browser.js\");\n/**/\n\nvar Buffer = (__webpack_require__(/*! buffer */ \"./node_modules/buffer/index.js\").Buffer);\nvar OurUint8Array = (typeof __webpack_require__.g !== 'undefined' ? __webpack_require__.g : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = __webpack_require__(/*! ./internal/streams/destroy */ \"./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/destroy.js\");\nvar _require = __webpack_require__(/*! ./internal/streams/state */ \"./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/state.js\"),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = (__webpack_require__(/*! ../errors */ \"./node_modules/hash-base/node_modules/readable-stream/errors-browser.js\").codes),\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n__webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ \"./node_modules/hash-base/node_modules/readable-stream/lib/_stream_duplex.js\");\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'finish' (and potentially 'end')\n this.autoDestroy = !!options.autoDestroy;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\nfunction Writable(options) {\n Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ \"./node_modules/hash-base/node_modules/readable-stream/lib/_stream_duplex.js\");\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex);\n\n // legacy.\n this.writable = true;\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END();\n // TODO: defer error events consistently everywhere, not just the cb\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n return ret;\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n if (entry === null) state.lastBufferedRequest = null;\n }\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n errorOrDestroy(stream, err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n return need;\n}\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n\n // reuse the free corkReq.\n state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};\n\n//# sourceURL=webpack://beacon/./node_modules/hash-base/node_modules/readable-stream/lib/_stream_writable.js?")},"./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/async_iterator.js":(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = __webpack_require__(/*! ./end-of-stream */ \"./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/end-of-stream.js\");\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n if (resolve !== null) {\n var data = iter[kStream].read();\n // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n next: function next() {\n var _this = this;\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n if (error !== null) {\n return Promise.reject(error);\n }\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n }\n\n // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n var lastPromise = this[kLastPromise];\n var promise;\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n promise = new Promise(this[kHandlePromise]);\n }\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject];\n // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n iterator[kError] = err;\n return;\n }\n var resolve = iterator[kLastResolve];\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;\n\n//# sourceURL=webpack://beacon/./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/async_iterator.js?")},"./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/buffer_list.js":(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }\nvar _require = __webpack_require__(/*! buffer */ "./node_modules/buffer/index.js"),\n Buffer = _require.Buffer;\nvar _require2 = __webpack_require__(/*! util */ "?802b"),\n inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || \'inspect\';\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n _createClass(BufferList, [{\n key: "push",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: "unshift",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: "shift",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: "clear",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: "join",\n value: function join(s) {\n if (this.length === 0) return \'\';\n var p = this.head;\n var ret = \'\' + p.data;\n while (p = p.next) ret += s + p.data;\n return ret;\n }\n }, {\n key: "concat",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n }\n\n // Consumes a specified amount of bytes or characters from the buffered data.\n }, {\n key: "consume",\n value: function consume(n, hasStrings) {\n var ret;\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n return ret;\n }\n }, {\n key: "first",\n value: function first() {\n return this.head.data;\n }\n\n // Consumes a specified amount of characters from the buffered data.\n }, {\n key: "_getString",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Consumes a specified amount of bytes from the buffered data.\n }, {\n key: "_getBuffer",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Make sure the linked list only shows the minimal necessary information.\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n return BufferList;\n}();\n\n//# sourceURL=webpack://beacon/./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/buffer_list.js?')},"./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/destroy.js":module=>{"use strict";eval("\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};\n\n//# sourceURL=webpack://beacon/./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/destroy.js?")},"./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/end-of-stream.js":(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n\n\nvar ERR_STREAM_PREMATURE_CLOSE = (__webpack_require__(/*! ../../../errors */ \"./node_modules/hash-base/node_modules/readable-stream/errors-browser.js\").codes).ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n callback.apply(this, args);\n };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n var writableEnded = stream._writableState && stream._writableState.finished;\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n var onclose = function onclose() {\n var err;\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\nmodule.exports = eos;\n\n//# sourceURL=webpack://beacon/./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/end-of-stream.js?")},"./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/from-browser.js":module=>{eval("module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n\n\n//# sourceURL=webpack://beacon/./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/from-browser.js?")},"./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/pipeline.js":(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n\n\nvar eos;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\nvar _require$codes = (__webpack_require__(/*! ../../../errors */ \"./node_modules/hash-base/node_modules/readable-stream/errors-browser.js\").codes),\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = __webpack_require__(/*! ./end-of-stream */ \"./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/end-of-stream.js\");\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true;\n\n // request.destroy just do .end - .abort is what we want\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\nfunction call(fn) {\n fn();\n}\nfunction pipe(from, to) {\n return from.pipe(to);\n}\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\nmodule.exports = pipeline;\n\n//# sourceURL=webpack://beacon/./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/pipeline.js?")},"./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/state.js":(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar ERR_INVALID_OPT_VALUE = (__webpack_require__(/*! ../../../errors */ \"./node_modules/hash-base/node_modules/readable-stream/errors-browser.js\").codes).ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n return Math.floor(hwm);\n }\n\n // Default value\n return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};\n\n//# sourceURL=webpack://beacon/./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/state.js?")},"./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/stream-browser.js":(module,__unused_webpack_exports,__webpack_require__)=>{eval('module.exports = __webpack_require__(/*! events */ "./node_modules/events/events.js").EventEmitter;\n\n\n//# sourceURL=webpack://beacon/./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/stream-browser.js?')},"./node_modules/hash-base/node_modules/readable-stream/readable-browser.js":(module,exports,__webpack_require__)=>{eval('exports = module.exports = __webpack_require__(/*! ./lib/_stream_readable.js */ "./node_modules/hash-base/node_modules/readable-stream/lib/_stream_readable.js");\nexports.Stream = exports;\nexports.Readable = exports;\nexports.Writable = __webpack_require__(/*! ./lib/_stream_writable.js */ "./node_modules/hash-base/node_modules/readable-stream/lib/_stream_writable.js");\nexports.Duplex = __webpack_require__(/*! ./lib/_stream_duplex.js */ "./node_modules/hash-base/node_modules/readable-stream/lib/_stream_duplex.js");\nexports.Transform = __webpack_require__(/*! ./lib/_stream_transform.js */ "./node_modules/hash-base/node_modules/readable-stream/lib/_stream_transform.js");\nexports.PassThrough = __webpack_require__(/*! ./lib/_stream_passthrough.js */ "./node_modules/hash-base/node_modules/readable-stream/lib/_stream_passthrough.js");\nexports.finished = __webpack_require__(/*! ./lib/internal/streams/end-of-stream.js */ "./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/end-of-stream.js");\nexports.pipeline = __webpack_require__(/*! ./lib/internal/streams/pipeline.js */ "./node_modules/hash-base/node_modules/readable-stream/lib/internal/streams/pipeline.js");\n\n\n//# sourceURL=webpack://beacon/./node_modules/hash-base/node_modules/readable-stream/readable-browser.js?')},"./node_modules/ieee754/index.js":(__unused_webpack_module,exports)=>{eval("/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n\n\n//# sourceURL=webpack://beacon/./node_modules/ieee754/index.js?")},"./node_modules/inherits/inherits_browser.js":module=>{eval("if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n\n\n//# sourceURL=webpack://beacon/./node_modules/inherits/inherits_browser.js?")},"./node_modules/lodash.isequal/index.js":(module,exports,__webpack_require__)=>{eval("/* module decorator */ module = __webpack_require__.nmd(module);\n/**\n * Lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright JS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof __webpack_require__.g == 'object' && __webpack_require__.g && __webpack_require__.g.Object === Object && __webpack_require__.g;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = true && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && \"object\" == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\n/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined,\n Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\n/**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\nfunction isEqual(value, other) {\n return baseIsEqual(value, other);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * This method returns a new empty array.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {Array} Returns the new empty array.\n * @example\n *\n * var arrays = _.times(2, _.stubArray);\n *\n * console.log(arrays);\n * // => [[], []]\n *\n * console.log(arrays[0] === arrays[1]);\n * // => false\n */\nfunction stubArray() {\n return [];\n}\n\n/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = isEqual;\n\n\n//# sourceURL=webpack://beacon/./node_modules/lodash.isequal/index.js?")},"./node_modules/md5.js/index.js":(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\nvar inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits_browser.js")\nvar HashBase = __webpack_require__(/*! hash-base */ "./node_modules/hash-base/index.js")\nvar Buffer = (__webpack_require__(/*! safe-buffer */ "./node_modules/safe-buffer/index.js").Buffer)\n\nvar ARRAY16 = new Array(16)\n\nfunction MD5 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n}\n\ninherits(MD5, HashBase)\n\nMD5.prototype._update = function () {\n var M = ARRAY16\n for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4)\n\n var a = this._a\n var b = this._b\n var c = this._c\n var d = this._d\n\n a = fnF(a, b, c, d, M[0], 0xd76aa478, 7)\n d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12)\n c = fnF(c, d, a, b, M[2], 0x242070db, 17)\n b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22)\n a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7)\n d = fnF(d, a, b, c, M[5], 0x4787c62a, 12)\n c = fnF(c, d, a, b, M[6], 0xa8304613, 17)\n b = fnF(b, c, d, a, M[7], 0xfd469501, 22)\n a = fnF(a, b, c, d, M[8], 0x698098d8, 7)\n d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12)\n c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17)\n b = fnF(b, c, d, a, M[11], 0x895cd7be, 22)\n a = fnF(a, b, c, d, M[12], 0x6b901122, 7)\n d = fnF(d, a, b, c, M[13], 0xfd987193, 12)\n c = fnF(c, d, a, b, M[14], 0xa679438e, 17)\n b = fnF(b, c, d, a, M[15], 0x49b40821, 22)\n\n a = fnG(a, b, c, d, M[1], 0xf61e2562, 5)\n d = fnG(d, a, b, c, M[6], 0xc040b340, 9)\n c = fnG(c, d, a, b, M[11], 0x265e5a51, 14)\n b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20)\n a = fnG(a, b, c, d, M[5], 0xd62f105d, 5)\n d = fnG(d, a, b, c, M[10], 0x02441453, 9)\n c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14)\n b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20)\n a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5)\n d = fnG(d, a, b, c, M[14], 0xc33707d6, 9)\n c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14)\n b = fnG(b, c, d, a, M[8], 0x455a14ed, 20)\n a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5)\n d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9)\n c = fnG(c, d, a, b, M[7], 0x676f02d9, 14)\n b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20)\n\n a = fnH(a, b, c, d, M[5], 0xfffa3942, 4)\n d = fnH(d, a, b, c, M[8], 0x8771f681, 11)\n c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16)\n b = fnH(b, c, d, a, M[14], 0xfde5380c, 23)\n a = fnH(a, b, c, d, M[1], 0xa4beea44, 4)\n d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11)\n c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16)\n b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23)\n a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4)\n d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11)\n c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16)\n b = fnH(b, c, d, a, M[6], 0x04881d05, 23)\n a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4)\n d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11)\n c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16)\n b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23)\n\n a = fnI(a, b, c, d, M[0], 0xf4292244, 6)\n d = fnI(d, a, b, c, M[7], 0x432aff97, 10)\n c = fnI(c, d, a, b, M[14], 0xab9423a7, 15)\n b = fnI(b, c, d, a, M[5], 0xfc93a039, 21)\n a = fnI(a, b, c, d, M[12], 0x655b59c3, 6)\n d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10)\n c = fnI(c, d, a, b, M[10], 0xffeff47d, 15)\n b = fnI(b, c, d, a, M[1], 0x85845dd1, 21)\n a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6)\n d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10)\n c = fnI(c, d, a, b, M[6], 0xa3014314, 15)\n b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21)\n a = fnI(a, b, c, d, M[4], 0xf7537e82, 6)\n d = fnI(d, a, b, c, M[11], 0xbd3af235, 10)\n c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15)\n b = fnI(b, c, d, a, M[9], 0xeb86d391, 21)\n\n this._a = (this._a + a) | 0\n this._b = (this._b + b) | 0\n this._c = (this._c + c) | 0\n this._d = (this._d + d) | 0\n}\n\nMD5.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.allocUnsafe(16)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fnF (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnG (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnH (a, b, c, d, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnI (a, b, c, d, m, k, s) {\n return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0\n}\n\nmodule.exports = MD5\n\n\n//# sourceURL=webpack://beacon/./node_modules/md5.js/index.js?')},"./node_modules/qrcode-svg/lib/qrcode.js":(module,__unused_webpack_exports,__webpack_require__)=>{eval('/**\n * @fileoverview\n * - modified davidshimjs/qrcodejs library for use in node.js\n * - Using the \'QRCode for Javascript library\'\n * - Fixed dataset of \'QRCode for Javascript library\' for support full-spec.\n * - this library has no dependencies.\n *\n * @version 0.9.1 (2016-02-12)\n * @author davidshimjs, papnkukn\n * @see
http://www.d-project.com/\n * @see http://jeromeetienne.github.com/jquery-qrcode/\n * @see https://github.com/davidshimjs/qrcodejs\n */\n\n//---------------------------------------------------------------------\n// QRCode for JavaScript\n//\n// Copyright (c) 2009 Kazuhiko Arase\n//\n// URL: http://www.d-project.com/\n//\n// Licensed under the MIT license:\n// http://www.opensource.org/licenses/mit-license.php\n//\n// The word "QR Code" is registered trademark of \n// DENSO WAVE INCORPORATED\n// http://www.denso-wave.com/qrcode/faqpatent-e.html\n//\n//---------------------------------------------------------------------\nfunction QR8bitByte(data) {\n this.mode = QRMode.MODE_8BIT_BYTE;\n this.data = data;\n this.parsedData = [];\n\n // Added to support UTF-8 Characters\n for (var i = 0, l = this.data.length; i < l; i++) {\n var byteArray = [];\n var code = this.data.charCodeAt(i);\n\n if (code > 0x10000) {\n byteArray[0] = 0xF0 | ((code & 0x1C0000) >>> 18);\n byteArray[1] = 0x80 | ((code & 0x3F000) >>> 12);\n byteArray[2] = 0x80 | ((code & 0xFC0) >>> 6);\n byteArray[3] = 0x80 | (code & 0x3F);\n } else if (code > 0x800) {\n byteArray[0] = 0xE0 | ((code & 0xF000) >>> 12);\n byteArray[1] = 0x80 | ((code & 0xFC0) >>> 6);\n byteArray[2] = 0x80 | (code & 0x3F);\n } else if (code > 0x80) {\n byteArray[0] = 0xC0 | ((code & 0x7C0) >>> 6);\n byteArray[1] = 0x80 | (code & 0x3F);\n } else {\n byteArray[0] = code;\n }\n\n this.parsedData.push(byteArray);\n }\n\n this.parsedData = Array.prototype.concat.apply([], this.parsedData);\n\n if (this.parsedData.length != this.data.length) {\n this.parsedData.unshift(191);\n this.parsedData.unshift(187);\n this.parsedData.unshift(239);\n }\n}\n\nQR8bitByte.prototype = {\n getLength: function (buffer) {\n return this.parsedData.length;\n },\n write: function (buffer) {\n for (var i = 0, l = this.parsedData.length; i < l; i++) {\n buffer.put(this.parsedData[i], 8);\n }\n }\n};\n\nfunction QRCodeModel(typeNumber, errorCorrectLevel) {\n this.typeNumber = typeNumber;\n this.errorCorrectLevel = errorCorrectLevel;\n this.modules = null;\n this.moduleCount = 0;\n this.dataCache = null;\n this.dataList = [];\n}\n\nQRCodeModel.prototype={addData:function(data){var newData=new QR8bitByte(data);this.dataList.push(newData);this.dataCache=null;},isDark:function(row,col){if(row<0||this.moduleCount<=row||col<0||this.moduleCount<=col){throw new Error(row+","+col);}\nreturn this.modules[row][col];},getModuleCount:function(){return this.moduleCount;},make:function(){this.makeImpl(false,this.getBestMaskPattern());},makeImpl:function(test,maskPattern){this.moduleCount=this.typeNumber*4+17;this.modules=new Array(this.moduleCount);for(var row=0;row=7){this.setupTypeNumber(test);}\nif(this.dataCache==null){this.dataCache=QRCodeModel.createData(this.typeNumber,this.errorCorrectLevel,this.dataList);}\nthis.mapData(this.dataCache,maskPattern);},setupPositionProbePattern:function(row,col){for(var r=-1;r<=7;r++){if(row+r<=-1||this.moduleCount<=row+r)continue;for(var c=-1;c<=7;c++){if(col+c<=-1||this.moduleCount<=col+c)continue;if((0<=r&&r<=6&&(c==0||c==6))||(0<=c&&c<=6&&(r==0||r==6))||(2<=r&&r<=4&&2<=c&&c<=4)){this.modules[row+r][col+c]=true;}else{this.modules[row+r][col+c]=false;}}}},getBestMaskPattern:function(){var minLostPoint=0;var pattern=0;for(var i=0;i<8;i++){this.makeImpl(true,i);var lostPoint=QRUtil.getLostPoint(this);if(i==0||minLostPoint>lostPoint){minLostPoint=lostPoint;pattern=i;}}\nreturn pattern;},createMovieClip:function(target_mc,instance_name,depth){var qr_mc=target_mc.createEmptyMovieClip(instance_name,depth);var cs=1;this.make();for(var row=0;row>i)&1)==1);this.modules[Math.floor(i/3)][i%3+this.moduleCount-8-3]=mod;}\nfor(var i=0;i<18;i++){var mod=(!test&&((bits>>i)&1)==1);this.modules[i%3+this.moduleCount-8-3][Math.floor(i/3)]=mod;}},setupTypeInfo:function(test,maskPattern){var data=(this.errorCorrectLevel<<3)|maskPattern;var bits=QRUtil.getBCHTypeInfo(data);for(var i=0;i<15;i++){var mod=(!test&&((bits>>i)&1)==1);if(i<6){this.modules[i][8]=mod;}else if(i<8){this.modules[i+1][8]=mod;}else{this.modules[this.moduleCount-15+i][8]=mod;}}\nfor(var i=0;i<15;i++){var mod=(!test&&((bits>>i)&1)==1);if(i<8){this.modules[8][this.moduleCount-i-1]=mod;}else if(i<9){this.modules[8][15-i-1+1]=mod;}else{this.modules[8][15-i-1]=mod;}}\nthis.modules[this.moduleCount-8][8]=(!test);},mapData:function(data,maskPattern){var inc=-1;var row=this.moduleCount-1;var bitIndex=7;var byteIndex=0;for(var col=this.moduleCount-1;col>0;col-=2){if(col==6)col--;while(true){for(var c=0;c<2;c++){if(this.modules[row][col-c]==null){var dark=false;if(byteIndex>>bitIndex)&1)==1);}\nvar mask=QRUtil.getMask(maskPattern,row,col-c);if(mask){dark=!dark;}\nthis.modules[row][col-c]=dark;bitIndex--;if(bitIndex==-1){byteIndex++;bitIndex=7;}}}\nrow+=inc;if(row<0||this.moduleCount<=row){row-=inc;inc=-inc;break;}}}}};QRCodeModel.PAD0=0xEC;QRCodeModel.PAD1=0x11;QRCodeModel.createData=function(typeNumber,errorCorrectLevel,dataList){var rsBlocks=QRRSBlock.getRSBlocks(typeNumber,errorCorrectLevel);var buffer=new QRBitBuffer();for(var i=0;itotalDataCount*8){throw new Error("code length overflow. ("\n+buffer.getLengthInBits()\n+">"\n+totalDataCount*8\n+")");}\nif(buffer.getLengthInBits()+4<=totalDataCount*8){buffer.put(0,4);}\nwhile(buffer.getLengthInBits()%8!=0){buffer.putBit(false);}\nwhile(true){if(buffer.getLengthInBits()>=totalDataCount*8){break;}\nbuffer.put(QRCodeModel.PAD0,8);if(buffer.getLengthInBits()>=totalDataCount*8){break;}\nbuffer.put(QRCodeModel.PAD1,8);}\nreturn QRCodeModel.createBytes(buffer,rsBlocks);};QRCodeModel.createBytes=function(buffer,rsBlocks){var offset=0;var maxDcCount=0;var maxEcCount=0;var dcdata=new Array(rsBlocks.length);var ecdata=new Array(rsBlocks.length);for(var r=0;r=0)?modPoly.get(modIndex):0;}}\nvar totalCodeCount=0;for(var i=0;i=0){d^=(QRUtil.G15<<(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G15)));}\nreturn((data<<10)|d)^QRUtil.G15_MASK;},getBCHTypeNumber:function(data){var d=data<<12;while(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G18)>=0){d^=(QRUtil.G18<<(QRUtil.getBCHDigit(d)-QRUtil.getBCHDigit(QRUtil.G18)));}\nreturn(data<<12)|d;},getBCHDigit:function(data){var digit=0;while(data!=0){digit++;data>>>=1;}\nreturn digit;},getPatternPosition:function(typeNumber){return QRUtil.PATTERN_POSITION_TABLE[typeNumber-1];},getMask:function(maskPattern,i,j){switch(maskPattern){case QRMaskPattern.PATTERN000:return(i+j)%2==0;case QRMaskPattern.PATTERN001:return i%2==0;case QRMaskPattern.PATTERN010:return j%3==0;case QRMaskPattern.PATTERN011:return(i+j)%3==0;case QRMaskPattern.PATTERN100:return(Math.floor(i/2)+Math.floor(j/3))%2==0;case QRMaskPattern.PATTERN101:return(i*j)%2+(i*j)%3==0;case QRMaskPattern.PATTERN110:return((i*j)%2+(i*j)%3)%2==0;case QRMaskPattern.PATTERN111:return((i*j)%3+(i+j)%2)%2==0;default:throw new Error("bad maskPattern:"+maskPattern);}},getErrorCorrectPolynomial:function(errorCorrectLength){var a=new QRPolynomial([1],0);for(var i=0;i5){lostPoint+=(3+sameCount-5);}}}\nfor(var row=0;row=256){n-=255;}\nreturn QRMath.EXP_TABLE[n];},EXP_TABLE:new Array(256),LOG_TABLE:new Array(256)};for(var i=0;i<8;i++){QRMath.EXP_TABLE[i]=1<>>(7-index%8))&1)==1;},put:function(num,length){for(var i=0;i>>(length-i-1))&1)==1);}},getLengthInBits:function(){return this.length;},putBit:function(bit){var bufIndex=Math.floor(this.length/8);if(this.buffer.length<=bufIndex){this.buffer.push(0);}\nif(bit){this.buffer[bufIndex]|=(0x80>>>(this.length%8));}\nthis.length++;}};var QRCodeLimitLength=[[17,14,11,7],[32,26,20,14],[53,42,32,24],[78,62,46,34],[106,84,60,44],[134,106,74,58],[154,122,86,64],[192,152,108,84],[230,180,130,98],[271,213,151,119],[321,251,177,137],[367,287,203,155],[425,331,241,177],[458,362,258,194],[520,412,292,220],[586,450,322,250],[644,504,364,280],[718,560,394,310],[792,624,442,338],[858,666,482,382],[929,711,509,403],[1003,779,565,439],[1091,857,611,461],[1171,911,661,511],[1273,997,715,535],[1367,1059,751,593],[1465,1125,805,625],[1528,1190,868,658],[1628,1264,908,698],[1732,1370,982,742],[1840,1452,1030,790],[1952,1538,1112,842],[2068,1628,1168,898],[2188,1722,1228,958],[2303,1809,1283,983],[2431,1911,1351,1051],[2563,1989,1423,1093],[2699,2099,1499,1139],[2809,2213,1579,1219],[2953,2331,1663,1273]];\n\n\n/** Constructor */\nfunction QRCode(options) {\n var instance = this;\n \n //Default options\n this.options = {\n padding: 4,\n width: 256, \n height: 256,\n typeNumber: 4,\n color: "#000000",\n background: "#ffffff",\n ecl: "M"\n };\n \n //In case the options is string\n if (typeof options === \'string\') {\n options = {\n content: options\n };\n }\n \n //Merge options\n if (options) {\n for (var i in options) {\n this.options[i] = options[i];\n }\n }\n \n if (typeof this.options.content !== \'string\') {\n throw new Error("Expected \'content\' as string!");\n }\n \n if (this.options.content.length === 0 /* || this.options.content.length > 7089 */) {\n throw new Error("Expected \'content\' to be non-empty!");\n }\n \n if (!(this.options.padding >= 0)) {\n throw new Error("Expected \'padding\' value to be non-negative!");\n }\n \n if (!(this.options.width > 0) || !(this.options.height > 0)) {\n throw new Error("Expected \'width\' or \'height\' value to be higher than zero!");\n }\n \n //Gets the error correction level\n function _getErrorCorrectLevel(ecl) {\n switch (ecl) {\n case "L":\n return QRErrorCorrectLevel.L;\n \n case "M":\n return QRErrorCorrectLevel.M;\n \n case "Q":\n return QRErrorCorrectLevel.Q;\n \n case "H":\n return QRErrorCorrectLevel.H;\n \n default:\n throw new Error("Unknwon error correction level: " + ecl);\n }\n }\n \n //Get type number\n function _getTypeNumber(content, ecl) { \n var length = _getUTF8Length(content);\n \n var type = 1;\n var limit = 0;\n for (var i = 0, len = QRCodeLimitLength.length; i <= len; i++) {\n var table = QRCodeLimitLength[i];\n if (!table) {\n throw new Error("Content too long: expected " + limit + " but got " + length);\n }\n \n switch (ecl) {\n case "L":\n limit = table[0];\n break;\n \n case "M":\n limit = table[1];\n break;\n \n case "Q":\n limit = table[2];\n break;\n \n case "H":\n limit = table[3];\n break;\n \n default:\n throw new Error("Unknwon error correction level: " + ecl);\n }\n \n if (length <= limit) {\n break;\n }\n \n type++;\n }\n \n if (type > QRCodeLimitLength.length) {\n throw new Error("Content too long");\n }\n \n return type;\n }\n\n //Gets text length\n function _getUTF8Length(content) {\n var result = encodeURI(content).toString().replace(/\\%[0-9a-fA-F]{2}/g, \'a\');\n return result.length + (result.length != content ? 3 : 0);\n }\n \n //Generate QR Code matrix\n var content = this.options.content;\n var type = _getTypeNumber(content, this.options.ecl);\n var ecl = _getErrorCorrectLevel(this.options.ecl);\n this.qrcode = new QRCodeModel(type, ecl);\n this.qrcode.addData(content);\n this.qrcode.make();\n}\n\n/** Generates QR Code as SVG image */\nQRCode.prototype.svg = function(opt) {\n var options = this.options || { };\n var modules = this.qrcode.modules;\n \n if (typeof opt == "undefined") {\n opt = { container: options.container || "svg" };\n }\n \n //Apply new lines and indents in SVG?\n var pretty = typeof options.pretty != "undefined" ? !!options.pretty : true;\n \n var indent = pretty ? \' \' : \'\';\n var EOL = pretty ? \'\\r\\n\' : \'\';\n var width = options.width;\n var height = options.height;\n var length = modules.length;\n var xsize = width / (length + 2 * options.padding);\n var ysize = height / (length + 2 * options.padding);\n \n //Join (union, merge) rectangles into one shape?\n var join = typeof options.join != "undefined" ? !!options.join : false;\n \n //Swap the X and Y modules, pull request #2\n var swap = typeof options.swap != "undefined" ? !!options.swap : false;\n \n //Apply declaration in SVG?\n var xmlDeclaration = typeof options.xmlDeclaration != "undefined" ? !!options.xmlDeclaration : true;\n \n //Populate with predefined shape instead of "rect" elements, thanks to @kkocdko\n var predefined = typeof options.predefined != "undefined" ? !!options.predefined : false;\n var defs = predefined ? indent + \'\' + EOL : \'\';\n \n //Background rectangle\n var bgrect = indent + \'\' + EOL;\n \n //Rectangles representing modules\n var modrect = \'\';\n var pathdata = \'\';\n\n for (var y = 0; y < length; y++) {\n for (var x = 0; x < length; x++) {\n var module = modules[x][y];\n if (module) {\n \n var px = (x * xsize + options.padding * xsize);\n var py = (y * ysize + options.padding * ysize);\n \n //Some users have had issues with the QR Code, thanks to @danioso for the solution\n if (swap) {\n var t = px;\n px = py;\n py = t;\n }\n \n if (join) {\n //Module as a part of svg path data, thanks to @danioso\n var w = xsize + px\n var h = ysize + py\n\n px = (Number.isInteger(px))? Number(px): px.toFixed(2);\n py = (Number.isInteger(py))? Number(py): py.toFixed(2);\n w = (Number.isInteger(w))? Number(w): w.toFixed(2);\n h = (Number.isInteger(h))? Number(h): h.toFixed(2);\n\n pathdata += (\'M\' + px + \',\' + py + \' V\' + h + \' H\' + w + \' V\' + py + \' H\' + px + \' Z \');\n }\n else if (predefined) {\n //Module as a predefined shape, thanks to @kkocdko\n modrect += indent + \'\' + EOL;\n }\n else {\n //Module as rectangle element\n modrect += indent + \'\' + EOL;\n }\n }\n }\n }\n \n if (join) {\n modrect = indent + \'\';\n }\n\n var svg = "";\n switch (opt.container) {\n //Wrapped in SVG document\n case "svg":\n if (xmlDeclaration) {\n svg += \'\' + EOL;\n }\n svg += \'\' + EOL;\n svg += defs + bgrect + modrect;\n svg += \'\';\n break;\n \n //Viewbox for responsive use in a browser, thanks to @danioso\n case "svg-viewbox":\n if (xmlDeclaration) {\n svg += \'\' + EOL;\n }\n svg += \'\' + EOL;\n svg += defs + bgrect + modrect;\n svg += \'\';\n break;\n \n \n //Wrapped in group element \n case "g":\n svg += \'\' + EOL;\n svg += defs + bgrect + modrect;\n svg += \'\';\n break;\n \n //Without a container\n default:\n svg += (defs + bgrect + modrect).replace(/^\\s+/, ""); //Clear indents on each line\n break;\n }\n \n return svg;\n};\n\n/** Writes QR Code image to a file */\nQRCode.prototype.save = function(file, callback) {\n var data = this.svg();\n if (typeof callback != "function") {\n callback = function(error, result) { };\n }\n try {\n //Package \'fs\' is available in node.js but not in a web browser\n var fs = __webpack_require__(/*! fs */ "?981f");\n fs.writeFile(file, data, callback);\n }\n catch (e) {\n //Sorry, \'fs\' is not available\n callback(e);\n }\n};\n\nif (true) {\n module.exports = QRCode;\n}\n\n\n//# sourceURL=webpack://beacon/./node_modules/qrcode-svg/lib/qrcode.js?')},"./node_modules/query-string/index.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nconst strictUriEncode = __webpack_require__(/*! strict-uri-encode */ \"./node_modules/strict-uri-encode/index.js\");\nconst decodeComponent = __webpack_require__(/*! decode-uri-component */ \"./node_modules/decode-uri-component/index.js\");\nconst splitOnFirst = __webpack_require__(/*! split-on-first */ \"./node_modules/split-on-first/index.js\");\nconst filterObject = __webpack_require__(/*! filter-obj */ \"./node_modules/filter-obj/index.js\");\n\nconst isNullOrUndefined = value => value === null || value === undefined;\n\nconst encodeFragmentIdentifier = Symbol('encodeFragmentIdentifier');\n\nfunction encoderForArrayFormat(options) {\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tconst index = result.length;\n\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[', index, ']'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [\n\t\t\t\t\t...result,\n\t\t\t\t\t[encode(key, options), '[', encode(index, options), ']=', encode(value, options)].join('')\n\t\t\t\t];\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), '[]'].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '[]=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, [encode(key, options), ':list='].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), ':list=', encode(value, options)].join('')];\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\tcase 'bracket-separator': {\n\t\t\tconst keyValueSep = options.arrayFormat === 'bracket-separator' ?\n\t\t\t\t'[]=' :\n\t\t\t\t'=';\n\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\t// Translate null to an empty string so that it doesn't serialize as 'null'\n\t\t\t\tvalue = value === null ? '' : value;\n\n\t\t\t\tif (result.length === 0) {\n\t\t\t\t\treturn [[encode(key, options), keyValueSep, encode(value, options)].join('')];\n\t\t\t\t}\n\n\t\t\t\treturn [[result, encode(value, options)].join(options.arrayFormatSeparator)];\n\t\t\t};\n\t\t}\n\n\t\tdefault:\n\t\t\treturn key => (result, value) => {\n\t\t\t\tif (\n\t\t\t\t\tvalue === undefined ||\n\t\t\t\t\t(options.skipNull && value === null) ||\n\t\t\t\t\t(options.skipEmptyString && value === '')\n\t\t\t\t) {\n\t\t\t\t\treturn result;\n\t\t\t\t}\n\n\t\t\t\tif (value === null) {\n\t\t\t\t\treturn [...result, encode(key, options)];\n\t\t\t\t}\n\n\t\t\t\treturn [...result, [encode(key, options), '=', encode(value, options)].join('')];\n\t\t\t};\n\t}\n}\n\nfunction parserForArrayFormat(options) {\n\tlet result;\n\n\tswitch (options.arrayFormat) {\n\t\tcase 'index':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /\\[(\\d*)\\]$/.exec(key);\n\n\t\t\t\tkey = key.replace(/\\[\\d*\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = {};\n\t\t\t\t}\n\n\t\t\t\taccumulator[key][result[1]] = value;\n\t\t\t};\n\n\t\tcase 'bracket':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(\\[\\])$/.exec(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'colon-list-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tresult = /(:list)$/.exec(key);\n\t\t\t\tkey = key.replace(/:list$/, '');\n\n\t\t\t\tif (!result) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = [value];\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\n\t\tcase 'comma':\n\t\tcase 'separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = typeof value === 'string' && value.includes(options.arrayFormatSeparator);\n\t\t\t\tconst isEncodedArray = (typeof value === 'string' && !isArray && decode(value, options).includes(options.arrayFormatSeparator));\n\t\t\t\tvalue = isEncodedArray ? decode(value, options) : value;\n\t\t\t\tconst newValue = isArray || isEncodedArray ? value.split(options.arrayFormatSeparator).map(item => decode(item, options)) : value === null ? value : decode(value, options);\n\t\t\t\taccumulator[key] = newValue;\n\t\t\t};\n\n\t\tcase 'bracket-separator':\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tconst isArray = /(\\[\\])$/.test(key);\n\t\t\t\tkey = key.replace(/\\[\\]$/, '');\n\n\t\t\t\tif (!isArray) {\n\t\t\t\t\taccumulator[key] = value ? decode(value, options) : value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\tconst arrayValue = value === null ?\n\t\t\t\t\t[] :\n\t\t\t\t\tvalue.split(options.arrayFormatSeparator).map(item => decode(item, options));\n\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = arrayValue;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], arrayValue);\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn (key, value, accumulator) => {\n\t\t\t\tif (accumulator[key] === undefined) {\n\t\t\t\t\taccumulator[key] = value;\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\taccumulator[key] = [].concat(accumulator[key], value);\n\t\t\t};\n\t}\n}\n\nfunction validateArrayFormatSeparator(value) {\n\tif (typeof value !== 'string' || value.length !== 1) {\n\t\tthrow new TypeError('arrayFormatSeparator must be single character string');\n\t}\n}\n\nfunction encode(value, options) {\n\tif (options.encode) {\n\t\treturn options.strict ? strictUriEncode(value) : encodeURIComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction decode(value, options) {\n\tif (options.decode) {\n\t\treturn decodeComponent(value);\n\t}\n\n\treturn value;\n}\n\nfunction keysSorter(input) {\n\tif (Array.isArray(input)) {\n\t\treturn input.sort();\n\t}\n\n\tif (typeof input === 'object') {\n\t\treturn keysSorter(Object.keys(input))\n\t\t\t.sort((a, b) => Number(a) - Number(b))\n\t\t\t.map(key => input[key]);\n\t}\n\n\treturn input;\n}\n\nfunction removeHash(input) {\n\tconst hashStart = input.indexOf('#');\n\tif (hashStart !== -1) {\n\t\tinput = input.slice(0, hashStart);\n\t}\n\n\treturn input;\n}\n\nfunction getHash(url) {\n\tlet hash = '';\n\tconst hashStart = url.indexOf('#');\n\tif (hashStart !== -1) {\n\t\thash = url.slice(hashStart);\n\t}\n\n\treturn hash;\n}\n\nfunction extract(input) {\n\tinput = removeHash(input);\n\tconst queryStart = input.indexOf('?');\n\tif (queryStart === -1) {\n\t\treturn '';\n\t}\n\n\treturn input.slice(queryStart + 1);\n}\n\nfunction parseValue(value, options) {\n\tif (options.parseNumbers && !Number.isNaN(Number(value)) && (typeof value === 'string' && value.trim() !== '')) {\n\t\tvalue = Number(value);\n\t} else if (options.parseBooleans && value !== null && (value.toLowerCase() === 'true' || value.toLowerCase() === 'false')) {\n\t\tvalue = value.toLowerCase() === 'true';\n\t}\n\n\treturn value;\n}\n\nfunction parse(query, options) {\n\toptions = Object.assign({\n\t\tdecode: true,\n\t\tsort: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ',',\n\t\tparseNumbers: false,\n\t\tparseBooleans: false\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst formatter = parserForArrayFormat(options);\n\n\t// Create an object with no prototype\n\tconst ret = Object.create(null);\n\n\tif (typeof query !== 'string') {\n\t\treturn ret;\n\t}\n\n\tquery = query.trim().replace(/^[?#&]/, '');\n\n\tif (!query) {\n\t\treturn ret;\n\t}\n\n\tfor (const param of query.split('&')) {\n\t\tif (param === '') {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet [key, value] = splitOnFirst(options.decode ? param.replace(/\\+/g, ' ') : param, '=');\n\n\t\t// Missing `=` should be `null`:\n\t\t// http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n\t\tvalue = value === undefined ? null : ['comma', 'separator', 'bracket-separator'].includes(options.arrayFormat) ? value : decode(value, options);\n\t\tformatter(decode(key, options), value, ret);\n\t}\n\n\tfor (const key of Object.keys(ret)) {\n\t\tconst value = ret[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tfor (const k of Object.keys(value)) {\n\t\t\t\tvalue[k] = parseValue(value[k], options);\n\t\t\t}\n\t\t} else {\n\t\t\tret[key] = parseValue(value, options);\n\t\t}\n\t}\n\n\tif (options.sort === false) {\n\t\treturn ret;\n\t}\n\n\treturn (options.sort === true ? Object.keys(ret).sort() : Object.keys(ret).sort(options.sort)).reduce((result, key) => {\n\t\tconst value = ret[key];\n\t\tif (Boolean(value) && typeof value === 'object' && !Array.isArray(value)) {\n\t\t\t// Sort object keys, not values\n\t\t\tresult[key] = keysSorter(value);\n\t\t} else {\n\t\t\tresult[key] = value;\n\t\t}\n\n\t\treturn result;\n\t}, Object.create(null));\n}\n\nexports.extract = extract;\nexports.parse = parse;\n\nexports.stringify = (object, options) => {\n\tif (!object) {\n\t\treturn '';\n\t}\n\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\tarrayFormat: 'none',\n\t\tarrayFormatSeparator: ','\n\t}, options);\n\n\tvalidateArrayFormatSeparator(options.arrayFormatSeparator);\n\n\tconst shouldFilter = key => (\n\t\t(options.skipNull && isNullOrUndefined(object[key])) ||\n\t\t(options.skipEmptyString && object[key] === '')\n\t);\n\n\tconst formatter = encoderForArrayFormat(options);\n\n\tconst objectCopy = {};\n\n\tfor (const key of Object.keys(object)) {\n\t\tif (!shouldFilter(key)) {\n\t\t\tobjectCopy[key] = object[key];\n\t\t}\n\t}\n\n\tconst keys = Object.keys(objectCopy);\n\n\tif (options.sort !== false) {\n\t\tkeys.sort(options.sort);\n\t}\n\n\treturn keys.map(key => {\n\t\tconst value = object[key];\n\n\t\tif (value === undefined) {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (value === null) {\n\t\t\treturn encode(key, options);\n\t\t}\n\n\t\tif (Array.isArray(value)) {\n\t\t\tif (value.length === 0 && options.arrayFormat === 'bracket-separator') {\n\t\t\t\treturn encode(key, options) + '[]';\n\t\t\t}\n\n\t\t\treturn value\n\t\t\t\t.reduce(formatter(key), [])\n\t\t\t\t.join('&');\n\t\t}\n\n\t\treturn encode(key, options) + '=' + encode(value, options);\n\t}).filter(x => x.length > 0).join('&');\n};\n\nexports.parseUrl = (url, options) => {\n\toptions = Object.assign({\n\t\tdecode: true\n\t}, options);\n\n\tconst [url_, hash] = splitOnFirst(url, '#');\n\n\treturn Object.assign(\n\t\t{\n\t\t\turl: url_.split('?')[0] || '',\n\t\t\tquery: parse(extract(url), options)\n\t\t},\n\t\toptions && options.parseFragmentIdentifier && hash ? {fragmentIdentifier: decode(hash, options)} : {}\n\t);\n};\n\nexports.stringifyUrl = (object, options) => {\n\toptions = Object.assign({\n\t\tencode: true,\n\t\tstrict: true,\n\t\t[encodeFragmentIdentifier]: true\n\t}, options);\n\n\tconst url = removeHash(object.url).split('?')[0] || '';\n\tconst queryFromUrl = exports.extract(object.url);\n\tconst parsedQueryFromUrl = exports.parse(queryFromUrl, {sort: false});\n\n\tconst query = Object.assign(parsedQueryFromUrl, object.query);\n\tlet queryString = exports.stringify(query, options);\n\tif (queryString) {\n\t\tqueryString = `?${queryString}`;\n\t}\n\n\tlet hash = getHash(object.url);\n\tif (object.fragmentIdentifier) {\n\t\thash = `#${options[encodeFragmentIdentifier] ? encode(object.fragmentIdentifier, options) : object.fragmentIdentifier}`;\n\t}\n\n\treturn `${url}${queryString}${hash}`;\n};\n\nexports.pick = (input, filter, options) => {\n\toptions = Object.assign({\n\t\tparseFragmentIdentifier: true,\n\t\t[encodeFragmentIdentifier]: false\n\t}, options);\n\n\tconst {url, query, fragmentIdentifier} = exports.parseUrl(input, options);\n\treturn exports.stringifyUrl({\n\t\turl,\n\t\tquery: filterObject(query, filter),\n\t\tfragmentIdentifier\n\t}, options);\n};\n\nexports.exclude = (input, filter, options) => {\n\tconst exclusionFilter = Array.isArray(filter) ? key => !filter.includes(key) : (key, value) => !filter(key, value);\n\n\treturn exports.pick(input, exclusionFilter, options);\n};\n\n\n//# sourceURL=webpack://beacon/./node_modules/query-string/index.js?")},"./node_modules/quick-format-unescaped/index.js":module=>{"use strict";eval("\nfunction tryStringify (o) {\n try { return JSON.stringify(o) } catch(e) { return '\"[Circular]\"' }\n}\n\nmodule.exports = format\n\nfunction format(f, args, opts) {\n var ss = (opts && opts.stringify) || tryStringify\n var offset = 1\n if (typeof f === 'object' && f !== null) {\n var len = args.length + offset\n if (len === 1) return f\n var objects = new Array(len)\n objects[0] = ss(f)\n for (var index = 1; index < len; index++) {\n objects[index] = ss(args[index])\n }\n return objects.join(' ')\n }\n if (typeof f !== 'string') {\n return f\n }\n var argLen = args.length\n if (argLen === 0) return f\n var str = ''\n var a = 1 - offset\n var lastPos = -1\n var flen = (f && f.length) || 0\n for (var i = 0; i < flen;) {\n if (f.charCodeAt(i) === 37 && i + 1 < flen) {\n lastPos = lastPos > -1 ? lastPos : 0\n switch (f.charCodeAt(i + 1)) {\n case 100: // 'd'\n case 102: // 'f'\n if (a >= argLen)\n break\n if (args[a] == null) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += Number(args[a])\n lastPos = i + 2\n i++\n break\n case 105: // 'i'\n if (a >= argLen)\n break\n if (args[a] == null) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += Math.floor(Number(args[a]))\n lastPos = i + 2\n i++\n break\n case 79: // 'O'\n case 111: // 'o'\n case 106: // 'j'\n if (a >= argLen)\n break\n if (args[a] === undefined) break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n var type = typeof args[a]\n if (type === 'string') {\n str += '\\'' + args[a] + '\\''\n lastPos = i + 2\n i++\n break\n }\n if (type === 'function') {\n str += args[a].name || ''\n lastPos = i + 2\n i++\n break\n }\n str += ss(args[a])\n lastPos = i + 2\n i++\n break\n case 115: // 's'\n if (a >= argLen)\n break\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += String(args[a])\n lastPos = i + 2\n i++\n break\n case 37: // '%'\n if (lastPos < i)\n str += f.slice(lastPos, i)\n str += '%'\n lastPos = i + 2\n i++\n a--\n break\n }\n ++a\n }\n ++i\n }\n if (lastPos === -1)\n return f\n else if (lastPos < flen) {\n str += f.slice(lastPos)\n }\n\n return str\n}\n\n\n//# sourceURL=webpack://beacon/./node_modules/quick-format-unescaped/index.js?")},"./node_modules/ripemd160/index.js":(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\nvar Buffer = (__webpack_require__(/*! buffer */ "./node_modules/buffer/index.js").Buffer)\nvar inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits_browser.js")\nvar HashBase = __webpack_require__(/*! hash-base */ "./node_modules/hash-base/index.js")\n\nvar ARRAY16 = new Array(16)\n\nvar zl = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n]\n\nvar zr = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n]\n\nvar sl = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n]\n\nvar sr = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n]\n\nvar hl = [0x00000000, 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xa953fd4e]\nvar hr = [0x50a28be6, 0x5c4dd124, 0x6d703ef3, 0x7a6d76e9, 0x00000000]\n\nfunction RIPEMD160 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n}\n\ninherits(RIPEMD160, HashBase)\n\nRIPEMD160.prototype._update = function () {\n var words = ARRAY16\n for (var j = 0; j < 16; ++j) words[j] = this._block.readInt32LE(j * 4)\n\n var al = this._a | 0\n var bl = this._b | 0\n var cl = this._c | 0\n var dl = this._d | 0\n var el = this._e | 0\n\n var ar = this._a | 0\n var br = this._b | 0\n var cr = this._c | 0\n var dr = this._d | 0\n var er = this._e | 0\n\n // computation\n for (var i = 0; i < 80; i += 1) {\n var tl\n var tr\n if (i < 16) {\n tl = fn1(al, bl, cl, dl, el, words[zl[i]], hl[0], sl[i])\n tr = fn5(ar, br, cr, dr, er, words[zr[i]], hr[0], sr[i])\n } else if (i < 32) {\n tl = fn2(al, bl, cl, dl, el, words[zl[i]], hl[1], sl[i])\n tr = fn4(ar, br, cr, dr, er, words[zr[i]], hr[1], sr[i])\n } else if (i < 48) {\n tl = fn3(al, bl, cl, dl, el, words[zl[i]], hl[2], sl[i])\n tr = fn3(ar, br, cr, dr, er, words[zr[i]], hr[2], sr[i])\n } else if (i < 64) {\n tl = fn4(al, bl, cl, dl, el, words[zl[i]], hl[3], sl[i])\n tr = fn2(ar, br, cr, dr, er, words[zr[i]], hr[3], sr[i])\n } else { // if (i<80) {\n tl = fn5(al, bl, cl, dl, el, words[zl[i]], hl[4], sl[i])\n tr = fn1(ar, br, cr, dr, er, words[zr[i]], hr[4], sr[i])\n }\n\n al = el\n el = dl\n dl = rotl(cl, 10)\n cl = bl\n bl = tl\n\n ar = er\n er = dr\n dr = rotl(cr, 10)\n cr = br\n br = tr\n }\n\n // update state\n var t = (this._b + cl + dr) | 0\n this._b = (this._c + dl + er) | 0\n this._c = (this._d + el + ar) | 0\n this._d = (this._e + al + br) | 0\n this._e = (this._a + bl + cr) | 0\n this._a = t\n}\n\nRIPEMD160.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.alloc ? Buffer.alloc(20) : new Buffer(20)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n buffer.writeInt32LE(this._e, 16)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fn1 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn2 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn3 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b | (~c)) ^ d) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn4 (a, b, c, d, e, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + e) | 0\n}\n\nfunction fn5 (a, b, c, d, e, m, k, s) {\n return (rotl((a + (b ^ (c | (~d))) + m + k) | 0, s) + e) | 0\n}\n\nmodule.exports = RIPEMD160\n\n\n//# sourceURL=webpack://beacon/./node_modules/ripemd160/index.js?')},"./node_modules/safe-buffer/index.js":(module,exports,__webpack_require__)=>{eval("/*! safe-buffer. MIT License. Feross Aboukhadijeh */\n/* eslint-disable node/no-deprecated-api */\nvar buffer = __webpack_require__(/*! buffer */ \"./node_modules/buffer/index.js\")\nvar Buffer = buffer.Buffer\n\n// alternative to using Object.keys for old browsers\nfunction copyProps (src, dst) {\n for (var key in src) {\n dst[key] = src[key]\n }\n}\nif (Buffer.from && Buffer.alloc && Buffer.allocUnsafe && Buffer.allocUnsafeSlow) {\n module.exports = buffer\n} else {\n // Copy properties from require('buffer')\n copyProps(buffer, exports)\n exports.Buffer = SafeBuffer\n}\n\nfunction SafeBuffer (arg, encodingOrOffset, length) {\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.prototype = Object.create(Buffer.prototype)\n\n// Copy static methods from Buffer\ncopyProps(Buffer, SafeBuffer)\n\nSafeBuffer.from = function (arg, encodingOrOffset, length) {\n if (typeof arg === 'number') {\n throw new TypeError('Argument must not be a number')\n }\n return Buffer(arg, encodingOrOffset, length)\n}\n\nSafeBuffer.alloc = function (size, fill, encoding) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n var buf = Buffer(size)\n if (fill !== undefined) {\n if (typeof encoding === 'string') {\n buf.fill(fill, encoding)\n } else {\n buf.fill(fill)\n }\n } else {\n buf.fill(0)\n }\n return buf\n}\n\nSafeBuffer.allocUnsafe = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return Buffer(size)\n}\n\nSafeBuffer.allocUnsafeSlow = function (size) {\n if (typeof size !== 'number') {\n throw new TypeError('Argument must be a number')\n }\n return buffer.SlowBuffer(size)\n}\n\n\n//# sourceURL=webpack://beacon/./node_modules/safe-buffer/index.js?")},"./node_modules/sha.js/hash.js":(module,__unused_webpack_exports,__webpack_require__)=>{eval("var Buffer = (__webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer)\n\n// prototype class for hash functions\nfunction Hash (blockSize, finalSize) {\n this._block = Buffer.alloc(blockSize)\n this._finalSize = finalSize\n this._blockSize = blockSize\n this._len = 0\n}\n\nHash.prototype.update = function (data, enc) {\n if (typeof data === 'string') {\n enc = enc || 'utf8'\n data = Buffer.from(data, enc)\n }\n\n var block = this._block\n var blockSize = this._blockSize\n var length = data.length\n var accum = this._len\n\n for (var offset = 0; offset < length;) {\n var assigned = accum % blockSize\n var remainder = Math.min(length - offset, blockSize - assigned)\n\n for (var i = 0; i < remainder; i++) {\n block[assigned + i] = data[offset + i]\n }\n\n accum += remainder\n offset += remainder\n\n if ((accum % blockSize) === 0) {\n this._update(block)\n }\n }\n\n this._len += length\n return this\n}\n\nHash.prototype.digest = function (enc) {\n var rem = this._len % this._blockSize\n\n this._block[rem] = 0x80\n\n // zero (rem + 1) trailing bits, where (rem + 1) is the smallest\n // non-negative solution to the equation (length + 1 + (rem + 1)) === finalSize mod blockSize\n this._block.fill(0, rem + 1)\n\n if (rem >= this._finalSize) {\n this._update(this._block)\n this._block.fill(0)\n }\n\n var bits = this._len * 8\n\n // uint32\n if (bits <= 0xffffffff) {\n this._block.writeUInt32BE(bits, this._blockSize - 4)\n\n // uint64\n } else {\n var lowBits = (bits & 0xffffffff) >>> 0\n var highBits = (bits - lowBits) / 0x100000000\n\n this._block.writeUInt32BE(highBits, this._blockSize - 8)\n this._block.writeUInt32BE(lowBits, this._blockSize - 4)\n }\n\n this._update(this._block)\n var hash = this._hash()\n\n return enc ? hash.toString(enc) : hash\n}\n\nHash.prototype._update = function () {\n throw new Error('_update must be implemented by subclass')\n}\n\nmodule.exports = Hash\n\n\n//# sourceURL=webpack://beacon/./node_modules/sha.js/hash.js?")},"./node_modules/sha.js/index.js":(module,__unused_webpack_exports,__webpack_require__)=>{eval('var exports = module.exports = function SHA (algorithm) {\n algorithm = algorithm.toLowerCase()\n\n var Algorithm = exports[algorithm]\n if (!Algorithm) throw new Error(algorithm + \' is not supported (we accept pull requests)\')\n\n return new Algorithm()\n}\n\nexports.sha = __webpack_require__(/*! ./sha */ "./node_modules/sha.js/sha.js")\nexports.sha1 = __webpack_require__(/*! ./sha1 */ "./node_modules/sha.js/sha1.js")\nexports.sha224 = __webpack_require__(/*! ./sha224 */ "./node_modules/sha.js/sha224.js")\nexports.sha256 = __webpack_require__(/*! ./sha256 */ "./node_modules/sha.js/sha256.js")\nexports.sha384 = __webpack_require__(/*! ./sha384 */ "./node_modules/sha.js/sha384.js")\nexports.sha512 = __webpack_require__(/*! ./sha512 */ "./node_modules/sha.js/sha512.js")\n\n\n//# sourceURL=webpack://beacon/./node_modules/sha.js/index.js?')},"./node_modules/sha.js/sha.js":(module,__unused_webpack_exports,__webpack_require__)=>{eval('/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-0, as defined\n * in FIPS PUB 180-1\n * This source code is derived from sha1.js of the same repository.\n * The difference between SHA-0 and SHA-1 is just a bitwise rotate left\n * operation was added.\n */\n\nvar inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits_browser.js")\nvar Hash = __webpack_require__(/*! ./hash */ "./node_modules/sha.js/hash.js")\nvar Buffer = (__webpack_require__(/*! safe-buffer */ "./node_modules/safe-buffer/index.js").Buffer)\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha, Hash)\n\nSha.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16]\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha\n\n\n//# sourceURL=webpack://beacon/./node_modules/sha.js/sha.js?')},"./node_modules/sha.js/sha1.js":(module,__unused_webpack_exports,__webpack_require__)=>{eval('/*\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-1, as defined\n * in FIPS PUB 180-1\n * Version 2.1a Copyright Paul Johnston 2000 - 2002.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for details.\n */\n\nvar inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits_browser.js")\nvar Hash = __webpack_require__(/*! ./hash */ "./node_modules/sha.js/hash.js")\nvar Buffer = (__webpack_require__(/*! safe-buffer */ "./node_modules/safe-buffer/index.js").Buffer)\n\nvar K = [\n 0x5a827999, 0x6ed9eba1, 0x8f1bbcdc | 0, 0xca62c1d6 | 0\n]\n\nvar W = new Array(80)\n\nfunction Sha1 () {\n this.init()\n this._w = W\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha1, Hash)\n\nSha1.prototype.init = function () {\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n this._e = 0xc3d2e1f0\n\n return this\n}\n\nfunction rotl1 (num) {\n return (num << 1) | (num >>> 31)\n}\n\nfunction rotl5 (num) {\n return (num << 5) | (num >>> 27)\n}\n\nfunction rotl30 (num) {\n return (num << 30) | (num >>> 2)\n}\n\nfunction ft (s, b, c, d) {\n if (s === 0) return (b & c) | ((~b) & d)\n if (s === 2) return (b & c) | (b & d) | (c & d)\n return b ^ c ^ d\n}\n\nSha1.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 80; ++i) W[i] = rotl1(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16])\n\n for (var j = 0; j < 80; ++j) {\n var s = ~~(j / 20)\n var t = (rotl5(a) + ft(s, b, c, d) + e + W[j] + K[s]) | 0\n\n e = d\n d = c\n c = rotl30(b)\n b = a\n a = t\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n}\n\nSha1.prototype._hash = function () {\n var H = Buffer.allocUnsafe(20)\n\n H.writeInt32BE(this._a | 0, 0)\n H.writeInt32BE(this._b | 0, 4)\n H.writeInt32BE(this._c | 0, 8)\n H.writeInt32BE(this._d | 0, 12)\n H.writeInt32BE(this._e | 0, 16)\n\n return H\n}\n\nmodule.exports = Sha1\n\n\n//# sourceURL=webpack://beacon/./node_modules/sha.js/sha1.js?')},"./node_modules/sha.js/sha224.js":(module,__unused_webpack_exports,__webpack_require__)=>{eval('/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits_browser.js")\nvar Sha256 = __webpack_require__(/*! ./sha256 */ "./node_modules/sha.js/sha256.js")\nvar Hash = __webpack_require__(/*! ./hash */ "./node_modules/sha.js/hash.js")\nvar Buffer = (__webpack_require__(/*! safe-buffer */ "./node_modules/safe-buffer/index.js").Buffer)\n\nvar W = new Array(64)\n\nfunction Sha224 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha224, Sha256)\n\nSha224.prototype.init = function () {\n this._a = 0xc1059ed8\n this._b = 0x367cd507\n this._c = 0x3070dd17\n this._d = 0xf70e5939\n this._e = 0xffc00b31\n this._f = 0x68581511\n this._g = 0x64f98fa7\n this._h = 0xbefa4fa4\n\n return this\n}\n\nSha224.prototype._hash = function () {\n var H = Buffer.allocUnsafe(28)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n\n return H\n}\n\nmodule.exports = Sha224\n\n\n//# sourceURL=webpack://beacon/./node_modules/sha.js/sha224.js?')},"./node_modules/sha.js/sha256.js":(module,__unused_webpack_exports,__webpack_require__)=>{eval('/**\n * A JavaScript implementation of the Secure Hash Algorithm, SHA-256, as defined\n * in FIPS 180-2\n * Version 2.2-beta Copyright Angel Marin, Paul Johnston 2000 - 2009.\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n *\n */\n\nvar inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits_browser.js")\nvar Hash = __webpack_require__(/*! ./hash */ "./node_modules/sha.js/hash.js")\nvar Buffer = (__webpack_require__(/*! safe-buffer */ "./node_modules/safe-buffer/index.js").Buffer)\n\nvar K = [\n 0x428A2F98, 0x71374491, 0xB5C0FBCF, 0xE9B5DBA5,\n 0x3956C25B, 0x59F111F1, 0x923F82A4, 0xAB1C5ED5,\n 0xD807AA98, 0x12835B01, 0x243185BE, 0x550C7DC3,\n 0x72BE5D74, 0x80DEB1FE, 0x9BDC06A7, 0xC19BF174,\n 0xE49B69C1, 0xEFBE4786, 0x0FC19DC6, 0x240CA1CC,\n 0x2DE92C6F, 0x4A7484AA, 0x5CB0A9DC, 0x76F988DA,\n 0x983E5152, 0xA831C66D, 0xB00327C8, 0xBF597FC7,\n 0xC6E00BF3, 0xD5A79147, 0x06CA6351, 0x14292967,\n 0x27B70A85, 0x2E1B2138, 0x4D2C6DFC, 0x53380D13,\n 0x650A7354, 0x766A0ABB, 0x81C2C92E, 0x92722C85,\n 0xA2BFE8A1, 0xA81A664B, 0xC24B8B70, 0xC76C51A3,\n 0xD192E819, 0xD6990624, 0xF40E3585, 0x106AA070,\n 0x19A4C116, 0x1E376C08, 0x2748774C, 0x34B0BCB5,\n 0x391C0CB3, 0x4ED8AA4A, 0x5B9CCA4F, 0x682E6FF3,\n 0x748F82EE, 0x78A5636F, 0x84C87814, 0x8CC70208,\n 0x90BEFFFA, 0xA4506CEB, 0xBEF9A3F7, 0xC67178F2\n]\n\nvar W = new Array(64)\n\nfunction Sha256 () {\n this.init()\n\n this._w = W // new Array(64)\n\n Hash.call(this, 64, 56)\n}\n\ninherits(Sha256, Hash)\n\nSha256.prototype.init = function () {\n this._a = 0x6a09e667\n this._b = 0xbb67ae85\n this._c = 0x3c6ef372\n this._d = 0xa54ff53a\n this._e = 0x510e527f\n this._f = 0x9b05688c\n this._g = 0x1f83d9ab\n this._h = 0x5be0cd19\n\n return this\n}\n\nfunction ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x) {\n return (x >>> 2 | x << 30) ^ (x >>> 13 | x << 19) ^ (x >>> 22 | x << 10)\n}\n\nfunction sigma1 (x) {\n return (x >>> 6 | x << 26) ^ (x >>> 11 | x << 21) ^ (x >>> 25 | x << 7)\n}\n\nfunction gamma0 (x) {\n return (x >>> 7 | x << 25) ^ (x >>> 18 | x << 14) ^ (x >>> 3)\n}\n\nfunction gamma1 (x) {\n return (x >>> 17 | x << 15) ^ (x >>> 19 | x << 13) ^ (x >>> 10)\n}\n\nSha256.prototype._update = function (M) {\n var W = this._w\n\n var a = this._a | 0\n var b = this._b | 0\n var c = this._c | 0\n var d = this._d | 0\n var e = this._e | 0\n var f = this._f | 0\n var g = this._g | 0\n var h = this._h | 0\n\n for (var i = 0; i < 16; ++i) W[i] = M.readInt32BE(i * 4)\n for (; i < 64; ++i) W[i] = (gamma1(W[i - 2]) + W[i - 7] + gamma0(W[i - 15]) + W[i - 16]) | 0\n\n for (var j = 0; j < 64; ++j) {\n var T1 = (h + sigma1(e) + ch(e, f, g) + K[j] + W[j]) | 0\n var T2 = (sigma0(a) + maj(a, b, c)) | 0\n\n h = g\n g = f\n f = e\n e = (d + T1) | 0\n d = c\n c = b\n b = a\n a = (T1 + T2) | 0\n }\n\n this._a = (a + this._a) | 0\n this._b = (b + this._b) | 0\n this._c = (c + this._c) | 0\n this._d = (d + this._d) | 0\n this._e = (e + this._e) | 0\n this._f = (f + this._f) | 0\n this._g = (g + this._g) | 0\n this._h = (h + this._h) | 0\n}\n\nSha256.prototype._hash = function () {\n var H = Buffer.allocUnsafe(32)\n\n H.writeInt32BE(this._a, 0)\n H.writeInt32BE(this._b, 4)\n H.writeInt32BE(this._c, 8)\n H.writeInt32BE(this._d, 12)\n H.writeInt32BE(this._e, 16)\n H.writeInt32BE(this._f, 20)\n H.writeInt32BE(this._g, 24)\n H.writeInt32BE(this._h, 28)\n\n return H\n}\n\nmodule.exports = Sha256\n\n\n//# sourceURL=webpack://beacon/./node_modules/sha.js/sha256.js?')},"./node_modules/sha.js/sha384.js":(module,__unused_webpack_exports,__webpack_require__)=>{eval('var inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits_browser.js")\nvar SHA512 = __webpack_require__(/*! ./sha512 */ "./node_modules/sha.js/sha512.js")\nvar Hash = __webpack_require__(/*! ./hash */ "./node_modules/sha.js/hash.js")\nvar Buffer = (__webpack_require__(/*! safe-buffer */ "./node_modules/safe-buffer/index.js").Buffer)\n\nvar W = new Array(160)\n\nfunction Sha384 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha384, SHA512)\n\nSha384.prototype.init = function () {\n this._ah = 0xcbbb9d5d\n this._bh = 0x629a292a\n this._ch = 0x9159015a\n this._dh = 0x152fecd8\n this._eh = 0x67332667\n this._fh = 0x8eb44a87\n this._gh = 0xdb0c2e0d\n this._hh = 0x47b5481d\n\n this._al = 0xc1059ed8\n this._bl = 0x367cd507\n this._cl = 0x3070dd17\n this._dl = 0xf70e5939\n this._el = 0xffc00b31\n this._fl = 0x68581511\n this._gl = 0x64f98fa7\n this._hl = 0xbefa4fa4\n\n return this\n}\n\nSha384.prototype._hash = function () {\n var H = Buffer.allocUnsafe(48)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n\n return H\n}\n\nmodule.exports = Sha384\n\n\n//# sourceURL=webpack://beacon/./node_modules/sha.js/sha384.js?')},"./node_modules/sha.js/sha512.js":(module,__unused_webpack_exports,__webpack_require__)=>{eval('var inherits = __webpack_require__(/*! inherits */ "./node_modules/inherits/inherits_browser.js")\nvar Hash = __webpack_require__(/*! ./hash */ "./node_modules/sha.js/hash.js")\nvar Buffer = (__webpack_require__(/*! safe-buffer */ "./node_modules/safe-buffer/index.js").Buffer)\n\nvar K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n]\n\nvar W = new Array(160)\n\nfunction Sha512 () {\n this.init()\n this._w = W\n\n Hash.call(this, 128, 112)\n}\n\ninherits(Sha512, Hash)\n\nSha512.prototype.init = function () {\n this._ah = 0x6a09e667\n this._bh = 0xbb67ae85\n this._ch = 0x3c6ef372\n this._dh = 0xa54ff53a\n this._eh = 0x510e527f\n this._fh = 0x9b05688c\n this._gh = 0x1f83d9ab\n this._hh = 0x5be0cd19\n\n this._al = 0xf3bcc908\n this._bl = 0x84caa73b\n this._cl = 0xfe94f82b\n this._dl = 0x5f1d36f1\n this._el = 0xade682d1\n this._fl = 0x2b3e6c1f\n this._gl = 0xfb41bd6b\n this._hl = 0x137e2179\n\n return this\n}\n\nfunction Ch (x, y, z) {\n return z ^ (x & (y ^ z))\n}\n\nfunction maj (x, y, z) {\n return (x & y) | (z & (x | y))\n}\n\nfunction sigma0 (x, xl) {\n return (x >>> 28 | xl << 4) ^ (xl >>> 2 | x << 30) ^ (xl >>> 7 | x << 25)\n}\n\nfunction sigma1 (x, xl) {\n return (x >>> 14 | xl << 18) ^ (x >>> 18 | xl << 14) ^ (xl >>> 9 | x << 23)\n}\n\nfunction Gamma0 (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7)\n}\n\nfunction Gamma0l (x, xl) {\n return (x >>> 1 | xl << 31) ^ (x >>> 8 | xl << 24) ^ (x >>> 7 | xl << 25)\n}\n\nfunction Gamma1 (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6)\n}\n\nfunction Gamma1l (x, xl) {\n return (x >>> 19 | xl << 13) ^ (xl >>> 29 | x << 3) ^ (x >>> 6 | xl << 26)\n}\n\nfunction getCarry (a, b) {\n return (a >>> 0) < (b >>> 0) ? 1 : 0\n}\n\nSha512.prototype._update = function (M) {\n var W = this._w\n\n var ah = this._ah | 0\n var bh = this._bh | 0\n var ch = this._ch | 0\n var dh = this._dh | 0\n var eh = this._eh | 0\n var fh = this._fh | 0\n var gh = this._gh | 0\n var hh = this._hh | 0\n\n var al = this._al | 0\n var bl = this._bl | 0\n var cl = this._cl | 0\n var dl = this._dl | 0\n var el = this._el | 0\n var fl = this._fl | 0\n var gl = this._gl | 0\n var hl = this._hl | 0\n\n for (var i = 0; i < 32; i += 2) {\n W[i] = M.readInt32BE(i * 4)\n W[i + 1] = M.readInt32BE(i * 4 + 4)\n }\n for (; i < 160; i += 2) {\n var xh = W[i - 15 * 2]\n var xl = W[i - 15 * 2 + 1]\n var gamma0 = Gamma0(xh, xl)\n var gamma0l = Gamma0l(xl, xh)\n\n xh = W[i - 2 * 2]\n xl = W[i - 2 * 2 + 1]\n var gamma1 = Gamma1(xh, xl)\n var gamma1l = Gamma1l(xl, xh)\n\n // W[i] = gamma0 + W[i - 7] + gamma1 + W[i - 16]\n var Wi7h = W[i - 7 * 2]\n var Wi7l = W[i - 7 * 2 + 1]\n\n var Wi16h = W[i - 16 * 2]\n var Wi16l = W[i - 16 * 2 + 1]\n\n var Wil = (gamma0l + Wi7l) | 0\n var Wih = (gamma0 + Wi7h + getCarry(Wil, gamma0l)) | 0\n Wil = (Wil + gamma1l) | 0\n Wih = (Wih + gamma1 + getCarry(Wil, gamma1l)) | 0\n Wil = (Wil + Wi16l) | 0\n Wih = (Wih + Wi16h + getCarry(Wil, Wi16l)) | 0\n\n W[i] = Wih\n W[i + 1] = Wil\n }\n\n for (var j = 0; j < 160; j += 2) {\n Wih = W[j]\n Wil = W[j + 1]\n\n var majh = maj(ah, bh, ch)\n var majl = maj(al, bl, cl)\n\n var sigma0h = sigma0(ah, al)\n var sigma0l = sigma0(al, ah)\n var sigma1h = sigma1(eh, el)\n var sigma1l = sigma1(el, eh)\n\n // t1 = h + sigma1 + ch + K[j] + W[j]\n var Kih = K[j]\n var Kil = K[j + 1]\n\n var chh = Ch(eh, fh, gh)\n var chl = Ch(el, fl, gl)\n\n var t1l = (hl + sigma1l) | 0\n var t1h = (hh + sigma1h + getCarry(t1l, hl)) | 0\n t1l = (t1l + chl) | 0\n t1h = (t1h + chh + getCarry(t1l, chl)) | 0\n t1l = (t1l + Kil) | 0\n t1h = (t1h + Kih + getCarry(t1l, Kil)) | 0\n t1l = (t1l + Wil) | 0\n t1h = (t1h + Wih + getCarry(t1l, Wil)) | 0\n\n // t2 = sigma0 + maj\n var t2l = (sigma0l + majl) | 0\n var t2h = (sigma0h + majh + getCarry(t2l, sigma0l)) | 0\n\n hh = gh\n hl = gl\n gh = fh\n gl = fl\n fh = eh\n fl = el\n el = (dl + t1l) | 0\n eh = (dh + t1h + getCarry(el, dl)) | 0\n dh = ch\n dl = cl\n ch = bh\n cl = bl\n bh = ah\n bl = al\n al = (t1l + t2l) | 0\n ah = (t1h + t2h + getCarry(al, t1l)) | 0\n }\n\n this._al = (this._al + al) | 0\n this._bl = (this._bl + bl) | 0\n this._cl = (this._cl + cl) | 0\n this._dl = (this._dl + dl) | 0\n this._el = (this._el + el) | 0\n this._fl = (this._fl + fl) | 0\n this._gl = (this._gl + gl) | 0\n this._hl = (this._hl + hl) | 0\n\n this._ah = (this._ah + ah + getCarry(this._al, al)) | 0\n this._bh = (this._bh + bh + getCarry(this._bl, bl)) | 0\n this._ch = (this._ch + ch + getCarry(this._cl, cl)) | 0\n this._dh = (this._dh + dh + getCarry(this._dl, dl)) | 0\n this._eh = (this._eh + eh + getCarry(this._el, el)) | 0\n this._fh = (this._fh + fh + getCarry(this._fl, fl)) | 0\n this._gh = (this._gh + gh + getCarry(this._gl, gl)) | 0\n this._hh = (this._hh + hh + getCarry(this._hl, hl)) | 0\n}\n\nSha512.prototype._hash = function () {\n var H = Buffer.allocUnsafe(64)\n\n function writeInt64BE (h, l, offset) {\n H.writeInt32BE(h, offset)\n H.writeInt32BE(l, offset + 4)\n }\n\n writeInt64BE(this._ah, this._al, 0)\n writeInt64BE(this._bh, this._bl, 8)\n writeInt64BE(this._ch, this._cl, 16)\n writeInt64BE(this._dh, this._dl, 24)\n writeInt64BE(this._eh, this._el, 32)\n writeInt64BE(this._fh, this._fl, 40)\n writeInt64BE(this._gh, this._gl, 48)\n writeInt64BE(this._hh, this._hl, 56)\n\n return H\n}\n\nmodule.exports = Sha512\n\n\n//# sourceURL=webpack://beacon/./node_modules/sha.js/sha512.js?')},"./node_modules/split-on-first/index.js":module=>{"use strict";eval("\n\nmodule.exports = (string, separator) => {\n\tif (!(typeof string === 'string' && typeof separator === 'string')) {\n\t\tthrow new TypeError('Expected the arguments to be of type `string`');\n\t}\n\n\tif (separator === '') {\n\t\treturn [string];\n\t}\n\n\tconst separatorIndex = string.indexOf(separator);\n\n\tif (separatorIndex === -1) {\n\t\treturn [string];\n\t}\n\n\treturn [\n\t\tstring.slice(0, separatorIndex),\n\t\tstring.slice(separatorIndex + separator.length)\n\t];\n};\n\n\n//# sourceURL=webpack://beacon/./node_modules/split-on-first/index.js?")},"./node_modules/stream-browserify/index.js":(module,__unused_webpack_exports,__webpack_require__)=>{eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nmodule.exports = Stream;\n\nvar EE = (__webpack_require__(/*! events */ \"./node_modules/events/events.js\").EventEmitter);\nvar inherits = __webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\");\n\ninherits(Stream, EE);\nStream.Readable = __webpack_require__(/*! readable-stream/lib/_stream_readable.js */ \"./node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_readable.js\");\nStream.Writable = __webpack_require__(/*! readable-stream/lib/_stream_writable.js */ \"./node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_writable.js\");\nStream.Duplex = __webpack_require__(/*! readable-stream/lib/_stream_duplex.js */ \"./node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_duplex.js\");\nStream.Transform = __webpack_require__(/*! readable-stream/lib/_stream_transform.js */ \"./node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_transform.js\");\nStream.PassThrough = __webpack_require__(/*! readable-stream/lib/_stream_passthrough.js */ \"./node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_passthrough.js\");\nStream.finished = __webpack_require__(/*! readable-stream/lib/internal/streams/end-of-stream.js */ \"./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/end-of-stream.js\")\nStream.pipeline = __webpack_require__(/*! readable-stream/lib/internal/streams/pipeline.js */ \"./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/pipeline.js\")\n\n// Backwards-compat with node 0.4.x\nStream.Stream = Stream;\n\n\n\n// old-style streams. Note that the pipe method (the only relevant\n// part of this class) is overridden in the Readable class.\n\nfunction Stream() {\n EE.call(this);\n}\n\nStream.prototype.pipe = function(dest, options) {\n var source = this;\n\n function ondata(chunk) {\n if (dest.writable) {\n if (false === dest.write(chunk) && source.pause) {\n source.pause();\n }\n }\n }\n\n source.on('data', ondata);\n\n function ondrain() {\n if (source.readable && source.resume) {\n source.resume();\n }\n }\n\n dest.on('drain', ondrain);\n\n // If the 'end' option is not supplied, dest.end() will be called when\n // source gets the 'end' or 'close' events. Only dest.end() once.\n if (!dest._isStdio && (!options || options.end !== false)) {\n source.on('end', onend);\n source.on('close', onclose);\n }\n\n var didOnEnd = false;\n function onend() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n dest.end();\n }\n\n\n function onclose() {\n if (didOnEnd) return;\n didOnEnd = true;\n\n if (typeof dest.destroy === 'function') dest.destroy();\n }\n\n // don't leave dangling pipes when there are errors.\n function onerror(er) {\n cleanup();\n if (EE.listenerCount(this, 'error') === 0) {\n throw er; // Unhandled stream error in pipe.\n }\n }\n\n source.on('error', onerror);\n dest.on('error', onerror);\n\n // remove all the event listeners that were added.\n function cleanup() {\n source.removeListener('data', ondata);\n dest.removeListener('drain', ondrain);\n\n source.removeListener('end', onend);\n source.removeListener('close', onclose);\n\n source.removeListener('error', onerror);\n dest.removeListener('error', onerror);\n\n source.removeListener('end', cleanup);\n source.removeListener('close', cleanup);\n\n dest.removeListener('close', cleanup);\n }\n\n source.on('end', cleanup);\n source.on('close', cleanup);\n\n dest.on('close', cleanup);\n\n dest.emit('pipe', source);\n\n // Allow for unix-like usage: A.pipe(B).pipe(C)\n return dest;\n};\n\n\n//# sourceURL=webpack://beacon/./node_modules/stream-browserify/index.js?")},"./node_modules/stream-browserify/node_modules/readable-stream/errors-browser.js":module=>{"use strict";eval("\n\nfunction _inheritsLoose(subClass, superClass) { subClass.prototype = Object.create(superClass.prototype); subClass.prototype.constructor = subClass; subClass.__proto__ = superClass; }\n\nvar codes = {};\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inheritsLoose(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n return _Base.call(this, getMessage(arg1, arg2, arg3)) || this;\n }\n\n return NodeError;\n }(Base);\n\n NodeError.prototype.name = Base.name;\n NodeError.prototype.code = code;\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_INVALID_OPT_VALUE', function (name, value) {\n return 'The value \"' + value + '\" is invalid for option \"' + name + '\"';\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n // determiner: 'must be' or 'must not be'\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n }\n\n msg += \". Received type \".concat(typeof actual);\n return msg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_PUSH_AFTER_EOF', 'stream.push() after EOF');\ncreateErrorType('ERR_METHOD_NOT_IMPLEMENTED', function (name) {\n return 'The ' + name + ' method is not implemented';\n});\ncreateErrorType('ERR_STREAM_PREMATURE_CLOSE', 'Premature close');\ncreateErrorType('ERR_STREAM_DESTROYED', function (name) {\n return 'Cannot call ' + name + ' after a stream was destroyed';\n});\ncreateErrorType('ERR_MULTIPLE_CALLBACK', 'Callback called multiple times');\ncreateErrorType('ERR_STREAM_CANNOT_PIPE', 'Cannot pipe, not readable');\ncreateErrorType('ERR_STREAM_WRITE_AFTER_END', 'write after end');\ncreateErrorType('ERR_STREAM_NULL_VALUES', 'May not write null values to stream', TypeError);\ncreateErrorType('ERR_UNKNOWN_ENCODING', function (arg) {\n return 'Unknown encoding: ' + arg;\n}, TypeError);\ncreateErrorType('ERR_STREAM_UNSHIFT_AFTER_END_EVENT', 'stream.unshift() after end event');\nmodule.exports.codes = codes;\n\n\n//# sourceURL=webpack://beacon/./node_modules/stream-browserify/node_modules/readable-stream/errors-browser.js?")},"./node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_duplex.js":(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a duplex stream is just a stream that is both readable and writable.\n// Since JS doesn't have multiple prototypal inheritance, this class\n// prototypally inherits from Readable, and then parasitically from\n// Writable.\n\n\n\n/**/\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n};\n/**/\n\nmodule.exports = Duplex;\nvar Readable = __webpack_require__(/*! ./_stream_readable */ \"./node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_readable.js\");\nvar Writable = __webpack_require__(/*! ./_stream_writable */ \"./node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_writable.js\");\n__webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")(Duplex, Readable);\n{\n // Allow the keys array to be GC'ed.\n var keys = objectKeys(Writable.prototype);\n for (var v = 0; v < keys.length; v++) {\n var method = keys[v];\n if (!Duplex.prototype[method]) Duplex.prototype[method] = Writable.prototype[method];\n }\n}\nfunction Duplex(options) {\n if (!(this instanceof Duplex)) return new Duplex(options);\n Readable.call(this, options);\n Writable.call(this, options);\n this.allowHalfOpen = true;\n if (options) {\n if (options.readable === false) this.readable = false;\n if (options.writable === false) this.writable = false;\n if (options.allowHalfOpen === false) {\n this.allowHalfOpen = false;\n this.once('end', onend);\n }\n }\n}\nObject.defineProperty(Duplex.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nObject.defineProperty(Duplex.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\n\n// the no-half-open enforcer\nfunction onend() {\n // If the writable side ended, then we're ok.\n if (this._writableState.ended) return;\n\n // no more data can be written.\n // But allow more writes to happen in this tick.\n process.nextTick(onEndNT, this);\n}\nfunction onEndNT(self) {\n self.end();\n}\nObject.defineProperty(Duplex.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined || this._writableState === undefined) {\n return false;\n }\n return this._readableState.destroyed && this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (this._readableState === undefined || this._writableState === undefined) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n this._writableState.destroyed = value;\n }\n});\n\n//# sourceURL=webpack://beacon/./node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_duplex.js?")},"./node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_passthrough.js":(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// "Software"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a passthrough stream.\n// basically just the most minimal sort of Transform stream.\n// Every written chunk gets output as-is.\n\n\n\nmodule.exports = PassThrough;\nvar Transform = __webpack_require__(/*! ./_stream_transform */ "./node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_transform.js");\n__webpack_require__(/*! inherits */ "./node_modules/inherits/inherits_browser.js")(PassThrough, Transform);\nfunction PassThrough(options) {\n if (!(this instanceof PassThrough)) return new PassThrough(options);\n Transform.call(this, options);\n}\nPassThrough.prototype._transform = function (chunk, encoding, cb) {\n cb(null, chunk);\n};\n\n//# sourceURL=webpack://beacon/./node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_passthrough.js?')},"./node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_readable.js":(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n\nmodule.exports = Readable;\n\n/**/\nvar Duplex;\n/**/\n\nReadable.ReadableState = ReadableState;\n\n/**/\nvar EE = (__webpack_require__(/*! events */ \"./node_modules/events/events.js\").EventEmitter);\nvar EElistenerCount = function EElistenerCount(emitter, type) {\n return emitter.listeners(type).length;\n};\n/**/\n\n/**/\nvar Stream = __webpack_require__(/*! ./internal/streams/stream */ \"./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/stream-browser.js\");\n/**/\n\nvar Buffer = (__webpack_require__(/*! buffer */ \"./node_modules/buffer/index.js\").Buffer);\nvar OurUint8Array = (typeof __webpack_require__.g !== 'undefined' ? __webpack_require__.g : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\n\n/**/\nvar debugUtil = __webpack_require__(/*! util */ \"?19e6\");\nvar debug;\nif (debugUtil && debugUtil.debuglog) {\n debug = debugUtil.debuglog('stream');\n} else {\n debug = function debug() {};\n}\n/**/\n\nvar BufferList = __webpack_require__(/*! ./internal/streams/buffer_list */ \"./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/buffer_list.js\");\nvar destroyImpl = __webpack_require__(/*! ./internal/streams/destroy */ \"./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/destroy.js\");\nvar _require = __webpack_require__(/*! ./internal/streams/state */ \"./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/state.js\"),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = (__webpack_require__(/*! ../errors */ \"./node_modules/stream-browserify/node_modules/readable-stream/errors-browser.js\").codes),\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_STREAM_PUSH_AFTER_EOF = _require$codes.ERR_STREAM_PUSH_AFTER_EOF,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_STREAM_UNSHIFT_AFTER_END_EVENT = _require$codes.ERR_STREAM_UNSHIFT_AFTER_END_EVENT;\n\n// Lazy loaded to improve the startup performance.\nvar StringDecoder;\nvar createReadableStreamAsyncIterator;\nvar from;\n__webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")(Readable, Stream);\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\nvar kProxyEvents = ['error', 'close', 'destroy', 'pause', 'resume'];\nfunction prependListener(emitter, event, fn) {\n // Sadly this is not cacheable as some libraries bundle their own\n // event emitter implementation with them.\n if (typeof emitter.prependListener === 'function') return emitter.prependListener(event, fn);\n\n // This is a hack to make sure that our error handler is attached before any\n // userland ones. NEVER DO THIS. This is here only because this code needs\n // to continue to work with older versions of Node.js that do not include\n // the prependListener() method. The goal is to eventually remove this hack.\n if (!emitter._events || !emitter._events[event]) emitter.on(event, fn);else if (Array.isArray(emitter._events[event])) emitter._events[event].unshift(fn);else emitter._events[event] = [fn, emitter._events[event]];\n}\nfunction ReadableState(options, stream, isDuplex) {\n Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ \"./node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_duplex.js\");\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream.\n // These options can be provided separately as readableXXX and writableXXX.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag. Used to make read(n) ignore n and to\n // make all the buffer merging and length checks go away\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.readableObjectMode;\n\n // the point at which it stops calling _read() to fill the buffer\n // Note: 0 is a valid value, means \"don't call _read preemptively ever\"\n this.highWaterMark = getHighWaterMark(this, options, 'readableHighWaterMark', isDuplex);\n\n // A linked list is used to store data chunks instead of an array because the\n // linked list can remove elements from the beginning faster than\n // array.shift()\n this.buffer = new BufferList();\n this.length = 0;\n this.pipes = null;\n this.pipesCount = 0;\n this.flowing = null;\n this.ended = false;\n this.endEmitted = false;\n this.reading = false;\n\n // a flag to be able to tell if the event 'readable'/'data' is emitted\n // immediately, or on a later tick. We set this to true at first, because\n // any actions that shouldn't happen until \"later\" should generally also\n // not happen before the first read call.\n this.sync = true;\n\n // whenever we return null, then we set a flag to say\n // that we're awaiting a 'readable' event emission.\n this.needReadable = false;\n this.emittedReadable = false;\n this.readableListening = false;\n this.resumeScheduled = false;\n this.paused = true;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'end' (and potentially 'finish')\n this.autoDestroy = !!options.autoDestroy;\n\n // has it been destroyed\n this.destroyed = false;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // the number of writers that are awaiting a drain event in .pipe()s\n this.awaitDrain = 0;\n\n // if true, a maybeReadMore has been scheduled\n this.readingMore = false;\n this.decoder = null;\n this.encoding = null;\n if (options.encoding) {\n if (!StringDecoder) StringDecoder = (__webpack_require__(/*! string_decoder/ */ \"./node_modules/string_decoder/lib/string_decoder.js\").StringDecoder);\n this.decoder = new StringDecoder(options.encoding);\n this.encoding = options.encoding;\n }\n}\nfunction Readable(options) {\n Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ \"./node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_duplex.js\");\n if (!(this instanceof Readable)) return new Readable(options);\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the ReadableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n this._readableState = new ReadableState(options, this, isDuplex);\n\n // legacy\n this.readable = true;\n if (options) {\n if (typeof options.read === 'function') this._read = options.read;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n }\n Stream.call(this);\n}\nObject.defineProperty(Readable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._readableState === undefined) {\n return false;\n }\n return this._readableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._readableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._readableState.destroyed = value;\n }\n});\nReadable.prototype.destroy = destroyImpl.destroy;\nReadable.prototype._undestroy = destroyImpl.undestroy;\nReadable.prototype._destroy = function (err, cb) {\n cb(err);\n};\n\n// Manually shove something into the read() buffer.\n// This returns true if the highWaterMark has not been hit yet,\n// similar to how Writable.write() returns true if you should\n// write() some more.\nReadable.prototype.push = function (chunk, encoding) {\n var state = this._readableState;\n var skipChunkCheck;\n if (!state.objectMode) {\n if (typeof chunk === 'string') {\n encoding = encoding || state.defaultEncoding;\n if (encoding !== state.encoding) {\n chunk = Buffer.from(chunk, encoding);\n encoding = '';\n }\n skipChunkCheck = true;\n }\n } else {\n skipChunkCheck = true;\n }\n return readableAddChunk(this, chunk, encoding, false, skipChunkCheck);\n};\n\n// Unshift should *always* be something directly out of read()\nReadable.prototype.unshift = function (chunk) {\n return readableAddChunk(this, chunk, null, true, false);\n};\nfunction readableAddChunk(stream, chunk, encoding, addToFront, skipChunkCheck) {\n debug('readableAddChunk', chunk);\n var state = stream._readableState;\n if (chunk === null) {\n state.reading = false;\n onEofChunk(stream, state);\n } else {\n var er;\n if (!skipChunkCheck) er = chunkInvalid(state, chunk);\n if (er) {\n errorOrDestroy(stream, er);\n } else if (state.objectMode || chunk && chunk.length > 0) {\n if (typeof chunk !== 'string' && !state.objectMode && Object.getPrototypeOf(chunk) !== Buffer.prototype) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (addToFront) {\n if (state.endEmitted) errorOrDestroy(stream, new ERR_STREAM_UNSHIFT_AFTER_END_EVENT());else addChunk(stream, state, chunk, true);\n } else if (state.ended) {\n errorOrDestroy(stream, new ERR_STREAM_PUSH_AFTER_EOF());\n } else if (state.destroyed) {\n return false;\n } else {\n state.reading = false;\n if (state.decoder && !encoding) {\n chunk = state.decoder.write(chunk);\n if (state.objectMode || chunk.length !== 0) addChunk(stream, state, chunk, false);else maybeReadMore(stream, state);\n } else {\n addChunk(stream, state, chunk, false);\n }\n }\n } else if (!addToFront) {\n state.reading = false;\n maybeReadMore(stream, state);\n }\n }\n\n // We can push more data if we are below the highWaterMark.\n // Also, if we have no data yet, we can stand some more bytes.\n // This is to work around cases where hwm=0, such as the repl.\n return !state.ended && (state.length < state.highWaterMark || state.length === 0);\n}\nfunction addChunk(stream, state, chunk, addToFront) {\n if (state.flowing && state.length === 0 && !state.sync) {\n state.awaitDrain = 0;\n stream.emit('data', chunk);\n } else {\n // update the buffer info.\n state.length += state.objectMode ? 1 : chunk.length;\n if (addToFront) state.buffer.unshift(chunk);else state.buffer.push(chunk);\n if (state.needReadable) emitReadable(stream);\n }\n maybeReadMore(stream, state);\n}\nfunction chunkInvalid(state, chunk) {\n var er;\n if (!_isUint8Array(chunk) && typeof chunk !== 'string' && chunk !== undefined && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer', 'Uint8Array'], chunk);\n }\n return er;\n}\nReadable.prototype.isPaused = function () {\n return this._readableState.flowing === false;\n};\n\n// backwards compatibility.\nReadable.prototype.setEncoding = function (enc) {\n if (!StringDecoder) StringDecoder = (__webpack_require__(/*! string_decoder/ */ \"./node_modules/string_decoder/lib/string_decoder.js\").StringDecoder);\n var decoder = new StringDecoder(enc);\n this._readableState.decoder = decoder;\n // If setEncoding(null), decoder.encoding equals utf8\n this._readableState.encoding = this._readableState.decoder.encoding;\n\n // Iterate over current buffer to convert already stored Buffers:\n var p = this._readableState.buffer.head;\n var content = '';\n while (p !== null) {\n content += decoder.write(p.data);\n p = p.next;\n }\n this._readableState.buffer.clear();\n if (content !== '') this._readableState.buffer.push(content);\n this._readableState.length = content.length;\n return this;\n};\n\n// Don't raise the hwm > 1GB\nvar MAX_HWM = 0x40000000;\nfunction computeNewHighWaterMark(n) {\n if (n >= MAX_HWM) {\n // TODO(ronag): Throw ERR_VALUE_OUT_OF_RANGE.\n n = MAX_HWM;\n } else {\n // Get the next highest power of 2 to prevent increasing hwm excessively in\n // tiny amounts\n n--;\n n |= n >>> 1;\n n |= n >>> 2;\n n |= n >>> 4;\n n |= n >>> 8;\n n |= n >>> 16;\n n++;\n }\n return n;\n}\n\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction howMuchToRead(n, state) {\n if (n <= 0 || state.length === 0 && state.ended) return 0;\n if (state.objectMode) return 1;\n if (n !== n) {\n // Only flow one buffer at a time\n if (state.flowing && state.length) return state.buffer.head.data.length;else return state.length;\n }\n // If we're asking for more than the current hwm, then raise the hwm.\n if (n > state.highWaterMark) state.highWaterMark = computeNewHighWaterMark(n);\n if (n <= state.length) return n;\n // Don't have enough\n if (!state.ended) {\n state.needReadable = true;\n return 0;\n }\n return state.length;\n}\n\n// you can override either this method, or the async _read(n) below.\nReadable.prototype.read = function (n) {\n debug('read', n);\n n = parseInt(n, 10);\n var state = this._readableState;\n var nOrig = n;\n if (n !== 0) state.emittedReadable = false;\n\n // if we're doing read(0) to trigger a readable event, but we\n // already have a bunch of data in the buffer, then just trigger\n // the 'readable' event and move on.\n if (n === 0 && state.needReadable && ((state.highWaterMark !== 0 ? state.length >= state.highWaterMark : state.length > 0) || state.ended)) {\n debug('read: emitReadable', state.length, state.ended);\n if (state.length === 0 && state.ended) endReadable(this);else emitReadable(this);\n return null;\n }\n n = howMuchToRead(n, state);\n\n // if we've ended, and we're now clear, then finish it up.\n if (n === 0 && state.ended) {\n if (state.length === 0) endReadable(this);\n return null;\n }\n\n // All the actual chunk generation logic needs to be\n // *below* the call to _read. The reason is that in certain\n // synthetic stream cases, such as passthrough streams, _read\n // may be a completely synchronous operation which may change\n // the state of the read buffer, providing enough data when\n // before there was *not* enough.\n //\n // So, the steps are:\n // 1. Figure out what the state of things will be after we do\n // a read from the buffer.\n //\n // 2. If that resulting state will trigger a _read, then call _read.\n // Note that this may be asynchronous, or synchronous. Yes, it is\n // deeply ugly to write APIs this way, but that still doesn't mean\n // that the Readable class should behave improperly, as streams are\n // designed to be sync/async agnostic.\n // Take note if the _read call is sync or async (ie, if the read call\n // has returned yet), so that we know whether or not it's safe to emit\n // 'readable' etc.\n //\n // 3. Actually pull the requested chunks out of the buffer and return.\n\n // if we need a readable event, then we need to do some reading.\n var doRead = state.needReadable;\n debug('need readable', doRead);\n\n // if we currently have less than the highWaterMark, then also read some\n if (state.length === 0 || state.length - n < state.highWaterMark) {\n doRead = true;\n debug('length less than watermark', doRead);\n }\n\n // however, if we've ended, then there's no point, and if we're already\n // reading, then it's unnecessary.\n if (state.ended || state.reading) {\n doRead = false;\n debug('reading or ended', doRead);\n } else if (doRead) {\n debug('do read');\n state.reading = true;\n state.sync = true;\n // if the length is currently zero, then we *need* a readable event.\n if (state.length === 0) state.needReadable = true;\n // call internal read method\n this._read(state.highWaterMark);\n state.sync = false;\n // If _read pushed data synchronously, then `reading` will be false,\n // and we need to re-evaluate how much data we can return to the user.\n if (!state.reading) n = howMuchToRead(nOrig, state);\n }\n var ret;\n if (n > 0) ret = fromList(n, state);else ret = null;\n if (ret === null) {\n state.needReadable = state.length <= state.highWaterMark;\n n = 0;\n } else {\n state.length -= n;\n state.awaitDrain = 0;\n }\n if (state.length === 0) {\n // If we have nothing in the buffer, then we want to know\n // as soon as we *do* get something into the buffer.\n if (!state.ended) state.needReadable = true;\n\n // If we tried to read() past the EOF, then emit end on the next tick.\n if (nOrig !== n && state.ended) endReadable(this);\n }\n if (ret !== null) this.emit('data', ret);\n return ret;\n};\nfunction onEofChunk(stream, state) {\n debug('onEofChunk');\n if (state.ended) return;\n if (state.decoder) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) {\n state.buffer.push(chunk);\n state.length += state.objectMode ? 1 : chunk.length;\n }\n }\n state.ended = true;\n if (state.sync) {\n // if we are sync, wait until next tick to emit the data.\n // Otherwise we risk emitting data in the flow()\n // the readable code triggers during a read() call\n emitReadable(stream);\n } else {\n // emit 'readable' now to make sure it gets picked up.\n state.needReadable = false;\n if (!state.emittedReadable) {\n state.emittedReadable = true;\n emitReadable_(stream);\n }\n }\n}\n\n// Don't emit readable right away in sync mode, because this can trigger\n// another read() call => stack overflow. This way, it might trigger\n// a nextTick recursion warning, but that's not so bad.\nfunction emitReadable(stream) {\n var state = stream._readableState;\n debug('emitReadable', state.needReadable, state.emittedReadable);\n state.needReadable = false;\n if (!state.emittedReadable) {\n debug('emitReadable', state.flowing);\n state.emittedReadable = true;\n process.nextTick(emitReadable_, stream);\n }\n}\nfunction emitReadable_(stream) {\n var state = stream._readableState;\n debug('emitReadable_', state.destroyed, state.length, state.ended);\n if (!state.destroyed && (state.length || state.ended)) {\n stream.emit('readable');\n state.emittedReadable = false;\n }\n\n // The stream needs another readable event if\n // 1. It is not flowing, as the flow mechanism will take\n // care of it.\n // 2. It is not ended.\n // 3. It is below the highWaterMark, so we can schedule\n // another readable later.\n state.needReadable = !state.flowing && !state.ended && state.length <= state.highWaterMark;\n flow(stream);\n}\n\n// at this point, the user has presumably seen the 'readable' event,\n// and called read() to consume some data. that may have triggered\n// in turn another _read(n) call, in which case reading = true if\n// it's in progress.\n// However, if we're not ended, or reading, and the length < hwm,\n// then go ahead and try to read some more preemptively.\nfunction maybeReadMore(stream, state) {\n if (!state.readingMore) {\n state.readingMore = true;\n process.nextTick(maybeReadMore_, stream, state);\n }\n}\nfunction maybeReadMore_(stream, state) {\n // Attempt to read more data if we should.\n //\n // The conditions for reading more data are (one of):\n // - Not enough data buffered (state.length < state.highWaterMark). The loop\n // is responsible for filling the buffer with enough data if such data\n // is available. If highWaterMark is 0 and we are not in the flowing mode\n // we should _not_ attempt to buffer any extra data. We'll get more data\n // when the stream consumer calls read() instead.\n // - No data in the buffer, and the stream is in flowing mode. In this mode\n // the loop below is responsible for ensuring read() is called. Failing to\n // call read here would abort the flow and there's no other mechanism for\n // continuing the flow if the stream consumer has just subscribed to the\n // 'data' event.\n //\n // In addition to the above conditions to keep reading data, the following\n // conditions prevent the data from being read:\n // - The stream has ended (state.ended).\n // - There is already a pending 'read' operation (state.reading). This is a\n // case where the the stream has called the implementation defined _read()\n // method, but they are processing the call asynchronously and have _not_\n // called push() with new data. In this case we skip performing more\n // read()s. The execution ends in this method again after the _read() ends\n // up calling push() with more data.\n while (!state.reading && !state.ended && (state.length < state.highWaterMark || state.flowing && state.length === 0)) {\n var len = state.length;\n debug('maybeReadMore read 0');\n stream.read(0);\n if (len === state.length)\n // didn't get any data, stop spinning.\n break;\n }\n state.readingMore = false;\n}\n\n// abstract method. to be overridden in specific implementation classes.\n// call cb(er, data) where data is <= n in length.\n// for virtual (non-string, non-buffer) streams, \"length\" is somewhat\n// arbitrary, and perhaps not very meaningful.\nReadable.prototype._read = function (n) {\n errorOrDestroy(this, new ERR_METHOD_NOT_IMPLEMENTED('_read()'));\n};\nReadable.prototype.pipe = function (dest, pipeOpts) {\n var src = this;\n var state = this._readableState;\n switch (state.pipesCount) {\n case 0:\n state.pipes = dest;\n break;\n case 1:\n state.pipes = [state.pipes, dest];\n break;\n default:\n state.pipes.push(dest);\n break;\n }\n state.pipesCount += 1;\n debug('pipe count=%d opts=%j', state.pipesCount, pipeOpts);\n var doEnd = (!pipeOpts || pipeOpts.end !== false) && dest !== process.stdout && dest !== process.stderr;\n var endFn = doEnd ? onend : unpipe;\n if (state.endEmitted) process.nextTick(endFn);else src.once('end', endFn);\n dest.on('unpipe', onunpipe);\n function onunpipe(readable, unpipeInfo) {\n debug('onunpipe');\n if (readable === src) {\n if (unpipeInfo && unpipeInfo.hasUnpiped === false) {\n unpipeInfo.hasUnpiped = true;\n cleanup();\n }\n }\n }\n function onend() {\n debug('onend');\n dest.end();\n }\n\n // when the dest drains, it reduces the awaitDrain counter\n // on the source. This would be more elegant with a .once()\n // handler in flow(), but adding and removing repeatedly is\n // too slow.\n var ondrain = pipeOnDrain(src);\n dest.on('drain', ondrain);\n var cleanedUp = false;\n function cleanup() {\n debug('cleanup');\n // cleanup event handlers once the pipe is broken\n dest.removeListener('close', onclose);\n dest.removeListener('finish', onfinish);\n dest.removeListener('drain', ondrain);\n dest.removeListener('error', onerror);\n dest.removeListener('unpipe', onunpipe);\n src.removeListener('end', onend);\n src.removeListener('end', unpipe);\n src.removeListener('data', ondata);\n cleanedUp = true;\n\n // if the reader is waiting for a drain event from this\n // specific writer, then it would cause it to never start\n // flowing again.\n // So, if this is awaiting a drain, then we just call it now.\n // If we don't know, then assume that we are waiting for one.\n if (state.awaitDrain && (!dest._writableState || dest._writableState.needDrain)) ondrain();\n }\n src.on('data', ondata);\n function ondata(chunk) {\n debug('ondata');\n var ret = dest.write(chunk);\n debug('dest.write', ret);\n if (ret === false) {\n // If the user unpiped during `dest.write()`, it is possible\n // to get stuck in a permanently paused state if that write\n // also returned false.\n // => Check whether `dest` is still a piping destination.\n if ((state.pipesCount === 1 && state.pipes === dest || state.pipesCount > 1 && indexOf(state.pipes, dest) !== -1) && !cleanedUp) {\n debug('false write response, pause', state.awaitDrain);\n state.awaitDrain++;\n }\n src.pause();\n }\n }\n\n // if the dest has an error, then stop piping into it.\n // however, don't suppress the throwing behavior for this.\n function onerror(er) {\n debug('onerror', er);\n unpipe();\n dest.removeListener('error', onerror);\n if (EElistenerCount(dest, 'error') === 0) errorOrDestroy(dest, er);\n }\n\n // Make sure our error handler is attached before userland ones.\n prependListener(dest, 'error', onerror);\n\n // Both close and finish should trigger unpipe, but only once.\n function onclose() {\n dest.removeListener('finish', onfinish);\n unpipe();\n }\n dest.once('close', onclose);\n function onfinish() {\n debug('onfinish');\n dest.removeListener('close', onclose);\n unpipe();\n }\n dest.once('finish', onfinish);\n function unpipe() {\n debug('unpipe');\n src.unpipe(dest);\n }\n\n // tell the dest that it's being piped to\n dest.emit('pipe', src);\n\n // start the flow if it hasn't been started already.\n if (!state.flowing) {\n debug('pipe resume');\n src.resume();\n }\n return dest;\n};\nfunction pipeOnDrain(src) {\n return function pipeOnDrainFunctionResult() {\n var state = src._readableState;\n debug('pipeOnDrain', state.awaitDrain);\n if (state.awaitDrain) state.awaitDrain--;\n if (state.awaitDrain === 0 && EElistenerCount(src, 'data')) {\n state.flowing = true;\n flow(src);\n }\n };\n}\nReadable.prototype.unpipe = function (dest) {\n var state = this._readableState;\n var unpipeInfo = {\n hasUnpiped: false\n };\n\n // if we're not piping anywhere, then do nothing.\n if (state.pipesCount === 0) return this;\n\n // just one destination. most common case.\n if (state.pipesCount === 1) {\n // passed in one, but it's not the right one.\n if (dest && dest !== state.pipes) return this;\n if (!dest) dest = state.pipes;\n\n // got a match.\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n if (dest) dest.emit('unpipe', this, unpipeInfo);\n return this;\n }\n\n // slow case. multiple pipe destinations.\n\n if (!dest) {\n // remove all.\n var dests = state.pipes;\n var len = state.pipesCount;\n state.pipes = null;\n state.pipesCount = 0;\n state.flowing = false;\n for (var i = 0; i < len; i++) dests[i].emit('unpipe', this, {\n hasUnpiped: false\n });\n return this;\n }\n\n // try to find the right one.\n var index = indexOf(state.pipes, dest);\n if (index === -1) return this;\n state.pipes.splice(index, 1);\n state.pipesCount -= 1;\n if (state.pipesCount === 1) state.pipes = state.pipes[0];\n dest.emit('unpipe', this, unpipeInfo);\n return this;\n};\n\n// set up data events if they are asked for\n// Ensure readable listeners eventually get something\nReadable.prototype.on = function (ev, fn) {\n var res = Stream.prototype.on.call(this, ev, fn);\n var state = this._readableState;\n if (ev === 'data') {\n // update readableListening so that resume() may be a no-op\n // a few lines down. This is needed to support once('readable').\n state.readableListening = this.listenerCount('readable') > 0;\n\n // Try start flowing on next tick if stream isn't explicitly paused\n if (state.flowing !== false) this.resume();\n } else if (ev === 'readable') {\n if (!state.endEmitted && !state.readableListening) {\n state.readableListening = state.needReadable = true;\n state.flowing = false;\n state.emittedReadable = false;\n debug('on readable', state.length, state.reading);\n if (state.length) {\n emitReadable(this);\n } else if (!state.reading) {\n process.nextTick(nReadingNextTick, this);\n }\n }\n }\n return res;\n};\nReadable.prototype.addListener = Readable.prototype.on;\nReadable.prototype.removeListener = function (ev, fn) {\n var res = Stream.prototype.removeListener.call(this, ev, fn);\n if (ev === 'readable') {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nReadable.prototype.removeAllListeners = function (ev) {\n var res = Stream.prototype.removeAllListeners.apply(this, arguments);\n if (ev === 'readable' || ev === undefined) {\n // We need to check if there is someone still listening to\n // readable and reset the state. However this needs to happen\n // after readable has been emitted but before I/O (nextTick) to\n // support once('readable', fn) cycles. This means that calling\n // resume within the same tick will have no\n // effect.\n process.nextTick(updateReadableListening, this);\n }\n return res;\n};\nfunction updateReadableListening(self) {\n var state = self._readableState;\n state.readableListening = self.listenerCount('readable') > 0;\n if (state.resumeScheduled && !state.paused) {\n // flowing needs to be set to true now, otherwise\n // the upcoming resume will not flow.\n state.flowing = true;\n\n // crude way to check if we should resume\n } else if (self.listenerCount('data') > 0) {\n self.resume();\n }\n}\nfunction nReadingNextTick(self) {\n debug('readable nexttick read 0');\n self.read(0);\n}\n\n// pause() and resume() are remnants of the legacy readable stream API\n// If the user uses them, then switch into old mode.\nReadable.prototype.resume = function () {\n var state = this._readableState;\n if (!state.flowing) {\n debug('resume');\n // we flow only if there is no one listening\n // for readable, but we still have to call\n // resume()\n state.flowing = !state.readableListening;\n resume(this, state);\n }\n state.paused = false;\n return this;\n};\nfunction resume(stream, state) {\n if (!state.resumeScheduled) {\n state.resumeScheduled = true;\n process.nextTick(resume_, stream, state);\n }\n}\nfunction resume_(stream, state) {\n debug('resume', state.reading);\n if (!state.reading) {\n stream.read(0);\n }\n state.resumeScheduled = false;\n stream.emit('resume');\n flow(stream);\n if (state.flowing && !state.reading) stream.read(0);\n}\nReadable.prototype.pause = function () {\n debug('call pause flowing=%j', this._readableState.flowing);\n if (this._readableState.flowing !== false) {\n debug('pause');\n this._readableState.flowing = false;\n this.emit('pause');\n }\n this._readableState.paused = true;\n return this;\n};\nfunction flow(stream) {\n var state = stream._readableState;\n debug('flow', state.flowing);\n while (state.flowing && stream.read() !== null);\n}\n\n// wrap an old-style stream as the async data source.\n// This is *not* part of the readable stream interface.\n// It is an ugly unfortunate mess of history.\nReadable.prototype.wrap = function (stream) {\n var _this = this;\n var state = this._readableState;\n var paused = false;\n stream.on('end', function () {\n debug('wrapped end');\n if (state.decoder && !state.ended) {\n var chunk = state.decoder.end();\n if (chunk && chunk.length) _this.push(chunk);\n }\n _this.push(null);\n });\n stream.on('data', function (chunk) {\n debug('wrapped data');\n if (state.decoder) chunk = state.decoder.write(chunk);\n\n // don't skip over falsy values in objectMode\n if (state.objectMode && (chunk === null || chunk === undefined)) return;else if (!state.objectMode && (!chunk || !chunk.length)) return;\n var ret = _this.push(chunk);\n if (!ret) {\n paused = true;\n stream.pause();\n }\n });\n\n // proxy all the other methods.\n // important when wrapping filters and duplexes.\n for (var i in stream) {\n if (this[i] === undefined && typeof stream[i] === 'function') {\n this[i] = function methodWrap(method) {\n return function methodWrapReturnFunction() {\n return stream[method].apply(stream, arguments);\n };\n }(i);\n }\n }\n\n // proxy certain important events.\n for (var n = 0; n < kProxyEvents.length; n++) {\n stream.on(kProxyEvents[n], this.emit.bind(this, kProxyEvents[n]));\n }\n\n // when we try to consume some more bytes, simply unpause the\n // underlying stream.\n this._read = function (n) {\n debug('wrapped _read', n);\n if (paused) {\n paused = false;\n stream.resume();\n }\n };\n return this;\n};\nif (typeof Symbol === 'function') {\n Readable.prototype[Symbol.asyncIterator] = function () {\n if (createReadableStreamAsyncIterator === undefined) {\n createReadableStreamAsyncIterator = __webpack_require__(/*! ./internal/streams/async_iterator */ \"./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/async_iterator.js\");\n }\n return createReadableStreamAsyncIterator(this);\n };\n}\nObject.defineProperty(Readable.prototype, 'readableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.highWaterMark;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState && this._readableState.buffer;\n }\n});\nObject.defineProperty(Readable.prototype, 'readableFlowing', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.flowing;\n },\n set: function set(state) {\n if (this._readableState) {\n this._readableState.flowing = state;\n }\n }\n});\n\n// exposed for testing purposes only.\nReadable._fromList = fromList;\nObject.defineProperty(Readable.prototype, 'readableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._readableState.length;\n }\n});\n\n// Pluck off n bytes from an array of buffers.\n// Length is the combined lengths of all the buffers in the list.\n// This function is designed to be inlinable, so please take care when making\n// changes to the function body.\nfunction fromList(n, state) {\n // nothing buffered\n if (state.length === 0) return null;\n var ret;\n if (state.objectMode) ret = state.buffer.shift();else if (!n || n >= state.length) {\n // read it all, truncate the list\n if (state.decoder) ret = state.buffer.join('');else if (state.buffer.length === 1) ret = state.buffer.first();else ret = state.buffer.concat(state.length);\n state.buffer.clear();\n } else {\n // read part of list\n ret = state.buffer.consume(n, state.decoder);\n }\n return ret;\n}\nfunction endReadable(stream) {\n var state = stream._readableState;\n debug('endReadable', state.endEmitted);\n if (!state.endEmitted) {\n state.ended = true;\n process.nextTick(endReadableNT, state, stream);\n }\n}\nfunction endReadableNT(state, stream) {\n debug('endReadableNT', state.endEmitted, state.length);\n\n // Check that we didn't get one last unshift.\n if (!state.endEmitted && state.length === 0) {\n state.endEmitted = true;\n stream.readable = false;\n stream.emit('end');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the writable side is ready for autoDestroy as well\n var wState = stream._writableState;\n if (!wState || wState.autoDestroy && wState.finished) {\n stream.destroy();\n }\n }\n }\n}\nif (typeof Symbol === 'function') {\n Readable.from = function (iterable, opts) {\n if (from === undefined) {\n from = __webpack_require__(/*! ./internal/streams/from */ \"./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/from-browser.js\");\n }\n return from(Readable, iterable, opts);\n };\n}\nfunction indexOf(xs, x) {\n for (var i = 0, l = xs.length; i < l; i++) {\n if (xs[i] === x) return i;\n }\n return -1;\n}\n\n//# sourceURL=webpack://beacon/./node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_readable.js?")},"./node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_transform.js":(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// a transform stream is a readable/writable stream where you do\n// something with the data. Sometimes it's called a \"filter\",\n// but that's not a great name for it, since that implies a thing where\n// some bits pass through, and others are simply ignored. (That would\n// be a valid example of a transform, of course.)\n//\n// While the output is causally related to the input, it's not a\n// necessarily symmetric or synchronous transformation. For example,\n// a zlib stream might take multiple plain-text writes(), and then\n// emit a single compressed chunk some time in the future.\n//\n// Here's how this works:\n//\n// The Transform stream has all the aspects of the readable and writable\n// stream classes. When you write(chunk), that calls _write(chunk,cb)\n// internally, and returns false if there's a lot of pending writes\n// buffered up. When you call read(), that calls _read(n) until\n// there's enough pending readable data buffered up.\n//\n// In a transform stream, the written data is placed in a buffer. When\n// _read(n) is called, it transforms the queued up data, calling the\n// buffered _write cb's as it consumes chunks. If consuming a single\n// written chunk would result in multiple output chunks, then the first\n// outputted bit calls the readcb, and subsequent chunks just go into\n// the read buffer, and will cause it to emit 'readable' if necessary.\n//\n// This way, back-pressure is actually determined by the reading side,\n// since _read has to be called to start processing a new chunk. However,\n// a pathological inflate type of transform can cause excessive buffering\n// here. For example, imagine a stream where every byte of input is\n// interpreted as an integer from 0-255, and then results in that many\n// bytes of output. Writing the 4 bytes {ff,ff,ff,ff} would result in\n// 1kb of data being output. In this case, you could write a very small\n// amount of input, and end up with a very large amount of output. In\n// such a pathological inflating mechanism, there'd be no way to tell\n// the system to stop doing the transform. A single 4MB write could\n// cause the system to run out of memory.\n//\n// However, even in such a pathological case, only a single written chunk\n// would be consumed, and then the rest would wait (un-transformed) until\n// the results of the previous transformed chunk were consumed.\n\n\n\nmodule.exports = Transform;\nvar _require$codes = (__webpack_require__(/*! ../errors */ \"./node_modules/stream-browserify/node_modules/readable-stream/errors-browser.js\").codes),\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_TRANSFORM_ALREADY_TRANSFORMING = _require$codes.ERR_TRANSFORM_ALREADY_TRANSFORMING,\n ERR_TRANSFORM_WITH_LENGTH_0 = _require$codes.ERR_TRANSFORM_WITH_LENGTH_0;\nvar Duplex = __webpack_require__(/*! ./_stream_duplex */ \"./node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_duplex.js\");\n__webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")(Transform, Duplex);\nfunction afterTransform(er, data) {\n var ts = this._transformState;\n ts.transforming = false;\n var cb = ts.writecb;\n if (cb === null) {\n return this.emit('error', new ERR_MULTIPLE_CALLBACK());\n }\n ts.writechunk = null;\n ts.writecb = null;\n if (data != null)\n // single equals check for both `null` and `undefined`\n this.push(data);\n cb(er);\n var rs = this._readableState;\n rs.reading = false;\n if (rs.needReadable || rs.length < rs.highWaterMark) {\n this._read(rs.highWaterMark);\n }\n}\nfunction Transform(options) {\n if (!(this instanceof Transform)) return new Transform(options);\n Duplex.call(this, options);\n this._transformState = {\n afterTransform: afterTransform.bind(this),\n needTransform: false,\n transforming: false,\n writecb: null,\n writechunk: null,\n writeencoding: null\n };\n\n // start out asking for a readable event once data is transformed.\n this._readableState.needReadable = true;\n\n // we have implemented the _read method, and done the other things\n // that Readable wants before the first _read call, so unset the\n // sync guard flag.\n this._readableState.sync = false;\n if (options) {\n if (typeof options.transform === 'function') this._transform = options.transform;\n if (typeof options.flush === 'function') this._flush = options.flush;\n }\n\n // When the writable side finishes, then flush out anything remaining.\n this.on('prefinish', prefinish);\n}\nfunction prefinish() {\n var _this = this;\n if (typeof this._flush === 'function' && !this._readableState.destroyed) {\n this._flush(function (er, data) {\n done(_this, er, data);\n });\n } else {\n done(this, null, null);\n }\n}\nTransform.prototype.push = function (chunk, encoding) {\n this._transformState.needTransform = false;\n return Duplex.prototype.push.call(this, chunk, encoding);\n};\n\n// This is the part where you do stuff!\n// override this function in implementation classes.\n// 'chunk' is an input chunk.\n//\n// Call `push(newChunk)` to pass along transformed output\n// to the readable side. You may call 'push' zero or more times.\n//\n// Call `cb(err)` when you are done with this chunk. If you pass\n// an error, then that'll put the hurt on the whole operation. If you\n// never call cb(), then you'll never get another chunk.\nTransform.prototype._transform = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_transform()'));\n};\nTransform.prototype._write = function (chunk, encoding, cb) {\n var ts = this._transformState;\n ts.writecb = cb;\n ts.writechunk = chunk;\n ts.writeencoding = encoding;\n if (!ts.transforming) {\n var rs = this._readableState;\n if (ts.needTransform || rs.needReadable || rs.length < rs.highWaterMark) this._read(rs.highWaterMark);\n }\n};\n\n// Doesn't matter what the args are here.\n// _transform does all the work.\n// That we got here means that the readable side wants more data.\nTransform.prototype._read = function (n) {\n var ts = this._transformState;\n if (ts.writechunk !== null && !ts.transforming) {\n ts.transforming = true;\n this._transform(ts.writechunk, ts.writeencoding, ts.afterTransform);\n } else {\n // mark that we need a transform, so that any data that comes in\n // will get processed, now that we've asked for it.\n ts.needTransform = true;\n }\n};\nTransform.prototype._destroy = function (err, cb) {\n Duplex.prototype._destroy.call(this, err, function (err2) {\n cb(err2);\n });\n};\nfunction done(stream, er, data) {\n if (er) return stream.emit('error', er);\n if (data != null)\n // single equals check for both `null` and `undefined`\n stream.push(data);\n\n // TODO(BridgeAR): Write a test for these two error cases\n // if there's nothing in the write buffer, then that means\n // that nothing more will ever be provided\n if (stream._writableState.length) throw new ERR_TRANSFORM_WITH_LENGTH_0();\n if (stream._transformState.transforming) throw new ERR_TRANSFORM_ALREADY_TRANSFORMING();\n return stream.push(null);\n}\n\n//# sourceURL=webpack://beacon/./node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_transform.js?")},"./node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_writable.js":(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n// A bit simpler than readable streams.\n// Implement an async ._write(chunk, encoding, cb), and it'll handle all\n// the drain event emission and buffering.\n\n\n\nmodule.exports = Writable;\n\n/* */\nfunction WriteReq(chunk, encoding, cb) {\n this.chunk = chunk;\n this.encoding = encoding;\n this.callback = cb;\n this.next = null;\n}\n\n// It seems a linked list but it is not\n// there will be only 2 of these for each stream\nfunction CorkedRequest(state) {\n var _this = this;\n this.next = null;\n this.entry = null;\n this.finish = function () {\n onCorkedFinish(_this, state);\n };\n}\n/* */\n\n/**/\nvar Duplex;\n/**/\n\nWritable.WritableState = WritableState;\n\n/**/\nvar internalUtil = {\n deprecate: __webpack_require__(/*! util-deprecate */ \"./node_modules/util-deprecate/browser.js\")\n};\n/**/\n\n/**/\nvar Stream = __webpack_require__(/*! ./internal/streams/stream */ \"./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/stream-browser.js\");\n/**/\n\nvar Buffer = (__webpack_require__(/*! buffer */ \"./node_modules/buffer/index.js\").Buffer);\nvar OurUint8Array = (typeof __webpack_require__.g !== 'undefined' ? __webpack_require__.g : typeof window !== 'undefined' ? window : typeof self !== 'undefined' ? self : {}).Uint8Array || function () {};\nfunction _uint8ArrayToBuffer(chunk) {\n return Buffer.from(chunk);\n}\nfunction _isUint8Array(obj) {\n return Buffer.isBuffer(obj) || obj instanceof OurUint8Array;\n}\nvar destroyImpl = __webpack_require__(/*! ./internal/streams/destroy */ \"./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/destroy.js\");\nvar _require = __webpack_require__(/*! ./internal/streams/state */ \"./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/state.js\"),\n getHighWaterMark = _require.getHighWaterMark;\nvar _require$codes = (__webpack_require__(/*! ../errors */ \"./node_modules/stream-browserify/node_modules/readable-stream/errors-browser.js\").codes),\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_METHOD_NOT_IMPLEMENTED = _require$codes.ERR_METHOD_NOT_IMPLEMENTED,\n ERR_MULTIPLE_CALLBACK = _require$codes.ERR_MULTIPLE_CALLBACK,\n ERR_STREAM_CANNOT_PIPE = _require$codes.ERR_STREAM_CANNOT_PIPE,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED,\n ERR_STREAM_NULL_VALUES = _require$codes.ERR_STREAM_NULL_VALUES,\n ERR_STREAM_WRITE_AFTER_END = _require$codes.ERR_STREAM_WRITE_AFTER_END,\n ERR_UNKNOWN_ENCODING = _require$codes.ERR_UNKNOWN_ENCODING;\nvar errorOrDestroy = destroyImpl.errorOrDestroy;\n__webpack_require__(/*! inherits */ \"./node_modules/inherits/inherits_browser.js\")(Writable, Stream);\nfunction nop() {}\nfunction WritableState(options, stream, isDuplex) {\n Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ \"./node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_duplex.js\");\n options = options || {};\n\n // Duplex streams are both readable and writable, but share\n // the same options object.\n // However, some cases require setting options to different\n // values for the readable and the writable sides of the duplex stream,\n // e.g. options.readableObjectMode vs. options.writableObjectMode, etc.\n if (typeof isDuplex !== 'boolean') isDuplex = stream instanceof Duplex;\n\n // object stream flag to indicate whether or not this stream\n // contains buffers or objects.\n this.objectMode = !!options.objectMode;\n if (isDuplex) this.objectMode = this.objectMode || !!options.writableObjectMode;\n\n // the point at which write() starts returning false\n // Note: 0 is a valid value, means that we always return false if\n // the entire buffer is not flushed immediately on write()\n this.highWaterMark = getHighWaterMark(this, options, 'writableHighWaterMark', isDuplex);\n\n // if _final has been called\n this.finalCalled = false;\n\n // drain event flag.\n this.needDrain = false;\n // at the start of calling end()\n this.ending = false;\n // when end() has been called, and returned\n this.ended = false;\n // when 'finish' is emitted\n this.finished = false;\n\n // has it been destroyed\n this.destroyed = false;\n\n // should we decode strings into buffers before passing to _write?\n // this is here so that some node-core streams can optimize string\n // handling at a lower level.\n var noDecode = options.decodeStrings === false;\n this.decodeStrings = !noDecode;\n\n // Crypto is kind of old and crusty. Historically, its default string\n // encoding is 'binary' so we have to make this configurable.\n // Everything else in the universe uses 'utf8', though.\n this.defaultEncoding = options.defaultEncoding || 'utf8';\n\n // not an actual buffer we keep track of, but a measurement\n // of how much we're waiting to get pushed to some underlying\n // socket or file.\n this.length = 0;\n\n // a flag to see when we're in the middle of a write.\n this.writing = false;\n\n // when true all writes will be buffered until .uncork() call\n this.corked = 0;\n\n // a flag to be able to tell if the onwrite cb is called immediately,\n // or on a later tick. We set this to true at first, because any\n // actions that shouldn't happen until \"later\" should generally also\n // not happen before the first write call.\n this.sync = true;\n\n // a flag to know if we're processing previously buffered items, which\n // may call the _write() callback in the same tick, so that we don't\n // end up in an overlapped onwrite situation.\n this.bufferProcessing = false;\n\n // the callback that's passed to _write(chunk,cb)\n this.onwrite = function (er) {\n onwrite(stream, er);\n };\n\n // the callback that the user supplies to write(chunk,encoding,cb)\n this.writecb = null;\n\n // the amount that is being written when _write is called.\n this.writelen = 0;\n this.bufferedRequest = null;\n this.lastBufferedRequest = null;\n\n // number of pending user-supplied write callbacks\n // this must be 0 before 'finish' can be emitted\n this.pendingcb = 0;\n\n // emit prefinish if the only thing we're waiting for is _write cbs\n // This is relevant for synchronous Transform streams\n this.prefinished = false;\n\n // True if the error was already emitted and should not be thrown again\n this.errorEmitted = false;\n\n // Should close be emitted on destroy. Defaults to true.\n this.emitClose = options.emitClose !== false;\n\n // Should .destroy() be called after 'finish' (and potentially 'end')\n this.autoDestroy = !!options.autoDestroy;\n\n // count buffered requests\n this.bufferedRequestCount = 0;\n\n // allocate the first CorkedRequest, there is always\n // one allocated and free to use, and we maintain at most two\n this.corkedRequestsFree = new CorkedRequest(this);\n}\nWritableState.prototype.getBuffer = function getBuffer() {\n var current = this.bufferedRequest;\n var out = [];\n while (current) {\n out.push(current);\n current = current.next;\n }\n return out;\n};\n(function () {\n try {\n Object.defineProperty(WritableState.prototype, 'buffer', {\n get: internalUtil.deprecate(function writableStateBufferGetter() {\n return this.getBuffer();\n }, '_writableState.buffer is deprecated. Use _writableState.getBuffer ' + 'instead.', 'DEP0003')\n });\n } catch (_) {}\n})();\n\n// Test _writableState for inheritance to account for Duplex streams,\n// whose prototype chain only points to Readable.\nvar realHasInstance;\nif (typeof Symbol === 'function' && Symbol.hasInstance && typeof Function.prototype[Symbol.hasInstance] === 'function') {\n realHasInstance = Function.prototype[Symbol.hasInstance];\n Object.defineProperty(Writable, Symbol.hasInstance, {\n value: function value(object) {\n if (realHasInstance.call(this, object)) return true;\n if (this !== Writable) return false;\n return object && object._writableState instanceof WritableState;\n }\n });\n} else {\n realHasInstance = function realHasInstance(object) {\n return object instanceof this;\n };\n}\nfunction Writable(options) {\n Duplex = Duplex || __webpack_require__(/*! ./_stream_duplex */ \"./node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_duplex.js\");\n\n // Writable ctor is applied to Duplexes, too.\n // `realHasInstance` is necessary because using plain `instanceof`\n // would return false, as no `_writableState` property is attached.\n\n // Trying to use the custom `instanceof` for Writable here will also break the\n // Node.js LazyTransform implementation, which has a non-trivial getter for\n // `_writableState` that would lead to infinite recursion.\n\n // Checking for a Stream.Duplex instance is faster here instead of inside\n // the WritableState constructor, at least with V8 6.5\n var isDuplex = this instanceof Duplex;\n if (!isDuplex && !realHasInstance.call(Writable, this)) return new Writable(options);\n this._writableState = new WritableState(options, this, isDuplex);\n\n // legacy.\n this.writable = true;\n if (options) {\n if (typeof options.write === 'function') this._write = options.write;\n if (typeof options.writev === 'function') this._writev = options.writev;\n if (typeof options.destroy === 'function') this._destroy = options.destroy;\n if (typeof options.final === 'function') this._final = options.final;\n }\n Stream.call(this);\n}\n\n// Otherwise people can pipe Writable streams, which is just wrong.\nWritable.prototype.pipe = function () {\n errorOrDestroy(this, new ERR_STREAM_CANNOT_PIPE());\n};\nfunction writeAfterEnd(stream, cb) {\n var er = new ERR_STREAM_WRITE_AFTER_END();\n // TODO: defer error events consistently everywhere, not just the cb\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n}\n\n// Checks that a user-supplied chunk is valid, especially for the particular\n// mode the stream is in. Currently this means that `null` is never accepted\n// and undefined/non-string values are only allowed in object mode.\nfunction validChunk(stream, state, chunk, cb) {\n var er;\n if (chunk === null) {\n er = new ERR_STREAM_NULL_VALUES();\n } else if (typeof chunk !== 'string' && !state.objectMode) {\n er = new ERR_INVALID_ARG_TYPE('chunk', ['string', 'Buffer'], chunk);\n }\n if (er) {\n errorOrDestroy(stream, er);\n process.nextTick(cb, er);\n return false;\n }\n return true;\n}\nWritable.prototype.write = function (chunk, encoding, cb) {\n var state = this._writableState;\n var ret = false;\n var isBuf = !state.objectMode && _isUint8Array(chunk);\n if (isBuf && !Buffer.isBuffer(chunk)) {\n chunk = _uint8ArrayToBuffer(chunk);\n }\n if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (isBuf) encoding = 'buffer';else if (!encoding) encoding = state.defaultEncoding;\n if (typeof cb !== 'function') cb = nop;\n if (state.ending) writeAfterEnd(this, cb);else if (isBuf || validChunk(this, state, chunk, cb)) {\n state.pendingcb++;\n ret = writeOrBuffer(this, state, isBuf, chunk, encoding, cb);\n }\n return ret;\n};\nWritable.prototype.cork = function () {\n this._writableState.corked++;\n};\nWritable.prototype.uncork = function () {\n var state = this._writableState;\n if (state.corked) {\n state.corked--;\n if (!state.writing && !state.corked && !state.bufferProcessing && state.bufferedRequest) clearBuffer(this, state);\n }\n};\nWritable.prototype.setDefaultEncoding = function setDefaultEncoding(encoding) {\n // node::ParseEncoding() requires lower case.\n if (typeof encoding === 'string') encoding = encoding.toLowerCase();\n if (!(['hex', 'utf8', 'utf-8', 'ascii', 'binary', 'base64', 'ucs2', 'ucs-2', 'utf16le', 'utf-16le', 'raw'].indexOf((encoding + '').toLowerCase()) > -1)) throw new ERR_UNKNOWN_ENCODING(encoding);\n this._writableState.defaultEncoding = encoding;\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableBuffer', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState && this._writableState.getBuffer();\n }\n});\nfunction decodeChunk(state, chunk, encoding) {\n if (!state.objectMode && state.decodeStrings !== false && typeof chunk === 'string') {\n chunk = Buffer.from(chunk, encoding);\n }\n return chunk;\n}\nObject.defineProperty(Writable.prototype, 'writableHighWaterMark', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.highWaterMark;\n }\n});\n\n// if we're already writing something, then just put this\n// in the queue, and wait our turn. Otherwise, call _write\n// If we return false, then we need a drain event, so set that flag.\nfunction writeOrBuffer(stream, state, isBuf, chunk, encoding, cb) {\n if (!isBuf) {\n var newChunk = decodeChunk(state, chunk, encoding);\n if (chunk !== newChunk) {\n isBuf = true;\n encoding = 'buffer';\n chunk = newChunk;\n }\n }\n var len = state.objectMode ? 1 : chunk.length;\n state.length += len;\n var ret = state.length < state.highWaterMark;\n // we must ensure that previous needDrain will not be reset to false.\n if (!ret) state.needDrain = true;\n if (state.writing || state.corked) {\n var last = state.lastBufferedRequest;\n state.lastBufferedRequest = {\n chunk: chunk,\n encoding: encoding,\n isBuf: isBuf,\n callback: cb,\n next: null\n };\n if (last) {\n last.next = state.lastBufferedRequest;\n } else {\n state.bufferedRequest = state.lastBufferedRequest;\n }\n state.bufferedRequestCount += 1;\n } else {\n doWrite(stream, state, false, len, chunk, encoding, cb);\n }\n return ret;\n}\nfunction doWrite(stream, state, writev, len, chunk, encoding, cb) {\n state.writelen = len;\n state.writecb = cb;\n state.writing = true;\n state.sync = true;\n if (state.destroyed) state.onwrite(new ERR_STREAM_DESTROYED('write'));else if (writev) stream._writev(chunk, state.onwrite);else stream._write(chunk, encoding, state.onwrite);\n state.sync = false;\n}\nfunction onwriteError(stream, state, sync, er, cb) {\n --state.pendingcb;\n if (sync) {\n // defer the callback if we are being called synchronously\n // to avoid piling up things on the stack\n process.nextTick(cb, er);\n // this can emit finish, and it will always happen\n // after error\n process.nextTick(finishMaybe, stream, state);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n } else {\n // the caller expect this to happen before if\n // it is async\n cb(er);\n stream._writableState.errorEmitted = true;\n errorOrDestroy(stream, er);\n // this can emit finish, but finish must\n // always follow error\n finishMaybe(stream, state);\n }\n}\nfunction onwriteStateUpdate(state) {\n state.writing = false;\n state.writecb = null;\n state.length -= state.writelen;\n state.writelen = 0;\n}\nfunction onwrite(stream, er) {\n var state = stream._writableState;\n var sync = state.sync;\n var cb = state.writecb;\n if (typeof cb !== 'function') throw new ERR_MULTIPLE_CALLBACK();\n onwriteStateUpdate(state);\n if (er) onwriteError(stream, state, sync, er, cb);else {\n // Check if we're actually ready to finish, but don't emit yet\n var finished = needFinish(state) || stream.destroyed;\n if (!finished && !state.corked && !state.bufferProcessing && state.bufferedRequest) {\n clearBuffer(stream, state);\n }\n if (sync) {\n process.nextTick(afterWrite, stream, state, finished, cb);\n } else {\n afterWrite(stream, state, finished, cb);\n }\n }\n}\nfunction afterWrite(stream, state, finished, cb) {\n if (!finished) onwriteDrain(stream, state);\n state.pendingcb--;\n cb();\n finishMaybe(stream, state);\n}\n\n// Must force callback to be called on nextTick, so that we don't\n// emit 'drain' before the write() consumer gets the 'false' return\n// value, and has a chance to attach a 'drain' listener.\nfunction onwriteDrain(stream, state) {\n if (state.length === 0 && state.needDrain) {\n state.needDrain = false;\n stream.emit('drain');\n }\n}\n\n// if there's something in the buffer waiting, then process it\nfunction clearBuffer(stream, state) {\n state.bufferProcessing = true;\n var entry = state.bufferedRequest;\n if (stream._writev && entry && entry.next) {\n // Fast case, write everything using _writev()\n var l = state.bufferedRequestCount;\n var buffer = new Array(l);\n var holder = state.corkedRequestsFree;\n holder.entry = entry;\n var count = 0;\n var allBuffers = true;\n while (entry) {\n buffer[count] = entry;\n if (!entry.isBuf) allBuffers = false;\n entry = entry.next;\n count += 1;\n }\n buffer.allBuffers = allBuffers;\n doWrite(stream, state, true, state.length, buffer, '', holder.finish);\n\n // doWrite is almost always async, defer these to save a bit of time\n // as the hot path ends with doWrite\n state.pendingcb++;\n state.lastBufferedRequest = null;\n if (holder.next) {\n state.corkedRequestsFree = holder.next;\n holder.next = null;\n } else {\n state.corkedRequestsFree = new CorkedRequest(state);\n }\n state.bufferedRequestCount = 0;\n } else {\n // Slow case, write chunks one-by-one\n while (entry) {\n var chunk = entry.chunk;\n var encoding = entry.encoding;\n var cb = entry.callback;\n var len = state.objectMode ? 1 : chunk.length;\n doWrite(stream, state, false, len, chunk, encoding, cb);\n entry = entry.next;\n state.bufferedRequestCount--;\n // if we didn't call the onwrite immediately, then\n // it means that we need to wait until it does.\n // also, that means that the chunk and cb are currently\n // being processed, so move the buffer counter past them.\n if (state.writing) {\n break;\n }\n }\n if (entry === null) state.lastBufferedRequest = null;\n }\n state.bufferedRequest = entry;\n state.bufferProcessing = false;\n}\nWritable.prototype._write = function (chunk, encoding, cb) {\n cb(new ERR_METHOD_NOT_IMPLEMENTED('_write()'));\n};\nWritable.prototype._writev = null;\nWritable.prototype.end = function (chunk, encoding, cb) {\n var state = this._writableState;\n if (typeof chunk === 'function') {\n cb = chunk;\n chunk = null;\n encoding = null;\n } else if (typeof encoding === 'function') {\n cb = encoding;\n encoding = null;\n }\n if (chunk !== null && chunk !== undefined) this.write(chunk, encoding);\n\n // .end() fully uncorks\n if (state.corked) {\n state.corked = 1;\n this.uncork();\n }\n\n // ignore unnecessary end() calls.\n if (!state.ending) endWritable(this, state, cb);\n return this;\n};\nObject.defineProperty(Writable.prototype, 'writableLength', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n return this._writableState.length;\n }\n});\nfunction needFinish(state) {\n return state.ending && state.length === 0 && state.bufferedRequest === null && !state.finished && !state.writing;\n}\nfunction callFinal(stream, state) {\n stream._final(function (err) {\n state.pendingcb--;\n if (err) {\n errorOrDestroy(stream, err);\n }\n state.prefinished = true;\n stream.emit('prefinish');\n finishMaybe(stream, state);\n });\n}\nfunction prefinish(stream, state) {\n if (!state.prefinished && !state.finalCalled) {\n if (typeof stream._final === 'function' && !state.destroyed) {\n state.pendingcb++;\n state.finalCalled = true;\n process.nextTick(callFinal, stream, state);\n } else {\n state.prefinished = true;\n stream.emit('prefinish');\n }\n }\n}\nfunction finishMaybe(stream, state) {\n var need = needFinish(state);\n if (need) {\n prefinish(stream, state);\n if (state.pendingcb === 0) {\n state.finished = true;\n stream.emit('finish');\n if (state.autoDestroy) {\n // In case of duplex streams we need a way to detect\n // if the readable side is ready for autoDestroy as well\n var rState = stream._readableState;\n if (!rState || rState.autoDestroy && rState.endEmitted) {\n stream.destroy();\n }\n }\n }\n }\n return need;\n}\nfunction endWritable(stream, state, cb) {\n state.ending = true;\n finishMaybe(stream, state);\n if (cb) {\n if (state.finished) process.nextTick(cb);else stream.once('finish', cb);\n }\n state.ended = true;\n stream.writable = false;\n}\nfunction onCorkedFinish(corkReq, state, err) {\n var entry = corkReq.entry;\n corkReq.entry = null;\n while (entry) {\n var cb = entry.callback;\n state.pendingcb--;\n cb(err);\n entry = entry.next;\n }\n\n // reuse the free corkReq.\n state.corkedRequestsFree.next = corkReq;\n}\nObject.defineProperty(Writable.prototype, 'destroyed', {\n // making it explicit this property is not enumerable\n // because otherwise some prototype manipulation in\n // userland will fail\n enumerable: false,\n get: function get() {\n if (this._writableState === undefined) {\n return false;\n }\n return this._writableState.destroyed;\n },\n set: function set(value) {\n // we ignore the value if the stream\n // has not been initialized yet\n if (!this._writableState) {\n return;\n }\n\n // backward compatibility, the user is explicitly\n // managing destroyed\n this._writableState.destroyed = value;\n }\n});\nWritable.prototype.destroy = destroyImpl.destroy;\nWritable.prototype._undestroy = destroyImpl.undestroy;\nWritable.prototype._destroy = function (err, cb) {\n cb(err);\n};\n\n//# sourceURL=webpack://beacon/./node_modules/stream-browserify/node_modules/readable-stream/lib/_stream_writable.js?")},"./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/async_iterator.js":(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar _Object$setPrototypeO;\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\nvar finished = __webpack_require__(/*! ./end-of-stream */ \"./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/end-of-stream.js\");\nvar kLastResolve = Symbol('lastResolve');\nvar kLastReject = Symbol('lastReject');\nvar kError = Symbol('error');\nvar kEnded = Symbol('ended');\nvar kLastPromise = Symbol('lastPromise');\nvar kHandlePromise = Symbol('handlePromise');\nvar kStream = Symbol('stream');\nfunction createIterResult(value, done) {\n return {\n value: value,\n done: done\n };\n}\nfunction readAndResolve(iter) {\n var resolve = iter[kLastResolve];\n if (resolve !== null) {\n var data = iter[kStream].read();\n // we defer if data is null\n // we can be expecting either 'end' or\n // 'error'\n if (data !== null) {\n iter[kLastPromise] = null;\n iter[kLastResolve] = null;\n iter[kLastReject] = null;\n resolve(createIterResult(data, false));\n }\n }\n}\nfunction onReadable(iter) {\n // we wait for the next tick, because it might\n // emit an error with process.nextTick\n process.nextTick(readAndResolve, iter);\n}\nfunction wrapForNext(lastPromise, iter) {\n return function (resolve, reject) {\n lastPromise.then(function () {\n if (iter[kEnded]) {\n resolve(createIterResult(undefined, true));\n return;\n }\n iter[kHandlePromise](resolve, reject);\n }, reject);\n };\n}\nvar AsyncIteratorPrototype = Object.getPrototypeOf(function () {});\nvar ReadableStreamAsyncIteratorPrototype = Object.setPrototypeOf((_Object$setPrototypeO = {\n get stream() {\n return this[kStream];\n },\n next: function next() {\n var _this = this;\n // if we have detected an error in the meanwhile\n // reject straight away\n var error = this[kError];\n if (error !== null) {\n return Promise.reject(error);\n }\n if (this[kEnded]) {\n return Promise.resolve(createIterResult(undefined, true));\n }\n if (this[kStream].destroyed) {\n // We need to defer via nextTick because if .destroy(err) is\n // called, the error will be emitted via nextTick, and\n // we cannot guarantee that there is no error lingering around\n // waiting to be emitted.\n return new Promise(function (resolve, reject) {\n process.nextTick(function () {\n if (_this[kError]) {\n reject(_this[kError]);\n } else {\n resolve(createIterResult(undefined, true));\n }\n });\n });\n }\n\n // if we have multiple next() calls\n // we will wait for the previous Promise to finish\n // this logic is optimized to support for await loops,\n // where next() is only called once at a time\n var lastPromise = this[kLastPromise];\n var promise;\n if (lastPromise) {\n promise = new Promise(wrapForNext(lastPromise, this));\n } else {\n // fast path needed to support multiple this.push()\n // without triggering the next() queue\n var data = this[kStream].read();\n if (data !== null) {\n return Promise.resolve(createIterResult(data, false));\n }\n promise = new Promise(this[kHandlePromise]);\n }\n this[kLastPromise] = promise;\n return promise;\n }\n}, _defineProperty(_Object$setPrototypeO, Symbol.asyncIterator, function () {\n return this;\n}), _defineProperty(_Object$setPrototypeO, \"return\", function _return() {\n var _this2 = this;\n // destroy(err, cb) is a private API\n // we can guarantee we have that here, because we control the\n // Readable class this is attached to\n return new Promise(function (resolve, reject) {\n _this2[kStream].destroy(null, function (err) {\n if (err) {\n reject(err);\n return;\n }\n resolve(createIterResult(undefined, true));\n });\n });\n}), _Object$setPrototypeO), AsyncIteratorPrototype);\nvar createReadableStreamAsyncIterator = function createReadableStreamAsyncIterator(stream) {\n var _Object$create;\n var iterator = Object.create(ReadableStreamAsyncIteratorPrototype, (_Object$create = {}, _defineProperty(_Object$create, kStream, {\n value: stream,\n writable: true\n }), _defineProperty(_Object$create, kLastResolve, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kLastReject, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kError, {\n value: null,\n writable: true\n }), _defineProperty(_Object$create, kEnded, {\n value: stream._readableState.endEmitted,\n writable: true\n }), _defineProperty(_Object$create, kHandlePromise, {\n value: function value(resolve, reject) {\n var data = iterator[kStream].read();\n if (data) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(data, false));\n } else {\n iterator[kLastResolve] = resolve;\n iterator[kLastReject] = reject;\n }\n },\n writable: true\n }), _Object$create));\n iterator[kLastPromise] = null;\n finished(stream, function (err) {\n if (err && err.code !== 'ERR_STREAM_PREMATURE_CLOSE') {\n var reject = iterator[kLastReject];\n // reject if we are waiting for data in the Promise\n // returned by next() and store the error\n if (reject !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n reject(err);\n }\n iterator[kError] = err;\n return;\n }\n var resolve = iterator[kLastResolve];\n if (resolve !== null) {\n iterator[kLastPromise] = null;\n iterator[kLastResolve] = null;\n iterator[kLastReject] = null;\n resolve(createIterResult(undefined, true));\n }\n iterator[kEnded] = true;\n });\n stream.on('readable', onReadable.bind(null, iterator));\n return iterator;\n};\nmodule.exports = createReadableStreamAsyncIterator;\n\n//# sourceURL=webpack://beacon/./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/async_iterator.js?")},"./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/buffer_list.js":(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval('\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }\nfunction _defineProperty(obj, key, value) { key = _toPropertyKey(key); if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return typeof key === "symbol" ? key : String(key); }\nfunction _toPrimitive(input, hint) { if (typeof input !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (typeof res !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }\nvar _require = __webpack_require__(/*! buffer */ "./node_modules/buffer/index.js"),\n Buffer = _require.Buffer;\nvar _require2 = __webpack_require__(/*! util */ "?3e83"),\n inspect = _require2.inspect;\nvar custom = inspect && inspect.custom || \'inspect\';\nfunction copyBuffer(src, target, offset) {\n Buffer.prototype.copy.call(src, target, offset);\n}\nmodule.exports = /*#__PURE__*/function () {\n function BufferList() {\n _classCallCheck(this, BufferList);\n this.head = null;\n this.tail = null;\n this.length = 0;\n }\n _createClass(BufferList, [{\n key: "push",\n value: function push(v) {\n var entry = {\n data: v,\n next: null\n };\n if (this.length > 0) this.tail.next = entry;else this.head = entry;\n this.tail = entry;\n ++this.length;\n }\n }, {\n key: "unshift",\n value: function unshift(v) {\n var entry = {\n data: v,\n next: this.head\n };\n if (this.length === 0) this.tail = entry;\n this.head = entry;\n ++this.length;\n }\n }, {\n key: "shift",\n value: function shift() {\n if (this.length === 0) return;\n var ret = this.head.data;\n if (this.length === 1) this.head = this.tail = null;else this.head = this.head.next;\n --this.length;\n return ret;\n }\n }, {\n key: "clear",\n value: function clear() {\n this.head = this.tail = null;\n this.length = 0;\n }\n }, {\n key: "join",\n value: function join(s) {\n if (this.length === 0) return \'\';\n var p = this.head;\n var ret = \'\' + p.data;\n while (p = p.next) ret += s + p.data;\n return ret;\n }\n }, {\n key: "concat",\n value: function concat(n) {\n if (this.length === 0) return Buffer.alloc(0);\n var ret = Buffer.allocUnsafe(n >>> 0);\n var p = this.head;\n var i = 0;\n while (p) {\n copyBuffer(p.data, ret, i);\n i += p.data.length;\n p = p.next;\n }\n return ret;\n }\n\n // Consumes a specified amount of bytes or characters from the buffered data.\n }, {\n key: "consume",\n value: function consume(n, hasStrings) {\n var ret;\n if (n < this.head.data.length) {\n // `slice` is the same for buffers and strings.\n ret = this.head.data.slice(0, n);\n this.head.data = this.head.data.slice(n);\n } else if (n === this.head.data.length) {\n // First chunk is a perfect match.\n ret = this.shift();\n } else {\n // Result spans more than one buffer.\n ret = hasStrings ? this._getString(n) : this._getBuffer(n);\n }\n return ret;\n }\n }, {\n key: "first",\n value: function first() {\n return this.head.data;\n }\n\n // Consumes a specified amount of characters from the buffered data.\n }, {\n key: "_getString",\n value: function _getString(n) {\n var p = this.head;\n var c = 1;\n var ret = p.data;\n n -= ret.length;\n while (p = p.next) {\n var str = p.data;\n var nb = n > str.length ? str.length : n;\n if (nb === str.length) ret += str;else ret += str.slice(0, n);\n n -= nb;\n if (n === 0) {\n if (nb === str.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = str.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Consumes a specified amount of bytes from the buffered data.\n }, {\n key: "_getBuffer",\n value: function _getBuffer(n) {\n var ret = Buffer.allocUnsafe(n);\n var p = this.head;\n var c = 1;\n p.data.copy(ret);\n n -= p.data.length;\n while (p = p.next) {\n var buf = p.data;\n var nb = n > buf.length ? buf.length : n;\n buf.copy(ret, ret.length - n, 0, nb);\n n -= nb;\n if (n === 0) {\n if (nb === buf.length) {\n ++c;\n if (p.next) this.head = p.next;else this.head = this.tail = null;\n } else {\n this.head = p;\n p.data = buf.slice(nb);\n }\n break;\n }\n ++c;\n }\n this.length -= c;\n return ret;\n }\n\n // Make sure the linked list only shows the minimal necessary information.\n }, {\n key: custom,\n value: function value(_, options) {\n return inspect(this, _objectSpread(_objectSpread({}, options), {}, {\n // Only inspect one level.\n depth: 0,\n // It should not recurse.\n customInspect: false\n }));\n }\n }]);\n return BufferList;\n}();\n\n//# sourceURL=webpack://beacon/./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/buffer_list.js?')},"./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/destroy.js":module=>{"use strict";eval("\n\n// undocumented cb() API, needed for core, not for public API\nfunction destroy(err, cb) {\n var _this = this;\n var readableDestroyed = this._readableState && this._readableState.destroyed;\n var writableDestroyed = this._writableState && this._writableState.destroyed;\n if (readableDestroyed || writableDestroyed) {\n if (cb) {\n cb(err);\n } else if (err) {\n if (!this._writableState) {\n process.nextTick(emitErrorNT, this, err);\n } else if (!this._writableState.errorEmitted) {\n this._writableState.errorEmitted = true;\n process.nextTick(emitErrorNT, this, err);\n }\n }\n return this;\n }\n\n // we set destroyed to true before firing error callbacks in order\n // to make it re-entrance safe in case destroy() is called within callbacks\n\n if (this._readableState) {\n this._readableState.destroyed = true;\n }\n\n // if this is a duplex stream mark the writable part as destroyed as well\n if (this._writableState) {\n this._writableState.destroyed = true;\n }\n this._destroy(err || null, function (err) {\n if (!cb && err) {\n if (!_this._writableState) {\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else if (!_this._writableState.errorEmitted) {\n _this._writableState.errorEmitted = true;\n process.nextTick(emitErrorAndCloseNT, _this, err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n } else if (cb) {\n process.nextTick(emitCloseNT, _this);\n cb(err);\n } else {\n process.nextTick(emitCloseNT, _this);\n }\n });\n return this;\n}\nfunction emitErrorAndCloseNT(self, err) {\n emitErrorNT(self, err);\n emitCloseNT(self);\n}\nfunction emitCloseNT(self) {\n if (self._writableState && !self._writableState.emitClose) return;\n if (self._readableState && !self._readableState.emitClose) return;\n self.emit('close');\n}\nfunction undestroy() {\n if (this._readableState) {\n this._readableState.destroyed = false;\n this._readableState.reading = false;\n this._readableState.ended = false;\n this._readableState.endEmitted = false;\n }\n if (this._writableState) {\n this._writableState.destroyed = false;\n this._writableState.ended = false;\n this._writableState.ending = false;\n this._writableState.finalCalled = false;\n this._writableState.prefinished = false;\n this._writableState.finished = false;\n this._writableState.errorEmitted = false;\n }\n}\nfunction emitErrorNT(self, err) {\n self.emit('error', err);\n}\nfunction errorOrDestroy(stream, err) {\n // We have tests that rely on errors being emitted\n // in the same tick, so changing this is semver major.\n // For now when you opt-in to autoDestroy we allow\n // the error to be emitted nextTick. In a future\n // semver major update we should change the default to this.\n\n var rState = stream._readableState;\n var wState = stream._writableState;\n if (rState && rState.autoDestroy || wState && wState.autoDestroy) stream.destroy(err);else stream.emit('error', err);\n}\nmodule.exports = {\n destroy: destroy,\n undestroy: undestroy,\n errorOrDestroy: errorOrDestroy\n};\n\n//# sourceURL=webpack://beacon/./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/destroy.js?")},"./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/end-of-stream.js":(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("// Ported from https://github.com/mafintosh/end-of-stream with\n// permission from the author, Mathias Buus (@mafintosh).\n\n\n\nvar ERR_STREAM_PREMATURE_CLOSE = (__webpack_require__(/*! ../../../errors */ \"./node_modules/stream-browserify/node_modules/readable-stream/errors-browser.js\").codes).ERR_STREAM_PREMATURE_CLOSE;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n callback.apply(this, args);\n };\n}\nfunction noop() {}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction eos(stream, opts, callback) {\n if (typeof opts === 'function') return eos(stream, null, opts);\n if (!opts) opts = {};\n callback = once(callback || noop);\n var readable = opts.readable || opts.readable !== false && stream.readable;\n var writable = opts.writable || opts.writable !== false && stream.writable;\n var onlegacyfinish = function onlegacyfinish() {\n if (!stream.writable) onfinish();\n };\n var writableEnded = stream._writableState && stream._writableState.finished;\n var onfinish = function onfinish() {\n writable = false;\n writableEnded = true;\n if (!readable) callback.call(stream);\n };\n var readableEnded = stream._readableState && stream._readableState.endEmitted;\n var onend = function onend() {\n readable = false;\n readableEnded = true;\n if (!writable) callback.call(stream);\n };\n var onerror = function onerror(err) {\n callback.call(stream, err);\n };\n var onclose = function onclose() {\n var err;\n if (readable && !readableEnded) {\n if (!stream._readableState || !stream._readableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n if (writable && !writableEnded) {\n if (!stream._writableState || !stream._writableState.ended) err = new ERR_STREAM_PREMATURE_CLOSE();\n return callback.call(stream, err);\n }\n };\n var onrequest = function onrequest() {\n stream.req.on('finish', onfinish);\n };\n if (isRequest(stream)) {\n stream.on('complete', onfinish);\n stream.on('abort', onclose);\n if (stream.req) onrequest();else stream.on('request', onrequest);\n } else if (writable && !stream._writableState) {\n // legacy streams\n stream.on('end', onlegacyfinish);\n stream.on('close', onlegacyfinish);\n }\n stream.on('end', onend);\n stream.on('finish', onfinish);\n if (opts.error !== false) stream.on('error', onerror);\n stream.on('close', onclose);\n return function () {\n stream.removeListener('complete', onfinish);\n stream.removeListener('abort', onclose);\n stream.removeListener('request', onrequest);\n if (stream.req) stream.req.removeListener('finish', onfinish);\n stream.removeListener('end', onlegacyfinish);\n stream.removeListener('close', onlegacyfinish);\n stream.removeListener('finish', onfinish);\n stream.removeListener('end', onend);\n stream.removeListener('error', onerror);\n stream.removeListener('close', onclose);\n };\n}\nmodule.exports = eos;\n\n//# sourceURL=webpack://beacon/./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/end-of-stream.js?")},"./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/from-browser.js":module=>{eval("module.exports = function () {\n throw new Error('Readable.from is not available in the browser')\n};\n\n\n//# sourceURL=webpack://beacon/./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/from-browser.js?")},"./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/pipeline.js":(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("// Ported from https://github.com/mafintosh/pump with\n// permission from the author, Mathias Buus (@mafintosh).\n\n\n\nvar eos;\nfunction once(callback) {\n var called = false;\n return function () {\n if (called) return;\n called = true;\n callback.apply(void 0, arguments);\n };\n}\nvar _require$codes = (__webpack_require__(/*! ../../../errors */ \"./node_modules/stream-browserify/node_modules/readable-stream/errors-browser.js\").codes),\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS,\n ERR_STREAM_DESTROYED = _require$codes.ERR_STREAM_DESTROYED;\nfunction noop(err) {\n // Rethrow the error if it exists to avoid swallowing it\n if (err) throw err;\n}\nfunction isRequest(stream) {\n return stream.setHeader && typeof stream.abort === 'function';\n}\nfunction destroyer(stream, reading, writing, callback) {\n callback = once(callback);\n var closed = false;\n stream.on('close', function () {\n closed = true;\n });\n if (eos === undefined) eos = __webpack_require__(/*! ./end-of-stream */ \"./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/end-of-stream.js\");\n eos(stream, {\n readable: reading,\n writable: writing\n }, function (err) {\n if (err) return callback(err);\n closed = true;\n callback();\n });\n var destroyed = false;\n return function (err) {\n if (closed) return;\n if (destroyed) return;\n destroyed = true;\n\n // request.destroy just do .end - .abort is what we want\n if (isRequest(stream)) return stream.abort();\n if (typeof stream.destroy === 'function') return stream.destroy();\n callback(err || new ERR_STREAM_DESTROYED('pipe'));\n };\n}\nfunction call(fn) {\n fn();\n}\nfunction pipe(from, to) {\n return from.pipe(to);\n}\nfunction popCallback(streams) {\n if (!streams.length) return noop;\n if (typeof streams[streams.length - 1] !== 'function') return noop;\n return streams.pop();\n}\nfunction pipeline() {\n for (var _len = arguments.length, streams = new Array(_len), _key = 0; _key < _len; _key++) {\n streams[_key] = arguments[_key];\n }\n var callback = popCallback(streams);\n if (Array.isArray(streams[0])) streams = streams[0];\n if (streams.length < 2) {\n throw new ERR_MISSING_ARGS('streams');\n }\n var error;\n var destroys = streams.map(function (stream, i) {\n var reading = i < streams.length - 1;\n var writing = i > 0;\n return destroyer(stream, reading, writing, function (err) {\n if (!error) error = err;\n if (err) destroys.forEach(call);\n if (reading) return;\n destroys.forEach(call);\n callback(error);\n });\n });\n return streams.reduce(pipe);\n}\nmodule.exports = pipeline;\n\n//# sourceURL=webpack://beacon/./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/pipeline.js?")},"./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/state.js":(module,__unused_webpack_exports,__webpack_require__)=>{"use strict";eval("\n\nvar ERR_INVALID_OPT_VALUE = (__webpack_require__(/*! ../../../errors */ \"./node_modules/stream-browserify/node_modules/readable-stream/errors-browser.js\").codes).ERR_INVALID_OPT_VALUE;\nfunction highWaterMarkFrom(options, isDuplex, duplexKey) {\n return options.highWaterMark != null ? options.highWaterMark : isDuplex ? options[duplexKey] : null;\n}\nfunction getHighWaterMark(state, options, duplexKey, isDuplex) {\n var hwm = highWaterMarkFrom(options, isDuplex, duplexKey);\n if (hwm != null) {\n if (!(isFinite(hwm) && Math.floor(hwm) === hwm) || hwm < 0) {\n var name = isDuplex ? duplexKey : 'highWaterMark';\n throw new ERR_INVALID_OPT_VALUE(name, hwm);\n }\n return Math.floor(hwm);\n }\n\n // Default value\n return state.objectMode ? 16 : 16 * 1024;\n}\nmodule.exports = {\n getHighWaterMark: getHighWaterMark\n};\n\n//# sourceURL=webpack://beacon/./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/state.js?")},"./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/stream-browser.js":(module,__unused_webpack_exports,__webpack_require__)=>{eval('module.exports = __webpack_require__(/*! events */ "./node_modules/events/events.js").EventEmitter;\n\n\n//# sourceURL=webpack://beacon/./node_modules/stream-browserify/node_modules/readable-stream/lib/internal/streams/stream-browser.js?')},"./node_modules/strict-uri-encode/index.js":module=>{"use strict";eval("\nmodule.exports = str => encodeURIComponent(str).replace(/[!'()*]/g, x => `%${x.charCodeAt(0).toString(16).toUpperCase()}`);\n\n\n//# sourceURL=webpack://beacon/./node_modules/strict-uri-encode/index.js?")},"./node_modules/string_decoder/lib/string_decoder.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n\n\n/**/\n\nvar Buffer = (__webpack_require__(/*! safe-buffer */ \"./node_modules/safe-buffer/index.js\").Buffer);\n/**/\n\nvar isEncoding = Buffer.isEncoding || function (encoding) {\n encoding = '' + encoding;\n switch (encoding && encoding.toLowerCase()) {\n case 'hex':case 'utf8':case 'utf-8':case 'ascii':case 'binary':case 'base64':case 'ucs2':case 'ucs-2':case 'utf16le':case 'utf-16le':case 'raw':\n return true;\n default:\n return false;\n }\n};\n\nfunction _normalizeEncoding(enc) {\n if (!enc) return 'utf8';\n var retried;\n while (true) {\n switch (enc) {\n case 'utf8':\n case 'utf-8':\n return 'utf8';\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return 'utf16le';\n case 'latin1':\n case 'binary':\n return 'latin1';\n case 'base64':\n case 'ascii':\n case 'hex':\n return enc;\n default:\n if (retried) return; // undefined\n enc = ('' + enc).toLowerCase();\n retried = true;\n }\n }\n};\n\n// Do not cache `Buffer.isEncoding` when checking encoding names as some\n// modules monkey-patch it to support additional encodings\nfunction normalizeEncoding(enc) {\n var nenc = _normalizeEncoding(enc);\n if (typeof nenc !== 'string' && (Buffer.isEncoding === isEncoding || !isEncoding(enc))) throw new Error('Unknown encoding: ' + enc);\n return nenc || enc;\n}\n\n// StringDecoder provides an interface for efficiently splitting a series of\n// buffers into a series of JS strings without breaking apart multi-byte\n// characters.\nexports.StringDecoder = StringDecoder;\nfunction StringDecoder(encoding) {\n this.encoding = normalizeEncoding(encoding);\n var nb;\n switch (this.encoding) {\n case 'utf16le':\n this.text = utf16Text;\n this.end = utf16End;\n nb = 4;\n break;\n case 'utf8':\n this.fillLast = utf8FillLast;\n nb = 4;\n break;\n case 'base64':\n this.text = base64Text;\n this.end = base64End;\n nb = 3;\n break;\n default:\n this.write = simpleWrite;\n this.end = simpleEnd;\n return;\n }\n this.lastNeed = 0;\n this.lastTotal = 0;\n this.lastChar = Buffer.allocUnsafe(nb);\n}\n\nStringDecoder.prototype.write = function (buf) {\n if (buf.length === 0) return '';\n var r;\n var i;\n if (this.lastNeed) {\n r = this.fillLast(buf);\n if (r === undefined) return '';\n i = this.lastNeed;\n this.lastNeed = 0;\n } else {\n i = 0;\n }\n if (i < buf.length) return r ? r + this.text(buf, i) : this.text(buf, i);\n return r || '';\n};\n\nStringDecoder.prototype.end = utf8End;\n\n// Returns only complete characters in a Buffer\nStringDecoder.prototype.text = utf8Text;\n\n// Attempts to complete a partial non-UTF-8 character using bytes from a Buffer\nStringDecoder.prototype.fillLast = function (buf) {\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, buf.length);\n this.lastNeed -= buf.length;\n};\n\n// Checks the type of a UTF-8 byte, whether it's ASCII, a leading byte, or a\n// continuation byte. If an invalid byte is detected, -2 is returned.\nfunction utf8CheckByte(byte) {\n if (byte <= 0x7F) return 0;else if (byte >> 5 === 0x06) return 2;else if (byte >> 4 === 0x0E) return 3;else if (byte >> 3 === 0x1E) return 4;\n return byte >> 6 === 0x02 ? -1 : -2;\n}\n\n// Checks at most 3 bytes at the end of a Buffer in order to detect an\n// incomplete multi-byte UTF-8 character. The total number of bytes (2, 3, or 4)\n// needed to complete the UTF-8 character (if applicable) are returned.\nfunction utf8CheckIncomplete(self, buf, i) {\n var j = buf.length - 1;\n if (j < i) return 0;\n var nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 1;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) self.lastNeed = nb - 2;\n return nb;\n }\n if (--j < i || nb === -2) return 0;\n nb = utf8CheckByte(buf[j]);\n if (nb >= 0) {\n if (nb > 0) {\n if (nb === 2) nb = 0;else self.lastNeed = nb - 3;\n }\n return nb;\n }\n return 0;\n}\n\n// Validates as many continuation bytes for a multi-byte UTF-8 character as\n// needed or are available. If we see a non-continuation byte where we expect\n// one, we \"replace\" the validated continuation bytes we've seen so far with\n// a single UTF-8 replacement character ('\\ufffd'), to match v8's UTF-8 decoding\n// behavior. The continuation byte check is included three times in the case\n// where all of the continuation bytes for a character exist in the same buffer.\n// It is also done this way as a slight performance increase instead of using a\n// loop.\nfunction utf8CheckExtraBytes(self, buf, p) {\n if ((buf[0] & 0xC0) !== 0x80) {\n self.lastNeed = 0;\n return '\\ufffd';\n }\n if (self.lastNeed > 1 && buf.length > 1) {\n if ((buf[1] & 0xC0) !== 0x80) {\n self.lastNeed = 1;\n return '\\ufffd';\n }\n if (self.lastNeed > 2 && buf.length > 2) {\n if ((buf[2] & 0xC0) !== 0x80) {\n self.lastNeed = 2;\n return '\\ufffd';\n }\n }\n }\n}\n\n// Attempts to complete a multi-byte UTF-8 character using bytes from a Buffer.\nfunction utf8FillLast(buf) {\n var p = this.lastTotal - this.lastNeed;\n var r = utf8CheckExtraBytes(this, buf, p);\n if (r !== undefined) return r;\n if (this.lastNeed <= buf.length) {\n buf.copy(this.lastChar, p, 0, this.lastNeed);\n return this.lastChar.toString(this.encoding, 0, this.lastTotal);\n }\n buf.copy(this.lastChar, p, 0, buf.length);\n this.lastNeed -= buf.length;\n}\n\n// Returns all complete UTF-8 characters in a Buffer. If the Buffer ended on a\n// partial character, the character's bytes are buffered until the required\n// number of bytes are available.\nfunction utf8Text(buf, i) {\n var total = utf8CheckIncomplete(this, buf, i);\n if (!this.lastNeed) return buf.toString('utf8', i);\n this.lastTotal = total;\n var end = buf.length - (total - this.lastNeed);\n buf.copy(this.lastChar, 0, end);\n return buf.toString('utf8', i, end);\n}\n\n// For UTF-8, a replacement character is added when ending on a partial\n// character.\nfunction utf8End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + '\\ufffd';\n return r;\n}\n\n// UTF-16LE typically needs two bytes per character, but even if we have an even\n// number of bytes available, we need to check if we end on a leading/high\n// surrogate. In that case, we need to wait for the next two bytes in order to\n// decode the last character properly.\nfunction utf16Text(buf, i) {\n if ((buf.length - i) % 2 === 0) {\n var r = buf.toString('utf16le', i);\n if (r) {\n var c = r.charCodeAt(r.length - 1);\n if (c >= 0xD800 && c <= 0xDBFF) {\n this.lastNeed = 2;\n this.lastTotal = 4;\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n return r.slice(0, -1);\n }\n }\n return r;\n }\n this.lastNeed = 1;\n this.lastTotal = 2;\n this.lastChar[0] = buf[buf.length - 1];\n return buf.toString('utf16le', i, buf.length - 1);\n}\n\n// For UTF-16LE we do not explicitly append special replacement characters if we\n// end on a partial character, we simply let v8 handle that.\nfunction utf16End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) {\n var end = this.lastTotal - this.lastNeed;\n return r + this.lastChar.toString('utf16le', 0, end);\n }\n return r;\n}\n\nfunction base64Text(buf, i) {\n var n = (buf.length - i) % 3;\n if (n === 0) return buf.toString('base64', i);\n this.lastNeed = 3 - n;\n this.lastTotal = 3;\n if (n === 1) {\n this.lastChar[0] = buf[buf.length - 1];\n } else {\n this.lastChar[0] = buf[buf.length - 2];\n this.lastChar[1] = buf[buf.length - 1];\n }\n return buf.toString('base64', i, buf.length - n);\n}\n\nfunction base64End(buf) {\n var r = buf && buf.length ? this.write(buf) : '';\n if (this.lastNeed) return r + this.lastChar.toString('base64', 0, 3 - this.lastNeed);\n return r;\n}\n\n// Pass bytes on through for single-byte encodings (e.g. ascii, latin1, hex)\nfunction simpleWrite(buf) {\n return buf.toString(this.encoding);\n}\n\nfunction simpleEnd(buf) {\n return buf && buf.length ? this.write(buf) : '';\n}\n\n//# sourceURL=webpack://beacon/./node_modules/string_decoder/lib/string_decoder.js?")},"./node_modules/tslib/tslib.es6.js":(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{"use strict";eval('__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ __assign: () => (/* binding */ __assign),\n/* harmony export */ __asyncDelegator: () => (/* binding */ __asyncDelegator),\n/* harmony export */ __asyncGenerator: () => (/* binding */ __asyncGenerator),\n/* harmony export */ __asyncValues: () => (/* binding */ __asyncValues),\n/* harmony export */ __await: () => (/* binding */ __await),\n/* harmony export */ __awaiter: () => (/* binding */ __awaiter),\n/* harmony export */ __classPrivateFieldGet: () => (/* binding */ __classPrivateFieldGet),\n/* harmony export */ __classPrivateFieldSet: () => (/* binding */ __classPrivateFieldSet),\n/* harmony export */ __createBinding: () => (/* binding */ __createBinding),\n/* harmony export */ __decorate: () => (/* binding */ __decorate),\n/* harmony export */ __exportStar: () => (/* binding */ __exportStar),\n/* harmony export */ __extends: () => (/* binding */ __extends),\n/* harmony export */ __generator: () => (/* binding */ __generator),\n/* harmony export */ __importDefault: () => (/* binding */ __importDefault),\n/* harmony export */ __importStar: () => (/* binding */ __importStar),\n/* harmony export */ __makeTemplateObject: () => (/* binding */ __makeTemplateObject),\n/* harmony export */ __metadata: () => (/* binding */ __metadata),\n/* harmony export */ __param: () => (/* binding */ __param),\n/* harmony export */ __read: () => (/* binding */ __read),\n/* harmony export */ __rest: () => (/* binding */ __rest),\n/* harmony export */ __spread: () => (/* binding */ __spread),\n/* harmony export */ __spreadArrays: () => (/* binding */ __spreadArrays),\n/* harmony export */ __values: () => (/* binding */ __values)\n/* harmony export */ });\n/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nfunction __extends(d, b) {\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nfunction __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === "function")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nfunction __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nfunction __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nfunction __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nfunction __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nfunction __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError("Generator is already executing.");\r\n while (_) try {\r\n 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;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nfunction __createBinding(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n}\r\n\r\nfunction __exportStar(m, exports) {\r\n for (var p in m) if (p !== "default" && !exports.hasOwnProperty(p)) exports[p] = m[p];\r\n}\r\n\r\nfunction __values(o) {\r\n var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === "number") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");\r\n}\r\n\r\nfunction __read(o, n) {\r\n var m = typeof Symbol === "function" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i["return"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\nfunction __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\nfunction __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n};\r\n\r\nfunction __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nfunction __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n 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); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume("next", value); }\r\n function reject(value) { resume("throw", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nfunction __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nfunction __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");\r\n var m = o[Symbol.asyncIterator], i;\r\n 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);\r\n 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); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nfunction __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nfunction __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (Object.hasOwnProperty.call(mod, k)) result[k] = mod[k];\r\n result.default = mod;\r\n return result;\r\n}\r\n\r\nfunction __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nfunction __classPrivateFieldGet(receiver, privateMap) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError("attempted to get private field on non-instance");\r\n }\r\n return privateMap.get(receiver);\r\n}\r\n\r\nfunction __classPrivateFieldSet(receiver, privateMap, value) {\r\n if (!privateMap.has(receiver)) {\r\n throw new TypeError("attempted to set private field on non-instance");\r\n }\r\n privateMap.set(receiver, value);\r\n return value;\r\n}\r\n\n\n//# sourceURL=webpack://beacon/./node_modules/tslib/tslib.es6.js?')},"./node_modules/util-deprecate/browser.js":(module,__unused_webpack_exports,__webpack_require__)=>{eval("\n/**\n * Module exports.\n */\n\nmodule.exports = deprecate;\n\n/**\n * Mark that a method should not be used.\n * Returns a modified function which warns once by default.\n *\n * If `localStorage.noDeprecation = true` is set, then it is a no-op.\n *\n * If `localStorage.throwDeprecation = true` is set, then deprecated functions\n * will throw an Error when invoked.\n *\n * If `localStorage.traceDeprecation = true` is set, then deprecated functions\n * will invoke `console.trace()` instead of `console.error()`.\n *\n * @param {Function} fn - the function to deprecate\n * @param {String} msg - the string to print to the console when `fn` is invoked\n * @returns {Function} a new \"deprecated\" version of `fn`\n * @api public\n */\n\nfunction deprecate (fn, msg) {\n if (config('noDeprecation')) {\n return fn;\n }\n\n var warned = false;\n function deprecated() {\n if (!warned) {\n if (config('throwDeprecation')) {\n throw new Error(msg);\n } else if (config('traceDeprecation')) {\n console.trace(msg);\n } else {\n console.warn(msg);\n }\n warned = true;\n }\n return fn.apply(this, arguments);\n }\n\n return deprecated;\n}\n\n/**\n * Checks `localStorage` for boolean values for the given `name`.\n *\n * @param {String} name\n * @returns {Boolean}\n * @api private\n */\n\nfunction config (name) {\n // accessing global.localStorage can trigger a DOMException in sandboxed iframes\n try {\n if (!__webpack_require__.g.localStorage) return false;\n } catch (_) {\n return false;\n }\n var val = __webpack_require__.g.localStorage[name];\n if (null == val) return false;\n return String(val).toLowerCase() === 'true';\n}\n\n\n//# sourceURL=webpack://beacon/./node_modules/util-deprecate/browser.js?")},"./node_modules/ws/browser.js":module=>{"use strict";eval("\n\nmodule.exports = function () {\n throw new Error(\n 'ws does not work in the browser. Browser clients must use the native ' +\n 'WebSocket object'\n );\n};\n\n\n//# sourceURL=webpack://beacon/./node_modules/ws/browser.js?")},"./packages/beacon-blockchain-substrate/dist/cjs/blockchain.js":function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval('\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.SubstrateBlockchain = void 0;\nconst wallet_lists_1 = __webpack_require__(/*! ./ui/alert/wallet-lists */ "./packages/beacon-blockchain-substrate/dist/cjs/ui/alert/wallet-lists.js");\nclass SubstrateBlockchain {\n constructor() {\n this.identifier = \'substrate\';\n }\n validateRequest(input) {\n return __awaiter(this, void 0, void 0, function* () {\n // TODO: Validation\n if (input) {\n return;\n }\n });\n }\n handleResponse(input) {\n return __awaiter(this, void 0, void 0, function* () {\n // TODO: Validation\n if (input) {\n return;\n }\n });\n }\n getWalletLists() {\n return __awaiter(this, void 0, void 0, function* () {\n return {\n extensionList: wallet_lists_1.extensionList,\n desktopList: wallet_lists_1.desktopList,\n webList: wallet_lists_1.webList,\n iOSList: wallet_lists_1.iOSList\n };\n });\n }\n getAccountInfosFromPermissionResponse(permissionResponse) {\n return __awaiter(this, void 0, void 0, function* () {\n return permissionResponse.blockchainData.accounts.map((account) => ({\n accountId: account.accountId,\n address: account.address,\n publicKey: account.publicKey\n }));\n });\n }\n}\nexports.SubstrateBlockchain = SubstrateBlockchain;\n//# sourceMappingURL=blockchain.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-blockchain-substrate/dist/cjs/blockchain.js?')},"./packages/beacon-blockchain-substrate/dist/cjs/index.js":function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval('\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.SubstrateBlockchain = void 0;\nvar blockchain_1 = __webpack_require__(/*! ./blockchain */ "./packages/beacon-blockchain-substrate/dist/cjs/blockchain.js");\nObject.defineProperty(exports, "SubstrateBlockchain", ({ enumerable: true, get: function () { return blockchain_1.SubstrateBlockchain; } }));\n__exportStar(__webpack_require__(/*! ./types/message-type */ "./packages/beacon-blockchain-substrate/dist/cjs/types/message-type.js"), exports);\n__exportStar(__webpack_require__(/*! ./types/permission-scope */ "./packages/beacon-blockchain-substrate/dist/cjs/types/permission-scope.js"), exports);\n__exportStar(__webpack_require__(/*! ./types/messages/permission-request */ "./packages/beacon-blockchain-substrate/dist/cjs/types/messages/permission-request.js"), exports);\n__exportStar(__webpack_require__(/*! ./types/messages/permission-response */ "./packages/beacon-blockchain-substrate/dist/cjs/types/messages/permission-response.js"), exports);\n__exportStar(__webpack_require__(/*! ./types/messages/sign-payload-request */ "./packages/beacon-blockchain-substrate/dist/cjs/types/messages/sign-payload-request.js"), exports);\n__exportStar(__webpack_require__(/*! ./types/messages/sign-payload-response */ "./packages/beacon-blockchain-substrate/dist/cjs/types/messages/sign-payload-response.js"), exports);\n__exportStar(__webpack_require__(/*! ./types/messages/transfer-request */ "./packages/beacon-blockchain-substrate/dist/cjs/types/messages/transfer-request.js"), exports);\n__exportStar(__webpack_require__(/*! ./types/messages/transfer-response */ "./packages/beacon-blockchain-substrate/dist/cjs/types/messages/transfer-response.js"), exports);\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-blockchain-substrate/dist/cjs/index.js?')},"./packages/beacon-blockchain-substrate/dist/cjs/types/message-type.js":(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.SubstrateMessageType = void 0;\nvar SubstrateMessageType;\n(function (SubstrateMessageType) {\n SubstrateMessageType["transfer_request"] = "transfer_request";\n SubstrateMessageType["sign_payload_request"] = "sign_payload_request";\n})(SubstrateMessageType || (exports.SubstrateMessageType = SubstrateMessageType = {}));\n//# sourceMappingURL=message-type.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-blockchain-substrate/dist/cjs/types/message-type.js?')},"./packages/beacon-blockchain-substrate/dist/cjs/types/messages/permission-request.js":(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\n//# sourceMappingURL=permission-request.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-blockchain-substrate/dist/cjs/types/messages/permission-request.js?')},"./packages/beacon-blockchain-substrate/dist/cjs/types/messages/permission-response.js":(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\n//# sourceMappingURL=permission-response.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-blockchain-substrate/dist/cjs/types/messages/permission-response.js?')},"./packages/beacon-blockchain-substrate/dist/cjs/types/messages/sign-payload-request.js":(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\n//# sourceMappingURL=sign-payload-request.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-blockchain-substrate/dist/cjs/types/messages/sign-payload-request.js?')},"./packages/beacon-blockchain-substrate/dist/cjs/types/messages/sign-payload-response.js":(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\n//# sourceMappingURL=sign-payload-response.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-blockchain-substrate/dist/cjs/types/messages/sign-payload-response.js?')},"./packages/beacon-blockchain-substrate/dist/cjs/types/messages/transfer-request.js":(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\n//# sourceMappingURL=transfer-request.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-blockchain-substrate/dist/cjs/types/messages/transfer-request.js?')},"./packages/beacon-blockchain-substrate/dist/cjs/types/messages/transfer-response.js":(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\n//# sourceMappingURL=transfer-response.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-blockchain-substrate/dist/cjs/types/messages/transfer-response.js?')},"./packages/beacon-blockchain-substrate/dist/cjs/types/permission-scope.js":(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.SubstratePermissionScope = void 0;\nvar SubstratePermissionScope;\n(function (SubstratePermissionScope) {\n SubstratePermissionScope["transfer"] = "transfer";\n SubstratePermissionScope["sign_payload_json"] = "sign_payload_json";\n SubstratePermissionScope["sign_payload_raw"] = "sign_payload_raw";\n})(SubstratePermissionScope || (exports.SubstratePermissionScope = SubstratePermissionScope = {}));\n//# sourceMappingURL=permission-scope.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-blockchain-substrate/dist/cjs/types/permission-scope.js?')},"./packages/beacon-blockchain-substrate/dist/cjs/ui/alert/wallet-lists.js":(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.iOSList = exports.webList = exports.desktopList = exports.extensionList = void 0;\nexports.extensionList = [];\nexports.desktopList = [];\nexports.webList = [];\nexports.iOSList = [\n {\n "key": "airgap_ios",\n "name": "AirGap Wallet",\n "shortName": "AirGap",\n "color": "rgb(4, 235, 204)",\n "logo": "data:image/png;base64,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",\n "universalLink": "https://wallet.airgap.it",\n "deepLink": "airgap-wallet://"\n },\n {\n "key": "nova_ios",\n "name": "Nova Wallet",\n "shortName": "Nova",\n "color": "",\n "logo": "data:image/png;base64,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",\n "universalLink": "https://novawallet.io",\n "deepLink": "nova://"\n },\n {\n "key": "fearless_ios",\n "name": "Fearless Wallet",\n "shortName": "fearless",\n "color": "",\n "logo": "data:image/png;base64,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qnjgvjt2bdt104633fa2W66546bbbrvnrnseqCL+IqhH+Zjz/hsvOee0haiKqFgIKlZVxFBE7atYiIXaVxE1BFURFQtxwSlf8JL/3VU/cNPjqx8XRbAmTtlwxobzznjWac8465KzLjjtnE2nbNqwZhY1RBGHmdRCxWTYMDmudcf0x97ykm2XnRND1FAHiZrVvqh1a87Zcs6WF1y0EMOeemDPtju23fWOHW/b9o473nbbtjtu2XXfA3uG+PG3Jv66X3DeKdS+qFkdJmpfLIs6SNSsFqJmtXDBKX/dL/iq/8ue+nFXw4R1a87adM5pzzjjktOecc4lW8455ZzT1kwmUcdR8bB6lKjgB7b9sbcc17pj2nHP73nFF33WZec8jqBmQa2axGTNM856xll/yRAUe+que7btuuGOG277oVuuue262266a9c991UVET/6Nqy57LxYFdTjCWoI6vFcdt6mNXfc96OuFipiQ2zYcN4pF53xrDMuO+uCMy447ZxNp2yYRFBDERRBEccX1PH90LY/cNWOe45rnTquG277XVd90Uuec87jiGVxMsGaOGPTGZuuOOdhxT0P3LFr264bbnvbjh/ads1tt9x1yx137dmzpyri+IJ674I6iV33veW6n3ZZEUMNQTyemMXJFMFbrtt1H/V4gnpygjpMVURMTpucdco5W56x5bJznrHlgjPO2XTapg2TiEeJIYYY4uRiVRHLvm/b77rqhh0nse6Ebtjxu676os+44ryKqH01i6EIKqiFeLegKqIOUkMMFVELNUScMjnltAu2/ISLYqGC+3hgz007tu162y3X3HLdjmt23LLjtvvuuW9PRSyrJ6NOak/9K2/4ks96znlFVCwEtVARVRELtVBEUO9WETVEVSwEVRFVETUEFXzftn/lDXvq8dWTtaeYxIZ1Z6w7Y8tlWy7a8qyznnHWOZvO27Jmsm6oWKiKoBaqFoKKhaiKfVELFVH7iliIhVqohQiqglqIoWIhKCYLte8t237PK27YcVL5tL9dS4IagjrIead92UuuOO9hRQxFUEMMNcRQBLUshiIOV8SyGuJk7qtd99xw1w073nHbNTvetuO6W7bdteuee/YUcZSgVgX1uC4448s+4znnHaSIgxVxsCKOp4jh+2562Stu2EFQBDUL6nAxqyGoZUHtKyI2xKYN55xy0VnP2PKsLZeccd6W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",\n "universalLink": "https://fearlesswallet.io",\n "deepLink": "fearless://"\n }\n];\n//# sourceMappingURL=wallet-lists.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-blockchain-substrate/dist/cjs/ui/alert/wallet-lists.js?')},"./packages/beacon-blockchain-tezos/dist/cjs/blockchain.js":function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TezosBlockchain = void 0;\nconst wallet_lists_1 = __webpack_require__(/*! ./ui/alert/wallet-lists */ \"./packages/beacon-blockchain-tezos/dist/cjs/ui/alert/wallet-lists.js\");\nclass TezosBlockchain {\n constructor() {\n this.identifier = 'xtz';\n }\n validateRequest(input) {\n return __awaiter(this, void 0, void 0, function* () {\n // TODO: Validation\n if (input) {\n return;\n }\n });\n }\n handleResponse(input) {\n return __awaiter(this, void 0, void 0, function* () {\n // TODO: Validation\n if (input) {\n return;\n }\n });\n }\n getWalletLists() {\n return __awaiter(this, void 0, void 0, function* () {\n return {\n extensionList: wallet_lists_1.extensionList,\n desktopList: wallet_lists_1.desktopList,\n webList: wallet_lists_1.webList,\n iOSList: wallet_lists_1.iOSList\n };\n });\n }\n getAccountInfosFromPermissionResponse(_permissionResponse) {\n return __awaiter(this, void 0, void 0, function* () {\n return [{ accountId: '', address: '', publicKey: '' }];\n });\n }\n}\nexports.TezosBlockchain = TezosBlockchain;\n//# sourceMappingURL=blockchain.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-blockchain-tezos/dist/cjs/blockchain.js?")},"./packages/beacon-blockchain-tezos/dist/cjs/index.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.TezosBlockchain = void 0;\nvar blockchain_1 = __webpack_require__(/*! ./blockchain */ "./packages/beacon-blockchain-tezos/dist/cjs/blockchain.js");\nObject.defineProperty(exports, "TezosBlockchain", ({ enumerable: true, get: function () { return blockchain_1.TezosBlockchain; } }));\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-blockchain-tezos/dist/cjs/index.js?')},"./packages/beacon-blockchain-tezos/dist/cjs/ui/alert/wallet-lists.js":(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.iOSList = exports.webList = exports.desktopList = exports.extensionList = void 0;\nexports.extensionList = [\n {\n "key": "spire_chrome",\n "id": "gpfndedineagiepkpinficbcbbgjoenn",\n "name": "Spire",\n "shortName": "Spire",\n "color": "",\n "logo": "data:image/png;base64,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",\n "link": "https://spirewallet.com/"\n },\n {\n "key": "temple_chrome",\n "id": "ookjlbkiijinhpmnjffcofjonbfbgaoc",\n "name": "Temple Wallet Chrome",\n "shortName": "Temple",\n "color": "",\n "logo": "data:image/png;base64,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",\n "link": "https://templewallet.com/"\n },\n {\n "key": "temple_firefox",\n "id": "{34ac229e-1cf5-4e4c-8a77-988155c4360f}",\n "name": "Temple Wallet Firefox",\n "shortName": "Temple",\n "color": "",\n "logo": "data:image/png;base64,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",\n "link": "https://templewallet.com/"\n }\n];\nexports.desktopList = [\n {\n "key": "infinity_wallet",\n "name": "Infinity Wallet",\n "shortName": "Infinity Wallet",\n "color": "rgb(52, 147, 218)",\n "logo": "data:image/png;base64,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",\n "deepLink": "infinity://",\n "downloadLink": "https://infinitywallet.io/download"\n },\n {\n "key": "galleon_desktop",\n "name": "Galleon",\n "shortName": "Galleon",\n "color": "",\n "logo": "data:image/png;base64,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",\n "deepLink": "galleon://",\n "downloadLink": "https://cryptonomic.tech/galleon.html"\n },\n {\n "key": "umami_desktop",\n "name": "Umami",\n "shortName": "Umami",\n "color": "",\n "logo": "data:image/png;base64,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",\n "deepLink": "umami://",\n "downloadLink": "https://umamiwallet.com/#download"\n },\n {\n "key": "atomex_desktop",\n "name": "Atomex Wallet",\n "shortName": "Atomex",\n "color": "",\n "logo": "data:image/png;base64,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",\n "deepLink": "atomex://",\n "downloadLink": "https://atomex.me/"\n }\n];\nexports.webList = [\n {\n "key": "metamask_tezos_web",\n "name": "MetaMask",\n "shortName": "MetaMask",\n "color": "",\n "logo": "data:image/png;base64,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",\n "links": {\n "mainnet": "https://metamask.tezos.com/",\n "ghostnet": "https://metamask.tezos.com/",\n "weeklynet": "https://metamask.tezos.com/",\n "dailynet": "https://metamask.tezos.com/",\n "delphinet": "https://metamask.tezos.com/",\n "edonet": "https://metamask.tezos.com/",\n "florencenet": "https://metamask.tezos.com/",\n "granadanet": "https://metamask.tezos.com/",\n "hangzhounet": "https://metamask.tezos.com/",\n "ithacanet": "https://metamask.tezos.com/",\n "jakartanet": "https://metamask.tezos.com/",\n "kathmandunet": "https://metamask.tezos.com/",\n "limanet": "https://metamask.tezos.com/",\n "mumbainet": "https://metamask.tezos.com/",\n "nairobinet": "https://metamask.tezos.com/",\n "oxfordnet": "https://metamask.tezos.com/"\n }\n },\n {\n "key": "kukai_web",\n "name": "Kukai Wallet",\n "shortName": "Kukai",\n "color": "",\n "logo": "data:image/png;base64,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",\n "links": {\n "mainnet": "https://wallet.kukai.app",\n "ghostnet": "https://ghostnet.kukai.app",\n "weeklynet": "https://weeklynet.kukai.app",\n "dailynet": "https://dailynet.kukai.app",\n "delphinet": "https://testnet.kukai.app",\n "edonet": "https://edonet.kukai.app",\n "florencenet": "https://florencenet.kukai.app",\n "granadanet": "https://granadanet.kukai.app",\n "hangzhounet": "https://hangzhounet.kukai.app",\n "ithacanet": "https://ithacanet.kukai.app",\n "jakartanet": "https://jakartanet.kukai.app",\n "kathmandunet": "https://kathmandunet.kukai.app",\n "limanet": "https://limanet.kukai.app",\n "mumbainet": "https://mumbainet.kukai.app",\n "nairobinet": "https://nairobinet.kukai.app",\n "oxfordnet": "https://oxfordnet.kukai.app"\n }\n },\n {\n "key": "tzsafe",\n "name": "TzSafe",\n "shortName": "TzSafe",\n "color": "rgb(235, 52, 72)",\n "logo": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjAwIiBoZWlnaHQ9IjYwMCIgdmlld0JveD0iMCAwIDYwMCA2MDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSI2MDAiIGhlaWdodD0iNjAwIiBmaWxsPSIjRjE0RDVBIi8+CjxwYXRoIGQ9Ik0zNDEuMTY4IDQxMi41Mkg1MDkuMjkxVjQ0Ni43QzUwOS4yOTEgNDU0LjYzMSA1MTUuNzEzIDQ2MS4wNTEgNTIzLjY0NyA0NjEuMDUxQzUzMS41ODEgNDYxLjA1MSA1MzguMDA0IDQ1NC42MzEgNTM4LjAwNCA0NDYuN1YzOTguMTY5QzUzOC4wMDQgMzkwLjIzNyA1MzEuNTgxIDM4My44MTcgNTIzLjY0NyAzODMuODE3SDM0MC44ODRDMzM3Ljc2OCAzNTUuOTY0IDMyNi4zMzkgMzMwLjU2NSAzMDkuMjQzIDMxMC4wNzZMMzYxLjA5NyAyNTguMjRMMzk5LjkxNiAyOTcuMDQ2QzQwMi43NSAyOTkuODc5IDQwNi40MzMgMzAxLjI5NSA0MTAuMTE3IDMwMS4yOTVDNDEzLjgwMSAzMDEuMjk1IDQxNy40ODQgMjk5Ljg3OSA0MjAuMzE4IDI5Ny4wNDZDNDI1Ljg5IDI5MS40NzYgNDI1Ljg5IDI4Mi4zMTcgNDIwLjMxOCAyNzYuNzQ2TDM4MS40OTggMjM3Ljk0TDQyOS4xOTYgMTkwLjI1OUw0NjguMDE2IDIyOS4wNjVDNDczLjU4OCAyMzQuNjM2IDQ4Mi43NSAyMzQuNjM2IDQ4OC4zMjIgMjI5LjA2NUM0OTMuODk1IDIyMy40OTQgNDkzLjg5NSAyMTQuMzM2IDQ4OC4zMjIgMjA4Ljc2NUw0MzkuMzk3IDE1OS44NTZDNDMzLjgyNCAxNTQuMjg2IDQyNC42NjIgMTU0LjI4NiA0MTkuMDkgMTU5Ljg1NkwzNTEuMDg1IDIyNy44MzhMMjg4LjY1MyAyODkuOTY1QzI2OC4wNjMgMjczLjcyNSAyNDIuNzUgMjYzLjE1IDIxNS4xNyAyNjAuNjAxVjE5Ni40OTFIMjMwLjI4MkMyMzguMjE2IDE5Ni40OTEgMjQ0LjYzOSAxOTAuMDcgMjQ0LjYzOSAxODIuMTM5QzI0NC42MzkgMTc0LjIwOCAyMzguMjE2IDE2Ny43ODcgMjMwLjI4MiAxNjcuNzg3SDIxNS4xN1YxNDIuMTA2SDI0MC40ODNDMjQ4LjQxNyAxNDIuMTA2IDI1NC44NCAxMzUuNjg1IDI1NC44NCAxMjcuNzU0QzI1NC44NCAxMTkuODIzIDI0OC40MTcgMTEzLjQwMiAyNDAuNDgzIDExMy40MDJIMjE1LjE3Vjg5LjcwMzJIMjcwLjA0NkMyNzcuOTggODkuNzAzMiAyODQuNDAzIDgzLjI4MjggMjg0LjQwMyA3NS4zNTE2QzI4NC40MDMgNjcuNDIwNSAyNzcuOTggNjEgMjcwLjA0NiA2MUgyMDAuODE0QzE5Mi44OCA2MSAxODYuNDU3IDY3LjQyMDUgMTg2LjQ1NyA3NS4zNTE2VjI2MC45NzhDMTE2Ljk0MSAyNjguOTEgNjIuODIwOCAzMjguMDE2IDYyLjgyMDggMzk5LjQ5QzYyLjgyMDggNDc2LjM0NyAxMjUuNDQyIDUzOC45NDcgMjAyLjMyNSA1MzguOTQ3QzI3NC44NjMgNTM4Ljk0NyAzMzQuNTU2IDQ4My4zMzQgMzQxLjE2OCA0MTIuNTJaTTIwMi4zMjUgNTEwLjI0M0MxNDEuMjE1IDUxMC4yNDMgOTEuNTMzOSA0NjAuNTc5IDkxLjUzMzkgMzk5LjQ5QzkxLjUzMzkgMzM4LjQwMiAxNDEuMjE1IDI4OC43MzggMjAyLjMyNSAyODguNzM4QzI2Mi43NzQgMjg4LjczOCAzMTIuMDc3IDMzNy40NTcgMzEzLjExNiAzOTcuNjAyQzMxMy4xMTYgMzk3Ljc5MSAzMTMuMTE2IDM5Ny45OCAzMTMuMTE2IDM5OC4wNzRDMzEzLjExNiAzOTguMzU3IDMxMy4xMTYgMzk4LjY0MSAzMTMuMTE2IDM5OC45MjRDMzEzLjExNiAzOTkuMTEzIDMxMy4xMTYgMzk5LjMwMiAzMTMuMTE2IDM5OS4zOTZDMzEzLjAyMSA0NjAuNTc5IDI2My4zNCA1MTAuMjQzIDIwMi4zMjUgNTEwLjI0M1oiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik0yMDcuMjM2IDQ4Ny4zQzIxMS4yOTggNDg1LjYgMjE0Ljk4MSA0ODMuMDUxIDIxOC4yODcgNDc5Ljg0MUwyMTguNTcgNDc5LjY1MkwyMTguNzU5IDQ3OS40NjNMMjE4Ljg1NCA0NzkuMzY5TDIxOS4wNDMgNDc5LjE4TDIxOS4xMzcgNDc5LjA4NUwyMTkuNjA5IDQ3OC42MTNMMjE5LjcwNCA0NzguNTE5TDIxOS44OTMgNDc4LjMzTDIxOS45ODcgNDc4LjIzNkwyMjAuMTc2IDQ3OC4wNDdMMjIwLjI3IDQ3Ny45NTJDMjIzLjI5MyA0NzQuNzQyIDIyNi4wMzIgNDcxLjE1NCAyMjguMzkzIDQ2Ny4xODlMMjI5Ljk5OSA0NjcuMDk0QzIzMS40MTYgNDY3IDIzMi43MzggNDY2LjcxNiAyMzQuMDYgNDY2LjI0NEMyMzMuMTE2IDQ2OC4wMzggMjMyLjA3NyA0NjkuODMyIDIzMC45NDMgNDcxLjYyNkMyMjkuNzE2IDQ3My42MDkgMjMxLjY5OSA0NzUuOTY5IDIzMy43NzcgNDc1LjEyTDI2MS4xNjggNDYzLjk3OEMyNjQuNjYyIDQ2Mi41NjIgMjY3LjExOCA0NjAuMTA3IDI2OC41MzUgNDU2LjYxNEMyNzAuMTQxIDQ1Mi41NTQgMjcwLjk5MSA0NDguMTE2IDI3MS4wODUgNDQzLjQ4OVY0NDMuMjA2VjQ0Mi45MjNWNDQyLjgyOVY0NDIuNTQ1VjQ0Mi40NTFWNDQxLjY5NlY0NDEuNTA3VjQ0MS4zMThWNDQxLjIyM1Y0NDEuMDM1VjQ0MC45NEMyNzAuOTkxIDQzNi41OTcgMjcwLjMzIDQzMi4wNjUgMjY5LjE5NiA0MjcuNjI3TDI3MC4yMzUgNDI2LjRDMjcxLjE4IDQyNS4zNjEgMjcxLjkzNSA0MjQuMjI4IDI3Mi41MDIgNDIzLjAwMUMyNzMuMTYzIDQyNC45ODMgMjczLjYzNSA0MjYuOTY2IDI3NC4xMDggNDI4Ljk0OUMyNzQuNTggNDMxLjIxNSAyNzcuNjk3IDQzMS40OTggMjc4LjY0MSA0MjkuNDIxTDI5MC4xNjQgNDAyLjIyOUMyOTEuNTgxIDM5OC43MzUgMjkxLjU4MSAzOTUuMjQyIDI5MC4xNjQgMzkxLjc0OEMyODguNDY0IDM4Ny42ODggMjg1LjkxNCAzODQuMDA2IDI4Mi43MDMgMzgwLjcwMUwyODIuNTE0IDM4MC40MThMMjgyLjMyNSAzODAuMjI5TDI4Mi4wNDEgMzgwLjA0TDI4MS44NTMgMzc5Ljg1MUwyODEuNzU4IDM3OS43NTdMMjgxLjI4NiAzNzkuMjg1TDI4MS4xOTEgMzc5LjE5TDI4MS4wMDIgMzc5LjAwMkwyODAuOTA4IDM3OC45MDdMMjgwLjcxOSAzNzguNzE4TDI4MC42MjUgMzc4LjYyNEMyNzcuNDEzIDM3NS42MDMgMjczLjgyNCAzNzIuODY0IDI2OS44NTcgMzcwLjU5OEwyNjkuNzYzIDM2OC45OTNDMjY5LjY2OCAzNjcuNTc3IDI2OS4zODUgMzY2LjI1NSAyNjguOTEzIDM2NS4wMjhDMjcwLjcwNyAzNjUuOTcyIDI3Mi41MDIgMzY3LjAxIDI3NC4yOTYgMzY4LjE0M0MyNzYuMjggMzY5LjM3MSAyNzguNjQxIDM2Ny4zODggMjc3Ljc5MSAzNjUuMzExTDI2Ni42NDYgMzM3LjkzQzI2NS4yMjkgMzM0LjQzNiAyNjIuNzczIDMzMS45ODEgMjU5LjI3OSAzMzAuNTY1QzI1NS4yMTcgMzI4Ljk2IDI1MC43NzggMzI4LjExIDI0Ni4xNSAzMjguMDE2SDI0NS44NjdIMjQ1LjU4M0gyNDUuNDg5SDI0NS4yMDZIMjQ1LjExMUgyNDQuMzU1SDI0NC4xNjdIMjQzLjk3OEgyNDMuODgzSDI0My42OTRIMjQzLjZDMjM5LjI1NSAzMjguMTEgMjM0LjcyMiAzMjguNzcxIDIzMC4yODIgMzI5LjkwNEwyMjkuMDU0IDMyOC44NjVDMjI4LjAxNSAzMjcuOTIxIDIyNi44ODIgMzI3LjE2NiAyMjUuNjU0IDMyNi41OTlDMjI3LjYzOCAzMjUuOTM4IDIyOS42MjEgMzI1LjQ2NiAyMzEuNjA1IDMyNC45OTRDMjMzLjg3MSAzMjQuNTIyIDIzNC4xNTUgMzIxLjQwNiAyMzIuMDc3IDMyMC40NjJMMjA0Ljg3NSAzMDguOTQzQzIwMS4zOCAzMDcuNTI3IDE5Ny44ODYgMzA3LjUyNyAxOTQuMzkxIDMwOC45NDNDMTkwLjMzIDMxMC42NDMgMTg2LjY0NiAzMTMuMTkyIDE4My4zNCAzMTYuNDAyTDE4My4wNTcgMzE2LjU5MUwxODIuODY4IDMxNi43OEwxODIuNzczIDMxNi44NzRMMTgyLjU4NSAzMTcuMDYzTDE4Mi40OSAzMTcuMTU3TDE4MS45MjMgMzE3LjcyNEwxODEuODI5IDMxNy44MThMMTgxLjY0IDMxOC4wMDdMMTgxLjU0NiAzMTguMTAyTDE4MS4zNTcgMzE4LjI5TDE4MS4yNjIgMzE4LjM4NUMxNzguMjQgMzIxLjU5NSAxNzUuNTAxIDMyNS4xODMgMTczLjIzNCAzMjkuMTQ5TDE3MS42MjggMzI5LjI0M0MxNzAuMjExIDMyOS4zMzcgMTY4Ljg4OSAzMjkuNjIxIDE2Ny41NjcgMzMwLjA5M0MxNjguNTExIDMyOC4yOTkgMTY5LjU1IDMyNi41MDUgMTcwLjY4NCAzMjQuNzExQzE3MS45MTIgMzIyLjcyOCAxNjkuOTI4IDMyMC4zNjggMTY3Ljg1IDMyMS4yMTdMMTQwLjQ1OSAzMzIuMzU5QzEzNi45NjUgMzMzLjc3NSAxMzQuNTA5IDMzNi4yMyAxMzMuMDkyIDMzOS43MjNDMTMxLjQ4NyAzNDMuNzgzIDEzMC42MzcgMzQ4LjIyMSAxMzAuNTQyIDM1Mi44NDhWMzUzLjEzMVYzNTMuNDE0VjM1My41MDlWMzUzLjc5MlYzNTMuODg2VjM1NC42NDJWMzU0LjgzVjM1NS4wMTlWMzU1LjExNFYzNTUuMzAzVjM1NS4zOTdDMTMwLjYzNyAzNTkuNzQgMTMxLjI5OCAzNjQuMjcyIDEzMi40MzEgMzY4LjcxTDEzMS4zOTIgMzY5LjkzN0MxMzAuNDQ4IDM3MC45NzYgMTI5LjY5MiAzNzIuMTA5IDEyOS4xMjUgMzczLjMzNkMxMjguNDY0IDM3MS4zNTQgMTI3Ljk5MiAzNjkuMzcxIDEyNy41MiAzNjcuMzg4QzEyNy4wNDcgMzY1LjEyMiAxMjMuOTMxIDM2NC44MzkgMTIyLjk4NiAzNjYuOTE2TDExMS40NjMgMzk0LjEwOUMxMTAuMDQ2IDM5Ny42MDIgMTEwLjA0NiA0MDEuMDk2IDExMS40NjMgNDA0LjU4OUMxMTMuMTYzIDQwOC42NDkgMTE1LjcxMyA0MTIuMzMxIDExOC45MjUgNDE1LjYzNkwxMTkuMTEzIDQxNS45MTlMMTE5LjMwMiA0MTYuMTA4TDExOS4zOTcgNDE2LjIwM0wxMTkuNTg2IDQxNi4zOTFMMTE5LjY4IDQxNi40ODZMMTIwLjE1MiA0MTYuOTU4TDEyMC4yNDcgNDE3LjA1MkwxMjAuNDM2IDQxNy4yNDFMMTIwLjUzIDQxNy4zMzZMMTIwLjcxOSA0MTcuNTI0TDEyMC44MTQgNDE3LjYxOUMxMjQuMDI1IDQyMC42NCAxMjcuNjE0IDQyMy4zNzggMTMxLjU4MSA0MjUuNjQ0TDEzMS42NzUgNDI3LjI0OUMxMzEuNzcgNDI4LjY2NiAxMzIuMDUzIDQyOS45ODggMTMyLjUyNiA0MzEuMjE1QzEzMC43MzEgNDMwLjI3MSAxMjguOTM2IDQyOS4yMzIgMTI3LjE0MiA0MjguMDk5QzEyNS4xNTggNDI2Ljg3MiAxMjIuNzk3IDQyOC44NTUgMTIzLjY0NyA0MzAuOTMyTDEzNC43OTIgNDU4LjMxM0MxMzYuMjA5IDQ2MS44MDcgMTM4LjY2NSA0NjQuMjYyIDE0Mi4xNiA0NjUuNjc4QzE0Ni4yMjEgNDY3LjI4MyAxNTAuNjYgNDY4LjEzMyAxNTUuMjg4IDQ2OC4yMjdIMTU1LjU3MkgxNTUuODU1SDE1NS45NDlIMTU2LjIzM0gxNTYuMzI3SDE1Ny4wODNIMTU3LjI3MkgxNTcuNDYxSDE1Ny41NTVIMTU3Ljc0NEgxNTcuODM4QzE2Mi4xODMgNDY4LjEzMyAxNjYuNzE3IDQ2Ny40NzIgMTcxLjE1NiA0NjYuMzM5TDE3Mi4zODQgNDY3LjM3N0MxNzMuNDIzIDQ2OC4zMjIgMTc0LjU1NiA0NjkuMDc3IDE3NS43ODQgNDY5LjY0M0MxNzMuODAxIDQ3MC4zMDQgMTcxLjgxNyA0NzAuNzc2IDE2OS43MzkgNDcxLjI0OUMxNjcuNDcyIDQ3MS43MjEgMTY3LjE4OSA0NzQuODM2IDE2OS4yNjcgNDc1Ljc4MUwxOTYuNDY5IDQ4Ny4zQzIwMC4yNDcgNDg4LjgxIDIwMy43NDIgNDg4LjgxIDIwNy4yMzYgNDg3LjNaTTI0My42IDQzMy40ODFWNDMzLjc2NFY0MzMuOTUzQzI0My42IDQzMy45NTMgMjQzLjYgNDM0LjA0OCAyNDMuNiA0MzQuMTQyVjQzNC4yMzZDMjQzLjUwNSA0MzkuNjE4IDI0Mi43NSA0NDQuNjIzIDI0MS40MjggNDQ4Ljk2NlY0NDkuMDZMMjQxLjA1IDQ1MC4wOTlWNDUwLjE5M0wyNDAuNzY2IDQ1MC44NTRDMjM5LjkxNiA0NTMuMTIgMjM4Ljg3NyA0NTUuMTAzIDIzNy42NDkgNDU2Ljk5MUMyMzcuMDgzIDQ1Ny45MzYgMjM2LjQyMiA0NTguNzg1IDIzNS42NjYgNDU5LjYzNUMyMzQuMzQ0IDQ2MS4xNDYgMjMyLjgzMiA0NjIuMDkgMjMwLjk0MyA0NjIuMzczQzIzMC40NzEgNDYyLjQ2OCAyMzAuMDkzIDQ2Mi41NjIgMjI5LjYyMSA0NjIuNTYyTDIyMC40NTkgNDYzLjAzNEMyMTguMjg3IDQ2My4xMjkgMjE2LjM5OCA0NjIuMDkgMjE1LjM1OSA0NjAuMjAyQzIxNC4zMiA0NTguMzEzIDIxNC40MTUgNDU2LjA0NyAyMTUuNjQyIDQ1NC4xNTlMMjE1LjczNyA0NTQuMDY0TDIxNS44MzEgNDUzLjk3TDIxNi4zOTggNDUzLjEyQzIxNi4zOTggNDUzLjEyIDIxNi4zOTggNDUzLjAyNiAyMTYuNDkyIDQ1My4wMjZMMjE2Ljg3IDQ1Mi4zNjVDMjE2Ljg3IDQ1Mi4zNjUgMjE2Ljg3IDQ1Mi4yNyAyMTYuOTY1IDQ1Mi4yN0wyMTcuMTU0IDQ1MS45ODdMMjE3LjI0OCA0NTEuODkzTDIxNy4zNDMgNDUxLjcwNEwyMTcuNDM3IDQ1MS42MDlMMjE3LjYyNiA0NTEuMzI2QzIyMC4xNzYgNDQ2Ljg4OSAyMjEuODc2IDQ0MS45NzkgMjIzLjAxIDQzNi4xMjVDMjIzLjEwNCA0MzUuNjUzIDIyMy4xOTggNDM1LjE4MSAyMjMuMTk4IDQzNC44MDNMMjIzLjI5MyA0MzQuMDQ4QzIyMy4yOTMgNDMzLjk1MyAyMjMuMjkzIDQzMy45NTMgMjIzLjI5MyA0MzMuODU5QzIyMy4yOTMgNDMzLjY3IDIyMy4yOTMgNDMzLjU3NiAyMjMuMzg3IDQzMy4zODdDMjIzLjc2NSA0MzAuNjQ5IDIyNC4wNDkgNDI3LjcyMiAyMjQuMTQzIDQyNC43QzIyNC4yMzcgNDIxLjIwNyAyMjYuODgyIDQxOC4zNzQgMjMwLjM3NyA0MTguMTg1TDIzNS4wMDUgNDE3LjkwMkMyMzUuMDk5IDQxNy45MDIgMjM1LjE5NCA0MTcuOTAyIDIzNS4yODggNDE3LjkwMkMyMzYuNjExIDQxNy45MDIgMjM3LjgzOCA0MTguMzc0IDIzOC45NzIgNDE5LjMxOEMyNDIuMDg5IDQyMi4yNDUgMjQzLjY5NCA0MjguNjY2IDI0My43ODkgNDMyLjA2NVY0MzIuMzQ4VjQzMi42MzFWNDMyLjcyNkwyNDMuNiA0MzMuNDgxWk0yNjYuMTc0IDQwNi44NTVMMjY2LjM2MyA0MDcuMjMzQzI2Ny40MDIgNDA5LjQwNCAyNjguMDYzIDQxMS42NyAyNjguNTM1IDQxMy44NDJDMjY4LjcyNCA0MTQuODgxIDI2OC45MTMgNDE1LjkxOSAyNjkuMDA3IDQxNi45NThDMjY5LjEwMiA0MTguOTQxIDI2OC43MjQgNDIwLjY0IDI2Ny42ODUgNDIyLjI0NUMyNjcuNDAyIDQyMi42MjMgMjY3LjIxMyA0MjMuMDAxIDI2Ni44MzUgNDIzLjI4NEwyNjAuNzkgNDMwLjA4MkMyNTkuMzczIDQzMS42ODcgMjU3LjI5NSA0MzIuMzQ4IDI1NS4yMTcgNDMxLjc4MkMyNTMuMTM5IDQzMS4yMTUgMjUxLjUzNCA0MjkuNTE2IDI1MS4xNTYgNDI3LjM0NFY0MjcuMDYxVjQyNi45NjZWNDI2Ljc3N1Y0MjYuNjgzTDI1MS4wNjIgNDI2LjRWNDI2LjMwNUwyNTAuODczIDQyNS4yNjdDMjUwLjg3MyA0MjUuMjY3IDI1MC44NzMgNDI1LjE3MiAyNTAuODczIDQyNS4wNzhMMjUwLjY4NCA0MjQuMzIzVjQyNC4yMjhMMjUwLjU4OSA0MjMuODVDMjQ5LjI2NyA0MTguOTQxIDI0NyA0MTQuMjIgMjQzLjYgNDA5LjMxQzI0My4zMTcgNDA4LjkzMiAyNDMuMDMzIDQwOC41NTUgMjQyLjg0NCA0MDguMTc3TDI0Mi4zNzIgNDA3LjUxNkwyNDIuMjc4IDQwNy40MjJDMjQyLjE4MyA0MDcuMzI3IDI0Mi4wODkgNDA3LjEzOCAyNDEuOTk0IDQwNy4wNDRDMjQwLjI5NCA0MDQuODcyIDIzOC40MDUgNDAyLjYwNiAyMzYuMzI3IDQwMC4zNEMyMzMuOTY2IDM5Ny43OTEgMjMzLjg3MSAzOTMuOTIgMjM2LjEzOCAzOTEuMjc2TDIzNi4yMzMgMzkxLjE4MkwyMzkuMjU1IDM4Ny43ODNDMjM5LjM1IDM4Ny42ODggMjM5LjM1IDM4Ny42ODggMjM5LjQ0NCAzODcuNTk0QzI0MC4zODkgMzg2LjY1IDI0MS41MjIgMzg2LjA4MyAyNDMuMDMzIDM4Ni4wODNDMjQ3LjI4MyAzODUuODk0IDI1My4wNDUgMzg5LjM4OCAyNTUuNTAxIDM5MS43NDhMMjU1Ljg3OCAzOTIuMTI2TDI1NS45NzMgMzkyLjIyTDI1Ni45MTcgMzkzLjE2NEMyNjAuNjk2IDM5Ny4wMzYgMjYzLjcxOCA0MDEuMDk2IDI2NS43OTYgNDA1LjA2MUwyNjUuODkgNDA1LjE1NkwyNjYuNDU3IDQwNi4zODNDMjY2LjA3OSA0MDYuNzYxIDI2Ni4wNzkgNDA2Ljc2MSAyNjYuMTc0IDQwNi44NTVaTTIzNS4zODMgMzU1LjM5N0MyMzUuMzgzIDM1NS4zOTcgMjM1LjQ3NyAzNTUuMzk3IDIzNS41NzIgMzU1LjM5N0gyMzYuMDQ0SDIzNi4yMzNIMjM2LjMyN0gyMzYuNTE2SDIzNi43MDVIMjM2Ljc5OUgyMzYuOTg4QzI0Mi4zNzIgMzU1LjQ5MSAyNDcuMzc4IDM1Ni4yNDcgMjUxLjcyMyAzNTcuNTY5SDI1MS44MTdMMjUyLjg1NiAzNTcuOTQ2SDI1Mi45NTFMMjUzLjcwNiAzNTguMjNDMjU1Ljk3MyAzNTkuMDc5IDI1Ny45NTYgMzYwLjExOCAyNTkuNzUxIDM2MS4zNDVDMjYwLjY5NiAzNjEuOTEyIDI2MS41NDYgMzYyLjU3MyAyNjIuMzk2IDM2My4zMjhDMjYzLjkwNyAzNjQuNjUgMjY0Ljg1MSAzNjYuMTYxIDI2NS4xMzUgMzY4LjA0OUMyNjUuMjI5IDM2OC41MjEgMjY1LjMyNCAzNjguODk5IDI2NS4zMjQgMzY5LjM3MUwyNjUuNzk2IDM3OC41M0MyNjUuODkgMzgwLjcwMSAyNjQuODUxIDM4Mi41OSAyNjIuOTYyIDM4My42MjhDMjYxLjA3MyAzODQuNjY3IDI1OC44MDYgMzg0LjU3MiAyNTYuOTE3IDM4My4zNDVMMjU2LjgyMyAzODMuMjVDMjU2LjgyMyAzODMuMjUgMjU2LjcyOSAzODMuMTU2IDI1Ni42MzQgMzgzLjE1NkwyNTYuNDQ1IDM4My4wNjJDMjU2LjQ0NSAzODMuMDYyIDI1Ni4zNTEgMzgzLjA2MiAyNTYuMzUxIDM4Mi45NjdMMjU2LjA2NyAzODIuNzc4TDI1NS44NzggMzgyLjY4NEwyNTUuNzg0IDM4Mi41OUwyNTUuMjE3IDM4Mi4yMTJMMjU1LjEyMyAzODIuMTE3TDI1NC43NDUgMzgxLjkyOUgyNTQuNjUxTDI1NC40NjIgMzgxLjgzNEwyNTQuMzY3IDM4MS43NEwyNTQuMDg0IDM4MS41NTFDMjQ5LjY0NSAzNzkuMDAyIDI0NC43MzMgMzc3LjMwMiAyMzguODc3IDM3Ni4xNjlDMjM4LjQwNSAzNzYuMDc1IDIzNy45MzMgMzc1Ljk4IDIzNy41NTUgMzc1Ljk4TDIzNi43OTkgMzc1Ljg4NkMyMzYuNzA1IDM3NS44ODYgMjM2LjcwNSAzNzUuODg2IDIzNi42MTEgMzc1Ljg4NkMyMzYuNDIyIDM3NS44ODYgMjM2LjMyNyAzNzUuODg2IDIzNi4xMzggMzc1Ljc5MUMyMzMuMzk5IDM3NS40MTQgMjMwLjQ3MSAzNzUuMTMgMjI3LjQ0OSAzNzUuMDM2QzIyMy45NTQgMzc0Ljk0MiAyMjEuMTIxIDM3Mi4yOTggMjIwLjkzMiAzNjguODA0TDIyMC42NDggMzY0LjA4M0MyMjAuNjQ4IDM2My45ODkgMjIwLjY0OCAzNjMuODk1IDIyMC42NDggMzYzLjhDMjIwLjY0OCAzNjIuNDc4IDIyMS4xMjEgMzYxLjI1MSAyMjIuMDY1IDM2MC4xMThDMjI0Ljk5MyAzNTYuOTA4IDIzMS40MTYgMzU1LjM5NyAyMzQuOTEgMzU1LjMwM0wyMzUuMzgzIDM1NS4zOTdaTTE5NC41OCAzNDMuNzg0TDE5NC45NTggMzQzLjQwNkMxOTQuOTU4IDM0My40MDYgMTk1LjA1MiAzNDMuNDA2IDE5NS4wNTIgMzQzLjMxMUwxOTUuNTI0IDM0Mi44MzlDMTk1LjUyNCAzNDIuODM5IDE5NS41MjQgMzQyLjgzOSAxOTUuNjE5IDM0Mi43NDVMMTk2LjA5MSAzNDIuMjczQzE5OS45NjQgMzM4LjQ5NiAyMDQuMDI1IDMzNS40NzUgMjA4LjA4NiAzMzMuMzk3TDIwOS4zMTQgMzMyLjczN0MyMDkuMzE0IDMzMi43MzcgMjA5LjQwOSAzMzIuNzM3IDIwOS40MDkgMzMyLjY0MkwyMDkuNzg2IDMzMi40NTNDMjExLjk1OSAzMzEuNDE1IDIxNC4yMjYgMzMwLjc1NCAyMTYuMzk4IDMzMC4yODJDMjE3LjQzNyAzMzAuMDkzIDIxOC40NzYgMzI5LjkwNCAyMTkuNTE1IDMyOS44MUMyMjEuNDk4IDMyOS43MTUgMjIzLjE5OCAzMzAuMDkzIDIyNC44MDQgMzMxLjEzMUMyMjUuMTgyIDMzMS40MTUgMjI1LjU2IDMzMS42MDQgMjI1Ljg0MyAzMzEuOTgxTDIzMi42NDQgMzM4LjAyNEMyMzQuMjQ5IDMzOS40NCAyMzQuOTEgMzQxLjUxNyAyMzQuMzQ0IDM0My41OTVDMjMzLjc3NyAzNDUuNzY2IDIzMi4wNzcgMzQ3LjI3NyAyMjkuOTA0IDM0Ny42NTVIMjI5LjcxNkgyMjkuNjIxSDIyOS40MzJDMjI5LjMzOCAzNDcuNjU1IDIyOS4zMzggMzQ3LjY1NSAyMjkuMjQzIDM0Ny42NTVIMjI5LjA1NEMyMjguOTYgMzQ3LjY1NSAyMjguOTYgMzQ3LjY1NSAyMjguODY2IDM0Ny42NTVMMjI3LjgyNyAzNDcuOTM4SDIyNy43MzJMMjI3LjA3MSAzNDguMTI3SDIyNi45NzdMMjI2LjU5OSAzNDguMjIxQzIyMS42ODcgMzQ5LjU0MyAyMTYuOTY1IDM1MS45MDMgMjEyLjE0OCAzNTUuMTE0QzIxMi4xNDggMzU1LjExNCAyMTIuMDUzIDM1NS4xMTQgMjEyLjA1MyAzNTUuMjA4QzIxMS42NzUgMzU1LjQ5MSAyMTEuMjk4IDM1NS43NzUgMjExLjAxNCAzNTUuOTYzTDIxMC45MiAzNTYuMDU4QzIxMC45MiAzNTYuMDU4IDIxMC44MjUgMzU2LjA1OCAyMTAuODI1IDM1Ni4xNTJMMjEwLjM1MyAzNTYuNTNMMjEwLjI1OSAzNTYuNjI0QzIxMC4xNjQgMzU2LjcxOSAyMDkuOTc1IDM1Ni44MTMgMjA5Ljg4MSAzNTYuOTA4QzIwNy43MDkgMzU4LjYwNyAyMDUuNDQyIDM2MC40MDEgMjAzLjE3NSAzNjIuNTczQzIwMC42MjUgMzY0LjkzMyAxOTYuNzUyIDM2NS4wMjggMTk0LjEwOCAzNjIuNzYyTDE5MC42MTMgMzU5Ljc0QzE5MC41MTggMzU5LjY0NiAxOTAuNTE4IDM1OS42NDYgMTkwLjQyNCAzNTkuNTUxQzE4OS40NzkgMzU4LjYwNyAxODguOTEzIDM1Ny40NzQgMTg4LjkxMyAzNTUuOTYzQzE4OC43MjQgMzUxLjk5OCAxOTIuMjE5IDM0Ni4zMzMgMTk0LjU4IDM0My43ODRaTTE4Ny42ODUgMzYzLjUxN0wxOTEuMjc0IDM2Ni42MzNDMTkzLjM1MiAzNjguNDI3IDE5NS45OTcgMzY5LjM3MSAxOTguNjQxIDM2OS4zNzFDMjAxLjQ3NSAzNjkuMzcxIDIwNC4yMTQgMzY4LjMzMiAyMDYuNDgxIDM2Ni4yNTVDMjA4LjU1OSAzNjQuMjcyIDIxMC43MzEgMzYyLjQ3OCAyMTIuNzE0IDM2MC45NjhDMjEzLjc1MyAzNjEuODE3IDIxNC44ODcgMzYyLjU3MyAyMTYuMTE1IDM2My4wNDVDMjE2LjExNSAzNjMuNTE3IDIxNi4xMTUgMzYzLjg5NSAyMTYuMTE1IDM2NC4zNjdMMjE2LjM5OCAzNjkuMDg4QzIxNi43NzYgMzc0Ljg0NyAyMjEuNDk4IDM3OS4zNzkgMjI3LjM1NCAzNzkuNTY4QzIzMC4xODggMzc5LjY2MyAyMzIuOTI3IDM3OS44NTEgMjM1LjQ3NyAzODAuMjI5QzIzNS41NzIgMzgxLjU1MSAyMzUuODU1IDM4Mi44NzMgMjM2LjQyMiAzODQuMUMyMzYuMTM4IDM4NC4zODMgMjM1Ljc2IDM4NC42NjcgMjM1LjQ3NyAzODUuMDQ0TDIzMi40NTUgMzg4LjUzOEwyMzIuMzYgMzg4LjYzMkMyMjguNTgyIDM5Mi45NzYgMjI4Ljc3MSAzOTkuNDkgMjMyLjczOCA0MDMuNzM5QzIzNC43MjEgNDA1LjgxNiAyMzYuNDIyIDQwNy44OTQgMjM4LjAyNyA0MDkuOTcxQzIzNy4xNzcgNDExLjAxIDIzNi40MjIgNDEyLjE0MyAyMzUuOTQ5IDQxMy4zN0MyMzUuNDc3IDQxMy4zNyAyMzUuMDk5IDQxMy4zNyAyMzQuNjI3IDQxMy4zN0wyMjkuOTA0IDQxMy42NTNDMjI0LjE0MyA0MTQuMDMxIDIxOS42MDkgNDE4Ljc1MiAyMTkuNDIgNDI0LjYwNkMyMTkuMzI2IDQyNy40MzggMjE5LjEzNyA0MzAuMTc2IDIxOC43NTkgNDMyLjcyNkMyMTcuNDM3IDQzMi44MiAyMTYuMTE1IDQzMy4xMDMgMjE0Ljg4NyA0MzMuNjdDMjE0LjYwMyA0MzMuMzg3IDIxNC4zMiA0MzMuMDA5IDIxMy45NDIgNDMyLjcyNkwyMTAuNDQ4IDQyOS43MDRDMjEwLjQ0OCA0MjkuNzA0IDIxMC4zNTMgNDI5LjcwNCAyMTAuMzUzIDQyOS42MUMyMDYuMDA4IDQyNS44MzMgMTk5LjQ5MSA0MjYuMDIyIDE5NS4yNDEgNDI5Ljk4OEMxOTMuMTYzIDQzMS45NyAxOTEuMDg1IDQzMy43NjQgMTg5LjAwNyA0MzUuMjc1QzE4Ny45NjggNDM0LjQyNSAxODYuODM1IDQzMy42NyAxODUuNjA3IDQzMy4xOThDMTg1LjYwNyA0MzIuNzI2IDE4NS42MDcgNDMyLjM0OCAxODUuNjA3IDQzMS44NzZMMTg1LjMyNCA0MjcuMTU1QzE4NC45NDYgNDIxLjM5NiAxODAuMjIzIDQxNi44NjMgMTc0LjM2NyA0MTYuNjc1QzE3MS41MzQgNDE2LjU4IDE2OC43OTUgNDE2LjM5MSAxNjYuMjQ1IDQxNi4wMTRDMTY2LjE1IDQxNC42OTIgMTY1Ljg2NyA0MTMuMzcgMTY1LjMgNDEyLjE0M0MxNjUuNTgzIDQxMS44NTkgMTY1Ljk2MSA0MTEuNTc2IDE2Ni4yNDUgNDExLjE5OEwxNjkuMjY3IDQwNy43MDVMMTY5LjM2MSA0MDcuNjFDMTczLjA0NSA0MDMuMjY3IDE3Mi45NTEgMzk2Ljc1MiAxNjguOTg0IDM5Mi41MDNDMTY3IDM5MC40MjYgMTY1LjIwNiAzODguMzQ5IDE2My42OTQgMzg2LjI3MkMxNjQuNTQ0IDM4NS4yMzMgMTY1LjMgMzg0LjEgMTY1Ljc3MiAzODIuODczQzE2NS45NjEgMzgyLjg3MyAxNjYuMTUgMzgyLjg3MyAxNjYuNDMzIDM4Mi44NzNDMTY2LjYyMiAzODIuODczIDE2Ni45MDYgMzgyLjg3MyAxNjcuMDk1IDM4Mi44NzNMMTcxLjgxNyAzODIuNTlDMTc3LjU3OSAzODIuMjEyIDE4Mi4xMTIgMzc3LjQ5MSAxODIuMzAxIDM3MS42MzdDMTgyLjM5NiAzNjguODA0IDE4Mi41ODUgMzY2LjA2NiAxODIuOTYyIDM2My41MTdDMTg0LjI4NSAzNjMuNDIzIDE4NS42MDcgMzYzLjEzOSAxODYuODM1IDM2Mi41NzNDMTg3LjAyNCAzNjIuOTUgMTg3LjMwNyAzNjMuMjM0IDE4Ny42ODUgMzYzLjUxN1pNMTU4LjAyNyAzNjIuNzYyVjM2Mi40NzhWMzYyLjI5VjM2Mi4xOTVWMzYyLjEwMUMxNTguMTIyIDM1Ni43MTkgMTU4Ljg3NyAzNTEuNzE1IDE2MC4yIDM0Ny4zNzFWMzQ3LjI3N0wxNjAuNDgzIDM0Ni4yMzhDMTYwLjQ4MyAzNDYuMjM4IDE2MC41NzcgMzQ2LjE0NCAxNjAuNTc3IDM0Ni4wNUwxNjAuODYxIDM0NS4zODlDMTYxLjcxMSAzNDMuMTIzIDE2Mi43NSAzNDEuMTQgMTYzLjk3OCAzMzkuMjUxQzE2NC41NDQgMzM4LjMwNyAxNjUuMjA2IDMzNy40NTcgMTY1Ljk2MSAzMzYuNjA4QzE2Ny4yODQgMzM1LjA5NyAxNjguNzk1IDMzNC4xNTMgMTcwLjY4NCAzMzMuODdDMTcxLjE1NiAzMzMuNzc1IDE3MS41MzQgMzMzLjY4MSAxNzIuMDA2IDMzMy42ODFMMTgxLjE2OCAzMzMuMjA5QzE4My4zNCAzMzMuMTE0IDE4NS4yMjkgMzM0LjE1MyAxODYuMjY4IDMzNi4wNDFDMTg3LjMwNyAzMzcuOTMgMTg3LjIxMyAzNDAuMTk2IDE4NS45ODUgMzQyLjA4NEwxODUuODkgMzQyLjE3OEwxODUuNzk2IDM0Mi4yNzNMMTg1LjcwMSAzNDIuNDYyQzE4NS43MDEgMzQyLjQ2MiAxODUuNzAxIDM0Mi41NTYgMTg1LjYwNyAzNDIuNTU2TDE4NS40MTggMzQyLjgzOUwxODUuMjI5IDM0My4xMjNMMTg1LjEzNSAzNDMuMjE3TDE4NC45NDYgMzQzLjVDMTg0Ljk0NiAzNDMuNSAxODQuOTQ2IDM0My41OTUgMTg0Ljg1MSAzNDMuNTk1TDE4NC41NjggMzQzLjk3MkMxODQuNTY4IDM0My45NzIgMTg0LjU2OCAzNDQuMDY3IDE4NC40NzQgMzQ0LjA2N0wxODQuMzc5IDM0NC4xNjFDMTg0LjM3OSAzNDQuMTYxIDE4NC4zNzkgMzQ0LjI1NiAxODQuMjg1IDM0NC4yNTZMMTg0LjE5IDM0NC40NDRDMTg0LjE5IDM0NC40NDQgMTg0LjE5IDM0NC41MzkgMTg0LjA5NiAzNDQuNTM5TDE4My45MDcgMzQ0LjgyMkMxODEuMzU3IDM0OS4yNiAxNzkuNjU3IDM1NC4xNyAxNzguNTIzIDM2MC4wMjNDMTc4LjQyOSAzNjAuNDk2IDE3OC4zMzQgMzYwLjk2OCAxNzguMzM0IDM2MS4zNDVMMTc4LjI0IDM2Mi4xMDFDMTc4LjI0IDM2Mi4xOTUgMTc4LjI0IDM2Mi4xOTUgMTc4LjI0IDM2Mi4yOUMxNzguMjQgMzYyLjQ3OCAxNzguMjQgMzYyLjU3MyAxNzguMTQ1IDM2Mi43NjJDMTc3Ljc2OCAzNjUuNSAxNzcuNDg0IDM2OC40MjcgMTc3LjM5IDM3MS40NDhDMTc3LjI5NSAzNzQuOTQyIDE3NC42NTEgMzc3Ljc3NCAxNzEuMTU2IDM3Ny45NjNMMTY2LjQzMyAzNzguMjQ2QzE2Ni4zMzkgMzc4LjI0NiAxNjYuMjQ1IDM3OC4yNDYgMTY2LjE1IDM3OC4yNDZDMTY0LjgyOCAzNzguMjQ2IDE2My42IDM3Ny43NzQgMTYyLjQ2NiAzNzYuODNDMTU5LjM1IDM3My45MDMgMTU3Ljc0NCAzNjcuNDgzIDE1Ny42NDkgMzYzLjk4OVYzNjMuNDIzVjM2My4zMjhMMTU4LjAyNyAzNjIuNzYyWk0xMzUuNDU0IDM4OS40ODJMMTM1LjM1OSAzODkuMjkzQzEzNS4zNTkgMzg5LjI5MyAxMzUuMzU5IDM4OS4yOTMgMTM1LjM1OSAzODkuMTk5TDEzNS4yNjUgMzg5LjAxQzEzNS4yNjUgMzg5LjAxIDEzNS4yNjUgMzg5LjAxIDEzNS4yNjUgMzg4LjkxNkMxMzQuMzIgMzg2Ljc0NCAxMzMuNTY1IDM4NC41NzIgMTMzLjA5MiAzODIuNDAxQzEzMi45MDMgMzgxLjM2MiAxMzIuNzE0IDM4MC4zMjMgMTMyLjYyIDM3OS4yODVDMTMyLjUyNiAzNzcuMzAyIDEzMi45MDMgMzc1LjYwMyAxMzMuOTQyIDM3My45OTdDMTM0LjIyNiAzNzMuNjIgMTM0LjQxNSAzNzMuMjQyIDEzNC43OTIgMzcyLjk1OUwxNDAuODM3IDM2Ni4xNjFDMTQyLjI1NCAzNjQuNTU2IDE0NC4zMzIgMzYzLjg5NSAxNDYuNDEgMzY0LjQ2MUMxNDguNTgyIDM2NS4wMjggMTUwLjA5MyAzNjYuNzI3IDE1MC40NzEgMzY4Ljg5OVYzNjkuMTgyVjM2OS4yNzdWMzY5LjU2VjM2OS42NTRMMTUwLjU2NiAzNjkuOTM3VjM3MC4wMzJMMTUwLjc1NSAzNzEuMDdWMzcxLjE2NUwxNTAuOTQzIDM3MS44MjZDMTUwLjk0MyAzNzEuOTIgMTUwLjk0MyAzNzEuOTIgMTUwLjk0MyAzNzIuMDE1TDE1MS4wMzggMzcyLjI5OEMxNTIuMzYgMzc3LjIwOCAxNTQuNjI3IDM4MS45MjkgMTU3LjkzMyAzODYuNzQ0QzE1Ny45MzMgMzg2Ljc0NCAxNTcuOTMzIDM4Ni44MzggMTU4LjAyNyAzODYuODM4QzE1OC4zMTEgMzg3LjIxNiAxNTguNSAzODcuNTk0IDE1OC43ODMgMzg3Ljg3N0wxNTkuMjU1IDM4OC41MzhMMTU5LjM1IDM4OC42MzJDMTU5LjQ0NCAzODguNzI3IDE1OS41MzkgMzg4LjkxNiAxNTkuNjMzIDM4OS4wMUMxNjEuMjM5IDM5MS4xODIgMTYzLjEyOCAzOTMuNDQ4IDE2NS4zIDM5NS43MTRDMTY3LjY2MSAzOTguMjYzIDE2Ny43NTYgNDAyLjEzNCAxNjUuNDg5IDQwNC43NzhMMTY1LjM5NCA0MDQuODcyTDE2Mi40NjYgNDA4LjI3MUMxNjIuMzcyIDQwOC4zNjYgMTYyLjM3MiA0MDguMzY2IDE2Mi4yNzggNDA4LjQ2QzE2MS4zMzMgNDA5LjQwNCAxNjAuMiA0MDkuOTcxIDE1OC42ODggNDA5Ljk3MUMxNTQuMzQ0IDQxMC4xNiAxNDguNjc3IDQwNi42NjYgMTQ2LjIyMSA0MDQuMzA2TDE0NS44NDMgNDAzLjkyOEMxNDUuODQzIDQwMy45MjggMTQ1Ljg0MyA0MDMuOTI4IDE0NS43NDkgNDAzLjgzNEwxNDQuODA0IDQwMi44OUMxNDEuMDI2IDM5OS4wMTggMTM4LjAwNCAzOTQuOTU4IDEzNS45MjYgMzkwLjg5OFYzOTAuODA0TDEzNS43MzcgMzkwLjQyNkMxMzUuNzM3IDM5MC40MjYgMTM1LjczNyAzOTAuNDI2IDEzNS43MzcgMzkwLjMzMkwxMzUuMzU5IDM4OS40ODJDMTM1LjQ1NCAzODkuNTc2IDEzNS40NTQgMzg5LjQ4MiAxMzUuNDU0IDM4OS40ODJaTTE2Ni4xNSA0NDAuOTRIMTY2LjA1NkgxNjUuODY3SDE2NS43NzJIMTY1LjY3OEgxNjUuNDg5SDE2NS4yMDZIMTY1LjAxN0gxNjQuOTIySDE2NC43MzNDMTU5LjM1IDQ0MC44NDYgMTU0LjM0NCA0NDAuMDkgMTQ5Ljk5OSA0MzguNzY5SDE0OS45MDVMMTQ4Ljg2NiA0MzguMzkxSDE0OC43NzFMMTQ4LjExIDQzOC4xMDhDMTQ1Ljg0MyA0MzcuMjU4IDE0My44NiA0MzYuMjE5IDE0MS45NzEgNDM0Ljk5MkMxNDEuMDI2IDQzNC40MjUgMTQwLjE3NiA0MzMuNzY0IDEzOS4zMjYgNDMzLjEwM0MxMzcuODE1IDQzMS43ODIgMTM2Ljg3IDQzMC4yNzEgMTM2LjU4NyA0MjguMzgzQzEzNi40OTIgNDI3LjkxIDEzNi4zOTggNDI3LjUzMyAxMzYuMzk4IDQyNy4wNjFMMTM1LjkyNiA0MTcuOTAyQzEzNS44MzEgNDE1LjczIDEzNi44NyA0MTMuODQyIDEzOC43NTkgNDEyLjgwM0MxNDAuNjQ4IDQxMS43NjUgMTQyLjkxNSA0MTEuODU5IDE0NC44MDQgNDEzLjA4N0wxNDQuODk5IDQxMy4xODFDMTQ0Ljk5MyA0MTMuMTgxIDE0NC45OTMgNDEzLjI3NiAxNDUuMDg4IDQxMy4yNzZMMTQ1LjM3MSA0MTMuNDY0QzE0NS4zNzEgNDEzLjQ2NCAxNDUuNDY1IDQxMy40NjQgMTQ1LjQ2NSA0MTMuNTU5TDE0NS41NiA0MTMuNjUzTDE0NS44NDMgNDEzLjg0MkwxNDUuOTM4IDQxMy45MzZMMTQ2LjUwNCA0MTQuMjJMMTQ2LjU5OSA0MTQuMzE0TDE0Ni45NzcgNDE0LjUwM0gxNDcuMDcxTDE0Ny4yNiA0MTQuNTk3QzE0Ny4yNiA0MTQuNTk3IDE0Ny4zNTQgNDE0LjU5NyAxNDcuMzU0IDQxNC42OTJMMTQ3LjYzOCA0MTQuODgxQzE1Mi4wNzcgNDE3LjQzIDE1Ni45ODggNDE5LjEzIDE2Mi44NDQgNDIwLjI2M0MxNjMuMzE3IDQyMC4zNTcgMTYzLjc4OSA0MjAuNDUxIDE2NC4xNjcgNDIwLjQ1MUwxNjQuOTIyIDQyMC41NDZIMTY1LjAxN0MxNjUuMjA2IDQyMC41NDYgMTY1LjMgNDIwLjU0NiAxNjUuNDg5IDQyMC42NEMxNjguMjI4IDQyMS4wMTggMTcxLjE1NiA0MjEuMzAxIDE3NC4xNzggNDIxLjM5NkMxNzcuNjczIDQyMS40OSAxODAuNTA3IDQyNC4xMzQgMTgwLjY5NiA0MjcuNjI3TDE4MC45NzkgNDMyLjM0OEMxODAuOTc5IDQzMi40NDMgMTgwLjk3OSA0MzIuNTM3IDE4MC45NzkgNDMyLjYzMUMxODAuOTc5IDQzMy45NTMgMTgwLjUwNyA0MzUuMTgxIDE3OS41NjIgNDM2LjMxNEMxNzYuNjM0IDQzOS41MjQgMTcwLjIxMSA0NDEuMDM1IDE2Ni43MTcgNDQxLjEyOUwxNjYuMTUgNDQwLjk0Wk0xOTMuNTQxIDQ2Mi43NTFDMTkzLjU0MSA0NjIuNzUxIDE5My40NDYgNDYyLjc1MSAxOTMuNDQ2IDQ2Mi44NDVMMTkyLjIxOSA0NjMuNDEyQzE5Mi4yMTkgNDYzLjQxMiAxOTIuMTI0IDQ2My40MTIgMTkyLjEyNCA0NjMuNTA2TDE5MS45MzUgNDYzLjYwMUwxOTEuNzQ2IDQ2My42OTVDMTg5LjU3NCA0NjQuNzM0IDE4Ny4zMDcgNDY1LjM5NSAxODUuMTM1IDQ2NS44NjdDMTg0LjA5NiA0NjYuMDU2IDE4My4wNTcgNDY2LjI0NCAxODIuMDE4IDQ2Ni4zMzlDMTgwLjAzNCA0NjYuNDMzIDE3OC4zMzQgNDY2LjA1NiAxNzYuNzI5IDQ2NS4wMTdDMTc2LjM1MSA0NjQuNzM0IDE3NS45NzMgNDY0LjU0NSAxNzUuNjkgNDY0LjE2N0wxNjguODg5IDQ1OC4xMjRDMTY3LjI4NCA0NTYuNzA4IDE2Ni42MjIgNDU0LjYzMSAxNjcuMTg5IDQ1Mi41NTRDMTY3Ljc1NiA0NTAuMzgyIDE2OS40NTYgNDQ4Ljg3MSAxNzEuNzIzIDQ0OC40OTRIMTcxLjgxN0MxNzEuOTEyIDQ0OC40OTQgMTcxLjkxMiA0NDguNDk0IDE3Mi4wMDYgNDQ4LjQ5NEgxNzIuMTk1SDE3Mi4yODlMMTcyLjU3MyA0NDguMzk5SDE3Mi42NjdMMTczLjcwNiA0NDguMTE2SDE3My44MDFMMTc0LjU1NiA0NDcuOTI3SDE3NC42NTFMMTc1LjAyOCA0NDcuODMzQzE3OS45NCA0NDYuNTExIDE4NC42NjIgNDQ0LjI0NSAxODkuNTc0IDQ0MC44NDZDMTg5Ljk1MiA0NDAuNTYzIDE5MC4zMyA0NDAuMjc5IDE5MC43MDcgNDQwLjA5TDE5MS4yNzQgNDM5LjYxOEMxOTEuMzY4IDQzOS42MTggMTkxLjM2OSA0MzkuNTI0IDE5MS40NjMgNDM5LjUyNEMxOTEuNTU3IDQzOS40MjkgMTkxLjc0NiA0MzkuMzM1IDE5MS44NDEgNDM5LjI0MUMxOTQuMDEzIDQzNy41NDEgMTk2LjI4IDQzNS42NTMgMTk4LjU0NyA0MzMuNTc2QzIwMS4wOTcgNDMxLjIxNSAyMDQuOTY5IDQzMS4xMjEgMjA3LjYxNCA0MzMuMzg3QzIwNy42MTQgNDMzLjM4NyAyMDcuNzA5IDQzMy4zODcgMjA3LjcwOSA0MzMuNDgxTDIxMS4xMDkgNDM2LjUwMkMyMTEuMjAzIDQzNi41OTcgMjExLjIwMyA0MzYuNTk3IDIxMS4yOTggNDM2LjY5MUMyMTIuMjQyIDQzNy42MzYgMjEyLjgwOSA0MzguNzY5IDIxMi44MDkgNDQwLjI3OUMyMTIuOTk4IDQ0NC41MjggMjA5LjUwMyA0NTAuMjg4IDIwNy4xNDIgNDUyLjc0MkwyMDYuNzY0IDQ1My4xMkMyMDYuNzY0IDQ1My4xMiAyMDYuNzY0IDQ1My4xMiAyMDYuNjcgNDUzLjIxNUwyMDUuNzI1IDQ1NC4xNTlDMjAxLjY2NCA0NTcuNjUyIDE5Ny42MDIgNDYwLjY3NCAxOTMuNTQxIDQ2Mi43NTFaIiBmaWxsPSJ3aGl0ZSIvPgo8L3N2Zz4K",\n "links": {\n "mainnet": "https://tzsafe.marigold.dev",\n "ghostnet": "https://ghostnet.tzsafe.marigold.dev",\n "weeklynet": "https://ghostnet.tzsafe.marigold.dev",\n "dailynet": "https://ghostnet.tzsafe.marigold.dev",\n "delphinet": "https://ghostnet.tzsafe.marigold.dev",\n "edonet": "https://ghostnet.tzsafe.marigold.dev",\n "florencenet": "https://ghostnet.tzsafe.marigold.dev",\n "granadanet": "https://ghostnet.tzsafe.marigold.dev",\n "hangzhounet": "https://ghostnet.tzsafe.marigold.dev",\n "ithacanet": "https://ghostnet.tzsafe.marigold.dev",\n "jakartanet": "https://ghostnet.tzsafe.marigold.dev",\n "kathmandunet": "https://ghostnet.tzsafe.marigold.dev",\n "limanet": "https://ghostnet.tzsafe.marigold.dev",\n "mumbainet": "https://ghostnet.tzsafe.marigold.dev",\n "nairobinet": "https://ghostnet.tzsafe.marigold.dev",\n "oxfordnet": "https://ghostnet.tzsafe.marigold.dev"\n }\n }\n];\nexports.iOSList = [\n {\n "key": "airgap_ios",\n "name": "AirGap Wallet",\n "shortName": "AirGap",\n "color": "rgb(4, 235, 204)",\n "logo": "data:image/png;base64,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",\n "universalLink": "https://wallet.airgap.it",\n "deepLink": "airgap-wallet://"\n },\n {\n "key": "plenty_wallet_ios",\n "name": "Plenty Wallet - your portal to web3 ",\n "shortName": "Plenty Wallet",\n "color": "",\n "logo": "data:image/png;base64,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",\n "universalLink": "https://www.naan.app/",\n "deepLink": "naan://"\n },\n {\n "key": "altme_wallet",\n "name": "Altme Wallet",\n "shortName": "Altme",\n "color": "",\n "logo": "data:image/png;base64,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",\n "universalLink": "https://app.altme.io/app/download"\n },\n {\n "key": "feralfile_app",\n "name": "Feral File - The place to experience digital art today",\n "shortName": "Feral File",\n "color": "rgb(236, 255, 12)",\n "logo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAM/klEQVR4Ae3Be2iWBf/H8ff1vS9337XN1ZZiC3OJWNlJFAUVQ1fmk0mHtTIqC5FGJPhHJVZYYUQHOvwhGGFIB0uyllaYYcqyooJEsZOYRGrRNJva3Fa75+5dz4+C5yF6+ieIu5+fz+uVZP8HM5MUmJmswMxkBWYmKzAzWYGZyQrMTFZgZrICM5MVmJmswMxkBWYmKzAzWYGZyQrMTFZgZrICM5MVmJmswMxkBWYmKzAzWYGZyQrMTFZgZrICM5MVmJmswMxkBWYmKzAzWYGZyQrMTFZgZrICM5MVmJmswMxkBWYmKzAzWYGZyQrMTFZgZrICM5MVmJmswMxkBWYmKzAzWYGZyQrMTFZgZrICM5MVmJmswMxkBWYmKzAzWYGZyQrMTFZgZrICM5MVmJmswMxkBWYmKzAzWYGZyQrMTFaKuNbWVvr6+lCUy+Vobm4ml8uhqK+vj9bWVsqlUCjQ1NREOaUIy7KMlpYWjhw5gqKKigquuOIKcrkcirq6urjxxhvJsoxyGDZsGE1NTZRTIC4iUBURKEuShHJKkoRyC8xMVmBmsgIzkxWYmazAzGQFZiYrMDNZgZnJCsxMVmBmsgIzkxWYmazAzGQFZiYrEHbs2DFKpRKq0jQlSRJUFYtF1AXCOjs76e3tRVVNTQ1pmqKqo6ODLMtQFghrb2+nt7cXVQ0NDeRyOVTt2bMHdYGw7du3o2zixIko27p1K+oCYRs2bEDZjBkzUJVlGe+88w7qAlGdnZ1s2rQJVfX19TQ2NqLq66+/Ztu2bagLRK1atYrOzk5UzZ8/n3w+j6qnn36aUqmEukBQV1cXjz/+OKpqa2tZuHAhqr799ltWrlyJQSDooYceYt++fah66KGHOOWUU1C1ePFiOjs7MQjEbNmyhSeffBJVV155JbfccguqVq1axZo1a7DfBEK+/vprrr/+evr6+lA0duxYnnvuOSICRR9//DELFiwgyzLsNykidu/ezcUXX8z+/ftRNG7cODZs2EBNTQ2KPvroI2bPnk1XVxf2XykCNmzYwM0330xHRweKrrvuOp5++mlqampQ9Oyzz7Jw4UK6u7ux30s5jnV0dHDvvffyzDPPUCqVUDN8+HAefvhhrr/+epIkQc3evXtZtGgRra2t2P+WchzavXs3zz77LCtWrODw4cMoSZKEMWPG0NLSwvz586msrERJlmV8+umnrFixglWrVtHd3Y39uZQy27VrF/39/fxV/f39dHd3s3fvXrZt28YHH3zAjh07KJVK/F0qKiqoq6ujqqqKiKCcKioqGDx4MCNGjGDixIlMmzaNc889l1wux9+lWCzS3t5OT08P5Xbs2DGOHj3KN998w9atW3nvvffYtWsXAwMD/F0KhQJ1dXVUVlaSJAl/VV1dHeWWUmbTp0/nwIED/NOdc845NDU10djYyPnnn091dTWDBg1CxaeffkprayttbW3s3LmTo0ePMjAwgIIkSRg/fjzNzc1ceOGFjBkzhsrKStI05f+7lDJLkoR/sqlTp3Lfffcxffp0crkcajZu3MiDDz7IRx99xMDAAEoigssuu4wlS5YwYcIEkiTheJNi/9OQIUNYtmwZc+bMIUkS1Bw4cIDbbruN119/nSzLUHPGGWewYsUKLr74Yo5nKfYH48aNY926dZx++uko+vDDD7n22mtpb29H0cyZM3nppZeoq6vjeJdivzNlyhTWr1/PSSedhKINGzZw7bXX0tPTg6Krr76aF198kUKhgILA/uPcc8/lzTff5KSTTkLR9u3bmTNnDj09PSi66KKLWLVqFYVCARWB/aq6uppXX32V2tpaFB0+fJirr76a7u5uFJ122mmsXr2aE044ASWB/Wrp0qWcddZZqFq0aBF79+5FUZIkLFu2jKFDh6ImMM4880wWLFiAqh07dvDCCy+gqrGxkaamJhQFxh133EFFRQWqHnnkEfr7+1G1ePFiVAXiqquraW5uRtWBAwd44403UDVy5EimT5+OqkDctGnTOPnkk1H19ttv09vbi6rZs2eTpimqAnGNjY0o27RpE8oaGxtRFog777zzUPbll1+iKkkSxowZg7JA3PDhw1HV399Pe3s7qk488USGDh2KskBYkiTU1dWhqlQq0dPTg6p8Pk91dTXKAnFJkqAqyzKyLENVkiQkSYKywMxkBWYmKzAzWYGZyQrMTFZgZrICM5MVmJmswMxkBWYmKzAzWYGZyQrMTFZgZrJSyiyfz1MoFCiHJEkoFov09vaiqFgsks/nUVVRUUGxWKRckiQhn89TTilltmvXLrIso1xGjhzJkSNHUJTP59m3bx/5fB5FR44coba2lizLKIdhw4axZ88eyimlzPL5POWSZRl9fX309vaiKp/PUygUUJTP5+nt7SXLMsqhWCxSboGZyQrMTFZgZrICM5MVmJmswMxkBWYmKzAzWYGZyQrMTFZgZrICM5MVmJmswMxkBcKyLCPLMlQlSUKSJKjKsgx1gbCuri6KxSKqKisryeVyqDp06BBZlqEsEHbw4EF+/vlnVNXX15OmKaq+++471AXCdu7cSZZlqDrnnHNQ9vnnn6MuENbW1oayGTNmoKytrQ11gaj+/n7Wr1+PqkKhwKWXXoqqI0eOsGXLFtQFot59912++eYbVF1xxRUMGzYMVa2trXR1daEuEPXoo4+iKk1T7rrrLlT19fXxxBNPYBAIWrt2LW1tbai66aabGDt2LKqWL1/OV199hUEg5uDBgyxcuJAsy1DU0NDAY489hqpdu3Zx//33Y78JhPzyyy/ccMMNfP/99yiqqqritddeo7a2FkWHDx/mmmuuoaurC/tNIKJYLHLTTTexefNmFFVWVrJmzRrGjRuHop9++onLL7+cL774AvuvFAGHDh3ihhtuYOPGjSiqr6/nlVdeYcqUKSj69ttvueqqq9i+fTv2eynHuc2bN9PS0sKePXtQkyQJV155JU899RTDhg1DTZZlrFmzhoULF/Ljjz9if5RyHMqyjK1bt/Lggw/y1ltvMTAwgJKIYPLkySxZsoSZM2eiplQqsWXLFpYuXcoHH3yA/bmU40B/fz89PT3s3LmT999/n9bWVrZt20aWZSiICAYPHsyYMWNobGykubmZCy64ABXHjh2jq6uLzz77jLa2NtauXcuXX37JP12WZZRbSplNmTKFQ4cO8VdlWcbPP/9MR0cHvb29/F0igrPPPpupU6cyceJERo4cyeDBgxk0aBDlVllZSX19Pfl8nr9LqVTiiy++YMuWLXzyySfs27ePo0eP0tfXRzkNDAzQ3d3NoUOH6Ovr4++Sy+UYO3YsU6dOZfz48TQ0NFBVVUWapvxVaZpSbilltmfPHvbv388/VVVVFXPnzqWlpYULLriAJElQ0tPTw8qVK1mxYgU7d+4kyzKU1NbW0tLSwrx58xg9ejTHmxT7U83NzTz22GM0NDSgJssyVq9ezd133813332Hmlwuxy233MIDDzzAkCFDOF6l2B9UVVWxbNky5s2bh6LOzk5uvfVWXn75ZRSdcsopPP/888yaNYvjXYr9zsknn8z69euZPHkyin744QdmzZrF9u3bUTR8+HA2b97M6NGjUZBi/1FdXc1bb73FpEmTUNTZ2cm//vUvduzYgaJTTz2VtrY2Ro0ahYrAfpUkCcuXL2fSpEkoGhgYYN68eezYsQNFFRUVrF69mlGjRqEksF/NmTOHuXPnouqZZ55h3bp1qLr99tuZNm0aagKjpqaGRx99FFUdHR3cc889qBoxYgT33HMPigJj/vz5nH766ahatmwZhw8fRtWdd95JdXU1igJxuVyOW2+9FVXFYpGVK1eiqqamhrlz56IqEDd+/HhGjRqFqra2Ntrb21E1Y8YMampqUBWIu+SSS0iSBFWbNm1C2axZs1AWiJswYQLKPvnkE5SNGzcOZYG4hoYGVJVKJfbu3YuqQqFAfX09ygJhSZIwZMgQVPX399PZ2YmqQqFATU0NygJx+XweVVmW0d/fj6pcLsegQYNQFpiZrMDMZAVmJiswM1mBmckKzExWYGayAjOTFZiZrMDMZAVmJiswM1mBmckKzExWUGZZllFOWZahbGBgAFUDAwOoSymz5cuX09vbS7lUV1ejatCgQbzwwguUSiUUVVRUkCQJylLKrKmpCSuPXC7HnDlzMF2BmckKzExWYGayAjOTFZiZrMDMZAVmJiswM1mBmckKzExWYGayAjOTFZiZrMDMZAVmJiswM1mBmckKzExWYGayAjOTFZiZrMDMZAVmJiswM1mBmckKzExWYGayAjOTFZiZrMDMZAVmJiswM1mBmckKzExWYGayAjOTFZiZrMDMZAVmJiswM1mBmckKzExWYGayAjOTFZiZrMDMZAVmJiswM1mBmckKzExWYGayAjOTFZiZrMDMZAVmJiswM1mBmckKzExWYGayAjOTFZiZrMDMZP0bvkGl4FxzioIAAAAASUVORK5CYII=",\n "universalLink": "https://app.feralfile.com/apps/tezos",\n "deepLink": "autonomy-tezos://"\n },\n {\n "key": "temple_ios",\n "name": "Temple Wallet",\n "shortName": "Temple",\n "color": "",\n "logo": "data:image/png;base64,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",\n "universalLink": "https://templewallet.com",\n "deepLink": "temple://"\n },\n {\n "key": "atomex_ios",\n "name": "Atomex Wallet",\n "shortName": "Atomex",\n "color": "",\n "logo": "data:image/png;base64,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",\n "universalLink": "https://atomex.me",\n "deepLink": "atomex://"\n },\n {\n "key": "umami_ios",\n "name": "Umami Mobile",\n "shortName": "Umami Mobile",\n "color": "",\n "logo": "data:image/png;base64,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",\n "deepLink": "umami://",\n "universalLink": "https://umamiwallet.com/"\n },\n {\n "key": "trust_ios",\n "name": "Trust Wallet",\n "shortName": "Trust Wallet",\n "color": "",\n "supportedInteractionStandards": [\n "wallet_connect"\n ],\n "logo": "data:image/png;base64,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",\n "universalLink": "https://link.trustwallet.com",\n "deepLink": "trust://"\n },\n {\n "key": "exodus_mobile",\n "name": "Exodus Mobile",\n "shortName": "Exodus",\n "color": "",\n "logo": "data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjMwMCIgdmlld0JveD0iMCAwIDMwMCAzMDAiIHdpZHRoPSIzMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxsaW5lYXJHcmFkaWVudCBpZD0iYSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIyNTYuODc1IiB4Mj0iMTcxLjMiIHkxPSIzMjAuNjI1IiB5Mj0iLTMyLjk0NTkiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzBiNDZmOSIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI2JiZmJlMCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJiIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjIyLjUwMDIiIHgyPSIxNzAuNjI1IiB5MT0iNjcuNSIgeTI9IjE3OC4xMjUiPjxzdG9wIG9mZnNldD0iLjExOTc5MiIgc3RvcC1jb2xvcj0iIzg5NTJmZiIgc3RvcC1vcGFjaXR5PSIuODciLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNkYWJkZmYiIHN0b3Atb3BhY2l0eT0iMCIvPjwvbGluZWFyR3JhZGllbnQ+PG1hc2sgaWQ9ImMiIGhlaWdodD0iMzAwIiBtYXNrVW5pdHM9InVzZXJTcGFjZU9uVXNlIiB3aWR0aD0iMjk2IiB4PSIzIiB5PSIwIj48cGF0aCBkPSJtMjk4LjIwNCA4My43NjQ1LTEyNy43NTQtODMuNzY0NXY0Ni44MzMybDgxLjk1NSA1My4yNTU4LTkuNjQyIDMwLjUwOWgtNzIuMzEzdjM4LjgwNGg3Mi4zMTNsOS42NDIgMzAuNTA5LTgxLjk1NSA1My4yNTZ2NDYuODMzbDEyNy43NTQtODMuNDk3LTIwLjg5MS02Ni4zNjl6IiBmaWxsPSJ1cmwoI2EpIi8+PHBhdGggZD0ibTU5LjMwMSAxNjkuNDAyaDcyLjA0NnYtMzguODA0aC03Mi4zMTM4bC05LjM3NC0zMC41MDkgODEuNjg3OC01My4yNTU4di00Ni44MzMybC0xMjcuNzU0MjMgODMuNzY0NSAyMC44OTA2MyA2Ni4zNjk1LTIwLjg5MDYzIDY2LjM2OSAxMjguMDIyMjMgODMuNDk3di00Ni44MzNsLTgxLjk1NTgtNTMuMjU2eiIgZmlsbD0idXJsKCNhKSIvPjwvbWFzaz48cGF0aCBkPSJtMjk4LjIwMyA4My43NjQ1LTEyNy43NTQtODMuNzY0NXY0Ni44MzMybDgxLjk1NiA1My4yNTU4LTkuNjQyIDMwLjUwOWgtNzIuMzE0djM4LjgwNGg3Mi4zMTRsOS42NDIgMzAuNTA5LTgxLjk1NiA1My4yNTZ2NDYuODMzbDEyNy43NTQtODMuNDk3LTIwLjg5LTY2LjM2OXoiIGZpbGw9InVybCgjYSkiLz48cGF0aCBkPSJtNTkuMzAwNyAxNjkuNDAyaDcyLjA0NTN2LTM4LjgwNGgtNzIuMzEzMWwtOS4zNzQtMzAuNTA5IDgxLjY4NzEtNTMuMjU1OHYtNDYuODMzMmwtMTI3Ljc1MzQ3IDgzLjc2NDUgMjAuODkwNTcgNjYuMzY5NS0yMC44OTA1NyA2Ni4zNjkgMTI4LjAyMTQ3IDgzLjQ5N3YtNDYuODMzbC04MS45NTUxLTUzLjI1NnoiIGZpbGw9InVybCgjYSkiLz48ZyBtYXNrPSJ1cmwoI2MpIj48cGF0aCBkPSJtMy43NTAyNCAwaDI5Mi41djMwMGgtMjkyLjV6IiBmaWxsPSJ1cmwoI2IpIi8+PC9nPjwvc3ZnPg==",\n "supportedInteractionStandards": [\n "beacon"\n ],\n "deepLink": "exodus://wc",\n "universalLink": "https://www.exodus.com/"\n }\n];\n//# sourceMappingURL=wallet-lists.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-blockchain-tezos/dist/cjs/ui/alert/wallet-lists.js?')},"./packages/beacon-core/dist/cjs/MockAnalytics.js":(__unused_webpack_module,exports)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MockAnalytics = void 0;\nclass MockAnalytics {\n track(_trigger, _section, _label, _data) {\n // console.log('##### TRACK', trigger, section, label, data)\n // noop\n }\n}\nexports.MockAnalytics = MockAnalytics;\n//# sourceMappingURL=MockAnalytics.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-core/dist/cjs/MockAnalytics.js?")},"./packages/beacon-core/dist/cjs/MockWindow.js":(__unused_webpack_module,exports)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.clearMockWindowState = exports.windowRef = void 0;\nconst cbs = [(_) => undefined];\n/**\n * A mock for postmessage if run in node.js environment\n */\nlet windowRef = {\n postMessage: (message, _target) => {\n console.log('GOT MOCK POST MESSAGE', message);\n cbs.forEach((callbackElement) => {\n callbackElement({ data: message });\n });\n },\n addEventListener: (_name, eventCallback) => {\n cbs.push(eventCallback);\n },\n removeEventListener: (_name, eventCallback) => {\n cbs.splice(cbs.indexOf((element) => element === eventCallback), 1);\n },\n location: {\n origin: '*'\n }\n};\nexports.windowRef = windowRef;\ntry {\n if (typeof window !== 'undefined') {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n exports.windowRef = windowRef = window;\n }\n}\ncatch (windowError) {\n console.log(`not defined: ${windowError}`);\n}\nconst clearMockWindowState = () => {\n cbs.length = 0;\n};\nexports.clearMockWindowState = clearMockWindowState;\n//# sourceMappingURL=MockWindow.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-core/dist/cjs/MockWindow.js?")},"./packages/beacon-core/dist/cjs/Serializer.js":function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval('/* provided dependency */ var Buffer = __webpack_require__(/*! buffer */ "./node_modules/buffer/index.js")["Buffer"];\n\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.Serializer = void 0;\nconst bs58check = __webpack_require__(/*! bs58check */ "./node_modules/bs58check/index.js");\n/**\n * @internalapi\n *\n * The Serializer is used to serialize / deserialize JSON objects and encode them with bs58check\n */\nclass Serializer {\n /**\n * Serialize and bs58check encode an object\n *\n * @param message JSON object to serialize\n */\n serialize(message) {\n return __awaiter(this, void 0, void 0, function* () {\n const str = JSON.stringify(message);\n return bs58check.encode(Buffer.from(str));\n });\n }\n /**\n * Deserialize a bs58check encoded string\n *\n * @param encoded String to be deserialized\n */\n deserialize(encoded) {\n return __awaiter(this, void 0, void 0, function* () {\n if (typeof encoded !== \'string\') {\n throw new Error(\'Encoded payload needs to be a string\');\n }\n return JSON.parse(bs58check.decode(encoded).toString());\n });\n }\n}\nexports.Serializer = Serializer;\n//# sourceMappingURL=Serializer.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-core/dist/cjs/Serializer.js?')},"./packages/beacon-core/dist/cjs/clients/beacon-client/BeaconClient.js":function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval('\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.BeaconClient = void 0;\nconst beacon_utils_1 = __webpack_require__(/*! @airgap/beacon-utils */ "./packages/beacon-utils/dist/cjs/index.js");\nconst beacon_utils_2 = __webpack_require__(/*! @airgap/beacon-utils */ "./packages/beacon-utils/dist/cjs/index.js");\nconst beacon_types_1 = __webpack_require__(/*! @airgap/beacon-types */ "./packages/beacon-types/dist/cjs/index.js");\nconst constants_1 = __webpack_require__(/*! ../../constants */ "./packages/beacon-core/dist/cjs/constants.js");\nconst MockWindow_1 = __webpack_require__(/*! ../../MockWindow */ "./packages/beacon-core/dist/cjs/MockWindow.js");\nconst MockAnalytics_1 = __webpack_require__(/*! ../../MockAnalytics */ "./packages/beacon-core/dist/cjs/MockAnalytics.js");\n/**\n * @internalapi\n *\n * The beacon client is an abstract client that handles everything that is shared between all other clients.\n * Specifically, it handles managing the beaconId and and the local keypair.\n */\nclass BeaconClient {\n get beaconId() {\n return this._beaconId.promise;\n }\n get keyPair() {\n return this._keyPair.promise;\n }\n constructor(config) {\n var _a, _b;\n /** The beaconId is a public key that is used to identify one specific application (dapp or wallet).\n * This is used inside a message to specify the sender, for example.\n */\n this._beaconId = new beacon_utils_1.ExposedPromise();\n /**\n * The local keypair that is used for the communication encryption\n */\n this._keyPair = new beacon_utils_1.ExposedPromise();\n if (!config.name) {\n throw new Error(\'Name not set\');\n }\n if (!config.storage) {\n throw new Error(\'Storage not set\');\n }\n this.name = config.name;\n this.iconUrl = config.iconUrl;\n this.appUrl = (_a = config.appUrl) !== null && _a !== void 0 ? _a : MockWindow_1.windowRef.location.origin;\n this.storage = config.storage;\n this.analytics = (_b = config.analytics) !== null && _b !== void 0 ? _b : new MockAnalytics_1.MockAnalytics();\n // TODO: This is a temporary "workaround" to prevent users from creating multiple Client instances\n if (MockWindow_1.windowRef.beaconCreatedClientInstance) {\n console.error(\'[BEACON] It looks like you created multiple Beacon SDK Client instances. This can lead to problems. Only create one instance and re-use it everywhere.\');\n }\n else {\n ;\n MockWindow_1.windowRef.beaconCreatedClientInstance = true;\n }\n this.initSDK().catch(console.error);\n }\n /**\n * This resets the SDK. After using this method, this instance is no longer usable. You will have to instanciate a new client.\n */\n destroy() {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.removeBeaconEntriesFromStorage();\n MockWindow_1.windowRef.beaconCreatedClientInstance = false;\n });\n }\n /**\n * This method initializes the SDK by setting some values in the storage and generating a keypair.\n */\n initSDK() {\n return __awaiter(this, void 0, void 0, function* () {\n this.storage.set(beacon_types_1.StorageKey.BEACON_SDK_VERSION, constants_1.SDK_VERSION).catch(console.error);\n this.loadOrCreateBeaconSecret().catch(console.error);\n return this.keyPair.then((keyPair) => {\n this._beaconId.resolve((0, beacon_utils_2.toHex)(keyPair.publicKey));\n });\n });\n }\n /**\n * Removes all beacon values from the storage.\n */\n removeBeaconEntriesFromStorage() {\n return __awaiter(this, void 0, void 0, function* () {\n const allKeys = Object.values(beacon_types_1.StorageKey);\n yield Promise.all(allKeys.map((key) => this.storage.delete(key)));\n });\n }\n /**\n * This method tries to load the seed from storage, if it doesn\'t exist, a new one will be created and persisted.\n */\n loadOrCreateBeaconSecret() {\n return __awaiter(this, void 0, void 0, function* () {\n const storageValue = yield this.storage.get(beacon_types_1.StorageKey.BEACON_SDK_SECRET_SEED);\n if (storageValue && typeof storageValue === \'string\') {\n this._keyPair.resolve(yield (0, beacon_utils_2.getKeypairFromSeed)(storageValue));\n }\n else {\n const key = yield (0, beacon_utils_2.generateGUID)();\n yield this.storage.set(beacon_types_1.StorageKey.BEACON_SDK_SECRET_SEED, key);\n this._keyPair.resolve(yield (0, beacon_utils_2.getKeypairFromSeed)(key));\n }\n });\n }\n}\nexports.BeaconClient = BeaconClient;\n//# sourceMappingURL=BeaconClient.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-core/dist/cjs/clients/beacon-client/BeaconClient.js?')},"./packages/beacon-core/dist/cjs/clients/client/Client.js":function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval('\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.Client = void 0;\nconst beacon_utils_1 = __webpack_require__(/*! @airgap/beacon-utils */ "./packages/beacon-utils/dist/cjs/index.js");\nconst beacon_types_1 = __webpack_require__(/*! @airgap/beacon-types */ "./packages/beacon-types/dist/cjs/index.js");\nconst __1 = __webpack_require__(/*! ../.. */ "./packages/beacon-core/dist/cjs/index.js");\nconst BeaconClient_1 = __webpack_require__(/*! ../beacon-client/BeaconClient */ "./packages/beacon-core/dist/cjs/clients/beacon-client/BeaconClient.js");\nconst AccountManager_1 = __webpack_require__(/*! ../../managers/AccountManager */ "./packages/beacon-core/dist/cjs/managers/AccountManager.js");\nconst get_sender_id_1 = __webpack_require__(/*! ../../utils/get-sender-id */ "./packages/beacon-core/dist/cjs/utils/get-sender-id.js");\nconst Logger_1 = __webpack_require__(/*! ../../utils/Logger */ "./packages/beacon-core/dist/cjs/utils/Logger.js");\nconst logger = new Logger_1.Logger(\'Client\');\n/**\n * @internalapi\n *\n * This abstract class handles the a big part of the logic that is shared between the dapp and wallet client.\n * For example, it selects and manages the transport and accounts.\n */\nclass Client extends BeaconClient_1.BeaconClient {\n get transport() {\n return this._transport.promise;\n }\n /**\n * Returns the connection status of the Client\n */\n get connectionStatus() {\n var _a, _b;\n return (_b = (_a = this._transport.promiseResult) === null || _a === void 0 ? void 0 : _a.connectionStatus) !== null && _b !== void 0 ? _b : beacon_types_1.TransportStatus.NOT_CONNECTED;\n }\n /**\n * Returns whether or not the transaport is ready\n */\n get ready() {\n return this.transport.then(() => undefined);\n }\n constructor(config) {\n var _a;\n super(config);\n /**\n * How many requests can be sent after another\n */\n this.rateLimit = 2;\n /**\n * The time window in seconds in which the "rateLimit" is checked\n */\n this.rateLimitWindowInSeconds = 5;\n /**\n * Stores the times when requests have been made to determine if the rate limit has been reached\n */\n this.requestCounter = [];\n this._transport = new beacon_utils_1.ExposedPromise();\n this.accountManager = new AccountManager_1.AccountManager(config.storage);\n this.matrixNodes = (_a = config.matrixNodes) !== null && _a !== void 0 ? _a : {};\n this.handleResponse = (message, connectionInfo) => {\n throw new Error(`not overwritten${JSON.stringify(message)} - ${JSON.stringify(connectionInfo)}`);\n };\n }\n /**\n * Return all locally known accounts\n */\n getAccounts() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.accountManager.getAccounts();\n });\n }\n /**\n * Return the account by ID\n * @param accountIdentifier The ID of an account\n */\n getAccount(accountIdentifier) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.accountManager.getAccount(accountIdentifier);\n });\n }\n /**\n * Remove the account by ID\n * @param accountIdentifier The ID of an account\n */\n removeAccount(accountIdentifier) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.accountManager.removeAccount(accountIdentifier);\n });\n }\n /**\n * Remove all locally stored accounts\n */\n removeAllAccounts() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.accountManager.removeAllAccounts();\n });\n }\n /**\n * Add a new request (current timestamp) to the pending requests, remove old ones and check if we are above the limit\n */\n addRequestAndCheckIfRateLimited() {\n return __awaiter(this, void 0, void 0, function* () {\n const now = new Date().getTime();\n this.requestCounter = this.requestCounter.filter((date) => date + this.rateLimitWindowInSeconds * 1000 > now);\n this.requestCounter.push(now);\n return this.requestCounter.length > this.rateLimit;\n });\n }\n /**\n * This method initializes the client. It will check if the connection should be established to a\n * browser extension or if the P2P transport should be used.\n *\n * @param transport A transport that can be provided by the user\n */\n init(transport) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._transport.status === beacon_utils_1.ExposedPromiseStatus.RESOLVED) {\n return (yield this.transport).type;\n }\n yield this.setTransport(transport); // Let users define their own transport\n return transport.type;\n });\n }\n /**\n * Returns the metadata of this DApp\n */\n getOwnAppMetadata() {\n return __awaiter(this, void 0, void 0, function* () {\n return {\n senderId: yield (0, get_sender_id_1.getSenderId)(yield this.beaconId),\n name: this.name,\n icon: this.iconUrl\n };\n });\n }\n /**\n * Return all known peers\n */\n getPeers() {\n return __awaiter(this, void 0, void 0, function* () {\n return (yield this.transport).getPeers();\n });\n }\n /**\n * Add a new peer to the known peers\n * @param peer The new peer to add\n */\n addPeer(peer) {\n return __awaiter(this, void 0, void 0, function* () {\n return (yield this.transport).addPeer(peer);\n });\n }\n destroy() {\n const _super = Object.create(null, {\n destroy: { get: () => super.destroy }\n });\n return __awaiter(this, void 0, void 0, function* () {\n if (this._transport.status === beacon_utils_1.ExposedPromiseStatus.RESOLVED) {\n yield (yield this.transport).disconnect();\n }\n yield _super.destroy.call(this);\n });\n }\n /**\n * A "setter" for when the transport needs to be changed.\n */\n setTransport(transport) {\n return __awaiter(this, void 0, void 0, function* () {\n if (transport) {\n if (this._transport.isSettled()) {\n // If the promise has already been resolved we need to create a new one.\n this._transport = beacon_utils_1.ExposedPromise.resolve(transport);\n }\n else {\n this._transport.resolve(transport);\n }\n }\n else {\n if (this._transport.isSettled()) {\n // If the promise has already been resolved we need to create a new one.\n this._transport = new beacon_utils_1.ExposedPromise();\n }\n }\n });\n }\n addListener(transport) {\n return __awaiter(this, void 0, void 0, function* () {\n transport\n .addListener((message, connectionInfo) => __awaiter(this, void 0, void 0, function* () {\n if (typeof message === \'string\') {\n const deserializedMessage = (yield new __1.Serializer().deserialize(message));\n this.handleResponse(deserializedMessage, connectionInfo);\n }\n }))\n .catch((error) => logger.error(\'addListener\', error));\n });\n }\n sendDisconnectToPeer(peer, transport) {\n return __awaiter(this, void 0, void 0, function* () {\n const request = {\n id: yield (0, beacon_utils_1.generateGUID)(),\n version: peer.version,\n senderId: yield (0, get_sender_id_1.getSenderId)(yield this.beaconId),\n type: beacon_types_1.BeaconMessageType.Disconnect\n };\n const payload = yield new __1.Serializer().serialize(request);\n const selectedTransport = transport !== null && transport !== void 0 ? transport : (yield this.transport);\n yield selectedTransport.send(payload, peer);\n });\n }\n}\nexports.Client = Client;\n//# sourceMappingURL=Client.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-core/dist/cjs/clients/client/Client.js?')},"./packages/beacon-core/dist/cjs/constants.js":(__unused_webpack_module,exports)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.NOTIFICATION_ORACLE_URL = exports.BEACON_VERSION = exports.SDK_VERSION = void 0;\nexports.SDK_VERSION = '4.1.2';\nexports.BEACON_VERSION = '3';\nexports.NOTIFICATION_ORACLE_URL = 'https://beacon-notification-oracle.dev.gke.papers.tech';\n//# sourceMappingURL=constants.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-core/dist/cjs/constants.js?")},"./packages/beacon-core/dist/cjs/debug.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.getDebugEnabled = exports.setDebugEnabled = void 0;\nconst MockWindow_1 = __webpack_require__(/*! ./MockWindow */ "./packages/beacon-core/dist/cjs/MockWindow.js");\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nlet debug = MockWindow_1.windowRef.beaconSdkDebugEnabled ? true : false;\nif (debug) {\n // eslint-disable-next-line no-console\n console.log(\'[BEACON]: Debug mode is ON (turned on either by the developer or a browser extension)\');\n}\nconst setDebugEnabled = (enabled) => {\n debug = enabled;\n};\nexports.setDebugEnabled = setDebugEnabled;\nconst getDebugEnabled = () => debug;\nexports.getDebugEnabled = getDebugEnabled;\n//# sourceMappingURL=debug.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-core/dist/cjs/debug.js?')},"./packages/beacon-core/dist/cjs/errors/AbortedBeaconError.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.AbortedBeaconError = void 0;\nconst __1 = __webpack_require__(/*! .. */ \"./packages/beacon-core/dist/cjs/index.js\");\nconst beacon_types_1 = __webpack_require__(/*! @airgap/beacon-types */ \"./packages/beacon-types/dist/cjs/index.js\");\n/**\n * @category Error\n */\nclass AbortedBeaconError extends __1.BeaconError {\n constructor() {\n super(beacon_types_1.BeaconErrorType.ABORTED_ERROR, 'The action was aborted by the user.');\n this.name = 'UnknownBeaconError';\n this.title = 'Aborted';\n }\n}\nexports.AbortedBeaconError = AbortedBeaconError;\n//# sourceMappingURL=AbortedBeaconError.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-core/dist/cjs/errors/AbortedBeaconError.js?")},"./packages/beacon-core/dist/cjs/errors/BeaconError.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.BeaconError = void 0;\nconst assert_never_1 = __webpack_require__(/*! ../utils/assert-never */ "./packages/beacon-core/dist/cjs/utils/assert-never.js");\nconst __1 = __webpack_require__(/*! .. */ "./packages/beacon-core/dist/cjs/index.js");\nconst beacon_types_1 = __webpack_require__(/*! @airgap/beacon-types */ "./packages/beacon-types/dist/cjs/index.js");\n/**\n * @category Error\n */\nclass BeaconError {\n get fullDescription() {\n return { description: this.description };\n }\n constructor(errorType, message) {\n this.name = \'BeaconError\';\n this.title = \'Error\'; // Visible in the UI\n this.message = `[${errorType}]:${message}`;\n this.description = message;\n }\n static getError(errorType, errorData) {\n switch (errorType) {\n case beacon_types_1.BeaconErrorType.BROADCAST_ERROR:\n return new __1.BroadcastBeaconError();\n case beacon_types_1.BeaconErrorType.NETWORK_NOT_SUPPORTED:\n return new __1.NetworkNotSupportedBeaconError();\n case beacon_types_1.BeaconErrorType.NO_ADDRESS_ERROR:\n return new __1.NoAddressBeaconError();\n case beacon_types_1.BeaconErrorType.NO_PRIVATE_KEY_FOUND_ERROR:\n return new __1.NoPrivateKeyBeaconError();\n case beacon_types_1.BeaconErrorType.NOT_GRANTED_ERROR:\n return new __1.NotGrantedBeaconError();\n case beacon_types_1.BeaconErrorType.PARAMETERS_INVALID_ERROR:\n return new __1.ParametersInvalidBeaconError();\n case beacon_types_1.BeaconErrorType.TOO_MANY_OPERATIONS:\n return new __1.TooManyOperationsBeaconError();\n case beacon_types_1.BeaconErrorType.TRANSACTION_INVALID_ERROR:\n return new __1.TransactionInvalidBeaconError(errorData);\n case beacon_types_1.BeaconErrorType.SIGNATURE_TYPE_NOT_SUPPORTED:\n return new __1.SignatureTypeNotSupportedBeaconError();\n // case BeaconErrorType.ENCRYPTION_TYPE_NOT_SUPPORTED:\n // return new EncryptionTypeNotSupportedBeaconError()\n case beacon_types_1.BeaconErrorType.ABORTED_ERROR:\n return new __1.AbortedBeaconError();\n case beacon_types_1.BeaconErrorType.UNKNOWN_ERROR:\n return new __1.UnknownBeaconError();\n default:\n (0, assert_never_1.assertNever)(errorType);\n }\n }\n}\nexports.BeaconError = BeaconError;\n//# sourceMappingURL=BeaconError.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-core/dist/cjs/errors/BeaconError.js?')},"./packages/beacon-core/dist/cjs/errors/BroadcastBeaconError.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.BroadcastBeaconError = void 0;\nconst __1 = __webpack_require__(/*! .. */ \"./packages/beacon-core/dist/cjs/index.js\");\nconst beacon_types_1 = __webpack_require__(/*! @airgap/beacon-types */ \"./packages/beacon-types/dist/cjs/index.js\");\n/**\n * @category Error\n */\nclass BroadcastBeaconError extends __1.BeaconError {\n constructor() {\n super(beacon_types_1.BeaconErrorType.BROADCAST_ERROR, 'The transaction could not be broadcast to the network. Please try again.');\n this.name = 'BroadcastBeaconError';\n this.title = 'Broadcast Error';\n }\n}\nexports.BroadcastBeaconError = BroadcastBeaconError;\n//# sourceMappingURL=BroadcastBeaconError.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-core/dist/cjs/errors/BroadcastBeaconError.js?")},"./packages/beacon-core/dist/cjs/errors/NetworkNotSupportedBeaconError.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.NetworkNotSupportedBeaconError = void 0;\nconst __1 = __webpack_require__(/*! .. */ \"./packages/beacon-core/dist/cjs/index.js\");\nconst beacon_types_1 = __webpack_require__(/*! @airgap/beacon-types */ \"./packages/beacon-types/dist/cjs/index.js\");\n/**\n * @category Error\n */\nclass NetworkNotSupportedBeaconError extends __1.BeaconError {\n constructor() {\n super(beacon_types_1.BeaconErrorType.NETWORK_NOT_SUPPORTED, 'The wallet does not support this network. Please select another one.');\n this.name = 'NetworkNotSupportedBeaconError';\n this.title = 'Network Error';\n }\n}\nexports.NetworkNotSupportedBeaconError = NetworkNotSupportedBeaconError;\n//# sourceMappingURL=NetworkNotSupportedBeaconError.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-core/dist/cjs/errors/NetworkNotSupportedBeaconError.js?")},"./packages/beacon-core/dist/cjs/errors/NoAddressBeaconError.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.NoAddressBeaconError = void 0;\nconst __1 = __webpack_require__(/*! .. */ \"./packages/beacon-core/dist/cjs/index.js\");\nconst beacon_types_1 = __webpack_require__(/*! @airgap/beacon-types */ \"./packages/beacon-types/dist/cjs/index.js\");\n/**\n * @category Error\n */\nclass NoAddressBeaconError extends __1.BeaconError {\n constructor() {\n super(beacon_types_1.BeaconErrorType.NO_ADDRESS_ERROR, 'The wallet does not have an account set up. Please make sure to set up your wallet and try again.');\n this.name = 'NoAddressBeaconError';\n this.title = 'No Address';\n }\n}\nexports.NoAddressBeaconError = NoAddressBeaconError;\n//# sourceMappingURL=NoAddressBeaconError.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-core/dist/cjs/errors/NoAddressBeaconError.js?")},"./packages/beacon-core/dist/cjs/errors/NoPrivateKeyBeaconError.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.NoPrivateKeyBeaconError = void 0;\nconst __1 = __webpack_require__(/*! .. */ \"./packages/beacon-core/dist/cjs/index.js\");\nconst beacon_types_1 = __webpack_require__(/*! @airgap/beacon-types */ \"./packages/beacon-types/dist/cjs/index.js\");\n/**\n * @category Error\n */\nclass NoPrivateKeyBeaconError extends __1.BeaconError {\n constructor() {\n super(beacon_types_1.BeaconErrorType.NO_PRIVATE_KEY_FOUND_ERROR, 'The account you are trying to interact with is not available. Please make sure to add the account to your wallet and try again.');\n this.name = 'NoPrivateKeyBeaconError';\n this.title = 'Account Not Found';\n }\n}\nexports.NoPrivateKeyBeaconError = NoPrivateKeyBeaconError;\n//# sourceMappingURL=NoPrivateKeyBeaconError.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-core/dist/cjs/errors/NoPrivateKeyBeaconError.js?")},"./packages/beacon-core/dist/cjs/errors/NotGrantedBeaconError.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.NotGrantedBeaconError = void 0;\nconst __1 = __webpack_require__(/*! .. */ \"./packages/beacon-core/dist/cjs/index.js\");\nconst beacon_types_1 = __webpack_require__(/*! @airgap/beacon-types */ \"./packages/beacon-types/dist/cjs/index.js\");\n/**\n * @category Error\n */\nclass NotGrantedBeaconError extends __1.BeaconError {\n constructor() {\n super(beacon_types_1.BeaconErrorType.NOT_GRANTED_ERROR, 'You do not have the necessary permissions to perform this action. Please initiate another permission request and give the necessary permissions.');\n this.name = 'NotGrantedBeaconError';\n this.title = 'Permission Not Granted';\n }\n}\nexports.NotGrantedBeaconError = NotGrantedBeaconError;\n//# sourceMappingURL=NotGrantedBeaconError.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-core/dist/cjs/errors/NotGrantedBeaconError.js?")},"./packages/beacon-core/dist/cjs/errors/ParametersInvalidBeaconError.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ParametersInvalidBeaconError = void 0;\nconst __1 = __webpack_require__(/*! .. */ \"./packages/beacon-core/dist/cjs/index.js\");\nconst beacon_types_1 = __webpack_require__(/*! @airgap/beacon-types */ \"./packages/beacon-types/dist/cjs/index.js\");\n/**\n * @category Error\n */\nclass ParametersInvalidBeaconError extends __1.BeaconError {\n constructor() {\n super(beacon_types_1.BeaconErrorType.PARAMETERS_INVALID_ERROR, 'Some of the parameters you provided are invalid and the request could not be completed. Please check your inputs and try again.');\n this.name = 'ParametersInvalidBeaconError';\n this.title = 'Parameters Invalid';\n }\n}\nexports.ParametersInvalidBeaconError = ParametersInvalidBeaconError;\n//# sourceMappingURL=ParametersInvalidBeaconError.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-core/dist/cjs/errors/ParametersInvalidBeaconError.js?")},"./packages/beacon-core/dist/cjs/errors/SignatureTypeNotSupportedBeaconError.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.SignatureTypeNotSupportedBeaconError = void 0;\nconst __1 = __webpack_require__(/*! .. */ \"./packages/beacon-core/dist/cjs/index.js\");\nconst beacon_types_1 = __webpack_require__(/*! @airgap/beacon-types */ \"./packages/beacon-types/dist/cjs/index.js\");\n/**\n * @category Error\n */\nclass SignatureTypeNotSupportedBeaconError extends __1.BeaconError {\n constructor() {\n super(beacon_types_1.BeaconErrorType.SIGNATURE_TYPE_NOT_SUPPORTED, 'The wallet is not able to sign payloads of this type.');\n this.name = 'SignatureTypeNotSupportedBeaconError';\n this.title = 'Signature Type Not Supported';\n }\n}\nexports.SignatureTypeNotSupportedBeaconError = SignatureTypeNotSupportedBeaconError;\n//# sourceMappingURL=SignatureTypeNotSupportedBeaconError.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-core/dist/cjs/errors/SignatureTypeNotSupportedBeaconError.js?")},"./packages/beacon-core/dist/cjs/errors/TooManyOperationsBeaconError.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TooManyOperationsBeaconError = void 0;\nconst __1 = __webpack_require__(/*! .. */ \"./packages/beacon-core/dist/cjs/index.js\");\nconst beacon_types_1 = __webpack_require__(/*! @airgap/beacon-types */ \"./packages/beacon-types/dist/cjs/index.js\");\n/**\n * @category Error\n */\nclass TooManyOperationsBeaconError extends __1.BeaconError {\n constructor() {\n super(beacon_types_1.BeaconErrorType.TOO_MANY_OPERATIONS, 'The request contains too many transactions. Please include fewer operations and try again.');\n this.name = 'TooManyOperationsBeaconError';\n this.title = 'Too Many Operations';\n }\n}\nexports.TooManyOperationsBeaconError = TooManyOperationsBeaconError;\n//# sourceMappingURL=TooManyOperationsBeaconError.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-core/dist/cjs/errors/TooManyOperationsBeaconError.js?")},"./packages/beacon-core/dist/cjs/errors/TransactionInvalidBeaconError.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.TransactionInvalidBeaconError = void 0;\nconst __1 = __webpack_require__(/*! .. */ "./packages/beacon-core/dist/cjs/index.js");\nconst beacon_types_1 = __webpack_require__(/*! @airgap/beacon-types */ "./packages/beacon-types/dist/cjs/index.js");\n/**\n * @category Error\n */\nclass TransactionInvalidBeaconError extends __1.BeaconError {\n get fullDescription() {\n return { description: this.description, data: JSON.stringify(this.data, undefined, 2) };\n }\n constructor(data) {\n super(beacon_types_1.BeaconErrorType.TRANSACTION_INVALID_ERROR, `The transaction is invalid and the node did not accept it.`);\n this.data = data;\n this.name = \'TransactionInvalidBeaconError\';\n this.title = \'Transaction Invalid\';\n this.data = data;\n }\n}\nexports.TransactionInvalidBeaconError = TransactionInvalidBeaconError;\n//# sourceMappingURL=TransactionInvalidBeaconError.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-core/dist/cjs/errors/TransactionInvalidBeaconError.js?')},"./packages/beacon-core/dist/cjs/errors/UnknownBeaconError.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.UnknownBeaconError = void 0;\nconst __1 = __webpack_require__(/*! .. */ \"./packages/beacon-core/dist/cjs/index.js\");\nconst beacon_types_1 = __webpack_require__(/*! @airgap/beacon-types */ \"./packages/beacon-types/dist/cjs/index.js\");\n/**\n * @category Error\n */\nclass UnknownBeaconError extends __1.BeaconError {\n constructor() {\n super(beacon_types_1.BeaconErrorType.UNKNOWN_ERROR, 'An unknown error occured. Please try again or report it to a developer.');\n this.name = 'UnknownBeaconError';\n this.title = 'Error';\n }\n}\nexports.UnknownBeaconError = UnknownBeaconError;\n//# sourceMappingURL=UnknownBeaconError.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-core/dist/cjs/errors/UnknownBeaconError.js?")},"./packages/beacon-core/dist/cjs/index.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.NOTIFICATION_ORACLE_URL = exports.getDebugEnabled = exports.setDebugEnabled = exports.getLogger = exports.setLogger = exports.Logger = exports.Serializer = exports.windowRef = exports.getAccountIdentifier = exports.getSenderId = exports.BEACON_VERSION = exports.SDK_VERSION = exports.PermissionManager = exports.AppMetadataManager = exports.AccountManager = exports.PeerManager = exports.getStorage = exports.WCStorage = exports.LocalStorage = exports.ChromeStorage = exports.CommunicationClient = exports.MessageBasedClient = exports.Transport = exports.UnknownBeaconError = exports.SignatureTypeNotSupportedBeaconError = exports.TransactionInvalidBeaconError = exports.TooManyOperationsBeaconError = exports.ParametersInvalidBeaconError = exports.NotGrantedBeaconError = exports.NoPrivateKeyBeaconError = exports.NoAddressBeaconError = exports.NetworkNotSupportedBeaconError = exports.BroadcastBeaconError = exports.AbortedBeaconError = exports.BeaconError = exports.Client = exports.BeaconClient = void 0;\n/**\n * General docs\n * @module public\n */\nconst Client_1 = __webpack_require__(/*! ./clients/client/Client */ "./packages/beacon-core/dist/cjs/clients/client/Client.js");\nObject.defineProperty(exports, "Client", ({ enumerable: true, get: function () { return Client_1.Client; } }));\nconst BeaconError_1 = __webpack_require__(/*! ./errors/BeaconError */ "./packages/beacon-core/dist/cjs/errors/BeaconError.js");\nObject.defineProperty(exports, "BeaconError", ({ enumerable: true, get: function () { return BeaconError_1.BeaconError; } }));\nconst BroadcastBeaconError_1 = __webpack_require__(/*! ./errors/BroadcastBeaconError */ "./packages/beacon-core/dist/cjs/errors/BroadcastBeaconError.js");\nObject.defineProperty(exports, "BroadcastBeaconError", ({ enumerable: true, get: function () { return BroadcastBeaconError_1.BroadcastBeaconError; } }));\nconst NetworkNotSupportedBeaconError_1 = __webpack_require__(/*! ./errors/NetworkNotSupportedBeaconError */ "./packages/beacon-core/dist/cjs/errors/NetworkNotSupportedBeaconError.js");\nObject.defineProperty(exports, "NetworkNotSupportedBeaconError", ({ enumerable: true, get: function () { return NetworkNotSupportedBeaconError_1.NetworkNotSupportedBeaconError; } }));\nconst NoAddressBeaconError_1 = __webpack_require__(/*! ./errors/NoAddressBeaconError */ "./packages/beacon-core/dist/cjs/errors/NoAddressBeaconError.js");\nObject.defineProperty(exports, "NoAddressBeaconError", ({ enumerable: true, get: function () { return NoAddressBeaconError_1.NoAddressBeaconError; } }));\nconst NoPrivateKeyBeaconError_1 = __webpack_require__(/*! ./errors/NoPrivateKeyBeaconError */ "./packages/beacon-core/dist/cjs/errors/NoPrivateKeyBeaconError.js");\nObject.defineProperty(exports, "NoPrivateKeyBeaconError", ({ enumerable: true, get: function () { return NoPrivateKeyBeaconError_1.NoPrivateKeyBeaconError; } }));\nconst NotGrantedBeaconError_1 = __webpack_require__(/*! ./errors/NotGrantedBeaconError */ "./packages/beacon-core/dist/cjs/errors/NotGrantedBeaconError.js");\nObject.defineProperty(exports, "NotGrantedBeaconError", ({ enumerable: true, get: function () { return NotGrantedBeaconError_1.NotGrantedBeaconError; } }));\nconst ParametersInvalidBeaconError_1 = __webpack_require__(/*! ./errors/ParametersInvalidBeaconError */ "./packages/beacon-core/dist/cjs/errors/ParametersInvalidBeaconError.js");\nObject.defineProperty(exports, "ParametersInvalidBeaconError", ({ enumerable: true, get: function () { return ParametersInvalidBeaconError_1.ParametersInvalidBeaconError; } }));\nconst TooManyOperationsBeaconError_1 = __webpack_require__(/*! ./errors/TooManyOperationsBeaconError */ "./packages/beacon-core/dist/cjs/errors/TooManyOperationsBeaconError.js");\nObject.defineProperty(exports, "TooManyOperationsBeaconError", ({ enumerable: true, get: function () { return TooManyOperationsBeaconError_1.TooManyOperationsBeaconError; } }));\nconst TransactionInvalidBeaconError_1 = __webpack_require__(/*! ./errors/TransactionInvalidBeaconError */ "./packages/beacon-core/dist/cjs/errors/TransactionInvalidBeaconError.js");\nObject.defineProperty(exports, "TransactionInvalidBeaconError", ({ enumerable: true, get: function () { return TransactionInvalidBeaconError_1.TransactionInvalidBeaconError; } }));\nconst UnknownBeaconError_1 = __webpack_require__(/*! ./errors/UnknownBeaconError */ "./packages/beacon-core/dist/cjs/errors/UnknownBeaconError.js");\nObject.defineProperty(exports, "UnknownBeaconError", ({ enumerable: true, get: function () { return UnknownBeaconError_1.UnknownBeaconError; } }));\nconst Transport_1 = __webpack_require__(/*! ./transports/Transport */ "./packages/beacon-core/dist/cjs/transports/Transport.js");\nObject.defineProperty(exports, "Transport", ({ enumerable: true, get: function () { return Transport_1.Transport; } }));\nconst ChromeStorage_1 = __webpack_require__(/*! ./storage/ChromeStorage */ "./packages/beacon-core/dist/cjs/storage/ChromeStorage.js");\nObject.defineProperty(exports, "ChromeStorage", ({ enumerable: true, get: function () { return ChromeStorage_1.ChromeStorage; } }));\nconst LocalStorage_1 = __webpack_require__(/*! ./storage/LocalStorage */ "./packages/beacon-core/dist/cjs/storage/LocalStorage.js");\nObject.defineProperty(exports, "LocalStorage", ({ enumerable: true, get: function () { return LocalStorage_1.LocalStorage; } }));\nconst getStorage_1 = __webpack_require__(/*! ./storage/getStorage */ "./packages/beacon-core/dist/cjs/storage/getStorage.js");\nObject.defineProperty(exports, "getStorage", ({ enumerable: true, get: function () { return getStorage_1.getStorage; } }));\nconst Serializer_1 = __webpack_require__(/*! ./Serializer */ "./packages/beacon-core/dist/cjs/Serializer.js");\nObject.defineProperty(exports, "Serializer", ({ enumerable: true, get: function () { return Serializer_1.Serializer; } }));\nconst constants_1 = __webpack_require__(/*! ./constants */ "./packages/beacon-core/dist/cjs/constants.js");\nObject.defineProperty(exports, "SDK_VERSION", ({ enumerable: true, get: function () { return constants_1.SDK_VERSION; } }));\nObject.defineProperty(exports, "BEACON_VERSION", ({ enumerable: true, get: function () { return constants_1.BEACON_VERSION; } }));\nconst AccountManager_1 = __webpack_require__(/*! ./managers/AccountManager */ "./packages/beacon-core/dist/cjs/managers/AccountManager.js");\nObject.defineProperty(exports, "AccountManager", ({ enumerable: true, get: function () { return AccountManager_1.AccountManager; } }));\nconst AppMetadataManager_1 = __webpack_require__(/*! ./managers/AppMetadataManager */ "./packages/beacon-core/dist/cjs/managers/AppMetadataManager.js");\nObject.defineProperty(exports, "AppMetadataManager", ({ enumerable: true, get: function () { return AppMetadataManager_1.AppMetadataManager; } }));\nconst PermissionManager_1 = __webpack_require__(/*! ./managers/PermissionManager */ "./packages/beacon-core/dist/cjs/managers/PermissionManager.js");\nObject.defineProperty(exports, "PermissionManager", ({ enumerable: true, get: function () { return PermissionManager_1.PermissionManager; } }));\nconst BeaconClient_1 = __webpack_require__(/*! ./clients/beacon-client/BeaconClient */ "./packages/beacon-core/dist/cjs/clients/beacon-client/BeaconClient.js");\nObject.defineProperty(exports, "BeaconClient", ({ enumerable: true, get: function () { return BeaconClient_1.BeaconClient; } }));\nconst get_account_identifier_1 = __webpack_require__(/*! ./utils/get-account-identifier */ "./packages/beacon-core/dist/cjs/utils/get-account-identifier.js");\nObject.defineProperty(exports, "getAccountIdentifier", ({ enumerable: true, get: function () { return get_account_identifier_1.getAccountIdentifier; } }));\nconst AbortedBeaconError_1 = __webpack_require__(/*! ./errors/AbortedBeaconError */ "./packages/beacon-core/dist/cjs/errors/AbortedBeaconError.js");\nObject.defineProperty(exports, "AbortedBeaconError", ({ enumerable: true, get: function () { return AbortedBeaconError_1.AbortedBeaconError; } }));\nconst get_sender_id_1 = __webpack_require__(/*! ./utils/get-sender-id */ "./packages/beacon-core/dist/cjs/utils/get-sender-id.js");\nObject.defineProperty(exports, "getSenderId", ({ enumerable: true, get: function () { return get_sender_id_1.getSenderId; } }));\nconst PeerManager_1 = __webpack_require__(/*! ./managers/PeerManager */ "./packages/beacon-core/dist/cjs/managers/PeerManager.js");\nObject.defineProperty(exports, "PeerManager", ({ enumerable: true, get: function () { return PeerManager_1.PeerManager; } }));\nconst MessageBasedClient_1 = __webpack_require__(/*! ./transports/clients/MessageBasedClient */ "./packages/beacon-core/dist/cjs/transports/clients/MessageBasedClient.js");\nObject.defineProperty(exports, "MessageBasedClient", ({ enumerable: true, get: function () { return MessageBasedClient_1.MessageBasedClient; } }));\nconst debug_1 = __webpack_require__(/*! ./debug */ "./packages/beacon-core/dist/cjs/debug.js");\nObject.defineProperty(exports, "setDebugEnabled", ({ enumerable: true, get: function () { return debug_1.setDebugEnabled; } }));\nObject.defineProperty(exports, "getDebugEnabled", ({ enumerable: true, get: function () { return debug_1.getDebugEnabled; } }));\n// import { EncryptPayloadRequest } from \'./types/beacon/messages/EncryptPayloadRequest\'\n// import { EncryptPayloadResponse } from \'./types/beacon/messages/EncryptPayloadResponse\'\n// import { EncryptionTypeNotSupportedBeaconError } from \'./errors/EncryptionTypeNotSupportedBeaconError\'\nconst SignatureTypeNotSupportedBeaconError_1 = __webpack_require__(/*! ./errors/SignatureTypeNotSupportedBeaconError */ "./packages/beacon-core/dist/cjs/errors/SignatureTypeNotSupportedBeaconError.js");\nObject.defineProperty(exports, "SignatureTypeNotSupportedBeaconError", ({ enumerable: true, get: function () { return SignatureTypeNotSupportedBeaconError_1.SignatureTypeNotSupportedBeaconError; } }));\nconst Logger_1 = __webpack_require__(/*! ./utils/Logger */ "./packages/beacon-core/dist/cjs/utils/Logger.js");\nObject.defineProperty(exports, "getLogger", ({ enumerable: true, get: function () { return Logger_1.getLogger; } }));\nObject.defineProperty(exports, "Logger", ({ enumerable: true, get: function () { return Logger_1.Logger; } }));\nObject.defineProperty(exports, "setLogger", ({ enumerable: true, get: function () { return Logger_1.setLogger; } }));\nconst MockWindow_1 = __webpack_require__(/*! ./MockWindow */ "./packages/beacon-core/dist/cjs/MockWindow.js");\nObject.defineProperty(exports, "windowRef", ({ enumerable: true, get: function () { return MockWindow_1.windowRef; } }));\nconst CommunicationClient_1 = __webpack_require__(/*! ./transports/clients/CommunicationClient */ "./packages/beacon-core/dist/cjs/transports/clients/CommunicationClient.js");\nObject.defineProperty(exports, "CommunicationClient", ({ enumerable: true, get: function () { return CommunicationClient_1.CommunicationClient; } }));\nconst WCStorage_1 = __webpack_require__(/*! ./storage/WCStorage */ "./packages/beacon-core/dist/cjs/storage/WCStorage.js");\nObject.defineProperty(exports, "WCStorage", ({ enumerable: true, get: function () { return WCStorage_1.WCStorage; } }));\nvar constants_2 = __webpack_require__(/*! ./constants */ "./packages/beacon-core/dist/cjs/constants.js");\nObject.defineProperty(exports, "NOTIFICATION_ORACLE_URL", ({ enumerable: true, get: function () { return constants_2.NOTIFICATION_ORACLE_URL; } }));\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-core/dist/cjs/index.js?')},"./packages/beacon-core/dist/cjs/managers/AccountManager.js":function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval('\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.AccountManager = void 0;\nconst beacon_types_1 = __webpack_require__(/*! @airgap/beacon-types */ "./packages/beacon-types/dist/cjs/index.js");\nconst StorageManager_1 = __webpack_require__(/*! ./StorageManager */ "./packages/beacon-core/dist/cjs/managers/StorageManager.js");\nconst PermissionValidator_1 = __webpack_require__(/*! ./PermissionValidator */ "./packages/beacon-core/dist/cjs/managers/PermissionValidator.js");\n/**\n * @internalapi\n *\n * The AccountManager provides CRUD functionality for account entities and persists them to the provided storage.\n */\nclass AccountManager {\n constructor(storage) {\n this.storageManager = new StorageManager_1.StorageManager(storage, beacon_types_1.StorageKey.ACCOUNTS);\n }\n getAccounts() {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n return (_a = (yield this.storageManager.getAll())) !== null && _a !== void 0 ? _a : [];\n });\n }\n getAccount(accountIdentifier) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storageManager.getOne((account) => account.accountIdentifier === accountIdentifier);\n });\n }\n addAccount(accountInfo) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storageManager.addOne(accountInfo, (account) => account.accountIdentifier === accountInfo.accountIdentifier);\n });\n }\n updateAccount(accountIdentifier, accountInfo) {\n return __awaiter(this, void 0, void 0, function* () {\n const account = yield this.getAccount(accountIdentifier);\n if (!account)\n return undefined;\n const newAccount = Object.assign(Object.assign({}, account), accountInfo);\n yield this.storageManager.addOne(newAccount, (account) => account.accountIdentifier === accountIdentifier, true);\n return newAccount;\n });\n }\n removeAccount(accountIdentifier) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storageManager.remove((account) => account.accountIdentifier === accountIdentifier);\n });\n }\n removeAccounts(accountIdentifiers) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storageManager.remove((account) => accountIdentifiers.includes(account.accountIdentifier));\n });\n }\n removeAllAccounts() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storageManager.removeAll();\n });\n }\n hasPermission(message) {\n return __awaiter(this, void 0, void 0, function* () {\n return PermissionValidator_1.PermissionValidator.hasPermission(message, this.getAccount.bind(this), this.getAccounts.bind(this));\n });\n }\n}\nexports.AccountManager = AccountManager;\n//# sourceMappingURL=AccountManager.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-core/dist/cjs/managers/AccountManager.js?')},"./packages/beacon-core/dist/cjs/managers/AppMetadataManager.js":function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval('\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.AppMetadataManager = void 0;\nconst beacon_types_1 = __webpack_require__(/*! @airgap/beacon-types */ "./packages/beacon-types/dist/cjs/index.js");\nconst StorageManager_1 = __webpack_require__(/*! ./StorageManager */ "./packages/beacon-core/dist/cjs/managers/StorageManager.js");\n/**\n * @internalapi\n *\n * The AppMetadataManager provides CRUD functionality for app-metadata entities and persists them to the provided storage.\n */\nclass AppMetadataManager {\n constructor(storage) {\n this.storageManager = new StorageManager_1.StorageManager(storage, beacon_types_1.StorageKey.APP_METADATA_LIST);\n }\n getAppMetadataList() {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n return (_a = (yield this.storageManager.getAll())) !== null && _a !== void 0 ? _a : [];\n });\n }\n getAppMetadata(senderId) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storageManager.getOne((appMetadata) => appMetadata.senderId === senderId);\n });\n }\n addAppMetadata(appMetadata) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storageManager.addOne(appMetadata, (appMetadataElement) => appMetadataElement.senderId === appMetadata.senderId);\n });\n }\n removeAppMetadata(senderId) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storageManager.remove((appMetadata) => appMetadata.senderId === senderId);\n });\n }\n removeAppMetadatas(senderIds) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storageManager.remove((appMetadata) => senderIds.includes(appMetadata.senderId));\n });\n }\n removeAllAppMetadata() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storageManager.removeAll();\n });\n }\n}\nexports.AppMetadataManager = AppMetadataManager;\n//# sourceMappingURL=AppMetadataManager.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-core/dist/cjs/managers/AppMetadataManager.js?')},"./packages/beacon-core/dist/cjs/managers/PeerManager.js":function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval('\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.PeerManager = void 0;\nconst StorageManager_1 = __webpack_require__(/*! ./StorageManager */ "./packages/beacon-core/dist/cjs/managers/StorageManager.js");\n/**\n * @internalapi\n *\n * The PeerManager provides CRUD functionality for peer entities and persists them to the provided storage.\n */\nclass PeerManager {\n constructor(storage, key) {\n this.storageManager = new StorageManager_1.StorageManager(storage, key);\n }\n hasPeer(publicKey) {\n return __awaiter(this, void 0, void 0, function* () {\n return (yield this.getPeer(publicKey)) ? true : false;\n });\n }\n getPeers() {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n return (_a = (yield this.storageManager.getAll())) !== null && _a !== void 0 ? _a : [];\n });\n }\n getPeer(publicKey) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storageManager.getOne((peer) => peer.publicKey === publicKey);\n });\n }\n addPeer(peerInfo) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storageManager.addOne(peerInfo, (peer) => peer.publicKey === peerInfo.publicKey);\n });\n }\n removePeer(publicKey) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storageManager.remove((peer) => peer.publicKey === publicKey);\n });\n }\n removePeers(publicKeys) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storageManager.remove((peer) => publicKeys.includes(peer.publicKey));\n });\n }\n removeAllPeers() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storageManager.removeAll();\n });\n }\n}\nexports.PeerManager = PeerManager;\n//# sourceMappingURL=PeerManager.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-core/dist/cjs/managers/PeerManager.js?')},"./packages/beacon-core/dist/cjs/managers/PermissionManager.js":function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval('\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.PermissionManager = void 0;\nconst beacon_types_1 = __webpack_require__(/*! @airgap/beacon-types */ "./packages/beacon-types/dist/cjs/index.js");\nconst StorageManager_1 = __webpack_require__(/*! ./StorageManager */ "./packages/beacon-core/dist/cjs/managers/StorageManager.js");\nconst PermissionValidator_1 = __webpack_require__(/*! ./PermissionValidator */ "./packages/beacon-core/dist/cjs/managers/PermissionValidator.js");\n/**\n * @internalapi\n *\n * The PermissionManager provides CRUD functionality for permission entities and persists them to the provided storage.\n */\nclass PermissionManager {\n constructor(storage) {\n this.storageManager = new StorageManager_1.StorageManager(storage, beacon_types_1.StorageKey.PERMISSION_LIST);\n }\n getPermissions() {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n return (_a = (yield this.storageManager.getAll())) !== null && _a !== void 0 ? _a : [];\n });\n }\n getPermission(accountIdentifier) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storageManager.getOne((permission) => permission.accountIdentifier === accountIdentifier);\n });\n }\n addPermission(permissionInfo) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storageManager.addOne(permissionInfo, (permission) => permission.accountIdentifier === permissionInfo.accountIdentifier &&\n permission.senderId === permissionInfo.senderId);\n });\n }\n removePermission(accountIdentifier) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storageManager.remove((permissionInfo) => permissionInfo.accountIdentifier === accountIdentifier);\n });\n }\n removePermissions(accountIdentifiers) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storageManager.remove((permission) => accountIdentifiers.includes(permission.accountIdentifier));\n });\n }\n removeAllPermissions() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storageManager.removeAll();\n });\n }\n hasPermission(message) {\n return __awaiter(this, void 0, void 0, function* () {\n return PermissionValidator_1.PermissionValidator.hasPermission(message, this.getPermission.bind(this), this.getPermissions.bind(this));\n });\n }\n}\nexports.PermissionManager = PermissionManager;\n//# sourceMappingURL=PermissionManager.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-core/dist/cjs/managers/PermissionManager.js?')},"./packages/beacon-core/dist/cjs/managers/PermissionValidator.js":function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval('\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.PermissionValidator = void 0;\nconst beacon_types_1 = __webpack_require__(/*! @airgap/beacon-types */ "./packages/beacon-types/dist/cjs/index.js");\nconst get_account_identifier_1 = __webpack_require__(/*! ../utils/get-account-identifier */ "./packages/beacon-core/dist/cjs/utils/get-account-identifier.js");\n/**\n * @internalapi\n *\n * The PermissionValidator is used to check if permissions for a certain message type have been given\n */\nclass PermissionValidator {\n /**\n * Check if permissions were given for a certain message type.\n *\n * PermissionRequest and BroadcastRequest will always return true.\n *\n * @param message Beacon Message\n */\n static hasPermission(message, getOne, getAll) {\n return __awaiter(this, void 0, void 0, function* () {\n switch (message.type) {\n case beacon_types_1.BeaconMessageType.PermissionRequest:\n case beacon_types_1.BeaconMessageType.BroadcastRequest: {\n return true;\n }\n case beacon_types_1.BeaconMessageType.OperationRequest: {\n const accountIdentifier = yield (0, get_account_identifier_1.getAccountIdentifier)(message.sourceAddress, message.network);\n const permission = yield getOne(accountIdentifier);\n if (!permission) {\n return false;\n }\n return permission.scopes.includes(beacon_types_1.PermissionScope.OPERATION_REQUEST);\n }\n case beacon_types_1.BeaconMessageType.SignPayloadRequest: {\n const permissions = yield getAll();\n const filteredPermissions = permissions.filter((permission) => permission.address === message.sourceAddress);\n if (filteredPermissions.length === 0) {\n return false;\n }\n return filteredPermissions.some((permission) => permission.scopes.includes(beacon_types_1.PermissionScope.SIGN));\n }\n default:\n throw new Error(\'Message not handled\');\n }\n });\n }\n}\nexports.PermissionValidator = PermissionValidator;\n//# sourceMappingURL=PermissionValidator.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-core/dist/cjs/managers/PermissionValidator.js?')},"./packages/beacon-core/dist/cjs/managers/StorageManager.js":function(__unused_webpack_module,exports){"use strict";eval('\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.StorageManager = void 0;\n/* eslint-disable prefer-arrow/prefer-arrow-functions */\nfunction fixArrayType(array) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return array;\n}\n/* eslint-enable prefer-arrow/prefer-arrow-functions */\n/**\n * @internalapi\n *\n * The StorageManager provides CRUD functionality for specific entities and persists them to the provided storage.\n */\nclass StorageManager {\n constructor(storage, storageKey) {\n this.storage = storage;\n this.storageKey = storageKey;\n }\n getAll() {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n return (_a = (yield this.storage.get(this.storageKey))) !== null && _a !== void 0 ? _a : [];\n });\n }\n getOne(predicate) {\n return __awaiter(this, void 0, void 0, function* () {\n const entities = yield this.storage.get(this.storageKey);\n return fixArrayType(entities).find(predicate);\n });\n }\n addOne(element, predicate, overwrite = true) {\n return __awaiter(this, void 0, void 0, function* () {\n const entities = yield this.storage.get(this.storageKey);\n if (!fixArrayType(entities).some(predicate)) {\n fixArrayType(entities).push(element);\n }\n else if (overwrite) {\n for (let i = 0; i < entities.length; i++) {\n if (predicate(fixArrayType(entities)[i])) {\n entities[i] = element;\n }\n }\n }\n return this.storage.set(this.storageKey, entities);\n });\n }\n remove(predicate) {\n return __awaiter(this, void 0, void 0, function* () {\n const entities = yield this.storage.get(this.storageKey);\n const filteredEntities = fixArrayType(entities).filter((entity) => !predicate(entity));\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return this.storage.set(this.storageKey, filteredEntities);\n });\n }\n removeAll() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.storage.delete(this.storageKey);\n });\n }\n}\nexports.StorageManager = StorageManager;\n//# sourceMappingURL=StorageManager.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-core/dist/cjs/managers/StorageManager.js?')},"./packages/beacon-core/dist/cjs/storage/ChromeStorage.js":function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ChromeStorage = void 0;\nconst beacon_types_1 = __webpack_require__(/*! @airgap/beacon-types */ \"./packages/beacon-types/dist/cjs/index.js\");\n/**\n * @internalapi\n *\n * A storage that can be used in chrome extensions\n */\nclass ChromeStorage {\n static isSupported() {\n return __awaiter(this, void 0, void 0, function* () {\n return (typeof window !== 'undefined' &&\n typeof chrome !== 'undefined' &&\n Boolean(chrome) &&\n Boolean(chrome.runtime) &&\n Boolean(chrome.runtime.id));\n });\n }\n get(key) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve) => {\n chrome.storage.local.get(null, (storageContent) => {\n if (storageContent[key]) {\n resolve(storageContent[key]);\n }\n else {\n if (typeof beacon_types_1.defaultValues[key] === 'object') {\n resolve(JSON.parse(JSON.stringify(beacon_types_1.defaultValues[key])));\n }\n else {\n resolve(beacon_types_1.defaultValues[key]);\n }\n }\n });\n });\n });\n }\n set(key, value) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve) => {\n chrome.storage.local.set({ [key]: value }, () => {\n resolve();\n });\n });\n });\n }\n delete(key) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve) => {\n chrome.storage.local.set({ [key]: undefined }, () => {\n resolve();\n });\n });\n });\n }\n subscribeToStorageChanged(_callback) {\n return __awaiter(this, void 0, void 0, function* () {\n // TODO\n });\n }\n getPrefixedKey(key) {\n return key;\n }\n}\nexports.ChromeStorage = ChromeStorage;\n//# sourceMappingURL=ChromeStorage.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-core/dist/cjs/storage/ChromeStorage.js?")},"./packages/beacon-core/dist/cjs/storage/IndexedDBStorage.js":function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.IndexedDBStorage = void 0;\nconst beacon_types_1 = __webpack_require__(/*! @airgap/beacon-types */ \"./packages/beacon-types/dist/cjs/index.js\");\nconst beacon_core_1 = __webpack_require__(/*! @airgap/beacon-core */ \"./packages/beacon-core/dist/cjs/index.js\");\nconst logger = new beacon_core_1.Logger('IndexedDBStorage');\nclass IndexedDBStorage extends beacon_types_1.Storage {\n constructor() {\n super(...arguments);\n this.dbName = 'WALLET_CONNECT_V2_INDEXED_DB';\n this.storeName = 'keyvaluestorage';\n this.db = null;\n }\n static doesDatabaseAndTableExist() {\n return __awaiter(this, void 0, void 0, function* () {\n const targetDatabaseName = 'WALLET_CONNECT_V2_INDEXED_DB';\n const targetTableName = 'keyvaluestorage';\n const databases = yield indexedDB.databases();\n if (!databases.some((database) => database.name === targetDatabaseName)) {\n return false; // The specified database doesn't exist\n }\n // Open the database to check if the table exists\n return new Promise((resolve, reject) => {\n const request = indexedDB.open(targetDatabaseName);\n request.onsuccess = (event) => {\n const db = event.target.result;\n if (db.objectStoreNames.contains(targetTableName)) {\n // The table exists in the database\n resolve(true);\n }\n else {\n // The table doesn't exist in the database\n resolve(false);\n }\n db.close();\n };\n request.onerror = (event) => {\n console.error('Error opening database:', event.target.error);\n reject(false); // Assume the table doesn't exist if there's an error opening the database\n };\n });\n });\n }\n openDatabase() {\n return new Promise((resolve, reject) => {\n const request = indexedDB.open(this.dbName, 1);\n request.onupgradeneeded = (event) => {\n this.db = event.target.result;\n // Create object store if it doesn't exist\n if (this.db && !this.db.objectStoreNames.contains(this.storeName)) {\n this.db.createObjectStore(this.storeName, { keyPath: 'id', autoIncrement: true });\n }\n };\n request.onsuccess = (event) => {\n this.db = event.target.result;\n resolve('Database opened successfully');\n };\n request.onerror = (event) => {\n reject(`Error opening database: ${event.target.error}`);\n };\n });\n }\n get(key) {\n return new Promise((resolve, reject) => {\n const request = indexedDB.open(this.dbName);\n request.onsuccess = (event) => {\n const db = event.target.result;\n const transaction = db.transaction(this.storeName, 'readonly');\n const objectStore = transaction.objectStore(this.storeName);\n const getRequest = objectStore.get(key);\n getRequest.onsuccess = () => {\n const result = getRequest.result;\n resolve(result);\n };\n getRequest.onerror = (getEvent) => {\n logger.error(`Error getting record with key ${key}:`, getEvent.target);\n reject(getEvent.target);\n };\n };\n request.onerror = (event) => {\n logger.error('Error opening database:', event.target);\n reject(event.target);\n };\n });\n }\n set(key, value) {\n return new Promise((resolve, reject) => {\n const request = indexedDB.open(this.dbName);\n request.onsuccess = (event) => {\n const db = event.target.result;\n const transaction = db.transaction(this.storeName, 'readwrite');\n const objectStore = transaction.objectStore(this.storeName);\n const putRequest = objectStore.put(value, key);\n putRequest.onsuccess = () => {\n logger.log(`Record with key ${key} updated/inserted successfully`);\n resolve();\n };\n putRequest.onerror = (putEvent) => {\n logger.error(`Error updating/inserting record with key ${key}:`, putEvent.target);\n reject(putEvent.target);\n };\n };\n request.onerror = (event) => {\n logger.error('Error opening database:', event.target);\n reject(event.target);\n };\n });\n }\n delete(key) {\n return new Promise((resolve, reject) => {\n const request = indexedDB.open(this.dbName);\n request.onsuccess = (event) => {\n const db = event.target.result;\n const transaction = db.transaction(this.storeName, 'readwrite');\n const objectStore = transaction.objectStore(this.storeName);\n const deleteRequest = objectStore.delete(key);\n deleteRequest.onsuccess = () => {\n logger.log(`Record with key ${key} deleted successfully`);\n resolve();\n };\n deleteRequest.onerror = (deleteEvent) => {\n logger.error(`Error deleting record with key ${key}:`, deleteEvent.target.error);\n reject(deleteEvent.target.error);\n };\n };\n request.onerror = (event) => {\n logger.error('Error opening database:', event.target.error);\n reject(event.target.error);\n };\n });\n }\n subscribeToStorageChanged(callback) {\n logger.debug('subscriveToStorageEvent', callback);\n throw new Error('Method not implemented.');\n }\n getPrefixedKey(key) {\n logger.debug('getPrefixedKey', key);\n throw new Error('Method not implemented.');\n }\n clearTable() {\n return new Promise((resolve, reject) => {\n const request = indexedDB.open(this.dbName);\n request.onsuccess = (event) => {\n const db = event.target.result;\n const transaction = db.transaction(this.storeName, 'readwrite');\n const objectStore = transaction.objectStore(this.storeName);\n const clearRequest = objectStore.clear();\n clearRequest.onsuccess = () => {\n logger.log(`All entries in ${this.storeName} cleared successfully`);\n resolve();\n };\n clearRequest.onerror = (clearEvent) => {\n logger.error(`Error clearing entries in ${this.storeName}:`, clearEvent.target);\n reject(clearEvent.target);\n };\n };\n request.onerror = (event) => {\n logger.error('Error opening database:', event.target);\n reject(event.target);\n };\n });\n }\n}\nexports.IndexedDBStorage = IndexedDBStorage;\n//# sourceMappingURL=IndexedDBStorage.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-core/dist/cjs/storage/IndexedDBStorage.js?")},"./packages/beacon-core/dist/cjs/storage/LocalStorage.js":function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.LocalStorage = void 0;\nconst beacon_types_1 = __webpack_require__(/*! @airgap/beacon-types */ \"./packages/beacon-types/dist/cjs/index.js\");\n/**\n * @internalapi\n *\n * A storage that can be used in the browser\n */\nclass LocalStorage extends beacon_types_1.Storage {\n constructor(prefix) {\n super();\n this.prefix = prefix;\n }\n static isSupported() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.resolve(Boolean(typeof window !== 'undefined') && Boolean(window.localStorage));\n });\n }\n get(key) {\n return __awaiter(this, void 0, void 0, function* () {\n const value = localStorage.getItem(this.getPrefixedKey(key));\n if (!value) {\n if (typeof beacon_types_1.defaultValues[key] === 'object') {\n return JSON.parse(JSON.stringify(beacon_types_1.defaultValues[key]));\n }\n else {\n return beacon_types_1.defaultValues[key];\n }\n }\n else {\n try {\n return JSON.parse(value);\n }\n catch (jsonParseError) {\n return value; // TODO: Validate storage\n }\n }\n });\n }\n set(key, value) {\n return __awaiter(this, void 0, void 0, function* () {\n if (typeof value === 'string') {\n return localStorage.setItem(this.getPrefixedKey(key), value);\n }\n else {\n return localStorage.setItem(this.getPrefixedKey(key), JSON.stringify(value));\n }\n });\n }\n delete(key) {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.resolve(localStorage.removeItem(this.getPrefixedKey(key)));\n });\n }\n subscribeToStorageChanged(callback) {\n return __awaiter(this, void 0, void 0, function* () {\n window.addEventListener('storage', (event) => {\n if (!event.key) {\n callback({\n eventType: 'storageCleared',\n key: null,\n oldValue: null,\n newValue: null\n });\n }\n else {\n callback({\n eventType: 'entryModified',\n key: this.getPrefixedKey(event.key),\n oldValue: event.oldValue,\n newValue: event.newValue\n });\n }\n }, false);\n });\n }\n getPrefixedKey(key) {\n return this.prefix ? `${this.prefix}-${key}` : key;\n }\n}\nexports.LocalStorage = LocalStorage;\n//# sourceMappingURL=LocalStorage.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-core/dist/cjs/storage/LocalStorage.js?")},"./packages/beacon-core/dist/cjs/storage/WCStorage.js":function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.WCStorage = void 0;\nconst beacon_types_1 = __webpack_require__(/*! @airgap/beacon-types */ \"./packages/beacon-types/dist/cjs/index.js\");\nconst LocalStorage_1 = __webpack_require__(/*! ./LocalStorage */ \"./packages/beacon-core/dist/cjs/storage/LocalStorage.js\");\nconst IndexedDBStorage_1 = __webpack_require__(/*! ./IndexedDBStorage */ \"./packages/beacon-core/dist/cjs/storage/IndexedDBStorage.js\");\nclass WCStorage {\n constructor() {\n this.localStorage = new LocalStorage_1.LocalStorage();\n this.indexedDB = new IndexedDBStorage_1.IndexedDBStorage();\n IndexedDBStorage_1.IndexedDBStorage.doesDatabaseAndTableExist()\n .then((exists) => __awaiter(this, void 0, void 0, function* () {\n if (exists) {\n yield this.indexedDB.openDatabase();\n }\n }))\n .catch((error) => console.error(error.message));\n }\n hasPairings() {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function* () {\n if (yield IndexedDBStorage_1.IndexedDBStorage.doesDatabaseAndTableExist()) {\n return ((_a = (yield this.indexedDB.get(beacon_types_1.StorageKey.WC_2_CORE_PAIRING))) !== null && _a !== void 0 ? _a : '[]') !== '[]';\n }\n if (yield LocalStorage_1.LocalStorage.isSupported()) {\n return ((_b = (yield this.localStorage.get(beacon_types_1.StorageKey.WC_2_CORE_PAIRING))) !== null && _b !== void 0 ? _b : '[]') !== '[]';\n }\n return false;\n });\n }\n hasSessions() {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function* () {\n if (yield IndexedDBStorage_1.IndexedDBStorage.doesDatabaseAndTableExist()) {\n return ((_a = (yield this.indexedDB.get(beacon_types_1.StorageKey.WC_2_CLIENT_SESSION))) !== null && _a !== void 0 ? _a : '[]') !== '[]';\n }\n if (yield LocalStorage_1.LocalStorage.isSupported()) {\n return ((_b = (yield this.localStorage.get(beacon_types_1.StorageKey.WC_2_CLIENT_SESSION))) !== null && _b !== void 0 ? _b : '[]') !== '[]';\n }\n return false;\n });\n }\n resetState() {\n return __awaiter(this, void 0, void 0, function* () {\n if (yield IndexedDBStorage_1.IndexedDBStorage.doesDatabaseAndTableExist()) {\n yield this.indexedDB.clearTable();\n return;\n }\n if (yield LocalStorage_1.LocalStorage.isSupported()) {\n yield Promise.all([\n this.localStorage.delete(beacon_types_1.StorageKey.WC_2_CLIENT_SESSION),\n this.localStorage.delete(beacon_types_1.StorageKey.WC_2_CORE_PAIRING),\n this.localStorage.delete(beacon_types_1.StorageKey.WC_2_CORE_KEYCHAIN),\n this.localStorage.delete(beacon_types_1.StorageKey.WC_2_CORE_MESSAGES),\n this.localStorage.delete(beacon_types_1.StorageKey.WC_2_CLIENT_PROPOSAL),\n this.localStorage.delete(beacon_types_1.StorageKey.WC_2_CORE_SUBSCRIPTION),\n this.localStorage.delete(beacon_types_1.StorageKey.WC_2_CORE_HISTORY),\n this.localStorage.delete(beacon_types_1.StorageKey.WC_2_CORE_EXPIRER)\n ]);\n }\n });\n }\n}\nexports.WCStorage = WCStorage;\n//# sourceMappingURL=WCStorage.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-core/dist/cjs/storage/WCStorage.js?")},"./packages/beacon-core/dist/cjs/storage/getStorage.js":function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.getStorage = void 0;\nconst Logger_1 = __webpack_require__(/*! ../utils/Logger */ \"./packages/beacon-core/dist/cjs/utils/Logger.js\");\nconst __1 = __webpack_require__(/*! .. */ \"./packages/beacon-core/dist/cjs/index.js\");\nconst logger = new Logger_1.Logger('STORAGE');\n/**\n * Get a supported storage on this platform\n */\nconst getStorage = () => __awaiter(void 0, void 0, void 0, function* () {\n if (yield __1.ChromeStorage.isSupported()) {\n logger.log('getStorage', 'USING CHROME STORAGE');\n return new __1.ChromeStorage();\n }\n else if (yield __1.LocalStorage.isSupported()) {\n logger.log('getStorage', 'USING LOCAL STORAGE');\n return new __1.LocalStorage();\n }\n else {\n throw new Error('no storage type supported');\n }\n});\nexports.getStorage = getStorage;\n//# sourceMappingURL=getStorage.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-core/dist/cjs/storage/getStorage.js?")},"./packages/beacon-core/dist/cjs/transports/Transport.js":function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.Transport = void 0;\nconst Logger_1 = __webpack_require__(/*! ../utils/Logger */ \"./packages/beacon-core/dist/cjs/utils/Logger.js\");\nconst beacon_types_1 = __webpack_require__(/*! @airgap/beacon-types */ \"./packages/beacon-types/dist/cjs/index.js\");\nconst logger = new Logger_1.Logger('Transport');\n/**\n * @internalapi\n *\n *\n */\nclass Transport {\n setEventHandler(event, fun) {\n this.client.eventHandlers.set(event, fun);\n }\n /**\n * Return the status of the connection\n */\n get connectionStatus() {\n return this._isConnected;\n }\n constructor(name, client, peerManager) {\n /**\n * The type of the transport\n */\n this.type = beacon_types_1.TransportType.POST_MESSAGE;\n /**\n * The status of the transport\n */\n this._isConnected = beacon_types_1.TransportStatus.NOT_CONNECTED;\n /**\n * The listeners that will be notified when new messages are coming in\n */\n this.listeners = [];\n this.name = name;\n this.client = client;\n this.peerManager = peerManager;\n }\n /**\n * Returns a promise that resolves to true if the transport is available, false if it is not\n */\n static isAvailable() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.resolve(false);\n });\n }\n /**\n * Connect the transport\n */\n connect() {\n return __awaiter(this, void 0, void 0, function* () {\n logger.log('connect');\n this._isConnected = beacon_types_1.TransportStatus.CONNECTED;\n return;\n });\n }\n /**\n * Disconnect the transport\n */\n disconnect() {\n return __awaiter(this, void 0, void 0, function* () {\n logger.log('disconnect');\n this._isConnected = beacon_types_1.TransportStatus.NOT_CONNECTED;\n return;\n });\n }\n /**\n * Send a message through the transport\n *\n * @param message The message to send\n * @param recipient The recipient of the message\n */\n send(message, peer) {\n return __awaiter(this, void 0, void 0, function* () {\n if (peer) {\n return this.client.sendMessage(message, peer);\n }\n else {\n const knownPeers = yield this.getPeers();\n // A broadcast request has to be sent everywhere.\n const promises = knownPeers.map((peerEl) => this.client.sendMessage(message, peerEl));\n return (yield Promise.all(promises))[0];\n }\n });\n }\n /**\n * Add a listener to be called when a new message is received\n *\n * @param listener The listener that will be registered\n */\n addListener(listener) {\n return __awaiter(this, void 0, void 0, function* () {\n logger.debug('addListener');\n this.listeners.push(listener);\n return;\n });\n }\n /**\n * Remove a listener\n *\n * @param listener\n */\n removeListener(listener) {\n return __awaiter(this, void 0, void 0, function* () {\n logger.log('removeListener');\n this.listeners = this.listeners.filter((element) => element !== listener);\n return;\n });\n }\n getPeers() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.peerManager.getPeers(); // TODO: Fix type\n });\n }\n addPeer(newPeer, _sendPairingResponse = true) {\n return __awaiter(this, void 0, void 0, function* () {\n logger.log('addPeer', 'adding peer', newPeer);\n yield this.peerManager.addPeer(newPeer); // TODO: Fix type\n yield this.listen(newPeer.publicKey);\n });\n }\n removePeer(peerToBeRemoved) {\n return __awaiter(this, void 0, void 0, function* () {\n logger.log('removePeer', 'removing peer', peerToBeRemoved);\n yield this.peerManager.removePeer(peerToBeRemoved.publicKey);\n if (this.client) {\n yield this.client.unsubscribeFromEncryptedMessage(peerToBeRemoved.publicKey);\n }\n });\n }\n removeAllPeers() {\n return __awaiter(this, void 0, void 0, function* () {\n logger.log('removeAllPeers');\n yield this.peerManager.removeAllPeers();\n if (this.client) {\n yield this.client.unsubscribeFromEncryptedMessages();\n }\n });\n }\n /**\n * Notify the listeners when a new message comes in\n *\n * @param message Message\n * @param connectionInfo Context info about the connection\n */\n notifyListeners(message, connectionInfo) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.listeners.length === 0) {\n logger.warn('notifyListeners', '0 listeners notified!', this);\n }\n else {\n logger.log('notifyListeners', `Notifying ${this.listeners.length} listeners`, this);\n }\n this.listeners.forEach((listener) => {\n listener(message, connectionInfo);\n });\n return;\n });\n }\n}\nexports.Transport = Transport;\n//# sourceMappingURL=Transport.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-core/dist/cjs/transports/Transport.js?")},"./packages/beacon-core/dist/cjs/transports/clients/CommunicationClient.js":function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval('/* provided dependency */ var Buffer = __webpack_require__(/*! buffer */ "./node_modules/buffer/index.js")["Buffer"];\n\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.CommunicationClient = void 0;\nconst beacon_utils_1 = __webpack_require__(/*! @airgap/beacon-utils */ "./packages/beacon-utils/dist/cjs/index.js");\nconst ed25519_1 = __webpack_require__(/*! @stablelib/ed25519 */ "./node_modules/@stablelib/ed25519/lib/ed25519.js");\nconst x25519_session_1 = __webpack_require__(/*! @stablelib/x25519-session */ "./node_modules/@stablelib/x25519-session/lib/x25519-session.js");\n/**\n * @internalapi\n *\n *\n */\nclass CommunicationClient {\n constructor(keyPair) {\n this.keyPair = keyPair;\n this.eventHandlers = new Map();\n }\n /**\n * Get the public key\n */\n getPublicKey() {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n return (0, beacon_utils_1.toHex)((_a = this.keyPair) === null || _a === void 0 ? void 0 : _a.publicKey);\n });\n }\n /**\n * get the public key hash\n */\n getPublicKeyHash() {\n return __awaiter(this, void 0, void 0, function* () {\n return (0, beacon_utils_1.getHexHash)(this.keyPair.publicKey);\n });\n }\n /**\n * Create a cryptobox server\n *\n * @param otherPublicKey\n * @param selfKeypair\n */\n createCryptoBoxServer(otherPublicKey, selfKeypair) {\n return __awaiter(this, void 0, void 0, function* () {\n return (0, x25519_session_1.serverSessionKeys)({\n publicKey: (0, ed25519_1.convertPublicKeyToX25519)(selfKeypair.publicKey),\n secretKey: (0, ed25519_1.convertSecretKeyToX25519)(selfKeypair.secretKey)\n }, (0, ed25519_1.convertPublicKeyToX25519)(Buffer.from(otherPublicKey, \'hex\')));\n });\n }\n /**\n * Create a cryptobox client\n *\n * @param otherPublicKey\n * @param selfKeypair\n */\n createCryptoBoxClient(otherPublicKey, selfKeypair) {\n return __awaiter(this, void 0, void 0, function* () {\n return (0, x25519_session_1.clientSessionKeys)({\n publicKey: (0, ed25519_1.convertPublicKeyToX25519)(selfKeypair.publicKey),\n secretKey: (0, ed25519_1.convertSecretKeyToX25519)(selfKeypair.secretKey)\n }, (0, ed25519_1.convertPublicKeyToX25519)(Buffer.from(otherPublicKey, \'hex\')));\n });\n }\n /**\n * Encrypt a message for a specific publicKey (receiver, asymmetric)\n *\n * @param recipientPublicKey\n * @param message\n */\n encryptMessageAsymmetric(recipientPublicKey, message) {\n return __awaiter(this, void 0, void 0, function* () {\n return (0, beacon_utils_1.sealCryptobox)(message, Buffer.from(recipientPublicKey, \'hex\'));\n });\n }\n}\nexports.CommunicationClient = CommunicationClient;\n//# sourceMappingURL=CommunicationClient.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-core/dist/cjs/transports/clients/CommunicationClient.js?')},"./packages/beacon-core/dist/cjs/transports/clients/MessageBasedClient.js":function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval('/* provided dependency */ var Buffer = __webpack_require__(/*! buffer */ "./node_modules/buffer/index.js")["Buffer"];\n\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.MessageBasedClient = void 0;\nconst constants_1 = __webpack_require__(/*! ../../constants */ "./packages/beacon-core/dist/cjs/constants.js");\nconst beacon_utils_1 = __webpack_require__(/*! @airgap/beacon-utils */ "./packages/beacon-utils/dist/cjs/index.js");\nconst CommunicationClient_1 = __webpack_require__(/*! ./CommunicationClient */ "./packages/beacon-core/dist/cjs/transports/clients/CommunicationClient.js");\nconst beacon_types_1 = __webpack_require__(/*! @airgap/beacon-types */ "./packages/beacon-types/dist/cjs/index.js");\n/**\n * @internalapi\n *\n *\n */\nclass MessageBasedClient extends CommunicationClient_1.CommunicationClient {\n constructor(name, keyPair) {\n super(keyPair);\n this.name = name;\n this.init().catch(console.error);\n }\n /**\n * start the client and make sure all dependencies are ready\n */\n start() {\n return __awaiter(this, void 0, void 0, function* () {\n yield Promise.resolve();\n });\n }\n /**\n * Get the pairing request information. This will be shared with the peer during the connection setup\n */\n getPairingRequestInfo() {\n return __awaiter(this, void 0, void 0, function* () {\n return new beacon_types_1.PostMessagePairingRequest(yield (0, beacon_utils_1.generateGUID)(), this.name, yield this.getPublicKey(), constants_1.BEACON_VERSION);\n });\n }\n /**\n * Get the pairing response information. This will be shared with the peer during the connection setup\n */\n getPairingResponseInfo(request) {\n return __awaiter(this, void 0, void 0, function* () {\n return new beacon_types_1.PostMessagePairingResponse(request.id, this.name, yield this.getPublicKey(), request.version);\n });\n }\n /**\n * Unsubscribe from encrypted messages from a specific peer\n *\n * @param senderPublicKey\n */\n unsubscribeFromEncryptedMessage(senderPublicKey) {\n return __awaiter(this, void 0, void 0, function* () {\n const listener = this.activeListeners.get(senderPublicKey);\n if (!listener) {\n return;\n }\n this.activeListeners.delete(senderPublicKey);\n });\n }\n /**\n * Unsubscribe from all encrypted messages\n */\n unsubscribeFromEncryptedMessages() {\n return __awaiter(this, void 0, void 0, function* () {\n this.activeListeners.clear();\n });\n }\n /**\n * Decrypt a message from a specific peer\n *\n * @param senderPublicKey\n * @param payload\n */\n decryptMessage(senderPublicKey, payload) {\n return __awaiter(this, void 0, void 0, function* () {\n const sharedKey = yield this.createCryptoBoxServer(senderPublicKey, this.keyPair);\n const hexPayload = Buffer.from(payload, \'hex\');\n if (hexPayload.length >= beacon_utils_1.secretbox_NONCEBYTES + beacon_utils_1.secretbox_MACBYTES) {\n try {\n return yield (0, beacon_utils_1.decryptCryptoboxPayload)(hexPayload, sharedKey.receive);\n }\n catch (decryptionError) {\n /* NO-OP. We try to decode every message, but some might not be addressed to us. */\n }\n }\n throw new Error(\'Could not decrypt message\');\n });\n }\n /**\n * Encrypt a message for a specific publicKey (receiver)\n *\n * @param recipientPublicKey\n * @param message\n */\n encryptMessage(recipientPublicKey, message) {\n return __awaiter(this, void 0, void 0, function* () {\n const sharedKey = yield this.createCryptoBoxClient(recipientPublicKey, this.keyPair);\n return (0, beacon_utils_1.encryptCryptoboxPayload)(message, sharedKey.send);\n });\n }\n}\nexports.MessageBasedClient = MessageBasedClient;\n//# sourceMappingURL=MessageBasedClient.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-core/dist/cjs/transports/clients/MessageBasedClient.js?')},"./packages/beacon-core/dist/cjs/utils/Logger.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.getLogger = exports.setLogger = exports.Logger = exports.InternalLogger = void 0;\nconst debug_1 = __webpack_require__(/*! ../debug */ \"./packages/beacon-core/dist/cjs/debug.js\");\n/**\n * The logger that is used internally\n */\nclass InternalLogger {\n constructor() { }\n debug(name, method, ...args) {\n this._log('debug', name, method, args);\n }\n log(name, method, ...args) {\n this._log('log', name, method, args);\n }\n warn(name, method, ...args) {\n this._log('warn', name, method, args);\n }\n error(name, method, ...args) {\n this._log('error', name, method, args);\n }\n time(start, label) {\n start ? console.time(label) : console.timeEnd(label);\n }\n timeLog(name, method, ...args) {\n this._log('timeLog', name, method, args);\n }\n _log(type, name, method, args = []) {\n if (!(0, debug_1.getDebugEnabled)()) {\n return;\n }\n let groupText = `[BEACON] ${new Date().toISOString()} [${name}](${method})`;\n let data = args;\n if (args[0] && typeof args[0] === 'string') {\n groupText += ` ${args[0]}`;\n data = args.slice(1);\n }\n switch (type) {\n case 'error':\n console.group(groupText);\n console.error(...data);\n break;\n case 'warn':\n console.group(groupText);\n console.warn(...data);\n break;\n case 'debug':\n console.groupCollapsed(groupText);\n console.debug(...data);\n break;\n case 'timeLog':\n console.group(groupText);\n console.timeLog(...data);\n break;\n default:\n console.group(groupText);\n console.log(...data);\n }\n console.groupEnd();\n // echo.group(echo.asWarning(`[BEACON] ${message}`))\n // echo.log(echo.asWarning(`[${this.name}]`), echo.asAlert(`(${method})`), ...args)\n // echo.groupEnd()\n }\n}\nexports.InternalLogger = InternalLogger;\nclass Logger {\n constructor(service) {\n this.name = service;\n }\n debug(method, ...args) {\n logger.debug(this.name, method, args);\n }\n log(method, ...args) {\n logger.log(this.name, method, args);\n }\n warn(method, ...args) {\n logger.warn(this.name, method, args);\n }\n error(method, ...args) {\n logger.error(this.name, method, args);\n }\n time(start, label) {\n logger.time(start, label);\n }\n timeLog(method, ...args) {\n logger.timeLog(method, args);\n }\n}\nexports.Logger = Logger;\nconst loggerWrapper = new Logger('');\nlet logger = new InternalLogger();\nconst setLogger = (newLogger) => {\n logger = newLogger;\n};\nexports.setLogger = setLogger;\nconst getLogger = () => loggerWrapper;\nexports.getLogger = getLogger;\n//# sourceMappingURL=Logger.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-core/dist/cjs/utils/Logger.js?")},"./packages/beacon-core/dist/cjs/utils/assert-never.js":(__unused_webpack_module,exports)=>{"use strict";eval('\n/* eslint-disable prefer-arrow/prefer-arrow-functions */\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.assertNever = void 0;\n/**\n * A helper function to make sure if/elses and switch/cases are exhaustive\n *\n * @param empty The data that has to be empty\n */\nfunction assertNever(empty) {\n return empty;\n}\nexports.assertNever = assertNever;\n/* eslint-enable prefer-arrow/prefer-arrow-functions */\n//# sourceMappingURL=assert-never.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-core/dist/cjs/utils/assert-never.js?')},"./packages/beacon-core/dist/cjs/utils/get-account-identifier.js":function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval('/* provided dependency */ var Buffer = __webpack_require__(/*! buffer */ "./node_modules/buffer/index.js")["Buffer"];\n\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.getAccountIdentifier = void 0;\nconst bs58check = __webpack_require__(/*! bs58check */ "./node_modules/bs58check/index.js");\nconst blake2b_1 = __webpack_require__(/*! @stablelib/blake2b */ "./node_modules/@stablelib/blake2b/lib/blake2b.js");\nconst utf8_1 = __webpack_require__(/*! @stablelib/utf8 */ "./node_modules/@stablelib/utf8/lib/utf8.js");\n/**\n * @internalapi\n *\n * Generate a deterministic account identifier based on an address and a network\n *\n * @param address\n * @param network\n */\nconst getAccountIdentifier = (address, network) => __awaiter(void 0, void 0, void 0, function* () {\n const data = [address, network.type];\n if (network.name) {\n data.push(`name:${network.name}`);\n }\n if (network.rpcUrl) {\n data.push(`rpc:${network.rpcUrl}`);\n }\n const buffer = Buffer.from((0, blake2b_1.hash)((0, utf8_1.encode)(data.join(\'-\')), 10));\n return bs58check.encode(buffer);\n});\nexports.getAccountIdentifier = getAccountIdentifier;\n//# sourceMappingURL=get-account-identifier.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-core/dist/cjs/utils/get-account-identifier.js?')},"./packages/beacon-core/dist/cjs/utils/get-sender-id.js":function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval('/* provided dependency */ var Buffer = __webpack_require__(/*! buffer */ "./node_modules/buffer/index.js")["Buffer"];\n\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.getSenderId = void 0;\nconst blake2b_1 = __webpack_require__(/*! @stablelib/blake2b */ "./node_modules/@stablelib/blake2b/lib/blake2b.js");\nconst bs58check = __webpack_require__(/*! bs58check */ "./node_modules/bs58check/index.js");\n/**\n * @internalapi\n *\n * Generate a deterministic sender identifier based on a public key\n *\n * @param publicKey\n */\nconst getSenderId = (publicKey) => __awaiter(void 0, void 0, void 0, function* () {\n const buffer = Buffer.from((0, blake2b_1.hash)(Buffer.from(publicKey, \'hex\'), 5));\n return bs58check.encode(buffer);\n});\nexports.getSenderId = getSenderId;\n//# sourceMappingURL=get-sender-id.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-core/dist/cjs/utils/get-sender-id.js?')},"./packages/beacon-dapp/dist/cjs/beacon-message-events.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.messageEvents = void 0;\nconst events_1 = __webpack_require__(/*! ./events */ "./packages/beacon-dapp/dist/cjs/events.js");\nconst beacon_types_1 = __webpack_require__(/*! @airgap/beacon-types */ "./packages/beacon-types/dist/cjs/index.js");\nexports.messageEvents = {\n [beacon_types_1.BeaconMessageType.BlockchainRequest]: {\n sent: events_1.BeaconEvent.UNKNOWN,\n success: events_1.BeaconEvent.UNKNOWN,\n error: events_1.BeaconEvent.UNKNOWN\n },\n [beacon_types_1.BeaconMessageType.BlockchainResponse]: {\n sent: events_1.BeaconEvent.UNKNOWN,\n success: events_1.BeaconEvent.UNKNOWN,\n error: events_1.BeaconEvent.UNKNOWN\n },\n [beacon_types_1.BeaconMessageType.PermissionRequest]: {\n sent: events_1.BeaconEvent.PERMISSION_REQUEST_SENT,\n success: events_1.BeaconEvent.PERMISSION_REQUEST_SUCCESS,\n error: events_1.BeaconEvent.PERMISSION_REQUEST_ERROR\n },\n [beacon_types_1.BeaconMessageType.PermissionResponse]: {\n sent: events_1.BeaconEvent.UNKNOWN,\n success: events_1.BeaconEvent.UNKNOWN,\n error: events_1.BeaconEvent.UNKNOWN\n },\n [beacon_types_1.BeaconMessageType.ProofOfEventChallengeRequest]: {\n sent: events_1.BeaconEvent.PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT,\n success: events_1.BeaconEvent.PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS,\n error: events_1.BeaconEvent.PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR\n },\n [beacon_types_1.BeaconMessageType.ProofOfEventChallengeResponse]: {\n sent: events_1.BeaconEvent.UNKNOWN,\n success: events_1.BeaconEvent.UNKNOWN,\n error: events_1.BeaconEvent.UNKNOWN\n },\n [beacon_types_1.BeaconMessageType.ProofOfEventChallengeRecorded]: {\n sent: events_1.BeaconEvent.UNKNOWN,\n success: events_1.BeaconEvent.UNKNOWN,\n error: events_1.BeaconEvent.UNKNOWN\n },\n [beacon_types_1.BeaconMessageType.OperationRequest]: {\n sent: events_1.BeaconEvent.OPERATION_REQUEST_SENT,\n success: events_1.BeaconEvent.OPERATION_REQUEST_SUCCESS,\n error: events_1.BeaconEvent.OPERATION_REQUEST_ERROR\n },\n [beacon_types_1.BeaconMessageType.OperationResponse]: {\n sent: events_1.BeaconEvent.UNKNOWN,\n success: events_1.BeaconEvent.UNKNOWN,\n error: events_1.BeaconEvent.UNKNOWN\n },\n [beacon_types_1.BeaconMessageType.SignPayloadRequest]: {\n sent: events_1.BeaconEvent.SIGN_REQUEST_SENT,\n success: events_1.BeaconEvent.SIGN_REQUEST_SUCCESS,\n error: events_1.BeaconEvent.SIGN_REQUEST_ERROR\n },\n [beacon_types_1.BeaconMessageType.SignPayloadResponse]: {\n sent: events_1.BeaconEvent.UNKNOWN,\n success: events_1.BeaconEvent.UNKNOWN,\n error: events_1.BeaconEvent.UNKNOWN\n },\n // TODO: ENCRYPTION\n // [BeaconMessageType.EncryptPayloadRequest]: {\n // sent: BeaconEvent.ENCRYPT_REQUEST_SENT,\n // success: BeaconEvent.ENCRYPT_REQUEST_SUCCESS,\n // error: BeaconEvent.ENCRYPT_REQUEST_ERROR\n // },\n // [BeaconMessageType.EncryptPayloadResponse]: {\n // sent: BeaconEvent.UNKNOWN,\n // success: BeaconEvent.UNKNOWN,\n // error: BeaconEvent.UNKNOWN\n // },\n [beacon_types_1.BeaconMessageType.BroadcastRequest]: {\n sent: events_1.BeaconEvent.BROADCAST_REQUEST_SENT,\n success: events_1.BeaconEvent.BROADCAST_REQUEST_SUCCESS,\n error: events_1.BeaconEvent.BROADCAST_REQUEST_ERROR\n },\n [beacon_types_1.BeaconMessageType.BroadcastResponse]: {\n sent: events_1.BeaconEvent.UNKNOWN,\n success: events_1.BeaconEvent.UNKNOWN,\n error: events_1.BeaconEvent.UNKNOWN\n },\n [beacon_types_1.BeaconMessageType.ChangeAccountRequest]: {\n sent: events_1.BeaconEvent.UNKNOWN,\n success: events_1.BeaconEvent.UNKNOWN,\n error: events_1.BeaconEvent.UNKNOWN\n },\n [beacon_types_1.BeaconMessageType.Acknowledge]: {\n sent: events_1.BeaconEvent.UNKNOWN,\n success: events_1.BeaconEvent.UNKNOWN,\n error: events_1.BeaconEvent.UNKNOWN\n },\n [beacon_types_1.BeaconMessageType.Disconnect]: {\n sent: events_1.BeaconEvent.UNKNOWN,\n success: events_1.BeaconEvent.UNKNOWN,\n error: events_1.BeaconEvent.UNKNOWN\n },\n [beacon_types_1.BeaconMessageType.Error]: {\n sent: events_1.BeaconEvent.UNKNOWN,\n success: events_1.BeaconEvent.UNKNOWN,\n error: events_1.BeaconEvent.UNKNOWN\n }\n};\n//# sourceMappingURL=beacon-message-events.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-dapp/dist/cjs/beacon-message-events.js?')},"./packages/beacon-dapp/dist/cjs/dapp-client/DAppClient.js":function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval("/* provided dependency */ var Buffer = __webpack_require__(/*! buffer */ \"./node_modules/buffer/index.js\")[\"Buffer\"];\n\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.DAppClient = void 0;\nconst axios_1 = __webpack_require__(/*! axios */ \"./node_modules/axios/dist/browser/axios.cjs\");\nconst bs58check = __webpack_require__(/*! bs58check */ \"./node_modules/bs58check/index.js\");\nconst events_1 = __webpack_require__(/*! ../events */ \"./packages/beacon-dapp/dist/cjs/events.js\");\nconst beacon_types_1 = __webpack_require__(/*! @airgap/beacon-types */ \"./packages/beacon-types/dist/cjs/index.js\");\nconst beacon_core_1 = __webpack_require__(/*! @airgap/beacon-core */ \"./packages/beacon-core/dist/cjs/index.js\");\nconst beacon_utils_1 = __webpack_require__(/*! @airgap/beacon-utils */ \"./packages/beacon-utils/dist/cjs/index.js\");\nconst beacon_message_events_1 = __webpack_require__(/*! ../beacon-message-events */ \"./packages/beacon-dapp/dist/cjs/beacon-message-events.js\");\nconst tzkt_blockexplorer_1 = __webpack_require__(/*! ../utils/tzkt-blockexplorer */ \"./packages/beacon-dapp/dist/cjs/utils/tzkt-blockexplorer.js\");\nconst beacon_dapp_1 = __webpack_require__(/*! @airgap/beacon-dapp */ \"./packages/beacon-dapp/dist/cjs/index.js\");\nconst DappPostMessageTransport_1 = __webpack_require__(/*! ../transports/DappPostMessageTransport */ \"./packages/beacon-dapp/dist/cjs/transports/DappPostMessageTransport.js\");\nconst DappP2PTransport_1 = __webpack_require__(/*! ../transports/DappP2PTransport */ \"./packages/beacon-dapp/dist/cjs/transports/DappP2PTransport.js\");\nconst DappWalletConnectTransport_1 = __webpack_require__(/*! ../transports/DappWalletConnectTransport */ \"./packages/beacon-dapp/dist/cjs/transports/DappWalletConnectTransport.js\");\nconst beacon_transport_postmessage_1 = __webpack_require__(/*! @airgap/beacon-transport-postmessage */ \"./packages/beacon-transport-postmessage/dist/cjs/index.js\");\nconst beacon_ui_1 = __webpack_require__(/*! @airgap/beacon-ui */ \"./packages/beacon-ui/dist/cjs/index.js\");\nconst beacon_transport_walletconnect_1 = __webpack_require__(/*! @airgap/beacon-transport-walletconnect */ \"./packages/beacon-transport-walletconnect/dist/cjs/index.js\");\nconst logger = new beacon_core_1.Logger('DAppClient');\n/**\n * @publicapi\n *\n * The DAppClient has to be used in decentralized applications. It handles all the logic related to connecting to beacon-compatible\n * wallets and sending requests.\n *\n * @category DApp\n */\nclass DAppClient extends beacon_core_1.Client {\n constructor(config) {\n var _a, _b, _c, _d, _e, _f, _g, _h;\n super(Object.assign({ storage: config && config.storage ? config.storage : new beacon_core_1.LocalStorage() }, config));\n this.events = new beacon_dapp_1.BeaconEventHandler();\n this.isGetActiveAccountHandled = false;\n /**\n * A map of requests that are currently \"open\", meaning we have sent them to a wallet and are still awaiting a response.\n */\n this.openRequests = new Map();\n /**\n * The currently active account. For all requests that are associated to a specific request (operation request, signing request),\n * the active account is used to determine the network and destination wallet\n */\n this._activeAccount = new beacon_utils_1.ExposedPromise();\n /**\n * The currently active peer. This is used to address a peer in case the active account is not set. (Eg. for permission requests)\n */\n this._activePeer = new beacon_utils_1.ExposedPromise();\n this.isInitPending = false;\n this.blockchains = new Map();\n this.description = config.description;\n this.wcProjectId = ((_a = config.walletConnectOptions) === null || _a === void 0 ? void 0 : _a.projectId) || '24469fd0a06df227b6e5f7dc7de0ff4f';\n this.wcRelayUrl = (_b = config.walletConnectOptions) === null || _b === void 0 ? void 0 : _b.relayUrl;\n this.featuredWallets = config.featuredWallets;\n this.events = new beacon_dapp_1.BeaconEventHandler(config.eventHandlers, (_c = config.disableDefaultEvents) !== null && _c !== void 0 ? _c : false);\n this.blockExplorer = (_d = config.blockExplorer) !== null && _d !== void 0 ? _d : new tzkt_blockexplorer_1.TzktBlockExplorer();\n this.network = (_e = config.network) !== null && _e !== void 0 ? _e : { type: (_f = config.preferredNetwork) !== null && _f !== void 0 ? _f : beacon_types_1.NetworkType.MAINNET };\n (0, beacon_ui_1.setColorMode)((_g = config.colorMode) !== null && _g !== void 0 ? _g : beacon_types_1.ColorMode.LIGHT);\n this.disclaimerText = config.disclaimerText;\n this.errorMessages = (_h = config.errorMessages) !== null && _h !== void 0 ? _h : {};\n this.appMetadataManager = new beacon_core_1.AppMetadataManager(this.storage);\n // Subscribe to storage changes and update the active account if it changes on other tabs\n this.storage.subscribeToStorageChanged((event) => __awaiter(this, void 0, void 0, function* () {\n if (event.eventType === 'storageCleared') {\n this.setActiveAccount(undefined);\n }\n else if (event.eventType === 'entryModified') {\n if (event.key === this.storage.getPrefixedKey(beacon_types_1.StorageKey.ACTIVE_ACCOUNT)) {\n const accountIdentifier = event.newValue;\n if (!accountIdentifier || accountIdentifier === 'undefined') {\n this.setActiveAccount(undefined);\n }\n else {\n const account = yield this.getAccount(accountIdentifier);\n this.setActiveAccount(account);\n }\n }\n }\n }));\n this.activeAccountLoaded = this.storage\n .get(beacon_types_1.StorageKey.ACTIVE_ACCOUNT)\n .then((activeAccountIdentifier) => __awaiter(this, void 0, void 0, function* () {\n if (activeAccountIdentifier) {\n const account = yield this.accountManager.getAccount(activeAccountIdentifier);\n yield this.setActiveAccount(account);\n return account;\n }\n else {\n yield this.setActiveAccount(undefined);\n return undefined;\n }\n }))\n .catch((storageError) => __awaiter(this, void 0, void 0, function* () {\n yield this.setActiveAccount(undefined);\n console.error(storageError);\n return undefined;\n }));\n this.handleResponse = (message, connectionInfo) => __awaiter(this, void 0, void 0, function* () {\n var _j, _k, _l, _m, _o, _p, _q, _r;\n const openRequest = this.openRequests.get(message.id);\n logger.log('### openRequest ###', openRequest);\n logger.log('handleResponse', 'Received message', message, connectionInfo);\n logger.log('### message ###', JSON.stringify(message));\n logger.log('### connectionInfo ###', connectionInfo);\n if (message.version === '3') {\n const typedMessage = message;\n if (openRequest && ((_j = typedMessage.message) === null || _j === void 0 ? void 0 : _j.type) === beacon_types_1.BeaconMessageType.Acknowledge) {\n this.analytics.track('event', 'DAppClient', 'Acknowledge received from Wallet');\n logger.log('handleResponse', `acknowledge message received for ${message.id}`);\n logger.timeLog('handleResponse', message.id, 'acknowledge');\n this.events\n .emit(events_1.BeaconEvent.ACKNOWLEDGE_RECEIVED, {\n message: typedMessage.message,\n extraInfo: {},\n walletInfo: yield this.getWalletInfo()\n })\n .catch(console.error);\n }\n else if (openRequest) {\n const appMetadata = typedMessage.message /* Why is this unkown cast needed? */.blockchainData.appMetadata;\n if (((_k = typedMessage.message) === null || _k === void 0 ? void 0 : _k.type) === beacon_types_1.BeaconMessageType.PermissionResponse && appMetadata) {\n yield this.appMetadataManager.addAppMetadata(appMetadata);\n }\n logger.timeLog('handleResponse', typedMessage.id, 'response');\n logger.time(false, typedMessage.id);\n if (((_l = typedMessage.message) === null || _l === void 0 ? void 0 : _l.type) === beacon_types_1.BeaconMessageType.Error) {\n openRequest.reject(typedMessage.message);\n }\n else {\n openRequest.resolve({ message, connectionInfo });\n }\n this.openRequests.delete(typedMessage.id);\n }\n else {\n if (((_m = typedMessage.message) === null || _m === void 0 ? void 0 : _m.type) === beacon_types_1.BeaconMessageType.Disconnect) {\n this.analytics.track('event', 'DAppClient', 'Disconnect received from Wallet');\n const relevantTransport = connectionInfo.origin === beacon_types_1.Origin.P2P\n ? this.p2pTransport\n : connectionInfo.origin === beacon_types_1.Origin.WALLETCONNECT\n ? this.walletConnectTransport\n : (_o = this.postMessageTransport) !== null && _o !== void 0 ? _o : (yield this.transport);\n if (relevantTransport) {\n // TODO: Handle removing it from the right transport (if it was received from the non-active transport)\n const peers = yield relevantTransport.getPeers();\n const peer = peers.find((peerEl) => peerEl.senderId === message.senderId);\n if (peer) {\n yield relevantTransport.removePeer(peer);\n }\n yield this.removeAccountsForPeerIds([message.senderId]);\n yield this.events.emit(events_1.BeaconEvent.CHANNEL_CLOSED);\n }\n }\n else if (((_p = typedMessage.message) === null || _p === void 0 ? void 0 : _p.type) === beacon_types_1.BeaconMessageType.ChangeAccountRequest) {\n yield this.onNewAccount(typedMessage.message, connectionInfo);\n }\n else {\n logger.error('handleResponse', 'no request found for id ', message.id, message);\n }\n }\n }\n else {\n const typedMessage = message;\n if (openRequest && typedMessage.type === beacon_types_1.BeaconMessageType.Acknowledge) {\n logger.log('handleResponse', `acknowledge message received for ${message.id}`);\n this.analytics.track('event', 'DAppClient', 'Acknowledge received from Wallet');\n logger.timeLog('handleResponse', message.id, 'acknowledge');\n this.events\n .emit(events_1.BeaconEvent.ACKNOWLEDGE_RECEIVED, {\n message: typedMessage,\n extraInfo: {},\n walletInfo: yield this.getWalletInfo()\n })\n .catch(console.error);\n }\n else if (openRequest) {\n if (typedMessage.type === beacon_types_1.BeaconMessageType.PermissionResponse &&\n typedMessage.appMetadata) {\n yield this.appMetadataManager.addAppMetadata(typedMessage.appMetadata);\n }\n logger.timeLog('handleResponse', typedMessage.id, 'response');\n logger.time(false, typedMessage.id);\n if (typedMessage.type === beacon_types_1.BeaconMessageType.Error || message.errorType) {\n // TODO: Remove \"any\" once we remove support for v1 wallets\n openRequest.reject(typedMessage);\n }\n else {\n openRequest.resolve({ message, connectionInfo });\n }\n this.openRequests.delete(typedMessage.id);\n }\n else {\n if (typedMessage.type === beacon_types_1.BeaconMessageType.Disconnect ||\n ((_q = message === null || message === void 0 ? void 0 : message.typedMessage) === null || _q === void 0 ? void 0 : _q.type) === beacon_types_1.BeaconMessageType.Disconnect // TODO: TYPE\n ) {\n this.analytics.track('event', 'DAppClient', 'Disconnect received from Wallet');\n const relevantTransport = connectionInfo.origin === beacon_types_1.Origin.P2P\n ? this.p2pTransport\n : connectionInfo.origin === beacon_types_1.Origin.WALLETCONNECT\n ? this.walletConnectTransport\n : (_r = this.postMessageTransport) !== null && _r !== void 0 ? _r : (yield this.transport);\n if (relevantTransport) {\n // TODO: Handle removing it from the right transport (if it was received from the non-active transport)\n const peers = yield relevantTransport.getPeers();\n const peer = peers.find((peerEl) => peerEl.senderId === message.senderId);\n if (peer) {\n yield relevantTransport.removePeer(peer);\n }\n yield this.removeAccountsForPeerIds([message.senderId]);\n yield this.events.emit(events_1.BeaconEvent.CHANNEL_CLOSED);\n }\n }\n else if (typedMessage.type === beacon_types_1.BeaconMessageType.ChangeAccountRequest) {\n yield this.onNewAccount(typedMessage, connectionInfo);\n }\n else {\n logger.error('handleResponse', 'no request found for id ', message.id, message);\n }\n }\n }\n });\n this.activeAccountLoaded.then((account) => {\n // we don't want the p2p to connect eagerly for logic/performance issues\n if (account && account.origin.type !== 'p2p') {\n this.init();\n }\n });\n }\n initInternalTransports() {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function* () {\n const keyPair = yield this.keyPair;\n if (this.postMessageTransport || this.p2pTransport || this.walletConnectTransport) {\n return;\n }\n this.postMessageTransport = new DappPostMessageTransport_1.DappPostMessageTransport(this.name, keyPair, this.storage);\n yield this.addListener(this.postMessageTransport);\n this.p2pTransport = new DappP2PTransport_1.DappP2PTransport(this.name, keyPair, this.storage, this.matrixNodes, this.iconUrl, this.appUrl);\n yield this.addListener(this.p2pTransport);\n const wcOptions = {\n projectId: this.wcProjectId,\n relayUrl: this.wcRelayUrl,\n metadata: {\n name: this.name,\n description: (_a = this.description) !== null && _a !== void 0 ? _a : '',\n url: (_b = this.appUrl) !== null && _b !== void 0 ? _b : '',\n icons: this.iconUrl ? [this.iconUrl] : []\n }\n };\n this.walletConnectTransport = new DappWalletConnectTransport_1.DappWalletConnectTransport(this.name, keyPair, this.storage, {\n network: this.network.type,\n opts: wcOptions\n });\n this.initEvents();\n yield this.addListener(this.walletConnectTransport);\n });\n }\n initEvents() {\n if (!this.walletConnectTransport) {\n return;\n }\n this.walletConnectTransport.setEventHandler(\"CLOSE_ALERT\" /* ClientEvents.CLOSE_ALERT */, this.hideUI.bind(this, ['alert']));\n this.walletConnectTransport.setEventHandler(\"RESET_STATE\" /* ClientEvents.RESET_STATE */, this.channelClosedHandler.bind(this));\n this.walletConnectTransport.setEventHandler(\"WC_ACK_NOTIFICATION\" /* ClientEvents.WC_ACK_NOTIFICATION */, this.wcToastHandler.bind(this));\n }\n wcToastHandler(status) {\n return __awaiter(this, void 0, void 0, function* () {\n const walletInfo = yield (() => __awaiter(this, void 0, void 0, function* () {\n try {\n return yield this.getWalletInfo();\n }\n catch (_a) {\n return { name: 'wallet' };\n }\n }))();\n yield this.events.emit(events_1.BeaconEvent.HIDE_UI, ['alert']);\n if (status === 'pending') {\n this.events.emit(events_1.BeaconEvent.ACKNOWLEDGE_RECEIVED, {\n message: {},\n extraInfo: {},\n walletInfo\n });\n }\n else {\n this.events.emit(events_1.BeaconEvent.PERMISSION_REQUEST_ERROR, {\n errorResponse: { errorType: beacon_types_1.BeaconErrorType.ABORTED_ERROR },\n walletInfo\n });\n }\n });\n }\n channelClosedHandler(type) {\n return __awaiter(this, void 0, void 0, function* () {\n const transport = yield this.transport;\n if (type && transport.type !== type) {\n return;\n }\n yield this.events.emit(events_1.BeaconEvent.CHANNEL_CLOSED);\n this.setActiveAccount(undefined);\n yield this.destroy();\n });\n }\n destroy() {\n const _super = Object.create(null, {\n destroy: { get: () => super.destroy }\n });\n return __awaiter(this, void 0, void 0, function* () {\n yield _super.destroy.call(this);\n });\n }\n init(transport) {\n const _super = Object.create(null, {\n init: { get: () => super.init }\n });\n return __awaiter(this, void 0, void 0, function* () {\n if (this._initPromise) {\n return this._initPromise;\n }\n try {\n yield this.activeAccountLoaded;\n }\n catch (_a) {\n //\n }\n this._initPromise = new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {\n if (transport) {\n yield this.addListener(transport);\n resolve(yield _super.init.call(this, transport));\n }\n else if (this._transport.isSettled()) {\n yield (yield this.transport).connect();\n resolve(yield _super.init.call(this, yield this.transport));\n }\n else {\n const activeAccount = yield this.getActiveAccount();\n const stopListening = () => {\n if (this.postMessageTransport) {\n this.postMessageTransport.stopListeningForNewPeers().catch(console.error);\n }\n if (this.p2pTransport) {\n this.p2pTransport.stopListeningForNewPeers().catch(console.error);\n }\n if (this.walletConnectTransport) {\n this.walletConnectTransport.stopListeningForNewPeers().catch(console.error);\n }\n };\n yield this.initInternalTransports();\n if (!this.postMessageTransport || !this.p2pTransport || !this.walletConnectTransport) {\n return;\n }\n this.postMessageTransport.connect().then().catch(console.error);\n if (activeAccount && activeAccount.origin) {\n const origin = activeAccount.origin.type;\n // Select the transport that matches the active account\n if (origin === beacon_types_1.Origin.EXTENSION) {\n resolve(yield _super.init.call(this, this.postMessageTransport));\n }\n else if (origin === beacon_types_1.Origin.P2P) {\n resolve(yield _super.init.call(this, this.p2pTransport));\n }\n else if (origin === beacon_types_1.Origin.WALLETCONNECT) {\n resolve(yield _super.init.call(this, this.walletConnectTransport));\n }\n }\n else {\n const p2pTransport = this.p2pTransport;\n const postMessageTransport = this.postMessageTransport;\n const walletConnectTransport = this.walletConnectTransport;\n postMessageTransport\n .listenForNewPeer((peer) => {\n logger.log('init', 'postmessage transport peer connected', peer);\n this.analytics.track('event', 'DAppClient', 'Extension connected', {\n peerName: peer.name\n });\n this.events\n .emit(events_1.BeaconEvent.PAIR_SUCCESS, peer)\n .catch((emitError) => console.warn(emitError));\n this.setActivePeer(peer).catch(console.error);\n this.setTransport(this.postMessageTransport).catch(console.error);\n stopListening();\n resolve(beacon_types_1.TransportType.POST_MESSAGE);\n })\n .catch(console.error);\n p2pTransport\n .listenForNewPeer((peer) => {\n logger.log('init', 'p2p transport peer connected', peer);\n this.analytics.track('event', 'DAppClient', 'Beacon Wallet connected', {\n peerName: peer.name\n });\n this.events\n .emit(events_1.BeaconEvent.PAIR_SUCCESS, peer)\n .catch((emitError) => console.warn(emitError));\n this.setActivePeer(peer).catch(console.error);\n this.setTransport(this.p2pTransport).catch(console.error);\n stopListening();\n resolve(beacon_types_1.TransportType.P2P);\n })\n .catch(console.error);\n walletConnectTransport\n .listenForNewPeer((peer) => {\n logger.log('init', 'walletconnect transport peer connected', peer);\n this.analytics.track('event', 'DAppClient', 'WalletConnect Wallet connected', {\n peerName: peer.name\n });\n this.events\n .emit(events_1.BeaconEvent.PAIR_SUCCESS, peer)\n .catch((emitError) => console.warn(emitError));\n this.setActivePeer(peer).catch(console.error);\n this.setTransport(this.walletConnectTransport).catch(console.error);\n stopListening();\n resolve(beacon_types_1.TransportType.WALLETCONNECT);\n })\n .catch(console.error);\n beacon_transport_postmessage_1.PostMessageTransport.getAvailableExtensions()\n .then((extensions) => __awaiter(this, void 0, void 0, function* () {\n this.analytics.track('event', 'DAppClient', 'Extensions detected', { extensions });\n }))\n .catch((error) => {\n this._initPromise = undefined;\n console.error(error);\n });\n this.events\n .emit(events_1.BeaconEvent.PAIR_INIT, {\n p2pPeerInfo: () => {\n p2pTransport.connect().then().catch(console.error);\n return p2pTransport.getPairingRequestInfo();\n },\n postmessagePeerInfo: () => postMessageTransport.getPairingRequestInfo(),\n walletConnectPeerInfo: () => walletConnectTransport.getPairingRequestInfo(),\n networkType: this.network.type,\n abortedHandler: () => __awaiter(this, void 0, void 0, function* () {\n logger.log('init', 'ABORTED');\n yield Promise.all([\n postMessageTransport.disconnect(),\n // p2pTransport.disconnect(), do not abort connection manually\n walletConnectTransport.disconnect()\n ]);\n this._initPromise = undefined;\n }),\n disclaimerText: this.disclaimerText,\n analytics: this.analytics,\n featuredWallets: this.featuredWallets\n })\n .catch((emitError) => console.warn(emitError));\n }\n }\n }));\n return this._initPromise;\n });\n }\n /**\n * Returns the active account\n */\n getActiveAccount() {\n return __awaiter(this, void 0, void 0, function* () {\n return this._activeAccount.promise;\n });\n }\n isInvalidState(account) {\n return __awaiter(this, void 0, void 0, function* () {\n const activeAccount = yield this._activeAccount.promise;\n return !activeAccount\n ? false\n : (activeAccount === null || activeAccount === void 0 ? void 0 : activeAccount.address) !== account.address && !this.isGetActiveAccountHandled;\n });\n }\n /**\n * Sets the active account\n *\n * @param account The account that will be set as the active account\n */\n setActiveAccount(account) {\n return __awaiter(this, void 0, void 0, function* () {\n if (account && this._activeAccount.isSettled() && (yield this.isInvalidState(account))) {\n yield this.destroy();\n yield this.setActiveAccount(undefined);\n yield this.events.emit(events_1.BeaconEvent.INVALID_ACTIVE_ACCOUNT_STATE);\n return;\n }\n // when I'm resetting the activeAccount\n if (!account && this._activeAccount.isResolved() && (yield this.getActiveAccount())) {\n const transport = yield this.transport;\n const activeAccount = yield this.getActiveAccount();\n if (!transport || !activeAccount) {\n return;\n }\n if (transport instanceof beacon_transport_walletconnect_1.WalletConnectTransport) {\n yield transport.closeActiveSession(activeAccount);\n }\n }\n if (this._activeAccount.isSettled()) {\n // If the promise has already been resolved we need to create a new one.\n this._activeAccount = beacon_utils_1.ExposedPromise.resolve(account);\n }\n else {\n this._activeAccount.resolve(account);\n }\n if (account) {\n const origin = account.origin.type;\n yield this.initInternalTransports();\n // Select the transport that matches the active account\n if (origin === beacon_types_1.Origin.EXTENSION) {\n yield this.setTransport(this.postMessageTransport);\n }\n else if (origin === beacon_types_1.Origin.P2P) {\n yield this.setTransport(this.p2pTransport);\n }\n else if (origin === beacon_types_1.Origin.WALLETCONNECT) {\n yield this.setTransport(this.walletConnectTransport);\n }\n const peer = yield this.getPeer(account);\n yield this.setActivePeer(peer);\n }\n else {\n yield this.setActivePeer(undefined);\n yield this.setTransport(undefined);\n }\n yield this.storage.set(beacon_types_1.StorageKey.ACTIVE_ACCOUNT, account ? account.accountIdentifier : undefined);\n yield this.events.emit(events_1.BeaconEvent.ACTIVE_ACCOUNT_SET, account);\n return;\n });\n }\n /**\n * Clear the active account\n */\n clearActiveAccount() {\n return this.setActiveAccount();\n }\n setColorMode(colorMode) {\n return __awaiter(this, void 0, void 0, function* () {\n return (0, beacon_ui_1.setColorMode)(colorMode);\n });\n }\n getColorMode() {\n return __awaiter(this, void 0, void 0, function* () {\n return (0, beacon_ui_1.getColorMode)();\n });\n }\n /**\n * @deprecated\n *\n * Use getOwnAppMetadata instead\n */\n getAppMetadata() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.getOwnAppMetadata();\n });\n }\n showPrepare() {\n return __awaiter(this, void 0, void 0, function* () {\n const walletInfo = yield (() => __awaiter(this, void 0, void 0, function* () {\n try {\n return yield this.getWalletInfo();\n }\n catch (_a) {\n return undefined;\n }\n }))();\n yield this.events.emit(events_1.BeaconEvent.SHOW_PREPARE, { walletInfo });\n });\n }\n hideUI(elements, type) {\n var _a, _b, _c, _d;\n return __awaiter(this, void 0, void 0, function* () {\n yield this.events.emit(events_1.BeaconEvent.HIDE_UI, ['alert', 'toast']);\n if (elements.includes('alert')) {\n // if the sync has been aborted\n const transport = yield this.transport;\n if (!type || transport.type === type) {\n yield Promise.all([\n (_a = this.postMessageTransport) === null || _a === void 0 ? void 0 : _a.disconnect(),\n // p2pTransport.disconnect(), do not abort connection manually\n (_b = this.walletConnectTransport) === null || _b === void 0 ? void 0 : _b.disconnect()\n ]);\n this._initPromise = undefined;\n }\n else {\n switch (type) {\n case beacon_types_1.TransportType.WALLETCONNECT:\n (_c = this.walletConnectTransport) === null || _c === void 0 ? void 0 : _c.disconnect();\n break;\n default:\n (_d = this.postMessageTransport) === null || _d === void 0 ? void 0 : _d.disconnect();\n }\n }\n }\n });\n }\n /**\n * Will remove the account from the local storage and set a new active account if necessary.\n *\n * @param accountIdentifier ID of the account\n */\n removeAccount(accountIdentifier) {\n const _super = Object.create(null, {\n removeAccount: { get: () => super.removeAccount }\n });\n return __awaiter(this, void 0, void 0, function* () {\n const removeAccountResult = _super.removeAccount.call(this, accountIdentifier);\n const activeAccount = yield this.getActiveAccount();\n if (activeAccount && activeAccount.accountIdentifier === accountIdentifier) {\n yield this.setActiveAccount(undefined);\n }\n return removeAccountResult;\n });\n }\n /**\n * Remove all accounts and set active account to undefined\n */\n removeAllAccounts() {\n const _super = Object.create(null, {\n removeAllAccounts: { get: () => super.removeAllAccounts }\n });\n return __awaiter(this, void 0, void 0, function* () {\n yield _super.removeAllAccounts.call(this);\n yield this.setActiveAccount(undefined);\n });\n }\n /**\n * Removes a peer and all the accounts that have been connected through that peer\n *\n * @param peer Peer to be removed\n */\n removePeer(peer, sendDisconnectToPeer = false) {\n return __awaiter(this, void 0, void 0, function* () {\n const transport = yield this.transport;\n const removePeerResult = transport.removePeer(peer);\n yield this.removeAccountsForPeers([peer]);\n if (sendDisconnectToPeer) {\n yield this.sendDisconnectToPeer(peer, transport);\n }\n return removePeerResult;\n });\n }\n /**\n * Remove all peers and all accounts that have been connected through those peers\n */\n removeAllPeers(sendDisconnectToPeers = false) {\n return __awaiter(this, void 0, void 0, function* () {\n const transport = yield this.transport;\n const peers = yield transport.getPeers();\n const removePeerResult = transport.removeAllPeers();\n yield this.removeAccountsForPeers(peers);\n if (sendDisconnectToPeers) {\n const disconnectPromises = peers.map((peer) => this.sendDisconnectToPeer(peer, transport));\n yield Promise.all(disconnectPromises);\n }\n return removePeerResult;\n });\n }\n /**\n * Allows the user to subscribe to specific events that are fired in the SDK\n *\n * @param internalEvent The event to subscribe to\n * @param eventCallback The callback that will be called when the event occurs\n */\n subscribeToEvent(internalEvent, eventCallback) {\n return __awaiter(this, void 0, void 0, function* () {\n if (internalEvent === events_1.BeaconEvent.ACTIVE_ACCOUNT_SET) {\n this.isGetActiveAccountHandled = true;\n }\n yield this.events.on(internalEvent, eventCallback);\n });\n }\n /**\n * Check if we have permissions to send the specific message type to the active account.\n * If no active account is set, only permission requests are allowed.\n *\n * @param type The type of the message\n */\n checkPermissions(type) {\n return __awaiter(this, void 0, void 0, function* () {\n if ([\n beacon_types_1.BeaconMessageType.PermissionRequest,\n beacon_types_1.BeaconMessageType.ProofOfEventChallengeRequest,\n beacon_types_1.BeaconMessageType.ProofOfEventChallengeRecorded\n ].includes(type)) {\n return true;\n }\n const activeAccount = yield this.getActiveAccount();\n if (!activeAccount) {\n throw yield this.sendInternalError('No active account set!');\n }\n const permissions = activeAccount.scopes;\n switch (type) {\n case beacon_types_1.BeaconMessageType.OperationRequest:\n return permissions.includes(beacon_types_1.PermissionScope.OPERATION_REQUEST);\n case beacon_types_1.BeaconMessageType.SignPayloadRequest:\n return permissions.includes(beacon_types_1.PermissionScope.SIGN);\n // TODO: ENCRYPTION\n // case BeaconMessageType.EncryptPayloadRequest:\n // return permissions.includes(PermissionScope.ENCRYPT)\n case beacon_types_1.BeaconMessageType.BroadcastRequest:\n return true;\n default:\n return false;\n }\n });\n }\n sendNotification(title, message, payload, protocolIdentifier) {\n var _a, _b, _c;\n return __awaiter(this, void 0, void 0, function* () {\n const activeAccount = yield this.getActiveAccount();\n if (!activeAccount ||\n (activeAccount &&\n !activeAccount.scopes.includes(beacon_types_1.PermissionScope.NOTIFICATION) &&\n !activeAccount.notification)) {\n throw new Error('notification permissions not given');\n }\n if (!((_a = activeAccount.notification) === null || _a === void 0 ? void 0 : _a.token)) {\n throw new Error('No AccessToken');\n }\n const url = (_b = activeAccount.notification) === null || _b === void 0 ? void 0 : _b.apiUrl;\n if (!url) {\n throw new Error('No Push URL set');\n }\n return this.sendNotificationWithAccessToken({\n url,\n recipient: activeAccount.address,\n title,\n body: message,\n payload,\n protocolIdentifier,\n accessToken: (_c = activeAccount.notification) === null || _c === void 0 ? void 0 : _c.token\n });\n });\n }\n addBlockchain(chain) {\n this.blockchains.set(chain.identifier, chain);\n chain.getWalletLists().then((walletLists) => {\n (0, beacon_ui_1.setDesktopList)(walletLists.desktopList);\n (0, beacon_ui_1.setExtensionList)(walletLists.extensionList);\n (0, beacon_ui_1.setWebList)(walletLists.webList);\n (0, beacon_ui_1.setiOSList)(walletLists.iOSList);\n });\n }\n removeBlockchain(chainIdentifier) {\n this.blockchains.delete(chainIdentifier);\n }\n /** Generic messages */\n permissionRequest(input) {\n return __awaiter(this, void 0, void 0, function* () {\n logger.log('permissionRequest', input);\n const blockchain = this.blockchains.get(input.blockchainIdentifier);\n if (!blockchain) {\n throw new Error(`Blockchain \"${input.blockchainIdentifier}\" not supported by dAppClient`);\n }\n const request = Object.assign(Object.assign({}, input), { type: beacon_types_1.BeaconMessageType.PermissionRequest, blockchainData: Object.assign(Object.assign({}, input.blockchainData), { appMetadata: yield this.getOwnAppMetadata() }) });\n logger.log('REQUESTION PERMIMISSION V3', 'xxx', request);\n const { message: response, connectionInfo } = yield this.makeRequestV3(request).catch((_requestError) => __awaiter(this, void 0, void 0, function* () {\n throw new Error('TODO');\n // throw await this.handleRequestError(request, requestError)\n }));\n logger.log('RESPONSE V3', response, connectionInfo);\n const partialAccountInfos = yield blockchain.getAccountInfosFromPermissionResponse(response.message);\n const accountInfo = {\n accountIdentifier: partialAccountInfos[0].accountId,\n senderId: response.senderId,\n origin: {\n type: connectionInfo.origin,\n id: connectionInfo.id\n },\n address: partialAccountInfos[0].address,\n publicKey: partialAccountInfos[0].publicKey,\n scopes: response.message.blockchainData.scopes,\n connectedAt: new Date().getTime(),\n chainData: response.message.blockchainData\n };\n yield this.accountManager.addAccount(accountInfo);\n yield this.setActiveAccount(accountInfo);\n yield blockchain.handleResponse({\n request,\n account: accountInfo,\n output: response,\n blockExplorer: this.blockExplorer,\n connectionContext: connectionInfo,\n walletInfo: yield this.getWalletInfo()\n });\n yield this.notifySuccess(request, {\n account: accountInfo,\n output: {\n address: partialAccountInfos[0].address,\n network: { type: beacon_types_1.NetworkType.MAINNET },\n scopes: [beacon_types_1.PermissionScope.OPERATION_REQUEST]\n },\n blockExplorer: this.blockExplorer,\n connectionContext: connectionInfo,\n walletInfo: yield this.getWalletInfo()\n });\n // return output\n return response.message;\n });\n }\n request(input) {\n return __awaiter(this, void 0, void 0, function* () {\n logger.log('request', input);\n const blockchain = this.blockchains.get(input.blockchainIdentifier);\n if (!blockchain) {\n throw new Error(`Blockchain \"${blockchain}\" not supported by dAppClient`);\n }\n yield blockchain.validateRequest(input);\n const activeAccount = yield this.getActiveAccount();\n if (!activeAccount) {\n throw yield this.sendInternalError('No active account!');\n }\n const request = Object.assign(Object.assign({}, input), { type: beacon_types_1.BeaconMessageType.BlockchainRequest, accountId: activeAccount.accountIdentifier });\n const { message: response, connectionInfo } = yield this.makeRequestV3(request).catch((requestError) => __awaiter(this, void 0, void 0, function* () {\n console.error(requestError);\n throw new Error('TODO');\n // throw await this.handleRequestError(request, requestError)\n }));\n yield blockchain.handleResponse({\n request,\n account: activeAccount,\n output: response,\n blockExplorer: this.blockExplorer,\n connectionContext: connectionInfo,\n walletInfo: yield this.getWalletInfo()\n });\n return response.message;\n });\n }\n /**\n * Send a permission request to the DApp. This should be done as the first step. The wallet will respond\n * with an publicKey and permissions that were given. The account returned will be set as the \"activeAccount\"\n * and will be used for the following requests.\n *\n * @param input The message details we need to prepare the PermissionRequest message.\n */\n requestPermissions(input) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n // Add error message for deprecation of network\n // TODO: Remove when we remove deprecated preferredNetwork\n if ((input === null || input === void 0 ? void 0 : input.network) !== undefined && this.network.type !== ((_a = input === null || input === void 0 ? void 0 : input.network) === null || _a === void 0 ? void 0 : _a.type)) {\n console.error('[BEACON] The network specified in the DAppClient constructor does not match the network set in the permission request. Please set the network in the constructor. Setting it during the Permission Request is deprecated.');\n }\n const request = {\n appMetadata: yield this.getOwnAppMetadata(),\n type: beacon_types_1.BeaconMessageType.PermissionRequest,\n network: this.network,\n scopes: input && input.scopes\n ? input.scopes\n : [beacon_types_1.PermissionScope.OPERATION_REQUEST, beacon_types_1.PermissionScope.SIGN]\n };\n this.analytics.track('event', 'DAppClient', 'Permission requested');\n const { message, connectionInfo } = yield this.makeRequest(request).catch((requestError) => __awaiter(this, void 0, void 0, function* () {\n throw yield this.handleRequestError(request, requestError);\n }));\n logger.log('requestPermissions', '######## MESSAGE #######');\n logger.log('requestPermissions', message);\n const accountInfo = yield this.onNewAccount(message, connectionInfo);\n logger.log('requestPermissions', '######## ACCOUNT INFO #######');\n logger.log('requestPermissions', JSON.stringify(accountInfo));\n yield this.accountManager.addAccount(accountInfo);\n yield this.setActiveAccount(accountInfo);\n const output = Object.assign(Object.assign({}, message), { walletKey: accountInfo.walletKey, address: accountInfo.address, accountInfo });\n yield this.notifySuccess(request, {\n account: accountInfo,\n output,\n blockExplorer: this.blockExplorer,\n connectionContext: connectionInfo,\n walletInfo: yield this.getWalletInfo()\n });\n this.analytics.track('event', 'DAppClient', 'Permission received', {\n address: accountInfo.address\n });\n return output;\n });\n }\n /**\n * Send a proof of event request to the wallet. The wallet will either accept or decline the challenge.\n * If it is accepted, the challenge will be stored, meaning that even if the user refresh the page, the DAppClient will keep checking if the challenge has been fulfilled.\n * Once the challenge is stored, a challenge stored message will be sent to the wallet.\n * It's **highly recommended** to run a proof of event challenge to check the identity of an abstracted account\n *\n * @param input The message details we need to prepare the ProofOfEventChallenge message.\n */\n requestProofOfEventChallenge(input) {\n return __awaiter(this, void 0, void 0, function* () {\n const activeAccount = yield this.getActiveAccount();\n if (!activeAccount)\n throw new Error('Please request permissions before doing a proof of event challenge');\n if (activeAccount.walletType !== 'abstracted_account' &&\n activeAccount.verificationType !== 'proof_of_event')\n throw new Error('This wallet is not an abstracted account and thus cannot perform proof of event');\n const request = Object.assign({ type: beacon_types_1.BeaconMessageType.ProofOfEventChallengeRequest, contractAddress: activeAccount.address }, input);\n const { message, connectionInfo } = yield this.makeRequest(request).catch((requestError) => __awaiter(this, void 0, void 0, function* () {\n throw yield this.handleRequestError(request, requestError);\n }));\n this.analytics.track('event', 'DAppClient', `Proof of event challenge ${message.isAccepted ? 'accepted' : 'refused'}`, { address: activeAccount.address });\n if (message.isAccepted) {\n yield this.recordProofOfEventChallenge(input);\n }\n yield this.notifySuccess(request, {\n account: activeAccount,\n output: message,\n blockExplorer: this.blockExplorer,\n connectionContext: connectionInfo,\n walletInfo: yield this.getWalletInfo()\n });\n return message;\n });\n }\n recordProofOfEventChallenge(input) {\n return __awaiter(this, void 0, void 0, function* () {\n const activeAccount = yield this.getActiveAccount();\n if (!activeAccount)\n throw new Error('Active account is undefined. Please request permissions before recording a proof of event challenge');\n let success = true;\n let errorMessage = '';\n const recordedRequest = {\n type: beacon_types_1.BeaconMessageType.ProofOfEventChallengeRecorded,\n dAppChallengeId: input.dAppChallengeId,\n success,\n errorMessage\n };\n yield this.makeRequest(recordedRequest, true).catch((requestError) => __awaiter(this, void 0, void 0, function* () {\n throw yield this.handleRequestError(recordedRequest, requestError);\n }));\n });\n }\n /**\n * This method will send a \"SignPayloadRequest\" to the wallet. This method is meant to be used to sign\n * arbitrary data (eg. a string). It will return the signature in the format of \"edsig...\"\n *\n * @param input The message details we need to prepare the SignPayloadRequest message.\n */\n requestSignPayload(input) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!input.payload) {\n throw yield this.sendInternalError('Payload must be provided');\n }\n const activeAccount = yield this.getActiveAccount();\n if (!activeAccount) {\n throw yield this.sendInternalError('No active account!');\n }\n const payload = input.payload;\n if (typeof payload !== 'string') {\n throw new Error('Payload must be a string');\n }\n const signingType = (() => {\n switch (input.signingType) {\n case beacon_types_1.SigningType.OPERATION:\n if (!payload.startsWith('03')) {\n throw new Error('When using signing type \"OPERATION\", the payload must start with prefix \"03\"');\n }\n return beacon_types_1.SigningType.OPERATION;\n case beacon_types_1.SigningType.MICHELINE:\n if (!payload.startsWith('05')) {\n throw new Error('When using signing type \"MICHELINE\", the payload must start with prefix \"05\"');\n }\n return beacon_types_1.SigningType.MICHELINE;\n case beacon_types_1.SigningType.RAW:\n default:\n return beacon_types_1.SigningType.RAW;\n }\n })();\n this.analytics.track('event', 'DAppClient', 'Signature requested');\n const request = {\n type: beacon_types_1.BeaconMessageType.SignPayloadRequest,\n signingType,\n payload,\n sourceAddress: input.sourceAddress || activeAccount.address\n };\n const { message, connectionInfo } = yield this.makeRequest(request).catch((requestError) => __awaiter(this, void 0, void 0, function* () {\n throw yield this.handleRequestError(request, requestError);\n }));\n yield this.notifySuccess(request, {\n account: activeAccount,\n output: message,\n connectionContext: connectionInfo,\n walletInfo: yield this.getWalletInfo()\n });\n this.analytics.track('event', 'DAppClient', 'Signature response');\n return message;\n });\n }\n /**\n * This method will send an \"EncryptPayloadRequest\" to the wallet. This method is meant to be used to encrypt or decrypt\n * arbitrary data (eg. a string). It will return the encrypted or decrypted payload\n *\n * @param input The message details we need to prepare the EncryptPayloadRequest message.\n */\n // TODO: ENCRYPTION\n // public async requestEncryptPayload(\n // input: RequestEncryptPayloadInput\n // ): Promise {\n // if (!input.payload) {\n // throw await this.sendInternalError('Payload must be provided')\n // }\n // const activeAccount: AccountInfo | undefined = await this.getActiveAccount()\n // if (!activeAccount) {\n // throw await this.sendInternalError('No active account!')\n // }\n // const payload = input.payload\n // if (typeof payload !== 'string') {\n // throw new Error('Payload must be a string')\n // }\n // if (typeof input.encryptionCryptoOperation === 'undefined') {\n // throw new Error('encryptionCryptoOperation must be defined')\n // }\n // if (typeof input.encryptionType === 'undefined') {\n // throw new Error('encryptionType must be defined')\n // }\n // const request: EncryptPayloadRequestInput = {\n // type: BeaconMessageType.EncryptPayloadRequest,\n // cryptoOperation: input.encryptionCryptoOperation,\n // encryptionType: input.encryptionType,\n // payload,\n // sourceAddress: input.sourceAddress || activeAccount.address\n // }\n // const { message, connectionInfo } = await this.makeRequest<\n // EncryptPayloadRequest,\n // EncryptPayloadResponse\n // >(request).catch(async (requestError: ErrorResponse) => {\n // throw await this.handleRequestError(request, requestError)\n // })\n // await this.notifySuccess(request, {\n // account: activeAccount,\n // output: message,\n // connectionContext: connectionInfo,\n // walletInfo: await this.getWalletInfo()\n // })\n // return message\n // }\n /**\n * This method sends an OperationRequest to the wallet. This method should be used for all kinds of operations,\n * eg. transaction or delegation. Not all properties have to be provided. Data like \"counter\" and fees will be\n * fetched and calculated by the wallet (but they can still be provided if required).\n *\n * @param input The message details we need to prepare the OperationRequest message.\n */\n requestOperation(input) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!input.operationDetails) {\n throw yield this.sendInternalError('Operation details must be provided');\n }\n const activeAccount = yield this.getActiveAccount();\n if (!activeAccount) {\n throw yield this.sendInternalError('No active account!');\n }\n const request = {\n type: beacon_types_1.BeaconMessageType.OperationRequest,\n network: activeAccount.network || this.network,\n operationDetails: input.operationDetails,\n sourceAddress: activeAccount.address || ''\n };\n this.analytics.track('event', 'DAppClient', 'Operation requested');\n const { message, connectionInfo } = yield this.makeRequest(request).catch((requestError) => __awaiter(this, void 0, void 0, function* () {\n throw yield this.handleRequestError(request, requestError);\n }));\n yield this.notifySuccess(request, {\n account: activeAccount,\n output: message,\n blockExplorer: this.blockExplorer,\n connectionContext: connectionInfo,\n walletInfo: yield this.getWalletInfo()\n });\n this.analytics.track('event', 'DAppClient', 'Operation response');\n return message;\n });\n }\n /**\n * Sends a \"BroadcastRequest\" to the wallet. This method can be used to inject an already signed transaction\n * to the network.\n *\n * @param input The message details we need to prepare the BroadcastRequest message.\n */\n requestBroadcast(input) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n if (!input.signedTransaction) {\n throw yield this.sendInternalError('Signed transaction must be provided');\n }\n // Add error message for deprecation of network\n // TODO: Remove when we remove deprecated preferredNetwork\n if (input.network !== undefined && this.network.type !== ((_a = input.network) === null || _a === void 0 ? void 0 : _a.type)) {\n console.error('[BEACON] The network specified in the DAppClient constructor does not match the network set in the broadcast request. Please set the network in the constructor. Setting it during the Broadcast Request is deprecated.');\n }\n const request = {\n type: beacon_types_1.BeaconMessageType.BroadcastRequest,\n network: this.network,\n signedTransaction: input.signedTransaction\n };\n this.analytics.track('event', 'DAppClient', 'Broadcast requested');\n const { message, connectionInfo } = yield this.makeRequest(request).catch((requestError) => __awaiter(this, void 0, void 0, function* () {\n throw yield this.handleRequestError(request, requestError);\n }));\n yield this.notifySuccess(request, {\n network: this.network,\n output: message,\n blockExplorer: this.blockExplorer,\n connectionContext: connectionInfo,\n walletInfo: yield this.getWalletInfo()\n });\n this.analytics.track('event', 'DAppClient', 'Broadcast response');\n return message;\n });\n }\n setActivePeer(peer) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this._activePeer.isSettled()) {\n // If the promise has already been resolved we need to create a new one.\n this._activePeer = beacon_utils_1.ExposedPromise.resolve(peer);\n }\n else {\n this._activePeer.resolve(peer);\n }\n if (!peer) {\n return;\n }\n yield this.initInternalTransports();\n if (peer.type === 'postmessage-pairing-response') {\n yield this.setTransport(this.postMessageTransport);\n }\n else if (peer.type === 'p2p-pairing-response') {\n yield this.setTransport(this.p2pTransport);\n }\n });\n }\n /**\n * A \"setter\" for when the transport needs to be changed.\n */\n setTransport(transport) {\n const _super = Object.create(null, {\n setTransport: { get: () => super.setTransport }\n });\n return __awaiter(this, void 0, void 0, function* () {\n if (!transport) {\n this._initPromise = undefined;\n }\n const result = _super.setTransport.call(this, transport);\n yield this.events.emit(events_1.BeaconEvent.ACTIVE_TRANSPORT_SET, transport);\n return result;\n });\n }\n /**\n * This method will emit an internal error message.\n *\n * @param errorMessage The error message to send.\n */\n sendInternalError(errorMessage) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.events.emit(events_1.BeaconEvent.INTERNAL_ERROR, { text: errorMessage });\n throw new Error(errorMessage);\n });\n }\n /**\n * This method will remove all accounts associated with a specific peer.\n *\n * @param peersToRemove An array of peers for which accounts should be removed\n */\n removeAccountsForPeers(peersToRemove) {\n return __awaiter(this, void 0, void 0, function* () {\n const peerIdsToRemove = peersToRemove.map((peer) => peer.senderId);\n return this.removeAccountsForPeerIds(peerIdsToRemove);\n });\n }\n removeAccountsForPeerIds(peerIds) {\n return __awaiter(this, void 0, void 0, function* () {\n const accounts = yield this.accountManager.getAccounts();\n // Remove all accounts with origin of the specified peer\n const accountsToRemove = accounts.filter((account) => peerIds.includes(account.senderId));\n const accountIdentifiersToRemove = accountsToRemove.map((accountInfo) => accountInfo.accountIdentifier);\n yield this.accountManager.removeAccounts(accountIdentifiersToRemove);\n // Check if one of the accounts that was removed was the active account and if yes, set it to undefined\n const activeAccount = yield this.getActiveAccount();\n if (activeAccount) {\n if (accountIdentifiersToRemove.includes(activeAccount.accountIdentifier)) {\n yield this.setActiveAccount(undefined);\n }\n }\n });\n }\n /**\n * This message handles errors that we receive from the wallet.\n *\n * @param request The request we sent\n * @param beaconError The error we received\n */\n handleRequestError(request, beaconError) {\n return __awaiter(this, void 0, void 0, function* () {\n logger.error('handleRequestError', 'error response', beaconError);\n if (beaconError.errorType) {\n const buttons = [];\n if (beaconError.errorType === beacon_types_1.BeaconErrorType.NO_PRIVATE_KEY_FOUND_ERROR) {\n const actionCallback = () => __awaiter(this, void 0, void 0, function* () {\n const operationRequest = request;\n // if the account we requested is not available, we remove it locally\n let accountInfo;\n if (operationRequest.sourceAddress && operationRequest.network) {\n const accountIdentifier = yield (0, beacon_core_1.getAccountIdentifier)(operationRequest.sourceAddress, operationRequest.network);\n accountInfo = yield this.getAccount(accountIdentifier);\n if (accountInfo) {\n yield this.removeAccount(accountInfo.accountIdentifier);\n }\n }\n });\n buttons.push({ text: 'Remove account', actionCallback });\n }\n const peer = yield this.getPeer();\n const activeAccount = yield this.getActiveAccount();\n // If we sent a permission request, received an error and there is no active account, we need to reset the DAppClient.\n // This most likely means that the user rejected the first permission request after pairing a wallet, so we \"forget\" the paired wallet to allow the user to pair again.\n if (request.type === beacon_types_1.BeaconMessageType.PermissionRequest &&\n (yield this.getActiveAccount()) === undefined) {\n this._initPromise = undefined;\n this.postMessageTransport = undefined;\n this.p2pTransport = undefined;\n this.walletConnectTransport = undefined;\n yield this.setTransport();\n yield this.setActivePeer();\n }\n this.events\n .emit(beacon_message_events_1.messageEvents[request.type].error, {\n errorResponse: beaconError,\n walletInfo: yield this.getWalletInfo(peer, activeAccount),\n errorMessages: this.errorMessages\n }, buttons)\n .catch((emitError) => logger.error('handleRequestError', emitError));\n throw beacon_core_1.BeaconError.getError(beaconError.errorType, beaconError.errorData);\n }\n throw beaconError;\n });\n }\n /**\n * This message will send an event when we receive a successful response to one of the requests we sent.\n *\n * @param request The request we sent\n * @param response The response we received\n */\n notifySuccess(request, response) {\n return __awaiter(this, void 0, void 0, function* () {\n this.events\n .emit(beacon_message_events_1.messageEvents[request.type].success, response)\n .catch((emitError) => console.warn(emitError));\n });\n }\n getWalletInfoFromStorage() {\n return __awaiter(this, void 0, void 0, function* () {\n return yield this.storage.get(beacon_types_1.StorageKey.LAST_SELECTED_WALLET);\n });\n }\n getWalletInfo(peer, account) {\n var _a, _b, _c, _d, _e;\n return __awaiter(this, void 0, void 0, function* () {\n const selectedAccount = account ? account : yield this.getActiveAccount();\n const selectedPeer = peer ? peer : yield this.getPeer(selectedAccount);\n let walletInfo;\n if (selectedAccount) {\n walletInfo = yield this.appMetadataManager.getAppMetadata(selectedAccount.senderId);\n }\n if (!walletInfo) {\n walletInfo = {\n name: (_b = (_a = selectedPeer === null || selectedPeer === void 0 ? void 0 : selectedPeer.name) !== null && _a !== void 0 ? _a : (yield this.getWalletInfoFromStorage())) !== null && _b !== void 0 ? _b : '',\n icon: selectedPeer === null || selectedPeer === void 0 ? void 0 : selectedPeer.icon\n };\n }\n const lowerCaseCompare = (str1, str2) => {\n if (str1 && str2) {\n return str1.toLowerCase() === str2.toLowerCase();\n }\n return false;\n };\n const getOrgName = (name) => name.split(/[_\\s]+/)[0];\n let selectedApp;\n let type;\n const apps = [\n ...(0, beacon_ui_1.getiOSList)(),\n ...(0, beacon_ui_1.getWebList)(),\n ...(0, beacon_ui_1.getDesktopList)(),\n ...(0, beacon_ui_1.getExtensionList)()\n ].filter((app) => { var _a; return lowerCaseCompare(getOrgName(app.key), getOrgName((_a = walletInfo === null || walletInfo === void 0 ? void 0 : walletInfo.name) !== null && _a !== void 0 ? _a : 'wallet')); });\n // TODO: Remove once all wallets send the icon?\n const mobile = apps.find((app) => app.universalLink);\n const browser = apps.find((app) => app.links);\n const desktop = apps.find((app) => app.downloadLink);\n const extension = apps.find((app) => app.id);\n if ((0, beacon_ui_1.isBrowser)(window) && browser) {\n selectedApp = browser;\n type = 'web';\n }\n else if ((0, beacon_ui_1.isDesktop)(window) && desktop) {\n selectedApp = desktop;\n type = 'desktop';\n }\n else if ((0, beacon_ui_1.isBrowser)(window) && extension) {\n selectedApp = extension;\n type = 'extension';\n }\n else if (mobile) {\n selectedApp = mobile;\n type = 'mobile';\n }\n if (selectedApp) {\n let deeplink;\n if (selectedApp.hasOwnProperty('links')) {\n deeplink = selectedApp.links[(_c = selectedAccount === null || selectedAccount === void 0 ? void 0 : selectedAccount.network.type) !== null && _c !== void 0 ? _c : this.network.type];\n }\n else if (selectedApp.hasOwnProperty('deepLink')) {\n deeplink = selectedApp.deepLink;\n }\n return {\n name: (_d = selectedApp === null || selectedApp === void 0 ? void 0 : selectedApp.name) !== null && _d !== void 0 ? _d : walletInfo.name,\n icon: (_e = selectedApp === null || selectedApp === void 0 ? void 0 : selectedApp.logo) !== null && _e !== void 0 ? _e : walletInfo.icon,\n deeplink,\n type\n };\n }\n return walletInfo;\n });\n }\n getPeer(account) {\n var _a, _b, _c, _d, _e, _f;\n return __awaiter(this, void 0, void 0, function* () {\n let peer;\n if (account) {\n logger.log('getPeer', 'We have an account', account);\n const postMessagePeers = (_b = (yield ((_a = this.postMessageTransport) === null || _a === void 0 ? void 0 : _a.getPeers()))) !== null && _b !== void 0 ? _b : [];\n const p2pPeers = (_d = (yield ((_c = this.p2pTransport) === null || _c === void 0 ? void 0 : _c.getPeers()))) !== null && _d !== void 0 ? _d : [];\n const walletConnectPeers = (_f = (yield ((_e = this.walletConnectTransport) === null || _e === void 0 ? void 0 : _e.getPeers()))) !== null && _f !== void 0 ? _f : [];\n const peers = [...postMessagePeers, ...p2pPeers, ...walletConnectPeers];\n logger.log('getPeer', 'Found peers', peers, account);\n peer = peers.find((peerEl) => peerEl.senderId === account.senderId);\n if (!peer) {\n // We could not find an exact match for a sender, so we most likely received it over a relay\n peer = peers.find((peerEl) => peerEl.extensionId === account.origin.id);\n }\n }\n else {\n peer = yield this._activePeer.promise;\n logger.log('getPeer', 'Active peer', peer);\n }\n return peer;\n });\n }\n makeRequest(requestInput, skipResponse) {\n var _a, _b, _c;\n return __awaiter(this, void 0, void 0, function* () {\n const messageId = yield (0, beacon_utils_1.generateGUID)();\n if (this._initPromise && this.isInitPending) {\n yield Promise.all([\n (_a = this.postMessageTransport) === null || _a === void 0 ? void 0 : _a.disconnect(),\n (_b = this.walletConnectTransport) === null || _b === void 0 ? void 0 : _b.disconnect()\n ]);\n this._initPromise = undefined;\n this.hideUI(['toast']);\n }\n logger.time(true, messageId);\n logger.log('makeRequest', 'starting');\n this.isInitPending = true;\n yield this.init();\n this.isInitPending = false;\n logger.timeLog(messageId, 'init done');\n logger.log('makeRequest', 'after init');\n const transport = yield this.transport;\n if (transport instanceof beacon_transport_walletconnect_1.WalletConnectTransport &&\n (yield this.getActiveAccount()) &&\n !(yield transport.hasPairings()) &&\n !(yield transport.hasSessions())) {\n yield this.channelClosedHandler(transport.type);\n throw new Error('No active pairing nor session found');\n }\n if (yield this.addRequestAndCheckIfRateLimited()) {\n this.events\n .emit(events_1.BeaconEvent.LOCAL_RATE_LIMIT_REACHED)\n .catch((emitError) => console.warn(emitError));\n throw new Error('rate limit reached');\n }\n if (!(yield this.checkPermissions(requestInput.type))) {\n this.events.emit(events_1.BeaconEvent.NO_PERMISSIONS).catch((emitError) => console.warn(emitError));\n throw new Error('No permissions to send this request to wallet!');\n }\n if (!this.beaconId) {\n throw yield this.sendInternalError('BeaconID not defined');\n }\n const request = Object.assign({ id: messageId, version: '2', senderId: yield (0, beacon_core_1.getSenderId)(yield this.beaconId) }, requestInput);\n let exposed;\n if (!skipResponse) {\n exposed = new beacon_utils_1.ExposedPromise();\n this.addOpenRequest(request.id, exposed);\n }\n const payload = yield new beacon_core_1.Serializer().serialize(request);\n const account = yield this.getActiveAccount();\n const peer = yield this.getPeer(account);\n const walletInfo = yield this.getWalletInfo(peer, account);\n logger.log('makeRequest', 'sending message', request);\n logger.timeLog('makeRequest', messageId, 'sending');\n try {\n yield transport.send(payload, peer);\n }\n catch (sendError) {\n this.events.emit(events_1.BeaconEvent.INTERNAL_ERROR, {\n text: 'Unable to send message. If this problem persists, please reset the connection and pair your wallet again.',\n buttons: [\n {\n text: 'Reset Connection',\n actionCallback: () => __awaiter(this, void 0, void 0, function* () {\n yield (0, beacon_ui_1.closeToast)();\n this.disconnect();\n })\n }\n ]\n });\n logger.timeLog('makeRequest', messageId, 'send error');\n throw sendError;\n }\n logger.timeLog('makeRequest', messageId, 'sent');\n this.events\n .emit(beacon_message_events_1.messageEvents[requestInput.type].sent, {\n walletInfo: Object.assign(Object.assign({}, walletInfo), { name: (_c = walletInfo.name) !== null && _c !== void 0 ? _c : 'Wallet' }),\n extraInfo: {\n resetCallback: () => __awaiter(this, void 0, void 0, function* () {\n this.disconnect();\n })\n }\n })\n .catch((emitError) => console.warn(emitError));\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return exposed === null || exposed === void 0 ? void 0 : exposed.promise; // TODO: fix type\n });\n }\n /**\n * This method handles sending of requests to the DApp. It makes sure that the DAppClient is initialized and connected\n * to the transport. After that rate limits and permissions will be checked, an ID is attached and the request is sent\n * to the DApp over the transport.\n *\n * @param requestInput The BeaconMessage to be sent to the wallet\n * @param account The account that the message will be sent to\n */\n makeRequestV3(requestInput) {\n var _a, _b, _c;\n return __awaiter(this, void 0, void 0, function* () {\n if (this._initPromise && this.isInitPending) {\n yield Promise.all([\n (_a = this.postMessageTransport) === null || _a === void 0 ? void 0 : _a.disconnect(),\n (_b = this.walletConnectTransport) === null || _b === void 0 ? void 0 : _b.disconnect()\n ]);\n this._initPromise = undefined;\n this.hideUI(['toast']);\n }\n const messageId = yield (0, beacon_utils_1.generateGUID)();\n logger.time(true, messageId);\n logger.log('makeRequest', 'starting');\n this.isInitPending = true;\n yield this.init();\n this.isInitPending = false;\n logger.timeLog('makeRequest', messageId, 'init done');\n logger.log('makeRequest', 'after init');\n if (yield this.addRequestAndCheckIfRateLimited()) {\n this.events\n .emit(events_1.BeaconEvent.LOCAL_RATE_LIMIT_REACHED)\n .catch((emitError) => console.warn(emitError));\n throw new Error('rate limit reached');\n }\n const transport = yield this.transport;\n if (transport instanceof beacon_transport_walletconnect_1.WalletConnectTransport &&\n (yield this.getActiveAccount()) &&\n !(yield transport.hasPairings()) &&\n !(yield transport.hasSessions())) {\n yield this.channelClosedHandler(transport.type);\n throw new Error('No active pairing nor session found');\n }\n // if (!(await this.checkPermissions(requestInput.type as BeaconMessageType))) {\n // this.events.emit(BeaconEvent.NO_PERMISSIONS).catch((emitError) => console.warn(emitError))\n // throw new Error('No permissions to send this request to wallet!')\n // }\n if (!this.beaconId) {\n throw yield this.sendInternalError('BeaconID not defined');\n }\n const request = {\n id: messageId,\n version: '3',\n senderId: yield (0, beacon_core_1.getSenderId)(yield this.beaconId),\n message: requestInput\n };\n const exposed = new beacon_utils_1.ExposedPromise();\n this.addOpenRequest(request.id, exposed);\n const payload = yield new beacon_core_1.Serializer().serialize(request);\n const account = yield this.getActiveAccount();\n const peer = yield this.getPeer(account);\n const walletInfo = yield this.getWalletInfo(peer, account);\n logger.log('makeRequest', 'sending message', request);\n logger.timeLog('makeRequest', messageId, 'sending');\n try {\n yield transport.send(payload, peer);\n }\n catch (sendError) {\n this.events.emit(events_1.BeaconEvent.INTERNAL_ERROR, {\n text: 'Unable to send message. If this problem persists, please reset the connection and pair your wallet again.',\n buttons: [\n {\n text: 'Reset Connection',\n actionCallback: () => __awaiter(this, void 0, void 0, function* () {\n yield (0, beacon_ui_1.closeToast)();\n this.disconnect();\n })\n }\n ]\n });\n logger.timeLog('makeRequest', messageId, 'send error');\n throw sendError;\n }\n logger.timeLog('makeRequest', messageId, 'sent');\n const index = requestInput.type;\n this.events\n .emit(beacon_message_events_1.messageEvents[index].sent, {\n walletInfo: Object.assign(Object.assign({}, walletInfo), { name: (_c = walletInfo.name) !== null && _c !== void 0 ? _c : 'Wallet' }),\n extraInfo: {\n resetCallback: () => __awaiter(this, void 0, void 0, function* () {\n this.disconnect();\n })\n }\n })\n .catch((emitError) => console.warn(emitError));\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return exposed.promise; // TODO: fix type\n });\n }\n disconnect() {\n return __awaiter(this, void 0, void 0, function* () {\n this.postMessageTransport = undefined;\n this.p2pTransport = undefined;\n this.walletConnectTransport = undefined;\n yield Promise.all([this.clearActiveAccount(), (yield this.transport).disconnect()]);\n });\n }\n /**\n * Adds a requests to the \"openRequests\" set so we know what messages have already been answered/handled.\n *\n * @param id The ID of the message\n * @param promise A promise that resolves once the response for that specific message is received\n */\n addOpenRequest(id, promise) {\n logger.log('addOpenRequest', this.name, `adding request ${id} and waiting for answer`);\n this.openRequests.set(id, promise);\n }\n sendNotificationWithAccessToken(notification) {\n return __awaiter(this, void 0, void 0, function* () {\n const { url, recipient, title, body, payload, protocolIdentifier, accessToken } = notification;\n const timestamp = new Date().toISOString();\n const keypair = yield this.keyPair;\n const rawPublicKey = keypair.publicKey;\n const prefix = Buffer.from(new Uint8Array([13, 15, 37, 217]));\n const publicKey = bs58check.encode(Buffer.concat([prefix, Buffer.from(rawPublicKey)]));\n const constructedString = [\n 'Tezos Signed Message: ',\n recipient,\n title,\n body,\n timestamp,\n payload\n ].join(' ');\n const bytes = (0, beacon_utils_1.toHex)(constructedString);\n const payloadBytes = '05' + '01' + bytes.length.toString(16).padStart(8, '0') + bytes;\n const signature = yield (0, beacon_utils_1.signMessage)(payloadBytes, {\n secretKey: Buffer.from(keypair.secretKey)\n });\n const notificationResponse = yield axios_1.default.post(`${url}/send`, {\n recipient,\n title,\n body,\n timestamp,\n payload,\n accessToken,\n protocolIdentifier,\n sender: {\n name: this.name,\n publicKey,\n signature\n }\n });\n return notificationResponse.data;\n });\n }\n onNewAccount(message, connectionInfo) {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function* () {\n // TODO: Migration code. Remove sometime after 1.0.0 release.\n const tempPK = message.publicKey || message.pubkey || message.pubKey;\n const publicKey = !!tempPK ? yield (0, beacon_utils_1.prefixPublicKey)(tempPK) : undefined;\n if (!publicKey && !message.address) {\n throw new Error('PublicKey or Address must be defined');\n }\n const address = (_a = message.address) !== null && _a !== void 0 ? _a : (yield (0, beacon_utils_1.getAddressFromPublicKey)(publicKey));\n if (!(0, beacon_utils_1.isValidAddress)(address)) {\n throw new Error(`Invalid address: \"${address}\"`);\n }\n if (message.walletType === 'abstracted_account' &&\n address.substring(0, 3) !== beacon_utils_1.CONTRACT_PREFIX) {\n throw new Error(`Invalid abstracted account address \"${address}\", it should be a ${beacon_utils_1.CONTRACT_PREFIX} address`);\n }\n logger.log('######## MESSAGE #######');\n logger.log('onNewAccount', message);\n const walletKey = yield this.storage.get(beacon_types_1.StorageKey.LAST_SELECTED_WALLET);\n const accountInfo = Object.assign({ accountIdentifier: yield (0, beacon_core_1.getAccountIdentifier)(address, message.network), senderId: message.senderId, origin: {\n type: connectionInfo.origin,\n id: connectionInfo.id\n }, walletKey,\n address,\n publicKey, network: message.network, scopes: message.scopes, threshold: message.threshold, notification: message.notification, connectedAt: new Date().getTime(), walletType: (_b = message.walletType) !== null && _b !== void 0 ? _b : 'implicit', verificationType: message.verificationType }, (message.verificationType === 'proof_of_event' ? { hasVerifiedChallenge: false } : {}));\n logger.log('accountInfo', '######## ACCOUNT INFO #######');\n logger.log('accountInfo', accountInfo);\n yield this.accountManager.addAccount(accountInfo);\n yield this.setActiveAccount(accountInfo);\n return accountInfo;\n });\n }\n}\nexports.DAppClient = DAppClient;\n//# sourceMappingURL=DAppClient.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-dapp/dist/cjs/dapp-client/DAppClient.js?")},"./packages/beacon-dapp/dist/cjs/events.js":function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.BeaconEventHandler = exports.defaultEventCallbacks = exports.BeaconEvent = void 0;\nconst beacon_dapp_1 = __webpack_require__(/*! @airgap/beacon-dapp */ \"./packages/beacon-dapp/dist/cjs/index.js\");\nconst beacon_types_1 = __webpack_require__(/*! @airgap/beacon-types */ \"./packages/beacon-types/dist/cjs/index.js\");\nconst beacon_core_1 = __webpack_require__(/*! @airgap/beacon-core */ \"./packages/beacon-core/dist/cjs/index.js\");\nconst shorten_string_1 = __webpack_require__(/*! ./utils/shorten-string */ \"./packages/beacon-dapp/dist/cjs/utils/shorten-string.js\");\nconst beacon_ui_1 = __webpack_require__(/*! @airgap/beacon-ui */ \"./packages/beacon-ui/dist/cjs/index.js\");\nconst logger = new beacon_core_1.Logger('BeaconEvents');\nconst SUCCESS_TIMER = 5 * 1000;\n/**\n * The different events that can be emitted by the beacon-sdk\n */\nvar BeaconEvent;\n(function (BeaconEvent) {\n BeaconEvent[\"PERMISSION_REQUEST_SENT\"] = \"PERMISSION_REQUEST_SENT\";\n BeaconEvent[\"PERMISSION_REQUEST_SUCCESS\"] = \"PERMISSION_REQUEST_SUCCESS\";\n BeaconEvent[\"PERMISSION_REQUEST_ERROR\"] = \"PERMISSION_REQUEST_ERROR\";\n BeaconEvent[\"PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT\"] = \"PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT\";\n BeaconEvent[\"PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS\"] = \"PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS\";\n BeaconEvent[\"PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR\"] = \"PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR\";\n BeaconEvent[\"OPERATION_REQUEST_SENT\"] = \"OPERATION_REQUEST_SENT\";\n BeaconEvent[\"OPERATION_REQUEST_SUCCESS\"] = \"OPERATION_REQUEST_SUCCESS\";\n BeaconEvent[\"OPERATION_REQUEST_ERROR\"] = \"OPERATION_REQUEST_ERROR\";\n BeaconEvent[\"SIGN_REQUEST_SENT\"] = \"SIGN_REQUEST_SENT\";\n BeaconEvent[\"SIGN_REQUEST_SUCCESS\"] = \"SIGN_REQUEST_SUCCESS\";\n BeaconEvent[\"SIGN_REQUEST_ERROR\"] = \"SIGN_REQUEST_ERROR\";\n // TODO: ENCRYPTION\n // ENCRYPT_REQUEST_SENT = 'ENCRYPT_REQUEST_SENT',\n // ENCRYPT_REQUEST_SUCCESS = 'ENCRYPT_REQUEST_SUCCESS',\n // ENCRYPT_REQUEST_ERROR = 'ENCRYPT_REQUEST_ERROR',\n BeaconEvent[\"BROADCAST_REQUEST_SENT\"] = \"BROADCAST_REQUEST_SENT\";\n BeaconEvent[\"BROADCAST_REQUEST_SUCCESS\"] = \"BROADCAST_REQUEST_SUCCESS\";\n BeaconEvent[\"BROADCAST_REQUEST_ERROR\"] = \"BROADCAST_REQUEST_ERROR\";\n BeaconEvent[\"ACKNOWLEDGE_RECEIVED\"] = \"ACKNOWLEDGE_RECEIVED\";\n BeaconEvent[\"LOCAL_RATE_LIMIT_REACHED\"] = \"LOCAL_RATE_LIMIT_REACHED\";\n BeaconEvent[\"NO_PERMISSIONS\"] = \"NO_PERMISSIONS\";\n BeaconEvent[\"ACTIVE_ACCOUNT_SET\"] = \"ACTIVE_ACCOUNT_SET\";\n BeaconEvent[\"ACTIVE_TRANSPORT_SET\"] = \"ACTIVE_TRANSPORT_SET\";\n BeaconEvent[\"SHOW_PREPARE\"] = \"SHOW_PREPARE\";\n BeaconEvent[\"HIDE_UI\"] = \"HIDE_UI\";\n BeaconEvent[\"INVALID_ACTIVE_ACCOUNT_STATE\"] = \"INVALID_ACTIVE_ACCOUNT_STATE\";\n BeaconEvent[\"PAIR_INIT\"] = \"PAIR_INIT\";\n BeaconEvent[\"PAIR_SUCCESS\"] = \"PAIR_SUCCESS\";\n BeaconEvent[\"CHANNEL_CLOSED\"] = \"CHANNEL_CLOSED\";\n BeaconEvent[\"INTERNAL_ERROR\"] = \"INTERNAL_ERROR\";\n BeaconEvent[\"UNKNOWN\"] = \"UNKNOWN\";\n})(BeaconEvent || (exports.BeaconEvent = BeaconEvent = {}));\n/**\n * Show a \"Request sent\" toast\n */\nconst showSentToast = (data) => __awaiter(void 0, void 0, void 0, function* () {\n let openWalletAction;\n const actions = [];\n if (data.walletInfo.deeplink) {\n if (data.walletInfo.type === 'web' ||\n (data.walletInfo.type === 'mobile' && (0, beacon_ui_1.isMobile)(window)) ||\n (data.walletInfo.type === 'desktop' && !(0, beacon_ui_1.isMobile)(window))) {\n const link = data.walletInfo.deeplink;\n openWalletAction = () => __awaiter(void 0, void 0, void 0, function* () {\n const a = document.createElement('a');\n a.setAttribute('rel', 'noopener');\n a.setAttribute('href', link);\n a.setAttribute('target', '_blank');\n a.dispatchEvent(new MouseEvent('click', { view: window, bubbles: true, cancelable: true }));\n });\n }\n }\n actions.push({\n text: `No answer from your wallet received yet. Please make sure the wallet is open.`,\n isBold: true\n });\n actions.push({\n text: 'Wallet not receiving request?',\n actionText: 'Reset Connection',\n actionCallback: () => __awaiter(void 0, void 0, void 0, function* () {\n yield (0, beacon_dapp_1.closeToast)();\n // eslint-disable-next-line @typescript-eslint/unbound-method\n const resetCallback = data.extraInfo.resetCallback;\n if (resetCallback) {\n logger.log('showSentToast', 'resetCallback invoked');\n yield resetCallback();\n }\n })\n });\n (0, beacon_dapp_1.openToast)({\n body: `Request sent to\\u00A0 {{wallet}}`,\n walletInfo: data.walletInfo,\n state: 'loading',\n actions,\n openWalletAction\n }).catch((toastError) => console.error(toastError));\n});\nconst showAcknowledgedToast = (data) => __awaiter(void 0, void 0, void 0, function* () {\n (0, beacon_dapp_1.openToast)({\n body: 'Awaiting confirmation in\\u00A0 {{wallet}}',\n state: 'acknowledge',\n walletInfo: data.walletInfo\n }).catch((toastError) => console.error(toastError));\n});\nconst showPrepare = (data) => __awaiter(void 0, void 0, void 0, function* () {\n const text = data.walletInfo\n ? `Preparing Request for\\u00A0 {{wallet}}...`\n : 'Preparing Request...';\n (0, beacon_dapp_1.openToast)({\n body: text,\n state: 'prepare',\n walletInfo: data.walletInfo\n }).catch((toastError) => console.error(toastError));\n});\nconst hideUI = (elements) => __awaiter(void 0, void 0, void 0, function* () {\n if (elements) {\n if (elements.includes('alert')) {\n yield (0, beacon_dapp_1.closeAlerts)();\n }\n if (elements.includes('toast')) {\n yield (0, beacon_dapp_1.closeToast)();\n }\n }\n else {\n yield (0, beacon_dapp_1.closeToast)();\n }\n});\n/**\n * Show a \"No Permission\" alert\n */\nconst showNoPermissionAlert = () => __awaiter(void 0, void 0, void 0, function* () {\n yield (0, beacon_dapp_1.openAlert)({\n title: 'No Permission',\n body: 'Please allow the wallet to handle this type of request.'\n });\n});\n/**\n * Show a\n */\nconst showInvalidActiveAccountState = () => __awaiter(void 0, void 0, void 0, function* () {\n yield (0, beacon_dapp_1.openAlert)({\n title: 'Invalid state',\n body: 'No subscription found for the received active account.'\n });\n});\n/**\n * Show an error toast\n *\n * @param beaconError The beacon error\n */\nconst showErrorToast = (response, buttons) => __awaiter(void 0, void 0, void 0, function* () {\n var _a, _b, _c, _d, _e, _f;\n const error = response.errorResponse.errorType\n ? beacon_core_1.BeaconError.getError(response.errorResponse.errorType, response.errorResponse.errorData)\n : new beacon_core_1.UnknownBeaconError();\n const actions = [\n {\n text: error.title,\n isBold: true\n }\n ];\n if (response.errorResponse.errorType === beacon_types_1.BeaconErrorType.TRANSACTION_INVALID_ERROR &&\n response.errorResponse.errorData) {\n const err = response.errorResponse.errorData;\n const errorMessages = response.errorMessages;\n let hasHumandReadableError = false;\n if (((_a = err[0]) === null || _a === void 0 ? void 0 : _a.contract_handle) && errorMessages && (errorMessages === null || errorMessages === void 0 ? void 0 : errorMessages[err[0].contract_handle])) {\n const errCode = (_d = (_c = (_b = err[1]) === null || _b === void 0 ? void 0 : _b.with) === null || _c === void 0 ? void 0 : _c.int) !== null && _d !== void 0 ? _d : (_f = (_e = err[1]) === null || _e === void 0 ? void 0 : _e.with) === null || _f === void 0 ? void 0 : _f.string;\n const contractErrors = errorMessages === null || errorMessages === void 0 ? void 0 : errorMessages[err[0].contract_handle];\n if (errCode && (contractErrors === null || contractErrors === void 0 ? void 0 : contractErrors[errCode])) {\n actions.push({\n text: contractErrors === null || contractErrors === void 0 ? void 0 : contractErrors[errCode],\n isBold: true\n });\n hasHumandReadableError = true;\n }\n }\n if (!hasHumandReadableError) {\n actions.push({\n text: error.description\n });\n }\n actions.push({\n text: '',\n actionText: 'Show Details',\n actionCallback: () => __awaiter(void 0, void 0, void 0, function* () {\n yield (0, beacon_dapp_1.closeToast)();\n yield (0, beacon_dapp_1.openAlert)({\n title: error.title,\n // eslint-disable-next-line @typescript-eslint/unbound-method\n body: error.fullDescription.description,\n data: error.fullDescription.data,\n buttons\n });\n })\n });\n }\n yield (0, beacon_dapp_1.openToast)({\n body: `{{wallet}}\\u00A0 has returned an error`,\n timer: response.errorResponse.errorType === beacon_types_1.BeaconErrorType.ABORTED_ERROR\n ? SUCCESS_TIMER\n : undefined,\n state: 'finished',\n walletInfo: response.walletInfo,\n actions\n });\n});\n/**\n * Show a rate limit reached toast\n */\nconst showRateLimitReached = () => __awaiter(void 0, void 0, void 0, function* () {\n (0, beacon_dapp_1.openAlert)({\n title: 'Error',\n body: 'Rate limit reached. Please slow down',\n buttons: [{ text: 'Done', style: 'outline' }],\n timer: 3000\n }).catch((toastError) => console.error(toastError));\n});\n/**\n * Show a \"connection successful\" alert for 1.5 seconds\n */\nconst showExtensionConnectedAlert = () => __awaiter(void 0, void 0, void 0, function* () {\n yield (0, beacon_dapp_1.closeAlerts)();\n});\n/**\n * Show a \"channel closed\" alert for 1.5 seconds\n */\nconst showChannelClosedAlert = () => __awaiter(void 0, void 0, void 0, function* () {\n yield (0, beacon_dapp_1.openAlert)({\n title: 'Channel closed',\n body: `Your peer has closed the connection.`,\n buttons: [{ text: 'Done', style: 'outline' }],\n timer: 1500\n });\n});\nconst showInternalErrorAlert = (data) => __awaiter(void 0, void 0, void 0, function* () {\n var _g;\n const buttons = [...((_g = data.buttons) !== null && _g !== void 0 ? _g : [])];\n buttons.push({ text: 'Done', style: 'outline' });\n const alertConfig = {\n title: 'Internal Error',\n body: data.text,\n buttons\n };\n yield (0, beacon_dapp_1.openAlert)(alertConfig);\n});\n/**\n * Show a connect alert with QR code\n *\n * @param data The data that is emitted by the PAIR_INIT event\n */\nconst showPairAlert = (data) => __awaiter(void 0, void 0, void 0, function* () {\n logger.log('showPairAlert');\n const alertConfig = {\n title: 'Choose your preferred wallet',\n body: `

`,\n pairingPayload: {\n p2pSyncCode: data.p2pPeerInfo,\n walletConnectSyncCode: data.walletConnectPeerInfo,\n postmessageSyncCode: data.postmessagePeerInfo,\n networkType: data.networkType\n },\n // eslint-disable-next-line @typescript-eslint/unbound-method\n closeButtonCallback: data.abortedHandler,\n disclaimerText: data.disclaimerText,\n analytics: data.analytics,\n featuredWallets: data.featuredWallets\n };\n yield (0, beacon_dapp_1.openAlert)(alertConfig);\n});\n/**\n * Show a \"Permission Granted\" alert\n *\n * @param data The data that is emitted by the PERMISSION_REQUEST_SUCCESS event\n */\nconst showPermissionSuccessAlert = (data) => __awaiter(void 0, void 0, void 0, function* () {\n const { output } = data;\n yield (0, beacon_dapp_1.openToast)({\n body: `{{wallet}}\\u00A0 has granted permission`,\n timer: SUCCESS_TIMER,\n walletInfo: data.walletInfo,\n state: 'finished',\n actions: [\n {\n text: 'Address',\n actionText: (0, shorten_string_1.shortenString)(output.address),\n isBold: true\n },\n {\n text: 'Network',\n actionText: `${output.network.type}`\n },\n {\n text: 'Permissions',\n actionText: output.scopes.join(', ')\n }\n ]\n });\n});\nconst showProofOfEventChallengeSuccessAlert = (data) => __awaiter(void 0, void 0, void 0, function* () {\n const { output } = data;\n yield (0, beacon_dapp_1.openToast)({\n body: `{{wallet}}\\u00A0 has ${output.isAccepted ? 'accepted' : 'refused'} the challenge`,\n timer: SUCCESS_TIMER,\n walletInfo: data.walletInfo,\n state: 'finished',\n actions: [\n {\n text: 'Challenge Id',\n actionText: output.dAppChallengeId\n }\n ]\n });\n});\n/**\n * Show an \"Operation Broadcasted\" alert\n *\n * @param data The data that is emitted by the OPERATION_REQUEST_SUCCESS event\n */\nconst showOperationSuccessAlert = (data) => __awaiter(void 0, void 0, void 0, function* () {\n const { account, output, blockExplorer } = data;\n yield (0, beacon_dapp_1.openToast)({\n body: `{{wallet}}\\u00A0 successfully submitted operation`,\n timer: SUCCESS_TIMER,\n state: 'finished',\n walletInfo: data.walletInfo,\n actions: [\n {\n text: (0, shorten_string_1.shortenString)(output.transactionHash),\n isBold: true,\n actionText: `Open Blockexplorer`,\n actionLogo: 'external',\n actionCallback: () => __awaiter(void 0, void 0, void 0, function* () {\n const link = yield blockExplorer.getTransactionLink(output.transactionHash, account.network);\n window.open(link, '_blank', 'noopener');\n yield (0, beacon_dapp_1.closeToast)();\n })\n }\n ]\n });\n});\n/**\n * Show a \"Transaction Signed\" alert\n *\n * @param data The data that is emitted by the SIGN_REQUEST_SUCCESS event\n */\nconst showSignSuccessAlert = (data) => __awaiter(void 0, void 0, void 0, function* () {\n const output = data.output;\n yield (0, beacon_dapp_1.openToast)({\n body: `{{wallet}}\\u00A0 successfully signed payload`,\n timer: SUCCESS_TIMER,\n state: 'finished',\n walletInfo: data.walletInfo,\n actions: [\n {\n text: `Signature: ${(0, shorten_string_1.shortenString)(output.signature)}`,\n actionText: 'Copy to clipboard',\n actionCallback: () => __awaiter(void 0, void 0, void 0, function* () {\n navigator.clipboard.writeText(output.signature).then(() => {\n logger.log('showSignSuccessAlert', 'Copying to clipboard was successful!');\n }, (err) => {\n logger.error('showSignSuccessAlert', 'Could not copy text to clipboard: ', err);\n });\n yield (0, beacon_dapp_1.closeToast)();\n })\n }\n ]\n });\n});\n/**\n * Show a \"Transaction Signed\" alert\n *\n * @param data The data that is emitted by the ENCRYPT_REQUEST_SUCCESS event\n */\n// TODO: ENCRYPTION\n// const showEncryptSuccessAlert = async (\n// data: BeaconEventType[BeaconEvent.ENCRYPT_REQUEST_SUCCESS]\n// ): Promise => {\n// const output = data.output\n// await openToast({\n// body: `{{wallet}}\\u00A0 successfully ${\n// data.output.cryptoOperation === EncryptionOperation.ENCRYPT ? 'encrypted' : 'decrypted'\n// } payload`,\n// timer: SUCCESS_TIMER,\n// state: 'finished',\n// walletInfo: data.walletInfo,\n// actions: [\n// {\n// text: `Payload: ${shortenString(output.payload)}`,\n// actionText: 'Copy to clipboard',\n// actionCallback: async (): Promise => {\n// navigator.clipboard.writeText(output.payload).then(\n// () => {\n// logger.log('showSignSuccessAlert', 'Copying to clipboard was successful!')\n// },\n// (err) => {\n// logger.error('showSignSuccessAlert', 'Could not copy text to clipboard: ', err)\n// }\n// )\n// await closeToast()\n// }\n// }\n// ]\n// })\n// }\n/**\n * Show a \"Broadcasted\" alert\n *\n * @param data The data that is emitted by the BROADCAST_REQUEST_SUCCESS event\n */\nconst showBroadcastSuccessAlert = (data) => __awaiter(void 0, void 0, void 0, function* () {\n const { network, output, blockExplorer } = data;\n yield (0, beacon_dapp_1.openToast)({\n body: `{{wallet}}\\u00A0 successfully injected operation`,\n timer: SUCCESS_TIMER,\n state: 'finished',\n walletInfo: data.walletInfo,\n actions: [\n {\n text: (0, shorten_string_1.shortenString)(output.transactionHash),\n isBold: true,\n actionText: `Open Blockexplorer`,\n actionLogo: 'external',\n actionCallback: () => __awaiter(void 0, void 0, void 0, function* () {\n const link = yield blockExplorer.getTransactionLink(output.transactionHash, network);\n window.open(link, '_blank', 'noopener');\n yield (0, beacon_dapp_1.closeToast)();\n })\n }\n ]\n });\n});\nconst emptyHandler = () => () => __awaiter(void 0, void 0, void 0, function* () {\n //\n});\n/**\n * The default event handlers\n */\nexports.defaultEventCallbacks = {\n [BeaconEvent.PERMISSION_REQUEST_SENT]: showSentToast,\n [BeaconEvent.PERMISSION_REQUEST_SUCCESS]: showPermissionSuccessAlert,\n [BeaconEvent.PERMISSION_REQUEST_ERROR]: showErrorToast,\n [BeaconEvent.PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT]: showSentToast,\n [BeaconEvent.PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS]: showProofOfEventChallengeSuccessAlert,\n [BeaconEvent.PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR]: showErrorToast,\n [BeaconEvent.OPERATION_REQUEST_SENT]: showSentToast,\n [BeaconEvent.OPERATION_REQUEST_SUCCESS]: showOperationSuccessAlert,\n [BeaconEvent.OPERATION_REQUEST_ERROR]: showErrorToast,\n [BeaconEvent.SIGN_REQUEST_SENT]: showSentToast,\n [BeaconEvent.SIGN_REQUEST_SUCCESS]: showSignSuccessAlert,\n [BeaconEvent.SIGN_REQUEST_ERROR]: showErrorToast,\n // TODO: ENCRYPTION\n // [BeaconEvent.ENCRYPT_REQUEST_SENT]: showSentToast,\n // [BeaconEvent.ENCRYPT_REQUEST_SUCCESS]: showEncryptSuccessAlert,\n // [BeaconEvent.ENCRYPT_REQUEST_ERROR]: showErrorToast,\n [BeaconEvent.BROADCAST_REQUEST_SENT]: showSentToast,\n [BeaconEvent.BROADCAST_REQUEST_SUCCESS]: showBroadcastSuccessAlert,\n [BeaconEvent.BROADCAST_REQUEST_ERROR]: showErrorToast,\n [BeaconEvent.ACKNOWLEDGE_RECEIVED]: showAcknowledgedToast,\n [BeaconEvent.LOCAL_RATE_LIMIT_REACHED]: showRateLimitReached,\n [BeaconEvent.NO_PERMISSIONS]: showNoPermissionAlert,\n [BeaconEvent.ACTIVE_ACCOUNT_SET]: emptyHandler(),\n [BeaconEvent.ACTIVE_TRANSPORT_SET]: emptyHandler(),\n [BeaconEvent.INVALID_ACTIVE_ACCOUNT_STATE]: showInvalidActiveAccountState,\n [BeaconEvent.SHOW_PREPARE]: showPrepare,\n [BeaconEvent.HIDE_UI]: hideUI,\n [BeaconEvent.PAIR_INIT]: showPairAlert,\n [BeaconEvent.PAIR_SUCCESS]: showExtensionConnectedAlert,\n [BeaconEvent.CHANNEL_CLOSED]: showChannelClosedAlert,\n [BeaconEvent.INTERNAL_ERROR]: showInternalErrorAlert,\n [BeaconEvent.UNKNOWN]: emptyHandler()\n};\n/**\n * @internalapi\n *\n * Handles beacon events\n */\nclass BeaconEventHandler {\n constructor(eventsToOverride = {}, overrideAll) {\n this.callbackMap = {\n [BeaconEvent.PERMISSION_REQUEST_SENT]: [exports.defaultEventCallbacks.PERMISSION_REQUEST_SENT],\n [BeaconEvent.PERMISSION_REQUEST_SUCCESS]: [exports.defaultEventCallbacks.PERMISSION_REQUEST_SUCCESS],\n [BeaconEvent.PERMISSION_REQUEST_ERROR]: [exports.defaultEventCallbacks.PERMISSION_REQUEST_ERROR],\n [BeaconEvent.PROOF_OF_EVENT_CHALLENGE_REQUEST_SENT]: [\n exports.defaultEventCallbacks.PERMISSION_REQUEST_SENT\n ],\n [BeaconEvent.PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS]: [\n exports.defaultEventCallbacks.PROOF_OF_EVENT_CHALLENGE_REQUEST_SUCCESS\n ],\n [BeaconEvent.PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR]: [\n exports.defaultEventCallbacks.PROOF_OF_EVENT_CHALLENGE_REQUEST_ERROR\n ],\n [BeaconEvent.OPERATION_REQUEST_SENT]: [exports.defaultEventCallbacks.OPERATION_REQUEST_SENT],\n [BeaconEvent.OPERATION_REQUEST_SUCCESS]: [exports.defaultEventCallbacks.OPERATION_REQUEST_SUCCESS],\n [BeaconEvent.OPERATION_REQUEST_ERROR]: [exports.defaultEventCallbacks.OPERATION_REQUEST_ERROR],\n [BeaconEvent.SIGN_REQUEST_SENT]: [exports.defaultEventCallbacks.SIGN_REQUEST_SENT],\n [BeaconEvent.SIGN_REQUEST_SUCCESS]: [exports.defaultEventCallbacks.SIGN_REQUEST_SUCCESS],\n [BeaconEvent.SIGN_REQUEST_ERROR]: [exports.defaultEventCallbacks.SIGN_REQUEST_ERROR],\n // TODO: ENCRYPTION\n // [BeaconEvent.ENCRYPT_REQUEST_SENT]: [defaultEventCallbacks.ENCRYPT_REQUEST_SENT],\n // [BeaconEvent.ENCRYPT_REQUEST_SUCCESS]: [defaultEventCallbacks.ENCRYPT_REQUEST_SUCCESS],\n // [BeaconEvent.ENCRYPT_REQUEST_ERROR]: [defaultEventCallbacks.ENCRYPT_REQUEST_ERROR],\n [BeaconEvent.BROADCAST_REQUEST_SENT]: [exports.defaultEventCallbacks.BROADCAST_REQUEST_SENT],\n [BeaconEvent.BROADCAST_REQUEST_SUCCESS]: [exports.defaultEventCallbacks.BROADCAST_REQUEST_SUCCESS],\n [BeaconEvent.BROADCAST_REQUEST_ERROR]: [exports.defaultEventCallbacks.BROADCAST_REQUEST_ERROR],\n [BeaconEvent.ACKNOWLEDGE_RECEIVED]: [exports.defaultEventCallbacks.ACKNOWLEDGE_RECEIVED],\n [BeaconEvent.LOCAL_RATE_LIMIT_REACHED]: [exports.defaultEventCallbacks.LOCAL_RATE_LIMIT_REACHED],\n [BeaconEvent.NO_PERMISSIONS]: [exports.defaultEventCallbacks.NO_PERMISSIONS],\n [BeaconEvent.ACTIVE_ACCOUNT_SET]: [exports.defaultEventCallbacks.ACTIVE_ACCOUNT_SET],\n [BeaconEvent.ACTIVE_TRANSPORT_SET]: [exports.defaultEventCallbacks.ACTIVE_TRANSPORT_SET],\n [BeaconEvent.INVALID_ACTIVE_ACCOUNT_STATE]: [\n exports.defaultEventCallbacks.INVALID_ACTIVE_ACCOUNT_STATE\n ],\n [BeaconEvent.SHOW_PREPARE]: [exports.defaultEventCallbacks.SHOW_PREPARE],\n [BeaconEvent.HIDE_UI]: [exports.defaultEventCallbacks.HIDE_UI],\n [BeaconEvent.PAIR_INIT]: [exports.defaultEventCallbacks.PAIR_INIT],\n [BeaconEvent.PAIR_SUCCESS]: [exports.defaultEventCallbacks.PAIR_SUCCESS],\n [BeaconEvent.CHANNEL_CLOSED]: [exports.defaultEventCallbacks.CHANNEL_CLOSED],\n [BeaconEvent.INTERNAL_ERROR]: [exports.defaultEventCallbacks.INTERNAL_ERROR],\n [BeaconEvent.UNKNOWN]: [exports.defaultEventCallbacks.UNKNOWN]\n };\n if (overrideAll) {\n this.setAllHandlers();\n }\n this.overrideDefaults(eventsToOverride);\n }\n /**\n * A method to subscribe to a specific beacon event and register a callback\n *\n * @param event The event being emitted\n * @param eventCallback The callback that will be invoked\n */\n on(event, eventCallback) {\n return __awaiter(this, void 0, void 0, function* () {\n const listeners = this.callbackMap[event] || [];\n listeners.push(eventCallback);\n this.callbackMap[event] = listeners;\n });\n }\n /**\n * Emit a beacon event\n *\n * @param event The event being emitted\n * @param data The data to be emit\n */\n emit(event, data, eventCallback) {\n return __awaiter(this, void 0, void 0, function* () {\n const listeners = this.callbackMap[event];\n if (listeners && listeners.length > 0) {\n listeners.forEach((listener) => __awaiter(this, void 0, void 0, function* () {\n try {\n yield listener(data, eventCallback);\n }\n catch (listenerError) {\n logger.error(`error handling event ${event}`, listenerError);\n }\n }));\n }\n });\n }\n /**\n * Override beacon event default callbacks. This can be used to disable default alert/toast behaviour\n *\n * @param eventsToOverride An object with the events to override\n */\n overrideDefaults(eventsToOverride) {\n Object.keys(eventsToOverride).forEach((untypedEvent) => {\n const eventType = untypedEvent;\n const event = eventsToOverride[eventType];\n if (event) {\n this.callbackMap[eventType] = [event.handler];\n }\n });\n }\n /**\n * Set all event callbacks to a specific handler.\n */\n setAllHandlers(handler) {\n Object.keys(this.callbackMap).forEach((untypedEvent) => {\n const eventType = untypedEvent;\n this.callbackMap[eventType] = [];\n if (handler) {\n this.callbackMap[eventType].push(handler);\n }\n else {\n this.callbackMap[eventType].push((...data) => {\n logger.log(untypedEvent, ...data);\n });\n }\n });\n }\n}\nexports.BeaconEventHandler = BeaconEventHandler;\n//# sourceMappingURL=events.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-dapp/dist/cjs/events.js?")},"./packages/beacon-dapp/dist/cjs/index.js":function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval('\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.TezblockBlockExplorer = exports.TzktBlockExplorer = exports.BlockExplorer = exports.defaultEventCallbacks = exports.BeaconEventHandler = exports.BeaconEvent = exports.getDAppClientInstance = exports.DAppClient = void 0;\n__exportStar(__webpack_require__(/*! @airgap/beacon-core */ "./packages/beacon-core/dist/cjs/index.js"), exports);\n__exportStar(__webpack_require__(/*! @airgap/beacon-transport-matrix */ "./packages/beacon-transport-matrix/dist/cjs/index.js"), exports);\n__exportStar(__webpack_require__(/*! @airgap/beacon-transport-postmessage */ "./packages/beacon-transport-postmessage/dist/cjs/index.js"), exports);\n__exportStar(__webpack_require__(/*! @airgap/beacon-types */ "./packages/beacon-types/dist/cjs/index.js"), exports);\n__exportStar(__webpack_require__(/*! @airgap/beacon-utils */ "./packages/beacon-utils/dist/cjs/index.js"), exports);\n__exportStar(__webpack_require__(/*! @airgap/beacon-ui */ "./packages/beacon-ui/dist/cjs/index.js"), exports);\nconst DAppClient_1 = __webpack_require__(/*! ./dapp-client/DAppClient */ "./packages/beacon-dapp/dist/cjs/dapp-client/DAppClient.js");\nObject.defineProperty(exports, "DAppClient", ({ enumerable: true, get: function () { return DAppClient_1.DAppClient; } }));\nconst events_1 = __webpack_require__(/*! ./events */ "./packages/beacon-dapp/dist/cjs/events.js");\nObject.defineProperty(exports, "BeaconEvent", ({ enumerable: true, get: function () { return events_1.BeaconEvent; } }));\nObject.defineProperty(exports, "BeaconEventHandler", ({ enumerable: true, get: function () { return events_1.BeaconEventHandler; } }));\nObject.defineProperty(exports, "defaultEventCallbacks", ({ enumerable: true, get: function () { return events_1.defaultEventCallbacks; } }));\nconst block_explorer_1 = __webpack_require__(/*! ./utils/block-explorer */ "./packages/beacon-dapp/dist/cjs/utils/block-explorer.js");\nObject.defineProperty(exports, "BlockExplorer", ({ enumerable: true, get: function () { return block_explorer_1.BlockExplorer; } }));\nconst tzkt_blockexplorer_1 = __webpack_require__(/*! ./utils/tzkt-blockexplorer */ "./packages/beacon-dapp/dist/cjs/utils/tzkt-blockexplorer.js");\nObject.defineProperty(exports, "TzktBlockExplorer", ({ enumerable: true, get: function () { return tzkt_blockexplorer_1.TzktBlockExplorer; } }));\nObject.defineProperty(exports, "TezblockBlockExplorer", ({ enumerable: true, get: function () { return tzkt_blockexplorer_1.TzktBlockExplorer; } }));\nconst get_instance_1 = __webpack_require__(/*! ./utils/get-instance */ "./packages/beacon-dapp/dist/cjs/utils/get-instance.js");\nObject.defineProperty(exports, "getDAppClientInstance", ({ enumerable: true, get: function () { return get_instance_1.getDAppClientInstance; } }));\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-dapp/dist/cjs/index.js?')},"./packages/beacon-dapp/dist/cjs/transports/DappP2PTransport.js":function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval('\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.DappP2PTransport = void 0;\nconst beacon_types_1 = __webpack_require__(/*! @airgap/beacon-types */ "./packages/beacon-types/dist/cjs/index.js");\nconst beacon_core_1 = __webpack_require__(/*! @airgap/beacon-core */ "./packages/beacon-core/dist/cjs/index.js");\nconst beacon_transport_matrix_1 = __webpack_require__(/*! @airgap/beacon-transport-matrix */ "./packages/beacon-transport-matrix/dist/cjs/index.js");\nconst logger = new beacon_core_1.Logger(\'DappP2PTransport\');\n/**\n * @internalapi\n *\n *\n */\nclass DappP2PTransport extends beacon_transport_matrix_1.P2PTransport {\n constructor(name, keyPair, storage, matrixNodes, iconUrl, appUrl) {\n super(name, keyPair, storage, matrixNodes, beacon_types_1.StorageKey.TRANSPORT_P2P_PEERS_DAPP, iconUrl, appUrl);\n }\n startOpenChannelListener() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.client.listenForChannelOpening((peer) => __awaiter(this, void 0, void 0, function* () {\n logger.log(\'listenForNewPeer\', `new publicKey`, peer.publicKey);\n yield this.addPeer(peer);\n this._isConnected = beacon_types_1.TransportStatus.CONNECTED;\n if (this.newPeerListener) {\n this.newPeerListener(peer);\n this.newPeerListener = undefined; // TODO: Remove this once we use the id\n }\n }));\n });\n }\n listenForNewPeer(newPeerListener) {\n return __awaiter(this, void 0, void 0, function* () {\n logger.log(\'listenForNewPeer\');\n this.newPeerListener = newPeerListener;\n });\n }\n stopListeningForNewPeers() {\n return __awaiter(this, void 0, void 0, function* () {\n logger.log(\'stopListeningForNewPeers\');\n this.newPeerListener = undefined;\n });\n }\n}\nexports.DappP2PTransport = DappP2PTransport;\n//# sourceMappingURL=DappP2PTransport.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-dapp/dist/cjs/transports/DappP2PTransport.js?')},"./packages/beacon-dapp/dist/cjs/transports/DappPostMessageTransport.js":function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval('\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.DappPostMessageTransport = void 0;\nconst beacon_types_1 = __webpack_require__(/*! @airgap/beacon-types */ "./packages/beacon-types/dist/cjs/index.js");\nconst beacon_core_1 = __webpack_require__(/*! @airgap/beacon-core */ "./packages/beacon-core/dist/cjs/index.js");\nconst beacon_transport_postmessage_1 = __webpack_require__(/*! @airgap/beacon-transport-postmessage */ "./packages/beacon-transport-postmessage/dist/cjs/index.js");\nconst logger = new beacon_core_1.Logger(\'DappPostMessageTransport\');\n/**\n * @internalapi\n *\n *\n */\nclass DappPostMessageTransport extends beacon_transport_postmessage_1.PostMessageTransport {\n constructor(name, keyPair, storage) {\n super(name, keyPair, storage, beacon_types_1.StorageKey.TRANSPORT_POSTMESSAGE_PEERS_DAPP);\n }\n startOpenChannelListener() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.client.listenForChannelOpening((peer) => __awaiter(this, void 0, void 0, function* () {\n logger.log(\'connect\', `received PostMessagePairingResponse`, peer);\n yield this.addPeer(peer);\n this._isConnected = beacon_types_1.TransportStatus.CONNECTED;\n if (this.newPeerListener) {\n this.newPeerListener(peer);\n this.newPeerListener = undefined; // TODO: Remove this once we use the id\n }\n }));\n });\n }\n listenForNewPeer(newPeerListener) {\n return __awaiter(this, void 0, void 0, function* () {\n logger.log(\'listenForNewPeer\');\n this.newPeerListener = newPeerListener;\n });\n }\n stopListeningForNewPeers() {\n return __awaiter(this, void 0, void 0, function* () {\n logger.log(\'stopListeningForNewPeers\');\n this.newPeerListener = undefined;\n });\n }\n}\nexports.DappPostMessageTransport = DappPostMessageTransport;\n//# sourceMappingURL=DappPostMessageTransport.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-dapp/dist/cjs/transports/DappPostMessageTransport.js?')},"./packages/beacon-dapp/dist/cjs/transports/DappWalletConnectTransport.js":function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval('\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.DappWalletConnectTransport = void 0;\nconst beacon_types_1 = __webpack_require__(/*! @airgap/beacon-types */ "./packages/beacon-types/dist/cjs/index.js");\nconst beacon_core_1 = __webpack_require__(/*! @airgap/beacon-core */ "./packages/beacon-core/dist/cjs/index.js");\nconst beacon_transport_walletconnect_1 = __webpack_require__(/*! @airgap/beacon-transport-walletconnect */ "./packages/beacon-transport-walletconnect/dist/cjs/index.js");\nconst logger = new beacon_core_1.Logger(\'DappWalletConnectTransport\');\n/**\n * @internalapi\n *\n *\n */\nclass DappWalletConnectTransport extends beacon_transport_walletconnect_1.WalletConnectTransport {\n constructor(name, keyPair, storage, wcOptions) {\n super(name, keyPair, storage, beacon_types_1.StorageKey.TRANSPORT_WALLETCONNECT_PEERS_DAPP, wcOptions);\n this.client.listenForChannelOpening((peer) => __awaiter(this, void 0, void 0, function* () {\n yield this.addPeer(peer);\n this._isConnected = beacon_types_1.TransportStatus.CONNECTED;\n if (this.newPeerListener) {\n this.newPeerListener(peer);\n this.newPeerListener = undefined; // TODO: Remove this once we use the id\n }\n }));\n }\n listenForNewPeer(newPeerListener) {\n return __awaiter(this, void 0, void 0, function* () {\n // logger.log(\'listenForNewPeer\')\n this.newPeerListener = newPeerListener;\n });\n }\n stopListeningForNewPeers() {\n return __awaiter(this, void 0, void 0, function* () {\n logger.log(\'stopListeningForNewPeers\');\n this.newPeerListener = undefined;\n });\n }\n}\nexports.DappWalletConnectTransport = DappWalletConnectTransport;\n//# sourceMappingURL=DappWalletConnectTransport.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-dapp/dist/cjs/transports/DappWalletConnectTransport.js?')},"./packages/beacon-dapp/dist/cjs/utils/block-explorer.js":function(__unused_webpack_module,exports){"use strict";eval('\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.BlockExplorer = void 0;\nclass BlockExplorer {\n constructor(rpcUrls) {\n this.rpcUrls = rpcUrls;\n }\n getLinkForNetwork(network) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.rpcUrls[network.type];\n });\n }\n}\nexports.BlockExplorer = BlockExplorer;\n//# sourceMappingURL=block-explorer.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-dapp/dist/cjs/utils/block-explorer.js?')},"./packages/beacon-dapp/dist/cjs/utils/get-instance.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.getDAppClientInstance = void 0;\nconst __1 = __webpack_require__(/*! .. */ "./packages/beacon-dapp/dist/cjs/index.js");\nlet _instance;\n/** Get a DAppClient instance. Will make sure only one dAppClient exists. After the first instance has been created, the config will be ignored, unless "reset" is set */\nconst getDAppClientInstance = (config, reset) => {\n if (_instance && reset) {\n _instance.disconnect();\n _instance = undefined;\n }\n if (_instance) {\n return _instance;\n }\n if (!_instance) {\n _instance = new __1.DAppClient(config);\n }\n return _instance;\n};\nexports.getDAppClientInstance = getDAppClientInstance;\n//# sourceMappingURL=get-instance.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-dapp/dist/cjs/utils/get-instance.js?')},"./packages/beacon-dapp/dist/cjs/utils/shorten-string.js":(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.shortenString = void 0;\nconst shortenString = (text) => {\n if (text.length >= 12) {\n return `${text.substr(0, 5)}...${text.substr(-5)}`;\n }\n return text;\n};\nexports.shortenString = shortenString;\n//# sourceMappingURL=shorten-string.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-dapp/dist/cjs/utils/shorten-string.js?')},"./packages/beacon-dapp/dist/cjs/utils/tzkt-blockexplorer.js":function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.TzktBlockExplorer = void 0;\nconst beacon_types_1 = __webpack_require__(/*! @airgap/beacon-types */ \"./packages/beacon-types/dist/cjs/index.js\");\nconst block_explorer_1 = __webpack_require__(/*! ./block-explorer */ \"./packages/beacon-dapp/dist/cjs/utils/block-explorer.js\");\nclass TzktBlockExplorer extends block_explorer_1.BlockExplorer {\n constructor(rpcUrls = {\n [beacon_types_1.NetworkType.MAINNET]: 'https://tzkt.io',\n [beacon_types_1.NetworkType.GHOSTNET]: 'https://ghostnet.tzkt.io',\n [beacon_types_1.NetworkType.WEEKLYNET]: 'https://weeklynet.tzkt.io',\n [beacon_types_1.NetworkType.DAILYNET]: 'https://dailynet.tzkt.io',\n [beacon_types_1.NetworkType.DELPHINET]: 'https://delphinet.tzkt.io',\n [beacon_types_1.NetworkType.EDONET]: 'https://edonet.tzkt.io',\n [beacon_types_1.NetworkType.FLORENCENET]: 'https://florencenet.tzkt.io',\n [beacon_types_1.NetworkType.GRANADANET]: 'https://granadanet.tzkt.io',\n [beacon_types_1.NetworkType.HANGZHOUNET]: 'https://hangzhounet.tzkt.io',\n [beacon_types_1.NetworkType.ITHACANET]: 'https://ithacanet.tzkt.io',\n [beacon_types_1.NetworkType.JAKARTANET]: 'https://jakartanet.tzkt.io',\n [beacon_types_1.NetworkType.KATHMANDUNET]: 'https://kathmandunet.tzkt.io',\n [beacon_types_1.NetworkType.LIMANET]: 'https://limanet.tzkt.io',\n [beacon_types_1.NetworkType.MUMBAINET]: 'https://mumbainet.tzkt.io',\n [beacon_types_1.NetworkType.NAIROBINET]: 'https://nairobinet.tzkt.io',\n [beacon_types_1.NetworkType.OXFORDNET]: 'https://oxfordnet.tzkt.io',\n [beacon_types_1.NetworkType.CUSTOM]: 'https://oxfordnet.tzkt.io'\n }) {\n super(rpcUrls);\n this.rpcUrls = rpcUrls;\n }\n getAddressLink(address, network) {\n return __awaiter(this, void 0, void 0, function* () {\n const blockExplorer = yield this.getLinkForNetwork(network);\n return `${blockExplorer}/${address}`;\n });\n }\n getTransactionLink(transactionId, network) {\n return __awaiter(this, void 0, void 0, function* () {\n const blockExplorer = yield this.getLinkForNetwork(network);\n return `${blockExplorer}/${transactionId}`;\n });\n }\n}\nexports.TzktBlockExplorer = TzktBlockExplorer;\n//# sourceMappingURL=tzkt-blockexplorer.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-dapp/dist/cjs/utils/tzkt-blockexplorer.js?")},"./packages/beacon-sdk/dist/cjs/index.js":function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval('\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, "__esModule", ({ value: true }));\n__exportStar(__webpack_require__(/*! @airgap/beacon-blockchain-substrate */ "./packages/beacon-blockchain-substrate/dist/cjs/index.js"), exports);\n__exportStar(__webpack_require__(/*! @airgap/beacon-blockchain-tezos */ "./packages/beacon-blockchain-tezos/dist/cjs/index.js"), exports);\n__exportStar(__webpack_require__(/*! @airgap/beacon-core */ "./packages/beacon-core/dist/cjs/index.js"), exports);\n__exportStar(__webpack_require__(/*! @airgap/beacon-dapp */ "./packages/beacon-dapp/dist/cjs/index.js"), exports);\n__exportStar(__webpack_require__(/*! @airgap/beacon-transport-matrix */ "./packages/beacon-transport-matrix/dist/cjs/index.js"), exports);\n__exportStar(__webpack_require__(/*! @airgap/beacon-transport-postmessage */ "./packages/beacon-transport-postmessage/dist/cjs/index.js"), exports);\n__exportStar(__webpack_require__(/*! @airgap/beacon-transport-walletconnect */ "./packages/beacon-transport-walletconnect/dist/cjs/index.js"), exports);\n__exportStar(__webpack_require__(/*! @airgap/beacon-types */ "./packages/beacon-types/dist/cjs/index.js"), exports);\n// export * from \'@airgap/beacon-ui\'\n__exportStar(__webpack_require__(/*! @airgap/beacon-utils */ "./packages/beacon-utils/dist/cjs/index.js"), exports);\n__exportStar(__webpack_require__(/*! @airgap/beacon-wallet */ "./packages/beacon-wallet/dist/cjs/index.js"), exports);\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-sdk/dist/cjs/index.js?')},"./packages/beacon-transport-matrix/dist/cjs/P2PTransport.js":function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval('\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.P2PTransport = void 0;\nconst beacon_core_1 = __webpack_require__(/*! @airgap/beacon-core */ "./packages/beacon-core/dist/cjs/index.js");\nconst beacon_types_1 = __webpack_require__(/*! @airgap/beacon-types */ "./packages/beacon-types/dist/cjs/index.js");\nconst beacon_transport_matrix_1 = __webpack_require__(/*! @airgap/beacon-transport-matrix */ "./packages/beacon-transport-matrix/dist/cjs/index.js");\nconst logger = new beacon_core_1.Logger(\'P2PTransport\');\n/**\n * @internalapi\n *\n *\n */\nclass P2PTransport extends beacon_core_1.Transport {\n constructor(name, keyPair, storage, matrixNodes, storageKey, iconUrl, appUrl) {\n super(name, new beacon_transport_matrix_1.P2PCommunicationClient(name, keyPair, 1, storage, matrixNodes, iconUrl, appUrl), new beacon_core_1.PeerManager(storage, storageKey));\n this.type = beacon_types_1.TransportType.P2P;\n }\n static isAvailable() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.resolve(true);\n });\n }\n connect() {\n const _super = Object.create(null, {\n connect: { get: () => super.connect }\n });\n return __awaiter(this, void 0, void 0, function* () {\n if (this._isConnected !== beacon_types_1.TransportStatus.NOT_CONNECTED) {\n return;\n }\n logger.log(\'connect\');\n this._isConnected = beacon_types_1.TransportStatus.CONNECTING;\n yield this.client.start();\n const knownPeers = yield this.getPeers();\n if (knownPeers.length > 0) {\n logger.log(\'connect\', `connecting to ${knownPeers.length} peers`);\n const connectionPromises = knownPeers.map((peer) => __awaiter(this, void 0, void 0, function* () { return this.listen(peer.publicKey); }));\n Promise.all(connectionPromises).catch((error) => logger.error(\'connect\', error));\n }\n yield this.startOpenChannelListener();\n return _super.connect.call(this);\n });\n }\n disconnect() {\n const _super = Object.create(null, {\n disconnect: { get: () => super.disconnect }\n });\n return __awaiter(this, void 0, void 0, function* () {\n yield this.client.stop();\n return _super.disconnect.call(this);\n });\n }\n startOpenChannelListener() {\n return __awaiter(this, void 0, void 0, function* () {\n //\n });\n }\n getPairingRequestInfo() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.client.getPairingRequestInfo();\n });\n }\n listen(publicKey) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.client\n .listenForEncryptedMessage(publicKey, (message) => {\n const connectionContext = {\n origin: beacon_types_1.Origin.P2P,\n id: publicKey\n };\n this.notifyListeners(message, connectionContext).catch((error) => {\n throw error;\n });\n })\n .catch((error) => {\n throw error;\n });\n });\n }\n}\nexports.P2PTransport = P2PTransport;\n//# sourceMappingURL=P2PTransport.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-transport-matrix/dist/cjs/P2PTransport.js?')},"./packages/beacon-transport-matrix/dist/cjs/communication-client/P2PCommunicationClient.js":function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval("/* provided dependency */ var Buffer = __webpack_require__(/*! buffer */ \"./node_modules/buffer/index.js\")[\"Buffer\"];\n\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.P2PCommunicationClient = void 0;\nconst ed25519_1 = __webpack_require__(/*! @stablelib/ed25519 */ \"./node_modules/@stablelib/ed25519/lib/ed25519.js\");\nconst axios_1 = __webpack_require__(/*! axios */ \"./node_modules/axios/dist/browser/axios.cjs\");\nconst beacon_utils_1 = __webpack_require__(/*! @airgap/beacon-utils */ \"./packages/beacon-utils/dist/cjs/index.js\");\nconst MatrixClient_1 = __webpack_require__(/*! ../matrix-client/MatrixClient */ \"./packages/beacon-transport-matrix/dist/cjs/matrix-client/MatrixClient.js\");\nconst MatrixClientEvent_1 = __webpack_require__(/*! ../matrix-client/models/MatrixClientEvent */ \"./packages/beacon-transport-matrix/dist/cjs/matrix-client/models/MatrixClientEvent.js\");\nconst MatrixMessage_1 = __webpack_require__(/*! ../matrix-client/models/MatrixMessage */ \"./packages/beacon-transport-matrix/dist/cjs/matrix-client/models/MatrixMessage.js\");\nconst beacon_types_1 = __webpack_require__(/*! @airgap/beacon-types */ \"./packages/beacon-types/dist/cjs/index.js\");\nconst beacon_core_1 = __webpack_require__(/*! @airgap/beacon-core */ \"./packages/beacon-core/dist/cjs/index.js\");\nconst beacon_utils_2 = __webpack_require__(/*! @airgap/beacon-utils */ \"./packages/beacon-utils/dist/cjs/index.js\");\nconst blake2b_1 = __webpack_require__(/*! @stablelib/blake2b */ \"./node_modules/@stablelib/blake2b/lib/blake2b.js\");\nconst utf8_1 = __webpack_require__(/*! @stablelib/utf8 */ \"./node_modules/@stablelib/utf8/lib/utf8.js\");\nconst logger = new beacon_core_1.Logger('P2PCommunicationClient');\nconst RESPONSE_WAIT_TIME_MS = 1000;\nconst REGIONS_AND_SERVERS = {\n [beacon_types_1.Regions.EUROPE_WEST]: [\n 'beacon-node-1.diamond.papers.tech',\n 'beacon-node-1.sky.papers.tech',\n 'beacon-node-2.sky.papers.tech',\n 'beacon-node-1.hope.papers.tech',\n 'beacon-node-1.hope-2.papers.tech',\n 'beacon-node-1.hope-3.papers.tech',\n 'beacon-node-1.hope-4.papers.tech',\n 'beacon-node-1.hope-5.papers.tech'\n ],\n [beacon_types_1.Regions.NORTH_AMERICA_EAST]: ['beacon-node-1.beacon-server-1.papers.tech'],\n [beacon_types_1.Regions.NORTH_AMERICA_WEST]: ['beacon-node-1.beacon-server-2.papers.tech'],\n [beacon_types_1.Regions.ASIA_EAST]: ['beacon-node-1.beacon-server-3.papers.tech'],\n [beacon_types_1.Regions.AUSTRALIA]: ['beacon-node-1.beacon-server-4.papers.tech']\n};\nconst sleep = (time) => {\n return new Promise((resolve) => setTimeout(resolve, time));\n};\n/**\n * @internalapi\n */\nclass P2PCommunicationClient extends beacon_core_1.CommunicationClient {\n constructor(name, keyPair, replicationCount, storage, matrixNodes, iconUrl, appUrl) {\n super(keyPair);\n this.name = name;\n this.replicationCount = replicationCount;\n this.storage = storage;\n this.iconUrl = iconUrl;\n this.appUrl = appUrl;\n this.client = new beacon_utils_2.ExposedPromise();\n this.activeListeners = new Map();\n this.ignoredRooms = [];\n this.loginCounter = 0;\n logger.log('constructor', 'P2PCommunicationClient created');\n this.ENABLED_RELAY_SERVERS = REGIONS_AND_SERVERS;\n if (matrixNodes) {\n this.ENABLED_RELAY_SERVERS = Object.assign(Object.assign({}, REGIONS_AND_SERVERS), matrixNodes);\n }\n }\n getPairingRequestInfo() {\n return __awaiter(this, void 0, void 0, function* () {\n const info = new beacon_types_1.P2PPairingRequest(yield (0, beacon_utils_2.generateGUID)(), this.name, yield this.getPublicKey(), beacon_core_1.BEACON_VERSION, (yield this.getRelayServer()).server);\n if (this.iconUrl) {\n info.icon = this.iconUrl;\n }\n if (this.appUrl) {\n info.appUrl = this.appUrl;\n }\n return info;\n });\n }\n getPairingResponseInfo(request) {\n return __awaiter(this, void 0, void 0, function* () {\n const info = new beacon_types_1.P2PPairingResponse(request.id, this.name, yield this.getPublicKey(), request.version, (yield this.getRelayServer()).server);\n if (this.iconUrl) {\n info.icon = this.iconUrl;\n }\n if (this.appUrl) {\n info.appUrl = this.appUrl;\n }\n return info;\n });\n }\n /**\n * To get the fastest region, we can't simply do one request, because sometimes,\n * DNS and SSL handshakes make \"faster\" connections slower. So we need to do 2 requests\n * and check which request was the fastest after 1s.\n */\n findBestRegionAndGetServer() {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n // Select random server from each region\n // Start request to server from each region\n // After first response, do request again (this is because the first request can be delayed by DNS/SSL/etc.)\n // After a specified amount of time, we select the fastest response time\n if (this.selectedRegion) {\n return (_a = this.relayServer) === null || _a === void 0 ? void 0 : _a.promiseResult;\n }\n const keys = Object.keys(this.ENABLED_RELAY_SERVERS);\n const results = [];\n const allResponsesReceived = new beacon_utils_2.ExposedPromise();\n let expectedNumberOfResponses = 0;\n const timeoutPromise = new beacon_utils_2.ExposedPromise();\n keys.forEach((key) => {\n var _a;\n const nodes = (_a = this.ENABLED_RELAY_SERVERS[key]) !== null && _a !== void 0 ? _a : [];\n if (nodes.length === 0) {\n return;\n }\n expectedNumberOfResponses += 2;\n const doRequest = (isFinalRequest = true) => {\n const timeStart = Date.now();\n Promise.race([this.getBeaconInfo(server), timeoutPromise.promise]).then((res) => {\n if (typeof res === 'boolean') {\n return;\n }\n results.push({\n time: Date.now() - timeStart,\n server: server,\n region: key,\n result: res\n });\n // If we have received all expected responses, we can continue and don't need to wait anymore\n if (results.length >= expectedNumberOfResponses) {\n allResponsesReceived.resolve(undefined);\n }\n if (!isFinalRequest) {\n doRequest(true);\n }\n });\n };\n const index = Math.floor(Math.random() * nodes.length);\n const server = nodes[index];\n doRequest(false);\n });\n // Sleep for a specified amount of time to let responses come in\n yield Promise.race([allResponsesReceived.promise, sleep(RESPONSE_WAIT_TIME_MS)]);\n let retryCount = 0;\n while (results.length <= 0) {\n // If we have no results yet, we will wait until we get one\n if (retryCount >= 100) {\n // If we do not have any server response after 5s, throw error\n throw new Error('No server responded.');\n }\n yield sleep(50);\n retryCount++;\n }\n // We have a result after the maximum amount of time, resolve the promise to abort all pending requests\n timeoutPromise.resolve(true);\n // Select fastest response time\n const lowestTimeEntry = results.reduce((prev, curr) => {\n return prev.time < curr.time ? prev : curr;\n });\n this.selectedRegion = lowestTimeEntry.region;\n return { server: lowestTimeEntry.server, timestamp: lowestTimeEntry.result.timestamp };\n });\n }\n getRelayServer() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.relayServer) {\n const relayServer = yield this.relayServer.promise;\n // We make sure the locally cached timestamp is not older than 1 minute, if it is, we refresh it\n if (Date.now() - relayServer.localTimestamp < 60 * 1000) {\n return { server: relayServer.server, timestamp: relayServer.timestamp };\n }\n const info = yield this.getBeaconInfo(relayServer.server);\n this.relayServer.resolve({\n server: relayServer.server,\n timestamp: info.timestamp,\n localTimestamp: new Date().getTime()\n });\n return { server: relayServer.server, timestamp: info.timestamp };\n }\n else {\n this.relayServer = new beacon_utils_2.ExposedPromise();\n }\n const node = yield this.storage.get(beacon_types_1.StorageKey.MATRIX_SELECTED_NODE);\n if (node && node.length > 0) {\n const info = yield this.getBeaconInfo(node);\n this.relayServer.resolve({\n server: node,\n timestamp: info.timestamp,\n localTimestamp: new Date().getTime()\n });\n return { server: node, timestamp: info.timestamp };\n }\n const server = yield this.findBestRegionAndGetServer();\n if (!server) {\n throw new Error(`No servers found`);\n }\n this.storage\n .set(beacon_types_1.StorageKey.MATRIX_SELECTED_NODE, server.server)\n .catch((error) => logger.log(error));\n this.relayServer.resolve({\n server: server.server,\n timestamp: server.timestamp,\n localTimestamp: new Date().getTime()\n });\n return { server: server.server, timestamp: server.timestamp };\n });\n }\n getBeaconInfo(server) {\n return __awaiter(this, void 0, void 0, function* () {\n return axios_1.default\n .get(`https://${server}/_synapse/client/beacon/info`)\n .then((res) => ({\n region: res.data.region,\n known_servers: res.data.known_servers,\n timestamp: Math.floor(res.data.timestamp)\n }));\n });\n }\n tryJoinRooms(roomId, retry = 1) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n yield (yield this.client.promise).joinRooms(roomId);\n }\n catch (error) {\n if (retry <= 10 && error.errcode === 'M_FORBIDDEN') {\n // If we join the room too fast after receiving the invite, the server can accidentally reject our join. This seems to be a problem only when using a federated multi-node setup. Usually waiting for a couple milliseconds solves the issue, but to handle lag, we will keep retrying for 2 seconds.\n logger.log(`Retrying to join...`, error);\n setTimeout(() => __awaiter(this, void 0, void 0, function* () {\n yield this.tryJoinRooms(roomId, retry + 1);\n }), 200);\n }\n else {\n logger.log(`Failed to join after ${retry} tries.`, error);\n }\n }\n });\n }\n start() {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function* () {\n logger.log('start', 'starting client');\n logger.log('start', `connecting to server`);\n const relayServer = yield this.getRelayServer();\n const client = MatrixClient_1.MatrixClient.create({\n baseUrl: `https://${relayServer.server}`,\n storage: this.storage\n });\n this.initialListener = (event) => __awaiter(this, void 0, void 0, function* () {\n if (this.initialEvent && this.initialEvent.timestamp && event && event.timestamp) {\n if (this.initialEvent.timestamp < event.timestamp) {\n this.initialEvent = event;\n }\n }\n else {\n this.initialEvent = event;\n }\n });\n client.subscribe(MatrixClientEvent_1.MatrixClientEventType.MESSAGE, this.initialListener);\n client.subscribe(MatrixClientEvent_1.MatrixClientEventType.INVITE, (event) => __awaiter(this, void 0, void 0, function* () {\n let member;\n if (event.content.members.length === 1) {\n // If there is only one member we know it's a new room\n // TODO: Use the \"sender\" of the event instead\n member = event.content.members[0];\n }\n yield this.tryJoinRooms(event.content.roomId);\n if (member) {\n yield this.updateRelayServer(member);\n yield this.updatePeerRoom(member, event.content.roomId);\n }\n }));\n if (!relayServer.timestamp) {\n throw new Error('No timestamp received from relay server');\n }\n const time = Math.floor(relayServer.timestamp);\n const loginString = `login:${Math.floor(time / (5 * 60))}`;\n logger.log('start', `login ${loginString}, ${yield this.getPublicKeyHash()} on ${relayServer.server}`);\n const loginRawDigest = (0, blake2b_1.hash)((0, utf8_1.encode)(loginString), 32);\n const secretKey = (_a = this.keyPair.secretKey) !== null && _a !== void 0 ? _a : this.keyPair.privateKey;\n const rawSignature = (0, ed25519_1.sign)(secretKey, loginRawDigest);\n try {\n yield client.start({\n id: yield this.getPublicKeyHash(),\n password: `ed:${(0, beacon_utils_1.toHex)(rawSignature)}:${yield this.getPublicKey()}`,\n deviceId: (0, beacon_utils_1.toHex)(this.keyPair.publicKey)\n });\n }\n catch (error) {\n logger.error('start', 'Could not log in, retrying');\n yield this.reset(); // If we can't log in, let's reset\n if (!this.selectedRegion) {\n throw new Error('No region selected.');\n }\n if (this.loginCounter <= ((_b = this.ENABLED_RELAY_SERVERS[this.selectedRegion]) !== null && _b !== void 0 ? _b : []).length) {\n this.loginCounter++;\n this.start();\n return;\n }\n else {\n logger.error('start', 'Tried to log in to every known beacon node, but no login was successful.');\n throw new Error('Could not connect to any beacon nodes. Try again later.');\n }\n }\n logger.log('start', 'login successful, client is ready');\n this.client.resolve(client);\n });\n }\n stop() {\n return __awaiter(this, void 0, void 0, function* () {\n logger.log('stop', 'stopping client');\n if (this.client.isResolved()) {\n yield (yield this.client.promise).stop().catch((error) => logger.error(error));\n }\n yield this.reset();\n });\n }\n reset() {\n return __awaiter(this, void 0, void 0, function* () {\n logger.log('reset', 'resetting connection');\n yield this.storage.delete(beacon_types_1.StorageKey.MATRIX_PEER_ROOM_IDS).catch((error) => logger.log(error));\n yield this.storage.delete(beacon_types_1.StorageKey.MATRIX_PRESERVED_STATE).catch((error) => logger.log(error));\n yield this.storage.delete(beacon_types_1.StorageKey.MATRIX_SELECTED_NODE).catch((error) => logger.log(error));\n // Instead of resetting everything, maybe we should make sure a new instance is created?\n this.relayServer = undefined;\n this.client = new beacon_utils_2.ExposedPromise();\n this.initialEvent = undefined;\n this.initialListener = undefined;\n });\n }\n listenForEncryptedMessage(senderPublicKey, messageCallback) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.activeListeners.has(senderPublicKey)) {\n return;\n }\n logger.log('listenForEncryptedMessage', `start listening for encrypted messages from publicKey ${senderPublicKey}`);\n const sharedKey = yield this.createCryptoBoxServer(senderPublicKey, this.keyPair);\n const callbackFunction = (event) => __awaiter(this, void 0, void 0, function* () {\n if (this.isTextMessage(event.content) && (yield this.isSender(event, senderPublicKey))) {\n let payload;\n yield this.updateRelayServer(event.content.message.sender);\n yield this.updatePeerRoom(event.content.message.sender, event.content.roomId);\n try {\n payload = Buffer.from(event.content.message.content, 'hex');\n // content can be non-hex if it's a connection open request\n }\n catch (_a) {\n /* */\n }\n if (payload && payload.length >= beacon_utils_1.secretbox_NONCEBYTES + beacon_utils_1.secretbox_MACBYTES) {\n try {\n const decryptedMessage = yield (0, beacon_utils_1.decryptCryptoboxPayload)(payload, sharedKey.receive);\n logger.log('listenForEncryptedMessage', `received a message from ${senderPublicKey}`, decryptedMessage);\n // logger.log(\n // 'listenForEncryptedMessage',\n // 'encrypted message received',\n // decryptedMessage,\n // await new Serializer().deserialize(decryptedMessage)\n // )\n // console.log('calculated sender ID', await getSenderId(senderPublicKey))\n // TODO: Add check for correct decryption key / sender ID\n messageCallback(decryptedMessage);\n }\n catch (decryptionError) {\n /* NO-OP. We try to decode every message, but some might not be addressed to us. */\n }\n }\n }\n });\n this.activeListeners.set(senderPublicKey, callbackFunction);\n (yield this.client.promise).subscribe(MatrixClientEvent_1.MatrixClientEventType.MESSAGE, callbackFunction);\n const lastEvent = this.initialEvent;\n if (lastEvent &&\n lastEvent.timestamp &&\n new Date().getTime() - lastEvent.timestamp < 5 * 60 * 1000) {\n logger.log('listenForEncryptedMessage', 'Handling previous event');\n yield callbackFunction(lastEvent);\n }\n else {\n logger.log('listenForEncryptedMessage', 'No previous event found');\n }\n const initialListener = this.initialListener;\n if (initialListener) {\n ;\n (yield this.client.promise).unsubscribe(MatrixClientEvent_1.MatrixClientEventType.MESSAGE, initialListener);\n }\n this.initialListener = undefined;\n this.initialEvent = undefined;\n });\n }\n unsubscribeFromEncryptedMessage(senderPublicKey) {\n return __awaiter(this, void 0, void 0, function* () {\n const listener = this.activeListeners.get(senderPublicKey);\n if (!listener) {\n return;\n }\n ;\n (yield this.client.promise).unsubscribe(MatrixClientEvent_1.MatrixClientEventType.MESSAGE, listener);\n this.activeListeners.delete(senderPublicKey);\n });\n }\n unsubscribeFromEncryptedMessages() {\n return __awaiter(this, void 0, void 0, function* () {\n ;\n (yield this.client.promise).unsubscribeAll(MatrixClientEvent_1.MatrixClientEventType.MESSAGE);\n this.activeListeners.clear();\n });\n }\n sendMessage(message, peer) {\n return __awaiter(this, void 0, void 0, function* () {\n const sharedKey = yield this.createCryptoBoxClient(peer.publicKey, this.keyPair);\n const recipientHash = yield (0, beacon_utils_1.getHexHash)(Buffer.from(peer.publicKey, 'hex'));\n const recipient = (0, beacon_utils_1.recipientString)(recipientHash, peer.relayServer);\n const roomId = yield this.getRelevantRoom(recipient);\n // Before we send the message, we have to wait for the join to be accepted.\n yield this.waitForJoin(roomId); // TODO: This can probably be removed because we are now waiting inside the get room method\n const encryptedMessage = yield (0, beacon_utils_1.encryptCryptoboxPayload)(message, sharedKey.send);\n logger.log('sendMessage', 'sending encrypted message', peer.publicKey, roomId, message);\n (yield this.client.promise).sendTextMessage(roomId, encryptedMessage).catch((error) => __awaiter(this, void 0, void 0, function* () {\n if (error.errcode === 'M_FORBIDDEN') {\n // Room doesn't exist\n logger.log(`sendMessage`, `M_FORBIDDEN`, roomId, error);\n yield this.deleteRoomIdFromRooms(roomId);\n const newRoomId = yield this.getRelevantRoom(recipient);\n logger.log(`sendMessage`, `Old room deleted, new room created`, newRoomId);\n (yield this.client.promise)\n .sendTextMessage(newRoomId, encryptedMessage)\n .catch((error2) => __awaiter(this, void 0, void 0, function* () {\n logger.log(`sendMessage`, `inner error`, newRoomId, error2);\n }));\n }\n else {\n logger.log(`sendMessage`, `unexpected error`, error);\n }\n }));\n });\n }\n updatePeerRoom(sender, roomId) {\n return __awaiter(this, void 0, void 0, function* () {\n logger.log(`updatePeerRoom`, sender, roomId);\n // Sender is in the format \"@pubkeyhash:relayserver.tld\"\n const split = sender.split(':');\n if (split.length < 2 || !split[0].startsWith('@')) {\n throw new Error('Invalid sender');\n }\n const roomIds = yield this.storage.get(beacon_types_1.StorageKey.MATRIX_PEER_ROOM_IDS);\n const room = roomIds[sender];\n if (room === roomId) {\n logger.debug(`updatePeerRoom`, `rooms are the same, not updating`);\n }\n logger.debug(`updatePeerRoom`, `current room`, room, 'new room', roomId);\n if (room && room[1]) {\n // If we have a room already, let's ignore it. We need to do this, otherwise it will be loaded from the matrix cache.\n logger.log(`updatePeerRoom`, `adding room \"${room[1]}\" to ignored array`);\n this.ignoredRooms.push(room[1]);\n }\n roomIds[sender] = roomId;\n yield this.storage.set(beacon_types_1.StorageKey.MATRIX_PEER_ROOM_IDS, roomIds);\n // TODO: We also need to delete the room from the sync state\n // If we need to delete a room, we can assume the local state is not up to date anymore, so we can reset the state\n });\n }\n deleteRoomIdFromRooms(roomId) {\n return __awaiter(this, void 0, void 0, function* () {\n const roomIds = yield this.storage.get(beacon_types_1.StorageKey.MATRIX_PEER_ROOM_IDS);\n const newRoomIds = Object.entries(roomIds)\n .filter((entry) => entry[1] !== roomId)\n .reduce((pv, cv) => (Object.assign(Object.assign({}, pv), { [cv[0]]: cv[1] })), {});\n yield this.storage.set(beacon_types_1.StorageKey.MATRIX_PEER_ROOM_IDS, newRoomIds);\n // TODO: We also need to delete the room from the sync state\n // If we need to delete a room, we can assume the local state is not up to date anymore, so we can reset the state\n this.ignoredRooms.push(roomId);\n });\n }\n listenForChannelOpening(messageCallback) {\n return __awaiter(this, void 0, void 0, function* () {\n logger.debug(`listenForChannelOpening`);\n (yield this.client.promise).subscribe(MatrixClientEvent_1.MatrixClientEventType.MESSAGE, (event) => __awaiter(this, void 0, void 0, function* () {\n if (this.isTextMessage(event.content) && (yield this.isChannelOpenMessage(event.content))) {\n logger.log(`listenForChannelOpening`, `channel opening received, trying to decrypt`, JSON.stringify(event));\n yield this.updateRelayServer(event.content.message.sender);\n yield this.updatePeerRoom(event.content.message.sender, event.content.roomId);\n const splits = event.content.message.content.split(':');\n const payload = Buffer.from(splits[splits.length - 1], 'hex');\n if (payload.length >= beacon_utils_1.secretbox_NONCEBYTES + beacon_utils_1.secretbox_MACBYTES) {\n try {\n const pairingResponse = JSON.parse(yield (0, beacon_utils_1.openCryptobox)(payload, this.keyPair.publicKey, this.keyPair.secretKey));\n logger.log(`listenForChannelOpening`, `channel opening received and decrypted`, JSON.stringify(pairingResponse));\n messageCallback(Object.assign(Object.assign({}, pairingResponse), { senderId: yield (0, beacon_core_1.getSenderId)(pairingResponse.publicKey) }));\n }\n catch (decryptionError) {\n /* NO-OP. We try to decode every message, but some might not be addressed to us. */\n }\n }\n }\n }));\n });\n }\n waitForJoin(roomId, retry = 0) {\n return __awaiter(this, void 0, void 0, function* () {\n // Rooms are updated as new events come in. `client.getRoomById` only accesses memory, it does not do any network requests.\n // TODO: Improve to listen to \"JOIN\" event\n const room = yield (yield this.client.promise).getRoomById(roomId);\n logger.log(`waitForJoin`, `Currently ${room.members.length} members, we need at least 2`);\n if (room.members.length >= 2) {\n return;\n }\n else {\n if (retry <= 200) {\n // On mobile, due to app switching, we potentially have to wait for a long time\n logger.log(`Waiting for join... Try: ${retry}`);\n return new Promise((resolve) => {\n setTimeout(() => {\n resolve(this.waitForJoin(roomId, retry + 1));\n }, 100 * (retry > 50 ? 10 : 1)); // After the initial 5 seconds, retry only once per second\n });\n }\n else {\n throw new Error(`No one joined after ${retry} tries.`);\n }\n }\n });\n }\n sendPairingResponse(pairingRequest) {\n return __awaiter(this, void 0, void 0, function* () {\n logger.log(`sendPairingResponse`);\n const recipientHash = yield (0, beacon_utils_1.getHexHash)(Buffer.from(pairingRequest.publicKey, 'hex'));\n const recipient = (0, beacon_utils_1.recipientString)(recipientHash, pairingRequest.relayServer);\n // We force room creation here because if we \"re-pair\", we need to make sure that we don't send it to an old room.\n const roomId = yield (yield this.client.promise).createTrustedPrivateRoom(recipient);\n logger.debug(`sendPairingResponse`, `Connecting to room \"${roomId}\"`);\n yield this.updatePeerRoom(recipient, roomId);\n // Before we send the message, we have to wait for the join to be accepted.\n yield this.waitForJoin(roomId); // TODO: This can probably be removed because we are now waiting inside the get room method\n logger.debug(`sendPairingResponse`, `Successfully joined room.`);\n // TODO: remove v1 backwards-compatibility\n const message = typeof pairingRequest.version === 'undefined'\n ? yield this.getPublicKey() // v1\n : JSON.stringify(yield this.getPairingResponseInfo(pairingRequest)); // v2\n logger.debug(`sendPairingResponse`, `Sending pairing response`, message);\n const encryptedMessage = yield this.encryptMessageAsymmetric(pairingRequest.publicKey, message);\n const msg = ['@channel-open', recipient, encryptedMessage].join(':');\n (yield this.client.promise).sendTextMessage(roomId, msg).catch((error) => __awaiter(this, void 0, void 0, function* () {\n if (error.errcode === 'M_FORBIDDEN') {\n // Room doesn't exist\n logger.log(`sendPairingResponse`, `M_FORBIDDEN`, roomId, error);\n yield this.deleteRoomIdFromRooms(roomId);\n const newRoomId = yield this.getRelevantRoom(recipient);\n logger.log(`sendPairingResponse`, `Old room deleted, new room created`, newRoomId);\n (yield this.client.promise).sendTextMessage(newRoomId, msg).catch((error2) => __awaiter(this, void 0, void 0, function* () {\n logger.log(`sendPairingResponse`, `inner error`, newRoomId, error2);\n }));\n }\n else {\n logger.log(`sendPairingResponse`, `unexpected error`, error);\n }\n }));\n });\n }\n isTextMessage(content) {\n return content.message.type === MatrixMessage_1.MatrixMessageType.TEXT;\n }\n updateRelayServer(sender) {\n return __awaiter(this, void 0, void 0, function* () {\n logger.log(`updateRelayServer`, sender);\n // Sender is in the format \"@pubkeyhash:relayserver.tld\"\n const split = sender.split(':');\n if (split.length < 2 || !split[0].startsWith('@')) {\n throw new Error('Invalid sender');\n }\n const senderHash = split.shift();\n const relayServer = split.join(':');\n const manager = localStorage.getItem('beacon:communication-peers-dapp')\n ? new beacon_core_1.PeerManager(this.storage, beacon_types_1.StorageKey.TRANSPORT_P2P_PEERS_DAPP)\n : new beacon_core_1.PeerManager(this.storage, beacon_types_1.StorageKey.TRANSPORT_P2P_PEERS_WALLET);\n const peers = yield manager.getPeers();\n const promiseArray = peers.map((peer) => __awaiter(this, void 0, void 0, function* () {\n const hash = `@${yield (0, beacon_utils_1.getHexHash)(Buffer.from(peer.publicKey, 'hex'))}`;\n if (hash === senderHash) {\n if (peer.relayServer !== relayServer) {\n peer.relayServer = relayServer;\n yield manager.addPeer(peer);\n }\n }\n }));\n yield Promise.all(promiseArray);\n });\n }\n isChannelOpenMessage(content) {\n return __awaiter(this, void 0, void 0, function* () {\n return content.message.content.startsWith(`@channel-open:@${yield (0, beacon_utils_1.getHexHash)(Buffer.from(yield this.getPublicKey(), 'hex'))}`);\n });\n }\n isSender(event, senderPublicKey) {\n return __awaiter(this, void 0, void 0, function* () {\n return event.content.message.sender.startsWith(`@${yield (0, beacon_utils_1.getHexHash)(Buffer.from(senderPublicKey, 'hex'))}`);\n });\n }\n getRelevantRoom(recipient) {\n return __awaiter(this, void 0, void 0, function* () {\n const roomIds = yield this.storage.get(beacon_types_1.StorageKey.MATRIX_PEER_ROOM_IDS);\n let roomId = roomIds[recipient];\n if (!roomId) {\n logger.log(`getRelevantRoom`, `No room found for peer ${recipient}, checking joined ones.`);\n const room = yield this.getRelevantJoinedRoom(recipient);\n roomId = room.id;\n roomIds[recipient] = room.id;\n yield this.storage.set(beacon_types_1.StorageKey.MATRIX_PEER_ROOM_IDS, roomIds);\n }\n logger.log(`getRelevantRoom`, `Using room ${roomId}`);\n return roomId;\n });\n }\n getRelevantJoinedRoom(recipient) {\n return __awaiter(this, void 0, void 0, function* () {\n const joinedRooms = yield (yield this.client.promise).joinedRooms;\n logger.log('checking joined rooms', joinedRooms, recipient);\n const relevantRooms = joinedRooms\n .filter((roomElement) => !this.ignoredRooms.some((id) => roomElement.id === id))\n .filter((roomElement) => roomElement.members.some((member) => member === recipient));\n let room;\n // We always create a new room if one has been ignored. This is because if we ignore one, we know the server state changed.\n // So we cannot trust the current sync state. This can be removed once we have a method to properly clear and refresh the sync state.\n if (relevantRooms.length === 0 || this.ignoredRooms.length > 0) {\n logger.log(`getRelevantJoinedRoom`, `no relevant rooms found, creating new one`);\n const roomId = yield (yield this.client.promise).createTrustedPrivateRoom(recipient);\n room = yield (yield this.client.promise).getRoomById(roomId);\n logger.log(`getRelevantJoinedRoom`, `waiting for other party to join room: ${room.id}`);\n yield this.waitForJoin(roomId);\n logger.log(`getRelevantJoinedRoom`, `new room created and peer invited: ${room.id}`);\n }\n else {\n room = relevantRooms[0];\n logger.log(`getRelevantJoinedRoom`, `channel already open, reusing room ${room.id}`);\n }\n return room;\n });\n }\n}\nexports.P2PCommunicationClient = P2PCommunicationClient;\n//# sourceMappingURL=P2PCommunicationClient.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-transport-matrix/dist/cjs/communication-client/P2PCommunicationClient.js?")},"./packages/beacon-transport-matrix/dist/cjs/index.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.P2PTransport = exports.P2PCommunicationClient = void 0;\nvar P2PCommunicationClient_1 = __webpack_require__(/*! ./communication-client/P2PCommunicationClient */ "./packages/beacon-transport-matrix/dist/cjs/communication-client/P2PCommunicationClient.js");\nObject.defineProperty(exports, "P2PCommunicationClient", ({ enumerable: true, get: function () { return P2PCommunicationClient_1.P2PCommunicationClient; } }));\nvar P2PTransport_1 = __webpack_require__(/*! ./P2PTransport */ "./packages/beacon-transport-matrix/dist/cjs/P2PTransport.js");\nObject.defineProperty(exports, "P2PTransport", ({ enumerable: true, get: function () { return P2PTransport_1.P2PTransport; } }));\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-transport-matrix/dist/cjs/index.js?')},"./packages/beacon-transport-matrix/dist/cjs/matrix-client/EventEmitter.js":(__unused_webpack_module,exports)=>{"use strict";eval("\n// https://gist.github.com/mudge/5830382?permalink_comment_id=2658721#gistcomment-2658721\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.EventEmitter = void 0;\nclass EventEmitter {\n constructor() {\n this.events = {};\n }\n on(event, listener) {\n if (typeof this.events[event] !== 'object') {\n this.events[event] = [];\n }\n this.events[event].push(listener);\n return () => this.removeListener(event, listener);\n }\n removeListener(event, listener) {\n if (typeof this.events[event] !== 'object') {\n return;\n }\n if (!listener) {\n this.events[event] = [];\n return;\n }\n const idx = this.events[event].indexOf(listener);\n if (idx > -1) {\n this.events[event].splice(idx, 1);\n }\n }\n removeAllListeners() {\n Object.keys(this.events).forEach((event) => this.events[event].splice(0, this.events[event].length));\n }\n emit(event, ...args) {\n if (typeof this.events[event] !== 'object') {\n return;\n }\n ;\n [...this.events[event]].forEach((listener) => listener.apply(this, args));\n }\n once(event, listener) {\n const remove = this.on(event, (...args) => {\n remove();\n listener.apply(this, args);\n });\n return remove;\n }\n}\nexports.EventEmitter = EventEmitter;\n//# sourceMappingURL=EventEmitter.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-transport-matrix/dist/cjs/matrix-client/EventEmitter.js?")},"./packages/beacon-transport-matrix/dist/cjs/matrix-client/MatrixClient.js":function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MatrixClient = void 0;\nconst beacon_core_1 = __webpack_require__(/*! @airgap/beacon-core */ \"./packages/beacon-core/dist/cjs/index.js\");\nconst beacon_utils_1 = __webpack_require__(/*! @airgap/beacon-utils */ \"./packages/beacon-utils/dist/cjs/index.js\");\nconst MatrixClientStore_1 = __webpack_require__(/*! ./MatrixClientStore */ \"./packages/beacon-transport-matrix/dist/cjs/matrix-client/MatrixClientStore.js\");\nconst MatrixHttpClient_1 = __webpack_require__(/*! ./MatrixHttpClient */ \"./packages/beacon-transport-matrix/dist/cjs/matrix-client/MatrixHttpClient.js\");\nconst MatrixRoom_1 = __webpack_require__(/*! ./models/MatrixRoom */ \"./packages/beacon-transport-matrix/dist/cjs/matrix-client/models/MatrixRoom.js\");\nconst MatrixRoomService_1 = __webpack_require__(/*! ./services/MatrixRoomService */ \"./packages/beacon-transport-matrix/dist/cjs/matrix-client/services/MatrixRoomService.js\");\nconst MatrixUserService_1 = __webpack_require__(/*! ./services/MatrixUserService */ \"./packages/beacon-transport-matrix/dist/cjs/matrix-client/services/MatrixUserService.js\");\nconst MatrixEventService_1 = __webpack_require__(/*! ./services/MatrixEventService */ \"./packages/beacon-transport-matrix/dist/cjs/matrix-client/services/MatrixEventService.js\");\nconst MatrixClientEventEmitter_1 = __webpack_require__(/*! ./MatrixClientEventEmitter */ \"./packages/beacon-transport-matrix/dist/cjs/matrix-client/MatrixClientEventEmitter.js\");\nconst logger = new beacon_core_1.Logger('MatrixClient');\nconst IMMEDIATE_POLLING_RETRIES = 3;\nconst RETRY_INTERVAL = 5000;\n/**\n * The matrix client used to connect to the matrix network\n */\nclass MatrixClient {\n constructor(store, eventEmitter, userService, roomService, eventService, httpClient) {\n this.store = store;\n this.eventEmitter = eventEmitter;\n this.userService = userService;\n this.roomService = roomService;\n this.eventService = eventService;\n this.httpClient = httpClient;\n this.isActive = true;\n this._isReady = new beacon_utils_1.ExposedPromise();\n this.store.onStateChanged((oldState, newState, stateChange) => {\n this.eventEmitter.onStateChanged(oldState, newState, stateChange);\n }, 'rooms');\n }\n /**\n * Create a matrix client based on the options provided\n *\n * @param config\n */\n static create(config) {\n const store = new MatrixClientStore_1.MatrixClientStore(config.storage);\n const eventEmitter = new MatrixClientEventEmitter_1.MatrixClientEventEmitter();\n const httpClient = new MatrixHttpClient_1.MatrixHttpClient(config.baseUrl);\n const accountService = new MatrixUserService_1.MatrixUserService(httpClient);\n const roomService = new MatrixRoomService_1.MatrixRoomService(httpClient);\n const eventService = new MatrixEventService_1.MatrixEventService(httpClient);\n return new MatrixClient(store, eventEmitter, accountService, roomService, eventService, httpClient);\n }\n /**\n * Return all the rooms we are currently part of\n */\n get joinedRooms() {\n return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {\n yield this.isConnected();\n resolve(Object.values(this.store.get('rooms')).filter((room) => room.status === MatrixRoom_1.MatrixRoomStatus.JOINED));\n }));\n }\n /**\n * Return all the rooms to which we have received invitations\n */\n get invitedRooms() {\n return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {\n yield this.isConnected();\n resolve(Object.values(this.store.get('rooms')).filter((room) => room.status === MatrixRoom_1.MatrixRoomStatus.INVITED));\n }));\n }\n /**\n * Return all the rooms that we left\n */\n get leftRooms() {\n return new Promise((resolve) => __awaiter(this, void 0, void 0, function* () {\n yield this.isConnected();\n resolve(Object.values(this.store.get('rooms')).filter((room) => room.status === MatrixRoom_1.MatrixRoomStatus.LEFT));\n }));\n }\n /**\n * Initiate the connection to the matrix node and log in\n *\n * @param user\n */\n start(user) {\n return __awaiter(this, void 0, void 0, function* () {\n const response = yield this.userService.login(user.id, user.password, user.deviceId);\n yield this.store.update({\n accessToken: response.access_token\n });\n const initialPollingResult = new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n yield this.poll(0, (pollingResponse) => __awaiter(this, void 0, void 0, function* () {\n if (!this.store.get('isRunning')) {\n resolve();\n }\n yield this.store.update({\n isRunning: true,\n syncToken: pollingResponse.next_batch,\n pollingTimeout: 30000,\n pollingRetries: 0,\n rooms: MatrixRoom_1.MatrixRoom.fromSync(pollingResponse.rooms)\n });\n }), (error) => __awaiter(this, void 0, void 0, function* () {\n if (!this.store.get('isRunning')) {\n reject(error);\n }\n yield this.store.update({\n isRunning: false,\n pollingRetries: this.store.get('pollingRetries') + 1\n });\n }));\n }));\n initialPollingResult\n .then(() => {\n this._isReady.resolve();\n })\n .catch(console.error);\n return initialPollingResult;\n });\n }\n isConnected() {\n return __awaiter(this, void 0, void 0, function* () {\n return this._isReady.promise;\n });\n }\n /**\n * Stop all running requests\n */\n stop() {\n return __awaiter(this, void 0, void 0, function* () {\n logger.log(`MATRIX CLIENT STOPPED`);\n this.isActive = false;\n this._isReady = new beacon_utils_1.ExposedPromise();\n return this.httpClient.cancelAllRequests();\n });\n }\n /**\n * Subscribe to new matrix events\n *\n * @param event\n * @param listener\n */\n subscribe(event, listener) {\n this.eventEmitter.on(event, listener);\n }\n /**\n * Unsubscribe from matrix events\n *\n * @param event\n * @param listener\n */\n unsubscribe(event, listener) {\n if (listener) {\n this.eventEmitter.removeListener(event, listener);\n }\n }\n /**\n * Unsubscribe from all matrix events of this type\n *\n * @param event\n * @param listener\n */\n unsubscribeAll(event) {\n this.eventEmitter.removeListener(event);\n }\n getRoomById(id) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.isConnected();\n return this.store.getRoom(id);\n });\n }\n /**\n * Create a private room with the supplied members\n *\n * @param members Members that will be in the room\n */\n createTrustedPrivateRoom(...members) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.isConnected();\n return this.requiresAuthorization('createRoom', (accessToken) => __awaiter(this, void 0, void 0, function* () {\n const response = yield this.roomService.createRoom(accessToken, {\n room_version: '5',\n invite: members,\n preset: 'public_chat',\n is_direct: true\n });\n return response.room_id;\n }));\n });\n }\n /**\n * Invite user to rooms\n *\n * @param user The user to be invited\n * @param roomsOrIds The rooms the user will be invited to\n */\n inviteToRooms(user, ...roomsOrIds) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.isConnected();\n yield this.requiresAuthorization('invite', (accessToken) => Promise.all(roomsOrIds.map((roomOrId) => {\n const room = this.store.getRoom(roomOrId);\n this.roomService\n .inviteToRoom(accessToken, user, room)\n .catch((error) => logger.warn('inviteToRooms', error));\n })));\n });\n }\n /**\n * Join rooms\n *\n * @param roomsOrIds\n */\n joinRooms(...roomsOrIds) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.isConnected();\n yield this.requiresAuthorization('join', (accessToken) => Promise.all(roomsOrIds.map((roomOrId) => {\n const room = this.store.getRoom(roomOrId);\n return this.roomService.joinRoom(accessToken, room);\n })));\n });\n }\n /**\n * Send a text message\n *\n * @param roomOrId\n * @param message\n */\n sendTextMessage(roomId, message) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.isConnected();\n yield this.requiresAuthorization('send', (accessToken) => __awaiter(this, void 0, void 0, function* () {\n const txnId = yield this.createTxnId();\n return this.eventService.sendMessage(accessToken, roomId, {\n msgtype: 'm.text',\n body: message\n }, txnId);\n }));\n });\n }\n /**\n * Poll the server to get the latest data and get notified of changes\n *\n * @param interval\n * @param onSyncSuccess\n * @param onSyncError\n */\n poll(interval, onSyncSuccess, onSyncError) {\n return __awaiter(this, void 0, void 0, function* () {\n const store = this.store;\n const sync = this.sync.bind(this);\n const pollSync = (resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n let syncingRetries = 0;\n try {\n const response = yield sync();\n onSyncSuccess(response);\n }\n catch (error) {\n onSyncError(error);\n syncingRetries = store.get('pollingRetries');\n // console.warn('Could not sync:', error)\n if (this.isActive) {\n logger.log(`Retry syncing... ${syncingRetries} retries so far`);\n }\n }\n finally {\n if (this.isActive) {\n setTimeout(() => __awaiter(this, void 0, void 0, function* () {\n yield pollSync(resolve, reject);\n }), syncingRetries > IMMEDIATE_POLLING_RETRIES ? RETRY_INTERVAL + interval : interval);\n }\n else {\n reject(new Error(`Syncing stopped manually.`));\n }\n }\n });\n return new Promise(pollSync);\n });\n }\n /**\n * Get state from server\n */\n sync() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.requiresAuthorization('sync', (accessToken) => __awaiter(this, void 0, void 0, function* () {\n return this.eventService.sync(accessToken, {\n pollingTimeout: this.store.get('pollingTimeout'),\n syncToken: this.store.get('syncToken')\n });\n }));\n });\n }\n /**\n * A helper method that makes sure an access token is provided\n *\n * @param name\n * @param action\n */\n requiresAuthorization(name, action) {\n return __awaiter(this, void 0, void 0, function* () {\n const storedToken = this.store.get('accessToken');\n if (!storedToken) {\n return Promise.reject(`${name} requires authorization but no access token has been provided.`);\n }\n return action(storedToken);\n });\n }\n /**\n * Create a transaction ID\n */\n createTxnId() {\n return __awaiter(this, void 0, void 0, function* () {\n const timestamp = new Date().getTime();\n const counter = this.store.get('txnNo');\n yield this.store.update({\n txnNo: counter + 1\n });\n return `m${timestamp}.${counter}`;\n });\n }\n}\nexports.MatrixClient = MatrixClient;\n//# sourceMappingURL=MatrixClient.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-transport-matrix/dist/cjs/matrix-client/MatrixClient.js?")},"./packages/beacon-transport-matrix/dist/cjs/matrix-client/MatrixClientEventEmitter.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.MatrixClientEventEmitter = void 0;\nconst EventEmitter_1 = __webpack_require__(/*! ./EventEmitter */ "./packages/beacon-transport-matrix/dist/cjs/matrix-client/EventEmitter.js");\nconst beacon_utils_1 = __webpack_require__(/*! @airgap/beacon-utils */ "./packages/beacon-utils/dist/cjs/index.js");\nconst MatrixRoom_1 = __webpack_require__(/*! ./models/MatrixRoom */ "./packages/beacon-transport-matrix/dist/cjs/matrix-client/models/MatrixRoom.js");\nconst MatrixClientEvent_1 = __webpack_require__(/*! ./models/MatrixClientEvent */ "./packages/beacon-transport-matrix/dist/cjs/matrix-client/models/MatrixClientEvent.js");\nclass MatrixClientEventEmitter extends EventEmitter_1.EventEmitter {\n constructor() {\n super(...arguments);\n this.eventEmitProviders = new Map([\n [MatrixClientEvent_1.MatrixClientEventType.INVITE, () => [this.isInvite, this.emitInvite.bind(this)]],\n [MatrixClientEvent_1.MatrixClientEventType.MESSAGE, () => [this.isMessage, this.emitMessage.bind(this)]]\n ]);\n }\n /**\n * This method is called every time the state is changed\n *\n * @param _oldState\n * @param _newState\n * @param stateChange\n */\n onStateChanged(_oldState, _newState, stateChange) {\n for (const event of (0, beacon_utils_1.keys)(MatrixClientEvent_1.MatrixClientEventType)) {\n this.emitIfEvent(MatrixClientEvent_1.MatrixClientEventType[event], stateChange);\n }\n }\n /**\n * Emit the message if we have listeners registered for that type\n *\n * @param eventType\n * @param object\n */\n emitIfEvent(eventType, object) {\n const provider = this.eventEmitProviders.get(eventType);\n if (provider) {\n const [predicate, emitter] = provider();\n if (predicate(object)) {\n emitter(eventType, object);\n }\n }\n }\n /**\n * Emit a client event\n *\n * @param eventType\n * @param content\n */\n emitClientEvent(eventType, content, timestamp) {\n this.emit(eventType, {\n type: eventType,\n content,\n timestamp\n });\n }\n /**\n * Check if event is an invite\n *\n * @param stateChange\n */\n isInvite(stateChange) {\n return stateChange.rooms\n ? stateChange.rooms.some((room) => room.status === MatrixRoom_1.MatrixRoomStatus.INVITED)\n : false;\n }\n /**\n * Emit an invite\n *\n * @param eventType\n * @param stateChange\n */\n emitInvite(eventType, stateChange) {\n stateChange.rooms\n .filter((room) => room.status === MatrixRoom_1.MatrixRoomStatus.INVITED)\n .map((room) => [room.id, room.members])\n .forEach(([id, members]) => {\n this.emitClientEvent(eventType, {\n roomId: id,\n members: members\n });\n });\n }\n /**\n * Check if event is a message\n *\n * @param stateChange\n */\n isMessage(stateChange) {\n return stateChange.rooms ? stateChange.rooms.some((room) => room.messages.length > 0) : false;\n }\n /**\n * Emit an event to all rooms\n *\n * @param eventType\n * @param stateChange\n */\n emitMessage(eventType, stateChange) {\n stateChange.rooms\n .filter((room) => room.messages.length > 0)\n .map((room) => room.messages.map((message) => [room.id, message, message.timestamp]))\n .reduce((flatten, toFlatten) => flatten.concat(toFlatten), [])\n .forEach(([roomId, message, timestamp]) => {\n this.emitClientEvent(eventType, {\n roomId,\n message\n }, timestamp);\n });\n }\n}\nexports.MatrixClientEventEmitter = MatrixClientEventEmitter;\n//# sourceMappingURL=MatrixClientEventEmitter.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-transport-matrix/dist/cjs/matrix-client/MatrixClientEventEmitter.js?')},"./packages/beacon-transport-matrix/dist/cjs/matrix-client/MatrixClientStore.js":function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MatrixClientStore = void 0;\nconst beacon_utils_1 = __webpack_require__(/*! @airgap/beacon-utils */ \"./packages/beacon-utils/dist/cjs/index.js\");\nconst MatrixRoom_1 = __webpack_require__(/*! ./models/MatrixRoom */ \"./packages/beacon-transport-matrix/dist/cjs/matrix-client/models/MatrixRoom.js\");\nconst beacon_types_1 = __webpack_require__(/*! @airgap/beacon-types */ \"./packages/beacon-types/dist/cjs/index.js\");\nconst PRESERVED_FIELDS = ['syncToken', 'rooms'];\n/**\n * The class managing the local state of matrix\n */\nclass MatrixClientStore {\n constructor(storage) {\n this.storage = storage;\n /**\n * The state of the matrix client\n */\n this.state = {\n isRunning: false,\n userId: undefined,\n deviceId: undefined,\n txnNo: 0,\n accessToken: undefined,\n syncToken: undefined,\n pollingTimeout: undefined,\n pollingRetries: 0,\n rooms: {}\n };\n /**\n * Listeners that will be called when the state changes\n */\n this.onStateChangedListeners = new Map();\n this.waitReadyPromise = new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {\n try {\n yield this.initFromStorage();\n resolve();\n }\n catch (error) {\n reject(error);\n }\n }));\n }\n /**\n * Get an item from the state\n *\n * @param key\n */\n get(key) {\n return this.state[key];\n }\n /**\n * Get the room from an ID or room instance\n *\n * @param roomOrId\n */\n getRoom(roomOrId) {\n const room = MatrixRoom_1.MatrixRoom.from(roomOrId, MatrixRoom_1.MatrixRoomStatus.UNKNOWN);\n return this.state.rooms[room.id] || room;\n }\n /**\n * Update the state with a partial state\n *\n * @param stateUpdate\n */\n update(stateUpdate) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.waitReady();\n const oldState = Object.assign({}, this.state);\n this.setState(stateUpdate);\n this.updateStorage(stateUpdate);\n this.notifyListeners(oldState, this.state, stateUpdate);\n });\n }\n /**\n * Register listeners that are called once the state has changed\n *\n * @param listener\n * @param subscribed\n */\n onStateChanged(listener, ...subscribed) {\n if (subscribed.length > 0) {\n subscribed.forEach((key) => {\n this.onStateChangedListeners.set(key, listener);\n });\n }\n else {\n this.onStateChangedListeners.set('all', listener);\n }\n }\n /**\n * A promise that resolves once the client is ready\n */\n waitReady() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.waitReadyPromise;\n });\n }\n /**\n * Read state from storage\n */\n initFromStorage() {\n return __awaiter(this, void 0, void 0, function* () {\n const preserved = yield this.storage.get(beacon_types_1.StorageKey.MATRIX_PRESERVED_STATE);\n this.setState(preserved);\n });\n }\n /**\n * Prepare data before persisting it in storage\n *\n * @param toStore\n */\n prepareData(toStore) {\n const requiresPreparation = ['rooms'];\n const toStoreCopy = requiresPreparation.some((key) => toStore[key] !== undefined)\n ? JSON.parse(JSON.stringify(toStore))\n : toStore;\n // there is no need for saving messages in a persistent storage\n Object.values(toStoreCopy.rooms || {}).forEach((room) => {\n room.messages = [];\n });\n return toStoreCopy;\n }\n /**\n * Persist state in storage\n *\n * @param stateUpdate\n */\n updateStorage(stateUpdate) {\n const updatedCachedFields = Object.entries(stateUpdate).filter(([key, value]) => PRESERVED_FIELDS.includes(key) && Boolean(value));\n if (updatedCachedFields.length > 0) {\n const filteredState = {};\n PRESERVED_FIELDS.forEach((key) => {\n filteredState[key] = this.state[key];\n });\n this.storage.set(beacon_types_1.StorageKey.MATRIX_PRESERVED_STATE, this.prepareData(filteredState));\n }\n }\n /**\n * Set the state\n *\n * @param partialState\n */\n setState(partialState) {\n this.state = {\n isRunning: partialState.isRunning || this.state.isRunning,\n userId: partialState.userId || this.state.userId,\n deviceId: partialState.deviceId || this.state.deviceId,\n txnNo: partialState.txnNo || this.state.txnNo,\n accessToken: partialState.accessToken || this.state.accessToken,\n syncToken: partialState.syncToken || this.state.syncToken,\n pollingTimeout: partialState.pollingTimeout || this.state.pollingTimeout,\n pollingRetries: partialState.pollingRetries || this.state.pollingRetries,\n rooms: this.mergeRooms(this.state.rooms, partialState.rooms)\n };\n }\n /**\n * Merge room records and eliminate duplicates\n *\n * @param oldRooms\n * @param _newRooms\n */\n mergeRooms(oldRooms, _newRooms) {\n if (!_newRooms) {\n return oldRooms;\n }\n const newRooms = Array.isArray(_newRooms) ? _newRooms : Object.values(_newRooms);\n const merged = Object.assign({}, oldRooms);\n newRooms.forEach((newRoom) => {\n merged[newRoom.id] = MatrixRoom_1.MatrixRoom.merge(newRoom, oldRooms[newRoom.id]);\n });\n return merged;\n }\n /**\n * Notify listeners of state changes\n *\n * @param oldState\n * @param newState\n * @param stateChange\n */\n notifyListeners(oldState, newState, stateChange) {\n const listenForAll = this.onStateChangedListeners.get('all');\n if (listenForAll) {\n listenForAll(oldState, newState, stateChange);\n }\n (0, beacon_utils_1.keys)(stateChange)\n .filter((key) => stateChange[key] !== undefined)\n .forEach((key) => {\n const listener = this.onStateChangedListeners.get(key);\n if (listener) {\n listener(oldState, newState, stateChange);\n }\n });\n }\n}\nexports.MatrixClientStore = MatrixClientStore;\n//# sourceMappingURL=MatrixClientStore.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-transport-matrix/dist/cjs/matrix-client/MatrixClientStore.js?")},"./packages/beacon-transport-matrix/dist/cjs/matrix-client/MatrixHttpClient.js":function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MatrixHttpClient = void 0;\nconst axios_1 = __webpack_require__(/*! axios */ \"./node_modules/axios/dist/browser/axios.cjs\");\nconst beacon_utils_1 = __webpack_require__(/*! @airgap/beacon-utils */ \"./packages/beacon-utils/dist/cjs/index.js\");\nconst beacon_core_1 = __webpack_require__(/*! @airgap/beacon-core */ \"./packages/beacon-core/dist/cjs/index.js\");\nconst logger = new beacon_core_1.Logger('MatrixHttpClient');\nconst CLIENT_API_R0 = '/_matrix/client/r0';\n/**\n * Handling the HTTP connection to the matrix synapse node\n */\nclass MatrixHttpClient {\n constructor(baseUrl) {\n this.baseUrl = baseUrl;\n this.cancelTokenSource = axios_1.default.CancelToken.source();\n }\n /**\n * Get data from the synapse node\n *\n * @param endpoint\n * @param options\n */\n get(endpoint, params, options) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.send('GET', endpoint, options, params);\n });\n }\n /**\n * Post data to the synapse node\n *\n * @param endpoint\n * @param body\n * @param options\n * @param params\n */\n post(endpoint, body, options, params) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.send('POST', endpoint, options, params, body);\n });\n }\n /**\n * Put data to the synapse node\n *\n * @param endpoint\n * @param body\n * @param options\n * @param params\n */\n put(endpoint, body, options, params) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.send('PUT', endpoint, options, params, body);\n });\n }\n cancelAllRequests() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.cancelTokenSource.cancel('Manually cancelled');\n });\n }\n /**\n * Send a request to the synapse node\n *\n * @param method\n * @param endpoint\n * @param config\n * @param requestParams\n * @param data\n */\n send(method, endpoint, config, requestParams, data) {\n return __awaiter(this, void 0, void 0, function* () {\n const headers = config ? this.getHeaders(config) : undefined;\n const params = requestParams ? this.getParams(requestParams) : undefined;\n let response;\n try {\n response = yield axios_1.default.request({\n method,\n url: endpoint,\n baseURL: this.apiUrl(CLIENT_API_R0),\n headers,\n data,\n params,\n cancelToken: this.cancelTokenSource.token\n });\n }\n catch (error) {\n const axiosError = error;\n logger.error('send', axiosError.code, axiosError.message, axiosError.response.data);\n throw error.response.data;\n }\n return response.data;\n });\n }\n /**\n * Get the headers based on the options object\n *\n * @param options\n */\n getHeaders(options) {\n const headers = {};\n const entries = [];\n if (options.accessToken) {\n entries.push(['Authorization', `Bearer ${options.accessToken}`]);\n }\n if (entries.length === 0) {\n return undefined;\n }\n for (const [key, value] of entries) {\n headers[key] = value;\n }\n return headers;\n }\n /**\n * Get parameters\n *\n * @param _params\n */\n getParams(_params) {\n if (!_params) {\n return undefined;\n }\n const params = Object.assign(_params, {});\n (0, beacon_utils_1.keys)(params).forEach((key) => params[key] === undefined && delete params[key]);\n return params;\n }\n /**\n * Construct API URL\n */\n apiUrl(...parts) {\n const apiBase = this.baseUrl.endsWith('/')\n ? this.baseUrl.substr(0, this.baseUrl.length - 1)\n : this.baseUrl;\n const apiParts = parts.map((path) => (path.startsWith('/') ? path.substr(1) : path));\n return [apiBase, ...apiParts].join('/');\n }\n}\nexports.MatrixHttpClient = MatrixHttpClient;\n//# sourceMappingURL=MatrixHttpClient.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-transport-matrix/dist/cjs/matrix-client/MatrixHttpClient.js?")},"./packages/beacon-transport-matrix/dist/cjs/matrix-client/models/MatrixClientEvent.js":(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.MatrixClientEventType = void 0;\nvar MatrixClientEventType;\n(function (MatrixClientEventType) {\n MatrixClientEventType["INVITE"] = "invite";\n MatrixClientEventType["MESSAGE"] = "message";\n})(MatrixClientEventType || (exports.MatrixClientEventType = MatrixClientEventType = {}));\n//# sourceMappingURL=MatrixClientEvent.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-transport-matrix/dist/cjs/matrix-client/models/MatrixClientEvent.js?')},"./packages/beacon-transport-matrix/dist/cjs/matrix-client/models/MatrixMessage.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.MatrixMessage = exports.MatrixMessageType = void 0;\nconst events_1 = __webpack_require__(/*! ../utils/events */ "./packages/beacon-transport-matrix/dist/cjs/matrix-client/utils/events.js");\nvar MatrixMessageType;\n(function (MatrixMessageType) {\n MatrixMessageType["TEXT"] = "m.text";\n})(MatrixMessageType || (exports.MatrixMessageType = MatrixMessageType = {}));\nclass MatrixMessage {\n /**\n * Construct a message from a message event\n *\n * @param event\n */\n static from(event) {\n if ((0, events_1.isTextMessageEvent)(event)) {\n return new MatrixMessage(event.content.msgtype, event.sender, event.content.body, event.origin_server_ts);\n }\n // for now only text messages are supported\n return undefined;\n }\n constructor(type, sender, content, timestamp) {\n this.type = type;\n this.sender = sender;\n this.content = content;\n this.timestamp = timestamp;\n }\n}\nexports.MatrixMessage = MatrixMessage;\n//# sourceMappingURL=MatrixMessage.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-transport-matrix/dist/cjs/matrix-client/models/MatrixMessage.js?')},"./packages/beacon-transport-matrix/dist/cjs/matrix-client/models/MatrixRoom.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.MatrixRoom = exports.MatrixRoomStatus = void 0;\nconst events_1 = __webpack_require__(/*! ../utils/events */ "./packages/beacon-transport-matrix/dist/cjs/matrix-client/utils/events.js");\nconst MatrixMessage_1 = __webpack_require__(/*! ./MatrixMessage */ "./packages/beacon-transport-matrix/dist/cjs/matrix-client/models/MatrixMessage.js");\nvar MatrixRoomStatus;\n(function (MatrixRoomStatus) {\n MatrixRoomStatus[MatrixRoomStatus["UNKNOWN"] = 0] = "UNKNOWN";\n MatrixRoomStatus[MatrixRoomStatus["JOINED"] = 1] = "JOINED";\n MatrixRoomStatus[MatrixRoomStatus["INVITED"] = 2] = "INVITED";\n MatrixRoomStatus[MatrixRoomStatus["LEFT"] = 3] = "LEFT";\n})(MatrixRoomStatus || (exports.MatrixRoomStatus = MatrixRoomStatus = {}));\nclass MatrixRoom {\n /**\n * Reconstruct rooms from a sync response\n *\n * @param roomSync\n */\n static fromSync(roomSync) {\n var _a, _b, _c;\n if (!roomSync) {\n return [];\n }\n function create(rooms, creator) {\n return Object.entries(rooms).map(([id, room]) => creator(id, room));\n }\n return [\n ...create((_a = roomSync.join) !== null && _a !== void 0 ? _a : {}, MatrixRoom.fromJoined),\n ...create((_b = roomSync.invite) !== null && _b !== void 0 ? _b : {}, MatrixRoom.fromInvited),\n ...create((_c = roomSync.leave) !== null && _c !== void 0 ? _c : {}, MatrixRoom.fromLeft)\n ];\n }\n /**\n * Reconstruct a room from an ID or object\n *\n * @param roomOrId\n * @param status\n */\n static from(roomOrId, status) {\n return typeof roomOrId === \'string\'\n ? new MatrixRoom(roomOrId, status || MatrixRoomStatus.UNKNOWN)\n : status !== undefined\n ? new MatrixRoom(roomOrId.id, status, roomOrId.members, roomOrId.messages)\n : roomOrId;\n }\n /**\n * Merge new and old state and remove duplicates\n *\n * @param newState\n * @param previousState\n */\n static merge(newState, previousState) {\n if (!previousState || previousState.id !== newState.id) {\n return MatrixRoom.from(newState);\n }\n return new MatrixRoom(newState.id, newState.status, [...previousState.members, ...newState.members].filter((member, index, array) => array.indexOf(member) === index), [...previousState.messages, ...newState.messages]);\n }\n /**\n * Create a room from a join\n *\n * @param id\n * @param joined\n */\n static fromJoined(id, joined) {\n const events = [...joined.state.events, ...joined.timeline.events];\n const members = MatrixRoom.getMembersFromEvents(events);\n const messages = MatrixRoom.getMessagesFromEvents(events);\n return new MatrixRoom(id, MatrixRoomStatus.JOINED, members, messages);\n }\n /**\n * Create a room from an invite\n *\n * @param id\n * @param invited\n */\n static fromInvited(id, invited) {\n const members = MatrixRoom.getMembersFromEvents(invited.invite_state.events);\n return new MatrixRoom(id, MatrixRoomStatus.INVITED, members);\n }\n /**\n * Create a room from a leave\n *\n * @param id\n * @param left\n */\n static fromLeft(id, left) {\n const events = [...left.state.events, ...left.timeline.events];\n const members = MatrixRoom.getMembersFromEvents(events);\n const messages = MatrixRoom.getMessagesFromEvents(events);\n return new MatrixRoom(id, MatrixRoomStatus.LEFT, members, messages);\n }\n /**\n * Extract members from an event\n *\n * @param events\n */\n static getMembersFromEvents(events) {\n return MatrixRoom.getUniqueEvents(events.filter((event) => (0, events_1.isCreateEvent)(event) || (0, events_1.isJoinEvent)(event)))\n .map((event) => event.sender)\n .filter((member, index, array) => array.indexOf(member) === index);\n }\n /**\n * Extract messages from an event\n *\n * @param events\n */\n static getMessagesFromEvents(events) {\n return MatrixRoom.getUniqueEvents(events.filter(events_1.isMessageEvent))\n .map((event) => MatrixMessage_1.MatrixMessage.from(event))\n .filter(Boolean);\n }\n /**\n * Get unique events and remove duplicates\n *\n * @param events\n */\n static getUniqueEvents(events) {\n const eventIds = {};\n const uniqueEvents = [];\n events.forEach((event, index) => {\n const eventId = event.event_id;\n if (eventId === undefined || !(eventId in eventIds)) {\n if (eventId !== undefined) {\n eventIds[eventId] = index;\n }\n uniqueEvents.push(event);\n }\n });\n return uniqueEvents;\n }\n constructor(id, status = MatrixRoomStatus.UNKNOWN, members = [], messages = []) {\n this.id = id;\n this.status = status;\n this.members = members;\n this.messages = messages;\n }\n}\nexports.MatrixRoom = MatrixRoom;\n//# sourceMappingURL=MatrixRoom.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-transport-matrix/dist/cjs/matrix-client/models/MatrixRoom.js?')},"./packages/beacon-transport-matrix/dist/cjs/matrix-client/services/MatrixEventService.js":function(__unused_webpack_module,exports){"use strict";eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MatrixEventService = void 0;\n/**\n * A service to help with matrix event management\n */\nclass MatrixEventService {\n constructor(httpClient) {\n this.httpClient = httpClient;\n this.cachedPromises = new Map();\n }\n /**\n * Get the latest state from the matrix node\n *\n * @param accessToken\n * @param options\n */\n sync(accessToken, options) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.withCache('sync', () => this.httpClient.get('/sync', {\n timeout: options ? options.pollingTimeout : undefined,\n since: options ? options.syncToken : undefined\n }, { accessToken }));\n });\n }\n /**\n * Send a message to a room\n *\n * @param accessToken\n * @param room\n * @param content\n * @param txnId\n */\n sendMessage(accessToken, roomId, content, txnId) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve, reject) => this.scheduleEvent({\n accessToken,\n roomId,\n type: 'm.room.message',\n content,\n txnId,\n onSuccess: resolve,\n onError: reject\n }));\n });\n }\n /**\n * Schedules an event to be sent to the node\n *\n * @param event\n */\n scheduleEvent(event) {\n // TODO: actual scheduling\n this.sendEvent(event);\n }\n /**\n * Send an event to the matrix node\n *\n * @param scheduledEvent\n */\n sendEvent(scheduledEvent) {\n return __awaiter(this, void 0, void 0, function* () {\n const { roomId, type, txnId, content, accessToken } = scheduledEvent;\n try {\n const response = yield this.httpClient.put(`/rooms/${encodeURIComponent(roomId)}/send/${type}/${encodeURIComponent(txnId)}`, content, { accessToken });\n scheduledEvent.onSuccess(response);\n }\n catch (error) {\n scheduledEvent.onError(error);\n }\n });\n }\n /**\n * Check the cache when interacting with the Matrix node, if there is an already ongoing call for the specified key, return its promise instead of duplicating the call.\n *\n * @param key\n * @param promiseProvider\n */\n withCache(key, promiseProvider) {\n let promise = this.cachedPromises.get(key);\n if (!promise) {\n promise = promiseProvider().finally(() => {\n this.cachedPromises.delete(key);\n });\n this.cachedPromises.set(key, promise);\n }\n return promise;\n }\n}\nexports.MatrixEventService = MatrixEventService;\n//# sourceMappingURL=MatrixEventService.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-transport-matrix/dist/cjs/matrix-client/services/MatrixEventService.js?")},"./packages/beacon-transport-matrix/dist/cjs/matrix-client/services/MatrixRoomService.js":function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval('\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.MatrixRoomService = void 0;\nconst MatrixRoom_1 = __webpack_require__(/*! ../models/MatrixRoom */ "./packages/beacon-transport-matrix/dist/cjs/matrix-client/models/MatrixRoom.js");\n/**\n * A service to help with matrix room management\n */\nclass MatrixRoomService {\n constructor(httpClient) {\n this.httpClient = httpClient;\n }\n /**\n * Create a room\n *\n * @param accessToken\n * @param config\n */\n createRoom(accessToken, config = {}) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.httpClient.post(\'/createRoom\', config, { accessToken });\n });\n }\n /**\n * Invite a user to a room\n *\n * @param accessToken\n * @param user\n * @param room\n */\n inviteToRoom(accessToken, user, room) {\n return __awaiter(this, void 0, void 0, function* () {\n if (room.status !== MatrixRoom_1.MatrixRoomStatus.JOINED && room.status !== MatrixRoom_1.MatrixRoomStatus.UNKNOWN) {\n return Promise.reject(`User is not a member of room ${room.id}.`);\n }\n return this.httpClient.post(`/rooms/${encodeURIComponent(room.id)}/invite`, { user_id: user }, { accessToken });\n });\n }\n /**\n * Join a specific room\n *\n * @param accessToken\n * @param room\n */\n joinRoom(accessToken, room) {\n return __awaiter(this, void 0, void 0, function* () {\n if (room.status === MatrixRoom_1.MatrixRoomStatus.JOINED) {\n return Promise.resolve({ room_id: room.id });\n }\n return this.httpClient.post(`/rooms/${encodeURIComponent(room.id)}/join`, {}, { accessToken });\n });\n }\n /**\n * Get all joined rooms\n *\n * @param accessToken\n */\n getJoinedRooms(accessToken) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.httpClient.get(`/joined_rooms`, undefined, { accessToken });\n });\n }\n}\nexports.MatrixRoomService = MatrixRoomService;\n//# sourceMappingURL=MatrixRoomService.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-transport-matrix/dist/cjs/matrix-client/services/MatrixRoomService.js?')},"./packages/beacon-transport-matrix/dist/cjs/matrix-client/services/MatrixUserService.js":function(__unused_webpack_module,exports){"use strict";eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.MatrixUserService = void 0;\nclass MatrixUserService {\n constructor(httpClient) {\n this.httpClient = httpClient;\n }\n /**\n * Log in to the matrix node with username and password\n *\n * @param user\n * @param password\n * @param deviceId\n */\n login(user, password, deviceId) {\n return __awaiter(this, void 0, void 0, function* () {\n return this.httpClient.post('/login', {\n type: 'm.login.password',\n identifier: {\n type: 'm.id.user',\n user\n },\n password,\n device_id: deviceId\n });\n });\n }\n}\nexports.MatrixUserService = MatrixUserService;\n//# sourceMappingURL=MatrixUserService.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-transport-matrix/dist/cjs/matrix-client/services/MatrixUserService.js?")},"./packages/beacon-transport-matrix/dist/cjs/matrix-client/utils/events.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.isTextMessageEvent = exports.isMessageEvent = exports.isJoinEvent = exports.isCreateEvent = void 0;\nconst MatrixMessage_1 = __webpack_require__(/*! ../models/MatrixMessage */ \"./packages/beacon-transport-matrix/dist/cjs/matrix-client/models/MatrixMessage.js\");\n/**\n * Check if an event is a create event\n *\n * @param event MatrixStateEvent\n */\nconst isCreateEvent = (event) => event.type === 'm.room.create' && event.content instanceof Object && 'creator' in event.content;\nexports.isCreateEvent = isCreateEvent;\n/**\n * Check if an event is a join event\n *\n * @param event MatrixStateEvent\n */\nconst isJoinEvent = (event) => event.type === 'm.room.member' &&\n event.content instanceof Object &&\n 'membership' in event.content &&\n // eslint-disable-next-line dot-notation\n event.content['membership'] === 'join';\nexports.isJoinEvent = isJoinEvent;\n/**\n * Check if an event is a message event\n *\n * @param event MatrixStateEvent\n */\nconst isMessageEvent = (event) => event.type === 'm.room.message';\nexports.isMessageEvent = isMessageEvent;\n/**\n * Check if an event is a text message event\n *\n * @param event MatrixStateEvent\n */\nconst isTextMessageEvent = (event) => (0, exports.isMessageEvent)(event) &&\n event.content instanceof Object &&\n 'msgtype' in event.content &&\n // eslint-disable-next-line dot-notation\n event.content['msgtype'] === MatrixMessage_1.MatrixMessageType.TEXT;\nexports.isTextMessageEvent = isTextMessageEvent;\n//# sourceMappingURL=events.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-transport-matrix/dist/cjs/matrix-client/utils/events.js?")},"./packages/beacon-transport-postmessage/dist/cjs/PostMessageClient.js":function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval("/* provided dependency */ var Buffer = __webpack_require__(/*! buffer */ \"./node_modules/buffer/index.js\")[\"Buffer\"];\n\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.PostMessageClient = void 0;\nconst beacon_core_1 = __webpack_require__(/*! @airgap/beacon-core */ \"./packages/beacon-core/dist/cjs/index.js\");\nconst beacon_utils_1 = __webpack_require__(/*! @airgap/beacon-utils */ \"./packages/beacon-utils/dist/cjs/index.js\");\nconst beacon_types_1 = __webpack_require__(/*! @airgap/beacon-types */ \"./packages/beacon-types/dist/cjs/index.js\");\n/**\n * @internalapi\n *\n *\n */\nclass PostMessageClient extends beacon_core_1.MessageBasedClient {\n constructor() {\n super(...arguments);\n this.activeListeners = new Map();\n }\n init() {\n return __awaiter(this, void 0, void 0, function* () {\n this.subscribeToMessages().catch(console.error);\n });\n }\n listenForEncryptedMessage(senderPublicKey, messageCallback) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.activeListeners.has(senderPublicKey)) {\n return;\n }\n const callbackFunction = (message, context) => __awaiter(this, void 0, void 0, function* () {\n try {\n const decryptedMessage = yield this.decryptMessage(senderPublicKey, message.encryptedPayload);\n // console.log('calculated sender ID', await getSenderId(senderPublicKey))\n // TODO: Add check for correct decryption key / sender ID\n messageCallback(decryptedMessage, context);\n }\n catch (decryptionError) {\n /* NO-OP. We try to decode every message, but some might not be addressed to us. */\n }\n });\n this.activeListeners.set(senderPublicKey, callbackFunction);\n });\n }\n sendMessage(message, peer) {\n return __awaiter(this, void 0, void 0, function* () {\n const payload = yield this.encryptMessage(peer.publicKey, message);\n const targetId = peer === null || peer === void 0 ? void 0 : peer.extensionId;\n // if no targetId, we remove peer\n const msg = {\n target: beacon_types_1.ExtensionMessageTarget.EXTENSION,\n encryptedPayload: payload,\n targetId\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n beacon_core_1.windowRef.postMessage(msg, beacon_core_1.windowRef.location.origin);\n });\n }\n listenForChannelOpening(messageCallback) {\n return __awaiter(this, void 0, void 0, function* () {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const fn = (event) => __awaiter(this, void 0, void 0, function* () {\n var _a, _b;\n if (event.source !== beacon_core_1.windowRef || event.origin !== beacon_core_1.windowRef.location.origin) {\n // TODO: Add to error handler: console.debug('[Beacon]: Event received from untrusted origin')\n return;\n }\n const data = (_a = event === null || event === void 0 ? void 0 : event.data) === null || _a === void 0 ? void 0 : _a.message;\n if (data &&\n data.target === beacon_types_1.ExtensionMessageTarget.PAGE &&\n (yield this.isChannelOpenMessage(data))) {\n const payload = Buffer.from(data.payload, 'hex');\n if (payload.length >= beacon_utils_1.secretbox_NONCEBYTES + beacon_utils_1.secretbox_MACBYTES) {\n try {\n const pairingResponse = JSON.parse(yield (0, beacon_utils_1.openCryptobox)(payload, this.keyPair.publicKey, this.keyPair.secretKey));\n messageCallback(new beacon_types_1.ExtendedPostMessagePairingResponse(pairingResponse.id, pairingResponse.name, pairingResponse.publicKey, pairingResponse.version, yield (0, beacon_core_1.getSenderId)(pairingResponse.publicKey), (_b = event === null || event === void 0 ? void 0 : event.data) === null || _b === void 0 ? void 0 : _b.sender.id));\n }\n catch (decryptionError) {\n /* NO-OP. We try to decode every message, but some might not be addressed to us. */\n }\n }\n }\n });\n beacon_core_1.windowRef.addEventListener('message', fn);\n });\n }\n sendPairingRequest(id) {\n return __awaiter(this, void 0, void 0, function* () {\n const message = {\n target: beacon_types_1.ExtensionMessageTarget.EXTENSION,\n payload: yield new beacon_core_1.Serializer().serialize(yield this.getPairingRequestInfo()),\n targetId: id\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n beacon_core_1.windowRef.postMessage(message, beacon_core_1.windowRef.location.origin);\n });\n }\n isChannelOpenMessage(message) {\n return __awaiter(this, void 0, void 0, function* () {\n return typeof message === 'object' && message.hasOwnProperty('payload');\n });\n }\n subscribeToMessages() {\n return __awaiter(this, void 0, void 0, function* () {\n beacon_core_1.windowRef.addEventListener('message', (message) => {\n if (message.source !== beacon_core_1.windowRef ||\n message.origin !== beacon_core_1.windowRef.location.origin) {\n // TODO: Add to error handler: console.debug('[Beacon]: Event received from untrusted origin')\n return;\n }\n if (typeof message === 'object' && message) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const data = message.data;\n if (data.message && data.message.target === beacon_types_1.ExtensionMessageTarget.PAGE) {\n this.activeListeners.forEach((listener) => {\n listener(data.message, {\n origin: beacon_types_1.Origin.EXTENSION,\n id: data.sender.id || ''\n });\n });\n }\n }\n });\n });\n }\n}\nexports.PostMessageClient = PostMessageClient;\n//# sourceMappingURL=PostMessageClient.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-transport-postmessage/dist/cjs/PostMessageClient.js?")},"./packages/beacon-transport-postmessage/dist/cjs/PostMessageTransport.js":function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.PostMessageTransport = void 0;\nconst beacon_types_1 = __webpack_require__(/*! @airgap/beacon-types */ \"./packages/beacon-types/dist/cjs/index.js\");\nconst beacon_core_1 = __webpack_require__(/*! @airgap/beacon-core */ \"./packages/beacon-core/dist/cjs/index.js\");\nconst PostMessageClient_1 = __webpack_require__(/*! ./PostMessageClient */ \"./packages/beacon-transport-postmessage/dist/cjs/PostMessageClient.js\");\nconst logger = new beacon_core_1.Logger('PostMessageTransport');\nlet listeningForExtensions = false;\nlet extensionsPromise;\nlet extensions;\nconst addExtension = (extension) => {\n if (!extensions) {\n extensions = [];\n }\n if (!extensions.some((ext) => ext.id === extension.id)) {\n extensions.push(extension);\n beacon_core_1.windowRef.postMessage('extensionsUpdated', beacon_core_1.windowRef.location.origin);\n }\n};\n/**\n * @internalapi\n *\n *\n */\nclass PostMessageTransport extends beacon_core_1.Transport {\n constructor(name, keyPair, storage, storageKey) {\n super(name, new PostMessageClient_1.PostMessageClient(name, keyPair), new beacon_core_1.PeerManager(storage, storageKey));\n this.type = beacon_types_1.TransportType.POST_MESSAGE;\n }\n static isAvailable() {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve) => {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const fn = (event) => {\n const data = event.data;\n if (data && data.payload === 'pong') {\n resolve(true);\n beacon_core_1.windowRef.removeEventListener('message', fn);\n }\n };\n beacon_core_1.windowRef.addEventListener('message', fn);\n const message = {\n target: beacon_types_1.ExtensionMessageTarget.EXTENSION,\n payload: 'ping'\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n beacon_core_1.windowRef.postMessage(message, beacon_core_1.windowRef.location.origin);\n });\n });\n }\n static getAvailableExtensions() {\n return __awaiter(this, void 0, void 0, function* () {\n if (extensionsPromise) {\n return extensionsPromise;\n }\n if (extensions) {\n return extensions;\n }\n extensions = [];\n extensionsPromise = new Promise((resolve) => {\n PostMessageTransport.listenForExtensions();\n setTimeout(() => {\n resolve(extensions !== null && extensions !== void 0 ? extensions : []);\n }, 1000);\n }).finally(() => {\n extensionsPromise = undefined;\n });\n return extensionsPromise;\n });\n }\n static listenForExtensions() {\n if (listeningForExtensions) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const fn = (event) => {\n if (event.source !== beacon_core_1.windowRef || event.origin !== beacon_core_1.windowRef.location.origin) {\n // TODO: Add to error handler: console.debug('[Beacon]: Event received from untrusted origin')\n return;\n }\n const data = event.data;\n const sender = data.sender;\n if (data && data.payload === 'pong' && sender) {\n logger.log('getAvailableExtensions', `extension \"${sender.name}\" is available`, sender);\n addExtension(sender);\n }\n };\n beacon_core_1.windowRef.addEventListener('message', fn);\n const message = {\n target: beacon_types_1.ExtensionMessageTarget.EXTENSION,\n payload: 'ping'\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n beacon_core_1.windowRef.postMessage(message, beacon_core_1.windowRef.location.origin);\n listeningForExtensions = true;\n }\n connect() {\n const _super = Object.create(null, {\n connect: { get: () => super.connect }\n });\n return __awaiter(this, void 0, void 0, function* () {\n logger.log('connect');\n if (this._isConnected !== beacon_types_1.TransportStatus.NOT_CONNECTED) {\n return;\n }\n this._isConnected = beacon_types_1.TransportStatus.CONNECTING;\n const knownPeers = yield this.getPeers();\n if (knownPeers.length > 0) {\n logger.log('connect', `connecting to ${knownPeers.length} peers`);\n const connectionPromises = knownPeers.map((peer) => __awaiter(this, void 0, void 0, function* () { return this.listen(peer.publicKey); }));\n Promise.all(connectionPromises).catch((error) => logger.error('connect', error));\n }\n yield this.startOpenChannelListener();\n yield _super.connect.call(this);\n });\n }\n startOpenChannelListener() {\n return __awaiter(this, void 0, void 0, function* () {\n //\n });\n }\n getPairingRequestInfo() {\n return __awaiter(this, void 0, void 0, function* () {\n return this.client.getPairingRequestInfo();\n });\n }\n listen(publicKey) {\n return __awaiter(this, void 0, void 0, function* () {\n logger.log('listen', publicKey);\n yield this.client\n .listenForEncryptedMessage(publicKey, (message, context) => {\n const connectionContext = {\n origin: beacon_types_1.Origin.EXTENSION,\n id: context.id\n };\n this.notifyListeners(message, connectionContext).catch((error) => {\n throw error;\n });\n })\n .catch((error) => {\n throw error;\n });\n });\n }\n}\nexports.PostMessageTransport = PostMessageTransport;\n// Start loading wallets async so they will be ready when the modal is opened\nPostMessageTransport.getAvailableExtensions();\n//# sourceMappingURL=PostMessageTransport.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-transport-postmessage/dist/cjs/PostMessageTransport.js?")},"./packages/beacon-transport-postmessage/dist/cjs/index.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.PostMessageTransport = void 0;\nvar PostMessageTransport_1 = __webpack_require__(/*! ./PostMessageTransport */ "./packages/beacon-transport-postmessage/dist/cjs/PostMessageTransport.js");\nObject.defineProperty(exports, "PostMessageTransport", ({ enumerable: true, get: function () { return PostMessageTransport_1.PostMessageTransport; } }));\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-transport-postmessage/dist/cjs/index.js?')},"./packages/beacon-transport-walletconnect/dist/cjs/WalletConnectTransport.js":function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval('\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.WalletConnectTransport = void 0;\nconst WalletConnectCommunicationClient_1 = __webpack_require__(/*! ./communication-client/WalletConnectCommunicationClient */ "./packages/beacon-transport-walletconnect/dist/cjs/communication-client/WalletConnectCommunicationClient.js");\nconst beacon_types_1 = __webpack_require__(/*! @airgap/beacon-types */ "./packages/beacon-types/dist/cjs/index.js");\nconst beacon_core_1 = __webpack_require__(/*! @airgap/beacon-core */ "./packages/beacon-core/dist/cjs/index.js");\n/**\n * @internalapi\n *\n *\n */\nclass WalletConnectTransport extends beacon_core_1.Transport {\n // public readonly type: TransportType = TransportType.WALLETCONNECT\n constructor(name, _keyPair, storage, storageKey, wcOptions) {\n super(name, WalletConnectCommunicationClient_1.WalletConnectCommunicationClient.getInstance(wcOptions), new beacon_core_1.PeerManager(storage, storageKey));\n this.wcOptions = wcOptions;\n }\n static isAvailable() {\n return __awaiter(this, void 0, void 0, function* () {\n return Promise.resolve(true);\n });\n }\n connect() {\n const _super = Object.create(null, {\n connect: { get: () => super.connect }\n });\n return __awaiter(this, void 0, void 0, function* () {\n if (this._isConnected !== beacon_types_1.TransportStatus.NOT_CONNECTED) {\n return;\n }\n this._isConnected = beacon_types_1.TransportStatus.CONNECTING;\n yield this.client.init();\n const knownPeers = yield this.getPeers();\n if (knownPeers.length > 0) {\n knownPeers.map((peer) => __awaiter(this, void 0, void 0, function* () { return this.listen(peer.publicKey); }));\n }\n yield this.startOpenChannelListener();\n return _super.connect.call(this);\n });\n }\n hasPairings() {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function* () {\n return (yield this.client.storage.hasPairings())\n ? true\n : !!((_b = (_a = this.client.signClient) === null || _a === void 0 ? void 0 : _a.pairing.getAll()) === null || _b === void 0 ? void 0 : _b.length);\n });\n }\n hasSessions() {\n var _a, _b;\n return __awaiter(this, void 0, void 0, function* () {\n return (yield this.client.storage.hasSessions())\n ? true\n : !!((_b = (_a = this.client.signClient) === null || _a === void 0 ? void 0 : _a.session.getAll()) === null || _b === void 0 ? void 0 : _b.length);\n });\n }\n closeActiveSession(account) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!(yield this.hasPairings()) || !(yield this.hasPairings())) {\n yield this.disconnect();\n }\n else {\n yield this.client.closeActiveSession(account.address);\n }\n });\n }\n getPeers() {\n return __awaiter(this, void 0, void 0, function* () {\n const client = WalletConnectCommunicationClient_1.WalletConnectCommunicationClient.getInstance(this.wcOptions);\n const session = client.currentSession();\n if (!session) {\n return [];\n }\n return [\n {\n senderId: session.peer.publicKey,\n extensionId: session.peer.metadata.name,\n id: session.peer.publicKey,\n type: \'walletconnect-pairing-response\',\n name: \'peer\',\n publicKey: session.peer.publicKey,\n version: \'first\'\n }\n ];\n });\n }\n disconnect() {\n const _super = Object.create(null, {\n disconnect: { get: () => super.disconnect }\n });\n return __awaiter(this, void 0, void 0, function* () {\n yield this.client.close();\n return _super.disconnect.call(this);\n });\n }\n startOpenChannelListener() {\n return __awaiter(this, void 0, void 0, function* () {\n //\n });\n }\n getPairingRequestInfo() {\n return this.client.getPairingRequestInfo();\n }\n listen(publicKey) {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.client\n .listenForEncryptedMessage(publicKey, (message) => {\n const connectionContext = {\n origin: beacon_types_1.Origin.WALLETCONNECT,\n id: publicKey\n };\n this.notifyListeners(message, connectionContext).catch((error) => {\n throw error;\n });\n })\n .catch((error) => {\n throw error;\n });\n });\n }\n}\nexports.WalletConnectTransport = WalletConnectTransport;\n//# sourceMappingURL=WalletConnectTransport.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-transport-walletconnect/dist/cjs/WalletConnectTransport.js?')},"./packages/beacon-transport-walletconnect/dist/cjs/communication-client/WalletConnectCommunicationClient.js":function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval("\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.WalletConnectCommunicationClient = exports.PermissionScopeEvents = exports.PermissionScopeMethods = void 0;\nconst beacon_core_1 = __webpack_require__(/*! @airgap/beacon-core */ \"./packages/beacon-core/dist/cjs/index.js\");\nconst sign_client_1 = __webpack_require__(/*! @walletconnect/sign-client */ \"./node_modules/@walletconnect/sign-client/dist/index.es.js\");\nconst utils_1 = __webpack_require__(/*! @walletconnect/utils */ \"./node_modules/@walletconnect/utils/dist/index.es.js\");\nconst error_1 = __webpack_require__(/*! ../error */ \"./packages/beacon-transport-walletconnect/dist/cjs/error.js\");\nconst beacon_types_1 = __webpack_require__(/*! @airgap/beacon-types */ \"./packages/beacon-types/dist/cjs/index.js\");\nconst beacon_utils_1 = __webpack_require__(/*! @airgap/beacon-utils */ \"./packages/beacon-utils/dist/cjs/index.js\");\nconst TEZOS_PLACEHOLDER = 'tezos';\nconst logger = new beacon_core_1.Logger('WalletConnectCommunicationClient');\nvar PermissionScopeMethods;\n(function (PermissionScopeMethods) {\n PermissionScopeMethods[\"GET_ACCOUNTS\"] = \"tezos_getAccounts\";\n PermissionScopeMethods[\"OPERATION_REQUEST\"] = \"tezos_send\";\n PermissionScopeMethods[\"SIGN\"] = \"tezos_sign\";\n})(PermissionScopeMethods || (exports.PermissionScopeMethods = PermissionScopeMethods = {}));\nvar PermissionScopeEvents;\n(function (PermissionScopeEvents) {\n PermissionScopeEvents[\"CHAIN_CHANGED\"] = \"chainChanged\";\n PermissionScopeEvents[\"ACCOUNTS_CHANGED\"] = \"accountsChanged\";\n PermissionScopeEvents[\"REQUEST_ACKNOWLEDGED\"] = \"requestAcknowledged\";\n})(PermissionScopeEvents || (exports.PermissionScopeEvents = PermissionScopeEvents = {}));\nclass WalletConnectCommunicationClient extends beacon_core_1.CommunicationClient {\n constructor(wcOptions) {\n super();\n this.wcOptions = wcOptions;\n this.activeListeners = new Map();\n this.channelOpeningListeners = new Map();\n this.storage = new beacon_core_1.WCStorage();\n /**\n * this queue stores each active message id\n * [0] newest message\n * [length - 1] oldest message\n */\n this.messageIds = [];\n this.getSignClient();\n }\n static getInstance(wcOptions) {\n if (!WalletConnectCommunicationClient.instance) {\n WalletConnectCommunicationClient.instance = new WalletConnectCommunicationClient(wcOptions);\n }\n return WalletConnectCommunicationClient.instance;\n }\n listenForEncryptedMessage(senderPublicKey, messageCallback) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.activeListeners.has(senderPublicKey)) {\n return;\n }\n const callbackFunction = (message) => __awaiter(this, void 0, void 0, function* () {\n messageCallback(message);\n });\n this.activeListeners.set(senderPublicKey, callbackFunction);\n });\n }\n listenForChannelOpening(messageCallback) {\n return __awaiter(this, void 0, void 0, function* () {\n const callbackFunction = (pairingResponse) => __awaiter(this, void 0, void 0, function* () {\n messageCallback(pairingResponse);\n });\n this.channelOpeningListeners.set('channelOpening', callbackFunction);\n });\n }\n unsubscribeFromEncryptedMessages() {\n return __awaiter(this, void 0, void 0, function* () {\n // implementation\n });\n }\n unsubscribeFromEncryptedMessage(_senderPublicKey) {\n return __awaiter(this, void 0, void 0, function* () {\n // implementation\n });\n }\n checkWalletReadiness(topic) {\n var _a;\n (_a = this.signClient) === null || _a === void 0 ? void 0 : _a.core.pairing.ping({ topic }).then(() => {\n if (this.messageIds.length) {\n this.acknowledgeRequest(this.messageIds[0]);\n }\n else {\n const fun = this.eventHandlers.get(\"WC_ACK_NOTIFICATION\" /* ClientEvents.WC_ACK_NOTIFICATION */);\n fun && fun('pending');\n }\n }).catch((error) => logger.error(error.message));\n }\n sendMessage(_message, _peer) {\n return __awaiter(this, void 0, void 0, function* () {\n const serializer = new beacon_core_1.Serializer();\n const message = (yield serializer.deserialize(_message));\n if (!message) {\n return;\n }\n this.messageIds.unshift(message.id);\n switch (message.type) {\n case beacon_types_1.BeaconMessageType.PermissionRequest:\n this.requestPermissions(message);\n break;\n case beacon_types_1.BeaconMessageType.OperationRequest:\n this.sendOperations(message);\n break;\n case beacon_types_1.BeaconMessageType.SignPayloadRequest:\n this.signPayload(message);\n break;\n default:\n return;\n }\n });\n }\n fetchAccounts(topic, chainId) {\n return __awaiter(this, void 0, void 0, function* () {\n const signClient = yield this.getSignClient();\n return signClient.request({\n topic: topic,\n chainId: chainId,\n request: {\n method: PermissionScopeMethods.GET_ACCOUNTS,\n params: {}\n }\n });\n });\n }\n notifyListenersWithPermissionResponse(session, network) {\n var _a, _b, _c, _d, _e, _f;\n return __awaiter(this, void 0, void 0, function* () {\n let publicKey;\n if (((_a = session.sessionProperties) === null || _a === void 0 ? void 0 : _a.pubkey) &&\n ((_b = session.sessionProperties) === null || _b === void 0 ? void 0 : _b.algo) &&\n ((_c = session.sessionProperties) === null || _c === void 0 ? void 0 : _c.address)) {\n publicKey = (_d = session.sessionProperties) === null || _d === void 0 ? void 0 : _d.pubkey;\n logger.log('[requestPermissions]: Have pubkey in sessionProperties, skipping \"get_accounts\" call', session.sessionProperties);\n }\n else {\n const accounts = this.getTezosNamespace(session.namespaces).accounts;\n const addressOrPbk = accounts[0].split(':', 3)[2];\n if (addressOrPbk.startsWith('edpk')) {\n publicKey = addressOrPbk;\n }\n else {\n if (network.type !== this.wcOptions.network) {\n throw new Error('Network in permission request is not the same as preferred network!');\n }\n const result = yield this.fetchAccounts(session.topic, `${TEZOS_PLACEHOLDER}:${network.type}`);\n if (!result || result.length < 1) {\n throw new Error('No account shared by wallet');\n }\n if (result.some((account) => !account.pubkey)) {\n throw new Error('Public Key in `tezos_getAccounts` is empty!');\n }\n publicKey = (_e = result[0]) === null || _e === void 0 ? void 0 : _e.pubkey;\n }\n }\n if (!publicKey) {\n throw new Error('Public Key in `tezos_getAccounts` is empty!');\n }\n const permissionResponse = {\n type: beacon_types_1.BeaconMessageType.PermissionResponse,\n appMetadata: {\n senderId: session.pairingTopic,\n name: session.peer.metadata.name,\n icon: session.peer.metadata.icons[0]\n },\n publicKey,\n network,\n scopes: [beacon_types_1.PermissionScope.SIGN, beacon_types_1.PermissionScope.OPERATION_REQUEST],\n id: (_f = this.messageIds.pop()) !== null && _f !== void 0 ? _f : '',\n walletType: 'implicit'\n };\n this.notifyListeners(session.pairingTopic, permissionResponse);\n });\n }\n requestPermissions(message) {\n return __awaiter(this, void 0, void 0, function* () {\n logger.log('#### Requesting permissions');\n if (!this.getPermittedMethods().includes(PermissionScopeMethods.GET_ACCOUNTS)) {\n throw new error_1.MissingRequiredScope(PermissionScopeMethods.GET_ACCOUNTS);\n }\n if (this.activeAccount) {\n try {\n yield this.openSession();\n }\n catch (error) {\n logger.error(error.message);\n return;\n }\n }\n this.setDefaultAccountAndNetwork();\n this.notifyListenersWithPermissionResponse(this.getSession(), message.network);\n });\n }\n /**\n * @description Once the session is establish, send payload to be approved and signed by the wallet.\n * @error MissingRequiredScope is thrown if permission to sign payload was not granted\n */\n signPayload(signPayloadRequest) {\n return __awaiter(this, void 0, void 0, function* () {\n const signClient = yield this.getSignClient();\n const session = this.getSession();\n if (!this.getPermittedMethods().includes(PermissionScopeMethods.SIGN)) {\n throw new error_1.MissingRequiredScope(PermissionScopeMethods.SIGN);\n }\n const network = this.getActiveNetwork();\n const account = yield this.getPKH();\n this.validateNetworkAndAccount(network, account);\n this.checkWalletReadiness(session.pairingTopic);\n // TODO: Type\n signClient\n .request({\n topic: session.topic,\n chainId: `${TEZOS_PLACEHOLDER}:${network}`,\n request: {\n method: PermissionScopeMethods.SIGN,\n params: {\n account: account,\n payload: signPayloadRequest.payload\n }\n }\n })\n .then((response) => {\n const signPayloadResponse = {\n type: beacon_types_1.BeaconMessageType.SignPayloadResponse,\n signingType: signPayloadRequest.signingType,\n signature: response === null || response === void 0 ? void 0 : response.signature,\n id: this.messageIds.pop()\n };\n this.notifyListeners(session.pairingTopic, signPayloadResponse);\n if (this.session && this.messageIds.length) {\n this.checkWalletReadiness(this.session.pairingTopic);\n }\n })\n .catch(() => __awaiter(this, void 0, void 0, function* () {\n const errorResponse = {\n type: beacon_types_1.BeaconMessageType.Error,\n id: this.messageIds.pop(),\n errorType: beacon_types_1.BeaconErrorType.ABORTED_ERROR\n };\n this.notifyListeners(session.pairingTopic, errorResponse);\n if (this.session && this.messageIds.length) {\n this.checkWalletReadiness(this.session.pairingTopic);\n }\n }));\n });\n }\n /**\n * @description Once the session is established, send Tezos operations to be approved, signed and inject by the wallet.\n * @error MissingRequiredScope is thrown if permission to send operation was not granted\n */\n sendOperations(operationRequest) {\n return __awaiter(this, void 0, void 0, function* () {\n const signClient = yield this.getSignClient();\n const session = this.getSession();\n if (!this.getPermittedMethods().includes(PermissionScopeMethods.OPERATION_REQUEST)) {\n throw new error_1.MissingRequiredScope(PermissionScopeMethods.OPERATION_REQUEST);\n }\n const network = this.getActiveNetwork();\n const account = yield this.getPKH();\n this.validateNetworkAndAccount(network, account);\n this.checkWalletReadiness(session.pairingTopic);\n signClient\n .request({\n topic: session.topic,\n chainId: `${TEZOS_PLACEHOLDER}:${network}`,\n request: {\n method: PermissionScopeMethods.OPERATION_REQUEST,\n params: {\n account,\n operations: operationRequest.operationDetails\n }\n }\n })\n .then((response) => {\n var _a, _b, _c, _d;\n const sendOperationResponse = {\n type: beacon_types_1.BeaconMessageType.OperationResponse,\n transactionHash: (_c = (_b = (_a = response.operationHash) !== null && _a !== void 0 ? _a : response.transactionHash) !== null && _b !== void 0 ? _b : response.hash) !== null && _c !== void 0 ? _c : '',\n id: (_d = this.messageIds.pop()) !== null && _d !== void 0 ? _d : ''\n };\n this.notifyListeners(session.pairingTopic, sendOperationResponse);\n if (this.session && this.messageIds.length) {\n this.checkWalletReadiness(this.session.pairingTopic);\n }\n })\n .catch(() => __awaiter(this, void 0, void 0, function* () {\n const errorResponse = {\n type: beacon_types_1.BeaconMessageType.Error,\n id: this.messageIds.pop(),\n errorType: beacon_types_1.BeaconErrorType.ABORTED_ERROR\n };\n this.notifyListeners(session.pairingTopic, errorResponse);\n if (this.session && this.messageIds.length) {\n this.checkWalletReadiness(this.session.pairingTopic);\n }\n }));\n });\n }\n init(forceNewConnection = false) {\n return __awaiter(this, void 0, void 0, function* () {\n const signClient = yield this.getSignClient();\n if (forceNewConnection) {\n yield this.closePairings();\n }\n const sessions = signClient.session.getAll();\n if (sessions && sessions.length > 0) {\n this.session = sessions[0];\n this.setDefaultAccountAndNetwork();\n return undefined;\n }\n const { uri, topic } = yield signClient.core.pairing.create();\n signClient.core.pairing.ping({ topic }).then(() => __awaiter(this, void 0, void 0, function* () {\n yield signClient.core.pairing.activate({ topic });\n // pairings don't have peer details\n // therefore we must immediately open a session\n // to get data required in the pairing response\n try {\n const session = yield this.openSession(topic);\n const pairingResponse = new beacon_types_1.ExtendedWalletConnectPairingResponse(topic, session.peer.metadata.name, session.peer.publicKey, '3', topic, session.peer.metadata.name);\n this.channelOpeningListeners.forEach((listener) => {\n listener(pairingResponse);\n });\n }\n catch (error) {\n logger.error(error.message);\n const fun = this.eventHandlers.get(\"CLOSE_ALERT\" /* ClientEvents.CLOSE_ALERT */);\n fun && fun(beacon_types_1.TransportType.WALLETCONNECT);\n return;\n }\n }));\n return { uri, topic };\n });\n }\n close() {\n return __awaiter(this, void 0, void 0, function* () {\n yield this.closePairings();\n });\n }\n subscribeToSessionEvents(signClient) {\n signClient.on('session_event', (event) => {\n if (event.params.event.name === PermissionScopeEvents.REQUEST_ACKNOWLEDGED &&\n this.messageIds.length) {\n this.acknowledgeRequest(this.messageIds[0]);\n }\n });\n signClient.on('session_update', (event) => {\n this.session = signClient.session.get(event.topic);\n this.updateActiveAccount(event.params.namespaces);\n this.notifyListenersWithPermissionResponse(this.session, {\n type: this.wcOptions.network\n });\n });\n signClient.on('session_delete', (event) => {\n this.disconnect(signClient, { type: 'session', topic: event.topic });\n });\n signClient.on('session_expire', (event) => {\n this.disconnect(signClient, { type: 'session', topic: event.topic });\n });\n signClient.core.pairing.events.on('pairing_delete', (event) => {\n this.disconnect(signClient, { type: 'pairing', topic: event.topic });\n });\n signClient.core.pairing.events.on('pairing_expire', (event) => {\n this.disconnect(signClient, { type: 'pairing', topic: event.topic });\n });\n }\n acknowledgeRequest(id) {\n return __awaiter(this, void 0, void 0, function* () {\n const session = this.getSession();\n const acknowledgeResponse = {\n type: beacon_types_1.BeaconMessageType.Acknowledge,\n id\n };\n this.notifyListeners(session.pairingTopic, acknowledgeResponse);\n });\n }\n updateActiveAccount(namespaces) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const accounts = this.getTezosNamespace(namespaces).accounts;\n if (accounts.length === 1) {\n const [_namespace, chainId, addressOrPbk] = accounts[0].split(':', 3);\n const session = this.getSession();\n let publicKey;\n this.activeNetwork = chainId;\n if (addressOrPbk.startsWith('edpk')) {\n publicKey = addressOrPbk;\n this.activeAccount = yield (0, beacon_utils_1.getAddressFromPublicKey)(publicKey);\n }\n else {\n this.activeAccount = addressOrPbk;\n const result = yield this.fetchAccounts(session.topic, `${TEZOS_PLACEHOLDER}:${chainId}`);\n publicKey = (_a = result === null || result === void 0 ? void 0 : result.find(({ address: _address }) => addressOrPbk === _address)) === null || _a === void 0 ? void 0 : _a.pubkey;\n }\n if (!publicKey) {\n throw new Error('Public key for the new account not provided');\n }\n this.notifyListeners(session.pairingTopic, {\n id: yield (0, beacon_utils_1.generateGUID)(),\n type: beacon_types_1.BeaconMessageType.ChangeAccountRequest,\n publicKey,\n network: { type: chainId },\n scopes: [beacon_types_1.PermissionScope.SIGN, beacon_types_1.PermissionScope.OPERATION_REQUEST],\n walletType: 'implicit'\n });\n }\n }\n catch (_b) { }\n });\n }\n disconnect(signClient, trigger) {\n return __awaiter(this, void 0, void 0, function* () {\n let session;\n if (trigger.type === 'session') {\n session = yield this.onSessionClosed(signClient, trigger.topic);\n }\n if (trigger.type === 'pairing') {\n session = yield this.onPairingClosed(signClient, trigger.topic);\n }\n if (!this.activeAccount) {\n const fun = this.eventHandlers.get(\"RESET_STATE\" /* ClientEvents.RESET_STATE */);\n fun && fun(beacon_types_1.TransportType.WALLETCONNECT);\n }\n if (!session) {\n return;\n }\n this.notifyListeners(session.pairingTopic, {\n id: yield (0, beacon_utils_1.generateGUID)(),\n type: beacon_types_1.BeaconMessageType.Disconnect\n });\n this.clearState();\n });\n }\n onPairingClosed(signClient, pairingTopic) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n const session = ((_a = this.session) === null || _a === void 0 ? void 0 : _a.pairingTopic) === pairingTopic\n ? this.session\n : signClient.session\n .getAll()\n .find((session) => session.pairingTopic === pairingTopic);\n if (!session) {\n return undefined;\n }\n try {\n yield signClient.disconnect({\n topic: session.topic,\n reason: {\n code: -1,\n message: 'Pairing deleted'\n }\n });\n }\n catch (error) {\n // If the session was already closed, `disconnect` will throw an error.\n logger.warn(error);\n }\n return session;\n });\n }\n onSessionClosed(signClient, sessionTopic) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.session || this.session.topic !== sessionTopic) {\n return undefined;\n }\n try {\n yield signClient.core.pairing.disconnect({ topic: this.session.pairingTopic });\n }\n catch (error) {\n // If the pairing was already closed, `disconnect` will throw an error.\n logger.warn(error.message);\n }\n return this.session;\n });\n }\n getPairingRequestInfo() {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n let _uri = '', _topic = '';\n try {\n const { uri, topic } = (_a = (yield this.init(true))) !== null && _a !== void 0 ? _a : { uri: '', topic: '' };\n _uri = uri;\n _topic = topic;\n }\n catch (error) {\n console.warn(error.message);\n }\n return new beacon_types_1.ExtendedWalletConnectPairingRequest(_topic, 'WalletConnect', yield (0, beacon_utils_1.generateGUID)(), beacon_core_1.BEACON_VERSION, yield (0, beacon_utils_1.generateGUID)(), _uri);\n });\n }\n closePairings() {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n yield this.closeSessions();\n const signClient = yield this.getSignClient();\n const pairings = (_a = signClient.pairing.getAll()) !== null && _a !== void 0 ? _a : [];\n pairings.length &&\n (yield Promise.allSettled(pairings.map((pairing) => signClient.core.pairing.disconnect({ topic: pairing.topic }))));\n yield this.storage.resetState();\n });\n }\n closeSessions() {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n const signClient = yield this.getSignClient();\n const sessions = (_a = signClient.session.getAll()) !== null && _a !== void 0 ? _a : [];\n sessions.length &&\n (yield Promise.allSettled(sessions.map((session) => signClient.disconnect({\n topic: session.topic,\n reason: {\n code: 0,\n message: 'Force new connection'\n }\n }))));\n this.clearState();\n });\n }\n openSession(pairingTopic) {\n var _a, _b, _c, _d;\n return __awaiter(this, void 0, void 0, function* () {\n const signClient = yield this.getSignClient();\n const permissionScopeParams = {\n networks: [this.wcOptions.network],\n events: [],\n methods: [\n PermissionScopeMethods.GET_ACCOUNTS,\n PermissionScopeMethods.OPERATION_REQUEST,\n PermissionScopeMethods.SIGN\n ]\n };\n const optionalPermissionScopeParams = {\n networks: [this.wcOptions.network],\n events: [PermissionScopeEvents.REQUEST_ACKNOWLEDGED],\n methods: []\n };\n const connectParams = {\n requiredNamespaces: {\n [TEZOS_PLACEHOLDER]: this.permissionScopeParamsToNamespaces(permissionScopeParams)\n },\n optionalNamespaces: {\n [TEZOS_PLACEHOLDER]: this.permissionScopeParamsToNamespaces(optionalPermissionScopeParams)\n },\n pairingTopic: pairingTopic !== null && pairingTopic !== void 0 ? pairingTopic : (_a = signClient.core.pairing.getPairings()[0]) === null || _a === void 0 ? void 0 : _a.topic\n };\n this.checkWalletReadiness(connectParams.pairingTopic);\n const { approval } = yield signClient.connect(connectParams);\n try {\n const session = yield approval();\n // if I have successfully opened a session and I already have one opened\n if ((session === null || session === void 0 ? void 0 : session.controller) !== ((_b = this.session) === null || _b === void 0 ? void 0 : _b.controller)) {\n this.activeAccount && this.closeActiveSession(this.activeAccount);\n this.session = undefined; // close the previous session\n }\n // I still need this check in the event the user aborts the sync process on the wallet side\n // but there is already a connection set\n this.session = (_c = this.session) !== null && _c !== void 0 ? _c : session;\n this.validateReceivedNamespace(permissionScopeParams, this.session.namespaces);\n }\n catch (error) {\n logger.error(error.message);\n if (this.activeListeners.size === 0) {\n const fun = this.eventHandlers.get(\"WC_ACK_NOTIFICATION\" /* ClientEvents.WC_ACK_NOTIFICATION */);\n fun && fun('error');\n }\n else {\n const _pairingTopic = pairingTopic !== null && pairingTopic !== void 0 ? pairingTopic : (_d = signClient.core.pairing.getPairings()[0]) === null || _d === void 0 ? void 0 : _d.topic;\n const errorResponse = {\n type: beacon_types_1.BeaconMessageType.Error,\n id: this.messageIds.pop(),\n errorType: beacon_types_1.BeaconErrorType.ABORTED_ERROR\n };\n this.notifyListeners(_pairingTopic, errorResponse);\n }\n }\n if (this.session) {\n return this.session;\n }\n else {\n throw new error_1.InvalidSession('No session set.');\n }\n });\n }\n permissionScopeParamsToNamespaces(permissionScopeParams) {\n var _a;\n return {\n chains: permissionScopeParams.networks.map((network) => `${TEZOS_PLACEHOLDER}:${network}`),\n methods: permissionScopeParams.methods,\n events: (_a = permissionScopeParams.events) !== null && _a !== void 0 ? _a : []\n };\n }\n validateReceivedNamespace(scope, receivedNamespaces) {\n if (receivedNamespaces[TEZOS_PLACEHOLDER]) {\n this.validateMethods(scope.methods, receivedNamespaces[TEZOS_PLACEHOLDER].methods);\n if (scope.events) {\n this.validateEvents(scope.events, receivedNamespaces['tezos'].events);\n }\n this.validateAccounts(scope.networks, receivedNamespaces[TEZOS_PLACEHOLDER].accounts);\n }\n else {\n this.clearState();\n throw new error_1.InvalidReceivedSessionNamespace('All namespaces must be approved', (0, utils_1.getSdkError)('USER_REJECTED').code, 'incomplete', 'tezos');\n }\n }\n validateMethods(requiredMethods, receivedMethods) {\n const missingMethods = [];\n requiredMethods.forEach((method) => {\n if (!receivedMethods.includes(method)) {\n missingMethods.push(method);\n }\n });\n if (missingMethods.length > 0) {\n this.clearState();\n throw new error_1.InvalidReceivedSessionNamespace('All methods must be approved', (0, utils_1.getSdkError)('USER_REJECTED_METHODS').code, 'incomplete', missingMethods);\n }\n }\n validateEvents(requiredEvents, receivedEvents) {\n const missingEvents = [];\n requiredEvents.forEach((method) => {\n if (!receivedEvents.includes(method)) {\n missingEvents.push(method);\n }\n });\n if (missingEvents.length > 0) {\n this.clearState();\n throw new error_1.InvalidReceivedSessionNamespace('All events must be approved', (0, utils_1.getSdkError)('USER_REJECTED_EVENTS').code, 'incomplete', missingEvents);\n }\n }\n validateAccounts(requiredNetwork, receivedAccounts) {\n if (receivedAccounts.length === 0) {\n this.clearState();\n throw new error_1.InvalidReceivedSessionNamespace('Accounts must not be empty', (0, utils_1.getSdkError)('USER_REJECTED_CHAINS').code, 'incomplete');\n }\n const receivedChains = [];\n const invalidChains = [];\n const missingChains = [];\n const invalidChainsNamespace = [];\n receivedAccounts.forEach((chain) => {\n const accountId = chain.split(':');\n if (accountId.length !== 3) {\n invalidChains.push(chain);\n }\n if (accountId[0] !== TEZOS_PLACEHOLDER) {\n invalidChainsNamespace.push(chain);\n }\n const network = accountId[1];\n if (!receivedChains.includes(network)) {\n receivedChains.push(network);\n }\n });\n if (invalidChains.length > 0) {\n this.clearState();\n throw new error_1.InvalidReceivedSessionNamespace('Accounts must be CAIP-10 compliant', (0, utils_1.getSdkError)('USER_REJECTED_CHAINS').code, 'invalid', invalidChains);\n }\n if (invalidChainsNamespace.length > 0) {\n this.clearState();\n throw new error_1.InvalidReceivedSessionNamespace('Accounts must be defined in matching namespace', (0, utils_1.getSdkError)('UNSUPPORTED_ACCOUNTS').code, 'invalid', invalidChainsNamespace);\n }\n requiredNetwork.forEach((network) => {\n if (!receivedChains.includes(network)) {\n missingChains.push(network);\n }\n });\n if (missingChains.length > 0) {\n this.clearState();\n throw new error_1.InvalidReceivedSessionNamespace('All chains must have at least one account', (0, utils_1.getSdkError)('USER_REJECTED_CHAINS').code, 'incomplete', missingChains);\n }\n }\n closeActiveSession(account) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n try {\n this.validateNetworkAndAccount(this.getActiveNetwork(), account);\n }\n catch (error) {\n logger.error(error.message);\n return;\n }\n const session = this.getSession();\n yield ((_a = this.signClient) === null || _a === void 0 ? void 0 : _a.disconnect({\n topic: session.topic,\n reason: {\n code: 0,\n message: 'Force new connection'\n }\n }));\n });\n }\n validateNetworkAndAccount(network, account) {\n if (!this.getTezosNamespace().accounts.includes(`${TEZOS_PLACEHOLDER}:${network}:${account}`)) {\n throw new error_1.InvalidNetworkOrAccount(network, account);\n }\n }\n /**\n * @description Access the active network\n * @error ActiveNetworkUnspecified thorwn when there are multiple Tezos networks in the session and none is set as the active one\n */\n getActiveNetwork() {\n if (!this.activeNetwork) {\n this.getSession();\n throw new error_1.ActiveNetworkUnspecified();\n }\n return this.activeNetwork;\n }\n setDefaultAccountAndNetwork() {\n const activeAccount = this.getAccounts();\n if (activeAccount.length) {\n this.activeAccount = activeAccount[0];\n }\n const activeNetwork = this.getNetworks();\n if (activeNetwork.length) {\n this.activeNetwork = activeNetwork[0];\n }\n }\n /**\n * @description Return all connected accounts from the active session\n * @error NotConnected if no active session\n */\n getAccounts() {\n return this.getTezosNamespace().accounts.map((account) => account.split(':')[2]);\n }\n /**\n * @description Return all networks from the namespace of the active session\n * @error NotConnected if no active session\n */\n getNetworks() {\n return this.getPermittedNetwork();\n }\n getTezosNamespace(namespaces = this.getSession().namespaces) {\n if (TEZOS_PLACEHOLDER in namespaces) {\n return namespaces[TEZOS_PLACEHOLDER];\n }\n else {\n throw new error_1.InvalidSession('Tezos not found in namespaces');\n }\n }\n getPermittedMethods() {\n return this.getTezosRequiredNamespace().methods;\n }\n getPermittedNetwork() {\n return this.getTezosRequiredNamespace().chains.map((chain) => chain.split(':')[1]);\n }\n getTezosRequiredNamespace() {\n return {\n chains: [`${TEZOS_PLACEHOLDER}:${this.wcOptions.network}`],\n events: [],\n methods: ['tezos_getAccounts', 'tezos_send', 'tezos_sign']\n };\n // if (TEZOS_PLACEHOLDER in this.getSession().requiredNamespaces) {\n // return this.getSession().requiredNamespaces[TEZOS_PLACEHOLDER] as {\n // chains: string[]\n // methods: string[]\n // events: string[]\n // }\n // } else {\n // throw new InvalidSession('Tezos not found in requiredNamespaces')\n // }\n }\n notifyListeners(pairingTopic, partialResponse) {\n return __awaiter(this, void 0, void 0, function* () {\n const response = Object.assign(Object.assign({}, partialResponse), { version: '2', senderId: pairingTopic });\n const serializer = new beacon_core_1.Serializer();\n const serialized = yield serializer.serialize(response);\n this.activeListeners.forEach((listener) => {\n listener(serialized);\n });\n });\n }\n currentSession() {\n return this.session;\n }\n getSignClient() {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.signClient === undefined) {\n this.signClient = yield sign_client_1.SignClient.init(this.wcOptions.opts);\n this.subscribeToSessionEvents(this.signClient);\n }\n return this.signClient;\n });\n }\n getSession() {\n if (!this.session) {\n throw new error_1.NotConnected();\n }\n return this.session;\n }\n /**\n * @description Access the public key hash of the active account\n * @error ActiveAccountUnspecified thrown when there are multiple Tezos account in the session and none is set as the active one\n */\n getPKH() {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.activeAccount) {\n this.getSession();\n throw new error_1.ActiveAccountUnspecified();\n }\n return this.activeAccount;\n });\n }\n clearState() {\n this.session = undefined;\n this.activeAccount = undefined;\n this.activeNetwork = undefined;\n }\n}\nexports.WalletConnectCommunicationClient = WalletConnectCommunicationClient;\n//# sourceMappingURL=WalletConnectCommunicationClient.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-transport-walletconnect/dist/cjs/communication-client/WalletConnectCommunicationClient.js?")},"./packages/beacon-transport-walletconnect/dist/cjs/error.js":(__unused_webpack_module,exports)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.InvalidNetworkOrAccount = exports.ActiveAccountUnspecified = exports.ActiveNetworkUnspecified = exports.MissingRequiredScope = exports.InvalidSession = exports.NotConnected = exports.InvalidReceivedSessionNamespace = void 0;\n/**\n * @category Error\n * @description Error that indicates the wallet returned an invalid namespace\n */\nclass InvalidReceivedSessionNamespace extends Error {\n constructor(messageWc, codeWc, type, data) {\n super();\n this.messageWc = messageWc;\n this.codeWc = codeWc;\n this.data = data;\n this.name = 'InvalidReceivedSessionNamespace';\n const baseMessage = `${codeWc}: ${messageWc}.`;\n this.message = data\n ? type === 'incomplete'\n ? ` ${baseMessage} \"${data}\" is missing in the session namespace.`\n : ` ${baseMessage} \"${data}\" is invalid.`\n : baseMessage;\n }\n}\nexports.InvalidReceivedSessionNamespace = InvalidReceivedSessionNamespace;\n/**\n * @category Error\n * @description Error that indicates there is no active session\n */\nclass NotConnected extends Error {\n constructor() {\n super('Not connected, no active session');\n this.name = 'NotConnected';\n }\n}\nexports.NotConnected = NotConnected;\n/**\n * @category Error\n * @description Error that indicates the session is invalid\n */\nclass InvalidSession extends Error {\n constructor(message) {\n super(message);\n this.name = 'InvalidSession';\n }\n}\nexports.InvalidSession = InvalidSession;\n/**\n * @category Error\n * @description Error that indicates missing required permission scopes\n */\nclass MissingRequiredScope extends Error {\n constructor(requiredScopes) {\n super(`Required permission scope were not granted for \"${requiredScopes}\"`);\n this.requiredScopes = requiredScopes;\n this.name = 'MissingRequiredScope';\n }\n}\nexports.MissingRequiredScope = MissingRequiredScope;\n/**\n * @category Error\n * @description Error that indicates the active network is not specified\n */\nclass ActiveNetworkUnspecified extends Error {\n constructor() {\n super('Please specify the active network using the \"setActiveNetwork\" method.');\n this.name = 'ActiveNetworkUnspecified';\n }\n}\nexports.ActiveNetworkUnspecified = ActiveNetworkUnspecified;\n/**\n * @category Error\n * @description Error that indicates the active account is not specified\n */\nclass ActiveAccountUnspecified extends Error {\n constructor() {\n super('Please specify the active account using the \"setActiveAccount\" method.');\n this.name = 'ActiveAccountUnspecified';\n }\n}\nexports.ActiveAccountUnspecified = ActiveAccountUnspecified;\n/**\n * @category Error\n * @description Error that indicates the combinaison pkh-network is not part of the active session\n */\nclass InvalidNetworkOrAccount extends Error {\n constructor(network, pkh) {\n super(`No permission. The combinaison \"${network}\" and \"${pkh}\" is not part of the active session.`);\n this.network = network;\n this.pkh = pkh;\n this.name = 'InvalidNetworkOrAccount';\n }\n}\nexports.InvalidNetworkOrAccount = InvalidNetworkOrAccount;\n//# sourceMappingURL=error.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-transport-walletconnect/dist/cjs/error.js?")},"./packages/beacon-transport-walletconnect/dist/cjs/index.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.WalletConnectCommunicationClient = exports.WalletConnectTransport = void 0;\nvar WalletConnectTransport_1 = __webpack_require__(/*! ./WalletConnectTransport */ "./packages/beacon-transport-walletconnect/dist/cjs/WalletConnectTransport.js");\nObject.defineProperty(exports, "WalletConnectTransport", ({ enumerable: true, get: function () { return WalletConnectTransport_1.WalletConnectTransport; } }));\nvar WalletConnectCommunicationClient_1 = __webpack_require__(/*! ./communication-client/WalletConnectCommunicationClient */ "./packages/beacon-transport-walletconnect/dist/cjs/communication-client/WalletConnectCommunicationClient.js");\nObject.defineProperty(exports, "WalletConnectCommunicationClient", ({ enumerable: true, get: function () { return WalletConnectCommunicationClient_1.WalletConnectCommunicationClient; } }));\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-transport-walletconnect/dist/cjs/index.js?')},"./packages/beacon-types/dist/cjs/index.js":function(__unused_webpack_module,exports,__webpack_require__){"use strict";eval('\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.ColorMode = exports.defaultValues = exports.ExtendedWalletConnectPairingResponse = exports.ExtendedWalletConnectPairingRequest = exports.WalletConnectPairingRequest = exports.WalletConnectPairingResponse = exports.ExtendedP2PPairingResponse = exports.ExtendedP2PPairingRequest = exports.P2PPairingResponse = exports.P2PPairingRequest = exports.ExtendedPostMessagePairingResponse = exports.ExtendedPostMessagePairingRequest = exports.PostMessagePairingResponse = exports.PostMessagePairingRequest = exports.StorageKey = exports.Storage = exports.TransportType = exports.TransportStatus = exports.BeaconErrorType = exports.ExtensionMessageTarget = exports.SigningType = exports.Origin = exports.PermissionScope = exports.BeaconMessageType = exports.NetworkType = exports.TezosOperationType = void 0;\nconst BeaconMessageType_1 = __webpack_require__(/*! ./types/beacon/BeaconMessageType */ "./packages/beacon-types/dist/cjs/types/beacon/BeaconMessageType.js");\nObject.defineProperty(exports, "BeaconMessageType", ({ enumerable: true, get: function () { return BeaconMessageType_1.BeaconMessageType; } }));\nconst PermissionScope_1 = __webpack_require__(/*! ./types/beacon/PermissionScope */ "./packages/beacon-types/dist/cjs/types/beacon/PermissionScope.js");\nObject.defineProperty(exports, "PermissionScope", ({ enumerable: true, get: function () { return PermissionScope_1.PermissionScope; } }));\nconst NetworkType_1 = __webpack_require__(/*! ./types/beacon/NetworkType */ "./packages/beacon-types/dist/cjs/types/beacon/NetworkType.js");\nObject.defineProperty(exports, "NetworkType", ({ enumerable: true, get: function () { return NetworkType_1.NetworkType; } }));\nconst OperationTypes_1 = __webpack_require__(/*! ./types/tezos/OperationTypes */ "./packages/beacon-types/dist/cjs/types/tezos/OperationTypes.js");\nObject.defineProperty(exports, "TezosOperationType", ({ enumerable: true, get: function () { return OperationTypes_1.TezosOperationType; } }));\nconst Origin_1 = __webpack_require__(/*! ./types/Origin */ "./packages/beacon-types/dist/cjs/types/Origin.js");\nObject.defineProperty(exports, "Origin", ({ enumerable: true, get: function () { return Origin_1.Origin; } }));\nconst ExtensionMessageTarget_1 = __webpack_require__(/*! ./types/ExtensionMessageTarget */ "./packages/beacon-types/dist/cjs/types/ExtensionMessageTarget.js");\nObject.defineProperty(exports, "ExtensionMessageTarget", ({ enumerable: true, get: function () { return ExtensionMessageTarget_1.ExtensionMessageTarget; } }));\nconst BeaconErrorType_1 = __webpack_require__(/*! ./types/BeaconErrorType */ "./packages/beacon-types/dist/cjs/types/BeaconErrorType.js");\nObject.defineProperty(exports, "BeaconErrorType", ({ enumerable: true, get: function () { return BeaconErrorType_1.BeaconErrorType; } }));\nconst TransportStatus_1 = __webpack_require__(/*! ./types/transport/TransportStatus */ "./packages/beacon-types/dist/cjs/types/transport/TransportStatus.js");\nObject.defineProperty(exports, "TransportStatus", ({ enumerable: true, get: function () { return TransportStatus_1.TransportStatus; } }));\nconst TransportType_1 = __webpack_require__(/*! ./types/transport/TransportType */ "./packages/beacon-types/dist/cjs/types/transport/TransportType.js");\nObject.defineProperty(exports, "TransportType", ({ enumerable: true, get: function () { return TransportType_1.TransportType; } }));\nconst Storage_1 = __webpack_require__(/*! ./types/storage/Storage */ "./packages/beacon-types/dist/cjs/types/storage/Storage.js");\nObject.defineProperty(exports, "Storage", ({ enumerable: true, get: function () { return Storage_1.Storage; } }));\nconst StorageKey_1 = __webpack_require__(/*! ./types/storage/StorageKey */ "./packages/beacon-types/dist/cjs/types/storage/StorageKey.js");\nObject.defineProperty(exports, "StorageKey", ({ enumerable: true, get: function () { return StorageKey_1.StorageKey; } }));\nconst StorageKeyReturnDefaults_1 = __webpack_require__(/*! ./types/storage/StorageKeyReturnDefaults */ "./packages/beacon-types/dist/cjs/types/storage/StorageKeyReturnDefaults.js");\nObject.defineProperty(exports, "defaultValues", ({ enumerable: true, get: function () { return StorageKeyReturnDefaults_1.defaultValues; } }));\nconst P2PPairingRequest_1 = __webpack_require__(/*! ./types/P2PPairingRequest */ "./packages/beacon-types/dist/cjs/types/P2PPairingRequest.js");\nObject.defineProperty(exports, "ExtendedP2PPairingRequest", ({ enumerable: true, get: function () { return P2PPairingRequest_1.ExtendedP2PPairingRequest; } }));\nObject.defineProperty(exports, "P2PPairingRequest", ({ enumerable: true, get: function () { return P2PPairingRequest_1.P2PPairingRequest; } }));\nconst SigningType_1 = __webpack_require__(/*! ./types/beacon/SigningType */ "./packages/beacon-types/dist/cjs/types/beacon/SigningType.js");\nObject.defineProperty(exports, "SigningType", ({ enumerable: true, get: function () { return SigningType_1.SigningType; } }));\nconst P2PPairingResponse_1 = __webpack_require__(/*! ./types/P2PPairingResponse */ "./packages/beacon-types/dist/cjs/types/P2PPairingResponse.js");\nObject.defineProperty(exports, "ExtendedP2PPairingResponse", ({ enumerable: true, get: function () { return P2PPairingResponse_1.ExtendedP2PPairingResponse; } }));\nObject.defineProperty(exports, "P2PPairingResponse", ({ enumerable: true, get: function () { return P2PPairingResponse_1.P2PPairingResponse; } }));\nconst PostMessagePairingRequest_1 = __webpack_require__(/*! ./types/PostMessagePairingRequest */ "./packages/beacon-types/dist/cjs/types/PostMessagePairingRequest.js");\nObject.defineProperty(exports, "ExtendedPostMessagePairingRequest", ({ enumerable: true, get: function () { return PostMessagePairingRequest_1.ExtendedPostMessagePairingRequest; } }));\nObject.defineProperty(exports, "PostMessagePairingRequest", ({ enumerable: true, get: function () { return PostMessagePairingRequest_1.PostMessagePairingRequest; } }));\nconst WalletConnectPairingResponse_1 = __webpack_require__(/*! ./types/WalletConnectPairingResponse */ "./packages/beacon-types/dist/cjs/types/WalletConnectPairingResponse.js");\nObject.defineProperty(exports, "ExtendedWalletConnectPairingResponse", ({ enumerable: true, get: function () { return WalletConnectPairingResponse_1.ExtendedWalletConnectPairingResponse; } }));\nObject.defineProperty(exports, "WalletConnectPairingResponse", ({ enumerable: true, get: function () { return WalletConnectPairingResponse_1.WalletConnectPairingResponse; } }));\nconst WalletConnectPairingRequest_1 = __webpack_require__(/*! ./types/WalletConnectPairingRequest */ "./packages/beacon-types/dist/cjs/types/WalletConnectPairingRequest.js");\nObject.defineProperty(exports, "ExtendedWalletConnectPairingRequest", ({ enumerable: true, get: function () { return WalletConnectPairingRequest_1.ExtendedWalletConnectPairingRequest; } }));\nObject.defineProperty(exports, "WalletConnectPairingRequest", ({ enumerable: true, get: function () { return WalletConnectPairingRequest_1.WalletConnectPairingRequest; } }));\nconst PostMessagePairingResponse_1 = __webpack_require__(/*! ./types/PostMessagePairingResponse */ "./packages/beacon-types/dist/cjs/types/PostMessagePairingResponse.js");\nObject.defineProperty(exports, "ExtendedPostMessagePairingResponse", ({ enumerable: true, get: function () { return PostMessagePairingResponse_1.ExtendedPostMessagePairingResponse; } }));\nObject.defineProperty(exports, "PostMessagePairingResponse", ({ enumerable: true, get: function () { return PostMessagePairingResponse_1.PostMessagePairingResponse; } }));\nconst ColorMode_1 = __webpack_require__(/*! ./types/ColorMode */ "./packages/beacon-types/dist/cjs/types/ColorMode.js");\nObject.defineProperty(exports, "ColorMode", ({ enumerable: true, get: function () { return ColorMode_1.ColorMode; } }));\n__exportStar(__webpack_require__(/*! ./types/AnalyticsInterface */ "./packages/beacon-types/dist/cjs/types/AnalyticsInterface.js"), exports);\n__exportStar(__webpack_require__(/*! ./types/beaconV3/PermissionRequest */ "./packages/beacon-types/dist/cjs/types/beaconV3/PermissionRequest.js"), exports);\n__exportStar(__webpack_require__(/*! ./types/ui */ "./packages/beacon-types/dist/cjs/types/ui.js"), exports);\n__exportStar(__webpack_require__(/*! ./types/Regions */ "./packages/beacon-types/dist/cjs/types/Regions.js"), exports);\n//# sourceMappingURL=index.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-types/dist/cjs/index.js?')},"./packages/beacon-types/dist/cjs/types/AnalyticsInterface.js":(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\n//# sourceMappingURL=AnalyticsInterface.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-types/dist/cjs/types/AnalyticsInterface.js?')},"./packages/beacon-types/dist/cjs/types/BeaconErrorType.js":(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.BeaconErrorType = void 0;\nvar BeaconErrorType;\n(function (BeaconErrorType) {\n /**\n * {@link BroadcastBeaconError}\n *\n * Will be returned if the user chooses that the transaction is broadcast but there is an error (eg. node not available).\n *\n * Returned by: Broadcast | Operation Request\n */\n BeaconErrorType["BROADCAST_ERROR"] = "BROADCAST_ERROR";\n /**\n * {@link NetworkNotSupportedBeaconError}\n *\n * Will be returned if the selected network is not supported by the wallet / extension.\n *\n * Returned by: Permission\n */\n BeaconErrorType["NETWORK_NOT_SUPPORTED"] = "NETWORK_NOT_SUPPORTED";\n /**\n * {@link NoAddressBeaconError}\n *\n * Will be returned if there is no address present for the protocol / network requested.\n *\n * Returned by: Permission\n */\n BeaconErrorType["NO_ADDRESS_ERROR"] = "NO_ADDRESS_ERROR";\n /**\n * {@link NoPrivateKeyBeaconError}\n *\n * Will be returned if the private key matching the sourceAddress could not be found.\n *\n * Returned by: Sign\n */\n BeaconErrorType["NO_PRIVATE_KEY_FOUND_ERROR"] = "NO_PRIVATE_KEY_FOUND_ERROR";\n /**\n * {@link NotGrantedBeaconError}\n *\n * Will be returned if the signature was blocked // (Not needed?) Permission: Will be returned if the permissions requested by the App were not granted.\n *\n * Returned by: Sign\n */\n BeaconErrorType["NOT_GRANTED_ERROR"] = "NOT_GRANTED_ERROR";\n /**\n * {@link ParametersInvalidBeaconError}\n *\n * Will be returned if any of the parameters are invalid.\n *\n * Returned by: Operation Request\n */\n BeaconErrorType["PARAMETERS_INVALID_ERROR"] = "PARAMETERS_INVALID_ERROR";\n /**\n * {@link TooManyOperationsBeaconError}\n *\n * Will be returned if too many operations were in the request and they were not able to fit into a single operation group.\n *\n * Returned by: Operation Request\n */\n BeaconErrorType["TOO_MANY_OPERATIONS"] = "TOO_MANY_OPERATIONS";\n /**\n * {@link TransactionInvalidBeaconError}\n *\n * Will be returned if the transaction is not parsable or is rejected by the node.\n *\n * Returned by: Broadcast\n */\n BeaconErrorType["TRANSACTION_INVALID_ERROR"] = "TRANSACTION_INVALID_ERROR";\n /**\n * {@link SignatureTypeNotSupportedBeaconError}\n *\n * Will be returned if the signing type is not supported.\n *\n * Returned by: Sign\n */\n BeaconErrorType["SIGNATURE_TYPE_NOT_SUPPORTED"] = "SIGNATURE_TYPE_NOT_SUPPORTED";\n // TODO: ENCRYPTION\n // /**\n // * {@link EncryptionTypeNotSupportedBeaconError}\n // *\n // * Will be returned if the encryption type is not supported.\n // *\n // * Returned by: Encrypt\n // */\n // ENCRYPTION_TYPE_NOT_SUPPORTED = \'ENCRYPTION_TYPE_NOT_SUPPORTED\',\n /**\n * {@link AbortedBeaconError}\n *\n * Will be returned if the request was aborted by the user or the wallet.\n *\n * Returned by: Permission | Operation Request | Sign Request | Broadcast\n */\n BeaconErrorType["ABORTED_ERROR"] = "ABORTED_ERROR";\n /**\n * {@link UnknownBeaconError}\n *\n * Used as a wildcard if an unexpected error occured.\n *\n * Returned by: Permission | Operation Request | Sign Request | Broadcast\n */\n BeaconErrorType["UNKNOWN_ERROR"] = "UNKNOWN_ERROR";\n})(BeaconErrorType || (exports.BeaconErrorType = BeaconErrorType = {}));\n//# sourceMappingURL=BeaconErrorType.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-types/dist/cjs/types/BeaconErrorType.js?')},"./packages/beacon-types/dist/cjs/types/ColorMode.js":(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.ColorMode = void 0;\nvar ColorMode;\n(function (ColorMode) {\n ColorMode["LIGHT"] = "light";\n ColorMode["DARK"] = "dark";\n})(ColorMode || (exports.ColorMode = ColorMode = {}));\n//# sourceMappingURL=ColorMode.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-types/dist/cjs/types/ColorMode.js?')},"./packages/beacon-types/dist/cjs/types/ExtensionMessageTarget.js":(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.ExtensionMessageTarget = void 0;\n/**\n * @internalapi\n */\nvar ExtensionMessageTarget;\n(function (ExtensionMessageTarget) {\n ExtensionMessageTarget["BACKGROUND"] = "toBackground";\n ExtensionMessageTarget["PAGE"] = "toPage";\n ExtensionMessageTarget["EXTENSION"] = "toExtension";\n})(ExtensionMessageTarget || (exports.ExtensionMessageTarget = ExtensionMessageTarget = {}));\n//# sourceMappingURL=ExtensionMessageTarget.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-types/dist/cjs/types/ExtensionMessageTarget.js?')},"./packages/beacon-types/dist/cjs/types/Origin.js":(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.Origin = void 0;\n/**\n * @internalapi\n */\nvar Origin;\n(function (Origin) {\n Origin["WEBSITE"] = "website";\n Origin["EXTENSION"] = "extension";\n Origin["P2P"] = "p2p";\n Origin["WALLETCONNECT"] = "walletconnect";\n})(Origin || (exports.Origin = Origin = {}));\n//# sourceMappingURL=Origin.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-types/dist/cjs/types/Origin.js?')},"./packages/beacon-types/dist/cjs/types/P2PPairingRequest.js":(__unused_webpack_module,exports)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ExtendedP2PPairingRequest = exports.P2PPairingRequest = void 0;\n/**\n * @internalapi\n */\nclass P2PPairingRequest {\n constructor(id, name, publicKey, version, relayServer, icon, appUrl) {\n this.type = 'p2p-pairing-request';\n this.id = id;\n this.name = name;\n this.icon = icon;\n this.appUrl = appUrl;\n this.publicKey = publicKey;\n this.version = version;\n this.relayServer = relayServer;\n }\n}\nexports.P2PPairingRequest = P2PPairingRequest;\n/**\n * @internalapi\n */\nclass ExtendedP2PPairingRequest extends P2PPairingRequest {\n constructor(id, name, publicKey, version, relayServer, senderId, icon, appUrl) {\n super(id, name, publicKey, version, relayServer, icon, appUrl);\n this.senderId = senderId;\n }\n}\nexports.ExtendedP2PPairingRequest = ExtendedP2PPairingRequest;\n//# sourceMappingURL=P2PPairingRequest.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-types/dist/cjs/types/P2PPairingRequest.js?")},"./packages/beacon-types/dist/cjs/types/P2PPairingResponse.js":(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.ExtendedP2PPairingResponse = exports.P2PPairingResponse = void 0;\n/**\n * @internalapi\n */\nclass P2PPairingResponse {\n constructor(id, name, publicKey, version, relayServer, icon, appUrl) {\n this.type = \'p2p-pairing-request\';\n this.id = id;\n this.name = name;\n this.icon = icon;\n this.appUrl = appUrl;\n this.publicKey = publicKey;\n this.version = version;\n this.relayServer = relayServer;\n }\n}\nexports.P2PPairingResponse = P2PPairingResponse;\n/**\n * @internalapi\n */\nclass ExtendedP2PPairingResponse extends P2PPairingResponse {\n constructor(id, name, publicKey, version, relayServer, senderId, icon, appUrl) {\n super(id, name, publicKey, version, relayServer, icon, appUrl);\n this.senderId = senderId;\n }\n}\nexports.ExtendedP2PPairingResponse = ExtendedP2PPairingResponse;\n// TODO: Rename to "WalletPeerInfo"?\n//# sourceMappingURL=P2PPairingResponse.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-types/dist/cjs/types/P2PPairingResponse.js?')},"./packages/beacon-types/dist/cjs/types/PostMessagePairingRequest.js":(__unused_webpack_module,exports)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ExtendedPostMessagePairingRequest = exports.PostMessagePairingRequest = void 0;\n/**\n * @internalapi\n */\nclass PostMessagePairingRequest {\n constructor(id, name, publicKey, version, icon, appUrl) {\n this.type = 'postmessage-pairing-request';\n this.id = id;\n this.name = name;\n this.icon = icon;\n this.appUrl = appUrl;\n this.publicKey = publicKey;\n this.version = version;\n }\n}\nexports.PostMessagePairingRequest = PostMessagePairingRequest;\n/**\n * @internalapi\n */\nclass ExtendedPostMessagePairingRequest extends PostMessagePairingRequest {\n constructor(id, name, publicKey, version, senderId, icon, appUrl) {\n super(id, name, publicKey, version, icon, appUrl);\n this.senderId = senderId;\n }\n}\nexports.ExtendedPostMessagePairingRequest = ExtendedPostMessagePairingRequest;\n//# sourceMappingURL=PostMessagePairingRequest.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-types/dist/cjs/types/PostMessagePairingRequest.js?")},"./packages/beacon-types/dist/cjs/types/PostMessagePairingResponse.js":(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.ExtendedPostMessagePairingResponse = exports.PostMessagePairingResponse = void 0;\n/**\n * @internalapi\n */\nclass PostMessagePairingResponse {\n constructor(id, name, publicKey, version, icon, appUrl) {\n this.type = \'postmessage-pairing-response\';\n this.id = id;\n this.name = name;\n this.icon = icon;\n this.appUrl = appUrl;\n this.publicKey = publicKey;\n this.version = version;\n }\n}\nexports.PostMessagePairingResponse = PostMessagePairingResponse;\n/**\n * @internalapi\n */\nclass ExtendedPostMessagePairingResponse extends PostMessagePairingResponse {\n constructor(id, name, publicKey, version, senderId, extensionId, icon, appUrl) {\n super(id, name, publicKey, version, icon, appUrl);\n this.senderId = senderId;\n this.extensionId = extensionId;\n }\n}\nexports.ExtendedPostMessagePairingResponse = ExtendedPostMessagePairingResponse;\n// TODO: Rename to "WalletPeerInfo"?\n//# sourceMappingURL=PostMessagePairingResponse.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-types/dist/cjs/types/PostMessagePairingResponse.js?')},"./packages/beacon-types/dist/cjs/types/Regions.js":(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.Regions = void 0;\n/**\n * Geographic region where a beacon node is located. This list can be changed in the future to be more specific, but for now it should cover most general areas.\n */\nvar Regions;\n(function (Regions) {\n Regions["EUROPE_EAST"] = "europe-east";\n Regions["EUROPE_WEST"] = "europe-west";\n Regions["NORTH_AMERICA_EAST"] = "north-america-east";\n Regions["NORTH_AMERICA_WEST"] = "north-america-west";\n Regions["CENTRAL_AMERICA"] = "central-america";\n Regions["SOUTH_AMERICA"] = "south-america";\n Regions["ASIA_EAST"] = "asia-east";\n Regions["ASIA_WEST"] = "asia-west";\n Regions["AFRICA"] = "africa";\n Regions["AUSTRALIA"] = "australia";\n})(Regions || (exports.Regions = Regions = {}));\n//# sourceMappingURL=Regions.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-types/dist/cjs/types/Regions.js?')},"./packages/beacon-types/dist/cjs/types/WalletConnectPairingRequest.js":(__unused_webpack_module,exports)=>{"use strict";eval("\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ExtendedWalletConnectPairingRequest = exports.WalletConnectPairingRequest = void 0;\n/**\n * @internalapi\n */\nclass WalletConnectPairingRequest {\n constructor(id, name, publicKey, version, uri, icon, appUrl) {\n this.type = 'walletconnect-pairing-request';\n this.id = id;\n this.name = name;\n this.icon = icon;\n this.appUrl = appUrl;\n this.publicKey = publicKey;\n this.version = version;\n this.uri = uri;\n }\n}\nexports.WalletConnectPairingRequest = WalletConnectPairingRequest;\n/**\n * @internalapi\n */\nclass ExtendedWalletConnectPairingRequest extends WalletConnectPairingRequest {\n constructor(id, name, publicKey, version, senderId, uri, icon, appUrl) {\n super(id, name, publicKey, version, uri, icon, appUrl);\n this.senderId = senderId;\n }\n}\nexports.ExtendedWalletConnectPairingRequest = ExtendedWalletConnectPairingRequest;\n//# sourceMappingURL=WalletConnectPairingRequest.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-types/dist/cjs/types/WalletConnectPairingRequest.js?")},"./packages/beacon-types/dist/cjs/types/WalletConnectPairingResponse.js":(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.ExtendedWalletConnectPairingResponse = exports.WalletConnectPairingResponse = void 0;\n/**\n * @internalapi\n */\nclass WalletConnectPairingResponse {\n constructor(id, name, publicKey, version, icon, appUrl) {\n this.type = \'walletconnect-pairing-response\';\n this.id = id;\n this.name = name;\n this.icon = icon;\n this.appUrl = appUrl;\n this.publicKey = publicKey;\n this.version = version;\n }\n}\nexports.WalletConnectPairingResponse = WalletConnectPairingResponse;\n/**\n * @internalapi\n */\nclass ExtendedWalletConnectPairingResponse extends WalletConnectPairingResponse {\n constructor(id, name, publicKey, version, senderId, extensionId, icon, appUrl) {\n super(id, name, publicKey, version, icon, appUrl);\n this.senderId = senderId;\n this.extensionId = extensionId;\n }\n}\nexports.ExtendedWalletConnectPairingResponse = ExtendedWalletConnectPairingResponse;\n// TODO: Rename to "WalletPeerInfo"?\n//# sourceMappingURL=WalletConnectPairingResponse.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-types/dist/cjs/types/WalletConnectPairingResponse.js?')},"./packages/beacon-types/dist/cjs/types/beacon/BeaconMessageType.js":(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.BeaconMessageType = void 0;\nvar BeaconMessageType;\n(function (BeaconMessageType) {\n BeaconMessageType["BlockchainRequest"] = "blockchain_request";\n BeaconMessageType["PermissionRequest"] = "permission_request";\n BeaconMessageType["SignPayloadRequest"] = "sign_payload_request";\n // EncryptPayloadRequest = \'encrypt_payload_request\',\n BeaconMessageType["OperationRequest"] = "operation_request";\n BeaconMessageType["BroadcastRequest"] = "broadcast_request";\n BeaconMessageType["ChangeAccountRequest"] = "change_account_request";\n BeaconMessageType["BlockchainResponse"] = "blockchain_response";\n BeaconMessageType["PermissionResponse"] = "permission_response";\n BeaconMessageType["SignPayloadResponse"] = "sign_payload_response";\n // EncryptPayloadResponse = \'encrypt_payload_response\',\n BeaconMessageType["ProofOfEventChallengeRequest"] = "proof_of_event_challenge_request";\n BeaconMessageType["ProofOfEventChallengeResponse"] = "proof_of_event_challenge_response";\n BeaconMessageType["ProofOfEventChallengeRecorded"] = "proof_of_event_challenge_recorded";\n BeaconMessageType["OperationResponse"] = "operation_response";\n BeaconMessageType["BroadcastResponse"] = "broadcast_response";\n BeaconMessageType["Acknowledge"] = "acknowledge";\n BeaconMessageType["Disconnect"] = "disconnect";\n BeaconMessageType["Error"] = "error";\n})(BeaconMessageType || (exports.BeaconMessageType = BeaconMessageType = {}));\n//# sourceMappingURL=BeaconMessageType.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-types/dist/cjs/types/beacon/BeaconMessageType.js?')},"./packages/beacon-types/dist/cjs/types/beacon/NetworkType.js":(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.NetworkType = void 0;\nvar NetworkType;\n(function (NetworkType) {\n NetworkType["MAINNET"] = "mainnet";\n NetworkType["GHOSTNET"] = "ghostnet";\n NetworkType["WEEKLYNET"] = "weeklynet";\n NetworkType["DAILYNET"] = "dailynet";\n NetworkType["DELPHINET"] = "delphinet";\n NetworkType["EDONET"] = "edonet";\n NetworkType["FLORENCENET"] = "florencenet";\n NetworkType["GRANADANET"] = "granadanet";\n NetworkType["HANGZHOUNET"] = "hangzhounet";\n NetworkType["ITHACANET"] = "ithacanet";\n NetworkType["JAKARTANET"] = "jakartanet";\n NetworkType["KATHMANDUNET"] = "kathmandunet";\n NetworkType["LIMANET"] = "limanet";\n NetworkType["MUMBAINET"] = "mumbainet";\n NetworkType["NAIROBINET"] = "nairobinet";\n NetworkType["OXFORDNET"] = "oxfordnet";\n NetworkType["CUSTOM"] = "custom";\n})(NetworkType || (exports.NetworkType = NetworkType = {}));\n//# sourceMappingURL=NetworkType.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-types/dist/cjs/types/beacon/NetworkType.js?')},"./packages/beacon-types/dist/cjs/types/beacon/PermissionScope.js":(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.PermissionScope = void 0;\nvar PermissionScope;\n(function (PermissionScope) {\n PermissionScope["SIGN"] = "sign";\n PermissionScope["OPERATION_REQUEST"] = "operation_request";\n PermissionScope["ENCRYPT"] = "encrypt";\n PermissionScope["NOTIFICATION"] = "notification";\n PermissionScope["THRESHOLD"] = "threshold"; // Allows the DApp to sign transactions below a certain threshold. This is currently not fully defined and unused\n})(PermissionScope || (exports.PermissionScope = PermissionScope = {}));\n//# sourceMappingURL=PermissionScope.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-types/dist/cjs/types/beacon/PermissionScope.js?')},"./packages/beacon-types/dist/cjs/types/beacon/SigningType.js":(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.SigningType = void 0;\nvar SigningType;\n(function (SigningType) {\n SigningType["RAW"] = "raw";\n SigningType["OPERATION"] = "operation";\n SigningType["MICHELINE"] = "micheline"; // "05" prefix\n})(SigningType || (exports.SigningType = SigningType = {}));\n//# sourceMappingURL=SigningType.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-types/dist/cjs/types/beacon/SigningType.js?')},"./packages/beacon-types/dist/cjs/types/beaconV3/PermissionRequest.js":(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\n//# sourceMappingURL=PermissionRequest.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-types/dist/cjs/types/beaconV3/PermissionRequest.js?')},"./packages/beacon-types/dist/cjs/types/storage/Storage.js":(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.Storage = void 0;\n/**\n * @internalapi\n *\n * The storage used in the SDK\n */\nclass Storage {\n /**\n * Returns a promise that resolves to true if the storage option is available on this platform.\n */\n static isSupported() {\n return Promise.resolve(false);\n }\n}\nexports.Storage = Storage;\n//# sourceMappingURL=Storage.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-types/dist/cjs/types/storage/Storage.js?')},"./packages/beacon-types/dist/cjs/types/storage/StorageKey.js":(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.StorageKey = void 0;\n/**\n * @internalapi\n */\nvar StorageKey;\n(function (StorageKey) {\n StorageKey["TRANSPORT_P2P_PEERS_DAPP"] = "beacon:communication-peers-dapp";\n StorageKey["TRANSPORT_P2P_PEERS_WALLET"] = "beacon:communication-peers-wallet";\n StorageKey["TRANSPORT_POSTMESSAGE_PEERS_DAPP"] = "beacon:postmessage-peers-dapp";\n StorageKey["TRANSPORT_POSTMESSAGE_PEERS_WALLET"] = "beacon:postmessage-peers-wallet";\n StorageKey["TRANSPORT_WALLETCONNECT_PEERS_DAPP"] = "beacon:walletconnect-peers-dapp";\n StorageKey["LAST_SELECTED_WALLET"] = "beacon:last-selected-wallet";\n StorageKey["ACCOUNTS"] = "beacon:accounts";\n StorageKey["ACTIVE_ACCOUNT"] = "beacon:active-account";\n StorageKey["PUSH_TOKENS"] = "beacon:push-tokens";\n StorageKey["BEACON_SDK_SECRET_SEED"] = "beacon:sdk-secret-seed";\n StorageKey["APP_METADATA_LIST"] = "beacon:app-metadata-list";\n StorageKey["PERMISSION_LIST"] = "beacon:permissions";\n StorageKey["ONGOING_PROOF_OF_EVENT_CHALLENGES"] = "beacon:ongoing-proof-of-event-challenges";\n StorageKey["BEACON_SDK_VERSION"] = "beacon:sdk_version";\n StorageKey["MATRIX_PRESERVED_STATE"] = "beacon:sdk-matrix-preserved-state";\n StorageKey["MATRIX_PEER_ROOM_IDS"] = "beacon:matrix-peer-rooms";\n StorageKey["MATRIX_SELECTED_NODE"] = "beacon:matrix-selected-node";\n StorageKey["MULTI_NODE_SETUP_DONE"] = "beacon:multi-node-setup";\n StorageKey["WC_2_CORE_PAIRING"] = "wc@2:core:0.3//pairing";\n StorageKey["WC_2_CLIENT_SESSION"] = "wc@2:client:0.3//session";\n StorageKey["WC_2_CORE_KEYCHAIN"] = "wc@2:core:0.3//keychain";\n StorageKey["WC_2_CORE_MESSAGES"] = "wc@2:core:0.3//messages";\n StorageKey["WC_2_CLIENT_PROPOSAL"] = "wc@2:client:0.3//proposal";\n StorageKey["WC_2_CORE_SUBSCRIPTION"] = "wc@2:core:0.3//subscription";\n StorageKey["WC_2_CORE_HISTORY"] = "wc@2:core:0.3//history";\n StorageKey["WC_2_CORE_EXPIRER"] = "wc@2:core:0.3//expirer";\n})(StorageKey || (exports.StorageKey = StorageKey = {}));\n//# sourceMappingURL=StorageKey.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-types/dist/cjs/types/storage/StorageKey.js?')},"./packages/beacon-types/dist/cjs/types/storage/StorageKeyReturnDefaults.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.defaultValues = void 0;\nconst __1 = __webpack_require__(/*! ../.. */ "./packages/beacon-types/dist/cjs/index.js");\n/**\n * @internalapi\n */\nexports.defaultValues = {\n [__1.StorageKey.TRANSPORT_P2P_PEERS_DAPP]: [],\n [__1.StorageKey.TRANSPORT_P2P_PEERS_WALLET]: [],\n [__1.StorageKey.TRANSPORT_POSTMESSAGE_PEERS_DAPP]: [],\n [__1.StorageKey.TRANSPORT_POSTMESSAGE_PEERS_WALLET]: [],\n [__1.StorageKey.TRANSPORT_WALLETCONNECT_PEERS_DAPP]: [],\n [__1.StorageKey.LAST_SELECTED_WALLET]: undefined,\n [__1.StorageKey.ACCOUNTS]: [],\n [__1.StorageKey.ACTIVE_ACCOUNT]: undefined,\n [__1.StorageKey.PUSH_TOKENS]: [],\n [__1.StorageKey.BEACON_SDK_SECRET_SEED]: undefined,\n [__1.StorageKey.APP_METADATA_LIST]: [],\n [__1.StorageKey.PERMISSION_LIST]: [],\n [__1.StorageKey.ONGOING_PROOF_OF_EVENT_CHALLENGES]: [],\n [__1.StorageKey.BEACON_SDK_VERSION]: undefined,\n [__1.StorageKey.MATRIX_PRESERVED_STATE]: {},\n [__1.StorageKey.MATRIX_PEER_ROOM_IDS]: {},\n [__1.StorageKey.MATRIX_SELECTED_NODE]: undefined,\n [__1.StorageKey.MULTI_NODE_SETUP_DONE]: undefined,\n [__1.StorageKey.WC_2_CLIENT_SESSION]: undefined,\n [__1.StorageKey.WC_2_CORE_PAIRING]: undefined,\n [__1.StorageKey.WC_2_CORE_KEYCHAIN]: undefined,\n [__1.StorageKey.WC_2_CORE_MESSAGES]: undefined,\n [__1.StorageKey.WC_2_CLIENT_PROPOSAL]: undefined,\n [__1.StorageKey.WC_2_CORE_SUBSCRIPTION]: undefined,\n [__1.StorageKey.WC_2_CORE_HISTORY]: undefined,\n [__1.StorageKey.WC_2_CORE_EXPIRER]: undefined\n};\n//# sourceMappingURL=StorageKeyReturnDefaults.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-types/dist/cjs/types/storage/StorageKeyReturnDefaults.js?')},"./packages/beacon-types/dist/cjs/types/tezos/OperationTypes.js":(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.TezosOperationType = void 0;\n/**\n * @publicapi\n * @category Tezos\n */\nvar TezosOperationType;\n(function (TezosOperationType) {\n TezosOperationType["ENDORSEMENT"] = "endorsement";\n TezosOperationType["SEED_NONCE_REVELATION"] = "seed_nonce_revelation";\n TezosOperationType["DOUBLE_ENDORSEMENT_EVIDENCE"] = "double_endorsement_evidence";\n TezosOperationType["DOUBLE_BAKING_EVIDENCE"] = "double_baking_evidence";\n TezosOperationType["ACTIVATE_ACCOUNT"] = "activate_account";\n TezosOperationType["PROPOSALS"] = "proposals";\n TezosOperationType["BALLOT"] = "ballot";\n TezosOperationType["REVEAL"] = "reveal";\n TezosOperationType["TRANSACTION"] = "transaction";\n TezosOperationType["ORIGINATION"] = "origination";\n TezosOperationType["DELEGATION"] = "delegation";\n})(TezosOperationType || (exports.TezosOperationType = TezosOperationType = {}));\n//# sourceMappingURL=OperationTypes.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-types/dist/cjs/types/tezos/OperationTypes.js?')},"./packages/beacon-types/dist/cjs/types/transport/TransportStatus.js":(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.TransportStatus = void 0;\nvar TransportStatus;\n(function (TransportStatus) {\n TransportStatus["NOT_CONNECTED"] = "NOT_CONNECTED";\n TransportStatus["CONNECTING"] = "CONNECTING";\n TransportStatus["CONNECTED"] = "CONNECTED";\n})(TransportStatus || (exports.TransportStatus = TransportStatus = {}));\n//# sourceMappingURL=TransportStatus.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-types/dist/cjs/types/transport/TransportStatus.js?')},"./packages/beacon-types/dist/cjs/types/transport/TransportType.js":(__unused_webpack_module,exports)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nexports.TransportType = void 0;\n/**\n * @internalapi\n */\nvar TransportType;\n(function (TransportType) {\n TransportType["CHROME_MESSAGE"] = "chrome_message";\n TransportType["WALLETCONNECT"] = "walletconnect";\n TransportType["POST_MESSAGE"] = "post_message";\n TransportType["LEDGER"] = "ledger";\n TransportType["P2P"] = "p2p";\n})(TransportType || (exports.TransportType = TransportType = {}));\n//# sourceMappingURL=TransportType.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-types/dist/cjs/types/transport/TransportType.js?')},"./packages/beacon-types/dist/cjs/types/ui.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\nObject.defineProperty(exports, "__esModule", ({ value: true }));\nconst NetworkType_1 = __webpack_require__(/*! ./beacon/NetworkType */ "./packages/beacon-types/dist/cjs/types/beacon/NetworkType.js");\n//# sourceMappingURL=ui.js.map\n\n//# sourceURL=webpack://beacon/./packages/beacon-types/dist/cjs/types/ui.js?')},"./packages/beacon-ui/dist/cjs/index.js":(__unused_webpack_module,exports,__webpack_require__)=>{"use strict";eval('\n\nvar web = __webpack_require__(/*! solid-js/web */ "./node_modules/solid-js/web/dist/dev.cjs");\nvar solidJs = __webpack_require__(/*! solid-js */ "./node_modules/solid-js/dist/dev.cjs");\nvar beaconTypes = __webpack_require__(/*! @airgap/beacon-types */ "./packages/beacon-types/dist/cjs/index.js");\nif (web.isServer) {\n web.template = () => {\n return { cloneNode: () => {} }\n }\n }\nvar QRCode = __webpack_require__(/*! qrcode-svg */ "./node_modules/qrcode-svg/lib/qrcode.js");\nvar beaconCore = __webpack_require__(/*! @airgap/beacon-core */ "./packages/beacon-core/dist/cjs/index.js");\nvar beaconTransportPostmessage = __webpack_require__(/*! @airgap/beacon-transport-postmessage */ "./packages/beacon-transport-postmessage/dist/cjs/index.js");\nvar beaconUtils = __webpack_require__(/*! @airgap/beacon-utils */ "./packages/beacon-utils/dist/cjs/index.js");\n\nconst extensionList = [{\n "key": "spire_chrome",\n "id": "gpfndedineagiepkpinficbcbbgjoenn",\n "name": "Spire",\n "shortName": "Spire",\n "color": "",\n "logo": "data:image/png;base64,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",\n "link": "https://spirewallet.com/"\n}, {\n "key": "temple_chrome",\n "id": "ookjlbkiijinhpmnjffcofjonbfbgaoc",\n "name": "Temple Wallet Chrome",\n "shortName": "Temple",\n "color": "",\n "logo": "data:image/png;base64,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",\n "link": "https://templewallet.com/"\n}, {\n "key": "temple_firefox",\n "id": "{34ac229e-1cf5-4e4c-8a77-988155c4360f}",\n "name": "Temple Wallet Firefox",\n "shortName": "Temple",\n "color": "",\n "logo": "data:image/png;base64,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",\n "link": "https://templewallet.com/"\n}];\nconst desktopList = [{\n "key": "infinity_wallet",\n "name": "Infinity Wallet",\n "shortName": "Infinity Wallet",\n "color": "rgb(52, 147, 218)",\n "logo": "data:image/png;base64,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",\n "deepLink": "infinity://",\n "downloadLink": "https://infinitywallet.io/download"\n}, {\n "key": "galleon_desktop",\n "name": "Galleon",\n "shortName": "Galleon",\n "color": "",\n "logo": "data:image/png;base64,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",\n "deepLink": "galleon://",\n "downloadLink": "https://cryptonomic.tech/galleon.html"\n}, {\n "key": "umami_desktop",\n "name": "Umami",\n "shortName": "Umami",\n "color": "",\n "logo": "data:image/png;base64,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",\n "deepLink": "umami://",\n "downloadLink": "https://umamiwallet.com/#download"\n}, {\n "key": "atomex_desktop",\n "name": "Atomex Wallet",\n "shortName": "Atomex",\n "color": "",\n "logo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAWgUlEQVR4Ae3BCXxV9YH34e/535PkZl/IAglJCDthF1kqFGhZBNxQxKWO+raOtaOtVqt2qtZSa2tt3ajdnNaqnapVQR0UlB0EAQGRRTYJSwhbgOzrTXLvGTvvxxnAiEAhuSfn9zyW8ylExJMMIuJZBhHxLIOIeJZBRDzLICKeZRARzzKIiGcZRMSzDCLiWQYR8SyDiHiWQUQ8yyAinmUQEc8yiIhnGUTEswwi4lkGEfEsg4h4lkFEPMsgIp5lEBHPMoiIZxlExLMMIuJZBhHxLIOIeJZBRDzLICKeZRARzzKIiGcZRMSzDCLiWQYR8SyDiHiWQUQ8yyAinmUQEc8yiIhnGUTEswwi4lkGEfEsg4h4lkFEPMsgIp5lEBHPMoiIZxlExLMMIuJZBhHxLIOIeJZBRDzLICKeZRARzzKIiGcZRMSzDCLiWQYR8SyDiHiWQUQ8yyAinmUjntHUFKLwQAWf7C7l4JFqSsvraAyGiIzwkRQfRcf2CXTrlEJOhwRs2yBtn420aXX1Tcx/fxfvvreLlev3U1pex5dplxzNsAFZXDSqK2OHdyIq0kbaJhtpk0rK6/jzq+t5+a3NlFXWczpKyuqYvbiA2YsLSEmK5vrL+vCtK/uTlOBH2hYbaVOamkI8//pGpr+whsrqAP+s0vI6pr+whudnbuQH/zqMf7msDz5jIW2DjbQZe/ZXcPcjC1iz6SBnW0V1gAefWsqcJQU8cd9YsjLiEfczSJuw/MMiptw2kzWbDnIurVq/n8n/NoO1mw4i7mcQ11uwYg/fvn8OR8tqaQmHS2q44d5ZLFyxB3E3g7ja8rVF3P6zedTUNdKSamobuf1n81iz6SDiXgZxrd37yrnj4fnU1DbQGqprG7ht2rsUHaxE3MkgrhRoCHLXLxZwtKyW1lR8tIZ7H11EY1MIcR+DuNILr29k3eZDhIMVH+3jpVkfI+5jENc5UlrLb/+2lnAy/YU1lJTVIe5iENf5y4wNVFQFCCcl5XX8ZeYGxF0M4ipVNQ28/NZmwtErs7dQW9+IuIdBXGXe8l2UVdYTjo6U1rJo5R7EPQziKrOXFBDO5i7bhbiHQVyjoTHImo0HCWfL1+4j5DiIOxjENQoKy6iqaSCclVXWsbuoHHEHg7jGjsJSHMchnDkOFBSWIe5gENc4UFyFG+wvrkLcwSCuUV4ZwA0qqgKIOxjENeoDTbhBfUMT4g4GcQ1/lI0bREX4EHcwiGskxkfhBskJfsQdDOIamenxuEGH9HjEHQziGl1zk7Esi3BmWdA9LwVxB4O4RrdOKcTFRBDOkuL9dMpKRNzBIK4RFeljSP9MwtnwQdkYYyHuYBBXmTiyC+Fs4sjOiHsYxFXGjehMUoKfcJSSGM3Xv9IJcQ+DuEpSfBRTLuxJOPqXy/oQEx2BuIdBXOfmqwaQGB9FOElK8PPNKf0QdzGI63RIj+M7155HOLnjxsGkJEUj7mIQV7pp6gD698wgHAzu24HrJ/dF3McgrhQV6eOpB8aRnOinNaUmx/DE/eOIsA3iPgZxrc7ZSUx/YBzRfpvWEOOP4Pc/nUBOhwTEnQziaqOG5PL0gxcS7bdpSTH+CH7z4/EM7Z+JuJdBXG/c8Dye+dkkUpKiaQmpyTE89+jFjBuRh7ibQdqEUUNymPnbKQzMb8+5NKR/Jq//bgrDBmQh7mcjbUbn7CRemT6ZZ1/bwB9eWkdldYCzJSnBz+03DOb6yX2IjPAhbYONtClRkTa3XjeIKRf25C8zN/D3t7dQXlnPmUpJiuaai/L51pX9SUuJQdoWG2mTMlJj+dEtF/Bv157HwpV7mLNkJ2s/PkhlVYCQ4/BFjLFIjIticL9MLhrdhTEX5BEfG4m0TTbSpiUl+JlyYU+mXNiTuvomdhWVs3NvGfsOVVJZHSAYcvAZi6QEP1kZ8XTNTaZzdjJRkT6k7bMRVzpaVsvGbYdpnxZHry6pWBZfKtpv07tbKr27pSLyDzbiOm8t2sG9jy6itr4Ry4JJo7ry1APjiIzwIXI6DOIqG7Yd5u5fLqS2vpF/cByYvaSAV2ZvQeR0GcQ1Ssrr+O60d6kPNHGiDzYcQOR02YgrBIMOd/9yIXsPVtKczPR4zqWKqgDP/H0d67cU0yUnmW9fM5DsDgmIu9mIK/zuxbUsWrmH5qSlxPDNKf04VxqbQtxwzyzWby3mH95ft48FK3bz5h+mkpEai7iXQcLesjV7mf78GpoTEeHj1z8cQ4f0OM6VFev2sX5rMcc6cLial97ajLibQcJa0aFK7vrFApqCIZrzvevPZ/SwXM6l0vI6mvPG/O0EGoKIexkkbNUHmvj+w/M5XFpLc8Zc0Ilbv3EeFufWkP6Z+HwWJyrcX8Gq9fsR9zJIWHIch0f/YyVrNx2kObmZiTx6z9eJiPBxrmVlxDP8vGya88qcLYh7GSQszVq4g+df30hz/FE20388nrSUGFrKNRfn05wlqwo5UlqLuJNBws4nu0t54MmlhEIOzXngthEMzM+gJY29II+UxGhOVFPXyH8t+ARxJ4OElcrqALdNe5fK6gDNmTqxF9dd2puWFhXp4/Lx3WnOjHe3EQo5iPsYJGyEQg73P7GET/aU0pz8rqn89PavYiyL1nDlhF4YY3GiT3aX8NGWYsR9DBI2npu5kbcWFdCc+LhIfjdtArExkbSWXl1T6d8zgxMFQw4z525D3McgYWH1xgP86k8rcRyHExlj8eg9X6dzdhKtyQKmTuxJc95evIOqmgbEXQzS6g6X1HDnz+dTH2iiOf86dQCTRnUlHFw0uivxsZGcqKIqwNxluxB3MUirCoUc7vrFAvYdqqI5XxmYxT03D8OyCAtJCX7Gj+hMc16ZvQVxF4O0qpXr97P8wyKa0z41lifvG0dkhI9wcvVF+RhjcaIPNx+ioLAMcQ+DtKoDxVU4Dp8TGenj8fvG0iE9jnAzqE978jomcaJgMMRr72xF3MMgrWpgfga2z3Asy4I7/98QRgzKJhzZPsNVE3vRnDfmb6exKYS4g0FaVdfcFP79OxcQGeHjH4yx+MYlfbjlmoGEs0vGdMMfZXOi4qM1LF61B3EHGzltjuOwe18FBYVlFB+tpqqmAceB2JgIMtrFkpedRNecZGzbcCpuvmoAF47IY+vOEnIyE+jVJZVwl5URz8jBOcxbvosTvfbOVsaP6IyEPxs5JXX1TSxYsZs5S3by/roiKqoCnEy032bYgCzGDc9j0uiuJCf4OZmczERyMhNxk6sm9WLe8l2caOHKQoqP1pCRGouENxs5qfKqAM/N2MBf39xEaXkdp6quvonFqwpZvKqQn//+fa6alM+3rx5AZkY8bcVXz8+mY/t49h2q4ljBYIiZc7dx63WDkPDmm/Yp5HOCIYcZ72zjlh/PYdHKPdTVN3GmGptCrN9azN9nbyHkwIBeGdg+g9vZtuFIaS1rNx3kRBVVAa69pDeWZSHhyyCfU1pex60PvsO9v1rEkdJazpaa2kYe+/MqvnHnm+w9UElbMGVCT2zbcKLKqgBOyEHCm0GOs6uonGu+/ybvLtuF4zicC2s/PsgVt81g/dZi3K5LTjIjBnXkRKOG5uLzGSS8GeR/7Soq54a7Z7F9dwnn2pHSWm64ZxYfbTmEmxnL4pEffI3z+3TAZyxsn2H00FzuvXkYEv5s5H+UlNdxy4/nUHSokpZSURXgWz+azYynr6BLTjJulZkRz6u/uZyiQ1X4jEVWRjzGWEj4MwjBYIh7f7WIT3aX0tJKy+u47adzqalrxM18PkOnrESyOyRgjIW4g0F46e3NLFyxm9ayteAojz/7ASItzeBxpRV1PPbnD3AcWtV/vrmJrTuPItKSDB737KsbKK+sp7U1NAZ5/NkPcBxEWozBw6prG3j+jY2EiyUfFLKjsBSvaGgIUlXTQFVNA4GGINLybDxs9uICqmsaCBeNTSFen7uNf7/lAtqS2vpGNm47zIcfH+LjHUfYs6+cA8VV1NY34fD/WUCM36ZDejx5HZPo0z2N83q3p1+PdGJjIpBzw8bD5izdSbiZt3w3d980DNs2uFmgoYn31hTx+tztrPhoHxVV9TgOJ9XQGKS8KsDWnUeZs7QAy4L42ChGDs7m0jHdGTUkB3+UjZw9Nh4VaGhizaYDhJs9+ysoOlRJXsck3KiiKsDLb2/mxVmbKTpYgeNwxhwHKqsDvL24gNmLC8hqH88Nk/ty7SW9SYiLQv55Nh61Y08ZNbWNhJtgMMTGbYfJ65iEmzQ2hXh97jaeeG41h45Uc7Y5wL5DVfzijyt49rUNfP+bQ7hyQk8iI3zImbPxqILCMsLVzr1luElBYRkPPLmUlR/toyUUl9Rw32OLeWP+dn5+12i6d0pBzozBow4eqSZcHThcjRs4jsPr87Zz+a0zWPnRPlqSA6zecIApt81k5rvbCDkOcvpsPKqqOkC4qqppINwFgyEee/YDnnl5HcGQQ2uprA5w9y8Xsn1PKffePAzbZ5BTZ/CokOMQrkKhEOEsGAzx4PT3+MOLHxIMObS2kOPwzMvruO/xJQSDIeTUGTwqJjqCcBUbE0m4CoUcpj29jL/918c4hJdXZm/hR48vwXEc5NTYeFR6SizhKi05hhPVB5qY/sIaVn60n3bJ0YwcnM2owbl06phIS3r6P9fy1zc2Ea5emb2F9qmx3PWtociXs/GoTh0TCVd52Ukcy3Hg9p/NY+6yXXxmwfu7MZZFp46JjBqay9eG5nJ+3w7ERkdwrsx/fzdPPb+acPf0X9eS3y2NCV/tjJycjUfld03F9hmagiHCiWVBn+5pHGvvgQrmLdvFiUKOw66icnYVlfPcjA3ExUQypF8mo4flMmJQNp2zE7Esi7Ph0NEafvjrRYRCDuEu5Dj86LHF9OuRTmZ6HPLFbDwqPjaKPj3SWL+lmHCSlhJL19xkjlVZHcDhy1XXNrBo1R4WrdqD7TPkZiUyakgOo4fmcl5+e+LjIjkTjgM/mf4eJWV1uEVpeR3TfvMef3xoIsZYSPNsPMqyYNwFeazfUkw4GTk4mxh/BMfq2aUd2R0SKDpYyalqCobYubeMnXvL+MuMDSTERXF+3w6MHpLDiPOz6dQxCZ+xOBVLVxcyd9lO3Gbe8l0sWrmHscPzkOb5pn0Kj8pqH88Lr28i5DiEAwu4/9bh5GQmciyfMQzpl8naTQcprajnTAQaguzeV87iDwp5cdZm3lq0gz37KrAsi9TkaCIjfDSnKRji9ofmUVxSixvt3FvO1Im98PkM8nm+aZ/CoxLioti68ygFhWWEg3490vnBTcPwGYsTpbeL5ZqL8xk/Io/M9HgCjUHKK+ppCoY4XSHHobSino+2FPPG/O3MnLuN7nnt6JSVyInmv7+bZ1/bgFsdKa2lV5dUundKQT7PN+1TeFjn7GRenbOFUMihNVmWxUN3jKJHXgpfxOczZKTGMrR/JldflM/Uib3o1zOdaH8EpRV11NU14XD6amobWf5hEVdflI8/yuYzIcfhJ0+9R9HBStzsaFktUyb0xLIs5Hg2HpffNZXrLuvD8zM30ppGDclh/Ig8TkdGaiyXjunOpWO609gYZHPBUZau3svSDwrZ9MkRGhqDnKojpbVsKTjKVwZm8ZndReWs2rAft1v78SEK9pTRPS8FOZ6NcM9Nw3hv9V52FZXTGpIS/Dx85yiMsThTERE+BvTKYECvDO64cTBHSmtZ8dE+lqwqZNnaIo6W1eE4DieTlODnWHOW7iQYdHC7YDDEO+/tpHteCnI8GyEuNpKnH7yQq+94g+raBlqSsSx+/cOvk90hgbMpLSWGy8Z057Ix3QkGQ3z8yRGWrN7L0g8KWb+1mGDI4Vhjh+fRPS+FzziOw8IVe2gr5i/fzR03DkaOZyP/o0/3NJ68fyzf/elcAg1BWoJlwUN3jmL8iM6cSz6foX+vDPr3yuCOGwdTVlHPsrVFLF1dyOGSWoYNyOKmqf3xGYvPlFXWs3XnUdqKHYWlFJfUkNEuFvk/NvK/xo/ozPQHxnPXIwuorWvkXPIZi5/cPpLrL+tDS0tO9HPpmG5cOqYbX2RLwVHqA020FfWBJrYWHCWjXSzyfwxynImjuvC3xy6jY/t4zpWkBD+/nTaBGy/vS7jatquEtmb77lLkeAb5nEF92vPmH6Zyxfge+IzF2WJZMHxQR978/ZVMGtWFcFa4v4K2Zs++cuR4NtKstJQYHr9vLFdO6MkTz61m3eZDhEIOZ8ICuuWl8L3rBzNpdBdsnyHcFR+toa0pLqlBjmcjX8hYFsMHZTNsYEc+3HSQmXO3sWhVIUdKa3AcvlRifBQXnNeRqy/K54KBHYmK9OEWldUB2prKqgbkeDbypXzGYkj/TIb0z6Qu0MT2nSVs3H6YHYWlHC6poaq6gZDjEBcTSVq7GPI6JjGgVwY9O7cjIS4KN6oPBGlr6gKNyPFs5LRER9kMyM9gQH4GbZltG9oa22eQ4xlEmhHjt2lrYqIjkOMZRJrRLimatqZdUjRyPINIM7Iy4mlrstrHI8cziDSja24KbU233BTkeAaRZvTunkpbYlkWvbulIccziDQjp0MimelxtBVpKTHkdUxEjmcQaUZUpI+vDOxIWzG0fyb+KBs5nkHkC0wY2Zm2YsLILsjnGUS+wFfPzyGjXSxul5YSw+ihOcjnGUS+QLTf5ooLe+J2k8d2Jy4mEvk8g8hJ3HB5X2L8EbhVjD+CG6/ohzTPIHISmelxfOPS3rjV1Em9yO6QgDTPIPIlvnfD+aSlxOA27ZKiuePGwcgXM4h8iaR4P/ffOhy3uf/W4bRLika+mEHkFFw+rgeXje2OW1z8tW5cPr4HcnIGkVP08J2j6NG5HeGuS04yj9w9GmNZyMkZRE5RQlwUzzw0kYzUWMJVersY/uPhSSTERSFfziByGvKyk/jTzyeRkugn3CQl+Hn2kYvpmpuMnBqDyGnq3zODv/76UrLaxxMu2qfF8eITl9GvRzpy6gwiZ6Bvj3RefnIy/Xtl0Nr69kjn1emX06dbGnJ6DCJnKDczkZefnMz1k/vi81m0NJ/PcN2lffj7U5PJzUpETp+NyD8hNjqCh+8cxbjheTz022UUFJbREjpnJ/Hgd7/K6KG5WBZyhmxEzoJRQ3KY/aereXHWZv748joOl9RwLrRPi+OWawZy7cW9ifbbyD/HRuQs8UfZ3DS1P9deks+shTt4adbHbNh2mLOhb490rru0N5PH9iDabyNnh43IWRbjj+Cai/K55qJ8du4tY/77u1m2toiN2w5TWR3gVMTHRtKvZzojBmUzYWQXOmcnIWefjcg51CUnmS45yXzn2vNobApRdKCCXfsqOHC4ivLKemrrmrAsiPbbJCf46ZAeT6esRHKzEomwDXJu2Yi0kAjb0Dknmc45yUh4MIiIZxlExLMMIuJZBhHxLIOIeJZBRDzLICKeZRARzzKIiGcZRMSzDCLiWQYR8SyDiHiWQUQ8yyAinmUQEc8yiIhnGUTEswwi4lkGEfEsg4h4lkFEPMsgIp5lEBHPMoiIZxlExLMMIuJZBhHxLIOIeJZBRDzLICKeZRARzzKIiGcZRMSzDCLiWQYR8SyDiHiWQUQ8yyAinmUQEc8yiIhnGUTEswwi4lkGEfEsg4h4lkFEPMsgIp5lEBHPMoiIZxlExLMMIuJZBhHxLIOIeJZBRDzLICKeZRARzzKIiGcZRMSzDCLiWQYR8SyDiHjWfwNu/eoxBL4OFgAAAABJRU5ErkJggg==",\n "deepLink": "atomex://",\n "downloadLink": "https://atomex.me/"\n}];\nconst webList = [{\n "key": "metamask_tezos_web",\n "name": "MetaMask",\n "shortName": "MetaMask",\n "color": "",\n "logo": "data:image/png;base64,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",\n "links": {\n "mainnet": "https://metamask.tezos.com/",\n "ghostnet": "https://metamask.tezos.com/",\n "weeklynet": "https://metamask.tezos.com/",\n "dailynet": "https://metamask.tezos.com/",\n "delphinet": "https://metamask.tezos.com/",\n "edonet": "https://metamask.tezos.com/",\n "florencenet": "https://metamask.tezos.com/",\n "granadanet": "https://metamask.tezos.com/",\n "hangzhounet": "https://metamask.tezos.com/",\n "ithacanet": "https://metamask.tezos.com/",\n "jakartanet": "https://metamask.tezos.com/",\n "kathmandunet": "https://metamask.tezos.com/",\n "limanet": "https://metamask.tezos.com/",\n "mumbainet": "https://metamask.tezos.com/",\n "nairobinet": "https://metamask.tezos.com/",\n "oxfordnet": "https://metamask.tezos.com/"\n }\n}, {\n "key": "kukai_web",\n "name": "Kukai Wallet",\n "shortName": "Kukai",\n "color": "",\n "logo": "data:image/png;base64,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",\n "links": {\n "mainnet": "https://wallet.kukai.app",\n "ghostnet": "https://ghostnet.kukai.app",\n "weeklynet": "https://weeklynet.kukai.app",\n "dailynet": "https://dailynet.kukai.app",\n "delphinet": "https://testnet.kukai.app",\n "edonet": "https://edonet.kukai.app",\n "florencenet": "https://florencenet.kukai.app",\n "granadanet": "https://granadanet.kukai.app",\n "hangzhounet": "https://hangzhounet.kukai.app",\n "ithacanet": "https://ithacanet.kukai.app",\n "jakartanet": "https://jakartanet.kukai.app",\n "kathmandunet": "https://kathmandunet.kukai.app",\n "limanet": "https://limanet.kukai.app",\n "mumbainet": "https://mumbainet.kukai.app",\n "nairobinet": "https://nairobinet.kukai.app",\n "oxfordnet": "https://oxfordnet.kukai.app"\n }\n}, {\n "key": "tzsafe",\n "name": "TzSafe",\n "shortName": "TzSafe",\n "color": "rgb(235, 52, 72)",\n "logo": "data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNjAwIiBoZWlnaHQ9IjYwMCIgdmlld0JveD0iMCAwIDYwMCA2MDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxyZWN0IHdpZHRoPSI2MDAiIGhlaWdodD0iNjAwIiBmaWxsPSIjRjE0RDVBIi8+CjxwYXRoIGQ9Ik0zNDEuMTY4IDQxMi41Mkg1MDkuMjkxVjQ0Ni43QzUwOS4yOTEgNDU0LjYzMSA1MTUuNzEzIDQ2MS4wNTEgNTIzLjY0NyA0NjEuMDUxQzUzMS41ODEgNDYxLjA1MSA1MzguMDA0IDQ1NC42MzEgNTM4LjAwNCA0NDYuN1YzOTguMTY5QzUzOC4wMDQgMzkwLjIzNyA1MzEuNTgxIDM4My44MTcgNTIzLjY0NyAzODMuODE3SDM0MC44ODRDMzM3Ljc2OCAzNTUuOTY0IDMyNi4zMzkgMzMwLjU2NSAzMDkuMjQzIDMxMC4wNzZMMzYxLjA5NyAyNTguMjRMMzk5LjkxNiAyOTcuMDQ2QzQwMi43NSAyOTkuODc5IDQwNi40MzMgMzAxLjI5NSA0MTAuMTE3IDMwMS4yOTVDNDEzLjgwMSAzMDEuMjk1IDQxNy40ODQgMjk5Ljg3OSA0MjAuMzE4IDI5Ny4wNDZDNDI1Ljg5IDI5MS40NzYgNDI1Ljg5IDI4Mi4zMTcgNDIwLjMxOCAyNzYuNzQ2TDM4MS40OTggMjM3Ljk0TDQyOS4xOTYgMTkwLjI1OUw0NjguMDE2IDIyOS4wNjVDNDczLjU4OCAyMzQuNjM2IDQ4Mi43NSAyMzQuNjM2IDQ4OC4zMjIgMjI5LjA2NUM0OTMuODk1IDIyMy40OTQgNDkzLjg5NSAyMTQuMzM2IDQ4OC4zMjIgMjA4Ljc2NUw0MzkuMzk3IDE1OS44NTZDNDMzLjgyNCAxNTQuMjg2IDQyNC42NjIgMTU0LjI4NiA0MTkuMDkgMTU5Ljg1NkwzNTEuMDg1IDIyNy44MzhMMjg4LjY1MyAyODkuOTY1QzI2OC4wNjMgMjczLjcyNSAyNDIuNzUgMjYzLjE1IDIxNS4xNyAyNjAuNjAxVjE5Ni40OTFIMjMwLjI4MkMyMzguMjE2IDE5Ni40OTEgMjQ0LjYzOSAxOTAuMDcgMjQ0LjYzOSAxODIuMTM5QzI0NC42MzkgMTc0LjIwOCAyMzguMjE2IDE2Ny43ODcgMjMwLjI4MiAxNjcuNzg3SDIxNS4xN1YxNDIuMTA2SDI0MC40ODNDMjQ4LjQxNyAxNDIuMTA2IDI1NC44NCAxMzUuNjg1IDI1NC44NCAxMjcuNzU0QzI1NC44NCAxMTkuODIzIDI0OC40MTcgMTEzLjQwMiAyNDAuNDgzIDExMy40MDJIMjE1LjE3Vjg5LjcwMzJIMjcwLjA0NkMyNzcuOTggODkuNzAzMiAyODQuNDAzIDgzLjI4MjggMjg0LjQwMyA3NS4zNTE2QzI4NC40MDMgNjcuNDIwNSAyNzcuOTggNjEgMjcwLjA0NiA2MUgyMDAuODE0QzE5Mi44OCA2MSAxODYuNDU3IDY3LjQyMDUgMTg2LjQ1NyA3NS4zNTE2VjI2MC45NzhDMTE2Ljk0MSAyNjguOTEgNjIuODIwOCAzMjguMDE2IDYyLjgyMDggMzk5LjQ5QzYyLjgyMDggNDc2LjM0NyAxMjUuNDQyIDUzOC45NDcgMjAyLjMyNSA1MzguOTQ3QzI3NC44NjMgNTM4Ljk0NyAzMzQuNTU2IDQ4My4zMzQgMzQxLjE2OCA0MTIuNTJaTTIwMi4zMjUgNTEwLjI0M0MxNDEuMjE1IDUxMC4yNDMgOTEuNTMzOSA0NjAuNTc5IDkxLjUzMzkgMzk5LjQ5QzkxLjUzMzkgMzM4LjQwMiAxNDEuMjE1IDI4OC43MzggMjAyLjMyNSAyODguNzM4QzI2Mi43NzQgMjg4LjczOCAzMTIuMDc3IDMzNy40NTcgMzEzLjExNiAzOTcuNjAyQzMxMy4xMTYgMzk3Ljc5MSAzMTMuMTE2IDM5Ny45OCAzMTMuMTE2IDM5OC4wNzRDMzEzLjExNiAzOTguMzU3IDMxMy4xMTYgMzk4LjY0MSAzMTMuMTE2IDM5OC45MjRDMzEzLjExNiAzOTkuMTEzIDMxMy4xMTYgMzk5LjMwMiAzMTMuMTE2IDM5OS4zOTZDMzEzLjAyMSA0NjAuNTc5IDI2My4zNCA1MTAuMjQzIDIwMi4zMjUgNTEwLjI0M1oiIGZpbGw9IndoaXRlIi8+CjxwYXRoIGQ9Ik0yMDcuMjM2IDQ4Ny4zQzIxMS4yOTggNDg1LjYgMjE0Ljk4MSA0ODMuMDUxIDIxOC4yODcgNDc5Ljg0MUwyMTguNTcgNDc5LjY1MkwyMTguNzU5IDQ3OS40NjNMMjE4Ljg1NCA0NzkuMzY5TDIxOS4wNDMgNDc5LjE4TDIxOS4xMzcgNDc5LjA4NUwyMTkuNjA5IDQ3OC42MTNMMjE5LjcwNCA0NzguNTE5TDIxOS44OTMgNDc4LjMzTDIxOS45ODcgNDc4LjIzNkwyMjAuMTc2IDQ3OC4wNDdMMjIwLjI3IDQ3Ny45NTJDMjIzLjI5MyA0NzQuNzQyIDIyNi4wMzIgNDcxLjE1NCAyMjguMzkzIDQ2Ny4xODlMMjI5Ljk5OSA0NjcuMDk0QzIzMS40MTYgNDY3IDIzMi43MzggNDY2LjcxNiAyMzQuMDYgNDY2LjI0NEMyMzMuMTE2IDQ2OC4wMzggMjMyLjA3NyA0NjkuODMyIDIzMC45NDMgNDcxLjYyNkMyMjkuNzE2IDQ3My42MDkgMjMxLjY5OSA0NzUuOTY5IDIzMy43NzcgNDc1LjEyTDI2MS4xNjggNDYzLjk3OEMyNjQuNjYyIDQ2Mi41NjIgMjY3LjExOCA0NjAuMTA3IDI2OC41MzUgNDU2LjYxNEMyNzAuMTQxIDQ1Mi41NTQgMjcwLjk5MSA0NDguMTE2IDI3MS4wODUgNDQzLjQ4OVY0NDMuMjA2VjQ0Mi45MjNWNDQyLjgyOVY0NDIuNTQ1VjQ0Mi40NTFWNDQxLjY5NlY0NDEuNTA3VjQ0MS4zMThWNDQxLjIyM1Y0NDEuMDM1VjQ0MC45NEMyNzAuOTkxIDQzNi41OTcgMjcwLjMzIDQzMi4wNjUgMjY5LjE5NiA0MjcuNjI3TDI3MC4yMzUgNDI2LjRDMjcxLjE4IDQyNS4zNjEgMjcxLjkzNSA0MjQuMjI4IDI3Mi41MDIgNDIzLjAwMUMyNzMuMTYzIDQyNC45ODMgMjczLjYzNSA0MjYuOTY2IDI3NC4xMDggNDI4Ljk0OUMyNzQuNTggNDMxLjIxNSAyNzcuNjk3IDQzMS40OTggMjc4LjY0MSA0MjkuNDIxTDI5MC4xNjQgNDAyLjIyOUMyOTEuNTgxIDM5OC43MzUgMjkxLjU4MSAzOTUuMjQyIDI5MC4xNjQgMzkxLjc0OEMyODguNDY0IDM4Ny42ODggMjg1LjkxNCAzODQuMDA2IDI4Mi43MDMgMzgwLjcwMUwyODIuNTE0IDM4MC40MThMMjgyLjMyNSAzODAuMjI5TDI4Mi4wNDEgMzgwLjA0TDI4MS44NTMgMzc5Ljg1MUwyODEuNzU4IDM3OS43NTdMMjgxLjI4NiAzNzkuMjg1TDI4MS4xOTEgMzc5LjE5TDI4MS4wMDIgMzc5LjAwMkwyODAuOTA4IDM3OC45MDdMMjgwLjcxOSAzNzguNzE4TDI4MC42MjUgMzc4LjYyNEMyNzcuNDEzIDM3NS42MDMgMjczLjgyNCAzNzIuODY0IDI2OS44NTcgMzcwLjU5OEwyNjkuNzYzIDM2OC45OTNDMjY5LjY2OCAzNjcuNTc3IDI2OS4zODUgMzY2LjI1NSAyNjguOTEzIDM2NS4wMjhDMjcwLjcwNyAzNjUuOTcyIDI3Mi41MDIgMzY3LjAxIDI3NC4yOTYgMzY4LjE0M0MyNzYuMjggMzY5LjM3MSAyNzguNjQxIDM2Ny4zODggMjc3Ljc5MSAzNjUuMzExTDI2Ni42NDYgMzM3LjkzQzI2NS4yMjkgMzM0LjQzNiAyNjIuNzczIDMzMS45ODEgMjU5LjI3OSAzMzAuNTY1QzI1NS4yMTcgMzI4Ljk2IDI1MC43NzggMzI4LjExIDI0Ni4xNSAzMjguMDE2SDI0NS44NjdIMjQ1LjU4M0gyNDUuNDg5SDI0NS4yMDZIMjQ1LjExMUgyNDQuMzU1SDI0NC4xNjdIMjQzLjk3OEgyNDMuODgzSDI0My42OTRIMjQzLjZDMjM5LjI1NSAzMjguMTEgMjM0LjcyMiAzMjguNzcxIDIzMC4yODIgMzI5LjkwNEwyMjkuMDU0IDMyOC44NjVDMjI4LjAxNSAzMjcuOTIxIDIyNi44ODIgMzI3LjE2NiAyMjUuNjU0IDMyNi41OTlDMjI3LjYzOCAzMjUuOTM4IDIyOS42MjEgMzI1LjQ2NiAyMzEuNjA1IDMyNC45OTRDMjMzLjg3MSAzMjQuNTIyIDIzNC4xNTUgMzIxLjQwNiAyMzIuMDc3IDMyMC40NjJMMjA0Ljg3NSAzMDguOTQzQzIwMS4zOCAzMDcuNTI3IDE5Ny44ODYgMzA3LjUyNyAxOTQuMzkxIDMwOC45NDNDMTkwLjMzIDMxMC42NDMgMTg2LjY0NiAzMTMuMTkyIDE4My4zNCAzMTYuNDAyTDE4My4wNTcgMzE2LjU5MUwxODIuODY4IDMxNi43OEwxODIuNzczIDMxNi44NzRMMTgyLjU4NSAzMTcuMDYzTDE4Mi40OSAzMTcuMTU3TDE4MS45MjMgMzE3LjcyNEwxODEuODI5IDMxNy44MThMMTgxLjY0IDMxOC4wMDdMMTgxLjU0NiAzMTguMTAyTDE4MS4zNTcgMzE4LjI5TDE4MS4yNjIgMzE4LjM4NUMxNzguMjQgMzIxLjU5NSAxNzUuNTAxIDMyNS4xODMgMTczLjIzNCAzMjkuMTQ5TDE3MS42MjggMzI5LjI0M0MxNzAuMjExIDMyOS4zMzcgMTY4Ljg4OSAzMjkuNjIxIDE2Ny41NjcgMzMwLjA5M0MxNjguNTExIDMyOC4yOTkgMTY5LjU1IDMyNi41MDUgMTcwLjY4NCAzMjQuNzExQzE3MS45MTIgMzIyLjcyOCAxNjkuOTI4IDMyMC4zNjggMTY3Ljg1IDMyMS4yMTdMMTQwLjQ1OSAzMzIuMzU5QzEzNi45NjUgMzMzLjc3NSAxMzQuNTA5IDMzNi4yMyAxMzMuMDkyIDMzOS43MjNDMTMxLjQ4NyAzNDMuNzgzIDEzMC42MzcgMzQ4LjIyMSAxMzAuNTQyIDM1Mi44NDhWMzUzLjEzMVYzNTMuNDE0VjM1My41MDlWMzUzLjc5MlYzNTMuODg2VjM1NC42NDJWMzU0LjgzVjM1NS4wMTlWMzU1LjExNFYzNTUuMzAzVjM1NS4zOTdDMTMwLjYzNyAzNTkuNzQgMTMxLjI5OCAzNjQuMjcyIDEzMi40MzEgMzY4LjcxTDEzMS4zOTIgMzY5LjkzN0MxMzAuNDQ4IDM3MC45NzYgMTI5LjY5MiAzNzIuMTA5IDEyOS4xMjUgMzczLjMzNkMxMjguNDY0IDM3MS4zNTQgMTI3Ljk5MiAzNjkuMzcxIDEyNy41MiAzNjcuMzg4QzEyNy4wNDcgMzY1LjEyMiAxMjMuOTMxIDM2NC44MzkgMTIyLjk4NiAzNjYuOTE2TDExMS40NjMgMzk0LjEwOUMxMTAuMDQ2IDM5Ny42MDIgMTEwLjA0NiA0MDEuMDk2IDExMS40NjMgNDA0LjU4OUMxMTMuMTYzIDQwOC42NDkgMTE1LjcxMyA0MTIuMzMxIDExOC45MjUgNDE1LjYzNkwxMTkuMTEzIDQxNS45MTlMMTE5LjMwMiA0MTYuMTA4TDExOS4zOTcgNDE2LjIwM0wxMTkuNTg2IDQxNi4zOTFMMTE5LjY4IDQxNi40ODZMMTIwLjE1MiA0MTYuOTU4TDEyMC4yNDcgNDE3LjA1MkwxMjAuNDM2IDQxNy4yNDFMMTIwLjUzIDQxNy4zMzZMMTIwLjcxOSA0MTcuNTI0TDEyMC44MTQgNDE3LjYxOUMxMjQuMDI1IDQyMC42NCAxMjcuNjE0IDQyMy4zNzggMTMxLjU4MSA0MjUuNjQ0TDEzMS42NzUgNDI3LjI0OUMxMzEuNzcgNDI4LjY2NiAxMzIuMDUzIDQyOS45ODggMTMyLjUyNiA0MzEuMjE1QzEzMC43MzEgNDMwLjI3MSAxMjguOTM2IDQyOS4yMzIgMTI3LjE0MiA0MjguMDk5QzEyNS4xNTggNDI2Ljg3MiAxMjIuNzk3IDQyOC44NTUgMTIzLjY0NyA0MzAuOTMyTDEzNC43OTIgNDU4LjMxM0MxMzYuMjA5IDQ2MS44MDcgMTM4LjY2NSA0NjQuMjYyIDE0Mi4xNiA0NjUuNjc4QzE0Ni4yMjEgNDY3LjI4MyAxNTAuNjYgNDY4LjEzMyAxNTUuMjg4IDQ2OC4yMjdIMTU1LjU3MkgxNTUuODU1SDE1NS45NDlIMTU2LjIzM0gxNTYuMzI3SDE1Ny4wODNIMTU3LjI3MkgxNTcuNDYxSDE1Ny41NTVIMTU3Ljc0NEgxNTcuODM4QzE2Mi4xODMgNDY4LjEzMyAxNjYuNzE3IDQ2Ny40NzIgMTcxLjE1NiA0NjYuMzM5TDE3Mi4zODQgNDY3LjM3N0MxNzMuNDIzIDQ2OC4zMjIgMTc0LjU1NiA0NjkuMDc3IDE3NS43ODQgNDY5LjY0M0MxNzMuODAxIDQ3MC4zMDQgMTcxLjgxNyA0NzAuNzc2IDE2OS43MzkgNDcxLjI0OUMxNjcuNDcyIDQ3MS43MjEgMTY3LjE4OSA0NzQuODM2IDE2OS4yNjcgNDc1Ljc4MUwxOTYuNDY5IDQ4Ny4zQzIwMC4yNDcgNDg4LjgxIDIwMy43NDIgNDg4LjgxIDIwNy4yMzYgNDg3LjNaTTI0My42IDQzMy40ODFWNDMzLjc2NFY0MzMuOTUzQzI0My42IDQzMy45NTMgMjQzLjYgNDM0LjA0OCAyNDMuNiA0MzQuMTQyVjQzNC4yMzZDMjQzLjUwNSA0MzkuNjE4IDI0Mi43NSA0NDQuNjIzIDI0MS40MjggNDQ4Ljk2NlY0NDkuMDZMMjQxLjA1IDQ1MC4wOTlWNDUwLjE5M0wyNDAuNzY2IDQ1MC44NTRDMjM5LjkxNiA0NTMuMTIgMjM4Ljg3NyA0NTUuMTAzIDIzNy42NDkgNDU2Ljk5MUMyMzcuMDgzIDQ1Ny45MzYgMjM2LjQyMiA0NTguNzg1IDIzNS42NjYgNDU5LjYzNUMyMzQuMzQ0IDQ2MS4xNDYgMjMyLjgzMiA0NjIuMDkgMjMwLjk0MyA0NjIuMzczQzIzMC40NzEgNDYyLjQ2OCAyMzAuMDkzIDQ2Mi41NjIgMjI5LjYyMSA0NjIuNTYyTDIyMC40NTkgNDYzLjAzNEMyMTguMjg3IDQ2My4xMjkgMjE2LjM5OCA0NjIuMDkgMjE1LjM1OSA0NjAuMjAyQzIxNC4zMiA0NTguMzEzIDIxNC40MTUgNDU2LjA0NyAyMTUuNjQyIDQ1NC4xNTlMMjE1LjczNyA0NTQuMDY0TDIxNS44MzEgNDUzLjk3TDIxNi4zOTggNDUzLjEyQzIxNi4zOTggNDUzLjEyIDIxNi4zOTggNDUzLjAyNiAyMTYuNDkyIDQ1My4wMjZMMjE2Ljg3IDQ1Mi4zNjVDMjE2Ljg3IDQ1Mi4zNjUgMjE2Ljg3IDQ1Mi4yNyAyMTYuOTY1IDQ1Mi4yN0wyMTcuMTU0IDQ1MS45ODdMMjE3LjI0OCA0NTEuODkzTDIxNy4zNDMgNDUxLjcwNEwyMTcuNDM3IDQ1MS42MDlMMjE3LjYyNiA0NTEuMzI2QzIyMC4xNzYgNDQ2Ljg4OSAyMjEuODc2IDQ0MS45NzkgMjIzLjAxIDQzNi4xMjVDMjIzLjEwNCA0MzUuNjUzIDIyMy4xOTggNDM1LjE4MSAyMjMuMTk4IDQzNC44MDNMMjIzLjI5MyA0MzQuMDQ4QzIyMy4yOTMgNDMzLjk1MyAyMjMuMjkzIDQzMy45NTMgMjIzLjI5MyA0MzMuODU5QzIyMy4yOTMgNDMzLjY3IDIyMy4yOTMgNDMzLjU3NiAyMjMuMzg3IDQzMy4zODdDMjIzLjc2NSA0MzAuNjQ5IDIyNC4wNDkgNDI3LjcyMiAyMjQuMTQzIDQyNC43QzIyNC4yMzcgNDIxLjIwNyAyMjYuODgyIDQxOC4zNzQgMjMwLjM3NyA0MTguMTg1TDIzNS4wMDUgNDE3LjkwMkMyMzUuMDk5IDQxNy45MDIgMjM1LjE5NCA0MTcuOTAyIDIzNS4yODggNDE3LjkwMkMyMzYuNjExIDQxNy45MDIgMjM3LjgzOCA0MTguMzc0IDIzOC45NzIgNDE5LjMxOEMyNDIuMDg5IDQyMi4yNDUgMjQzLjY5NCA0MjguNjY2IDI0My43ODkgNDMyLjA2NVY0MzIuMzQ4VjQzMi42MzFWNDMyLjcyNkwyNDMuNiA0MzMuNDgxWk0yNjYuMTc0IDQwNi44NTVMMjY2LjM2MyA0MDcuMjMzQzI2Ny40MDIgNDA5LjQwNCAyNjguMDYzIDQxMS42NyAyNjguNTM1IDQxMy44NDJDMjY4LjcyNCA0MTQuODgxIDI2OC45MTMgNDE1LjkxOSAyNjkuMDA3IDQxNi45NThDMjY5LjEwMiA0MTguOTQxIDI2OC43MjQgNDIwLjY0IDI2Ny42ODUgNDIyLjI0NUMyNjcuNDAyIDQyMi42MjMgMjY3LjIxMyA0MjMuMDAxIDI2Ni44MzUgNDIzLjI4NEwyNjAuNzkgNDMwLjA4MkMyNTkuMzczIDQzMS42ODcgMjU3LjI5NSA0MzIuMzQ4IDI1NS4yMTcgNDMxLjc4MkMyNTMuMTM5IDQzMS4yMTUgMjUxLjUzNCA0MjkuNTE2IDI1MS4xNTYgNDI3LjM0NFY0MjcuMDYxVjQyNi45NjZWNDI2Ljc3N1Y0MjYuNjgzTDI1MS4wNjIgNDI2LjRWNDI2LjMwNUwyNTAuODczIDQyNS4yNjdDMjUwLjg3MyA0MjUuMjY3IDI1MC44NzMgNDI1LjE3MiAyNTAuODczIDQyNS4wNzhMMjUwLjY4NCA0MjQuMzIzVjQyNC4yMjhMMjUwLjU4OSA0MjMuODVDMjQ5LjI2NyA0MTguOTQxIDI0NyA0MTQuMjIgMjQzLjYgNDA5LjMxQzI0My4zMTcgNDA4LjkzMiAyNDMuMDMzIDQwOC41NTUgMjQyLjg0NCA0MDguMTc3TDI0Mi4zNzIgNDA3LjUxNkwyNDIuMjc4IDQwNy40MjJDMjQyLjE4MyA0MDcuMzI3IDI0Mi4wODkgNDA3LjEzOCAyNDEuOTk0IDQwNy4wNDRDMjQwLjI5NCA0MDQuODcyIDIzOC40MDUgNDAyLjYwNiAyMzYuMzI3IDQwMC4zNEMyMzMuOTY2IDM5Ny43OTEgMjMzLjg3MSAzOTMuOTIgMjM2LjEzOCAzOTEuMjc2TDIzNi4yMzMgMzkxLjE4MkwyMzkuMjU1IDM4Ny43ODNDMjM5LjM1IDM4Ny42ODggMjM5LjM1IDM4Ny42ODggMjM5LjQ0NCAzODcuNTk0QzI0MC4zODkgMzg2LjY1IDI0MS41MjIgMzg2LjA4MyAyNDMuMDMzIDM4Ni4wODNDMjQ3LjI4MyAzODUuODk0IDI1My4wNDUgMzg5LjM4OCAyNTUuNTAxIDM5MS43NDhMMjU1Ljg3OCAzOTIuMTI2TDI1NS45NzMgMzkyLjIyTDI1Ni45MTcgMzkzLjE2NEMyNjAuNjk2IDM5Ny4wMzYgMjYzLjcxOCA0MDEuMDk2IDI2NS43OTYgNDA1LjA2MUwyNjUuODkgNDA1LjE1NkwyNjYuNDU3IDQwNi4zODNDMjY2LjA3OSA0MDYuNzYxIDI2Ni4wNzkgNDA2Ljc2MSAyNjYuMTc0IDQwNi44NTVaTTIzNS4zODMgMzU1LjM5N0MyMzUuMzgzIDM1NS4zOTcgMjM1LjQ3NyAzNTUuMzk3IDIzNS41NzIgMzU1LjM5N0gyMzYuMDQ0SDIzNi4yMzNIMjM2LjMyN0gyMzYuNTE2SDIzNi43MDVIMjM2Ljc5OUgyMzYuOTg4QzI0Mi4zNzIgMzU1LjQ5MSAyNDcuMzc4IDM1Ni4yNDcgMjUxLjcyMyAzNTcuNTY5SDI1MS44MTdMMjUyLjg1NiAzNTcuOTQ2SDI1Mi45NTFMMjUzLjcwNiAzNTguMjNDMjU1Ljk3MyAzNTkuMDc5IDI1Ny45NTYgMzYwLjExOCAyNTkuNzUxIDM2MS4zNDVDMjYwLjY5NiAzNjEuOTEyIDI2MS41NDYgMzYyLjU3MyAyNjIuMzk2IDM2My4zMjhDMjYzLjkwNyAzNjQuNjUgMjY0Ljg1MSAzNjYuMTYxIDI2NS4xMzUgMzY4LjA0OUMyNjUuMjI5IDM2OC41MjEgMjY1LjMyNCAzNjguODk5IDI2NS4zMjQgMzY5LjM3MUwyNjUuNzk2IDM3OC41M0MyNjUuODkgMzgwLjcwMSAyNjQuODUxIDM4Mi41OSAyNjIuOTYyIDM4My42MjhDMjYxLjA3MyAzODQuNjY3IDI1OC44MDYgMzg0LjU3MiAyNTYuOTE3IDM4My4zNDVMMjU2LjgyMyAzODMuMjVDMjU2LjgyMyAzODMuMjUgMjU2LjcyOSAzODMuMTU2IDI1Ni42MzQgMzgzLjE1NkwyNTYuNDQ1IDM4My4wNjJDMjU2LjQ0NSAzODMuMDYyIDI1Ni4zNTEgMzgzLjA2MiAyNTYuMzUxIDM4Mi45NjdMMjU2LjA2NyAzODIuNzc4TDI1NS44NzggMzgyLjY4NEwyNTUuNzg0IDM4Mi41OUwyNTUuMjE3IDM4Mi4yMTJMMjU1LjEyMyAzODIuMTE3TDI1NC43NDUgMzgxLjkyOUgyNTQuNjUxTDI1NC40NjIgMzgxLjgzNEwyNTQuMzY3IDM4MS43NEwyNTQuMDg0IDM4MS41NTFDMjQ5LjY0NSAzNzkuMDAyIDI0NC43MzMgMzc3LjMwMiAyMzguODc3IDM3Ni4xNjlDMjM4LjQwNSAzNzYuMDc1IDIzNy45MzMgMzc1Ljk4IDIzNy41NTUgMzc1Ljk4TDIzNi43OTkgMzc1Ljg4NkMyMzYuNzA1IDM3NS44ODYgMjM2LjcwNSAzNzUuODg2IDIzNi42MTEgMzc1Ljg4NkMyMzYuNDIyIDM3NS44ODYgMjM2LjMyNyAzNzUuODg2IDIzNi4xMzggMzc1Ljc5MUMyMzMuMzk5IDM3NS40MTQgMjMwLjQ3MSAzNzUuMTMgMjI3LjQ0OSAzNzUuMDM2QzIyMy45NTQgMzc0Ljk0MiAyMjEuMTIxIDM3Mi4yOTggMjIwLjkzMiAzNjguODA0TDIyMC42NDggMzY0LjA4M0MyMjAuNjQ4IDM2My45ODkgMjIwLjY0OCAzNjMuODk1IDIyMC42NDggMzYzLjhDMjIwLjY0OCAzNjIuNDc4IDIyMS4xMjEgMzYxLjI1MSAyMjIuMDY1IDM2MC4xMThDMjI0Ljk5MyAzNTYuOTA4IDIzMS40MTYgMzU1LjM5NyAyMzQuOTEgMzU1LjMwM0wyMzUuMzgzIDM1NS4zOTdaTTE5NC41OCAzNDMuNzg0TDE5NC45NTggMzQzLjQwNkMxOTQuOTU4IDM0My40MDYgMTk1LjA1MiAzNDMuNDA2IDE5NS4wNTIgMzQzLjMxMUwxOTUuNTI0IDM0Mi44MzlDMTk1LjUyNCAzNDIuODM5IDE5NS41MjQgMzQyLjgzOSAxOTUuNjE5IDM0Mi43NDVMMTk2LjA5MSAzNDIuMjczQzE5OS45NjQgMzM4LjQ5NiAyMDQuMDI1IDMzNS40NzUgMjA4LjA4NiAzMzMuMzk3TDIwOS4zMTQgMzMyLjczN0MyMDkuMzE0IDMzMi43MzcgMjA5LjQwOSAzMzIuNzM3IDIwOS40MDkgMzMyLjY0MkwyMDkuNzg2IDMzMi40NTNDMjExLjk1OSAzMzEuNDE1IDIxNC4yMjYgMzMwLjc1NCAyMTYuMzk4IDMzMC4yODJDMjE3LjQzNyAzMzAuMDkzIDIxOC40NzYgMzI5LjkwNCAyMTkuNTE1IDMyOS44MUMyMjEuNDk4IDMyOS43MTUgMjIzLjE5OCAzMzAuMDkzIDIyNC44MDQgMzMxLjEzMUMyMjUuMTgyIDMzMS40MTUgMjI1LjU2IDMzMS42MDQgMjI1Ljg0MyAzMzEuOTgxTDIzMi42NDQgMzM4LjAyNEMyMzQuMjQ5IDMzOS40NCAyMzQuOTEgMzQxLjUxNyAyMzQuMzQ0IDM0My41OTVDMjMzLjc3NyAzNDUuNzY2IDIzMi4wNzcgMzQ3LjI3NyAyMjkuOTA0IDM0Ny42NTVIMjI5LjcxNkgyMjkuNjIxSDIyOS40MzJDMjI5LjMzOCAzNDcuNjU1IDIyOS4zMzggMzQ3LjY1NSAyMjkuMjQzIDM0Ny42NTVIMjI5LjA1NEMyMjguOTYgMzQ3LjY1NSAyMjguOTYgMzQ3LjY1NSAyMjguODY2IDM0Ny42NTVMMjI3LjgyNyAzNDcuOTM4SDIyNy43MzJMMjI3LjA3MSAzNDguMTI3SDIyNi45NzdMMjI2LjU5OSAzNDguMjIxQzIyMS42ODcgMzQ5LjU0MyAyMTYuOTY1IDM1MS45MDMgMjEyLjE0OCAzNTUuMTE0QzIxMi4xNDggMzU1LjExNCAyMTIuMDUzIDM1NS4xMTQgMjEyLjA1MyAzNTUuMjA4QzIxMS42NzUgMzU1LjQ5MSAyMTEuMjk4IDM1NS43NzUgMjExLjAxNCAzNTUuOTYzTDIxMC45MiAzNTYuMDU4QzIxMC45MiAzNTYuMDU4IDIxMC44MjUgMzU2LjA1OCAyMTAuODI1IDM1Ni4xNTJMMjEwLjM1MyAzNTYuNTNMMjEwLjI1OSAzNTYuNjI0QzIxMC4xNjQgMzU2LjcxOSAyMDkuOTc1IDM1Ni44MTMgMjA5Ljg4MSAzNTYuOTA4QzIwNy43MDkgMzU4LjYwNyAyMDUuNDQyIDM2MC40MDEgMjAzLjE3NSAzNjIuNTczQzIwMC42MjUgMzY0LjkzMyAxOTYuNzUyIDM2NS4wMjggMTk0LjEwOCAzNjIuNzYyTDE5MC42MTMgMzU5Ljc0QzE5MC41MTggMzU5LjY0NiAxOTAuNTE4IDM1OS42NDYgMTkwLjQyNCAzNTkuNTUxQzE4OS40NzkgMzU4LjYwNyAxODguOTEzIDM1Ny40NzQgMTg4LjkxMyAzNTUuOTYzQzE4OC43MjQgMzUxLjk5OCAxOTIuMjE5IDM0Ni4zMzMgMTk0LjU4IDM0My43ODRaTTE4Ny42ODUgMzYzLjUxN0wxOTEuMjc0IDM2Ni42MzNDMTkzLjM1MiAzNjguNDI3IDE5NS45OTcgMzY5LjM3MSAxOTguNjQxIDM2OS4zNzFDMjAxLjQ3NSAzNjkuMzcxIDIwNC4yMTQgMzY4LjMzMiAyMDYuNDgxIDM2Ni4yNTVDMjA4LjU1OSAzNjQuMjcyIDIxMC43MzEgMzYyLjQ3OCAyMTIuNzE0IDM2MC45NjhDMjEzLjc1MyAzNjEuODE3IDIxNC44ODcgMzYyLjU3MyAyMTYuMTE1IDM2My4wNDVDMjE2LjExNSAzNjMuNTE3IDIxNi4xMTUgMzYzLjg5NSAyMTYuMTE1IDM2NC4zNjdMMjE2LjM5OCAzNjkuMDg4QzIxNi43NzYgMzc0Ljg0NyAyMjEuNDk4IDM3OS4zNzkgMjI3LjM1NCAzNzkuNTY4QzIzMC4xODggMzc5LjY2MyAyMzIuOTI3IDM3OS44NTEgMjM1LjQ3NyAzODAuMjI5QzIzNS41NzIgMzgxLjU1MSAyMzUuODU1IDM4Mi44NzMgMjM2LjQyMiAzODQuMUMyMzYuMTM4IDM4NC4zODMgMjM1Ljc2IDM4NC42NjcgMjM1LjQ3NyAzODUuMDQ0TDIzMi40NTUgMzg4LjUzOEwyMzIuMzYgMzg4LjYzMkMyMjguNTgyIDM5Mi45NzYgMjI4Ljc3MSAzOTkuNDkgMjMyLjczOCA0MDMuNzM5QzIzNC43MjEgNDA1LjgxNiAyMzYuNDIyIDQwNy44OTQgMjM4LjAyNyA0MDkuOTcxQzIzNy4xNzcgNDExLjAxIDIzNi40MjIgNDEyLjE0MyAyMzUuOTQ5IDQxMy4zN0MyMzUuNDc3IDQxMy4zNyAyMzUuMDk5IDQxMy4zNyAyMzQuNjI3IDQxMy4zN0wyMjkuOTA0IDQxMy42NTNDMjI0LjE0MyA0MTQuMDMxIDIxOS42MDkgNDE4Ljc1MiAyMTkuNDIgNDI0LjYwNkMyMTkuMzI2IDQyNy40MzggMjE5LjEzNyA0MzAuMTc2IDIxOC43NTkgNDMyLjcyNkMyMTcuNDM3IDQzMi44MiAyMTYuMTE1IDQzMy4xMDMgMjE0Ljg4NyA0MzMuNjdDMjE0LjYwMyA0MzMuMzg3IDIxNC4zMiA0MzMuMDA5IDIxMy45NDIgNDMyLjcyNkwyMTAuNDQ4IDQyOS43MDRDMjEwLjQ0OCA0MjkuNzA0IDIxMC4zNTMgNDI5LjcwNCAyMTAuMzUzIDQyOS42MUMyMDYuMDA4IDQyNS44MzMgMTk5LjQ5MSA0MjYuMDIyIDE5NS4yNDEgNDI5Ljk4OEMxOTMuMTYzIDQzMS45NyAxOTEuMDg1IDQzMy43NjQgMTg5LjAwNyA0MzUuMjc1QzE4Ny45NjggNDM0LjQyNSAxODYuODM1IDQzMy42NyAxODUuNjA3IDQzMy4xOThDMTg1LjYwNyA0MzIuNzI2IDE4NS42MDcgNDMyLjM0OCAxODUuNjA3IDQzMS44NzZMMTg1LjMyNCA0MjcuMTU1QzE4NC45NDYgNDIxLjM5NiAxODAuMjIzIDQxNi44NjMgMTc0LjM2NyA0MTYuNjc1QzE3MS41MzQgNDE2LjU4IDE2OC43OTUgNDE2LjM5MSAxNjYuMjQ1IDQxNi4wMTRDMTY2LjE1IDQxNC42OTIgMTY1Ljg2NyA0MTMuMzcgMTY1LjMgNDEyLjE0M0MxNjUuNTgzIDQxMS44NTkgMTY1Ljk2MSA0MTEuNTc2IDE2Ni4yNDUgNDExLjE5OEwxNjkuMjY3IDQwNy43MDVMMTY5LjM2MSA0MDcuNjFDMTczLjA0NSA0MDMuMjY3IDE3Mi45NTEgMzk2Ljc1MiAxNjguOTg0IDM5Mi41MDNDMTY3IDM5MC40MjYgMTY1LjIwNiAzODguMzQ5IDE2My42OTQgMzg2LjI3MkMxNjQuNTQ0IDM4NS4yMzMgMTY1LjMgMzg0LjEgMTY1Ljc3MiAzODIuODczQzE2NS45NjEgMzgyLjg3MyAxNjYuMTUgMzgyLjg3MyAxNjYuNDMzIDM4Mi44NzNDMTY2LjYyMiAzODIuODczIDE2Ni45MDYgMzgyLjg3MyAxNjcuMDk1IDM4Mi44NzNMMTcxLjgxNyAzODIuNTlDMTc3LjU3OSAzODIuMjEyIDE4Mi4xMTIgMzc3LjQ5MSAxODIuMzAxIDM3MS42MzdDMTgyLjM5NiAzNjguODA0IDE4Mi41ODUgMzY2LjA2NiAxODIuOTYyIDM2My41MTdDMTg0LjI4NSAzNjMuNDIzIDE4NS42MDcgMzYzLjEzOSAxODYuODM1IDM2Mi41NzNDMTg3LjAyNCAzNjIuOTUgMTg3LjMwNyAzNjMuMjM0IDE4Ny42ODUgMzYzLjUxN1pNMTU4LjAyNyAzNjIuNzYyVjM2Mi40NzhWMzYyLjI5VjM2Mi4xOTVWMzYyLjEwMUMxNTguMTIyIDM1Ni43MTkgMTU4Ljg3NyAzNTEuNzE1IDE2MC4yIDM0Ny4zNzFWMzQ3LjI3N0wxNjAuNDgzIDM0Ni4yMzhDMTYwLjQ4MyAzNDYuMjM4IDE2MC41NzcgMzQ2LjE0NCAxNjAuNTc3IDM0Ni4wNUwxNjAuODYxIDM0NS4zODlDMTYxLjcxMSAzNDMuMTIzIDE2Mi43NSAzNDEuMTQgMTYzLjk3OCAzMzkuMjUxQzE2NC41NDQgMzM4LjMwNyAxNjUuMjA2IDMzNy40NTcgMTY1Ljk2MSAzMzYuNjA4QzE2Ny4yODQgMzM1LjA5NyAxNjguNzk1IDMzNC4xNTMgMTcwLjY4NCAzMzMuODdDMTcxLjE1NiAzMzMuNzc1IDE3MS41MzQgMzMzLjY4MSAxNzIuMDA2IDMzMy42ODFMMTgxLjE2OCAzMzMuMjA5QzE4My4zNCAzMzMuMTE0IDE4NS4yMjkgMzM0LjE1MyAxODYuMjY4IDMzNi4wNDFDMTg3LjMwNyAzMzcuOTMgMTg3LjIxMyAzNDAuMTk2IDE4NS45ODUgMzQyLjA4NEwxODUuODkgMzQyLjE3OEwxODUuNzk2IDM0Mi4yNzNMMTg1LjcwMSAzNDIuNDYyQzE4NS43MDEgMzQyLjQ2MiAxODUuNzAxIDM0Mi41NTYgMTg1LjYwNyAzNDIuNTU2TDE4NS40MTggMzQyLjgzOUwxODUuMjI5IDM0My4xMjNMMTg1LjEzNSAzNDMuMjE3TDE4NC45NDYgMzQzLjVDMTg0Ljk0NiAzNDMuNSAxODQuOTQ2IDM0My41OTUgMTg0Ljg1MSAzNDMuNTk1TDE4NC41NjggMzQzLjk3MkMxODQuNTY4IDM0My45NzIgMTg0LjU2OCAzNDQuMDY3IDE4NC40NzQgMzQ0LjA2N0wxODQuMzc5IDM0NC4xNjFDMTg0LjM3OSAzNDQuMTYxIDE4NC4zNzkgMzQ0LjI1NiAxODQuMjg1IDM0NC4yNTZMMTg0LjE5IDM0NC40NDRDMTg0LjE5IDM0NC40NDQgMTg0LjE5IDM0NC41MzkgMTg0LjA5NiAzNDQuNTM5TDE4My45MDcgMzQ0LjgyMkMxODEuMzU3IDM0OS4yNiAxNzkuNjU3IDM1NC4xNyAxNzguNTIzIDM2MC4wMjNDMTc4LjQyOSAzNjAuNDk2IDE3OC4zMzQgMzYwLjk2OCAxNzguMzM0IDM2MS4zNDVMMTc4LjI0IDM2Mi4xMDFDMTc4LjI0IDM2Mi4xOTUgMTc4LjI0IDM2Mi4xOTUgMTc4LjI0IDM2Mi4yOUMxNzguMjQgMzYyLjQ3OCAxNzguMjQgMzYyLjU3MyAxNzguMTQ1IDM2Mi43NjJDMTc3Ljc2OCAzNjUuNSAxNzcuNDg0IDM2OC40MjcgMTc3LjM5IDM3MS40NDhDMTc3LjI5NSAzNzQuOTQyIDE3NC42NTEgMzc3Ljc3NCAxNzEuMTU2IDM3Ny45NjNMMTY2LjQzMyAzNzguMjQ2QzE2Ni4zMzkgMzc4LjI0NiAxNjYuMjQ1IDM3OC4yNDYgMTY2LjE1IDM3OC4yNDZDMTY0LjgyOCAzNzguMjQ2IDE2My42IDM3Ny43NzQgMTYyLjQ2NiAzNzYuODNDMTU5LjM1IDM3My45MDMgMTU3Ljc0NCAzNjcuNDgzIDE1Ny42NDkgMzYzLjk4OVYzNjMuNDIzVjM2My4zMjhMMTU4LjAyNyAzNjIuNzYyWk0xMzUuNDU0IDM4OS40ODJMMTM1LjM1OSAzODkuMjkzQzEzNS4zNTkgMzg5LjI5MyAxMzUuMzU5IDM4OS4yOTMgMTM1LjM1OSAzODkuMTk5TDEzNS4yNjUgMzg5LjAxQzEzNS4yNjUgMzg5LjAxIDEzNS4yNjUgMzg5LjAxIDEzNS4yNjUgMzg4LjkxNkMxMzQuMzIgMzg2Ljc0NCAxMzMuNTY1IDM4NC41NzIgMTMzLjA5MiAzODIuNDAxQzEzMi45MDMgMzgxLjM2MiAxMzIuNzE0IDM4MC4zMjMgMTMyLjYyIDM3OS4yODVDMTMyLjUyNiAzNzcuMzAyIDEzMi45MDMgMzc1LjYwMyAxMzMuOTQyIDM3My45OTdDMTM0LjIyNiAzNzMuNjIgMTM0LjQxNSAzNzMuMjQyIDEzNC43OTIgMzcyLjk1OUwxNDAuODM3IDM2Ni4xNjFDMTQyLjI1NCAzNjQuNTU2IDE0NC4zMzIgMzYzLjg5NSAxNDYuNDEgMzY0LjQ2MUMxNDguNTgyIDM2NS4wMjggMTUwLjA5MyAzNjYuNzI3IDE1MC40NzEgMzY4Ljg5OVYzNjkuMTgyVjM2OS4yNzdWMzY5LjU2VjM2OS42NTRMMTUwLjU2NiAzNjkuOTM3VjM3MC4wMzJMMTUwLjc1NSAzNzEuMDdWMzcxLjE2NUwxNTAuOTQzIDM3MS44MjZDMTUwLjk0MyAzNzEuOTIgMTUwLjk0MyAzNzEuOTIgMTUwLjk0MyAzNzIuMDE1TDE1MS4wMzggMzcyLjI5OEMxNTIuMzYgMzc3LjIwOCAxNTQuNjI3IDM4MS45MjkgMTU3LjkzMyAzODYuNzQ0QzE1Ny45MzMgMzg2Ljc0NCAxNTcuOTMzIDM4Ni44MzggMTU4LjAyNyAzODYuODM4QzE1OC4zMTEgMzg3LjIxNiAxNTguNSAzODcuNTk0IDE1OC43ODMgMzg3Ljg3N0wxNTkuMjU1IDM4OC41MzhMMTU5LjM1IDM4OC42MzJDMTU5LjQ0NCAzODguNzI3IDE1OS41MzkgMzg4LjkxNiAxNTkuNjMzIDM4OS4wMUMxNjEuMjM5IDM5MS4xODIgMTYzLjEyOCAzOTMuNDQ4IDE2NS4zIDM5NS43MTRDMTY3LjY2MSAzOTguMjYzIDE2Ny43NTYgNDAyLjEzNCAxNjUuNDg5IDQwNC43NzhMMTY1LjM5NCA0MDQuODcyTDE2Mi40NjYgNDA4LjI3MUMxNjIuMzcyIDQwOC4zNjYgMTYyLjM3MiA0MDguMzY2IDE2Mi4yNzggNDA4LjQ2QzE2MS4zMzMgNDA5LjQwNCAxNjAuMiA0MDkuOTcxIDE1OC42ODggNDA5Ljk3MUMxNTQuMzQ0IDQxMC4xNiAxNDguNjc3IDQwNi42NjYgMTQ2LjIyMSA0MDQuMzA2TDE0NS44NDMgNDAzLjkyOEMxNDUuODQzIDQwMy45MjggMTQ1Ljg0MyA0MDMuOTI4IDE0NS43NDkgNDAzLjgzNEwxNDQuODA0IDQwMi44OUMxNDEuMDI2IDM5OS4wMTggMTM4LjAwNCAzOTQuOTU4IDEzNS45MjYgMzkwLjg5OFYzOTAuODA0TDEzNS43MzcgMzkwLjQyNkMxMzUuNzM3IDM5MC40MjYgMTM1LjczNyAzOTAuNDI2IDEzNS43MzcgMzkwLjMzMkwxMzUuMzU5IDM4OS40ODJDMTM1LjQ1NCAzODkuNTc2IDEzNS40NTQgMzg5LjQ4MiAxMzUuNDU0IDM4OS40ODJaTTE2Ni4xNSA0NDAuOTRIMTY2LjA1NkgxNjUuODY3SDE2NS43NzJIMTY1LjY3OEgxNjUuNDg5SDE2NS4yMDZIMTY1LjAxN0gxNjQuOTIySDE2NC43MzNDMTU5LjM1IDQ0MC44NDYgMTU0LjM0NCA0NDAuMDkgMTQ5Ljk5OSA0MzguNzY5SDE0OS45MDVMMTQ4Ljg2NiA0MzguMzkxSDE0OC43NzFMMTQ4LjExIDQzOC4xMDhDMTQ1Ljg0MyA0MzcuMjU4IDE0My44NiA0MzYuMjE5IDE0MS45NzEgNDM0Ljk5MkMxNDEuMDI2IDQzNC40MjUgMTQwLjE3NiA0MzMuNzY0IDEzOS4zMjYgNDMzLjEwM0MxMzcuODE1IDQzMS43ODIgMTM2Ljg3IDQzMC4yNzEgMTM2LjU4NyA0MjguMzgzQzEzNi40OTIgNDI3LjkxIDEzNi4zOTggNDI3LjUzMyAxMzYuMzk4IDQyNy4wNjFMMTM1LjkyNiA0MTcuOTAyQzEzNS44MzEgNDE1LjczIDEzNi44NyA0MTMuODQyIDEzOC43NTkgNDEyLjgwM0MxNDAuNjQ4IDQxMS43NjUgMTQyLjkxNSA0MTEuODU5IDE0NC44MDQgNDEzLjA4N0wxNDQuODk5IDQxMy4xODFDMTQ0Ljk5MyA0MTMuMTgxIDE0NC45OTMgNDEzLjI3NiAxNDUuMDg4IDQxMy4yNzZMMTQ1LjM3MSA0MTMuNDY0QzE0NS4zNzEgNDEzLjQ2NCAxNDUuNDY1IDQxMy40NjQgMTQ1LjQ2NSA0MTMuNTU5TDE0NS41NiA0MTMuNjUzTDE0NS44NDMgNDEzLjg0MkwxNDUuOTM4IDQxMy45MzZMMTQ2LjUwNCA0MTQuMjJMMTQ2LjU5OSA0MTQuMzE0TDE0Ni45NzcgNDE0LjUwM0gxNDcuMDcxTDE0Ny4yNiA0MTQuNTk3QzE0Ny4yNiA0MTQuNTk3IDE0Ny4zNTQgNDE0LjU5NyAxNDcuMzU0IDQxNC42OTJMMTQ3LjYzOCA0MTQuODgxQzE1Mi4wNzcgNDE3LjQzIDE1Ni45ODggNDE5LjEzIDE2Mi44NDQgNDIwLjI2M0MxNjMuMzE3IDQyMC4zNTcgMTYzLjc4OSA0MjAuNDUxIDE2NC4xNjcgNDIwLjQ1MUwxNjQuOTIyIDQyMC41NDZIMTY1LjAxN0MxNjUuMjA2IDQyMC41NDYgMTY1LjMgNDIwLjU0NiAxNjUuNDg5IDQyMC42NEMxNjguMjI4IDQyMS4wMTggMTcxLjE1NiA0MjEuMzAxIDE3NC4xNzggNDIxLjM5NkMxNzcuNjczIDQyMS40OSAxODAuNTA3IDQyNC4xMzQgMTgwLjY5NiA0MjcuNjI3TDE4MC45NzkgNDMyLjM0OEMxODAuOTc5IDQzMi40NDMgMTgwLjk3OSA0MzIuNTM3IDE4MC45NzkgNDMyLjYzMUMxODAuOTc5IDQzMy45NTMgMTgwLjUwNyA0MzUuMTgxIDE3OS41NjIgNDM2LjMxNEMxNzYuNjM0IDQzOS41MjQgMTcwLjIxMSA0NDEuMDM1IDE2Ni43MTcgNDQxLjEyOUwxNjYuMTUgNDQwLjk0Wk0xOTMuNTQxIDQ2Mi43NTFDMTkzLjU0MSA0NjIuNzUxIDE5My40NDYgNDYyLjc1MSAxOTMuNDQ2IDQ2Mi44NDVMMTkyLjIxOSA0NjMuNDEyQzE5Mi4yMTkgNDYzLjQxMiAxOTIuMTI0IDQ2My40MTIgMTkyLjEyNCA0NjMuNTA2TDE5MS45MzUgNDYzLjYwMUwxOTEuNzQ2IDQ2My42OTVDMTg5LjU3NCA0NjQuNzM0IDE4Ny4zMDcgNDY1LjM5NSAxODUuMTM1IDQ2NS44NjdDMTg0LjA5NiA0NjYuMDU2IDE4My4wNTcgNDY2LjI0NCAxODIuMDE4IDQ2Ni4zMzlDMTgwLjAzNCA0NjYuNDMzIDE3OC4zMzQgNDY2LjA1NiAxNzYuNzI5IDQ2NS4wMTdDMTc2LjM1MSA0NjQuNzM0IDE3NS45NzMgNDY0LjU0NSAxNzUuNjkgNDY0LjE2N0wxNjguODg5IDQ1OC4xMjRDMTY3LjI4NCA0NTYuNzA4IDE2Ni42MjIgNDU0LjYzMSAxNjcuMTg5IDQ1Mi41NTRDMTY3Ljc1NiA0NTAuMzgyIDE2OS40NTYgNDQ4Ljg3MSAxNzEuNzIzIDQ0OC40OTRIMTcxLjgxN0MxNzEuOTEyIDQ0OC40OTQgMTcxLjkxMiA0NDguNDk0IDE3Mi4wMDYgNDQ4LjQ5NEgxNzIuMTk1SDE3Mi4yODlMMTcyLjU3MyA0NDguMzk5SDE3Mi42NjdMMTczLjcwNiA0NDguMTE2SDE3My44MDFMMTc0LjU1NiA0NDcuOTI3SDE3NC42NTFMMTc1LjAyOCA0NDcuODMzQzE3OS45NCA0NDYuNTExIDE4NC42NjIgNDQ0LjI0NSAxODkuNTc0IDQ0MC44NDZDMTg5Ljk1MiA0NDAuNTYzIDE5MC4zMyA0NDAuMjc5IDE5MC43MDcgNDQwLjA5TDE5MS4yNzQgNDM5LjYxOEMxOTEuMzY4IDQzOS42MTggMTkxLjM2OSA0MzkuNTI0IDE5MS40NjMgNDM5LjUyNEMxOTEuNTU3IDQzOS40MjkgMTkxLjc0NiA0MzkuMzM1IDE5MS44NDEgNDM5LjI0MUMxOTQuMDEzIDQzNy41NDEgMTk2LjI4IDQzNS42NTMgMTk4LjU0NyA0MzMuNTc2QzIwMS4wOTcgNDMxLjIxNSAyMDQuOTY5IDQzMS4xMjEgMjA3LjYxNCA0MzMuMzg3QzIwNy42MTQgNDMzLjM4NyAyMDcuNzA5IDQzMy4zODcgMjA3LjcwOSA0MzMuNDgxTDIxMS4xMDkgNDM2LjUwMkMyMTEuMjAzIDQzNi41OTcgMjExLjIwMyA0MzYuNTk3IDIxMS4yOTggNDM2LjY5MUMyMTIuMjQyIDQzNy42MzYgMjEyLjgwOSA0MzguNzY5IDIxMi44MDkgNDQwLjI3OUMyMTIuOTk4IDQ0NC41MjggMjA5LjUwMyA0NTAuMjg4IDIwNy4xNDIgNDUyLjc0MkwyMDYuNzY0IDQ1My4xMkMyMDYuNzY0IDQ1My4xMiAyMDYuNzY0IDQ1My4xMiAyMDYuNjcgNDUzLjIxNUwyMDUuNzI1IDQ1NC4xNTlDMjAxLjY2NCA0NTcuNjUyIDE5Ny42MDIgNDYwLjY3NCAxOTMuNTQxIDQ2Mi43NTFaIiBmaWxsPSJ3aGl0ZSIvPgo8L3N2Zz4K",\n "links": {\n "mainnet": "https://tzsafe.marigold.dev",\n "ghostnet": "https://ghostnet.tzsafe.marigold.dev",\n "weeklynet": "https://ghostnet.tzsafe.marigold.dev",\n "dailynet": "https://ghostnet.tzsafe.marigold.dev",\n "delphinet": "https://ghostnet.tzsafe.marigold.dev",\n "edonet": "https://ghostnet.tzsafe.marigold.dev",\n "florencenet": "https://ghostnet.tzsafe.marigold.dev",\n "granadanet": "https://ghostnet.tzsafe.marigold.dev",\n "hangzhounet": "https://ghostnet.tzsafe.marigold.dev",\n "ithacanet": "https://ghostnet.tzsafe.marigold.dev",\n "jakartanet": "https://ghostnet.tzsafe.marigold.dev",\n "kathmandunet": "https://ghostnet.tzsafe.marigold.dev",\n "limanet": "https://ghostnet.tzsafe.marigold.dev",\n "mumbainet": "https://ghostnet.tzsafe.marigold.dev",\n "nairobinet": "https://ghostnet.tzsafe.marigold.dev",\n "oxfordnet": "https://ghostnet.tzsafe.marigold.dev"\n }\n}];\nconst iOSList = [{\n "key": "airgap_ios",\n "name": "AirGap Wallet",\n "shortName": "AirGap",\n "color": "rgb(4, 235, 204)",\n "logo": "data:image/png;base64,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",\n "universalLink": "https://wallet.airgap.it",\n "deepLink": "airgap-wallet://"\n}, {\n "key": "plenty_wallet_ios",\n "name": "Plenty Wallet - your portal to web3 ",\n "shortName": "Plenty Wallet",\n "color": "",\n "logo": "data:image/png;base64,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",\n "universalLink": "https://www.naan.app/",\n "deepLink": "naan://"\n}, {\n "key": "altme_wallet",\n "name": "Altme Wallet",\n "shortName": "Altme",\n "color": "",\n "logo": "data:image/png;base64,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",\n "universalLink": "https://app.altme.io/app/download"\n}, {\n "key": "feralfile_app",\n "name": "Feral File - The place to experience digital art today",\n "shortName": "Feral File",\n "color": "rgb(236, 255, 12)",\n "logo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAAM/klEQVR4Ae3Be2iWBf/H8ff1vS9337XN1ZZiC3OJWNlJFAUVQ1fmk0mHtTIqC5FGJPhHJVZYYUQHOvwhGGFIB0uyllaYYcqyooJEsZOYRGrRNJva3Fa75+5dz4+C5yF6+ieIu5+fz+uVZP8HM5MUmJmswMxkBWYmKzAzWYGZyQrMTFZgZrICM5MVmJmswMxkBWYmKzAzWYGZyQrMTFZgZrICM5MVmJmswMxkBWYmKzAzWYGZyQrMTFZgZrICM5MVmJmswMxkBWYmKzAzWYGZyQrMTFZgZrICM5MVmJmswMxkBWYmKzAzWYGZyQrMTFZgZrICM5MVmJmswMxkBWYmKzAzWYGZyQrMTFZgZrICM5MVmJmswMxkBWYmKzAzWYGZyQrMTFZgZrICM5MVmJmswMxkBWYmKzAzWYGZyQrMTFaKuNbWVvr6+lCUy+Vobm4ml8uhqK+vj9bWVsqlUCjQ1NREOaUIy7KMlpYWjhw5gqKKigquuOIKcrkcirq6urjxxhvJsoxyGDZsGE1NTZRTIC4iUBURKEuShHJKkoRyC8xMVmBmsgIzkxWYmazAzGQFZiYrMDNZgZnJCsxMVmBmsgIzkxWYmazAzGQFZiYrEHbs2DFKpRKq0jQlSRJUFYtF1AXCOjs76e3tRVVNTQ1pmqKqo6ODLMtQFghrb2+nt7cXVQ0NDeRyOVTt2bMHdYGw7du3o2zixIko27p1K+oCYRs2bEDZjBkzUJVlGe+88w7qAlGdnZ1s2rQJVfX19TQ2NqLq66+/Ztu2bagLRK1atYrOzk5UzZ8/n3w+j6qnn36aUqmEukBQV1cXjz/+OKpqa2tZuHAhqr799ltWrlyJQSDooYceYt++fah66KGHOOWUU1C1ePFiOjs7MQjEbNmyhSeffBJVV155JbfccguqVq1axZo1a7DfBEK+/vprrr/+evr6+lA0duxYnnvuOSICRR9//DELFiwgyzLsNykidu/ezcUXX8z+/ftRNG7cODZs2EBNTQ2KPvroI2bPnk1XVxf2XykCNmzYwM0330xHRweKrrvuOp5++mlqampQ9Oyzz7Jw4UK6u7ux30s5jnV0dHDvvffyzDPPUCqVUDN8+HAefvhhrr/+epIkQc3evXtZtGgRra2t2P+WchzavXs3zz77LCtWrODw4cMoSZKEMWPG0NLSwvz586msrERJlmV8+umnrFixglWrVtHd3Y39uZQy27VrF/39/fxV/f39dHd3s3fvXrZt28YHH3zAjh07KJVK/F0qKiqoq6ujqqqKiKCcKioqGDx4MCNGjGDixIlMmzaNc889l1wux9+lWCzS3t5OT08P5Xbs2DGOHj3KN998w9atW3nvvffYtWsXAwMD/F0KhQJ1dXVUVlaSJAl/VV1dHeWWUmbTp0/nwIED/NOdc845NDU10djYyPnnn091dTWDBg1CxaeffkprayttbW3s3LmTo0ePMjAwgIIkSRg/fjzNzc1ceOGFjBkzhsrKStI05f+7lDJLkoR/sqlTp3Lfffcxffp0crkcajZu3MiDDz7IRx99xMDAAEoigssuu4wlS5YwYcIEkiTheJNi/9OQIUNYtmwZc+bMIUkS1Bw4cIDbbruN119/nSzLUHPGGWewYsUKLr74Yo5nKfYH48aNY926dZx++uko+vDDD7n22mtpb29H0cyZM3nppZeoq6vjeJdivzNlyhTWr1/PSSedhKINGzZw7bXX0tPTg6Krr76aF198kUKhgILA/uPcc8/lzTff5KSTTkLR9u3bmTNnDj09PSi66KKLWLVqFYVCARWB/aq6uppXX32V2tpaFB0+fJirr76a7u5uFJ122mmsXr2aE044ASWB/Wrp0qWcddZZqFq0aBF79+5FUZIkLFu2jKFDh6ImMM4880wWLFiAqh07dvDCCy+gqrGxkaamJhQFxh133EFFRQWqHnnkEfr7+1G1ePFiVAXiqquraW5uRtWBAwd44403UDVy5EimT5+OqkDctGnTOPnkk1H19ttv09vbi6rZs2eTpimqAnGNjY0o27RpE8oaGxtRFog777zzUPbll1+iKkkSxowZg7JA3PDhw1HV399Pe3s7qk488USGDh2KskBYkiTU1dWhqlQq0dPTg6p8Pk91dTXKAnFJkqAqyzKyLENVkiQkSYKywMxkBWYmKzAzWYGZyQrMTFZgZrICM5MVmJmswMxkBWYmKzAzWYGZyQrMTFZgZrJSyiyfz1MoFCiHJEkoFov09vaiqFgsks/nUVVRUUGxWKRckiQhn89TTilltmvXLrIso1xGjhzJkSNHUJTP59m3bx/5fB5FR44coba2lizLKIdhw4axZ88eyimlzPL5POWSZRl9fX309vaiKp/PUygUUJTP5+nt7SXLMsqhWCxSboGZyQrMTFZgZrICM5MVmJmswMxkBWYmKzAzWYGZyQrMTFZgZrICM5MVmJmswMxkBcKyLCPLMlQlSUKSJKjKsgx1gbCuri6KxSKqKisryeVyqDp06BBZlqEsEHbw4EF+/vlnVNXX15OmKaq+++471AXCdu7cSZZlqDrnnHNQ9vnnn6MuENbW1oayGTNmoKytrQ11gaj+/n7Wr1+PqkKhwKWXXoqqI0eOsGXLFtQFot59912++eYbVF1xxRUMGzYMVa2trXR1daEuEPXoo4+iKk1T7rrrLlT19fXxxBNPYBAIWrt2LW1tbai66aabGDt2LKqWL1/OV199hUEg5uDBgyxcuJAsy1DU0NDAY489hqpdu3Zx//33Y78JhPzyyy/ccMMNfP/99yiqqqritddeo7a2FkWHDx/mmmuuoaurC/tNIKJYLHLTTTexefNmFFVWVrJmzRrGjRuHop9++onLL7+cL774AvuvFAGHDh3ihhtuYOPGjSiqr6/nlVdeYcqUKSj69ttvueqqq9i+fTv2eynHuc2bN9PS0sKePXtQkyQJV155JU899RTDhg1DTZZlrFmzhoULF/Ljjz9if5RyHMqyjK1bt/Lggw/y1ltvMTAwgJKIYPLkySxZsoSZM2eiplQqsWXLFpYuXcoHH3yA/bmU40B/fz89PT3s3LmT999/n9bWVrZt20aWZSiICAYPHsyYMWNobGykubmZCy64ABXHjh2jq6uLzz77jLa2NtauXcuXX37JP12WZZRbSplNmTKFQ4cO8VdlWcbPP/9MR0cHvb29/F0igrPPPpupU6cyceJERo4cyeDBgxk0aBDlVllZSX19Pfl8nr9LqVTiiy++YMuWLXzyySfs27ePo0eP0tfXRzkNDAzQ3d3NoUOH6Ovr4++Sy+UYO3YsU6dOZfz48TQ0NFBVVUWapvxVaZpSbilltmfPHvbv388/VVVVFXPnzqWlpYULLriAJElQ0tPTw8qVK1mxYgU7d+4kyzKU1NbW0tLSwrx58xg9ejTHmxT7U83NzTz22GM0NDSgJssyVq9ezd133813332Hmlwuxy233MIDDzzAkCFDOF6l2B9UVVWxbNky5s2bh6LOzk5uvfVWXn75ZRSdcsopPP/888yaNYvjXYr9zsknn8z69euZPHkyin744QdmzZrF9u3bUTR8+HA2b97M6NGjUZBi/1FdXc1bb73FpEmTUNTZ2cm//vUvduzYgaJTTz2VtrY2Ro0ahYrAfpUkCcuXL2fSpEkoGhgYYN68eezYsQNFFRUVrF69mlGjRqEksF/NmTOHuXPnouqZZ55h3bp1qLr99tuZNm0aagKjpqaGRx99FFUdHR3cc889qBoxYgT33HMPigJj/vz5nH766ahatmwZhw8fRtWdd95JdXU1igJxuVyOW2+9FVXFYpGVK1eiqqamhrlz56IqEDd+/HhGjRqFqra2Ntrb21E1Y8YMampqUBWIu+SSS0iSBFWbNm1C2axZs1AWiJswYQLKPvnkE5SNGzcOZYG4hoYGVJVKJfbu3YuqQqFAfX09ygJhSZIwZMgQVPX399PZ2YmqQqFATU0NygJx+XweVVmW0d/fj6pcLsegQYNQFpiZrMDMZAVmJiswM1mBmckKzExWYGayAjOTFZiZrMDMZAVmJiswM1mBmckKzExWUGZZllFOWZahbGBgAFUDAwOoSymz5cuX09vbS7lUV1ejatCgQbzwwguUSiUUVVRUkCQJylLKrKmpCSuPXC7HnDlzMF2BmckKzExWYGayAjOTFZiZrMDMZAVmJiswM1mBmckKzExWYGayAjOTFZiZrMDMZAVmJiswM1mBmckKzExWYGayAjOTFZiZrMDMZAVmJiswM1mBmckKzExWYGayAjOTFZiZrMDMZAVmJiswM1mBmckKzExWYGayAjOTFZiZrMDMZAVmJiswM1mBmckKzExWYGayAjOTFZiZrMDMZAVmJiswM1mBmckKzExWYGayAjOTFZiZrMDMZAVmJiswM1mBmckKzExWYGayAjOTFZiZrMDMZP0bvkGl4FxzioIAAAAASUVORK5CYII=",\n "universalLink": "https://app.feralfile.com/apps/tezos",\n "deepLink": "autonomy-tezos://"\n}, {\n "key": "temple_ios",\n "name": "Temple Wallet",\n "shortName": "Temple",\n "color": "",\n "logo": "data:image/png;base64,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",\n "universalLink": "https://templewallet.com",\n "deepLink": "temple://"\n}, {\n "key": "atomex_ios",\n "name": "Atomex Wallet",\n "shortName": "Atomex",\n "color": "",\n "logo": "data:image/png;base64,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",\n "universalLink": "https://atomex.me",\n "deepLink": "atomex://"\n}, {\n "key": "umami_ios",\n "name": "Umami Mobile",\n "shortName": "Umami Mobile",\n "color": "",\n "logo": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAQAAAAEACAYAAABccqhmAAA3bElEQVR4AezBCXyU1aHw4f85553JHhKWsAUM+76p7CCCAsqmZSuKS8SrX63WVq223lZNba3XWhXbqlW0NEWqgtWiiCI7IrKHfZElIZJEAgkhCVnnPeezv/p9t7YyM4FJMoHzPIKGxQE6Az2AzkA7IBloDjQBGgGRgBfLCr1qoBwoBk4CXwLHgKPAAWAPcABwaSAE4S0WGAGMAAYDlwFRWFb4Kge2Ap8Ba4A1QClhShB+WgOTgUnAFYAXy2q4qoA1wGLgb0AOYUQQHqKAycBtwEhAYlkXHg2sAOYBC4EK6pmgfrUG7gVuB5pgWRePQuAV4CUgm3oiqB8dgZ8BNwEOlnXxqgL+AjwJHKGOCepWS+BR4L8AB8uy/p8q4E9AGnCcOiKoGx7gfuC/gXgsyzqbUuCXwGygilomqH1DgZeBHoSIlJJ27drRuXNn0759e5KTk0lKSjIJCQkiJiaGiIgIgWWFWFVVlSktLaWoqIgTJ06IL774whw5coQDBw6QlZWF1loQOruBO4AN1CJB7YkAfgk8AEjOQ2xsLFdccYUZMWIEgwcPpl+/fiI2NhbLChelpaVkZGTw2WefmTVr1rB27VpRWlrKedLAb4HHgApqgaB2dAHeBPpyjpo2bcp3vvMdM3XqVDFixAgiIiKwrIaiqqpKr1q1SrzzzjvinXfe4eTJk5yH7cAM4AAhJgi9acBrQBw1JIRgzJgx+s4775STJk0yjuMILKuBq66uNosXLxavvPKK/vjjj6XWmnNQAtwOLCSEBKEjgceB/wYENeD1ernlllt46KGHdKdOnSSWdYHav3+/mT17NnPnzhVVVVXUkAF+BaQBmhAQhEYkMBeYQQ04jsOtt96qH3vsMdGmTRuBZV0ksrOzeeKJJ8yrr74qtNbU0BvALKCC8yQ4f7HAO8BoauCqq65yn3/+edmjRw+BZV2kdu/ezb333qtXrVolqZmPgSlAKedBcH4aAUuBgQSpSZMmzJ49m5tuugnLsv5p/vz55v777xf5+fnUwEZgLHCacyQ4d7HAcmAgQZowYYKZM2eOaNGiBZZlfVN+fj633347ixcvpgY2AlcBZzgHinMTCbwLjCAIXq/XPPPMM8yePVvExcVhWdZ/iomJ4YYbbiAxMdGsXLkS13UFgSUD/YGFgI8aUtScBNKB6wlC8+bNzQcffMD06dPFV7As6+yEEAwaNEiMGjWKxYsXizNnzhCEDkAH4F3AUAOKmvsFcDdB6NmzJ6tWrRK9e/cWWJYVtLZt24rp06eb5cuXi/z8fILQC3CAldSAomamAb8HBAEMGDBAL1++XLRs2RLLsmouISFBzJgxg9WrV5OTk0MQhgN7gL0ESRG8LsBiIIIARo0axdKlS0V8fDyWZZ27qKgoZs6cyYYNG8jMzCQAAVwLvAMUEARFcCKBj4BLCGDAgAF66dKlIjo6Gsuyzp/H42HatGlm+fLlJicnR+BfBDAM+DPgEoAiOE8AUwigV69eZvny5TI+Ph7LskLH4/GIKVOmiCVLlpCfn08ALYAIYBkBKAIbBLwGCPxISkpi1apVomXLlliWFXpRUVGMHz+ev/71r/rMmTMC/wYDy4Ev8EPhnxf4AGiOHxERESxZsoRevXphWVbtSUhIYPDgwcyfP1+4rosfAhgEzAE0Z6Hw7wHgRgJ45plnmDZtGpZl1b62bduK+Ph489FHHwn8SwJKgPWcheTsmgOPEMCECRO49957sSyr7tx7771iwoQJhsB+DrTgLCRnlwbE4kdSUhKvvfYaQggsy6o7QgjmzJkjmjRpQgDxwKOchcO3aw/MIoBnn31WJyUlScKFW40pKYKqCr4hMgYR35gaMQZzMheMptZFxyNiG3E+zKnjUF1FfRFxiRAVS8hUV2FOHSeseCMRcYmgHMJBixYtmD17NjfffDMB3AE8Cxzi3zh8u4cBL35cddVVeubMmZL64vrQ+zahd61HH8zAfHEAczIPjObbyI59cb73JLJjX4JR/eRtuJuWUldE4+bIy0fjXJuKaNeDmvC99Sy+N56mvolmrZF9rkCNmILsNZRz5vqovO8qzLFDhB0hEU1aINp2RXbqh+w1BNltACiH+nDTTTcxd+5cVq5ciR8O8DPgNv6N4j+1BV4DFGchpTSLFi2SSUlJ1DWTuQffW8/g+/19uB+lo/d8hsnLhLISwHA2pvBL3DXvoAZeg2jUFL9cH9W/+yEYTZ0pP4M5vBP349cxJ46heg0FTwTB8L3+a8zJXOpdWQnmyG7cVQvQOz5BduyLSGhGjVWW4fvLr8Fowo+BshJMXiZ6z2e4KxfgfpSOOZ6NaNwSkZhEXbvsssuYM2cOWmv86AH8CSjhXyj+08PACPy48847mTVrlqAO6f1bqH7+Xnx/eQJzaAdUVVBjrg+TvR816rsgBGclJeb0SczB7dQ9g8ncjbttJWrIeERENIGIxOa46xaBMYQLczIHd+WbiPgmyI59qBGPF9m5L3r/ZjhzmrBXWY45tAN36Tz059sQLdshmrSkriQlJZGdnU1GRgZ+KMAFlvEvFN8UCcwHojgLr9fLwoULRaNGjagLpugEvhcfxPenxzDHszlf5sQxRKv2yJRu+KO6DcBdvRDKS6kXRScwezagrpwKysEf0ao9Ir4xeusKworrorcsw+RlofqNAMdLsETLdjijZ4IQ6IMZoF0aApOXhbv8DUzuYWT3gYjIaOpC3759efHFF3FdFz+6Ar8HfHxN8U03ADfixx133MHMmTOpC3rLcqp/cSP6822EkjmwFWfMTPBEcFaeCGSLFNx1i6gvpiAPU5CHGngNgchOfaG6Cr1vE+HGHN2H+9kHyK6XIxo3J2iOB9l7GOqK78CJHEzOIRoKc3Q/etVCZJvOiFbtqW2NGjUiOzubbdu24Uc0sBfYxdcU3/RboANnIaVk3rx5NG3alFplDL4Fz1H90kNQcYaQqziDqTiDuuwq/BHJHTHHDmGyD1BfTOYeiIpFdr2cQGTvYZgTxzCZewg7JadwVy0Ax4vsejkIQbBEbAJq+PXIHoMxxw5iCr+kQagsw/1kEUiJ7D4IhKA2de3alRdeeIEAGgHz+Jrif7UGfg8IzuKaa64xP/zhDwW1yWiqX3wQd9HLgKG2mMM7kZddhWjcAn9kz8Ho5W9AVQX1Re/4BNmhN6J1B/wSAtV/NPrwLkzuEcKOdtE71qL3bED2GISITaAmRPO2qNE3INp0xhzdByWnCH8GvetTTEEuqv9oEILa0qRJEzZs2MChQ4fwIwV4FSjhK4r/dRswDj+efvppunbtKqhF1S88gLv8DWqdMZjDO1FX3wBScjYiIhqR1Aa9fjH1x+BuWYa87CpEYhJ+CYkaPA79+TbM8aOEI5P/Be7yNxAx8ciOvUEIgiYEsm1XnGtuQTRthcnaC2UlhDtzZDem8EtU/zEgBLUlOjqaBQsW4IcAjgKb+Irif/0S6MBZNG3alJdfflkopagt7qqF+N54mrpiTh2H6Fhk1/74I9t2weQcxmTvp974qtBbl6MGT0DExOOXclCDx6N3rsMU5BGWfNXorSvQezchu/VHxCVSI1IiO/TGGXcbosUlmNwjUFxAODNHdoGUyJ6DqS0dO3bkpZdeoqysDD8cYB5fUfxTHPAioDiLm2++WV933XWCWuR79RHMiWPUJb1vM2rYJERcIv7IXkPRqxdCxRnqTVkJetc61PDvILwR+OV4UEMmorevwZzKJ1yZ/GzcZa/zD7LLZSAVNSIVsl1PnGtvRbTrASdzMSdzCVd6zwZkxz6IVu2pDUopDh06xLZt2/CjDTAbqFL802jgZvz49a9/LTp06EBt8i14Ds6cpk65PkzWXtSo6SAEZyMiopCXdMVd+w71qugE5uB21PDrQDn45Y1ADp2I2b4WcyqfsOW66F2f4n76HjK5I6LFJdSYEMjkTqirb0T2uxKqKjA5h0FrwotB7/gENXIaIjKG2hAREcHrr7+OHwr4FDio+Kc7gKGcRVxcnHnxxReFUorapDNWYvKyqGvmxDFEoybITv3wR7RshykpxBzMoD6Z/Gz0F5+jhk4EIfBHeCORQyditq/FnMonrJWcwl39NiZrH7JTP0RsI86FaNoKNXg8asxNiOg4TP4XcOY0YaOyDAq/RA0eT21ITk5m9uzZVFVV4UcesEzxT48CbTmL0aNHi5tvvpnaJuIScde8Q33Qezaghk5ExCXij+o1FHfTx3D6JPXJHDuIKchD9R8DQuCP8Eaihl2H3r0eU5BHuDPHDuIu/QuUlyI7XwqeCM6FiIxB9hiMM+F2ZI9BoF3M8aPgq6a+mewDyD7DEc1aE2qO4/Dpp59y8OBB/NDAXAUo4PeAh7O44447GDp0KLVNtGyH/jwDk5dJnfNVYzJ3o0ZNByE4K+WgegzCXfkWuD7qkzmyGyrOIPtdSUDeCNQVk9GHtmO+PErY0y56/2bcZfNBKmTHPiAV50QIRPNLUIPH44ybhWjbFarKMfk5YDT1xRzPRo36LrUhNzeXZcuW4Ucz4CkFdAN+iB+PPPIIl1xyCXVBduyDu3QeGE1dMydyIDIG2a0//ohGTREJTdGbP6a+6QNbAIHsOYSAHA9q6ER01h5M7hEahMpy9PY1uKsWICIikSndQSrOmScCmdINNWIKavxtyDadEYA5mQOuj7pk8r9ADrgGkZhEqGmtmTt3Ln54gLcUcCUwjbNQSvH888/j9XqpCyK+MZSVoA9soT7ovRtQA8YiEprhj+zQG5N7BHN0P/VN714PCGTPIQSkHNSwSZiTuZjM3TQYZSXoLctxVy1AREQiU7qDVJwP4Y1EtuuBGn49zvXfQ3a9HBHfGFNWDMWF1AkhUJePJtSaNGnCU089hTEGP1YrYDIwirNo3769+fGPfyyoQ7LLpbgr3oKKMuqcdtF7N+JcNQOUgz+q7wjcjR9CcSH1Te9eDwhkzyEEJCRqwFjQPvTejTQoZSXoLctxVy0A7SJTuoPj5bwpB9GqPfLSUTjjZqGuvhHZriciLgEqyqDkFLXieDbOdf8HpCSUvF4v8+bN49SpU/ixUwG3AJdyFoMHDxYzZ86kTnkiEI2aojd+SL04XYApPY26/Gr88nhRPYfirloAvmrqm969HhDInkMISAhk72GIxCT0tlVgDA1KWQl6+xrcj9LhzGlEqw6ImHhCRUTHIdv1QA0YizP+dtS1qaheQxEtLoHIGKgqh/JSzltVBWrYJESjpoTa0qVLOXjwIH5kKuAuoCNnMXbsWDNu3DhBHZMp3dG71mFO5FAfzOEdiJTuyORO+CMaNUW0SEGvX0w40LvXAwLZcwjBkB37IDv0xt28DHxVNDhVleh9m3CX/AlzdD8ioRkiKZlQE5HRiFbtkb2GokZMxrnue6hxt6EuuwrZqR+yZTuITQCloLwUtEswRFwizowHwOMl1DZs2MCmTZvw44QDtMCP5ORkQX0QAs/3nqLyvtHgVlPnjMH3h/uRHXohmiXjjxp2HebzDHzvvUw48L35WygrwbntMRCCQOTlVxPx5CKqnrgVc+IYDZLrw13/Pu769xFtOuOMuQl55VREXCK1RcQ3QfQcAj2H8A3GYIryMQV5UJiPOX0Cc7oAigsxZ4qgrBRTVoKIiceZ+kOIiqU2tGrVigCaK+DnQDxnceONN5p+/foJ6oFo1BSqytD7NlEvqiown29DjZwGUuGP7D0MvW8zJj+bcKAPbMWczEENGANCEIhIaIYaMRmzfzPmZC4NWnEBOmMV7vuvYLL2IjwRiBYpICV1QghEVCyicQtE6w7IDr2R3Qci+12JGngNatgk1MhpqKGTEIlJ1JZDhw6xaNEi/KhWQBoQwVnceuutdOvWTRBKRuN7+3nwVSNaXII/smt/3HWLoLSI+mAK8jAVZ1D9RuKXlMj+o9HrF8OZ04QDk7kbnbUXNehaUA6BiMho1IgpmKITmCO7aPC0xnzxOe4nf8f9KB2Tl4XwRiGSkkFILnSZmZksWLAAfxTwOKA4i1mzZokOHToQSubLTKqfnIXesgx11QxEZDRn5XiQbTrjrvkb9cV8vg3RtguyTWf8ERFRqN5Dcdf8DXxVhAOTcwi9fzNywFiEN5KAlIMaMAaR0Ay9Yy1olwtCZTnm8E7c1QtxP/wzJjcTIQQiKRmUw4UoOzub119/HT+kAh7Hj9tvv52UlBRCqrgAd8lcqKqA4kLUwGvwR7S4BHP8KCZrL/VFZ6xGDboWEd8Yf0RCM2RKN9xPFgGGcGDyv0BvW4G67CpETDzBkB37Ivtegd6+BspKuKBUlmOO7ML95F18772MPrAVSosQMY0QcYlcKI4dO0Z6ejp+KAWk4UdqaiopKSmEVEkh7pK5/IPJ2ovsNRSRlIw/sscg9OqFUHGGelFdhd65DmfkNPB48Ue06oCIiUdnrCJsFJ1Er38f2WsYIjGJYIgmrVAjp2Gy92PyMrkguT5M7hH01hW4H/wJd/kbmKx9UFqEiIpBxCXSUGVlZZGeno4/CkjDj9TUVFJSUgipkkLcJXP5f/TBDJzRM0EpzkZERCFbtsNdt4h6U1yIyTmEGjoRhMAf2eUyTPEpzMEMwkZ5Ke6ad5BtOiOSOxIMERGFuuJ6iIhG7/kMtOaCVlaCydyD3rQU94PXcD9MR+/biPnyKFSVQ1QsIjKGhiArK4v09HT8UUAafqSmppKSkkJIlRTiLpnL/1dcAI4H2XMw/ojkjpi8TMzRfdQXc+wQCInsOYRAVL8r0Zm7MTmHCRu+atxP3wdvJLLbAIIiBLLbAGTfEehd66G0iItGZRkm5zB616e4a/6G+/eXcJfNR2esxhzZjTmZAxVl4PUiIqJBCMJFVlYW6enp+OMQJnxvP48aMgHRpjP+OP/1K/TOdZhT+dQX31vPIi7piho8Hr+kwvvjl6n62WT0wQzChtH4/vIrzNG9eO55FjwRBEN2vpSI2cupnvNz3BVvcrEyBV9iCr5Eb1/DN0REIZLaIJq2QjRtjWjcHJGYBI2aIuISEbGJEBMP0XGImHjCgUO4qK6i+sUH8f76XRCSsxFxiXju+g1Vv06l3hhN9fP3Ipq3RbbvhV/eSDyPzqfqpxMxOYcJJ+6adzA5h/H85DVEs9YEJTIGzw+eQw0YS/WLD2JOn8T6WmU55ovPMV98TiAivglq5DSc794P0XHUF0kY0fs24Vv8GoHIAWNRo2+kXlWUUf3ErZiCLwlExCXifewNRNNWhBt9aAdVD4xB71xHTciB1+D93SrU0ElYNWeKC/At+iOV/30dpvQ09UUSZnyvP4nJyyQQz21piBYp1CdTkEf1E7dARRmBiKQ2eB/9KyI2gXBjigupeuy7+BbOBqMJlmjUFM+DL+N58GVEYhJWzZmsffjSH6e+SMJNZTnVv78PjMav6Dg8P/o9KIf6pI/sourpO0G7BCLadsHzi7cQ0XGEHaPxzX+Kql/ehDl9kppQQycR8YdPUFffAEJi1Yy79l3wVVMfJGFI792Ib/FrBCK7Xo4z/UfUN711BdUvP0wwZIfeeP77z+CNJBzpbauoum80etc6aiQmHs89z+L91duItl2waqCyHHMyh/ogCVO+15/E5BwiEGfaj5DdBlDf3KXz8L31LMGQPYfgffhP4I0gHJnCL6l69Lv4Xn8SfNXUhOwxmIhnl+GkPgqRMVhBcn3UB0m4qiyn+rl7wPXhl1R4HngJEZtAffO9+VvcZX8lGLLfSLwPzwVvBGHJaHxv/46qn07E5ByiRhwPzvV3EfHip6grp4KQWOFJEsb0oR343nqWQETTVnjunQ1CUK+Mofqlh3A3fEgwZL+ReB+eC94IwpU+tIPK+67GXfwaGE1NiMbN8fzo93ifeg/Z5TKs8CMJc763f4fet4lA5ICxOBPvoN5pl+pn70JvX0MwZL+ReB+eC94IwlZVJdWv/pyqR7+LOX6UmpKdL8P71GI8D72CaN0BK3xIwp12qX7uHigrIRDnlp8ju1xGvauqpOrJ29CfbyUYst9IvA/PBW8k4UzvWkflD6/C994rYDQ1pYZMJOL5VXjuegrRpCVW/ZM0ACb/C6pfepCAHA+eH7+MiG9Mvassp/rxm9BHdhEM2W8k3sf+ioiOI6xVnMH3p8eo+ukkTOYeaszxoMbeQsSLn+KkPoqIb4xVfyQNhPvJItzlbxCIaNYaz/0vgpDUN1NaRPWj09FHdhMM2WMwnl/9DRGbQLjTB7ZS+eC1+P78S6g4Q41FROFcfxcRr2zCueXniMbNseqepAGpnvMzTPYBApF9R+DM/AnhwJQWUZ02A310P8GQ7XvhfXIRollrwp6vGt/fX6TyByNwNyzhnETG4Ey+m4iXN+K56ylEUhusuiNpSCrLqXr6TqgoIxBnyg9Qg8YRDkxxAdWPTEUf3U8wRJvOeJ94F5HckYbAnMih+n9up+qx6Zjs/ZwTTwRq7C1EvLQez4//iOzUD6v2SRoY88XnVP/xJwQkBJ4fPo9o24VwYIoLqH5kCvrILoIhktrg/Z/3kZ0vpaHQOz6h8r4xVL/yM0xxIedEOahh1+F9egneJxehhkwA5WDVDgWk4UdqaiopKSmEVEkh7pK5nCuTtReR2BzZsQ9+ebyofleiV78NVZXUu8py9KfvI/uOQCQ2JxDhjURdORVzdB8m5zANgtGYgxm4S18HqZAde4NyOBeiWWvU0Emoq29ARMVg8o5A+RkuRM74WYj4xoRSVlYW6enp+KOANPxITU0lJSWFkCopxF0yl/Ohd6xBXjoS0bgF/ojYBGSHPrifvAtGU++qKtCfvo/sMQjRtBUBKQc1bBKcOY3+PIMGo7oSvWMt7uqFiKhYZPseIATnQkTHIXsNxZnwX8gOvTHlpZjj2WAMFwpn/CxEfGNCKSsri/T0dPxRQBp+pKamkpKSQkiVFOIumct50S46Yw3qyqmIiCj8ES0uQcQloreuICxUVeB+8ndkxz6IlikEJATy0lGI2ER0xmrA0GCUlaA3f4y7fjEivjGyTWcQgnMiJSK5I2rEZNTomYhGTTGnjsPpAho6Z/wsRHxjQikrK4v09HT8UUAafqSmppKSkkJIlRTiLpnLeSsrxhzehRoxGYTEH9mpH6b4FOZgBmHB9eF+thjRpjMyuRPBkJ0vRXbsg96yAqoraVCKC9DrF+OuX4yIb4xs0xmE4FyJqFhktwE416aiBl6LiI7FFORCWQkNkTN+FiK+MaGUlZVFeno6/iggDT9SU1NJSUkhpEoKcZfMJRTM8WyoKEP2u5JAVL8r0Yd2YPIyCQuui/50MaJJS2SHXgRDtGqP6j8anbEGSotocIoL0OsX465fjIhNQCZ3Aik5HyIxCdl3BM7EO5CXjUTENMKcPgmlRTQUzvhZiPjGhFJWVhbp6en4o4A0/EhNTSUlJYWQKinEXTKXUNEHtiBatkOmdMcvIVEDxqC3rcQUnSA8GPTmj0FIZM/BBEM0aoq6cirm8E7M8WwapOIC9Gcf4K5+G+F4kG06gePlvAiBaNIK2XcEzoT/Qg0ah2jSCqrKMafywRjClTN+FiK+MaGUlZVFeno6/iggDT9SU1NJSUkhpEoKcZfMJZT0thXIPsMRTVrhl8eL7D8G/dliKCshXOjd6zEFX6IuvwqEJBDhjURdOQUqy9H7t9BgnSlGb12B+/HrUFaCSO6EiIolFERCM2SPQajRN6LG3Ybs0AsRFQulRVBWTDhxrvseIrYRoZSVlUV6ejr+KCANP1JTU0lJSSGkSgpxl8wlpFwXvXUlaugkRHQc/ojoWFTfK9Cf/B2qKgkX5sgu9MHtqIHXgOMlICGQfUcg2nZBb1sFvioarMpy9N6NuB+8hsk5hEhsjmjailAREVHItl1RA6/BmXQnasQUZEp3REw8lJXAmWLqkzPpTkRMI0IpKyuL9PR0/FFAGn6kpqaSkpJCSJUU4i6ZS8iVl2J2f4YaMQUcD/6IRk2RXS7DXfd3cF3ChcnLRG9bibzsakR0HMGQbbqgBl2L3vUpFBfQoGmNOboPd/kb6I0fgRDI1h3A4yWURFwiskMv1KBxOBPvQI25GdWtPyKpDTgRUFoE1ZXUFef67yOiYwmlrKws0tPT8UcBafiRmppKSkoKIVVSiLtkLrXBnMpHf/E5atgkEAJ/RFIbZJsuuOsXgzGEC3MqH/3pe8ieQxCNmxMMEd8EZ9R3MQV5mKy9XAhM0Qn0lmX4lszF5GUi4psgmrWmNoioWERyJ2SfK1CjpuNMvgc1ciqy+0BkcmdEXAIYA2WlYDShJBo1xZnxAAhJKGVlZZGeno4/CkjDj5tuuon27dsTUlUVuO+9Qm0xOYcw5aWofiMJRCR3QjRugd6yjLBSXoq7+m1E6w7INl0IiuNBDboW0awNescacH1cEHxVmMzduCvewF37LpSVIpq2RMQmUGuEQMQmINt0QfYaghp2Hc74WThTf4AaMRnV90pk50sRrdsjE5IQEVHgulBVQY0Iief7TyNTuhNqBw8eZN68efjjEEBZWRmhJmLiqW3ue68gm1+CGj+LQNToGzHFBfjm/ZqwUlVB9dPfw0zdi3PjgyAkwVBXfRfZ9TKqf/s9dOYeLiQm9wi++f+D76+/QXa5FDXseuSQCYjGzakTykG07oho3ZF/UPyb6kpM0UlMUT6cLsCUFEJJEebMaSgrwZSXQmUZVFVCbALq6huQ3QZQG8rLywnEIYDi4mJCLioWEdsIU3qa2lT96iOIZq2RA8YSiDPlB1BZjm/Bc4QVo/EtnI0+ug/vj34P0XEEQ7TuiPc3H+Cb92t8778KRnNBMRq9fwt6/xZ47VFk18tRQyYgB12LaJZMvfFEIJq1RjRrTX0rKioiEAWk4cfw4cMZPHgwoaY3foQpyKN2GdyNHyJ7D0c0bUUgstdQKD6FPphBuDE5h3E3LEH1HoZo1ISgKAfZbySy2wD0zrVQfoYLk8GczEFnrMJ9fw7uhg+h8Dh4IxGNm4OQXIxWrlzJ0qVL8UcBafjRq1cvxowZQ6jprD2YgxnUOtdFb1iC6j8G0agJgchLR2JO5mIydxN2Sk7hrn4b0TIF2bYLwRItLsG5+kZMQR7m6D4ueEUn0Hs24C7/K+6SuZjM3VBeiohLRMTEc7F45513WL9+Pf4oIA0/WrZsyfTp0wm5ijPo9YupE1UV6C3LUIPHIWLi8UsI1IAxmJO5mMzdhB1fFXr9YkxpEarXMFCKoHgjUIPHIdp2wez+DCrLuChUVWCy96M3LcV9/xXcNe9gju6FshJEdBwiphEXqldeeYV9+/bhjwLS8MNxHO666y5CTTZugW/Ry2A0daKsBJ2xGjX8ekREFH4JgRowBnMyF5O5m3BkPs9A71iL7D0MEZtAsGSbLqhR0+FUPuboPi46pUWYI7vQGz7EfX8O7rL5mM8zMPnZoDUiPhEcLxeCJ554guPHj+OPAtLw4/Tp0/zkJz9BKUVIeSPRBzMwuUeoM8WFmB1rkcOvR3gi8EsI1IAxmJO5mMzdhCNTkIdetQDRsh2yTWeCJSKjUYPHITv1Q+/dAGUlXLTKSzFfHEDvWIu78i1877yA+8m7mH2bMLlHoKwEHA8iOh6EoKGorq7mgQcewHVd/FFAGn64rsvkyZNp0aIFoSa8kbjrFlGXzKl8zP7NqOHXg3LwSwjUgDGYk7mYzN2EpepK9KfvYwq+RPUZDo6HYIlW7XHG3ASV5eiD2wHDRc8YKC7EZB9A71yHu/Zd3Pfn4Fv0R/T6xejdn2Ky9mJOHIOyEhACERkNUhJOdu3axQsvvEAgDkHYtGkTffv2JdRk/9GIlu0weZnUJb1nA1X/Mwvvw3PBE4FfQuK55xn+wV3xJuHKXTYfvW8jnvteQHboTdAiY3Bufxw5cjq+F3+MPrQD61tUnEEf2QVHdvEflINIaIpo3BLRuDkkJiHimyDim0BcIiImHmLiEdFxEBkNkTGIuESQitqyceNGgqGANAJISEhg8uTJhJyUiOhY9MaPqGsmLwuduRs1ZCJIhV9CoAaMgdLT6IMZhK3iQtyVb4GQyO4DQAiCJRKTUKNvRDRpiTmwFSrLsYJkNJSXYgq/xOQcwhzagd6zAb1tJXrDEty17+KueBP3o3Tcxa/i/v0l9N6NqFHTqS3PP/88O3fuJBAFpBFAfn4+DzzwAEIIQk2mdEdv/hhzKp+6ZnKPoLP2ogaPB6nwSwjkZaPAGPSezwhbWqN3rUNvX4PsPgAR35igCYHs0Bt11Q1QWYY5tBMwWKEnEpNQo2+kNhhjuPvuuyktLSUQBaQRQGlpKRMnTqRVq1aEnBCIDn1wV7wJRlPXTM5hTF4matC1ICSByF5DwRuJ3rmOcGYK8nBXvAmR0cjO/UAIgiUiolCXXY0aPA6TexhzPBsrhJSD5yevIhq3oDZs376dZ555hmAoII0gNG/enJEjR1IbROMWYAx693rqg8nej8k9jBowFqQiENltAKJpK/SW5WAMYcv1oTNWoXesRXYbgIhvTE2IhGaokdORHfugM/dAcQHW+XNm3I+6YjK15YUXXuCTTz4hGApIIwh5eXn84Ac/oLbIHoPQB7dj8jKpDyb7ADprL2rweJCKQGT7Xsj2vXA3LgHXJZyZk7m4y//KP8gul4FU1IRo1QHnmlsQjZtjMvdAeSnWuZGXX43nrqdACGrLXXfdRUFBAcFQQBpBKCws5JprriE5OZlaIQSq/xh0xmrMqXzqg8k5jD60AzVkAiiHQETrDsgeg9EbP4KqCsKa66J3fYq7aSmyXU9E01bUiJDIjn1wxt4E0XGYzD1QWY4VPNm+F96f/QW8kdSWjRs38tRTTxEsBaQRJCklEydOpNZ4IpBDJ2K2r8Wcyqc+mLxM9OEdqMHjQTkEIpoloy4fjd66As4UE/aKTuCueBNz6jiyW3+EN5IacbzIbgNwxt4Cjgd9eCf4qrH8k+174Xl8ASKmEbXpscceIyMjg2ApII0g7du3j+9///tERUVRW4Q3Ejl0IubgDkx+NvXB5GWh92xADhqH8EYQiGjUFDV0Emb3esyp44Q/gzm8E73iLUR8Y2S77iAENeKJQPYaihpzE0JKzNH9UF2J9Z9kzyF4HpmPiE2gNhUUFHDHHXdQVVVFsBSQRpB8Ph+xsbFcccUV1CbhjURd8R0oK0EfzKA+mBM5mO1rkIPHIyKiCERExaJGTEZn7cPkHqFBqCxDb1qKzliNaNcD0bgFNSUiopB9rsC55laIisUc3QuV5VhfEQI18Q689/0BERlNbXv++ef58MMPqQkFpFEDe/bs4Z577sHj8VCrpEJeOgrZqS963yYoK6aumVP56I0fofqPQcQ0IiDHixp+HVRXovdvBQwNgSnIw132Bib/C2SnfoioWGrMG4HsMQjn2lREQjPMF59DWQkXK9GsNd4HX8EZdxtISW0rLS1lxowZlJWVURMKSKMGzpw5Q2xsLMOGDaMuiFbtccbMBE8E+tAO8FVTp0pOoTcsQfUejkhoRkBCIPtcgewxEL1/C5QW0TAYTOYe3KXzwPUhO/YGx0uNOV5k50txxs9CJHeC/C8wp45zsRAx8ThT78V7/4uI5I7Uleeee4733nuPmlJAGjW0detW7rjjDqKjo6kTjhfZczDONbdCbALmeDaUFlFnykrQez7DGXcbwRLN2+JccwuiSQtM9gE4U0yD4KtG716Pu2ohslNfRLNkzomUyEu6ocbejOw1DMpKMLlHwBguRKJFCs6UH+D90R+Q/a4Ex0NdOXnyJDNmzKCiooKaUkAaNVRRUUFpaSnjx4+nTnkjkd0G4Iyfhew3EpHQDFwfprgAtEttkk1bosbeQo1IhezYB2fC7ciu/cEbASWFUFZC2CsvRcQ0Qva7kvMlkpJRw65DjZqOiIzBnPgCykpo0LwRyI59UaOm46Q+gueWnyO7DQBvBHXtoYceYu3atZwLARjOgVKKDRs2cPnll1PvXB8mLxNz4hjmdAFUlhFSUiH7j0EkNCMUTNEJTM4hTMGXUF4KGMKOVMjBExCxjagNJi8Tc3Q/pqQQtEuDEBmDaNQU0aw1okUKKIf6tmXLFgYOHIjWmnMhAMM56t27N5s3b8br9WJZVt2qqqpi4MCBbN++nXMlOQ87d+7k8ccfx7Ksuvf444+zfft2zofkPD355JOsWrUKy7LqzurVq3nyySc5X5LzpLVm5syZ5ObmYllW7cvJyeGGG25Aa835koRAXl4eU6ZMoaKiAsuyak9FRQVTp07lyy+/JBQUkEYIHDt2jIMHDzJlyhSEEFiWFVpaa26++WaWLl1KqCggjRDZs2cPJ0+eZPz48ViWFVp33303f/7znwkho4A0Qmjz5s1UVlZy9dVXY1lWaDz88MPMnj2bECtXQBohtm7dOoqKihgzZgxCCCzLOjdaa+6//35++9vfUgtOKyCNWrBx40aysrIYN24cjuNgWVbNVFZWcvvtt/PKK69QS3IUkEYt2bFjB+vWrWPixIlER0djWVZwCgoKmDRpEu+99x616KAC0qhFWVlZLFiwgCFDhtC6dWssy/Jv8+bNjB49mu3bt1PLNiogjVpWVFTEvHnziImJYeDAgQghsCzrm7TWzJ49m5kzZ1JQUEAd+FgBadQB13VZunQp69atY/jw4SQmJmJZ1j8dOnSIadOm8fLLL+O6LnVkvgLSqEOZmZnMmTMHIQT9+/fHcRws62JVUVHBb37zG2688UYOHjxIHZutgDTqmM/nY+XKlcyfP58WLVrQvXt3hBBY1sVCa838+fOZNm0af/vb36iurqYePCgAQz3r3r07jzzyCFOnTsVxHCzrQuXz+Vi4cCFPP/00GRkZ1KMcIFkAhjCRkpLC97//fW699VaSkpKwrAvFyZMnmTt3Li+99BKZmZmEgXeAKQIwhBmv18u1117LjBkzGDduHPHx8VhWQ1NSUsIHH3zAW2+9xQcffEB1dTVh5AHgWQEYwlhkZCQjRozg6quv5oorrqBfv354PB4sK9xUV1ezY8cOVq9ezfLly1m9ejWVlZWEqUuBDAEYGpCoqCh69+5N79696dy5M+3ataN169Y0b96chIQEYmNj8Xg8WFaoVVdXc+bMGU6dOsWJEyc4duwYmZmZ7N+/n127drFz507Ky8tpAPKBloB2aGDKy8vZuHEjGzduxLqgPQX8lLMbBHyGdS7eBzRfkViWdbFZxNcklmVdTE4BH/M1iWVZF5O3gEq+JrEs62Iyl38hsSzrYrEV2MS/kFiWdbH4Hf9GYlnWxSAbeJN/I7Es62LwJFDFv5FYlnWhywb+xLeQWJZ1ofsFUMW3kFiWdSHbDvyZs5BYlnWh0sAPAM1ZSCzLulC9BqzDD4llWReiXOAhApBYlnWh0cCtQBH+NZJYlnWheRZYTmCPSSzLupB8CvyMwPoC90osy7pQ5ADTgSr8k8BrgJJYlnUhKAeuB3IJ7KfApXxFYllWQ+cC3wW2ENilwGN8TWJZVkOmgTuB9wksFpgPePmaxLKshsoAdwN/IjivAF35Fw6WZTVEGvgeMIfg/BC4gX/jYFlWQ1MF3A68TnBGA8/wLRwsy2pITgHTgBUEpxfwFqD4Fg6WZTUUB4Drgf0E5xLgfSCRs3CwLKsheAeYBZwmOM2Aj4FL8MPBsqxwVg48CLwIGILTDFgBdMa/agfLssLVZiAV2EvwWgJLgV4EVuFgWVa4KQYeBf4AuASvHbAcaE9wShwsywoXGkgHfg7kUjOXA+8DLQjeKQfLsuqbARYBvwC2U3NTgb8AUdTMcQfLsuqLD/g78Gsgg5qTwC+AnwGCmst1sCyrruUDc4GXgUzOTXPgdeBqzl2Wg2VZdaEUeB94C/gA8HHuxgGvAS04P4cdLMuqLZ8DK4APgWVABecnHvgt8F+A4PztcbAs63wZ4BiwG9gJbAY+A3IJnSnAbCCZ0HCBPQ7WxaQIOAAcBQqBM4CP8LQa/3KBp6hbGigDSoAC4EvgGJANlFE7ugHPAWMJrX1AmYN1ISsFlgAfAWuBI4DhwpAN/JQLV0vgEeAOwCH0PuMrDtaFKAP4HbAQOIPVkLQEHgL+DxBF7fmErzhYF5LtwMPAR1gNTR/gh8CNQAS1bwVfcbAuBMXAT4GXAY3VUEQDU4E7gaHUnR1ALl9xsBq6z4AbgSyshiACGAtMAb4DxFH3PuBrDlZD9ipwD1CJFc7aAVcDY4ExQBz1ayFfc7Aaql8Cj2KFmyZAD+BSYCAwGLiE8HEA2M7XHKyG6HHgMc6dF2gNxAMCK1gRQAQQBzQCmgItgGSgPdABaEF4+zP/wsFqaF4FHqNmHOAaYAIwHOgMOFgXm2rgL/wLB6shWQ/cQ/BigfuAu4CWWBe7d4Fc/oWD1VAUAzOBSoIzFXgeaIVl/dNz/BsHq6H4KZBFYJHAC8AsLOt/rQM28G8crIZgG/AygTUCFgEjsKxveoJvIbEagp8BGv8igUXACCzrm1YBH/EtJFa42wx8RGAvAiOwrG/SwE85C4kV7v5AYNOB27Cs/zQP2MRZSKxwVgy8jX+xwO+wrP9UBPwEPyRWOFsClOHfPUBzLOs//QQ4jh8OVjhbin9e4D5qbjewCPgcMEAX4HqgB9aFYjnwKgE4WOFsHf6NA5II3inge8BCwPBNPwdmAC8AjbEaskLgVkDjX1+JFa6KgEP4N4HgFQIjgAWA4du9CYwETmE1VAaYBeTinwR+L7HC1T4CG07w7gJ2EdhO4HtYDdUzwCICux0YJrHC1VH8iwI6EJwdwAKCtxDYjdXQfAz8hMBaAb/hKxIrXBXiXzKgCM7fqRkDvIvVkOwCZgAa/wQwB0jgKxIrXJ3Bv0YEbz819zlWQ3EUmAicIrC7gXF8TWI1VILaZbAaghPANcBRAusLPM2/kFjhKgb/igheF2quM1a4OwFcBewnsERgARDJv5BY4aoJ/uUAmuBcR81dhxXOjgGjgF0EJoF5QCf+jcQKV23wrww4QnD6AZMJ3neAPljh6gAwHNhNcJ4GxvMtJFa46goI/PuE4P0R6EhgnYA5WOFqNTAEyCI4dwP3cxYSK1w1Btrh33sErxmwAZjE2U0GPgOaYIWjF4GxQCHB+S7wO/xwsMLZCOAIZ/cRcBJoSnCaAIuArcB7wH7+qQvwHaAfVjgq/b/twX2M1gUdAPAPP34ebx1a06bx4qqVTWtzUBtuTJxSMGswNZyhtflCRzf/aI0XmxEwM0MYhZj9IQiMsygFJOc4qiURmA5jigEBZxFBlgvH+z2ct4fYjgYodzzPvf5+j9/PB7VYrnRjsQyJNqRClo3BEq0r4KeYqTzDMVzIg824E7uVbixWo48LSIUsuxn9cVzrfoJv4aNCJSngB5iDZqW7BT9HXyXojVlCVvVBA17TugLewq1CpViH8XgORaWbhGWoUqJUyLr7sVTbnsaX8TUhz3ZgOp5Xnl6YjRnKlKIJVUJWDcdY1Gvbvfg4Rgh504CHUYdm5RmAJZigfCd6Yyr6CFl2NRbhpNY1YzVuwGAhDzZjKmqxBUXl+TTW4Ubtc7Q3anGxkGVX4N94VdsaUYdP4nNCFh1BHWoxC39BUfkmYg2Gar+3UxzAECHr5mAt/qFtBUzEOszFZUJPO4J1WIlf47j2uwQLcZeOe6cX6jFGyIM/4QY0Kc1ATEMNLhW6SxP+jA34Hf6IEzpuHJ7AIJ2jvhcW4x4hL57EN5WnL27GOIzEJ9BL6Kgj2Ic92IVteB1bUdB5hmA+vqpzLUrxNyFPJuFfmKV0BazCKi0GYCiqkQilakYjDuEAGnWt/piKaeiv8+1JsUvIm5lazNI+x7BDyKoq1OC7uELX2ZVim5BHMzEI9+OEUAn6oQbfwRBdb3uKXWhEPyFv7sPVuBN7hLy6EjWYjA/rHgXs7I0ixmKokEdDcA8OYQtOCnnQF7dhHhbgevTTfTbjyVSLlzFSyKuBeAL34UHUC1lUjS/hFoxDtZ7zklNSLdZjipB3w7AWr2IhVuKY0FP6YjhG4UaMRB/ZsMEpqRZ/QBOqhErweSzD41iLtdiIBqErJBiMT+Ez+CyG4VpUyZ5mrHdKqsVRbMBooZJU43bcrsVB/BV78V80olk2rUe91g1Fre6ToAp9MQAX4zJcjkG4SH5sxGGnpM54HqOFSnYJRmCEfKjXuo9hutAea5yWOGMlikIIlayIZ52WOGM/XhRCqGSbsM9piXMtEUKoZEudJXGuVTgghFCJDuNXzpI4VyOeEkKoRE/hqLMk3m8BmoUQKkkzFniPxPvtR50QQiV5Fnu8R+L8HkazEEIlKOIh55E4vwYsFkKoBMux3XkkWjcbh4UQ8uwYvq8Vida9hR8KIeTZPOzVikTb5mObEEIe7caPtCHRtndRg6IQQp4UMRkFbUhc2CbMF0LIk5/h9y4gUZrv4TUhhDzYgSlKkCjNCdyBI0IIWdaICSgoQaJ0O3EvTgohZNUkbFOiRHmewSNCCFn0YzytDInyzcAKIYQsWY0pypQoXxF347dCCFmwARNRVKZE+xRwK14RQuhJWzAeBe2QaL+jGINXhBB6whZ8EQe1U6JjDmE0fiOE0J024Ca8owMSHXcU4/ELIYTu8BzG4KAOSnWOAu7Cm3gQvYQQusI8TEdRJ0h1niJmYCsWo1oIobMcRw3qdKJU53sGW7EC1wohdNR23IE3dLJE19iJ6zAXRSGE9jiJhfgC3tAFUl2ngGlYhUW4RgihVLtRgxd1oVTXexnD8G3MwIeEEFrTiDl4FI26WKp7NOFRLMNs3I0qIYT/a0YdZmCfbpLqXv/BZMzFA/gGqoTwwdWMFXgE23WzVM94E5PwEGoxCR8RwgfHQSzD42jQQ1I9ay8ewCxMwNdxExIhVJ6T2Iil+CWO6WGpbChgOZZjEG7DVzAKVULIr3exCWuwCntlSCp79uMxPIZqXI9RuA7D0U8I2VXA63gJ67Eeh2VUKtuO4AW8oEVvXIVrcBWuxGBcjksxEP1wkRA6XxMacRgH8Db+ib+jAduxA81y4n/E6cqsB6CXqwAAAABJRU5ErkJggg==",\n "deepLink": "umami://",\n "universalLink": "https://umamiwallet.com/"\n}, {\n "key": "trust_ios",\n "name": "Trust Wallet",\n "shortName": "Trust Wallet",\n "color": "",\n "supportedInteractionStandards": ["wallet_connect"],\n "logo": "data:image/png;base64,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",\n "universalLink": "https://link.trustwallet.com",\n "deepLink": "trust://"\n}, {\n "key": "exodus_mobile",\n "name": "Exodus Mobile",\n "shortName": "Exodus",\n "color": "",\n "logo": "data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjMwMCIgdmlld0JveD0iMCAwIDMwMCAzMDAiIHdpZHRoPSIzMDAiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiPjxsaW5lYXJHcmFkaWVudCBpZD0iYSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSIyNTYuODc1IiB4Mj0iMTcxLjMiIHkxPSIzMjAuNjI1IiB5Mj0iLTMyLjk0NTkiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzBiNDZmOSIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI2JiZmJlMCIvPjwvbGluZWFyR3JhZGllbnQ+PGxpbmVhckdyYWRpZW50IGlkPSJiIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjIyLjUwMDIiIHgyPSIxNzAuNjI1IiB5MT0iNjcuNSIgeTI9IjE3OC4xMjUiPjxzdG9wIG9mZnNldD0iLjExOTc5MiIgc3RvcC1jb2xvcj0iIzg5NTJmZiIgc3RvcC1vcGFjaXR5PSIuODciLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNkYWJkZmYiIHN0b3Atb3BhY2l0eT0iMCIvPjwvbGluZWFyR3JhZGllbnQ+PG1hc2sgaWQ9ImMiIGhlaWdodD0iMzAwIiBtYXNrVW5pdHM9InVzZXJTcGFjZU9uVXNlIiB3aWR0aD0iMjk2IiB4PSIzIiB5PSIwIj48cGF0aCBkPSJtMjk4LjIwNCA4My43NjQ1LTEyNy43NTQtODMuNzY0NXY0Ni44MzMybDgxLjk1NSA1My4yNTU4LTkuNjQyIDMwLjUwOWgtNzIuMzEzdjM4LjgwNGg3Mi4zMTNsOS42NDIgMzAuNTA5LTgxLjk1NSA1My4yNTZ2NDYuODMzbDEyNy43NTQtODMuNDk3LTIwLjg5MS02Ni4zNjl6IiBmaWxsPSJ1cmwoI2EpIi8+PHBhdGggZD0ibTU5LjMwMSAxNjkuNDAyaDcyLjA0NnYtMzguODA0aC03Mi4zMTM4bC05LjM3NC0zMC41MDkgODEuNjg3OC01My4yNTU4di00Ni44MzMybC0xMjcuNzU0MjMgODMuNzY0NSAyMC44OTA2MyA2Ni4zNjk1LTIwLjg5MDYzIDY2LjM2OSAxMjguMDIyMjMgODMuNDk3di00Ni44MzNsLTgxLjk1NTgtNTMuMjU2eiIgZmlsbD0idXJsKCNhKSIvPjwvbWFzaz48cGF0aCBkPSJtMjk4LjIwMyA4My43NjQ1LTEyNy43NTQtODMuNzY0NXY0Ni44MzMybDgxLjk1NiA1My4yNTU4LTkuNjQyIDMwLjUwOWgtNzIuMzE0djM4LjgwNGg3Mi4zMTRsOS42NDIgMzAuNTA5LTgxLjk1NiA1My4yNTZ2NDYuODMzbDEyNy43NTQtODMuNDk3LTIwLjg5LTY2LjM2OXoiIGZpbGw9InVybCgjYSkiLz48cGF0aCBkPSJtNTkuMzAwNyAxNjkuNDAyaDcyLjA0NTN2LTM4LjgwNGgtNzIuMzEzMWwtOS4zNzQtMzAuNTA5IDgxLjY4NzEtNTMuMjU1OHYtNDYuODMzMmwtMTI3Ljc1MzQ3IDgzLjc2NDUgMjAuODkwNTcgNjYuMzY5NS0yMC44OTA1NyA2Ni4zNjkgMTI4LjAyMTQ3IDgzLjQ5N3YtNDYuODMzbC04MS45NTUxLTUzLjI1NnoiIGZpbGw9InVybCgjYSkiLz48ZyBtYXNrPSJ1cmwoI2MpIj48cGF0aCBkPSJtMy43NTAyNCAwaDI5Mi41djMwMGgtMjkyLjV6IiBmaWxsPSJ1cmwoI2IpIi8+PC9nPjwvc3ZnPg==",\n "supportedInteractionStandards": ["beacon"],\n "deepLink": "exodus://wc",\n "universalLink": "https://www.exodus.com/"\n}];\n\nconst _tmpl$$a = /*#__PURE__*/web.template(``),\n _tmpl$2$8 = /*#__PURE__*/web.template(``),\n _tmpl$3$7 = /*#__PURE__*/web.template(``);\nfunction CloseIcon(props) {\n return (() => {\n const _el$ = _tmpl$$a();\n web.effect(_$p => web.style(_el$, props.style ? {\n overflow: \'visible\',\n \'font-size\': \'22px\',\n ...props.style\n } : {\n overflow: \'visible\',\n \'font-size\': \'22px\'\n }, _$p));\n return _el$;\n })();\n}\nfunction LeftIcon(props) {\n return (() => {\n const _el$2 = _tmpl$2$8();\n web.effect(_$p => web.style(_el$2, props.style ? {\n overflow: \'visible\',\n ...props.style\n } : {\n overflow: \'visible\'\n }, _$p));\n return _el$2;\n })();\n}\nfunction LogoIcon(props) {\n return (() => {\n const _el$3 = _tmpl$3$7();\n web.effect(_$p => web.style(_el$3, props.style ? {\n ...props.style\n } : {}, _$p));\n return _el$3;\n })();\n}\n\nvar styles$8 = ".loader {\\n height: 3px;\\n position: relative;\\n background-color: #ddd;\\n position: absolute;\\n width: 100%;\\n left: 0px;\\n bottom: 0px;\\n overflow: hidden;\\n}\\n\\n.loader:before {\\n content: \'\';\\n position: absolute;\\n left: -50%;\\n height: 3px;\\n width: 40%;\\n background-color: #3880ff;\\n -webkit-animation: lineAnim 1s linear infinite;\\n -moz-animation: lineAnim 1s linear infinite;\\n animation: lineAnim 1s linear infinite;\\n}\\n\\n@keyframes lineAnim {\\n 0% {\\n left: -40%;\\n }\\n 50% {\\n left: 20%;\\n width: 80%;\\n }\\n 100% {\\n left: 100%;\\n width: 100%;\\n }\\n}\\n";\n\nconst _tmpl$$9 = /*#__PURE__*/web.template(`
`);\nconst Loader = _ => {\n return _tmpl$$9();\n};\n\nconst _tmpl$$8 = /*#__PURE__*/web.template(`
`),\n _tmpl$2$7 = /*#__PURE__*/web.template(`
`),\n _tmpl$3$6 = /*#__PURE__*/web.template(`
`),\n _tmpl$4$5 = /*#__PURE__*/web.template(`
`),\n _tmpl$5$5 = /*#__PURE__*/web.template(`
`),\n _tmpl$6$3 = /*#__PURE__*/web.template(`