{
  "_format": "hh-sol-artifact-1",
  "contractName": "Collector",
  "sourceName": "contracts/primitives/Collector.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": "TaskAmountZero",
      "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": [],
      "name": "TaskTokensSourceZero",
      "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": "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": [
        {
          "indexed": true,
          "internalType": "address",
          "name": "tokensSource",
          "type": "address"
        }
      ],
      "name": "TokensSourceSet",
      "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": [
        {
          "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": "token",
          "type": "address"
        }
      ],
      "name": "getTaskAmount",
      "outputs": [
        {
          "internalType": "uint256",
          "name": "",
          "type": "uint256"
        }
      ],
      "stateMutability": "view",
      "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": [
            {
              "internalType": "address",
              "name": "tokensSource",
              "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 Collector.CollectConfig",
          "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": "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": [
        {
          "internalType": "address",
          "name": "tokensSource",
          "type": "address"
        }
      ],
      "name": "setTokensSource",
      "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": "0x60806040523480156200001157600080fd5b506200001c62000022565b620000e3565b600054610100900460ff16156200008f5760405162461bcd60e51b815260206004820152602760248201527f496e697469616c697a61626c653a20636f6e747261637420697320696e697469604482015266616c697a696e6760c81b606482015260840160405180910390fd5b60005460ff90811614620000e1576000805460ff191660ff9081179091556040519081527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15b565b6146a380620000f36000396000f3fe608060405234801561001057600080fd5b50600436106101e55760003560e01c80636aacaad81161010f578063b187bd26116100a2578063d3feb60211610071578063d3feb602146105bb578063d45a76cf146105ce578063e6b5be98146105e1578063f9eaee0d146105f457600080fd5b8063b187bd2614610561578063c267621e1461057e578063c565d9711461058f578063d09edf31146105a257600080fd5b8063993fd4de116100de578063993fd4de146104ae578063a0c3774f146104c1578063a3374177146104d4578063a5900c4d1461050757600080fd5b80636aacaad8146104345780637125590a146104805780638456cb591461049357806390333ba81461049b57600080fd5b80633f4ba83a116101875780634fd49efd116101565780634fd49efd1461038a57806351a424b1146103b55780635670e2ce146103ed5780635ea54eee1461040857600080fd5b80633f4ba83a14610320578063423a4b401461032857806342d4693e1461033b5780634a45a3a81461035557600080fd5b8063221a8c68116101c3578063221a8c68146102435780632384c32d146102e757806330eae572146102fa5780633bd9ef281461030d57600080fd5b80630fe105e8146101ea578063119a5e96146101ff5780632197238414610230575b600080fd5b6101fd6101f8366004613bfa565b610607565b005b610207610640565b6040805160ff909516855260208501939093529183015260608201526080015b60405180910390f35b6101fd61023e366004613da4565b610677565b6102b5610251366004613e68565b6001600160a01b039081166000908152601b6020908152604091829020825160a08101845281549094168085526001820154928501839052600282015493850184905260038201546060860181905260049092015460809095018590529491939091565b604080516001600160a01b0390961686526020860194909452928401919091526060830152608082015260a001610227565b6101fd6102f5366004613e85565b610727565b6101fd610308366004613eda565b610756565b6101fd61031b366004613ef5565b610797565b6101fd610869565b6101fd610336366004613e85565b6108f0565b600f546103489060ff1681565b6040516102279190613f37565b61037c7fcbce9983fcd5fc099294db3138f1660107f2bd5b23b9fa0002d7df1db9d854cb81565b604051908152602001610227565b60015461039d906001600160a01b031681565b6040516001600160a01b039091168152602001610227565b6103c86103c3366004613e68565b61091f565b604080516001600160a01b039094168452602084019290925290820152606001610227565b60025460035460408051928352602083019190915201610227565b600654600754600854600954604080519485526020850193909352918301526060820152608001610227565b6102b56040805160a0810182526016546001600160a01b03168082526017546020830181905260185493830184905260195460608401819052601a546080909401849052919490939290565b6101fd61048e366004613f5f565b610948565b6101fd610973565b6101fd6104a9366004613f81565b6109e5565b6101fd6104bc366004613e68565b610a18565b61037c6104cf366004613e68565b610a41565b6103c8604080516060810182526012546001600160a01b0316808252601354602083018190526014549290930182905292565b6103c8610515366004613e68565b6001600160a01b03808216600090815260156020908152604091829020825160608101845281549094168085526001820154928501839052600290910154939092018390529093909250565b60045461056e9060ff1681565b6040519015158152602001610227565b601c546001600160a01b031661039d565b6101fd61059d3660046141fe565b610a64565b60005461039d906201000090046001600160a01b031681565b6101fd6105c9366004613f81565b610b8a565b6102b56105dc366004613e68565b610bb7565b6101fd6105ef36600461432e565b610c26565b61056e610602366004613e68565b610c55565b6106168460ff16848484610c93565b61062d336000356001600160e01b03191683610d3e565b61063985858585610d85565b5050505050565b600a5460009081908190819060ff16600281111561066057610660613f21565b600b54600c54600e54935093509350935090919293565b61068d336000356001600160e01b03191661102a565b80518251146106c8576040517f5d32021a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8251811015610722576107108382815181106106e9576106e9614360565b602002602001015183838151811061070357610703614360565b6020026020010151611046565b8061071a8161438c565b9150506106cb565b505050565b610733848484846110f0565b61074a336000356001600160e01b03191683610d3e565b61063985858585611159565b61077381600181111561076b5761076b613f21565b60ff16611212565b61078a336000356001600160e01b03191683610d3e565b61079382611259565b5050565b6107a182826112b6565b6107b8336000356001600160e01b03191683610d3e565b816000036107cc576107c983610a41565b91505b6107d68383611325565b600154601c546040517fc8fea2fb0000000000000000000000000000000000000000000000000000000081526001600160a01b03868116600483015291821660248201526044810185905291169063c8fea2fb90606401600060405180830381600087803b15801561084757600080fd5b505af115801561085b573d6000803e3d6000fd5b5050505061072283836113a9565b61087f336000356001600160e01b03191661102a565b60045460ff166108bb576040517f9e6558bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004805460ff191690556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a1565b6108fc848484846110f0565b610913336000356001600160e01b03191683610d3e565b610639858585856113bd565b60008060008061092e8561147d565b805160208201516040909201519097919650945092505050565b6109528282611508565b610969336000356001600160e01b03191683610d3e565b6107228383611562565b610989336000356001600160e01b03191661102a565b60045460ff16156109ad5760405163181e462560e31b815260040160405180910390fd5b6004805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b6109f08383836115a7565b610a07336000356001600160e01b03191683610d3e565b610a12848484611639565b50505050565b610a218161168f565b610a38336000356001600160e01b03191683610d3e565b610793826116a3565b6000610a5e82610a59601c546001600160a01b031690565b61173a565b92915050565b600054610100900460ff1615808015610a845750600054600160ff909116105b80610a9e5750303b158015610a9e575060005460ff166001145b610b155760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff191660011790558015610b38576000805461ff0019166101001790555b610b41826117f4565b8015610793576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b610b958383836115a7565b610bac336000356001600160e01b03191683610d3e565b610a12848484611866565b600080600080600080610bc9876118c2565b6040805160a08101825282546001600160a01b031680825260018401546020830181905260028501549383018490526003850154606084018190526004909501546080909301839052909b909a5091985091965090945092505050565b610c3284848484610c93565b610c49336000356001600160e01b03191683610d3e565b610639858585856118f6565b600080610c63601084611991565b90506001600f5460ff166001811115610c7e57610c7e613f21565b14610c8a578015610c8c565b805b9392505050565b60408051600480825260a08201909252606091602082016080803683370190505090508481600081518110610cca57610cca614360565b6020026020010181815250508381600181518110610cea57610cea614360565b6020026020010181815250508281600281518110610d0a57610d0a614360565b6020026020010181815250508181600381518110610d2a57610d2a614360565b602002602001018181525050949350505050565b610d498383836119b3565b610722578282826040517f960c80da000000000000000000000000000000000000000000000000000000008152600401610b0c939291906143e0565b60ff8416610e36576000811180610d9c5750600082115b15610e315782600003610dce5760405163bea499cb60e01b815260ff8516600482015260248101849052604401610b0c565b801580610dda57508281115b15610e0457604051639e12fccf60e01b815260ff8516600482015260248101829052604401610b0c565b81600003610e3157604051635686bf5960e11b815260ff8516600482015260248101839052604401610b0c565b610f93565b82600003610e635760405163bea499cb60e01b815260ff8516600482015260248101849052604401610b0c565b801580610e7b5750610e786224ea0084614412565b81115b15610ea557604051639e12fccf60e01b815260ff8516600482015260248101829052604401610b0c565b81600003610ed257604051635686bf5960e11b815260ff8516600482015260248101839052604401610b0c565b60001960ff851601610f1457601c610ee983611a51565b1115610e3157604051635686bf5960e11b815260ff8516600482015260248101839052604401610b0c565b60011960ff851601610f5c57610f2982611a68565b610f3283611a51565b14610e3157604051635686bf5960e11b815260ff8516600482015260248101839052604401610b0c565b6040517f33a738bc00000000000000000000000000000000000000000000000000000000815260ff85166004820152602401610b0c565b8360ff166002811115610fa857610fa8613f21565b600a805460ff19166001836002811115610fc457610fc4613f21565b0217905550600b839055600c829055600e8190556040805160ff8616815260208101859052908101839052606081018290527f182fd6fa2a8560221614c1396dd4fcc78d26dfacf821a6afb61d25876057e412906080015b60405180910390a150505050565b6040805160008152602081019091526107939083908390610d3e565b6001600160a01b038216611086576040517fc41a13ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8061109b57611096601083611a8b565b6110a6565b6110a6601083611aa0565b50816001600160a01b03167f6264362e9de26efefda321dfaeb4e4a9090deef40c5435fad8e9e2e306889a1c826040516110e4911515815260200190565b60405180910390a25050565b60408051600480825260a0820190925260609160208201608080368337019050509050846001600160a01b03168160008151811061113057611130614360565b602002602001018181525050836001600160a01b031681600181518110610cea57610cea614360565b6001600160a01b038416611199576040517fe7ba3e4a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03841660009081526015602052604090206111bd90848484611ab5565b604080516001600160a01b03858116825260208201859052918101839052908516907ff099617c054d3a65e02a9c3b786f23cc03d5982bc7cfae84dff0408049cf17079060600160405180910390a250505050565b60408051600180825281830190925260609160208083019080368337019050509050818160008151811061124857611248614360565b602002602001018181525050919050565b600f805482919060ff19166001838181111561127757611277613f21565b02179055507f216b6a9618d607ba436d0f2e17e9a83e70929adff805ac2385d67401360e551a816040516112ab9190613f37565b60405180910390a150565b6040805160028082526060808301845292602083019080368337019050509050826001600160a01b0316816000815181106112f3576112f3614360565b602002602001018181525050818160018151811061131357611313614360565b60200260200101818152505092915050565b61132f8282611b92565b6001600160a01b03821661136f576040517fc0e0f12200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600003610793576040517f1463acbe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113b38282611bd8565b6107938282611c5e565b6001600160a01b0384166113fd576040517f1de0c9c700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166000908152601b6020526040902061142190848484611c86565b826001600160a01b0316846001600160a01b03167f1b5c5e27ed5443e409bae85849d41d7bf12d5352e8fddb3728b6408f836e1448848460405161146f929190918252602082015260400190565b60405180910390a350505050565b6114aa604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b6001600160a01b0380831660009081526015602052604090208054909116156114d357806114d6565b60125b6040805160608101825282546001600160a01b0316815260018301546020820152600290920154908201529392505050565b60408051600280825260608083018452926020830190803683370190505090508260001c8160008151811061153f5761153f614360565b6020026020010181815250508160001c8160018151811061131357611313614360565b811561159d576040517fade7e16800000000000000000000000000000000000000000000000000000000815260048101839052602401610b0c565b6107938282611df2565b60408051600380825260808201909252606091602082018380368337019050509050836001600160a01b0316816000815181106115e6576115e6614360565b602002602001018181525050828160018151811061160657611606614360565b602002602001018181525050818160028151811061162657611626614360565b6020026020010181815250509392505050565b6116466016848484611c86565b60408051838152602081018390526001600160a01b038516917f6324b5f18e615697a2b44f16d7a649deb0bbbc7cb09dad4c610306105730e7d9910160405180910390a2505050565b6060610a5e826001600160a01b0316611212565b6001600160a01b0381166116e3576040517f602a8a6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601c805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040517f1614e726b084b514c185bf6bca77bc3eb2242e5b905c019703431dd46a9bd03490600090a250565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0384160361177157506001600160a01b03811631610a5e565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301528416906370a0823190602401602060405180830381865afa1580156117d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8c9190614429565b600054610100900460ff1661184d5760405162461bcd60e51b815260206004820152602b602482015260008051602061464e83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b0c565b61185a8160200151611e75565b61186381611f2b565b50565b6118736012848484611ab5565b604080516001600160a01b0385168152602081018490529081018290527fa80953bdc344b2ebd0bcdd001a3418a8fd1b858bdecf12a4ba5a9366ad65d3459060600160405180910390a1505050565b6001600160a01b038082166000908152601b6020526040812080549192909116156118ed5780610c8c565b60169392505050565b670de0b6b3a7640000811115611938576040517fce57496100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068490556007839055600882905560098190556040805185815260208101859052908101839052606081018290527f746dc5eb53c5de07c40b06d428506d6982ea10c423ac2875abfc44038927d6919060800161101c565b6001600160a01b03811660009081526001830160205260408120541515610c8c565b600080546040517f28522895000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b031690632852289590611a08908790309088908890600401614442565b602060405180830381865afa158015611a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a499190614488565b949350505050565b6000611a49611a6362015180846144bb565b611f8f565b60008080611a7c611a6362015180866144bb565b5091509150611a49828261202b565b6000610c8c836001600160a01b0384166120b1565b6000610c8c836001600160a01b0384166121ab565b60006001600160a01b038416158015611acc575082155b8015611ad6575081155b905060006001600160a01b03851615801590611afa5750821580611afa5750838310155b905081158015611b08575080155b15611b58576040517fca1f04830000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024810185905260448101849052606401610b0c565b5050835473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03939093169290921783556001830155600290910155565b611b9c82826121fa565b611ba68282612204565b611bb08282612228565b611bba8282612314565b611bc48282612503565b611bce828261254d565b610793828261263a565b60035415610793576001805460035460405163eb056bbb60e01b815260048101919091526001600160a01b03858116602483015260448201859052606482019390935291169063eb056bbb906084015b600060405180830381600087803b158015611c4257600080fd5b505af1158015611c56573d6000803e3d6000fd5b505050505050565b611c688282612750565b611c7282826127f2565b611c7c8282612814565b6107938282612a5e565b60006001600160a01b038416158015611c9d575082155b8015611ca7575081155b905060006001600160a01b03851615801590611cc35750600084115b8015611ccf5750600083115b905081158015611cdd575080155b15611d2d576040517ff5deb5dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024810185905260448101849052606401610b0c565b60038601839055600186018490558115611d54576000600287018190556004870155611dc0565b8560040154600003611d7b5760006002870155611d7183426144cf565b6004870155611dc0565b85546001600160a01b03868116911614611dc0578554600090611da7906001600160a01b031687612a8b565b6002880154909150611db99082612a97565b6002880155505b5050835473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0393909316929092179092555050565b8082148015611e0057508115155b15611e3a576040517f0fb49edb00000000000000000000000000000000000000000000000000000000815260048101839052602401610b0c565b60028290556003819055604051819083907ff950a929751d87db181a0a517df21bb3ecd433abba584594402db4b58a55483590600090a35050565b600054610100900460ff16611ece5760405162461bcd60e51b815260206004820152602b602482015260008051602061464e83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b0c565b8051611ed990612af4565b611ee1612bc4565b611eee8160200151612c27565b611efb8160400151612c89565b611f088160600151612ceb565b611f158160800151612d4d565b611f228160a00151612daf565b61186381612e11565b600054610100900460ff16611f845760405162461bcd60e51b815260206004820152602b602482015260008051602061464e83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b0c565b8051611863906116a3565b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f8460500281611fec57611fec6144a5565b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b6000816001148061203c5750816003145b806120475750816005145b806120525750816007145b8061205d5750816008145b80612068575081600a145b80612073575081600c145b156120805750601f610a5e565b816002146120905750601e610a5e565b61209983612e6a565b6120a457601c6120a7565b601d5b60ff169392505050565b6000818152600183016020526040812054801561219a5760006120d56001836144e2565b85549091506000906120e9906001906144e2565b905081811461214e57600086600001828154811061210957612109614360565b906000526020600020015490508087600001848154811061212c5761212c614360565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061215f5761215f6144f5565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610a5e565b6000915050610a5e565b5092915050565b60008181526001830160205260408120546121f257508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610a5e565b506000610a5e565b6107938282612ea6565b60045460ff16156107935760405163181e462560e31b815260040160405180910390fd5b5a600555604080516080810182526006548082526007546020830152600854928201929092526009546060820152906000901580612267575081513a11155b9050806122ac5781516040517fcbb35eb70000000000000000000000000000000000000000000000000000000081523a60048201526024810191909152604401610b0c565b602082015115610a125760006122c2483a6144e2565b602084015190915081111580611c565760208401516040517f56e5387f000000000000000000000000000000000000000000000000000000008152610b0c918491600401918252602082015260400190565b600a54600b54600c54600e5460ff90931692428211156123505760405163013ce60b60e01b815242600482015260248101839052604401610b0c565b600084600281111561236457612364613f21565b0361241d578260000361237957505050505050565b806000036123935761238b83426144cf565b600d55611c56565b600061239f83426144e2565b905060006123ad85836144bb565b905060006123bb8683614412565b6123c590846144e2565b9050838111156123f15760405163013ce60b60e01b815242600482015260248101869052604401610b0c565b856123fd8360016144cf565b6124079190614412565b61241190866144cf565b600d5550611c56915050565b814210158015612436575061243281836144cf565b4211155b156124455761238b8284612ef9565b6000600185600281111561245b5761245b613f21565b1461246e5761246942611a68565b612477565b61247783611a51565b905060006124858483612f91565b9050804210156124b15760405163013ce60b60e01b815242600482015260248101829052604401610b0c565b60006124bd84836144cf565b905042811080156124ea5760405163013ce60b60e01b815242600482015260248101839052604401610b0c565b6124f48388612ef9565b600d5550505050505050505050565b61250c82610c55565b610793576040517f7a2410450000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610b0c565b60006125588361147d565b80519091506001600160a01b031661256f57505050565b6000836001600160a01b031682600001516001600160a01b0316146125ab576125a661259f858460000151612a8b565b8490612a97565b6125ad565b825b90506000826020015182101580156125d55750604083015115806125d5575082604001518211155b905080610639578251602084015160408086015190517f7c63a4b00000000000000000000000000000000000000000000000000000000081526001600160a01b0390931660048401526024830185905260448301919091526064820152608401610b0c565b6000612645836118c2565b6040805160a08101825282546001600160a01b03168082526001840154602083015260028401549282019290925260038301546060820152600490920154608083015290915061269457505050565b6000836001600160a01b031682600001516001600160a01b0316146126c9576126c461259f858460000151612a8b565b6126cb565b825b90506000826080015142106126e15760006126e7565b82604001515b6126f190836144cf565b9050826020015181111561063957825160208401516040517fb8858d5d0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260448101829052606401610b0c565b600061275b836118c2565b80549091506001600160a01b031661277257505050565b80546000906001600160a01b038581169116146127a85781546127a39061259f9086906001600160a01b0316612a8b565b6127aa565b825b9050816004015442106127d3576000600283015560038201546127cd90426144cf565b60048301555b808260020160008282546127e791906144cf565b909155505050505050565b600d54600003612800575050565b61280b600d54612fb9565b50506000600d55565b600554600003612850576040517f1f5b8fc600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516080810182526006548152600754602082015260085491810191909152600954606082015260005a60055461288991906144e2565b905060006128973a83614412565b905060008360400151600014806128b2575083604001518211155b9050806128fc578184604001516040517faf258ef2000000000000000000000000000000000000000000000000000000008152600401610b0c929190918252602082015260400190565b60006005556060840151158015906129145750600085115b15611c565760006129e7306001600160a01b0316634fd49efd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561295c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612980919061450b565b6001600160a01b03166317fcb39b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129e1919061450b565b88612a8b565b905060006129f58483612fee565b90506000612a038289613060565b90508660600151811115612a535760608701516040517f0297747f000000000000000000000000000000000000000000000000000000008152610b0c918391600401918252602082015260400190565b505050505050505050565b6040517f68f46c45a243a0e9065a97649faf9a5afe1692f2679e650c2f853b9cd734cc0e90600090a15050565b6000610c8c8383613129565b60008282028315801590612aba575082848281612ab657612ab66144a5565b0414155b15612ae257604051637472527d60e11b81526004810185905260248101849052604401610b0c565b670de0b6b3a764000090049392505050565b600054610100900460ff16612b4d5760405162461bcd60e51b815260206004820152602b602482015260008051602061464e83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b0c565b612bbb81600001516001600160a01b031663d09edf316040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bb6919061450b565b61331f565b61186381613381565b600054610100900460ff16612c1d5760405162461bcd60e51b815260206004820152602b602482015260008051602061464e83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b0c565b612c2561341c565b565b600054610100900460ff16612c805760405162461bcd60e51b815260206004820152602b602482015260008051602061464e83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b0c565b61186381613475565b600054610100900460ff16612ce25760405162461bcd60e51b815260206004820152602b602482015260008051602061464e83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b0c565b611863816134ea565b600054610100900460ff16612d445760405162461bcd60e51b815260206004820152602b602482015260008051602061464e83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b0c565b6118638161355f565b600054610100900460ff16612da65760405162461bcd60e51b815260206004820152602b602482015260008051602061464e83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b0c565b6118638161360d565b600054610100900460ff16612e085760405162461bcd60e51b815260206004820152602b602482015260008051602061464e83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b0c565b611863816136eb565b600054610100900460ff166118635760405162461bcd60e51b815260206004820152602b602482015260008051602061464e83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b0c565b6000612e77600483614528565b158015612e8d5750612e8a606483614528565b15155b80610a5e5750612e9f61019083614528565b1592915050565b600254156107935760015460025460405163eb056bbb60e01b815260048101919091526001600160a01b03848116602483015260448201849052600060648301529091169063eb056bbb90608401611c28565b600080600080612f08866137c9565b919450925090506000612f1b86846144cf565b90506000612f2a600c83614528565b90506000612f39600c846144bb565b612f4390876144cf565b905060006002600a5460ff166002811115612f6057612f60613f21565b14612f6b5784612f75565b612f75828461202b565b9050612f838a8385846137e8565b9a9950505050505050505050565b6000806000612f9f426137c9565b5091509150612fb0858383876137e8565b95945050505050565b600c8190556040518181527ff90744bee56935ec5acc9de37b89c0c545298c667ee417bd9469e9c6836ad064906020016112ab565b6000828202831580159061301157508284828161300d5761300d6144a5565b0414155b1561303957604051637472527d60e11b81526004810185905260248101849052604401610b0c565b801561305657670de0b6b3a7640000600019820104600101611a49565b6000949350505050565b60008160000361309c576040517fb8a2f92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036130ac57506000610a5e565b670de0b6b3a7640000838102908482816130c8576130c86144a5565b041461310a576040517fea7b49e60000000000000000000000000000000000000000000000000000000081526004810185905260248101829052604401610b0c565b82600182038161311c5761311c6144a5565b0460010191505092915050565b600080600160009054906101000a90046001600160a01b03166001600160a01b0316632630c12f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561317f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131a3919061450b565b90506001600160a01b0381166131f4576001546040517f38d2baae0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152602401610b0c565b60006131fe613810565b9050805160001461328f57816001600160a01b031663355efdd961322187613890565b61322a87613890565b846040518463ffffffff1660e01b81526004016132499392919061453c565b602060405180830381865afa158015613266573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061328a9190614429565b612fb0565b816001600160a01b031663ac41865a6132a787613890565b6132b087613890565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156132fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fb09190614429565b600054610100900460ff166133785760405162461bcd60e51b815260206004820152602b602482015260008051602061464e83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b0c565b611863816138c4565b600054610100900460ff166133da5760405162461bcd60e51b815260206004820152602b602482015260008051602061464e83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b0c565b80516001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03909216919091179055602081015160408201516118639190611562565b600054610100900460ff16612c255760405162461bcd60e51b815260206004820152602b602482015260008051602061464e83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b0c565b600054610100900460ff166134ce5760405162461bcd60e51b815260206004820152602b602482015260008051602061464e83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b0c565b61186381600001518260200151836040015184606001516118f6565b600054610100900460ff166135435760405162461bcd60e51b815260206004820152602b602482015260008051602061464e83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b0c565b6118638160000151826020015183604001518460600151610d85565b600054610100900460ff166135b85760405162461bcd60e51b815260206004820152602b602482015260008051602061464e83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b0c565b80516135c390611259565b60005b816020015151811015610793576135fb826020015182815181106135ec576135ec614360565b60200260200101516001611046565b806136058161438c565b9150506135c6565b600054610100900460ff166136665760405162461bcd60e51b815260206004820152602b602482015260008051602061464e83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b0c565b805180516020820151604083015161367f929190611866565b60005b826020015151811015610722576000836020015182815181106136a7576136a7614360565b602002602001015190506000816020015190506136d68260000151826000015183602001518460400151611159565b505080806136e39061438c565b915050613682565b600054610100900460ff166137445760405162461bcd60e51b815260206004820152602b602482015260008051602061464e83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b0c565b805180516020820151604083015161375d929190611639565b60005b8260200151518110156107225760008360200151828151811061378557613785614360565b602002602001015190506000816020015190506137b482600001518260000151836020015184604001516113bd565b505080806137c19061438c565b915050613760565b600080806137db620151808504611f8f565b9196909550909350915050565b6000612fb08484846137f98961395d565b6138028a61397b565b61380b8b613997565b6139a4565b6060600061381c613a00565b90503681111561383a57505060408051600081526020810190915290565b8067ffffffffffffffff81111561385357613853613c33565b6040519080825280601f01601f19166020018201604052801561387d576020820181803683370190505b5091508060208236030360208401375090565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b038316146138bc5781610a5e565b610a5e613a1b565b600054610100900460ff1661391d5760405162461bcd60e51b815260206004820152602b602482015260008051602061464e83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b0c565b600080546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b60008061396d6201518084614528565b9050610c8c610e10826144bb565b60008061398a610e1084614528565b9050610c8c603c826144bb565b6000610a5e603c83614528565b6000816139b2603c85614412565b6139be610e1087614412565b620151806139cd8b8b8b613aa7565b6139d79190614412565b6139e191906144cf565b6139eb91906144cf565b6139f591906144cf565b979650505050505050565b60006024361015613a115750600090565b50601f1936013590565b600154604080517f17fcb39b00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916317fcb39b9160048083019260209291908290030181865afa158015613a7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aa2919061450b565b905090565b60006107b2841015613ab857600080fd5b838383600062253d8c60046064600c613ad2600e886145a7565b613adc91906145c7565b613ae8886113246145f5565b613af291906145f5565b613afc91906145c7565b613b0790600361461d565b613b1191906145c7565b600c80613b1f600e886145a7565b613b2991906145c7565b613b3490600c61461d565b613b3f6002886145a7565b613b4991906145a7565b613b559061016f61461d565b613b5f91906145c7565b6004600c613b6e600e896145a7565b613b7891906145c7565b613b84896112c06145f5565b613b8e91906145f5565b613b9a906105b561461d565b613ba491906145c7565b613bb0617d4b876145a7565b613bba91906145f5565b613bc491906145f5565b613bce91906145a7565b613bd891906145a7565b98975050505050505050565b803560ff81168114613bf557600080fd5b919050565b60008060008060808587031215613c1057600080fd5b613c1985613be4565b966020860135965060408601359560600135945092505050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715613c6c57613c6c613c33565b60405290565b6040805190810167ffffffffffffffff81118282101715613c6c57613c6c613c33565b60405160c0810167ffffffffffffffff81118282101715613c6c57613c6c613c33565b604051601f8201601f1916810167ffffffffffffffff81118282101715613ce157613ce1613c33565b604052919050565b600067ffffffffffffffff821115613d0357613d03613c33565b5060051b60200190565b6001600160a01b038116811461186357600080fd5b600082601f830112613d3357600080fd5b81356020613d48613d4383613ce9565b613cb8565b82815260059290921b84018101918181019086841115613d6757600080fd5b8286015b84811015613d8b578035613d7e81613d0d565b8352918301918301613d6b565b509695505050505050565b801515811461186357600080fd5b60008060408385031215613db757600080fd5b823567ffffffffffffffff80821115613dcf57600080fd5b613ddb86838701613d22565b9350602091508185013581811115613df257600080fd5b85019050601f81018613613e0557600080fd5b8035613e13613d4382613ce9565b81815260059190911b82018301908381019088831115613e3257600080fd5b928401925b82841015613e59578335613e4a81613d96565b82529284019290840190613e37565b80955050505050509250929050565b600060208284031215613e7a57600080fd5b8135610c8c81613d0d565b60008060008060808587031215613e9b57600080fd5b8435613ea681613d0d565b93506020850135613eb681613d0d565b93969395505050506040820135916060013590565b803560028110613bf557600080fd5b600060208284031215613eec57600080fd5b610c8c82613ecb565b60008060408385031215613f0857600080fd5b8235613f1381613d0d565b946020939093013593505050565b634e487b7160e01b600052602160045260246000fd5b6020810160028310613f5957634e487b7160e01b600052602160045260246000fd5b91905290565b60008060408385031215613f7257600080fd5b50508035926020909101359150565b600080600060608486031215613f9657600080fd5b8335613fa181613d0d565b95602085013595506040909401359392505050565b600060608284031215613fc857600080fd5b6040516060810181811067ffffffffffffffff82111715613feb57613feb613c33565b6040529050808235613ffc81613d0d565b8082525060208301356020820152604083013560408201525092915050565b60006080828403121561402d57600080fd5b614035613c49565b90508135815260208201356020820152604082013560408201526060820135606082015292915050565b60006080828403121561407157600080fd5b614079613c49565b905061408482613be4565b815260208201356020820152604082013560408201526060820135606082015292915050565b6000604082840312156140bc57600080fd5b6140c4613c72565b90506140cf82613ecb565b8152602082013567ffffffffffffffff8111156140eb57600080fd5b6140f784828501613d22565b60208301525092915050565b60006080828403121561411557600080fd5b61411d613c72565b9050813561412a81613d0d565b81526141398360208401613fb6565b602082015292915050565b6000608080838503121561415757600080fd5b61415f613c72565b915061416b8484613fb6565b8252606083013567ffffffffffffffff81111561418757600080fd5b8301601f8101851361419857600080fd5b803560206141a8613d4383613ce9565b82815260079290921b830181019181810190888411156141c757600080fd5b938201935b838510156141ed576141de8986614103565b825293850193908201906141cc565b808388015250505050505092915050565b60006020828403121561421057600080fd5b813567ffffffffffffffff8082111561422857600080fd5b908301906040828603121561423c57600080fd5b614244613c72565b823561424f81613d0d565b815260208301358281111561426357600080fd5b92909201916101c0838703121561427957600080fd5b614281613c95565b61428b8785613fb6565b815261429a876060860161401b565b60208201526142ac8760e0860161405f565b6040820152610160840135838111156142c457600080fd5b6142d0888287016140aa565b606083015250610180840135838111156142e957600080fd5b6142f588828701614144565b6080830152506101a08401358381111561430e57600080fd5b61431a88828701614144565b60a083015250602082015295945050505050565b6000806000806080858703121561434457600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161439e5761439e614376565b5060010190565b600081518084526020808501945080840160005b838110156143d5578151875295820195908201906001016143b9565b509495945050505050565b6001600160a01b03841681526001600160e01b031983166020820152606060408201526000612fb060608301846143a5565b8082028115828204841417610a5e57610a5e614376565b60006020828403121561443b57600080fd5b5051919050565b60006001600160a01b0380871683528086166020840152506001600160e01b0319841660408301526080606083015261447e60808301846143a5565b9695505050505050565b60006020828403121561449a57600080fd5b8151610c8c81613d96565b634e487b7160e01b600052601260045260246000fd5b6000826144ca576144ca6144a5565b500490565b80820180821115610a5e57610a5e614376565b81810381811115610a5e57610a5e614376565b634e487b7160e01b600052603160045260246000fd5b60006020828403121561451d57600080fd5b8151610c8c81613d0d565b600082614537576145376144a5565b500690565b60006001600160a01b038086168352602081861681850152606060408501528451915081606085015260005b8281101561458457858101820151858201608001528101614568565b50506000608082850101526080601f19601f830116840101915050949350505050565b81810360008312801583831316838312821617156121a4576121a4614376565b6000826145d6576145d66144a5565b600160ff1b8214600019841416156145f0576145f0614376565b500590565b808201828112600083128015821682158216171561461557614615614376565b505092915050565b80820260008212600160ff1b8414161561463957614639614376565b8181058314821517610a5e57610a5e61437656fe496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069a26469706673582212206a2b8b911a22688b280ed146cac59b2da9139bbebd2d7acf4fa71b8cf542bca264736f6c63430008110033",
  "deployedBytecode": "0x608060405234801561001057600080fd5b50600436106101e55760003560e01c80636aacaad81161010f578063b187bd26116100a2578063d3feb60211610071578063d3feb602146105bb578063d45a76cf146105ce578063e6b5be98146105e1578063f9eaee0d146105f457600080fd5b8063b187bd2614610561578063c267621e1461057e578063c565d9711461058f578063d09edf31146105a257600080fd5b8063993fd4de116100de578063993fd4de146104ae578063a0c3774f146104c1578063a3374177146104d4578063a5900c4d1461050757600080fd5b80636aacaad8146104345780637125590a146104805780638456cb591461049357806390333ba81461049b57600080fd5b80633f4ba83a116101875780634fd49efd116101565780634fd49efd1461038a57806351a424b1146103b55780635670e2ce146103ed5780635ea54eee1461040857600080fd5b80633f4ba83a14610320578063423a4b401461032857806342d4693e1461033b5780634a45a3a81461035557600080fd5b8063221a8c68116101c3578063221a8c68146102435780632384c32d146102e757806330eae572146102fa5780633bd9ef281461030d57600080fd5b80630fe105e8146101ea578063119a5e96146101ff5780632197238414610230575b600080fd5b6101fd6101f8366004613bfa565b610607565b005b610207610640565b6040805160ff909516855260208501939093529183015260608201526080015b60405180910390f35b6101fd61023e366004613da4565b610677565b6102b5610251366004613e68565b6001600160a01b039081166000908152601b6020908152604091829020825160a08101845281549094168085526001820154928501839052600282015493850184905260038201546060860181905260049092015460809095018590529491939091565b604080516001600160a01b0390961686526020860194909452928401919091526060830152608082015260a001610227565b6101fd6102f5366004613e85565b610727565b6101fd610308366004613eda565b610756565b6101fd61031b366004613ef5565b610797565b6101fd610869565b6101fd610336366004613e85565b6108f0565b600f546103489060ff1681565b6040516102279190613f37565b61037c7fcbce9983fcd5fc099294db3138f1660107f2bd5b23b9fa0002d7df1db9d854cb81565b604051908152602001610227565b60015461039d906001600160a01b031681565b6040516001600160a01b039091168152602001610227565b6103c86103c3366004613e68565b61091f565b604080516001600160a01b039094168452602084019290925290820152606001610227565b60025460035460408051928352602083019190915201610227565b600654600754600854600954604080519485526020850193909352918301526060820152608001610227565b6102b56040805160a0810182526016546001600160a01b03168082526017546020830181905260185493830184905260195460608401819052601a546080909401849052919490939290565b6101fd61048e366004613f5f565b610948565b6101fd610973565b6101fd6104a9366004613f81565b6109e5565b6101fd6104bc366004613e68565b610a18565b61037c6104cf366004613e68565b610a41565b6103c8604080516060810182526012546001600160a01b0316808252601354602083018190526014549290930182905292565b6103c8610515366004613e68565b6001600160a01b03808216600090815260156020908152604091829020825160608101845281549094168085526001820154928501839052600290910154939092018390529093909250565b60045461056e9060ff1681565b6040519015158152602001610227565b601c546001600160a01b031661039d565b6101fd61059d3660046141fe565b610a64565b60005461039d906201000090046001600160a01b031681565b6101fd6105c9366004613f81565b610b8a565b6102b56105dc366004613e68565b610bb7565b6101fd6105ef36600461432e565b610c26565b61056e610602366004613e68565b610c55565b6106168460ff16848484610c93565b61062d336000356001600160e01b03191683610d3e565b61063985858585610d85565b5050505050565b600a5460009081908190819060ff16600281111561066057610660613f21565b600b54600c54600e54935093509350935090919293565b61068d336000356001600160e01b03191661102a565b80518251146106c8576040517f5d32021a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60005b8251811015610722576107108382815181106106e9576106e9614360565b602002602001015183838151811061070357610703614360565b6020026020010151611046565b8061071a8161438c565b9150506106cb565b505050565b610733848484846110f0565b61074a336000356001600160e01b03191683610d3e565b61063985858585611159565b61077381600181111561076b5761076b613f21565b60ff16611212565b61078a336000356001600160e01b03191683610d3e565b61079382611259565b5050565b6107a182826112b6565b6107b8336000356001600160e01b03191683610d3e565b816000036107cc576107c983610a41565b91505b6107d68383611325565b600154601c546040517fc8fea2fb0000000000000000000000000000000000000000000000000000000081526001600160a01b03868116600483015291821660248201526044810185905291169063c8fea2fb90606401600060405180830381600087803b15801561084757600080fd5b505af115801561085b573d6000803e3d6000fd5b5050505061072283836113a9565b61087f336000356001600160e01b03191661102a565b60045460ff166108bb576040517f9e6558bd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6004805460ff191690556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d1693390600090a1565b6108fc848484846110f0565b610913336000356001600160e01b03191683610d3e565b610639858585856113bd565b60008060008061092e8561147d565b805160208201516040909201519097919650945092505050565b6109528282611508565b610969336000356001600160e01b03191683610d3e565b6107228383611562565b610989336000356001600160e01b03191661102a565b60045460ff16156109ad5760405163181e462560e31b815260040160405180910390fd5b6004805460ff191660011790556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e75290600090a1565b6109f08383836115a7565b610a07336000356001600160e01b03191683610d3e565b610a12848484611639565b50505050565b610a218161168f565b610a38336000356001600160e01b03191683610d3e565b610793826116a3565b6000610a5e82610a59601c546001600160a01b031690565b61173a565b92915050565b600054610100900460ff1615808015610a845750600054600160ff909116105b80610a9e5750303b158015610a9e575060005460ff166001145b610b155760405162461bcd60e51b815260206004820152602e60248201527f496e697469616c697a61626c653a20636f6e747261637420697320616c72656160448201527f647920696e697469616c697a656400000000000000000000000000000000000060648201526084015b60405180910390fd5b6000805460ff191660011790558015610b38576000805461ff0019166101001790555b610b41826117f4565b8015610793576000805461ff0019169055604051600181527f7f26b83ff96e1f2b6a682f133852f6798a09c465da95921460cefb38474024989060200160405180910390a15050565b610b958383836115a7565b610bac336000356001600160e01b03191683610d3e565b610a12848484611866565b600080600080600080610bc9876118c2565b6040805160a08101825282546001600160a01b031680825260018401546020830181905260028501549383018490526003850154606084018190526004909501546080909301839052909b909a5091985091965090945092505050565b610c3284848484610c93565b610c49336000356001600160e01b03191683610d3e565b610639858585856118f6565b600080610c63601084611991565b90506001600f5460ff166001811115610c7e57610c7e613f21565b14610c8a578015610c8c565b805b9392505050565b60408051600480825260a08201909252606091602082016080803683370190505090508481600081518110610cca57610cca614360565b6020026020010181815250508381600181518110610cea57610cea614360565b6020026020010181815250508281600281518110610d0a57610d0a614360565b6020026020010181815250508181600381518110610d2a57610d2a614360565b602002602001018181525050949350505050565b610d498383836119b3565b610722578282826040517f960c80da000000000000000000000000000000000000000000000000000000008152600401610b0c939291906143e0565b60ff8416610e36576000811180610d9c5750600082115b15610e315782600003610dce5760405163bea499cb60e01b815260ff8516600482015260248101849052604401610b0c565b801580610dda57508281115b15610e0457604051639e12fccf60e01b815260ff8516600482015260248101829052604401610b0c565b81600003610e3157604051635686bf5960e11b815260ff8516600482015260248101839052604401610b0c565b610f93565b82600003610e635760405163bea499cb60e01b815260ff8516600482015260248101849052604401610b0c565b801580610e7b5750610e786224ea0084614412565b81115b15610ea557604051639e12fccf60e01b815260ff8516600482015260248101829052604401610b0c565b81600003610ed257604051635686bf5960e11b815260ff8516600482015260248101839052604401610b0c565b60001960ff851601610f1457601c610ee983611a51565b1115610e3157604051635686bf5960e11b815260ff8516600482015260248101839052604401610b0c565b60011960ff851601610f5c57610f2982611a68565b610f3283611a51565b14610e3157604051635686bf5960e11b815260ff8516600482015260248101839052604401610b0c565b6040517f33a738bc00000000000000000000000000000000000000000000000000000000815260ff85166004820152602401610b0c565b8360ff166002811115610fa857610fa8613f21565b600a805460ff19166001836002811115610fc457610fc4613f21565b0217905550600b839055600c829055600e8190556040805160ff8616815260208101859052908101839052606081018290527f182fd6fa2a8560221614c1396dd4fcc78d26dfacf821a6afb61d25876057e412906080015b60405180910390a150505050565b6040805160008152602081019091526107939083908390610d3e565b6001600160a01b038216611086576040517fc41a13ec00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8061109b57611096601083611a8b565b6110a6565b6110a6601083611aa0565b50816001600160a01b03167f6264362e9de26efefda321dfaeb4e4a9090deef40c5435fad8e9e2e306889a1c826040516110e4911515815260200190565b60405180910390a25050565b60408051600480825260a0820190925260609160208201608080368337019050509050846001600160a01b03168160008151811061113057611130614360565b602002602001018181525050836001600160a01b031681600181518110610cea57610cea614360565b6001600160a01b038416611199576040517fe7ba3e4a00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b03841660009081526015602052604090206111bd90848484611ab5565b604080516001600160a01b03858116825260208201859052918101839052908516907ff099617c054d3a65e02a9c3b786f23cc03d5982bc7cfae84dff0408049cf17079060600160405180910390a250505050565b60408051600180825281830190925260609160208083019080368337019050509050818160008151811061124857611248614360565b602002602001018181525050919050565b600f805482919060ff19166001838181111561127757611277613f21565b02179055507f216b6a9618d607ba436d0f2e17e9a83e70929adff805ac2385d67401360e551a816040516112ab9190613f37565b60405180910390a150565b6040805160028082526060808301845292602083019080368337019050509050826001600160a01b0316816000815181106112f3576112f3614360565b602002602001018181525050818160018151811061131357611313614360565b60200260200101818152505092915050565b61132f8282611b92565b6001600160a01b03821661136f576040517fc0e0f12200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600003610793576040517f1463acbe00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6113b38282611bd8565b6107938282611c5e565b6001600160a01b0384166113fd576040517f1de0c9c700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6001600160a01b0384166000908152601b6020526040902061142190848484611c86565b826001600160a01b0316846001600160a01b03167f1b5c5e27ed5443e409bae85849d41d7bf12d5352e8fddb3728b6408f836e1448848460405161146f929190918252602082015260400190565b60405180910390a350505050565b6114aa604051806060016040528060006001600160a01b0316815260200160008152602001600081525090565b6001600160a01b0380831660009081526015602052604090208054909116156114d357806114d6565b60125b6040805160608101825282546001600160a01b0316815260018301546020820152600290920154908201529392505050565b60408051600280825260608083018452926020830190803683370190505090508260001c8160008151811061153f5761153f614360565b6020026020010181815250508160001c8160018151811061131357611313614360565b811561159d576040517fade7e16800000000000000000000000000000000000000000000000000000000815260048101839052602401610b0c565b6107938282611df2565b60408051600380825260808201909252606091602082018380368337019050509050836001600160a01b0316816000815181106115e6576115e6614360565b602002602001018181525050828160018151811061160657611606614360565b602002602001018181525050818160028151811061162657611626614360565b6020026020010181815250509392505050565b6116466016848484611c86565b60408051838152602081018390526001600160a01b038516917f6324b5f18e615697a2b44f16d7a649deb0bbbc7cb09dad4c610306105730e7d9910160405180910390a2505050565b6060610a5e826001600160a01b0316611212565b6001600160a01b0381166116e3576040517f602a8a6500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601c805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0383169081179091556040517f1614e726b084b514c185bf6bca77bc3eb2242e5b905c019703431dd46a9bd03490600090a250565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b0384160361177157506001600160a01b03811631610a5e565b6040517f70a082310000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301528416906370a0823190602401602060405180830381865afa1580156117d0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c8c9190614429565b600054610100900460ff1661184d5760405162461bcd60e51b815260206004820152602b602482015260008051602061464e83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b0c565b61185a8160200151611e75565b61186381611f2b565b50565b6118736012848484611ab5565b604080516001600160a01b0385168152602081018490529081018290527fa80953bdc344b2ebd0bcdd001a3418a8fd1b858bdecf12a4ba5a9366ad65d3459060600160405180910390a1505050565b6001600160a01b038082166000908152601b6020526040812080549192909116156118ed5780610c8c565b60169392505050565b670de0b6b3a7640000811115611938576040517fce57496100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60068490556007839055600882905560098190556040805185815260208101859052908101839052606081018290527f746dc5eb53c5de07c40b06d428506d6982ea10c423ac2875abfc44038927d6919060800161101c565b6001600160a01b03811660009081526001830160205260408120541515610c8c565b600080546040517f28522895000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b031690632852289590611a08908790309088908890600401614442565b602060405180830381865afa158015611a25573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a499190614488565b949350505050565b6000611a49611a6362015180846144bb565b611f8f565b60008080611a7c611a6362015180866144bb565b5091509150611a49828261202b565b6000610c8c836001600160a01b0384166120b1565b6000610c8c836001600160a01b0384166121ab565b60006001600160a01b038416158015611acc575082155b8015611ad6575081155b905060006001600160a01b03851615801590611afa5750821580611afa5750838310155b905081158015611b08575080155b15611b58576040517fca1f04830000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024810185905260448101849052606401610b0c565b5050835473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03939093169290921783556001830155600290910155565b611b9c82826121fa565b611ba68282612204565b611bb08282612228565b611bba8282612314565b611bc48282612503565b611bce828261254d565b610793828261263a565b60035415610793576001805460035460405163eb056bbb60e01b815260048101919091526001600160a01b03858116602483015260448201859052606482019390935291169063eb056bbb906084015b600060405180830381600087803b158015611c4257600080fd5b505af1158015611c56573d6000803e3d6000fd5b505050505050565b611c688282612750565b611c7282826127f2565b611c7c8282612814565b6107938282612a5e565b60006001600160a01b038416158015611c9d575082155b8015611ca7575081155b905060006001600160a01b03851615801590611cc35750600084115b8015611ccf5750600083115b905081158015611cdd575080155b15611d2d576040517ff5deb5dc0000000000000000000000000000000000000000000000000000000081526001600160a01b03861660048201526024810185905260448101849052606401610b0c565b60038601839055600186018490558115611d54576000600287018190556004870155611dc0565b8560040154600003611d7b5760006002870155611d7183426144cf565b6004870155611dc0565b85546001600160a01b03868116911614611dc0578554600090611da7906001600160a01b031687612a8b565b6002880154909150611db99082612a97565b6002880155505b5050835473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0393909316929092179092555050565b8082148015611e0057508115155b15611e3a576040517f0fb49edb00000000000000000000000000000000000000000000000000000000815260048101839052602401610b0c565b60028290556003819055604051819083907ff950a929751d87db181a0a517df21bb3ecd433abba584594402db4b58a55483590600090a35050565b600054610100900460ff16611ece5760405162461bcd60e51b815260206004820152602b602482015260008051602061464e83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b0c565b8051611ed990612af4565b611ee1612bc4565b611eee8160200151612c27565b611efb8160400151612c89565b611f088160600151612ceb565b611f158160800151612d4d565b611f228160a00151612daf565b61186381612e11565b600054610100900460ff16611f845760405162461bcd60e51b815260206004820152602b602482015260008051602061464e83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b0c565b8051611863906116a3565b60008080836226496581018262023ab1600483020590506004600362023ab18302010590910390600062164b09610fa0600185010205905060046105b58202058303601f019250600061098f8460500281611fec57611fec6144a5565b0590506000605061098f83020585039050600b820560301994909401606402929092018301996002600c90940290910392909201975095509350505050565b6000816001148061203c5750816003145b806120475750816005145b806120525750816007145b8061205d5750816008145b80612068575081600a145b80612073575081600c145b156120805750601f610a5e565b816002146120905750601e610a5e565b61209983612e6a565b6120a457601c6120a7565b601d5b60ff169392505050565b6000818152600183016020526040812054801561219a5760006120d56001836144e2565b85549091506000906120e9906001906144e2565b905081811461214e57600086600001828154811061210957612109614360565b906000526020600020015490508087600001848154811061212c5761212c614360565b6000918252602080832090910192909255918252600188019052604090208390555b855486908061215f5761215f6144f5565b600190038181906000526020600020016000905590558560010160008681526020019081526020016000206000905560019350505050610a5e565b6000915050610a5e565b5092915050565b60008181526001830160205260408120546121f257508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610a5e565b506000610a5e565b6107938282612ea6565b60045460ff16156107935760405163181e462560e31b815260040160405180910390fd5b5a600555604080516080810182526006548082526007546020830152600854928201929092526009546060820152906000901580612267575081513a11155b9050806122ac5781516040517fcbb35eb70000000000000000000000000000000000000000000000000000000081523a60048201526024810191909152604401610b0c565b602082015115610a125760006122c2483a6144e2565b602084015190915081111580611c565760208401516040517f56e5387f000000000000000000000000000000000000000000000000000000008152610b0c918491600401918252602082015260400190565b600a54600b54600c54600e5460ff90931692428211156123505760405163013ce60b60e01b815242600482015260248101839052604401610b0c565b600084600281111561236457612364613f21565b0361241d578260000361237957505050505050565b806000036123935761238b83426144cf565b600d55611c56565b600061239f83426144e2565b905060006123ad85836144bb565b905060006123bb8683614412565b6123c590846144e2565b9050838111156123f15760405163013ce60b60e01b815242600482015260248101869052604401610b0c565b856123fd8360016144cf565b6124079190614412565b61241190866144cf565b600d5550611c56915050565b814210158015612436575061243281836144cf565b4211155b156124455761238b8284612ef9565b6000600185600281111561245b5761245b613f21565b1461246e5761246942611a68565b612477565b61247783611a51565b905060006124858483612f91565b9050804210156124b15760405163013ce60b60e01b815242600482015260248101829052604401610b0c565b60006124bd84836144cf565b905042811080156124ea5760405163013ce60b60e01b815242600482015260248101839052604401610b0c565b6124f48388612ef9565b600d5550505050505050505050565b61250c82610c55565b610793576040517f7a2410450000000000000000000000000000000000000000000000000000000081526001600160a01b0383166004820152602401610b0c565b60006125588361147d565b80519091506001600160a01b031661256f57505050565b6000836001600160a01b031682600001516001600160a01b0316146125ab576125a661259f858460000151612a8b565b8490612a97565b6125ad565b825b90506000826020015182101580156125d55750604083015115806125d5575082604001518211155b905080610639578251602084015160408086015190517f7c63a4b00000000000000000000000000000000000000000000000000000000081526001600160a01b0390931660048401526024830185905260448301919091526064820152608401610b0c565b6000612645836118c2565b6040805160a08101825282546001600160a01b03168082526001840154602083015260028401549282019290925260038301546060820152600490920154608083015290915061269457505050565b6000836001600160a01b031682600001516001600160a01b0316146126c9576126c461259f858460000151612a8b565b6126cb565b825b90506000826080015142106126e15760006126e7565b82604001515b6126f190836144cf565b9050826020015181111561063957825160208401516040517fb8858d5d0000000000000000000000000000000000000000000000000000000081526001600160a01b039092166004830152602482015260448101829052606401610b0c565b600061275b836118c2565b80549091506001600160a01b031661277257505050565b80546000906001600160a01b038581169116146127a85781546127a39061259f9086906001600160a01b0316612a8b565b6127aa565b825b9050816004015442106127d3576000600283015560038201546127cd90426144cf565b60048301555b808260020160008282546127e791906144cf565b909155505050505050565b600d54600003612800575050565b61280b600d54612fb9565b50506000600d55565b600554600003612850576040517f1f5b8fc600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b604080516080810182526006548152600754602082015260085491810191909152600954606082015260005a60055461288991906144e2565b905060006128973a83614412565b905060008360400151600014806128b2575083604001518211155b9050806128fc578184604001516040517faf258ef2000000000000000000000000000000000000000000000000000000008152600401610b0c929190918252602082015260400190565b60006005556060840151158015906129145750600085115b15611c565760006129e7306001600160a01b0316634fd49efd6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561295c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612980919061450b565b6001600160a01b03166317fcb39b6040518163ffffffff1660e01b8152600401602060405180830381865afa1580156129bd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906129e1919061450b565b88612a8b565b905060006129f58483612fee565b90506000612a038289613060565b90508660600151811115612a535760608701516040517f0297747f000000000000000000000000000000000000000000000000000000008152610b0c918391600401918252602082015260400190565b505050505050505050565b6040517f68f46c45a243a0e9065a97649faf9a5afe1692f2679e650c2f853b9cd734cc0e90600090a15050565b6000610c8c8383613129565b60008282028315801590612aba575082848281612ab657612ab66144a5565b0414155b15612ae257604051637472527d60e11b81526004810185905260248101849052604401610b0c565b670de0b6b3a764000090049392505050565b600054610100900460ff16612b4d5760405162461bcd60e51b815260206004820152602b602482015260008051602061464e83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b0c565b612bbb81600001516001600160a01b031663d09edf316040518163ffffffff1660e01b8152600401602060405180830381865afa158015612b92573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612bb6919061450b565b61331f565b61186381613381565b600054610100900460ff16612c1d5760405162461bcd60e51b815260206004820152602b602482015260008051602061464e83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b0c565b612c2561341c565b565b600054610100900460ff16612c805760405162461bcd60e51b815260206004820152602b602482015260008051602061464e83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b0c565b61186381613475565b600054610100900460ff16612ce25760405162461bcd60e51b815260206004820152602b602482015260008051602061464e83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b0c565b611863816134ea565b600054610100900460ff16612d445760405162461bcd60e51b815260206004820152602b602482015260008051602061464e83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b0c565b6118638161355f565b600054610100900460ff16612da65760405162461bcd60e51b815260206004820152602b602482015260008051602061464e83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b0c565b6118638161360d565b600054610100900460ff16612e085760405162461bcd60e51b815260206004820152602b602482015260008051602061464e83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b0c565b611863816136eb565b600054610100900460ff166118635760405162461bcd60e51b815260206004820152602b602482015260008051602061464e83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b0c565b6000612e77600483614528565b158015612e8d5750612e8a606483614528565b15155b80610a5e5750612e9f61019083614528565b1592915050565b600254156107935760015460025460405163eb056bbb60e01b815260048101919091526001600160a01b03848116602483015260448201849052600060648301529091169063eb056bbb90608401611c28565b600080600080612f08866137c9565b919450925090506000612f1b86846144cf565b90506000612f2a600c83614528565b90506000612f39600c846144bb565b612f4390876144cf565b905060006002600a5460ff166002811115612f6057612f60613f21565b14612f6b5784612f75565b612f75828461202b565b9050612f838a8385846137e8565b9a9950505050505050505050565b6000806000612f9f426137c9565b5091509150612fb0858383876137e8565b95945050505050565b600c8190556040518181527ff90744bee56935ec5acc9de37b89c0c545298c667ee417bd9469e9c6836ad064906020016112ab565b6000828202831580159061301157508284828161300d5761300d6144a5565b0414155b1561303957604051637472527d60e11b81526004810185905260248101849052604401610b0c565b801561305657670de0b6b3a7640000600019820104600101611a49565b6000949350505050565b60008160000361309c576040517fb8a2f92100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b826000036130ac57506000610a5e565b670de0b6b3a7640000838102908482816130c8576130c86144a5565b041461310a576040517fea7b49e60000000000000000000000000000000000000000000000000000000081526004810185905260248101829052604401610b0c565b82600182038161311c5761311c6144a5565b0460010191505092915050565b600080600160009054906101000a90046001600160a01b03166001600160a01b0316632630c12f6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561317f573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906131a3919061450b565b90506001600160a01b0381166131f4576001546040517f38d2baae0000000000000000000000000000000000000000000000000000000081526001600160a01b039091166004820152602401610b0c565b60006131fe613810565b9050805160001461328f57816001600160a01b031663355efdd961322187613890565b61322a87613890565b846040518463ffffffff1660e01b81526004016132499392919061453c565b602060405180830381865afa158015613266573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061328a9190614429565b612fb0565b816001600160a01b031663ac41865a6132a787613890565b6132b087613890565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381865afa1580156132fb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612fb09190614429565b600054610100900460ff166133785760405162461bcd60e51b815260206004820152602b602482015260008051602061464e83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b0c565b611863816138c4565b600054610100900460ff166133da5760405162461bcd60e51b815260206004820152602b602482015260008051602061464e83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b0c565b80516001805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b03909216919091179055602081015160408201516118639190611562565b600054610100900460ff16612c255760405162461bcd60e51b815260206004820152602b602482015260008051602061464e83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b0c565b600054610100900460ff166134ce5760405162461bcd60e51b815260206004820152602b602482015260008051602061464e83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b0c565b61186381600001518260200151836040015184606001516118f6565b600054610100900460ff166135435760405162461bcd60e51b815260206004820152602b602482015260008051602061464e83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b0c565b6118638160000151826020015183604001518460600151610d85565b600054610100900460ff166135b85760405162461bcd60e51b815260206004820152602b602482015260008051602061464e83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b0c565b80516135c390611259565b60005b816020015151811015610793576135fb826020015182815181106135ec576135ec614360565b60200260200101516001611046565b806136058161438c565b9150506135c6565b600054610100900460ff166136665760405162461bcd60e51b815260206004820152602b602482015260008051602061464e83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b0c565b805180516020820151604083015161367f929190611866565b60005b826020015151811015610722576000836020015182815181106136a7576136a7614360565b602002602001015190506000816020015190506136d68260000151826000015183602001518460400151611159565b505080806136e39061438c565b915050613682565b600054610100900460ff166137445760405162461bcd60e51b815260206004820152602b602482015260008051602061464e83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b0c565b805180516020820151604083015161375d929190611639565b60005b8260200151518110156107225760008360200151828151811061378557613785614360565b602002602001015190506000816020015190506137b482600001518260000151836020015184604001516113bd565b505080806137c19061438c565b915050613760565b600080806137db620151808504611f8f565b9196909550909350915050565b6000612fb08484846137f98961395d565b6138028a61397b565b61380b8b613997565b6139a4565b6060600061381c613a00565b90503681111561383a57505060408051600081526020810190915290565b8067ffffffffffffffff81111561385357613853613c33565b6040519080825280601f01601f19166020018201604052801561387d576020820181803683370190505b5091508060208236030360208401375090565b600073eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee6001600160a01b038316146138bc5781610a5e565b610a5e613a1b565b600054610100900460ff1661391d5760405162461bcd60e51b815260206004820152602b602482015260008051602061464e83398151915260448201526a6e697469616c697a696e6760a81b6064820152608401610b0c565b600080546001600160a01b0390921662010000027fffffffffffffffffffff0000000000000000000000000000000000000000ffff909216919091179055565b60008061396d6201518084614528565b9050610c8c610e10826144bb565b60008061398a610e1084614528565b9050610c8c603c826144bb565b6000610a5e603c83614528565b6000816139b2603c85614412565b6139be610e1087614412565b620151806139cd8b8b8b613aa7565b6139d79190614412565b6139e191906144cf565b6139eb91906144cf565b6139f591906144cf565b979650505050505050565b60006024361015613a115750600090565b50601f1936013590565b600154604080517f17fcb39b00000000000000000000000000000000000000000000000000000000815290516000926001600160a01b0316916317fcb39b9160048083019260209291908290030181865afa158015613a7e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190613aa2919061450b565b905090565b60006107b2841015613ab857600080fd5b838383600062253d8c60046064600c613ad2600e886145a7565b613adc91906145c7565b613ae8886113246145f5565b613af291906145f5565b613afc91906145c7565b613b0790600361461d565b613b1191906145c7565b600c80613b1f600e886145a7565b613b2991906145c7565b613b3490600c61461d565b613b3f6002886145a7565b613b4991906145a7565b613b559061016f61461d565b613b5f91906145c7565b6004600c613b6e600e896145a7565b613b7891906145c7565b613b84896112c06145f5565b613b8e91906145f5565b613b9a906105b561461d565b613ba491906145c7565b613bb0617d4b876145a7565b613bba91906145f5565b613bc491906145f5565b613bce91906145a7565b613bd891906145a7565b98975050505050505050565b803560ff81168114613bf557600080fd5b919050565b60008060008060808587031215613c1057600080fd5b613c1985613be4565b966020860135965060408601359560600135945092505050565b634e487b7160e01b600052604160045260246000fd5b6040516080810167ffffffffffffffff81118282101715613c6c57613c6c613c33565b60405290565b6040805190810167ffffffffffffffff81118282101715613c6c57613c6c613c33565b60405160c0810167ffffffffffffffff81118282101715613c6c57613c6c613c33565b604051601f8201601f1916810167ffffffffffffffff81118282101715613ce157613ce1613c33565b604052919050565b600067ffffffffffffffff821115613d0357613d03613c33565b5060051b60200190565b6001600160a01b038116811461186357600080fd5b600082601f830112613d3357600080fd5b81356020613d48613d4383613ce9565b613cb8565b82815260059290921b84018101918181019086841115613d6757600080fd5b8286015b84811015613d8b578035613d7e81613d0d565b8352918301918301613d6b565b509695505050505050565b801515811461186357600080fd5b60008060408385031215613db757600080fd5b823567ffffffffffffffff80821115613dcf57600080fd5b613ddb86838701613d22565b9350602091508185013581811115613df257600080fd5b85019050601f81018613613e0557600080fd5b8035613e13613d4382613ce9565b81815260059190911b82018301908381019088831115613e3257600080fd5b928401925b82841015613e59578335613e4a81613d96565b82529284019290840190613e37565b80955050505050509250929050565b600060208284031215613e7a57600080fd5b8135610c8c81613d0d565b60008060008060808587031215613e9b57600080fd5b8435613ea681613d0d565b93506020850135613eb681613d0d565b93969395505050506040820135916060013590565b803560028110613bf557600080fd5b600060208284031215613eec57600080fd5b610c8c82613ecb565b60008060408385031215613f0857600080fd5b8235613f1381613d0d565b946020939093013593505050565b634e487b7160e01b600052602160045260246000fd5b6020810160028310613f5957634e487b7160e01b600052602160045260246000fd5b91905290565b60008060408385031215613f7257600080fd5b50508035926020909101359150565b600080600060608486031215613f9657600080fd5b8335613fa181613d0d565b95602085013595506040909401359392505050565b600060608284031215613fc857600080fd5b6040516060810181811067ffffffffffffffff82111715613feb57613feb613c33565b6040529050808235613ffc81613d0d565b8082525060208301356020820152604083013560408201525092915050565b60006080828403121561402d57600080fd5b614035613c49565b90508135815260208201356020820152604082013560408201526060820135606082015292915050565b60006080828403121561407157600080fd5b614079613c49565b905061408482613be4565b815260208201356020820152604082013560408201526060820135606082015292915050565b6000604082840312156140bc57600080fd5b6140c4613c72565b90506140cf82613ecb565b8152602082013567ffffffffffffffff8111156140eb57600080fd5b6140f784828501613d22565b60208301525092915050565b60006080828403121561411557600080fd5b61411d613c72565b9050813561412a81613d0d565b81526141398360208401613fb6565b602082015292915050565b6000608080838503121561415757600080fd5b61415f613c72565b915061416b8484613fb6565b8252606083013567ffffffffffffffff81111561418757600080fd5b8301601f8101851361419857600080fd5b803560206141a8613d4383613ce9565b82815260079290921b830181019181810190888411156141c757600080fd5b938201935b838510156141ed576141de8986614103565b825293850193908201906141cc565b808388015250505050505092915050565b60006020828403121561421057600080fd5b813567ffffffffffffffff8082111561422857600080fd5b908301906040828603121561423c57600080fd5b614244613c72565b823561424f81613d0d565b815260208301358281111561426357600080fd5b92909201916101c0838703121561427957600080fd5b614281613c95565b61428b8785613fb6565b815261429a876060860161401b565b60208201526142ac8760e0860161405f565b6040820152610160840135838111156142c457600080fd5b6142d0888287016140aa565b606083015250610180840135838111156142e957600080fd5b6142f588828701614144565b6080830152506101a08401358381111561430e57600080fd5b61431a88828701614144565b60a083015250602082015295945050505050565b6000806000806080858703121561434457600080fd5b5050823594602084013594506040840135936060013592509050565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b60006001820161439e5761439e614376565b5060010190565b600081518084526020808501945080840160005b838110156143d5578151875295820195908201906001016143b9565b509495945050505050565b6001600160a01b03841681526001600160e01b031983166020820152606060408201526000612fb060608301846143a5565b8082028115828204841417610a5e57610a5e614376565b60006020828403121561443b57600080fd5b5051919050565b60006001600160a01b0380871683528086166020840152506001600160e01b0319841660408301526080606083015261447e60808301846143a5565b9695505050505050565b60006020828403121561449a57600080fd5b8151610c8c81613d96565b634e487b7160e01b600052601260045260246000fd5b6000826144ca576144ca6144a5565b500490565b80820180821115610a5e57610a5e614376565b81810381811115610a5e57610a5e614376565b634e487b7160e01b600052603160045260246000fd5b60006020828403121561451d57600080fd5b8151610c8c81613d0d565b600082614537576145376144a5565b500690565b60006001600160a01b038086168352602081861681850152606060408501528451915081606085015260005b8281101561458457858101820151858201608001528101614568565b50506000608082850101526080601f19601f830116840101915050949350505050565b81810360008312801583831316838312821617156121a4576121a4614376565b6000826145d6576145d66144a5565b600160ff1b8214600019841416156145f0576145f0614376565b500590565b808201828112600083128015821682158216171561461557614615614376565b505092915050565b80820260008212600160ff1b8414161561463957614639614376565b8181058314821517610a5e57610a5e61437656fe496e697469616c697a61626c653a20636f6e7472616374206973206e6f742069a26469706673582212206a2b8b911a22688b280ed146cac59b2da9139bbebd2d7acf4fa71b8cf542bca264736f6c63430008110033",
  "linkReferences": {},
  "deployedLinkReferences": {}
}
