{
  "_format": "hh-sol-artifact-1",
  "contractName": "Lockdrop",
  "sourceName": "contracts/soma/Lockdrop/Lockdrop.sol",
  "abi": [
    {
      "anonymous": false,
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint48",
              "name": "startDate",
              "type": "uint48"
            },
            {
              "internalType": "uint48",
              "name": "removeDelegationEnd",
              "type": "uint48"
            },
            {
              "internalType": "uint48",
              "name": "endDate",
              "type": "uint48"
            }
          ],
          "indexed": false,
          "internalType": "struct ILockdrop.DateConfig",
          "name": "prevDateConfig",
          "type": "tuple"
        },
        {
          "components": [
            {
              "internalType": "uint48",
              "name": "startDate",
              "type": "uint48"
            },
            {
              "internalType": "uint48",
              "name": "removeDelegationEnd",
              "type": "uint48"
            },
            {
              "internalType": "uint48",
              "name": "endDate",
              "type": "uint48"
            }
          ],
          "indexed": false,
          "internalType": "struct ILockdrop.DateConfig",
          "name": "newDateConfig",
          "type": "tuple"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "DatesUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "poolId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "lockDuration",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "DelegationAdded",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "fromPoolId",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "toPoolId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "DelegationMoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "poolId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "DelegationRemoved",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "poolId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "prevLockDuration",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "newLockDuration",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "LockDurationUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Paused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "poolId",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "requiredPrivileges",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "enabled",
          "type": "bool"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "PoolUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "prevPrivileges",
          "type": "bytes32"
        },
        {
          "indexed": false,
          "internalType": "bytes32",
          "name": "newPrivileges",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "RequiredPrivilegesUpdated",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "TokensRecovered",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "Unpaused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "prevTo",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "newTo",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "sender",
          "type": "address"
        }
      ],
      "name": "WithdrawToUpdated",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "DEFAULT_PRIVILEGES",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "GLOBAL_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "GLOBAL_UPDATE_PRIVILEGES_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "LOCAL_ADMIN_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "LOCAL_UPDATE_PRIVILEGES_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "SOMA",
      "outputs": [
        {
          "internalType": "contract ISOMA",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "TOKEN_RECOVERY_ROLE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "asset",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "poolId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "balanceOf",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "dateConfig",
      "outputs": [
        {
          "components": [
            {
              "internalType": "uint48",
              "name": "startDate",
              "type": "uint48"
            },
            {
              "internalType": "uint48",
              "name": "removeDelegationEnd",
              "type": "uint48"
            },
            {
              "internalType": "uint48",
              "name": "endDate",
              "type": "uint48"
            }
          ],
          "internalType": "struct ILockdrop.DateConfig",
          "name": "",
          "type": "tuple"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "poolId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "lockDuration_",
          "type": "uint256"
        }
      ],
      "name": "delegate",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "poolId",
          "type": "bytes32"
        }
      ],
      "name": "enabled",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        }
      ],
      "name": "getRoleAdmin",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasPrivileges",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "role",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "hasRole",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "id",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "_id",
          "type": "uint256"
        },
        {
          "internalType": "address",
          "name": "_asset",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "_withdrawTo",
          "type": "address"
        },
        {
          "components": [
            {
              "internalType": "uint48",
              "name": "startDate",
              "type": "uint48"
            },
            {
              "internalType": "uint48",
              "name": "removeDelegationEnd",
              "type": "uint48"
            },
            {
              "internalType": "uint48",
              "name": "endDate",
              "type": "uint48"
            }
          ],
          "internalType": "struct ILockdrop.DateConfig",
          "name": "_initDateConfig",
          "type": "tuple"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "poolId",
          "type": "bytes32"
        },
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "lockDuration",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "fromPoolId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "toPoolId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "toPoolLockDuration",
          "type": "uint256"
        }
      ],
      "name": "moveDelegation",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes[]",
          "name": "data",
          "type": "bytes[]"
        }
      ],
      "name": "multicall",
      "outputs": [
        {
          "internalType": "bytes[]",
          "name": "results",
          "type": "bytes[]"
        }
      ],
      "stateMutability": "nonpayable",
      "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": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "to",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "recoverTokens",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "poolId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "removeDelegation",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "requiredPrivileges",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "poolId",
          "type": "bytes32"
        }
      ],
      "name": "requiredPrivileges",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "account",
          "type": "address"
        }
      ],
      "name": "setWithdrawTo",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes4",
          "name": "interfaceId",
          "type": "bytes4"
        }
      ],
      "name": "supportsInterface",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "unpause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "internalType": "uint48",
              "name": "startDate",
              "type": "uint48"
            },
            {
              "internalType": "uint48",
              "name": "removeDelegationEnd",
              "type": "uint48"
            },
            {
              "internalType": "uint48",
              "name": "endDate",
              "type": "uint48"
            }
          ],
          "internalType": "struct ILockdrop.DateConfig",
          "name": "newConfig",
          "type": "tuple"
        }
      ],
      "name": "updateDateConfig",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "poolId",
          "type": "bytes32"
        },
        {
          "internalType": "uint256",
          "name": "newLockDuration",
          "type": "uint256"
        }
      ],
      "name": "updateLockDuration",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "_poolId",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "_requiredPrivileges",
          "type": "bytes32"
        },
        {
          "internalType": "bool",
          "name": "_enabled",
          "type": "bool"
        }
      ],
      "name": "updatePool",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "newRequiredPrivileges",
          "type": "bytes32"
        }
      ],
      "name": "updateRequiredPrivileges",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "withdraw",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "withdrawTo",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    }
  ],
  "bytecode": "0x60c0604052730f3dc00189dbcd1d0c574e48031270cae04c4adf6080526001600160401b0360a05234801561003357600080fd5b5060805160a0516134756100ad60003960006102a30152600081816103540152818161060601528181610838015281816108d4015281816109ba01528181610ac401528181610e2301528181611240015281816114db01528181611930015281816119cc01528181611aaf0152611c0901526134756000f3fe608060405234801561001057600080fd5b50600436106102115760003560e01c806370af924311610125578063af640d0f116100ad578063c20382361161007c578063c20382361461054e578063d869759814610589578063e2481dbd146105b0578063eec47d60146105ba578063ef63d57c146105c457600080fd5b8063af640d0f146104fa578063b41c97c814610504578063ba81559014610517578063bee0b2571461053b57600080fd5b80638bcd3e93116100f45780638bcd3e931461041357806391d14854146104275780639c2f4aa91461043a578063a5fd9dc81461044d578063ac9650d8146104da57600080fd5b806370af9243146103b157806373e93829146103c45780638456cb59146103d757806387aa1f65146103df57600080fd5b80633f4ba83a116101a8578063622b74a711610177578063622b74a71461033c57806363727fc21461034f57806365c05dcd1461037657806366258068146103895780636b33e45d1461039e57600080fd5b80633f4ba83a146103065780634b63885a1461030e5780635c975abb146103215780635f3e849f1461032957600080fd5b80632772ce9d116101e45780632772ce9d1461028b5780632a7a0c681461029e5780632e1a7d4d146102c557806338d52e0f146102da57600080fd5b806301ffc9a7146102165780631e26571f1461023e578063227102a614610251578063248a9ca314610278575b600080fd5b610229610224366004612caf565b6105d7565b60405190151581526020015b60405180910390f35b610162545b604051908152602001610235565b6102437ff28c151dcc22c5bfb460fbc387993d6c0d1c1245ca20aca5f3cbd33f33041eb181565b610243610286366004612cd9565b610602565b610229610299366004612cd9565b6106f4565b6102437f000000000000000000000000000000000000000000000000000000000000000081565b6102d86102d3366004612cd9565b6107bc565b005b6101c9546102ee906001600160a01b031681565b6040516001600160a01b039091168152602001610235565b6102d8610827565b61022961031c366004612d07565b6109b6565b610229610ac0565b6102d8610337366004612d24565b610b59565b6102d861034a366004612d73565b610cca565b6102ee7f000000000000000000000000000000000000000000000000000000000000000081565b6102d8610384366004612dac565b610d88565b61024360008051602061342283398151915281565b6102d86103ac366004612d07565b61122f565b6102d86103bf366004612dde565b61130e565b6102d86103d2366004612e18565b6116b3565b6102d861191f565b6102436103ed366004612e6a565b6001600160a01b031660009081526101cd60209081526040808320938352929052205490565b6101ca546102ee906001600160a01b031681565b610229610435366004612e6a565b611aab565b6102d8610448366004612e9a565b611ba9565b6104a9604080516060810182526000808252602082018190529181019190915250604080516060810182526101cb5465ffffffffffff8082168352600160301b820481166020840152600160601b909104169181019190915290565b60408051825165ffffffffffff90811682526020808501518216908301529282015190921690820152606001610235565b6104ed6104e8366004612ec6565b611ead565b6040516102359190612f8b565b6102436101c85481565b6102d8610512366004612fed565b611fa2565b610229610525366004612cd9565b60009081526101cc602052604090205460ff1690565b6102d8610549366004612dde565b611ff3565b61024361055c366004612e6a565b60008281526101cc602090815260408083206001600160a01b038516845260020190915290205492915050565b6102437f0b8459b722d944f0580da74c767d2dcae280ce16527c19c825b302a24e208dfd81565b6102436101c75481565b6102436101615481565b6102436105d2366004612cd9565b61207b565b60006001600160e01b0319821663faf0751760e01b14806105fc57506105fc826120f1565b92915050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610662573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106869190613009565b6001600160a01b031663248a9ca3836040518263ffffffff1660e01b81526004016106b391815260200190565b602060405180830381865afa1580156106d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105fc9190613026565b6000610704610161546104353390565b8061073457506107347ff28c151dcc22c5bfb460fbc387993d6c0d1c1245ca20aca5f3cbd33f33041eb133611aab565b6107ab5760405162461bcd60e51b815260206004820152603860248201527f477561726461626c653a20796f7520646f206e6f74206861766520746865207260448201527f6571756972656420726f6c657320746f20646f2074686973000000000000000060648201526084015b60405180910390fd5b6107b482612116565b506001919050565b336107d560008051602061342283398151915282611aab565b806107e857506107e86101c75482611aab565b6108045760405162461bcd60e51b81526004016107a29061303f565b6101ca546101c954610823916001600160a01b0391821691168461215b565b5050565b6000339050806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ee97f7f36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610894573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b89190613009565b6001600160a01b0316148061095f5750806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632d37ead56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610930573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109549190613009565b6001600160a01b0316145b6109ab5760405162461bcd60e51b815260206004820152601f60248201527f534f4d413a204d4153544552206f7220535542204d4153544552206f6e6c790060448201526064016107a2565b6109b36121be565b50565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637ceab3b16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3a9190613009565b6001600160a01b031663253bd7b783610a536101625490565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa158015610a9c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105fc919061306d565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b44919061306d565b80610b5457505060335460ff1690565b905090565b7f0b8459b722d944f0580da74c767d2dcae280ce16527c19c825b302a24e208dfd610b848133611aab565b610c005760405162461bcd60e51b815260206004820152604160248201527f536f6d61416363657373436f6e74726f6c3a2063616c6c657220646f6573206e60448201527f6f7420686176652074686520617070726f70726961746520617574686f7269746064820152607960f81b608482015260a4016107a2565b610c0c61012d85612210565b15610c595760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e5265636f766572793a20494e56414c49445f544f4b454e0000000060448201526064016107a2565b610c6d6001600160a01b038516848461215b565b336001600160a01b0316836001600160a01b0316856001600160a01b03167fca574176b1d34032f40f7fb0c519eae468b4535ebf7b27f986a7b6e2fa53d53885604051610cbc91815260200190565b60405180910390a450505050565b33610ce360008051602061342283398151915282611aab565b80610cf65750610cf66101c75482611aab565b610d125760405162461bcd60e51b81526004016107a29061303f565b60008481526101cc60205260409020805460ff1916831515178155600101839055336001600160a01b0316847f3bd81bf3f98792a0019c2cfcd3b4dc17e4034d2aa84e7b527a868b462c4cd5708585604051610d7a9291909182521515602082015260400190565b60405180910390a350505050565b610d90612232565b60026101955403610db35760405162461bcd60e51b81526004016107a29061308a565b60026101955560008481526101cc6020908152604080832086845281842082516060810184526101cb5465ffffffffffff8082168352600160301b8204811683880152600160601b90910416818501528351637ceab3b160e01b8152935192959194909333936001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692637ceab3b192600480820193918290030181865afa158015610e6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8e9190613009565b9050878903610ed65760405162461bcd60e51b81526020600482015260146024820152734c6f636b64726f703a2053414d4520504f4f4c5360601b60448201526064016107a2565b42836000015165ffffffffffff161115610f025760405162461bcd60e51b81526004016107a2906130c1565b826040015165ffffffffffff164210610f4f5760405162461bcd60e51b815260206004820152600f60248201526e131bd8dad91c9bdc0e881153911151608a1b60448201526064016107a2565b60008711610f6f5760405162461bcd60e51b81526004016107a2906130f0565b845460ff16610f905760405162461bcd60e51b81526004016107a29061311f565b835460ff16610fb15760405162461bcd60e51b81526004016107a29061311f565b6001600160a01b038216600090815260028601602052604090205487111561101b5760405162461bcd60e51b815260206004820152601e60248201527f4c6f636b64726f703a20494e53554646494349454e542042414c414e4345000060448201526064016107a2565b600184015460405163253bd7b760e01b81526001600160a01b03848116600483015260248201929092529082169063253bd7b790604401602060405180830381865afa15801561106f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611093919061306d565b6110af5760405162461bcd60e51b81526004016107a290613156565b600185015460405163253bd7b760e01b81526001600160a01b03848116600483015260248201929092529082169063253bd7b790604401602060405180830381865afa158015611103573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611127919061306d565b6111435760405162461bcd60e51b81526004016107a290613156565b6001600160a01b03821660009081526002860160205260408120805489929061116d9084906131a3565b90915550506001600160a01b03821660009081526002850160205260408120805489929061119c9084906131b6565b90915550506001600160a01b038216600090815260028601602052604081205490036111ce576111ce8960008461227c565b6111d988878461227c565b336001600160a01b0316888a7fb2f65a0d3a3bd76a45462d4c8f89fdfa1feb6480eade68dd855f6d1594e02f548a60405161121691815260200190565b60405180910390a4505060016101955550505050505050565b6000339050806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ee97f7f36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561129c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c09190613009565b6001600160a01b0316146113055760405162461bcd60e51b815260206004820152600c60248201526b29a7a6a09d1026a0a9aa22a960a11b60448201526064016107a2565b610823826123e8565b611316612232565b600261019554036113395760405162461bcd60e51b81526004016107a29061308a565b60026101955560008281526101cc602090815260409182902082516060810184526101cb5465ffffffffffff8082168352600160301b8204811694830194909452600160601b90049092169282019290925233836113a95760405162461bcd60e51b81526004016107a2906130f0565b825460ff166113ca5760405162461bcd60e51b81526004016107a29061311f565b42826000015165ffffffffffff1611156113f65760405162461bcd60e51b81526004016107a2906130c1565b816020015165ffffffffffff16421061145b5760405162461bcd60e51b815260206004820152602160248201527f4c6f636b64726f703a2052454d4f56452044454c45474154494f4e20454e44456044820152601160fa1b60648201526084016107a2565b6001600160a01b03811660009081526002840160205260409020548411156114d95760405162461bcd60e51b815260206004820152602b60248201527f4c6f636b64726f703a20494e53554646494349454e542057495448445241574160448201526a424c452042414c414e434560a81b60648201526084016107a2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637ceab3b16040518163ffffffff1660e01b8152600401602060405180830381865afa158015611537573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155b9190613009565b600184015460405163253bd7b760e01b81526001600160a01b038481166004830152602482019290925291169063253bd7b790604401602060405180830381865afa1580156115ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d2919061306d565b6115ee5760405162461bcd60e51b81526004016107a290613156565b6001600160a01b0381166000908152600284016020526040812080548692906116189084906131a3565b90915550506001600160a01b0381166000908152600284016020526040812054900361164a5761164a8560008361227c565b6101c954611662906001600160a01b0316828661215b565b806001600160a01b0316857f644cee4e47f18bc65ef88c93f336bc6c4dfeb3ff6e04753a684294bde64c02fe8660405161169e91815260200190565b60405180910390a35050600161019555505050565b600054610100900460ff16158080156116d35750600054600160ff909116105b806116ed5750303b1580156116ed575060005460ff166001145b6117505760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107a2565b6000805460ff191660011790558015611773576000805461ff0019166101001790555b6001600160a01b0384166117c95760405162461bcd60e51b815260206004820152601760248201527f4c6f636b64726f703a20494e56414c494420415353455400000000000000000060448201526064016107a2565b6001600160a01b03831661181f5760405162461bcd60e51b815260206004820152601d60248201527f4c6f636b64726f703a20494e56414c494420574954484452415720544f00000060448201526064016107a2565b6040516bffffffffffffffffffffffff193060601b166020820152600080516020613422833981519152603482015260540160408051601f1981840301815291905280516020909101206101c7556118756124ab565b61187d6124e3565b60408051600081526020810190915261189590612512565b6101c88590556101c980546001600160a01b0319166001600160a01b0386161790556118c084612584565b6118c9836123e8565b6118d282612590565b8015611918576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6000339050806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ee97f7f36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561198c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b09190613009565b6001600160a01b03161480611a575750806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632d37ead56040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4c9190613009565b6001600160a01b0316145b611aa35760405162461bcd60e51b815260206004820152601f60248201527f534f4d413a204d4153544552206f7220535542204d4153544552206f6e6c790060448201526064016107a2565b6109b36126a4565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b2f9190613009565b604051632474521560e21b8152600481018590526001600160a01b03848116602483015291909116906391d1485490604401602060405180830381865afa158015611b7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba2919061306d565b9392505050565b611bb1612232565b60026101955403611bd45760405162461bcd60e51b81526004016107a29061308a565b60026101955560008381526101cc602052604090203383611c075760405162461bcd60e51b81526004016107a2906130f0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637ceab3b16040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c899190613009565b600183015460405163253bd7b760e01b81526001600160a01b038481166004830152602482019290925291169063253bd7b790604401602060405180830381865afa158015611cdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d00919061306d565b611d1c5760405162461bcd60e51b81526004016107a290613156565b611d2785848361227c565b6101c9546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015611d71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d959190613026565b6101c954909150611db1906001600160a01b03168330886126e1565b6101c9546040516370a0823160e01b815230600482015260009183916001600160a01b03909116906370a0823190602401602060405180830381865afa158015611dff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e239190613026565b611e2d91906131a3565b6001600160a01b0384166000908152600286016020526040812080549293508392909190611e5c9084906131b6565b90915550506040805182815260208101879052339189917f90012d82ead9d81f13d637d22a6b16b951b87bc6d21fe62191ba59c677ad3c31910160405180910390a350506001610195555050505050565b60608167ffffffffffffffff811115611ec857611ec86131c9565b604051908082528060200260200182016040528015611efb57816020015b6060815260200190600190039081611ee65790505b50905060005b82811015611f9b57611f6b30858584818110611f1f57611f1f6131df565b9050602002810190611f3191906131f5565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061271f92505050565b828281518110611f7d57611f7d6131df565b60200260200101819052508080611f9390613243565b915050611f01565b5092915050565b33611fbb60008051602061342283398151915282611aab565b80611fce5750611fce6101c75482611aab565b611fea5760405162461bcd60e51b81526004016107a29061303f565b61082382612590565b611ffb612232565b60008281526101cc6020908152604080832033808552600290910190925282205490910361206b5760405162461bcd60e51b815260206004820152601960248201527f4c6f636b64726f703a205a45524f2044454c45474154494f4e0000000000000060448201526064016107a2565b61207683838361227c565b505050565b60008181526101cc602052604081205460ff166120da5760405162461bcd60e51b815260206004820152601960248201527f4c6f636b64726f703a20494e56414c49445f504f4f4c5f49440000000000000060448201526064016107a2565b5060009081526101cc602052604090206001015490565b60006001600160e01b03198216630e46e23b60e31b14806105fc57506105fc82612813565b61016254604080519182526020820183905233917f53f0b6b34c97fd1733ccb4b21aea7549d7ad3a83e6316864417b8cc1a9a9a807910160405180910390a261016255565b6040516001600160a01b03831660248201526044810182905261207690849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612838565b6121c661290a565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b03811660009081526001830160205260408120541515611ba2565b61223a610ac0565b1561227a5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016107a2565b565b604080516060810182526101cb5465ffffffffffff8082168352600160301b82048116602080850191909152600160601b909204168284015260008681526101cc909152919091205460ff166122e45760405162461bcd60e51b81526004016107a29061311f565b42816000015165ffffffffffff1611156123105760405162461bcd60e51b81526004016107a2906130c1565b806040015165ffffffffffff16421061235d5760405162461bcd60e51b815260206004820152600f60248201526e131bd8dad91c9bdc0e881153911151608a1b60448201526064016107a2565b6001600160a01b03821660008181526101cd60209081526040808320888452825291829020548251888152918201529081018590527fea5e3738029e424c3a571dd74b5c92e147926c2ae932385d93de0dfd06ecf3979060600160405180910390a2506001600160a01b031660009081526101cd602090815260408083209483529390529190912055565b6001600160a01b03811661243e5760405162461bcd60e51b815260206004820152601d60248201527f4c6f636b64726f703a20494e56414c494420574954484452415720544f00000060448201526064016107a2565b6101ca54604080516001600160a01b0392831681529183166020830152805133927fe9749b9cfc1a71f1d982618f21a5b03b6a9dd68c6d960ed823f56b6ac931ea5192908290030190a26101ca80546001600160a01b0319166001600160a01b0392909216919091179055565b6124b3612955565b6124bb612955565b6124c361297c565b6124cb612955565b6124d3612955565b6124db612955565b61227a612a0e565b600054610100900460ff1661250a5760405162461bcd60e51b81526004016107a29061325c565b61227a612a41565b600054610100900460ff166125395760405162461bcd60e51b81526004016107a29061325c565b60005b81518110156108235761257382828151811061255a5761255a6131df565b602002602001015161012d612a7090919063ffffffff16565b5061257d81613243565b905061253c565b61082361012d82612a70565b6125a060408201602083016132bb565b65ffffffffffff166125b560208301836132bb565b65ffffffffffff16111580156125f957506125d660608201604083016132bb565b65ffffffffffff166125ee60408301602084016132bb565b65ffffffffffff1611155b6126515760405162461bcd60e51b8152602060048201526024808201527f4c6f636b64726f703a20494e56414c4944204441544520434f4e4649475552416044820152632a24a7a760e11b60648201526084016107a2565b336001600160a01b03167f7ebb838336e80581c7cfbfa36679c470a20484d90c2b020ba53aeb2464e67eae6101cb8360405161268e9291906132d8565b60405180910390a2806101cb6120768282613350565b6126ac612232565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586121f33390565b6040516001600160a01b03808516602483015283166044820152606481018290526127199085906323b872dd60e01b90608401612187565b50505050565b60606001600160a01b0383163b6127875760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016107a2565b600080846001600160a01b0316846040516127a291906133f2565b600060405180830381855af49150503d80600081146127dd576040519150601f19603f3d011682016040523d82523d6000602084013e6127e2565b606091505b509150915061280a828260405180606001604052806027815260200161344260279139612a85565b95945050505050565b60006001600160e01b03198216638757f10760e01b14806105fc57506105fc82612abe565b600061288d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612ae39092919063ffffffff16565b80519091501561207657808060200190518101906128ab919061306d565b6120765760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016107a2565b612912610ac0565b61227a5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016107a2565b600054610100900460ff1661227a5760405162461bcd60e51b81526004016107a29061325c565b600054610100900460ff166129a35760405162461bcd60e51b81526004016107a29061325c565b6040516bffffffffffffffffffffffff193060601b1660208201527ff28c151dcc22c5bfb460fbc387993d6c0d1c1245ca20aca5f3cbd33f33041eb1603482015260540160408051601f1981840301815291905280516020909101206101615561227a600019612116565b600054610100900460ff16612a355760405162461bcd60e51b81526004016107a29061325c565b6033805460ff19169055565b600054610100900460ff16612a685760405162461bcd60e51b81526004016107a29061325c565b600161019555565b6000611ba2836001600160a01b038416612afa565b60608315612a94575081611ba2565b825115612aa45782518084602001fd5b8160405162461bcd60e51b81526004016107a2919061340e565b60006001600160e01b0319821663b55bd4f760e01b14806105fc57506105fc82612b49565b6060612af28484600085612b7e565b949350505050565b6000818152600183016020526040812054612b41575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556105fc565b5060006105fc565b60006001600160e01b0319821663d86f1ca160e01b14806105fc57506301ffc9a760e01b6001600160e01b03198316146105fc565b606082471015612bdf5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016107a2565b6001600160a01b0385163b612c365760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107a2565b600080866001600160a01b03168587604051612c5291906133f2565b60006040518083038185875af1925050503d8060008114612c8f576040519150601f19603f3d011682016040523d82523d6000602084013e612c94565b606091505b5091509150612ca4828286612a85565b979650505050505050565b600060208284031215612cc157600080fd5b81356001600160e01b031981168114611ba257600080fd5b600060208284031215612ceb57600080fd5b5035919050565b6001600160a01b03811681146109b357600080fd5b600060208284031215612d1957600080fd5b8135611ba281612cf2565b600080600060608486031215612d3957600080fd5b8335612d4481612cf2565b92506020840135612d5481612cf2565b929592945050506040919091013590565b80151581146109b357600080fd5b600080600060608486031215612d8857600080fd5b83359250602084013591506040840135612da181612d65565b809150509250925092565b60008060008060808587031215612dc257600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215612df157600080fd5b50508035926020909101359150565b600060608284031215612e1257600080fd5b50919050565b60008060008060c08587031215612e2e57600080fd5b843593506020850135612e4081612cf2565b92506040850135612e5081612cf2565b9150612e5f8660608701612e00565b905092959194509250565b60008060408385031215612e7d57600080fd5b823591506020830135612e8f81612cf2565b809150509250929050565b600080600060608486031215612eaf57600080fd5b505081359360208301359350604090920135919050565b60008060208385031215612ed957600080fd5b823567ffffffffffffffff80821115612ef157600080fd5b818501915085601f830112612f0557600080fd5b813581811115612f1457600080fd5b8660208260051b8501011115612f2957600080fd5b60209290920196919550909350505050565b60005b83811015612f56578181015183820152602001612f3e565b50506000910152565b60008151808452612f77816020860160208601612f3b565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612fe057603f19888603018452612fce858351612f5f565b94509285019290850190600101612fb2565b5092979650505050505050565b600060608284031215612fff57600080fd5b611ba28383612e00565b60006020828403121561301b57600080fd5b8151611ba281612cf2565b60006020828403121561303857600080fd5b5051919050565b6020808252601490820152734c6f636b64726f703a2041444d494e204f4e4c5960601b604082015260600190565b60006020828403121561307f57600080fd5b8151611ba281612d65565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b602080825260159082015274131bd8dad91c9bdc0e881393d50814d51054951151605a1b604082015260600190565b602080825260159082015274131bd8dad91c9bdc0e8816915493c8105353d55395605a1b604082015260600190565b60208082526017908201527f4c6f636b64726f703a20504f4f4c2044495341424c4544000000000000000000604082015260600190565b60208082526017908201527f4c6f636b64726f703a204e4f2050524956494c45474553000000000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b818103818111156105fc576105fc61318d565b808201808211156105fc576105fc61318d565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261320c57600080fd5b83018035915067ffffffffffffffff82111561322757600080fd5b60200191503681900382131561323c57600080fd5b9250929050565b6000600182016132555761325561318d565b5060010190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b65ffffffffffff811681146109b357600080fd5b6000602082840312156132cd57600080fd5b8135611ba2816132a7565b600060c082019050835465ffffffffffff8082168452808260301c166020850152808260601c16604085015284359150613311826132a7565b9081166060840152602084013590613328826132a7565b908116608084015260408401359061333f826132a7565b80821660a085015250509392505050565b813561335b816132a7565b65ffffffffffff8116905081548165ffffffffffff1982161783556020840135613384816132a7565b6bffffffffffff0000000000008160301b16905080836bffffffffffffffffffffffff1984161717845560408501356133bc816132a7565b71ffffffffffffffffffffffffffffffffffff19929092169092179190911760609190911b65ffffffffffff60601b1617905550565b60008251613404818460208701612f3b565b9190910192915050565b602081526000611ba26020830184612f5f56fe376edc560ea860a32a0901221b27378efed8b81848b633dc691de36b0a0376e9416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000812000a",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106102115760003560e01c806370af924311610125578063af640d0f116100ad578063c20382361161007c578063c20382361461054e578063d869759814610589578063e2481dbd146105b0578063eec47d60146105ba578063ef63d57c146105c457600080fd5b8063af640d0f146104fa578063b41c97c814610504578063ba81559014610517578063bee0b2571461053b57600080fd5b80638bcd3e93116100f45780638bcd3e931461041357806391d14854146104275780639c2f4aa91461043a578063a5fd9dc81461044d578063ac9650d8146104da57600080fd5b806370af9243146103b157806373e93829146103c45780638456cb59146103d757806387aa1f65146103df57600080fd5b80633f4ba83a116101a8578063622b74a711610177578063622b74a71461033c57806363727fc21461034f57806365c05dcd1461037657806366258068146103895780636b33e45d1461039e57600080fd5b80633f4ba83a146103065780634b63885a1461030e5780635c975abb146103215780635f3e849f1461032957600080fd5b80632772ce9d116101e45780632772ce9d1461028b5780632a7a0c681461029e5780632e1a7d4d146102c557806338d52e0f146102da57600080fd5b806301ffc9a7146102165780631e26571f1461023e578063227102a614610251578063248a9ca314610278575b600080fd5b610229610224366004612caf565b6105d7565b60405190151581526020015b60405180910390f35b610162545b604051908152602001610235565b6102437ff28c151dcc22c5bfb460fbc387993d6c0d1c1245ca20aca5f3cbd33f33041eb181565b610243610286366004612cd9565b610602565b610229610299366004612cd9565b6106f4565b6102437f000000000000000000000000000000000000000000000000000000000000000081565b6102d86102d3366004612cd9565b6107bc565b005b6101c9546102ee906001600160a01b031681565b6040516001600160a01b039091168152602001610235565b6102d8610827565b61022961031c366004612d07565b6109b6565b610229610ac0565b6102d8610337366004612d24565b610b59565b6102d861034a366004612d73565b610cca565b6102ee7f000000000000000000000000000000000000000000000000000000000000000081565b6102d8610384366004612dac565b610d88565b61024360008051602061342283398151915281565b6102d86103ac366004612d07565b61122f565b6102d86103bf366004612dde565b61130e565b6102d86103d2366004612e18565b6116b3565b6102d861191f565b6102436103ed366004612e6a565b6001600160a01b031660009081526101cd60209081526040808320938352929052205490565b6101ca546102ee906001600160a01b031681565b610229610435366004612e6a565b611aab565b6102d8610448366004612e9a565b611ba9565b6104a9604080516060810182526000808252602082018190529181019190915250604080516060810182526101cb5465ffffffffffff8082168352600160301b820481166020840152600160601b909104169181019190915290565b60408051825165ffffffffffff90811682526020808501518216908301529282015190921690820152606001610235565b6104ed6104e8366004612ec6565b611ead565b6040516102359190612f8b565b6102436101c85481565b6102d8610512366004612fed565b611fa2565b610229610525366004612cd9565b60009081526101cc602052604090205460ff1690565b6102d8610549366004612dde565b611ff3565b61024361055c366004612e6a565b60008281526101cc602090815260408083206001600160a01b038516845260020190915290205492915050565b6102437f0b8459b722d944f0580da74c767d2dcae280ce16527c19c825b302a24e208dfd81565b6102436101c75481565b6102436101615481565b6102436105d2366004612cd9565b61207b565b60006001600160e01b0319821663faf0751760e01b14806105fc57506105fc826120f1565b92915050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015610662573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106869190613009565b6001600160a01b031663248a9ca3836040518263ffffffff1660e01b81526004016106b391815260200190565b602060405180830381865afa1580156106d0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105fc9190613026565b6000610704610161546104353390565b8061073457506107347ff28c151dcc22c5bfb460fbc387993d6c0d1c1245ca20aca5f3cbd33f33041eb133611aab565b6107ab5760405162461bcd60e51b815260206004820152603860248201527f477561726461626c653a20796f7520646f206e6f74206861766520746865207260448201527f6571756972656420726f6c657320746f20646f2074686973000000000000000060648201526084015b60405180910390fd5b6107b482612116565b506001919050565b336107d560008051602061342283398151915282611aab565b806107e857506107e86101c75482611aab565b6108045760405162461bcd60e51b81526004016107a29061303f565b6101ca546101c954610823916001600160a01b0391821691168461215b565b5050565b6000339050806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ee97f7f36040518163ffffffff1660e01b8152600401602060405180830381865afa158015610894573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906108b89190613009565b6001600160a01b0316148061095f5750806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632d37ead56040518163ffffffff1660e01b8152600401602060405180830381865afa158015610930573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109549190613009565b6001600160a01b0316145b6109ab5760405162461bcd60e51b815260206004820152601f60248201527f534f4d413a204d4153544552206f7220535542204d4153544552206f6e6c790060448201526064016107a2565b6109b36121be565b50565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637ceab3b16040518163ffffffff1660e01b8152600401602060405180830381865afa158015610a16573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3a9190613009565b6001600160a01b031663253bd7b783610a536101625490565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381865afa158015610a9c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105fc919061306d565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316635c975abb6040518163ffffffff1660e01b8152600401602060405180830381865afa158015610b20573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b44919061306d565b80610b5457505060335460ff1690565b905090565b7f0b8459b722d944f0580da74c767d2dcae280ce16527c19c825b302a24e208dfd610b848133611aab565b610c005760405162461bcd60e51b815260206004820152604160248201527f536f6d61416363657373436f6e74726f6c3a2063616c6c657220646f6573206e60448201527f6f7420686176652074686520617070726f70726961746520617574686f7269746064820152607960f81b608482015260a4016107a2565b610c0c61012d85612210565b15610c595760405162461bcd60e51b815260206004820152601c60248201527f546f6b656e5265636f766572793a20494e56414c49445f544f4b454e0000000060448201526064016107a2565b610c6d6001600160a01b038516848461215b565b336001600160a01b0316836001600160a01b0316856001600160a01b03167fca574176b1d34032f40f7fb0c519eae468b4535ebf7b27f986a7b6e2fa53d53885604051610cbc91815260200190565b60405180910390a450505050565b33610ce360008051602061342283398151915282611aab565b80610cf65750610cf66101c75482611aab565b610d125760405162461bcd60e51b81526004016107a29061303f565b60008481526101cc60205260409020805460ff1916831515178155600101839055336001600160a01b0316847f3bd81bf3f98792a0019c2cfcd3b4dc17e4034d2aa84e7b527a868b462c4cd5708585604051610d7a9291909182521515602082015260400190565b60405180910390a350505050565b610d90612232565b60026101955403610db35760405162461bcd60e51b81526004016107a29061308a565b60026101955560008481526101cc6020908152604080832086845281842082516060810184526101cb5465ffffffffffff8082168352600160301b8204811683880152600160601b90910416818501528351637ceab3b160e01b8152935192959194909333936001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001692637ceab3b192600480820193918290030181865afa158015610e6a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e8e9190613009565b9050878903610ed65760405162461bcd60e51b81526020600482015260146024820152734c6f636b64726f703a2053414d4520504f4f4c5360601b60448201526064016107a2565b42836000015165ffffffffffff161115610f025760405162461bcd60e51b81526004016107a2906130c1565b826040015165ffffffffffff164210610f4f5760405162461bcd60e51b815260206004820152600f60248201526e131bd8dad91c9bdc0e881153911151608a1b60448201526064016107a2565b60008711610f6f5760405162461bcd60e51b81526004016107a2906130f0565b845460ff16610f905760405162461bcd60e51b81526004016107a29061311f565b835460ff16610fb15760405162461bcd60e51b81526004016107a29061311f565b6001600160a01b038216600090815260028601602052604090205487111561101b5760405162461bcd60e51b815260206004820152601e60248201527f4c6f636b64726f703a20494e53554646494349454e542042414c414e4345000060448201526064016107a2565b600184015460405163253bd7b760e01b81526001600160a01b03848116600483015260248201929092529082169063253bd7b790604401602060405180830381865afa15801561106f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611093919061306d565b6110af5760405162461bcd60e51b81526004016107a290613156565b600185015460405163253bd7b760e01b81526001600160a01b03848116600483015260248201929092529082169063253bd7b790604401602060405180830381865afa158015611103573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611127919061306d565b6111435760405162461bcd60e51b81526004016107a290613156565b6001600160a01b03821660009081526002860160205260408120805489929061116d9084906131a3565b90915550506001600160a01b03821660009081526002850160205260408120805489929061119c9084906131b6565b90915550506001600160a01b038216600090815260028601602052604081205490036111ce576111ce8960008461227c565b6111d988878461227c565b336001600160a01b0316888a7fb2f65a0d3a3bd76a45462d4c8f89fdfa1feb6480eade68dd855f6d1594e02f548a60405161121691815260200190565b60405180910390a4505060016101955550505050505050565b6000339050806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ee97f7f36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561129c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c09190613009565b6001600160a01b0316146113055760405162461bcd60e51b815260206004820152600c60248201526b29a7a6a09d1026a0a9aa22a960a11b60448201526064016107a2565b610823826123e8565b611316612232565b600261019554036113395760405162461bcd60e51b81526004016107a29061308a565b60026101955560008281526101cc602090815260409182902082516060810184526101cb5465ffffffffffff8082168352600160301b8204811694830194909452600160601b90049092169282019290925233836113a95760405162461bcd60e51b81526004016107a2906130f0565b825460ff166113ca5760405162461bcd60e51b81526004016107a29061311f565b42826000015165ffffffffffff1611156113f65760405162461bcd60e51b81526004016107a2906130c1565b816020015165ffffffffffff16421061145b5760405162461bcd60e51b815260206004820152602160248201527f4c6f636b64726f703a2052454d4f56452044454c45474154494f4e20454e44456044820152601160fa1b60648201526084016107a2565b6001600160a01b03811660009081526002840160205260409020548411156114d95760405162461bcd60e51b815260206004820152602b60248201527f4c6f636b64726f703a20494e53554646494349454e542057495448445241574160448201526a424c452042414c414e434560a81b60648201526084016107a2565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637ceab3b16040518163ffffffff1660e01b8152600401602060405180830381865afa158015611537573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061155b9190613009565b600184015460405163253bd7b760e01b81526001600160a01b038481166004830152602482019290925291169063253bd7b790604401602060405180830381865afa1580156115ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115d2919061306d565b6115ee5760405162461bcd60e51b81526004016107a290613156565b6001600160a01b0381166000908152600284016020526040812080548692906116189084906131a3565b90915550506001600160a01b0381166000908152600284016020526040812054900361164a5761164a8560008361227c565b6101c954611662906001600160a01b0316828661215b565b806001600160a01b0316857f644cee4e47f18bc65ef88c93f336bc6c4dfeb3ff6e04753a684294bde64c02fe8660405161169e91815260200190565b60405180910390a35050600161019555505050565b600054610100900460ff16158080156116d35750600054600160ff909116105b806116ed5750303b1580156116ed575060005460ff166001145b6117505760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201526d191e481a5b9a5d1a585b1a5e995960921b60648201526084016107a2565b6000805460ff191660011790558015611773576000805461ff0019166101001790555b6001600160a01b0384166117c95760405162461bcd60e51b815260206004820152601760248201527f4c6f636b64726f703a20494e56414c494420415353455400000000000000000060448201526064016107a2565b6001600160a01b03831661181f5760405162461bcd60e51b815260206004820152601d60248201527f4c6f636b64726f703a20494e56414c494420574954484452415720544f00000060448201526064016107a2565b6040516bffffffffffffffffffffffff193060601b166020820152600080516020613422833981519152603482015260540160408051601f1981840301815291905280516020909101206101c7556118756124ab565b61187d6124e3565b60408051600081526020810190915261189590612512565b6101c88590556101c980546001600160a01b0319166001600160a01b0386161790556118c084612584565b6118c9836123e8565b6118d282612590565b8015611918576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b5050505050565b6000339050806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663ee97f7f36040518163ffffffff1660e01b8152600401602060405180830381865afa15801561198c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906119b09190613009565b6001600160a01b03161480611a575750806001600160a01b03167f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316632d37ead56040518163ffffffff1660e01b8152600401602060405180830381865afa158015611a28573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a4c9190613009565b6001600160a01b0316145b611aa35760405162461bcd60e51b815260206004820152601f60248201527f534f4d413a204d4153544552206f7220535542204d4153544552206f6e6c790060448201526064016107a2565b6109b36126a4565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166371907f176040518163ffffffff1660e01b8152600401602060405180830381865afa158015611b0b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611b2f9190613009565b604051632474521560e21b8152600481018590526001600160a01b03848116602483015291909116906391d1485490604401602060405180830381865afa158015611b7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ba2919061306d565b9392505050565b611bb1612232565b60026101955403611bd45760405162461bcd60e51b81526004016107a29061308a565b60026101955560008381526101cc602052604090203383611c075760405162461bcd60e51b81526004016107a2906130f0565b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316637ceab3b16040518163ffffffff1660e01b8152600401602060405180830381865afa158015611c65573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c899190613009565b600183015460405163253bd7b760e01b81526001600160a01b038481166004830152602482019290925291169063253bd7b790604401602060405180830381865afa158015611cdc573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d00919061306d565b611d1c5760405162461bcd60e51b81526004016107a290613156565b611d2785848361227c565b6101c9546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015611d71573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d959190613026565b6101c954909150611db1906001600160a01b03168330886126e1565b6101c9546040516370a0823160e01b815230600482015260009183916001600160a01b03909116906370a0823190602401602060405180830381865afa158015611dff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611e239190613026565b611e2d91906131a3565b6001600160a01b0384166000908152600286016020526040812080549293508392909190611e5c9084906131b6565b90915550506040805182815260208101879052339189917f90012d82ead9d81f13d637d22a6b16b951b87bc6d21fe62191ba59c677ad3c31910160405180910390a350506001610195555050505050565b60608167ffffffffffffffff811115611ec857611ec86131c9565b604051908082528060200260200182016040528015611efb57816020015b6060815260200190600190039081611ee65790505b50905060005b82811015611f9b57611f6b30858584818110611f1f57611f1f6131df565b9050602002810190611f3191906131f5565b8080601f01602080910402602001604051908101604052809392919081815260200183838082843760009201919091525061271f92505050565b828281518110611f7d57611f7d6131df565b60200260200101819052508080611f9390613243565b915050611f01565b5092915050565b33611fbb60008051602061342283398151915282611aab565b80611fce5750611fce6101c75482611aab565b611fea5760405162461bcd60e51b81526004016107a29061303f565b61082382612590565b611ffb612232565b60008281526101cc6020908152604080832033808552600290910190925282205490910361206b5760405162461bcd60e51b815260206004820152601960248201527f4c6f636b64726f703a205a45524f2044454c45474154494f4e0000000000000060448201526064016107a2565b61207683838361227c565b505050565b60008181526101cc602052604081205460ff166120da5760405162461bcd60e51b815260206004820152601960248201527f4c6f636b64726f703a20494e56414c49445f504f4f4c5f49440000000000000060448201526064016107a2565b5060009081526101cc602052604090206001015490565b60006001600160e01b03198216630e46e23b60e31b14806105fc57506105fc82612813565b61016254604080519182526020820183905233917f53f0b6b34c97fd1733ccb4b21aea7549d7ad3a83e6316864417b8cc1a9a9a807910160405180910390a261016255565b6040516001600160a01b03831660248201526044810182905261207690849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152612838565b6121c661290a565b6033805460ff191690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa335b6040516001600160a01b03909116815260200160405180910390a1565b6001600160a01b03811660009081526001830160205260408120541515611ba2565b61223a610ac0565b1561227a5760405162461bcd60e51b815260206004820152601060248201526f14185d5cd8589b194e881c185d5cd95960821b60448201526064016107a2565b565b604080516060810182526101cb5465ffffffffffff8082168352600160301b82048116602080850191909152600160601b909204168284015260008681526101cc909152919091205460ff166122e45760405162461bcd60e51b81526004016107a29061311f565b42816000015165ffffffffffff1611156123105760405162461bcd60e51b81526004016107a2906130c1565b806040015165ffffffffffff16421061235d5760405162461bcd60e51b815260206004820152600f60248201526e131bd8dad91c9bdc0e881153911151608a1b60448201526064016107a2565b6001600160a01b03821660008181526101cd60209081526040808320888452825291829020548251888152918201529081018590527fea5e3738029e424c3a571dd74b5c92e147926c2ae932385d93de0dfd06ecf3979060600160405180910390a2506001600160a01b031660009081526101cd602090815260408083209483529390529190912055565b6001600160a01b03811661243e5760405162461bcd60e51b815260206004820152601d60248201527f4c6f636b64726f703a20494e56414c494420574954484452415720544f00000060448201526064016107a2565b6101ca54604080516001600160a01b0392831681529183166020830152805133927fe9749b9cfc1a71f1d982618f21a5b03b6a9dd68c6d960ed823f56b6ac931ea5192908290030190a26101ca80546001600160a01b0319166001600160a01b0392909216919091179055565b6124b3612955565b6124bb612955565b6124c361297c565b6124cb612955565b6124d3612955565b6124db612955565b61227a612a0e565b600054610100900460ff1661250a5760405162461bcd60e51b81526004016107a29061325c565b61227a612a41565b600054610100900460ff166125395760405162461bcd60e51b81526004016107a29061325c565b60005b81518110156108235761257382828151811061255a5761255a6131df565b602002602001015161012d612a7090919063ffffffff16565b5061257d81613243565b905061253c565b61082361012d82612a70565b6125a060408201602083016132bb565b65ffffffffffff166125b560208301836132bb565b65ffffffffffff16111580156125f957506125d660608201604083016132bb565b65ffffffffffff166125ee60408301602084016132bb565b65ffffffffffff1611155b6126515760405162461bcd60e51b8152602060048201526024808201527f4c6f636b64726f703a20494e56414c4944204441544520434f4e4649475552416044820152632a24a7a760e11b60648201526084016107a2565b336001600160a01b03167f7ebb838336e80581c7cfbfa36679c470a20484d90c2b020ba53aeb2464e67eae6101cb8360405161268e9291906132d8565b60405180910390a2806101cb6120768282613350565b6126ac612232565b6033805460ff191660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586121f33390565b6040516001600160a01b03808516602483015283166044820152606481018290526127199085906323b872dd60e01b90608401612187565b50505050565b60606001600160a01b0383163b6127875760405162461bcd60e51b815260206004820152602660248201527f416464726573733a2064656c65676174652063616c6c20746f206e6f6e2d636f6044820152651b9d1c9858dd60d21b60648201526084016107a2565b600080846001600160a01b0316846040516127a291906133f2565b600060405180830381855af49150503d80600081146127dd576040519150601f19603f3d011682016040523d82523d6000602084013e6127e2565b606091505b509150915061280a828260405180606001604052806027815260200161344260279139612a85565b95945050505050565b60006001600160e01b03198216638757f10760e01b14806105fc57506105fc82612abe565b600061288d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b0316612ae39092919063ffffffff16565b80519091501561207657808060200190518101906128ab919061306d565b6120765760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016107a2565b612912610ac0565b61227a5760405162461bcd60e51b815260206004820152601460248201527314185d5cd8589b194e881b9bdd081c185d5cd95960621b60448201526064016107a2565b600054610100900460ff1661227a5760405162461bcd60e51b81526004016107a29061325c565b600054610100900460ff166129a35760405162461bcd60e51b81526004016107a29061325c565b6040516bffffffffffffffffffffffff193060601b1660208201527ff28c151dcc22c5bfb460fbc387993d6c0d1c1245ca20aca5f3cbd33f33041eb1603482015260540160408051601f1981840301815291905280516020909101206101615561227a600019612116565b600054610100900460ff16612a355760405162461bcd60e51b81526004016107a29061325c565b6033805460ff19169055565b600054610100900460ff16612a685760405162461bcd60e51b81526004016107a29061325c565b600161019555565b6000611ba2836001600160a01b038416612afa565b60608315612a94575081611ba2565b825115612aa45782518084602001fd5b8160405162461bcd60e51b81526004016107a2919061340e565b60006001600160e01b0319821663b55bd4f760e01b14806105fc57506105fc82612b49565b6060612af28484600085612b7e565b949350505050565b6000818152600183016020526040812054612b41575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556105fc565b5060006105fc565b60006001600160e01b0319821663d86f1ca160e01b14806105fc57506301ffc9a760e01b6001600160e01b03198316146105fc565b606082471015612bdf5760405162461bcd60e51b815260206004820152602660248201527f416464726573733a20696e73756666696369656e742062616c616e636520666f6044820152651c8818d85b1b60d21b60648201526084016107a2565b6001600160a01b0385163b612c365760405162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e747261637400000060448201526064016107a2565b600080866001600160a01b03168587604051612c5291906133f2565b60006040518083038185875af1925050503d8060008114612c8f576040519150601f19603f3d011682016040523d82523d6000602084013e612c94565b606091505b5091509150612ca4828286612a85565b979650505050505050565b600060208284031215612cc157600080fd5b81356001600160e01b031981168114611ba257600080fd5b600060208284031215612ceb57600080fd5b5035919050565b6001600160a01b03811681146109b357600080fd5b600060208284031215612d1957600080fd5b8135611ba281612cf2565b600080600060608486031215612d3957600080fd5b8335612d4481612cf2565b92506020840135612d5481612cf2565b929592945050506040919091013590565b80151581146109b357600080fd5b600080600060608486031215612d8857600080fd5b83359250602084013591506040840135612da181612d65565b809150509250925092565b60008060008060808587031215612dc257600080fd5b5050823594602084013594506040840135936060013592509050565b60008060408385031215612df157600080fd5b50508035926020909101359150565b600060608284031215612e1257600080fd5b50919050565b60008060008060c08587031215612e2e57600080fd5b843593506020850135612e4081612cf2565b92506040850135612e5081612cf2565b9150612e5f8660608701612e00565b905092959194509250565b60008060408385031215612e7d57600080fd5b823591506020830135612e8f81612cf2565b809150509250929050565b600080600060608486031215612eaf57600080fd5b505081359360208301359350604090920135919050565b60008060208385031215612ed957600080fd5b823567ffffffffffffffff80821115612ef157600080fd5b818501915085601f830112612f0557600080fd5b813581811115612f1457600080fd5b8660208260051b8501011115612f2957600080fd5b60209290920196919550909350505050565b60005b83811015612f56578181015183820152602001612f3e565b50506000910152565b60008151808452612f77816020860160208601612f3b565b601f01601f19169290920160200192915050565b6000602080830181845280855180835260408601915060408160051b870101925083870160005b82811015612fe057603f19888603018452612fce858351612f5f565b94509285019290850190600101612fb2565b5092979650505050505050565b600060608284031215612fff57600080fd5b611ba28383612e00565b60006020828403121561301b57600080fd5b8151611ba281612cf2565b60006020828403121561303857600080fd5b5051919050565b6020808252601490820152734c6f636b64726f703a2041444d494e204f4e4c5960601b604082015260600190565b60006020828403121561307f57600080fd5b8151611ba281612d65565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b602080825260159082015274131bd8dad91c9bdc0e881393d50814d51054951151605a1b604082015260600190565b602080825260159082015274131bd8dad91c9bdc0e8816915493c8105353d55395605a1b604082015260600190565b60208082526017908201527f4c6f636b64726f703a20504f4f4c2044495341424c4544000000000000000000604082015260600190565b60208082526017908201527f4c6f636b64726f703a204e4f2050524956494c45474553000000000000000000604082015260600190565b634e487b7160e01b600052601160045260246000fd5b818103818111156105fc576105fc61318d565b808201808211156105fc576105fc61318d565b634e487b7160e01b600052604160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6000808335601e1984360301811261320c57600080fd5b83018035915067ffffffffffffffff82111561322757600080fd5b60200191503681900382131561323c57600080fd5b9250929050565b6000600182016132555761325561318d565b5060010190565b6020808252602b908201527f496e697469616c697a61626c653a20636f6e7472616374206973206e6f74206960408201526a6e697469616c697a696e6760a81b606082015260800190565b65ffffffffffff811681146109b357600080fd5b6000602082840312156132cd57600080fd5b8135611ba2816132a7565b600060c082019050835465ffffffffffff8082168452808260301c166020850152808260601c16604085015284359150613311826132a7565b9081166060840152602084013590613328826132a7565b908116608084015260408401359061333f826132a7565b80821660a085015250509392505050565b813561335b816132a7565b65ffffffffffff8116905081548165ffffffffffff1982161783556020840135613384816132a7565b6bffffffffffff0000000000008160301b16905080836bffffffffffffffffffffffff1984161717845560408501356133bc816132a7565b71ffffffffffffffffffffffffffffffffffff19929092169092179190911760609190911b65ffffffffffff60601b1617905550565b60008251613404818460208701612f3b565b9190910192915050565b602081526000611ba26020830184612f5f56fe376edc560ea860a32a0901221b27378efed8b81848b633dc691de36b0a0376e9416464726573733a206c6f772d6c6576656c2064656c65676174652063616c6c206661696c6564a164736f6c6343000812000a",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
