Feature Tip: Add private address tag to any address under My Name Tag !
ERC-20
Overview
Max Total Supply
1,157,909,313,164,238,222,616,167,492,988,378,209,753,717,087,204.823887283690902783 BALANCE
Holders
37
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 18 Decimals)
Balance
0.346006860233252384 BALANCEValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Source Code Verified (Exact Match)
Contract Name:
SolanaEthereumAvalancheFantomBscBase
Compiler Version
v0.8.15+commit.e14f2714
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2023-12-23 */ // Twitter: https://twitter.com/omnibalancecoin // Telegram: https://t.me/OmniBalanceCoin // File: @openzeppelin/contracts/utils/Context.sol // OpenZeppelin Contracts v4.4.1 (utils/Context.sol) pragma solidity ^0.8.0; /** * @dev Provides information about the current execution context, including the * sender of the transaction and its data. While these are generally available * via msg.sender and msg.data, they should not be accessed in such a direct * manner, since when dealing with meta-transactions the account sending and * paying for execution may not be the actual sender (as far as an application * is concerned). * * This contract is only required for intermediate, library-like contracts. */ abstract contract Context { function _msgSender() internal view virtual returns (address) { return msg.sender; } function _msgData() internal view virtual returns (bytes calldata) { return msg.data; } } // File: @openzeppelin/contracts/access/Ownable.sol // OpenZeppelin Contracts (last updated v4.9.0) (access/Ownable.sol) pragma solidity ^0.8.0; /** * @dev Contract module which provides a basic access control mechanism, where * there is an account (an owner) that can be granted exclusive access to * specific functions. * * By default, the owner account will be the one that deploys the contract. This * can later be changed with {transferOwnership}. * * This module is used through inheritance. It will make available the modifier * `onlyOwner`, which can be applied to your functions to restrict their use to * the owner. */ abstract contract Ownable is Context { address private _owner; event OwnershipTransferred(address indexed previousOwner, address indexed newOwner); /** * @dev Initializes the contract setting the deployer as the initial owner. */ constructor() { _transferOwnership(_msgSender()); } /** * @dev Throws if called by any account other than the owner. */ modifier onlyOwner() { _checkOwner(); _; } /** * @dev Returns the address of the current owner. */ function owner() public view virtual returns (address) { return _owner; } /** * @dev Throws if the sender is not the owner. */ function _checkOwner() internal view virtual { require(owner() == _msgSender(), "Ownable: caller is not the owner"); } /** * @dev Leaves the contract without owner. It will not be possible to call * `onlyOwner` functions. Can only be called by the current owner. * * NOTE: Renouncing ownership will leave the contract without an owner, * thereby disabling any functionality that is only available to the owner. */ function renounceOwnership() public virtual onlyOwner { _transferOwnership(address(0)); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Can only be called by the current owner. */ function transferOwnership(address newOwner) public virtual onlyOwner { require(newOwner != address(0), "Ownable: new owner is the zero address"); _transferOwnership(newOwner); } /** * @dev Transfers ownership of the contract to a new account (`newOwner`). * Internal function without access restriction. */ function _transferOwnership(address newOwner) internal virtual { address oldOwner = _owner; _owner = newOwner; emit OwnershipTransferred(oldOwner, newOwner); } } // File: @openzeppelin/contracts/token/ERC20/IERC20.sol // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol) pragma solidity ^0.8.0; /** * @dev Interface of the ERC20 standard as defined in the EIP. */ interface IERC20 { /** * @dev Emitted when `value` tokens are moved from one account (`from`) to * another (`to`). * * Note that `value` may be zero. */ event Transfer(address indexed from, address indexed to, uint256 value); /** * @dev Emitted when the allowance of a `spender` for an `owner` is set by * a call to {approve}. `value` is the new allowance. */ event Approval(address indexed owner, address indexed spender, uint256 value); /** * @dev Returns the amount of tokens in existence. */ function totalSupply() external view returns (uint256); /** * @dev Returns the amount of tokens owned by `account`. */ function balanceOf(address account) external view returns (uint256); /** * @dev Moves `amount` tokens from the caller's account to `to`. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transfer(address to, uint256 amount) external returns (bool); /** * @dev Returns the remaining number of tokens that `spender` will be * allowed to spend on behalf of `owner` through {transferFrom}. This is * zero by default. * * This value changes when {approve} or {transferFrom} are called. */ function allowance(address owner, address spender) external view returns (uint256); /** * @dev Sets `amount` as the allowance of `spender` over the caller's tokens. * * Returns a boolean value indicating whether the operation succeeded. * * IMPORTANT: Beware that changing an allowance with this method brings the risk * that someone may use both the old and the new allowance by unfortunate * transaction ordering. One possible solution to mitigate this race * condition is to first reduce the spender's allowance to 0 and set the * desired value afterwards: * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 * * Emits an {Approval} event. */ function approve(address spender, uint256 amount) external returns (bool); /** * @dev Moves `amount` tokens from `from` to `to` using the * allowance mechanism. `amount` is then deducted from the caller's * allowance. * * Returns a boolean value indicating whether the operation succeeded. * * Emits a {Transfer} event. */ function transferFrom(address from, address to, uint256 amount) external returns (bool); } // File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol // OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol) pragma solidity ^0.8.0; /** * @dev Interface for the optional metadata functions from the ERC20 standard. * * _Available since v4.1._ */ interface IERC20Metadata is IERC20 { /** * @dev Returns the name of the token. */ function name() external view returns (string memory); /** * @dev Returns the symbol of the token. */ function symbol() external view returns (string memory); /** * @dev Returns the decimals places of the token. */ function decimals() external view returns (uint8); } // File: @openzeppelin/contracts/token/ERC20/ERC20.sol // OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.sol) pragma solidity ^0.8.0; /** * @dev Implementation of the {IERC20} interface. * * This implementation is agnostic to the way tokens are created. This means * that a supply mechanism has to be added in a derived contract using {_mint}. * For a generic mechanism see {ERC20PresetMinterPauser}. * * TIP: For a detailed writeup see our guide * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How * to implement supply mechanisms]. * * The default value of {decimals} is 18. To change this, you should override * this function so it returns a different value. * * We have followed general OpenZeppelin Contracts guidelines: functions revert * instead returning `false` on failure. This behavior is nonetheless * conventional and does not conflict with the expectations of ERC20 * applications. * * Additionally, an {Approval} event is emitted on calls to {transferFrom}. * This allows applications to reconstruct the allowance for all accounts just * by listening to said events. Other implementations of the EIP may not emit * these events, as it isn't required by the specification. * * Finally, the non-standard {decreaseAllowance} and {increaseAllowance} * functions have been added to mitigate the well-known issues around setting * allowances. See {IERC20-approve}. */ contract ERC20 is Context, IERC20, IERC20Metadata { mapping(address => uint256) private _balances; mapping(address => mapping(address => uint256)) private _allowances; uint256 private _totalSupply; string private _name; string private _symbol; /** * @dev Sets the values for {name} and {symbol}. * * All two of these values are immutable: they can only be set once during * construction. */ constructor(string memory name_, string memory symbol_) { _name = name_; _symbol = symbol_; } /** * @dev Returns the name of the token. */ function name() public view virtual override returns (string memory) { return _name; } /** * @dev Returns the symbol of the token, usually a shorter version of the * name. */ function symbol() public view virtual override returns (string memory) { return _symbol; } /** * @dev Returns the number of decimals used to get its user representation. * For example, if `decimals` equals `2`, a balance of `505` tokens should * be displayed to a user as `5.05` (`505 / 10 ** 2`). * * Tokens usually opt for a value of 18, imitating the relationship between * Ether and Wei. This is the default value returned by this function, unless * it's overridden. * * NOTE: This information is only used for _display_ purposes: it in * no way affects any of the arithmetic of the contract, including * {IERC20-balanceOf} and {IERC20-transfer}. */ function decimals() public view virtual override returns (uint8) { return 18; } /** * @dev See {IERC20-totalSupply}. */ function totalSupply() public view virtual override returns (uint256) { return _totalSupply; } /** * @dev See {IERC20-balanceOf}. */ function balanceOf(address account) public view virtual override returns (uint256) { return _balances[account]; } /** * @dev See {IERC20-transfer}. * * Requirements: * * - `to` cannot be the zero address. * - the caller must have a balance of at least `amount`. */ function transfer(address to, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _transfer(owner, to, amount); return true; } /** * @dev See {IERC20-allowance}. */ function allowance(address owner, address spender) public view virtual override returns (uint256) { return _allowances[owner][spender]; } /** * @dev See {IERC20-approve}. * * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on * `transferFrom`. This is semantically equivalent to an infinite approval. * * Requirements: * * - `spender` cannot be the zero address. */ function approve(address spender, uint256 amount) public virtual override returns (bool) { address owner = _msgSender(); _approve(owner, spender, amount); return true; } /** * @dev See {IERC20-transferFrom}. * * Emits an {Approval} event indicating the updated allowance. This is not * required by the EIP. See the note at the beginning of {ERC20}. * * NOTE: Does not update the allowance if the current allowance * is the maximum `uint256`. * * Requirements: * * - `from` and `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. * - the caller must have allowance for ``from``'s tokens of at least * `amount`. */ function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) { address spender = _msgSender(); _spendAllowance(from, spender, amount); _transfer(from, to, amount); return true; } /** * @dev Atomically increases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. */ function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) { address owner = _msgSender(); _approve(owner, spender, allowance(owner, spender) + addedValue); return true; } /** * @dev Atomically decreases the allowance granted to `spender` by the caller. * * This is an alternative to {approve} that can be used as a mitigation for * problems described in {IERC20-approve}. * * Emits an {Approval} event indicating the updated allowance. * * Requirements: * * - `spender` cannot be the zero address. * - `spender` must have allowance for the caller of at least * `subtractedValue`. */ function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) { address owner = _msgSender(); uint256 currentAllowance = allowance(owner, spender); require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero"); unchecked { _approve(owner, spender, currentAllowance - subtractedValue); } return true; } /** * @dev Moves `amount` of tokens from `from` to `to`. * * This internal function is equivalent to {transfer}, and can be used to * e.g. implement automatic token fees, slashing mechanisms, etc. * * Emits a {Transfer} event. * * Requirements: * * - `from` cannot be the zero address. * - `to` cannot be the zero address. * - `from` must have a balance of at least `amount`. */ function _transfer(address from, address to, uint256 amount) internal virtual { require(from != address(0), "ERC20: transfer from the zero address"); require(to != address(0), "ERC20: transfer to the zero address"); _beforeTokenTransfer(from, to, amount); uint256 fromBalance = _balances[from]; require(fromBalance >= amount, "ERC20: transfer amount exceeds balance"); unchecked { _balances[from] = fromBalance - amount; // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by // decrementing then incrementing. _balances[to] += amount; } emit Transfer(from, to, amount); _afterTokenTransfer(from, to, amount); } /** @dev Creates `amount` tokens and assigns them to `account`, increasing * the total supply. * * Emits a {Transfer} event with `from` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. */ function _mint(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: mint to the zero address"); _beforeTokenTransfer(address(0), account, amount); _totalSupply += amount; unchecked { // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above. _balances[account] += amount; } emit Transfer(address(0), account, amount); _afterTokenTransfer(address(0), account, amount); } /** * @dev Destroys `amount` tokens from `account`, reducing the * total supply. * * Emits a {Transfer} event with `to` set to the zero address. * * Requirements: * * - `account` cannot be the zero address. * - `account` must have at least `amount` tokens. */ function _burn(address account, uint256 amount) internal virtual { require(account != address(0), "ERC20: burn from the zero address"); _beforeTokenTransfer(account, address(0), amount); uint256 accountBalance = _balances[account]; require(accountBalance >= amount, "ERC20: burn amount exceeds balance"); unchecked { _balances[account] = accountBalance - amount; // Overflow not possible: amount <= accountBalance <= totalSupply. _totalSupply -= amount; } emit Transfer(account, address(0), amount); _afterTokenTransfer(account, address(0), amount); } /** * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens. * * This internal function is equivalent to `approve`, and can be used to * e.g. set automatic allowances for certain subsystems, etc. * * Emits an {Approval} event. * * Requirements: * * - `owner` cannot be the zero address. * - `spender` cannot be the zero address. */ function _approve(address owner, address spender, uint256 amount) internal virtual { require(owner != address(0), "ERC20: approve from the zero address"); require(spender != address(0), "ERC20: approve to the zero address"); _allowances[owner][spender] = amount; emit Approval(owner, spender, amount); } /** * @dev Updates `owner` s allowance for `spender` based on spent `amount`. * * Does not update the allowance amount in case of infinite allowance. * Revert if not enough allowance is available. * * Might emit an {Approval} event. */ function _spendAllowance(address owner, address spender, uint256 amount) internal virtual { uint256 currentAllowance = allowance(owner, spender); if (currentAllowance != type(uint256).max) { require(currentAllowance >= amount, "ERC20: insufficient allowance"); unchecked { _approve(owner, spender, currentAllowance - amount); } } } /** * @dev Hook that is called before any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * will be transferred to `to`. * - when `from` is zero, `amount` tokens will be minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens will be burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual {} /** * @dev Hook that is called after any transfer of tokens. This includes * minting and burning. * * Calling conditions: * * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens * has been transferred to `to`. * - when `from` is zero, `amount` tokens have been minted for `to`. * - when `to` is zero, `amount` of ``from``'s tokens have been burned. * - `from` and `to` are never both zero. * * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks]. */ function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {} } // File: @openzeppelin/contracts/token/ERC20/extensions/ERC20Burnable.sol // OpenZeppelin Contracts (last updated v4.5.0) (token/ERC20/extensions/ERC20Burnable.sol) pragma solidity ^0.8.0; /** * @dev Extension of {ERC20} that allows token holders to destroy both their own * tokens and those that they have an allowance for, in a way that can be * recognized off-chain (via event analysis). */ abstract contract ERC20Burnable is Context, ERC20 { /** * @dev Destroys `amount` tokens from the caller. * * See {ERC20-_burn}. */ function burn(uint256 amount) public virtual { _burn(_msgSender(), amount); } /** * @dev Destroys `amount` tokens from `account`, deducting from the caller's * allowance. * * See {ERC20-_burn} and {ERC20-allowance}. * * Requirements: * * - the caller must have allowance for ``accounts``'s tokens of at least * `amount`. */ function burnFrom(address account, uint256 amount) public virtual { _spendAllowance(account, _msgSender(), amount); _burn(account, amount); } } // File: lzDoge/erc20.sol pragma solidity ^0.8.10; pragma solidity >=0.5.0; interface ILayerZeroUserApplicationConfig { function setConfig(uint16 _version, uint16 _chainId, uint _configType, bytes calldata _config) external; function setSendVersion(uint16 _version) external; function setReceiveVersion(uint16 _version) external; function forceResumeReceive(uint16 _srcChainId, bytes calldata _srcAddress) external; } pragma solidity >=0.5.0; interface ILayerZeroEndpoint is ILayerZeroUserApplicationConfig { function send(uint16 _dstChainId, bytes calldata _destination, bytes calldata _payload, address payable _refundAddress, address _zroPaymentAddress, bytes calldata _adapterParams) external payable; function receivePayload(uint16 _srcChainId, bytes calldata _srcAddress, address _dstAddress, uint64 _nonce, uint _gasLimit, bytes calldata _payload) external; function getInboundNonce(uint16 _srcChainId, bytes calldata _srcAddress) external view returns (uint64); function getOutboundNonce(uint16 _dstChainId, address _srcAddress) external view returns (uint64); function estimateFees(uint16 _dstChainId, address _userApplication, bytes calldata _payload, bool _payInZRO, bytes calldata _adapterParam) external view returns (uint nativeFee, uint zroFee); function getChainId() external view returns (uint16); function retryPayload(uint16 _srcChainId, bytes calldata _srcAddress, bytes calldata _payload) external; function hasStoredPayload(uint16 _srcChainId, bytes calldata _srcAddress) external view returns (bool); function getSendLibraryAddress(address _userApplication) external view returns (address); function getReceiveLibraryAddress(address _userApplication) external view returns (address); function isSendingPayload() external view returns (bool); function isReceivingPayload() external view returns (bool); function getConfig(uint16 _version, uint16 _chainId, address _userApplication, uint _configType) external view returns (bytes memory); function getSendVersion(address _userApplication) external view returns (uint16); function getReceiveVersion(address _userApplication) external view returns (uint16); } pragma solidity >=0.5.0; interface ILayerZeroReceiver { function lzReceive(uint16 _srcChainId, bytes calldata _srcAddress, uint64 _nonce, bytes calldata _payload) external; } abstract contract NonblockingReceiver is Ownable, ILayerZeroReceiver { ILayerZeroEndpoint internal endpoint; struct FailedMessages { uint payloadLength; bytes32 payloadHash; } mapping(uint16 => mapping(bytes => mapping(uint => FailedMessages))) public failedMessages; mapping(uint16 => bytes) public trustedRemoteLookup; event MessageFailed(uint16 _srcChainId, bytes _srcAddress, uint64 _nonce, bytes _payload); function lzReceive(uint16 _srcChainId, bytes memory _srcAddress, uint64 _nonce, bytes memory _payload) external override { require(msg.sender == address(endpoint)); // boilerplate! lzReceive must be called by the endpoint for security require(_srcAddress.length == trustedRemoteLookup[_srcChainId].length && keccak256(_srcAddress) == keccak256(trustedRemoteLookup[_srcChainId]), "NonblockingReceiver: invalid source sending contract"); try this.onLzReceive(_srcChainId, _srcAddress, _nonce, _payload) { } catch { failedMessages[_srcChainId][_srcAddress][_nonce] = FailedMessages(_payload.length, keccak256(_payload)); emit MessageFailed(_srcChainId, _srcAddress, _nonce, _payload); } } function onLzReceive(uint16 _srcChainId, bytes memory _srcAddress, uint64 _nonce, bytes memory _payload) public { require(msg.sender == address(this), "NonblockingReceiver: caller must be Bridge."); _LzReceive( _srcChainId, _srcAddress, _nonce, _payload); } function _LzReceive(uint16 _srcChainId, bytes memory _srcAddress, uint64 _nonce, bytes memory _payload) virtual internal; function _lzSend(uint16 _dstChainId, bytes memory _payload, address payable _refundAddress, address _zroPaymentAddress, bytes memory _txParam) internal { endpoint.send{value: msg.value}(_dstChainId, trustedRemoteLookup[_dstChainId], _payload, _refundAddress, _zroPaymentAddress, _txParam); } function retryMessage(uint16 _srcChainId, bytes memory _srcAddress, uint64 _nonce, bytes calldata _payload) external payable { FailedMessages storage failedMsg = failedMessages[_srcChainId][_srcAddress][_nonce]; require(failedMsg.payloadHash != bytes32(0), "NonblockingReceiver: no stored message"); require(_payload.length == failedMsg.payloadLength && keccak256(_payload) == failedMsg.payloadHash, "LayerZero: invalid payload"); failedMsg.payloadLength = 0; failedMsg.payloadHash = bytes32(0); this.onLzReceive(_srcChainId, _srcAddress, _nonce, _payload); } function setMultipleTrustedRemotes(uint16[] calldata _chainIds, bytes[] calldata _trustedRemotes) external onlyOwner { require(_chainIds.length == _trustedRemotes.length, "Chain IDs and remotes length mismatch"); for (uint i = 0; i < _chainIds.length; i++) { trustedRemoteLookup[_chainIds[i]] = _trustedRemotes[i]; } } } contract SolanaEthereumAvalancheFantomBscBase is ERC20, ERC20Burnable, Ownable, NonblockingReceiver{ uint gasForDestinationLzReceive = 350000; uint256 public bridgeChainID; constructor(address _layerZeroEndpoint , uint256 _chainID) ERC20("SolanaEthereumAvalancheFantomBscBase", "BALANCE"){ endpoint = ILayerZeroEndpoint(_layerZeroEndpoint); bridgeChainID = _chainID; _mint(msg.sender , 100000000 * 10 ** decimals()); // eth _mint(msg.sender , 100000000 * 10 ** decimals()); // solana } function estimateFeesView(uint16 _chainId , uint256 value) public view returns (uint) { bytes memory payload = abi.encode(msg.sender , value); uint16 version = 1; bytes memory adapterParams = abi.encodePacked(version, gasForDestinationLzReceive); (uint messageFee, ) = endpoint.estimateFees(_chainId, address(this), payload, false, adapterParams); return messageFee; } function traverseOtherChains(uint16 _chainId , uint256 value) public payable { require(msg.value >= estimateFeesView(_chainId , value) , "SolanaEthereumAvalancheFantomBscBase Error #1"); require(balanceOf(msg.sender) >= value , "SolanaEthereumAvalancheFantomBscBase Error #1"); _burn(msg.sender , value); require(trustedRemoteLookup[_chainId].length > 0, "This chain is currently unavailable for travel"); // abi.encode() the payload with the values to send bytes memory payload = abi.encode(msg.sender , value); // encode adapterParams to specify more gas for the destination uint16 version = 1; bytes memory adapterParams = abi.encodePacked(version, gasForDestinationLzReceive); // get the fees we need to pay to LayerZero + Relayer to cover message delivery // you will be refunded for extra gas paid (uint messageFee, ) = endpoint.estimateFees(_chainId, address(this), payload, false, adapterParams); require(msg.value >= messageFee, "SolanaEthereumAvalancheFantomBscBase: msg.value not enough to cover messageFee. Send gas for message fees"); endpoint.send{value: msg.value}( _chainId, // destination chainId trustedRemoteLookup[_chainId], // destination address of nft contract payload, // abi.encoded()'ed bytes payable(msg.sender), // refund address address(0x0), // 'zroPaymentAddress' unused for this adapterParams // txParameters ); } function _LzReceive(uint16 _srcChainId, bytes memory _srcAddress, uint64 _nonce, bytes memory _payload) override internal { // decode (address toAddr , uint256 value) = abi.decode(_payload, (address , uint256)); // mint the tokens back into existence on destination chain _mint(toAddr, value); } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"inputs":[{"internalType":"address","name":"_layerZeroEndpoint","type":"address"},{"internalType":"uint256","name":"_chainID","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"_srcChainId","type":"uint16"},{"indexed":false,"internalType":"bytes","name":"_srcAddress","type":"bytes"},{"indexed":false,"internalType":"uint64","name":"_nonce","type":"uint64"},{"indexed":false,"internalType":"bytes","name":"_payload","type":"bytes"}],"name":"MessageFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bridgeChainID","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_chainId","type":"uint16"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"estimateFeesView","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"","type":"uint16"},{"internalType":"bytes","name":"","type":"bytes"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"failedMessages","outputs":[{"internalType":"uint256","name":"payloadLength","type":"uint256"},{"internalType":"bytes32","name":"payloadHash","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_srcChainId","type":"uint16"},{"internalType":"bytes","name":"_srcAddress","type":"bytes"},{"internalType":"uint64","name":"_nonce","type":"uint64"},{"internalType":"bytes","name":"_payload","type":"bytes"}],"name":"lzReceive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"_srcChainId","type":"uint16"},{"internalType":"bytes","name":"_srcAddress","type":"bytes"},{"internalType":"uint64","name":"_nonce","type":"uint64"},{"internalType":"bytes","name":"_payload","type":"bytes"}],"name":"onLzReceive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_srcChainId","type":"uint16"},{"internalType":"bytes","name":"_srcAddress","type":"bytes"},{"internalType":"uint64","name":"_nonce","type":"uint64"},{"internalType":"bytes","name":"_payload","type":"bytes"}],"name":"retryMessage","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint16[]","name":"_chainIds","type":"uint16[]"},{"internalType":"bytes[]","name":"_trustedRemotes","type":"bytes[]"}],"name":"setMultipleTrustedRemotes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_chainId","type":"uint16"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"traverseOtherChains","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint16","name":"","type":"uint16"}],"name":"trustedRemoteLookup","outputs":[{"internalType":"bytes","name":"","type":"bytes"}],"stateMutability":"view","type":"function"}]
Contract Creation Code
6080604052620557306009553480156200001857600080fd5b50604051620047c8380380620047c883398181016040528101906200003e919062000497565b604051806060016040528060248152602001620047a4602491396040518060400160405280600781526020017f42414c414e43450000000000000000000000000000000000000000000000000081525081600390816200009f91906200074e565b508060049081620000b191906200074e565b505050620000d4620000c8620001a460201b60201c565b620001ac60201b60201c565b81600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600a819055506200015c33620001316200027260201b60201c565b600a6200013f9190620009c5565b6305f5e10062000150919062000a16565b6200027b60201b60201c565b6200019c33620001716200027260201b60201c565b600a6200017f9190620009c5565b6305f5e10062000190919062000a16565b6200027b60201b60201c565b505062000b85565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60006012905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603620002ed576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002e49062000ad8565b60405180910390fd5b6200030160008383620003e860201b60201c565b806002600082825462000315919062000afa565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620003c8919062000b68565b60405180910390a3620003e460008383620003ed60201b60201c565b5050565b505050565b505050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200042482620003f7565b9050919050565b620004368162000417565b81146200044257600080fd5b50565b60008151905062000456816200042b565b92915050565b6000819050919050565b62000471816200045c565b81146200047d57600080fd5b50565b600081519050620004918162000466565b92915050565b60008060408385031215620004b157620004b0620003f2565b5b6000620004c18582860162000445565b9250506020620004d48582860162000480565b9150509250929050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806200056057607f821691505b60208210810362000576576200057562000518565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302620005e07fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620005a1565b620005ec8683620005a1565b95508019841693508086168417925050509392505050565b6000819050919050565b60006200062f6200062962000623846200045c565b62000604565b6200045c565b9050919050565b6000819050919050565b6200064b836200060e565b620006636200065a8262000636565b848454620005ae565b825550505050565b600090565b6200067a6200066b565b6200068781848462000640565b505050565b5b81811015620006af57620006a360008262000670565b6001810190506200068d565b5050565b601f821115620006fe57620006c8816200057c565b620006d38462000591565b81016020851015620006e3578190505b620006fb620006f28562000591565b8301826200068c565b50505b505050565b600082821c905092915050565b6000620007236000198460080262000703565b1980831691505092915050565b60006200073e838362000710565b9150826002028217905092915050565b6200075982620004de565b67ffffffffffffffff811115620007755762000774620004e9565b5b62000781825462000547565b6200078e828285620006b3565b600060209050601f831160018114620007c65760008415620007b1578287015190505b620007bd858262000730565b8655506200082d565b601f198416620007d6866200057c565b60005b828110156200080057848901518255600182019150602085019450602081019050620007d9565b868310156200082057848901516200081c601f89168262000710565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620008c3578086048111156200089b576200089a62000835565b5b6001851615620008ab5780820291505b8081029050620008bb8562000864565b94506200087b565b94509492505050565b600082620008de5760019050620009b1565b81620008ee5760009050620009b1565b8160018114620009075760028114620009125762000948565b6001915050620009b1565b60ff84111562000927576200092662000835565b5b8360020a91508482111562000941576200094062000835565b5b50620009b1565b5060208310610133831016604e8410600b8410161715620009825782820a9050838111156200097c576200097b62000835565b5b620009b1565b62000991848484600162000871565b92509050818404811115620009ab57620009aa62000835565b5b81810290505b9392505050565b600060ff82169050919050565b6000620009d2826200045c565b9150620009df83620009b8565b925062000a0e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620008cc565b905092915050565b600062000a23826200045c565b915062000a30836200045c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161562000a6c5762000a6b62000835565b5b828202905092915050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000ac0601f8362000a77565b915062000acd8262000a88565b602082019050919050565b6000602082019050818103600083015262000af38162000ab1565b9050919050565b600062000b07826200045c565b915062000b14836200045c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111562000b4c5762000b4b62000835565b5b828201905092915050565b62000b62816200045c565b82525050565b600060208201905062000b7f600083018462000b57565b92915050565b613c0f8062000b956000396000f3fe6080604052600436106101655760003560e01c80637533d788116100d157806395d89b411161008a578063d1deba1f11610064578063d1deba1f14610569578063d2fcb6d514610585578063dd62ed3e146105ae578063f2fde38b146105eb57610165565b806395d89b41146104c4578063a457c2d7146104ef578063a9059cbb1461052c57610165565b80637533d788146103ae57806379cc6790146103eb5780638cef430d146104145780638da5cb5b146104305780638ee749121461045b57806392aa3ff11461049957610165565b8063313ce56711610123578063313ce5671461028c57806339509351146102b757806342966c68146102f45780635b30d0811461031d57806370a082311461035a578063715018a61461039757610165565b80621d35671461016a57806306fdde0314610193578063095ea7b3146101be57806318160ddd146101fb5780631c37a8221461022657806323b872dd1461024f575b600080fd5b34801561017657600080fd5b50610191600480360381019061018c9190611fd0565b610614565b005b34801561019f57600080fd5b506101a8610856565b6040516101b591906120f7565b60405180910390f35b3480156101ca57600080fd5b506101e560048036038101906101e091906121ad565b6108e8565b6040516101f29190612208565b60405180910390f35b34801561020757600080fd5b5061021061090b565b60405161021d9190612232565b60405180910390f35b34801561023257600080fd5b5061024d60048036038101906102489190611fd0565b610915565b005b34801561025b57600080fd5b506102766004803603810190610271919061224d565b610995565b6040516102839190612208565b60405180910390f35b34801561029857600080fd5b506102a16109c4565b6040516102ae91906122bc565b60405180910390f35b3480156102c357600080fd5b506102de60048036038101906102d991906121ad565b6109cd565b6040516102eb9190612208565b60405180910390f35b34801561030057600080fd5b5061031b600480360381019061031691906122d7565b610a04565b005b34801561032957600080fd5b50610344600480360381019061033f9190612304565b610a18565b6040516103519190612232565b60405180910390f35b34801561036657600080fd5b50610381600480360381019061037c9190612344565b610b23565b60405161038e9190612232565b60405180910390f35b3480156103a357600080fd5b506103ac610b6b565b005b3480156103ba57600080fd5b506103d560048036038101906103d09190612371565b610b7f565b6040516103e291906123f3565b60405180910390f35b3480156103f757600080fd5b50610412600480360381019061040d91906121ad565b610c1f565b005b61042e60048036038101906104299190612304565b610c3f565b005b34801561043c57600080fd5b50610445610f45565b6040516104529190612424565b60405180910390f35b34801561046757600080fd5b50610482600480360381019061047d919061243f565b610f6f565b6040516104909291906124c7565b60405180910390f35b3480156104a557600080fd5b506104ae610fc3565b6040516104bb9190612232565b60405180910390f35b3480156104d057600080fd5b506104d9610fc9565b6040516104e691906120f7565b60405180910390f35b3480156104fb57600080fd5b50610516600480360381019061051191906121ad565b61105b565b6040516105239190612208565b60405180910390f35b34801561053857600080fd5b50610553600480360381019061054e91906121ad565b6110d2565b6040516105609190612208565b60405180910390f35b610583600480360381019061057e9190612550565b6110f5565b005b34801561059157600080fd5b506105ac60048036038101906105a791906126a0565b611294565b005b3480156105ba57600080fd5b506105d560048036038101906105d09190612721565b611381565b6040516105e29190612232565b60405180910390f35b3480156105f757600080fd5b50610612600480360381019061060d9190612344565b611408565b005b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461066e57600080fd5b600860008561ffff1661ffff168152602001908152602001600020805461069490612790565b905083511480156106da5750600860008561ffff1661ffff1681526020019081526020016000206040516106c89190612864565b60405180910390208380519060200120145b610719576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610710906128ed565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16631c37a822858585856040518563ffffffff1660e01b8152600401610758949392919061292b565b600060405180830381600087803b15801561077257600080fd5b505af1925050508015610783575060015b61084f576040518060400160405280825181526020018280519060200120815250600760008661ffff1661ffff168152602001908152602001600020846040516107cd91906129af565b908152602001604051809103902060008467ffffffffffffffff16815260200190815260200160002060008201518160000155602082015181600101559050507fe6f254030bcb01ffd20558175c13fcaed6d1520be7becee4c961b65f79243b0d84848484604051610842949392919061292b565b60405180910390a1610850565b5b50505050565b60606003805461086590612790565b80601f016020809104026020016040519081016040528092919081815260200182805461089190612790565b80156108de5780601f106108b3576101008083540402835291602001916108de565b820191906000526020600020905b8154815290600101906020018083116108c157829003601f168201915b5050505050905090565b6000806108f361148b565b9050610900818585611493565b600191505092915050565b6000600254905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610983576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097a90612a38565b60405180910390fd5b61098f8484848461165c565b50505050565b6000806109a061148b565b90506109ad858285611689565b6109b8858585611715565b60019150509392505050565b60006012905090565b6000806109d861148b565b90506109f98185856109ea8589611381565b6109f49190612a87565b611493565b600191505092915050565b610a15610a0f61148b565b8261198b565b50565b6000803383604051602001610a2e929190612add565b6040516020818303038152906040529050600060019050600081600954604051602001610a5c929190612b5d565b60405160208183030381529060405290506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340a7bb108830876000876040518663ffffffff1660e01b8152600401610ad3959493929190612b89565b6040805180830381865afa158015610aef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b139190612bff565b5090508094505050505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b73611b58565b610b7d6000611bd6565b565b60086020528060005260406000206000915090508054610b9e90612790565b80601f0160208091040260200160405190810160405280929190818152602001828054610bca90612790565b8015610c175780601f10610bec57610100808354040283529160200191610c17565b820191906000526020600020905b815481529060010190602001808311610bfa57829003601f168201915b505050505081565b610c3182610c2b61148b565b83611689565b610c3b828261198b565b5050565b610c498282610a18565b341015610c8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8290612cb1565b60405180910390fd5b80610c9533610b23565b1015610cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccd90612cb1565b60405180910390fd5b610ce0338261198b565b6000600860008461ffff1661ffff1681526020019081526020016000208054610d0890612790565b905011610d4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4190612d43565b60405180910390fd5b60003382604051602001610d5f929190612add565b6040516020818303038152906040529050600060019050600081600954604051602001610d8d929190612b5d565b60405160208183030381529060405290506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340a7bb108730876000876040518663ffffffff1660e01b8152600401610e04959493929190612b89565b6040805180830381865afa158015610e20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e449190612bff565b50905080341015610e8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8190612e21565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c58031003488600860008b61ffff1661ffff16815260200190815260200160002088336000896040518863ffffffff1660e01b8152600401610f0b96959493929190612ee6565b6000604051808303818588803b158015610f2457600080fd5b505af1158015610f38573d6000803e3d6000fd5b5050505050505050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60076020528260005260406000208280516020810182018051848252602083016020850120818352809550505050505060205280600052604060002060009250925050508060000154908060010154905082565b600a5481565b606060048054610fd890612790565b80601f016020809104026020016040519081016040528092919081815260200182805461100490612790565b80156110515780601f1061102657610100808354040283529160200191611051565b820191906000526020600020905b81548152906001019060200180831161103457829003601f168201915b5050505050905090565b60008061106661148b565b905060006110748286611381565b9050838110156110b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b090612fce565b60405180910390fd5b6110c68286868403611493565b60019250505092915050565b6000806110dd61148b565b90506110ea818585611715565b600191505092915050565b6000600760008761ffff1661ffff1681526020019081526020016000208560405161112091906129af565b908152602001604051809103902060008567ffffffffffffffff16815260200190815260200160002090506000801b816001015403611194576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118b90613060565b60405180910390fd5b8060000154838390501480156111c45750806001015483836040516111ba9291906130a5565b6040518091039020145b611203576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fa9061310a565b60405180910390fd5b600081600001819055506000801b81600101819055503073ffffffffffffffffffffffffffffffffffffffff16631c37a82287878787876040518663ffffffff1660e01b815260040161125a959493929190613157565b600060405180830381600087803b15801561127457600080fd5b505af1158015611288573d6000803e3d6000fd5b50505050505050505050565b61129c611b58565b8181905084849050146112e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112db9061321e565b60405180910390fd5b60005b8484905081101561137a578282828181106113055761130461323e565b5b9050602002810190611317919061327c565b6008600088888681811061132e5761132d61323e565b5b90506020020160208101906113439190612371565b61ffff1661ffff1681526020019081526020016000209182611366929190613481565b50808061137290613551565b9150506112e7565b5050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611410611b58565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361147f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114769061360b565b60405180910390fd5b61148881611bd6565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611502576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f99061369d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611571576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115689061372f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161164f9190612232565b60405180910390a3505050565b60008082806020019051810190611673919061377b565b915091506116818282611c9c565b505050505050565b60006116958484611381565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461170f5781811015611701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f890613807565b60405180910390fd5b61170e8484848403611493565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611784576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177b90613899565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ea9061392b565b60405180910390fd5b6117fe838383611df2565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611884576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187b906139bd565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119729190612232565b60405180910390a3611985848484611df7565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f190613a4f565b60405180910390fd5b611a0682600083611df2565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8390613ae1565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b3f9190612232565b60405180910390a3611b5383600084611df7565b505050565b611b6061148b565b73ffffffffffffffffffffffffffffffffffffffff16611b7e610f45565b73ffffffffffffffffffffffffffffffffffffffff1614611bd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcb90613b4d565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0290613bb9565b60405180910390fd5b611d1760008383611df2565b8060026000828254611d299190612a87565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611dda9190612232565b60405180910390a3611dee60008383611df7565b5050565b505050565b505050565b6000604051905090565b600080fd5b600080fd5b600061ffff82169050919050565b611e2781611e10565b8114611e3257600080fd5b50565b600081359050611e4481611e1e565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611e9d82611e54565b810181811067ffffffffffffffff82111715611ebc57611ebb611e65565b5b80604052505050565b6000611ecf611dfc565b9050611edb8282611e94565b919050565b600067ffffffffffffffff821115611efb57611efa611e65565b5b611f0482611e54565b9050602081019050919050565b82818337600083830152505050565b6000611f33611f2e84611ee0565b611ec5565b905082815260208101848484011115611f4f57611f4e611e4f565b5b611f5a848285611f11565b509392505050565b600082601f830112611f7757611f76611e4a565b5b8135611f87848260208601611f20565b91505092915050565b600067ffffffffffffffff82169050919050565b611fad81611f90565b8114611fb857600080fd5b50565b600081359050611fca81611fa4565b92915050565b60008060008060808587031215611fea57611fe9611e06565b5b6000611ff887828801611e35565b945050602085013567ffffffffffffffff81111561201957612018611e0b565b5b61202587828801611f62565b935050604061203687828801611fbb565b925050606085013567ffffffffffffffff81111561205757612056611e0b565b5b61206387828801611f62565b91505092959194509250565b600081519050919050565b600082825260208201905092915050565b60005b838110156120a957808201518184015260208101905061208e565b838111156120b8576000848401525b50505050565b60006120c98261206f565b6120d3818561207a565b93506120e381856020860161208b565b6120ec81611e54565b840191505092915050565b6000602082019050818103600083015261211181846120be565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061214482612119565b9050919050565b61215481612139565b811461215f57600080fd5b50565b6000813590506121718161214b565b92915050565b6000819050919050565b61218a81612177565b811461219557600080fd5b50565b6000813590506121a781612181565b92915050565b600080604083850312156121c4576121c3611e06565b5b60006121d285828601612162565b92505060206121e385828601612198565b9150509250929050565b60008115159050919050565b612202816121ed565b82525050565b600060208201905061221d60008301846121f9565b92915050565b61222c81612177565b82525050565b60006020820190506122476000830184612223565b92915050565b60008060006060848603121561226657612265611e06565b5b600061227486828701612162565b935050602061228586828701612162565b925050604061229686828701612198565b9150509250925092565b600060ff82169050919050565b6122b6816122a0565b82525050565b60006020820190506122d160008301846122ad565b92915050565b6000602082840312156122ed576122ec611e06565b5b60006122fb84828501612198565b91505092915050565b6000806040838503121561231b5761231a611e06565b5b600061232985828601611e35565b925050602061233a85828601612198565b9150509250929050565b60006020828403121561235a57612359611e06565b5b600061236884828501612162565b91505092915050565b60006020828403121561238757612386611e06565b5b600061239584828501611e35565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60006123c58261239e565b6123cf81856123a9565b93506123df81856020860161208b565b6123e881611e54565b840191505092915050565b6000602082019050818103600083015261240d81846123ba565b905092915050565b61241e81612139565b82525050565b60006020820190506124396000830184612415565b92915050565b60008060006060848603121561245857612457611e06565b5b600061246686828701611e35565b935050602084013567ffffffffffffffff81111561248757612486611e0b565b5b61249386828701611f62565b92505060406124a486828701612198565b9150509250925092565b6000819050919050565b6124c1816124ae565b82525050565b60006040820190506124dc6000830185612223565b6124e960208301846124b8565b9392505050565b600080fd5b600080fd5b60008083601f8401126125105761250f611e4a565b5b8235905067ffffffffffffffff81111561252d5761252c6124f0565b5b602083019150836001820283011115612549576125486124f5565b5b9250929050565b60008060008060006080868803121561256c5761256b611e06565b5b600061257a88828901611e35565b955050602086013567ffffffffffffffff81111561259b5761259a611e0b565b5b6125a788828901611f62565b94505060406125b888828901611fbb565b935050606086013567ffffffffffffffff8111156125d9576125d8611e0b565b5b6125e5888289016124fa565b92509250509295509295909350565b60008083601f84011261260a57612609611e4a565b5b8235905067ffffffffffffffff811115612627576126266124f0565b5b602083019150836020820283011115612643576126426124f5565b5b9250929050565b60008083601f8401126126605761265f611e4a565b5b8235905067ffffffffffffffff81111561267d5761267c6124f0565b5b602083019150836020820283011115612699576126986124f5565b5b9250929050565b600080600080604085870312156126ba576126b9611e06565b5b600085013567ffffffffffffffff8111156126d8576126d7611e0b565b5b6126e4878288016125f4565b9450945050602085013567ffffffffffffffff81111561270757612706611e0b565b5b6127138782880161264a565b925092505092959194509250565b6000806040838503121561273857612737611e06565b5b600061274685828601612162565b925050602061275785828601612162565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806127a857607f821691505b6020821081036127bb576127ba612761565b5b50919050565b600081905092915050565b60008190508160005260206000209050919050565b600081546127ee81612790565b6127f881866127c1565b9450600182166000811461281357600181146128285761285b565b60ff198316865281151582028601935061285b565b612831856127cc565b60005b8381101561285357815481890152600182019150602081019050612834565b838801955050505b50505092915050565b600061287082846127e1565b915081905092915050565b7f4e6f6e626c6f636b696e6752656365697665723a20696e76616c696420736f7560008201527f7263652073656e64696e6720636f6e7472616374000000000000000000000000602082015250565b60006128d760348361207a565b91506128e28261287b565b604082019050919050565b60006020820190508181036000830152612906816128ca565b9050919050565b61291681611e10565b82525050565b61292581611f90565b82525050565b6000608082019050612940600083018761290d565b818103602083015261295281866123ba565b9050612961604083018561291c565b818103606083015261297381846123ba565b905095945050505050565b60006129898261239e565b61299381856127c1565b93506129a381856020860161208b565b80840191505092915050565b60006129bb828461297e565b915081905092915050565b7f4e6f6e626c6f636b696e6752656365697665723a2063616c6c6572206d75737460008201527f206265204272696467652e000000000000000000000000000000000000000000602082015250565b6000612a22602b8361207a565b9150612a2d826129c6565b604082019050919050565b60006020820190508181036000830152612a5181612a15565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612a9282612177565b9150612a9d83612177565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612ad257612ad1612a58565b5b828201905092915050565b6000604082019050612af26000830185612415565b612aff6020830184612223565b9392505050565b60008160f01b9050919050565b6000612b1e82612b06565b9050919050565b612b36612b3182611e10565b612b13565b82525050565b6000819050919050565b612b57612b5282612177565b612b3c565b82525050565b6000612b698285612b25565b600282019150612b798284612b46565b6020820191508190509392505050565b600060a082019050612b9e600083018861290d565b612bab6020830187612415565b8181036040830152612bbd81866123ba565b9050612bcc60608301856121f9565b8181036080830152612bde81846123ba565b90509695505050505050565b600081519050612bf981612181565b92915050565b60008060408385031215612c1657612c15611e06565b5b6000612c2485828601612bea565b9250506020612c3585828601612bea565b9150509250929050565b7f536f6c616e61457468657265756d4176616c616e63686546616e746f6d42736360008201527f42617365204572726f7220233100000000000000000000000000000000000000602082015250565b6000612c9b602d8361207a565b9150612ca682612c3f565b604082019050919050565b60006020820190508181036000830152612cca81612c8e565b9050919050565b7f5468697320636861696e2069732063757272656e746c7920756e617661696c6160008201527f626c6520666f722074726176656c000000000000000000000000000000000000602082015250565b6000612d2d602e8361207a565b9150612d3882612cd1565b604082019050919050565b60006020820190508181036000830152612d5c81612d20565b9050919050565b7f536f6c616e61457468657265756d4176616c616e63686546616e746f6d42736360008201527f426173653a206d73672e76616c7565206e6f7420656e6f75676820746f20636f60208201527f766572206d6573736167654665652e2053656e642067617320666f72206d657360408201527f7361676520666565730000000000000000000000000000000000000000000000606082015250565b6000612e0b60698361207a565b9150612e1682612d63565b608082019050919050565b60006020820190508181036000830152612e3a81612dfe565b9050919050565b60008154612e4e81612790565b612e5881866123a9565b94506001821660008114612e735760018114612e8957612ebc565b60ff198316865281151560200286019350612ebc565b612e92856127cc565b60005b83811015612eb457815481890152600182019150602081019050612e95565b808801955050505b50505092915050565b6000612ed082612119565b9050919050565b612ee081612ec5565b82525050565b600060c082019050612efb600083018961290d565b8181036020830152612f0d8188612e41565b90508181036040830152612f2181876123ba565b9050612f306060830186612ed7565b612f3d6080830185612415565b81810360a0830152612f4f81846123ba565b9050979650505050505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612fb860258361207a565b9150612fc382612f5c565b604082019050919050565b60006020820190508181036000830152612fe781612fab565b9050919050565b7f4e6f6e626c6f636b696e6752656365697665723a206e6f2073746f726564206d60008201527f6573736167650000000000000000000000000000000000000000000000000000602082015250565b600061304a60268361207a565b915061305582612fee565b604082019050919050565b600060208201905081810360008301526130798161303d565b9050919050565b600061308c83856127c1565b9350613099838584611f11565b82840190509392505050565b60006130b2828486613080565b91508190509392505050565b7f4c617965725a65726f3a20696e76616c6964207061796c6f6164000000000000600082015250565b60006130f4601a8361207a565b91506130ff826130be565b602082019050919050565b60006020820190508181036000830152613123816130e7565b9050919050565b600061313683856123a9565b9350613143838584611f11565b61314c83611e54565b840190509392505050565b600060808201905061316c600083018861290d565b818103602083015261317e81876123ba565b905061318d604083018661291c565b81810360608301526131a081848661312a565b90509695505050505050565b7f436861696e2049447320616e642072656d6f746573206c656e677468206d697360008201527f6d61746368000000000000000000000000000000000000000000000000000000602082015250565b600061320860258361207a565b9150613213826131ac565b604082019050919050565b60006020820190508181036000830152613237816131fb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b600080fd5b600080fd5b600080833560016020038436030381126132995761329861326d565b5b80840192508235915067ffffffffffffffff8211156132bb576132ba613272565b5b6020830192506001820236038313156132d7576132d6613277565b5b509250929050565b600082905092915050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026133377fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826132fa565b61334186836132fa565b95508019841693508086168417925050509392505050565b6000819050919050565b600061337e61337961337484612177565b613359565b612177565b9050919050565b6000819050919050565b61339883613363565b6133ac6133a482613385565b848454613307565b825550505050565b600090565b6133c16133b4565b6133cc81848461338f565b505050565b5b818110156133f0576133e56000826133b9565b6001810190506133d2565b5050565b601f82111561343557613406816127cc565b61340f846132ea565b8101602085101561341e578190505b61343261342a856132ea565b8301826133d1565b50505b505050565b600082821c905092915050565b60006134586000198460080261343a565b1980831691505092915050565b60006134718383613447565b9150826002028217905092915050565b61348b83836132df565b67ffffffffffffffff8111156134a4576134a3611e65565b5b6134ae8254612790565b6134b98282856133f4565b6000601f8311600181146134e857600084156134d6578287013590505b6134e08582613465565b865550613548565b601f1984166134f6866127cc565b60005b8281101561351e578489013582556001820191506020850194506020810190506134f9565b8683101561353b5784890135613537601f891682613447565b8355505b6001600288020188555050505b50505050505050565b600061355c82612177565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361358e5761358d612a58565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006135f560268361207a565b915061360082613599565b604082019050919050565b60006020820190508181036000830152613624816135e8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061368760248361207a565b91506136928261362b565b604082019050919050565b600060208201905081810360008301526136b68161367a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061371960228361207a565b9150613724826136bd565b604082019050919050565b600060208201905081810360008301526137488161370c565b9050919050565b61375881612ec5565b811461376357600080fd5b50565b6000815190506137758161374f565b92915050565b6000806040838503121561379257613791611e06565b5b60006137a085828601613766565b92505060206137b185828601612bea565b9150509250929050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006137f1601d8361207a565b91506137fc826137bb565b602082019050919050565b60006020820190508181036000830152613820816137e4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061388360258361207a565b915061388e82613827565b604082019050919050565b600060208201905081810360008301526138b281613876565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061391560238361207a565b9150613920826138b9565b604082019050919050565b6000602082019050818103600083015261394481613908565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006139a760268361207a565b91506139b28261394b565b604082019050919050565b600060208201905081810360008301526139d68161399a565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a3960218361207a565b9150613a44826139dd565b604082019050919050565b60006020820190508181036000830152613a6881613a2c565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000613acb60228361207a565b9150613ad682613a6f565b604082019050919050565b60006020820190508181036000830152613afa81613abe565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613b3760208361207a565b9150613b4282613b01565b602082019050919050565b60006020820190508181036000830152613b6681613b2a565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000613ba3601f8361207a565b9150613bae82613b6d565b602082019050919050565b60006020820190508181036000830152613bd281613b96565b905091905056fea2646970667358221220a039238564355fd7c986c96ca6a0600ec56daa8bf8080085b75de7eb0bf411b864736f6c634300080f0033536f6c616e61457468657265756d4176616c616e63686546616e746f6d4273634261736500000000000000000000000066a71dcef29a0ffbdbe3c6a460a3b5bc225cd6750000000000000000000000000000000000000000000000000000000000000065
Deployed Bytecode
0x6080604052600436106101655760003560e01c80637533d788116100d157806395d89b411161008a578063d1deba1f11610064578063d1deba1f14610569578063d2fcb6d514610585578063dd62ed3e146105ae578063f2fde38b146105eb57610165565b806395d89b41146104c4578063a457c2d7146104ef578063a9059cbb1461052c57610165565b80637533d788146103ae57806379cc6790146103eb5780638cef430d146104145780638da5cb5b146104305780638ee749121461045b57806392aa3ff11461049957610165565b8063313ce56711610123578063313ce5671461028c57806339509351146102b757806342966c68146102f45780635b30d0811461031d57806370a082311461035a578063715018a61461039757610165565b80621d35671461016a57806306fdde0314610193578063095ea7b3146101be57806318160ddd146101fb5780631c37a8221461022657806323b872dd1461024f575b600080fd5b34801561017657600080fd5b50610191600480360381019061018c9190611fd0565b610614565b005b34801561019f57600080fd5b506101a8610856565b6040516101b591906120f7565b60405180910390f35b3480156101ca57600080fd5b506101e560048036038101906101e091906121ad565b6108e8565b6040516101f29190612208565b60405180910390f35b34801561020757600080fd5b5061021061090b565b60405161021d9190612232565b60405180910390f35b34801561023257600080fd5b5061024d60048036038101906102489190611fd0565b610915565b005b34801561025b57600080fd5b506102766004803603810190610271919061224d565b610995565b6040516102839190612208565b60405180910390f35b34801561029857600080fd5b506102a16109c4565b6040516102ae91906122bc565b60405180910390f35b3480156102c357600080fd5b506102de60048036038101906102d991906121ad565b6109cd565b6040516102eb9190612208565b60405180910390f35b34801561030057600080fd5b5061031b600480360381019061031691906122d7565b610a04565b005b34801561032957600080fd5b50610344600480360381019061033f9190612304565b610a18565b6040516103519190612232565b60405180910390f35b34801561036657600080fd5b50610381600480360381019061037c9190612344565b610b23565b60405161038e9190612232565b60405180910390f35b3480156103a357600080fd5b506103ac610b6b565b005b3480156103ba57600080fd5b506103d560048036038101906103d09190612371565b610b7f565b6040516103e291906123f3565b60405180910390f35b3480156103f757600080fd5b50610412600480360381019061040d91906121ad565b610c1f565b005b61042e60048036038101906104299190612304565b610c3f565b005b34801561043c57600080fd5b50610445610f45565b6040516104529190612424565b60405180910390f35b34801561046757600080fd5b50610482600480360381019061047d919061243f565b610f6f565b6040516104909291906124c7565b60405180910390f35b3480156104a557600080fd5b506104ae610fc3565b6040516104bb9190612232565b60405180910390f35b3480156104d057600080fd5b506104d9610fc9565b6040516104e691906120f7565b60405180910390f35b3480156104fb57600080fd5b50610516600480360381019061051191906121ad565b61105b565b6040516105239190612208565b60405180910390f35b34801561053857600080fd5b50610553600480360381019061054e91906121ad565b6110d2565b6040516105609190612208565b60405180910390f35b610583600480360381019061057e9190612550565b6110f5565b005b34801561059157600080fd5b506105ac60048036038101906105a791906126a0565b611294565b005b3480156105ba57600080fd5b506105d560048036038101906105d09190612721565b611381565b6040516105e29190612232565b60405180910390f35b3480156105f757600080fd5b50610612600480360381019061060d9190612344565b611408565b005b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461066e57600080fd5b600860008561ffff1661ffff168152602001908152602001600020805461069490612790565b905083511480156106da5750600860008561ffff1661ffff1681526020019081526020016000206040516106c89190612864565b60405180910390208380519060200120145b610719576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610710906128ed565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff16631c37a822858585856040518563ffffffff1660e01b8152600401610758949392919061292b565b600060405180830381600087803b15801561077257600080fd5b505af1925050508015610783575060015b61084f576040518060400160405280825181526020018280519060200120815250600760008661ffff1661ffff168152602001908152602001600020846040516107cd91906129af565b908152602001604051809103902060008467ffffffffffffffff16815260200190815260200160002060008201518160000155602082015181600101559050507fe6f254030bcb01ffd20558175c13fcaed6d1520be7becee4c961b65f79243b0d84848484604051610842949392919061292b565b60405180910390a1610850565b5b50505050565b60606003805461086590612790565b80601f016020809104026020016040519081016040528092919081815260200182805461089190612790565b80156108de5780601f106108b3576101008083540402835291602001916108de565b820191906000526020600020905b8154815290600101906020018083116108c157829003601f168201915b5050505050905090565b6000806108f361148b565b9050610900818585611493565b600191505092915050565b6000600254905090565b3073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610983576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097a90612a38565b60405180910390fd5b61098f8484848461165c565b50505050565b6000806109a061148b565b90506109ad858285611689565b6109b8858585611715565b60019150509392505050565b60006012905090565b6000806109d861148b565b90506109f98185856109ea8589611381565b6109f49190612a87565b611493565b600191505092915050565b610a15610a0f61148b565b8261198b565b50565b6000803383604051602001610a2e929190612add565b6040516020818303038152906040529050600060019050600081600954604051602001610a5c929190612b5d565b60405160208183030381529060405290506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340a7bb108830876000876040518663ffffffff1660e01b8152600401610ad3959493929190612b89565b6040805180830381865afa158015610aef573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b139190612bff565b5090508094505050505092915050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b73611b58565b610b7d6000611bd6565b565b60086020528060005260406000206000915090508054610b9e90612790565b80601f0160208091040260200160405190810160405280929190818152602001828054610bca90612790565b8015610c175780601f10610bec57610100808354040283529160200191610c17565b820191906000526020600020905b815481529060010190602001808311610bfa57829003601f168201915b505050505081565b610c3182610c2b61148b565b83611689565b610c3b828261198b565b5050565b610c498282610a18565b341015610c8b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c8290612cb1565b60405180910390fd5b80610c9533610b23565b1015610cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ccd90612cb1565b60405180910390fd5b610ce0338261198b565b6000600860008461ffff1661ffff1681526020019081526020016000208054610d0890612790565b905011610d4a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d4190612d43565b60405180910390fd5b60003382604051602001610d5f929190612add565b6040516020818303038152906040529050600060019050600081600954604051602001610d8d929190612b5d565b60405160208183030381529060405290506000600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340a7bb108730876000876040518663ffffffff1660e01b8152600401610e04959493929190612b89565b6040805180830381865afa158015610e20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e449190612bff565b50905080341015610e8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8190612e21565b60405180910390fd5b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c58031003488600860008b61ffff1661ffff16815260200190815260200160002088336000896040518863ffffffff1660e01b8152600401610f0b96959493929190612ee6565b6000604051808303818588803b158015610f2457600080fd5b505af1158015610f38573d6000803e3d6000fd5b5050505050505050505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60076020528260005260406000208280516020810182018051848252602083016020850120818352809550505050505060205280600052604060002060009250925050508060000154908060010154905082565b600a5481565b606060048054610fd890612790565b80601f016020809104026020016040519081016040528092919081815260200182805461100490612790565b80156110515780601f1061102657610100808354040283529160200191611051565b820191906000526020600020905b81548152906001019060200180831161103457829003601f168201915b5050505050905090565b60008061106661148b565b905060006110748286611381565b9050838110156110b9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110b090612fce565b60405180910390fd5b6110c68286868403611493565b60019250505092915050565b6000806110dd61148b565b90506110ea818585611715565b600191505092915050565b6000600760008761ffff1661ffff1681526020019081526020016000208560405161112091906129af565b908152602001604051809103902060008567ffffffffffffffff16815260200190815260200160002090506000801b816001015403611194576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161118b90613060565b60405180910390fd5b8060000154838390501480156111c45750806001015483836040516111ba9291906130a5565b6040518091039020145b611203576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111fa9061310a565b60405180910390fd5b600081600001819055506000801b81600101819055503073ffffffffffffffffffffffffffffffffffffffff16631c37a82287878787876040518663ffffffff1660e01b815260040161125a959493929190613157565b600060405180830381600087803b15801561127457600080fd5b505af1158015611288573d6000803e3d6000fd5b50505050505050505050565b61129c611b58565b8181905084849050146112e4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112db9061321e565b60405180910390fd5b60005b8484905081101561137a578282828181106113055761130461323e565b5b9050602002810190611317919061327c565b6008600088888681811061132e5761132d61323e565b5b90506020020160208101906113439190612371565b61ffff1661ffff1681526020019081526020016000209182611366929190613481565b50808061137290613551565b9150506112e7565b5050505050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611410611b58565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361147f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114769061360b565b60405180910390fd5b61148881611bd6565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611502576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114f99061369d565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611571576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115689061372f565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161164f9190612232565b60405180910390a3505050565b60008082806020019051810190611673919061377b565b915091506116818282611c9c565b505050505050565b60006116958484611381565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461170f5781811015611701576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116f890613807565b60405180910390fd5b61170e8484848403611493565b5b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611784576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177b90613899565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036117f3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117ea9061392b565b60405180910390fd5b6117fe838383611df2565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611884576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161187b906139bd565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516119729190612232565b60405180910390a3611985848484611df7565b50505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f190613a4f565b60405180910390fd5b611a0682600083611df2565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611a8c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8390613ae1565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b3f9190612232565b60405180910390a3611b5383600084611df7565b505050565b611b6061148b565b73ffffffffffffffffffffffffffffffffffffffff16611b7e610f45565b73ffffffffffffffffffffffffffffffffffffffff1614611bd4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bcb90613b4d565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611d0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d0290613bb9565b60405180910390fd5b611d1760008383611df2565b8060026000828254611d299190612a87565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611dda9190612232565b60405180910390a3611dee60008383611df7565b5050565b505050565b505050565b6000604051905090565b600080fd5b600080fd5b600061ffff82169050919050565b611e2781611e10565b8114611e3257600080fd5b50565b600081359050611e4481611e1e565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b611e9d82611e54565b810181811067ffffffffffffffff82111715611ebc57611ebb611e65565b5b80604052505050565b6000611ecf611dfc565b9050611edb8282611e94565b919050565b600067ffffffffffffffff821115611efb57611efa611e65565b5b611f0482611e54565b9050602081019050919050565b82818337600083830152505050565b6000611f33611f2e84611ee0565b611ec5565b905082815260208101848484011115611f4f57611f4e611e4f565b5b611f5a848285611f11565b509392505050565b600082601f830112611f7757611f76611e4a565b5b8135611f87848260208601611f20565b91505092915050565b600067ffffffffffffffff82169050919050565b611fad81611f90565b8114611fb857600080fd5b50565b600081359050611fca81611fa4565b92915050565b60008060008060808587031215611fea57611fe9611e06565b5b6000611ff887828801611e35565b945050602085013567ffffffffffffffff81111561201957612018611e0b565b5b61202587828801611f62565b935050604061203687828801611fbb565b925050606085013567ffffffffffffffff81111561205757612056611e0b565b5b61206387828801611f62565b91505092959194509250565b600081519050919050565b600082825260208201905092915050565b60005b838110156120a957808201518184015260208101905061208e565b838111156120b8576000848401525b50505050565b60006120c98261206f565b6120d3818561207a565b93506120e381856020860161208b565b6120ec81611e54565b840191505092915050565b6000602082019050818103600083015261211181846120be565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061214482612119565b9050919050565b61215481612139565b811461215f57600080fd5b50565b6000813590506121718161214b565b92915050565b6000819050919050565b61218a81612177565b811461219557600080fd5b50565b6000813590506121a781612181565b92915050565b600080604083850312156121c4576121c3611e06565b5b60006121d285828601612162565b92505060206121e385828601612198565b9150509250929050565b60008115159050919050565b612202816121ed565b82525050565b600060208201905061221d60008301846121f9565b92915050565b61222c81612177565b82525050565b60006020820190506122476000830184612223565b92915050565b60008060006060848603121561226657612265611e06565b5b600061227486828701612162565b935050602061228586828701612162565b925050604061229686828701612198565b9150509250925092565b600060ff82169050919050565b6122b6816122a0565b82525050565b60006020820190506122d160008301846122ad565b92915050565b6000602082840312156122ed576122ec611e06565b5b60006122fb84828501612198565b91505092915050565b6000806040838503121561231b5761231a611e06565b5b600061232985828601611e35565b925050602061233a85828601612198565b9150509250929050565b60006020828403121561235a57612359611e06565b5b600061236884828501612162565b91505092915050565b60006020828403121561238757612386611e06565b5b600061239584828501611e35565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60006123c58261239e565b6123cf81856123a9565b93506123df81856020860161208b565b6123e881611e54565b840191505092915050565b6000602082019050818103600083015261240d81846123ba565b905092915050565b61241e81612139565b82525050565b60006020820190506124396000830184612415565b92915050565b60008060006060848603121561245857612457611e06565b5b600061246686828701611e35565b935050602084013567ffffffffffffffff81111561248757612486611e0b565b5b61249386828701611f62565b92505060406124a486828701612198565b9150509250925092565b6000819050919050565b6124c1816124ae565b82525050565b60006040820190506124dc6000830185612223565b6124e960208301846124b8565b9392505050565b600080fd5b600080fd5b60008083601f8401126125105761250f611e4a565b5b8235905067ffffffffffffffff81111561252d5761252c6124f0565b5b602083019150836001820283011115612549576125486124f5565b5b9250929050565b60008060008060006080868803121561256c5761256b611e06565b5b600061257a88828901611e35565b955050602086013567ffffffffffffffff81111561259b5761259a611e0b565b5b6125a788828901611f62565b94505060406125b888828901611fbb565b935050606086013567ffffffffffffffff8111156125d9576125d8611e0b565b5b6125e5888289016124fa565b92509250509295509295909350565b60008083601f84011261260a57612609611e4a565b5b8235905067ffffffffffffffff811115612627576126266124f0565b5b602083019150836020820283011115612643576126426124f5565b5b9250929050565b60008083601f8401126126605761265f611e4a565b5b8235905067ffffffffffffffff81111561267d5761267c6124f0565b5b602083019150836020820283011115612699576126986124f5565b5b9250929050565b600080600080604085870312156126ba576126b9611e06565b5b600085013567ffffffffffffffff8111156126d8576126d7611e0b565b5b6126e4878288016125f4565b9450945050602085013567ffffffffffffffff81111561270757612706611e0b565b5b6127138782880161264a565b925092505092959194509250565b6000806040838503121561273857612737611e06565b5b600061274685828601612162565b925050602061275785828601612162565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806127a857607f821691505b6020821081036127bb576127ba612761565b5b50919050565b600081905092915050565b60008190508160005260206000209050919050565b600081546127ee81612790565b6127f881866127c1565b9450600182166000811461281357600181146128285761285b565b60ff198316865281151582028601935061285b565b612831856127cc565b60005b8381101561285357815481890152600182019150602081019050612834565b838801955050505b50505092915050565b600061287082846127e1565b915081905092915050565b7f4e6f6e626c6f636b696e6752656365697665723a20696e76616c696420736f7560008201527f7263652073656e64696e6720636f6e7472616374000000000000000000000000602082015250565b60006128d760348361207a565b91506128e28261287b565b604082019050919050565b60006020820190508181036000830152612906816128ca565b9050919050565b61291681611e10565b82525050565b61292581611f90565b82525050565b6000608082019050612940600083018761290d565b818103602083015261295281866123ba565b9050612961604083018561291c565b818103606083015261297381846123ba565b905095945050505050565b60006129898261239e565b61299381856127c1565b93506129a381856020860161208b565b80840191505092915050565b60006129bb828461297e565b915081905092915050565b7f4e6f6e626c6f636b696e6752656365697665723a2063616c6c6572206d75737460008201527f206265204272696467652e000000000000000000000000000000000000000000602082015250565b6000612a22602b8361207a565b9150612a2d826129c6565b604082019050919050565b60006020820190508181036000830152612a5181612a15565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612a9282612177565b9150612a9d83612177565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115612ad257612ad1612a58565b5b828201905092915050565b6000604082019050612af26000830185612415565b612aff6020830184612223565b9392505050565b60008160f01b9050919050565b6000612b1e82612b06565b9050919050565b612b36612b3182611e10565b612b13565b82525050565b6000819050919050565b612b57612b5282612177565b612b3c565b82525050565b6000612b698285612b25565b600282019150612b798284612b46565b6020820191508190509392505050565b600060a082019050612b9e600083018861290d565b612bab6020830187612415565b8181036040830152612bbd81866123ba565b9050612bcc60608301856121f9565b8181036080830152612bde81846123ba565b90509695505050505050565b600081519050612bf981612181565b92915050565b60008060408385031215612c1657612c15611e06565b5b6000612c2485828601612bea565b9250506020612c3585828601612bea565b9150509250929050565b7f536f6c616e61457468657265756d4176616c616e63686546616e746f6d42736360008201527f42617365204572726f7220233100000000000000000000000000000000000000602082015250565b6000612c9b602d8361207a565b9150612ca682612c3f565b604082019050919050565b60006020820190508181036000830152612cca81612c8e565b9050919050565b7f5468697320636861696e2069732063757272656e746c7920756e617661696c6160008201527f626c6520666f722074726176656c000000000000000000000000000000000000602082015250565b6000612d2d602e8361207a565b9150612d3882612cd1565b604082019050919050565b60006020820190508181036000830152612d5c81612d20565b9050919050565b7f536f6c616e61457468657265756d4176616c616e63686546616e746f6d42736360008201527f426173653a206d73672e76616c7565206e6f7420656e6f75676820746f20636f60208201527f766572206d6573736167654665652e2053656e642067617320666f72206d657360408201527f7361676520666565730000000000000000000000000000000000000000000000606082015250565b6000612e0b60698361207a565b9150612e1682612d63565b608082019050919050565b60006020820190508181036000830152612e3a81612dfe565b9050919050565b60008154612e4e81612790565b612e5881866123a9565b94506001821660008114612e735760018114612e8957612ebc565b60ff198316865281151560200286019350612ebc565b612e92856127cc565b60005b83811015612eb457815481890152600182019150602081019050612e95565b808801955050505b50505092915050565b6000612ed082612119565b9050919050565b612ee081612ec5565b82525050565b600060c082019050612efb600083018961290d565b8181036020830152612f0d8188612e41565b90508181036040830152612f2181876123ba565b9050612f306060830186612ed7565b612f3d6080830185612415565b81810360a0830152612f4f81846123ba565b9050979650505050505050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612fb860258361207a565b9150612fc382612f5c565b604082019050919050565b60006020820190508181036000830152612fe781612fab565b9050919050565b7f4e6f6e626c6f636b696e6752656365697665723a206e6f2073746f726564206d60008201527f6573736167650000000000000000000000000000000000000000000000000000602082015250565b600061304a60268361207a565b915061305582612fee565b604082019050919050565b600060208201905081810360008301526130798161303d565b9050919050565b600061308c83856127c1565b9350613099838584611f11565b82840190509392505050565b60006130b2828486613080565b91508190509392505050565b7f4c617965725a65726f3a20696e76616c6964207061796c6f6164000000000000600082015250565b60006130f4601a8361207a565b91506130ff826130be565b602082019050919050565b60006020820190508181036000830152613123816130e7565b9050919050565b600061313683856123a9565b9350613143838584611f11565b61314c83611e54565b840190509392505050565b600060808201905061316c600083018861290d565b818103602083015261317e81876123ba565b905061318d604083018661291c565b81810360608301526131a081848661312a565b90509695505050505050565b7f436861696e2049447320616e642072656d6f746573206c656e677468206d697360008201527f6d61746368000000000000000000000000000000000000000000000000000000602082015250565b600061320860258361207a565b9150613213826131ac565b604082019050919050565b60006020820190508181036000830152613237816131fb565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b600080fd5b600080fd5b600080833560016020038436030381126132995761329861326d565b5b80840192508235915067ffffffffffffffff8211156132bb576132ba613272565b5b6020830192506001820236038313156132d7576132d6613277565b5b509250929050565b600082905092915050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026133377fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826132fa565b61334186836132fa565b95508019841693508086168417925050509392505050565b6000819050919050565b600061337e61337961337484612177565b613359565b612177565b9050919050565b6000819050919050565b61339883613363565b6133ac6133a482613385565b848454613307565b825550505050565b600090565b6133c16133b4565b6133cc81848461338f565b505050565b5b818110156133f0576133e56000826133b9565b6001810190506133d2565b5050565b601f82111561343557613406816127cc565b61340f846132ea565b8101602085101561341e578190505b61343261342a856132ea565b8301826133d1565b50505b505050565b600082821c905092915050565b60006134586000198460080261343a565b1980831691505092915050565b60006134718383613447565b9150826002028217905092915050565b61348b83836132df565b67ffffffffffffffff8111156134a4576134a3611e65565b5b6134ae8254612790565b6134b98282856133f4565b6000601f8311600181146134e857600084156134d6578287013590505b6134e08582613465565b865550613548565b601f1984166134f6866127cc565b60005b8281101561351e578489013582556001820191506020850194506020810190506134f9565b8683101561353b5784890135613537601f891682613447565b8355505b6001600288020188555050505b50505050505050565b600061355c82612177565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361358e5761358d612a58565b5b600182019050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006135f560268361207a565b915061360082613599565b604082019050919050565b60006020820190508181036000830152613624816135e8565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061368760248361207a565b91506136928261362b565b604082019050919050565b600060208201905081810360008301526136b68161367a565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b600061371960228361207a565b9150613724826136bd565b604082019050919050565b600060208201905081810360008301526137488161370c565b9050919050565b61375881612ec5565b811461376357600080fd5b50565b6000815190506137758161374f565b92915050565b6000806040838503121561379257613791611e06565b5b60006137a085828601613766565b92505060206137b185828601612bea565b9150509250929050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b60006137f1601d8361207a565b91506137fc826137bb565b602082019050919050565b60006020820190508181036000830152613820816137e4565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061388360258361207a565b915061388e82613827565b604082019050919050565b600060208201905081810360008301526138b281613876565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061391560238361207a565b9150613920826138b9565b604082019050919050565b6000602082019050818103600083015261394481613908565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b60006139a760268361207a565b91506139b28261394b565b604082019050919050565b600060208201905081810360008301526139d68161399a565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000613a3960218361207a565b9150613a44826139dd565b604082019050919050565b60006020820190508181036000830152613a6881613a2c565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000613acb60228361207a565b9150613ad682613a6f565b604082019050919050565b60006020820190508181036000830152613afa81613abe565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613b3760208361207a565b9150613b4282613b01565b602082019050919050565b60006020820190508181036000830152613b6681613b2a565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000613ba3601f8361207a565b9150613bae82613b6d565b602082019050919050565b60006020820190508181036000830152613bd281613b96565b905091905056fea2646970667358221220a039238564355fd7c986c96ca6a0600ec56daa8bf8080085b75de7eb0bf411b864736f6c634300080f0033
Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)
00000000000000000000000066a71dcef29a0ffbdbe3c6a460a3b5bc225cd6750000000000000000000000000000000000000000000000000000000000000065
-----Decoded View---------------
Arg [0] : _layerZeroEndpoint (address): 0x66A71Dcef29A0fFBDBE3c6a460a3B5BC225Cd675
Arg [1] : _chainID (uint256): 101
-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000066a71dcef29a0ffbdbe3c6a460a3b5bc225cd675
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000065
Deployed Bytecode Sourcemap
26964:3035:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24459:775;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9410:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11770:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10539:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25242:280;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12551:261;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10381:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13221:238;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20986:91;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27511:422;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10710:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2865:103;;;;;;;;;;;;;:::i;:::-;;24305:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21396:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27939:1709;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2224:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24208:90;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;27117:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9629:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13962:436;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11043:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25968:618;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;26594:365;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11299:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3123:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;24459:775;24621:8;;;;;;;;;;;24599:31;;:10;:31;;;24591:40;;;;;;24742:19;:32;24762:11;24742:32;;;;;;;;;;;;;;;:39;;;;;:::i;:::-;;;24720:11;:18;:61;:134;;;;;24821:19;:32;24841:11;24821:32;;;;;;;;;;;;;;;24811:43;;;;;;:::i;:::-;;;;;;;;24795:11;24785:22;;;;;;:69;24720:134;24712:213;;;;;;;;;;;;:::i;:::-;;;;;;;;;24940:4;:16;;;24957:11;24970;24983:6;24991:8;24940:60;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24936:291;;25086:52;;;;;;;;25101:8;:15;25086:52;;;;25128:8;25118:19;;;;;;25086:52;;;25035:14;:27;25050:11;25035:27;;;;;;;;;;;;;;;25063:11;25035:40;;;;;;:::i;:::-;;;;;;;;;;;;;:48;25076:6;25035:48;;;;;;;;;;;;;:103;;;;;;;;;;;;;;;;;;;25158:57;25172:11;25185;25198:6;25206:8;25158:57;;;;;;;;;:::i;:::-;;;;;;;;24936:291;;;;24459:775;;;;:::o;9410:100::-;9464:13;9497:5;9490:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9410:100;:::o;11770:201::-;11853:4;11870:13;11886:12;:10;:12::i;:::-;11870:28;;11909:32;11918:5;11925:7;11934:6;11909:8;:32::i;:::-;11959:4;11952:11;;;11770:201;;;;:::o;10539:108::-;10600:7;10627:12;;10620:19;;10539:108;:::o;25242:280::-;25395:4;25373:27;;:10;:27;;;25365:83;;;;;;;;;;;;:::i;:::-;;;;;;;;;25459:55;25471:11;25484;25497:6;25505:8;25459:10;:55::i;:::-;25242:280;;;;:::o;12551:261::-;12648:4;12665:15;12683:12;:10;:12::i;:::-;12665:30;;12706:38;12722:4;12728:7;12737:6;12706:15;:38::i;:::-;12755:27;12765:4;12771:2;12775:6;12755:9;:27::i;:::-;12800:4;12793:11;;;12551:261;;;;;:::o;10381:93::-;10439:5;10464:2;10457:9;;10381:93;:::o;13221:238::-;13309:4;13326:13;13342:12;:10;:12::i;:::-;13326:28;;13365:64;13374:5;13381:7;13418:10;13390:25;13400:5;13407:7;13390:9;:25::i;:::-;:38;;;;:::i;:::-;13365:8;:64::i;:::-;13447:4;13440:11;;;13221:238;;;;:::o;20986:91::-;21042:27;21048:12;:10;:12::i;:::-;21062:6;21042:5;:27::i;:::-;20986:91;:::o;27511:422::-;27591:4;27608:20;27642:10;27655:5;27631:30;;;;;;;;;:::i;:::-;;;;;;;;;;;;;27608:53;;27674:14;27691:1;27674:18;;27703:26;27749:7;27758:26;;27732:53;;;;;;;;;:::i;:::-;;;;;;;;;;;;;27703:82;;27799:15;27820:8;;;;;;;;;;;:21;;;27842:8;27860:4;27867:7;27876:5;27883:13;27820:77;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;27798:99;;;27915:10;27908:17;;;;;;27511:422;;;;:::o;10710:127::-;10784:7;10811:9;:18;10821:7;10811:18;;;;;;;;;;;;;;;;10804:25;;10710:127;;;:::o;2865:103::-;2110:13;:11;:13::i;:::-;2930:30:::1;2957:1;2930:18;:30::i;:::-;2865:103::o:0;24305:51::-;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;21396:164::-;21473:46;21489:7;21498:12;:10;:12::i;:::-;21512:6;21473:15;:46::i;:::-;21530:22;21536:7;21545:6;21530:5;:22::i;:::-;21396:164;;:::o;27939:1709::-;28048:34;28065:8;28076:5;28048:16;:34::i;:::-;28035:9;:47;;28027:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;28177:5;28152:21;28162:10;28152:9;:21::i;:::-;:30;;28144:89;;;;;;;;;;;;:::i;:::-;;;;;;;;;28244:25;28250:10;28263:5;28244;:25::i;:::-;28327:1;28288:19;:29;28308:8;28288:29;;;;;;;;;;;;;;;:36;;;;;:::i;:::-;;;:40;28280:99;;;;;;;;;;;;:::i;:::-;;;;;;;;;28461:20;28495:10;28508:5;28484:30;;;;;;;;;:::i;:::-;;;;;;;;;;;;;28461:53;;28600:14;28617:1;28600:18;;28629:26;28675:7;28684:26;;28658:53;;;;;;;;;:::i;:::-;;;;;;;;;;;;;28629:82;;28866:15;28887:8;;;;;;;;;;;:21;;;28909:8;28927:4;28934:7;28943:5;28950:13;28887:77;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;28865:99;;;29006:10;28993:9;:23;;28985:141;;;;;;;;;;;;:::i;:::-;;;;;;;;;29139:8;;;;;;;;;;;:13;;;29160:9;29185:8;29257:19;:29;29277:8;29257:29;;;;;;;;;;;;;;;29345:7;29428:10;29495:3;29575:13;29139:499;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28016:1632;;;;27939:1709;;:::o;2224:87::-;2270:7;2297:6;;;;;;;;;;;2290:13;;2224:87;:::o;24208:90::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;27117:28::-;;;;:::o;9629:104::-;9685:13;9718:7;9711:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9629:104;:::o;13962:436::-;14055:4;14072:13;14088:12;:10;:12::i;:::-;14072:28;;14111:24;14138:25;14148:5;14155:7;14138:9;:25::i;:::-;14111:52;;14202:15;14182:16;:35;;14174:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;14295:60;14304:5;14311:7;14339:15;14320:16;:34;14295:8;:60::i;:::-;14386:4;14379:11;;;;13962:436;;;;:::o;11043:193::-;11122:4;11139:13;11155:12;:10;:12::i;:::-;11139:28;;11178;11188:5;11195:2;11199:6;11178:9;:28::i;:::-;11224:4;11217:11;;;11043:193;;;;:::o;25968:618::-;26104:32;26139:14;:27;26154:11;26139:27;;;;;;;;;;;;;;;26167:11;26139:40;;;;;;:::i;:::-;;;;;;;;;;;;;:48;26180:6;26139:48;;;;;;;;;;;;;26104:83;;26239:1;26231:10;;26206:9;:21;;;:35;26198:86;;;;;;;;;;;;:::i;:::-;;;;;;;;;26322:9;:23;;;26303:8;;:15;;:42;:90;;;;;26372:9;:21;;;26359:8;;26349:19;;;;;;;:::i;:::-;;;;;;;;:44;26303:90;26295:129;;;;;;;;;;;;:::i;:::-;;;;;;;;;26461:1;26435:9;:23;;:27;;;;26505:1;26497:10;;26473:9;:21;;:34;;;;26518:4;:16;;;26535:11;26548;26561:6;26569:8;;26518:60;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26093:493;25968:618;;;;;:::o;26594:365::-;2110:13;:11;:13::i;:::-;26750:15:::1;;:22;;26730:9;;:16;;:42;26722:92;;;;;;;;;;;;:::i;:::-;;;;;;;;;26832:6;26827:125;26848:9;;:16;;26844:1;:20;26827:125;;;26922:15;;26938:1;26922:18;;;;;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;26886:19;:33;26906:9;;26916:1;26906:12;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;26886:33;;;;;;;;;;;;;;;:54;;;;;;;:::i;:::-;;26866:3;;;;;:::i;:::-;;;;26827:125;;;;26594:365:::0;;;;:::o;11299:151::-;11388:7;11415:11;:18;11427:5;11415:18;;;;;;;;;;;;;;;:27;11434:7;11415:27;;;;;;;;;;;;;;;;11408:34;;11299:151;;;;:::o;3123:201::-;2110:13;:11;:13::i;:::-;3232:1:::1;3212:22;;:8;:22;;::::0;3204:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3288:28;3307:8;3288:18;:28::i;:::-;3123:201:::0;:::o;775:98::-;828:7;855:10;848:17;;775:98;:::o;17955:346::-;18074:1;18057:19;;:5;:19;;;18049:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18155:1;18136:21;;:7;:21;;;18128:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18239:6;18209:11;:18;18221:5;18209:18;;;;;;;;;;;;;;;:27;18228:7;18209:27;;;;;;;;;;;;;;;:36;;;;18277:7;18261:32;;18270:5;18261:32;;;18286:6;18261:32;;;;;;:::i;:::-;;;;;;;;17955:346;;;:::o;29656:338::-;29809:14;29826:13;29854:8;29843:41;;;;;;;;;;;;:::i;:::-;29808:76;;;;29966:20;29972:6;29980:5;29966;:20::i;:::-;29778:216;;29656:338;;;;:::o;18592:419::-;18693:24;18720:25;18730:5;18737:7;18720:9;:25::i;:::-;18693:52;;18780:17;18760:16;:37;18756:248;;18842:6;18822:16;:26;;18814:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18926:51;18935:5;18942:7;18970:6;18951:16;:25;18926:8;:51::i;:::-;18756:248;18682:329;18592:419;;;:::o;14868:806::-;14981:1;14965:18;;:4;:18;;;14957:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15058:1;15044:16;;:2;:16;;;15036:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15113:38;15134:4;15140:2;15144:6;15113:20;:38::i;:::-;15164:19;15186:9;:15;15196:4;15186:15;;;;;;;;;;;;;;;;15164:37;;15235:6;15220:11;:21;;15212:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;15352:6;15338:11;:20;15320:9;:15;15330:4;15320:15;;;;;;;;;;;;;;;:38;;;;15555:6;15538:9;:13;15548:2;15538:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;15605:2;15590:26;;15599:4;15590:26;;;15609:6;15590:26;;;;;;:::i;:::-;;;;;;;;15629:37;15649:4;15655:2;15659:6;15629:19;:37::i;:::-;14946:728;14868:806;;;:::o;16842:675::-;16945:1;16926:21;;:7;:21;;;16918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16998:49;17019:7;17036:1;17040:6;16998:20;:49::i;:::-;17060:22;17085:9;:18;17095:7;17085:18;;;;;;;;;;;;;;;;17060:43;;17140:6;17122:14;:24;;17114:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;17259:6;17242:14;:23;17221:9;:18;17231:7;17221:18;;;;;;;;;;;;;;;:44;;;;17376:6;17360:12;;:22;;;;;;;;;;;17437:1;17411:37;;17420:7;17411:37;;;17441:6;17411:37;;;;;;:::i;:::-;;;;;;;;17461:48;17481:7;17498:1;17502:6;17461:19;:48::i;:::-;16907:610;16842:675;;:::o;2389:132::-;2464:12;:10;:12::i;:::-;2453:23;;:7;:5;:7::i;:::-;:23;;;2445:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2389:132::o;3484:191::-;3558:16;3577:6;;;;;;;;;;;3558:25;;3603:8;3594:6;;:17;;;;;;;;;;;;;;;;;;3658:8;3627:40;;3648:8;3627:40;;;;;;;;;;;;3547:128;3484:191;:::o;15961:548::-;16064:1;16045:21;;:7;:21;;;16037:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;16115:49;16144:1;16148:7;16157:6;16115:20;:49::i;:::-;16193:6;16177:12;;:22;;;;;;;:::i;:::-;;;;;;;;16370:6;16348:9;:18;16358:7;16348:18;;;;;;;;;;;;;;;;:28;;;;;;;;;;;16424:7;16403:37;;16420:1;16403:37;;;16433:6;16403:37;;;;;;:::i;:::-;;;;;;;;16453:48;16481:1;16485:7;16494:6;16453:19;:48::i;:::-;15961:548;;:::o;19611:91::-;;;;:::o;20306:90::-;;;;:::o;7:75:1:-;40:6;73:2;67:9;57:19;;7:75;:::o;88:117::-;197:1;194;187:12;211:117;320:1;317;310:12;334:89;370:7;410:6;403:5;399:18;388:29;;334:89;;;:::o;429:120::-;501:23;518:5;501:23;:::i;:::-;494:5;491:34;481:62;;539:1;536;529:12;481:62;429:120;:::o;555:137::-;600:5;638:6;625:20;616:29;;654:32;680:5;654:32;:::i;:::-;555:137;;;;:::o;698:117::-;807:1;804;797:12;821:117;930:1;927;920:12;944:102;985:6;1036:2;1032:7;1027:2;1020:5;1016:14;1012:28;1002:38;;944:102;;;:::o;1052:180::-;1100:77;1097:1;1090:88;1197:4;1194:1;1187:15;1221:4;1218:1;1211:15;1238:281;1321:27;1343:4;1321:27;:::i;:::-;1313:6;1309:40;1451:6;1439:10;1436:22;1415:18;1403:10;1400:34;1397:62;1394:88;;;1462:18;;:::i;:::-;1394:88;1502:10;1498:2;1491:22;1281:238;1238:281;;:::o;1525:129::-;1559:6;1586:20;;:::i;:::-;1576:30;;1615:33;1643:4;1635:6;1615:33;:::i;:::-;1525:129;;;:::o;1660:307::-;1721:4;1811:18;1803:6;1800:30;1797:56;;;1833:18;;:::i;:::-;1797:56;1871:29;1893:6;1871:29;:::i;:::-;1863:37;;1955:4;1949;1945:15;1937:23;;1660:307;;;:::o;1973:154::-;2057:6;2052:3;2047;2034:30;2119:1;2110:6;2105:3;2101:16;2094:27;1973:154;;;:::o;2133:410::-;2210:5;2235:65;2251:48;2292:6;2251:48;:::i;:::-;2235:65;:::i;:::-;2226:74;;2323:6;2316:5;2309:21;2361:4;2354:5;2350:16;2399:3;2390:6;2385:3;2381:16;2378:25;2375:112;;;2406:79;;:::i;:::-;2375:112;2496:41;2530:6;2525:3;2520;2496:41;:::i;:::-;2216:327;2133:410;;;;;:::o;2562:338::-;2617:5;2666:3;2659:4;2651:6;2647:17;2643:27;2633:122;;2674:79;;:::i;:::-;2633:122;2791:6;2778:20;2816:78;2890:3;2882:6;2875:4;2867:6;2863:17;2816:78;:::i;:::-;2807:87;;2623:277;2562:338;;;;:::o;2906:101::-;2942:7;2982:18;2975:5;2971:30;2960:41;;2906:101;;;:::o;3013:120::-;3085:23;3102:5;3085:23;:::i;:::-;3078:5;3075:34;3065:62;;3123:1;3120;3113:12;3065:62;3013:120;:::o;3139:137::-;3184:5;3222:6;3209:20;3200:29;;3238:32;3264:5;3238:32;:::i;:::-;3139:137;;;;:::o;3282:1117::-;3384:6;3392;3400;3408;3457:3;3445:9;3436:7;3432:23;3428:33;3425:120;;;3464:79;;:::i;:::-;3425:120;3584:1;3609:52;3653:7;3644:6;3633:9;3629:22;3609:52;:::i;:::-;3599:62;;3555:116;3738:2;3727:9;3723:18;3710:32;3769:18;3761:6;3758:30;3755:117;;;3791:79;;:::i;:::-;3755:117;3896:62;3950:7;3941:6;3930:9;3926:22;3896:62;:::i;:::-;3886:72;;3681:287;4007:2;4033:52;4077:7;4068:6;4057:9;4053:22;4033:52;:::i;:::-;4023:62;;3978:117;4162:2;4151:9;4147:18;4134:32;4193:18;4185:6;4182:30;4179:117;;;4215:79;;:::i;:::-;4179:117;4320:62;4374:7;4365:6;4354:9;4350:22;4320:62;:::i;:::-;4310:72;;4105:287;3282:1117;;;;;;;:::o;4405:99::-;4457:6;4491:5;4485:12;4475:22;;4405:99;;;:::o;4510:169::-;4594:11;4628:6;4623:3;4616:19;4668:4;4663:3;4659:14;4644:29;;4510:169;;;;:::o;4685:307::-;4753:1;4763:113;4777:6;4774:1;4771:13;4763:113;;;4862:1;4857:3;4853:11;4847:18;4843:1;4838:3;4834:11;4827:39;4799:2;4796:1;4792:10;4787:15;;4763:113;;;4894:6;4891:1;4888:13;4885:101;;;4974:1;4965:6;4960:3;4956:16;4949:27;4885:101;4734:258;4685:307;;;:::o;4998:364::-;5086:3;5114:39;5147:5;5114:39;:::i;:::-;5169:71;5233:6;5228:3;5169:71;:::i;:::-;5162:78;;5249:52;5294:6;5289:3;5282:4;5275:5;5271:16;5249:52;:::i;:::-;5326:29;5348:6;5326:29;:::i;:::-;5321:3;5317:39;5310:46;;5090:272;4998:364;;;;:::o;5368:313::-;5481:4;5519:2;5508:9;5504:18;5496:26;;5568:9;5562:4;5558:20;5554:1;5543:9;5539:17;5532:47;5596:78;5669:4;5660:6;5596:78;:::i;:::-;5588:86;;5368:313;;;;:::o;5687:126::-;5724:7;5764:42;5757:5;5753:54;5742:65;;5687:126;;;:::o;5819:96::-;5856:7;5885:24;5903:5;5885:24;:::i;:::-;5874:35;;5819:96;;;:::o;5921:122::-;5994:24;6012:5;5994:24;:::i;:::-;5987:5;5984:35;5974:63;;6033:1;6030;6023:12;5974:63;5921:122;:::o;6049:139::-;6095:5;6133:6;6120:20;6111:29;;6149:33;6176:5;6149:33;:::i;:::-;6049:139;;;;:::o;6194:77::-;6231:7;6260:5;6249:16;;6194:77;;;:::o;6277:122::-;6350:24;6368:5;6350:24;:::i;:::-;6343:5;6340:35;6330:63;;6389:1;6386;6379:12;6330:63;6277:122;:::o;6405:139::-;6451:5;6489:6;6476:20;6467:29;;6505:33;6532:5;6505:33;:::i;:::-;6405:139;;;;:::o;6550:474::-;6618:6;6626;6675:2;6663:9;6654:7;6650:23;6646:32;6643:119;;;6681:79;;:::i;:::-;6643:119;6801:1;6826:53;6871:7;6862:6;6851:9;6847:22;6826:53;:::i;:::-;6816:63;;6772:117;6928:2;6954:53;6999:7;6990:6;6979:9;6975:22;6954:53;:::i;:::-;6944:63;;6899:118;6550:474;;;;;:::o;7030:90::-;7064:7;7107:5;7100:13;7093:21;7082:32;;7030:90;;;:::o;7126:109::-;7207:21;7222:5;7207:21;:::i;:::-;7202:3;7195:34;7126:109;;:::o;7241:210::-;7328:4;7366:2;7355:9;7351:18;7343:26;;7379:65;7441:1;7430:9;7426:17;7417:6;7379:65;:::i;:::-;7241:210;;;;:::o;7457:118::-;7544:24;7562:5;7544:24;:::i;:::-;7539:3;7532:37;7457:118;;:::o;7581:222::-;7674:4;7712:2;7701:9;7697:18;7689:26;;7725:71;7793:1;7782:9;7778:17;7769:6;7725:71;:::i;:::-;7581:222;;;;:::o;7809:619::-;7886:6;7894;7902;7951:2;7939:9;7930:7;7926:23;7922:32;7919:119;;;7957:79;;:::i;:::-;7919:119;8077:1;8102:53;8147:7;8138:6;8127:9;8123:22;8102:53;:::i;:::-;8092:63;;8048:117;8204:2;8230:53;8275:7;8266:6;8255:9;8251:22;8230:53;:::i;:::-;8220:63;;8175:118;8332:2;8358:53;8403:7;8394:6;8383:9;8379:22;8358:53;:::i;:::-;8348:63;;8303:118;7809:619;;;;;:::o;8434:86::-;8469:7;8509:4;8502:5;8498:16;8487:27;;8434:86;;;:::o;8526:112::-;8609:22;8625:5;8609:22;:::i;:::-;8604:3;8597:35;8526:112;;:::o;8644:214::-;8733:4;8771:2;8760:9;8756:18;8748:26;;8784:67;8848:1;8837:9;8833:17;8824:6;8784:67;:::i;:::-;8644:214;;;;:::o;8864:329::-;8923:6;8972:2;8960:9;8951:7;8947:23;8943:32;8940:119;;;8978:79;;:::i;:::-;8940:119;9098:1;9123:53;9168:7;9159:6;9148:9;9144:22;9123:53;:::i;:::-;9113:63;;9069:117;8864:329;;;;:::o;9199:472::-;9266:6;9274;9323:2;9311:9;9302:7;9298:23;9294:32;9291:119;;;9329:79;;:::i;:::-;9291:119;9449:1;9474:52;9518:7;9509:6;9498:9;9494:22;9474:52;:::i;:::-;9464:62;;9420:116;9575:2;9601:53;9646:7;9637:6;9626:9;9622:22;9601:53;:::i;:::-;9591:63;;9546:118;9199:472;;;;;:::o;9677:329::-;9736:6;9785:2;9773:9;9764:7;9760:23;9756:32;9753:119;;;9791:79;;:::i;:::-;9753:119;9911:1;9936:53;9981:7;9972:6;9961:9;9957:22;9936:53;:::i;:::-;9926:63;;9882:117;9677:329;;;;:::o;10012:327::-;10070:6;10119:2;10107:9;10098:7;10094:23;10090:32;10087:119;;;10125:79;;:::i;:::-;10087:119;10245:1;10270:52;10314:7;10305:6;10294:9;10290:22;10270:52;:::i;:::-;10260:62;;10216:116;10012:327;;;;:::o;10345:98::-;10396:6;10430:5;10424:12;10414:22;;10345:98;;;:::o;10449:168::-;10532:11;10566:6;10561:3;10554:19;10606:4;10601:3;10597:14;10582:29;;10449:168;;;;:::o;10623:360::-;10709:3;10737:38;10769:5;10737:38;:::i;:::-;10791:70;10854:6;10849:3;10791:70;:::i;:::-;10784:77;;10870:52;10915:6;10910:3;10903:4;10896:5;10892:16;10870:52;:::i;:::-;10947:29;10969:6;10947:29;:::i;:::-;10942:3;10938:39;10931:46;;10713:270;10623:360;;;;:::o;10989:309::-;11100:4;11138:2;11127:9;11123:18;11115:26;;11187:9;11181:4;11177:20;11173:1;11162:9;11158:17;11151:47;11215:76;11286:4;11277:6;11215:76;:::i;:::-;11207:84;;10989:309;;;;:::o;11304:118::-;11391:24;11409:5;11391:24;:::i;:::-;11386:3;11379:37;11304:118;;:::o;11428:222::-;11521:4;11559:2;11548:9;11544:18;11536:26;;11572:71;11640:1;11629:9;11625:17;11616:6;11572:71;:::i;:::-;11428:222;;;;:::o;11656:795::-;11741:6;11749;11757;11806:2;11794:9;11785:7;11781:23;11777:32;11774:119;;;11812:79;;:::i;:::-;11774:119;11932:1;11957:52;12001:7;11992:6;11981:9;11977:22;11957:52;:::i;:::-;11947:62;;11903:116;12086:2;12075:9;12071:18;12058:32;12117:18;12109:6;12106:30;12103:117;;;12139:79;;:::i;:::-;12103:117;12244:62;12298:7;12289:6;12278:9;12274:22;12244:62;:::i;:::-;12234:72;;12029:287;12355:2;12381:53;12426:7;12417:6;12406:9;12402:22;12381:53;:::i;:::-;12371:63;;12326:118;11656:795;;;;;:::o;12457:77::-;12494:7;12523:5;12512:16;;12457:77;;;:::o;12540:118::-;12627:24;12645:5;12627:24;:::i;:::-;12622:3;12615:37;12540:118;;:::o;12664:332::-;12785:4;12823:2;12812:9;12808:18;12800:26;;12836:71;12904:1;12893:9;12889:17;12880:6;12836:71;:::i;:::-;12917:72;12985:2;12974:9;12970:18;12961:6;12917:72;:::i;:::-;12664:332;;;;;:::o;13002:117::-;13111:1;13108;13101:12;13125:117;13234:1;13231;13224:12;13261:552;13318:8;13328:6;13378:3;13371:4;13363:6;13359:17;13355:27;13345:122;;13386:79;;:::i;:::-;13345:122;13499:6;13486:20;13476:30;;13529:18;13521:6;13518:30;13515:117;;;13551:79;;:::i;:::-;13515:117;13665:4;13657:6;13653:17;13641:29;;13719:3;13711:4;13703:6;13699:17;13689:8;13685:32;13682:41;13679:128;;;13726:79;;:::i;:::-;13679:128;13261:552;;;;;:::o;13819:1137::-;13923:6;13931;13939;13947;13955;14004:3;13992:9;13983:7;13979:23;13975:33;13972:120;;;14011:79;;:::i;:::-;13972:120;14131:1;14156:52;14200:7;14191:6;14180:9;14176:22;14156:52;:::i;:::-;14146:62;;14102:116;14285:2;14274:9;14270:18;14257:32;14316:18;14308:6;14305:30;14302:117;;;14338:79;;:::i;:::-;14302:117;14443:62;14497:7;14488:6;14477:9;14473:22;14443:62;:::i;:::-;14433:72;;14228:287;14554:2;14580:52;14624:7;14615:6;14604:9;14600:22;14580:52;:::i;:::-;14570:62;;14525:117;14709:2;14698:9;14694:18;14681:32;14740:18;14732:6;14729:30;14726:117;;;14762:79;;:::i;:::-;14726:117;14875:64;14931:7;14922:6;14911:9;14907:22;14875:64;:::i;:::-;14857:82;;;;14652:297;13819:1137;;;;;;;;:::o;14978:567::-;15050:8;15060:6;15110:3;15103:4;15095:6;15091:17;15087:27;15077:122;;15118:79;;:::i;:::-;15077:122;15231:6;15218:20;15208:30;;15261:18;15253:6;15250:30;15247:117;;;15283:79;;:::i;:::-;15247:117;15397:4;15389:6;15385:17;15373:29;;15451:3;15443:4;15435:6;15431:17;15421:8;15417:32;15414:41;15411:128;;;15458:79;;:::i;:::-;15411:128;14978:567;;;;;:::o;15566:579::-;15650:8;15660:6;15710:3;15703:4;15695:6;15691:17;15687:27;15677:122;;15718:79;;:::i;:::-;15677:122;15831:6;15818:20;15808:30;;15861:18;15853:6;15850:30;15847:117;;;15883:79;;:::i;:::-;15847:117;15997:4;15989:6;15985:17;15973:29;;16051:3;16043:4;16035:6;16031:17;16021:8;16017:32;16014:41;16011:128;;;16058:79;;:::i;:::-;16011:128;15566:579;;;;;:::o;16151:954::-;16283:6;16291;16299;16307;16356:2;16344:9;16335:7;16331:23;16327:32;16324:119;;;16362:79;;:::i;:::-;16324:119;16510:1;16499:9;16495:17;16482:31;16540:18;16532:6;16529:30;16526:117;;;16562:79;;:::i;:::-;16526:117;16675:79;16746:7;16737:6;16726:9;16722:22;16675:79;:::i;:::-;16657:97;;;;16453:311;16831:2;16820:9;16816:18;16803:32;16862:18;16854:6;16851:30;16848:117;;;16884:79;;:::i;:::-;16848:117;16997:91;17080:7;17071:6;17060:9;17056:22;16997:91;:::i;:::-;16979:109;;;;16774:324;16151:954;;;;;;;:::o;17111:474::-;17179:6;17187;17236:2;17224:9;17215:7;17211:23;17207:32;17204:119;;;17242:79;;:::i;:::-;17204:119;17362:1;17387:53;17432:7;17423:6;17412:9;17408:22;17387:53;:::i;:::-;17377:63;;17333:117;17489:2;17515:53;17560:7;17551:6;17540:9;17536:22;17515:53;:::i;:::-;17505:63;;17460:118;17111:474;;;;;:::o;17591:180::-;17639:77;17636:1;17629:88;17736:4;17733:1;17726:15;17760:4;17757:1;17750:15;17777:320;17821:6;17858:1;17852:4;17848:12;17838:22;;17905:1;17899:4;17895:12;17926:18;17916:81;;17982:4;17974:6;17970:17;17960:27;;17916:81;18044:2;18036:6;18033:14;18013:18;18010:38;18007:84;;18063:18;;:::i;:::-;18007:84;17828:269;17777:320;;;:::o;18103:147::-;18204:11;18241:3;18226:18;;18103:147;;;;:::o;18256:140::-;18304:4;18327:3;18319:11;;18350:3;18347:1;18340:14;18384:4;18381:1;18371:18;18363:26;;18256:140;;;:::o;18424:870::-;18525:3;18562:5;18556:12;18591:36;18617:9;18591:36;:::i;:::-;18643:88;18724:6;18719:3;18643:88;:::i;:::-;18636:95;;18762:1;18751:9;18747:17;18778:1;18773:166;;;;18953:1;18948:340;;;;18740:548;;18773:166;18857:4;18853:9;18842;18838:25;18833:3;18826:38;18919:6;18912:14;18905:22;18897:6;18893:35;18888:3;18884:45;18877:52;;18773:166;;18948:340;19015:37;19046:5;19015:37;:::i;:::-;19074:1;19088:154;19102:6;19099:1;19096:13;19088:154;;;19176:7;19170:14;19166:1;19161:3;19157:11;19150:35;19226:1;19217:7;19213:15;19202:26;;19124:4;19121:1;19117:12;19112:17;;19088:154;;;19271:6;19266:3;19262:16;19255:23;;18955:333;;18740:548;;18529:765;;18424:870;;;;:::o;19300:265::-;19427:3;19449:90;19535:3;19526:6;19449:90;:::i;:::-;19442:97;;19556:3;19549:10;;19300:265;;;;:::o;19571:239::-;19711:34;19707:1;19699:6;19695:14;19688:58;19780:22;19775:2;19767:6;19763:15;19756:47;19571:239;:::o;19816:366::-;19958:3;19979:67;20043:2;20038:3;19979:67;:::i;:::-;19972:74;;20055:93;20144:3;20055:93;:::i;:::-;20173:2;20168:3;20164:12;20157:19;;19816:366;;;:::o;20188:419::-;20354:4;20392:2;20381:9;20377:18;20369:26;;20441:9;20435:4;20431:20;20427:1;20416:9;20412:17;20405:47;20469:131;20595:4;20469:131;:::i;:::-;20461:139;;20188:419;;;:::o;20613:115::-;20698:23;20715:5;20698:23;:::i;:::-;20693:3;20686:36;20613:115;;:::o;20734:::-;20819:23;20836:5;20819:23;:::i;:::-;20814:3;20807:36;20734:115;;:::o;20855:719::-;21064:4;21102:3;21091:9;21087:19;21079:27;;21116:69;21182:1;21171:9;21167:17;21158:6;21116:69;:::i;:::-;21232:9;21226:4;21222:20;21217:2;21206:9;21202:18;21195:48;21260:76;21331:4;21322:6;21260:76;:::i;:::-;21252:84;;21346:70;21412:2;21401:9;21397:18;21388:6;21346:70;:::i;:::-;21463:9;21457:4;21453:20;21448:2;21437:9;21433:18;21426:48;21491:76;21562:4;21553:6;21491:76;:::i;:::-;21483:84;;20855:719;;;;;;;:::o;21580:373::-;21684:3;21712:38;21744:5;21712:38;:::i;:::-;21766:88;21847:6;21842:3;21766:88;:::i;:::-;21759:95;;21863:52;21908:6;21903:3;21896:4;21889:5;21885:16;21863:52;:::i;:::-;21940:6;21935:3;21931:16;21924:23;;21688:265;21580:373;;;;:::o;21959:271::-;22089:3;22111:93;22200:3;22191:6;22111:93;:::i;:::-;22104:100;;22221:3;22214:10;;21959:271;;;;:::o;22236:230::-;22376:34;22372:1;22364:6;22360:14;22353:58;22445:13;22440:2;22432:6;22428:15;22421:38;22236:230;:::o;22472:366::-;22614:3;22635:67;22699:2;22694:3;22635:67;:::i;:::-;22628:74;;22711:93;22800:3;22711:93;:::i;:::-;22829:2;22824:3;22820:12;22813:19;;22472:366;;;:::o;22844:419::-;23010:4;23048:2;23037:9;23033:18;23025:26;;23097:9;23091:4;23087:20;23083:1;23072:9;23068:17;23061:47;23125:131;23251:4;23125:131;:::i;:::-;23117:139;;22844:419;;;:::o;23269:180::-;23317:77;23314:1;23307:88;23414:4;23411:1;23404:15;23438:4;23435:1;23428:15;23455:305;23495:3;23514:20;23532:1;23514:20;:::i;:::-;23509:25;;23548:20;23566:1;23548:20;:::i;:::-;23543:25;;23702:1;23634:66;23630:74;23627:1;23624:81;23621:107;;;23708:18;;:::i;:::-;23621:107;23752:1;23749;23745:9;23738:16;;23455:305;;;;:::o;23766:332::-;23887:4;23925:2;23914:9;23910:18;23902:26;;23938:71;24006:1;23995:9;23991:17;23982:6;23938:71;:::i;:::-;24019:72;24087:2;24076:9;24072:18;24063:6;24019:72;:::i;:::-;23766:332;;;;;:::o;24104:96::-;24138:8;24187:5;24182:3;24178:15;24157:36;;24104:96;;;:::o;24206:94::-;24244:7;24273:21;24288:5;24273:21;:::i;:::-;24262:32;;24206:94;;;:::o;24306:153::-;24409:43;24428:23;24445:5;24428:23;:::i;:::-;24409:43;:::i;:::-;24404:3;24397:56;24306:153;;:::o;24465:79::-;24504:7;24533:5;24522:16;;24465:79;;;:::o;24550:157::-;24655:45;24675:24;24693:5;24675:24;:::i;:::-;24655:45;:::i;:::-;24650:3;24643:58;24550:157;;:::o;24713:392::-;24851:3;24866:73;24935:3;24926:6;24866:73;:::i;:::-;24964:1;24959:3;24955:11;24948:18;;24976:75;25047:3;25038:6;24976:75;:::i;:::-;25076:2;25071:3;25067:12;25060:19;;25096:3;25089:10;;24713:392;;;;;:::o;25111:822::-;25344:4;25382:3;25371:9;25367:19;25359:27;;25396:69;25462:1;25451:9;25447:17;25438:6;25396:69;:::i;:::-;25475:72;25543:2;25532:9;25528:18;25519:6;25475:72;:::i;:::-;25594:9;25588:4;25584:20;25579:2;25568:9;25564:18;25557:48;25622:76;25693:4;25684:6;25622:76;:::i;:::-;25614:84;;25708:66;25770:2;25759:9;25755:18;25746:6;25708:66;:::i;:::-;25822:9;25816:4;25812:20;25806:3;25795:9;25791:19;25784:49;25850:76;25921:4;25912:6;25850:76;:::i;:::-;25842:84;;25111:822;;;;;;;;:::o;25939:143::-;25996:5;26027:6;26021:13;26012:22;;26043:33;26070:5;26043:33;:::i;:::-;25939:143;;;;:::o;26088:507::-;26167:6;26175;26224:2;26212:9;26203:7;26199:23;26195:32;26192:119;;;26230:79;;:::i;:::-;26192:119;26350:1;26375:64;26431:7;26422:6;26411:9;26407:22;26375:64;:::i;:::-;26365:74;;26321:128;26488:2;26514:64;26570:7;26561:6;26550:9;26546:22;26514:64;:::i;:::-;26504:74;;26459:129;26088:507;;;;;:::o;26601:232::-;26741:34;26737:1;26729:6;26725:14;26718:58;26810:15;26805:2;26797:6;26793:15;26786:40;26601:232;:::o;26839:366::-;26981:3;27002:67;27066:2;27061:3;27002:67;:::i;:::-;26995:74;;27078:93;27167:3;27078:93;:::i;:::-;27196:2;27191:3;27187:12;27180:19;;26839:366;;;:::o;27211:419::-;27377:4;27415:2;27404:9;27400:18;27392:26;;27464:9;27458:4;27454:20;27450:1;27439:9;27435:17;27428:47;27492:131;27618:4;27492:131;:::i;:::-;27484:139;;27211:419;;;:::o;27636:233::-;27776:34;27772:1;27764:6;27760:14;27753:58;27845:16;27840:2;27832:6;27828:15;27821:41;27636:233;:::o;27875:366::-;28017:3;28038:67;28102:2;28097:3;28038:67;:::i;:::-;28031:74;;28114:93;28203:3;28114:93;:::i;:::-;28232:2;28227:3;28223:12;28216:19;;27875:366;;;:::o;28247:419::-;28413:4;28451:2;28440:9;28436:18;28428:26;;28500:9;28494:4;28490:20;28486:1;28475:9;28471:17;28464:47;28528:131;28654:4;28528:131;:::i;:::-;28520:139;;28247:419;;;:::o;28672:366::-;28812:34;28808:1;28800:6;28796:14;28789:58;28881:34;28876:2;28868:6;28864:15;28857:59;28950:34;28945:2;28937:6;28933:15;28926:59;29019:11;29014:2;29006:6;29002:15;28995:36;28672:366;:::o;29044:368::-;29186:3;29207:68;29271:3;29266;29207:68;:::i;:::-;29200:75;;29284:93;29373:3;29284:93;:::i;:::-;29402:3;29397;29393:13;29386:20;;29044:368;;;:::o;29418:419::-;29584:4;29622:2;29611:9;29607:18;29599:26;;29671:9;29665:4;29661:20;29657:1;29646:9;29642:17;29635:47;29699:131;29825:4;29699:131;:::i;:::-;29691:139;;29418:419;;;:::o;29865:827::-;29948:3;29985:5;29979:12;30014:36;30040:9;30014:36;:::i;:::-;30066:70;30129:6;30124:3;30066:70;:::i;:::-;30059:77;;30167:1;30156:9;30152:17;30183:1;30178:164;;;;30356:1;30351:335;;;;30145:541;;30178:164;30262:4;30258:9;30247;30243:25;30238:3;30231:38;30322:6;30315:14;30308:22;30302:4;30298:33;30293:3;30289:43;30282:50;;30178:164;;30351:335;30418:37;30449:5;30418:37;:::i;:::-;30477:1;30491:154;30505:6;30502:1;30499:13;30491:154;;;30579:7;30573:14;30569:1;30564:3;30560:11;30553:35;30629:1;30620:7;30616:15;30605:26;;30527:4;30524:1;30520:12;30515:17;;30491:154;;;30674:1;30669:3;30665:11;30658:18;;30358:328;;30145:541;;29952:740;;29865:827;;;;:::o;30698:104::-;30743:7;30772:24;30790:5;30772:24;:::i;:::-;30761:35;;30698:104;;;:::o;30808:142::-;30911:32;30937:5;30911:32;:::i;:::-;30906:3;30899:45;30808:142;;:::o;30956:1058::-;31254:4;31292:3;31281:9;31277:19;31269:27;;31306:69;31372:1;31361:9;31357:17;31348:6;31306:69;:::i;:::-;31422:9;31416:4;31412:20;31407:2;31396:9;31392:18;31385:48;31450:73;31518:4;31509:6;31450:73;:::i;:::-;31442:81;;31570:9;31564:4;31560:20;31555:2;31544:9;31540:18;31533:48;31598:76;31669:4;31660:6;31598:76;:::i;:::-;31590:84;;31684:88;31768:2;31757:9;31753:18;31744:6;31684:88;:::i;:::-;31782:73;31850:3;31839:9;31835:19;31826:6;31782:73;:::i;:::-;31903:9;31897:4;31893:20;31887:3;31876:9;31872:19;31865:49;31931:76;32002:4;31993:6;31931:76;:::i;:::-;31923:84;;30956:1058;;;;;;;;;:::o;32020:224::-;32160:34;32156:1;32148:6;32144:14;32137:58;32229:7;32224:2;32216:6;32212:15;32205:32;32020:224;:::o;32250:366::-;32392:3;32413:67;32477:2;32472:3;32413:67;:::i;:::-;32406:74;;32489:93;32578:3;32489:93;:::i;:::-;32607:2;32602:3;32598:12;32591:19;;32250:366;;;:::o;32622:419::-;32788:4;32826:2;32815:9;32811:18;32803:26;;32875:9;32869:4;32865:20;32861:1;32850:9;32846:17;32839:47;32903:131;33029:4;32903:131;:::i;:::-;32895:139;;32622:419;;;:::o;33047:225::-;33187:34;33183:1;33175:6;33171:14;33164:58;33256:8;33251:2;33243:6;33239:15;33232:33;33047:225;:::o;33278:366::-;33420:3;33441:67;33505:2;33500:3;33441:67;:::i;:::-;33434:74;;33517:93;33606:3;33517:93;:::i;:::-;33635:2;33630:3;33626:12;33619:19;;33278:366;;;:::o;33650:419::-;33816:4;33854:2;33843:9;33839:18;33831:26;;33903:9;33897:4;33893:20;33889:1;33878:9;33874:17;33867:47;33931:131;34057:4;33931:131;:::i;:::-;33923:139;;33650:419;;;:::o;34097:314::-;34211:3;34232:88;34313:6;34308:3;34232:88;:::i;:::-;34225:95;;34330:43;34366:6;34361:3;34354:5;34330:43;:::i;:::-;34398:6;34393:3;34389:16;34382:23;;34097:314;;;;;:::o;34417:291::-;34557:3;34579:103;34678:3;34669:6;34661;34579:103;:::i;:::-;34572:110;;34699:3;34692:10;;34417:291;;;;;:::o;34714:176::-;34854:28;34850:1;34842:6;34838:14;34831:52;34714:176;:::o;34896:366::-;35038:3;35059:67;35123:2;35118:3;35059:67;:::i;:::-;35052:74;;35135:93;35224:3;35135:93;:::i;:::-;35253:2;35248:3;35244:12;35237:19;;34896:366;;;:::o;35268:419::-;35434:4;35472:2;35461:9;35457:18;35449:26;;35521:9;35515:4;35511:20;35507:1;35496:9;35492:17;35485:47;35549:131;35675:4;35549:131;:::i;:::-;35541:139;;35268:419;;;:::o;35715:301::-;35811:3;35832:70;35895:6;35890:3;35832:70;:::i;:::-;35825:77;;35912:43;35948:6;35943:3;35936:5;35912:43;:::i;:::-;35980:29;36002:6;35980:29;:::i;:::-;35975:3;35971:39;35964:46;;35715:301;;;;;:::o;36022:739::-;36241:4;36279:3;36268:9;36264:19;36256:27;;36293:69;36359:1;36348:9;36344:17;36335:6;36293:69;:::i;:::-;36409:9;36403:4;36399:20;36394:2;36383:9;36379:18;36372:48;36437:76;36508:4;36499:6;36437:76;:::i;:::-;36429:84;;36523:70;36589:2;36578:9;36574:18;36565:6;36523:70;:::i;:::-;36640:9;36634:4;36630:20;36625:2;36614:9;36610:18;36603:48;36668:86;36749:4;36740:6;36732;36668:86;:::i;:::-;36660:94;;36022:739;;;;;;;;:::o;36767:224::-;36907:34;36903:1;36895:6;36891:14;36884:58;36976:7;36971:2;36963:6;36959:15;36952:32;36767:224;:::o;36997:366::-;37139:3;37160:67;37224:2;37219:3;37160:67;:::i;:::-;37153:74;;37236:93;37325:3;37236:93;:::i;:::-;37354:2;37349:3;37345:12;37338:19;;36997:366;;;:::o;37369:419::-;37535:4;37573:2;37562:9;37558:18;37550:26;;37622:9;37616:4;37612:20;37608:1;37597:9;37593:17;37586:47;37650:131;37776:4;37650:131;:::i;:::-;37642:139;;37369:419;;;:::o;37794:180::-;37842:77;37839:1;37832:88;37939:4;37936:1;37929:15;37963:4;37960:1;37953:15;37980:117;38089:1;38086;38079:12;38103:117;38212:1;38209;38202:12;38226:117;38335:1;38332;38325:12;38349:724;38426:4;38432:6;38488:11;38475:25;38588:1;38582:4;38578:12;38567:8;38551:14;38547:29;38543:48;38523:18;38519:73;38509:168;;38596:79;;:::i;:::-;38509:168;38708:18;38698:8;38694:33;38686:41;;38760:4;38747:18;38737:28;;38788:18;38780:6;38777:30;38774:117;;;38810:79;;:::i;:::-;38774:117;38918:2;38912:4;38908:13;38900:21;;38975:4;38967:6;38963:17;38947:14;38943:38;38937:4;38933:49;38930:136;;;38985:79;;:::i;:::-;38930:136;38439:634;38349:724;;;;;:::o;39079:96::-;39137:6;39165:3;39155:13;;39079:96;;;;:::o;39181:93::-;39218:6;39265:2;39260;39253:5;39249:14;39245:23;39235:33;;39181:93;;;:::o;39280:107::-;39324:8;39374:5;39368:4;39364:16;39343:37;;39280:107;;;;:::o;39393:393::-;39462:6;39512:1;39500:10;39496:18;39535:97;39565:66;39554:9;39535:97;:::i;:::-;39653:39;39683:8;39672:9;39653:39;:::i;:::-;39641:51;;39725:4;39721:9;39714:5;39710:21;39701:30;;39774:4;39764:8;39760:19;39753:5;39750:30;39740:40;;39469:317;;39393:393;;;;;:::o;39792:60::-;39820:3;39841:5;39834:12;;39792:60;;;:::o;39858:142::-;39908:9;39941:53;39959:34;39968:24;39986:5;39968:24;:::i;:::-;39959:34;:::i;:::-;39941:53;:::i;:::-;39928:66;;39858:142;;;:::o;40006:75::-;40049:3;40070:5;40063:12;;40006:75;;;:::o;40087:269::-;40197:39;40228:7;40197:39;:::i;:::-;40258:91;40307:41;40331:16;40307:41;:::i;:::-;40299:6;40292:4;40286:11;40258:91;:::i;:::-;40252:4;40245:105;40163:193;40087:269;;;:::o;40362:73::-;40407:3;40362:73;:::o;40441:189::-;40518:32;;:::i;:::-;40559:65;40617:6;40609;40603:4;40559:65;:::i;:::-;40494:136;40441:189;;:::o;40636:186::-;40696:120;40713:3;40706:5;40703:14;40696:120;;;40767:39;40804:1;40797:5;40767:39;:::i;:::-;40740:1;40733:5;40729:13;40720:22;;40696:120;;;40636:186;;:::o;40828:541::-;40928:2;40923:3;40920:11;40917:445;;;40962:37;40993:5;40962:37;:::i;:::-;41045:29;41063:10;41045:29;:::i;:::-;41035:8;41031:44;41228:2;41216:10;41213:18;41210:49;;;41249:8;41234:23;;41210:49;41272:80;41328:22;41346:3;41328:22;:::i;:::-;41318:8;41314:37;41301:11;41272:80;:::i;:::-;40932:430;;40917:445;40828:541;;;:::o;41375:117::-;41429:8;41479:5;41473:4;41469:16;41448:37;;41375:117;;;;:::o;41498:169::-;41542:6;41575:51;41623:1;41619:6;41611:5;41608:1;41604:13;41575:51;:::i;:::-;41571:56;41656:4;41650;41646:15;41636:25;;41549:118;41498:169;;;;:::o;41672:295::-;41748:4;41894:29;41919:3;41913:4;41894:29;:::i;:::-;41886:37;;41956:3;41953:1;41949:11;41943:4;41940:21;41932:29;;41672:295;;;;:::o;41972:1398::-;42094:43;42133:3;42128;42094:43;:::i;:::-;42202:18;42194:6;42191:30;42188:56;;;42224:18;;:::i;:::-;42188:56;42268:38;42300:4;42294:11;42268:38;:::i;:::-;42353:66;42412:6;42404;42398:4;42353:66;:::i;:::-;42446:1;42475:2;42467:6;42464:14;42492:1;42487:631;;;;43162:1;43179:6;43176:84;;;43235:9;43230:3;43226:19;43213:33;43204:42;;43176:84;43286:67;43346:6;43339:5;43286:67;:::i;:::-;43280:4;43273:81;43135:229;42457:907;;42487:631;42539:4;42535:9;42527:6;42523:22;42573:36;42604:4;42573:36;:::i;:::-;42631:1;42645:215;42659:7;42656:1;42653:14;42645:215;;;42745:9;42740:3;42736:19;42723:33;42715:6;42708:49;42796:1;42788:6;42784:14;42774:24;;42843:2;42832:9;42828:18;42815:31;;42682:4;42679:1;42675:12;42670:17;;42645:215;;;42888:6;42879:7;42876:19;42873:186;;;42953:9;42948:3;42944:19;42931:33;42996:48;43038:4;43030:6;43026:17;43015:9;42996:48;:::i;:::-;42988:6;42981:64;42896:163;42873:186;43105:1;43101;43093:6;43089:14;43085:22;43079:4;43072:36;42494:624;;;42457:907;;42069:1301;;;41972:1398;;;:::o;43376:233::-;43415:3;43438:24;43456:5;43438:24;:::i;:::-;43429:33;;43484:66;43477:5;43474:77;43471:103;;43554:18;;:::i;:::-;43471:103;43601:1;43594:5;43590:13;43583:20;;43376:233;;;:::o;43615:225::-;43755:34;43751:1;43743:6;43739:14;43732:58;43824:8;43819:2;43811:6;43807:15;43800:33;43615:225;:::o;43846:366::-;43988:3;44009:67;44073:2;44068:3;44009:67;:::i;:::-;44002:74;;44085:93;44174:3;44085:93;:::i;:::-;44203:2;44198:3;44194:12;44187:19;;43846:366;;;:::o;44218:419::-;44384:4;44422:2;44411:9;44407:18;44399:26;;44471:9;44465:4;44461:20;44457:1;44446:9;44442:17;44435:47;44499:131;44625:4;44499:131;:::i;:::-;44491:139;;44218:419;;;:::o;44643:223::-;44783:34;44779:1;44771:6;44767:14;44760:58;44852:6;44847:2;44839:6;44835:15;44828:31;44643:223;:::o;44872:366::-;45014:3;45035:67;45099:2;45094:3;45035:67;:::i;:::-;45028:74;;45111:93;45200:3;45111:93;:::i;:::-;45229:2;45224:3;45220:12;45213:19;;44872:366;;;:::o;45244:419::-;45410:4;45448:2;45437:9;45433:18;45425:26;;45497:9;45491:4;45487:20;45483:1;45472:9;45468:17;45461:47;45525:131;45651:4;45525:131;:::i;:::-;45517:139;;45244:419;;;:::o;45669:221::-;45809:34;45805:1;45797:6;45793:14;45786:58;45878:4;45873:2;45865:6;45861:15;45854:29;45669:221;:::o;45896:366::-;46038:3;46059:67;46123:2;46118:3;46059:67;:::i;:::-;46052:74;;46135:93;46224:3;46135:93;:::i;:::-;46253:2;46248:3;46244:12;46237:19;;45896:366;;;:::o;46268:419::-;46434:4;46472:2;46461:9;46457:18;46449:26;;46521:9;46515:4;46511:20;46507:1;46496:9;46492:17;46485:47;46549:131;46675:4;46549:131;:::i;:::-;46541:139;;46268:419;;;:::o;46693:138::-;46774:32;46800:5;46774:32;:::i;:::-;46767:5;46764:43;46754:71;;46821:1;46818;46811:12;46754:71;46693:138;:::o;46837:159::-;46902:5;46933:6;46927:13;46918:22;;46949:41;46984:5;46949:41;:::i;:::-;46837:159;;;;:::o;47002:523::-;47089:6;47097;47146:2;47134:9;47125:7;47121:23;47117:32;47114:119;;;47152:79;;:::i;:::-;47114:119;47272:1;47297:72;47361:7;47352:6;47341:9;47337:22;47297:72;:::i;:::-;47287:82;;47243:136;47418:2;47444:64;47500:7;47491:6;47480:9;47476:22;47444:64;:::i;:::-;47434:74;;47389:129;47002:523;;;;;:::o;47531:179::-;47671:31;47667:1;47659:6;47655:14;47648:55;47531:179;:::o;47716:366::-;47858:3;47879:67;47943:2;47938:3;47879:67;:::i;:::-;47872:74;;47955:93;48044:3;47955:93;:::i;:::-;48073:2;48068:3;48064:12;48057:19;;47716:366;;;:::o;48088:419::-;48254:4;48292:2;48281:9;48277:18;48269:26;;48341:9;48335:4;48331:20;48327:1;48316:9;48312:17;48305:47;48369:131;48495:4;48369:131;:::i;:::-;48361:139;;48088:419;;;:::o;48513:224::-;48653:34;48649:1;48641:6;48637:14;48630:58;48722:7;48717:2;48709:6;48705:15;48698:32;48513:224;:::o;48743:366::-;48885:3;48906:67;48970:2;48965:3;48906:67;:::i;:::-;48899:74;;48982:93;49071:3;48982:93;:::i;:::-;49100:2;49095:3;49091:12;49084:19;;48743:366;;;:::o;49115:419::-;49281:4;49319:2;49308:9;49304:18;49296:26;;49368:9;49362:4;49358:20;49354:1;49343:9;49339:17;49332:47;49396:131;49522:4;49396:131;:::i;:::-;49388:139;;49115:419;;;:::o;49540:222::-;49680:34;49676:1;49668:6;49664:14;49657:58;49749:5;49744:2;49736:6;49732:15;49725:30;49540:222;:::o;49768:366::-;49910:3;49931:67;49995:2;49990:3;49931:67;:::i;:::-;49924:74;;50007:93;50096:3;50007:93;:::i;:::-;50125:2;50120:3;50116:12;50109:19;;49768:366;;;:::o;50140:419::-;50306:4;50344:2;50333:9;50329:18;50321:26;;50393:9;50387:4;50383:20;50379:1;50368:9;50364:17;50357:47;50421:131;50547:4;50421:131;:::i;:::-;50413:139;;50140:419;;;:::o;50565:225::-;50705:34;50701:1;50693:6;50689:14;50682:58;50774:8;50769:2;50761:6;50757:15;50750:33;50565:225;:::o;50796:366::-;50938:3;50959:67;51023:2;51018:3;50959:67;:::i;:::-;50952:74;;51035:93;51124:3;51035:93;:::i;:::-;51153:2;51148:3;51144:12;51137:19;;50796:366;;;:::o;51168:419::-;51334:4;51372:2;51361:9;51357:18;51349:26;;51421:9;51415:4;51411:20;51407:1;51396:9;51392:17;51385:47;51449:131;51575:4;51449:131;:::i;:::-;51441:139;;51168:419;;;:::o;51593:220::-;51733:34;51729:1;51721:6;51717:14;51710:58;51802:3;51797:2;51789:6;51785:15;51778:28;51593:220;:::o;51819:366::-;51961:3;51982:67;52046:2;52041:3;51982:67;:::i;:::-;51975:74;;52058:93;52147:3;52058:93;:::i;:::-;52176:2;52171:3;52167:12;52160:19;;51819:366;;;:::o;52191:419::-;52357:4;52395:2;52384:9;52380:18;52372:26;;52444:9;52438:4;52434:20;52430:1;52419:9;52415:17;52408:47;52472:131;52598:4;52472:131;:::i;:::-;52464:139;;52191:419;;;:::o;52616:221::-;52756:34;52752:1;52744:6;52740:14;52733:58;52825:4;52820:2;52812:6;52808:15;52801:29;52616:221;:::o;52843:366::-;52985:3;53006:67;53070:2;53065:3;53006:67;:::i;:::-;52999:74;;53082:93;53171:3;53082:93;:::i;:::-;53200:2;53195:3;53191:12;53184:19;;52843:366;;;:::o;53215:419::-;53381:4;53419:2;53408:9;53404:18;53396:26;;53468:9;53462:4;53458:20;53454:1;53443:9;53439:17;53432:47;53496:131;53622:4;53496:131;:::i;:::-;53488:139;;53215:419;;;:::o;53640:182::-;53780:34;53776:1;53768:6;53764:14;53757:58;53640:182;:::o;53828:366::-;53970:3;53991:67;54055:2;54050:3;53991:67;:::i;:::-;53984:74;;54067:93;54156:3;54067:93;:::i;:::-;54185:2;54180:3;54176:12;54169:19;;53828:366;;;:::o;54200:419::-;54366:4;54404:2;54393:9;54389:18;54381:26;;54453:9;54447:4;54443:20;54439:1;54428:9;54424:17;54417:47;54481:131;54607:4;54481:131;:::i;:::-;54473:139;;54200:419;;;:::o;54625:181::-;54765:33;54761:1;54753:6;54749:14;54742:57;54625:181;:::o;54812:366::-;54954:3;54975:67;55039:2;55034:3;54975:67;:::i;:::-;54968:74;;55051:93;55140:3;55051:93;:::i;:::-;55169:2;55164:3;55160:12;55153:19;;54812:366;;;:::o;55184:419::-;55350:4;55388:2;55377:9;55373:18;55365:26;;55437:9;55431:4;55427:20;55423:1;55412:9;55408:17;55401:47;55465:131;55591:4;55465:131;:::i;:::-;55457:139;;55184:419;;;:::o
Swarm Source
ipfs://a039238564355fd7c986c96ca6a0600ec56daa8bf8080085b75de7eb0bf411b8
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.