{
  "_format": "hh-sol-artifact-1",
  "contractName": "ConvexClaimer",
  "sourceName": "contracts/liquidity/convex/ConvexClaimer.sol",
  "abi": [
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "who",
          "type": "address"
        },
        {
          "internalType": "bytes4",
          "name": "what",
          "type": "bytes4"
        },
        {
          "internalType": "uint256[]",
          "name": "how",
          "type": "uint256[]"
        }
      ],
      "name": "AuthSenderNotAllowed",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "a",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "aInflated",
          "type": "uint256"
        }
      ],
      "name": "FixedPointDivInternal",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "a",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "b",
          "type": "uint256"
        }
      ],
      "name": "FixedPointMulOverflow",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "FixedPointZeroDivision",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskAcceptanceInputLengthMismatch",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskAcceptanceTokenZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskAmountNotZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskClaimResultLengthMismatch",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskConnectorZero",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskGasNotInitialized",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "gasPrice",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "gasPriceLimit",
          "type": "uint256"
        }
      ],
      "name": "TaskGasPriceLimitExceeded",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "mode",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "date",
          "type": "uint256"
        }
      ],
      "name": "TaskInvalidAllowedDate",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "mode",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "window",
          "type": "uint256"
        }
      ],
      "name": "TaskInvalidAllowedWindow",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "mode",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "frequency",
          "type": "uint256"
        }
      ],
      "name": "TaskInvalidFrequency",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "mode",
          "type": "uint8"
        }
      ],
      "name": "TaskInvalidFrequencyMode",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "min",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "max",
          "type": "uint256"
        }
      ],
      "name": "TaskInvalidThresholdInput",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "period",
          "type": "uint256"
        }
      ],
      "name": "TaskInvalidVolumeLimitInput",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskPaused",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "id",
          "type": "bytes32"
        }
      ],
      "name": "TaskPreviousConnectorNotZero",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "priorityFee",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "priorityFeeLimit",
          "type": "uint256"
        }
      ],
      "name": "TaskPriorityFeeLimitExceeded",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "connectorId",
          "type": "bytes32"
        }
      ],
      "name": "TaskSameBalanceConnectors",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "smartVault",
          "type": "address"
        }
      ],
      "name": "TaskSmartVaultPriceOracleNotSet",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskThresholdTokenZero",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "currentTimestamp",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "expiration",
          "type": "uint256"
        }
      ],
      "name": "TaskTimeLockActive",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "TaskTokenNotAllowed",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "min",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "max",
          "type": "uint256"
        }
      ],
      "name": "TaskTokenThresholdNotMet",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskTokenZero",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "txCost",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "txCostLimit",
          "type": "uint256"
        }
      ],
      "name": "TaskTxCostLimitExceeded",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskTxCostLimitPctAboveOne",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "txCostPct",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "txCostLimitPct",
          "type": "uint256"
        }
      ],
      "name": "TaskTxCostLimitPctExceeded",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskUnpaused",
      "type": "error"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "limit",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "volume",
          "type": "uint256"
        }
      ],
      "name": "TaskVolumeLimitExceeded",
      "type": "error"
    },
    {
      "inputs": [],
      "name": "TaskVolumeLimitTokenZero",
      "type": "error"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "previous",
          "type": "bytes32"
        },
        {
          "indexed": true,
          "internalType": "bytes32",
          "name": "next",
          "type": "bytes32"
        }
      ],
      "name": "BalanceConnectorsSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "connector",
          "type": "address"
        }
      ],
      "name": "ConnectorSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "address",
          "name": "thresholdToken",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "min",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "max",
          "type": "uint256"
        }
      ],
      "name": "CustomTokenThresholdSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": true,
          "internalType": "address",
          "name": "limitToken",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "period",
          "type": "uint256"
        }
      ],
      "name": "CustomVolumeLimitSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "min",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "max",
          "type": "uint256"
        }
      ],
      "name": "DefaultTokenThresholdSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "limitToken",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "period",
          "type": "uint256"
        }
      ],
      "name": "DefaultVolumeLimitSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "Executed",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "gasPriceLimit",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "priorityFeeLimit",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "txCostLimit",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "txCostLimitPct",
          "type": "uint256"
        }
      ],
      "name": "GasLimitsSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "version",
          "type": "uint8"
        }
      ],
      "name": "Initialized",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "Paused",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "allowedAt",
          "type": "uint256"
        }
      ],
      "name": "TimeLockAllowedAtSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "uint8",
          "name": "mode",
          "type": "uint8"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "frequency",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "allowedAt",
          "type": "uint256"
        },
        {
          "indexed": false,
          "internalType": "uint256",
          "name": "window",
          "type": "uint256"
        }
      ],
      "name": "TimeLockSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "indexed": false,
          "internalType": "bool",
          "name": "added",
          "type": "bool"
        }
      ],
      "name": "TokensAcceptanceListSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [
        {
          "indexed": false,
          "internalType": "enum ITokenIndexedTask.TokensAcceptanceType",
          "name": "acceptanceType",
          "type": "uint8"
        }
      ],
      "name": "TokensAcceptanceTypeSet",
      "type": "event"
    },
    {
      "anonymous": false,
      "inputs": [],
      "name": "Unpaused",
      "type": "event"
    },
    {
      "inputs": [],
      "name": "EXECUTION_TYPE",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "authorizer",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        }
      ],
      "name": "call",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "connector",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "customTokenThreshold",
      "outputs": [
        {
          "internalType": "address",
          "name": "thresholdToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "min",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "max",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "customVolumeLimit",
      "outputs": [
        {
          "internalType": "address",
          "name": "limitToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "accrued",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "period",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "nextResetTime",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "defaultTokenThreshold",
      "outputs": [
        {
          "internalType": "address",
          "name": "thresholdToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "min",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "max",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "defaultVolumeLimit",
      "outputs": [
        {
          "internalType": "address",
          "name": "limitToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "accrued",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "period",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "nextResetTime",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getBalanceConnectors",
      "outputs": [
        {
          "internalType": "bytes32",
          "name": "previous",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "next",
          "type": "bytes32"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getGasLimits",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "gasPriceLimit",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "priorityFeeLimit",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "txCostLimit",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "txCostLimitPct",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "name": "getTaskAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "pure",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getTimeLock",
      "outputs": [
        {
          "internalType": "uint8",
          "name": "mode",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "frequency",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "allowedAt",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "window",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "getTokenThreshold",
      "outputs": [
        {
          "internalType": "address",
          "name": "thresholdToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "min",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "max",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "getTokensSource",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "getVolumeLimit",
      "outputs": [
        {
          "internalType": "address",
          "name": "limitToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "amount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "accrued",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "period",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "nextResetTime",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "components": [
            {
              "components": [
                {
                  "internalType": "address",
                  "name": "connector",
                  "type": "address"
                },
                {
                  "components": [
                    {
                      "components": [
                        {
                          "internalType": "address",
                          "name": "smartVault",
                          "type": "address"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "previousBalanceConnectorId",
                          "type": "bytes32"
                        },
                        {
                          "internalType": "bytes32",
                          "name": "nextBalanceConnectorId",
                          "type": "bytes32"
                        }
                      ],
                      "internalType": "struct BaseTask.BaseConfig",
                      "name": "baseConfig",
                      "type": "tuple"
                    },
                    {
                      "components": [
                        {
                          "internalType": "uint256",
                          "name": "gasPriceLimit",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "priorityFeeLimit",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "txCostLimit",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "txCostLimitPct",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct GasLimitedTask.GasLimitConfig",
                      "name": "gasLimitConfig",
                      "type": "tuple"
                    },
                    {
                      "components": [
                        {
                          "internalType": "uint8",
                          "name": "mode",
                          "type": "uint8"
                        },
                        {
                          "internalType": "uint256",
                          "name": "frequency",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "allowedAt",
                          "type": "uint256"
                        },
                        {
                          "internalType": "uint256",
                          "name": "window",
                          "type": "uint256"
                        }
                      ],
                      "internalType": "struct TimeLockedTask.TimeLockConfig",
                      "name": "timeLockConfig",
                      "type": "tuple"
                    },
                    {
                      "components": [
                        {
                          "internalType": "enum ITokenIndexedTask.TokensAcceptanceType",
                          "name": "acceptanceType",
                          "type": "uint8"
                        },
                        {
                          "internalType": "address[]",
                          "name": "tokens",
                          "type": "address[]"
                        }
                      ],
                      "internalType": "struct TokenIndexedTask.TokenIndexConfig",
                      "name": "tokenIndexConfig",
                      "type": "tuple"
                    },
                    {
                      "components": [
                        {
                          "components": [
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "min",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "max",
                              "type": "uint256"
                            }
                          ],
                          "internalType": "struct TokenThresholdTask.Threshold",
                          "name": "defaultThreshold",
                          "type": "tuple"
                        },
                        {
                          "components": [
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "components": [
                                {
                                  "internalType": "address",
                                  "name": "token",
                                  "type": "address"
                                },
                                {
                                  "internalType": "uint256",
                                  "name": "min",
                                  "type": "uint256"
                                },
                                {
                                  "internalType": "uint256",
                                  "name": "max",
                                  "type": "uint256"
                                }
                              ],
                              "internalType": "struct TokenThresholdTask.Threshold",
                              "name": "threshold",
                              "type": "tuple"
                            }
                          ],
                          "internalType": "struct TokenThresholdTask.CustomThresholdConfig[]",
                          "name": "customThresholdConfigs",
                          "type": "tuple[]"
                        }
                      ],
                      "internalType": "struct TokenThresholdTask.TokenThresholdConfig",
                      "name": "tokenThresholdConfig",
                      "type": "tuple"
                    },
                    {
                      "components": [
                        {
                          "components": [
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "internalType": "uint256",
                              "name": "amount",
                              "type": "uint256"
                            },
                            {
                              "internalType": "uint256",
                              "name": "period",
                              "type": "uint256"
                            }
                          ],
                          "internalType": "struct VolumeLimitedTask.VolumeLimitParams",
                          "name": "defaultVolumeLimit",
                          "type": "tuple"
                        },
                        {
                          "components": [
                            {
                              "internalType": "address",
                              "name": "token",
                              "type": "address"
                            },
                            {
                              "components": [
                                {
                                  "internalType": "address",
                                  "name": "token",
                                  "type": "address"
                                },
                                {
                                  "internalType": "uint256",
                                  "name": "amount",
                                  "type": "uint256"
                                },
                                {
                                  "internalType": "uint256",
                                  "name": "period",
                                  "type": "uint256"
                                }
                              ],
                              "internalType": "struct VolumeLimitedTask.VolumeLimitParams",
                              "name": "volumeLimit",
                              "type": "tuple"
                            }
                          ],
                          "internalType": "struct VolumeLimitedTask.CustomVolumeLimitConfig[]",
                          "name": "customVolumeLimitConfigs",
                          "type": "tuple[]"
                        }
                      ],
                      "internalType": "struct VolumeLimitedTask.VolumeLimitConfig",
                      "name": "volumeLimitConfig",
                      "type": "tuple"
                    }
                  ],
                  "internalType": "struct Task.TaskConfig",
                  "name": "taskConfig",
                  "type": "tuple"
                }
              ],
              "internalType": "struct BaseConvexTask.BaseConvexConfig",
              "name": "baseConvexConfig",
              "type": "tuple"
            }
          ],
          "internalType": "struct ConvexClaimer.ConvexClaimConfig",
          "name": "config",
          "type": "tuple"
        }
      ],
      "name": "initialize",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "isPaused",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        }
      ],
      "name": "isTokenAllowed",
      "outputs": [
        {
          "internalType": "bool",
          "name": "",
          "type": "bool"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "pause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "bytes32",
          "name": "previous",
          "type": "bytes32"
        },
        {
          "internalType": "bytes32",
          "name": "next",
          "type": "bytes32"
        }
      ],
      "name": "setBalanceConnectors",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "newConnector",
          "type": "address"
        }
      ],
      "name": "setConnector",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "thresholdToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "min",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "max",
          "type": "uint256"
        }
      ],
      "name": "setCustomTokenThreshold",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "token",
          "type": "address"
        },
        {
          "internalType": "address",
          "name": "limitToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "limitAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "limitPeriod",
          "type": "uint256"
        }
      ],
      "name": "setCustomVolumeLimit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "thresholdToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "min",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "max",
          "type": "uint256"
        }
      ],
      "name": "setDefaultTokenThreshold",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address",
          "name": "limitToken",
          "type": "address"
        },
        {
          "internalType": "uint256",
          "name": "limitAmount",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "limitPeriod",
          "type": "uint256"
        }
      ],
      "name": "setDefaultVolumeLimit",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint256",
          "name": "newGasPriceLimit",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "newPriorityFeeLimit",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "newTxCostLimit",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "newTxCostLimitPct",
          "type": "uint256"
        }
      ],
      "name": "setGasLimits",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "uint8",
          "name": "mode",
          "type": "uint8"
        },
        {
          "internalType": "uint256",
          "name": "frequency",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "allowedAt",
          "type": "uint256"
        },
        {
          "internalType": "uint256",
          "name": "window",
          "type": "uint256"
        }
      ],
      "name": "setTimeLock",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "address[]",
          "name": "tokens",
          "type": "address[]"
        },
        {
          "internalType": "bool[]",
          "name": "added",
          "type": "bool[]"
        }
      ],
      "name": "setTokensAcceptanceList",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [
        {
          "internalType": "enum ITokenIndexedTask.TokensAcceptanceType",
          "name": "newTokensAcceptanceType",
          "type": "uint8"
        }
      ],
      "name": "setTokensAcceptanceType",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "smartVault",
      "outputs": [
        {
          "internalType": "address",
          "name": "",
          "type": "address"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "tokensAcceptanceType",
      "outputs": [
        {
          "internalType": "enum ITokenIndexedTask.TokensAcceptanceType",
          "name": "",
          "type": "uint8"
        }
      ],
      "stateMutability": "view",
      "type": "function"
    },
    {
      "inputs": [],
      "name": "unpause",
      "outputs": [],
      "stateMutability": "nonpayable",
      "type": "function"
    }
  ],
  "bytecode": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b614a0680620000f36000396000f3fe608060405234801561001057600080fd5b50600436106101f05760003560e01c80635ea54eee1161010f578063a5900c4d116100a2578063d3feb60211610071578063d3feb602146105d1578063d45a76cf146105e4578063e6b5be98146105f7578063f9eaee0d1461060a57600080fd5b8063a5900c4d14610539578063b187bd2614610593578063c267621e146105b0578063d09edf31146105b857600080fd5b80638456cb59116100de5780638456cb59146104d757806390333ba8146104df578063a0c3774f146104f2578063a33741771461050657600080fd5b80635ea54eee146104395780636aacaad8146104655780637125590a146104b157806383f3084f146104c457600080fd5b80633bd9ef28116101875780634a45a3a8116101565780634a45a3a8146103865780634fd49efd146103bb57806351a424b1146103e65780635670e2ce1461041e57600080fd5b80633bd9ef281461033e5780633f4ba83a14610351578063423a4b401461035957806342d4693e1461036c57600080fd5b806321972384116101c35780632197238414610261578063221a8c68146102745780632384c32d1461031857806330eae5721461032b57600080fd5b80630fe105e8146101f557806310188aef1461020a5780631047c5301461021d578063119a5e9614610230575b600080fd5b610208610203366004613d25565b61061d565b005b610208610218366004613d73565b610656565b61020861022b366004614158565b610683565b6102386107a9565b6040805160ff909516855260208501939093529183015260608201526080015b60405180910390f35b61020861026f3660046142c4565b6107e0565b6102e6610282366004613d73565b6001600160a01b039081166000908152601b6020908152604091829020825160a08101845281549094168085526001820154928501839052600282015493850184905260038201546060860181905260049092015460809095018590529491939091565b604080516001600160a01b0390961686526020860194909452928401919091526060830152608082015260a001610258565b610208610326366004614388565b610890565b6102086103393660046143ce565b6108bf565b61020861034c3660046143e9565b6108fc565b610208610a6a565b610208610367366004614388565b610af1565b600f546103799060ff1681565b604051610258919061442b565b6103ad7ffdad2f36e879e69005ffdaec159291c5f49a7227dd078e9fa6c6f64abf431bad81565b604051908152602001610258565b6001546103ce906001600160a01b031681565b6040516001600160a01b039091168152602001610258565b6103f96103f4366004613d73565b610b20565b604080516001600160a01b039094168452602084019290925290820152606001610258565b60025460035460408051928352602083019190915201610258565b600654600754600854600954604080519485526020850193909352918301526060820152608001610258565b6102e66040805160a0810182526016546001600160a01b03168082526017546020830181905260185493830184905260195460608401819052601a546080909401849052919490939290565b6102086104bf366004614453565b610b49565b601c546103ce906001600160a01b031681565b610208610b74565b6102086104ed366004614475565b610be6565b6103ad610500366004613d73565b50600090565b6103f9604080516060810182526012546001600160a01b0316808252601354602083018190526014549290930182905292565b6103f9610547366004613d73565b6001600160a01b03808216600090815260156020908152604091829020825160608101845281549094168085526001820154928501839052600290910154939092018390529093909250565b6004546105a09060ff1681565b6040519015158152602001610258565b6103ce610c19565b6000546103ce906201000090046001600160a01b031681565b6102086105df366004614475565b610ca5565b6102e66105f2366004613d73565b610cd2565b6102086106053660046144aa565b610d41565b6105a0610618366004613d73565b610d70565b61062c8460ff16848484610dbb565b610643336000356001600160e01b03191683610e66565b61064f85858585610ead565b5050505050565b61065f81611152565b610676336000356001600160e01b03191683610e66565b61067f8261116c565b5050565b600054610100900460ff16158080156106a35750600054600160ff909116105b806106bd5750303b1580156106bd575060005460ff166001145b6107345760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff191660011790558015610757576000805461ff0019166101001790555b61076082611203565b801561067f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b600a5460009081908190819060ff1660028111156107c9576107c9614415565b600b54600c54600e54935093509350935090919293565b6107f6336000356001600160e01b031916611273565b8051825114610831576040517f5d32021a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b825181101561088b57610879838281518110610852576108526144dc565b602002602001015183838151811061086c5761086c6144dc565b602002602001015161128f565b8061088381614508565b915050610834565b505050565b61089c84848484611339565b6108b3336000356001600160e01b03191683610e66565b61064f858585856113a2565b6108dc8160018111156108d4576108d4614415565b60ff1661145b565b6108f3336000356001600160e01b03191683610e66565b61067f826114a2565b61090682826114ff565b61091d336000356001600160e01b03191683610e66565b8160000361092a57600091505b610934838361156e565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e83409a00000000000000000000000000000000000000000000000000000000179052600154601c5493517f1cff79cd000000000000000000000000000000000000000000000000000000008152929360009391831692631cff79cd926109f192909116908690600401614571565b6000604051808303816000875af1158015610a10573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a389190810190614593565b905060008082806020019051810190610a519190614682565b91509150610a61878784846115b0565b50505050505050565b610a80336000356001600160e01b031916611273565b60045460ff16610abc576040517f9e6558bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004805460ff191690556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a1565b610afd84848484611339565b610b14336000356001600160e01b03191683610e66565b61064f85858585611650565b600080600080610b2f85611710565b805160208201516040909201519097919650945092505050565b610b53828261179b565b610b6a336000356001600160e01b03191683610e66565b61088b83836117f5565b610b8a336000356001600160e01b031916611273565b60045460ff1615610bae5760405163181e462560e31b815260040160405180910390fd5b6004805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b610bf183838361183a565b610c08336000356001600160e01b03191683610e66565b610c138484846118cc565b50505050565b601c54604080517fc6def07600000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163c6def0769160048083019260209291908290030181865afa158015610c7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca09190614747565b905090565b610cb083838361183a565b610cc7336000356001600160e01b03191683610e66565b610c13848484611922565b600080600080600080610ce48761197e565b6040805160a08101825282546001600160a01b031680825260018401546020830181905260028501549383018490526003850154606084018190526004909501546080909301839052909b909a5091985091965090945092505050565b610d4d84848484610dbb565b610d64336000356001600160e01b03191683610e66565b61064f858585856119b2565b6001600160a01b038116600090815260116020526040812054600f549015159060019060ff1681811115610da657610da6614415565b14610db2578015610db4565b805b9392505050565b60408051600480825260a08201909252606091602082016080803683370190505090508481600081518110610df257610df26144dc565b6020026020010181815250508381600181518110610e1257610e126144dc565b6020026020010181815250508281600281518110610e3257610e326144dc565b6020026020010181815250508181600381518110610e5257610e526144dc565b602002602001018181525050949350505050565b610e71838383611a4d565b61088b578282826040517f960c80da00000000000000000000000000000000000000000000000000000000815260040161072b9392919061479f565b60ff8416610f5e576000811180610ec45750600082115b15610f595782600003610ef65760405163bea499cb60e01b815260ff851660048201526024810184905260440161072b565b801580610f0257508281115b15610f2c57604051639e12fccf60e01b815260ff851660048201526024810182905260440161072b565b81600003610f5957604051635686bf5960e11b815260ff851660048201526024810183905260440161072b565b6110bb565b82600003610f8b5760405163bea499cb60e01b815260ff851660048201526024810184905260440161072b565b801580610fa35750610fa06224ea00846147d1565b81115b15610fcd57604051639e12fccf60e01b815260ff851660048201526024810182905260440161072b565b81600003610ffa57604051635686bf5960e11b815260ff851660048201526024810183905260440161072b565b60001960ff85160161103c57601c61101183611aeb565b1115610f5957604051635686bf5960e11b815260ff851660048201526024810183905260440161072b565b60011960ff8516016110845761105182611b02565b61105a83611aeb565b14610f5957604051635686bf5960e11b815260ff851660048201526024810183905260440161072b565b6040517f33a738bc00000000000000000000000000000000000000000000000000000000815260ff8516600482015260240161072b565b8360ff1660028111156110d0576110d0614415565b600a805460ff191660018360028111156110ec576110ec614415565b0217905550600b839055600c829055600e8190556040805160ff8616815260208101859052908101839052606081018290527f182fd6fa2a8560221614c1396dd4fcc78d26dfacf821a6afb61d25876057e412906080015b60405180910390a150505050565b6060611166826001600160a01b031661145b565b92915050565b6001600160a01b0381166111ac576040517f05579e5400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601c805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040517f47fc0d82886e91fbb050eba4ff32c0c0d7fa2b4efffceba283e42975d9c894ff90600090a250565b600054610100900460ff1661125c5760405162461bcd60e51b815260206004820152602b60248201526000805160206149b183398151915260448201526a6e697469616c697a696e6760a81b606482015260840161072b565b805161126790611b25565b61127081611b94565b50565b60408051600081526020810190915261067f9083908390610e66565b6001600160a01b0382166112cf576040517fc41a13ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806112e4576112df601083611bed565b6112ef565b6112ef601083611c02565b50816001600160a01b03167f6264362e9de26efefda321dfaeb4e4a9090deef40c5435fad8e9e2e306889a1c8260405161132d911515815260200190565b60405180910390a25050565b60408051600480825260a0820190925260609160208201608080368337019050509050846001600160a01b031681600081518110611379576113796144dc565b602002602001018181525050836001600160a01b031681600181518110610e1257610e126144dc565b6001600160a01b0384166113e2576040517fe7ba3e4a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038416600090815260156020526040902061140690848484611c17565b604080516001600160a01b03858116825260208201859052918101839052908516907ff099617c054d3a65e02a9c3b786f23cc03d5982bc7cfae84dff0408049cf17079060600160405180910390a250505050565b604080516001808252818301909252606091602080830190803683370190505090508181600081518110611491576114916144dc565b602002602001018181525050919050565b600f805482919060ff1916600183818111156114c0576114c0614415565b02179055507f216b6a9618d607ba436d0f2e17e9a83e70929adff805ac2385d67401360e551a816040516114f4919061442b565b60405180910390a150565b6040805160028082526060808301845292602083019080368337019050509050826001600160a01b03168160008151811061153c5761153c6144dc565b602002602001018181525050818160018151811061155c5761155c6144dc565b60200260200101818152505092915050565b6115788282611cf4565b801561067f576040517f43d2739400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80518251146115eb576040517f4988153400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b82518110156116455761163383828151811061160c5761160c6144dc565b6020026020010151838381518110611626576116266144dc565b6020026020010151611d3e565b8061163d81614508565b9150506115ee565b50610c138484611dc4565b6001600160a01b038416611690576040517f1de0c9c700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166000908152601b602052604090206116b490848484611dce565b826001600160a01b0316846001600160a01b03167f1b5c5e27ed5443e409bae85849d41d7bf12d5352e8fddb3728b6408f836e14488484604051611702929190918252602082015260400190565b60405180910390a350505050565b61173d604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b6001600160a01b0380831660009081526015602052604090208054909116156117665780611769565b60125b6040805160608101825282546001600160a01b0316815260018301546020820152600290920154908201529392505050565b60408051600280825260608083018452926020830190803683370190505090508260001c816000815181106117d2576117d26144dc565b6020026020010181815250508160001c8160018151811061155c5761155c6144dc565b8115611830576040517fade7e1680000000000000000000000000000000000000000000000000000000081526004810183905260240161072b565b61067f8282611f3a565b60408051600380825260808201909252606091602082018380368337019050509050836001600160a01b031681600081518110611879576118796144dc565b6020026020010181815250508281600181518110611899576118996144dc565b60200260200101818152505081816002815181106118b9576118b96144dc565b6020026020010181815250509392505050565b6118d96016848484611dce565b60408051838152602081018390526001600160a01b038516917f6324b5f18e615697a2b44f16d7a649deb0bbbc7cb09dad4c610306105730e7d9910160405180910390a2505050565b61192f6012848484611c17565b604080516001600160a01b0385168152602081018490529081018290527fa80953bdc344b2ebd0bcdd001a3418a8fd1b858bdecf12a4ba5a9366ad65d3459060600160405180910390a1505050565b6001600160a01b038082166000908152601b6020526040812080549192909116156119a95780610db4565b60169392505050565b670de0b6b3a76400008111156119f4576040517fce57496100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068490556007839055600882905560098190556040805185815260208101859052908101839052606081018290527f746dc5eb53c5de07c40b06d428506d6982ea10c423ac2875abfc44038927d69190608001611144565b600080546040517f28522895000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b031690632852289590611aa29087903090889088906004016147e8565b602060405180830381865afa158015611abf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae3919061482e565b949350505050565b6000611ae3611afd6201518084614861565b611fbd565b60008080611b16611afd6201518086614861565b5091509150611ae38282612059565b600054610100900460ff16611b7e5760405162461bcd60e51b815260206004820152602b60248201526000805160206149b183398151915260448201526a6e697469616c697a696e6760a81b606482015260840161072b565b611b8b81602001516120df565b6112708161218c565b600054610100900460ff166112705760405162461bcd60e51b815260206004820152602b60248201526000805160206149b183398151915260448201526a6e697469616c697a696e6760a81b606482015260840161072b565b6000610db4836001600160a01b0384166121f0565b6000610db4836001600160a01b0384166122ea565b60006001600160a01b038416158015611c2e575082155b8015611c38575081155b905060006001600160a01b03851615801590611c5c5750821580611c5c5750838310155b905081158015611c6a575080155b15611cba576040517fca1f04830000000000000000000000000000000000000000000000000000000081526001600160a01b0386166004820152602481018590526044810184905260640161072b565b5050835473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03939093169290921783556001830155600290910155565b611cfe8282612339565b6001600160a01b03821661067f576040517fc0e0f12200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003541561067f576001805460035460405163eb056bbb60e01b815260048101919091526001600160a01b03858116602483015260448201859052606482019390935291169063eb056bbb906084015b600060405180830381600087803b158015611da857600080fd5b505af1158015611dbc573d6000803e3d6000fd5b505050505050565b61067f828261237f565b60006001600160a01b038416158015611de5575082155b8015611def575081155b905060006001600160a01b03851615801590611e0b5750600084115b8015611e175750600083115b905081158015611e25575080155b15611e75576040517ff5deb5dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0386166004820152602481018590526044810184905260640161072b565b60038601839055600186018490558115611e9c576000600287018190556004870155611f08565b8560040154600003611ec35760006002870155611eb98342614875565b6004870155611f08565b85546001600160a01b03868116911614611f08578554600090611eef906001600160a01b0316876123a7565b6002880154909150611f0190826123b3565b6002880155505b5050835473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0393909316929092179092555050565b8082148015611f4857508115155b15611f82576040517f0fb49edb0000000000000000000000000000000000000000000000000000000081526004810183905260240161072b565b60028290556003819055604051819083907ff950a929751d87db181a0a517df21bb3ecd433abba584594402db4b58a55483590600090a35050565b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f846050028161201a5761201a61484b565b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b6000816001148061206a5750816003145b806120755750816005145b806120805750816007145b8061208b5750816008145b80612096575081600a145b806120a1575081600c145b156120ae5750601f611166565b816002146120be5750601e611166565b6120c783612410565b6120d257601c6120d5565b601d5b60ff169392505050565b600054610100900460ff166121385760405162461bcd60e51b815260206004820152602b60248201526000805160206149b183398151915260448201526a6e697469616c697a696e6760a81b606482015260840161072b565b80516121439061244c565b61214b61251c565b612158816020015161257f565b61216581604001516125e1565b6121728160600151612643565b61217f81608001516126a5565b6112678160a00151612707565b600054610100900460ff166121e55760405162461bcd60e51b815260206004820152602b60248201526000805160206149b183398151915260448201526a6e697469616c697a696e6760a81b606482015260840161072b565b80516112709061116c565b600081815260018301602052604081205480156122d9576000612214600183614888565b855490915060009061222890600190614888565b905081811461228d576000866000018281548110612248576122486144dc565b906000526020600020015490508087600001848154811061226b5761226b6144dc565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061229e5761229e61489b565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050611166565b6000915050611166565b5092915050565b600081815260018301602052604081205461233157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155611166565b506000611166565b6123438282612769565b61234d8282612773565b6123578282612797565b6123618282612883565b61236b8282612a72565b6123758282612abc565b61067f8282612ba9565b6123898282612cbf565b6123938282612d61565b61239d8282612d83565b61067f8282612fcd565b6000610db48383612ffa565b600082820283158015906123d65750828482816123d2576123d261484b565b0414155b156123fe57604051637472527d60e11b8152600481018590526024810184905260440161072b565b670de0b6b3a764000090049392505050565b600061241d6004836148b1565b15801561243357506124306064836148b1565b15155b806111665750612445610190836148b1565b1592915050565b600054610100900460ff166124a55760405162461bcd60e51b815260206004820152602b60248201526000805160206149b183398151915260448201526a6e697469616c697a696e6760a81b606482015260840161072b565b61251381600001516001600160a01b031663d09edf316040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250e9190614747565b6131f9565b6112708161325b565b600054610100900460ff166125755760405162461bcd60e51b815260206004820152602b60248201526000805160206149b183398151915260448201526a6e697469616c697a696e6760a81b606482015260840161072b565b61257d6132f6565b565b600054610100900460ff166125d85760405162461bcd60e51b815260206004820152602b60248201526000805160206149b183398151915260448201526a6e697469616c697a696e6760a81b606482015260840161072b565b6112708161334f565b600054610100900460ff1661263a5760405162461bcd60e51b815260206004820152602b60248201526000805160206149b183398151915260448201526a6e697469616c697a696e6760a81b606482015260840161072b565b611270816133c4565b600054610100900460ff1661269c5760405162461bcd60e51b815260206004820152602b60248201526000805160206149b183398151915260448201526a6e697469616c697a696e6760a81b606482015260840161072b565b61127081613439565b600054610100900460ff166126fe5760405162461bcd60e51b815260206004820152602b60248201526000805160206149b183398151915260448201526a6e697469616c697a696e6760a81b606482015260840161072b565b611270816134e7565b600054610100900460ff166127605760405162461bcd60e51b815260206004820152602b60248201526000805160206149b183398151915260448201526a6e697469616c697a696e6760a81b606482015260840161072b565b611270816135c5565b61067f82826136a3565b60045460ff161561067f5760405163181e462560e31b815260040160405180910390fd5b5a6005556040805160808101825260065480825260075460208301526008549282019290925260095460608201529060009015806127d6575081513a11155b90508061281b5781516040517fcbb35eb70000000000000000000000000000000000000000000000000000000081523a6004820152602481019190915260440161072b565b602082015115610c13576000612831483a614888565b602084015190915081111580611dbc5760208401516040517f56e5387f00000000000000000000000000000000000000000000000000000000815261072b918491600401918252602082015260400190565b600a54600b54600c54600e5460ff90931692428211156128bf5760405163013ce60b60e01b81524260048201526024810183905260440161072b565b60008460028111156128d3576128d3614415565b0361298c57826000036128e857505050505050565b80600003612902576128fa8342614875565b600d55611dbc565b600061290e8342614888565b9050600061291c8583614861565b9050600061292a86836147d1565b6129349084614888565b9050838111156129605760405163013ce60b60e01b81524260048201526024810186905260440161072b565b8561296c836001614875565b61297691906147d1565b6129809086614875565b600d5550611dbc915050565b8142101580156129a557506129a18183614875565b4211155b156129b4576128fa82846136f6565b600060018560028111156129ca576129ca614415565b146129dd576129d842611b02565b6129e6565b6129e683611aeb565b905060006129f4848361378e565b905080421015612a205760405163013ce60b60e01b81524260048201526024810182905260440161072b565b6000612a2c8483614875565b90504281108015612a595760405163013ce60b60e01b81524260048201526024810183905260440161072b565b612a6383886136f6565b600d5550505050505050505050565b612a7b82610d70565b61067f576040517f7a2410450000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161072b565b6000612ac783611710565b80519091506001600160a01b0316612ade57505050565b6000836001600160a01b031682600001516001600160a01b031614612b1a57612b15612b0e8584600001516123a7565b84906123b3565b612b1c565b825b9050600082602001518210158015612b44575060408301511580612b44575082604001518211155b90508061064f578251602084015160408086015190517f7c63a4b00000000000000000000000000000000000000000000000000000000081526001600160a01b039093166004840152602483018590526044830191909152606482015260840161072b565b6000612bb48361197e565b6040805160a08101825282546001600160a01b031680825260018401546020830152600284015492820192909252600383015460608201526004909201546080830152909150612c0357505050565b6000836001600160a01b031682600001516001600160a01b031614612c3857612c33612b0e8584600001516123a7565b612c3a565b825b9050600082608001514210612c50576000612c56565b82604001515b612c609083614875565b9050826020015181111561064f57825160208401516040517fb8858d5d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909216600483015260248201526044810182905260640161072b565b6000612cca8361197e565b80549091506001600160a01b0316612ce157505050565b80546000906001600160a01b03858116911614612d17578154612d1290612b0e9086906001600160a01b03166123a7565b612d19565b825b905081600401544210612d4257600060028301556003820154612d3c9042614875565b60048301555b80826002016000828254612d569190614875565b909155505050505050565b600d54600003612d6f575050565b612d7a600d546137ad565b50506000600d55565b600554600003612dbf576040517f1f5b8fc600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516080810182526006548152600754602082015260085491810191909152600954606082015260005a600554612df89190614888565b90506000612e063a836147d1565b90506000836040015160001480612e21575083604001518211155b905080612e6b578184604001516040517faf258ef200000000000000000000000000000000000000000000000000000000815260040161072b929190918252602082015260400190565b6000600555606084015115801590612e835750600085115b15611dbc576000612f56306001600160a01b0316634fd49efd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ecb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eef9190614747565b6001600160a01b03166317fcb39b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f509190614747565b886123a7565b90506000612f6484836137e2565b90506000612f728289613854565b90508660600151811115612fc25760608701516040517f0297747f00000000000000000000000000000000000000000000000000000000815261072b918391600401918252602082015260400190565b505050505050505050565b6040517f68f46c45a243a0e9065a97649faf9a5afe1692f2679e650c2f853b9cd734cc0e90600090a15050565b600080600160009054906101000a90046001600160a01b03166001600160a01b0316632630c12f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613050573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130749190614747565b90506001600160a01b0381166130c5576001546040517f38d2baae0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260240161072b565b60006130cf61391d565b9050805160001461316057816001600160a01b031663355efdd96130f28761399d565b6130fb8761399d565b846040518463ffffffff1660e01b815260040161311a939291906148c5565b602060405180830381865afa158015613137573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315b91906148f1565b6131f0565b816001600160a01b031663ac41865a6131788761399d565b6131818761399d565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156131cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131f091906148f1565b95945050505050565b600054610100900460ff166132525760405162461bcd60e51b815260206004820152602b60248201526000805160206149b183398151915260448201526a6e697469616c697a696e6760a81b606482015260840161072b565b611270816139d1565b600054610100900460ff166132b45760405162461bcd60e51b815260206004820152602b60248201526000805160206149b183398151915260448201526a6e697469616c697a696e6760a81b606482015260840161072b565b80516001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039092169190911790556020810151604082015161127091906117f5565b600054610100900460ff1661257d5760405162461bcd60e51b815260206004820152602b60248201526000805160206149b183398151915260448201526a6e697469616c697a696e6760a81b606482015260840161072b565b600054610100900460ff166133a85760405162461bcd60e51b815260206004820152602b60248201526000805160206149b183398151915260448201526a6e697469616c697a696e6760a81b606482015260840161072b565b61127081600001518260200151836040015184606001516119b2565b600054610100900460ff1661341d5760405162461bcd60e51b815260206004820152602b60248201526000805160206149b183398151915260448201526a6e697469616c697a696e6760a81b606482015260840161072b565b6112708160000151826020015183604001518460600151610ead565b600054610100900460ff166134925760405162461bcd60e51b815260206004820152602b60248201526000805160206149b183398151915260448201526a6e697469616c697a696e6760a81b606482015260840161072b565b805161349d906114a2565b60005b81602001515181101561067f576134d5826020015182815181106134c6576134c66144dc565b6020026020010151600161128f565b806134df81614508565b9150506134a0565b600054610100900460ff166135405760405162461bcd60e51b815260206004820152602b60248201526000805160206149b183398151915260448201526a6e697469616c697a696e6760a81b606482015260840161072b565b8051805160208201516040830151613559929190611922565b60005b82602001515181101561088b57600083602001518281518110613581576135816144dc565b602002602001015190506000816020015190506135b082600001518260000151836020015184604001516113a2565b505080806135bd90614508565b91505061355c565b600054610100900460ff1661361e5760405162461bcd60e51b815260206004820152602b60248201526000805160206149b183398151915260448201526a6e697469616c697a696e6760a81b606482015260840161072b565b80518051602082015160408301516136379291906118cc565b60005b82602001515181101561088b5760008360200151828151811061365f5761365f6144dc565b6020026020010151905060008160200151905061368e8260000151826000015183602001518460400151611650565b5050808061369b90614508565b91505061363a565b6002541561067f5760015460025460405163eb056bbb60e01b815260048101919091526001600160a01b03848116602483015260448201849052600060648301529091169063eb056bbb90608401611d8e565b60008060008061370586613a6a565b9194509250905060006137188684614875565b90506000613727600c836148b1565b90506000613736600c84614861565b6137409087614875565b905060006002600a5460ff16600281111561375d5761375d614415565b146137685784613772565b6137728284612059565b90506137808a838584613a89565b9a9950505050505050505050565b600080600061379c42613a6a565b50915091506131f085838387613a89565b600c8190556040518181527ff90744bee56935ec5acc9de37b89c0c545298c667ee417bd9469e9c6836ad064906020016114f4565b600082820283158015906138055750828482816138015761380161484b565b0414155b1561382d57604051637472527d60e11b8152600481018590526024810184905260440161072b565b801561384a57670de0b6b3a7640000600019820104600101611ae3565b6000949350505050565b600081600003613890576040517fb8a2f92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036138a057506000611166565b670de0b6b3a7640000838102908482816138bc576138bc61484b565b04146138fe576040517fea7b49e6000000000000000000000000000000000000000000000000000000008152600481018590526024810182905260440161072b565b8260018203816139105761391061484b565b0460010191505092915050565b60606000613929613ab1565b90503681111561394757505060408051600081526020810190915290565b8067ffffffffffffffff81111561396057613960613d90565b6040519080825280601f01601f19166020018201604052801561398a576020820181803683370190505b5091508060208236030360208401375090565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b038316146139c95781611166565b611166613acc565b600054610100900460ff16613a2a5760405162461bcd60e51b815260206004820152602b60248201526000805160206149b183398151915260448201526a6e697469616c697a696e6760a81b606482015260840161072b565b600080546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b60008080613a7c620151808504611fbd565b9196909550909350915050565b60006131f0848484613a9a89613b2f565b613aa38a613b4d565b613aac8b613b69565b613b76565b60006024361015613ac25750600090565b50601f1936013590565b600154604080517f17fcb39b00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916317fcb39b9160048083019260209291908290030181865afa158015610c7c573d6000803e3d6000fd5b600080613b3f62015180846148b1565b9050610db4610e1082614861565b600080613b5c610e10846148b1565b9050610db4603c82614861565b6000611166603c836148b1565b600081613b84603c856147d1565b613b90610e10876147d1565b62015180613b9f8b8b8b613bd2565b613ba991906147d1565b613bb39190614875565b613bbd9190614875565b613bc79190614875565b979650505050505050565b60006107b2841015613be357600080fd5b838383600062253d8c60046064600c613bfd600e8861490a565b613c07919061492a565b613c1388611324614958565b613c1d9190614958565b613c27919061492a565b613c32906003614980565b613c3c919061492a565b600c80613c4a600e8861490a565b613c54919061492a565b613c5f90600c614980565b613c6a60028861490a565b613c74919061490a565b613c809061016f614980565b613c8a919061492a565b6004600c613c99600e8961490a565b613ca3919061492a565b613caf896112c0614958565b613cb99190614958565b613cc5906105b5614980565b613ccf919061492a565b613cdb617d4b8761490a565b613ce59190614958565b613cef9190614958565b613cf9919061490a565b613d03919061490a565b98975050505050505050565b803560ff81168114613d2057600080fd5b919050565b60008060008060808587031215613d3b57600080fd5b613d4485613d0f565b966020860135965060408601359560600135945092505050565b6001600160a01b038116811461127057600080fd5b600060208284031215613d8557600080fd5b8135610db481613d5e565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715613dc957613dc9613d90565b60405290565b6040805190810167ffffffffffffffff81118282101715613dc957613dc9613d90565b6040516020810167ffffffffffffffff81118282101715613dc957613dc9613d90565b60405160c0810167ffffffffffffffff81118282101715613dc957613dc9613d90565b604051601f8201601f1916810167ffffffffffffffff81118282101715613e6157613e61613d90565b604052919050565b600060608284031215613e7b57600080fd5b6040516060810181811067ffffffffffffffff82111715613e9e57613e9e613d90565b6040529050808235613eaf81613d5e565b8082525060208301356020820152604083013560408201525092915050565b600060808284031215613ee057600080fd5b613ee8613da6565b90508135815260208201356020820152604082013560408201526060820135606082015292915050565b600060808284031215613f2457600080fd5b613f2c613da6565b9050613f3782613d0f565b815260208201356020820152604082013560408201526060820135606082015292915050565b803560028110613d2057600080fd5b600067ffffffffffffffff821115613f8657613f86613d90565b5060051b60200190565b600082601f830112613fa157600080fd5b81356020613fb6613fb183613f6c565b613e38565b82815260059290921b84018101918181019086841115613fd557600080fd5b8286015b84811015613ff9578035613fec81613d5e565b8352918301918301613fd9565b509695505050505050565b60006040828403121561401657600080fd5b61401e613dcf565b905061402982613f5d565b8152602082013567ffffffffffffffff81111561404557600080fd5b61405184828501613f90565b60208301525092915050565b60006080828403121561406f57600080fd5b614077613dcf565b9050813561408481613d5e565b81526140938360208401613e69565b602082015292915050565b600060808083850312156140b157600080fd5b6140b9613dcf565b91506140c58484613e69565b8252606083013567ffffffffffffffff8111156140e157600080fd5b8301601f810185136140f257600080fd5b80356020614102613fb183613f6c565b82815260079290921b8301810191818101908884111561412157600080fd5b938201935b8385101561414757614138898661405d565b82529385019390820190614126565b808388015250505050505092915050565b60006020828403121561416a57600080fd5b813567ffffffffffffffff8082111561418257600080fd5b908301906020828603121561419657600080fd5b61419e613df2565b8235828111156141ad57600080fd5b9290920191604083870312156141c257600080fd5b6141ca613dcf565b83356141d581613d5e565b81526020840135838111156141e957600080fd5b93909301926101c084880312156141ff57600080fd5b614207613e15565b6142118886613e69565b81526142208860608701613ece565b60208201526142328860e08701613f12565b60408201526101608501358481111561424a57600080fd5b61425689828801614004565b6060830152506101808501358481111561426f57600080fd5b61427b8982880161409e565b6080830152506101a08501358481111561429457600080fd5b6142a08982880161409e565b60a0830152506020820152815295945050505050565b801515811461127057600080fd5b600080604083850312156142d757600080fd5b823567ffffffffffffffff808211156142ef57600080fd5b6142fb86838701613f90565b935060209150818501358181111561431257600080fd5b85019050601f8101861361432557600080fd5b8035614333613fb182613f6c565b81815260059190911b8201830190838101908883111561435257600080fd5b928401925b8284101561437957833561436a816142b6565b82529284019290840190614357565b80955050505050509250929050565b6000806000806080858703121561439e57600080fd5b84356143a981613d5e565b935060208501356143b981613d5e565b93969395505050506040820135916060013590565b6000602082840312156143e057600080fd5b610db482613f5d565b600080604083850312156143fc57600080fd5b823561440781613d5e565b946020939093013593505050565b634e487b7160e01b600052602160045260246000fd5b602081016002831061444d57634e487b7160e01b600052602160045260246000fd5b91905290565b6000806040838503121561446657600080fd5b50508035926020909101359150565b60008060006060848603121561448a57600080fd5b833561449581613d5e565b95602085013595506040909401359392505050565b600080600080608085870312156144c057600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161451a5761451a6144f2565b5060010190565b60005b8381101561453c578181015183820152602001614524565b50506000910152565b6000815180845261455d816020860160208601614521565b601f01601f19169290920160200192915050565b6001600160a01b0383168152604060208201526000611ae36040830184614545565b6000602082840312156145a557600080fd5b815167ffffffffffffffff808211156145bd57600080fd5b818401915084601f8301126145d157600080fd5b8151818111156145e3576145e3613d90565b6145f6601f8201601f1916602001613e38565b915080825285602082850101111561460d57600080fd5b61461e816020840160208601614521565b50949350505050565b600082601f83011261463857600080fd5b81516020614648613fb183613f6c565b82815260059290921b8401810191818101908684111561466757600080fd5b8286015b84811015613ff9578051835291830191830161466b565b6000806040838503121561469557600080fd5b825167ffffffffffffffff808211156146ad57600080fd5b818501915085601f8301126146c157600080fd5b815160206146d1613fb183613f6c565b82815260059290921b840181019181810190898411156146f057600080fd5b948201945b8386101561471757855161470881613d5e565b825294820194908201906146f5565b9188015191965090935050508082111561473057600080fd5b5061473d85828601614627565b9150509250929050565b60006020828403121561475957600080fd5b8151610db481613d5e565b600081518084526020808501945080840160005b8381101561479457815187529582019590820190600101614778565b509495945050505050565b6001600160a01b03841681526001600160e01b0319831660208201526060604082015260006131f06060830184614764565b8082028115828204841417611166576111666144f2565b60006001600160a01b0380871683528086166020840152506001600160e01b031984166040830152608060608301526148246080830184614764565b9695505050505050565b60006020828403121561484057600080fd5b8151610db4816142b6565b634e487b7160e01b600052601260045260246000fd5b6000826148705761487061484b565b500490565b80820180821115611166576111666144f2565b81810381811115611166576111666144f2565b634e487b7160e01b600052603160045260246000fd5b6000826148c0576148c061484b565b500690565b60006001600160a01b038086168352808516602084015250606060408301526131f06060830184614545565b60006020828403121561490357600080fd5b5051919050565b81810360008312801583831316838312821617156122e3576122e36144f2565b6000826149395761493961484b565b600160ff1b821460001984141615614953576149536144f2565b500590565b8082018281126000831280158216821582161715614978576149786144f2565b505092915050565b80820260008212600160ff1b8414161561499c5761499c6144f2565b8181058314821517611166576111666144f256fe496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069a26469706673582212203bcd75bcad7f1cc685bdeae587a75315bdc6c64ba0b9cf9560297d8d694448d564736f6c63430008110033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101f05760003560e01c80635ea54eee1161010f578063a5900c4d116100a2578063d3feb60211610071578063d3feb602146105d1578063d45a76cf146105e4578063e6b5be98146105f7578063f9eaee0d1461060a57600080fd5b8063a5900c4d14610539578063b187bd2614610593578063c267621e146105b0578063d09edf31146105b857600080fd5b80638456cb59116100de5780638456cb59146104d757806390333ba8146104df578063a0c3774f146104f2578063a33741771461050657600080fd5b80635ea54eee146104395780636aacaad8146104655780637125590a146104b157806383f3084f146104c457600080fd5b80633bd9ef28116101875780634a45a3a8116101565780634a45a3a8146103865780634fd49efd146103bb57806351a424b1146103e65780635670e2ce1461041e57600080fd5b80633bd9ef281461033e5780633f4ba83a14610351578063423a4b401461035957806342d4693e1461036c57600080fd5b806321972384116101c35780632197238414610261578063221a8c68146102745780632384c32d1461031857806330eae5721461032b57600080fd5b80630fe105e8146101f557806310188aef1461020a5780631047c5301461021d578063119a5e9614610230575b600080fd5b610208610203366004613d25565b61061d565b005b610208610218366004613d73565b610656565b61020861022b366004614158565b610683565b6102386107a9565b6040805160ff909516855260208501939093529183015260608201526080015b60405180910390f35b61020861026f3660046142c4565b6107e0565b6102e6610282366004613d73565b6001600160a01b039081166000908152601b6020908152604091829020825160a08101845281549094168085526001820154928501839052600282015493850184905260038201546060860181905260049092015460809095018590529491939091565b604080516001600160a01b0390961686526020860194909452928401919091526060830152608082015260a001610258565b610208610326366004614388565b610890565b6102086103393660046143ce565b6108bf565b61020861034c3660046143e9565b6108fc565b610208610a6a565b610208610367366004614388565b610af1565b600f546103799060ff1681565b604051610258919061442b565b6103ad7ffdad2f36e879e69005ffdaec159291c5f49a7227dd078e9fa6c6f64abf431bad81565b604051908152602001610258565b6001546103ce906001600160a01b031681565b6040516001600160a01b039091168152602001610258565b6103f96103f4366004613d73565b610b20565b604080516001600160a01b039094168452602084019290925290820152606001610258565b60025460035460408051928352602083019190915201610258565b600654600754600854600954604080519485526020850193909352918301526060820152608001610258565b6102e66040805160a0810182526016546001600160a01b03168082526017546020830181905260185493830184905260195460608401819052601a546080909401849052919490939290565b6102086104bf366004614453565b610b49565b601c546103ce906001600160a01b031681565b610208610b74565b6102086104ed366004614475565b610be6565b6103ad610500366004613d73565b50600090565b6103f9604080516060810182526012546001600160a01b0316808252601354602083018190526014549290930182905292565b6103f9610547366004613d73565b6001600160a01b03808216600090815260156020908152604091829020825160608101845281549094168085526001820154928501839052600290910154939092018390529093909250565b6004546105a09060ff1681565b6040519015158152602001610258565b6103ce610c19565b6000546103ce906201000090046001600160a01b031681565b6102086105df366004614475565b610ca5565b6102e66105f2366004613d73565b610cd2565b6102086106053660046144aa565b610d41565b6105a0610618366004613d73565b610d70565b61062c8460ff16848484610dbb565b610643336000356001600160e01b03191683610e66565b61064f85858585610ead565b5050505050565b61065f81611152565b610676336000356001600160e01b03191683610e66565b61067f8261116c565b5050565b600054610100900460ff16158080156106a35750600054600160ff909116105b806106bd5750303b1580156106bd575060005460ff166001145b6107345760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff191660011790558015610757576000805461ff0019166101001790555b61076082611203565b801561067f576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b600a5460009081908190819060ff1660028111156107c9576107c9614415565b600b54600c54600e54935093509350935090919293565b6107f6336000356001600160e01b031916611273565b8051825114610831576040517f5d32021a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b825181101561088b57610879838281518110610852576108526144dc565b602002602001015183838151811061086c5761086c6144dc565b602002602001015161128f565b8061088381614508565b915050610834565b505050565b61089c84848484611339565b6108b3336000356001600160e01b03191683610e66565b61064f858585856113a2565b6108dc8160018111156108d4576108d4614415565b60ff1661145b565b6108f3336000356001600160e01b03191683610e66565b61067f826114a2565b61090682826114ff565b61091d336000356001600160e01b03191683610e66565b8160000361092a57600091505b610934838361156e565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f1e83409a00000000000000000000000000000000000000000000000000000000179052600154601c5493517f1cff79cd000000000000000000000000000000000000000000000000000000008152929360009391831692631cff79cd926109f192909116908690600401614571565b6000604051808303816000875af1158015610a10573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f19168201604052610a389190810190614593565b905060008082806020019051810190610a519190614682565b91509150610a61878784846115b0565b50505050505050565b610a80336000356001600160e01b031916611273565b60045460ff16610abc576040517f9e6558bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004805460ff191690556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a1565b610afd84848484611339565b610b14336000356001600160e01b03191683610e66565b61064f85858585611650565b600080600080610b2f85611710565b805160208201516040909201519097919650945092505050565b610b53828261179b565b610b6a336000356001600160e01b03191683610e66565b61088b83836117f5565b610b8a336000356001600160e01b031916611273565b60045460ff1615610bae5760405163181e462560e31b815260040160405180910390fd5b6004805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b610bf183838361183a565b610c08336000356001600160e01b03191683610e66565b610c138484846118cc565b50505050565b601c54604080517fc6def07600000000000000000000000000000000000000000000000000000000815290516000926001600160a01b03169163c6def0769160048083019260209291908290030181865afa158015610c7c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ca09190614747565b905090565b610cb083838361183a565b610cc7336000356001600160e01b03191683610e66565b610c13848484611922565b600080600080600080610ce48761197e565b6040805160a08101825282546001600160a01b031680825260018401546020830181905260028501549383018490526003850154606084018190526004909501546080909301839052909b909a5091985091965090945092505050565b610d4d84848484610dbb565b610d64336000356001600160e01b03191683610e66565b61064f858585856119b2565b6001600160a01b038116600090815260116020526040812054600f549015159060019060ff1681811115610da657610da6614415565b14610db2578015610db4565b805b9392505050565b60408051600480825260a08201909252606091602082016080803683370190505090508481600081518110610df257610df26144dc565b6020026020010181815250508381600181518110610e1257610e126144dc565b6020026020010181815250508281600281518110610e3257610e326144dc565b6020026020010181815250508181600381518110610e5257610e526144dc565b602002602001018181525050949350505050565b610e71838383611a4d565b61088b578282826040517f960c80da00000000000000000000000000000000000000000000000000000000815260040161072b9392919061479f565b60ff8416610f5e576000811180610ec45750600082115b15610f595782600003610ef65760405163bea499cb60e01b815260ff851660048201526024810184905260440161072b565b801580610f0257508281115b15610f2c57604051639e12fccf60e01b815260ff851660048201526024810182905260440161072b565b81600003610f5957604051635686bf5960e11b815260ff851660048201526024810183905260440161072b565b6110bb565b82600003610f8b5760405163bea499cb60e01b815260ff851660048201526024810184905260440161072b565b801580610fa35750610fa06224ea00846147d1565b81115b15610fcd57604051639e12fccf60e01b815260ff851660048201526024810182905260440161072b565b81600003610ffa57604051635686bf5960e11b815260ff851660048201526024810183905260440161072b565b60001960ff85160161103c57601c61101183611aeb565b1115610f5957604051635686bf5960e11b815260ff851660048201526024810183905260440161072b565b60011960ff8516016110845761105182611b02565b61105a83611aeb565b14610f5957604051635686bf5960e11b815260ff851660048201526024810183905260440161072b565b6040517f33a738bc00000000000000000000000000000000000000000000000000000000815260ff8516600482015260240161072b565b8360ff1660028111156110d0576110d0614415565b600a805460ff191660018360028111156110ec576110ec614415565b0217905550600b839055600c829055600e8190556040805160ff8616815260208101859052908101839052606081018290527f182fd6fa2a8560221614c1396dd4fcc78d26dfacf821a6afb61d25876057e412906080015b60405180910390a150505050565b6060611166826001600160a01b031661145b565b92915050565b6001600160a01b0381166111ac576040517f05579e5400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601c805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040517f47fc0d82886e91fbb050eba4ff32c0c0d7fa2b4efffceba283e42975d9c894ff90600090a250565b600054610100900460ff1661125c5760405162461bcd60e51b815260206004820152602b60248201526000805160206149b183398151915260448201526a6e697469616c697a696e6760a81b606482015260840161072b565b805161126790611b25565b61127081611b94565b50565b60408051600081526020810190915261067f9083908390610e66565b6001600160a01b0382166112cf576040517fc41a13ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b806112e4576112df601083611bed565b6112ef565b6112ef601083611c02565b50816001600160a01b03167f6264362e9de26efefda321dfaeb4e4a9090deef40c5435fad8e9e2e306889a1c8260405161132d911515815260200190565b60405180910390a25050565b60408051600480825260a0820190925260609160208201608080368337019050509050846001600160a01b031681600081518110611379576113796144dc565b602002602001018181525050836001600160a01b031681600181518110610e1257610e126144dc565b6001600160a01b0384166113e2576040517fe7ba3e4a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b038416600090815260156020526040902061140690848484611c17565b604080516001600160a01b03858116825260208201859052918101839052908516907ff099617c054d3a65e02a9c3b786f23cc03d5982bc7cfae84dff0408049cf17079060600160405180910390a250505050565b604080516001808252818301909252606091602080830190803683370190505090508181600081518110611491576114916144dc565b602002602001018181525050919050565b600f805482919060ff1916600183818111156114c0576114c0614415565b02179055507f216b6a9618d607ba436d0f2e17e9a83e70929adff805ac2385d67401360e551a816040516114f4919061442b565b60405180910390a150565b6040805160028082526060808301845292602083019080368337019050509050826001600160a01b03168160008151811061153c5761153c6144dc565b602002602001018181525050818160018151811061155c5761155c6144dc565b60200260200101818152505092915050565b6115788282611cf4565b801561067f576040517f43d2739400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80518251146115eb576040517f4988153400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b82518110156116455761163383828151811061160c5761160c6144dc565b6020026020010151838381518110611626576116266144dc565b6020026020010151611d3e565b8061163d81614508565b9150506115ee565b50610c138484611dc4565b6001600160a01b038416611690576040517f1de0c9c700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166000908152601b602052604090206116b490848484611dce565b826001600160a01b0316846001600160a01b03167f1b5c5e27ed5443e409bae85849d41d7bf12d5352e8fddb3728b6408f836e14488484604051611702929190918252602082015260400190565b60405180910390a350505050565b61173d604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b6001600160a01b0380831660009081526015602052604090208054909116156117665780611769565b60125b6040805160608101825282546001600160a01b0316815260018301546020820152600290920154908201529392505050565b60408051600280825260608083018452926020830190803683370190505090508260001c816000815181106117d2576117d26144dc565b6020026020010181815250508160001c8160018151811061155c5761155c6144dc565b8115611830576040517fade7e1680000000000000000000000000000000000000000000000000000000081526004810183905260240161072b565b61067f8282611f3a565b60408051600380825260808201909252606091602082018380368337019050509050836001600160a01b031681600081518110611879576118796144dc565b6020026020010181815250508281600181518110611899576118996144dc565b60200260200101818152505081816002815181106118b9576118b96144dc565b6020026020010181815250509392505050565b6118d96016848484611dce565b60408051838152602081018390526001600160a01b038516917f6324b5f18e615697a2b44f16d7a649deb0bbbc7cb09dad4c610306105730e7d9910160405180910390a2505050565b61192f6012848484611c17565b604080516001600160a01b0385168152602081018490529081018290527fa80953bdc344b2ebd0bcdd001a3418a8fd1b858bdecf12a4ba5a9366ad65d3459060600160405180910390a1505050565b6001600160a01b038082166000908152601b6020526040812080549192909116156119a95780610db4565b60169392505050565b670de0b6b3a76400008111156119f4576040517fce57496100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068490556007839055600882905560098190556040805185815260208101859052908101839052606081018290527f746dc5eb53c5de07c40b06d428506d6982ea10c423ac2875abfc44038927d69190608001611144565b600080546040517f28522895000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b031690632852289590611aa29087903090889088906004016147e8565b602060405180830381865afa158015611abf573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ae3919061482e565b949350505050565b6000611ae3611afd6201518084614861565b611fbd565b60008080611b16611afd6201518086614861565b5091509150611ae38282612059565b600054610100900460ff16611b7e5760405162461bcd60e51b815260206004820152602b60248201526000805160206149b183398151915260448201526a6e697469616c697a696e6760a81b606482015260840161072b565b611b8b81602001516120df565b6112708161218c565b600054610100900460ff166112705760405162461bcd60e51b815260206004820152602b60248201526000805160206149b183398151915260448201526a6e697469616c697a696e6760a81b606482015260840161072b565b6000610db4836001600160a01b0384166121f0565b6000610db4836001600160a01b0384166122ea565b60006001600160a01b038416158015611c2e575082155b8015611c38575081155b905060006001600160a01b03851615801590611c5c5750821580611c5c5750838310155b905081158015611c6a575080155b15611cba576040517fca1f04830000000000000000000000000000000000000000000000000000000081526001600160a01b0386166004820152602481018590526044810184905260640161072b565b5050835473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03939093169290921783556001830155600290910155565b611cfe8282612339565b6001600160a01b03821661067f576040517fc0e0f12200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6003541561067f576001805460035460405163eb056bbb60e01b815260048101919091526001600160a01b03858116602483015260448201859052606482019390935291169063eb056bbb906084015b600060405180830381600087803b158015611da857600080fd5b505af1158015611dbc573d6000803e3d6000fd5b505050505050565b61067f828261237f565b60006001600160a01b038416158015611de5575082155b8015611def575081155b905060006001600160a01b03851615801590611e0b5750600084115b8015611e175750600083115b905081158015611e25575080155b15611e75576040517ff5deb5dc0000000000000000000000000000000000000000000000000000000081526001600160a01b0386166004820152602481018590526044810184905260640161072b565b60038601839055600186018490558115611e9c576000600287018190556004870155611f08565b8560040154600003611ec35760006002870155611eb98342614875565b6004870155611f08565b85546001600160a01b03868116911614611f08578554600090611eef906001600160a01b0316876123a7565b6002880154909150611f0190826123b3565b6002880155505b5050835473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0393909316929092179092555050565b8082148015611f4857508115155b15611f82576040517f0fb49edb0000000000000000000000000000000000000000000000000000000081526004810183905260240161072b565b60028290556003819055604051819083907ff950a929751d87db181a0a517df21bb3ecd433abba584594402db4b58a55483590600090a35050565b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f846050028161201a5761201a61484b565b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b6000816001148061206a5750816003145b806120755750816005145b806120805750816007145b8061208b5750816008145b80612096575081600a145b806120a1575081600c145b156120ae5750601f611166565b816002146120be5750601e611166565b6120c783612410565b6120d257601c6120d5565b601d5b60ff169392505050565b600054610100900460ff166121385760405162461bcd60e51b815260206004820152602b60248201526000805160206149b183398151915260448201526a6e697469616c697a696e6760a81b606482015260840161072b565b80516121439061244c565b61214b61251c565b612158816020015161257f565b61216581604001516125e1565b6121728160600151612643565b61217f81608001516126a5565b6112678160a00151612707565b600054610100900460ff166121e55760405162461bcd60e51b815260206004820152602b60248201526000805160206149b183398151915260448201526a6e697469616c697a696e6760a81b606482015260840161072b565b80516112709061116c565b600081815260018301602052604081205480156122d9576000612214600183614888565b855490915060009061222890600190614888565b905081811461228d576000866000018281548110612248576122486144dc565b906000526020600020015490508087600001848154811061226b5761226b6144dc565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061229e5761229e61489b565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050611166565b6000915050611166565b5092915050565b600081815260018301602052604081205461233157508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155611166565b506000611166565b6123438282612769565b61234d8282612773565b6123578282612797565b6123618282612883565b61236b8282612a72565b6123758282612abc565b61067f8282612ba9565b6123898282612cbf565b6123938282612d61565b61239d8282612d83565b61067f8282612fcd565b6000610db48383612ffa565b600082820283158015906123d65750828482816123d2576123d261484b565b0414155b156123fe57604051637472527d60e11b8152600481018590526024810184905260440161072b565b670de0b6b3a764000090049392505050565b600061241d6004836148b1565b15801561243357506124306064836148b1565b15155b806111665750612445610190836148b1565b1592915050565b600054610100900460ff166124a55760405162461bcd60e51b815260206004820152602b60248201526000805160206149b183398151915260448201526a6e697469616c697a696e6760a81b606482015260840161072b565b61251381600001516001600160a01b031663d09edf316040518163ffffffff1660e01b8152600401602060405180830381865afa1580156124ea573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061250e9190614747565b6131f9565b6112708161325b565b600054610100900460ff166125755760405162461bcd60e51b815260206004820152602b60248201526000805160206149b183398151915260448201526a6e697469616c697a696e6760a81b606482015260840161072b565b61257d6132f6565b565b600054610100900460ff166125d85760405162461bcd60e51b815260206004820152602b60248201526000805160206149b183398151915260448201526a6e697469616c697a696e6760a81b606482015260840161072b565b6112708161334f565b600054610100900460ff1661263a5760405162461bcd60e51b815260206004820152602b60248201526000805160206149b183398151915260448201526a6e697469616c697a696e6760a81b606482015260840161072b565b611270816133c4565b600054610100900460ff1661269c5760405162461bcd60e51b815260206004820152602b60248201526000805160206149b183398151915260448201526a6e697469616c697a696e6760a81b606482015260840161072b565b61127081613439565b600054610100900460ff166126fe5760405162461bcd60e51b815260206004820152602b60248201526000805160206149b183398151915260448201526a6e697469616c697a696e6760a81b606482015260840161072b565b611270816134e7565b600054610100900460ff166127605760405162461bcd60e51b815260206004820152602b60248201526000805160206149b183398151915260448201526a6e697469616c697a696e6760a81b606482015260840161072b565b611270816135c5565b61067f82826136a3565b60045460ff161561067f5760405163181e462560e31b815260040160405180910390fd5b5a6005556040805160808101825260065480825260075460208301526008549282019290925260095460608201529060009015806127d6575081513a11155b90508061281b5781516040517fcbb35eb70000000000000000000000000000000000000000000000000000000081523a6004820152602481019190915260440161072b565b602082015115610c13576000612831483a614888565b602084015190915081111580611dbc5760208401516040517f56e5387f00000000000000000000000000000000000000000000000000000000815261072b918491600401918252602082015260400190565b600a54600b54600c54600e5460ff90931692428211156128bf5760405163013ce60b60e01b81524260048201526024810183905260440161072b565b60008460028111156128d3576128d3614415565b0361298c57826000036128e857505050505050565b80600003612902576128fa8342614875565b600d55611dbc565b600061290e8342614888565b9050600061291c8583614861565b9050600061292a86836147d1565b6129349084614888565b9050838111156129605760405163013ce60b60e01b81524260048201526024810186905260440161072b565b8561296c836001614875565b61297691906147d1565b6129809086614875565b600d5550611dbc915050565b8142101580156129a557506129a18183614875565b4211155b156129b4576128fa82846136f6565b600060018560028111156129ca576129ca614415565b146129dd576129d842611b02565b6129e6565b6129e683611aeb565b905060006129f4848361378e565b905080421015612a205760405163013ce60b60e01b81524260048201526024810182905260440161072b565b6000612a2c8483614875565b90504281108015612a595760405163013ce60b60e01b81524260048201526024810183905260440161072b565b612a6383886136f6565b600d5550505050505050505050565b612a7b82610d70565b61067f576040517f7a2410450000000000000000000000000000000000000000000000000000000081526001600160a01b038316600482015260240161072b565b6000612ac783611710565b80519091506001600160a01b0316612ade57505050565b6000836001600160a01b031682600001516001600160a01b031614612b1a57612b15612b0e8584600001516123a7565b84906123b3565b612b1c565b825b9050600082602001518210158015612b44575060408301511580612b44575082604001518211155b90508061064f578251602084015160408086015190517f7c63a4b00000000000000000000000000000000000000000000000000000000081526001600160a01b039093166004840152602483018590526044830191909152606482015260840161072b565b6000612bb48361197e565b6040805160a08101825282546001600160a01b031680825260018401546020830152600284015492820192909252600383015460608201526004909201546080830152909150612c0357505050565b6000836001600160a01b031682600001516001600160a01b031614612c3857612c33612b0e8584600001516123a7565b612c3a565b825b9050600082608001514210612c50576000612c56565b82604001515b612c609083614875565b9050826020015181111561064f57825160208401516040517fb8858d5d0000000000000000000000000000000000000000000000000000000081526001600160a01b03909216600483015260248201526044810182905260640161072b565b6000612cca8361197e565b80549091506001600160a01b0316612ce157505050565b80546000906001600160a01b03858116911614612d17578154612d1290612b0e9086906001600160a01b03166123a7565b612d19565b825b905081600401544210612d4257600060028301556003820154612d3c9042614875565b60048301555b80826002016000828254612d569190614875565b909155505050505050565b600d54600003612d6f575050565b612d7a600d546137ad565b50506000600d55565b600554600003612dbf576040517f1f5b8fc600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516080810182526006548152600754602082015260085491810191909152600954606082015260005a600554612df89190614888565b90506000612e063a836147d1565b90506000836040015160001480612e21575083604001518211155b905080612e6b578184604001516040517faf258ef200000000000000000000000000000000000000000000000000000000815260040161072b929190918252602082015260400190565b6000600555606084015115801590612e835750600085115b15611dbc576000612f56306001600160a01b0316634fd49efd6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612ecb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612eef9190614747565b6001600160a01b03166317fcb39b6040518163ffffffff1660e01b8152600401602060405180830381865afa158015612f2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f509190614747565b886123a7565b90506000612f6484836137e2565b90506000612f728289613854565b90508660600151811115612fc25760608701516040517f0297747f00000000000000000000000000000000000000000000000000000000815261072b918391600401918252602082015260400190565b505050505050505050565b6040517f68f46c45a243a0e9065a97649faf9a5afe1692f2679e650c2f853b9cd734cc0e90600090a15050565b600080600160009054906101000a90046001600160a01b03166001600160a01b0316632630c12f6040518163ffffffff1660e01b8152600401602060405180830381865afa158015613050573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906130749190614747565b90506001600160a01b0381166130c5576001546040517f38d2baae0000000000000000000000000000000000000000000000000000000081526001600160a01b03909116600482015260240161072b565b60006130cf61391d565b9050805160001461316057816001600160a01b031663355efdd96130f28761399d565b6130fb8761399d565b846040518463ffffffff1660e01b815260040161311a939291906148c5565b602060405180830381865afa158015613137573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061315b91906148f1565b6131f0565b816001600160a01b031663ac41865a6131788761399d565b6131818761399d565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156131cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131f091906148f1565b95945050505050565b600054610100900460ff166132525760405162461bcd60e51b815260206004820152602b60248201526000805160206149b183398151915260448201526a6e697469616c697a696e6760a81b606482015260840161072b565b611270816139d1565b600054610100900460ff166132b45760405162461bcd60e51b815260206004820152602b60248201526000805160206149b183398151915260448201526a6e697469616c697a696e6760a81b606482015260840161072b565b80516001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b039092169190911790556020810151604082015161127091906117f5565b600054610100900460ff1661257d5760405162461bcd60e51b815260206004820152602b60248201526000805160206149b183398151915260448201526a6e697469616c697a696e6760a81b606482015260840161072b565b600054610100900460ff166133a85760405162461bcd60e51b815260206004820152602b60248201526000805160206149b183398151915260448201526a6e697469616c697a696e6760a81b606482015260840161072b565b61127081600001518260200151836040015184606001516119b2565b600054610100900460ff1661341d5760405162461bcd60e51b815260206004820152602b60248201526000805160206149b183398151915260448201526a6e697469616c697a696e6760a81b606482015260840161072b565b6112708160000151826020015183604001518460600151610ead565b600054610100900460ff166134925760405162461bcd60e51b815260206004820152602b60248201526000805160206149b183398151915260448201526a6e697469616c697a696e6760a81b606482015260840161072b565b805161349d906114a2565b60005b81602001515181101561067f576134d5826020015182815181106134c6576134c66144dc565b6020026020010151600161128f565b806134df81614508565b9150506134a0565b600054610100900460ff166135405760405162461bcd60e51b815260206004820152602b60248201526000805160206149b183398151915260448201526a6e697469616c697a696e6760a81b606482015260840161072b565b8051805160208201516040830151613559929190611922565b60005b82602001515181101561088b57600083602001518281518110613581576135816144dc565b602002602001015190506000816020015190506135b082600001518260000151836020015184604001516113a2565b505080806135bd90614508565b91505061355c565b600054610100900460ff1661361e5760405162461bcd60e51b815260206004820152602b60248201526000805160206149b183398151915260448201526a6e697469616c697a696e6760a81b606482015260840161072b565b80518051602082015160408301516136379291906118cc565b60005b82602001515181101561088b5760008360200151828151811061365f5761365f6144dc565b6020026020010151905060008160200151905061368e8260000151826000015183602001518460400151611650565b5050808061369b90614508565b91505061363a565b6002541561067f5760015460025460405163eb056bbb60e01b815260048101919091526001600160a01b03848116602483015260448201849052600060648301529091169063eb056bbb90608401611d8e565b60008060008061370586613a6a565b9194509250905060006137188684614875565b90506000613727600c836148b1565b90506000613736600c84614861565b6137409087614875565b905060006002600a5460ff16600281111561375d5761375d614415565b146137685784613772565b6137728284612059565b90506137808a838584613a89565b9a9950505050505050505050565b600080600061379c42613a6a565b50915091506131f085838387613a89565b600c8190556040518181527ff90744bee56935ec5acc9de37b89c0c545298c667ee417bd9469e9c6836ad064906020016114f4565b600082820283158015906138055750828482816138015761380161484b565b0414155b1561382d57604051637472527d60e11b8152600481018590526024810184905260440161072b565b801561384a57670de0b6b3a7640000600019820104600101611ae3565b6000949350505050565b600081600003613890576040517fb8a2f92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036138a057506000611166565b670de0b6b3a7640000838102908482816138bc576138bc61484b565b04146138fe576040517fea7b49e6000000000000000000000000000000000000000000000000000000008152600481018590526024810182905260440161072b565b8260018203816139105761391061484b565b0460010191505092915050565b60606000613929613ab1565b90503681111561394757505060408051600081526020810190915290565b8067ffffffffffffffff81111561396057613960613d90565b6040519080825280601f01601f19166020018201604052801561398a576020820181803683370190505b5091508060208236030360208401375090565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b038316146139c95781611166565b611166613acc565b600054610100900460ff16613a2a5760405162461bcd60e51b815260206004820152602b60248201526000805160206149b183398151915260448201526a6e697469616c697a696e6760a81b606482015260840161072b565b600080546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b60008080613a7c620151808504611fbd565b9196909550909350915050565b60006131f0848484613a9a89613b2f565b613aa38a613b4d565b613aac8b613b69565b613b76565b60006024361015613ac25750600090565b50601f1936013590565b600154604080517f17fcb39b00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916317fcb39b9160048083019260209291908290030181865afa158015610c7c573d6000803e3d6000fd5b600080613b3f62015180846148b1565b9050610db4610e1082614861565b600080613b5c610e10846148b1565b9050610db4603c82614861565b6000611166603c836148b1565b600081613b84603c856147d1565b613b90610e10876147d1565b62015180613b9f8b8b8b613bd2565b613ba991906147d1565b613bb39190614875565b613bbd9190614875565b613bc79190614875565b979650505050505050565b60006107b2841015613be357600080fd5b838383600062253d8c60046064600c613bfd600e8861490a565b613c07919061492a565b613c1388611324614958565b613c1d9190614958565b613c27919061492a565b613c32906003614980565b613c3c919061492a565b600c80613c4a600e8861490a565b613c54919061492a565b613c5f90600c614980565b613c6a60028861490a565b613c74919061490a565b613c809061016f614980565b613c8a919061492a565b6004600c613c99600e8961490a565b613ca3919061492a565b613caf896112c0614958565b613cb99190614958565b613cc5906105b5614980565b613ccf919061492a565b613cdb617d4b8761490a565b613ce59190614958565b613cef9190614958565b613cf9919061490a565b613d03919061490a565b98975050505050505050565b803560ff81168114613d2057600080fd5b919050565b60008060008060808587031215613d3b57600080fd5b613d4485613d0f565b966020860135965060408601359560600135945092505050565b6001600160a01b038116811461127057600080fd5b600060208284031215613d8557600080fd5b8135610db481613d5e565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715613dc957613dc9613d90565b60405290565b6040805190810167ffffffffffffffff81118282101715613dc957613dc9613d90565b6040516020810167ffffffffffffffff81118282101715613dc957613dc9613d90565b60405160c0810167ffffffffffffffff81118282101715613dc957613dc9613d90565b604051601f8201601f1916810167ffffffffffffffff81118282101715613e6157613e61613d90565b604052919050565b600060608284031215613e7b57600080fd5b6040516060810181811067ffffffffffffffff82111715613e9e57613e9e613d90565b6040529050808235613eaf81613d5e565b8082525060208301356020820152604083013560408201525092915050565b600060808284031215613ee057600080fd5b613ee8613da6565b90508135815260208201356020820152604082013560408201526060820135606082015292915050565b600060808284031215613f2457600080fd5b613f2c613da6565b9050613f3782613d0f565b815260208201356020820152604082013560408201526060820135606082015292915050565b803560028110613d2057600080fd5b600067ffffffffffffffff821115613f8657613f86613d90565b5060051b60200190565b600082601f830112613fa157600080fd5b81356020613fb6613fb183613f6c565b613e38565b82815260059290921b84018101918181019086841115613fd557600080fd5b8286015b84811015613ff9578035613fec81613d5e565b8352918301918301613fd9565b509695505050505050565b60006040828403121561401657600080fd5b61401e613dcf565b905061402982613f5d565b8152602082013567ffffffffffffffff81111561404557600080fd5b61405184828501613f90565b60208301525092915050565b60006080828403121561406f57600080fd5b614077613dcf565b9050813561408481613d5e565b81526140938360208401613e69565b602082015292915050565b600060808083850312156140b157600080fd5b6140b9613dcf565b91506140c58484613e69565b8252606083013567ffffffffffffffff8111156140e157600080fd5b8301601f810185136140f257600080fd5b80356020614102613fb183613f6c565b82815260079290921b8301810191818101908884111561412157600080fd5b938201935b8385101561414757614138898661405d565b82529385019390820190614126565b808388015250505050505092915050565b60006020828403121561416a57600080fd5b813567ffffffffffffffff8082111561418257600080fd5b908301906020828603121561419657600080fd5b61419e613df2565b8235828111156141ad57600080fd5b9290920191604083870312156141c257600080fd5b6141ca613dcf565b83356141d581613d5e565b81526020840135838111156141e957600080fd5b93909301926101c084880312156141ff57600080fd5b614207613e15565b6142118886613e69565b81526142208860608701613ece565b60208201526142328860e08701613f12565b60408201526101608501358481111561424a57600080fd5b61425689828801614004565b6060830152506101808501358481111561426f57600080fd5b61427b8982880161409e565b6080830152506101a08501358481111561429457600080fd5b6142a08982880161409e565b60a0830152506020820152815295945050505050565b801515811461127057600080fd5b600080604083850312156142d757600080fd5b823567ffffffffffffffff808211156142ef57600080fd5b6142fb86838701613f90565b935060209150818501358181111561431257600080fd5b85019050601f8101861361432557600080fd5b8035614333613fb182613f6c565b81815260059190911b8201830190838101908883111561435257600080fd5b928401925b8284101561437957833561436a816142b6565b82529284019290840190614357565b80955050505050509250929050565b6000806000806080858703121561439e57600080fd5b84356143a981613d5e565b935060208501356143b981613d5e565b93969395505050506040820135916060013590565b6000602082840312156143e057600080fd5b610db482613f5d565b600080604083850312156143fc57600080fd5b823561440781613d5e565b946020939093013593505050565b634e487b7160e01b600052602160045260246000fd5b602081016002831061444d57634e487b7160e01b600052602160045260246000fd5b91905290565b6000806040838503121561446657600080fd5b50508035926020909101359150565b60008060006060848603121561448a57600080fd5b833561449581613d5e565b95602085013595506040909401359392505050565b600080600080608085870312156144c057600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161451a5761451a6144f2565b5060010190565b60005b8381101561453c578181015183820152602001614524565b50506000910152565b6000815180845261455d816020860160208601614521565b601f01601f19169290920160200192915050565b6001600160a01b0383168152604060208201526000611ae36040830184614545565b6000602082840312156145a557600080fd5b815167ffffffffffffffff808211156145bd57600080fd5b818401915084601f8301126145d157600080fd5b8151818111156145e3576145e3613d90565b6145f6601f8201601f1916602001613e38565b915080825285602082850101111561460d57600080fd5b61461e816020840160208601614521565b50949350505050565b600082601f83011261463857600080fd5b81516020614648613fb183613f6c565b82815260059290921b8401810191818101908684111561466757600080fd5b8286015b84811015613ff9578051835291830191830161466b565b6000806040838503121561469557600080fd5b825167ffffffffffffffff808211156146ad57600080fd5b818501915085601f8301126146c157600080fd5b815160206146d1613fb183613f6c565b82815260059290921b840181019181810190898411156146f057600080fd5b948201945b8386101561471757855161470881613d5e565b825294820194908201906146f5565b9188015191965090935050508082111561473057600080fd5b5061473d85828601614627565b9150509250929050565b60006020828403121561475957600080fd5b8151610db481613d5e565b600081518084526020808501945080840160005b8381101561479457815187529582019590820190600101614778565b509495945050505050565b6001600160a01b03841681526001600160e01b0319831660208201526060604082015260006131f06060830184614764565b8082028115828204841417611166576111666144f2565b60006001600160a01b0380871683528086166020840152506001600160e01b031984166040830152608060608301526148246080830184614764565b9695505050505050565b60006020828403121561484057600080fd5b8151610db4816142b6565b634e487b7160e01b600052601260045260246000fd5b6000826148705761487061484b565b500490565b80820180821115611166576111666144f2565b81810381811115611166576111666144f2565b634e487b7160e01b600052603160045260246000fd5b6000826148c0576148c061484b565b500690565b60006001600160a01b038086168352808516602084015250606060408301526131f06060830184614545565b60006020828403121561490357600080fd5b5051919050565b81810360008312801583831316838312821617156122e3576122e36144f2565b6000826149395761493961484b565b600160ff1b821460001984141615614953576149536144f2565b500590565b8082018281126000831280158216821582161715614978576149786144f2565b505092915050565b80820260008212600160ff1b8414161561499c5761499c6144f2565b8181058314821517611166576111666144f256fe496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069a26469706673582212203bcd75bcad7f1cc685bdeae587a75315bdc6c64ba0b9cf9560297d8d694448d564736f6c63430008110033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
