Contract 0xe61dd9cA7364225aFBFB79e15AD33864424e6aE4 6

 

Contract Overview

Balance:
9,009.646587904851349524 Ether

EtherValue:
$14,752,665.61 (@ $1,637.43/ETH)

Token:
 
Txn Hash
Method
Block
From
To
Value
0x8399ed4f9e0591403471d86e234a3327509738f7e38cab847805934fad629b47Withdraw Token165746132023-02-07 4:46:2310 hrs 3 mins ago0x452ff87e3dbe7318fc4e6f342497d4ce0866a60a IN  0xe61dd9ca7364225afbfb79e15ad33864424e6ae40 Ether0.00261598 17.88698373
0xd536580bc2a36375e615e8bd6237afab906e5e3587aadd5ad80387f8d58e35e0Withdraw Token165746132023-02-07 4:46:2310 hrs 3 mins ago0xcf68af209aa9ed7990dc1ff3182cae74e7864061 IN  0xe61dd9ca7364225afbfb79e15ad33864424e6ae40 Ether0.00268991 17.88698373
0x55c29e3e0c94ca5f50cc1e8c02b5c6dc2e879d1c76a422de46aa8417142366d0Deposit Token165604772023-02-05 5:24:472 days 9 hrs ago0x1828f314702da35aa5ebafbd227289c953777beb IN  0xe61dd9ca7364225afbfb79e15ad33864424e6ae40 Ether0.00110314 19.2246505
0xd4176f81557aad9e9251a6f597c72cfa1fac568140fd0e6927b156f6d0a7040fWithdraw Token165593442023-02-05 1:37:352 days 13 hrs ago0xcf68af209aa9ed7990dc1ff3182cae74e7864061 IN  0xe61dd9ca7364225afbfb79e15ad33864424e6ae40 Ether0.00247676 17.18019555
0x75d469d788996f33d63ddad5d173897e059890cd9f227def048b795eb21974c1Withdraw Token165593442023-02-05 1:37:352 days 13 hrs ago0x452ff87e3dbe7318fc4e6f342497d4ce0866a60a IN  0xe61dd9ca7364225afbfb79e15ad33864424e6ae40 Ether0.00262966 17.18019555
0xe075f6fb30d8fc3400d7790760900a243d6c4b4e8b0cf22d1170f0a8ccc8b823Withdraw Native165350622023-02-01 16:09:235 days 22 hrs ago0xcf68af209aa9ed7990dc1ff3182cae74e7864061 IN  0xe61dd9ca7364225afbfb79e15ad33864424e6ae40 Ether0.00415248 31.22850632
0x0d2de968ea0c43b7d44a6acb14ff6008fa5864bc995bb1f52e42e2a80ffe8c22Withdraw Native165350622023-02-01 16:09:235 days 22 hrs ago0x452ff87e3dbe7318fc4e6f342497d4ce0866a60a IN  0xe61dd9ca7364225afbfb79e15ad33864424e6ae40 Ether0.00475656 31.22850632
0xaffd4ce62abe1d08ec74ab0ff7dca4f2180bc67ee759a42b5e0f1b464ab374bfWithdraw Token165247772023-01-31 5:40:237 days 9 hrs ago0xcf68af209aa9ed7990dc1ff3182cae74e7864061 IN  0xe61dd9ca7364225afbfb79e15ad33864424e6ae40 Ether0.00194195 14.88266964
0x394778b9f7264e3f5236111d1579f82f6f0cf4f6dfbdd6e187161ac1e9123c42Withdraw Token165247772023-01-31 5:40:237 days 9 hrs ago0x452ff87e3dbe7318fc4e6f342497d4ce0866a60a IN  0xe61dd9ca7364225afbfb79e15ad33864424e6ae40 Ether0.002278 14.88266964
0xbffb5932108997fced5b650811ae78c70b9acf20b14bbfd498e9562549e7b484Withdraw Token165247122023-01-31 5:27:237 days 9 hrs ago0xcf68af209aa9ed7990dc1ff3182cae74e7864061 IN  0xe61dd9ca7364225afbfb79e15ad33864424e6ae40 Ether0.00205352 14.04606779
0xb5226932fcd9b505b36ab8610f8be9c3b3abef84451037cee929f4797ce1f3c5Withdraw Token165247122023-01-31 5:27:237 days 9 hrs ago0x452ff87e3dbe7318fc4e6f342497d4ce0866a60a IN  0xe61dd9ca7364225afbfb79e15ad33864424e6ae40 Ether0.00214994 14.04606779
0xb43d86e54cc3404171a32d121b5b4a42f341c5fd8550ef10d2d6dc71722ed23bWithdraw Token165247072023-01-31 5:26:237 days 9 hrs ago0x452ff87e3dbe7318fc4e6f342497d4ce0866a60a IN  0xe61dd9ca7364225afbfb79e15ad33864424e6ae40 Ether0.00224091 15.32037654
0x9e9fdb3330b48a3ab50dc7ae805662740ec5e8f169b5c95bb1605d1dadc8c842Withdraw Token165247072023-01-31 5:26:237 days 9 hrs ago0xcf68af209aa9ed7990dc1ff3182cae74e7864061 IN  0xe61dd9ca7364225afbfb79e15ad33864424e6ae40 Ether0.0023043 15.32037654
0xe9b5720f20ec262afd511c184316ca3e1c8ba7564d412d1c7d820447d1c2c4a0Deposit Token165198642023-01-30 13:13:118 days 1 hr ago0xbaebaa4e26e8ccc279627fe6ea12c460f8ce3fb7 IN  0xe61dd9ca7364225afbfb79e15ad33864424e6ae40 Ether0.00091356 14.64390868
0xd88d35233d7fd5fc1c4a7cf888b612b98a6aeefd487bcc56fc06c2d24bfa7f13Withdraw Token165197802023-01-30 12:56:238 days 1 hr ago0xcf68af209aa9ed7990dc1ff3182cae74e7864061 IN  0xe61dd9ca7364225afbfb79e15ad33864424e6ae40 Ether0.00218658 16.19653903
0x6c86ca307ce9233b71a7875136a88b86dd961a5d2b6b6e2bbe4c913ff4cf4d0dWithdraw Token165197802023-01-30 12:56:238 days 1 hr ago0x452ff87e3dbe7318fc4e6f342497d4ce0866a60a IN  0xe61dd9ca7364225afbfb79e15ad33864424e6ae40 Ether0.00247988 16.19653903
0xc309924ba32146407e505865d8dcfe86f93c962dc95159b1bc3c54493ab14650Withdraw Native165173212023-01-30 4:42:238 days 10 hrs ago0x452ff87e3dbe7318fc4e6f342497d4ce0866a60a IN  0xe61dd9ca7364225afbfb79e15ad33864424e6ae40 Ether0.00182298 13.49498084
0xa4438dde4e8f2fc8aa347e2f798d23fc9a6ce4b7340dc1f4f235b6305d43d43eWithdraw Native165173212023-01-30 4:42:238 days 10 hrs ago0xcf68af209aa9ed7990dc1ff3182cae74e7864061 IN  0xe61dd9ca7364225afbfb79e15ad33864424e6ae40 Ether0.0020198 13.49498084
0x39cf2bb78d84e410485fe04ff22432378d29c38f3d687d74010effca9738af44Withdraw Token165142562023-01-29 18:26:478 days 20 hrs ago0x452ff87e3dbe7318fc4e6f342497d4ce0866a60a IN  0xe61dd9ca7364225afbfb79e15ad33864424e6ae40 Ether0.00389671 28.37273343
0x08aaf6da4840eef0f1efb7106ca7c3ac644e1693189125d3181dfbb93684d6f8Withdraw Token165142562023-01-29 18:26:478 days 20 hrs ago0xcf68af209aa9ed7990dc1ff3182cae74e7864061 IN  0xe61dd9ca7364225afbfb79e15ad33864424e6ae40 Ether0.00426986 28.37273343
0xa5c8b56f158e84fa96b65c32f46aedf587a0845a59dab4cc1987ad6886328290Withdraw Token165142102023-01-29 18:17:238 days 20 hrs ago0x452ff87e3dbe7318fc4e6f342497d4ce0866a60a IN  0xe61dd9ca7364225afbfb79e15ad33864424e6ae40 Ether0.00241779 17.58459491
0xf59fb66b4383ff315556de3dc8ee7a270b34dfa275f5f9b8bf5ff0d84987beacWithdraw Token165142102023-01-29 18:17:238 days 20 hrs ago0xcf68af209aa9ed7990dc1ff3182cae74e7864061 IN  0xe61dd9ca7364225afbfb79e15ad33864424e6ae40 Ether0.00264591 17.58459491
0xda03bb1f319efd01092c953906e372eeaca15b2727a93ff3f97c86009d526c25Deposit Token165120142023-01-29 10:55:359 days 3 hrs ago0x275ec7faf175c3d19b6bc92bcf9528cc677dd5ed IN  0xe61dd9ca7364225afbfb79e15ad33864424e6ae40 Ether0.0009144414.65814951
0xc1bc07e7b1cea4c5da3dd0b6a17260cf595c9cd14f6f567a07143d2407bd4b48Withdraw Token164976292023-01-27 10:43:2311 days 4 hrs ago0x452ff87e3dbe7318fc4e6f342497d4ce0866a60a IN  0xe61dd9ca7364225afbfb79e15ad33864424e6ae40 Ether0.00195163 14.71822067
0xb591c1405dec1db7c12bb095435cb8ccc97ed2dc5e843fc6ee177fdc657de7a7Withdraw Token164976292023-01-27 10:43:2311 days 4 hrs ago0xcf68af209aa9ed7990dc1ff3182cae74e7864061 IN  0xe61dd9ca7364225afbfb79e15ad33864424e6ae40 Ether0.00221391 14.71822067
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xe075f6fb30d8fc3400d7790760900a243d6c4b4e8b0cf22d1170f0a8ccc8b823165350622023-02-01 16:09:235 days 22 hrs ago 0xe61dd9ca7364225afbfb79e15ad33864424e6ae40xff18671e472fd1b29e93322ae268ee12024263811.69801171 Ether
0xc309924ba32146407e505865d8dcfe86f93c962dc95159b1bc3c54493ab14650165173212023-01-30 4:42:238 days 10 hrs ago 0xe61dd9ca7364225afbfb79e15ad33864424e6ae40x76745fd0859442692661c0bfd10f4f20a8b5eeb00.01328017 Ether
0x7f0a9f87ffd73da262f715df3413ac9583186e035a369b13b86d3a4c22d2da9e164009192023-01-13 22:40:2324 days 16 hrs ago 0xe61dd9ca7364225afbfb79e15ad33864424e6ae40xc6ae23fa39790578bb764bd5ed7e71a0837d672c2.4174747 Ether
0xccf8f2fa17853693daeb819c2c346eab24a66aabf7a03efc3cb9cad4add6fb9e163468042023-01-06 9:19:2332 days 5 hrs ago 0xe61dd9ca7364225afbfb79e15ad33864424e6ae40x06930f08fd2ca47bbcd18463dc850084d77619d06.3042947 Ether
0x3081e45e6081a4bf4b309f681315710e23cd16ad09bf59398085057a855b1197161925802022-12-15 20:48:2353 days 18 hrs ago 0xe61dd9ca7364225afbfb79e15ad33864424e6ae40xcd9255a1cff153a34563f03539029ab2a3b985d80.06994691 Ether
0x68ca26a374a309835393cf3718c8a3dd7c5236698b5e9c6201e831e823f2d065161718912022-12-12 23:25:2356 days 15 hrs ago 0xe61dd9ca7364225afbfb79e15ad33864424e6ae40xd22343cba50828a4da998394624c3296c2e628d90.0330237 Ether
0x9fa9160a86fbaf956c5ecb3e4c5908144892b98e5a89a9b72de38b70709dfe91160854282022-11-30 21:17:3568 days 17 hrs ago 0xe61dd9ca7364225afbfb79e15ad33864424e6ae40x9a2a2b995cd4e17ef8ccf1991ef523c852c731030.1668299 Ether
0x94538dd4669c40d3b84f10c15c26bfa7532c7fc2fd775012810de09f75aaf0bc160571842022-11-26 22:37:2372 days 16 hrs ago 0xe61dd9ca7364225afbfb79e15ad33864424e6ae4ENS Name rampiro.eth2.03069454 Ether
0x11b81d95910775487d9950c030f662a0a7dfc02be99650fb8faed1712ee577c8160272662022-11-22 18:15:2376 days 20 hrs ago 0xe61dd9ca7364225afbfb79e15ad33864424e6ae4ENS Name 0xphilippo.eth0.109 Ether
0x2541c9248b35ef248058ede3592874e2abeca9d45c81f6515627cc43d240dc44160260092022-11-22 14:01:3577 days 47 mins ago 0xe61dd9ca7364225afbfb79e15ad33864424e6ae40x892d3df10732f69b0d3c3419b10add0d64552b063.11022228 Ether
0x43eb2cb598254fd889194d5244fe282de9257131700b465a217518f364cd2e93160121252022-11-20 15:29:2378 days 23 hrs ago 0xe61dd9ca7364225afbfb79e15ad33864424e6ae40xcc67af901534d2128602232f286dc24e580fceee1.1869893 Ether
0x60869559804c7331f795556d724b11447141cb6dbd7bc9b2083ee9bc7e4a2fc6159959332022-11-18 9:14:3581 days 5 hrs ago 0xe61dd9ca7364225afbfb79e15ad33864424e6ae4ENS Name coucoulae.eth0.01 Ether
0x7872de3515b6915f8f1df5925e01cd79d1bd6e94009cd0354f296c05b45ef692159897872022-11-17 12:37:2382 days 2 hrs ago 0xe61dd9ca7364225afbfb79e15ad33864424e6ae40x52df6ffab6757f39d447c745356760229f6d20eb0.026268 Ether
0x5cd3e8bd574ab4edd8dcce340becba3fbc3d9d17ab4b65f56f33dbbbf33d6fd6159824972022-11-16 12:10:2383 days 2 hrs ago 0xe61dd9ca7364225afbfb79e15ad33864424e6ae40x0000000007c96ad6c9835204303c8fb35e48ffc30.07861398 Ether
0x68d82d42c89b3063942db50450db4fff7993c92128f40735a0c43eef56014f1c159767302022-11-15 16:48:2383 days 22 hrs ago 0xe61dd9ca7364225afbfb79e15ad33864424e6ae40x0fab63687f7434f924930920bb082886746eb9da0.05615181 Ether
0x723d416defedef5ef98399cff6fc97a83d66b87b2dc1ecac7b592e2eb80c7682159743682022-11-15 8:53:2384 days 5 hrs ago 0xe61dd9ca7364225afbfb79e15ad33864424e6ae40xb2c5ae080a236fe89a87fdbd1f9d58ad4b57c6b23.71968592 Ether
0xd49fbc6e2b99e0fff93dc04a89e5440d47f1ba32980e3e1ba41dd127acf86a62159677412022-11-14 10:41:2385 days 4 hrs ago 0xe61dd9ca7364225afbfb79e15ad33864424e6ae40x75c686f95eaf04b33c6263393502a8ccb5511cfb0.32850073 Ether
0xad8727504964bc6fb2a404db7dd50f9a32e5e22b1926c277047f26ebb854898a159600612022-11-13 8:59:2386 days 5 hrs ago 0xe61dd9ca7364225afbfb79e15ad33864424e6ae40xdbcaf785a28c3c85518ebbd5654491fc3a8fbe6e0.0923496 Ether
0xb9e3264df7d60a40e56d29c28285b4790b535c8e2e4ad7dd2e58f04448e0221e159577652022-11-13 1:17:2386 days 13 hrs ago 0xe61dd9ca7364225afbfb79e15ad33864424e6ae40x55b17d2d8ef694b4713ed72b2b45aed4463f23460.0112828 Ether
0x44736b05467044da25dbb1e25ba36e3d2f28fee7ee3b77549ab95644d80fd1c6159506742022-11-12 1:32:3587 days 13 hrs ago 0xe61dd9ca7364225afbfb79e15ad33864424e6ae40xa13b085dc5c87f7c20bb2543c42f6bf74f961feb0.082247 Ether
0xa448184e1c278ee38818bdc4458f8705b0756baf8a9ef4301ce332c55c60d971159290012022-11-09 0:49:4790 days 13 hrs ago 0xe61dd9ca7364225afbfb79e15ad33864424e6ae40x000c5a18b902061ef9f12382d4e0a2709a0112fc0.1498 Ether
0x0d34a1c6e91040dfb1cf85bc2dd3264afc0d099d4abb6d20450ac5ffa5262219158729152022-11-01 4:49:3598 days 9 hrs ago 0xe61dd9ca7364225afbfb79e15ad33864424e6ae40x319e21f08ef877aac10475b2b21ce551e0ce04c80.4 Ether
0x3dcb02f29615c2e22d258a1a34e939f0aae5b6733565a321bf30a4ea0352ac3a158505912022-10-29 1:58:47101 days 12 hrs ago 0xe61dd9ca7364225afbfb79e15ad33864424e6ae40x6ac818a428074c37edaede89a2714d3620bf15840.0690909 Ether
0x3d2d919b49a777060c092b114bfb4c70aa5ceb4a25619c2af27ca5d927db12f4158002512022-10-22 1:06:47108 days 13 hrs ago 0xe61dd9ca7364225afbfb79e15ad33864424e6ae40x1d2733c0f1c984a26a6a9626fa8af0b025dcd1390.0660056 Ether
0x7e5083f112d06964fec6b696e8392210ea1bef7024123bdd9947948256e167c0157659882022-10-17 6:17:23113 days 8 hrs ago 0xe61dd9ca7364225afbfb79e15ad33864424e6ae40x57f1b7d288ef37e75900b64578eae542baf19a060.22058462 Ether
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Bridge

Compiler Version
v0.7.4+commit.3f05b770

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-07-15
*/

// File: @openzeppelin/contracts/utils/Context.sol

// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <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 GSN 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 payable) {
        return msg.sender;
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

// File: @openzeppelin/contracts/utils/Pausable.sol



pragma solidity ^0.7.0;


/**
 * @dev Contract module which allows children to implement an emergency stop
 * mechanism that can be triggered by an authorized account.
 *
 * This module is used through inheritance. It will make available the
 * modifiers `whenNotPaused` and `whenPaused`, which can be applied to
 * the functions of your contract. Note that they will not be pausable by
 * simply including this module, only once the modifiers are put in place.
 */
abstract contract Pausable is Context {
    /**
     * @dev Emitted when the pause is triggered by `account`.
     */
    event Paused(address account);

    /**
     * @dev Emitted when the pause is lifted by `account`.
     */
    event Unpaused(address account);

    bool private _paused;

    /**
     * @dev Initializes the contract in unpaused state.
     */
    constructor () {
        _paused = false;
    }

    /**
     * @dev Returns true if the contract is paused, and false otherwise.
     */
    function paused() public view virtual returns (bool) {
        return _paused;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    modifier whenNotPaused() {
        require(!paused(), "Pausable: paused");
        _;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is paused.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    modifier whenPaused() {
        require(paused(), "Pausable: not paused");
        _;
    }

    /**
     * @dev Triggers stopped state.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    function _pause() internal virtual whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    /**
     * @dev Returns to normal state.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    function _unpause() internal virtual whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}

// File: contracts/Container.sol


pragma solidity ^0.7.0;

contract Container {
    struct Item {
        uint256 itemType;
        uint256 status;
        address[] addresses;
    }

    uint256 MaxItemAddressNum = 255;
    mapping(bytes32 => Item) private container;

    function itemAddressExists(bytes32 _id, address _oneAddress) internal view returns (bool) {
        for (uint256 i = 0; i < container[_id].addresses.length; i++) {
            if (container[_id].addresses[i] == _oneAddress)
                return true;
        }
        return false;
    }

    function getItemAddresses(bytes32 _id) internal view returns (address[] memory) {
        return container[_id].addresses;
    }

    function getItemInfo(bytes32 _id) internal view returns (uint256, uint256, uint256) {
        return (container[_id].itemType, container[_id].status, container[_id].addresses.length);
    }

    function getItemAddressCount(bytes32 _id) internal view returns (uint256) {
        return container[_id].addresses.length;
    }

    function setItemInfo(bytes32 _id, uint256 _itemType, uint256 _status) internal {
        container[_id].itemType = _itemType;
        container[_id].status = _status;
    }

    function addItemAddress(bytes32 _id, address _oneAddress) internal {
        require(!itemAddressExists(_id, _oneAddress), "Container:dup address added");
        require(container[_id].addresses.length < MaxItemAddressNum, "Container:too many addresses");
        container[_id].addresses.push(_oneAddress);
    }

    function removeItemAddresses(bytes32 _id) internal {
        delete container[_id].addresses;
    }

    function removeOneItemAddress(bytes32 _id, address _oneAddress) internal {
        for (uint256 i = 0; i < container[_id].addresses.length; i++) {
            if (container[_id].addresses[i] == _oneAddress) {
                container[_id].addresses[i] = container[_id].addresses[container[_id].addresses.length - 1];
                container[_id].addresses.pop();
                return;
            }
        }
    }

    function removeItem(bytes32 _id) internal {
        delete container[_id];
    }

    function replaceItemAddress(bytes32 _id, address _oneAddress, address _anotherAddress) internal {
        for (uint256 i = 0; i < container[_id].addresses.length; i++) {
            if (container[_id].addresses[i] == _oneAddress) {
                container[_id].addresses[i] = _anotherAddress;
                return;
            }
        }
    }

}

// File: contracts/BridgeAdmin.sol


pragma solidity ^0.7.0;


contract BridgeAdmin is Container {
    bytes32 internal constant OWNERHASH = 0x02016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c0;
    bytes32 internal constant OPERATORHASH = 0x46a52cf33029de9f84853745a87af28464c80bf0346df1b32e205fc73319f622;
    bytes32 internal constant PAUSERHASH = 0x0cc58340b26c619cd4edc70f833d3f4d9d26f3ae7d5ef2965f81fe5495049a4f;
    bytes32 internal constant STOREHASH = 0xe41d88711b08bdcd7556c5d2d24e0da6fa1f614cf2055f4d7e10206017cd1680;
    bytes32 internal constant LOGICHASH = 0x397bc5b97f629151e68146caedba62f10b47e426b38db589771a288c0861f182;
    uint256 internal constant MAXUSERNUM = 255;
    bytes32[] private classHashArray;

    uint256 internal ownerRequireNum;
    uint256 internal operatorRequireNum;

    event AdminChanged(string TaskType, string class, address oldAddress, address newAddress);
    event AdminRequiredNumChanged(string TaskType, string class, uint256 previousNum, uint256 requiredNum);
    event AdminTaskDropped(bytes32 taskHash);

    modifier validRequirement(uint ownerCount, uint _required) {
        require(ownerCount <= MaxItemAddressNum && _required <= ownerCount && _required > 0 && ownerCount > 0);
        _;
    }

    modifier onlyOwner() {
        require(itemAddressExists(OWNERHASH, msg.sender), "BridgeAdmin:only use owner to call");
        _;
    }

    function initAdmin(address[] memory _owners, uint _ownerRequired) internal validRequirement(_owners.length, _ownerRequired) {
        for (uint i = 0; i < _owners.length; i++) {
            addItemAddress(OWNERHASH, _owners[i]);
        }
        addItemAddress(PAUSERHASH, _owners[0]);
        // we need an init pauser
        addItemAddress(LOGICHASH, address(0x0));
        addItemAddress(STOREHASH, address(0x1));

        classHashArray.push(OWNERHASH);
        classHashArray.push(OPERATORHASH);
        classHashArray.push(PAUSERHASH);
        classHashArray.push(STOREHASH);
        classHashArray.push(LOGICHASH);
        ownerRequireNum = _ownerRequired;
        operatorRequireNum = 2;
    }

    function classHashExist(bytes32 aHash) private view returns (bool) {
        for (uint256 i = 0; i < classHashArray.length; i++)
            if (classHashArray[i] == aHash) return true;
        return false;
    }

    function getAdminAddresses(string memory class) public view returns (address[] memory) {
        bytes32 classHash = getClassHash(class);
        return getItemAddresses(classHash);
    }

    function getOwnerRequireNum() public view returns (uint256) {
        return ownerRequireNum;
    }

    function getOperatorRequireNum() public view returns (uint256) {
        return operatorRequireNum;
    }

    function resetRequiredNum(string memory class, uint256 requiredNum) public onlyOwner returns (bool) {
        bytes32 classHash = getClassHash(class);
        require((classHash == OPERATORHASH) || (classHash == OWNERHASH), "BridgeAdmin:wrong class");

        bytes32 taskHash = keccak256(abi.encodePacked("resetRequiredNum", class, requiredNum));
        addItemAddress(taskHash, msg.sender);

        if (getItemAddressCount(taskHash) >= ownerRequireNum) {
            removeItem(taskHash);
            uint256 previousNum = 0;
            if (classHash == OWNERHASH) {
                require(getItemAddressCount(classHash) >= requiredNum, "BridgeAdmin:insufficiency addresses");
                previousNum = ownerRequireNum;
                ownerRequireNum = requiredNum;
            }
            else if (classHash == OPERATORHASH) {
                previousNum = operatorRequireNum;
                operatorRequireNum = requiredNum;
            } else {
                revert("BridgeAdmin:wrong class");
            }
            emit AdminRequiredNumChanged("resetRequiredNum", class, previousNum, requiredNum);
        }
        return true;
    }

    function modifyAddress(string memory class, address oldAddress, address newAddress) internal onlyOwner returns (bool) {
        bytes32 classHash = getClassHash(class);
        bytes32 taskHash = keccak256(abi.encodePacked("modifyAddress", class, oldAddress, newAddress));
        addItemAddress(taskHash, msg.sender);
        if (getItemAddressCount(taskHash) >= ownerRequireNum) {
            replaceItemAddress(classHash, oldAddress, newAddress);
            emit AdminChanged("modifyAddress", class, oldAddress, newAddress);
            removeItem(taskHash);
            return true;
        }
        return false;
    }

    function getClassHash(string memory class) private view returns (bytes32) {
        bytes32 classHash = keccak256(abi.encodePacked(class));
        require(classHashExist(classHash), "BridgeAdmin:invalid class");
        return classHash;
    }

    function dropAddress(string memory class, address oneAddress) public onlyOwner returns (bool) {
        bytes32 classHash = getClassHash(class);
        require(classHash != STOREHASH && classHash != LOGICHASH, "BridgeAdmin:wrong class");
        require(itemAddressExists(classHash, oneAddress), "BridgeAdmin:no such address exists");

        if (classHash == OWNERHASH)
            require(getItemAddressCount(classHash) > ownerRequireNum, "BridgeAdmin:insufficiency addresses");

        bytes32 taskHash = keccak256(abi.encodePacked("dropAddress", class, oneAddress));
        addItemAddress(taskHash, msg.sender);
        if (getItemAddressCount(taskHash) >= ownerRequireNum) {
            removeOneItemAddress(classHash, oneAddress);
            emit AdminChanged("dropAddress", class, oneAddress, oneAddress);
            removeItem(taskHash);
            return true;
        }
        return false;
    }

    function addAddress(string memory class, address oneAddress) public onlyOwner returns (bool) {
        bytes32 classHash = getClassHash(class);
        require(classHash != STOREHASH && classHash != LOGICHASH, "BridgeAdmin:wrong class");

        bytes32 taskHash = keccak256(abi.encodePacked("addAddress", class, oneAddress));
        addItemAddress(taskHash, msg.sender);
        if (getItemAddressCount(taskHash) >= ownerRequireNum) {
            addItemAddress(classHash, oneAddress);
            emit AdminChanged("addAddress", class, oneAddress, oneAddress);
            removeItem(taskHash);
            return true;
        }
        return false;
    }

    function dropTask(bytes32 taskHash) public onlyOwner returns (bool) {
        removeItem(taskHash);
        emit AdminTaskDropped(taskHash);
        return true;
    }

}

// File: @openzeppelin/contracts/math/SafeMath.sol



pragma solidity ^0.7.0;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        uint256 c = a + b;
        if (c < a) return (false, 0);
        return (true, c);
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b > a) return (false, 0);
        return (true, a - b);
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) return (true, 0);
        uint256 c = a * b;
        if (c / a != b) return (false, 0);
        return (true, c);
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a / b);
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a % b);
    }

    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath: subtraction overflow");
        return a - b;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) return 0;
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "SafeMath: division by zero");
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, "SafeMath: modulo by zero");
        return a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        return a - b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryDiv}.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a % b;
    }
}

// File: contracts/BridgeStorage.sol


pragma solidity ^0.7.0;


contract BridgeStorage is Container {
    string public constant name = "BridgeStorage";

    address private caller;

    constructor(address aCaller) {
        caller = aCaller;
    }

    modifier onlyCaller() {
        require(msg.sender == caller, "BridgeStorage:only use main contract to call");
        _;
    }

    function supporterExists(bytes32 taskHash, address user) public view returns (bool) {
        return itemAddressExists(taskHash, user);
    }

    function setTaskInfo(bytes32 taskHash, uint256 taskType, uint256 status) external onlyCaller {
        setItemInfo(taskHash, taskType, status);
    }

    function getTaskInfo(bytes32 taskHash) public view returns (uint256, uint256, uint256) {
        return getItemInfo(taskHash);
    }

    function addSupporter(bytes32 taskHash, address oneAddress) external onlyCaller {
        addItemAddress(taskHash, oneAddress);
    }

    function removeAllSupporter(bytes32 taskHash) external onlyCaller {
        removeItemAddresses(taskHash);
    }

    function removeTask(bytes32 taskHash) external onlyCaller {
        removeItem(taskHash);
    }

}

// File: contracts/BridgeLogic.sol


pragma solidity ^0.7.0;



contract BridgeLogic {
    using SafeMath for uint256;

    string public constant name = "BridgeLogic";

    bytes32 internal constant OPERATORHASH = 0x46a52cf33029de9f84853745a87af28464c80bf0346df1b32e205fc73319f622;
    uint256 public constant TASKINIT = 0;
    uint256 public constant TASKPROCESSING = 1;
    uint256 public constant TASKCANCELLED = 2;
    uint256 public constant TASKDONE = 3;
    uint256 public constant WITHDRAWTASK = 1;

    address private caller;
    BridgeStorage private store;

    constructor(address aCaller) {
        caller = aCaller;
    }

    modifier onlyCaller() {
        require(msg.sender == caller, "BridgeLogic:only use main contract to call");
        _;
    }

    modifier operatorExists(address operator) {
        require(store.supporterExists(OPERATORHASH, operator), "BridgeLogic:wrong operator");
        _;
    }

    function resetStoreLogic(address storeAddress) external onlyCaller {
        store = BridgeStorage(storeAddress);
    }

    function getStoreAddress() public view returns (address) {
        return address(store);
    }

    function supportTask(uint256 taskType, bytes32 taskHash, address oneAddress, uint256 requireNum) external onlyCaller returns (uint256) {
        require(!store.supporterExists(taskHash, oneAddress), "BridgeLogic:supporter already exists");
        (uint256 theTaskType,uint256 theTaskStatus,uint256 theSupporterNum) = store.getTaskInfo(taskHash);
        require(theTaskStatus < TASKDONE, "BridgeLogic:wrong status");

        if (theTaskStatus != TASKINIT)
            require(theTaskType == taskType, "BridgeLogic:task type not match");
        store.addSupporter(taskHash, oneAddress);
        theSupporterNum++;
        if (theSupporterNum >= requireNum)
            theTaskStatus = TASKDONE;
        else
            theTaskStatus = TASKPROCESSING;
        store.setTaskInfo(taskHash, taskType, theTaskStatus);
        return theTaskStatus;
    }

    function cancelTask(bytes32 taskHash) external onlyCaller returns (uint256) {
        (uint256 theTaskType,uint256 theTaskStatus,uint256 theSupporterNum) = store.getTaskInfo(taskHash);
        require(theTaskStatus == TASKPROCESSING, "BridgeLogic:wrong status");
        if (theSupporterNum > 0) store.removeAllSupporter(taskHash);
        theTaskStatus = TASKCANCELLED;
        store.setTaskInfo(taskHash, theTaskType, theTaskStatus);
        return theTaskStatus;
    }

    function removeTask(bytes32 taskHash) external onlyCaller {
        store.removeTask(taskHash);
    }

}

// File: contracts/Bridge.sol


pragma solidity ^0.7.0;




contract Bridge is BridgeAdmin, Pausable {
    using SafeMath for uint256;

    string public constant name = "Bridge";

    BridgeLogic private logic;
    uint256 public swapFee;
    address public feeTo;

    struct assetSelector {
        string selector;
        bool isValueFirst;
    }

    mapping(address => assetSelector)  public depositSelector;
    mapping(address => assetSelector) public withdrawSelector;
    mapping(bytes32 => bool) public filledTx;

    event FeeToTransferred(address indexed previousFeeTo, address indexed newFeeTo);
    event SwapFeeChanged(uint256 indexed previousSwapFee, uint256 indexed newSwapFee);
    event DepositNative(address indexed from, uint256 value, string targetAddress, string chain, uint256 feeValue);
    event DepositToken(address indexed from, uint256 value, address indexed token, string targetAddress, string chain, uint256 feeValue);
    event WithdrawingNative(address indexed to, uint256 value, string proof);
    event WithdrawingToken(address indexed to, address indexed token, uint256 value, string proof);
    event WithdrawDoneNative(address indexed to, uint256 value, string proof);
    event WithdrawDoneToken(address indexed to, address indexed token, uint256 value, string proof);

    modifier onlyOperator() {
        require(itemAddressExists(OPERATORHASH, msg.sender), "Bridge:wrong operator");
        _;
    }

    modifier onlyPauser() {
        require(itemAddressExists(PAUSERHASH, msg.sender), "Bridge:wrong pauser");
        _;
    }

    modifier positiveValue(uint _value) {
        require(_value > 0, "Bridge:value need > 0");
        _;
    }

    constructor(address[] memory _owners, uint _ownerRequired) {
        initAdmin(_owners, _ownerRequired);
    }

    function depositNative(string memory _targetAddress, string memory chain) public payable {
        require(msg.value >= swapFee, "Bridge:insufficient swap fee");
        if (swapFee != 0) {
            payable(feeTo).transfer(swapFee);
        }
        emit DepositNative(msg.sender, msg.value - swapFee, _targetAddress, chain, swapFee);
    }

    function depositToken(address _token, uint value, string memory _targetAddress, string memory chain) public payable returns (bool) {
        require(msg.value == swapFee, "Bridge:swap fee not equal");
        if (swapFee != 0) {
            payable(feeTo).transfer(swapFee);
        }

        bool res = depositTokenLogic(_token, msg.sender, value);
        emit DepositToken(msg.sender, value, _token, _targetAddress, chain, swapFee);
        return res;
    }

    function withdrawNative(address payable to, uint value, string memory proof, bytes32 taskHash) public
    onlyOperator
    whenNotPaused
    positiveValue(value)
    returns (bool)
    {
        require(address(this).balance >= value, "Bridge:not enough native token");
        require(taskHash == keccak256((abi.encodePacked(to, value, proof))), "Bridge:taskHash is wrong");
        require(!filledTx[taskHash], "Bridge:tx filled already");
        uint256 status = logic.supportTask(logic.WITHDRAWTASK(), taskHash, msg.sender, operatorRequireNum);

        if (status == logic.TASKPROCESSING()) {
            emit WithdrawingNative(to, value, proof);
        } else if (status == logic.TASKDONE()) {
            emit WithdrawingNative(to, value, proof);
            emit WithdrawDoneNative(to, value, proof);
            to.transfer(value);
            filledTx[taskHash] = true;
            logic.removeTask(taskHash);
        }
        return true;
    }

    function withdrawToken(address _token, address to, uint value, string memory proof, bytes32 taskHash) public
    onlyOperator
    whenNotPaused
    positiveValue(value)
    returns (bool)
    {
        require(taskHash == keccak256((abi.encodePacked(to, value, proof))), "Bridge:taskHash is wrong");
        require(!filledTx[taskHash], "Bridge:tx filled already");
        uint256 status = logic.supportTask(logic.WITHDRAWTASK(), taskHash, msg.sender, operatorRequireNum);

        if (status == logic.TASKPROCESSING()) {
            emit WithdrawingToken(to, _token, value, proof);
        } else if (status == logic.TASKDONE()) {
            bool res = withdrawTokenLogic(_token, to, value);

            emit WithdrawingToken(to, _token, value, proof);
            emit WithdrawDoneToken(to, _token, value, proof);
            filledTx[taskHash] = true;
            logic.removeTask(taskHash);
            return res;
        }
        return true;
    }

    function modifyAdminAddress(string memory class, address oldAddress, address newAddress) public whenPaused {
        require(newAddress != address(0x0), "Bridge:wrong address");
        bool flag = modifyAddress(class, oldAddress, newAddress);
        if (flag) {
            bytes32 classHash = keccak256(abi.encodePacked(class));
            if (classHash == LOGICHASH) {
                logic = BridgeLogic(newAddress);
            } else if (classHash == STOREHASH) {
                logic.resetStoreLogic(newAddress);
            }
        }
    }

    function getLogicAddress() public view returns (address) {
        return address(logic);
    }

    function getStoreAddress() public view returns (address) {
        return logic.getStoreAddress();
    }

    function pause() public onlyPauser {
        _pause();
    }

    function unpause() public onlyPauser {
        _unpause();
    }

    function setDepositSelector(address token, string memory method, bool _isValueFirst) onlyOperator external {
        depositSelector[token] = assetSelector(method, _isValueFirst);
    }

    function setWithdrawSelector(address token, string memory method, bool _isValueFirst) onlyOperator external {
        withdrawSelector[token] = assetSelector(method, _isValueFirst);
    }

    function setSwapFee(uint256 _swapFee) onlyOwner external {
        emit SwapFeeChanged(swapFee, _swapFee);
        swapFee = _swapFee;
    }

    function setFeeTo(address _feeTo) onlyOwner external {
        emit FeeToTransferred(feeTo, _feeTo);
        feeTo = _feeTo;
    }

    function depositTokenLogic(address token, address _from, uint256 _value) internal returns (bool) {
        bool status = false;
        bytes memory returnedData;
        if (bytes(depositSelector[token].selector).length == 0) {
            (status, returnedData) = token.call(abi.encodeWithSignature("transferFrom(address,address,uint256)", _from, this, _value));
        }
        else {
            assetSelector memory aselector = depositSelector[token];
            if (aselector.isValueFirst) {
                (status, returnedData) = token.call(abi.encodeWithSignature(aselector.selector, _value, _from));
            }
            else {
                (status, returnedData) = token.call(abi.encodeWithSignature(aselector.selector, _from, _value));
            }
        }
        require(status && (returnedData.length == 0 || abi.decode(returnedData, (bool))), 'Bridge:deposit failed');
        return true;
    }

    function withdrawTokenLogic(address token, address _to, uint256 _value) internal returns (bool) {
        bool status = false;
        bytes memory returnedData;
        if (bytes(withdrawSelector[token].selector).length == 0) {
            (status, returnedData) = token.call(abi.encodeWithSignature("transfer(address,uint256)", _to, _value));
        }
        else {
            assetSelector memory aselector = withdrawSelector[token];
            if (aselector.isValueFirst) {
                (status, returnedData) = token.call(abi.encodeWithSignature(aselector.selector, _value, _to));
            }
            else {
                (status, returnedData) = token.call(abi.encodeWithSignature(aselector.selector, _to, _value));
            }
        }

        require(status && (returnedData.length == 0 || abi.decode(returnedData, (bool))), 'Bridge:withdraw failed');
        return true;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address[]","name":"_owners","type":"address[]"},{"internalType":"uint256","name":"_ownerRequired","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"TaskType","type":"string"},{"indexed":false,"internalType":"string","name":"class","type":"string"},{"indexed":false,"internalType":"address","name":"oldAddress","type":"address"},{"indexed":false,"internalType":"address","name":"newAddress","type":"address"}],"name":"AdminChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"string","name":"TaskType","type":"string"},{"indexed":false,"internalType":"string","name":"class","type":"string"},{"indexed":false,"internalType":"uint256","name":"previousNum","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"requiredNum","type":"uint256"}],"name":"AdminRequiredNumChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bytes32","name":"taskHash","type":"bytes32"}],"name":"AdminTaskDropped","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"targetAddress","type":"string"},{"indexed":false,"internalType":"string","name":"chain","type":"string"},{"indexed":false,"internalType":"uint256","name":"feeValue","type":"uint256"}],"name":"DepositNative","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"string","name":"targetAddress","type":"string"},{"indexed":false,"internalType":"string","name":"chain","type":"string"},{"indexed":false,"internalType":"uint256","name":"feeValue","type":"uint256"}],"name":"DepositToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousFeeTo","type":"address"},{"indexed":true,"internalType":"address","name":"newFeeTo","type":"address"}],"name":"FeeToTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"previousSwapFee","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"newSwapFee","type":"uint256"}],"name":"SwapFeeChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"proof","type":"string"}],"name":"WithdrawDoneNative","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"proof","type":"string"}],"name":"WithdrawDoneToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"proof","type":"string"}],"name":"WithdrawingNative","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"},{"indexed":false,"internalType":"string","name":"proof","type":"string"}],"name":"WithdrawingToken","type":"event"},{"inputs":[{"internalType":"string","name":"class","type":"string"},{"internalType":"address","name":"oneAddress","type":"address"}],"name":"addAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_targetAddress","type":"string"},{"internalType":"string","name":"chain","type":"string"}],"name":"depositNative","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"depositSelector","outputs":[{"internalType":"string","name":"selector","type":"string"},{"internalType":"bool","name":"isValueFirst","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"_targetAddress","type":"string"},{"internalType":"string","name":"chain","type":"string"}],"name":"depositToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"string","name":"class","type":"string"},{"internalType":"address","name":"oneAddress","type":"address"}],"name":"dropAddress","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes32","name":"taskHash","type":"bytes32"}],"name":"dropTask","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeTo","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"filledTx","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"class","type":"string"}],"name":"getAdminAddresses","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getLogicAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOperatorRequireNum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwnerRequireNum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStoreAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"class","type":"string"},{"internalType":"address","name":"oldAddress","type":"address"},{"internalType":"address","name":"newAddress","type":"address"}],"name":"modifyAdminAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"string","name":"class","type":"string"},{"internalType":"uint256","name":"requiredNum","type":"uint256"}],"name":"resetRequiredNum","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"string","name":"method","type":"string"},{"internalType":"bool","name":"_isValueFirst","type":"bool"}],"name":"setDepositSelector","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_feeTo","type":"address"}],"name":"setFeeTo","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_swapFee","type":"uint256"}],"name":"setSwapFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"string","name":"method","type":"string"},{"internalType":"bool","name":"_isValueFirst","type":"bool"}],"name":"setWithdrawSelector","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"proof","type":"string"},{"internalType":"bytes32","name":"taskHash","type":"bytes32"}],"name":"withdrawNative","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"withdrawSelector","outputs":[{"internalType":"string","name":"selector","type":"string"},{"internalType":"bool","name":"isValueFirst","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"string","name":"proof","type":"string"},{"internalType":"bytes32","name":"taskHash","type":"bytes32"}],"name":"withdrawToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"}]

608060405260ff6000553480156200001657600080fd5b5060405162004aff38038062004aff833981810160405260408110156200003c57600080fd5b81019080805160405193929190846401000000008211156200005d57600080fd5b9083019060208201858111156200007357600080fd5b82518660208202830111640100000000821117156200009157600080fd5b82525081516020918201928201910280838360005b83811015620000c0578181015183820152602001620000a6565b505050509190910160405250602001516005805460ff191690559150620000ea90508282620000f2565b505062000433565b8151816000548211158015620001085750818111155b8015620001155750600081115b8015620001225750600082115b6200012c57600080fd5b60005b84518110156200017a576200017160008051602062004abf83398151915260001b8683815181106200015d57fe5b6020026020010151620002a760201b60201c565b6001016200012f565b50620001a060008051602062004a7f83398151915260001b856000815181106200015d57fe5b620001bc60008051602062004a9f8339815191526000620002a7565b620001d860008051602062004adf8339815191526001620002a7565b50506002805460018181018355600083905260008051602062004abf8339815191527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace92830155825480820184557f46a52cf33029de9f84853745a87af28464c80bf0346df1b32e205fc73319f622908301558254808201845560008051602062004a7f833981519152908301558254808201845560008051602062004adf833981519152908301558254908101835560008051602062004a9f83398151915291015560039190915560045550565b620002b38282620003af565b1562000306576040805162461bcd60e51b815260206004820152601b60248201527f436f6e7461696e65723a64757020616464726573732061646465640000000000604482015290519081900360640190fd5b600080548382526001602052604090912060020154106200036e576040805162461bcd60e51b815260206004820152601c60248201527f436f6e7461696e65723a746f6f206d616e792061646472657373657300000000604482015290519081900360640190fd5b6000918252600160208181526040842060020180549283018155845290922090910180546001600160a01b0319166001600160a01b03909216919091179055565b6000805b6000848152600160205260409020600201548110156200042757600084815260016020526040902060020180546001600160a01b038516919083908110620003f757fe5b6000918252602090912001546001600160a01b031614156200041e5760019150506200042d565b600101620003b3565b50600090505b92915050565b61463c80620004436000396000f3fe60806040526004361061019b5760003560e01c80638609d28c116100ec578063ceb35b0f1161008a578063e6a81ec411610064578063e6a81ec414610d10578063e9e211bd14610d25578063f46901ed14610dd8578063f60c757f14610e0b5761019b565b8063ceb35b0f14610a4e578063d5b99d3c14610b0a578063dd9b86c114610bd25761019b565b8063b07ed3a9116100c6578063b07ed3a9146107c1578063c8e369bf146107d6578063c8fd90f9146108d7578063cb08e3ca1461099a5761019b565b80638609d28c146105c757806391c40bf7146106f0578063abd108ba146107ac5761019b565b806334e199071161015957806354cf2aeb1161013357806354cf2aeb1461055e5780635c975abb1461057357806364908649146105885780638456cb59146105b25761019b565b806334e19907146104f55780633f4ba83a1461051f578063521cb590146105345761019b565b8062674f63146101a0578063017e7e581461026557806302c1927c1461029657806306fdde031461037d5780631d75807c146104075780632c2df7421461042e575b600080fd5b3480156101ac57600080fd5b50610263600480360360608110156101c357600080fd5b6001600160a01b038235169190810190604081016020820135600160201b8111156101ed57600080fd5b8201836020820111156101ff57600080fd5b803590602001918460018302840111600160201b8311171561022057600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050503515159050610e3e565b005b34801561027157600080fd5b5061027a610f04565b604080516001600160a01b039092168252519081900360200190f35b3480156102a257600080fd5b50610369600480360360a08110156102b957600080fd5b6001600160a01b03823581169260208101359091169160408201359190810190608081016060820135600160201b8111156102f357600080fd5b82018360208201111561030557600080fd5b803590602001918460018302840111600160201b8311171561032657600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250610f13915050565b604080519115158252519081900360200190f35b34801561038957600080fd5b50610392611612565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103cc5781810151838201526020016103b4565b50505050905090810190601f1680156103f95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561041357600080fd5b5061041c611634565b60408051918252519081900360200190f35b34801561043a57600080fd5b506102636004803603606081101561045157600080fd5b810190602081018135600160201b81111561046b57600080fd5b82018360208201111561047d57600080fd5b803590602001918460018302840111600160201b8311171561049e57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550506001600160a01b03833581169450602090930135909216915061163a9050565b34801561050157600080fd5b506102636004803603602081101561051857600080fd5b5035611860565b34801561052b57600080fd5b506102636118e7565b34801561054057600080fd5b506103696004803603602081101561055757600080fd5b5035611962565b34801561056a57600080fd5b5061041c6119fc565b34801561057f57600080fd5b50610369611a02565b34801561059457600080fd5b50610369600480360360208110156105ab57600080fd5b5035611a0b565b3480156105be57600080fd5b50610263611a20565b610263600480360360408110156105dd57600080fd5b810190602081018135600160201b8111156105f757600080fd5b82018360208201111561060957600080fd5b803590602001918460018302840111600160201b8311171561062a57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b81111561067c57600080fd5b82018360208201111561068e57600080fd5b803590602001918460018302840111600160201b831117156106af57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550611a99945050505050565b3480156106fc57600080fd5b506103696004803603604081101561071357600080fd5b810190602081018135600160201b81111561072d57600080fd5b82018360208201111561073f57600080fd5b803590602001918460018302840111600160201b8311171561076057600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550505090356001600160a01b03169150611c5a9050565b3480156107b857600080fd5b5061027a611fbe565b3480156107cd57600080fd5b5061027a611fd2565b3480156107e257600080fd5b50610887600480360360208110156107f957600080fd5b810190602081018135600160201b81111561081357600080fd5b82018360208201111561082557600080fd5b803590602001918460018302840111600160201b8311171561084657600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612053945050505050565b60408051602080825283518183015283519192839290830191858101910280838360005b838110156108c35781810151838201526020016108ab565b505050509050019250505060405180910390f35b3480156108e357600080fd5b50610263600480360360608110156108fa57600080fd5b6001600160a01b038235169190810190604081016020820135600160201b81111561092457600080fd5b82018360208201111561093657600080fd5b803590602001918460018302840111600160201b8311171561095757600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505050503515159050612072565b3480156109a657600080fd5b506109cd600480360360208110156109bd57600080fd5b50356001600160a01b0316612117565b60405180806020018315158152602001828103825284818151815260200191508051906020019080838360005b83811015610a125781810151838201526020016109fa565b50505050905090810190601f168015610a3f5780820380516001836020036101000a031916815260200191505b50935050505060405180910390f35b348015610a5a57600080fd5b5061036960048036036040811015610a7157600080fd5b810190602081018135600160201b811115610a8b57600080fd5b820183602082011115610a9d57600080fd5b803590602001918460018302840111600160201b83111715610abe57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550505090356001600160a01b031691506121c19050565b348015610b1657600080fd5b5061036960048036036080811015610b2d57600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b811115610b5c57600080fd5b820183602082011115610b6e57600080fd5b803590602001918460018302840111600160201b83111715610b8f57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250612421915050565b61036960048036036080811015610be857600080fd5b6001600160a01b0382351691602081013591810190606081016040820135600160201b811115610c1757600080fd5b820183602082011115610c2957600080fd5b803590602001918460018302840111600160201b83111715610c4a57600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295949360208101935035915050600160201b811115610c9c57600080fd5b820183602082011115610cae57600080fd5b803590602001918460018302840111600160201b83111715610ccf57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600092019190915250929550612b73945050505050565b348015610d1c57600080fd5b5061041c612d4f565b348015610d3157600080fd5b5061036960048036036040811015610d4857600080fd5b810190602081018135600160201b811115610d6257600080fd5b820183602082011115610d7457600080fd5b803590602001918460018302840111600160201b83111715610d9557600080fd5b91908080601f0160208091040260200160405190810160405280939291908181526020018383808284376000920191909152509295505091359250612d55915050565b348015610de457600080fd5b5061026360048036036020811015610dfb57600080fd5b50356001600160a01b0316613096565b348015610e1757600080fd5b506109cd60048036036020811015610e2e57600080fd5b50356001600160a01b0316613145565b610e56600080516020614583833981519152336131b1565b610e9f576040805162461bcd60e51b8152602060048201526015602482015274213934b233b29d3bb937b7339037b832b930ba37b960591b604482015290519081900360640190fd5b6040805180820182528381528215156020808301919091526001600160a01b038616600090815260088252929092208151805192939192610ee39284920190614485565b50602091909101516001909101805460ff1916911515919091179055505050565b6007546001600160a01b031681565b6000610f2d600080516020614583833981519152336131b1565b610f76576040805162461bcd60e51b8152602060048201526015602482015274213934b233b29d3bb937b7339037b832b930ba37b960591b604482015290519081900360640190fd5b610f7e611a02565b15610fc3576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b8360008111611011576040805162461bcd60e51b815260206004820152601560248201527404272696467653a76616c7565206e656564203e203605c1b604482015290519081900360640190fd5b85858560405160200180846001600160a01b031660601b815260140183815260200182805190602001908083835b6020831061105e5780518252601f19909201916020918201910161103f565b6001836020036101000a03801982511681845116808217855250505050505090500193505050506040516020818303038152906040528051906020012083146110e9576040805162461bcd60e51b81526020600482015260186024820152774272696467653a7461736b486173682069732077726f6e6760401b604482015290519081900360640190fd5b6000838152600a602052604090205460ff1615611148576040805162461bcd60e51b81526020600482015260186024820152774272696467653a74782066696c6c656420616c726561647960401b604482015290519081900360640190fd5b600554604080516323c29c0160e11b8152905160009261010090046001600160a01b03169163ae0fd47f9183916347853802916004808301926020929190829003018186803b15801561119a57600080fd5b505afa1580156111ae573d6000803e3d6000fd5b505050506040513d60208110156111c457600080fd5b505160048054604080516001600160e01b031960e087901b16815292830193909352602482018990523360448301526064820152905160848083019260209291908290030181600087803b15801561121b57600080fd5b505af115801561122f573d6000803e3d6000fd5b505050506040513d602081101561124557600080fd5b5051600554604080516357ea327960e11b815290519293506101009091046001600160a01b03169163afd464f291600480820192602092909190829003018186803b15801561129357600080fd5b505afa1580156112a7573d6000803e3d6000fd5b505050506040513d60208110156112bd57600080fd5b505181141561138057876001600160a01b0316876001600160a01b03167f91b4005f248ece53c5402f0c547c6a472d18676fbb0e2e15029d4869140cbe2088886040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611340578181015183820152602001611328565b50505050905090810190601f16801561136d5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a3611602565b600560019054906101000a90046001600160a01b03166001600160a01b03166310224a986040518163ffffffff1660e01b815260040160206040518083038186803b1580156113ce57600080fd5b505afa1580156113e2573d6000803e3d6000fd5b505050506040513d60208110156113f857600080fd5b505181141561160257600061140e89898961322e565b9050886001600160a01b0316886001600160a01b03167f91b4005f248ece53c5402f0c547c6a472d18676fbb0e2e15029d4869140cbe2089896040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561148a578181015183820152602001611472565b50505050905090810190601f1680156114b75780820380516001836020036101000a031916815260200191505b50935050505060405180910390a3886001600160a01b0316886001600160a01b03167f044513e921a12ac6560730ac3063f7946fdcb715deb39bc6f84c38be8083648a89896040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561153f578181015183820152602001611527565b50505050905090810190601f16801561156c5780820380516001836020036101000a031916815260200191505b50935050505060405180910390a36000858152600a60205260408082208054600160ff19909116179055600554815163281adb1160e11b81526004810189905291516101009091046001600160a01b031692635035b622926024808201939182900301818387803b1580156115e057600080fd5b505af11580156115f4573d6000803e3d6000fd5b505050508093505050611608565b60019250505b5095945050505050565b6040518060400160405280600681526020016542726964676560d01b81525081565b60045490565b611642611a02565b61168a576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b6001600160a01b0381166116dc576040805162461bcd60e51b81526020600482015260146024820152734272696467653a77726f6e67206164647265737360601b604482015290519081900360640190fd5b60006116e9848484613750565b9050801561185a576000846040516020018082805190602001908083835b602083106117265780518252601f199092019160209182019101611707565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040516020818303038152906040528051906020012090507f397bc5b97f629151e68146caedba62f10b47e426b38db589771a288c0861f18260001b8114156117b35760058054610100600160a81b0319166101006001600160a01b03861602179055611858565b7fe41d88711b08bdcd7556c5d2d24e0da6fa1f614cf2055f4d7e10206017cd168081141561185857600560019054906101000a90046001600160a01b03166001600160a01b031663b0d80346846040518263ffffffff1660e01b815260040180826001600160a01b03168152602001915050600060405180830381600087803b15801561183f57600080fd5b505af1158015611853573d6000803e3d6000fd5b505050505b505b50505050565b6118786000805160206145a3833981519152336131b1565b6118b35760405162461bcd60e51b81526004018080602001828103825260228152602001806145e56022913960400191505060405180910390fd5b6006546040518291907fad321f810529281bbb90384fd6fecbdda41509a5ccd7bd5aed986ed827f6a02690600090a3600655565b6119117f0cc58340b26c619cd4edc70f833d3f4d9d26f3ae7d5ef2965f81fe5495049a4f336131b1565b611958576040805162461bcd60e51b8152602060048201526013602482015272213934b233b29d3bb937b733903830bab9b2b960691b604482015290519081900360640190fd5b61196061398e565b565b600061197c6000805160206145a3833981519152336131b1565b6119b75760405162461bcd60e51b81526004018080602001828103825260228152602001806145e56022913960400191505060405180910390fd5b6119c082613a2e565b6040805183815290517f468b360fa155a4c5fdf0cb38ce238407e41508a56023e7536088c21b2cd641399181900360200190a15060015b919050565b60065481565b60055460ff1690565b600a6020526000908152604090205460ff1681565b611a4a7f0cc58340b26c619cd4edc70f833d3f4d9d26f3ae7d5ef2965f81fe5495049a4f336131b1565b611a91576040805162461bcd60e51b8152602060048201526013602482015272213934b233b29d3bb937b733903830bab9b2b960691b604482015290519081900360640190fd5b611960613a5a565b600654341015611af0576040805162461bcd60e51b815260206004820152601c60248201527f4272696467653a696e73756666696369656e7420737761702066656500000000604482015290519081900360640190fd5b60065415611b36576007546006546040516001600160a01b039092169181156108fc0291906000818181858888f19350505050158015611b34573d6000803e3d6000fd5b505b336001600160a01b03167f0f0febc7655213f7f4ed640f722413acbfa5bab0fac4cd58ae8792c618e2ab3760065434038484600654604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015611bb8578181015183820152602001611ba0565b50505050905090810190601f168015611be55780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015611c18578181015183820152602001611c00565b50505050905090810190601f168015611c455780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a25050565b6000611c746000805160206145a3833981519152336131b1565b611caf5760405162461bcd60e51b81526004018080602001828103825260228152602001806145e56022913960400191505060405180910390fd5b6000611cba84613add565b90507fe41d88711b08bdcd7556c5d2d24e0da6fa1f614cf2055f4d7e10206017cd16808114801590611d0c57507f397bc5b97f629151e68146caedba62f10b47e426b38db589771a288c0861f1828114155b611d57576040805162461bcd60e51b815260206004820152601760248201527642726964676541646d696e3a77726f6e6720636c61737360481b604482015290519081900360640190fd5b611d6181846131b1565b611d9c5760405162461bcd60e51b81526004018080602001828103825260228152602001806145c36022913960400191505060405180910390fd5b6000805160206145a3833981519152811415611dfa57600354611dbe82613baa565b11611dfa5760405162461bcd60e51b81526004018080602001828103825260238152602001806145606023913960400191505060405180910390fd5b6000848460405160200180806a64726f704164647265737360a81b815250600b0183805190602001908083835b60208310611e465780518252601f199092019160209182019101611e27565b6001836020036101000a038019825116818451168082178552505050505050905001826001600160a01b031660601b815260140192505050604051602081830303815290604052805190602001209050611ea08133613bbf565b600354611eac82613baa565b10611fb157611ebb8285613cc3565b7fb02ddf2800cd4468f7eb14268a7c9f1b6e816aa425ed542d13d8d3a96fa44566858586604051808060200180602001856001600160a01b03168152602001846001600160a01b031681526020018381038352600b8152602001806a64726f704164647265737360a81b815250602001838103825286818151815260200191508051906020019080838360005b83811015611f60578181015183820152602001611f48565b50505050905090810190601f168015611f8d5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1611fa681613a2e565b600192505050611fb8565b6000925050505b92915050565b60055461010090046001600160a01b031690565b6000600560019054906101000a90046001600160a01b03166001600160a01b031663b07ed3a96040518163ffffffff1660e01b815260040160206040518083038186803b15801561202257600080fd5b505afa158015612036573d6000803e3d6000fd5b505050506040513d602081101561204c57600080fd5b5051905090565b6060600061206083613add565b905061206b81613df3565b9392505050565b61208a600080516020614583833981519152336131b1565b6120d3576040805162461bcd60e51b8152602060048201526015602482015274213934b233b29d3bb937b7339037b832b930ba37b960591b604482015290519081900360640190fd5b6040805180820182528381528215156020808301919091526001600160a01b038616600090815260098252929092208151805192939192610ee39284920190614485565b60096020908152600091825260409182902080548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084529092918391908301828280156121ae5780601f10612183576101008083540402835291602001916121ae565b820191906000526020600020905b81548152906001019060200180831161219157829003601f168201915b5050506001909301549192505060ff1682565b60006121db6000805160206145a3833981519152336131b1565b6122165760405162461bcd60e51b81526004018080602001828103825260228152602001806145e56022913960400191505060405180910390fd5b600061222184613add565b90507fe41d88711b08bdcd7556c5d2d24e0da6fa1f614cf2055f4d7e10206017cd1680811480159061227357507f397bc5b97f629151e68146caedba62f10b47e426b38db589771a288c0861f1828114155b6122be576040805162461bcd60e51b815260206004820152601760248201527642726964676541646d696e3a77726f6e6720636c61737360481b604482015290519081900360640190fd5b600084846040516020018080696164644164647265737360b01b815250600a0183805190602001908083835b602083106123095780518252601f1990920191602091820191016122ea565b6001836020036101000a038019825116818451168082178552505050505050905001826001600160a01b031660601b8152601401925050506040516020818303038152906040528051906020012090506123638133613bbf565b60035461236f82613baa565b10611fb15761237e8285613bbf565b7fb02ddf2800cd4468f7eb14268a7c9f1b6e816aa425ed542d13d8d3a96fa44566858586604051808060200180602001856001600160a01b03168152602001846001600160a01b031681526020018381038352600a815260200180696164644164647265737360b01b8152506020018381038252868181518152602001915080519060200190808383600083811015611f60578181015183820152602001611f48565b600061243b600080516020614583833981519152336131b1565b612484576040805162461bcd60e51b8152602060048201526015602482015274213934b233b29d3bb937b7339037b832b930ba37b960591b604482015290519081900360640190fd5b61248c611a02565b156124d1576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b836000811161251f576040805162461bcd60e51b815260206004820152601560248201527404272696467653a76616c7565206e656564203e203605c1b604482015290519081900360640190fd5b84471015612574576040805162461bcd60e51b815260206004820152601e60248201527f4272696467653a6e6f7420656e6f756768206e617469766520746f6b656e0000604482015290519081900360640190fd5b85858560405160200180846001600160a01b031660601b815260140183815260200182805190602001908083835b602083106125c15780518252601f1990920191602091820191016125a2565b6001836020036101000a038019825116818451168082178552505050505050905001935050505060405160208183030381529060405280519060200120831461264c576040805162461bcd60e51b81526020600482015260186024820152774272696467653a7461736b486173682069732077726f6e6760401b604482015290519081900360640190fd5b6000838152600a602052604090205460ff16156126ab576040805162461bcd60e51b81526020600482015260186024820152774272696467653a74782066696c6c656420616c726561647960401b604482015290519081900360640190fd5b600554604080516323c29c0160e11b8152905160009261010090046001600160a01b03169163ae0fd47f9183916347853802916004808301926020929190829003018186803b1580156126fd57600080fd5b505afa158015612711573d6000803e3d6000fd5b505050506040513d602081101561272757600080fd5b505160048054604080516001600160e01b031960e087901b16815292830193909352602482018990523360448301526064820152905160848083019260209291908290030181600087803b15801561277e57600080fd5b505af1158015612792573d6000803e3d6000fd5b505050506040513d60208110156127a857600080fd5b5051600554604080516357ea327960e11b815290519293506101009091046001600160a01b03169163afd464f291600480820192602092909190829003018186803b1580156127f657600080fd5b505afa15801561280a573d6000803e3d6000fd5b505050506040513d602081101561282057600080fd5b50518114156128d957866001600160a01b03167f85c53e7e269cd44a12210170eb2636cdc0d111b93e101a211305e0144733995587876040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612899578181015183820152602001612881565b50505050905090810190601f1680156128c65780820380516001836020036101000a031916815260200191505b50935050505060405180910390a2612b66565b600560019054906101000a90046001600160a01b03166001600160a01b03166310224a986040518163ffffffff1660e01b815260040160206040518083038186803b15801561292757600080fd5b505afa15801561293b573d6000803e3d6000fd5b505050506040513d602081101561295157600080fd5b5051811415612b6657866001600160a01b03167f85c53e7e269cd44a12210170eb2636cdc0d111b93e101a211305e0144733995587876040518083815260200180602001828103825283818151815260200191508051906020019080838360005b838110156129ca5781810151838201526020016129b2565b50505050905090810190601f1680156129f75780820380516001836020036101000a031916815260200191505b50935050505060405180910390a2866001600160a01b03167fd8ff38332185c42ca14ded5671b8eb2842095abf024f6900cb42760ccb438f3387876040518083815260200180602001828103825283818151815260200191508051906020019080838360005b83811015612a75578181015183820152602001612a5d565b50505050905090810190601f168015612aa25780820380516001836020036101000a031916815260200191505b50935050505060405180910390a26040516001600160a01b0388169087156108fc029088906000818181858888f19350505050158015612ae6573d6000803e3d6000fd5b506000848152600a60205260408082208054600160ff19909116179055600554815163281adb1160e11b81526004810188905291516101009091046001600160a01b031692635035b622926024808201939182900301818387803b158015612b4d57600080fd5b505af1158015612b61573d6000803e3d6000fd5b505050505b5060019695505050505050565b60006006543414612bcb576040805162461bcd60e51b815260206004820152601960248201527f4272696467653a7377617020666565206e6f7420657175616c00000000000000604482015290519081900360640190fd5b60065415612c11576007546006546040516001600160a01b039092169181156108fc0291906000818181858888f19350505050158015612c0f573d6000803e3d6000fd5b505b6000612c1e863387613e62565b9050856001600160a01b0316336001600160a01b03167f63333d9ba80d323ed3a2c486809215e8f1fb8c645691606b862787fad572c1c7878787600654604051808581526020018060200180602001848152602001838103835286818151815260200191508051906020019080838360005b83811015612ca8578181015183820152602001612c90565b50505050905090810190601f168015612cd55780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b83811015612d08578181015183820152602001612cf0565b50505050905090810190601f168015612d355780820380516001836020036101000a031916815260200191505b50965050505050505060405180910390a395945050505050565b60035490565b6000612d6f6000805160206145a3833981519152336131b1565b612daa5760405162461bcd60e51b81526004018080602001828103825260228152602001806145e56022913960400191505060405180910390fd5b6000612db584613add565b9050600080516020614583833981519152811480612de057506000805160206145a383398151915281145b612e2b576040805162461bcd60e51b815260206004820152601760248201527642726964676541646d696e3a77726f6e6720636c61737360481b604482015290519081900360640190fd5b6000848460405160200180806f726573657452657175697265644e756d60801b81525060100183805190602001908083835b60208310612e7c5780518252601f199092019160209182019101612e5d565b51815160209384036101000a6000190180199092169116179052920193845250604080518085038152938201905282519201919091209250612ec2915082905033613bbf565b600354612ece82613baa565b1061308b57612edc81613a2e565b60006000805160206145a3833981519152831415612f495784612efe84613baa565b1015612f3b5760405162461bcd60e51b81526004018080602001828103825260238152602001806145606023913960400191505060405180910390fd5b506003805490859055612fb4565b600080516020614583833981519152831415612f6d57506004805490859055612fb4565b6040805162461bcd60e51b815260206004820152601760248201527642726964676541646d696e3a77726f6e6720636c61737360481b604482015290519081900360640190fd5b7fce49fc04234925e87b95750e0e50cac6d4ffcf8a696e3316b3e13bedc84ee7a8868287604051808060200180602001858152602001848152602001838103835260108152602001806f726573657452657175697265644e756d60801b815250602001838103825286818151815260200191508051906020019080838360005b8381101561304c578181015183820152602001613034565b50505050905090810190601f1680156130795780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a1505b506001949350505050565b6130ae6000805160206145a3833981519152336131b1565b6130e95760405162461bcd60e51b81526004018080602001828103825260228152602001806145e56022913960400191505060405180910390fd5b6007546040516001600160a01b038084169216907f941bed5eb8a4f7abb41f1a8547c6b5fded98a6fbe47dbd60aee080690de5f0d590600090a3600780546001600160a01b0319166001600160a01b0392909216919091179055565b60086020908152600091825260409182902080548351601f600260001961010060018616150201909316929092049182018490048402810184019094528084529092918391908301828280156121ae5780601f10612183576101008083540402835291602001916121ae565b6000805b60008481526001602052604090206002015481101561322457600084815260016020526040902060020180546001600160a01b0385169190839081106131f757fe5b6000918252602090912001546001600160a01b0316141561321c576001915050611fb8565b6001016131b5565b5060009392505050565b6001600160a01b03831660009081526009602052604081205481906060906002600019610100600184161502019091160461334c57604080516001600160a01b038781166024830152604480830188905283518084039091018152606490920183526020820180516001600160e01b031663a9059cbb60e01b17815292518251918a169390918291908083835b602083106132da5780518252601f1990920191602091820191016132bb565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d806000811461333c576040519150601f19603f3d011682016040523d82523d6000602084013e613341565b606091505b5090925090506136d1565b613354614511565b6001600160a01b0387166000908152600960209081526040918290208251815460026001821615610100026000190190911604601f81018490049093028101606090810185529381018381529093919284928491908401828280156133fa5780601f106133cf576101008083540402835291602001916133fa565b820191906000526020600020905b8154815290600101906020018083116133dd57829003601f168201915b50505091835250506001919091015460ff1615156020918201528101519091501561357957866001600160a01b03168160000151868860405160240180838152602001826001600160a01b0316815260200192505050604051602081830303815290604052906040518082805190602001908083835b6020831061348f5780518252601f199092019160209182019101613470565b51815160001960209485036101000a01908116901991909116179052604080519490920184900390932092860180516001600160e01b03166001600160e01b031990941693909317835251855190945084935090508083835b602083106135075780518252601f1990920191602091820191016134e8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613569576040519150601f19603f3d011682016040523d82523d6000602084013e61356e565b606091505b5090935091506136cf565b866001600160a01b03168160000151878760405160240180836001600160a01b0316815260200182815260200192505050604051602081830303815290604052906040518082805190602001908083835b602083106135e95780518252601f1990920191602091820191016135ca565b51815160001960209485036101000a01908116901991909116179052604080519490920184900390932092860180516001600160e01b03166001600160e01b031990941693909317835251855190945084935090508083835b602083106136615780518252601f199092019160209182019101613642565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146136c3576040519150601f19603f3d011682016040523d82523d6000602084013e6136c8565b606091505b5090935091505b505b8180156136fa5750805115806136fa57508080602001905160208110156136f757600080fd5b50515b613744576040805162461bcd60e51b8152602060048201526016602482015275109c9a5919d94e9dda5d1a191c985dc819985a5b195960521b604482015290519081900360640190fd5b50600195945050505050565b600061376a6000805160206145a3833981519152336131b1565b6137a55760405162461bcd60e51b81526004018080602001828103825260228152602001806145e56022913960400191505060405180910390fd5b60006137b085613add565b9050600085858560405160200180806c6d6f646966794164647265737360981b815250600d0184805190602001908083835b602083106138015780518252601f1990920191602091820191016137e2565b6001836020036101000a038019825116818451168082178552505050505050905001836001600160a01b031660601b8152601401826001600160a01b031660601b8152601401935050505060405160208183030381529060405280519060200120905061386e8133613bbf565b60035461387a82613baa565b106139825761388a82868661437d565b7fb02ddf2800cd4468f7eb14268a7c9f1b6e816aa425ed542d13d8d3a96fa44566868686604051808060200180602001856001600160a01b03168152602001846001600160a01b031681526020018381038352600d8152602001806c6d6f646966794164647265737360981b815250602001838103825286818151815260200191508051906020019080838360005b83811015613931578181015183820152602001613919565b50505050905090810190601f16801561395e5780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a161397781613a2e565b60019250505061206b565b50600095945050505050565b613996611a02565b6139de576040805162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b604482015290519081900360640190fd5b6005805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa613a11614439565b604080516001600160a01b039092168252519081900360200190a1565b6000818152600160208190526040822082815590810182905590613a556002830182614529565b505050565b613a62611a02565b15613aa7576040805162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b604482015290519081900360640190fd5b6005805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a258613a11614439565b600080826040516020018082805190602001908083835b60208310613b135780518252601f199092019160209182019101613af4565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052805190602001209050613b598161443d565b611fb8576040805162461bcd60e51b815260206004820152601960248201527f42726964676541646d696e3a696e76616c696420636c61737300000000000000604482015290519081900360640190fd5b60009081526001602052604090206002015490565b613bc982826131b1565b15613c1b576040805162461bcd60e51b815260206004820152601b60248201527f436f6e7461696e65723a64757020616464726573732061646465640000000000604482015290519081900360640190fd5b60008054838252600160205260409091206002015410613c82576040805162461bcd60e51b815260206004820152601c60248201527f436f6e7461696e65723a746f6f206d616e792061646472657373657300000000604482015290519081900360640190fd5b6000918252600160208181526040842060020180549283018155845290922090910180546001600160a01b0319166001600160a01b03909216919091179055565b60005b600083815260016020526040902060020154811015613a5557600083815260016020526040902060020180546001600160a01b038416919083908110613d0857fe5b6000918252602090912001546001600160a01b03161415613de757600083815260016020526040902060020180546000198101908110613d4457fe5b60009182526020808320909101548583526001909152604090912060020180546001600160a01b039092169183908110613d7a57fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039490941693909317909255848152600190915260409020600201805480613dbf57fe5b600082815260209020810160001990810180546001600160a01b031916905501905550613def565b600101613cc6565b5050565b600081815260016020908152604091829020600201805483518184028101840190945280845260609392830182828015613e5657602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311613e38575b50505050509050919050565b6001600160a01b038316600090815260086020526040812054819060609060026000196101006001841615020190911604613f8657604080516001600160a01b038781166024830152306044830152606480830188905283518084039091018152608490920183526020820180516001600160e01b03166323b872dd60e01b17815292518251918a169390918291908083835b60208310613f145780518252601f199092019160209182019101613ef5565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114613f76576040519150601f19603f3d011682016040523d82523d6000602084013e613f7b565b606091505b50909250905061430b565b613f8e614511565b6001600160a01b0387166000908152600860209081526040918290208251815460026001821615610100026000190190911604601f81018490049093028101606090810185529381018381529093919284928491908401828280156140345780601f1061400957610100808354040283529160200191614034565b820191906000526020600020905b81548152906001019060200180831161401757829003601f168201915b50505091835250506001919091015460ff161515602091820152810151909150156141b357866001600160a01b03168160000151868860405160240180838152602001826001600160a01b0316815260200192505050604051602081830303815290604052906040518082805190602001908083835b602083106140c95780518252601f1990920191602091820191016140aa565b51815160001960209485036101000a01908116901991909116179052604080519490920184900390932092860180516001600160e01b03166001600160e01b031990941693909317835251855190945084935090508083835b602083106141415780518252601f199092019160209182019101614122565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146141a3576040519150601f19603f3d011682016040523d82523d6000602084013e6141a8565b606091505b509093509150614309565b866001600160a01b03168160000151878760405160240180836001600160a01b0316815260200182815260200192505050604051602081830303815290604052906040518082805190602001908083835b602083106142235780518252601f199092019160209182019101614204565b51815160001960209485036101000a01908116901991909116179052604080519490920184900390932092860180516001600160e01b03166001600160e01b031990941693909317835251855190945084935090508083835b6020831061429b5780518252601f19909201916020918201910161427c565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146142fd576040519150601f19603f3d011682016040523d82523d6000602084013e614302565b606091505b5090935091505b505b818015614334575080511580614334575080806020019051602081101561433157600080fd5b50515b613744576040805162461bcd60e51b8152602060048201526015602482015274109c9a5919d94e99195c1bdcda5d0819985a5b1959605a1b604482015290519081900360640190fd5b60005b60008481526001602052604090206002015481101561185a57600084815260016020526040902060020180546001600160a01b0385169190839081106143c257fe5b6000918252602090912001546001600160a01b031614156144315760008481526001602052604090206002018054839190839081106143fd57fe5b9060005260206000200160006101000a8154816001600160a01b0302191690836001600160a01b0316021790555050613a55565b600101614380565b3390565b6000805b60025481101561447c57826002828154811061445957fe5b906000526020600020015414156144745760019150506119f7565b600101614441565b50600092915050565b828054600181600116156101000203166002900490600052602060002090601f0160209004810192826144bb5760008555614501565b82601f106144d457805160ff1916838001178555614501565b82800160010185558215614501579182015b828111156145015782518255916020019190600101906144e6565b5061450d92915061454a565b5090565b60408051808201909152606081526000602082015290565b5080546000825590600052602060002090810190614547919061454a565b50565b5b8082111561450d576000815560010161454b56fe42726964676541646d696e3a696e73756666696369656e63792061646472657373657346a52cf33029de9f84853745a87af28464c80bf0346df1b32e205fc73319f62202016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c042726964676541646d696e3a6e6f207375636820616464726573732065786973747342726964676541646d696e3a6f6e6c7920757365206f776e657220746f2063616c6ca26469706673582212204cc2b3fe807b742ed23bfa25d80efe6c88d9e53210798af5defd60e46614d1cd64736f6c634300070400330cc58340b26c619cd4edc70f833d3f4d9d26f3ae7d5ef2965f81fe5495049a4f397bc5b97f629151e68146caedba62f10b47e426b38db589771a288c0861f18202016836a56b71f0d02689e69e326f4f4c1b9057164ef592671cf0d37c8040c0e41d88711b08bdcd7556c5d2d24e0da6fa1f614cf2055f4d7e10206017cd16800000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000948c528116427ff4dc4a099ef73ad6ca7142bd90000000000000000000000003ae6f839abb088ac41a951f8e10269bd61f30de3

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000020000000000000000000000000948c528116427ff4dc4a099ef73ad6ca7142bd90000000000000000000000003ae6f839abb088ac41a951f8e10269bd61f30de3

-----Decoded View---------------
Arg [0] : _owners (address[]): 0x0948c528116427FF4dC4a099EF73AD6cA7142BD9,0x3ae6F839abB088ac41a951f8e10269bd61f30DE3
Arg [1] : _ownerRequired (uint256): 1

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000040
Arg [1] : 0000000000000000000000000000000000000000000000000000000000000001
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000002
Arg [3] : 0000000000000000000000000948c528116427ff4dc4a099ef73ad6ca7142bd9
Arg [4] : 0000000000000000000000003ae6f839abb088ac41a951f8e10269bd61f30de3


Deployed ByteCode Sourcemap

23997:8104:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29538:187;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;29538:187:0;;;;;;;;;;;;;;;-1:-1:-1;;;29538:187:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;29538:187:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29538:187:0;;-1:-1:-1;;;;29538:187:0;;;;-1:-1:-1;29538:187:0;:::i;:::-;;24188:20;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;24188:20:0;;;;;;;;;;;;;;27616:980;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;27616:980:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;27616:980:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;27616:980:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27616:980:0;;-1:-1:-1;;27616:980:0;;;-1:-1:-1;27616:980:0;;-1:-1:-1;;27616:980:0:i;:::-;;;;;;;;;;;;;;;;;;24080:38;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8558:107;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;28604:563;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;28604:563:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;28604:563:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;28604:563:0;;-1:-1:-1;;;;;;;28604:563:0;;;;;-1:-1:-1;28604:563:0;;;;;;;;;-1:-1:-1;28604:563:0;;-1:-1:-1;28604:563:0:i;29930:143::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29930:143:0;;:::i;29464:66::-;;;;;;;;;;;;;:::i;12385:171::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12385:171:0;;:::i;24159:22::-;;;;;;;;;;;;;:::i;2093:86::-;;;;;;;;;;;;;:::i;24436:40::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24436:40:0;;:::i;29394:62::-;;;;;;;;;;;;;:::i;25792:350::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;25792:350:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;25792:350:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25792:350:0;;;;;;;;-1:-1:-1;25792:350:0;;-1:-1:-1;;;;;25792:350:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;25792:350:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25792:350:0;;-1:-1:-1;25792:350:0;;-1:-1:-1;;;;;25792:350:0:i;10764:931::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;10764:931:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;10764:931:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10764:931:0;;-1:-1:-1;;;10764:931:0;;-1:-1:-1;;;;;10764:931:0;;-1:-1:-1;10764:931:0;;-1:-1:-1;10764:931:0:i;29175:97::-;;;;;;;;;;;;;:::i;29280:106::-;;;;;;;;;;;;;:::i;8251:190::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8251:190:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8251:190:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8251:190:0;;-1:-1:-1;8251:190:0;;-1:-1:-1;;;;;8251:190:0:i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29733:189;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;29733:189:0;;;;;;;;;;;;;;;-1:-1:-1;;;29733:189:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;29733:189:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29733:189:0;;-1:-1:-1;;;;29733:189:0;;;;-1:-1:-1;29733:189:0;:::i;24372:57::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24372:57:0;-1:-1:-1;;;;;24372:57:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11703:674;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11703:674:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;11703:674:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;11703:674:0;;-1:-1:-1;;;11703:674:0;;-1:-1:-1;;;;;11703:674:0;;-1:-1:-1;11703:674:0;;-1:-1:-1;11703:674:0:i;26629:979::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26629:979:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;26629:979:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;26629:979:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26629:979:0;;-1:-1:-1;;26629:979:0;;;-1:-1:-1;26629:979:0;;-1:-1:-1;;26629:979:0:i;26150:471::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26150:471:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;26150:471:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;26150:471:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26150:471:0;;;;;;;;-1:-1:-1;26150:471:0;;-1:-1:-1;;;;;26150:471:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;26150:471:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26150:471:0;;-1:-1:-1;26150:471:0;;-1:-1:-1;;;;;26150:471:0:i;8449:101::-;;;;;;;;;;;;;:::i;8673:1183::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8673:1183:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8673:1183:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8673:1183:0;;-1:-1:-1;;8673:1183:0;;;-1:-1:-1;8673:1183:0;;-1:-1:-1;;8673:1183:0:i;30081:133::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30081:133:0;-1:-1:-1;;;;;30081:133:0;;:::i;24308:57::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;24308:57:0;-1:-1:-1;;;;;24308:57:0;;:::i;29538:187::-;25322:43;-1:-1:-1;;;;;;;;;;;25354:10:0;25322:17;:43::i;:::-;25314:77;;;;;-1:-1:-1;;;25314:77:0;;;;;;;;;;;;-1:-1:-1;;;25314:77:0;;;;;;;;;;;;;;;29681:36:::1;::::0;;;;::::1;::::0;;;;;;::::1;;;::::0;;::::1;::::0;;;;-1:-1:-1;;;;;29656:22:0;::::1;-1:-1:-1::0;29656:22:0;;;:15:::1;:22:::0;;;;;;:61;;;;29681:36;;29656:22;;:61:::1;::::0;:22;;:61:::1;::::0;::::1;:::i;:::-;-1:-1:-1::0;29656:61:0::1;::::0;;;::::1;::::0;::::1;::::0;;::::1;::::0;;-1:-1:-1;;29656:61:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;;;29538:187:0:o;24188:20::-;;;-1:-1:-1;;;;;24188:20:0;;:::o;27616:980::-;27802:4;25322:43;-1:-1:-1;;;;;;;;;;;25354:10:0;25322:17;:43::i;:::-;25314:77;;;;;-1:-1:-1;;;25314:77:0;;;;;;;;;;;;-1:-1:-1;;;25314:77:0;;;;;;;;;;;;;;;2419:8:::1;:6;:8::i;:::-;2418:9;2410:38;;;::::0;;-1:-1:-1;;;2410:38:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;2410:38:0;;;;;;;;;;;;;::::1;;27781:5:::2;25617:1;25608:6;:10;25600:44;;;::::0;;-1:-1:-1;;;25600:44:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;25600:44:0;;;;;;;;;;;;;::::2;;27872:2:::3;27876:5;27883;27855:34;;;;;;-1:-1:-1::0;;;;;27855:34:0::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;;;-1:-1:-1;;27855:34:0;;;;::::3;::::0;;::::3;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27844:47;;;;;;27832:8;:59;27824:96;;;::::0;;-1:-1:-1;;;27824:96:0;;::::3;;::::0;::::3;::::0;::::3;::::0;;;;-1:-1:-1;;;27824:96:0;;;;;;;;;;;;;::::3;;27940:18;::::0;;;:8:::3;:18;::::0;;;;;::::3;;27939:19;27931:56;;;::::0;;-1:-1:-1;;;27931:56:0;;::::3;;::::0;::::3;::::0;::::3;::::0;;;;-1:-1:-1;;;27931:56:0;;;;;;;;;;;;;::::3;;28015:5;::::0;28033:20:::3;::::0;;-1:-1:-1;;;28033:20:0;;;;27998:14:::3;::::0;28015:5:::3;::::0;::::3;-1:-1:-1::0;;;;;28015:5:0::3;::::0;:17:::3;::::0;:5;;28033:18:::3;::::0;:20:::3;::::0;;::::3;::::0;::::3;::::0;;;;;;;;28015:5;28033:20;::::3;;::::0;::::3;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;::::0;::::3;;-1:-1:-1::0;28033:20:0;28077:18:::3;::::0;;28015:81:::3;::::0;;-1:-1:-1;;;;;;28015:81:0::3;::::0;;;;;;;;::::3;::::0;;;;;;;;;;28065:10:::3;28015:81:::0;;;;;;;;;;;;;;;28033:20:::3;::::0;28015:81;;;;;;;-1:-1:-1;28015:81:0;;::::3;;::::0;::::3;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;::::0;::::3;;-1:-1:-1::0;28015:81:0;28123:5:::3;::::0;:22:::3;::::0;;-1:-1:-1;;;28123:22:0;;;;28015:81;;-1:-1:-1;28123:5:0::3;::::0;;::::3;-1:-1:-1::0;;;;;28123:5:0::3;::::0;:20:::3;::::0;:22:::3;::::0;;::::3;::::0;28015:81:::3;::::0;28123:22;;;;;;;;:5;:22;::::3;;::::0;::::3;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;::::0;::::3;;-1:-1:-1::0;28123:22:0;28113:32;::::3;28109:458;;;28188:6;-1:-1:-1::0;;;;;28167:42:0::3;28184:2;-1:-1:-1::0;;;;;28167:42:0::3;;28196:5;28203;28167:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::3;::::0;;;::::3;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28109:458;;;28241:5;;;;;;;;;-1:-1:-1::0;;;;;28241:5:0::3;-1:-1:-1::0;;;;;28241:14:0::3;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;::::0;::::3;;-1:-1:-1::0;28241:16:0;28231:26;::::3;28227:340;;;28274:8;28285:37;28304:6;28312:2;28316:5;28285:18;:37::i;:::-;28274:48;;28365:6;-1:-1:-1::0;;;;;28344:42:0::3;28361:2;-1:-1:-1::0;;;;;28344:42:0::3;;28373:5;28380;28344:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::3;::::0;;;::::3;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28428:6;-1:-1:-1::0;;;;;28406:43:0::3;28424:2;-1:-1:-1::0;;;;;28406:43:0::3;;28436:5;28443;28406:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::3;::::0;;;::::3;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28464:18;::::0;;;:8:::3;:18;::::0;;;;;:25;;28485:4:::3;-1:-1:-1::0;;28464:25:0;;::::3;;::::0;;28504:5:::3;::::0;:26;;-1:-1:-1;;;28504:26:0;;::::3;::::0;::::3;::::0;;;;;28464:25:::3;28504:5:::0;;::::3;-1:-1:-1::0;;;;;28504:5:0::3;::::0;:16:::3;::::0;:26;;;;;;;;;;;28464:18;28504:5;:26;::::3;;::::0;::::3;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;28552:3;28545:10;;;;;;28227:340;28584:4;28577:11;;;25655:1;2459::::2;27616:980:::0;;;;;;;:::o;24080:38::-;;;;;;;;;;;;;;-1:-1:-1;;;24080:38:0;;;;:::o;8558:107::-;8639:18;;8558:107;:::o;28604:563::-;2696:8;:6;:8::i;:::-;2688:41;;;;;-1:-1:-1;;;2688:41:0;;;;;;;;;;;;-1:-1:-1;;;2688:41:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;28730:26:0;::::1;28722:59;;;::::0;;-1:-1:-1;;;28722:59:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;28722:59:0;;;;;;;;;;;;;::::1;;28792:9;28804:44;28818:5;28825:10;28837;28804:13;:44::i;:::-;28792:56;;28863:4;28859:301;;;28884:17;28931:5;28914:23;;;;;;;;;;;;;;;;;;;;;::::0;;;;-1:-1:-1;;28914:23:0;;;;::::1;::::0;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28904:34;;;;;;28884:54;;6452:66;28970:9;;28957;:22;28953:196;;;29000:5;:31:::0;;-1:-1:-1;;;;;;29000:31:0::1;;-1:-1:-1::0;;;;;29000:31:0;::::1;;;::::0;;28953:196:::1;;;6341:66;29057:22:::0;::::1;29053:96;;;29100:5;;;;;;;;;-1:-1:-1::0;;;;;29100:5:0::1;-1:-1:-1::0;;;;;29100:21:0::1;;29122:10;29100:33;;;;;;;;;;;;;-1:-1:-1::0;;;;;29100:33:0::1;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;29053:96;28859:301;;2740:1;28604:563:::0;;;:::o;29930:143::-;7192:40;-1:-1:-1;;;;;;;;;;;7221:10:0;7192:17;:40::i;:::-;7184:87;;;;-1:-1:-1;;;7184:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30018:7:::1;::::0;30003:33:::1;::::0;30027:8;;30018:7;30003:33:::1;::::0;;;::::1;30047:7;:18:::0;29930:143::o;29464:66::-;25460:41;6230:66;25490:10;25460:17;:41::i;:::-;25452:73;;;;;-1:-1:-1;;;25452:73:0;;;;;;;;;;;;-1:-1:-1;;;25452:73:0;;;;;;;;;;;;;;;29512:10:::1;:8;:10::i;:::-;29464:66::o:0;12385:171::-;12447:4;7192:40;-1:-1:-1;;;;;;;;;;;7221:10:0;7192:17;:40::i;:::-;7184:87;;;;-1:-1:-1;;;7184:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12464:20:::1;12475:8;12464:10;:20::i;:::-;12500:26;::::0;;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;-1:-1:-1::0;12544:4:0::1;7282:1;12385:171:::0;;;:::o;24159:22::-;;;;:::o;2093:86::-;2164:7;;;;2093:86;:::o;24436:40::-;;;;;;;;;;;;;;;:::o;29394:62::-;25460:41;6230:66;25490:10;25460:17;:41::i;:::-;25452:73;;;;;-1:-1:-1;;;25452:73:0;;;;;;;;;;;;-1:-1:-1;;;25452:73:0;;;;;;;;;;;;;;;29440:8:::1;:6;:8::i;25792:350::-:0;25913:7;;25900:9;:20;;25892:61;;;;;-1:-1:-1;;;25892:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;25968:7;;:12;25964:77;;26005:5;;26021:7;;25997:32;;-1:-1:-1;;;;;26005:5:0;;;;25997:32;;;;;26021:7;26005:5;25997:32;26005:5;25997:32;26021:7;26005:5;25997:32;;;;;;;;;;;;;;;;;;;;;25964:77;26070:10;-1:-1:-1;;;;;26056:78:0;;26094:7;;26082:9;:19;26103:14;26119:5;26126:7;;26056:78;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26056:78:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25792:350;;:::o;10764:931::-;10852:4;7192:40;-1:-1:-1;;;;;;;;;;;7221:10:0;7192:17;:40::i;:::-;7184:87;;;;-1:-1:-1;;;7184:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10869:17:::1;10889:19;10902:5;10889:12;:19::i;:::-;10869:39:::0;-1:-1:-1;6341:66:0::1;10927:22:::0;::::1;::::0;::::1;::::0;:48:::1;;-1:-1:-1::0;6452:66:0::1;10953:22:::0;::::1;;10927:48;10919:84;;;::::0;;-1:-1:-1;;;10919:84:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;10919:84:0;;;;;;;;;;;;;::::1;;11022:40;11040:9;11051:10;11022:17;:40::i;:::-;11014:87;;;;-1:-1:-1::0;;;11014:87:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;11118:22:0;::::1;11114:137;;;11196:15;;11163:30;11183:9;11163:19;:30::i;:::-;:48;11155:96;;;;-1:-1:-1::0;;;11155:96:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11264:16;11325:5;11332:10;11293:50;;;;;;-1:-1:-1::0;;;11293:50:0::1;;::::0;::::1;;;;;;;;;;;;;;;;;;::::0;;;;-1:-1:-1;;11293:50:0;;;;::::1;::::0;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;11293:50:0::1;;;;;;;;;;;;;;;;;;;;;;;11283:61;;;;;;11264:80;;11355:36;11370:8;11380:10;11355:14;:36::i;:::-;11439:15;;11406:29;11426:8;11406:19;:29::i;:::-;:48;11402:263;;11471:43;11492:9;11503:10;11471:20;:43::i;:::-;11534:58;11562:5;11569:10;11581;11534:58;;;;;;;;;;-1:-1:-1::0;;;;;11534:58:0::1;;;;;;-1:-1:-1::0;;;;;11534:58:0::1;;;;;;;;;;;;;;;;-1:-1:-1::0;;;11534:58:0::1;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11607:20;11618:8;11607:10;:20::i;:::-;11649:4;11642:11;;;;;;11402:263;11682:5;11675:12;;;;7282:1;10764:931:::0;;;;:::o;29175:97::-;29258:5;;;;;-1:-1:-1;;;;;29258:5:0;;29175:97::o;29280:106::-;29328:7;29355:5;;;;;;;;;-1:-1:-1;;;;;29355:5:0;-1:-1:-1;;;;;29355:21:0;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;29355:23:0;;-1:-1:-1;29280:106:0;:::o;8251:190::-;8320:16;8349:17;8369:19;8382:5;8369:12;:19::i;:::-;8349:39;;8406:27;8423:9;8406:16;:27::i;:::-;8399:34;8251:190;-1:-1:-1;;;8251:190:0:o;29733:189::-;25322:43;-1:-1:-1;;;;;;;;;;;25354:10:0;25322:17;:43::i;:::-;25314:77;;;;;-1:-1:-1;;;25314:77:0;;;;;;;;;;;;-1:-1:-1;;;25314:77:0;;;;;;;;;;;;;;;29878:36:::1;::::0;;;;::::1;::::0;;;;;;::::1;;;::::0;;::::1;::::0;;;;-1:-1:-1;;;;;29852:23:0;::::1;-1:-1:-1::0;29852:23:0;;;:16:::1;:23:::0;;;;;;:62;;;;29878:36;;29852:23;;:62:::1;::::0;:23;;:62:::1;::::0;::::1;:::i;24372:57::-:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24372:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;24372:57:0;;;;;;;-1:-1:-1;;24372:57:0;;;:::o;11703:674::-;11790:4;7192:40;-1:-1:-1;;;;;;;;;;;7221:10:0;7192:17;:40::i;:::-;7184:87;;;;-1:-1:-1;;;7184:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11807:17:::1;11827:19;11840:5;11827:12;:19::i;:::-;11807:39:::0;-1:-1:-1;6341:66:0::1;11865:22:::0;::::1;::::0;::::1;::::0;:48:::1;;-1:-1:-1::0;6452:66:0::1;11891:22:::0;::::1;;11865:48;11857:84;;;::::0;;-1:-1:-1;;;11857:84:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;11857:84:0;;;;;;;;;;;;;::::1;;11954:16;12014:5;12021:10;11983:49;;;;;;-1:-1:-1::0;;;11983:49:0::1;;::::0;::::1;;;;;;;;;;;;;;;;;;::::0;;;;-1:-1:-1;;11983:49:0;;;;::::1;::::0;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;11983:49:0::1;;;;;;;;;;;;;;;;;;;;;;;11973:60;;;;;;11954:79;;12044:36;12059:8;12069:10;12044:14;:36::i;:::-;12128:15;;12095:29;12115:8;12095:19;:29::i;:::-;:48;12091:256;;12160:37;12175:9;12186:10;12160:14;:37::i;:::-;12217:57;12244:5;12251:10;12263;12217:57;;;;;;;;;;-1:-1:-1::0;;;;;12217:57:0::1;;;;;;-1:-1:-1::0;;;;;12217:57:0::1;;;;;;;;;;;;;;;;-1:-1:-1::0;;;12217:57:0::1;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;26629:979:::0;26808:4;25322:43;-1:-1:-1;;;;;;;;;;;25354:10:0;25322:17;:43::i;:::-;25314:77;;;;;-1:-1:-1;;;25314:77:0;;;;;;;;;;;;-1:-1:-1;;;25314:77:0;;;;;;;;;;;;;;;2419:8:::1;:6;:8::i;:::-;2418:9;2410:38;;;::::0;;-1:-1:-1;;;2410:38:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;2410:38:0;;;;;;;;;;;;;::::1;;26787:5:::2;25617:1;25608:6;:10;25600:44;;;::::0;;-1:-1:-1;;;25600:44:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;-1:-1:-1;;;25600:44:0;;;;;;;;;;;;;::::2;;26863:5:::3;26838:21;:30;;26830:73;;;::::0;;-1:-1:-1;;;26830:73:0;;::::3;;::::0;::::3;::::0;::::3;::::0;;;;::::3;::::0;;;;;;;;;;;;;::::3;;26962:2;26966:5;26973;26945:34;;;;;;-1:-1:-1::0;;;;;26945:34:0::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;;;-1:-1:-1;;26945:34:0;;;;::::3;::::0;;::::3;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26934:47;;;;;;26922:8;:59;26914:96;;;::::0;;-1:-1:-1;;;26914:96:0;;::::3;;::::0;::::3;::::0;::::3;::::0;;;;-1:-1:-1;;;26914:96:0;;;;;;;;;;;;;::::3;;27030:18;::::0;;;:8:::3;:18;::::0;;;;;::::3;;27029:19;27021:56;;;::::0;;-1:-1:-1;;;27021:56:0;;::::3;;::::0;::::3;::::0;::::3;::::0;;;;-1:-1:-1;;;27021:56:0;;;;;;;;;;;;;::::3;;27105:5;::::0;27123:20:::3;::::0;;-1:-1:-1;;;27123:20:0;;;;27088:14:::3;::::0;27105:5:::3;::::0;::::3;-1:-1:-1::0;;;;;27105:5:0::3;::::0;:17:::3;::::0;:5;;27123:18:::3;::::0;:20:::3;::::0;;::::3;::::0;::::3;::::0;;;;;;;;27105:5;27123:20;::::3;;::::0;::::3;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;::::0;::::3;;-1:-1:-1::0;27123:20:0;27167:18:::3;::::0;;27105:81:::3;::::0;;-1:-1:-1;;;;;;27105:81:0::3;::::0;;;;;;;;::::3;::::0;;;;;;;;;;27155:10:::3;27105:81:::0;;;;;;;;;;;;;;;27123:20:::3;::::0;27105:81;;;;;;;-1:-1:-1;27105:81:0;;::::3;;::::0;::::3;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;::::0;::::3;;-1:-1:-1::0;27105:81:0;27213:5:::3;::::0;:22:::3;::::0;;-1:-1:-1;;;27213:22:0;;;;27105:81;;-1:-1:-1;27213:5:0::3;::::0;;::::3;-1:-1:-1::0;;;;;27213:5:0::3;::::0;:20:::3;::::0;:22:::3;::::0;;::::3;::::0;27105:81:::3;::::0;27213:22;;;;;;;;:5;:22;::::3;;::::0;::::3;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;::::0;::::3;;-1:-1:-1::0;27213:22:0;27203:32;::::3;27199:380;;;27275:2;-1:-1:-1::0;;;;;27257:35:0::3;;27279:5;27286;27257:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::3;::::0;;;::::3;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27199:380;;;27324:5;;;;;;;;;-1:-1:-1::0;;;;;27324:5:0::3;-1:-1:-1::0;;;;;27324:14:0::3;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;;;;;;;;;;;::::0;::::3;;-1:-1:-1::0;27324:16:0;27314:26;::::3;27310:269;;;27380:2;-1:-1:-1::0;;;;;27362:35:0::3;;27384:5;27391;27362:35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::3;::::0;;;::::3;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27436:2;-1:-1:-1::0;;;;;27417:36:0::3;;27440:5;27447;27417:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::3;::::0;;;::::3;::::0;::::3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27468:18;::::0;-1:-1:-1;;;;;27468:11:0;::::3;::::0;:18;::::3;;;::::0;27480:5;;27468:18:::3;::::0;;;27480:5;27468:11;:18;::::3;;;;;;;;;;;;;::::0;::::3;;;;;-1:-1:-1::0;27501:18:0::3;::::0;;;:8:::3;:18;::::0;;;;;:25;;27522:4:::3;-1:-1:-1::0;;27501:25:0;;::::3;;::::0;;27541:5:::3;::::0;:26;;-1:-1:-1;;;27541:26:0;;::::3;::::0;::::3;::::0;;;;;27501:25:::3;27541:5:::0;;::::3;-1:-1:-1::0;;;;;27541:5:0::3;::::0;:16:::3;::::0;:26;;;;;;;;;;;27501:18;27541:5;:26;::::3;;::::0;::::3;;;;::::0;::::3;;;;;;;;;;;;::::0;::::3;;;;;;;;;27310:269;-1:-1:-1::0;27596:4:0::3;::::0;26629:979;-1:-1:-1;;;;;;26629:979:0:o;26150:471::-;26275:4;26313:7;;26300:9;:20;26292:58;;;;;-1:-1:-1;;;26292:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;26365:7;;:12;26361:77;;26402:5;;26418:7;;26394:32;;-1:-1:-1;;;;;26402:5:0;;;;26394:32;;;;;26418:7;26402:5;26394:32;26402:5;26394:32;26418:7;26402:5;26394:32;;;;;;;;;;;;;;;;;;;;;26361:77;26450:8;26461:44;26479:6;26487:10;26499:5;26461:17;:44::i;:::-;26450:55;;26553:6;-1:-1:-1;;;;;26521:71:0;26534:10;-1:-1:-1;;;;;26521:71:0;;26546:5;26561:14;26577:5;26584:7;;26521:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26521:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26610:3;26150:471;-1:-1:-1;;;;;26150:471:0:o;8449:101::-;8527:15;;8449:101;:::o;8673:1183::-;8767:4;7192:40;-1:-1:-1;;;;;;;;;;;7221:10:0;7192:17;:40::i;:::-;7184:87;;;;-1:-1:-1;;;7184:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8784:17:::1;8804:19;8817:5;8804:12;:19::i;:::-;8784:39:::0;-1:-1:-1;;;;;;;;;;;;8843:25:0;::::1;::::0;8842:55:::1;;-1:-1:-1::0;;;;;;;;;;;;8874:22:0;::::1;8842:55;8834:91;;;::::0;;-1:-1:-1;;;8834:91:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;8834:91:0;;;;;;;;;;;;;::::1;;8938:16;9004:5;9011:11;8967:56;;;;;;-1:-1:-1::0;;;8967:56:0::1;;::::0;::::1;;;;;;;;;;;;;;;;;;::::0;;;;-1:-1:-1;;8967:56:0;;;;::::1;::::0;;::::1;::::0;::::1;;;;::::0;;;::::1;::::0;;::::1;;;-1:-1:-1::0;;8967:56:0;;::::1;::::0;;::::1;::::0;::::1;;::::0;;;::::1;::::0;;;-1:-1:-1;8967:56:0::1;::::0;;;;;;;;;::::1;::::0;;8957:67;;;::::1;::::0;;;;;-1:-1:-1;9035:36:0::1;::::0;-1:-1:-1;8957:67:0;;-1:-1:-1;9060:10:0::1;9035:14;:36::i;:::-;9121:15;;9088:29;9108:8;9088:19;:29::i;:::-;:48;9084:743;;9153:20;9164:8;9153:10;:20::i;:::-;9188:19;-1:-1:-1::0;;;;;;;;;;;9230:22:0;::::1;9226:494;;;9315:11;9281:30;9301:9;9281:19;:30::i;:::-;:45;;9273:93;;;;-1:-1:-1::0;;;9273:93:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;9399:15:0::1;::::0;;9433:29;;;;9226:494:::1;;;-1:-1:-1::0;;;;;;;;;;;9501:25:0;::::1;9497:223;;;-1:-1:-1::0;9561:18:0::1;::::0;;9598:32;;;;9497:223:::1;;;9671:33;::::0;;-1:-1:-1;;;9671:33:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;9671:33:0;;;;;;;;;;;;;::::1;9497:223;9739:76;9783:5;9790:11;9803;9739:76;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;9739:76:0::1;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9084:743;;-1:-1:-1::0;9844:4:0::1;::::0;8673:1183;-1:-1:-1;;;;8673:1183:0:o;30081:133::-;7192:40;-1:-1:-1;;;;;;;;;;;7221:10:0;7192:17;:40::i;:::-;7184:87;;;;-1:-1:-1;;;7184:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30167:5:::1;::::0;30150:31:::1;::::0;-1:-1:-1;;;;;30150:31:0;;::::1;::::0;30167:5:::1;::::0;30150:31:::1;::::0;30167:5:::1;::::0;30150:31:::1;30192:5;:14:::0;;-1:-1:-1;;;;;;30192:14:0::1;-1:-1:-1::0;;;;;30192:14:0;;;::::1;::::0;;;::::1;::::0;;30081:133::o;24308:57::-;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;24308:57:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3569:296;3653:4;;3670:165;3694:14;;;;:9;:14;;;;;:24;;:31;3690:35;;3670:165;;;3751:14;;;;:9;:14;;;;;:24;;:27;;-1:-1:-1;;;;;3751:42:0;;;:24;3776:1;;3751:27;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3751:27:0;:42;3747:76;;;3819:4;3812:11;;;;;3747:76;3727:3;;3670:165;;;-1:-1:-1;3852:5:0;;3569:296;-1:-1:-1;;;3569:296:0:o;31173:923::-;-1:-1:-1;;;;;31356:23:0;;31263:4;31356:23;;;:16;:23;;;;;31350:46;31263:4;;31310:25;;31350:46;-1:-1:-1;;31350:46:0;;;;;;;;;;;31346:601;;31454:65;;;-1:-1:-1;;;;;31454:65:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31454:65:0;-1:-1:-1;;;31454:65:0;;;31443:77;;;;:10;;;;:77;;;;31454:65;31443:77;;31454:65;31443:77;;;;;;;;;;-1:-1:-1;;31443:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31418:102:0;;-1:-1:-1;31418:102:0;-1:-1:-1;31346:601:0;;;31562:30;;:::i;:::-;-1:-1:-1;;;;;31595:23:0;;;;;;:16;:23;;;;;;;;;31562:56;;;;;;;;;;;-1:-1:-1;;31562:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31595:23;;31562:56;;31595:23;;31562:56;;;31595:23;31562:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;31562:56:0;;;-1:-1:-1;;31562:56:0;;;;;;;;;;;;;;;31637:22;;;31562:56;;-1:-1:-1;31633:303:0;;;31705:5;-1:-1:-1;;;;;31705:10:0;31740:9;:18;;;31760:6;31768:3;31716:56;;;;;;;;;;;-1:-1:-1;;;;;31716:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;31716:56:0;;;;;;;;;;;;;;;;-1:-1:-1;;31716:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31716:56:0;-1:-1:-1;;;;;;31716:56:0;;;;;;;;;31705:68;;;;;-1:-1:-1;31705:68:0;;-1:-1:-1;31705:68:0;-1:-1:-1;31705:68:0;;31716:56;31705:68;;;;;;;;;;-1:-1:-1;;31705:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31680:93:0;;-1:-1:-1;31680:93:0;-1:-1:-1;31633:303:0;;;31852:5;-1:-1:-1;;;;;31852:10:0;31887:9;:18;;;31907:3;31912:6;31863:56;;;;;;-1:-1:-1;;;;;31863:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;31863:56:0;;;;;;;;;;;;;;;;-1:-1:-1;;31863:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31863:56:0;-1:-1:-1;;;;;;31863:56:0;;;;;;;;;31852:68;;;;;-1:-1:-1;31852:68:0;;-1:-1:-1;31852:68:0;-1:-1:-1;31852:68:0;;31863:56;31852:68;;;;;;;;;;-1:-1:-1;;31852:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;31827:93:0;;-1:-1:-1;31827:93:0;-1:-1:-1;31633:303:0;31346:601;;31967:6;:72;;;;-1:-1:-1;31978:19:0;;:24;;:60;;;32017:12;32006:32;;;;;;;;;;;;;;;-1:-1:-1;32006:32:0;31978:60;31959:107;;;;;-1:-1:-1;;;31959:107:0;;;;;;;;;;;;-1:-1:-1;;;31959:107:0;;;;;;;;;;;;;;;-1:-1:-1;32084:4:0;;31173:923;-1:-1:-1;;;;;31173:923:0:o;9864:636::-;9976:4;7192:40;-1:-1:-1;;;;;;;;;;;7221:10:0;7192:17;:40::i;:::-;7184:87;;;;-1:-1:-1;;;7184:87:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9993:17:::1;10013:19;10026:5;10013:12;:19::i;:::-;9993:39;;10043:16;10106:5;10113:10;10125;10072:64;;;;;;-1:-1:-1::0;;;10072:64:0::1;;::::0;::::1;;;;;;;;;;;;;;;;;;::::0;;;;-1:-1:-1;;10072:64:0;;;;::::1;::::0;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;10072:64:0::1;;;;;;;;-1:-1:-1::0;;;;;10072:64:0::1;;;;;;;;;;;;;;;;;;;;;;;;10062:75;;;;;;10043:94;;10148:36;10163:8;10173:10;10148:14;:36::i;:::-;10232:15;;10199:29;10219:8;10199:19;:29::i;:::-;:48;10195:275;;10264:53;10283:9;10294:10;10306;10264:18;:53::i;:::-;10337:60;10367:5;10374:10;10386;10337:60;;;;;;;;;;-1:-1:-1::0;;;;;10337:60:0::1;;;;;;-1:-1:-1::0;;;;;10337:60:0::1;;;;;;;;;;;;;;;;-1:-1:-1::0;;;10337:60:0::1;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;;::::1;::::0;;;::::1;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10412:20;10423:8;10412:10;:20::i;:::-;10454:4;10447:11;;;;;;10195:275;-1:-1:-1::0;10487:5:0::1;::::0;9864:636;-1:-1:-1;;;;;9864:636:0:o;3152:120::-;2696:8;:6;:8::i;:::-;2688:41;;;;;-1:-1:-1;;;2688:41:0;;;;;;;;;;;;-1:-1:-1;;;2688:41:0;;;;;;;;;;;;;;;3211:7:::1;:15:::0;;-1:-1:-1;;3211:15:0::1;::::0;;3242:22:::1;3251:12;:10;:12::i;:::-;3242:22;::::0;;-1:-1:-1;;;;;3242:22:0;;::::1;::::0;;;;;;;::::1;::::0;;::::1;3152:120::o:0;5402:82::-;5462:14;;;;:9;:14;;;;;;;5455:21;;;;;;;;;5462:14;5455:21;;;;5462:14;5455:21;:::i;:::-;;;5402:82;:::o;2893:118::-;2419:8;:6;:8::i;:::-;2418:9;2410:38;;;;;-1:-1:-1;;;2410:38:0;;;;;;;;;;;;-1:-1:-1;;;2410:38:0;;;;;;;;;;;;;;;2953:7:::1;:14:::0;;-1:-1:-1;;2953:14:0::1;2963:4;2953:14;::::0;;2983:20:::1;2990:12;:10;:12::i;10508:248::-:0;10573:7;10593:17;10640:5;10623:23;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;10623:23:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10613:34;;;;;;10593:54;;10666:25;10681:9;10666:14;:25::i;:::-;10658:63;;;;;-1:-1:-1;;;10658:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;4210:131;4275:7;4302:14;;;:9;:14;;;;;:24;;:31;;4210:131::o;4532:318::-;4619:35;4637:3;4642:11;4619:17;:35::i;:::-;4618:36;4610:76;;;;;-1:-1:-1;;;4610:76:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;4739:17;;;4705:14;;;:9;:14;;;;;;:24;;:31;:51;4697:92;;;;;-1:-1:-1;;;4697:92:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;4800:14;;;;:9;:14;;;;;;;:24;;:42;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;4800:42:0;-1:-1:-1;;;;;4800:42:0;;;;;;;;;4532:318::o;4967:427::-;5056:9;5051:336;5075:14;;;;:9;:14;;;;;:24;;:31;5071:35;;5051:336;;;5132:14;;;;:9;:14;;;;;:24;;:27;;-1:-1:-1;;;;;5132:42:0;;;:24;5157:1;;5132:27;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5132:27:0;:42;5128:248;;;5225:14;;;;:9;:14;;;;;:24;;5250:31;;-1:-1:-1;;5250:35:0;;;5225:61;;;;;;;;;;;;;;;;;;5195:14;;;5225:61;5195:14;;;;;;;:24;;:27;;-1:-1:-1;;;;;5225:61:0;;;;5220:1;;5195:27;;;;;;;;;;;;;;;;;;:91;;-1:-1:-1;;;;;;5195:91:0;-1:-1:-1;;;;;5195:91:0;;;;;;;;;;;5305:14;;;-1:-1:-1;5305:14:0;;;;;;:24;;:30;;;;;;;;;;;;;;;;-1:-1:-1;;5305:30:0;;;;;-1:-1:-1;;;;;;5305:30:0;;;;;;-1:-1:-1;5354:7:0;;5128:248;5108:3;;5051:336;;4967:427;;;:::o;3873:130::-;3971:14;;;;:9;:14;;;;;;;;;:24;;3964:31;;;;;;;;;;;;;;;;;3935:16;;3964:31;;;3971:24;3964:31;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3964:31:0;;;;;;;;;;;;;;;;;;;;;;;3873:130;;;:::o;30222:943::-;-1:-1:-1;;;;;30406:22:0;;30313:4;30406:22;;;:15;:22;;;;;30400:45;30313:4;;30360:25;;30400:45;-1:-1:-1;;30400:45:0;;;;;;;;;;;30396:623;;30503:85;;;-1:-1:-1;;;;;30503:85:0;;;;;;;30575:4;30503:85;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30503:85:0;-1:-1:-1;;;30503:85:0;;;30492:97;;;;:10;;;;:97;;;;30503:85;30492:97;;30503:85;30492:97;;;;;;;;;;-1:-1:-1;;30492:97:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30467:122:0;;-1:-1:-1;30467:122:0;-1:-1:-1;30396:623:0;;;30631:30;;:::i;:::-;-1:-1:-1;;;;;30664:22:0;;;;;;:15;:22;;;;;;;;;30631:55;;;;;;;;;;;-1:-1:-1;;30631:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30664:22;;30631:55;;30664:22;;30631:55;;;30664:22;30631:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;30631:55:0;;;-1:-1:-1;;30631:55:0;;;;;;;;;;;;;;;30705:22;;;30631:55;;-1:-1:-1;30701:307:0;;;30773:5;-1:-1:-1;;;;;30773:10:0;30808:9;:18;;;30828:6;30836:5;30784:58;;;;;;;;;;;-1:-1:-1;;;;;30784:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;30784:58:0;;;;;;;;;;;;;;;;-1:-1:-1;;30784:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30784:58:0;-1:-1:-1;;;;;;30784:58:0;;;;;;;;;30773:70;;;;;-1:-1:-1;30773:70:0;;-1:-1:-1;30773:70:0;-1:-1:-1;30773:70:0;;30784:58;30773:70;;;;;;;;;;-1:-1:-1;;30773:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30748:95:0;;-1:-1:-1;30748:95:0;-1:-1:-1;30701:307:0;;;30922:5;-1:-1:-1;;;;;30922:10:0;30957:9;:18;;;30977:5;30984:6;30933:58;;;;;;-1:-1:-1;;;;;30933:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;30933:58:0;;;;;;;;;;;;;;;;-1:-1:-1;;30933:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30933:58:0;-1:-1:-1;;;;;;30933:58:0;;;;;;;;;30922:70;;;;;-1:-1:-1;30922:70:0;;-1:-1:-1;30922:70:0;-1:-1:-1;30922:70:0;;30933:58;30922:70;;;;;;;;;;-1:-1:-1;;30922:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30897:95:0;;-1:-1:-1;30897:95:0;-1:-1:-1;30701:307:0;30396:623;;31037:6;:72;;;;-1:-1:-1;31048:19:0;;:24;;:60;;;31087:12;31076:32;;;;;;;;;;;;;;;-1:-1:-1;31076:32:0;31048:60;31029:106;;;;;-1:-1:-1;;;31029:106:0;;;;;;;;;;;;-1:-1:-1;;;31029:106:0;;;;;;;;;;;;;;5492:355;5604:9;5599:241;5623:14;;;;:9;:14;;;;;:24;;:31;5619:35;;5599:241;;;5680:14;;;;:9;:14;;;;;:24;;:27;;-1:-1:-1;;;;;5680:42:0;;;:24;5705:1;;5680:27;;;;;;;;;;;;;;;;-1:-1:-1;;;;;5680:27:0;:42;5676:153;;;5743:14;;;;:9;:14;;;;;:24;;:27;;5773:15;;5743:24;5768:1;;5743:27;;;;;;;;;;;;;;:45;;;;;-1:-1:-1;;;;;5743:45:0;;;;;-1:-1:-1;;;;;5743:45:0;;;;;;5807:7;;;5676:153;5656:3;;5599:241;;667:106;755:10;667:106;:::o;8026:217::-;8087:4;;8104:108;8128:14;:21;8124:25;;8104:108;;;8194:5;8173:14;8188:1;8173:17;;;;;;;;;;;;;;;;:26;8169:43;;;8208:4;8201:11;;;;;8169:43;8151:3;;8104:108;;;-1:-1:-1;8230:5:0;;8026:217;-1:-1:-1;;8026:217:0:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::o;:::-;;;;;;;;;;;;;;

Swarm Source

ipfs://4cc2b3fe807b742ed23bfa25d80efe6c88d9e53210798af5defd60e46614d1cd
Block Transaction Difficulty Gas Used Reward
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.