> ## Documentation Index
> Fetch the complete documentation index at: https://docs.tenderly.co/llms.txt
> Use this file to discover all available pages before exploring further.

# Simulate transaction

> Call the `simulate` endpoint to preview the outcomes a single transaction before sending it to the live network. You can simulate transactions with custom parameters on [105+ supported networks](https://docs.tenderly.co/supported-networks-and-languages). The output provides detailed insights into emitted events, state changes, asset and balance changes, among other things. 

Learn about [single transaction simulations](https://docs.tenderly.co/simulations/single-simulations).

The response returns the following objects:

`transaction`: Contains data related to the transaction, including its hash, block number, origin and destination addresses, gas details, input data, nonce, and other transaction details, like the status, timestamp, and involved contract addresses.

`simulation`: Contains data about the simulated transaction. It provides details related to the ID of the simulation, project and owner IDs, block number where the transaction was included, gas used, method invoked, simulation status, and other metadata.

`contracts`: Contains data about the contract(s) involved in the transaction, including the contract's ID, network ID, balance, verification status, associated standards (like ERC20), token-specific data if the contract is a token, compiler version, and even the source code of the contract in some cases.

`generated_access_list`: Contains a list of addresses and storage keys that the transaction will access, enabling certain gas cost optimizations. The access list is a feature introduced in [Ethereum's EIP-2930](https://eips.ethereum.org/EIPS/eip-2930).



## OpenAPI

````yaml /api-reference/openapi.json post /v1/account/{accountSlug}/project/{projectSlug}/simulate
openapi: 3.1.0
info:
  version: 1.0.0
  title: Tenderly API
  description: >
    # Introduction


    The Tenderly API provides a programmatic interface for managing Tenderly
    resources using standard HTTP requests.

    It mirrors many functionalities available through the Tenderly Dashboard,
    enabling you to script complex actions. The API documentation includes a
    design and technology overview, followed by detailed endpoint information.


    [Log into your Tenderly account](https://dashboard.tenderly.co/login) to
    automatically populate your API credentials in the documentation. Your
    account ID and project slug will be pre-filled across the documentation,
    excluding the API access token for security reasons. 


    Base URL: `https://api.tenderly.co/api`


    ## Authentication


    The Tenderly API requires an access token to authenticate your requests.
    Learn how to [generate and manage your API access
    keys](https://docs.tenderly.co/account/projects/how-to-generate-api-access-token).


    Add `X-Access-Key` to each request header, e.g.:


    ```bash

    curl
    'https://api.tenderly.co/api/v1/account/${TENDERLY_ACCOUNT_SLUG}/project/${TENDERLY_PROJECT_SLUG}/simulate'
    \
      -H 'X-Access-Key: ${TENDERLY_ACCESS_KEY}' \
      ...
    ```


    Do not share your secret API keys in publicly accessible areas such as
    GitHub, client-side code, and so forth.


    Authentication to the API is performed via HTTP Basic Auth. Provide your API
    key as the basic auth username value. You do not need to provide a password.


    If you need to authenticate via bearer auth (e.g., for a cross-origin
    request), use:


    ```bash

    curl
    'https://api.tenderly.co/api/v1/account/${TENDERLY_ACCOUNT_SLUG}/project/${TENDERLY_PROJECT_SLUG}/simulate'
    \
      -H 'Authorization: Bearer <TENDERLY_TOKEN>' \
      ...
    ```


    All API requests must be made over HTTPS. Calls made over plain HTTP will
    fail. API requests without authentication will also fail.


    ## Requests


    Any tool capable of making HTTP requests can interact with the API by
    requesting the appropriate URI. Requests should be made using the HTTPS
    protocol to ensure that traffic is encrypted. 


    The API's response varies with the request method used.


    |Method|Usage|

    |--- |--- |

    |GET|Used to retrieve information about your account, project, or resources.
    The requested information is returned as a JSON object. The attributes
    defined by the JSON object can be used to form additional requests. Requests
    made using the GET method are read-only and will not affect the objects you
    are querying.|

    |DELETE|Used to destroy a resource and remove it from your account and
    project. This methods removes the specified object if it is found. If it is
    not found, the operation will return a response indicating that the object
    was not found. You do not have to check if the resource is available prior
    to issuing a DELETE command. The final state will be the same regardless of
    its existence.|

    |PUT|Used to update the information about a resource in your account. The
    PUT method sets the state of the target using the provided values,
    regardless of their current values. Requests using the PUT method do not
    need to check the current attributes of the object.|

    |PATCH|Some resources support partial modification. In these cases, the
    PATCH method is available. Unlike PUT which generally requires a complete
    representation of a resource, a PATCH request is a set of instructions on
    how to modify a resource updating only specific attributes.|

    |POST|Used to create a new object. The POST request includes all of the
    attributes necessary to create a new object.|


    ## Errors


    The API responds with standard HTTP statuses, including error codes that
    indicate the outcome of requests. In the event of a problem, the status will
    contain the error code, while the

    body of the response will usually contain additional information about the
    problem.


    |Status Code|Type|Description|

    |--- |--- |--- |

    |200|OK|Everything worked as expected.|

    |400|Bad Request|The request was unacceptable, often due to missing a
    required parameter.|

    |401|Unauthorized|No valid API key provided.|

    |402|Request Failed|The parameters were valid but the request failed.|

    |403|Forbidden|The API key doesn’t have permissions to perform the request.|

    |404|Not Found|The requested resource doesn’t exist.|

    |429|Too Many Requests|Too many requests hit the API too quickly. We
    recommend an exponential backoff of your requests.|

    |500, 502, 503, 504|Server Errors|Something went wrong on Tenderly’s end.|


    Both 400 and 500 level errors return a JSON object in the response body,
    containing specific attributes detailing the error.


    |Name|Type|Description|

    |--- |--- |--- |

    |id|string|Endpoints include an error ID that should be provided when
    reporting bugs or opening support tickets to help identify the issue.|

    |slug|string|A short identifier corresponding to the HTTP status code
    returned. For example, the ID for a response returning a 404 status code
    would be "not_found."|

    |message|string|A message providing additional information about the error,
    including details to help resolve it when possible.|


    ### Example error response


    HTTP/1.1 404 Bad request

    ```json

    {

    "error": {
      "id": "596b1dc7-af60-477b-aab3-6c93eb92ddfa",
      "slug": "bad_request",
      "message": "Bad request input parameters"
     }
    }

    ```


    ## Responses


    When a request is successful, a response body will typically be sent back in

    the form of a JSON object. An exception to this is when a DELETE request is

    processed, which will result in a successful HTTP 204 status and an empty

    response body.


    The value of these keys will generally be a JSON object for a request on a

    single object and an array of objects for a request on a collection of

    objects.


    ### Response for a single object


    ```json

    {
      "simulation": {
        "id": "123"
        "...": "..."
      }
    }

    ```


    ### Response for an object collection


    ```json

    {
      "simulations": [
        {
          "id": "123"
          "...": "..."
        },
        {
          "id": "1234"
          "...": "..."
        }
      ]
    }

    ```


    ## Pagination


    By default, 20 objects are returned per page per request.

    You can customize this behavior using the following parameters:


    * **Pagination Limit (perPage)**: To change the number of items per page,

    append `?perPage=[number]` to your request. For example, `?perPage=2` limits

    the results to two items per page. The maximum limit is 100 items per page.

    * **Page Offset (page)**: To navigate through paginated results, use the

    `?page=[number]` parameter. For instance, `?page=3` will take you to the
    third page of the results.

    Only positive integers are valid for this parameter.


    Remember:


    * You can combine these parameters. For example, `?perPage=10&page=2` will
    show the second page with 10 items per page.

    * The maximum number of results per page (`perPage`) is 100.


    ## Rate limits


    Requests through the API are rate limited per `X-Access-Key` API key.
    Current rate limits:


    * **Non-authenticated users:** 100 requests per minute

    * **Authenticated users:** 400 requests per minute


    Once you exceed either limit, you will be rate limited until the next cycle

    starts. Space out any requests that you would otherwise issue in bursts for

    the best results.


    The rate limiting information is contained within the response headers of

    each request. The relevant headers are:


    * **X-Tdly-Limit**: The number of requests that can be made per minute.

    * **X-Tdly-Remaining**: The number of requests that remain before you hit
    your request limit. See the information below for how the request limits
    expire.

    * **X-Tdly-Reset-Timestamp**: This represents the time when the oldest
    request will expire. The value is given in [Unix epoch
    time](http://en.wikipedia.org/wiki/Unix_time). See below for more
    information about how request limits expire.


    As long as the `X-Tdly-Remaining` count is above zero, you will be able

    to make additional requests.


    The way that a request expires and is removed from the current limit count

    is important to understand. Rather than counting all of the requests for a

    minute and resetting the `X-Tdly-Remaining` value at the end of the minute,

    each request instead has its own timer.


    This means that each request contributes toward the `X-Tdly-Remaining`

    count for one complete minute after the request is made. When that request's

    timer runs out, it is no longer counted toward the request limit.


    This has implications on the meaning of the `X-Tdly-Reset-Timestamp` header
    as

    well. Because the entire rate limit is not reset at one time, the value of

    this header is set to the time when the _oldest_ request will expire.


    Keep this in mind if you see your `X-Tdly-Reset-Timestamp` value change, but
    not

    move an entire minute into the future.


    If the `X-Tdly-Remaining` reaches zero, subsequent requests will receive

    a 429 error code until the request reset has been reached. 


    `X-Tdly-Remaining` reaching zero can also indicate that the "burst limit" of
    250 

    requests per minute limit was met, even if the 400 requests per minute limit
    was not. 


    You can see the format of the response in the examples. 


    **Note:** Some endpoints may have special rate limit requirements that

    are independent of the limits defined above.


    ### Sample rate limit headers


    ```bash

    'X-Tdly-Limit': 100

    'X-Tdly-Remaining': 79

    'X-Tdly-Reset-Timestamp': 1402425459

    ```


    ### Sample rate exceeded response


    429 Too Many Requests

    ```bash

    {
      id: "too_many_requests",
      message: "API Rate limit exceeded."
    }

    ```


    ## Parameters


    There are two different ways to pass parameters in a request to the API.


    When passing parameters to create or update an object, parameters should be

    passed as a JSON object containing the appropriate attribute names and

    values as key-value pairs. When you use this format, you should specify that

    you are sending a JSON object in the header. This is done by setting the

    `Content-Type` header to `application/json`. This ensures that your request

    is interpreted correctly.


    When passing parameters to filter a response on GET requests, parameters can

    be passed using standard query attributes. In this case, the parameters

    would be embedded into the URI itself by appending a `?` to the end of the

    URI and then setting each attribute with an equal sign. Attributes can be

    separated with a `&`. Tools like `curl` can create the appropriate URI when

    given parameters and values; this can also be done using the `-F` flag and

    then passing the key and value as an argument. The argument should take the

    form of a quoted string with the attribute being set to a value with an

    equal sign.


    ### Pass parameters as a JSON object


    ```bash

    curl
    'https://api.tenderly.co/api/v1/account/${TENDERLY_ACCOUNT_SLUG}/project/${TENDERLY_PROJECT_SLUG}/simulate'
    \
      -H 'X-Access-Key: ${TENDERLY_ACCESS_KEY}' \
      -H 'content-type: application/json' \
      --data-raw '{"network_id":"1","block_number":null,"transaction_index":null,"from":"0x0000000000000000000000000000000000000000","input":"0x42966c68000000000000000000000000000000000000000000000000000000000000022b","to":"0x94c87a7b26980ae7aaa361c5c7e03e632ab36e6c","gas":8000000,"gas_price":"0","value":"0","access_list":[],"generate_access_list":true,"save":true,"block_header":null}' \
      --compressed
    ```


    ### Pass filter parameters as a query string


    ```bash

    curl
    'https://api.tenderly.co/api/v1/account/${TENDERLY_ACCOUNT_SLUG}/project/${TENDERLY_PROJECT_SLUG}/simulations?page=1&perPage=20'
    \
      -H 'X-Access-Key: ${TENDERLY_ACCESS_KEY}' \
      --compressed
    ```


    ## Cross origin resource sharing


    In order to make requests to the API from other domains, the API implements

    Cross Origin Resource Sharing (CORS) support.


    CORS support is generally used to create AJAX requests outside of the domain

    that the request originated from. This is necessary to implement projects

    like control panels utilizing the API. This tells the browser that it can

    send requests to an outside domain.


    The procedure that the browser initiates in order to perform these actions

    (other than GET requests) begins by sending a "preflight" request. This sets

    the `Origin` header and uses the `OPTIONS` method. The server will reply

    with the methods it allows and some of the limits it imposes. The

    client then sends the actual request if it falls within the allowed

    constraints.


    This process is usually done by the browser in the background, but you can

    use curl to emulate this process. The headers that will be set to show the
    constraints are:


    * **Access-Control-Allow-Origin**: This is the domain that is sent by the
    client or browser as the origin of the request. It is set through an
    `Origin` header.

    * **Access-Control-Allow-Methods**: This specifies the allowed options for
    requests from that domain. This will generally be all available methods.

    * **Access-Control-Expose-Headers**: This will contain the headers that will
    be available to requests from the origin domain.

    * **Access-Control-Max-Age**: This is the length of time that the access is
    considered valid. After this expires, a new preflight should be sent.

    * **Access-Control-Allow-Credentials**: This will be set to `true`. It
    basically allows you to send your Access token for authentication.


    You should not need to be concerned with the details of these headers,

    because the browser will typically do all of the work for you.
  license:
    name: Apache 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0.html
  contact:
    name: Tenderly Support
    email: support@tenderly.co
  termsOfService: https://tenderly.co/terms-of-service
servers:
  - url: https://api.tenderly.co/api
    description: production
security:
  - ApiKeyAuth: []
  - BearerAuth: []
tags:
  - name: Projects
    description: >-
      Projects organize your work into separate spaces that contain contracts,
      wallets, alerts, Web3 Actions, Virtual Environments and simulations. Every
      other endpoint is scoped to a project through the `accountSlug` and
      `projectSlug` path parameters.


      On organization accounts a project is either open to every organization
      member or restricted to an invited member list.


      Learn more about
      [Projects](https://docs.tenderly.co/platform/account/projects/overview)
      and [restricted
      projects](https://docs.tenderly.co/platform/account/projects/restricted-projects).
  - name: Contracts
    description: >-
      Tenderly allows you to add verified and unverified smart contracts to your
      project to use in development. Once you add a contract, you can start
      inspecting and debugging transactions, simulating transactions with
      modified parameters, or monitoring contract usage.


      Learn more about managing [Smart
      Contracts](https://docs.tenderly.co/monitoring/smart-contracts).
  - name: Wallets
    description: >-
      Similar to contracts, you can also add any public wallet addresses to your
      Tenderly projects. This allows you to keep track of wallet activity, view
      all transactions, simulate transactions, set up wallet alerts, and more.


      Learn more about managing
      [Wallets](https://docs.tenderly.co/monitoring/wallets).
  - name: Simulator
    description: >-
      Transaction Simulations let you preview the exact outcomes of transactions
      before they are sent to the live network. Transactions are simulated on an
      exact replica of the latest state of the specific network, providing the
      most accurate simulation results. 


      The Tenderly API supports simulating single or bundled transactions
      through a single request. 


      **Common use cases for simulations**


      - [Asset and balance
      changes](https://docs.tenderly.co/simulations/asset-balance-changes): Get
      exact dollar values for all balance and asset changes that will happen.

      - [Gas estimation](https://docs.tenderly.co/simulations/gas-estimation):
      Accurately predict the gas costs before sending the transaction.

      - [State overrides](https://docs.tenderly.co/simulations/state-overrides):
      Modify blockchain conditions like timestamps and contract data to test
      different scenarios.

      - [Preview transaction
      outcomes](https://docs.tenderly.co/simulations/transaction-preview):
      Identify and fix issues that could cause transactions to fail.

      - Access lists: Create lists of addresses and storage slots the
      transaction will access.

      - Human-readable errors: Get complex errors decoded into explanations that
      you can easily understand.


      Learn more about [Transaction
      Simulations](https://docs.tenderly.co/simulations).
  - name: Alerts
    description: >-
      Alerts listen for specific on-chain events and send real-time
      notifications to your desired destination when the event occurs. This can
      be email, your favorite messaging app, an incident monitoring system, or
      webhooks and Web3 Actions.


      Learn more about
      [Alerts](https://docs.tenderly.co/alerts/intro-to-alerts).
  - name: Delivery Channels
    description: >-
      When the desired event triggers your Alert, Tenderly will send the data
      about the event to a designated Alert Destination. The Destination
      (Delivery Channel) will use this data to send you an email notification,
      Discord, or Slack message or send it to another Tenderly system like Web3
      Actions or a Webhook.


      Learn more about [Delivery
      Channels](https://docs.tenderly.co/alerts/configuring-alert-destinations).
  - name: Actions
    description: >-
      Web3 Actions allow you to execute custom code in response to on-chain and
      off-chain events. They work as programmable hooks for smart contracts. A
      Web3 Action is a regular JS/TS function that is executed on our
      infrastructure. 


      Learn more about [Web3
      Actions](https://docs.tenderly.co/web3-actions/intro-to-web3-actions).
  - name: Virtual Environments
    description: >-
      Virtual Environments are simulated blockchain networks, designed to
      replicate real networks for various stages of dapp development. Use them
      as risk-free development and staging infrastructure that fully tracks real
      network state without the need to use real cryptocurrency or assets.


      Environments are multi-chain groupings of Virtual Environments, providing
      a coordinated set of simulated networks for end-to-end cross-chain
      testing. Each environment contains a Virtual Environment per configured
      network, and an active instance manages the current state across all
      chains.


      Environments support cross-chain bridge simulation, allowing you to test
      bridging and messaging protocols across networks in a fully isolated and
      reproducible setup.
  - name: Other
    description: >-
      This section contains miscellaneous endpoints that do not fit into other
      categories, such as checking supported networks on the Tenderly platform.
paths:
  /v1/account/{accountSlug}/project/{projectSlug}/simulate:
    post:
      tags:
        - Simulator
      summary: Simulate transaction
      description: >-
        Call the `simulate` endpoint to preview the outcomes a single
        transaction before sending it to the live network. You can simulate
        transactions with custom parameters on [105+ supported
        networks](https://docs.tenderly.co/supported-networks-and-languages).
        The output provides detailed insights into emitted events, state
        changes, asset and balance changes, among other things. 


        Learn about [single transaction
        simulations](https://docs.tenderly.co/simulations/single-simulations).


        The response returns the following objects:


        `transaction`: Contains data related to the transaction, including its
        hash, block number, origin and destination addresses, gas details, input
        data, nonce, and other transaction details, like the status, timestamp,
        and involved contract addresses.


        `simulation`: Contains data about the simulated transaction. It provides
        details related to the ID of the simulation, project and owner IDs,
        block number where the transaction was included, gas used, method
        invoked, simulation status, and other metadata.


        `contracts`: Contains data about the contract(s) involved in the
        transaction, including the contract's ID, network ID, balance,
        verification status, associated standards (like ERC20), token-specific
        data if the contract is a token, compiler version, and even the source
        code of the contract in some cases.


        `generated_access_list`: Contains a list of addresses and storage keys
        that the transaction will access, enabling certain gas cost
        optimizations. The access list is a feature introduced in [Ethereum's
        EIP-2930](https://eips.ethereum.org/EIPS/eip-2930).
      operationId: simulateTransaction
      parameters:
        - name: accountSlug
          in: path
          schema:
            type: string
          required: true
          description: Account slug of the user
          example: me
        - name: projectSlug
          in: path
          schema:
            type: string
          required: true
          description: Project slug of the account
          example: project
      requestBody:
        required: true
        description: Simulate transaction payload
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/simulation-payload'
            examples:
              full_mode:
                $ref: '#/components/examples/full_mode_simulate_post_request'
              quick_mode:
                $ref: '#/components/examples/quick_mode_simulate_post_request'
              abi_mode:
                $ref: '#/components/examples/abi_mode_simulate_post_request'
              estimate_gas:
                $ref: '#/components/examples/estimate_gas_simulate_post_request'
              failed_tx:
                $ref: '#/components/examples/failed_tx_simulate_post_request'
              state_and_block_overrides:
                $ref: >-
                  #/components/examples/state_block_overrides_simulate_post_request
      responses:
        '200':
          $ref: '#/components/responses/simulate_post'
        '400':
          $ref: '#/components/responses/bad_request'
        '401':
          $ref: '#/components/responses/unauthorized'
        '403':
          $ref: '#/components/responses/forbidden'
        '404':
          $ref: '#/components/responses/not_found'
        '429':
          $ref: '#/components/responses/too_many_requests'
        '500':
          $ref: '#/components/responses/server_error'
      x-codeSamples:
        - lang: cURL
          source: >-
            # Full Mode Simulation

            curl
            'https://api.tenderly.co/api/v1/account/${TENDERLY_ACCOUNT_SLUG}/project/${TENDERLY_PROJECT_SLUG}/simulate'
            \
              -H 'X-Access-Key: ${TENDERLY_ACCESS_KEY}' \
              -H 'content-type: application/json' \
              --data-raw '{"network_id":"1","from":"0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df","to":"0xdef171fe48cf0115b1d80b88dc8eab59176fee57","input":"0xa94e78ef000000000000000000000000000000000000000000000000000000000000002000000000000000000000000068037790a0229e9ce6eaa8a99ea92964106c470300000000000000000000000000000000000000000000010f0cf064dd592000000000000000000000000000000000000000000000000000000000000145dc1b2e00000000000000000000000000000000000000000000000000000001477f4d7d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000064d281e65c9438a5a99c4bccb1035296d5d2d8d200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000320000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002b68037790a0229e9ce6eaa8a99ea92964106c47030001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a730000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000060000000000000000000000001b81d678ffb9c0263b24a97847620c99d213eb14000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000064dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","gas":648318,"block_number":17884583,"value":"0","save":true,"save_if_fails":true,"simulation_type":"full"}' \
              --compressed

            # Quick Mode Simulation

            curl
            'https://api.tenderly.co/api/v1/account/${TENDERLY_ACCOUNT_SLUG}/project/${TENDERLY_PROJECT_SLUG}/simulate'
            \
              -H 'X-Access-Key: ${TENDERLY_ACCESS_KEY}' \
              -H 'content-type: application/json' \
              --data-raw '{"network_id":"1","from":"0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df","to":"0xdef171fe48cf0115b1d80b88dc8eab59176fee57","input":"0xa94e78ef000000000000000000000000000000000000000000000000000000000000002000000000000000000000000068037790a0229e9ce6eaa8a99ea92964106c470300000000000000000000000000000000000000000000010f0cf064dd592000000000000000000000000000000000000000000000000000000000000145dc1b2e00000000000000000000000000000000000000000000000000000001477f4d7d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000064d281e65c9438a5a99c4bccb1035296d5d2d8d200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000320000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002b68037790a0229e9ce6eaa8a99ea92964106c47030001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a730000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000060000000000000000000000001b81d678ffb9c0263b24a97847620c99d213eb14000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000064dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","gas":648318,"block_number":17884583,"value":"0","save":true,"save_if_fails":true,"simulation_type":"quick"}' \
              --compressed

            # ABI Mode Simulation

            curl
            'https://api.tenderly.co/api/v1/account/${TENDERLY_ACCOUNT_SLUG}/project/${TENDERLY_PROJECT_SLUG}/simulate'
            \
              -H 'X-Access-Key: ${TENDERLY_ACCESS_KEY}' \
              -H 'content-type: application/json' \
              --data-raw '{"network_id":"1","from":"0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df","to":"0xdef171fe48cf0115b1d80b88dc8eab59176fee57","input":"0xa94e78ef000000000000000000000000000000000000000000000000000000000000002000000000000000000000000068037790a0229e9ce6eaa8a99ea92964106c470300000000000000000000000000000000000000000000010f0cf064dd592000000000000000000000000000000000000000000000000000000000000145dc1b2e00000000000000000000000000000000000000000000000000000001477f4d7d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000064d281e65c9438a5a99c4bccb1035296d5d2d8d200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000320000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002b68037790a0229e9ce6eaa8a99ea92964106c47030001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a730000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000060000000000000000000000001b81d678ffb9c0263b24a97847620c99d213eb14000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000064dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","gas":648318,"block_number":17884583,"value":"0","save":true,"save_if_fails":true,"simulation_type":"abi"}' \
              --compressed

            # Estimate Gas Simulation

            curl
            'https://api.tenderly.co/api/v1/account/${TENDERLY_ACCOUNT_SLUG}/project/${TENDERLY_PROJECT_SLUG}/simulate'
            \
              -H 'X-Access-Key: ${TENDERLY_ACCESS_KEY}' \
              -H 'content-type: application/json' \
              --data-raw '{"network_id":"1","from":"0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df","to":"0xdef171fe48cf0115b1d80b88dc8eab59176fee57","input":"0xa94e78ef000000000000000000000000000000000000000000000000000000000000002000000000000000000000000068037790a0229e9ce6eaa8a99ea92964106c470300000000000000000000000000000000000000000000010f0cf064dd592000000000000000000000000000000000000000000000000000000000000145dc1b2e00000000000000000000000000000000000000000000000000000001477f4d7d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000064d281e65c9438a5a99c4bccb1035296d5d2d8d200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000320000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002b68037790a0229e9ce6eaa8a99ea92964106c47030001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a730000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000060000000000000000000000001b81d678ffb9c0263b24a97847620c99d213eb14000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000064dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","gas":648318,"block_number":17884583,"value":"0","save":true,"save_if_fails":true,"estimate_gas":true,"simulation_type":"quick"}' \
              --compressed

            # Failed Transaction Simulation

            curl
            'https://api.tenderly.co/api/v1/account/${TENDERLY_ACCOUNT_SLUG}/project/${TENDERLY_PROJECT_SLUG}/simulate'
            \
              -H 'X-Access-Key: ${TENDERLY_ACCESS_KEY}' \
              -H 'content-type: application/json' \
              --data-raw '{"network_id":"1","block_number":18827905,"transaction_index":222,"from":"0xd8da6bf26964af9d7eed9e03e53415d37aa96045","input":"0xa94e78ef0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000eaa63125dd63f10874f99cdbbb18410e7fc79dd300000000000000000000000000000000000000000004f68ca6d8cd91c6000000000000000000000000000000000000000000000000000000000000036e22623300000000000000000000000000000000000000000000000000000003728c0b380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000076000000000000000000000000000000000000000000000000000000000658357363e8a57981b0747b79f70262f8257408600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000300000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000004000000000000000000000000f9234cb08edb93c0d4a4d4c70cc3ffd070e78e07000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001000000000000000000004de5672fefac7f6e3017d9a2f1c14fe048191a24ce14000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000658c3d55000000000000000000000000000000000000000000000000000000000000002bc02aaa39b223fe8d0a0e5c4f27ead9083c756cc20001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000","to":"0xdef171fe48cf0115b1d80b88dc8eab59176fee57","gas":617885,"gas_price":"87235100681","value":"0","access_list":[],"generate_access_list":true,"save":true,"simulation_type":"quick"}' \
              --compressed
        - lang: Go
          source: "package main\n\nimport (\n\t\"fmt\"\n\t\"io\"\n\t\"log\"\n\t\"net/http\"\n\t\"strings\"\n)\n\nfunc main() {\n\tclient := &http.Client{}\n\tvar data = strings.NewReader(`{\"network_id\":\"1\",\"from\":\"0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df\",\"to\":\"0xdef171fe48cf0115b1d80b88dc8eab59176fee57\",\"input\":\"0xa94e78ef000000000000000000000000000000000000000000000000000000000000002000000000000000000000000068037790a0229e9ce6eaa8a99ea92964106c470300000000000000000000000000000000000000000000010f0cf064dd592000000000000000000000000000000000000000000000000000000000000145dc1b2e00000000000000000000000000000000000000000000000000000001477f4d7d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000064d281e65c9438a5a99c4bccb1035296d5d2d8d200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000320000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002b68037790a0229e9ce6eaa8a99ea92964106c47030001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a730000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000060000000000000000000000001b81d678ffb9c0263b24a97847620c99d213eb14000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000064dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\"gas\":648318,\"block_number\":17884583,\"value\":\"0\",\"save\":true,\"save_if_fails\":true,\"simulation_type\":\"full\"}`)\n\treq, err := http.NewRequest(\"POST\", \"https://api.tenderly.co/api/v1/account/${TENDERLY_ACCOUNT_SLUG}/project/${TENDERLY_PROJECT_SLUG}/simulate\", data)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\treq.Header.Set(\"X-Access-Key\", \"${TENDERLY_ACCESS_KEY}\")\n\treq.Header.Set(\"content-type\", \"application/json\")\n\tresp, err := client.Do(req)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tdefer resp.Body.Close()\n\tbodyText, err := io.ReadAll(resp.Body)\n\tif err != nil {\n\t\tlog.Fatal(err)\n\t}\n\tfmt.Printf(\"%s\\n\", bodyText)\n}"
        - lang: JavaScript
          source: |-
            import axios from 'axios';

            const response = await axios.post(
              'https://api.tenderly.co/api/v1/account/${TENDERLY_ACCOUNT_SLUG}/project/${TENDERLY_PROJECT_SLUG}/simulate',
              {
                'network_id': '1',
                'from': '0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df',
                'to': '0xdef171fe48cf0115b1d80b88dc8eab59176fee57',
                'input': '0xa94e78ef000000000000000000000000000000000000000000000000000000000000002000000000000000000000000068037790a0229e9ce6eaa8a99ea92964106c470300000000000000000000000000000000000000000000010f0cf064dd592000000000000000000000000000000000000000000000000000000000000145dc1b2e00000000000000000000000000000000000000000000000000000001477f4d7d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000064d281e65c9438a5a99c4bccb1035296d5d2d8d200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000320000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002b68037790a0229e9ce6eaa8a99ea92964106c47030001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a730000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000060000000000000000000000001b81d678ffb9c0263b24a97847620c99d213eb14000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000064dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
                'gas': 648318,
                'block_number': 17884583,
                'value': '0',
                'save': true,
                'save_if_fails': true,
                'simulation_type': 'full'
              },
              {
                headers: {
                  'X-Access-Key': '${TENDERLY_ACCESS_KEY}',
                  'content-type': 'application/json'
                }
              }
            );
        - lang: Python
          source: |-
            import requests

            headers = {
                'X-Access-Key': '${TENDERLY_ACCESS_KEY}',
                'content-type': 'application/json',
            }

            json_data = {
                'network_id': '1',
                'from': '0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df',
                'to': '0xdef171fe48cf0115b1d80b88dc8eab59176fee57',
                'input': '0xa94e78ef000000000000000000000000000000000000000000000000000000000000002000000000000000000000000068037790a0229e9ce6eaa8a99ea92964106c470300000000000000000000000000000000000000000000010f0cf064dd592000000000000000000000000000000000000000000000000000000000000145dc1b2e00000000000000000000000000000000000000000000000000000001477f4d7d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000064d281e65c9438a5a99c4bccb1035296d5d2d8d200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000320000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002b68037790a0229e9ce6eaa8a99ea92964106c47030001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a730000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000060000000000000000000000001b81d678ffb9c0263b24a97847620c99d213eb14000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000064dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
                'gas': 648318,
                'block_number': 17884583,
                'value': '0',
                'save': True,
                'save_if_fails': True,
                'simulation_type': 'full',
            }

            response = requests.post(
                'https://api.tenderly.co/api/v1/account/${TENDERLY_ACCOUNT_SLUG}/project/${TENDERLY_PROJECT_SLUG}/simulate',
                headers=headers,
                json=json_data,
            )
components:
  schemas:
    simulation-payload:
      type: object
      properties:
        network_id:
          title: network_id
          description: ID of the network on which the simulation is being run.
          type: string
          example: '1'
        from:
          title: from
          description: Address initiating the transaction.
          type: string
          example: '0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df'
        to:
          title: to
          description: The recipient address of the transaction.
          type: string
          example: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
        input:
          title: input
          description: Encoded contract method call data.
          type: string
          example: >-
            0xa94e78ef000000000000000000000000000000000000000000000000000000000000002000000000000000000000000068037790a0229e9ce6eaa8a99ea92964106c470300000000000000000000000000000000000000000000010f0cf064dd592000000000000000000000000000000000000000000000000000000000000145dc1b2e00000000000000000000000000000000000000000000000000000001477f4d7d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000064d281e65c9438a5a99c4bccb1035296d5d2d8d200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000320000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002b68037790a0229e9ce6eaa8a99ea92964106c47030001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a730000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000060000000000000000000000001b81d678ffb9c0263b24a97847620c99d213eb14000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000064dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
        gas:
          title: gas
          description: Amount of gas provided for the simulation.
          type: number
          example: 648318
        block_number:
          title: block_number
          description: >-
            Integer number of the block to simulate on. Omit it to simulate on
            the pending block

            (the latest available state). A negative value is relative to the
            head: `-1` is the block

            before the latest one. `0` is the genesis block. Block tags such as
            `"latest"` are not

            accepted.
          type: number
          example: 17884583
        transaction_index:
          title: transaction_index
          description: >-
            Position within `block_number` at which the transaction executes.
            `0` (default) runs it at

            the start of the block, before any of the block's transactions; `N`
            runs it after the block's

            transactions `0` to `N-1`; the block's transaction count runs it
            after all of them (the

            block's post-state). Requires an explicit `block_number`. A value
            above the transaction

            count is rejected.
          type: number
          example: 0
        gas_price:
          title: gas_price
          description: >-
            String representation of a number that represents price of the gas
            in Wei.
          type: string
          example: '18312000018'
        max_fee_per_gas:
          title: max_fee_per_gas
          description: >-
            Maximum fee per gas for EIP-1559 transactions. String representation
            of a number in Wei.
          type: string
          example: '20000000000'
        max_priority_fee_per_gas:
          title: max_priority_fee_per_gas
          description: >-
            Maximum priority fee (tip) per gas for EIP-1559 transactions. String
            representation of a number in Wei.
          type: string
          example: '1000000000'
        nonce:
          title: nonce
          description: >-
            Transaction nonce override. If not specified, the nonce is
            automatically determined from the sender's current state.
          type: number
          example: 0
        estimate_gas:
          title: estimate_gas
          description: Flag that enables precise gas estimation.
          type: boolean
          example: false
        value:
          title: value
          description: Amount of Ether (in Wei) sent along with the transaction.
          type: string
          example: '0'
        generate_access_list:
          title: generate_access_list
          description: Flag that enables returning the access list in a response.
          type: boolean
          example: false
        access_list:
          title: access_list
          description: >-
            List of addresses with their storage keys to grant access for this
            transaction.
          type: array
          items: {}
          example:
            - address: '0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df'
              storage_keys: []
        save:
          title: save
          description: Flag indicating whether to save the simulation in dashboard UI.
          type: boolean
          example: true
        save_if_fails:
          title: save_if_fails
          description: Flag indicating whether to save failed simulation in dashboard UI.
          type: boolean
          example: true
        simulation_type:
          title: simulation_type
          description: Opt for quick, abi, or full simulation API mode.
          type: string
          enum:
            - full
            - quick
            - abi
          example: full
        block_header:
          title: block_header
          description: Overrides for specific block header.
          type: object
          example:
            number: '0x110ace7'
            hash: '0x0000000000000000000000000000000000000000000000000000000000000000'
            stateRoot: '0xef53217576746e2df5a5acb6993b629e548592008c22e5eb0c543ab0e597102f'
            parentHash: '0x0cf8a2db87cf124e1c8fceffd12c325e07fb51736c7dce9d0f945913616cb40a'
            sha3Uncles: '0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347'
            transactionsRoot: '0xb29cef267cf8e4b1a629f2aaeff8e3b4faf79195efcb63a08e4823070ee85f21'
            receiptsRoot: '0x9290b9bda89e8bc6173f17fab6b94ef7ffb1d33770e5d0fc9e21039ef936c777'
            logsBloom: >-
              0x40330cb14709a3aa3021ae29e85c20249ba3bc0c08bf9c7422cf48124a121120853709b6c20d1261603531d2b8b6810feeb920399c23eb1d8601f14e157921f9ac4b55994f4c3e686a0242ae56ea70ed84fb0b04d6ea1eed11e356cd85609fc3bf310367723a6c1b08453ceecc22d8df13f30504822865610bca1197895e7156a9bfd2756614028c1f5cf5e87bd6a43795c61841abc4d01c6475eae29ad813520b0223401451e9a3fe836ad63e967557cc99030243ad151927d4255e93b7391ed6d29882497108c2044092a24cc68291279b70a7f404ba1139210d5e1c25b40beaf2f48cc341d4c38787169830215105c1f014db5b98ccee22a94d3ba0663c1a
            timestamp: '0x64d22deb'
            difficulty: '0x0'
            gasLimit: '0x1c9c380'
            gasUsed: '0x1c9b51a'
            baseFeePerGas: '0x3d5200956'
            miner: '0xcda9d71bdfae59b89cee131ed3079f8ac4c77062'
            extraData: '0xd883010c00846765746888676f312e32302e34856c696e7578'
            mixHash: '0x9096c8da5df4b9bb771f91a81c3bd954d2a9c39c1bf05502877d057b1f76fb04'
            nonce: '0x0000000000000000'
            size: '0x0'
            totalDifficulty: '0x0'
            transactions: null
            uncles: null
        state_objects:
          $ref: '#/components/schemas/state-override'
          title: state_objects
          description: >-
            Overrides for a given contract. In this mapping, the **key** is the
            contract address, and the **value** is an object that contains
            overrides of nonce, code, balance, or state.
          type: object
          example:
            '0xdac17f958d2ee523a2206206994597c13d831ec7':
              storage:
                '0x0000000000000000000000000000000000000000000000000000000000000000': >-
                  0x000000000000000000000000c6cde7c39eb2f0f0095f41570af89efc2c1ea828
        l1_block_number:
          title: l1_block_number
          description: >-
            The latest L1 block number known to L2. It applies for the Optimism
            transactions.
          type: number
          example: 100004000
        l1_timestamp:
          title: l1_timestamp
          description: >-
            The timestamp of the latest L1 block. It applies for the Optimism
            transactions.
          type: number
          example: 1686124292
        l1_message_sender:
          title: l1_message_sender
          description: >-
            The address of the sender of the latest message from L1 to L2. It
            applies for the Optimism transactions.
          type: string
          example: '0x0000000000000000000000000000000000000000'
        deposit_tx:
          title: deposit_tx
          description: >-
            Indicates if the transaction is a deposit from L1 to L2. It applies
            for the Optimism Bedrock transactions.
          type: boolean
          example: false
        system_tx:
          title: system_tx
          description: >-
            Indicates if the transaction is a system-level operation within L2.
            It applies for the Optimism Bedrock transactions.
          type: boolean
          example: false
        mint:
          title: mint
          description: >-
            The amount of a specific token minted within L2. It applies for the
            Optimism Bedrock transactions.
          type: number
          example: 0
        amount_to_mint:
          title: amount_to_mint
          description: >-
            The desired amount to be minted in the next operation. It applies
            for the Optimism Bedrock transactions.
          type: string
          example: '0'
      required:
        - network_id
        - from
        - to
        - input
    state-override:
      type: object
      additionalProperties:
        type: object
        properties:
          nonce:
            type: integer
            format: int64
          code:
            type: string
            format: bytes
            description: >-
              Bytecode that will override the **code** associated to the given
              account.
          balance:
            anyOf:
              - type: string
                description: Balance in hex format (e.g. "0x113b9aca01").
                example: '0x113b9aca01'
              - type: integer
                description: Balance as decimal number.
                example: 1.0000001e+25
          storage:
            type: object
            description: >-
              Overrides of storage slots. In this mapping, the **key** is the
              variable storage slot, and the **value** contains the override.
            additionalProperties:
              type: string
    simulation-response:
      description: >-
        Simulation response containing the simulated transaction, simulation
        metadata, involved contracts, and generated access list.
      type: object
      properties:
        transaction:
          title: transaction
          description: >-
            Contains data related to the simulated transaction, including its
            hash, block number,

            origin and destination addresses, gas details, input data, nonce,
            status, timestamp,

            and involved contract addresses. The nested `transaction_info`
            object holds detailed

            execution data such as the call trace, emitted logs, state diffs,
            and asset changes.
          type: object
          properties:
            hash:
              title: hash
              description: Transaction hash.
              type: string
              example: >-
                0x8bb054967340f08827e1943ad34e2a448357e72ad1adee7397c577a716530a0f
            block_hash:
              title: block_hash
              description: Hash of the block containing this transaction.
              type: string
              example: ''
            block_number:
              title: block_number
              description: Block number at which the transaction was simulated.
              type: number
              example: 17884583
            from:
              title: from
              description: Address that initiated the transaction.
              type: string
              example: '0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df'
            gas:
              title: gas
              description: Gas limit provided for the simulation.
              type: number
              example: 648318
            gas_price:
              title: gas_price
              description: Gas price used in the simulation.
              type: number
              example: 0
            gas_fee_cap:
              title: gas_fee_cap
              description: EIP-1559 max fee per gas.
              type: number
              example: 0
            gas_tip_cap:
              title: gas_tip_cap
              description: EIP-1559 max priority fee per gas (tip).
              type: number
              example: 0
            cumulative_gas_used:
              title: cumulative_gas_used
              description: >-
                Total gas used in the block up to and including this
                transaction.
              type: number
              example: 0
            gas_used:
              title: gas_used
              description: Actual gas consumed by the simulation.
              type: number
              example: 45065
            effective_gas_price:
              title: effective_gas_price
              description: Effective gas price after EIP-1559 calculations.
              type: number
              example: 0
            input:
              title: input
              description: Hex-encoded calldata sent with the transaction.
              type: string
            nonce:
              title: nonce
              description: Transaction nonce of the sender.
              type: number
              example: 1094
            to:
              title: to
              description: Recipient address of the transaction.
              type: string
              example: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
            index:
              title: index
              description: Transaction index within the block.
              type: number
              example: 0
            value:
              title: value
              description: Ether value sent with the transaction (in hex).
              type: string
              example: 0x
            access_list:
              title: access_list
              description: EIP-2930 access list used by the transaction.
              type:
                - array
                - 'null'
              items: {}
            status:
              title: status
              description: Whether the transaction succeeded (true) or reverted (false).
              type: boolean
              example: false
            addresses:
              title: addresses
              description: List of addresses involved in the transaction.
              type: array
              items:
                type: string
            contract_ids:
              title: contract_ids
              description: >-
                List of contract identifiers in `network:chainId:address`
                format.
              type: array
              items:
                type: string
            network_id:
              title: network_id
              description: Network ID on which the simulation was run.
              type: string
              example: '1'
            timestamp:
              title: timestamp
              description: Timestamp of the block used for simulation.
              type: string
              format: date-time
              example: '2023-08-10T12:48:11Z'
            function_selector:
              title: function_selector
              description: 4-byte function selector of the called method.
              type: string
            l1_block_number:
              title: l1_block_number
              description: L1 block number (for L2 transactions).
              type: number
              example: 0
            l1_timestamp:
              title: l1_timestamp
              description: L1 timestamp (for L2 transactions).
              type: number
              example: 0
            deposit_tx:
              title: deposit_tx
              description: Whether this is a deposit transaction (L1 to L2).
              type: boolean
              example: false
            system_tx:
              title: system_tx
              description: Whether this is a system transaction.
              type: boolean
              example: false
            sig:
              title: sig
              description: Transaction signature values.
              type: object
              properties:
                v:
                  type: string
                r:
                  type: string
                s:
                  type: string
            transaction_info:
              title: transaction_info
              description: >-
                Detailed execution information including the call trace, decoded
                method parameters,

                emitted logs, state diffs, asset changes, and balance changes.
              type: object
              properties:
                contract_id:
                  title: contract_id
                  description: Identifier of the primary contract in the transaction.
                  type: string
                  example: eth:1:0xdef171fe48cf0115b1d80b88dc8eab59176fee57
                block_number:
                  title: block_number
                  description: Block number of the simulation.
                  type: number
                transaction_id:
                  title: transaction_id
                  description: Transaction hash (same as top-level hash).
                  type: string
                contract_address:
                  title: contract_address
                  description: Address of the primary contract called.
                  type: string
                method:
                  title: method
                  description: >-
                    Name of the method that was called (e.g., "transfer",
                    "swap").
                  type: string
                  example: multiSwap
                parameters:
                  title: parameters
                  description: Decoded input parameters of the called method.
                  type:
                    - array
                    - 'null'
                  items: {}
                intrinsic_gas:
                  title: intrinsic_gas
                  description: Intrinsic gas cost of the transaction.
                  type: number
                refund_gas:
                  title: refund_gas
                  description: Gas refunded after execution.
                  type: number
                call_trace:
                  title: call_trace
                  description: >-
                    Root of the call trace tree. Contains the top-level call and
                    all nested

                    internal calls, including decoded inputs/outputs, gas usage,
                    and errors.
                  type: object
                stack_trace:
                  title: stack_trace
                  description: Stack trace of the error if the transaction reverted.
                  type:
                    - array
                    - 'null'
                  items: {}
                logs:
                  title: logs
                  description: Decoded event logs emitted during execution.
                  type:
                    - array
                    - 'null'
                  items: {}
                state_diff:
                  title: state_diff
                  description: >-
                    State changes caused by the transaction. Each entry shows
                    the original

                    and modified values for storage slots.
                  type:
                    - array
                    - 'null'
                  items: {}
                raw_state_diff:
                  title: raw_state_diff
                  description: >-
                    Raw (non-decoded) state changes as storage slot key-value
                    pairs.
                  type:
                    - array
                    - 'null'
                  items: {}
                console_logs:
                  title: console_logs
                  description: Console log outputs from Hardhat-style console.log calls.
                  type:
                    - array
                    - 'null'
                  items: {}
                created_at:
                  title: created_at
                  description: Timestamp when the simulation was created.
                  type: string
                  format: date-time
                asset_changes:
                  title: asset_changes
                  description: >-
                    Token transfers that occurred during the transaction,
                    including ERC20,

                    ERC721, ERC1155, and native currency movements. Each entry
                    includes

                    token info, transfer type (Transfer, Mint, Burn), amounts,
                    and USD values.
                  type:
                    - array
                    - 'null'
                  items: {}
                balance_changes:
                  title: balance_changes
                  description: >-
                    Net balance changes per address, aggregating all asset
                    transfers

                    for each participant in the transaction.
                  type:
                    - array
                    - 'null'
                  items: {}
                exposure_changes:
                  title: exposure_changes
                  description: >-
                    Token approval changes (Approve, Revoke, Permit,
                    ApproveForAll, RevokeForAll)

                    that occurred during the transaction.
                  type:
                    - array
                    - 'null'
                  items: {}
            error_message:
              title: error_message
              description: Error message if the transaction reverted.
              type: string
            error_info:
              title: error_info
              description: >-
                Detailed error information including the address that caused the
                revert.
              type:
                - object
                - 'null'
              properties:
                error_message:
                  type: string
                address:
                  type: string
            method:
              title: method
              description: Name of the method called.
              type: string
            decoded_input:
              title: decoded_input
              description: Decoded input parameters at the top level.
              type:
                - array
                - 'null'
              items: {}
        simulation:
          title: simulation
          description: >-
            Contains metadata about the simulation itself, including its unique
            ID, project and

            owner IDs, block number, gas used, the method invoked, simulation
            status, block header

            used, and timestamps.
          type: object
          properties:
            id:
              title: id
              description: Unique identifier of the simulation.
              type: string
              format: uuid
              example: 1c08db12-8f6b-4377-95ef-2c0b99298de8
            project_id:
              title: project_id
              description: ID of the project the simulation belongs to.
              type: string
              format: uuid
              example: dfdc391a-a15d-4590-9aef-8691259c7df4
            owner_id:
              title: owner_id
              description: ID of the account that owns the simulation.
              type: string
              format: uuid
              example: 7d5e8b1f-8bf8-4eae-a70f-fb7d354b1cc2
            network_id:
              title: network_id
              description: Network ID on which the simulation was run.
              type: string
              example: '1'
            block_number:
              title: block_number
              description: Block number used for the simulation.
              type: number
              example: 17884583
            transaction_index:
              title: transaction_index
              description: Transaction index within the block.
              type: number
              example: 0
            from:
              title: from
              description: Sender address.
              type: string
              example: '0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df'
            to:
              title: to
              description: Recipient address.
              type: string
              example: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
            input:
              title: input
              description: Hex-encoded calldata.
              type: string
            gas:
              title: gas
              description: Gas limit.
              type: number
              example: 648318
            gas_price:
              title: gas_price
              description: Gas price used.
              type: string
              example: '0'
            gas_used:
              title: gas_used
              description: Actual gas consumed.
              type: number
              example: 45065
            value:
              title: value
              description: Ether value sent.
              type: string
              example: '0'
            method:
              title: method
              description: Name of the called method.
              type: string
              example: multiSwap
            status:
              title: status
              description: Whether the simulation succeeded.
              type: boolean
              example: false
            access_list:
              title: access_list
              description: EIP-2930 access list.
              type:
                - array
                - 'null'
              items: {}
            queue_origin:
              title: queue_origin
              description: Origin of the transaction in queue (for L2).
              type: string
            block_header:
              title: block_header
              description: Block header used during the simulation.
              type: object
            deposit_tx:
              title: deposit_tx
              description: Whether this is a deposit transaction.
              type: boolean
              example: false
            system_tx:
              title: system_tx
              description: Whether this is a system transaction.
              type: boolean
              example: false
            error_message:
              title: error_message
              description: Error message if the simulation reverted.
              type: string
              example: Deadline breached
            nonce:
              title: nonce
              description: Nonce of the sender.
              type: number
              example: 1094
            addresses:
              title: addresses
              description: Addresses involved in the simulation.
              type: array
              items:
                type: string
            contract_ids:
              title: contract_ids
              description: Contract identifiers involved.
              type: array
              items:
                type: string
            shared:
              title: shared
              description: Whether the simulation is shared/public.
              type: boolean
              example: false
            created_at:
              title: created_at
              description: Timestamp when the simulation was created.
              type: string
              format: date-time
              example: '2023-12-20T14:03:57.3212051Z'
        contracts:
          title: contracts
          description: >-
            List of contract accounts involved in the simulation. Each entry
            contains

            the contract's ID, network ID, address, name, verification status,
            associated

            standards (ERC20, ERC721, etc.), token data, compiler version,
            deployed bytecode,

            and source code (if verified).
          type: array
          items:
            type: object
            properties:
              id:
                title: id
                description: >-
                  Unique contract identifier in `network:chainId:address`
                  format.
                type: string
                example: eth:1:0xbd7b550d2e7571383d84acf597a00d341e5c406e
              contract_id:
                title: contract_id
                description: Contract identifier (same as id).
                type: string
              balance:
                title: balance
                description: Contract balance.
                type: string
              network_id:
                title: network_id
                description: Network ID the contract is deployed on.
                type: string
                example: '1'
              public:
                title: public
                description: Whether the contract is publicly verified.
                type: boolean
                example: true
              verified_by:
                title: verified_by
                description: Source of verification (e.g., "etherscan").
                type: string
                example: etherscan
              verification_date:
                title: verification_date
                description: When the contract was verified.
                type: string
                format: date-time
              address:
                title: address
                description: Contract address.
                type: string
                example: '0xbd7b550d2e7571383d84acf597a00d341e5c406e'
              contract_name:
                title: contract_name
                description: Name of the contract (e.g., "UniswapV2Router02").
                type: string
                example: MultiPath
              ens_domain:
                title: ens_domain
                description: ENS domains associated with this address.
                type:
                  - array
                  - 'null'
                items:
                  type: string
              type:
                title: type
                description: |-
                  Account type. Possible values:
                  - `wallet` - Externally Owned Account (EOA)
                  - `contract` - Verified smart contract
                  - `unverified_contract` - Unverified smart contract
                type: string
                enum:
                  - wallet
                  - contract
                  - unverified_contract
                example: contract
              standard:
                title: standard
                description: >-
                  Primary contract standard. Possible values include:

                  `erc20`, `erc721`, `erc1155`, `eip1167`, `eip1967`,
                  `beacon_proxy`, `custom_proxy`, `native_currency`
                type: string
              standards:
                title: standards
                description: List of all standards the contract implements.
                type: array
                items:
                  type: string
              token_data:
                title: token_data
                description: Token-specific data if the contract is a token.
                type:
                  - object
                  - 'null'
                properties:
                  symbol:
                    type: string
                  name:
                    type: string
                  decimals:
                    type: number
                  main:
                    type: boolean
              evm_version:
                title: evm_version
                description: EVM version the contract was compiled for.
                type: string
              compiler_version:
                title: compiler_version
                description: Compiler version used to compile the contract.
                type: string
                example: v0.7.5+commit.eb77ed08
              optimizations_used:
                title: optimizations_used
                description: Whether compiler optimizations were enabled.
                type: boolean
              optimization_runs:
                title: optimization_runs
                description: Number of optimizer runs.
                type: number
              libraries:
                title: libraries
                description: Libraries linked to the contract.
                type:
                  - object
                  - 'null'
              compiler_settings:
                title: compiler_settings
                description: Compiler settings used for compilation.
                type: object
              deployed_bytecode:
                title: deployed_bytecode
                description: Hex-encoded deployed bytecode of the contract.
                type: string
              creation_bytecode:
                title: creation_bytecode
                description: Hex-encoded creation bytecode of the contract.
                type: string
              data:
                title: data
                description: >-
                  Public contract data including the main contract name, source
                  files, and ABI.
                type:
                  - object
                  - 'null'
                properties:
                  main_contract:
                    type: string
                  contract_info:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: number
                        path:
                          type: string
                        name:
                          type: string
                        source:
                          type: string
                  abi:
                    type: array
                    items: {}
              src_map:
                title: src_map
                description: Source map for the contract bytecode.
                type: string
              creation_block:
                title: creation_block
                description: Block number at which the contract was deployed.
                type: number
              creation_tx:
                title: creation_tx
                description: Transaction hash of the contract deployment.
                type: string
              creator_address:
                title: creator_address
                description: Address that deployed the contract.
                type: string
              language:
                title: language
                description: Programming language (solidity or vyper).
                type: string
                enum:
                  - solidity
                  - vyper
              in_project:
                title: in_project
                description: Whether the contract is part of the project.
                type: boolean
              token_info:
                title: token_info
                description: Token metadata (symbol, name, decimals, logo, USD value).
                type:
                  - object
                  - 'null'
        generated_access_list:
          title: generated_access_list
          description: >-
            EIP-2930 access list generated by the simulation when
            `generate_access_list`

            is set to `true` in the request. Contains addresses and their
            accessed storage

            keys for gas optimization.
          type: array
          items:
            type: object
            properties:
              address:
                title: address
                description: Contract address in the access list.
                type: string
              storage_keys:
                title: storage_keys
                description: Storage keys accessed in this contract.
                type: array
                items:
                  type: string
    full_mode_simulate_post_response:
      type: object
      title: Full Simulation Response
      description: An object with details about transaction simulation using a full mode.
      example:
        transaction:
          hash: '0x8bb054967340f08827e1943ad34e2a448357e72ad1adee7397c577a716530a0f'
          block_hash: ''
          block_number: 17884583
          from: '0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df'
          gas: 648318
          gas_price: 0
          gas_fee_cap: 0
          gas_tip_cap: 0
          cumulative_gas_used: 0
          gas_used: 45065
          effective_gas_price: 0
          input: >-
            0xa94e78ef000000000000000000000000000000000000000000000000000000000000002000000000000000000000000068037790a0229e9ce6eaa8a99ea92964106c470300000000000000000000000000000000000000000000010f0cf064dd592000000000000000000000000000000000000000000000000000000000000145dc1b2e00000000000000000000000000000000000000000000000000000001477f4d7d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000064d281e65c9438a5a99c4bccb1035296d5d2d8d200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000320000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002b68037790a0229e9ce6eaa8a99ea92964106c47030001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a730000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000060000000000000000000000001b81d678ffb9c0263b24a97847620c99d213eb14000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000064dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
          nonce: 1094
          to: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
          index: 0
          value: 0x
          access_list: null
          status: false
          addresses:
            - '0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df'
            - '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
            - '0xbd7b550d2e7571383d84acf597a00d341e5c406e'
          contract_ids:
            - eth:1:0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df
            - eth:1:0xdef171fe48cf0115b1d80b88dc8eab59176fee57
            - eth:1:0xbd7b550d2e7571383d84acf597a00d341e5c406e
          network_id: '1'
          timestamp: '2023-08-10T12:48:11Z'
          function_selector: ''
          l1_block_number: 0
          l1_timestamp: 0
          deposit_tx: false
          system_tx: false
          sig:
            v: '0x0'
            r: '0x0'
            s: '0x0'
          transaction_info:
            contract_id: eth:1:0xdef171fe48cf0115b1d80b88dc8eab59176fee57
            block_number: 17884583
            transaction_id: '0x8bb054967340f08827e1943ad34e2a448357e72ad1adee7397c577a716530a0f'
            contract_address: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
            method: fallback
            parameters: null
            intrinsic_gas: 32744
            refund_gas: 0
            call_trace:
              hash: >-
                0x8bb054967340f08827e1943ad34e2a448357e72ad1adee7397c577a716530a0f
              contract_name: AugustusSwapper
              function_name: fallback
              function_pc: 100
              function_op: JUMPDEST
              function_file_index: 0
              function_code_start: 47102
              function_line_number: 1467
              function_code_length: 5950
              absolute_position: 28
              caller_pc: 0
              caller_op: CALL
              call_type: CALL
              address: '0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df'
              from: '0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df'
              from_balance: '50912118197849012'
              to: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
              to_balance: '0'
              value: '0'
              caller:
                address: '0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df'
                balance: '50912118197849012'
              block_timestamp: '0001-01-01T00:00:00Z'
              gas: 615574
              gas_used: 12321
              intrinsic_gas: 32744
              storage_address: '0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df'
              input: >-
                0xa94e78ef000000000000000000000000000000000000000000000000000000000000002000000000000000000000000068037790a0229e9ce6eaa8a99ea92964106c470300000000000000000000000000000000000000000000010f0cf064dd592000000000000000000000000000000000000000000000000000000000000145dc1b2e00000000000000000000000000000000000000000000000000000001477f4d7d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000064d281e65c9438a5a99c4bccb1035296d5d2d8d200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000320000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002b68037790a0229e9ce6eaa8a99ea92964106c47030001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a730000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000060000000000000000000000001b81d678ffb9c0263b24a97847620c99d213eb14000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000064dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
              nonce_diff:
                - address: '0x3F41a1CFd3C8B8d9c162dE0f42307a0095A6e5DF'
                  original: '1094'
                  dirty: '1095'
              output: 0x
              decoded_output: null
              error_hex_data: >-
                0x08c379a000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000011446561646c696e65206272656163686564000000000000000000000000000000
              network_id: '1'
              calls:
                - hash: ''
                  contract_name: AugustusSwapper
                  function_name: getImplementation
                  function_pc: 1627
                  function_op: JUMPDEST
                  function_file_index: 0
                  function_code_start: 49421
                  function_line_number: 1539
                  function_code_length: 123
                  absolute_position: 59
                  caller_pc: 467
                  caller_op: JUMP
                  caller_file_index: 0
                  caller_line_number: 1497
                  caller_code_start: 48052
                  caller_code_length: 27
                  call_type: JUMPDEST
                  address: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
                  from: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
                  from_balance: null
                  to: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
                  to_balance: null
                  value: null
                  caller:
                    address: '0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df'
                    balance: '50912118197849012'
                  block_timestamp: '0001-01-01T00:00:00Z'
                  gas: 615338
                  gas_used: 2202
                  storage_address: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
                  input: 0x
                  decoded_input:
                    - soltype:
                        name: selector
                        type: bytes4
                        storage_location: default
                        offset: 0
                        index: >-
                          0x0000000000000000000000000000000000000000000000000000000000000000
                        indexed: false
                        simple_type:
                          type: bytes
                      value: '0xa94e78ef'
                  output: 0x
                  decoded_output:
                    - soltype:
                        name: ''
                        type: address
                        storage_location: default
                        offset: 0
                        index: >-
                          0x0000000000000000000000000000000000000000000000000000000000000000
                        indexed: false
                        simple_type:
                          type: address
                      value: '0xbd7b550d2e7571383d84acf597a00d341e5c406e'
                  network_id: ''
                  calls: null
                - hash: ''
                  contract_name: AugustusSwapper
                  function_name: multiSwap
                  function_pc: 2546
                  function_op: JUMPDEST
                  function_file_index: 14
                  function_code_start: 1200
                  function_line_number: 43
                  function_code_length: 2514
                  absolute_position: 2044
                  caller_pc: 736
                  caller_op: DELEGATECALL
                  caller_file_index: 0
                  caller_line_number: 1508
                  caller_code_start: 48425
                  caller_code_length: 37
                  call_type: DELEGATECALL
                  address: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
                  from: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
                  from_balance: '0'
                  to: '0xbd7b550d2e7571383d84acf597a00d341e5c406e'
                  to_balance: '0'
                  value: null
                  caller:
                    address: '0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df'
                    balance: '50912118197849012'
                  block_timestamp: '0001-01-01T00:00:00Z'
                  gas: 600460
                  gas_used: 6554
                  refund_gas: 9531
                  storage_address: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
                  input: >-
                    0xa94e78ef000000000000000000000000000000000000000000000000000000000000002000000000000000000000000068037790a0229e9ce6eaa8a99ea92964106c470300000000000000000000000000000000000000000000010f0cf064dd592000000000000000000000000000000000000000000000000000000000000145dc1b2e00000000000000000000000000000000000000000000000000000001477f4d7d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000064d281e65c9438a5a99c4bccb1035296d5d2d8d200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000320000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002b68037790a0229e9ce6eaa8a99ea92964106c47030001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a730000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000060000000000000000000000001b81d678ffb9c0263b24a97847620c99d213eb14000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000064dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                  decoded_input:
                    - soltype:
                        name: data
                        type: tuple
                        storage_location: default
                        components:
                          - name: fromToken
                            type: address
                            storage_location: default
                            offset: 0
                            index: >-
                              0x0000000000000000000000000000000000000000000000000000000000000000
                            indexed: false
                            simple_type:
                              type: address
                          - name: fromAmount
                            type: uint256
                            storage_location: default
                            offset: 0
                            index: >-
                              0x0000000000000000000000000000000000000000000000000000000000000000
                            indexed: false
                            simple_type:
                              type: uint
                          - name: toAmount
                            type: uint256
                            storage_location: default
                            offset: 0
                            index: >-
                              0x0000000000000000000000000000000000000000000000000000000000000000
                            indexed: false
                            simple_type:
                              type: uint
                          - name: expectedAmount
                            type: uint256
                            storage_location: default
                            offset: 0
                            index: >-
                              0x0000000000000000000000000000000000000000000000000000000000000000
                            indexed: false
                            simple_type:
                              type: uint
                          - name: beneficiary
                            type: address
                            storage_location: default
                            offset: 0
                            index: >-
                              0x0000000000000000000000000000000000000000000000000000000000000000
                            indexed: false
                            simple_type:
                              type: address
                          - name: path
                            type: tuple[]
                            storage_location: default
                            components:
                              - name: to
                                type: address
                                storage_location: default
                                offset: 0
                                index: >-
                                  0x0000000000000000000000000000000000000000000000000000000000000000
                                indexed: false
                                simple_type:
                                  type: address
                              - name: totalNetworkFee
                                type: uint256
                                storage_location: default
                                offset: 0
                                index: >-
                                  0x0000000000000000000000000000000000000000000000000000000000000000
                                indexed: false
                                simple_type:
                                  type: uint
                              - name: adapters
                                type: tuple[]
                                storage_location: default
                                components:
                                  - name: adapter
                                    type: address
                                    storage_location: default
                                    offset: 0
                                    index: >-
                                      0x0000000000000000000000000000000000000000000000000000000000000000
                                    indexed: false
                                    simple_type:
                                      type: address
                                  - name: percent
                                    type: uint256
                                    storage_location: default
                                    offset: 0
                                    index: >-
                                      0x0000000000000000000000000000000000000000000000000000000000000000
                                    indexed: false
                                    simple_type:
                                      type: uint
                                  - name: networkFee
                                    type: uint256
                                    storage_location: default
                                    offset: 0
                                    index: >-
                                      0x0000000000000000000000000000000000000000000000000000000000000000
                                    indexed: false
                                    simple_type:
                                      type: uint
                                  - name: route
                                    type: tuple[]
                                    storage_location: default
                                    components:
                                      - name: index
                                        type: uint256
                                        storage_location: default
                                        offset: 0
                                        index: >-
                                          0x0000000000000000000000000000000000000000000000000000000000000000
                                        indexed: false
                                        simple_type:
                                          type: uint
                                      - name: targetExchange
                                        type: address
                                        storage_location: default
                                        offset: 0
                                        index: >-
                                          0x0000000000000000000000000000000000000000000000000000000000000000
                                        indexed: false
                                        simple_type:
                                          type: address
                                      - name: percent
                                        type: uint256
                                        storage_location: default
                                        offset: 0
                                        index: >-
                                          0x0000000000000000000000000000000000000000000000000000000000000000
                                        indexed: false
                                        simple_type:
                                          type: uint
                                      - name: payload
                                        type: bytes
                                        storage_location: default
                                        offset: 0
                                        index: >-
                                          0x0000000000000000000000000000000000000000000000000000000000000000
                                        indexed: false
                                        simple_type:
                                          type: bytes
                                      - name: networkFee
                                        type: uint256
                                        storage_location: default
                                        offset: 0
                                        index: >-
                                          0x0000000000000000000000000000000000000000000000000000000000000000
                                        indexed: false
                                        simple_type:
                                          type: uint
                                    offset: 0
                                    index: >-
                                      0x0000000000000000000000000000000000000000000000000000000000000000
                                    indexed: false
                                    simple_type:
                                      type: slice
                                offset: 0
                                index: >-
                                  0x0000000000000000000000000000000000000000000000000000000000000000
                                indexed: false
                                simple_type:
                                  type: slice
                            offset: 0
                            index: >-
                              0x0000000000000000000000000000000000000000000000000000000000000000
                            indexed: false
                            simple_type:
                              type: slice
                          - name: partner
                            type: address
                            storage_location: default
                            offset: 0
                            index: >-
                              0x0000000000000000000000000000000000000000000000000000000000000000
                            indexed: false
                            simple_type:
                              type: address
                          - name: feePercent
                            type: uint256
                            storage_location: default
                            offset: 0
                            index: >-
                              0x0000000000000000000000000000000000000000000000000000000000000000
                            indexed: false
                            simple_type:
                              type: uint
                          - name: permit
                            type: bytes
                            storage_location: default
                            offset: 0
                            index: >-
                              0x0000000000000000000000000000000000000000000000000000000000000000
                            indexed: false
                            simple_type:
                              type: bytes
                          - name: deadline
                            type: uint256
                            storage_location: default
                            offset: 0
                            index: >-
                              0x0000000000000000000000000000000000000000000000000000000000000000
                            indexed: false
                            simple_type:
                              type: uint
                          - name: uuid
                            type: bytes16
                            storage_location: default
                            offset: 0
                            index: >-
                              0x0000000000000000000000000000000000000000000000000000000000000000
                            indexed: false
                            simple_type:
                              type: bytes
                        offset: 0
                        index: >-
                          0x0000000000000000000000000000000000000000000000000000000000000000
                        indexed: false
                      value:
                        fromToken: '0x68037790a0229e9ce6eaa8a99ea92964106c4703'
                        fromAmount: '5000000000000000000000'
                        toAmount: '5467020078'
                        expectedAmount: '5494492541'
                        beneficiary: '0x0000000000000000000000000000000000000000'
                        path:
                          - to: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'
                            totalNetworkFee: '0'
                            adapters:
                              - adapter: '0x9be264469ef954c139da4a45cf76cbcc5e3a6a73'
                                percent: '10000'
                                networkFee: '0'
                                route:
                                  - index: '6'
                                    targetExchange: '0xe592427a0aece92de3edee1f18e0157c05861564'
                                    percent: '10000'
                                    payload: >-
                                      0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002b68037790a0229e9ce6eaa8a99ea92964106c47030001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000
                                    networkFee: '0'
                          - to: '0xdac17f958d2ee523a2206206994597c13d831ec7'
                            totalNetworkFee: '0'
                            adapters:
                              - adapter: '0x9be264469ef954c139da4a45cf76cbcc5e3a6a73'
                                percent: '10000'
                                networkFee: '0'
                                route:
                                  - index: '6'
                                    targetExchange: '0x1b81d678ffb9c0263b24a97847620c99d213eb14'
                                    percent: '10000'
                                    payload: >-
                                      0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000064dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000000000000000000000
                                    networkFee: '0'
                        partner: '0x0000000000000000000000000000000000000000'
                        feePercent: >-
                          452312848583266388373324160190187140051835877600158453279131187530910679040
                        permit: 0x
                        deadline: '1691517414'
                        uuid: '0x5c9438a5a99c4bccb1035296d5d2d8d2'
                  output: 0x
                  decoded_output: null
                  error_absolute_position: 2043
                  error: execution reverted
                  error_op: REVERT
                  error_file_index: 14
                  error_line_number: 44
                  error_code_start: 1290
                  error_code_length: 62
                  error_reason: Deadline breached
                  network_id: ''
                  calls:
                    - hash: ''
                      contract_name: AugustusSwapper
                      function_name: multiSwap
                      function_pc: 0
                      function_op: ''
                      absolute_position: 2043
                      caller_pc: 0
                      caller_op: ''
                      address: '0xbd7b550d2e7571383d84acf597a00d341e5c406e'
                      from: '0xbd7b550d2e7571383d84acf597a00d341e5c406e'
                      from_balance: null
                      to: '0xbd7b550d2e7571383d84acf597a00d341e5c406e'
                      to_balance: null
                      value: null
                      block_timestamp: '0001-01-01T00:00:00Z'
                      gas: 0
                      gas_used: 0
                      input: 0x
                      output: 0x
                      decoded_output: null
                      error: execution reverted
                      error_op: REVERT
                      error_file_index: 14
                      error_line_number: 44
                      error_code_start: 1290
                      error_code_length: 62
                      network_id: ''
                      calls: null
                - hash: ''
                  contract_name: AugustusSwapper
                  function_name: _revertWithData
                  function_pc: 1705
                  function_op: JUMPDEST
                  function_file_index: 0
                  function_code_start: 52803
                  function_line_number: 1640
                  function_code_length: 120
                  absolute_position: 2092
                  caller_pc: 806
                  caller_op: JUMP
                  caller_file_index: 0
                  caller_line_number: 1510
                  caller_code_start: 48500
                  caller_code_length: 27
                  call_type: JUMPDEST
                  address: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
                  from: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
                  from_balance: null
                  to: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
                  to_balance: null
                  value: null
                  caller:
                    address: '0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df'
                    balance: '50912118197849012'
                  block_timestamp: '0001-01-01T00:00:00Z'
                  gas: 603269
                  gas_used: 603269
                  storage_address: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
                  input: 0x
                  decoded_input:
                    - soltype:
                        name: data
                        type: bytes
                        storage_location: memory
                        offset: 0
                        index: >-
                          0x0000000000000000000000000000000000000000000000000000000000000000
                        indexed: false
                        simple_type:
                          type: bytes
                      value: >-
                        0x08c379a000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000011446561646c696e65206272656163686564000000000000000000000000000000
                  output: 0x
                  decoded_output: null
                  error_absolute_position: 2098
                  error: execution reverted
                  error_op: REVERT
                  error_file_index: 0
                  error_line_number: 1641
                  error_code_start: 52881
                  error_code_length: 34
                  network_id: ''
                  calls:
                    - hash: ''
                      contract_name: AugustusSwapper
                      function_name: _revertWithData
                      function_pc: 0
                      function_op: ''
                      absolute_position: 2098
                      caller_pc: 0
                      caller_op: ''
                      address: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
                      from: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
                      from_balance: null
                      to: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
                      to_balance: null
                      value: null
                      block_timestamp: '0001-01-01T00:00:00Z'
                      gas: 0
                      gas_used: 0
                      input: 0x
                      output: 0x
                      decoded_output: null
                      error: execution reverted
                      error_op: REVERT
                      error_file_index: 0
                      error_line_number: 1641
                      error_code_start: 52881
                      error_code_length: 34
                      network_id: ''
                      calls: null
            stack_trace:
              - file_index: 0
                contract: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
                name: AugustusSwapper
                line: 1641
                error: execution reverted
                code: _revertWithData
                op: REVERT
                length: 34
              - file_index: 0
                contract: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
                name: AugustusSwapper
                line: 1510
                error: null
                code: _revertWithData
                op: JUMP
                length: 27
              - file_index: 0
                contract: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
                name: AugustusSwapper
                line: 1467
                error: null
                code: fallback
                op: JUMPDEST
                length: 5950
            logs: null
            balance_diff: null
            nonce_diff:
              - address: '0x3F41a1CFd3C8B8d9c162dE0f42307a0095A6e5DF'
                original: '1094'
                dirty: '1095'
            state_diff: null
            raw_state_diff: null
            console_logs: null
            asset_changes: null
            balance_changes: []
            created_at: '2023-08-10T12:48:11Z'
          error_message: Deadline breached
          error_info:
            error_message: Deadline breached
            address: '0xbd7b550d2e7571383d84acf597a00d341e5c406e'
          method: ''
          decoded_input: null
          call_trace:
            - call_type: CALL
              from: '0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df'
              to: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
              gas: 615574
              gas_used: 12321
              address: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
              error: value:"execution reverted"
              subtraces: 1
              input: >-
                0xa94e78ef000000000000000000000000000000000000000000000000000000000000002000000000000000000000000068037790a0229e9ce6eaa8a99ea92964106c470300000000000000000000000000000000000000000000010f0cf064dd592000000000000000000000000000000000000000000000000000000000000145dc1b2e00000000000000000000000000000000000000000000000000000001477f4d7d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000064d281e65c9438a5a99c4bccb1035296d5d2d8d200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000320000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002b68037790a0229e9ce6eaa8a99ea92964106c47030001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a730000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000060000000000000000000000001b81d678ffb9c0263b24a97847620c99d213eb14000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000064dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
              output: >-
                0x08c379a000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000011446561646c696e65206272656163686564000000000000000000000000000000
              errorMessage: value:"Deadline breached"
              fromBalance: '0xb4e04d3ff20bb4'
            - call_type: DELEGATECALL
              from: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
              to: '0xbd7b550d2e7571383d84acf597a00d341e5c406e'
              gas: 600460
              gas_used: 6554
              address: '0xbd7b550d2e7571383d84acf597a00d341e5c406e'
              error: value:"execution reverted"
              trace_address:
                - 0
              input: >-
                0xa94e78ef000000000000000000000000000000000000000000000000000000000000002000000000000000000000000068037790a0229e9ce6eaa8a99ea92964106c470300000000000000000000000000000000000000000000010f0cf064dd592000000000000000000000000000000000000000000000000000000000000145dc1b2e00000000000000000000000000000000000000000000000000000001477f4d7d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000064d281e65c9438a5a99c4bccb1035296d5d2d8d200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000320000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002b68037790a0229e9ce6eaa8a99ea92964106c47030001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a730000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000060000000000000000000000001b81d678ffb9c0263b24a97847620c99d213eb14000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000064dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
              output: >-
                0x08c379a000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000011446561646c696e65206272656163686564000000000000000000000000000000
              gas_in: 612591
              gas_cost: 603060
              errorMessage: value:"Deadline breached"
        simulation:
          id: 1c08db12-8f6b-4377-95ef-2c0b99298de8
          project_id: dfdc391a-a15d-4590-9aef-8691259c7df4
          owner_id: 7d5e8b1f-8bf8-4eae-a70f-fb7d354b1cc2
          network_id: '1'
          block_number: 17884583
          transaction_index: 0
          from: '0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df'
          to: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
          input: >-
            0xa94e78ef000000000000000000000000000000000000000000000000000000000000002000000000000000000000000068037790a0229e9ce6eaa8a99ea92964106c470300000000000000000000000000000000000000000000010f0cf064dd592000000000000000000000000000000000000000000000000000000000000145dc1b2e00000000000000000000000000000000000000000000000000000001477f4d7d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000064d281e65c9438a5a99c4bccb1035296d5d2d8d200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000320000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002b68037790a0229e9ce6eaa8a99ea92964106c47030001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a730000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000060000000000000000000000001b81d678ffb9c0263b24a97847620c99d213eb14000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000064dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
          gas: 648318
          gas_price: '0'
          gas_used: 45065
          value: '0'
          method: multiSwap
          status: false
          access_list: null
          queue_origin: ''
          block_header:
            number: '0x110e5a7'
            hash: '0x0000000000000000000000000000000000000000000000000000000000000000'
            stateRoot: '0x5aedfee941729c66fab3bc35cc00a8687d4c8f177e800565fa3895fee02a8d12'
            parentHash: '0x9075514cb7db4dc5c7f25b7b53bdee3ea51b3088eb94a5551668f49d5fd7bdc9'
            sha3Uncles: '0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347'
            transactionsRoot: '0x3f3e3bac2d1a65adabe655196f48341105a8c21600b5d1dcd0f95ad6baf91d11'
            receiptsRoot: '0xb129fa08d3abb39c49b4e65f1edf7efc0d3d5ddf6b84ff802b43eb2b29e9b046'
            logsBloom: >-
              0x74717005272adbead19e3886a21a471915102405ca59280ca44b9062f41101c5e441130e920943f04203fb604087c1b12293878b8c5b381213d09c35c12cc09046c0e4af0174382b7952554bf1f820ec0ff34a2c0560597035187563c6e023501ac2c8a2129384ab01a13c0015b43cdd7a0b03c200148d6d57861cb000a810560e11925caa60b13b60f5614117b606c68907e5859bc0903c643127dbc5900e2c831408093b4a209b1e40cec85cf20d07a4919a40b539994611a185ab00280022f39a08d67104014a096fa60a493a80da0f6e8a22412fb0ba6884429e1033a31cd8bce468d10c7d8a82663785a120c4408b2112604a101a5fa8891290302b970d
            timestamp: '0x64d4dc8b'
            difficulty: '0x0'
            gasLimit: '0x1c9c380'
            gasUsed: '0x9d2881'
            miner: '0x95222290dd7278aa3ddd389cc1e1d165cc4bafe5'
            extraData: '0x6265617665726275696c642e6f7267'
            mixHash: '0xcd3023878e91294b673f69b51e3ed64e814f6caabb795a93caadb34cc39a8ff3'
            nonce: '0x0000000000000000'
            baseFeePerGas: '0x4d0b44e27'
            size: '0x0'
            totalDifficulty: '0x0'
            uncles: null
            transactions: null
          deposit_tx: false
          system_tx: false
          error_message: Deadline breached
          nonce: 1094
          addresses:
            - '0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df'
            - '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
            - '0xbd7b550d2e7571383d84acf597a00d341e5c406e'
          contract_ids:
            - eth:1:0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df
            - eth:1:0xdef171fe48cf0115b1d80b88dc8eab59176fee57
            - eth:1:0xbd7b550d2e7571383d84acf597a00d341e5c406e
          shared: false
          created_at: '2023-12-20T14:03:57.3212051Z'
        contracts:
          - id: eth:1:0xbd7b550d2e7571383d84acf597a00d341e5c406e
            contract_id: eth:1:0xbd7b550d2e7571383d84acf597a00d341e5c406e
            balance: ''
            network_id: '1'
            public: true
            verified_by: etherscan
            verification_date: '2023-06-13T17:26:37Z'
            address: '0xbd7b550d2e7571383d84acf597a00d341e5c406e'
            contract_name: MultiPath
            ens_domain: null
            type: contract
            evm_version: ''
            compiler_version: v0.7.5+commit.eb77ed08
            optimizations_used: false
            optimization_runs: 0
            libraries: null
            compiler_settings: {}
            deployed_bytecode: >-
              0x6080604052600436106100c75760003560e01c806381cbd3ea11610074578063c25ff0261161004e578063c25ff026146101b3578063d555d4f9146101c8578063d830a05b146101dd576100c7565b806381cbd3ea1461016957806382678dd61461018b578063a94e78ef146101a0576100c7565b8063439fab91116100a5578063439fab911461011f57806346c67b6d146101415780637a3226ec14610154576100c7565b806312070a41146100cc57806330d643b5146100f7578063353269101461010c575b600080fd5b3480156100d857600080fd5b506100e16101f2565b6040516100ee9190612fb2565b60405180910390f35b34801561010357600080fd5b506100e1610216565b6100e161011a366004612a0e565b61023a565b34801561012b57600080fd5b5061013f61013a3660046129a1565b610560565b005b6100e161014f366004612b44565b610592565b34801561016057600080fd5b506100e161097e565b34801561017557600080fd5b5061017e6109a2565b6040516100ee9190612dff565b34801561019757600080fd5b506100e16109c6565b6100e16101ae366004612c47565b6109f2565b3480156101bf57600080fd5b506100e1610ba3565b3480156101d457600080fd5b506100e1610bc7565b3480156101e957600080fd5b506100e1610beb565b7f000000000000000000000000000000000000000000000000000000000000213481565b7f7a05a596cb0ce7fdea8a1e1ec73be300bdb35097c944ce1897202f7a13122eb281565b6000428261016001511015610284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b9061321a565b60405180910390fd5b60208201516060830151610296610c0f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146102cf5760006102d1565b805b3414610309576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b90613186565b608084015160c085015160009073ffffffffffffffffffffffffffffffffffffffff161561033b578560c0015161033d565b335b604087015160a0880151610120890151929350909184610389576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b90613251565b61039987878b6101400151610c27565b60006103b18a6000015189868a8a8f60e00151610cff565b905060006103bf8930611047565b90506103d58b61010001518c6101200151611144565b158015906103e957506103e7836111da565b155b801561040057506103fe8b61012001516111f4565b155b15610427576104178583888e6101000151876111fe565b61042289338361123e565b6104b2565b61043285878461123e565b6104468b61010001518c6101200151611144565b158015906104585750610458836111da565b15610478576104228961046b8a84611345565b838e6101000151876113bc565b836104838983611345565b10156104a7576101008b0151610422908a90866104a08c86611345565b8588611407565b6104b289338361123e565b6104bc8882611345565b97508473ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f4cc7e95e48af62690313a0733e93308ac9a73326bc3c29f1788b1191c376d5b68e61018001518f610100015188338f8a8d6040516105489796959493929190612f42565b60405180910390a4509750505050505050505b919050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b90613118565b60004282610120015110156105d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b9061321a565b815160208301516105e2610c0f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461061b57600061061d565b805b3414610655576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b90613186565b60408401516060850151608086015160009073ffffffffffffffffffffffffffffffffffffffff161561068c57866080015161068e565b335b905060608760a0015190506000816000815181106106a857fe5b6020026020010151602001516001836000815181106106c357fe5b6020026020010151602001515103815181106106db57fe5b602002602001015160000151905060008511610723576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b90613251565b61073387878b6101000151610c27565b6107408960e001516111da565b1561075c5761075987878b60c001518c60e001516114cb565b95505b60005b825160ff168160ff1610156107f55760006107a96127106107a3868560ff168151811061078857fe5b6020026020010151600001518b61151290919063ffffffff16565b90611585565b905060018451038260ff1614156107c7576107c48930611047565b90505b6107ec8982868560ff16815181106107db57fe5b602002602001015160200151611606565b5060010161075f565b5060006108028230611047565b90508581101561083e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b906131bd565b6108508a60c001518b60e00151611144565b1580159061086857506108668a60e001516111da565b155b801561087e575061087c8a60e001516111f4565b155b1561089d576108988282868d60c001518e60e001516111fe565b6108dc565b84811180156108b657506108b48a60e001516111da565b155b156108d15761089882858c60c0015184898f60e001516119c7565b6108dc82858361123e565b8173ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fe00361d207b252a464323eb23d45d42583e391f2031acdd2e9fa36efddd43cb08d61014001518e60c001518f60e00151338e898e6040516109699796959493929190612f42565b60405180910390a49998505050505050505050565b7f8429d542926e6695b59ac6fbdcd9b37e8b1aeb757afab06ab60b1bb5878c3b4981565b7f000000000000000000000000ef13101c5bbd737cfb2bf00bbd38c626ad6952f781565b60006040516020016109d790612dad565b60405160208183030381529060405280519060200120905090565b6000428261012001511015610a33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b9061321a565b81516020830151610a42610c0f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610a7b576000610a7d565b805b3414610ab5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b90613186565b60408401516060850151608086015160009073ffffffffffffffffffffffffffffffffffffffff1615610aec578660800151610aee565b335b905060608760a001519050600081600183510381518110610b0b57fe5b602002602001015160000151905060008511610b53576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b90613251565b610b6387878b6101000151610c27565b610b708960e001516111da565b15610b8c57610b8987878b60c001518c60e001516114cb565b95505b610b97878784611606565b60006108028230611047565b7f000000000000000000000000000000000000000000000000000000000000271081565b7f000000000000000000000000000000000000000000000000000000000000138881565b7f00000000000000000000000000000000000000000000000000000000000001f481565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90565b610c2f610c0f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610cfa57610c6b8382611a8b565b6000546040517f15dacbea00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906315dacbea90610cc7908690339030908890600401612e20565b600060405180830381600087803b158015610ce157600080fd5b505af1158015610cf5573d6000803e3d6000fd5b505050505b505050565b6040517f91d1485400000000000000000000000000000000000000000000000000000000815260009030906391d1485490610d60907f8429d542926e6695b59ac6fbdcd9b37e8b1aeb757afab06ab60b1bb5878c3b49908b90600401612fbb565b60206040518083038186803b158015610d7857600080fd5b505afa158015610d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db09190612981565b610de6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b906130e1565b60005b8251811015610ff357610dfa612468565b838281518110610e0657fe5b60200260200101519050600080610e286001875161134590919063ffffffff16565b841415610e5657610e43610e3c8a30611047565b8890611345565b9050610e4f8a30611047565b9150610e95565b610e736127106107a385604001518b61151290919063ffffffff16565b9150610e926127106107a385604001518a61151290919063ffffffff16565b90505b60008b73ffffffffffffffffffffffffffffffffffffffff166325deee1e60e01b85600001518d8d87878a602001518b60600151604051602401610edf9796959493929190613288565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051610f689190612d91565b600060405180830381855af49150503d8060008114610fa3576040519150601f19603f3d011682016040523d82523d6000602084013e610fa8565b606091505b5050905080610fe3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b9061314f565b505060019092019150610de99050565b5060006110008630611047565b90508381101561103c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b90613016565b979650505050505050565b600073ffffffffffffffffffffffffffffffffffffffff831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415611099575073ffffffffffffffffffffffffffffffffffffffff81163161113e565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416906370a08231906110eb908590600401612dff565b60206040518083038186803b15801561110357600080fd5b505afa158015611117573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113b9190612ce7565b90505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff83166111695750600061113e565b60f882901c8061117b57829150611183565b82613fff1691505b7f00000000000000000000000000000000000000000000000000000000000001f482116111b057816111d2565b7f00000000000000000000000000000000000000000000000000000000000001f45b949350505050565b600060f882901c1580159061113e57505061800016151590565b6201000016151590565b600061120a8383611144565b90506000806112198784611c76565b91509150611234888761122f8a8c8a8888611cd2565b61123e565b5050505050505050565b8015610cfa5773ffffffffffffffffffffffffffffffffffffffff831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156113245760008273ffffffffffffffffffffffffffffffffffffffff1682612710906040516112a090612dfc565b600060405180830381858888f193505050503d80600081146112de576040519150601f19603f3d011682016040523d82523d6000602084013e6112e3565b606091505b505090508061131e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b90612fdf565b50610cfa565b610cfa73ffffffffffffffffffffffffffffffffffffffff84168383611f1b565b6000828211156113b657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60006113c88383611144565b90506000806113d78784611c76565b9092509050856113e78383611fa8565b116113fc576113f98689878585611cd2565b95505b61123488338861123e565b60006114138585611345565b905073ffffffffffffffffffffffffffffffffffffffff8616156114585760008061143e838561201c565b9150915061144f858a8a8585611cd2565b945050506114c0565b600061148a6127106107a3847f0000000000000000000000000000000000000000000000000000000000002710611512565b6001549091506114b290899073ffffffffffffffffffffffffffffffffffffffff168361123e565b6114bc8482611345565b9350505b610cf587338561123e565b6000806114d88484611144565b9050806114e857849150506111d2565b6000806114f58784611c76565b915091506115068789888585611cd2565b98975050505050505050565b6000826115215750600061113e565b8282028284828161152e57fe5b041461113b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806133a26021913960400191505060405180910390fd5b60008082116115f557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b8183816115fe57fe5b049392505050565b6000815111611641576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b906130aa565b60005b81518110156119c157600080821161165c5784611678565b82600183038151811061166b57fe5b6020026020010151600001515b9050600083838151811061168857fe5b602002602001015160000151905060008084116116a557856116af565b6116af8330611047565b905060005b8585815181106116c057fe5b602002602001015160400151518110156119b1576116dc6124ad565b8686815181106116e857fe5b60200260200101516040015182815181106116ff57fe5b602090810291909101015180516040517f91d1485400000000000000000000000000000000000000000000000000000000815291925030916391d148549161176c917f8429d542926e6695b59ac6fbdcd9b37e8b1aeb757afab06ab60b1bb5878c3b499190600401612fbb565b60206040518083038186803b15801561178457600080fd5b505afa158015611798573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117bc9190612981565b6117f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b906130e1565b6000808711801561182d575061182a600189898151811061180f57fe5b6020026020010151604001515161134590919063ffffffff16565b83145b6118535761184e6127106107a384602001518761151290919063ffffffff16565b61185d565b61185d8630611047565b90506000826000015173ffffffffffffffffffffffffffffffffffffffff1663e76b146c60e01b888885600088606001516040516024016118a2959493929190612e57565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161192b9190612d91565b600060405180830381855af49150503d8060008114611966576040519150601f19603f3d011682016040523d82523d6000602084013e61196b565b606091505b50509050806119a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b9061314f565b5050506001016116b4565b5050600190920191506116449050565b50505050565b60006119d38484611345565b905073ffffffffffffffffffffffffffffffffffffffff851615611a18576000806119fe838561201c565b91509150611a0f868a898585611cd2565b95505050611a80565b6000611a4a6127106107a3847f0000000000000000000000000000000000000000000000000000000000002710611512565b600154909150611a7290899073ffffffffffffffffffffffffffffffffffffffff168361123e565b611a7c8582611345565b9450505b610cf587878661123e565b805160e01415611b7f5760008273ffffffffffffffffffffffffffffffffffffffff1663d505accf60e01b83604051602001611ac8929190612d49565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611b0091612d91565b6000604051808303816000865af19150503d8060008114611b3d576040519150601f19603f3d011682016040523d82523d6000602084013e611b42565b606091505b5050905080611b7d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b90613073565b505b80516101001415611c725760008273ffffffffffffffffffffffffffffffffffffffff16638fcbaf0c60e01b83604051602001611bbd929190612d49565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611bf591612d91565b6000604051808303816000865af19150503d8060008114611c32576040519150601f19603f3d011682016040523d82523d6000602084013e611c37565b606091505b5050905080610cfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b90613073565b5050565b60008080611c8a6127106107a38787611512565b9050611cbc6127106107a3837f0000000000000000000000000000000000000000000000000000000000002134611512565b9250611cc88184611345565b9150509250929050565b600080611cdf8484611fa8565b905080611cef5786915050611f12565b86811115611d48576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806133c36024913960400191505060405180910390fd5b611d73867f000000000000000000000000ef13101c5bbd737cfb2bf00bbd38c626ad6952f78361123e565b8315611e41577f000000000000000000000000ef13101c5bbd737cfb2bf00bbd38c626ad6952f773ffffffffffffffffffffffffffffffffffffffff1663d1f4354b8688876040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015611e2857600080fd5b505af1158015611e3c573d6000803e3d6000fd5b505050505b8215611f0457600154604080517fd1f4354b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015288831660248201526044810186905290517f000000000000000000000000ef13101c5bbd737cfb2bf00bbd38c626ad6952f79092169163d1f4354b9160648082019260009290919082900301818387803b158015611eeb57600080fd5b505af1158015611eff573d6000803e3d6000fd5b505050505b611f0e8782611345565b9150505b95945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610cfa908490612103565b60008282018381101561113b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600080613fff83166127107f0000000000000000000000000000000000000000000000000000000000001388820111156120b757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496e76616c6964206665652070657263656e7400000000000000000000000000604482015290519081900360640190fd5b6120e76127106107a3877f0000000000000000000000000000000000000000000000000000000000001388611512565b91506120f96127106107a38784611512565b9250509250929050565b6060612165826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166121db9092919063ffffffff16565b805190915015610cfa5780806020019051602081101561218457600080fd5b5051610cfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806133e7602a913960400191505060405180910390fd5b60606121ea84846000856121f4565b90505b9392505050565b60608247101561224f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061337c6026913960400191505060405180910390fd5b612258856123a4565b6122c357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b6020831061232d57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016122f0565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461238f576040519150601f19603f3d011682016040523d82523d6000602084013e612394565b606091505b509150915061103c8282866123aa565b3b151590565b606083156123b95750816121ed565b8251156123c95782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561242d578181015183820152602001612415565b50505050905090810190601f16801561245a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6040518060a0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160608152602001600081525090565b6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001606081525090565b803561055b81613356565b600082601f830112612506578081fd5b81356125196125148261330c565b6132e8565b818152915060208083019084810160005b848110156125c857813587016040807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0838c0301121561256957600080fd5b805181810167ffffffffffffffff828210818311171561258557fe5b8184528488013583529284013592808411156125a057600080fd5b50506125b08b87848601016125d3565b8187015286525050928201929082019060010161252a565b505050505092915050565b600082601f8301126125e3578081fd5b6125f0612514833561330c565b823581529050602080820190830160005b84358110156127cc578135850160607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082890301121561264057600080fd5b60405180606082011067ffffffffffffffff6060830111171561265f57fe5b606081016040526126736020830135613356565b602082013581526040820135602082015267ffffffffffffffff6060830135111561269d57600080fd5b60608201358201915087603f8301126126b557600080fd5b6126c5612514602084013561330c565b60208381013582528101906040840160005b60208601358110156127ae578135860160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0828f0301121561271957600080fd5b60405180608082011067ffffffffffffffff6080830111171561273857fe5b6080810160405261274c6040830135613356565b60408201358152606082013560208201526080820135604082015267ffffffffffffffff60a0830135111561278057600080fd5b6127938e604060a08501358501016127d5565b606082015285525060209384019391909101906001016126d7565b50506040830152508452506020928301929190910190600101612601565b50505092915050565b600082601f8301126127e5578081fd5b81356127f36125148261330c565b818152915060208083019084810160005b848110156125c8578135870160a0807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0838c0301121561284357600080fd5b6040805182810167ffffffffffffffff828210818311171561286157fe5b8184528886013583526128758487016124eb565b8984015260609150818601358484015260809350838601358181111561289a57600080fd5b6128a88f8b838a01016128fc565b92840192909252505092909101359082015284529282019290820190600101612804565b80357fffffffffffffffffffffffffffffffff000000000000000000000000000000008116811461055b57600080fd5b600082601f83011261290c578081fd5b813567ffffffffffffffff81111561292057fe5b61295160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016132e8565b915080825283602082850101111561296857600080fd5b8060208401602084013760009082016020015292915050565b600060208284031215612992578081fd5b8151801515811461113b578182fd5b600080602083850312156129b3578081fd5b823567ffffffffffffffff808211156129ca578283fd5b818501915085601f8301126129dd578283fd5b8135818111156129eb578384fd5b8660208285010111156129fc578384fd5b60209290920196919550909350505050565b600060208284031215612a1f578081fd5b813567ffffffffffffffff80821115612a36578283fd5b81840191506101a0808387031215612a4c578384fd5b612a55816132e8565b9050612a60836124eb565b8152612a6e602084016124eb565b6020820152612a7f604084016124eb565b6040820152606083013560608201526080830135608082015260a083013560a0820152612aae60c084016124eb565b60c082015260e083013582811115612ac4578485fd5b612ad0878286016127d5565b60e083015250610100612ae48185016124eb565b9082015261012083810135908201526101408084013583811115612b06578586fd5b612b12888287016128fc565b828401525050610160915081830135828201526101809150612b358284016128cc565b91810191909152949350505050565b600060208284031215612b55578081fd5b813567ffffffffffffffff80821115612b6c578283fd5b8184019150610160808387031215612b82578384fd5b612b8b816132e8565b9050612b96836124eb565b8152602083013560208201526040830135604082015260608301356060820152612bc2608084016124eb565b608082015260a083013582811115612bd8578485fd5b612be4878286016124f6565b60a083015250612bf660c084016124eb565b60c082015260e083013560e08201526101008084013583811115612c18578586fd5b612c24888287016128fc565b828401525050610120915081830135828201526101409150612b358284016128cc565b600060208284031215612c58578081fd5b813567ffffffffffffffff80821115612c6f578283fd5b8184019150610160808387031215612c85578384fd5b612c8e816132e8565b9050612c99836124eb565b8152602083013560208201526040830135604082015260608301356060820152612cc5608084016124eb565b608082015260a083013582811115612cdb578485fd5b612be4878286016125d3565b600060208284031215612cf8578081fd5b5051919050565b60008151808452612d1781602086016020860161332a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60007fffffffff00000000000000000000000000000000000000000000000000000000841682528251612d8381600485016020870161332a565b919091016004019392505050565b60008251612da381846020870161332a565b9190910192915050565b7f4d554c5449504154485f524f555445520000000000000000000000000000000081527f312e302e30000000000000000000000000000000000000000000000000000000601082015260150190565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9485168152928416602084015292166040820152606081019190915260800190565b600060a080830173ffffffffffffffffffffffffffffffffffffffff808a1685526020818a16818701526040898188015260608981890152608086818a0152858a5180885260c08b01915060c08682028c01019750858c018a5b82811015612f2a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408d8b03018452815180518b52898982015116898c015287810151888c0152868101518c888d0152612f0d8d8d0182612cff565b918701519b87019b909b5299509287019290870190600101612eb1565b50505050505050505080925050509695505050505050565b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000097909716875273ffffffffffffffffffffffffffffffffffffffff95861660208801526040870194909452919093166060850152608084019290925260a083019190915260c082015260e00190565b90815260200190565b91825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b60208082526018908201527f4661696c656420746f207472616e736665722045746865720000000000000000604082015260600190565b60208082526037908201527f526563656976656420616d6f756e74206f6620746f6b656e7320617265206c6560408201527f7373207468656e20657870656374656420746f6b656e73000000000000000000606082015260800190565b6020808252600d908201527f5065726d6974206661696c656400000000000000000000000000000000000000604082015260600190565b6020808252601a908201527f50617468206e6f742070726f766964656420666f722073776170000000000000604082015260600190565b60208082526018908201527f45786368616e6765206e6f742077686974656c69737465640000000000000000604082015260600190565b60208082526016908201527f4d4554484f44204e4f5420494d504c454d454e54454400000000000000000000604082015260600190565b60208082526016908201527f43616c6c20746f2061646170746572206661696c656400000000000000000000604082015260600190565b60208082526013908201527f496e636f7272656374206d73672e76616c756500000000000000000000000000604082015260600190565b60208082526030908201527f526563656976656420616d6f756e74206f6620746f6b656e7320617265206c6560408201527f7373207468656e20657870656374656400000000000000000000000000000000606082015260800190565b60208082526011908201527f446561646c696e65206272656163686564000000000000000000000000000000604082015260600190565b60208082526016908201527f546f20616d6f756e742063616e206e6f74206265203000000000000000000000604082015260600190565b600088825273ffffffffffffffffffffffffffffffffffffffff8089166020840152808816604084015286606084015285608084015280851660a08401525060e060c08301526132db60e0830184612cff565b9998505050505050505050565b60405181810167ffffffffffffffff8111828210171561330457fe5b604052919050565b600067ffffffffffffffff82111561332057fe5b5060209081020190565b60005b8381101561334557818101518382015260200161332d565b838111156119c15750506000910152565b73ffffffffffffffffffffffffffffffffffffffff8116811461337857600080fd5b5056fe416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77496e73756666696369656e742062616c616e636520746f2070617920666f7220666565735361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a164736f6c6343000705000a
            creation_bytecode: >-
              0x6101206040523480156200001257600080fd5b506040516200354b3803806200354b83398101604081905262000035916200005e565b60809490945260a09290925260c05260e05260601b6001600160601b03191661010052620000b9565b600080600080600060a0868803121562000076578081fd5b855160208701516040880151606089015160808a0151939850919650945092506001600160a01b0381168114620000ab578182fd5b809150509295509295909350565b60805160a05160c05160e0516101005160601c61341d6200012e600039806109a45280611d4e5280611d7b5280611ea1525080610ba552806114665280611a26525080610bc9528061202952806120c3525080610bed528061118552806111b25250806101f45280611c98525061341d6000f3fe6080604052600436106100c75760003560e01c806381cbd3ea11610074578063c25ff0261161004e578063c25ff026146101b3578063d555d4f9146101c8578063d830a05b146101dd576100c7565b806381cbd3ea1461016957806382678dd61461018b578063a94e78ef146101a0576100c7565b8063439fab91116100a5578063439fab911461011f57806346c67b6d146101415780637a3226ec14610154576100c7565b806312070a41146100cc57806330d643b5146100f7578063353269101461010c575b600080fd5b3480156100d857600080fd5b506100e16101f2565b6040516100ee9190612fb2565b60405180910390f35b34801561010357600080fd5b506100e1610216565b6100e161011a366004612a0e565b61023a565b34801561012b57600080fd5b5061013f61013a3660046129a1565b610560565b005b6100e161014f366004612b44565b610592565b34801561016057600080fd5b506100e161097e565b34801561017557600080fd5b5061017e6109a2565b6040516100ee9190612dff565b34801561019757600080fd5b506100e16109c6565b6100e16101ae366004612c47565b6109f2565b3480156101bf57600080fd5b506100e1610ba3565b3480156101d457600080fd5b506100e1610bc7565b3480156101e957600080fd5b506100e1610beb565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f7a05a596cb0ce7fdea8a1e1ec73be300bdb35097c944ce1897202f7a13122eb281565b6000428261016001511015610284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b9061321a565b60405180910390fd5b60208201516060830151610296610c0f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146102cf5760006102d1565b805b3414610309576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b90613186565b608084015160c085015160009073ffffffffffffffffffffffffffffffffffffffff161561033b578560c0015161033d565b335b604087015160a0880151610120890151929350909184610389576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b90613251565b61039987878b6101400151610c27565b60006103b18a6000015189868a8a8f60e00151610cff565b905060006103bf8930611047565b90506103d58b61010001518c6101200151611144565b158015906103e957506103e7836111da565b155b801561040057506103fe8b61012001516111f4565b155b15610427576104178583888e6101000151876111fe565b61042289338361123e565b6104b2565b61043285878461123e565b6104468b61010001518c6101200151611144565b158015906104585750610458836111da565b15610478576104228961046b8a84611345565b838e6101000151876113bc565b836104838983611345565b10156104a7576101008b0151610422908a90866104a08c86611345565b8588611407565b6104b289338361123e565b6104bc8882611345565b97508473ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f4cc7e95e48af62690313a0733e93308ac9a73326bc3c29f1788b1191c376d5b68e61018001518f610100015188338f8a8d6040516105489796959493929190612f42565b60405180910390a4509750505050505050505b919050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b90613118565b60004282610120015110156105d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b9061321a565b815160208301516105e2610c0f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461061b57600061061d565b805b3414610655576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b90613186565b60408401516060850151608086015160009073ffffffffffffffffffffffffffffffffffffffff161561068c57866080015161068e565b335b905060608760a0015190506000816000815181106106a857fe5b6020026020010151602001516001836000815181106106c357fe5b6020026020010151602001515103815181106106db57fe5b602002602001015160000151905060008511610723576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b90613251565b61073387878b6101000151610c27565b6107408960e001516111da565b1561075c5761075987878b60c001518c60e001516114cb565b95505b60005b825160ff168160ff1610156107f55760006107a96127106107a3868560ff168151811061078857fe5b6020026020010151600001518b61151290919063ffffffff16565b90611585565b905060018451038260ff1614156107c7576107c48930611047565b90505b6107ec8982868560ff16815181106107db57fe5b602002602001015160200151611606565b5060010161075f565b5060006108028230611047565b90508581101561083e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b906131bd565b6108508a60c001518b60e00151611144565b1580159061086857506108668a60e001516111da565b155b801561087e575061087c8a60e001516111f4565b155b1561089d576108988282868d60c001518e60e001516111fe565b6108dc565b84811180156108b657506108b48a60e001516111da565b155b156108d15761089882858c60c0015184898f60e001516119c7565b6108dc82858361123e565b8173ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fe00361d207b252a464323eb23d45d42583e391f2031acdd2e9fa36efddd43cb08d61014001518e60c001518f60e00151338e898e6040516109699796959493929190612f42565b60405180910390a49998505050505050505050565b7f8429d542926e6695b59ac6fbdcd9b37e8b1aeb757afab06ab60b1bb5878c3b4981565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006040516020016109d790612dad565b60405160208183030381529060405280519060200120905090565b6000428261012001511015610a33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b9061321a565b81516020830151610a42610c0f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610a7b576000610a7d565b805b3414610ab5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b90613186565b60408401516060850151608086015160009073ffffffffffffffffffffffffffffffffffffffff1615610aec578660800151610aee565b335b905060608760a001519050600081600183510381518110610b0b57fe5b602002602001015160000151905060008511610b53576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b90613251565b610b6387878b6101000151610c27565b610b708960e001516111da565b15610b8c57610b8987878b60c001518c60e001516114cb565b95505b610b97878784611606565b60006108028230611047565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90565b610c2f610c0f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610cfa57610c6b8382611a8b565b6000546040517f15dacbea00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906315dacbea90610cc7908690339030908890600401612e20565b600060405180830381600087803b158015610ce157600080fd5b505af1158015610cf5573d6000803e3d6000fd5b505050505b505050565b6040517f91d1485400000000000000000000000000000000000000000000000000000000815260009030906391d1485490610d60907f8429d542926e6695b59ac6fbdcd9b37e8b1aeb757afab06ab60b1bb5878c3b49908b90600401612fbb565b60206040518083038186803b158015610d7857600080fd5b505afa158015610d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db09190612981565b610de6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b906130e1565b60005b8251811015610ff357610dfa612468565b838281518110610e0657fe5b60200260200101519050600080610e286001875161134590919063ffffffff16565b841415610e5657610e43610e3c8a30611047565b8890611345565b9050610e4f8a30611047565b9150610e95565b610e736127106107a385604001518b61151290919063ffffffff16565b9150610e926127106107a385604001518a61151290919063ffffffff16565b90505b60008b73ffffffffffffffffffffffffffffffffffffffff166325deee1e60e01b85600001518d8d87878a602001518b60600151604051602401610edf9796959493929190613288565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051610f689190612d91565b600060405180830381855af49150503d8060008114610fa3576040519150601f19603f3d011682016040523d82523d6000602084013e610fa8565b606091505b5050905080610fe3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b9061314f565b505060019092019150610de99050565b5060006110008630611047565b90508381101561103c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b90613016565b979650505050505050565b600073ffffffffffffffffffffffffffffffffffffffff831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415611099575073ffffffffffffffffffffffffffffffffffffffff81163161113e565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416906370a08231906110eb908590600401612dff565b60206040518083038186803b15801561110357600080fd5b505afa158015611117573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113b9190612ce7565b90505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff83166111695750600061113e565b60f882901c8061117b57829150611183565b82613fff1691505b7f000000000000000000000000000000000000000000000000000000000000000082116111b057816111d2565b7f00000000000000000000000000000000000000000000000000000000000000005b949350505050565b600060f882901c1580159061113e57505061800016151590565b6201000016151590565b600061120a8383611144565b90506000806112198784611c76565b91509150611234888761122f8a8c8a8888611cd2565b61123e565b5050505050505050565b8015610cfa5773ffffffffffffffffffffffffffffffffffffffff831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156113245760008273ffffffffffffffffffffffffffffffffffffffff1682612710906040516112a090612dfc565b600060405180830381858888f193505050503d80600081146112de576040519150601f19603f3d011682016040523d82523d6000602084013e6112e3565b606091505b505090508061131e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b90612fdf565b50610cfa565b610cfa73ffffffffffffffffffffffffffffffffffffffff84168383611f1b565b6000828211156113b657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60006113c88383611144565b90506000806113d78784611c76565b9092509050856113e78383611fa8565b116113fc576113f98689878585611cd2565b95505b61123488338861123e565b60006114138585611345565b905073ffffffffffffffffffffffffffffffffffffffff8616156114585760008061143e838561201c565b9150915061144f858a8a8585611cd2565b945050506114c0565b600061148a6127106107a3847f0000000000000000000000000000000000000000000000000000000000000000611512565b6001549091506114b290899073ffffffffffffffffffffffffffffffffffffffff168361123e565b6114bc8482611345565b9350505b610cf587338561123e565b6000806114d88484611144565b9050806114e857849150506111d2565b6000806114f58784611c76565b915091506115068789888585611cd2565b98975050505050505050565b6000826115215750600061113e565b8282028284828161152e57fe5b041461113b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806133a26021913960400191505060405180910390fd5b60008082116115f557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b8183816115fe57fe5b049392505050565b6000815111611641576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b906130aa565b60005b81518110156119c157600080821161165c5784611678565b82600183038151811061166b57fe5b6020026020010151600001515b9050600083838151811061168857fe5b602002602001015160000151905060008084116116a557856116af565b6116af8330611047565b905060005b8585815181106116c057fe5b602002602001015160400151518110156119b1576116dc6124ad565b8686815181106116e857fe5b60200260200101516040015182815181106116ff57fe5b602090810291909101015180516040517f91d1485400000000000000000000000000000000000000000000000000000000815291925030916391d148549161176c917f8429d542926e6695b59ac6fbdcd9b37e8b1aeb757afab06ab60b1bb5878c3b499190600401612fbb565b60206040518083038186803b15801561178457600080fd5b505afa158015611798573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117bc9190612981565b6117f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b906130e1565b6000808711801561182d575061182a600189898151811061180f57fe5b6020026020010151604001515161134590919063ffffffff16565b83145b6118535761184e6127106107a384602001518761151290919063ffffffff16565b61185d565b61185d8630611047565b90506000826000015173ffffffffffffffffffffffffffffffffffffffff1663e76b146c60e01b888885600088606001516040516024016118a2959493929190612e57565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161192b9190612d91565b600060405180830381855af49150503d8060008114611966576040519150601f19603f3d011682016040523d82523d6000602084013e61196b565b606091505b50509050806119a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b9061314f565b5050506001016116b4565b5050600190920191506116449050565b50505050565b60006119d38484611345565b905073ffffffffffffffffffffffffffffffffffffffff851615611a18576000806119fe838561201c565b91509150611a0f868a898585611cd2565b95505050611a80565b6000611a4a6127106107a3847f0000000000000000000000000000000000000000000000000000000000000000611512565b600154909150611a7290899073ffffffffffffffffffffffffffffffffffffffff168361123e565b611a7c8582611345565b9450505b610cf587878661123e565b805160e01415611b7f5760008273ffffffffffffffffffffffffffffffffffffffff1663d505accf60e01b83604051602001611ac8929190612d49565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611b0091612d91565b6000604051808303816000865af19150503d8060008114611b3d576040519150601f19603f3d011682016040523d82523d6000602084013e611b42565b606091505b5050905080611b7d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b90613073565b505b80516101001415611c725760008273ffffffffffffffffffffffffffffffffffffffff16638fcbaf0c60e01b83604051602001611bbd929190612d49565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611bf591612d91565b6000604051808303816000865af19150503d8060008114611c32576040519150601f19603f3d011682016040523d82523d6000602084013e611c37565b606091505b5050905080610cfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b90613073565b5050565b60008080611c8a6127106107a38787611512565b9050611cbc6127106107a3837f0000000000000000000000000000000000000000000000000000000000000000611512565b9250611cc88184611345565b9150509250929050565b600080611cdf8484611fa8565b905080611cef5786915050611f12565b86811115611d48576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806133c36024913960400191505060405180910390fd5b611d73867f00000000000000000000000000000000000000000000000000000000000000008361123e565b8315611e41577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d1f4354b8688876040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015611e2857600080fd5b505af1158015611e3c573d6000803e3d6000fd5b505050505b8215611f0457600154604080517fd1f4354b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015288831660248201526044810186905290517f00000000000000000000000000000000000000000000000000000000000000009092169163d1f4354b9160648082019260009290919082900301818387803b158015611eeb57600080fd5b505af1158015611eff573d6000803e3d6000fd5b505050505b611f0e8782611345565b9150505b95945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610cfa908490612103565b60008282018381101561113b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600080613fff83166127107f0000000000000000000000000000000000000000000000000000000000000000820111156120b757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496e76616c6964206665652070657263656e7400000000000000000000000000604482015290519081900360640190fd5b6120e76127106107a3877f0000000000000000000000000000000000000000000000000000000000000000611512565b91506120f96127106107a38784611512565b9250509250929050565b6060612165826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166121db9092919063ffffffff16565b805190915015610cfa5780806020019051602081101561218457600080fd5b5051610cfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806133e7602a913960400191505060405180910390fd5b60606121ea84846000856121f4565b90505b9392505050565b60608247101561224f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061337c6026913960400191505060405180910390fd5b612258856123a4565b6122c357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b6020831061232d57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016122f0565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461238f576040519150601f19603f3d011682016040523d82523d6000602084013e612394565b606091505b509150915061103c8282866123aa565b3b151590565b606083156123b95750816121ed565b8251156123c95782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561242d578181015183820152602001612415565b50505050905090810190601f16801561245a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6040518060a0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160608152602001600081525090565b6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001606081525090565b803561055b81613356565b600082601f830112612506578081fd5b81356125196125148261330c565b6132e8565b818152915060208083019084810160005b848110156125c857813587016040807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0838c0301121561256957600080fd5b805181810167ffffffffffffffff828210818311171561258557fe5b8184528488013583529284013592808411156125a057600080fd5b50506125b08b87848601016125d3565b8187015286525050928201929082019060010161252a565b505050505092915050565b600082601f8301126125e3578081fd5b6125f0612514833561330c565b823581529050602080820190830160005b84358110156127cc578135850160607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082890301121561264057600080fd5b60405180606082011067ffffffffffffffff6060830111171561265f57fe5b606081016040526126736020830135613356565b602082013581526040820135602082015267ffffffffffffffff6060830135111561269d57600080fd5b60608201358201915087603f8301126126b557600080fd5b6126c5612514602084013561330c565b60208381013582528101906040840160005b60208601358110156127ae578135860160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0828f0301121561271957600080fd5b60405180608082011067ffffffffffffffff6080830111171561273857fe5b6080810160405261274c6040830135613356565b60408201358152606082013560208201526080820135604082015267ffffffffffffffff60a0830135111561278057600080fd5b6127938e604060a08501358501016127d5565b606082015285525060209384019391909101906001016126d7565b50506040830152508452506020928301929190910190600101612601565b50505092915050565b600082601f8301126127e5578081fd5b81356127f36125148261330c565b818152915060208083019084810160005b848110156125c8578135870160a0807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0838c0301121561284357600080fd5b6040805182810167ffffffffffffffff828210818311171561286157fe5b8184528886013583526128758487016124eb565b8984015260609150818601358484015260809350838601358181111561289a57600080fd5b6128a88f8b838a01016128fc565b92840192909252505092909101359082015284529282019290820190600101612804565b80357fffffffffffffffffffffffffffffffff000000000000000000000000000000008116811461055b57600080fd5b600082601f83011261290c578081fd5b813567ffffffffffffffff81111561292057fe5b61295160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016132e8565b915080825283602082850101111561296857600080fd5b8060208401602084013760009082016020015292915050565b600060208284031215612992578081fd5b8151801515811461113b578182fd5b600080602083850312156129b3578081fd5b823567ffffffffffffffff808211156129ca578283fd5b818501915085601f8301126129dd578283fd5b8135818111156129eb578384fd5b8660208285010111156129fc578384fd5b60209290920196919550909350505050565b600060208284031215612a1f578081fd5b813567ffffffffffffffff80821115612a36578283fd5b81840191506101a0808387031215612a4c578384fd5b612a55816132e8565b9050612a60836124eb565b8152612a6e602084016124eb565b6020820152612a7f604084016124eb565b6040820152606083013560608201526080830135608082015260a083013560a0820152612aae60c084016124eb565b60c082015260e083013582811115612ac4578485fd5b612ad0878286016127d5565b60e083015250610100612ae48185016124eb565b9082015261012083810135908201526101408084013583811115612b06578586fd5b612b12888287016128fc565b828401525050610160915081830135828201526101809150612b358284016128cc565b91810191909152949350505050565b600060208284031215612b55578081fd5b813567ffffffffffffffff80821115612b6c578283fd5b8184019150610160808387031215612b82578384fd5b612b8b816132e8565b9050612b96836124eb565b8152602083013560208201526040830135604082015260608301356060820152612bc2608084016124eb565b608082015260a083013582811115612bd8578485fd5b612be4878286016124f6565b60a083015250612bf660c084016124eb565b60c082015260e083013560e08201526101008084013583811115612c18578586fd5b612c24888287016128fc565b828401525050610120915081830135828201526101409150612b358284016128cc565b600060208284031215612c58578081fd5b813567ffffffffffffffff80821115612c6f578283fd5b8184019150610160808387031215612c85578384fd5b612c8e816132e8565b9050612c99836124eb565b8152602083013560208201526040830135604082015260608301356060820152612cc5608084016124eb565b608082015260a083013582811115612cdb578485fd5b612be4878286016125d3565b600060208284031215612cf8578081fd5b5051919050565b60008151808452612d1781602086016020860161332a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60007fffffffff00000000000000000000000000000000000000000000000000000000841682528251612d8381600485016020870161332a565b919091016004019392505050565b60008251612da381846020870161332a565b9190910192915050565b7f4d554c5449504154485f524f555445520000000000000000000000000000000081527f312e302e30000000000000000000000000000000000000000000000000000000601082015260150190565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9485168152928416602084015292166040820152606081019190915260800190565b600060a080830173ffffffffffffffffffffffffffffffffffffffff808a1685526020818a16818701526040898188015260608981890152608086818a0152858a5180885260c08b01915060c08682028c01019750858c018a5b82811015612f2a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408d8b03018452815180518b52898982015116898c015287810151888c0152868101518c888d0152612f0d8d8d0182612cff565b918701519b87019b909b5299509287019290870190600101612eb1565b50505050505050505080925050509695505050505050565b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000097909716875273ffffffffffffffffffffffffffffffffffffffff95861660208801526040870194909452919093166060850152608084019290925260a083019190915260c082015260e00190565b90815260200190565b91825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b60208082526018908201527f4661696c656420746f207472616e736665722045746865720000000000000000604082015260600190565b60208082526037908201527f526563656976656420616d6f756e74206f6620746f6b656e7320617265206c6560408201527f7373207468656e20657870656374656420746f6b656e73000000000000000000606082015260800190565b6020808252600d908201527f5065726d6974206661696c656400000000000000000000000000000000000000604082015260600190565b6020808252601a908201527f50617468206e6f742070726f766964656420666f722073776170000000000000604082015260600190565b60208082526018908201527f45786368616e6765206e6f742077686974656c69737465640000000000000000604082015260600190565b60208082526016908201527f4d4554484f44204e4f5420494d504c454d454e54454400000000000000000000604082015260600190565b60208082526016908201527f43616c6c20746f2061646170746572206661696c656400000000000000000000604082015260600190565b60208082526013908201527f496e636f7272656374206d73672e76616c756500000000000000000000000000604082015260600190565b60208082526030908201527f526563656976656420616d6f756e74206f6620746f6b656e7320617265206c6560408201527f7373207468656e20657870656374656400000000000000000000000000000000606082015260800190565b60208082526011908201527f446561646c696e65206272656163686564000000000000000000000000000000604082015260600190565b60208082526016908201527f546f20616d6f756e742063616e206e6f74206265203000000000000000000000604082015260600190565b600088825273ffffffffffffffffffffffffffffffffffffffff8089166020840152808816604084015286606084015285608084015280851660a08401525060e060c08301526132db60e0830184612cff565b9998505050505050505050565b60405181810167ffffffffffffffff8111828210171561330457fe5b604052919050565b600067ffffffffffffffff82111561332057fe5b5060209081020190565b60005b8381101561334557818101518382015260200161332d565b838111156119c15750506000910152565b73ffffffffffffffffffffffffffffffffffffffff8116811461337857600080fd5b5056fe416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77496e73756666696369656e742062616c616e636520746f2070617920666f7220666565735361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a164736f6c6343000705000a
            data:
              main_contract: 14
              contract_info:
                - id: 5
                  path: contracts/IAugustusSwapperV5.sol
                  name: IAugustusSwapperV5.sol
                  source: |
                    // SPDX-License-Identifier: ISC

                    pragma solidity 0.7.5;

                    interface IAugustusSwapperV5 {
                        function hasRole(bytes32 role, address account) external view returns (bool);
                    }
                - id: 8
                  path: contracts/adapters/IBuyAdapter.sol
                  name: IBuyAdapter.sol
                  source: |
                    // SPDX-License-Identifier: ISC

                    pragma solidity 0.7.5;

                    import "../lib/Utils.sol";

                    interface IBuyAdapter {
                        /**
                         * @dev Certain adapters needs to be initialized.
                         * This method will be called from Augustus
                         */
                        function initialize(bytes calldata data) external;

                        /**
                         * @dev The function which performs the swap on an exchange.
                         * @param index Index of the router in the adapter
                         * @param fromToken Address of the source token
                         * @param toToken Address of the destination token
                         * @param maxFromAmount Max amount of source tokens to be swapped
                         * @param toAmount Amount of destination tokens to be received
                         * @param targetExchange Target exchange address to be called
                         * @param payload extra data which needs to be passed to this router
                         */
                        function buy(
                            uint256 index,
                            IERC20 fromToken,
                            IERC20 toToken,
                            uint256 maxFromAmount,
                            uint256 toAmount,
                            address targetExchange,
                            bytes calldata payload
                        ) external payable;
                    }
                - id: 11
                  path: contracts/lib/Utils.sol
                  name: Utils.sol
                  source: >
                    /*solhint-disable avoid-low-level-calls */

                    // SPDX-License-Identifier: ISC


                    pragma solidity 0.7.5;

                    pragma experimental ABIEncoderV2;


                    import "@openzeppelin/contracts/token/ERC20/IERC20.sol";

                    import "@openzeppelin/contracts/token/ERC20/SafeERC20.sol";

                    import "@openzeppelin/contracts/math/SafeMath.sol";

                    import "../ITokenTransferProxy.sol";

                    import { IBalancerV2Vault } from
                    "./balancerv2/IBalancerV2Vault.sol";


                    interface IERC20Permit {
                        function permit(
                            address owner,
                            address spender,
                            uint256 amount,
                            uint256 deadline,
                            uint8 v,
                            bytes32 r,
                            bytes32 s
                        ) external;
                    }


                    interface IERC20PermitLegacy {
                        function permit(
                            address holder,
                            address spender,
                            uint256 nonce,
                            uint256 expiry,
                            bool allowed,
                            uint8 v,
                            bytes32 r,
                            bytes32 s
                        ) external;
                    }


                    library Utils {
                        using SafeMath for uint256;
                        using SafeERC20 for IERC20;

                        address private constant ETH_ADDRESS = address(0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE);

                        uint256 private constant MAX_UINT = type(uint256).max;

                        enum CurveSwapType {
                            EXCHANGE,
                            EXCHANGE_UNDERLYING,
                            EXCHANGE_GENERIC_FACTORY_ZAP
                        }

                        /**
                         * @param fromToken Address of the source token
                         * @param fromAmount Amount of source tokens to be swapped
                         * @param toAmount Minimum destination token amount expected out of this swap
                         * @param expectedAmount Expected amount of destination tokens without slippage
                         * @param beneficiary Beneficiary address
                         * 0 then 100% will be transferred to beneficiary. Pass 10000 for 100%
                         * @param path Route to be taken for this swap to take place
                         */
                        struct SellData {
                            address fromToken;
                            uint256 fromAmount;
                            uint256 toAmount;
                            uint256 expectedAmount;
                            address payable beneficiary;
                            Utils.Path[] path;
                            address payable partner;
                            uint256 feePercent;
                            bytes permit;
                            uint256 deadline;
                            bytes16 uuid;
                        }

                        struct BuyData {
                            address adapter;
                            address fromToken;
                            address toToken;
                            uint256 fromAmount;
                            uint256 toAmount;
                            uint256 expectedAmount;
                            address payable beneficiary;
                            Utils.Route[] route;
                            address payable partner;
                            uint256 feePercent;
                            bytes permit;
                            uint256 deadline;
                            bytes16 uuid;
                        }

                        struct MegaSwapSellData {
                            address fromToken;
                            uint256 fromAmount;
                            uint256 toAmount;
                            uint256 expectedAmount;
                            address payable beneficiary;
                            Utils.MegaSwapPath[] path;
                            address payable partner;
                            uint256 feePercent;
                            bytes permit;
                            uint256 deadline;
                            bytes16 uuid;
                        }

                        struct SimpleData {
                            address fromToken;
                            address toToken;
                            uint256 fromAmount;
                            uint256 toAmount;
                            uint256 expectedAmount;
                            address[] callees;
                            bytes exchangeData;
                            uint256[] startIndexes;
                            uint256[] values;
                            address payable beneficiary;
                            address payable partner;
                            uint256 feePercent;
                            bytes permit;
                            uint256 deadline;
                            bytes16 uuid;
                        }

                        struct DirectUniV3 {
                            address fromToken;
                            address toToken;
                            address exchange;
                            uint256 fromAmount;
                            uint256 toAmount;
                            uint256 expectedAmount;
                            uint256 feePercent;
                            uint256 deadline;
                            address payable partner;
                            bool isApproved;
                            address payable beneficiary;
                            bytes path;
                            bytes permit;
                            bytes16 uuid;
                        }

                        struct DirectCurveV1 {
                            address fromToken;
                            address toToken;
                            address exchange;
                            uint256 fromAmount;
                            uint256 toAmount;
                            uint256 expectedAmount;
                            uint256 feePercent;
                            int128 i;
                            int128 j;
                            address payable partner;
                            bool isApproved;
                            CurveSwapType swapType;
                            address payable beneficiary;
                            bool needWrapNative;
                            bytes permit;
                            bytes16 uuid;
                        }

                        struct DirectCurveV2 {
                            address fromToken;
                            address toToken;
                            address exchange;
                            address poolAddress;
                            uint256 fromAmount;
                            uint256 toAmount;
                            uint256 expectedAmount;
                            uint256 feePercent;
                            uint256 i;
                            uint256 j;
                            address payable partner;
                            bool isApproved;
                            CurveSwapType swapType;
                            address payable beneficiary;
                            bool needWrapNative;
                            bytes permit;
                            bytes16 uuid;
                        }

                        struct DirectBalancerV2 {
                            IBalancerV2Vault.BatchSwapStep[] swaps;
                            address[] assets;
                            IBalancerV2Vault.FundManagement funds;
                            int256[] limits;
                            uint256 fromAmount;
                            uint256 toAmount;
                            uint256 expectedAmount;
                            uint256 deadline;
                            uint256 feePercent;
                            address vault;
                            address payable partner;
                            bool isApproved;
                            address payable beneficiary;
                            bytes permit;
                            bytes16 uuid;
                        }

                        struct Adapter {
                            address payable adapter;
                            uint256 percent;
                            uint256 networkFee; //NOT USED
                            Route[] route;
                        }

                        struct Route {
                            uint256 index; //Adapter at which index needs to be used
                            address targetExchange;
                            uint256 percent;
                            bytes payload;
                            uint256 networkFee; //NOT USED - Network fee is associated with 0xv3 trades
                        }

                        struct MegaSwapPath {
                            uint256 fromAmountPercent;
                            Path[] path;
                        }

                        struct Path {
                            address to;
                            uint256 totalNetworkFee; //NOT USED - Network fee is associated with 0xv3 trades
                            Adapter[] adapters;
                        }

                        function ethAddress() internal pure returns (address) {
                            return ETH_ADDRESS;
                        }

                        function maxUint() internal pure returns (uint256) {
                            return MAX_UINT;
                        }

                        function approve(
                            address addressToApprove,
                            address token,
                            uint256 amount
                        ) internal {
                            if (token != ETH_ADDRESS) {
                                IERC20 _token = IERC20(token);

                                uint256 allowance = _token.allowance(address(this), addressToApprove);

                                if (allowance < amount) {
                                    _token.safeApprove(addressToApprove, 0);
                                    _token.safeIncreaseAllowance(addressToApprove, MAX_UINT);
                                }
                            }
                        }

                        function transferTokens(
                            address token,
                            address payable destination,
                            uint256 amount
                        ) internal {
                            if (amount > 0) {
                                if (token == ETH_ADDRESS) {
                                    (bool result, ) = destination.call{ value: amount, gas: 10000 }("");
                                    require(result, "Failed to transfer Ether");
                                } else {
                                    IERC20(token).safeTransfer(destination, amount);
                                }
                            }
                        }

                        function tokenBalance(address token, address account) internal view returns (uint256) {
                            if (token == ETH_ADDRESS) {
                                return account.balance;
                            } else {
                                return IERC20(token).balanceOf(account);
                            }
                        }

                        function permit(address token, bytes memory permit) internal {
                            if (permit.length == 32 * 7) {
                                (bool success, ) = token.call(abi.encodePacked(IERC20Permit.permit.selector, permit));
                                require(success, "Permit failed");
                            }

                            if (permit.length == 32 * 8) {
                                (bool success, ) = token.call(abi.encodePacked(IERC20PermitLegacy.permit.selector, permit));
                                require(success, "Permit failed");
                            }
                        }

                        function transferETH(address payable destination, uint256 amount) internal {
                            if (amount > 0) {
                                (bool result, ) = destination.call{ value: amount, gas: 10000 }("");
                                require(result, "Transfer ETH failed");
                            }
                        }
                    }
                - id: 1
                  path: '@openzeppelin/contracts/token/ERC20/IERC20.sol'
                  name: IERC20.sol
                  source: |
                    // SPDX-License-Identifier: MIT

                    pragma solidity >=0.6.0 <0.8.0;

                    /**
                     * @dev Interface of the ERC20 standard as defined in the EIP.
                     */
                    interface IERC20 {
                        /**
                         * @dev Returns the amount of tokens in existence.
                         */
                        function totalSupply() external view returns (uint256);

                        /**
                         * @dev Returns the amount of tokens owned by `account`.
                         */
                        function balanceOf(address account) external view returns (uint256);

                        /**
                         * @dev Moves `amount` tokens from the caller's account to `recipient`.
                         *
                         * Returns a boolean value indicating whether the operation succeeded.
                         *
                         * Emits a {Transfer} event.
                         */
                        function transfer(address recipient, uint256 amount) external returns (bool);

                        /**
                         * @dev Returns the remaining number of tokens that `spender` will be
                         * allowed to spend on behalf of `owner` through {transferFrom}. This is
                         * zero by default.
                         *
                         * This value changes when {approve} or {transferFrom} are called.
                         */
                        function allowance(address owner, address spender) external view returns (uint256);

                        /**
                         * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
                         *
                         * Returns a boolean value indicating whether the operation succeeded.
                         *
                         * IMPORTANT: Beware that changing an allowance with this method brings the risk
                         * that someone may use both the old and the new allowance by unfortunate
                         * transaction ordering. One possible solution to mitigate this race
                         * condition is to first reduce the spender's allowance to 0 and set the
                         * desired value afterwards:
                         * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
                         *
                         * Emits an {Approval} event.
                         */
                        function approve(address spender, uint256 amount) external returns (bool);

                        /**
                         * @dev Moves `amount` tokens from `sender` to `recipient` using the
                         * allowance mechanism. `amount` is then deducted from the caller's
                         * allowance.
                         *
                         * Returns a boolean value indicating whether the operation succeeded.
                         *
                         * Emits a {Transfer} event.
                         */
                        function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

                        /**
                         * @dev Emitted when `value` tokens are moved from one account (`from`) to
                         * another (`to`).
                         *
                         * Note that `value` may be zero.
                         */
                        event Transfer(address indexed from, address indexed to, uint256 value);

                        /**
                         * @dev Emitted when the allowance of a `spender` for an `owner` is set by
                         * a call to {approve}. `value` is the new allowance.
                         */
                        event Approval(address indexed owner, address indexed spender, uint256 value);
                    }
                - id: 3
                  path: '@openzeppelin/contracts/utils/Address.sol'
                  name: Address.sol
                  source: |
                    // SPDX-License-Identifier: MIT

                    pragma solidity >=0.6.2 <0.8.0;

                    /**
                     * @dev Collection of functions related to the address type
                     */
                    library Address {
                        /**
                         * @dev Returns true if `account` is a contract.
                         *
                         * [IMPORTANT]
                         * ====
                         * It is unsafe to assume that an address for which this function returns
                         * false is an externally-owned account (EOA) and not a contract.
                         *
                         * Among others, `isContract` will return false for the following
                         * types of addresses:
                         *
                         *  - an externally-owned account
                         *  - a contract in construction
                         *  - an address where a contract will be created
                         *  - an address where a contract lived, but was destroyed
                         * ====
                         */
                        function isContract(address account) internal view returns (bool) {
                            // This method relies on extcodesize, which returns 0 for contracts in
                            // construction, since the code is only stored at the end of the
                            // constructor execution.

                            uint256 size;
                            // solhint-disable-next-line no-inline-assembly
                            assembly { size := extcodesize(account) }
                            return size > 0;
                        }

                        /**
                         * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
                         * `recipient`, forwarding all available gas and reverting on errors.
                         *
                         * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
                         * of certain opcodes, possibly making contracts go over the 2300 gas limit
                         * imposed by `transfer`, making them unable to receive funds via
                         * `transfer`. {sendValue} removes this limitation.
                         *
                         * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
                         *
                         * IMPORTANT: because control is transferred to `recipient`, care must be
                         * taken to not create reentrancy vulnerabilities. Consider using
                         * {ReentrancyGuard} or the
                         * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
                         */
                        function sendValue(address payable recipient, uint256 amount) internal {
                            require(address(this).balance >= amount, "Address: insufficient balance");

                            // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
                            (bool success, ) = recipient.call{ value: amount }("");
                            require(success, "Address: unable to send value, recipient may have reverted");
                        }

                        /**
                         * @dev Performs a Solidity function call using a low level `call`. A
                         * plain`call` is an unsafe replacement for a function call: use this
                         * function instead.
                         *
                         * If `target` reverts with a revert reason, it is bubbled up by this
                         * function (like regular Solidity function calls).
                         *
                         * Returns the raw returned data. To convert to the expected return value,
                         * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
                         *
                         * Requirements:
                         *
                         * - `target` must be a contract.
                         * - calling `target` with `data` must not revert.
                         *
                         * _Available since v3.1._
                         */
                        function functionCall(address target, bytes memory data) internal returns (bytes memory) {
                          return functionCall(target, data, "Address: low-level call failed");
                        }

                        /**
                         * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
                         * `errorMessage` as a fallback revert reason when `target` reverts.
                         *
                         * _Available since v3.1._
                         */
                        function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
                            return functionCallWithValue(target, data, 0, errorMessage);
                        }

                        /**
                         * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
                         * but also transferring `value` wei to `target`.
                         *
                         * Requirements:
                         *
                         * - the calling contract must have an ETH balance of at least `value`.
                         * - the called Solidity function must be `payable`.
                         *
                         * _Available since v3.1._
                         */
                        function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
                            return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
                        }

                        /**
                         * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
                         * with `errorMessage` as a fallback revert reason when `target` reverts.
                         *
                         * _Available since v3.1._
                         */
                        function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
                            require(address(this).balance >= value, "Address: insufficient balance for call");
                            require(isContract(target), "Address: call to non-contract");

                            // solhint-disable-next-line avoid-low-level-calls
                            (bool success, bytes memory returndata) = target.call{ value: value }(data);
                            return _verifyCallResult(success, returndata, errorMessage);
                        }

                        /**
                         * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
                         * but performing a static call.
                         *
                         * _Available since v3.3._
                         */
                        function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
                            return functionStaticCall(target, data, "Address: low-level static call failed");
                        }

                        /**
                         * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
                         * but performing a static call.
                         *
                         * _Available since v3.3._
                         */
                        function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
                            require(isContract(target), "Address: static call to non-contract");

                            // solhint-disable-next-line avoid-low-level-calls
                            (bool success, bytes memory returndata) = target.staticcall(data);
                            return _verifyCallResult(success, returndata, errorMessage);
                        }

                        /**
                         * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
                         * but performing a delegate call.
                         *
                         * _Available since v3.4._
                         */
                        function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
                            return functionDelegateCall(target, data, "Address: low-level delegate call failed");
                        }

                        /**
                         * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
                         * but performing a delegate call.
                         *
                         * _Available since v3.4._
                         */
                        function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
                            require(isContract(target), "Address: delegate call to non-contract");

                            // solhint-disable-next-line avoid-low-level-calls
                            (bool success, bytes memory returndata) = target.delegatecall(data);
                            return _verifyCallResult(success, returndata, errorMessage);
                        }

                        function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
                            if (success) {
                                return returndata;
                            } else {
                                // Look for revert reason and bubble it up if present
                                if (returndata.length > 0) {
                                    // The easiest way to bubble the revert reason is using memory via assembly

                                    // solhint-disable-next-line no-inline-assembly
                                    assembly {
                                        let returndata_size := mload(returndata)
                                        revert(add(32, returndata), returndata_size)
                                    }
                                } else {
                                    revert(errorMessage);
                                }
                            }
                        }
                    }
                - id: 4
                  path: contracts/AugustusStorage.sol
                  name: AugustusStorage.sol
                  source: |
                    // SPDX-License-Identifier: ISC

                    pragma solidity 0.7.5;

                    import "./ITokenTransferProxy.sol";

                    contract AugustusStorage {
                        struct FeeStructure {
                            uint256 partnerShare;
                            bool noPositiveSlippage;
                            bool positiveSlippageToUser;
                            uint16 feePercent;
                            string partnerId;
                            bytes data;
                        }

                        ITokenTransferProxy internal tokenTransferProxy;
                        address payable internal feeWallet;

                        mapping(address => FeeStructure) internal registeredPartners;

                        mapping(bytes4 => address) internal selectorVsRouter;
                        mapping(bytes32 => bool) internal adapterInitialized;
                        mapping(bytes32 => bytes) internal adapterVsData;

                        mapping(bytes32 => bytes) internal routerData;
                        mapping(bytes32 => bool) internal routerInitialized;

                        bytes32 public constant WHITELISTED_ROLE = keccak256("WHITELISTED_ROLE");

                        bytes32 public constant ROUTER_ROLE = keccak256("ROUTER_ROLE");
                    }
                - id: 7
                  path: contracts/adapters/IAdapter.sol
                  name: IAdapter.sol
                  source: |
                    // SPDX-License-Identifier: ISC

                    pragma solidity 0.7.5;
                    pragma abicoder v2;

                    import "../lib/Utils.sol";

                    interface IAdapter {
                        /**
                         * @dev Certain adapters needs to be initialized.
                         * This method will be called from Augustus
                         */
                        function initialize(bytes calldata data) external;

                        /**
                         * @dev The function which performs the swap on an exchange.
                         * @param fromToken Address of the source token
                         * @param toToken Address of the destination token
                         * @param fromAmount Amount of source tokens to be swapped
                         * @param networkFee NOT USED - Network fee to be used in this router
                         * @param route Route to be followed
                         */
                        function swap(
                            IERC20 fromToken,
                            IERC20 toToken,
                            uint256 fromAmount,
                            uint256 networkFee,
                            Utils.Route[] calldata route
                        ) external payable;
                    }
                - id: 0
                  path: '@openzeppelin/contracts/math/SafeMath.sol'
                  name: SafeMath.sol
                  source: |
                    // SPDX-License-Identifier: MIT

                    pragma solidity >=0.6.0 <0.8.0;

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

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

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

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

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

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

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

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

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

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

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

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

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

                    pragma solidity 0.7.5;

                    interface ITokenTransferProxy {
                        function transferFrom(
                            address token,
                            address from,
                            address to,
                            uint256 amount
                        ) external;
                    }
                - id: 9
                  path: contracts/fee/FeeModel.sol
                  name: FeeModel.sol
                  source: >
                    // SPDX-License-Identifier: ISC


                    pragma solidity 0.7.5;


                    import "@openzeppelin/contracts/math/SafeMath.sol";

                    import "../AugustusStorage.sol";

                    import "../lib/Utils.sol";

                    import "./IFeeClaimer.sol";

                    // helpers

                    import { IERC20 } from
                    "@openzeppelin/contracts/token/ERC20/IERC20.sol";


                    contract FeeModel is AugustusStorage {
                        using SafeMath for uint256;

                        uint256 public immutable partnerSharePercent;
                        uint256 public immutable maxFeePercent;
                        uint256 public immutable paraswapReferralShare;
                        uint256 public immutable paraswapSlippageShare;
                        IFeeClaimer public immutable feeClaimer;

                        constructor(
                            uint256 _partnerSharePercent,
                            uint256 _maxFeePercent,
                            uint256 _paraswapReferralShare,
                            uint256 _paraswapSlippageShare,
                            IFeeClaimer _feeClaimer
                        ) {
                            partnerSharePercent = _partnerSharePercent;
                            maxFeePercent = _maxFeePercent;
                            paraswapReferralShare = _paraswapReferralShare;
                            paraswapSlippageShare = _paraswapSlippageShare;
                            feeClaimer = _feeClaimer;
                        }

                        // feePercent is a packed structure.
                        // Bits 255-248 = 8-bit version field
                        //
                        // Version 0
                        // =========
                        // Entire structure is interpreted as the fee percent in basis points.
                        // If set to 0 then partner will not receive any fees.
                        //
                        // Version 1
                        // =========
                        // Bits 13-0 = Fee percent in basis points
                        // Bit 14 = positiveSlippageToUser (positive slippage to partner if not set)
                        // Bit 15 = if set, take fee from fromToken, toToken otherwise
                        // Bit 16 = if set, do fee distribution as per referral program

                        function takeFromTokenFee(
                            address fromToken,
                            uint256 fromAmount,
                            address payable partner,
                            uint256 feePercent
                        ) internal returns (uint256 newFromAmount) {
                            uint256 fixedFeeBps = _getFixedFeeBps(partner, feePercent);
                            if (fixedFeeBps == 0) return fromAmount;
                            (uint256 partnerShare, uint256 paraswapShare) = _calcFixedFees(fromAmount, fixedFeeBps);
                            return _distributeFees(fromAmount, fromToken, partner, partnerShare, paraswapShare);
                        }

                        function takeFromTokenFeeAndTransfer(
                            address fromToken,
                            uint256 fromAmount,
                            uint256 remainingAmount,
                            address payable partner,
                            uint256 feePercent
                        ) internal {
                            uint256 fixedFeeBps = _getFixedFeeBps(partner, feePercent);
                            (uint256 partnerShare, uint256 paraswapShare) = _calcFixedFees(fromAmount, fixedFeeBps);
                            if (partnerShare.add(paraswapShare) <= remainingAmount) {
                                remainingAmount = _distributeFees(remainingAmount, fromToken, partner, partnerShare, paraswapShare);
                            }
                            Utils.transferTokens(fromToken, msg.sender, remainingAmount);
                        }

                        function takeToTokenFeeAndTransfer(
                            address toToken,
                            uint256 receivedAmount,
                            address payable beneficiary,
                            address payable partner,
                            uint256 feePercent
                        ) internal {
                            uint256 fixedFeeBps = _getFixedFeeBps(partner, feePercent);
                            (uint256 partnerShare, uint256 paraswapShare) = _calcFixedFees(receivedAmount, fixedFeeBps);
                            Utils.transferTokens(
                                toToken,
                                beneficiary,
                                _distributeFees(receivedAmount, toToken, partner, partnerShare, paraswapShare)
                            );
                        }

                        function takeSlippageAndTransferSell(
                            address toToken,
                            address payable beneficiary,
                            address payable partner,
                            uint256 positiveAmount,
                            uint256 negativeAmount,
                            uint256 feePercent
                        ) internal {
                            uint256 totalSlippage = positiveAmount.sub(negativeAmount);
                            if (partner != address(0)) {
                                (uint256 referrerShare, uint256 paraswapShare) = _calcSlippageFees(totalSlippage, feePercent);
                                positiveAmount = _distributeFees(positiveAmount, toToken, partner, referrerShare, paraswapShare);
                            } else {
                                uint256 paraswapSlippage = totalSlippage.mul(paraswapSlippageShare).div(10000);
                                Utils.transferTokens(toToken, feeWallet, paraswapSlippage);
                                positiveAmount = positiveAmount.sub(paraswapSlippage);
                            }
                            Utils.transferTokens(toToken, beneficiary, positiveAmount);
                        }

                        function takeSlippageAndTransferBuy(
                            address fromToken,
                            address payable partner,
                            uint256 positiveAmount,
                            uint256 negativeAmount,
                            uint256 remainingAmount,
                            uint256 feePercent
                        ) internal {
                            uint256 totalSlippage = positiveAmount.sub(negativeAmount);
                            if (partner != address(0)) {
                                (uint256 referrerShare, uint256 paraswapShare) = _calcSlippageFees(totalSlippage, feePercent);
                                remainingAmount = _distributeFees(remainingAmount, fromToken, partner, referrerShare, paraswapShare);
                            } else {
                                uint256 paraswapSlippage = totalSlippage.mul(paraswapSlippageShare).div(10000);
                                Utils.transferTokens(fromToken, feeWallet, paraswapSlippage);
                                remainingAmount = remainingAmount.sub(paraswapSlippage);
                            }
                            // Transfer remaining token back to sender
                            Utils.transferTokens(fromToken, msg.sender, remainingAmount);
                        }

                        function _getFixedFeeBps(address partner, uint256 feePercent) internal view returns (uint256 fixedFeeBps) {
                            if (partner == address(0)) return 0;
                            uint256 version = feePercent >> 248;
                            if (version == 0) {
                                fixedFeeBps = feePercent;
                            } else {
                                fixedFeeBps = feePercent & 0x3FFF;
                            }
                            return fixedFeeBps > maxFeePercent ? maxFeePercent : fixedFeeBps;
                        }

                        function _calcFixedFees(uint256 amount, uint256 fixedFeeBps)
                            private
                            view
                            returns (uint256 partnerShare, uint256 paraswapShare)
                        {
                            uint256 fee = amount.mul(fixedFeeBps).div(10000);
                            partnerShare = fee.mul(partnerSharePercent).div(10000);
                            paraswapShare = fee.sub(partnerShare);
                        }

                        function _calcSlippageFees(uint256 slippage, uint256 feePercent)
                            private
                            view
                            returns (uint256 partnerShare, uint256 paraswapShare)
                        {
                            uint256 feeBps = feePercent & 0x3FFF;
                            require(feeBps + paraswapReferralShare <= 10000, "Invalid fee percent");
                            paraswapShare = slippage.mul(paraswapReferralShare).div(10000);
                            partnerShare = slippage.mul(feeBps).div(10000);
                        }

                        function _distributeFees(
                            uint256 currentBalance,
                            address token,
                            address payable partner,
                            uint256 partnerShare,
                            uint256 paraswapShare
                        ) private returns (uint256 newBalance) {
                            uint256 totalFees = partnerShare.add(paraswapShare);
                            if (totalFees == 0) return currentBalance;

                            require(totalFees <= currentBalance, "Insufficient balance to pay for fees");

                            Utils.transferTokens(token, payable(address(feeClaimer)), totalFees);
                            if (partnerShare != 0) {
                                feeClaimer.registerFee(partner, IERC20(token), partnerShare);
                            }
                            if (paraswapShare != 0) {
                                feeClaimer.registerFee(feeWallet, IERC20(token), paraswapShare);
                            }
                            return currentBalance.sub(totalFees);
                        }

                        function _isTakeFeeFromSrcToken(uint256 feePercent) internal pure returns (bool) {
                            return feePercent >> 248 != 0 && (feePercent & (1 << 15)) != 0;
                        }

                        function _isReferral(uint256 feePercent) internal pure returns (bool) {
                            return (feePercent & (1 << 16)) != 0;
                        }
                    }
                - id: 2
                  path: '@openzeppelin/contracts/token/ERC20/SafeERC20.sol'
                  name: SafeERC20.sol
                  source: |
                    // SPDX-License-Identifier: MIT

                    pragma solidity >=0.6.0 <0.8.0;

                    import "./IERC20.sol";
                    import "../../math/SafeMath.sol";
                    import "../../utils/Address.sol";

                    /**
                     * @title SafeERC20
                     * @dev Wrappers around ERC20 operations that throw on failure (when the token
                     * contract returns false). Tokens that return no value (and instead revert or
                     * throw on failure) are also supported, non-reverting calls are assumed to be
                     * successful.
                     * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,
                     * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
                     */
                    library SafeERC20 {
                        using SafeMath for uint256;
                        using Address for address;

                        function safeTransfer(IERC20 token, address to, uint256 value) internal {
                            _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
                        }

                        function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
                            _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
                        }

                        /**
                         * @dev Deprecated. This function has issues similar to the ones found in
                         * {IERC20-approve}, and its usage is discouraged.
                         *
                         * Whenever possible, use {safeIncreaseAllowance} and
                         * {safeDecreaseAllowance} instead.
                         */
                        function safeApprove(IERC20 token, address spender, uint256 value) internal {
                            // safeApprove should only be called when setting an initial allowance,
                            // or when resetting it to zero. To increase and decrease it, use
                            // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
                            // solhint-disable-next-line max-line-length
                            require((value == 0) || (token.allowance(address(this), spender) == 0),
                                "SafeERC20: approve from non-zero to non-zero allowance"
                            );
                            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
                        }

                        function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {
                            uint256 newAllowance = token.allowance(address(this), spender).add(value);
                            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
                        }

                        function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {
                            uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero");
                            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
                        }

                        /**
                         * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
                         * on the return value: the return value is optional (but if data is returned, it must not be false).
                         * @param token The token targeted by the call.
                         * @param data The call data (encoded using abi.encode or one of its variants).
                         */
                        function _callOptionalReturn(IERC20 token, bytes memory data) private {
                            // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
                            // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that
                            // the target address contains contract code and also asserts for success in the low-level call.

                            bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
                            if (returndata.length > 0) { // Return data is optional
                                // solhint-disable-next-line max-line-length
                                require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
                            }
                        }
                    }
                - id: 10
                  path: contracts/fee/IFeeClaimer.sol
                  name: IFeeClaimer.sol
                  source: >
                    // SPDX-License-Identifier: ISC


                    pragma solidity 0.7.5;


                    import { IERC20 } from
                    "@openzeppelin/contracts/token/ERC20/IERC20.sol";


                    interface IFeeClaimer {
                        /**
                         * @notice register partner's, affiliate's and PP's fee
                         * @dev only callable by AugustusSwapper contract
                         * @param _account account address used to withdraw fees
                         * @param _token token address
                         * @param _fee fee amount in token
                         */
                        function registerFee(
                            address _account,
                            IERC20 _token,
                            uint256 _fee
                        ) external;

                        /**
                         * @notice claim partner share fee in ERC20 token
                         * @dev transfers ERC20 token balance to the caller's account
                         *      the call will fail if withdrawer have zero balance in the contract
                         * @param _token address of the ERC20 token
                         * @param _recipient address
                         * @return true if the withdraw was successfull
                         */
                        function withdrawAllERC20(IERC20 _token, address _recipient) external returns (bool);

                        /**
                         * @notice batch claim whole balance of fee share amount
                         * @dev transfers ERC20 token balance to the caller's account
                         *      the call will fail if withdrawer have zero balance in the contract
                         * @param _tokens list of addresses of the ERC20 token
                         * @param _recipient address of recipient
                         * @return true if the withdraw was successfull
                         */
                        function batchWithdrawAllERC20(IERC20[] calldata _tokens, address _recipient) external returns (bool);

                        /**
                         * @notice claim some partner share fee in ERC20 token
                         * @dev transfers ERC20 token amount to the caller's account
                         *      the call will fail if withdrawer have zero balance in the contract
                         * @param _token address of the ERC20 token
                         * @param _recipient address
                         * @return true if the withdraw was successfull
                         */
                        function withdrawSomeERC20(
                            IERC20 _token,
                            uint256 _tokenAmount,
                            address _recipient
                        ) external returns (bool);

                        /**
                         * @notice batch claim some amount of fee share in ERC20 token
                         * @dev transfers ERC20 token balance to the caller's account
                         *      the call will fail if withdrawer have zero balance in the contract
                         * @param _tokens address of the ERC20 tokens
                         * @param _tokenAmounts array of amounts
                         * @param _recipient destination account addresses
                         * @return true if the withdraw was successfull
                         */
                        function batchWithdrawSomeERC20(
                            IERC20[] calldata _tokens,
                            uint256[] calldata _tokenAmounts,
                            address _recipient
                        ) external returns (bool);

                        /**
                         * @notice compute unallocated fee in token
                         * @param _token address of the ERC20 token
                         * @return amount of unallocated token in fees
                         */
                        function getUnallocatedFees(IERC20 _token) external view returns (uint256);

                        /**
                         * @notice returns unclaimed fee amount given the token
                         * @dev retrieves the balance of ERC20 token fee amount for a partner
                         * @param _token address of the ERC20 token
                         * @param _partner account address of the partner
                         * @return amount of balance
                         */
                        function getBalance(IERC20 _token, address _partner) external view returns (uint256);

                        /**
                         * @notice returns unclaimed fee amount given the token in batch
                         * @dev retrieves the balance of ERC20 token fee amount for a partner in batch
                         * @param _tokens list of ERC20 token addresses
                         * @param _partner account address of the partner
                         * @return _fees array of the token amount
                         */
                        function batchGetBalance(IERC20[] calldata _tokens, address _partner)
                            external
                            view
                            returns (uint256[] memory _fees);
                    }
                - id: 12
                  path: contracts/lib/balancerv2/IBalancerV2Vault.sol
                  name: IBalancerV2Vault.sol
                  source: |
                    // SPDX-License-Identifier: ISC

                    pragma solidity 0.7.5;
                    pragma abicoder v2;

                    import "../Utils.sol";

                    interface IBalancerV2Vault {
                        enum SwapKind {
                            GIVEN_IN,
                            GIVEN_OUT
                        }

                        struct SingleSwap {
                            bytes32 poolId;
                            SwapKind kind;
                            address assetIn;
                            address assetOut;
                            uint256 amount;
                            bytes userData;
                        }

                        struct BatchSwapStep {
                            bytes32 poolId;
                            uint256 assetInIndex;
                            uint256 assetOutIndex;
                            uint256 amount;
                            bytes userData;
                        }

                        struct FundManagement {
                            address sender;
                            bool fromInternalBalance;
                            address payable recipient;
                            bool toInternalBalance;
                        }

                        function swap(
                            SingleSwap memory singleSwap,
                            FundManagement memory funds,
                            uint256 limit,
                            uint256 deadline
                        ) external payable returns (uint256);

                        function batchSwap(
                            SwapKind kind,
                            BatchSwapStep[] memory swaps,
                            address[] memory assets,
                            FundManagement memory funds,
                            int256[] memory limits,
                            uint256 deadline
                        ) external payable returns (int256[] memory);
                    }
                - id: 13
                  path: contracts/routers/IRouter.sol
                  name: IRouter.sol
                  source: |
                    // SPDX-License-Identifier: ISC

                    pragma solidity 0.7.5;

                    interface IRouter {
                        /**
                         * @dev Certain routers/exchanges needs to be initialized.
                         * This method will be called from Augustus
                         */
                        function initialize(bytes calldata data) external;

                        /**
                         * @dev Returns unique identifier for the router
                         */
                        function getKey() external pure returns (bytes32);

                        event SwappedV3(
                            bytes16 uuid,
                            address partner,
                            uint256 feePercent,
                            address initiator,
                            address indexed beneficiary,
                            address indexed srcToken,
                            address indexed destToken,
                            uint256 srcAmount,
                            uint256 receivedAmount,
                            uint256 expectedAmount
                        );

                        event BoughtV3(
                            bytes16 uuid,
                            address partner,
                            uint256 feePercent,
                            address initiator,
                            address indexed beneficiary,
                            address indexed srcToken,
                            address indexed destToken,
                            uint256 srcAmount,
                            uint256 receivedAmount,
                            uint256 expectedAmount
                        );
                    }
                - id: 14
                  path: contracts/routers/MultiPath.sol
                  name: MultiPath.sol
                  source: |
                    /*solhint-disable avoid-low-level-calls*/
                    // SPDX-License-Identifier: ISC

                    pragma solidity 0.7.5;
                    pragma abicoder v2;

                    import "./IRouter.sol";
                    import "../IAugustusSwapperV5.sol";
                    import "../adapters/IAdapter.sol";
                    import "../adapters/IBuyAdapter.sol";
                    import "../fee/FeeModel.sol";
                    import "../fee/IFeeClaimer.sol";

                    contract MultiPath is FeeModel, IRouter {
                        using SafeMath for uint256;

                        /*solhint-disable no-empty-blocks*/
                        constructor(
                            uint256 _partnerSharePercent,
                            uint256 _maxFeePercent,
                            uint256 _paraswapReferralShare,
                            uint256 _paraswapSlippageShare,
                            IFeeClaimer _feeClaimer
                        )
                            public
                            FeeModel(_partnerSharePercent, _maxFeePercent, _paraswapReferralShare, _paraswapSlippageShare, _feeClaimer)
                        {}

                        /*solhint-enable no-empty-blocks*/

                        function initialize(bytes calldata) external override {
                            revert("METHOD NOT IMPLEMENTED");
                        }

                        function getKey() external pure override returns (bytes32) {
                            return keccak256(abi.encodePacked("MULTIPATH_ROUTER", "1.0.0"));
                        }

                        /**
                         * @dev The function which performs the multi path swap.
                         * @param data Data required to perform swap.
                         */
                        function multiSwap(Utils.SellData memory data) public payable returns (uint256) {
                            require(data.deadline >= block.timestamp, "Deadline breached");

                            address fromToken = data.fromToken;
                            uint256 fromAmount = data.fromAmount;
                            require(msg.value == (fromToken == Utils.ethAddress() ? fromAmount : 0), "Incorrect msg.value");
                            uint256 toAmount = data.toAmount;
                            uint256 expectedAmount = data.expectedAmount;
                            address payable beneficiary = data.beneficiary == address(0) ? msg.sender : data.beneficiary;
                            Utils.Path[] memory path = data.path;
                            address toToken = path[path.length - 1].to;

                            require(toAmount > 0, "To amount can not be 0");

                            //If source token is not ETH than transfer required amount of tokens
                            //from sender to this contract
                            transferTokensFromProxy(fromToken, fromAmount, data.permit);
                            if (_isTakeFeeFromSrcToken(data.feePercent)) {
                                // take fee from source token
                                fromAmount = takeFromTokenFee(fromToken, fromAmount, data.partner, data.feePercent);
                            }

                            performSwap(fromToken, fromAmount, path);

                            uint256 receivedAmount = Utils.tokenBalance(toToken, address(this));

                            require(receivedAmount >= toAmount, "Received amount of tokens are less then expected");

                            if (
                                _getFixedFeeBps(data.partner, data.feePercent) != 0 &&
                                !_isTakeFeeFromSrcToken(data.feePercent) &&
                                !_isReferral(data.feePercent)
                            ) {
                                // take fee from dest token
                                takeToTokenFeeAndTransfer(toToken, receivedAmount, beneficiary, data.partner, data.feePercent);
                            } else if (receivedAmount > expectedAmount && !_isTakeFeeFromSrcToken(data.feePercent)) {
                                takeSlippageAndTransferSell(
                                    toToken,
                                    beneficiary,
                                    data.partner,
                                    receivedAmount,
                                    expectedAmount,
                                    data.feePercent
                                );
                            } else {
                                // Fee is already taken from fromToken
                                // Transfer toToken to beneficiary
                                Utils.transferTokens(toToken, beneficiary, receivedAmount);
                            }

                            emit SwappedV3(
                                data.uuid,
                                data.partner,
                                data.feePercent,
                                msg.sender,
                                beneficiary,
                                fromToken,
                                toToken,
                                fromAmount,
                                receivedAmount,
                                expectedAmount
                            );

                            return receivedAmount;
                        }

                        /**
                         * @dev The function which performs the single path buy.
                         * @param data Data required to perform swap.
                         */
                        function buy(Utils.BuyData memory data) public payable returns (uint256) {
                            require(data.deadline >= block.timestamp, "Deadline breached");

                            address fromToken = data.fromToken;
                            uint256 fromAmount = data.fromAmount;
                            require(msg.value == (fromToken == Utils.ethAddress() ? fromAmount : 0), "Incorrect msg.value");
                            uint256 toAmount = data.toAmount;
                            address payable beneficiary = data.beneficiary == address(0) ? msg.sender : data.beneficiary;
                            address toToken = data.toToken;
                            uint256 expectedAmount = data.expectedAmount;
                            uint256 feePercent = data.feePercent;

                            require(toAmount > 0, "To amount can not be 0");

                            //If source token is not ETH than transfer required amount of tokens
                            //from sender to this contract
                            transferTokensFromProxy(fromToken, fromAmount, data.permit);

                            uint256 receivedAmount = performBuy(data.adapter, fromToken, toToken, fromAmount, toAmount, data.route);

                            uint256 remainingAmount = Utils.tokenBalance(fromToken, address(this));

                            if (
                                _getFixedFeeBps(data.partner, data.feePercent) != 0 &&
                                !_isTakeFeeFromSrcToken(feePercent) &&
                                !_isReferral(data.feePercent)
                            ) {
                                // take fee from dest token
                                takeToTokenFeeAndTransfer(toToken, receivedAmount, beneficiary, data.partner, feePercent);

                                // Transfer remaining token back to sender
                                Utils.transferTokens(fromToken, msg.sender, remainingAmount);
                            } else {
                                Utils.transferTokens(toToken, beneficiary, receivedAmount);
                                if (_getFixedFeeBps(data.partner, data.feePercent) != 0 && _isTakeFeeFromSrcToken(feePercent)) {
                                    //  take fee from source token and transfer remaining token back to sender
                                    takeFromTokenFeeAndTransfer(
                                        fromToken,
                                        fromAmount.sub(remainingAmount),
                                        remainingAmount,
                                        data.partner,
                                        feePercent
                                    );
                                } else if (fromAmount.sub(remainingAmount) < expectedAmount) {
                                    takeSlippageAndTransferBuy(
                                        fromToken,
                                        data.partner,
                                        expectedAmount,
                                        fromAmount.sub(remainingAmount),
                                        remainingAmount,
                                        feePercent
                                    );
                                } else {
                                    // Transfer remaining token back to sender
                                    Utils.transferTokens(fromToken, msg.sender, remainingAmount);
                                }
                            }

                            fromAmount = fromAmount.sub(remainingAmount);
                            emit BoughtV3(
                                data.uuid,
                                data.partner,
                                feePercent,
                                msg.sender,
                                beneficiary,
                                fromToken,
                                toToken,
                                fromAmount,
                                receivedAmount,
                                expectedAmount
                            );

                            return receivedAmount;
                        }

                        /**
                         * @dev The function which performs the mega path swap.
                         * @param data Data required to perform swap.
                         */
                        function megaSwap(Utils.MegaSwapSellData memory data) public payable returns (uint256) {
                            require(data.deadline >= block.timestamp, "Deadline breached");
                            address fromToken = data.fromToken;
                            uint256 fromAmount = data.fromAmount;
                            require(msg.value == (fromToken == Utils.ethAddress() ? fromAmount : 0), "Incorrect msg.value");
                            uint256 toAmount = data.toAmount;
                            uint256 expectedAmount = data.expectedAmount;
                            address payable beneficiary = data.beneficiary == address(0) ? msg.sender : data.beneficiary;
                            Utils.MegaSwapPath[] memory path = data.path;
                            address toToken = path[0].path[path[0].path.length - 1].to;

                            require(toAmount > 0, "To amount can not be 0");

                            //if fromToken is not ETH then transfer tokens from user to this contract
                            transferTokensFromProxy(fromToken, fromAmount, data.permit);
                            if (_isTakeFeeFromSrcToken(data.feePercent)) {
                                // take fee from source token
                                fromAmount = takeFromTokenFee(fromToken, fromAmount, data.partner, data.feePercent);
                            }

                            for (uint8 i = 0; i < uint8(path.length); i++) {
                                uint256 _fromAmount = fromAmount.mul(path[i].fromAmountPercent).div(10000);
                                if (i == path.length - 1) {
                                    _fromAmount = Utils.tokenBalance(address(fromToken), address(this));
                                }
                                performSwap(fromToken, _fromAmount, path[i].path);
                            }

                            uint256 receivedAmount = Utils.tokenBalance(toToken, address(this));

                            require(receivedAmount >= toAmount, "Received amount of tokens are less then expected");

                            if (
                                _getFixedFeeBps(data.partner, data.feePercent) != 0 &&
                                !_isTakeFeeFromSrcToken(data.feePercent) &&
                                !_isReferral(data.feePercent)
                            ) {
                                // take fee from dest token
                                takeToTokenFeeAndTransfer(toToken, receivedAmount, beneficiary, data.partner, data.feePercent);
                            } else if (receivedAmount > expectedAmount && !_isTakeFeeFromSrcToken(data.feePercent)) {
                                takeSlippageAndTransferSell(
                                    toToken,
                                    beneficiary,
                                    data.partner,
                                    receivedAmount,
                                    expectedAmount,
                                    data.feePercent
                                );
                            } else {
                                // Fee is already taken from fromToken
                                // Transfer toToken to beneficiary
                                Utils.transferTokens(toToken, beneficiary, receivedAmount);
                            }

                            emit SwappedV3(
                                data.uuid,
                                data.partner,
                                data.feePercent,
                                msg.sender,
                                beneficiary,
                                fromToken,
                                toToken,
                                fromAmount,
                                receivedAmount,
                                expectedAmount
                            );

                            return receivedAmount;
                        }

                        //Helper function to perform swap
                        function performSwap(
                            address fromToken,
                            uint256 fromAmount,
                            Utils.Path[] memory path
                        ) private {
                            require(path.length > 0, "Path not provided for swap");

                            //Assuming path will not be too long to reach out of gas exception
                            for (uint256 i = 0; i < path.length; i++) {
                                //_fromToken will be either fromToken or toToken of the previous path
                                address _fromToken = i > 0 ? path[i - 1].to : fromToken;
                                address _toToken = path[i].to;

                                uint256 _fromAmount = i > 0 ? Utils.tokenBalance(_fromToken, address(this)) : fromAmount;

                                for (uint256 j = 0; j < path[i].adapters.length; j++) {
                                    Utils.Adapter memory adapter = path[i].adapters[j];

                                    //Check if exchange is supported
                                    require(
                                        IAugustusSwapperV5(address(this)).hasRole(WHITELISTED_ROLE, adapter.adapter),
                                        "Exchange not whitelisted"
                                    );

                                    //Calculating tokens to be passed to the relevant exchange
                                    //percentage should be 200 for 2%
                                    uint256 fromAmountSlice = i > 0 && j == path[i].adapters.length.sub(1)
                                        ? Utils.tokenBalance(address(_fromToken), address(this))
                                        : _fromAmount.mul(adapter.percent).div(10000);

                                    //DELEGATING CALL TO THE ADAPTER
                                    (bool success, ) = adapter.adapter.delegatecall(
                                        abi.encodeWithSelector(
                                            IAdapter.swap.selector,
                                            _fromToken,
                                            _toToken,
                                            fromAmountSlice,
                                            uint256(0), //adapter.networkFee,
                                            adapter.route
                                        )
                                    );

                                    require(success, "Call to adapter failed");
                                }
                            }
                        }

                        //Helper function to perform swap
                        function performBuy(
                            address adapter,
                            address fromToken,
                            address toToken,
                            uint256 fromAmount,
                            uint256 toAmount,
                            Utils.Route[] memory routes
                        ) private returns (uint256) {
                            //Check if exchange is supported
                            require(IAugustusSwapperV5(address(this)).hasRole(WHITELISTED_ROLE, adapter), "Exchange not whitelisted");

                            for (uint256 j = 0; j < routes.length; j++) {
                                Utils.Route memory route = routes[j];

                                uint256 fromAmountSlice;
                                uint256 toAmountSlice;

                                //last route
                                if (j == routes.length.sub(1)) {
                                    toAmountSlice = toAmount.sub(Utils.tokenBalance(address(toToken), address(this)));

                                    fromAmountSlice = Utils.tokenBalance(address(fromToken), address(this));
                                } else {
                                    fromAmountSlice = fromAmount.mul(route.percent).div(10000);
                                    toAmountSlice = toAmount.mul(route.percent).div(10000);
                                }

                                //delegate Call to the exchange
                                (bool success, ) = adapter.delegatecall(
                                    abi.encodeWithSelector(
                                        IBuyAdapter.buy.selector,
                                        route.index,
                                        fromToken,
                                        toToken,
                                        fromAmountSlice,
                                        toAmountSlice,
                                        route.targetExchange,
                                        route.payload
                                    )
                                );
                                require(success, "Call to adapter failed");
                            }

                            uint256 receivedAmount = Utils.tokenBalance(toToken, address(this));
                            require(receivedAmount >= toAmount, "Received amount of tokens are less then expected tokens");

                            return receivedAmount;
                        }

                        function transferTokensFromProxy(
                            address token,
                            uint256 amount,
                            bytes memory permit
                        ) private {
                            if (token != Utils.ethAddress()) {
                                Utils.permit(token, permit);
                                tokenTransferProxy.transferFrom(token, msg.sender, address(this), amount);
                            }
                        }
                    }
              abi:
                - type: constructor
                  name: ''
                  constant: false
                  anonymous: false
                  stateMutability: ''
                  inputs:
                    - name: _partnerSharePercent
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                    - name: _maxFeePercent
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                    - name: _paraswapReferralShare
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                    - name: _paraswapSlippageShare
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                    - name: _feeClaimer
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                  outputs: null
                - type: function
                  name: paraswapReferralShare
                  constant: false
                  anonymous: false
                  stateMutability: view
                  inputs: []
                  outputs:
                    - name: ''
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                - type: function
                  name: getKey
                  constant: false
                  anonymous: false
                  stateMutability: pure
                  inputs: []
                  outputs:
                    - name: ''
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                - type: function
                  name: maxFeePercent
                  constant: false
                  anonymous: false
                  stateMutability: view
                  inputs: []
                  outputs:
                    - name: ''
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                - type: function
                  name: megaSwap
                  constant: false
                  anonymous: false
                  stateMutability: payable
                  inputs:
                    - name: data
                      type: tuple
                      storage_location: default
                      components:
                        - name: fromToken
                          type: address
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: address
                        - name: fromAmount
                          type: uint256
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: uint
                        - name: toAmount
                          type: uint256
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: uint
                        - name: expectedAmount
                          type: uint256
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: uint
                        - name: beneficiary
                          type: address
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: address
                        - name: path
                          type: tuple[]
                          storage_location: default
                          components:
                            - name: fromAmountPercent
                              type: uint256
                              storage_location: default
                              offset: 0
                              index: >-
                                0x0000000000000000000000000000000000000000000000000000000000000000
                              indexed: false
                              simple_type:
                                type: uint
                            - name: path
                              type: tuple[]
                              storage_location: default
                              components:
                                - name: to
                                  type: address
                                  storage_location: default
                                  offset: 0
                                  index: >-
                                    0x0000000000000000000000000000000000000000000000000000000000000000
                                  indexed: false
                                  simple_type:
                                    type: address
                                - name: totalNetworkFee
                                  type: uint256
                                  storage_location: default
                                  offset: 0
                                  index: >-
                                    0x0000000000000000000000000000000000000000000000000000000000000000
                                  indexed: false
                                  simple_type:
                                    type: uint
                                - name: adapters
                                  type: tuple[]
                                  storage_location: default
                                  components:
                                    - name: adapter
                                      type: address
                                      storage_location: default
                                      offset: 0
                                      index: >-
                                        0x0000000000000000000000000000000000000000000000000000000000000000
                                      indexed: false
                                      simple_type:
                                        type: address
                                    - name: percent
                                      type: uint256
                                      storage_location: default
                                      offset: 0
                                      index: >-
                                        0x0000000000000000000000000000000000000000000000000000000000000000
                                      indexed: false
                                      simple_type:
                                        type: uint
                                    - name: networkFee
                                      type: uint256
                                      storage_location: default
                                      offset: 0
                                      index: >-
                                        0x0000000000000000000000000000000000000000000000000000000000000000
                                      indexed: false
                                      simple_type:
                                        type: uint
                                    - name: route
                                      type: tuple[]
                                      storage_location: default
                                      components:
                                        - name: index
                                          type: uint256
                                          storage_location: default
                                          offset: 0
                                          index: >-
                                            0x0000000000000000000000000000000000000000000000000000000000000000
                                          indexed: false
                                          simple_type:
                                            type: uint
                                        - name: targetExchange
                                          type: address
                                          storage_location: default
                                          offset: 0
                                          index: >-
                                            0x0000000000000000000000000000000000000000000000000000000000000000
                                          indexed: false
                                          simple_type:
                                            type: address
                                        - name: percent
                                          type: uint256
                                          storage_location: default
                                          offset: 0
                                          index: >-
                                            0x0000000000000000000000000000000000000000000000000000000000000000
                                          indexed: false
                                          simple_type:
                                            type: uint
                                        - name: payload
                                          type: bytes
                                          storage_location: default
                                          offset: 0
                                          index: >-
                                            0x0000000000000000000000000000000000000000000000000000000000000000
                                          indexed: false
                                          simple_type:
                                            type: bytes
                                        - name: networkFee
                                          type: uint256
                                          storage_location: default
                                          offset: 0
                                          index: >-
                                            0x0000000000000000000000000000000000000000000000000000000000000000
                                          indexed: false
                                          simple_type:
                                            type: uint
                                      offset: 0
                                      index: >-
                                        0x0000000000000000000000000000000000000000000000000000000000000000
                                      indexed: false
                                      simple_type:
                                        type: slice
                                  offset: 0
                                  index: >-
                                    0x0000000000000000000000000000000000000000000000000000000000000000
                                  indexed: false
                                  simple_type:
                                    type: slice
                              offset: 0
                              index: >-
                                0x0000000000000000000000000000000000000000000000000000000000000000
                              indexed: false
                              simple_type:
                                type: slice
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: slice
                        - name: partner
                          type: address
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: address
                        - name: feePercent
                          type: uint256
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: uint
                        - name: permit
                          type: bytes
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: bytes
                        - name: deadline
                          type: uint256
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: uint
                        - name: uuid
                          type: bytes16
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: bytes
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                  outputs:
                    - name: ''
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                - type: function
                  name: paraswapSlippageShare
                  constant: false
                  anonymous: false
                  stateMutability: view
                  inputs: []
                  outputs:
                    - name: ''
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                - type: function
                  name: ROUTER_ROLE
                  constant: false
                  anonymous: false
                  stateMutability: view
                  inputs: []
                  outputs:
                    - name: ''
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                - type: function
                  name: WHITELISTED_ROLE
                  constant: false
                  anonymous: false
                  stateMutability: view
                  inputs: []
                  outputs:
                    - name: ''
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                - type: function
                  name: feeClaimer
                  constant: false
                  anonymous: false
                  stateMutability: view
                  inputs: []
                  outputs:
                    - name: ''
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                - type: function
                  name: initialize
                  constant: false
                  anonymous: false
                  stateMutability: nonpayable
                  inputs:
                    - name: ''
                      type: bytes
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                  outputs: []
                - type: function
                  name: partnerSharePercent
                  constant: false
                  anonymous: false
                  stateMutability: view
                  inputs: []
                  outputs:
                    - name: ''
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                - type: function
                  name: buy
                  constant: false
                  anonymous: false
                  stateMutability: payable
                  inputs:
                    - name: data
                      type: tuple
                      storage_location: default
                      components:
                        - name: adapter
                          type: address
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: address
                        - name: fromToken
                          type: address
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: address
                        - name: toToken
                          type: address
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: address
                        - name: fromAmount
                          type: uint256
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: uint
                        - name: toAmount
                          type: uint256
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: uint
                        - name: expectedAmount
                          type: uint256
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: uint
                        - name: beneficiary
                          type: address
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: address
                        - name: route
                          type: tuple[]
                          storage_location: default
                          components:
                            - name: index
                              type: uint256
                              storage_location: default
                              offset: 0
                              index: >-
                                0x0000000000000000000000000000000000000000000000000000000000000000
                              indexed: false
                              simple_type:
                                type: uint
                            - name: targetExchange
                              type: address
                              storage_location: default
                              offset: 0
                              index: >-
                                0x0000000000000000000000000000000000000000000000000000000000000000
                              indexed: false
                              simple_type:
                                type: address
                            - name: percent
                              type: uint256
                              storage_location: default
                              offset: 0
                              index: >-
                                0x0000000000000000000000000000000000000000000000000000000000000000
                              indexed: false
                              simple_type:
                                type: uint
                            - name: payload
                              type: bytes
                              storage_location: default
                              offset: 0
                              index: >-
                                0x0000000000000000000000000000000000000000000000000000000000000000
                              indexed: false
                              simple_type:
                                type: bytes
                            - name: networkFee
                              type: uint256
                              storage_location: default
                              offset: 0
                              index: >-
                                0x0000000000000000000000000000000000000000000000000000000000000000
                              indexed: false
                              simple_type:
                                type: uint
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: slice
                        - name: partner
                          type: address
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: address
                        - name: feePercent
                          type: uint256
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: uint
                        - name: permit
                          type: bytes
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: bytes
                        - name: deadline
                          type: uint256
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: uint
                        - name: uuid
                          type: bytes16
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: bytes
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                  outputs:
                    - name: ''
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                - type: function
                  name: multiSwap
                  constant: false
                  anonymous: false
                  stateMutability: payable
                  inputs:
                    - name: data
                      type: tuple
                      storage_location: default
                      components:
                        - name: fromToken
                          type: address
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: address
                        - name: fromAmount
                          type: uint256
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: uint
                        - name: toAmount
                          type: uint256
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: uint
                        - name: expectedAmount
                          type: uint256
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: uint
                        - name: beneficiary
                          type: address
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: address
                        - name: path
                          type: tuple[]
                          storage_location: default
                          components:
                            - name: to
                              type: address
                              storage_location: default
                              offset: 0
                              index: >-
                                0x0000000000000000000000000000000000000000000000000000000000000000
                              indexed: false
                              simple_type:
                                type: address
                            - name: totalNetworkFee
                              type: uint256
                              storage_location: default
                              offset: 0
                              index: >-
                                0x0000000000000000000000000000000000000000000000000000000000000000
                              indexed: false
                              simple_type:
                                type: uint
                            - name: adapters
                              type: tuple[]
                              storage_location: default
                              components:
                                - name: adapter
                                  type: address
                                  storage_location: default
                                  offset: 0
                                  index: >-
                                    0x0000000000000000000000000000000000000000000000000000000000000000
                                  indexed: false
                                  simple_type:
                                    type: address
                                - name: percent
                                  type: uint256
                                  storage_location: default
                                  offset: 0
                                  index: >-
                                    0x0000000000000000000000000000000000000000000000000000000000000000
                                  indexed: false
                                  simple_type:
                                    type: uint
                                - name: networkFee
                                  type: uint256
                                  storage_location: default
                                  offset: 0
                                  index: >-
                                    0x0000000000000000000000000000000000000000000000000000000000000000
                                  indexed: false
                                  simple_type:
                                    type: uint
                                - name: route
                                  type: tuple[]
                                  storage_location: default
                                  components:
                                    - name: index
                                      type: uint256
                                      storage_location: default
                                      offset: 0
                                      index: >-
                                        0x0000000000000000000000000000000000000000000000000000000000000000
                                      indexed: false
                                      simple_type:
                                        type: uint
                                    - name: targetExchange
                                      type: address
                                      storage_location: default
                                      offset: 0
                                      index: >-
                                        0x0000000000000000000000000000000000000000000000000000000000000000
                                      indexed: false
                                      simple_type:
                                        type: address
                                    - name: percent
                                      type: uint256
                                      storage_location: default
                                      offset: 0
                                      index: >-
                                        0x0000000000000000000000000000000000000000000000000000000000000000
                                      indexed: false
                                      simple_type:
                                        type: uint
                                    - name: payload
                                      type: bytes
                                      storage_location: default
                                      offset: 0
                                      index: >-
                                        0x0000000000000000000000000000000000000000000000000000000000000000
                                      indexed: false
                                      simple_type:
                                        type: bytes
                                    - name: networkFee
                                      type: uint256
                                      storage_location: default
                                      offset: 0
                                      index: >-
                                        0x0000000000000000000000000000000000000000000000000000000000000000
                                      indexed: false
                                      simple_type:
                                        type: uint
                                  offset: 0
                                  index: >-
                                    0x0000000000000000000000000000000000000000000000000000000000000000
                                  indexed: false
                                  simple_type:
                                    type: slice
                              offset: 0
                              index: >-
                                0x0000000000000000000000000000000000000000000000000000000000000000
                              indexed: false
                              simple_type:
                                type: slice
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: slice
                        - name: partner
                          type: address
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: address
                        - name: feePercent
                          type: uint256
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: uint
                        - name: permit
                          type: bytes
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: bytes
                        - name: deadline
                          type: uint256
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: uint
                        - name: uuid
                          type: bytes16
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: bytes
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                  outputs:
                    - name: ''
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                - type: event
                  name: BoughtV3
                  constant: false
                  anonymous: false
                  stateMutability: ''
                  inputs:
                    - name: uuid
                      type: bytes16
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                    - name: partner
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                    - name: feePercent
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                    - name: initiator
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                    - name: beneficiary
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: true
                      simple_type:
                        type: address
                    - name: srcToken
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: true
                      simple_type:
                        type: address
                    - name: destToken
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: true
                      simple_type:
                        type: address
                    - name: srcAmount
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                    - name: receivedAmount
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                    - name: expectedAmount
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                  outputs: null
                - type: event
                  name: SwappedV3
                  constant: false
                  anonymous: false
                  stateMutability: ''
                  inputs:
                    - name: uuid
                      type: bytes16
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                    - name: partner
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                    - name: feePercent
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                    - name: initiator
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                    - name: beneficiary
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: true
                      simple_type:
                        type: address
                    - name: srcToken
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: true
                      simple_type:
                        type: address
                    - name: destToken
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: true
                      simple_type:
                        type: address
                    - name: srcAmount
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                    - name: receivedAmount
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                    - name: expectedAmount
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                  outputs: null
              raw_abi:
                - inputs:
                    - internalType: uint256
                      name: _partnerSharePercent
                      type: uint256
                    - internalType: uint256
                      name: _maxFeePercent
                      type: uint256
                    - internalType: uint256
                      name: _paraswapReferralShare
                      type: uint256
                    - internalType: uint256
                      name: _paraswapSlippageShare
                      type: uint256
                    - internalType: contract IFeeClaimer
                      name: _feeClaimer
                      type: address
                  stateMutability: nonpayable
                  type: constructor
                - anonymous: false
                  inputs:
                    - indexed: false
                      internalType: bytes16
                      name: uuid
                      type: bytes16
                    - indexed: false
                      internalType: address
                      name: partner
                      type: address
                    - indexed: false
                      internalType: uint256
                      name: feePercent
                      type: uint256
                    - indexed: false
                      internalType: address
                      name: initiator
                      type: address
                    - indexed: true
                      internalType: address
                      name: beneficiary
                      type: address
                    - indexed: true
                      internalType: address
                      name: srcToken
                      type: address
                    - indexed: true
                      internalType: address
                      name: destToken
                      type: address
                    - indexed: false
                      internalType: uint256
                      name: srcAmount
                      type: uint256
                    - indexed: false
                      internalType: uint256
                      name: receivedAmount
                      type: uint256
                    - indexed: false
                      internalType: uint256
                      name: expectedAmount
                      type: uint256
                  name: BoughtV3
                  type: event
                - anonymous: false
                  inputs:
                    - indexed: false
                      internalType: bytes16
                      name: uuid
                      type: bytes16
                    - indexed: false
                      internalType: address
                      name: partner
                      type: address
                    - indexed: false
                      internalType: uint256
                      name: feePercent
                      type: uint256
                    - indexed: false
                      internalType: address
                      name: initiator
                      type: address
                    - indexed: true
                      internalType: address
                      name: beneficiary
                      type: address
                    - indexed: true
                      internalType: address
                      name: srcToken
                      type: address
                    - indexed: true
                      internalType: address
                      name: destToken
                      type: address
                    - indexed: false
                      internalType: uint256
                      name: srcAmount
                      type: uint256
                    - indexed: false
                      internalType: uint256
                      name: receivedAmount
                      type: uint256
                    - indexed: false
                      internalType: uint256
                      name: expectedAmount
                      type: uint256
                  name: SwappedV3
                  type: event
                - inputs: []
                  name: ROUTER_ROLE
                  outputs:
                    - internalType: bytes32
                      name: ''
                      type: bytes32
                  stateMutability: view
                  type: function
                - inputs: []
                  name: WHITELISTED_ROLE
                  outputs:
                    - internalType: bytes32
                      name: ''
                      type: bytes32
                  stateMutability: view
                  type: function
                - inputs:
                    - components:
                        - internalType: address
                          name: adapter
                          type: address
                        - internalType: address
                          name: fromToken
                          type: address
                        - internalType: address
                          name: toToken
                          type: address
                        - internalType: uint256
                          name: fromAmount
                          type: uint256
                        - internalType: uint256
                          name: toAmount
                          type: uint256
                        - internalType: uint256
                          name: expectedAmount
                          type: uint256
                        - internalType: address payable
                          name: beneficiary
                          type: address
                        - components:
                            - internalType: uint256
                              name: index
                              type: uint256
                            - internalType: address
                              name: targetExchange
                              type: address
                            - internalType: uint256
                              name: percent
                              type: uint256
                            - internalType: bytes
                              name: payload
                              type: bytes
                            - internalType: uint256
                              name: networkFee
                              type: uint256
                          internalType: struct Utils.Route[]
                          name: route
                          type: tuple[]
                        - internalType: address payable
                          name: partner
                          type: address
                        - internalType: uint256
                          name: feePercent
                          type: uint256
                        - internalType: bytes
                          name: permit
                          type: bytes
                        - internalType: uint256
                          name: deadline
                          type: uint256
                        - internalType: bytes16
                          name: uuid
                          type: bytes16
                      internalType: struct Utils.BuyData
                      name: data
                      type: tuple
                  name: buy
                  outputs:
                    - internalType: uint256
                      name: ''
                      type: uint256
                  stateMutability: payable
                  type: function
                - inputs: []
                  name: feeClaimer
                  outputs:
                    - internalType: contract IFeeClaimer
                      name: ''
                      type: address
                  stateMutability: view
                  type: function
                - inputs: []
                  name: getKey
                  outputs:
                    - internalType: bytes32
                      name: ''
                      type: bytes32
                  stateMutability: pure
                  type: function
                - inputs:
                    - internalType: bytes
                      name: ''
                      type: bytes
                  name: initialize
                  outputs: []
                  stateMutability: nonpayable
                  type: function
                - inputs: []
                  name: maxFeePercent
                  outputs:
                    - internalType: uint256
                      name: ''
                      type: uint256
                  stateMutability: view
                  type: function
                - inputs:
                    - components:
                        - internalType: address
                          name: fromToken
                          type: address
                        - internalType: uint256
                          name: fromAmount
                          type: uint256
                        - internalType: uint256
                          name: toAmount
                          type: uint256
                        - internalType: uint256
                          name: expectedAmount
                          type: uint256
                        - internalType: address payable
                          name: beneficiary
                          type: address
                        - components:
                            - internalType: uint256
                              name: fromAmountPercent
                              type: uint256
                            - components:
                                - internalType: address
                                  name: to
                                  type: address
                                - internalType: uint256
                                  name: totalNetworkFee
                                  type: uint256
                                - components:
                                    - internalType: address payable
                                      name: adapter
                                      type: address
                                    - internalType: uint256
                                      name: percent
                                      type: uint256
                                    - internalType: uint256
                                      name: networkFee
                                      type: uint256
                                    - components:
                                        - internalType: uint256
                                          name: index
                                          type: uint256
                                        - internalType: address
                                          name: targetExchange
                                          type: address
                                        - internalType: uint256
                                          name: percent
                                          type: uint256
                                        - internalType: bytes
                                          name: payload
                                          type: bytes
                                        - internalType: uint256
                                          name: networkFee
                                          type: uint256
                                      internalType: struct Utils.Route[]
                                      name: route
                                      type: tuple[]
                                  internalType: struct Utils.Adapter[]
                                  name: adapters
                                  type: tuple[]
                              internalType: struct Utils.Path[]
                              name: path
                              type: tuple[]
                          internalType: struct Utils.MegaSwapPath[]
                          name: path
                          type: tuple[]
                        - internalType: address payable
                          name: partner
                          type: address
                        - internalType: uint256
                          name: feePercent
                          type: uint256
                        - internalType: bytes
                          name: permit
                          type: bytes
                        - internalType: uint256
                          name: deadline
                          type: uint256
                        - internalType: bytes16
                          name: uuid
                          type: bytes16
                      internalType: struct Utils.MegaSwapSellData
                      name: data
                      type: tuple
                  name: megaSwap
                  outputs:
                    - internalType: uint256
                      name: ''
                      type: uint256
                  stateMutability: payable
                  type: function
                - inputs:
                    - components:
                        - internalType: address
                          name: fromToken
                          type: address
                        - internalType: uint256
                          name: fromAmount
                          type: uint256
                        - internalType: uint256
                          name: toAmount
                          type: uint256
                        - internalType: uint256
                          name: expectedAmount
                          type: uint256
                        - internalType: address payable
                          name: beneficiary
                          type: address
                        - components:
                            - internalType: address
                              name: to
                              type: address
                            - internalType: uint256
                              name: totalNetworkFee
                              type: uint256
                            - components:
                                - internalType: address payable
                                  name: adapter
                                  type: address
                                - internalType: uint256
                                  name: percent
                                  type: uint256
                                - internalType: uint256
                                  name: networkFee
                                  type: uint256
                                - components:
                                    - internalType: uint256
                                      name: index
                                      type: uint256
                                    - internalType: address
                                      name: targetExchange
                                      type: address
                                    - internalType: uint256
                                      name: percent
                                      type: uint256
                                    - internalType: bytes
                                      name: payload
                                      type: bytes
                                    - internalType: uint256
                                      name: networkFee
                                      type: uint256
                                  internalType: struct Utils.Route[]
                                  name: route
                                  type: tuple[]
                              internalType: struct Utils.Adapter[]
                              name: adapters
                              type: tuple[]
                          internalType: struct Utils.Path[]
                          name: path
                          type: tuple[]
                        - internalType: address payable
                          name: partner
                          type: address
                        - internalType: uint256
                          name: feePercent
                          type: uint256
                        - internalType: bytes
                          name: permit
                          type: bytes
                        - internalType: uint256
                          name: deadline
                          type: uint256
                        - internalType: bytes16
                          name: uuid
                          type: bytes16
                      internalType: struct Utils.SellData
                      name: data
                      type: tuple
                  name: multiSwap
                  outputs:
                    - internalType: uint256
                      name: ''
                      type: uint256
                  stateMutability: payable
                  type: function
                - inputs: []
                  name: paraswapReferralShare
                  outputs:
                    - internalType: uint256
                      name: ''
                      type: uint256
                  stateMutability: view
                  type: function
                - inputs: []
                  name: paraswapSlippageShare
                  outputs:
                    - internalType: uint256
                      name: ''
                      type: uint256
                  stateMutability: view
                  type: function
                - inputs: []
                  name: partnerSharePercent
                  outputs:
                    - internalType: uint256
                      name: ''
                      type: uint256
                  stateMutability: view
                  type: function
              states:
                - name: adapterInitialized
                  type: mapping (bytes32 => bool)
                  storage_location: storage
                  offset: 0
                  index: >-
                    0x0000000000000000000000000000000000000000000000000000000000000004
                  indexed: false
                - name: adapterVsData
                  type: mapping (bytes32 => bytes)
                  storage_location: storage
                  offset: 0
                  index: >-
                    0x0000000000000000000000000000000000000000000000000000000000000005
                  indexed: false
                - name: routerData
                  type: mapping (bytes32 => bytes)
                  storage_location: storage
                  offset: 0
                  index: >-
                    0x0000000000000000000000000000000000000000000000000000000000000006
                  indexed: false
                - name: routerInitialized
                  type: mapping (bytes32 => bool)
                  storage_location: storage
                  offset: 0
                  index: >-
                    0x0000000000000000000000000000000000000000000000000000000000000007
                  indexed: false
                - name: tokenTransferProxy
                  type: address
                  storage_location: storage
                  offset: 0
                  index: >-
                    0x0000000000000000000000000000000000000000000000000000000000000000
                  indexed: false
                  simple_type:
                    type: address
                - name: feeWallet
                  type: address payable
                  storage_location: storage
                  offset: 0
                  index: >-
                    0x0000000000000000000000000000000000000000000000000000000000000001
                  indexed: false
                  simple_type:
                    type: address payable
                - name: registeredPartners
                  type: mapping (address => tuple)
                  storage_location: memory
                  components:
                    - name: partnerShare
                      type: uint256
                      storage_location: memory
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                    - name: noPositiveSlippage
                      type: bool
                      storage_location: memory
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000001
                      indexed: false
                      simple_type:
                        type: bool
                    - name: positiveSlippageToUser
                      type: bool
                      storage_location: memory
                      offset: 8
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000001
                      indexed: false
                      simple_type:
                        type: bool
                    - name: feePercent
                      type: uint16
                      storage_location: memory
                      offset: 16
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000001
                      indexed: false
                      simple_type:
                        type: uint
                    - name: partnerId
                      type: string
                      storage_location: memory
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000002
                      indexed: false
                      simple_type:
                        type: string
                    - name: data
                      type: bytes
                      storage_location: memory
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000003
                      indexed: false
                      simple_type:
                        type: bytes
                  offset: 0
                  index: >-
                    0x0000000000000000000000000000000000000000000000000000000000000002
                  indexed: false
                - name: selectorVsRouter
                  type: mapping (bytes4 => address)
                  storage_location: storage
                  offset: 0
                  index: >-
                    0x0000000000000000000000000000000000000000000000000000000000000003
                  indexed: false
            src_map:
              '0':
                r: '316:13499:14'
                s: 316
                l: 13499
                ln: 14
                c: 1
                f: 14
                j: '-'
              '2':
                r: '316:13499:14'
                s: 316
                l: 13499
                ln: 14
                c: 1
                f: 14
                j: '-'
            creation_block: 0
            creation_tx: ''
            creator_address: ''
            created_at: '2023-06-13T17:26:36Z'
            language: solidity
            in_project: false
          - id: eth:1:0xdef171fe48cf0115b1d80b88dc8eab59176fee57
            contract_id: eth:1:0xdef171fe48cf0115b1d80b88dc8eab59176fee57
            balance: ''
            network_id: '1'
            public: true
            verified_by: etherscan
            verification_date: '2021-08-18T12:43:57Z'
            address: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
            contract_name: AugustusSwapper
            ens_domain: null
            type: contract
            evm_version: istanbul
            compiler_version: v0.7.5+commit.eb77ed08
            optimizations_used: true
            optimization_runs: 1000000
            libraries: null
            compiler_settings:
              optimizer:
                enabled: true
                runs: 1000000
              evmVersion: istanbul
              metadata:
                useLiteralContent: true
            deployed_bytecode: >-
              0x60806040526004361061019a5760003560e01c80639010d07c116100e1578063a64b6e5f1161008a578063ca15c87311610064578063ca15c873146105eb578063d2c4b5981461060b578063d547741f14610620578063dc9cc64514610640576101a1565b8063a64b6e5f1461058b578063aa5b2458146105ab578063aa97ef02146105cb576101a1565b80639812f33b116100bb5780639812f33b146105365780639a5a98d314610556578063a217fddf14610576576101a1565b80639010d07c146104d657806390d49b9d146104f657806391d1485414610516576101a1565b806336568abe1161014357806360e355071161011d57806360e35507146104745780636df77496146104945780637a3226ec146104c1576101a1565b806336568abe146104055780633a9243d7146104255780635459060d14610452576101a1565b8063248a9ca311610174578063248a9ca3146103a35780632f2ff15d146103d057806330d643b5146103f0576101a1565b80630815f6fd146103365780630d8e6e2c146103585780631880021914610383576101a1565b366101a157005b600080357fffffffff0000000000000000000000000000000000000000000000000000000016905060006101d48261065b565b905073ffffffffffffffffffffffffffffffffffffffff81166102a8576102a87f734e6e1c6ec3f883cac8d13d3e7390b280f5e94424662aa29e27394ed56586c9836040516024016102269190612082565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526106a9565b600060608273ffffffffffffffffffffffffffffffffffffffff166000366040516102d4929190611ff8565b600060405180830381855af49150503d806000811461030f576040519150601f19603f3d011682016040523d82523d6000602084013e610314565b606091505b50915091508161032757610327816106a9565b610330816106b1565b50505050005b34801561034257600080fd5b50610356610351366004611f83565b6106b9565b005b34801561036457600080fd5b5061036d6107da565b60405161037a91906120fc565b60405180910390f35b34801561038f57600080fd5b5061035661039e366004611dc9565b610811565b3480156103af57600080fd5b506103c36103be366004611f01565b610a31565b60405161037a9190612079565b3480156103dc57600080fd5b506103566103eb366004611f19565b610a46565b3480156103fc57600080fd5b506103c3610aa8565b34801561041157600080fd5b50610356610420366004611f19565b610acc565b34801561043157600080fd5b50610445610440366004611f01565b610b42565b60405161037a919061206e565b34801561045e57600080fd5b50610467610b57565b60405161037a9190612027565b34801561048057600080fd5b5061035661048f366004611dc9565b610b73565b3480156104a057600080fd5b506104b46104af366004611d6d565b610d93565b60405161037a91906125d1565b3480156104cd57600080fd5b506103c3610f6a565b3480156104e257600080fd5b506104676104f1366004611f48565b610f8e565b34801561050257600080fd5b50610356610511366004611d6d565b610faf565b34801561052257600080fd5b50610445610531366004611f19565b611084565b34801561054257600080fd5b50610445610551366004611f01565b61109c565b34801561056257600080fd5b5061036d610571366004611f01565b6110b1565b34801561058257600080fd5b506103c3611170565b34801561059757600080fd5b506103566105a6366004611d89565b611175565b3480156105b757600080fd5b506103566105c6366004611e1c565b6112c2565b3480156105d757600080fd5b5061036d6105e6366004611f01565b6114ef565b3480156105f757600080fd5b506103c3610606366004611f01565b611577565b34801561061757600080fd5b5061046761158e565b34801561062c57600080fd5b5061035661063b366004611f19565b6115aa565b34801561064c57600080fd5b5061046761065b366004611f69565b7fffffffff00000000000000000000000000000000000000000000000000000000811660009081526003602052604090205473ffffffffffffffffffffffffffffffffffffffff165b919050565b805160208201fd5b805160208201f35b6106c4600033611084565b610703576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa9061253d565b60405180910390fd5b61072d7f7a05a596cb0ce7fdea8a1e1ec73be300bdb35097c944ce1897202f7a13122eb282611084565b610763576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa906123a7565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116600090815260036020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055565b60408051808201909152600581527f352e302e30000000000000000000000000000000000000000000000000000000602082015290565b61081c600033611084565b610852576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa9061253d565b61087c7f8429d542926e6695b59ac6fbdcd9b37e8b1aeb757afab06ab60b1bb5878c3b4984611084565b6108b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa90612472565b60008373ffffffffffffffffffffffffffffffffffffffff1663439fab9160e01b84846040516024016108e69291906120af565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161096f9190612008565b600060405180830381855af49150503d80600081146109aa576040519150601f19603f3d011682016040523d82523d6000602084013e6109af565b606091505b50509050806109ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa906122dc565b60405173ffffffffffffffffffffffffffffffffffffffff8516907f4aa65286df310c4e8390d962c75f50380b8260d96ea27cf14847cd683e22d9db90600090a250505050565b60009081526008602052604090206002015490565b600082815260086020526040902060020154610a6490610531611620565b610a9a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa906121a3565b610aa48282611624565b5050565b7f7a05a596cb0ce7fdea8a1e1ec73be300bdb35097c944ce1897202f7a13122eb281565b610ad4611620565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b38576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa90612574565b610aa482826116a7565b60009081526004602052604090205460ff1690565b60015473ffffffffffffffffffffffffffffffffffffffff1690565b610b7e600033611084565b610bb4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa9061253d565b610bde7f7a05a596cb0ce7fdea8a1e1ec73be300bdb35097c944ce1897202f7a13122eb284611084565b610c14576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa90612313565b60008373ffffffffffffffffffffffffffffffffffffffff1663439fab9160e01b8484604051602401610c489291906120af565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051610cd19190612008565b600060405180830381855af49150503d8060008114610d0c576040519150601f19603f3d011682016040523d82523d6000602084013e610d11565b606091505b5050905080610d4c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa9061226e565b60405173ffffffffffffffffffffffffffffffffffffffff8516907f2622745e83f97f2d871ef785497c1eeba6f9bb94c7dd486cf28228e814d929e490600090a250505050565b610d9b611bf9565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260026020818152604092839020835160c0810185528154815260018083015460ff8082161515848701526101008083049091161515848901526201000090910461ffff16606084015283860180548851938116159092027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190911695909504601f810185900485028201850190965285815290949193608086019391929091830182828015610ea85780601f10610e7d57610100808354040283529160200191610ea8565b820191906000526020600020905b815481529060010190602001808311610e8b57829003601f168201915b505050918352505060038201805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f8101849004840282018401909252818152938201939291830182828015610f5a5780601f10610f2f57610100808354040283529160200191610f5a565b820191906000526020600020905b815481529060010190602001808311610f3d57829003601f168201915b5050505050815250509050919050565b7f8429d542926e6695b59ac6fbdcd9b37e8b1aeb757afab06ab60b1bb5878c3b4981565b6000828152600860205260408120610fa6908361172a565b90505b92915050565b610fba600033611084565b610ff0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa9061253d565b73ffffffffffffffffffffffffffffffffffffffff811661103d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa90612200565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000828152600860205260408120610fa69083611736565b60009081526007602052604090205460ff1690565b60008181526005602090815260409182902080548351601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156111645780601f1061113957610100808354040283529160200191611164565b820191906000526020600020905b81548152906001019060200180831161114757829003601f168201915b50505050509050919050565b600081565b611180600033611084565b6111b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa9061253d565b80156112bd5773ffffffffffffffffffffffffffffffffffffffff831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561129c5760008273ffffffffffffffffffffffffffffffffffffffff16826127109060405161121890612024565b600060405180830381858888f193505050503d8060008114611256576040519150601f19603f3d011682016040523d82523d6000602084013e61125b565b606091505b5050905080611296576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa9061210f565b506112bd565b6112bd73ffffffffffffffffffffffffffffffffffffffff84168383611758565b505050565b6112cd600033611084565b611303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa9061253d565b73ffffffffffffffffffffffffffffffffffffffff8916611350576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa9061243b565b73ffffffffffffffffffffffffffffffffffffffff891660009081526002602052604090208054156113ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa906122a5565b6000891180156113bf575061271089105b6113f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa90612237565b6127108661ffff161115611435576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa90612237565b8881556001810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016891515177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101008915150217905561149e600282018686611c37565b506001810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff166201000061ffff8916021790556114e2600382018484611c37565b5050505050505050505050565b60008181526006602090815260409182902080548351601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156111645780601f1061113957610100808354040283529160200191611164565b6000818152600860205260408120610fa9906117f9565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6000828152600860205260409020600201546115c890610531611620565b610b38576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa906123de565b6000610fa68373ffffffffffffffffffffffffffffffffffffffff8416611804565b3390565b600082815260086020526040902061163c90826115fe565b15610aa457611649611620565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526008602052604090206116bf908261184e565b15610aa4576116cc611620565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b6000610fa68383611870565b6000610fa68373ffffffffffffffffffffffffffffffffffffffff84166118cf565b6112bd8363a9059cbb60e01b8484604051602401611777929190612048565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526118e7565b6000610fa98261199d565b600061181083836118cf565b61184657508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610fa9565b506000610fa9565b6000610fa68373ffffffffffffffffffffffffffffffffffffffff84166119a1565b815460009082106118ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa90612146565b8260000182815481106118bc57fe5b9060005260206000200154905092915050565b60009081526001919091016020526040902054151590565b6060611949826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611a859092919063ffffffff16565b8051909150156112bd57808060200190518101906119679190611ee5565b6112bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa906124e0565b5490565b60008181526001830160205260408120548015611a7b5783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80830191908101906000908790839081106119f257fe5b9060005260206000200154905080876000018481548110611a0f57fe5b600091825260208083209091019290925582815260018981019092526040902090840190558654879080611a3f57fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610fa9565b6000915050610fa9565b6060611a948484600085611a9e565b90505b9392505050565b606082471015611ada576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa9061234a565b611ae385611ba0565b611b19576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa906124a9565b600060608673ffffffffffffffffffffffffffffffffffffffff168587604051611b439190612008565b60006040518083038185875af1925050503d8060008114611b80576040519150601f19603f3d011682016040523d82523d6000602084013e611b85565b606091505b5091509150611b95828286611ba6565b979650505050505050565b3b151590565b60608315611bb5575081611a97565b825115611bc55782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa91906120fc565b6040518060c0016040528060008152602001600015158152602001600015158152602001600061ffff16815260200160608152602001606081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282611c6d5760008555611cd1565b82601f10611ca4578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00823516178555611cd1565b82800160010185558215611cd1579182015b82811115611cd1578235825591602001919060010190611cb6565b50611cdd929150611ce1565b5090565b5b80821115611cdd5760008155600101611ce2565b80357fffffffff00000000000000000000000000000000000000000000000000000000811681146106a457600080fd5b60008083601f840112611d37578182fd5b50813567ffffffffffffffff811115611d4e578182fd5b602083019150836020828501011115611d6657600080fd5b9250929050565b600060208284031215611d7e578081fd5b8135611a9781612691565b600080600060608486031215611d9d578182fd5b8335611da881612691565b92506020840135611db881612691565b929592945050506040919091013590565b600080600060408486031215611ddd578283fd5b8335611de881612691565b9250602084013567ffffffffffffffff811115611e03578283fd5b611e0f86828701611d26565b9497909650939450505050565b600080600080600080600080600060e08a8c031215611e39578485fd5b8935611e4481612691565b985060208a0135975060408a0135611e5b816126b6565b965060608a0135611e6b816126b6565b955060808a013561ffff81168114611e81578586fd5b945060a08a013567ffffffffffffffff80821115611e9d578586fd5b611ea98d838e01611d26565b909650945060c08c0135915080821115611ec1578384fd5b50611ece8c828d01611d26565b915080935050809150509295985092959850929598565b600060208284031215611ef6578081fd5b8151611a97816126b6565b600060208284031215611f12578081fd5b5035919050565b60008060408385031215611f2b578182fd5b823591506020830135611f3d81612691565b809150509250929050565b60008060408385031215611f5a578182fd5b50508035926020909101359150565b600060208284031215611f7a578081fd5b610fa682611cf6565b60008060408385031215611f95578182fd5b611f9e83611cf6565b91506020830135611f3d81612691565b60008151808452611fc6816020860160208601612661565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000828483379101908152919050565b6000825161201a818460208701612661565b9190910192915050565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b90815260200190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b60006020825282602083015282846040840137818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101919050565b600060208252610fa66020830184611fae565b60208082526018908201527f4661696c656420746f207472616e736665722045746865720000000000000000604082015260600190565b60208082526022908201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60408201527f6473000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252602f908201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60408201527f2061646d696e20746f206772616e740000000000000000000000000000000000606082015260800190565b6020808252600f908201527f496e76616c696420616464726573730000000000000000000000000000000000604082015260600190565b6020808252600e908201527f496e76616c69642076616c756573000000000000000000000000000000000000604082015260600190565b6020808252601b908201527f4661696c656420746f20696e697469616c697a6520726f757465720000000000604082015260600190565b60208082526012908201527f416c726561647920726567697374657265640000000000000000000000000000604082015260600190565b6020808252601c908201527f4661696c656420746f20696e697469616c697a65206164617074657200000000604082015260600190565b60208082526016908201527f526f75746572206e6f742077686974656c697374656400000000000000000000604082015260600190565b60208082526026908201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60408201527f722063616c6c0000000000000000000000000000000000000000000000000000606082015260800190565b60208082526019908201527f526f75746572206973206e6f742077686974656c697374656400000000000000604082015260600190565b60208082526030908201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60408201527f2061646d696e20746f207265766f6b6500000000000000000000000000000000606082015260800190565b6020808252600f908201527f496e76616c696420706172746e65720000000000000000000000000000000000604082015260600190565b60208082526018908201527f45786368616e6765206e6f742077686974656c69737465640000000000000000604082015260600190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60408201527f6f74207375636365656400000000000000000000000000000000000000000000606082015260800190565b60208082526017908201527f63616c6c6572206973206e6f74207468652061646d696e000000000000000000604082015260600190565b6020808252602f908201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560408201527f20726f6c657320666f722073656c660000000000000000000000000000000000606082015260800190565b6000602082528251602083015260208301511515604083015260408301511515606083015261ffff6060840151166080830152608083015160c060a084015261261d60e0840182611fae565b905060a08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160c08501526126588282611fae565b95945050505050565b60005b8381101561267c578181015183820152602001612664565b8381111561268b576000848401525b50505050565b73ffffffffffffffffffffffffffffffffffffffff811681146126b357600080fd5b50565b80151581146126b357600080fdfea26469706673582212203fd8ae4e6506de07cbbca3cda754ae71293e8b3e0ba4c10c5c5bdfec31c3ff2464736f6c63430007050033
            creation_bytecode: >-
              0x60806040523480156200001157600080fd5b5060405162003395380380620033958339810160408190526200003491620001c9565b60006040516200004490620001bb565b604051809103906000f08015801562000061573d6000803e3d6000fd5b50600080546001600160a01b038084166001600160a01b031992831617835560018054918716919092161790559091506200009d9033620000a5565b5050620001f9565b620000b18282620000b5565b5050565b6000828152600860209081526040909120620000dc918390620015fe62000130821b17901c565b15620000b157620000ec62000150565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600062000147836001600160a01b03841662000154565b90505b92915050565b3390565b6000620001628383620001a3565b6200019a575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556200014a565b5060006200014a565b60009081526001919091016020526040902054151590565b610a92806200290383390190565b600060208284031215620001db578081fd5b81516001600160a01b0381168114620001f2578182fd5b9392505050565b6126fa80620002096000396000f3fe60806040526004361061019a5760003560e01c80639010d07c116100e1578063a64b6e5f1161008a578063ca15c87311610064578063ca15c873146105eb578063d2c4b5981461060b578063d547741f14610620578063dc9cc64514610640576101a1565b8063a64b6e5f1461058b578063aa5b2458146105ab578063aa97ef02146105cb576101a1565b80639812f33b116100bb5780639812f33b146105365780639a5a98d314610556578063a217fddf14610576576101a1565b80639010d07c146104d657806390d49b9d146104f657806391d1485414610516576101a1565b806336568abe1161014357806360e355071161011d57806360e35507146104745780636df77496146104945780637a3226ec146104c1576101a1565b806336568abe146104055780633a9243d7146104255780635459060d14610452576101a1565b8063248a9ca311610174578063248a9ca3146103a35780632f2ff15d146103d057806330d643b5146103f0576101a1565b80630815f6fd146103365780630d8e6e2c146103585780631880021914610383576101a1565b366101a157005b600080357fffffffff0000000000000000000000000000000000000000000000000000000016905060006101d48261065b565b905073ffffffffffffffffffffffffffffffffffffffff81166102a8576102a87f734e6e1c6ec3f883cac8d13d3e7390b280f5e94424662aa29e27394ed56586c9836040516024016102269190612082565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526106a9565b600060608273ffffffffffffffffffffffffffffffffffffffff166000366040516102d4929190611ff8565b600060405180830381855af49150503d806000811461030f576040519150601f19603f3d011682016040523d82523d6000602084013e610314565b606091505b50915091508161032757610327816106a9565b610330816106b1565b50505050005b34801561034257600080fd5b50610356610351366004611f83565b6106b9565b005b34801561036457600080fd5b5061036d6107da565b60405161037a91906120fc565b60405180910390f35b34801561038f57600080fd5b5061035661039e366004611dc9565b610811565b3480156103af57600080fd5b506103c36103be366004611f01565b610a31565b60405161037a9190612079565b3480156103dc57600080fd5b506103566103eb366004611f19565b610a46565b3480156103fc57600080fd5b506103c3610aa8565b34801561041157600080fd5b50610356610420366004611f19565b610acc565b34801561043157600080fd5b50610445610440366004611f01565b610b42565b60405161037a919061206e565b34801561045e57600080fd5b50610467610b57565b60405161037a9190612027565b34801561048057600080fd5b5061035661048f366004611dc9565b610b73565b3480156104a057600080fd5b506104b46104af366004611d6d565b610d93565b60405161037a91906125d1565b3480156104cd57600080fd5b506103c3610f6a565b3480156104e257600080fd5b506104676104f1366004611f48565b610f8e565b34801561050257600080fd5b50610356610511366004611d6d565b610faf565b34801561052257600080fd5b50610445610531366004611f19565b611084565b34801561054257600080fd5b50610445610551366004611f01565b61109c565b34801561056257600080fd5b5061036d610571366004611f01565b6110b1565b34801561058257600080fd5b506103c3611170565b34801561059757600080fd5b506103566105a6366004611d89565b611175565b3480156105b757600080fd5b506103566105c6366004611e1c565b6112c2565b3480156105d757600080fd5b5061036d6105e6366004611f01565b6114ef565b3480156105f757600080fd5b506103c3610606366004611f01565b611577565b34801561061757600080fd5b5061046761158e565b34801561062c57600080fd5b5061035661063b366004611f19565b6115aa565b34801561064c57600080fd5b5061046761065b366004611f69565b7fffffffff00000000000000000000000000000000000000000000000000000000811660009081526003602052604090205473ffffffffffffffffffffffffffffffffffffffff165b919050565b805160208201fd5b805160208201f35b6106c4600033611084565b610703576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa9061253d565b60405180910390fd5b61072d7f7a05a596cb0ce7fdea8a1e1ec73be300bdb35097c944ce1897202f7a13122eb282611084565b610763576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa906123a7565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116600090815260036020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055565b60408051808201909152600581527f352e302e30000000000000000000000000000000000000000000000000000000602082015290565b61081c600033611084565b610852576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa9061253d565b61087c7f8429d542926e6695b59ac6fbdcd9b37e8b1aeb757afab06ab60b1bb5878c3b4984611084565b6108b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa90612472565b60008373ffffffffffffffffffffffffffffffffffffffff1663439fab9160e01b84846040516024016108e69291906120af565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161096f9190612008565b600060405180830381855af49150503d80600081146109aa576040519150601f19603f3d011682016040523d82523d6000602084013e6109af565b606091505b50509050806109ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa906122dc565b60405173ffffffffffffffffffffffffffffffffffffffff8516907f4aa65286df310c4e8390d962c75f50380b8260d96ea27cf14847cd683e22d9db90600090a250505050565b60009081526008602052604090206002015490565b600082815260086020526040902060020154610a6490610531611620565b610a9a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa906121a3565b610aa48282611624565b5050565b7f7a05a596cb0ce7fdea8a1e1ec73be300bdb35097c944ce1897202f7a13122eb281565b610ad4611620565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b38576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa90612574565b610aa482826116a7565b60009081526004602052604090205460ff1690565b60015473ffffffffffffffffffffffffffffffffffffffff1690565b610b7e600033611084565b610bb4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa9061253d565b610bde7f7a05a596cb0ce7fdea8a1e1ec73be300bdb35097c944ce1897202f7a13122eb284611084565b610c14576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa90612313565b60008373ffffffffffffffffffffffffffffffffffffffff1663439fab9160e01b8484604051602401610c489291906120af565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051610cd19190612008565b600060405180830381855af49150503d8060008114610d0c576040519150601f19603f3d011682016040523d82523d6000602084013e610d11565b606091505b5050905080610d4c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa9061226e565b60405173ffffffffffffffffffffffffffffffffffffffff8516907f2622745e83f97f2d871ef785497c1eeba6f9bb94c7dd486cf28228e814d929e490600090a250505050565b610d9b611bf9565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260026020818152604092839020835160c0810185528154815260018083015460ff8082161515848701526101008083049091161515848901526201000090910461ffff16606084015283860180548851938116159092027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190911695909504601f810185900485028201850190965285815290949193608086019391929091830182828015610ea85780601f10610e7d57610100808354040283529160200191610ea8565b820191906000526020600020905b815481529060010190602001808311610e8b57829003601f168201915b505050918352505060038201805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f8101849004840282018401909252818152938201939291830182828015610f5a5780601f10610f2f57610100808354040283529160200191610f5a565b820191906000526020600020905b815481529060010190602001808311610f3d57829003601f168201915b5050505050815250509050919050565b7f8429d542926e6695b59ac6fbdcd9b37e8b1aeb757afab06ab60b1bb5878c3b4981565b6000828152600860205260408120610fa6908361172a565b90505b92915050565b610fba600033611084565b610ff0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa9061253d565b73ffffffffffffffffffffffffffffffffffffffff811661103d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa90612200565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000828152600860205260408120610fa69083611736565b60009081526007602052604090205460ff1690565b60008181526005602090815260409182902080548351601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156111645780601f1061113957610100808354040283529160200191611164565b820191906000526020600020905b81548152906001019060200180831161114757829003601f168201915b50505050509050919050565b600081565b611180600033611084565b6111b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa9061253d565b80156112bd5773ffffffffffffffffffffffffffffffffffffffff831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561129c5760008273ffffffffffffffffffffffffffffffffffffffff16826127109060405161121890612024565b600060405180830381858888f193505050503d8060008114611256576040519150601f19603f3d011682016040523d82523d6000602084013e61125b565b606091505b5050905080611296576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa9061210f565b506112bd565b6112bd73ffffffffffffffffffffffffffffffffffffffff84168383611758565b505050565b6112cd600033611084565b611303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa9061253d565b73ffffffffffffffffffffffffffffffffffffffff8916611350576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa9061243b565b73ffffffffffffffffffffffffffffffffffffffff891660009081526002602052604090208054156113ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa906122a5565b6000891180156113bf575061271089105b6113f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa90612237565b6127108661ffff161115611435576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa90612237565b8881556001810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016891515177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101008915150217905561149e600282018686611c37565b506001810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff166201000061ffff8916021790556114e2600382018484611c37565b5050505050505050505050565b60008181526006602090815260409182902080548351601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156111645780601f1061113957610100808354040283529160200191611164565b6000818152600860205260408120610fa9906117f9565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6000828152600860205260409020600201546115c890610531611620565b610b38576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa906123de565b6000610fa68373ffffffffffffffffffffffffffffffffffffffff8416611804565b3390565b600082815260086020526040902061163c90826115fe565b15610aa457611649611620565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526008602052604090206116bf908261184e565b15610aa4576116cc611620565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b6000610fa68383611870565b6000610fa68373ffffffffffffffffffffffffffffffffffffffff84166118cf565b6112bd8363a9059cbb60e01b8484604051602401611777929190612048565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526118e7565b6000610fa98261199d565b600061181083836118cf565b61184657508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610fa9565b506000610fa9565b6000610fa68373ffffffffffffffffffffffffffffffffffffffff84166119a1565b815460009082106118ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa90612146565b8260000182815481106118bc57fe5b9060005260206000200154905092915050565b60009081526001919091016020526040902054151590565b6060611949826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611a859092919063ffffffff16565b8051909150156112bd57808060200190518101906119679190611ee5565b6112bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa906124e0565b5490565b60008181526001830160205260408120548015611a7b5783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80830191908101906000908790839081106119f257fe5b9060005260206000200154905080876000018481548110611a0f57fe5b600091825260208083209091019290925582815260018981019092526040902090840190558654879080611a3f57fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610fa9565b6000915050610fa9565b6060611a948484600085611a9e565b90505b9392505050565b606082471015611ada576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa9061234a565b611ae385611ba0565b611b19576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa906124a9565b600060608673ffffffffffffffffffffffffffffffffffffffff168587604051611b439190612008565b60006040518083038185875af1925050503d8060008114611b80576040519150601f19603f3d011682016040523d82523d6000602084013e611b85565b606091505b5091509150611b95828286611ba6565b979650505050505050565b3b151590565b60608315611bb5575081611a97565b825115611bc55782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa91906120fc565b6040518060c0016040528060008152602001600015158152602001600015158152602001600061ffff16815260200160608152602001606081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282611c6d5760008555611cd1565b82601f10611ca4578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00823516178555611cd1565b82800160010185558215611cd1579182015b82811115611cd1578235825591602001919060010190611cb6565b50611cdd929150611ce1565b5090565b5b80821115611cdd5760008155600101611ce2565b80357fffffffff00000000000000000000000000000000000000000000000000000000811681146106a457600080fd5b60008083601f840112611d37578182fd5b50813567ffffffffffffffff811115611d4e578182fd5b602083019150836020828501011115611d6657600080fd5b9250929050565b600060208284031215611d7e578081fd5b8135611a9781612691565b600080600060608486031215611d9d578182fd5b8335611da881612691565b92506020840135611db881612691565b929592945050506040919091013590565b600080600060408486031215611ddd578283fd5b8335611de881612691565b9250602084013567ffffffffffffffff811115611e03578283fd5b611e0f86828701611d26565b9497909650939450505050565b600080600080600080600080600060e08a8c031215611e39578485fd5b8935611e4481612691565b985060208a0135975060408a0135611e5b816126b6565b965060608a0135611e6b816126b6565b955060808a013561ffff81168114611e81578586fd5b945060a08a013567ffffffffffffffff80821115611e9d578586fd5b611ea98d838e01611d26565b909650945060c08c0135915080821115611ec1578384fd5b50611ece8c828d01611d26565b915080935050809150509295985092959850929598565b600060208284031215611ef6578081fd5b8151611a97816126b6565b600060208284031215611f12578081fd5b5035919050565b60008060408385031215611f2b578182fd5b823591506020830135611f3d81612691565b809150509250929050565b60008060408385031215611f5a578182fd5b50508035926020909101359150565b600060208284031215611f7a578081fd5b610fa682611cf6565b60008060408385031215611f95578182fd5b611f9e83611cf6565b91506020830135611f3d81612691565b60008151808452611fc6816020860160208601612661565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000828483379101908152919050565b6000825161201a818460208701612661565b9190910192915050565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b90815260200190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b60006020825282602083015282846040840137818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101919050565b600060208252610fa66020830184611fae565b60208082526018908201527f4661696c656420746f207472616e736665722045746865720000000000000000604082015260600190565b60208082526022908201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60408201527f6473000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252602f908201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60408201527f2061646d696e20746f206772616e740000000000000000000000000000000000606082015260800190565b6020808252600f908201527f496e76616c696420616464726573730000000000000000000000000000000000604082015260600190565b6020808252600e908201527f496e76616c69642076616c756573000000000000000000000000000000000000604082015260600190565b6020808252601b908201527f4661696c656420746f20696e697469616c697a6520726f757465720000000000604082015260600190565b60208082526012908201527f416c726561647920726567697374657265640000000000000000000000000000604082015260600190565b6020808252601c908201527f4661696c656420746f20696e697469616c697a65206164617074657200000000604082015260600190565b60208082526016908201527f526f75746572206e6f742077686974656c697374656400000000000000000000604082015260600190565b60208082526026908201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60408201527f722063616c6c0000000000000000000000000000000000000000000000000000606082015260800190565b60208082526019908201527f526f75746572206973206e6f742077686974656c697374656400000000000000604082015260600190565b60208082526030908201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60408201527f2061646d696e20746f207265766f6b6500000000000000000000000000000000606082015260800190565b6020808252600f908201527f496e76616c696420706172746e65720000000000000000000000000000000000604082015260600190565b60208082526018908201527f45786368616e6765206e6f742077686974656c69737465640000000000000000604082015260600190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60408201527f6f74207375636365656400000000000000000000000000000000000000000000606082015260800190565b60208082526017908201527f63616c6c6572206973206e6f74207468652061646d696e000000000000000000604082015260600190565b6020808252602f908201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560408201527f20726f6c657320666f722073656c660000000000000000000000000000000000606082015260800190565b6000602082528251602083015260208301511515604083015260408301511515606083015261ffff6060840151166080830152608083015160c060a084015261261d60e0840182611fae565b905060a08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160c08501526126588282611fae565b95945050505050565b60005b8381101561267c578181015183820152602001612664565b8381111561268b576000848401525b50505050565b73ffffffffffffffffffffffffffffffffffffffff811681146126b357600080fd5b50565b80151581146126b357600080fdfea2646970667358221220a9b3d1d743a9ede017488b662cc75bc60451efffa74dede19e76ef93e9149cad64736f6c63430007050033608060405234801561001057600080fd5b50600061001b61006a565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006e565b3390565b610a158061007d6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806315dacbea14610051578063715018a6146100665780638da5cb5b1461006e578063f2fde38b1461008c575b600080fd5b61006461005f3660046106d0565b61009f565b005b6100646101a0565b61007661026b565b6040516100839190610756565b60405180910390f35b61006461009a3660046106b6565b610287565b6100a76103bd565b60005473ffffffffffffffffffffffffffffffffffffffff908116911614610104576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100fb906108ea565b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831632148061014257506101428373ffffffffffffffffffffffffffffffffffffffff166103c1565b610178576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100fb906108b3565b61019a73ffffffffffffffffffffffffffffffffffffffff85168484846103cb565b50505050565b6101a86103bd565b60005473ffffffffffffffffffffffffffffffffffffffff9081169116146101fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100fb906108ea565b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b61028f6103bd565b60005473ffffffffffffffffffffffffffffffffffffffff9081169116146102e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100fb906108ea565b73ffffffffffffffffffffffffffffffffffffffff8116610330576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100fb906107f9565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3390565b803b15155b919050565b61019a846323b872dd60e01b8585856040516024016103ec93929190610777565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915260606104cb826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166105249092919063ffffffff16565b80519091501561051f57808060200190518101906104e9919061071a565b61051f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100fb90610956565b505050565b6060610533848460008561053d565b90505b9392505050565b606082471015610579576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100fb90610856565b610582856103c1565b6105b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100fb9061091f565b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040516105e2919061073a565b60006040518083038185875af1925050503d806000811461061f576040519150601f19603f3d011682016040523d82523d6000602084013e610624565b606091505b509150915061063482828661063f565b979650505050505050565b6060831561064e575081610536565b82511561065e5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100fb91906107a8565b803573ffffffffffffffffffffffffffffffffffffffff811681146103c657600080fd5b6000602082840312156106c7578081fd5b61053682610692565b600080600080608085870312156106e5578283fd5b6106ee85610692565b93506106fc60208601610692565b925061070a60408601610692565b9396929550929360600135925050565b60006020828403121561072b578081fd5b81518015158114610536578182fd5b6000825161074c8184602087016109b3565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b60006020825282518060208401526107c78160408501602087016109b3565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201527f6464726573730000000000000000000000000000000000000000000000000000606082015260800190565b60208082526026908201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60408201527f722063616c6c0000000000000000000000000000000000000000000000000000606082015260800190565b60208082526014908201527f496e76616c69642066726f6d2061646472657373000000000000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60408201527f6f74207375636365656400000000000000000000000000000000000000000000606082015260800190565b60005b838110156109ce5781810151838201526020016109b6565b8381111561019a575050600091015256fea2646970667358221220aa1874fa1602e178bce42ae0cf042879dfe48ce803daf9fefdb558352271824c64736f6c63430007050033
            data:
              main_contract: 0
              contract_info:
                - id: 0
                  path: contracts/flattened/AugustusSwapper.sol
                  name: AugustusSwapper.sol
                  source: >
                    // File:
                    openzeppelin-solidity/contracts/utils/EnumerableSet.sol




                    pragma solidity >=0.6.0 <0.8.0;


                    /**
                     * @dev Library for managing
                     * https://en.wikipedia.org/wiki/Set_(abstract_data_type)[sets] of primitive
                     * types.
                     *
                     * Sets have the following properties:
                     *
                     * - Elements are added, removed, and checked for existence in constant time
                     * (O(1)).
                     * - Elements are enumerated in O(n). No guarantees are made on the ordering.
                     *
                     * ```
                     * contract Example {
                     *     // Add the library methods
                     *     using EnumerableSet for EnumerableSet.AddressSet;
                     *
                     *     // Declare a set state variable
                     *     EnumerableSet.AddressSet private mySet;
                     * }
                     * ```
                     *
                     * As of v3.3.0, sets of type `bytes32` (`Bytes32Set`), `address` (`AddressSet`)
                     * and `uint256` (`UintSet`) are supported.
                     */
                    library EnumerableSet {
                        // To implement this library for multiple types with as little code
                        // repetition as possible, we write it in terms of a generic Set type with
                        // bytes32 values.
                        // The Set implementation uses private functions, and user-facing
                        // implementations (such as AddressSet) are just wrappers around the
                        // underlying Set.
                        // This means that we can only create new EnumerableSets for types that fit
                        // in bytes32.

                        struct Set {
                            // Storage of set values
                            bytes32[] _values;

                            // Position of the value in the `values` array, plus 1 because index 0
                            // means a value is not in the set.
                            mapping (bytes32 => uint256) _indexes;
                        }

                        /**
                         * @dev Add a value to a set. O(1).
                         *
                         * Returns true if the value was added to the set, that is if it was not
                         * already present.
                         */
                        function _add(Set storage set, bytes32 value) private returns (bool) {
                            if (!_contains(set, value)) {
                                set._values.push(value);
                                // The value is stored at length-1, but we add 1 to all indexes
                                // and use 0 as a sentinel value
                                set._indexes[value] = set._values.length;
                                return true;
                            } else {
                                return false;
                            }
                        }

                        /**
                         * @dev Removes a value from a set. O(1).
                         *
                         * Returns true if the value was removed from the set, that is if it was
                         * present.
                         */
                        function _remove(Set storage set, bytes32 value) private returns (bool) {
                            // We read and store the value's index to prevent multiple reads from the same storage slot
                            uint256 valueIndex = set._indexes[value];

                            if (valueIndex != 0) { // Equivalent to contains(set, value)
                                // To delete an element from the _values array in O(1), we swap the element to delete with the last one in
                                // the array, and then remove the last element (sometimes called as 'swap and pop').
                                // This modifies the order of the array, as noted in {at}.

                                uint256 toDeleteIndex = valueIndex - 1;
                                uint256 lastIndex = set._values.length - 1;

                                // When the value to delete is the last one, the swap operation is unnecessary. However, since this occurs
                                // so rarely, we still do the swap anyway to avoid the gas cost of adding an 'if' statement.

                                bytes32 lastvalue = set._values[lastIndex];

                                // Move the last value to the index where the value to delete is
                                set._values[toDeleteIndex] = lastvalue;
                                // Update the index for the moved value
                                set._indexes[lastvalue] = toDeleteIndex + 1; // All indexes are 1-based

                                // Delete the slot where the moved value was stored
                                set._values.pop();

                                // Delete the index for the deleted slot
                                delete set._indexes[value];

                                return true;
                            } else {
                                return false;
                            }
                        }

                        /**
                         * @dev Returns true if the value is in the set. O(1).
                         */
                        function _contains(Set storage set, bytes32 value) private view returns (bool) {
                            return set._indexes[value] != 0;
                        }

                        /**
                         * @dev Returns the number of values on the set. O(1).
                         */
                        function _length(Set storage set) private view returns (uint256) {
                            return set._values.length;
                        }

                       /**
                        * @dev Returns the value stored at position `index` in the set. O(1).
                        *
                        * Note that there are no guarantees on the ordering of values inside the
                        * array, and it may change when more values are added or removed.
                        *
                        * Requirements:
                        *
                        * - `index` must be strictly less than {length}.
                        */
                        function _at(Set storage set, uint256 index) private view returns (bytes32) {
                            require(set._values.length > index, "EnumerableSet: index out of bounds");
                            return set._values[index];
                        }

                        // Bytes32Set

                        struct Bytes32Set {
                            Set _inner;
                        }

                        /**
                         * @dev Add a value to a set. O(1).
                         *
                         * Returns true if the value was added to the set, that is if it was not
                         * already present.
                         */
                        function add(Bytes32Set storage set, bytes32 value) internal returns (bool) {
                            return _add(set._inner, value);
                        }

                        /**
                         * @dev Removes a value from a set. O(1).
                         *
                         * Returns true if the value was removed from the set, that is if it was
                         * present.
                         */
                        function remove(Bytes32Set storage set, bytes32 value) internal returns (bool) {
                            return _remove(set._inner, value);
                        }

                        /**
                         * @dev Returns true if the value is in the set. O(1).
                         */
                        function contains(Bytes32Set storage set, bytes32 value) internal view returns (bool) {
                            return _contains(set._inner, value);
                        }

                        /**
                         * @dev Returns the number of values in the set. O(1).
                         */
                        function length(Bytes32Set storage set) internal view returns (uint256) {
                            return _length(set._inner);
                        }

                       /**
                        * @dev Returns the value stored at position `index` in the set. O(1).
                        *
                        * Note that there are no guarantees on the ordering of values inside the
                        * array, and it may change when more values are added or removed.
                        *
                        * Requirements:
                        *
                        * - `index` must be strictly less than {length}.
                        */
                        function at(Bytes32Set storage set, uint256 index) internal view returns (bytes32) {
                            return _at(set._inner, index);
                        }

                        // AddressSet

                        struct AddressSet {
                            Set _inner;
                        }

                        /**
                         * @dev Add a value to a set. O(1).
                         *
                         * Returns true if the value was added to the set, that is if it was not
                         * already present.
                         */
                        function add(AddressSet storage set, address value) internal returns (bool) {
                            return _add(set._inner, bytes32(uint256(value)));
                        }

                        /**
                         * @dev Removes a value from a set. O(1).
                         *
                         * Returns true if the value was removed from the set, that is if it was
                         * present.
                         */
                        function remove(AddressSet storage set, address value) internal returns (bool) {
                            return _remove(set._inner, bytes32(uint256(value)));
                        }

                        /**
                         * @dev Returns true if the value is in the set. O(1).
                         */
                        function contains(AddressSet storage set, address value) internal view returns (bool) {
                            return _contains(set._inner, bytes32(uint256(value)));
                        }

                        /**
                         * @dev Returns the number of values in the set. O(1).
                         */
                        function length(AddressSet storage set) internal view returns (uint256) {
                            return _length(set._inner);
                        }

                       /**
                        * @dev Returns the value stored at position `index` in the set. O(1).
                        *
                        * Note that there are no guarantees on the ordering of values inside the
                        * array, and it may change when more values are added or removed.
                        *
                        * Requirements:
                        *
                        * - `index` must be strictly less than {length}.
                        */
                        function at(AddressSet storage set, uint256 index) internal view returns (address) {
                            return address(uint256(_at(set._inner, index)));
                        }


                        // UintSet

                        struct UintSet {
                            Set _inner;
                        }

                        /**
                         * @dev Add a value to a set. O(1).
                         *
                         * Returns true if the value was added to the set, that is if it was not
                         * already present.
                         */
                        function add(UintSet storage set, uint256 value) internal returns (bool) {
                            return _add(set._inner, bytes32(value));
                        }

                        /**
                         * @dev Removes a value from a set. O(1).
                         *
                         * Returns true if the value was removed from the set, that is if it was
                         * present.
                         */
                        function remove(UintSet storage set, uint256 value) internal returns (bool) {
                            return _remove(set._inner, bytes32(value));
                        }

                        /**
                         * @dev Returns true if the value is in the set. O(1).
                         */
                        function contains(UintSet storage set, uint256 value) internal view returns (bool) {
                            return _contains(set._inner, bytes32(value));
                        }

                        /**
                         * @dev Returns the number of values on the set. O(1).
                         */
                        function length(UintSet storage set) internal view returns (uint256) {
                            return _length(set._inner);
                        }

                       /**
                        * @dev Returns the value stored at position `index` in the set. O(1).
                        *
                        * Note that there are no guarantees on the ordering of values inside the
                        * array, and it may change when more values are added or removed.
                        *
                        * Requirements:
                        *
                        * - `index` must be strictly less than {length}.
                        */
                        function at(UintSet storage set, uint256 index) internal view returns (uint256) {
                            return uint256(_at(set._inner, index));
                        }
                    }


                    // File: openzeppelin-solidity/contracts/utils/Address.sol




                    pragma solidity >=0.6.2 <0.8.0;


                    /**
                     * @dev Collection of functions related to the address type
                     */
                    library Address {
                        /**
                         * @dev Returns true if `account` is a contract.
                         *
                         * [IMPORTANT]
                         * ====
                         * It is unsafe to assume that an address for which this function returns
                         * false is an externally-owned account (EOA) and not a contract.
                         *
                         * Among others, `isContract` will return false for the following
                         * types of addresses:
                         *
                         *  - an externally-owned account
                         *  - a contract in construction
                         *  - an address where a contract will be created
                         *  - an address where a contract lived, but was destroyed
                         * ====
                         */
                        function isContract(address account) internal view returns (bool) {
                            // This method relies on extcodesize, which returns 0 for contracts in
                            // construction, since the code is only stored at the end of the
                            // constructor execution.

                            uint256 size;
                            // solhint-disable-next-line no-inline-assembly
                            assembly { size := extcodesize(account) }
                            return size > 0;
                        }

                        /**
                         * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
                         * `recipient`, forwarding all available gas and reverting on errors.
                         *
                         * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
                         * of certain opcodes, possibly making contracts go over the 2300 gas limit
                         * imposed by `transfer`, making them unable to receive funds via
                         * `transfer`. {sendValue} removes this limitation.
                         *
                         * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
                         *
                         * IMPORTANT: because control is transferred to `recipient`, care must be
                         * taken to not create reentrancy vulnerabilities. Consider using
                         * {ReentrancyGuard} or the
                         * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
                         */
                        function sendValue(address payable recipient, uint256 amount) internal {
                            require(address(this).balance >= amount, "Address: insufficient balance");

                            // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
                            (bool success, ) = recipient.call{ value: amount }("");
                            require(success, "Address: unable to send value, recipient may have reverted");
                        }

                        /**
                         * @dev Performs a Solidity function call using a low level `call`. A
                         * plain`call` is an unsafe replacement for a function call: use this
                         * function instead.
                         *
                         * If `target` reverts with a revert reason, it is bubbled up by this
                         * function (like regular Solidity function calls).
                         *
                         * Returns the raw returned data. To convert to the expected return value,
                         * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
                         *
                         * Requirements:
                         *
                         * - `target` must be a contract.
                         * - calling `target` with `data` must not revert.
                         *
                         * _Available since v3.1._
                         */
                        function functionCall(address target, bytes memory data) internal returns (bytes memory) {
                          return functionCall(target, data, "Address: low-level call failed");
                        }

                        /**
                         * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
                         * `errorMessage` as a fallback revert reason when `target` reverts.
                         *
                         * _Available since v3.1._
                         */
                        function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
                            return functionCallWithValue(target, data, 0, errorMessage);
                        }

                        /**
                         * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
                         * but also transferring `value` wei to `target`.
                         *
                         * Requirements:
                         *
                         * - the calling contract must have an ETH balance of at least `value`.
                         * - the called Solidity function must be `payable`.
                         *
                         * _Available since v3.1._
                         */
                        function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
                            return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
                        }

                        /**
                         * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
                         * with `errorMessage` as a fallback revert reason when `target` reverts.
                         *
                         * _Available since v3.1._
                         */
                        function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
                            require(address(this).balance >= value, "Address: insufficient balance for call");
                            require(isContract(target), "Address: call to non-contract");

                            // solhint-disable-next-line avoid-low-level-calls
                            (bool success, bytes memory returndata) = target.call{ value: value }(data);
                            return _verifyCallResult(success, returndata, errorMessage);
                        }

                        /**
                         * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
                         * but performing a static call.
                         *
                         * _Available since v3.3._
                         */
                        function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
                            return functionStaticCall(target, data, "Address: low-level static call failed");
                        }

                        /**
                         * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
                         * but performing a static call.
                         *
                         * _Available since v3.3._
                         */
                        function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
                            require(isContract(target), "Address: static call to non-contract");

                            // solhint-disable-next-line avoid-low-level-calls
                            (bool success, bytes memory returndata) = target.staticcall(data);
                            return _verifyCallResult(success, returndata, errorMessage);
                        }

                        function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
                            if (success) {
                                return returndata;
                            } else {
                                // Look for revert reason and bubble it up if present
                                if (returndata.length > 0) {
                                    // The easiest way to bubble the revert reason is using memory via assembly

                                    // solhint-disable-next-line no-inline-assembly
                                    assembly {
                                        let returndata_size := mload(returndata)
                                        revert(add(32, returndata), returndata_size)
                                    }
                                } else {
                                    revert(errorMessage);
                                }
                            }
                        }
                    }


                    // File: openzeppelin-solidity/contracts/GSN/Context.sol




                    pragma solidity >=0.6.0 <0.8.0;


                    /*
                     * @dev Provides information about the current execution context, including the
                     * sender of the transaction and its data. While these are generally available
                     * via msg.sender and msg.data, they should not be accessed in such a direct
                     * manner, since when dealing with GSN meta-transactions the account sending and
                     * paying for execution may not be the actual sender (as far as an application
                     * is concerned).
                     *
                     * This contract is only required for intermediate, library-like contracts.
                     */
                    abstract contract Context {
                        function _msgSender() internal view virtual returns (address payable) {
                            return msg.sender;
                        }

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


                    // File:
                    openzeppelin-solidity/contracts/access/AccessControl.sol




                    pragma solidity >=0.6.0 <0.8.0;





                    /**
                     * @dev Contract module that allows children to implement role-based access
                     * control mechanisms.
                     *
                     * Roles are referred to by their `bytes32` identifier. These should be exposed
                     * in the external API and be unique. The best way to achieve this is by
                     * using `public constant` hash digests:
                     *
                     * ```
                     * bytes32 public constant MY_ROLE = keccak256("MY_ROLE");
                     * ```
                     *
                     * Roles can be used to represent a set of permissions. To restrict access to a
                     * function call, use {hasRole}:
                     *
                     * ```
                     * function foo() public {
                     *     require(hasRole(MY_ROLE, msg.sender));
                     *     ...
                     * }
                     * ```
                     *
                     * Roles can be granted and revoked dynamically via the {grantRole} and
                     * {revokeRole} functions. Each role has an associated admin role, and only
                     * accounts that have a role's admin role can call {grantRole} and {revokeRole}.
                     *
                     * By default, the admin role for all roles is `DEFAULT_ADMIN_ROLE`, which means
                     * that only accounts with this role will be able to grant or revoke other
                     * roles. More complex role relationships can be created by using
                     * {_setRoleAdmin}.
                     *
                     * WARNING: The `DEFAULT_ADMIN_ROLE` is also its own admin: it has permission to
                     * grant and revoke this role. Extra precautions should be taken to secure
                     * accounts that have been granted it.
                     */
                    abstract contract AccessControl is Context {
                        using EnumerableSet for EnumerableSet.AddressSet;
                        using Address for address;

                        struct RoleData {
                            EnumerableSet.AddressSet members;
                            bytes32 adminRole;
                        }

                        mapping (bytes32 => RoleData) private _roles;

                        bytes32 public constant DEFAULT_ADMIN_ROLE = 0x00;

                        /**
                         * @dev Emitted when `newAdminRole` is set as ``role``'s admin role, replacing `previousAdminRole`
                         *
                         * `DEFAULT_ADMIN_ROLE` is the starting admin for all roles, despite
                         * {RoleAdminChanged} not being emitted signaling this.
                         *
                         * _Available since v3.1._
                         */
                        event RoleAdminChanged(bytes32 indexed role, bytes32 indexed previousAdminRole, bytes32 indexed newAdminRole);

                        /**
                         * @dev Emitted when `account` is granted `role`.
                         *
                         * `sender` is the account that originated the contract call, an admin role
                         * bearer except when using {_setupRole}.
                         */
                        event RoleGranted(bytes32 indexed role, address indexed account, address indexed sender);

                        /**
                         * @dev Emitted when `account` is revoked `role`.
                         *
                         * `sender` is the account that originated the contract call:
                         *   - if using `revokeRole`, it is the admin role bearer
                         *   - if using `renounceRole`, it is the role bearer (i.e. `account`)
                         */
                        event RoleRevoked(bytes32 indexed role, address indexed account, address indexed sender);

                        /**
                         * @dev Returns `true` if `account` has been granted `role`.
                         */
                        function hasRole(bytes32 role, address account) public view returns (bool) {
                            return _roles[role].members.contains(account);
                        }

                        /**
                         * @dev Returns the number of accounts that have `role`. Can be used
                         * together with {getRoleMember} to enumerate all bearers of a role.
                         */
                        function getRoleMemberCount(bytes32 role) public view returns (uint256) {
                            return _roles[role].members.length();
                        }

                        /**
                         * @dev Returns one of the accounts that have `role`. `index` must be a
                         * value between 0 and {getRoleMemberCount}, non-inclusive.
                         *
                         * Role bearers are not sorted in any particular way, and their ordering may
                         * change at any point.
                         *
                         * WARNING: When using {getRoleMember} and {getRoleMemberCount}, make sure
                         * you perform all queries on the same block. See the following
                         * https://forum.openzeppelin.com/t/iterating-over-elements-on-enumerableset-in-openzeppelin-contracts/2296[forum post]
                         * for more information.
                         */
                        function getRoleMember(bytes32 role, uint256 index) public view returns (address) {
                            return _roles[role].members.at(index);
                        }

                        /**
                         * @dev Returns the admin role that controls `role`. See {grantRole} and
                         * {revokeRole}.
                         *
                         * To change a role's admin, use {_setRoleAdmin}.
                         */
                        function getRoleAdmin(bytes32 role) public view returns (bytes32) {
                            return _roles[role].adminRole;
                        }

                        /**
                         * @dev Grants `role` to `account`.
                         *
                         * If `account` had not been already granted `role`, emits a {RoleGranted}
                         * event.
                         *
                         * Requirements:
                         *
                         * - the caller must have ``role``'s admin role.
                         */
                        function grantRole(bytes32 role, address account) public virtual {
                            require(hasRole(_roles[role].adminRole, _msgSender()), "AccessControl: sender must be an admin to grant");

                            _grantRole(role, account);
                        }

                        /**
                         * @dev Revokes `role` from `account`.
                         *
                         * If `account` had been granted `role`, emits a {RoleRevoked} event.
                         *
                         * Requirements:
                         *
                         * - the caller must have ``role``'s admin role.
                         */
                        function revokeRole(bytes32 role, address account) public virtual {
                            require(hasRole(_roles[role].adminRole, _msgSender()), "AccessControl: sender must be an admin to revoke");

                            _revokeRole(role, account);
                        }

                        /**
                         * @dev Revokes `role` from the calling account.
                         *
                         * Roles are often managed via {grantRole} and {revokeRole}: this function's
                         * purpose is to provide a mechanism for accounts to lose their privileges
                         * if they are compromised (such as when a trusted device is misplaced).
                         *
                         * If the calling account had been granted `role`, emits a {RoleRevoked}
                         * event.
                         *
                         * Requirements:
                         *
                         * - the caller must be `account`.
                         */
                        function renounceRole(bytes32 role, address account) public virtual {
                            require(account == _msgSender(), "AccessControl: can only renounce roles for self");

                            _revokeRole(role, account);
                        }

                        /**
                         * @dev Grants `role` to `account`.
                         *
                         * If `account` had not been already granted `role`, emits a {RoleGranted}
                         * event. Note that unlike {grantRole}, this function doesn't perform any
                         * checks on the calling account.
                         *
                         * [WARNING]
                         * ====
                         * This function should only be called from the constructor when setting
                         * up the initial roles for the system.
                         *
                         * Using this function in any other way is effectively circumventing the admin
                         * system imposed by {AccessControl}.
                         * ====
                         */
                        function _setupRole(bytes32 role, address account) internal virtual {
                            _grantRole(role, account);
                        }

                        /**
                         * @dev Sets `adminRole` as ``role``'s admin role.
                         *
                         * Emits a {RoleAdminChanged} event.
                         */
                        function _setRoleAdmin(bytes32 role, bytes32 adminRole) internal virtual {
                            emit RoleAdminChanged(role, _roles[role].adminRole, adminRole);
                            _roles[role].adminRole = adminRole;
                        }

                        function _grantRole(bytes32 role, address account) private {
                            if (_roles[role].members.add(account)) {
                                emit RoleGranted(role, account, _msgSender());
                            }
                        }

                        function _revokeRole(bytes32 role, address account) private {
                            if (_roles[role].members.remove(account)) {
                                emit RoleRevoked(role, account, _msgSender());
                            }
                        }
                    }


                    // File:
                    openzeppelin-solidity/contracts/token/ERC20/IERC20.sol




                    pragma solidity >=0.6.0 <0.8.0;


                    /**
                     * @dev Interface of the ERC20 standard as defined in the EIP.
                     */
                    interface IERC20 {
                        /**
                         * @dev Returns the amount of tokens in existence.
                         */
                        function totalSupply() external view returns (uint256);

                        /**
                         * @dev Returns the amount of tokens owned by `account`.
                         */
                        function balanceOf(address account) external view returns (uint256);

                        /**
                         * @dev Moves `amount` tokens from the caller's account to `recipient`.
                         *
                         * Returns a boolean value indicating whether the operation succeeded.
                         *
                         * Emits a {Transfer} event.
                         */
                        function transfer(address recipient, uint256 amount) external returns (bool);

                        /**
                         * @dev Returns the remaining number of tokens that `spender` will be
                         * allowed to spend on behalf of `owner` through {transferFrom}. This is
                         * zero by default.
                         *
                         * This value changes when {approve} or {transferFrom} are called.
                         */
                        function allowance(address owner, address spender) external view returns (uint256);

                        /**
                         * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
                         *
                         * Returns a boolean value indicating whether the operation succeeded.
                         *
                         * IMPORTANT: Beware that changing an allowance with this method brings the risk
                         * that someone may use both the old and the new allowance by unfortunate
                         * transaction ordering. One possible solution to mitigate this race
                         * condition is to first reduce the spender's allowance to 0 and set the
                         * desired value afterwards:
                         * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
                         *
                         * Emits an {Approval} event.
                         */
                        function approve(address spender, uint256 amount) external returns (bool);

                        /**
                         * @dev Moves `amount` tokens from `sender` to `recipient` using the
                         * allowance mechanism. `amount` is then deducted from the caller's
                         * allowance.
                         *
                         * Returns a boolean value indicating whether the operation succeeded.
                         *
                         * Emits a {Transfer} event.
                         */
                        function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

                        /**
                         * @dev Emitted when `value` tokens are moved from one account (`from`) to
                         * another (`to`).
                         *
                         * Note that `value` may be zero.
                         */
                        event Transfer(address indexed from, address indexed to, uint256 value);

                        /**
                         * @dev Emitted when the allowance of a `spender` for an `owner` is set by
                         * a call to {approve}. `value` is the new allowance.
                         */
                        event Approval(address indexed owner, address indexed spender, uint256 value);
                    }


                    // File: openzeppelin-solidity/contracts/math/SafeMath.sol




                    pragma solidity >=0.6.0 <0.8.0;


                    /**
                     * @dev Wrappers over Solidity's arithmetic operations with added overflow
                     * checks.
                     *
                     * Arithmetic operations in Solidity wrap on overflow. This can easily result
                     * in bugs, because programmers usually assume that an overflow raises an
                     * error, which is the standard behavior in high level programming languages.
                     * `SafeMath` restores this intuition by reverting the transaction when an
                     * operation overflows.
                     *
                     * Using this library instead of the unchecked operations eliminates an entire
                     * class of bugs, so it's recommended to use it always.
                     */
                    library SafeMath {
                        /**
                         * @dev Returns the addition of two unsigned integers, reverting on
                         * overflow.
                         *
                         * Counterpart to Solidity's `+` operator.
                         *
                         * Requirements:
                         *
                         * - Addition cannot overflow.
                         */
                        function add(uint256 a, uint256 b) internal pure returns (uint256) {
                            uint256 c = a + b;
                            require(c >= a, "SafeMath: addition overflow");

                            return c;
                        }

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

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

                            return c;
                        }

                        /**
                         * @dev Returns the multiplication of two unsigned integers, reverting on
                         * overflow.
                         *
                         * Counterpart to Solidity's `*` operator.
                         *
                         * Requirements:
                         *
                         * - Multiplication cannot overflow.
                         */
                        function mul(uint256 a, uint256 b) internal pure returns (uint256) {
                            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
                            // benefit is lost if 'b' is also tested.
                            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
                            if (a == 0) {
                                return 0;
                            }

                            uint256 c = a * b;
                            require(c / a == b, "SafeMath: multiplication overflow");

                            return c;
                        }

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

                        /**
                         * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
                         * division by zero. The result is rounded towards zero.
                         *
                         * Counterpart to Solidity's `/` operator. Note: this function uses a
                         * `revert` opcode (which leaves remaining gas untouched) while Solidity
                         * uses an invalid opcode to revert (consuming all remaining gas).
                         *
                         * Requirements:
                         *
                         * - The divisor cannot be zero.
                         */
                        function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
                            require(b > 0, errorMessage);
                            uint256 c = a / b;
                            // assert(a == b * c + a % b); // There is no case in which this doesn't hold

                            return c;
                        }

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

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


                    // File:
                    openzeppelin-solidity/contracts/token/ERC20/SafeERC20.sol




                    pragma solidity >=0.6.0 <0.8.0;





                    /**
                     * @title SafeERC20
                     * @dev Wrappers around ERC20 operations that throw on failure (when the token
                     * contract returns false). Tokens that return no value (and instead revert or
                     * throw on failure) are also supported, non-reverting calls are assumed to be
                     * successful.
                     * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,
                     * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
                     */
                    library SafeERC20 {
                        using SafeMath for uint256;
                        using Address for address;

                        function safeTransfer(IERC20 token, address to, uint256 value) internal {
                            _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
                        }

                        function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
                            _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
                        }

                        /**
                         * @dev Deprecated. This function has issues similar to the ones found in
                         * {IERC20-approve}, and its usage is discouraged.
                         *
                         * Whenever possible, use {safeIncreaseAllowance} and
                         * {safeDecreaseAllowance} instead.
                         */
                        function safeApprove(IERC20 token, address spender, uint256 value) internal {
                            // safeApprove should only be called when setting an initial allowance,
                            // or when resetting it to zero. To increase and decrease it, use
                            // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
                            // solhint-disable-next-line max-line-length
                            require((value == 0) || (token.allowance(address(this), spender) == 0),
                                "SafeERC20: approve from non-zero to non-zero allowance"
                            );
                            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
                        }

                        function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {
                            uint256 newAllowance = token.allowance(address(this), spender).add(value);
                            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
                        }

                        function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {
                            uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero");
                            _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
                        }

                        /**
                         * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
                         * on the return value: the return value is optional (but if data is returned, it must not be false).
                         * @param token The token targeted by the call.
                         * @param data The call data (encoded using abi.encode or one of its variants).
                         */
                        function _callOptionalReturn(IERC20 token, bytes memory data) private {
                            // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
                            // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that
                            // the target address contains contract code and also asserts for success in the low-level call.

                            bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
                            if (returndata.length > 0) { // Return data is optional
                                // solhint-disable-next-line max-line-length
                                require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
                            }
                        }
                    }


                    // File: original_contracts/routers/IRouter.sol


                    pragma solidity 0.7.5;


                    interface IRouter {

                        /**
                        * @dev Certain routers/exchanges needs to be initialized.
                        * This method will be called from Augustus
                        */
                        function initialize(bytes calldata data) external;

                        /**
                        * @dev Returns unique identifier for the router
                        */
                        function getKey() external pure returns(bytes32);

                        event Swapped(
                            bytes16 uuid,
                            address initiator,
                            address indexed beneficiary,
                            address indexed srcToken,
                            address indexed destToken,
                            uint256 srcAmount,
                            uint256 receivedAmount,
                            uint256 expectedAmount
                        );

                        event Bought(
                            bytes16 uuid,
                            address initiator,
                            address indexed beneficiary,
                            address indexed srcToken,
                            address indexed destToken,
                            uint256 srcAmount,
                            uint256 receivedAmount
                        );

                        event FeeTaken(
                            uint256 fee,
                            uint256 partnerShare,
                            uint256 paraswapShare
                        );
                    }


                    // File: original_contracts/ITokenTransferProxy.sol


                    pragma solidity 0.7.5;



                    interface ITokenTransferProxy {

                        function transferFrom(
                            address token,
                            address from,
                            address to,
                            uint256 amount
                        )
                            external;
                    }


                    // File: original_contracts/lib/Utils.sol


                    pragma solidity 0.7.5;

                    pragma experimental ABIEncoderV2;






                    interface IERC20Permit {
                        function permit(address owner, address spender, uint256 amount, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;
                    }


                    library Utils {
                        using SafeMath for uint256;
                        using SafeERC20 for IERC20;

                        address constant ETH_ADDRESS = address(
                            0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE
                        );
                        
                        uint256 constant MAX_UINT = type(uint256).max;

                        /**
                       * @param fromToken Address of the source token
                       * @param fromAmount Amount of source tokens to be swapped
                       * @param toAmount Minimum destination token amount expected out of this swap
                       * @param expectedAmount Expected amount of destination tokens without slippage
                       * @param beneficiary Beneficiary address
                       * 0 then 100% will be transferred to beneficiary. Pass 10000 for 100%
                       * @param path Route to be taken for this swap to take place

                       */
                        struct SellData {
                            address fromToken;
                            uint256 fromAmount;
                            uint256 toAmount;
                            uint256 expectedAmount;
                            address payable beneficiary;
                            Utils.Path[] path;
                            address payable partner;
                            uint256 feePercent;
                            bytes permit;
                            uint256 deadline;
                            bytes16 uuid;
                        }

                        struct MegaSwapSellData {
                            address fromToken;
                            uint256 fromAmount;
                            uint256 toAmount;
                            uint256 expectedAmount;
                            address payable beneficiary;
                            Utils.MegaSwapPath[] path;
                            address payable partner;
                            uint256 feePercent;
                            bytes permit;
                            uint256 deadline;
                            bytes16 uuid;
                        }

                        struct SimpleData {
                            address fromToken;
                            address toToken;
                            uint256 fromAmount;
                            uint256 toAmount;
                            uint256 expectedAmount;
                            address[] callees;
                            bytes exchangeData;
                            uint256[] startIndexes;
                            uint256[] values;
                            address payable beneficiary;
                            address payable partner;
                            uint256 feePercent;
                            bytes permit;
                            uint256 deadline;
                            bytes16 uuid;
                        }

                        struct Adapter {
                            address payable adapter;
                            uint256 percent;
                            uint256 networkFee;
                            Route[] route;
                        }

                        struct Route {
                            uint256 index;//Adapter at which index needs to be used
                            address targetExchange;
                            uint percent;
                            bytes payload;
                            uint256 networkFee;//Network fee is associated with 0xv3 trades
                        }

                        struct MegaSwapPath {
                            uint256 fromAmountPercent;
                            Path[] path;
                        }

                        struct Path {
                            address to;
                            uint256 totalNetworkFee;//Network fee is associated with 0xv3 trades
                            Adapter[] adapters;
                        }

                        function ethAddress() internal pure returns (address) {return ETH_ADDRESS;}

                        function maxUint() internal pure returns (uint256) {return MAX_UINT;}

                        function approve(
                            address addressToApprove,
                            address token,
                            uint256 amount
                        ) internal {
                            if (token != ETH_ADDRESS) {
                                IERC20 _token = IERC20(token);

                                uint allowance = _token.allowance(address(this), addressToApprove);

                                if (allowance < amount) {
                                    _token.safeApprove(addressToApprove, 0);
                                    _token.safeIncreaseAllowance(addressToApprove, MAX_UINT);
                                }
                            }
                        }

                        function transferTokens(
                            address token,
                            address payable destination,
                            uint256 amount
                        )
                        internal
                        {
                            if (amount > 0) {
                                if (token == ETH_ADDRESS) {
                                    (bool result, ) = destination.call{value: amount, gas: 10000}("");
                                    require(result, "Failed to transfer Ether");
                                }
                                else {
                                    IERC20(token).safeTransfer(destination, amount);
                                }
                            }

                        }

                        function tokenBalance(
                            address token,
                            address account
                        )
                        internal
                        view
                        returns (uint256)
                        {
                            if (token == ETH_ADDRESS) {
                                return account.balance;
                            } else {
                                return IERC20(token).balanceOf(account);
                            }
                        }

                        function permit(
                            address token,
                            bytes memory permit
                        )
                            internal
                        {
                            if (permit.length == 32 * 7) {
                                (bool success,) = token.call(abi.encodePacked(IERC20Permit.permit.selector, permit));
                                require(success, "Permit failed");
                            }
                        }

                    }


                    // File: original_contracts/adapters/IAdapter.sol


                    pragma solidity 0.7.5;




                    interface IAdapter {

                        /**
                        * @dev Certain adapters needs to be initialized.
                        * This method will be called from Augustus
                        */
                        function initialize(bytes calldata data) external;

                        /**
                       * @dev The function which performs the swap on an exchange.
                       * @param fromToken Address of the source token
                       * @param toToken Address of the destination token
                       * @param fromAmount Amount of source tokens to be swapped
                       * @param networkFee Network fee to be used in this router
                       * @param route Route to be followed
                       */
                        function swap(
                            IERC20 fromToken,
                            IERC20 toToken,
                            uint256 fromAmount,
                            uint256 networkFee,
                            Utils.Route[] calldata route
                        )
                            external
                            payable;
                    }


                    // File: openzeppelin-solidity/contracts/access/Ownable.sol




                    pragma solidity >=0.6.0 <0.8.0;


                    /**
                     * @dev Contract module which provides a basic access control mechanism, where
                     * there is an account (an owner) that can be granted exclusive access to
                     * specific functions.
                     *
                     * By default, the owner account will be the one that deploys the contract. This
                     * can later be changed with {transferOwnership}.
                     *
                     * This module is used through inheritance. It will make available the modifier
                     * `onlyOwner`, which can be applied to your functions to restrict their use to
                     * the owner.
                     */
                    abstract contract Ownable is Context {
                        address private _owner;

                        event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

                        /**
                         * @dev Initializes the contract setting the deployer as the initial owner.
                         */
                        constructor () internal {
                            address msgSender = _msgSender();
                            _owner = msgSender;
                            emit OwnershipTransferred(address(0), msgSender);
                        }

                        /**
                         * @dev Returns the address of the current owner.
                         */
                        function owner() public view returns (address) {
                            return _owner;
                        }

                        /**
                         * @dev Throws if called by any account other than the owner.
                         */
                        modifier onlyOwner() {
                            require(_owner == _msgSender(), "Ownable: caller is not the owner");
                            _;
                        }

                        /**
                         * @dev Leaves the contract without owner. It will not be possible to call
                         * `onlyOwner` functions anymore. Can only be called by the current owner.
                         *
                         * NOTE: Renouncing ownership will leave the contract without an owner,
                         * thereby removing any functionality that is only available to the owner.
                         */
                        function renounceOwnership() public virtual onlyOwner {
                            emit OwnershipTransferred(_owner, address(0));
                            _owner = address(0);
                        }

                        /**
                         * @dev Transfers ownership of the contract to a new account (`newOwner`).
                         * Can only be called by the current owner.
                         */
                        function transferOwnership(address newOwner) public virtual onlyOwner {
                            require(newOwner != address(0), "Ownable: new owner is the zero address");
                            emit OwnershipTransferred(_owner, newOwner);
                            _owner = newOwner;
                        }
                    }


                    // File: original_contracts/TokenTransferProxy.sol


                    pragma solidity 0.7.5;








                    /**

                    * @dev Allows owner of the contract to transfer tokens on
                    behalf of user.

                    * User will need to approve this contract to spend tokens on
                    his/her behalf

                    * on Paraswap platform

                    */

                    contract TokenTransferProxy is Ownable, ITokenTransferProxy
                    {
                        using SafeERC20 for IERC20;
                        using Address for address;

                        /**
                        * @dev Allows owner of the contract to transfer tokens on user's behalf
                        * @dev Swapper contract will be the owner of this contract
                        * @param token Address of the token
                        * @param from Address from which tokens will be transferred
                        * @param to Receipent address of the tokens
                        * @param amount Amount of tokens to transfer
                        */
                        function transferFrom(
                            address token,
                            address from,
                            address to,
                            uint256 amount
                        )
                            external
                            override
                            onlyOwner
                        {   
                            require(
                                from == tx.origin ||
                                from.isContract(),
                                "Invalid from address"
                            );
                            
                            IERC20(token).safeTransferFrom(from, to, amount);
                        }
                    }


                    // File: original_contracts/AugustusStorage.sol


                    pragma solidity 0.7.5;



                    contract AugustusStorage {

                        struct FeeStructure {
                            uint256 partnerShare;
                            bool noPositiveSlippage;
                            bool positiveSlippageToUser;
                            uint16 feePercent;
                            string partnerId;
                            bytes data;
                        }

                        ITokenTransferProxy internal tokenTransferProxy;
                        address payable internal feeWallet;
                        
                        mapping(address => FeeStructure) internal registeredPartners;

                        mapping (bytes4 => address) internal selectorVsRouter;
                        mapping (bytes32 => bool) internal adapterInitialized;
                        mapping (bytes32 => bytes) internal adapterVsData;

                        mapping (bytes32 => bytes) internal routerData;
                        mapping (bytes32 => bool) internal routerInitialized;


                        bytes32 public constant WHITELISTED_ROLE = keccak256("WHITELISTED_ROLE");

                        bytes32 public constant ROUTER_ROLE = keccak256("ROUTER_ROLE");

                    }


                    // File: original_contracts/AugustusSwapper.sol


                    pragma solidity 0.7.5;











                    contract AugustusSwapper is AugustusStorage, AccessControl {
                        using SafeMath for uint256;
                        using SafeERC20 for IERC20;

                        event AdapterInitialized(address indexed adapter);

                        event RouterInitialized(address indexed router);

                        /**
                         * @dev Throws if called by any account other than the admin.
                         */
                        modifier onlyAdmin() {
                            require(hasRole(DEFAULT_ADMIN_ROLE, msg.sender), "caller is not the admin");
                            _;
                        }

                        constructor(address payable _feeWallet) public {
                            TokenTransferProxy lTokenTransferProxy = new TokenTransferProxy();
                            tokenTransferProxy = ITokenTransferProxy(lTokenTransferProxy);
                            feeWallet = _feeWallet;
                            _setupRole(DEFAULT_ADMIN_ROLE, msg.sender);
                        }
                        
                        receive () payable external {

                        }

                        fallback() external payable {
                            bytes4 selector = msg.sig;
                            //Figure out the router contract for the given function
                            address implementation = getImplementation(selector);
                            if (implementation == address(0)) {
                                _revertWithData(
                                    abi.encodeWithSelector(
                                        bytes4(keccak256("NotImplementedError(bytes4)")),
                                        selector
                                    )
                                );
                            }

                            //Delegate call to the router
                            (bool success, bytes memory resultData) = implementation.delegatecall(msg.data);
                            if (!success) {
                                _revertWithData(resultData);
                            }

                            _returnWithData(resultData);
                        }

                        function initializeAdapter(address adapter, bytes calldata data) external onlyAdmin {

                            require(
                                hasRole(WHITELISTED_ROLE, adapter),
                                "Exchange not whitelisted"
                            );
                            (bool success,) = adapter.delegatecall(abi.encodeWithSelector(IAdapter.initialize.selector, data));
                            require(success, "Failed to initialize adapter");
                            emit AdapterInitialized(adapter);
                        }

                        function initializeRouter(address router, bytes calldata data) external onlyAdmin {

                            require(
                                hasRole(ROUTER_ROLE, router),
                                "Router not whitelisted"
                            );
                            (bool success,) = router.delegatecall(abi.encodeWithSelector(IRouter.initialize.selector, data));
                            require(success, "Failed to initialize router");
                            emit RouterInitialized(router);
                        } 

                        
                        function getImplementation(bytes4 selector) public view returns(address) {
                            return selectorVsRouter[selector];
                        }

                        function getVersion() external pure returns(string memory) {
                            return "5.0.0";
                        }

                        function getPartnerFeeStructure(address partner) public view returns (FeeStructure memory) {
                            return registeredPartners[partner];
                        }

                        function getFeeWallet() external view returns(address) {
                            return feeWallet;
                        }

                        function setFeeWallet(address payable _feeWallet) external onlyAdmin {
                            require(_feeWallet != address(0), "Invalid address");
                            feeWallet = _feeWallet;
                        }

                        function registerPartner(
                            address partner,
                            uint256 _partnerShare,
                            bool _noPositiveSlippage,
                            bool _positiveSlippageToUser,
                            uint16 _feePercent,
                            string calldata partnerId,
                            bytes calldata _data
                        )
                            external
                            onlyAdmin
                        {   
                            require(partner != address(0), "Invalid partner");
                            FeeStructure storage feeStructure = registeredPartners[partner];
                            require(feeStructure.partnerShare == 0, "Already registered");
                            require(_partnerShare > 0 && _partnerShare < 10000, "Invalid values");
                            require(_feePercent <= 10000, "Invalid values");

                            feeStructure.partnerShare = _partnerShare;
                            feeStructure.noPositiveSlippage = _noPositiveSlippage;
                            feeStructure.positiveSlippageToUser = _positiveSlippageToUser;
                            feeStructure.partnerId = partnerId;
                            feeStructure.feePercent = _feePercent;
                            feeStructure.data = _data;
                        }

                        function setImplementation(bytes4 selector, address implementation) external onlyAdmin {
                            require(
                                hasRole(ROUTER_ROLE, implementation),
                                "Router is not whitelisted"
                            );
                            selectorVsRouter[selector] = implementation;
                        }

                        /**
                        * @dev Allows admin of the contract to transfer any tokens which are assigned to the contract
                        * This method is for safety if by any chance tokens or ETHs are assigned to the contract by mistake
                        * @dev token Address of the token to be transferred
                        * @dev destination Recepient of the token
                        * @dev amount Amount of tokens to be transferred
                        */
                        function transferTokens(
                            address token,
                            address payable destination,
                            uint256 amount
                        )
                            external
                            onlyAdmin
                        {
                            if (amount > 0) {
                                if (token == address(0xEeeeeEeeeEeEeeEeEeEeeEEEeeeeEeeeeeeeEEeE)) {
                                    (bool result, ) = destination.call{value: amount, gas: 10000}("");
                                    require(result, "Failed to transfer Ether");
                                }
                                else {
                                    IERC20(token).safeTransfer(destination, amount);
                                }
                            }
                        }

                          function isAdapterInitialized(bytes32 key) public view returns(bool) {
                            return adapterInitialized[key];
                        }

                        function getAdapterData(bytes32 key) public view returns(bytes memory) {
                            return adapterVsData[key];
                        }

                        function isRouterInitialized(bytes32 key) public view returns (bool) {
                            return routerInitialized[key];
                        }

                        function getRouterData(bytes32 key) public view returns (bytes memory) {
                            return routerData[key];
                        }

                        function getTokenTransferProxy() public view returns (address) {
                            return address(tokenTransferProxy);
                        }

                        function _revertWithData(bytes memory data) private pure {
                            assembly { revert(add(data, 32), mload(data)) }
                        }

                        function _returnWithData(bytes memory data) private pure {
                            assembly { return(add(data, 32), mload(data)) }
                        }

                    }
              abi:
                - type: constructor
                  name: ''
                  constant: false
                  anonymous: false
                  stateMutability: ''
                  inputs:
                    - name: _feeWallet
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                  outputs: null
                - type: function
                  name: setImplementation
                  constant: false
                  anonymous: false
                  stateMutability: nonpayable
                  inputs:
                    - name: selector
                      type: bytes4
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                    - name: implementation
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                  outputs: []
                - type: function
                  name: registerPartner
                  constant: false
                  anonymous: false
                  stateMutability: nonpayable
                  inputs:
                    - name: partner
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                    - name: _partnerShare
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                    - name: _noPositiveSlippage
                      type: bool
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bool
                    - name: _positiveSlippageToUser
                      type: bool
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bool
                    - name: _feePercent
                      type: uint16
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                    - name: partnerId
                      type: string
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: string
                    - name: _data
                      type: bytes
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                  outputs: []
                - type: function
                  name: isAdapterInitialized
                  constant: false
                  anonymous: false
                  stateMutability: view
                  inputs:
                    - name: key
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                  outputs:
                    - name: ''
                      type: bool
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bool
                - type: function
                  name: initializeAdapter
                  constant: false
                  anonymous: false
                  stateMutability: nonpayable
                  inputs:
                    - name: adapter
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                    - name: data
                      type: bytes
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                  outputs: []
                - type: function
                  name: isRouterInitialized
                  constant: false
                  anonymous: false
                  stateMutability: view
                  inputs:
                    - name: key
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                  outputs:
                    - name: ''
                      type: bool
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bool
                - type: function
                  name: grantRole
                  constant: false
                  anonymous: false
                  stateMutability: nonpayable
                  inputs:
                    - name: role
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                    - name: account
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                  outputs: []
                - type: function
                  name: DEFAULT_ADMIN_ROLE
                  constant: false
                  anonymous: false
                  stateMutability: view
                  inputs: []
                  outputs:
                    - name: ''
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                - type: function
                  name: getFeeWallet
                  constant: false
                  anonymous: false
                  stateMutability: view
                  inputs: []
                  outputs:
                    - name: ''
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                - type: function
                  name: ROUTER_ROLE
                  constant: false
                  anonymous: false
                  stateMutability: view
                  inputs: []
                  outputs:
                    - name: ''
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                - type: function
                  name: getVersion
                  constant: false
                  anonymous: false
                  stateMutability: pure
                  inputs: []
                  outputs:
                    - name: ''
                      type: string
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: string
                - type: function
                  name: revokeRole
                  constant: false
                  anonymous: false
                  stateMutability: nonpayable
                  inputs:
                    - name: role
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                    - name: account
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                  outputs: []
                - type: function
                  name: WHITELISTED_ROLE
                  constant: false
                  anonymous: false
                  stateMutability: view
                  inputs: []
                  outputs:
                    - name: ''
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                - type: function
                  name: getRoleMember
                  constant: false
                  anonymous: false
                  stateMutability: view
                  inputs:
                    - name: role
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                    - name: index
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                  outputs:
                    - name: ''
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                - type: function
                  name: initializeRouter
                  constant: false
                  anonymous: false
                  stateMutability: nonpayable
                  inputs:
                    - name: router
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                    - name: data
                      type: bytes
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                  outputs: []
                - type: function
                  name: hasRole
                  constant: false
                  anonymous: false
                  stateMutability: view
                  inputs:
                    - name: role
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                    - name: account
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                  outputs:
                    - name: ''
                      type: bool
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bool
                - type: function
                  name: getPartnerFeeStructure
                  constant: false
                  anonymous: false
                  stateMutability: view
                  inputs:
                    - name: partner
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                  outputs:
                    - name: ''
                      type: tuple
                      storage_location: default
                      components:
                        - name: partnerShare
                          type: uint256
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: uint
                        - name: noPositiveSlippage
                          type: bool
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: bool
                        - name: positiveSlippageToUser
                          type: bool
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: bool
                        - name: feePercent
                          type: uint16
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: uint
                        - name: partnerId
                          type: string
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: string
                        - name: data
                          type: bytes
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: bytes
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                - type: function
                  name: transferTokens
                  constant: false
                  anonymous: false
                  stateMutability: nonpayable
                  inputs:
                    - name: token
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                    - name: destination
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                    - name: amount
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                  outputs: []
                - type: function
                  name: setFeeWallet
                  constant: false
                  anonymous: false
                  stateMutability: nonpayable
                  inputs:
                    - name: _feeWallet
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                  outputs: []
                - type: function
                  name: getRoleAdmin
                  constant: false
                  anonymous: false
                  stateMutability: view
                  inputs:
                    - name: role
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                  outputs:
                    - name: ''
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                - type: function
                  name: getRoleMemberCount
                  constant: false
                  anonymous: false
                  stateMutability: view
                  inputs:
                    - name: role
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                  outputs:
                    - name: ''
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                - type: function
                  name: getTokenTransferProxy
                  constant: false
                  anonymous: false
                  stateMutability: view
                  inputs: []
                  outputs:
                    - name: ''
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                - type: function
                  name: getImplementation
                  constant: false
                  anonymous: false
                  stateMutability: view
                  inputs:
                    - name: selector
                      type: bytes4
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                  outputs:
                    - name: ''
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                - type: function
                  name: getAdapterData
                  constant: false
                  anonymous: false
                  stateMutability: view
                  inputs:
                    - name: key
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                  outputs:
                    - name: ''
                      type: bytes
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                - type: function
                  name: getRouterData
                  constant: false
                  anonymous: false
                  stateMutability: view
                  inputs:
                    - name: key
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                  outputs:
                    - name: ''
                      type: bytes
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                - type: function
                  name: renounceRole
                  constant: false
                  anonymous: false
                  stateMutability: nonpayable
                  inputs:
                    - name: role
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                    - name: account
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                  outputs: []
                - type: event
                  name: RouterInitialized
                  constant: false
                  anonymous: false
                  stateMutability: ''
                  inputs:
                    - name: router
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: true
                      simple_type:
                        type: address
                  outputs: null
                - type: event
                  name: AdapterInitialized
                  constant: false
                  anonymous: false
                  stateMutability: ''
                  inputs:
                    - name: adapter
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: true
                      simple_type:
                        type: address
                  outputs: null
                - type: event
                  name: RoleAdminChanged
                  constant: false
                  anonymous: false
                  stateMutability: ''
                  inputs:
                    - name: role
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: true
                      simple_type:
                        type: bytes
                    - name: previousAdminRole
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: true
                      simple_type:
                        type: bytes
                    - name: newAdminRole
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: true
                      simple_type:
                        type: bytes
                  outputs: null
                - type: event
                  name: RoleGranted
                  constant: false
                  anonymous: false
                  stateMutability: ''
                  inputs:
                    - name: role
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: true
                      simple_type:
                        type: bytes
                    - name: account
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: true
                      simple_type:
                        type: address
                    - name: sender
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: true
                      simple_type:
                        type: address
                  outputs: null
                - type: event
                  name: RoleRevoked
                  constant: false
                  anonymous: false
                  stateMutability: ''
                  inputs:
                    - name: role
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: true
                      simple_type:
                        type: bytes
                    - name: account
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: true
                      simple_type:
                        type: address
                    - name: sender
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: true
                      simple_type:
                        type: address
                  outputs: null
              raw_abi:
                - inputs:
                    - internalType: address payable
                      name: _feeWallet
                      type: address
                  stateMutability: nonpayable
                  type: constructor
                - anonymous: false
                  inputs:
                    - indexed: true
                      internalType: address
                      name: adapter
                      type: address
                  name: AdapterInitialized
                  type: event
                - anonymous: false
                  inputs:
                    - indexed: true
                      internalType: bytes32
                      name: role
                      type: bytes32
                    - indexed: true
                      internalType: bytes32
                      name: previousAdminRole
                      type: bytes32
                    - indexed: true
                      internalType: bytes32
                      name: newAdminRole
                      type: bytes32
                  name: RoleAdminChanged
                  type: event
                - anonymous: false
                  inputs:
                    - indexed: true
                      internalType: bytes32
                      name: role
                      type: bytes32
                    - indexed: true
                      internalType: address
                      name: account
                      type: address
                    - indexed: true
                      internalType: address
                      name: sender
                      type: address
                  name: RoleGranted
                  type: event
                - anonymous: false
                  inputs:
                    - indexed: true
                      internalType: bytes32
                      name: role
                      type: bytes32
                    - indexed: true
                      internalType: address
                      name: account
                      type: address
                    - indexed: true
                      internalType: address
                      name: sender
                      type: address
                  name: RoleRevoked
                  type: event
                - anonymous: false
                  inputs:
                    - indexed: true
                      internalType: address
                      name: router
                      type: address
                  name: RouterInitialized
                  type: event
                - stateMutability: payable
                  type: fallback
                - inputs: []
                  name: DEFAULT_ADMIN_ROLE
                  outputs:
                    - internalType: bytes32
                      name: ''
                      type: bytes32
                  stateMutability: view
                  type: function
                - inputs: []
                  name: ROUTER_ROLE
                  outputs:
                    - internalType: bytes32
                      name: ''
                      type: bytes32
                  stateMutability: view
                  type: function
                - inputs: []
                  name: WHITELISTED_ROLE
                  outputs:
                    - internalType: bytes32
                      name: ''
                      type: bytes32
                  stateMutability: view
                  type: function
                - inputs:
                    - internalType: bytes32
                      name: key
                      type: bytes32
                  name: getAdapterData
                  outputs:
                    - internalType: bytes
                      name: ''
                      type: bytes
                  stateMutability: view
                  type: function
                - inputs: []
                  name: getFeeWallet
                  outputs:
                    - internalType: address
                      name: ''
                      type: address
                  stateMutability: view
                  type: function
                - inputs:
                    - internalType: bytes4
                      name: selector
                      type: bytes4
                  name: getImplementation
                  outputs:
                    - internalType: address
                      name: ''
                      type: address
                  stateMutability: view
                  type: function
                - inputs:
                    - internalType: address
                      name: partner
                      type: address
                  name: getPartnerFeeStructure
                  outputs:
                    - components:
                        - internalType: uint256
                          name: partnerShare
                          type: uint256
                        - internalType: bool
                          name: noPositiveSlippage
                          type: bool
                        - internalType: bool
                          name: positiveSlippageToUser
                          type: bool
                        - internalType: uint16
                          name: feePercent
                          type: uint16
                        - internalType: string
                          name: partnerId
                          type: string
                        - internalType: bytes
                          name: data
                          type: bytes
                      internalType: struct AugustusStorage.FeeStructure
                      name: ''
                      type: tuple
                  stateMutability: view
                  type: function
                - inputs:
                    - internalType: bytes32
                      name: role
                      type: bytes32
                  name: getRoleAdmin
                  outputs:
                    - internalType: bytes32
                      name: ''
                      type: bytes32
                  stateMutability: view
                  type: function
                - inputs:
                    - internalType: bytes32
                      name: role
                      type: bytes32
                    - internalType: uint256
                      name: index
                      type: uint256
                  name: getRoleMember
                  outputs:
                    - internalType: address
                      name: ''
                      type: address
                  stateMutability: view
                  type: function
                - inputs:
                    - internalType: bytes32
                      name: role
                      type: bytes32
                  name: getRoleMemberCount
                  outputs:
                    - internalType: uint256
                      name: ''
                      type: uint256
                  stateMutability: view
                  type: function
                - inputs:
                    - internalType: bytes32
                      name: key
                      type: bytes32
                  name: getRouterData
                  outputs:
                    - internalType: bytes
                      name: ''
                      type: bytes
                  stateMutability: view
                  type: function
                - inputs: []
                  name: getTokenTransferProxy
                  outputs:
                    - internalType: address
                      name: ''
                      type: address
                  stateMutability: view
                  type: function
                - inputs: []
                  name: getVersion
                  outputs:
                    - internalType: string
                      name: ''
                      type: string
                  stateMutability: pure
                  type: function
                - inputs:
                    - internalType: bytes32
                      name: role
                      type: bytes32
                    - internalType: address
                      name: account
                      type: address
                  name: grantRole
                  outputs: []
                  stateMutability: nonpayable
                  type: function
                - inputs:
                    - internalType: bytes32
                      name: role
                      type: bytes32
                    - internalType: address
                      name: account
                      type: address
                  name: hasRole
                  outputs:
                    - internalType: bool
                      name: ''
                      type: bool
                  stateMutability: view
                  type: function
                - inputs:
                    - internalType: address
                      name: adapter
                      type: address
                    - internalType: bytes
                      name: data
                      type: bytes
                  name: initializeAdapter
                  outputs: []
                  stateMutability: nonpayable
                  type: function
                - inputs:
                    - internalType: address
                      name: router
                      type: address
                    - internalType: bytes
                      name: data
                      type: bytes
                  name: initializeRouter
                  outputs: []
                  stateMutability: nonpayable
                  type: function
                - inputs:
                    - internalType: bytes32
                      name: key
                      type: bytes32
                  name: isAdapterInitialized
                  outputs:
                    - internalType: bool
                      name: ''
                      type: bool
                  stateMutability: view
                  type: function
                - inputs:
                    - internalType: bytes32
                      name: key
                      type: bytes32
                  name: isRouterInitialized
                  outputs:
                    - internalType: bool
                      name: ''
                      type: bool
                  stateMutability: view
                  type: function
                - inputs:
                    - internalType: address
                      name: partner
                      type: address
                    - internalType: uint256
                      name: _partnerShare
                      type: uint256
                    - internalType: bool
                      name: _noPositiveSlippage
                      type: bool
                    - internalType: bool
                      name: _positiveSlippageToUser
                      type: bool
                    - internalType: uint16
                      name: _feePercent
                      type: uint16
                    - internalType: string
                      name: partnerId
                      type: string
                    - internalType: bytes
                      name: _data
                      type: bytes
                  name: registerPartner
                  outputs: []
                  stateMutability: nonpayable
                  type: function
                - inputs:
                    - internalType: bytes32
                      name: role
                      type: bytes32
                    - internalType: address
                      name: account
                      type: address
                  name: renounceRole
                  outputs: []
                  stateMutability: nonpayable
                  type: function
                - inputs:
                    - internalType: bytes32
                      name: role
                      type: bytes32
                    - internalType: address
                      name: account
                      type: address
                  name: revokeRole
                  outputs: []
                  stateMutability: nonpayable
                  type: function
                - inputs:
                    - internalType: address payable
                      name: _feeWallet
                      type: address
                  name: setFeeWallet
                  outputs: []
                  stateMutability: nonpayable
                  type: function
                - inputs:
                    - internalType: bytes4
                      name: selector
                      type: bytes4
                    - internalType: address
                      name: implementation
                      type: address
                  name: setImplementation
                  outputs: []
                  stateMutability: nonpayable
                  type: function
                - inputs:
                    - internalType: address
                      name: token
                      type: address
                    - internalType: address payable
                      name: destination
                      type: address
                    - internalType: uint256
                      name: amount
                      type: uint256
                  name: transferTokens
                  outputs: []
                  stateMutability: nonpayable
                  type: function
                - stateMutability: payable
                  type: receive
              states:
                - name: feeWallet
                  type: address payable
                  storage_location: storage
                  offset: 0
                  index: >-
                    0x0000000000000000000000000000000000000000000000000000000000000001
                  indexed: false
                  simple_type:
                    type: address payable
                - name: adapterVsData
                  type: mapping (bytes32 => bytes)
                  storage_location: storage
                  offset: 0
                  index: >-
                    0x0000000000000000000000000000000000000000000000000000000000000005
                  indexed: false
                - name: routerData
                  type: mapping (bytes32 => bytes)
                  storage_location: storage
                  offset: 0
                  index: >-
                    0x0000000000000000000000000000000000000000000000000000000000000006
                  indexed: false
                - name: tokenTransferProxy
                  type: address
                  storage_location: storage
                  offset: 0
                  index: >-
                    0x0000000000000000000000000000000000000000000000000000000000000000
                  indexed: false
                  simple_type:
                    type: address
                - name: registeredPartners
                  type: mapping (address => tuple)
                  storage_location: memory
                  components:
                    - name: partnerShare
                      type: uint256
                      storage_location: memory
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                    - name: noPositiveSlippage
                      type: bool
                      storage_location: memory
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000001
                      indexed: false
                      simple_type:
                        type: bool
                    - name: positiveSlippageToUser
                      type: bool
                      storage_location: memory
                      offset: 8
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000001
                      indexed: false
                      simple_type:
                        type: bool
                    - name: feePercent
                      type: uint16
                      storage_location: memory
                      offset: 16
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000001
                      indexed: false
                      simple_type:
                        type: uint
                    - name: partnerId
                      type: string
                      storage_location: memory
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000002
                      indexed: false
                      simple_type:
                        type: string
                    - name: data
                      type: bytes
                      storage_location: memory
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000003
                      indexed: false
                      simple_type:
                        type: bytes
                  offset: 0
                  index: >-
                    0x0000000000000000000000000000000000000000000000000000000000000002
                  indexed: false
                - name: selectorVsRouter
                  type: mapping (bytes4 => address)
                  storage_location: storage
                  offset: 0
                  index: >-
                    0x0000000000000000000000000000000000000000000000000000000000000003
                  indexed: false
                - name: adapterInitialized
                  type: mapping (bytes32 => bool)
                  storage_location: storage
                  offset: 0
                  index: >-
                    0x0000000000000000000000000000000000000000000000000000000000000004
                  indexed: false
                - name: routerInitialized
                  type: mapping (bytes32 => bool)
                  storage_location: storage
                  offset: 0
                  index: >-
                    0x0000000000000000000000000000000000000000000000000000000000000007
                  indexed: false
                - name: _roles
                  type: mapping (bytes32 => tuple)
                  storage_location: memory
                  components:
                    - name: members
                      type: tuple
                      storage_location: memory
                      components:
                        - name: _inner
                          type: tuple
                          storage_location: memory
                          components:
                            - name: _values
                              type: bytes32[]
                              storage_location: memory
                              offset: 0
                              index: >-
                                0x0000000000000000000000000000000000000000000000000000000000000000
                              indexed: false
                              simple_type:
                                type: slice
                                nested_type:
                                  type: bytes
                            - name: _indexes
                              type: mapping (bytes32 => uint256)
                              storage_location: memory
                              offset: 0
                              index: >-
                                0x0000000000000000000000000000000000000000000000000000000000000001
                              indexed: false
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                    - name: adminRole
                      type: bytes32
                      storage_location: memory
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000002
                      indexed: false
                      simple_type:
                        type: bytes
                  offset: 0
                  index: >-
                    0x0000000000000000000000000000000000000000000000000000000000000008
                  indexed: false
            src_map:
              '0':
                r: '47102:5950:0'
                s: 47102
                l: 5950
                ln: 1467
                c: 1
                j: '-'
              '2':
                r: '47102:5950:0'
                s: 47102
                l: 5950
                ln: 1467
                c: 1
                j: '-'
            creation_block: 0
            creation_tx: ''
            creator_address: ''
            created_at: '2021-08-18T12:43:57Z'
            language: solidity
            in_project: false
        generated_access_list: []
    quick_mode_simulate_post_response:
      type: object
      title: Quick Simulation Response
      description: An object with details about transaction simulation using a quick mode.
      example:
        transaction:
          hash: '0x8bb054967340f08827e1943ad34e2a448357e72ad1adee7397c577a716530a0f'
          block_hash: ''
          block_number: 17884583
          from: '0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df'
          gas: 648318
          gas_price: 0
          gas_fee_cap: 0
          gas_tip_cap: 0
          cumulative_gas_used: 0
          gas_used: 45065
          effective_gas_price: 0
          input: >-
            0xa94e78ef000000000000000000000000000000000000000000000000000000000000002000000000000000000000000068037790a0229e9ce6eaa8a99ea92964106c470300000000000000000000000000000000000000000000010f0cf064dd592000000000000000000000000000000000000000000000000000000000000145dc1b2e00000000000000000000000000000000000000000000000000000001477f4d7d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000064d281e65c9438a5a99c4bccb1035296d5d2d8d200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000320000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002b68037790a0229e9ce6eaa8a99ea92964106c47030001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a730000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000060000000000000000000000001b81d678ffb9c0263b24a97847620c99d213eb14000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000064dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
          nonce: 1094
          to: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
          index: 0
          value: 0x
          access_list: null
          status: false
          addresses: null
          contract_ids: null
          network_id: '1'
          timestamp: '2023-08-10T12:48:11Z'
          function_selector: ''
          l1_block_number: 0
          l1_timestamp: 0
          deposit_tx: false
          system_tx: false
          sig:
            v: '0x0'
            r: '0x0'
            s: '0x0'
          transaction_info:
            contract_id: eth:1:0xbd7b550d2e7571383d84acf597a00d341e5c406e
            block_number: 17884583
            transaction_id: '0x8bb054967340f08827e1943ad34e2a448357e72ad1adee7397c577a716530a0f'
            contract_address: '0xbd7b550d2e7571383d84acf597a00d341e5c406e'
            method: null
            parameters: null
            intrinsic_gas: 32744
            refund_gas: 0
            call_trace:
              hash: >-
                0x8bb054967340f08827e1943ad34e2a448357e72ad1adee7397c577a716530a0f
              contract_name: ''
              function_pc: 0
              function_op: CALL
              absolute_position: 0
              caller_pc: 0
              caller_op: CALL
              call_type: CALL
              address: '0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df'
              from: '0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df'
              from_balance: '50912118197849012'
              to: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
              to_balance: '0'
              value: '0'
              block_timestamp: '0001-01-01T00:00:00Z'
              gas: 615574
              gas_used: 12321
              intrinsic_gas: 32744
              storage_address: '0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df'
              input: >-
                0xa94e78ef000000000000000000000000000000000000000000000000000000000000002000000000000000000000000068037790a0229e9ce6eaa8a99ea92964106c470300000000000000000000000000000000000000000000010f0cf064dd592000000000000000000000000000000000000000000000000000000000000145dc1b2e00000000000000000000000000000000000000000000000000000001477f4d7d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000064d281e65c9438a5a99c4bccb1035296d5d2d8d200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000320000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002b68037790a0229e9ce6eaa8a99ea92964106c47030001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a730000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000060000000000000000000000001b81d678ffb9c0263b24a97847620c99d213eb14000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000064dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
              nonce_diff:
                - address: '0x3F41a1CFd3C8B8d9c162dE0f42307a0095A6e5DF'
                  original: '1094'
                  dirty: '1095'
              output: 0x
              decoded_output: null
              error_absolute_position: 2098
              error: execution reverted
              error_op: REVERT
              error_hex_data: >-
                0x08c379a000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000011446561646c696e65206272656163686564000000000000000000000000000000
              network_id: '1'
              calls:
                - hash: ''
                  function_pc: 0
                  function_op: STOP
                  absolute_position: 2044
                  caller_pc: 736
                  caller_op: DELEGATECALL
                  call_type: DELEGATECALL
                  address: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
                  from: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
                  from_balance: '0'
                  to: '0xbd7b550d2e7571383d84acf597a00d341e5c406e'
                  to_balance: '0'
                  value: null
                  caller:
                    address: '0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df'
                    balance: '50912118197849012'
                  block_timestamp: '0001-01-01T00:00:00Z'
                  gas: 600460
                  gas_used: 6554
                  refund_gas: 9531
                  storage_address: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
                  input: >-
                    0xa94e78ef000000000000000000000000000000000000000000000000000000000000002000000000000000000000000068037790a0229e9ce6eaa8a99ea92964106c470300000000000000000000000000000000000000000000010f0cf064dd592000000000000000000000000000000000000000000000000000000000000145dc1b2e00000000000000000000000000000000000000000000000000000001477f4d7d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000064d281e65c9438a5a99c4bccb1035296d5d2d8d200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000320000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002b68037790a0229e9ce6eaa8a99ea92964106c47030001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a730000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000060000000000000000000000001b81d678ffb9c0263b24a97847620c99d213eb14000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000064dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                  output: 0x
                  decoded_output: null
                  error_absolute_position: 2043
                  error: execution reverted
                  error_op: REVERT
                  error_reason: Deadline breached
                  network_id: ''
                  calls:
                    - hash: ''
                      function_pc: 0
                      function_op: ''
                      absolute_position: 2043
                      caller_pc: 0
                      caller_op: ''
                      address: '0xbd7b550d2e7571383d84acf597a00d341e5c406e'
                      from: '0xbd7b550d2e7571383d84acf597a00d341e5c406e'
                      from_balance: null
                      to: '0xbd7b550d2e7571383d84acf597a00d341e5c406e'
                      to_balance: null
                      value: null
                      block_timestamp: '0001-01-01T00:00:00Z'
                      gas: 0
                      gas_used: 0
                      input: 0x
                      output: 0x
                      decoded_output: null
                      error: execution reverted
                      error_op: REVERT
                      network_id: ''
                      calls: null
            stack_trace:
              - file_index: null
                contract: '0xbd7b550d2e7571383d84acf597a00d341e5c406e'
                name: null
                line: null
                error: execution reverted
                error_reason: Deadline breached
                code: null
                op: REVERT
                length: null
              - file_index: null
                contract: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
                name: null
                line: null
                error: null
                code: null
                op: DELEGATECALL
                length: null
              - file_index: null
                contract: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
                name: ''
                line: null
                error: null
                code: null
                op: CALL
                length: null
            logs: null
            balance_diff: null
            nonce_diff:
              - address: '0x3F41a1CFd3C8B8d9c162dE0f42307a0095A6e5DF'
                original: '1094'
                dirty: '1095'
            state_diff: null
            raw_state_diff: null
            console_logs: null
            asset_changes: null
            balance_changes: []
            created_at: '2023-08-10T12:48:11Z'
          error_message: Deadline breached
          error_info:
            error_message: Deadline breached
            address: '0xbd7b550d2e7571383d84acf597a00d341e5c406e'
          method: ''
          decoded_input: null
          call_trace:
            - call_type: CALL
              from: '0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df'
              to: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
              gas: 615574
              gas_used: 12321
              address: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
              error: value:"execution reverted"
              subtraces: 1
              input: >-
                0xa94e78ef000000000000000000000000000000000000000000000000000000000000002000000000000000000000000068037790a0229e9ce6eaa8a99ea92964106c470300000000000000000000000000000000000000000000010f0cf064dd592000000000000000000000000000000000000000000000000000000000000145dc1b2e00000000000000000000000000000000000000000000000000000001477f4d7d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000064d281e65c9438a5a99c4bccb1035296d5d2d8d200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000320000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002b68037790a0229e9ce6eaa8a99ea92964106c47030001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a730000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000060000000000000000000000001b81d678ffb9c0263b24a97847620c99d213eb14000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000064dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
              output: >-
                0x08c379a000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000011446561646c696e65206272656163686564000000000000000000000000000000
              errorMessage: value:"Deadline breached"
              fromBalance: '0xb4e04d3ff20bb4'
            - call_type: DELEGATECALL
              from: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
              to: '0xbd7b550d2e7571383d84acf597a00d341e5c406e'
              gas: 600460
              gas_used: 6554
              address: '0xbd7b550d2e7571383d84acf597a00d341e5c406e'
              error: value:"execution reverted"
              trace_address:
                - 0
              input: >-
                0xa94e78ef000000000000000000000000000000000000000000000000000000000000002000000000000000000000000068037790a0229e9ce6eaa8a99ea92964106c470300000000000000000000000000000000000000000000010f0cf064dd592000000000000000000000000000000000000000000000000000000000000145dc1b2e00000000000000000000000000000000000000000000000000000001477f4d7d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000064d281e65c9438a5a99c4bccb1035296d5d2d8d200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000320000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002b68037790a0229e9ce6eaa8a99ea92964106c47030001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a730000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000060000000000000000000000001b81d678ffb9c0263b24a97847620c99d213eb14000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000064dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
              output: >-
                0x08c379a000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000011446561646c696e65206272656163686564000000000000000000000000000000
              gas_in: 612591
              gas_cost: 603060
              errorMessage: value:"Deadline breached"
        simulation:
          id: 19aaed14-6079-4533-bf1c-3b5aff52c8a6
          project_id: dfdc391a-a15d-4590-9aef-8691259c7df4
          owner_id: 7d5e8b1f-8bf8-4eae-a70f-fb7d354b1cc2
          network_id: '1'
          block_number: 17884583
          transaction_index: 0
          from: '0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df'
          to: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
          input: >-
            0xa94e78ef000000000000000000000000000000000000000000000000000000000000002000000000000000000000000068037790a0229e9ce6eaa8a99ea92964106c470300000000000000000000000000000000000000000000010f0cf064dd592000000000000000000000000000000000000000000000000000000000000145dc1b2e00000000000000000000000000000000000000000000000000000001477f4d7d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000064d281e65c9438a5a99c4bccb1035296d5d2d8d200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000320000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002b68037790a0229e9ce6eaa8a99ea92964106c47030001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a730000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000060000000000000000000000001b81d678ffb9c0263b24a97847620c99d213eb14000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000064dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
          gas: 648318
          gas_price: '0'
          gas_used: 45065
          value: '0'
          status: false
          access_list: null
          queue_origin: ''
          block_header:
            number: '0x110e5a7'
            hash: '0x0000000000000000000000000000000000000000000000000000000000000000'
            stateRoot: '0x5aedfee941729c66fab3bc35cc00a8687d4c8f177e800565fa3895fee02a8d12'
            parentHash: '0x9075514cb7db4dc5c7f25b7b53bdee3ea51b3088eb94a5551668f49d5fd7bdc9'
            sha3Uncles: '0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347'
            transactionsRoot: '0x3f3e3bac2d1a65adabe655196f48341105a8c21600b5d1dcd0f95ad6baf91d11'
            receiptsRoot: '0xb129fa08d3abb39c49b4e65f1edf7efc0d3d5ddf6b84ff802b43eb2b29e9b046'
            logsBloom: >-
              0x74717005272adbead19e3886a21a471915102405ca59280ca44b9062f41101c5e441130e920943f04203fb604087c1b12293878b8c5b381213d09c35c12cc09046c0e4af0174382b7952554bf1f820ec0ff34a2c0560597035187563c6e023501ac2c8a2129384ab01a13c0015b43cdd7a0b03c200148d6d57861cb000a810560e11925caa60b13b60f5614117b606c68907e5859bc0903c643127dbc5900e2c831408093b4a209b1e40cec85cf20d07a4919a40b539994611a185ab00280022f39a08d67104014a096fa60a493a80da0f6e8a22412fb0ba6884429e1033a31cd8bce468d10c7d8a82663785a120c4408b2112604a101a5fa8891290302b970d
            timestamp: '0x64d4dc8b'
            difficulty: '0x0'
            gasLimit: '0x1c9c380'
            gasUsed: '0x9d2881'
            miner: '0x95222290dd7278aa3ddd389cc1e1d165cc4bafe5'
            extraData: '0x6265617665726275696c642e6f7267'
            mixHash: '0xcd3023878e91294b673f69b51e3ed64e814f6caabb795a93caadb34cc39a8ff3'
            nonce: '0x0000000000000000'
            baseFeePerGas: '0x4d0b44e27'
            size: '0x0'
            totalDifficulty: '0x0'
            uncles: null
            transactions: null
          deposit_tx: false
          system_tx: false
          error_message: Deadline breached
          nonce: 1094
          addresses: null
          contract_ids: null
          shared: false
          created_at: '2023-12-20T14:23:16.436539931Z'
        contracts: []
        generated_access_list: []
    abi_mode_simulate_post_response:
      type: object
      title: ABI Simulation Response
      description: An object with details about transaction simulation using an ABI mode.
      example:
        transaction:
          hash: '0x8bb054967340f08827e1943ad34e2a448357e72ad1adee7397c577a716530a0f'
          block_hash: ''
          block_number: 17884583
          from: '0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df'
          gas: 648318
          gas_price: 0
          gas_fee_cap: 0
          gas_tip_cap: 0
          cumulative_gas_used: 0
          gas_used: 45065
          effective_gas_price: 0
          input: >-
            0xa94e78ef000000000000000000000000000000000000000000000000000000000000002000000000000000000000000068037790a0229e9ce6eaa8a99ea92964106c470300000000000000000000000000000000000000000000010f0cf064dd592000000000000000000000000000000000000000000000000000000000000145dc1b2e00000000000000000000000000000000000000000000000000000001477f4d7d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000064d281e65c9438a5a99c4bccb1035296d5d2d8d200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000320000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002b68037790a0229e9ce6eaa8a99ea92964106c47030001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a730000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000060000000000000000000000001b81d678ffb9c0263b24a97847620c99d213eb14000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000064dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
          nonce: 1094
          to: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
          index: 0
          value: 0x
          access_list: null
          status: false
          addresses:
            - '0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df'
            - '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
            - '0xbd7b550d2e7571383d84acf597a00d341e5c406e'
          contract_ids:
            - eth:1:0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df
            - eth:1:0xdef171fe48cf0115b1d80b88dc8eab59176fee57
            - eth:1:0xbd7b550d2e7571383d84acf597a00d341e5c406e
          network_id: '1'
          timestamp: '2023-08-10T12:48:11Z'
          function_selector: ''
          l1_block_number: 0
          l1_timestamp: 0
          deposit_tx: false
          system_tx: false
          sig:
            v: '0x0'
            r: '0x0'
            s: '0x0'
          transaction_info:
            contract_id: eth:1:0xbd7b550d2e7571383d84acf597a00d341e5c406e
            block_number: 17884583
            transaction_id: '0x8bb054967340f08827e1943ad34e2a448357e72ad1adee7397c577a716530a0f'
            contract_address: '0xbd7b550d2e7571383d84acf597a00d341e5c406e'
            method: null
            parameters: null
            intrinsic_gas: 32744
            refund_gas: 0
            call_trace:
              hash: >-
                0x8bb054967340f08827e1943ad34e2a448357e72ad1adee7397c577a716530a0f
              contract_name: AugustusSwapper
              function_pc: 0
              function_op: CALL
              absolute_position: 0
              caller_pc: 0
              caller_op: CALL
              call_type: CALL
              address: '0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df'
              from: '0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df'
              from_balance: '50912118197849012'
              to: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
              to_balance: '0'
              value: '0'
              block_timestamp: '0001-01-01T00:00:00Z'
              gas: 615574
              gas_used: 12321
              intrinsic_gas: 32744
              storage_address: '0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df'
              input: >-
                0xa94e78ef000000000000000000000000000000000000000000000000000000000000002000000000000000000000000068037790a0229e9ce6eaa8a99ea92964106c470300000000000000000000000000000000000000000000010f0cf064dd592000000000000000000000000000000000000000000000000000000000000145dc1b2e00000000000000000000000000000000000000000000000000000001477f4d7d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000064d281e65c9438a5a99c4bccb1035296d5d2d8d200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000320000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002b68037790a0229e9ce6eaa8a99ea92964106c47030001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a730000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000060000000000000000000000001b81d678ffb9c0263b24a97847620c99d213eb14000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000064dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
              decoded_input:
                - soltype:
                    name: data
                    type: tuple
                    storage_location: default
                    components:
                      - name: fromToken
                        type: address
                        storage_location: default
                        offset: 0
                        index: >-
                          0x0000000000000000000000000000000000000000000000000000000000000000
                        indexed: false
                        simple_type:
                          type: address
                      - name: fromAmount
                        type: uint256
                        storage_location: default
                        offset: 0
                        index: >-
                          0x0000000000000000000000000000000000000000000000000000000000000000
                        indexed: false
                        simple_type:
                          type: uint
                      - name: toAmount
                        type: uint256
                        storage_location: default
                        offset: 0
                        index: >-
                          0x0000000000000000000000000000000000000000000000000000000000000000
                        indexed: false
                        simple_type:
                          type: uint
                      - name: expectedAmount
                        type: uint256
                        storage_location: default
                        offset: 0
                        index: >-
                          0x0000000000000000000000000000000000000000000000000000000000000000
                        indexed: false
                        simple_type:
                          type: uint
                      - name: beneficiary
                        type: address
                        storage_location: default
                        offset: 0
                        index: >-
                          0x0000000000000000000000000000000000000000000000000000000000000000
                        indexed: false
                        simple_type:
                          type: address
                      - name: path
                        type: tuple[]
                        storage_location: default
                        components:
                          - name: to
                            type: address
                            storage_location: default
                            offset: 0
                            index: >-
                              0x0000000000000000000000000000000000000000000000000000000000000000
                            indexed: false
                            simple_type:
                              type: address
                          - name: totalNetworkFee
                            type: uint256
                            storage_location: default
                            offset: 0
                            index: >-
                              0x0000000000000000000000000000000000000000000000000000000000000000
                            indexed: false
                            simple_type:
                              type: uint
                          - name: adapters
                            type: tuple[]
                            storage_location: default
                            components:
                              - name: adapter
                                type: address
                                storage_location: default
                                offset: 0
                                index: >-
                                  0x0000000000000000000000000000000000000000000000000000000000000000
                                indexed: false
                                simple_type:
                                  type: address
                              - name: percent
                                type: uint256
                                storage_location: default
                                offset: 0
                                index: >-
                                  0x0000000000000000000000000000000000000000000000000000000000000000
                                indexed: false
                                simple_type:
                                  type: uint
                              - name: networkFee
                                type: uint256
                                storage_location: default
                                offset: 0
                                index: >-
                                  0x0000000000000000000000000000000000000000000000000000000000000000
                                indexed: false
                                simple_type:
                                  type: uint
                              - name: route
                                type: tuple[]
                                storage_location: default
                                components:
                                  - name: index
                                    type: uint256
                                    storage_location: default
                                    offset: 0
                                    index: >-
                                      0x0000000000000000000000000000000000000000000000000000000000000000
                                    indexed: false
                                    simple_type:
                                      type: uint
                                  - name: targetExchange
                                    type: address
                                    storage_location: default
                                    offset: 0
                                    index: >-
                                      0x0000000000000000000000000000000000000000000000000000000000000000
                                    indexed: false
                                    simple_type:
                                      type: address
                                  - name: percent
                                    type: uint256
                                    storage_location: default
                                    offset: 0
                                    index: >-
                                      0x0000000000000000000000000000000000000000000000000000000000000000
                                    indexed: false
                                    simple_type:
                                      type: uint
                                  - name: payload
                                    type: bytes
                                    storage_location: default
                                    offset: 0
                                    index: >-
                                      0x0000000000000000000000000000000000000000000000000000000000000000
                                    indexed: false
                                    simple_type:
                                      type: bytes
                                  - name: networkFee
                                    type: uint256
                                    storage_location: default
                                    offset: 0
                                    index: >-
                                      0x0000000000000000000000000000000000000000000000000000000000000000
                                    indexed: false
                                    simple_type:
                                      type: uint
                                offset: 0
                                index: >-
                                  0x0000000000000000000000000000000000000000000000000000000000000000
                                indexed: false
                                simple_type:
                                  type: slice
                            offset: 0
                            index: >-
                              0x0000000000000000000000000000000000000000000000000000000000000000
                            indexed: false
                            simple_type:
                              type: slice
                        offset: 0
                        index: >-
                          0x0000000000000000000000000000000000000000000000000000000000000000
                        indexed: false
                        simple_type:
                          type: slice
                      - name: partner
                        type: address
                        storage_location: default
                        offset: 0
                        index: >-
                          0x0000000000000000000000000000000000000000000000000000000000000000
                        indexed: false
                        simple_type:
                          type: address
                      - name: feePercent
                        type: uint256
                        storage_location: default
                        offset: 0
                        index: >-
                          0x0000000000000000000000000000000000000000000000000000000000000000
                        indexed: false
                        simple_type:
                          type: uint
                      - name: permit
                        type: bytes
                        storage_location: default
                        offset: 0
                        index: >-
                          0x0000000000000000000000000000000000000000000000000000000000000000
                        indexed: false
                        simple_type:
                          type: bytes
                      - name: deadline
                        type: uint256
                        storage_location: default
                        offset: 0
                        index: >-
                          0x0000000000000000000000000000000000000000000000000000000000000000
                        indexed: false
                        simple_type:
                          type: uint
                      - name: uuid
                        type: bytes16
                        storage_location: default
                        offset: 0
                        index: >-
                          0x0000000000000000000000000000000000000000000000000000000000000000
                        indexed: false
                        simple_type:
                          type: bytes
                    offset: 0
                    index: >-
                      0x0000000000000000000000000000000000000000000000000000000000000000
                    indexed: false
                  value:
                    fromToken: '0x68037790a0229e9ce6eaa8a99ea92964106c4703'
                    fromAmount: '5000000000000000000000'
                    toAmount: '5467020078'
                    expectedAmount: '5494492541'
                    beneficiary: '0x0000000000000000000000000000000000000000'
                    path:
                      - to: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'
                        totalNetworkFee: '0'
                        adapters:
                          - adapter: '0x9be264469ef954c139da4a45cf76cbcc5e3a6a73'
                            percent: '10000'
                            networkFee: '0'
                            route:
                              - index: '6'
                                targetExchange: '0xe592427a0aece92de3edee1f18e0157c05861564'
                                percent: '10000'
                                payload: >-
                                  0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002b68037790a0229e9ce6eaa8a99ea92964106c47030001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000
                                networkFee: '0'
                      - to: '0xdac17f958d2ee523a2206206994597c13d831ec7'
                        totalNetworkFee: '0'
                        adapters:
                          - adapter: '0x9be264469ef954c139da4a45cf76cbcc5e3a6a73'
                            percent: '10000'
                            networkFee: '0'
                            route:
                              - index: '6'
                                targetExchange: '0x1b81d678ffb9c0263b24a97847620c99d213eb14'
                                percent: '10000'
                                payload: >-
                                  0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000064dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000000000000000000000
                                networkFee: '0'
                    partner: '0x0000000000000000000000000000000000000000'
                    feePercent: >-
                      452312848583266388373324160190187140051835877600158453279131187530910679040
                    permit: 0x
                    deadline: '1691517414'
                    uuid: '0x5c9438a5a99c4bccb1035296d5d2d8d2'
              nonce_diff:
                - address: '0x3F41a1CFd3C8B8d9c162dE0f42307a0095A6e5DF'
                  original: '1094'
                  dirty: '1095'
              output: 0x
              decoded_output: null
              error_absolute_position: 2098
              error: execution reverted
              error_op: REVERT
              error_file_index: 0
              error_line_number: 1641
              error_code_start: 52881
              error_code_length: 34
              error_hex_data: >-
                0x08c379a000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000011446561646c696e65206272656163686564000000000000000000000000000000
              network_id: '1'
              calls:
                - hash: ''
                  contract_name: AugustusSwapper
                  function_name: multiSwap
                  function_pc: 78
                  function_op: JUMPDEST
                  function_file_index: 14
                  function_code_start: 316
                  function_line_number: 14
                  function_code_length: 13499
                  absolute_position: 2044
                  caller_pc: 736
                  caller_op: DELEGATECALL
                  caller_file_index: 0
                  caller_line_number: 1508
                  caller_code_start: 48425
                  caller_code_length: 37
                  call_type: DELEGATECALL
                  address: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
                  from: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
                  from_balance: '0'
                  to: '0xbd7b550d2e7571383d84acf597a00d341e5c406e'
                  to_balance: '0'
                  value: null
                  caller:
                    address: '0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df'
                    balance: '50912118197849012'
                  block_timestamp: '0001-01-01T00:00:00Z'
                  gas: 600460
                  gas_used: 6554
                  refund_gas: 9531
                  storage_address: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
                  input: >-
                    0xa94e78ef000000000000000000000000000000000000000000000000000000000000002000000000000000000000000068037790a0229e9ce6eaa8a99ea92964106c470300000000000000000000000000000000000000000000010f0cf064dd592000000000000000000000000000000000000000000000000000000000000145dc1b2e00000000000000000000000000000000000000000000000000000001477f4d7d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000064d281e65c9438a5a99c4bccb1035296d5d2d8d200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000320000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002b68037790a0229e9ce6eaa8a99ea92964106c47030001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a730000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000060000000000000000000000001b81d678ffb9c0263b24a97847620c99d213eb14000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000064dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
                  decoded_input:
                    - soltype:
                        name: data
                        type: tuple
                        storage_location: default
                        components:
                          - name: fromToken
                            type: address
                            storage_location: default
                            offset: 0
                            index: >-
                              0x0000000000000000000000000000000000000000000000000000000000000000
                            indexed: false
                            simple_type:
                              type: address
                          - name: fromAmount
                            type: uint256
                            storage_location: default
                            offset: 0
                            index: >-
                              0x0000000000000000000000000000000000000000000000000000000000000000
                            indexed: false
                            simple_type:
                              type: uint
                          - name: toAmount
                            type: uint256
                            storage_location: default
                            offset: 0
                            index: >-
                              0x0000000000000000000000000000000000000000000000000000000000000000
                            indexed: false
                            simple_type:
                              type: uint
                          - name: expectedAmount
                            type: uint256
                            storage_location: default
                            offset: 0
                            index: >-
                              0x0000000000000000000000000000000000000000000000000000000000000000
                            indexed: false
                            simple_type:
                              type: uint
                          - name: beneficiary
                            type: address
                            storage_location: default
                            offset: 0
                            index: >-
                              0x0000000000000000000000000000000000000000000000000000000000000000
                            indexed: false
                            simple_type:
                              type: address
                          - name: path
                            type: tuple[]
                            storage_location: default
                            components:
                              - name: to
                                type: address
                                storage_location: default
                                offset: 0
                                index: >-
                                  0x0000000000000000000000000000000000000000000000000000000000000000
                                indexed: false
                                simple_type:
                                  type: address
                              - name: totalNetworkFee
                                type: uint256
                                storage_location: default
                                offset: 0
                                index: >-
                                  0x0000000000000000000000000000000000000000000000000000000000000000
                                indexed: false
                                simple_type:
                                  type: uint
                              - name: adapters
                                type: tuple[]
                                storage_location: default
                                components:
                                  - name: adapter
                                    type: address
                                    storage_location: default
                                    offset: 0
                                    index: >-
                                      0x0000000000000000000000000000000000000000000000000000000000000000
                                    indexed: false
                                    simple_type:
                                      type: address
                                  - name: percent
                                    type: uint256
                                    storage_location: default
                                    offset: 0
                                    index: >-
                                      0x0000000000000000000000000000000000000000000000000000000000000000
                                    indexed: false
                                    simple_type:
                                      type: uint
                                  - name: networkFee
                                    type: uint256
                                    storage_location: default
                                    offset: 0
                                    index: >-
                                      0x0000000000000000000000000000000000000000000000000000000000000000
                                    indexed: false
                                    simple_type:
                                      type: uint
                                  - name: route
                                    type: tuple[]
                                    storage_location: default
                                    components:
                                      - name: index
                                        type: uint256
                                        storage_location: default
                                        offset: 0
                                        index: >-
                                          0x0000000000000000000000000000000000000000000000000000000000000000
                                        indexed: false
                                        simple_type:
                                          type: uint
                                      - name: targetExchange
                                        type: address
                                        storage_location: default
                                        offset: 0
                                        index: >-
                                          0x0000000000000000000000000000000000000000000000000000000000000000
                                        indexed: false
                                        simple_type:
                                          type: address
                                      - name: percent
                                        type: uint256
                                        storage_location: default
                                        offset: 0
                                        index: >-
                                          0x0000000000000000000000000000000000000000000000000000000000000000
                                        indexed: false
                                        simple_type:
                                          type: uint
                                      - name: payload
                                        type: bytes
                                        storage_location: default
                                        offset: 0
                                        index: >-
                                          0x0000000000000000000000000000000000000000000000000000000000000000
                                        indexed: false
                                        simple_type:
                                          type: bytes
                                      - name: networkFee
                                        type: uint256
                                        storage_location: default
                                        offset: 0
                                        index: >-
                                          0x0000000000000000000000000000000000000000000000000000000000000000
                                        indexed: false
                                        simple_type:
                                          type: uint
                                    offset: 0
                                    index: >-
                                      0x0000000000000000000000000000000000000000000000000000000000000000
                                    indexed: false
                                    simple_type:
                                      type: slice
                                offset: 0
                                index: >-
                                  0x0000000000000000000000000000000000000000000000000000000000000000
                                indexed: false
                                simple_type:
                                  type: slice
                            offset: 0
                            index: >-
                              0x0000000000000000000000000000000000000000000000000000000000000000
                            indexed: false
                            simple_type:
                              type: slice
                          - name: partner
                            type: address
                            storage_location: default
                            offset: 0
                            index: >-
                              0x0000000000000000000000000000000000000000000000000000000000000000
                            indexed: false
                            simple_type:
                              type: address
                          - name: feePercent
                            type: uint256
                            storage_location: default
                            offset: 0
                            index: >-
                              0x0000000000000000000000000000000000000000000000000000000000000000
                            indexed: false
                            simple_type:
                              type: uint
                          - name: permit
                            type: bytes
                            storage_location: default
                            offset: 0
                            index: >-
                              0x0000000000000000000000000000000000000000000000000000000000000000
                            indexed: false
                            simple_type:
                              type: bytes
                          - name: deadline
                            type: uint256
                            storage_location: default
                            offset: 0
                            index: >-
                              0x0000000000000000000000000000000000000000000000000000000000000000
                            indexed: false
                            simple_type:
                              type: uint
                          - name: uuid
                            type: bytes16
                            storage_location: default
                            offset: 0
                            index: >-
                              0x0000000000000000000000000000000000000000000000000000000000000000
                            indexed: false
                            simple_type:
                              type: bytes
                        offset: 0
                        index: >-
                          0x0000000000000000000000000000000000000000000000000000000000000000
                        indexed: false
                      value:
                        fromToken: '0x68037790a0229e9ce6eaa8a99ea92964106c4703'
                        fromAmount: '5000000000000000000000'
                        toAmount: '5467020078'
                        expectedAmount: '5494492541'
                        beneficiary: '0x0000000000000000000000000000000000000000'
                        path:
                          - to: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'
                            totalNetworkFee: '0'
                            adapters:
                              - adapter: '0x9be264469ef954c139da4a45cf76cbcc5e3a6a73'
                                percent: '10000'
                                networkFee: '0'
                                route:
                                  - index: '6'
                                    targetExchange: '0xe592427a0aece92de3edee1f18e0157c05861564'
                                    percent: '10000'
                                    payload: >-
                                      0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002b68037790a0229e9ce6eaa8a99ea92964106c47030001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000
                                    networkFee: '0'
                          - to: '0xdac17f958d2ee523a2206206994597c13d831ec7'
                            totalNetworkFee: '0'
                            adapters:
                              - adapter: '0x9be264469ef954c139da4a45cf76cbcc5e3a6a73'
                                percent: '10000'
                                networkFee: '0'
                                route:
                                  - index: '6'
                                    targetExchange: '0x1b81d678ffb9c0263b24a97847620c99d213eb14'
                                    percent: '10000'
                                    payload: >-
                                      0x000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000064dac17f958d2ee523a2206206994597c13d831ec7000000000000000000000000000000000000000000
                                    networkFee: '0'
                        partner: '0x0000000000000000000000000000000000000000'
                        feePercent: >-
                          452312848583266388373324160190187140051835877600158453279131187530910679040
                        permit: 0x
                        deadline: '1691517414'
                        uuid: '0x5c9438a5a99c4bccb1035296d5d2d8d2'
                  output: 0x
                  decoded_output: null
                  error_absolute_position: 2043
                  error: execution reverted
                  error_op: REVERT
                  error_file_index: 14
                  error_line_number: 44
                  error_code_start: 1290
                  error_code_length: 62
                  error_reason: Deadline breached
                  network_id: ''
                  calls:
                    - hash: ''
                      contract_name: AugustusSwapper
                      function_name: multiSwap
                      function_pc: 0
                      function_op: ''
                      absolute_position: 2043
                      caller_pc: 0
                      caller_op: ''
                      address: '0xbd7b550d2e7571383d84acf597a00d341e5c406e'
                      from: '0xbd7b550d2e7571383d84acf597a00d341e5c406e'
                      from_balance: null
                      to: '0xbd7b550d2e7571383d84acf597a00d341e5c406e'
                      to_balance: null
                      value: null
                      block_timestamp: '0001-01-01T00:00:00Z'
                      gas: 0
                      gas_used: 0
                      input: 0x
                      output: 0x
                      decoded_output: null
                      error: execution reverted
                      error_op: REVERT
                      error_file_index: 14
                      error_line_number: 44
                      error_code_start: 1290
                      error_code_length: 62
                      network_id: ''
                      calls: null
            stack_trace:
              - file_index: 14
                contract: '0xbd7b550d2e7571383d84acf597a00d341e5c406e'
                name: AugustusSwapper
                line: 44
                error: execution reverted
                error_reason: Deadline breached
                code: multiSwap
                op: REVERT
                length: 62
              - file_index: 0
                contract: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
                name: AugustusSwapper
                line: 1508
                error: null
                code: multiSwap
                op: DELEGATECALL
                length: 37
              - file_index: null
                contract: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
                name: AugustusSwapper
                line: null
                error: null
                code: null
                op: CALL
                length: null
            logs: null
            balance_diff: null
            nonce_diff:
              - address: '0x3F41a1CFd3C8B8d9c162dE0f42307a0095A6e5DF'
                original: '1094'
                dirty: '1095'
            state_diff: null
            raw_state_diff: null
            console_logs: null
            asset_changes: null
            balance_changes: []
            created_at: '2023-08-10T12:48:11Z'
          error_message: Deadline breached
          error_info:
            error_message: Deadline breached
            address: '0xbd7b550d2e7571383d84acf597a00d341e5c406e'
          method: ''
          decoded_input: null
          call_trace:
            - call_type: CALL
              from: '0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df'
              to: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
              gas: 615574
              gas_used: 12321
              address: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
              error: value:"execution reverted"
              subtraces: 1
              input: >-
                0xa94e78ef000000000000000000000000000000000000000000000000000000000000002000000000000000000000000068037790a0229e9ce6eaa8a99ea92964106c470300000000000000000000000000000000000000000000010f0cf064dd592000000000000000000000000000000000000000000000000000000000000145dc1b2e00000000000000000000000000000000000000000000000000000001477f4d7d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000064d281e65c9438a5a99c4bccb1035296d5d2d8d200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000320000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002b68037790a0229e9ce6eaa8a99ea92964106c47030001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a730000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000060000000000000000000000001b81d678ffb9c0263b24a97847620c99d213eb14000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000064dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
              output: >-
                0x08c379a000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000011446561646c696e65206272656163686564000000000000000000000000000000
              errorMessage: value:"Deadline breached"
              fromBalance: '0xb4e04d3ff20bb4'
            - call_type: DELEGATECALL
              from: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
              to: '0xbd7b550d2e7571383d84acf597a00d341e5c406e'
              gas: 600460
              gas_used: 6554
              address: '0xbd7b550d2e7571383d84acf597a00d341e5c406e'
              error: value:"execution reverted"
              trace_address:
                - 0
              input: >-
                0xa94e78ef000000000000000000000000000000000000000000000000000000000000002000000000000000000000000068037790a0229e9ce6eaa8a99ea92964106c470300000000000000000000000000000000000000000000010f0cf064dd592000000000000000000000000000000000000000000000000000000000000145dc1b2e00000000000000000000000000000000000000000000000000000001477f4d7d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000064d281e65c9438a5a99c4bccb1035296d5d2d8d200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000320000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002b68037790a0229e9ce6eaa8a99ea92964106c47030001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a730000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000060000000000000000000000001b81d678ffb9c0263b24a97847620c99d213eb14000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000064dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
              output: >-
                0x08c379a000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000011446561646c696e65206272656163686564000000000000000000000000000000
              gas_in: 612591
              gas_cost: 603060
              errorMessage: value:"Deadline breached"
        simulation:
          id: a008c427-509b-4743-a72c-0ae93d663056
          project_id: dfdc391a-a15d-4590-9aef-8691259c7df4
          owner_id: 7d5e8b1f-8bf8-4eae-a70f-fb7d354b1cc2
          network_id: '1'
          block_number: 17884583
          transaction_index: 0
          from: '0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df'
          to: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
          input: >-
            0xa94e78ef000000000000000000000000000000000000000000000000000000000000002000000000000000000000000068037790a0229e9ce6eaa8a99ea92964106c470300000000000000000000000000000000000000000000010f0cf064dd592000000000000000000000000000000000000000000000000000000000000145dc1b2e00000000000000000000000000000000000000000000000000000001477f4d7d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000064d281e65c9438a5a99c4bccb1035296d5d2d8d200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000320000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002b68037790a0229e9ce6eaa8a99ea92964106c47030001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a730000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000060000000000000000000000001b81d678ffb9c0263b24a97847620c99d213eb14000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000064dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
          gas: 648318
          gas_price: '0'
          gas_used: 45065
          value: '0'
          method: multiSwap
          status: false
          access_list: null
          queue_origin: ''
          block_header:
            number: '0x110e5a7'
            hash: '0x0000000000000000000000000000000000000000000000000000000000000000'
            stateRoot: '0x5aedfee941729c66fab3bc35cc00a8687d4c8f177e800565fa3895fee02a8d12'
            parentHash: '0x9075514cb7db4dc5c7f25b7b53bdee3ea51b3088eb94a5551668f49d5fd7bdc9'
            sha3Uncles: '0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347'
            transactionsRoot: '0x3f3e3bac2d1a65adabe655196f48341105a8c21600b5d1dcd0f95ad6baf91d11'
            receiptsRoot: '0xb129fa08d3abb39c49b4e65f1edf7efc0d3d5ddf6b84ff802b43eb2b29e9b046'
            logsBloom: >-
              0x74717005272adbead19e3886a21a471915102405ca59280ca44b9062f41101c5e441130e920943f04203fb604087c1b12293878b8c5b381213d09c35c12cc09046c0e4af0174382b7952554bf1f820ec0ff34a2c0560597035187563c6e023501ac2c8a2129384ab01a13c0015b43cdd7a0b03c200148d6d57861cb000a810560e11925caa60b13b60f5614117b606c68907e5859bc0903c643127dbc5900e2c831408093b4a209b1e40cec85cf20d07a4919a40b539994611a185ab00280022f39a08d67104014a096fa60a493a80da0f6e8a22412fb0ba6884429e1033a31cd8bce468d10c7d8a82663785a120c4408b2112604a101a5fa8891290302b970d
            timestamp: '0x64d4dc8b'
            difficulty: '0x0'
            gasLimit: '0x1c9c380'
            gasUsed: '0x9d2881'
            miner: '0x95222290dd7278aa3ddd389cc1e1d165cc4bafe5'
            extraData: '0x6265617665726275696c642e6f7267'
            mixHash: '0xcd3023878e91294b673f69b51e3ed64e814f6caabb795a93caadb34cc39a8ff3'
            nonce: '0x0000000000000000'
            baseFeePerGas: '0x4d0b44e27'
            size: '0x0'
            totalDifficulty: '0x0'
            uncles: null
            transactions: null
          deposit_tx: false
          system_tx: false
          error_message: Deadline breached
          nonce: 1094
          addresses:
            - '0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df'
            - '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
            - '0xbd7b550d2e7571383d84acf597a00d341e5c406e'
          contract_ids:
            - eth:1:0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df
            - eth:1:0xdef171fe48cf0115b1d80b88dc8eab59176fee57
            - eth:1:0xbd7b550d2e7571383d84acf597a00d341e5c406e
          shared: false
          created_at: '2023-12-20T14:23:59.625219731Z'
        contracts:
          - id: eth:1:0xbd7b550d2e7571383d84acf597a00d341e5c406e
            contract_id: eth:1:0xbd7b550d2e7571383d84acf597a00d341e5c406e
            balance: ''
            network_id: '1'
            public: true
            verified_by: etherscan
            verification_date: '2023-06-13T17:26:37Z'
            address: '0xbd7b550d2e7571383d84acf597a00d341e5c406e'
            contract_name: MultiPath
            ens_domain: null
            type: contract
            evm_version: ''
            compiler_version: v0.7.5+commit.eb77ed08
            optimizations_used: false
            optimization_runs: 0
            libraries: null
            compiler_settings: {}
            deployed_bytecode: >-
              0x6080604052600436106100c75760003560e01c806381cbd3ea11610074578063c25ff0261161004e578063c25ff026146101b3578063d555d4f9146101c8578063d830a05b146101dd576100c7565b806381cbd3ea1461016957806382678dd61461018b578063a94e78ef146101a0576100c7565b8063439fab91116100a5578063439fab911461011f57806346c67b6d146101415780637a3226ec14610154576100c7565b806312070a41146100cc57806330d643b5146100f7578063353269101461010c575b600080fd5b3480156100d857600080fd5b506100e16101f2565b6040516100ee9190612fb2565b60405180910390f35b34801561010357600080fd5b506100e1610216565b6100e161011a366004612a0e565b61023a565b34801561012b57600080fd5b5061013f61013a3660046129a1565b610560565b005b6100e161014f366004612b44565b610592565b34801561016057600080fd5b506100e161097e565b34801561017557600080fd5b5061017e6109a2565b6040516100ee9190612dff565b34801561019757600080fd5b506100e16109c6565b6100e16101ae366004612c47565b6109f2565b3480156101bf57600080fd5b506100e1610ba3565b3480156101d457600080fd5b506100e1610bc7565b3480156101e957600080fd5b506100e1610beb565b7f000000000000000000000000000000000000000000000000000000000000213481565b7f7a05a596cb0ce7fdea8a1e1ec73be300bdb35097c944ce1897202f7a13122eb281565b6000428261016001511015610284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b9061321a565b60405180910390fd5b60208201516060830151610296610c0f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146102cf5760006102d1565b805b3414610309576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b90613186565b608084015160c085015160009073ffffffffffffffffffffffffffffffffffffffff161561033b578560c0015161033d565b335b604087015160a0880151610120890151929350909184610389576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b90613251565b61039987878b6101400151610c27565b60006103b18a6000015189868a8a8f60e00151610cff565b905060006103bf8930611047565b90506103d58b61010001518c6101200151611144565b158015906103e957506103e7836111da565b155b801561040057506103fe8b61012001516111f4565b155b15610427576104178583888e6101000151876111fe565b61042289338361123e565b6104b2565b61043285878461123e565b6104468b61010001518c6101200151611144565b158015906104585750610458836111da565b15610478576104228961046b8a84611345565b838e6101000151876113bc565b836104838983611345565b10156104a7576101008b0151610422908a90866104a08c86611345565b8588611407565b6104b289338361123e565b6104bc8882611345565b97508473ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f4cc7e95e48af62690313a0733e93308ac9a73326bc3c29f1788b1191c376d5b68e61018001518f610100015188338f8a8d6040516105489796959493929190612f42565b60405180910390a4509750505050505050505b919050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b90613118565b60004282610120015110156105d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b9061321a565b815160208301516105e2610c0f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461061b57600061061d565b805b3414610655576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b90613186565b60408401516060850151608086015160009073ffffffffffffffffffffffffffffffffffffffff161561068c57866080015161068e565b335b905060608760a0015190506000816000815181106106a857fe5b6020026020010151602001516001836000815181106106c357fe5b6020026020010151602001515103815181106106db57fe5b602002602001015160000151905060008511610723576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b90613251565b61073387878b6101000151610c27565b6107408960e001516111da565b1561075c5761075987878b60c001518c60e001516114cb565b95505b60005b825160ff168160ff1610156107f55760006107a96127106107a3868560ff168151811061078857fe5b6020026020010151600001518b61151290919063ffffffff16565b90611585565b905060018451038260ff1614156107c7576107c48930611047565b90505b6107ec8982868560ff16815181106107db57fe5b602002602001015160200151611606565b5060010161075f565b5060006108028230611047565b90508581101561083e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b906131bd565b6108508a60c001518b60e00151611144565b1580159061086857506108668a60e001516111da565b155b801561087e575061087c8a60e001516111f4565b155b1561089d576108988282868d60c001518e60e001516111fe565b6108dc565b84811180156108b657506108b48a60e001516111da565b155b156108d15761089882858c60c0015184898f60e001516119c7565b6108dc82858361123e565b8173ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fe00361d207b252a464323eb23d45d42583e391f2031acdd2e9fa36efddd43cb08d61014001518e60c001518f60e00151338e898e6040516109699796959493929190612f42565b60405180910390a49998505050505050505050565b7f8429d542926e6695b59ac6fbdcd9b37e8b1aeb757afab06ab60b1bb5878c3b4981565b7f000000000000000000000000ef13101c5bbd737cfb2bf00bbd38c626ad6952f781565b60006040516020016109d790612dad565b60405160208183030381529060405280519060200120905090565b6000428261012001511015610a33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b9061321a565b81516020830151610a42610c0f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610a7b576000610a7d565b805b3414610ab5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b90613186565b60408401516060850151608086015160009073ffffffffffffffffffffffffffffffffffffffff1615610aec578660800151610aee565b335b905060608760a001519050600081600183510381518110610b0b57fe5b602002602001015160000151905060008511610b53576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b90613251565b610b6387878b6101000151610c27565b610b708960e001516111da565b15610b8c57610b8987878b60c001518c60e001516114cb565b95505b610b97878784611606565b60006108028230611047565b7f000000000000000000000000000000000000000000000000000000000000271081565b7f000000000000000000000000000000000000000000000000000000000000138881565b7f00000000000000000000000000000000000000000000000000000000000001f481565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90565b610c2f610c0f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610cfa57610c6b8382611a8b565b6000546040517f15dacbea00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906315dacbea90610cc7908690339030908890600401612e20565b600060405180830381600087803b158015610ce157600080fd5b505af1158015610cf5573d6000803e3d6000fd5b505050505b505050565b6040517f91d1485400000000000000000000000000000000000000000000000000000000815260009030906391d1485490610d60907f8429d542926e6695b59ac6fbdcd9b37e8b1aeb757afab06ab60b1bb5878c3b49908b90600401612fbb565b60206040518083038186803b158015610d7857600080fd5b505afa158015610d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db09190612981565b610de6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b906130e1565b60005b8251811015610ff357610dfa612468565b838281518110610e0657fe5b60200260200101519050600080610e286001875161134590919063ffffffff16565b841415610e5657610e43610e3c8a30611047565b8890611345565b9050610e4f8a30611047565b9150610e95565b610e736127106107a385604001518b61151290919063ffffffff16565b9150610e926127106107a385604001518a61151290919063ffffffff16565b90505b60008b73ffffffffffffffffffffffffffffffffffffffff166325deee1e60e01b85600001518d8d87878a602001518b60600151604051602401610edf9796959493929190613288565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051610f689190612d91565b600060405180830381855af49150503d8060008114610fa3576040519150601f19603f3d011682016040523d82523d6000602084013e610fa8565b606091505b5050905080610fe3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b9061314f565b505060019092019150610de99050565b5060006110008630611047565b90508381101561103c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b90613016565b979650505050505050565b600073ffffffffffffffffffffffffffffffffffffffff831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415611099575073ffffffffffffffffffffffffffffffffffffffff81163161113e565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416906370a08231906110eb908590600401612dff565b60206040518083038186803b15801561110357600080fd5b505afa158015611117573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113b9190612ce7565b90505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff83166111695750600061113e565b60f882901c8061117b57829150611183565b82613fff1691505b7f00000000000000000000000000000000000000000000000000000000000001f482116111b057816111d2565b7f00000000000000000000000000000000000000000000000000000000000001f45b949350505050565b600060f882901c1580159061113e57505061800016151590565b6201000016151590565b600061120a8383611144565b90506000806112198784611c76565b91509150611234888761122f8a8c8a8888611cd2565b61123e565b5050505050505050565b8015610cfa5773ffffffffffffffffffffffffffffffffffffffff831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156113245760008273ffffffffffffffffffffffffffffffffffffffff1682612710906040516112a090612dfc565b600060405180830381858888f193505050503d80600081146112de576040519150601f19603f3d011682016040523d82523d6000602084013e6112e3565b606091505b505090508061131e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b90612fdf565b50610cfa565b610cfa73ffffffffffffffffffffffffffffffffffffffff84168383611f1b565b6000828211156113b657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60006113c88383611144565b90506000806113d78784611c76565b9092509050856113e78383611fa8565b116113fc576113f98689878585611cd2565b95505b61123488338861123e565b60006114138585611345565b905073ffffffffffffffffffffffffffffffffffffffff8616156114585760008061143e838561201c565b9150915061144f858a8a8585611cd2565b945050506114c0565b600061148a6127106107a3847f0000000000000000000000000000000000000000000000000000000000002710611512565b6001549091506114b290899073ffffffffffffffffffffffffffffffffffffffff168361123e565b6114bc8482611345565b9350505b610cf587338561123e565b6000806114d88484611144565b9050806114e857849150506111d2565b6000806114f58784611c76565b915091506115068789888585611cd2565b98975050505050505050565b6000826115215750600061113e565b8282028284828161152e57fe5b041461113b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806133a26021913960400191505060405180910390fd5b60008082116115f557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b8183816115fe57fe5b049392505050565b6000815111611641576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b906130aa565b60005b81518110156119c157600080821161165c5784611678565b82600183038151811061166b57fe5b6020026020010151600001515b9050600083838151811061168857fe5b602002602001015160000151905060008084116116a557856116af565b6116af8330611047565b905060005b8585815181106116c057fe5b602002602001015160400151518110156119b1576116dc6124ad565b8686815181106116e857fe5b60200260200101516040015182815181106116ff57fe5b602090810291909101015180516040517f91d1485400000000000000000000000000000000000000000000000000000000815291925030916391d148549161176c917f8429d542926e6695b59ac6fbdcd9b37e8b1aeb757afab06ab60b1bb5878c3b499190600401612fbb565b60206040518083038186803b15801561178457600080fd5b505afa158015611798573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117bc9190612981565b6117f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b906130e1565b6000808711801561182d575061182a600189898151811061180f57fe5b6020026020010151604001515161134590919063ffffffff16565b83145b6118535761184e6127106107a384602001518761151290919063ffffffff16565b61185d565b61185d8630611047565b90506000826000015173ffffffffffffffffffffffffffffffffffffffff1663e76b146c60e01b888885600088606001516040516024016118a2959493929190612e57565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161192b9190612d91565b600060405180830381855af49150503d8060008114611966576040519150601f19603f3d011682016040523d82523d6000602084013e61196b565b606091505b50509050806119a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b9061314f565b5050506001016116b4565b5050600190920191506116449050565b50505050565b60006119d38484611345565b905073ffffffffffffffffffffffffffffffffffffffff851615611a18576000806119fe838561201c565b91509150611a0f868a898585611cd2565b95505050611a80565b6000611a4a6127106107a3847f0000000000000000000000000000000000000000000000000000000000002710611512565b600154909150611a7290899073ffffffffffffffffffffffffffffffffffffffff168361123e565b611a7c8582611345565b9450505b610cf587878661123e565b805160e01415611b7f5760008273ffffffffffffffffffffffffffffffffffffffff1663d505accf60e01b83604051602001611ac8929190612d49565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611b0091612d91565b6000604051808303816000865af19150503d8060008114611b3d576040519150601f19603f3d011682016040523d82523d6000602084013e611b42565b606091505b5050905080611b7d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b90613073565b505b80516101001415611c725760008273ffffffffffffffffffffffffffffffffffffffff16638fcbaf0c60e01b83604051602001611bbd929190612d49565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611bf591612d91565b6000604051808303816000865af19150503d8060008114611c32576040519150601f19603f3d011682016040523d82523d6000602084013e611c37565b606091505b5050905080610cfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b90613073565b5050565b60008080611c8a6127106107a38787611512565b9050611cbc6127106107a3837f0000000000000000000000000000000000000000000000000000000000002134611512565b9250611cc88184611345565b9150509250929050565b600080611cdf8484611fa8565b905080611cef5786915050611f12565b86811115611d48576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806133c36024913960400191505060405180910390fd5b611d73867f000000000000000000000000ef13101c5bbd737cfb2bf00bbd38c626ad6952f78361123e565b8315611e41577f000000000000000000000000ef13101c5bbd737cfb2bf00bbd38c626ad6952f773ffffffffffffffffffffffffffffffffffffffff1663d1f4354b8688876040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015611e2857600080fd5b505af1158015611e3c573d6000803e3d6000fd5b505050505b8215611f0457600154604080517fd1f4354b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015288831660248201526044810186905290517f000000000000000000000000ef13101c5bbd737cfb2bf00bbd38c626ad6952f79092169163d1f4354b9160648082019260009290919082900301818387803b158015611eeb57600080fd5b505af1158015611eff573d6000803e3d6000fd5b505050505b611f0e8782611345565b9150505b95945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610cfa908490612103565b60008282018381101561113b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600080613fff83166127107f0000000000000000000000000000000000000000000000000000000000001388820111156120b757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496e76616c6964206665652070657263656e7400000000000000000000000000604482015290519081900360640190fd5b6120e76127106107a3877f0000000000000000000000000000000000000000000000000000000000001388611512565b91506120f96127106107a38784611512565b9250509250929050565b6060612165826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166121db9092919063ffffffff16565b805190915015610cfa5780806020019051602081101561218457600080fd5b5051610cfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806133e7602a913960400191505060405180910390fd5b60606121ea84846000856121f4565b90505b9392505050565b60608247101561224f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061337c6026913960400191505060405180910390fd5b612258856123a4565b6122c357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b6020831061232d57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016122f0565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461238f576040519150601f19603f3d011682016040523d82523d6000602084013e612394565b606091505b509150915061103c8282866123aa565b3b151590565b606083156123b95750816121ed565b8251156123c95782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561242d578181015183820152602001612415565b50505050905090810190601f16801561245a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6040518060a0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160608152602001600081525090565b6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001606081525090565b803561055b81613356565b600082601f830112612506578081fd5b81356125196125148261330c565b6132e8565b818152915060208083019084810160005b848110156125c857813587016040807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0838c0301121561256957600080fd5b805181810167ffffffffffffffff828210818311171561258557fe5b8184528488013583529284013592808411156125a057600080fd5b50506125b08b87848601016125d3565b8187015286525050928201929082019060010161252a565b505050505092915050565b600082601f8301126125e3578081fd5b6125f0612514833561330c565b823581529050602080820190830160005b84358110156127cc578135850160607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082890301121561264057600080fd5b60405180606082011067ffffffffffffffff6060830111171561265f57fe5b606081016040526126736020830135613356565b602082013581526040820135602082015267ffffffffffffffff6060830135111561269d57600080fd5b60608201358201915087603f8301126126b557600080fd5b6126c5612514602084013561330c565b60208381013582528101906040840160005b60208601358110156127ae578135860160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0828f0301121561271957600080fd5b60405180608082011067ffffffffffffffff6080830111171561273857fe5b6080810160405261274c6040830135613356565b60408201358152606082013560208201526080820135604082015267ffffffffffffffff60a0830135111561278057600080fd5b6127938e604060a08501358501016127d5565b606082015285525060209384019391909101906001016126d7565b50506040830152508452506020928301929190910190600101612601565b50505092915050565b600082601f8301126127e5578081fd5b81356127f36125148261330c565b818152915060208083019084810160005b848110156125c8578135870160a0807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0838c0301121561284357600080fd5b6040805182810167ffffffffffffffff828210818311171561286157fe5b8184528886013583526128758487016124eb565b8984015260609150818601358484015260809350838601358181111561289a57600080fd5b6128a88f8b838a01016128fc565b92840192909252505092909101359082015284529282019290820190600101612804565b80357fffffffffffffffffffffffffffffffff000000000000000000000000000000008116811461055b57600080fd5b600082601f83011261290c578081fd5b813567ffffffffffffffff81111561292057fe5b61295160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016132e8565b915080825283602082850101111561296857600080fd5b8060208401602084013760009082016020015292915050565b600060208284031215612992578081fd5b8151801515811461113b578182fd5b600080602083850312156129b3578081fd5b823567ffffffffffffffff808211156129ca578283fd5b818501915085601f8301126129dd578283fd5b8135818111156129eb578384fd5b8660208285010111156129fc578384fd5b60209290920196919550909350505050565b600060208284031215612a1f578081fd5b813567ffffffffffffffff80821115612a36578283fd5b81840191506101a0808387031215612a4c578384fd5b612a55816132e8565b9050612a60836124eb565b8152612a6e602084016124eb565b6020820152612a7f604084016124eb565b6040820152606083013560608201526080830135608082015260a083013560a0820152612aae60c084016124eb565b60c082015260e083013582811115612ac4578485fd5b612ad0878286016127d5565b60e083015250610100612ae48185016124eb565b9082015261012083810135908201526101408084013583811115612b06578586fd5b612b12888287016128fc565b828401525050610160915081830135828201526101809150612b358284016128cc565b91810191909152949350505050565b600060208284031215612b55578081fd5b813567ffffffffffffffff80821115612b6c578283fd5b8184019150610160808387031215612b82578384fd5b612b8b816132e8565b9050612b96836124eb565b8152602083013560208201526040830135604082015260608301356060820152612bc2608084016124eb565b608082015260a083013582811115612bd8578485fd5b612be4878286016124f6565b60a083015250612bf660c084016124eb565b60c082015260e083013560e08201526101008084013583811115612c18578586fd5b612c24888287016128fc565b828401525050610120915081830135828201526101409150612b358284016128cc565b600060208284031215612c58578081fd5b813567ffffffffffffffff80821115612c6f578283fd5b8184019150610160808387031215612c85578384fd5b612c8e816132e8565b9050612c99836124eb565b8152602083013560208201526040830135604082015260608301356060820152612cc5608084016124eb565b608082015260a083013582811115612cdb578485fd5b612be4878286016125d3565b600060208284031215612cf8578081fd5b5051919050565b60008151808452612d1781602086016020860161332a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60007fffffffff00000000000000000000000000000000000000000000000000000000841682528251612d8381600485016020870161332a565b919091016004019392505050565b60008251612da381846020870161332a565b9190910192915050565b7f4d554c5449504154485f524f555445520000000000000000000000000000000081527f312e302e30000000000000000000000000000000000000000000000000000000601082015260150190565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9485168152928416602084015292166040820152606081019190915260800190565b600060a080830173ffffffffffffffffffffffffffffffffffffffff808a1685526020818a16818701526040898188015260608981890152608086818a0152858a5180885260c08b01915060c08682028c01019750858c018a5b82811015612f2a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408d8b03018452815180518b52898982015116898c015287810151888c0152868101518c888d0152612f0d8d8d0182612cff565b918701519b87019b909b5299509287019290870190600101612eb1565b50505050505050505080925050509695505050505050565b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000097909716875273ffffffffffffffffffffffffffffffffffffffff95861660208801526040870194909452919093166060850152608084019290925260a083019190915260c082015260e00190565b90815260200190565b91825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b60208082526018908201527f4661696c656420746f207472616e736665722045746865720000000000000000604082015260600190565b60208082526037908201527f526563656976656420616d6f756e74206f6620746f6b656e7320617265206c6560408201527f7373207468656e20657870656374656420746f6b656e73000000000000000000606082015260800190565b6020808252600d908201527f5065726d6974206661696c656400000000000000000000000000000000000000604082015260600190565b6020808252601a908201527f50617468206e6f742070726f766964656420666f722073776170000000000000604082015260600190565b60208082526018908201527f45786368616e6765206e6f742077686974656c69737465640000000000000000604082015260600190565b60208082526016908201527f4d4554484f44204e4f5420494d504c454d454e54454400000000000000000000604082015260600190565b60208082526016908201527f43616c6c20746f2061646170746572206661696c656400000000000000000000604082015260600190565b60208082526013908201527f496e636f7272656374206d73672e76616c756500000000000000000000000000604082015260600190565b60208082526030908201527f526563656976656420616d6f756e74206f6620746f6b656e7320617265206c6560408201527f7373207468656e20657870656374656400000000000000000000000000000000606082015260800190565b60208082526011908201527f446561646c696e65206272656163686564000000000000000000000000000000604082015260600190565b60208082526016908201527f546f20616d6f756e742063616e206e6f74206265203000000000000000000000604082015260600190565b600088825273ffffffffffffffffffffffffffffffffffffffff8089166020840152808816604084015286606084015285608084015280851660a08401525060e060c08301526132db60e0830184612cff565b9998505050505050505050565b60405181810167ffffffffffffffff8111828210171561330457fe5b604052919050565b600067ffffffffffffffff82111561332057fe5b5060209081020190565b60005b8381101561334557818101518382015260200161332d565b838111156119c15750506000910152565b73ffffffffffffffffffffffffffffffffffffffff8116811461337857600080fd5b5056fe416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77496e73756666696369656e742062616c616e636520746f2070617920666f7220666565735361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a164736f6c6343000705000a
            creation_bytecode: >-
              0x6101206040523480156200001257600080fd5b506040516200354b3803806200354b83398101604081905262000035916200005e565b60809490945260a09290925260c05260e05260601b6001600160601b03191661010052620000b9565b600080600080600060a0868803121562000076578081fd5b855160208701516040880151606089015160808a0151939850919650945092506001600160a01b0381168114620000ab578182fd5b809150509295509295909350565b60805160a05160c05160e0516101005160601c61341d6200012e600039806109a45280611d4e5280611d7b5280611ea1525080610ba552806114665280611a26525080610bc9528061202952806120c3525080610bed528061118552806111b25250806101f45280611c98525061341d6000f3fe6080604052600436106100c75760003560e01c806381cbd3ea11610074578063c25ff0261161004e578063c25ff026146101b3578063d555d4f9146101c8578063d830a05b146101dd576100c7565b806381cbd3ea1461016957806382678dd61461018b578063a94e78ef146101a0576100c7565b8063439fab91116100a5578063439fab911461011f57806346c67b6d146101415780637a3226ec14610154576100c7565b806312070a41146100cc57806330d643b5146100f7578063353269101461010c575b600080fd5b3480156100d857600080fd5b506100e16101f2565b6040516100ee9190612fb2565b60405180910390f35b34801561010357600080fd5b506100e1610216565b6100e161011a366004612a0e565b61023a565b34801561012b57600080fd5b5061013f61013a3660046129a1565b610560565b005b6100e161014f366004612b44565b610592565b34801561016057600080fd5b506100e161097e565b34801561017557600080fd5b5061017e6109a2565b6040516100ee9190612dff565b34801561019757600080fd5b506100e16109c6565b6100e16101ae366004612c47565b6109f2565b3480156101bf57600080fd5b506100e1610ba3565b3480156101d457600080fd5b506100e1610bc7565b3480156101e957600080fd5b506100e1610beb565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f7a05a596cb0ce7fdea8a1e1ec73be300bdb35097c944ce1897202f7a13122eb281565b6000428261016001511015610284576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b9061321a565b60405180910390fd5b60208201516060830151610296610c0f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146102cf5760006102d1565b805b3414610309576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b90613186565b608084015160c085015160009073ffffffffffffffffffffffffffffffffffffffff161561033b578560c0015161033d565b335b604087015160a0880151610120890151929350909184610389576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b90613251565b61039987878b6101400151610c27565b60006103b18a6000015189868a8a8f60e00151610cff565b905060006103bf8930611047565b90506103d58b61010001518c6101200151611144565b158015906103e957506103e7836111da565b155b801561040057506103fe8b61012001516111f4565b155b15610427576104178583888e6101000151876111fe565b61042289338361123e565b6104b2565b61043285878461123e565b6104468b61010001518c6101200151611144565b158015906104585750610458836111da565b15610478576104228961046b8a84611345565b838e6101000151876113bc565b836104838983611345565b10156104a7576101008b0151610422908a90866104a08c86611345565b8588611407565b6104b289338361123e565b6104bc8882611345565b97508473ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167f4cc7e95e48af62690313a0733e93308ac9a73326bc3c29f1788b1191c376d5b68e61018001518f610100015188338f8a8d6040516105489796959493929190612f42565b60405180910390a4509750505050505050505b919050565b6040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b90613118565b60004282610120015110156105d3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b9061321a565b815160208301516105e2610c0f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161461061b57600061061d565b805b3414610655576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b90613186565b60408401516060850151608086015160009073ffffffffffffffffffffffffffffffffffffffff161561068c57866080015161068e565b335b905060608760a0015190506000816000815181106106a857fe5b6020026020010151602001516001836000815181106106c357fe5b6020026020010151602001515103815181106106db57fe5b602002602001015160000151905060008511610723576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b90613251565b61073387878b6101000151610c27565b6107408960e001516111da565b1561075c5761075987878b60c001518c60e001516114cb565b95505b60005b825160ff168160ff1610156107f55760006107a96127106107a3868560ff168151811061078857fe5b6020026020010151600001518b61151290919063ffffffff16565b90611585565b905060018451038260ff1614156107c7576107c48930611047565b90505b6107ec8982868560ff16815181106107db57fe5b602002602001015160200151611606565b5060010161075f565b5060006108028230611047565b90508581101561083e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b906131bd565b6108508a60c001518b60e00151611144565b1580159061086857506108668a60e001516111da565b155b801561087e575061087c8a60e001516111f4565b155b1561089d576108988282868d60c001518e60e001516111fe565b6108dc565b84811180156108b657506108b48a60e001516111da565b155b156108d15761089882858c60c0015184898f60e001516119c7565b6108dc82858361123e565b8173ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fe00361d207b252a464323eb23d45d42583e391f2031acdd2e9fa36efddd43cb08d61014001518e60c001518f60e00151338e898e6040516109699796959493929190612f42565b60405180910390a49998505050505050505050565b7f8429d542926e6695b59ac6fbdcd9b37e8b1aeb757afab06ab60b1bb5878c3b4981565b7f000000000000000000000000000000000000000000000000000000000000000081565b60006040516020016109d790612dad565b60405160208183030381529060405280519060200120905090565b6000428261012001511015610a33576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b9061321a565b81516020830151610a42610c0f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614610a7b576000610a7d565b805b3414610ab5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b90613186565b60408401516060850151608086015160009073ffffffffffffffffffffffffffffffffffffffff1615610aec578660800151610aee565b335b905060608760a001519050600081600183510381518110610b0b57fe5b602002602001015160000151905060008511610b53576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b90613251565b610b6387878b6101000151610c27565b610b708960e001516111da565b15610b8c57610b8987878b60c001518c60e001516114cb565b95505b610b97878784611606565b60006108028230611047565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b7f000000000000000000000000000000000000000000000000000000000000000081565b73eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee90565b610c2f610c0f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614610cfa57610c6b8382611a8b565b6000546040517f15dacbea00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff909116906315dacbea90610cc7908690339030908890600401612e20565b600060405180830381600087803b158015610ce157600080fd5b505af1158015610cf5573d6000803e3d6000fd5b505050505b505050565b6040517f91d1485400000000000000000000000000000000000000000000000000000000815260009030906391d1485490610d60907f8429d542926e6695b59ac6fbdcd9b37e8b1aeb757afab06ab60b1bb5878c3b49908b90600401612fbb565b60206040518083038186803b158015610d7857600080fd5b505afa158015610d8c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610db09190612981565b610de6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b906130e1565b60005b8251811015610ff357610dfa612468565b838281518110610e0657fe5b60200260200101519050600080610e286001875161134590919063ffffffff16565b841415610e5657610e43610e3c8a30611047565b8890611345565b9050610e4f8a30611047565b9150610e95565b610e736127106107a385604001518b61151290919063ffffffff16565b9150610e926127106107a385604001518a61151290919063ffffffff16565b90505b60008b73ffffffffffffffffffffffffffffffffffffffff166325deee1e60e01b85600001518d8d87878a602001518b60600151604051602401610edf9796959493929190613288565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051610f689190612d91565b600060405180830381855af49150503d8060008114610fa3576040519150601f19603f3d011682016040523d82523d6000602084013e610fa8565b606091505b5050905080610fe3576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b9061314f565b505060019092019150610de99050565b5060006110008630611047565b90508381101561103c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b90613016565b979650505050505050565b600073ffffffffffffffffffffffffffffffffffffffff831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee1415611099575073ffffffffffffffffffffffffffffffffffffffff81163161113e565b6040517f70a0823100000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8416906370a08231906110eb908590600401612dff565b60206040518083038186803b15801561110357600080fd5b505afa158015611117573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061113b9190612ce7565b90505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff83166111695750600061113e565b60f882901c8061117b57829150611183565b82613fff1691505b7f000000000000000000000000000000000000000000000000000000000000000082116111b057816111d2565b7f00000000000000000000000000000000000000000000000000000000000000005b949350505050565b600060f882901c1580159061113e57505061800016151590565b6201000016151590565b600061120a8383611144565b90506000806112198784611c76565b91509150611234888761122f8a8c8a8888611cd2565b61123e565b5050505050505050565b8015610cfa5773ffffffffffffffffffffffffffffffffffffffff831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee14156113245760008273ffffffffffffffffffffffffffffffffffffffff1682612710906040516112a090612dfc565b600060405180830381858888f193505050503d80600081146112de576040519150601f19603f3d011682016040523d82523d6000602084013e6112e3565b606091505b505090508061131e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b90612fdf565b50610cfa565b610cfa73ffffffffffffffffffffffffffffffffffffffff84168383611f1b565b6000828211156113b657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b60006113c88383611144565b90506000806113d78784611c76565b9092509050856113e78383611fa8565b116113fc576113f98689878585611cd2565b95505b61123488338861123e565b60006114138585611345565b905073ffffffffffffffffffffffffffffffffffffffff8616156114585760008061143e838561201c565b9150915061144f858a8a8585611cd2565b945050506114c0565b600061148a6127106107a3847f0000000000000000000000000000000000000000000000000000000000000000611512565b6001549091506114b290899073ffffffffffffffffffffffffffffffffffffffff168361123e565b6114bc8482611345565b9350505b610cf587338561123e565b6000806114d88484611144565b9050806114e857849150506111d2565b6000806114f58784611c76565b915091506115068789888585611cd2565b98975050505050505050565b6000826115215750600061113e565b8282028284828161152e57fe5b041461113b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806133a26021913960400191505060405180910390fd5b60008082116115f557604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f536166654d6174683a206469766973696f6e206279207a65726f000000000000604482015290519081900360640190fd5b8183816115fe57fe5b049392505050565b6000815111611641576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b906130aa565b60005b81518110156119c157600080821161165c5784611678565b82600183038151811061166b57fe5b6020026020010151600001515b9050600083838151811061168857fe5b602002602001015160000151905060008084116116a557856116af565b6116af8330611047565b905060005b8585815181106116c057fe5b602002602001015160400151518110156119b1576116dc6124ad565b8686815181106116e857fe5b60200260200101516040015182815181106116ff57fe5b602090810291909101015180516040517f91d1485400000000000000000000000000000000000000000000000000000000815291925030916391d148549161176c917f8429d542926e6695b59ac6fbdcd9b37e8b1aeb757afab06ab60b1bb5878c3b499190600401612fbb565b60206040518083038186803b15801561178457600080fd5b505afa158015611798573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117bc9190612981565b6117f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b906130e1565b6000808711801561182d575061182a600189898151811061180f57fe5b6020026020010151604001515161134590919063ffffffff16565b83145b6118535761184e6127106107a384602001518761151290919063ffffffff16565b61185d565b61185d8630611047565b90506000826000015173ffffffffffffffffffffffffffffffffffffffff1663e76b146c60e01b888885600088606001516040516024016118a2959493929190612e57565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161192b9190612d91565b600060405180830381855af49150503d8060008114611966576040519150601f19603f3d011682016040523d82523d6000602084013e61196b565b606091505b50509050806119a6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b9061314f565b5050506001016116b4565b5050600190920191506116449050565b50505050565b60006119d38484611345565b905073ffffffffffffffffffffffffffffffffffffffff851615611a18576000806119fe838561201c565b91509150611a0f868a898585611cd2565b95505050611a80565b6000611a4a6127106107a3847f0000000000000000000000000000000000000000000000000000000000000000611512565b600154909150611a7290899073ffffffffffffffffffffffffffffffffffffffff168361123e565b611a7c8582611345565b9450505b610cf587878661123e565b805160e01415611b7f5760008273ffffffffffffffffffffffffffffffffffffffff1663d505accf60e01b83604051602001611ac8929190612d49565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611b0091612d91565b6000604051808303816000865af19150503d8060008114611b3d576040519150601f19603f3d011682016040523d82523d6000602084013e611b42565b606091505b5050905080611b7d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b90613073565b505b80516101001415611c725760008273ffffffffffffffffffffffffffffffffffffffff16638fcbaf0c60e01b83604051602001611bbd929190612d49565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081840301815290829052611bf591612d91565b6000604051808303816000865af19150503d8060008114611c32576040519150601f19603f3d011682016040523d82523d6000602084013e611c37565b606091505b5050905080610cfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161027b90613073565b5050565b60008080611c8a6127106107a38787611512565b9050611cbc6127106107a3837f0000000000000000000000000000000000000000000000000000000000000000611512565b9250611cc88184611345565b9150509250929050565b600080611cdf8484611fa8565b905080611cef5786915050611f12565b86811115611d48576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260248152602001806133c36024913960400191505060405180910390fd5b611d73867f00000000000000000000000000000000000000000000000000000000000000008361123e565b8315611e41577f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663d1f4354b8688876040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050600060405180830381600087803b158015611e2857600080fd5b505af1158015611e3c573d6000803e3d6000fd5b505050505b8215611f0457600154604080517fd1f4354b00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff928316600482015288831660248201526044810186905290517f00000000000000000000000000000000000000000000000000000000000000009092169163d1f4354b9160648082019260009290919082900301818387803b158015611eeb57600080fd5b505af1158015611eff573d6000803e3d6000fd5b505050505b611f0e8782611345565b9150505b95945050505050565b6040805173ffffffffffffffffffffffffffffffffffffffff8416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000179052610cfa908490612103565b60008282018381101561113b57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600080613fff83166127107f0000000000000000000000000000000000000000000000000000000000000000820111156120b757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601360248201527f496e76616c6964206665652070657263656e7400000000000000000000000000604482015290519081900360640190fd5b6120e76127106107a3877f0000000000000000000000000000000000000000000000000000000000000000611512565b91506120f96127106107a38784611512565b9250509250929050565b6060612165826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166121db9092919063ffffffff16565b805190915015610cfa5780806020019051602081101561218457600080fd5b5051610cfa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001806133e7602a913960400191505060405180910390fd5b60606121ea84846000856121f4565b90505b9392505050565b60608247101561224f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061337c6026913960400191505060405180910390fd5b612258856123a4565b6122c357604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040518082805190602001908083835b6020831061232d57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe090920191602091820191016122f0565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d806000811461238f576040519150601f19603f3d011682016040523d82523d6000602084013e612394565b606091505b509150915061103c8282866123aa565b3b151590565b606083156123b95750816121ed565b8251156123c95782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561242d578181015183820152602001612415565b50505050905090810190601f16801561245a5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b6040518060a0016040528060008152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160608152602001600081525090565b6040518060800160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001606081525090565b803561055b81613356565b600082601f830112612506578081fd5b81356125196125148261330c565b6132e8565b818152915060208083019084810160005b848110156125c857813587016040807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0838c0301121561256957600080fd5b805181810167ffffffffffffffff828210818311171561258557fe5b8184528488013583529284013592808411156125a057600080fd5b50506125b08b87848601016125d3565b8187015286525050928201929082019060010161252a565b505050505092915050565b600082601f8301126125e3578081fd5b6125f0612514833561330c565b823581529050602080820190830160005b84358110156127cc578135850160607fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe082890301121561264057600080fd5b60405180606082011067ffffffffffffffff6060830111171561265f57fe5b606081016040526126736020830135613356565b602082013581526040820135602082015267ffffffffffffffff6060830135111561269d57600080fd5b60608201358201915087603f8301126126b557600080fd5b6126c5612514602084013561330c565b60208381013582528101906040840160005b60208601358110156127ae578135860160807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffc0828f0301121561271957600080fd5b60405180608082011067ffffffffffffffff6080830111171561273857fe5b6080810160405261274c6040830135613356565b60408201358152606082013560208201526080820135604082015267ffffffffffffffff60a0830135111561278057600080fd5b6127938e604060a08501358501016127d5565b606082015285525060209384019391909101906001016126d7565b50506040830152508452506020928301929190910190600101612601565b50505092915050565b600082601f8301126127e5578081fd5b81356127f36125148261330c565b818152915060208083019084810160005b848110156125c8578135870160a0807fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0838c0301121561284357600080fd5b6040805182810167ffffffffffffffff828210818311171561286157fe5b8184528886013583526128758487016124eb565b8984015260609150818601358484015260809350838601358181111561289a57600080fd5b6128a88f8b838a01016128fc565b92840192909252505092909101359082015284529282019290820190600101612804565b80357fffffffffffffffffffffffffffffffff000000000000000000000000000000008116811461055b57600080fd5b600082601f83011261290c578081fd5b813567ffffffffffffffff81111561292057fe5b61295160207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f840116016132e8565b915080825283602082850101111561296857600080fd5b8060208401602084013760009082016020015292915050565b600060208284031215612992578081fd5b8151801515811461113b578182fd5b600080602083850312156129b3578081fd5b823567ffffffffffffffff808211156129ca578283fd5b818501915085601f8301126129dd578283fd5b8135818111156129eb578384fd5b8660208285010111156129fc578384fd5b60209290920196919550909350505050565b600060208284031215612a1f578081fd5b813567ffffffffffffffff80821115612a36578283fd5b81840191506101a0808387031215612a4c578384fd5b612a55816132e8565b9050612a60836124eb565b8152612a6e602084016124eb565b6020820152612a7f604084016124eb565b6040820152606083013560608201526080830135608082015260a083013560a0820152612aae60c084016124eb565b60c082015260e083013582811115612ac4578485fd5b612ad0878286016127d5565b60e083015250610100612ae48185016124eb565b9082015261012083810135908201526101408084013583811115612b06578586fd5b612b12888287016128fc565b828401525050610160915081830135828201526101809150612b358284016128cc565b91810191909152949350505050565b600060208284031215612b55578081fd5b813567ffffffffffffffff80821115612b6c578283fd5b8184019150610160808387031215612b82578384fd5b612b8b816132e8565b9050612b96836124eb565b8152602083013560208201526040830135604082015260608301356060820152612bc2608084016124eb565b608082015260a083013582811115612bd8578485fd5b612be4878286016124f6565b60a083015250612bf660c084016124eb565b60c082015260e083013560e08201526101008084013583811115612c18578586fd5b612c24888287016128fc565b828401525050610120915081830135828201526101409150612b358284016128cc565b600060208284031215612c58578081fd5b813567ffffffffffffffff80821115612c6f578283fd5b8184019150610160808387031215612c85578384fd5b612c8e816132e8565b9050612c99836124eb565b8152602083013560208201526040830135604082015260608301356060820152612cc5608084016124eb565b608082015260a083013582811115612cdb578485fd5b612be4878286016125d3565b600060208284031215612cf8578081fd5b5051919050565b60008151808452612d1781602086016020860161332a565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b60007fffffffff00000000000000000000000000000000000000000000000000000000841682528251612d8381600485016020870161332a565b919091016004019392505050565b60008251612da381846020870161332a565b9190910192915050565b7f4d554c5449504154485f524f555445520000000000000000000000000000000081527f312e302e30000000000000000000000000000000000000000000000000000000601082015260150190565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9485168152928416602084015292166040820152606081019190915260800190565b600060a080830173ffffffffffffffffffffffffffffffffffffffff808a1685526020818a16818701526040898188015260608981890152608086818a0152858a5180885260c08b01915060c08682028c01019750858c018a5b82811015612f2a577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff408d8b03018452815180518b52898982015116898c015287810151888c0152868101518c888d0152612f0d8d8d0182612cff565b918701519b87019b909b5299509287019290870190600101612eb1565b50505050505050505080925050509695505050505050565b7fffffffffffffffffffffffffffffffff0000000000000000000000000000000097909716875273ffffffffffffffffffffffffffffffffffffffff95861660208801526040870194909452919093166060850152608084019290925260a083019190915260c082015260e00190565b90815260200190565b91825273ffffffffffffffffffffffffffffffffffffffff16602082015260400190565b60208082526018908201527f4661696c656420746f207472616e736665722045746865720000000000000000604082015260600190565b60208082526037908201527f526563656976656420616d6f756e74206f6620746f6b656e7320617265206c6560408201527f7373207468656e20657870656374656420746f6b656e73000000000000000000606082015260800190565b6020808252600d908201527f5065726d6974206661696c656400000000000000000000000000000000000000604082015260600190565b6020808252601a908201527f50617468206e6f742070726f766964656420666f722073776170000000000000604082015260600190565b60208082526018908201527f45786368616e6765206e6f742077686974656c69737465640000000000000000604082015260600190565b60208082526016908201527f4d4554484f44204e4f5420494d504c454d454e54454400000000000000000000604082015260600190565b60208082526016908201527f43616c6c20746f2061646170746572206661696c656400000000000000000000604082015260600190565b60208082526013908201527f496e636f7272656374206d73672e76616c756500000000000000000000000000604082015260600190565b60208082526030908201527f526563656976656420616d6f756e74206f6620746f6b656e7320617265206c6560408201527f7373207468656e20657870656374656400000000000000000000000000000000606082015260800190565b60208082526011908201527f446561646c696e65206272656163686564000000000000000000000000000000604082015260600190565b60208082526016908201527f546f20616d6f756e742063616e206e6f74206265203000000000000000000000604082015260600190565b600088825273ffffffffffffffffffffffffffffffffffffffff8089166020840152808816604084015286606084015285608084015280851660a08401525060e060c08301526132db60e0830184612cff565b9998505050505050505050565b60405181810167ffffffffffffffff8111828210171561330457fe5b604052919050565b600067ffffffffffffffff82111561332057fe5b5060209081020190565b60005b8381101561334557818101518382015260200161332d565b838111156119c15750506000910152565b73ffffffffffffffffffffffffffffffffffffffff8116811461337857600080fd5b5056fe416464726573733a20696e73756666696369656e742062616c616e636520666f722063616c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77496e73756666696369656e742062616c616e636520746f2070617920666f7220666565735361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a164736f6c6343000705000a
            data:
              main_contract: 0
              contract_info: null
              abi:
                - type: constructor
                  name: ''
                  constant: false
                  anonymous: false
                  stateMutability: ''
                  inputs:
                    - name: _partnerSharePercent
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                    - name: _maxFeePercent
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                    - name: _paraswapReferralShare
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                    - name: _paraswapSlippageShare
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                    - name: _feeClaimer
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                  outputs: null
                - type: function
                  name: megaSwap
                  constant: false
                  anonymous: false
                  stateMutability: payable
                  inputs:
                    - name: data
                      type: tuple
                      storage_location: default
                      components:
                        - name: fromToken
                          type: address
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: address
                        - name: fromAmount
                          type: uint256
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: uint
                        - name: toAmount
                          type: uint256
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: uint
                        - name: expectedAmount
                          type: uint256
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: uint
                        - name: beneficiary
                          type: address
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: address
                        - name: path
                          type: tuple[]
                          storage_location: default
                          components:
                            - name: fromAmountPercent
                              type: uint256
                              storage_location: default
                              offset: 0
                              index: >-
                                0x0000000000000000000000000000000000000000000000000000000000000000
                              indexed: false
                              simple_type:
                                type: uint
                            - name: path
                              type: tuple[]
                              storage_location: default
                              components:
                                - name: to
                                  type: address
                                  storage_location: default
                                  offset: 0
                                  index: >-
                                    0x0000000000000000000000000000000000000000000000000000000000000000
                                  indexed: false
                                  simple_type:
                                    type: address
                                - name: totalNetworkFee
                                  type: uint256
                                  storage_location: default
                                  offset: 0
                                  index: >-
                                    0x0000000000000000000000000000000000000000000000000000000000000000
                                  indexed: false
                                  simple_type:
                                    type: uint
                                - name: adapters
                                  type: tuple[]
                                  storage_location: default
                                  components:
                                    - name: adapter
                                      type: address
                                      storage_location: default
                                      offset: 0
                                      index: >-
                                        0x0000000000000000000000000000000000000000000000000000000000000000
                                      indexed: false
                                      simple_type:
                                        type: address
                                    - name: percent
                                      type: uint256
                                      storage_location: default
                                      offset: 0
                                      index: >-
                                        0x0000000000000000000000000000000000000000000000000000000000000000
                                      indexed: false
                                      simple_type:
                                        type: uint
                                    - name: networkFee
                                      type: uint256
                                      storage_location: default
                                      offset: 0
                                      index: >-
                                        0x0000000000000000000000000000000000000000000000000000000000000000
                                      indexed: false
                                      simple_type:
                                        type: uint
                                    - name: route
                                      type: tuple[]
                                      storage_location: default
                                      components:
                                        - name: index
                                          type: uint256
                                          storage_location: default
                                          offset: 0
                                          index: >-
                                            0x0000000000000000000000000000000000000000000000000000000000000000
                                          indexed: false
                                          simple_type:
                                            type: uint
                                        - name: targetExchange
                                          type: address
                                          storage_location: default
                                          offset: 0
                                          index: >-
                                            0x0000000000000000000000000000000000000000000000000000000000000000
                                          indexed: false
                                          simple_type:
                                            type: address
                                        - name: percent
                                          type: uint256
                                          storage_location: default
                                          offset: 0
                                          index: >-
                                            0x0000000000000000000000000000000000000000000000000000000000000000
                                          indexed: false
                                          simple_type:
                                            type: uint
                                        - name: payload
                                          type: bytes
                                          storage_location: default
                                          offset: 0
                                          index: >-
                                            0x0000000000000000000000000000000000000000000000000000000000000000
                                          indexed: false
                                          simple_type:
                                            type: bytes
                                        - name: networkFee
                                          type: uint256
                                          storage_location: default
                                          offset: 0
                                          index: >-
                                            0x0000000000000000000000000000000000000000000000000000000000000000
                                          indexed: false
                                          simple_type:
                                            type: uint
                                      offset: 0
                                      index: >-
                                        0x0000000000000000000000000000000000000000000000000000000000000000
                                      indexed: false
                                      simple_type:
                                        type: slice
                                  offset: 0
                                  index: >-
                                    0x0000000000000000000000000000000000000000000000000000000000000000
                                  indexed: false
                                  simple_type:
                                    type: slice
                              offset: 0
                              index: >-
                                0x0000000000000000000000000000000000000000000000000000000000000000
                              indexed: false
                              simple_type:
                                type: slice
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: slice
                        - name: partner
                          type: address
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: address
                        - name: feePercent
                          type: uint256
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: uint
                        - name: permit
                          type: bytes
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: bytes
                        - name: deadline
                          type: uint256
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: uint
                        - name: uuid
                          type: bytes16
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: bytes
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                  outputs:
                    - name: ''
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                - type: function
                  name: paraswapReferralShare
                  constant: false
                  anonymous: false
                  stateMutability: view
                  inputs: []
                  outputs:
                    - name: ''
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                - type: function
                  name: ROUTER_ROLE
                  constant: false
                  anonymous: false
                  stateMutability: view
                  inputs: []
                  outputs:
                    - name: ''
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                - type: function
                  name: WHITELISTED_ROLE
                  constant: false
                  anonymous: false
                  stateMutability: view
                  inputs: []
                  outputs:
                    - name: ''
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                - type: function
                  name: getKey
                  constant: false
                  anonymous: false
                  stateMutability: pure
                  inputs: []
                  outputs:
                    - name: ''
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                - type: function
                  name: partnerSharePercent
                  constant: false
                  anonymous: false
                  stateMutability: view
                  inputs: []
                  outputs:
                    - name: ''
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                - type: function
                  name: buy
                  constant: false
                  anonymous: false
                  stateMutability: payable
                  inputs:
                    - name: data
                      type: tuple
                      storage_location: default
                      components:
                        - name: adapter
                          type: address
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: address
                        - name: fromToken
                          type: address
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: address
                        - name: toToken
                          type: address
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: address
                        - name: fromAmount
                          type: uint256
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: uint
                        - name: toAmount
                          type: uint256
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: uint
                        - name: expectedAmount
                          type: uint256
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: uint
                        - name: beneficiary
                          type: address
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: address
                        - name: route
                          type: tuple[]
                          storage_location: default
                          components:
                            - name: index
                              type: uint256
                              storage_location: default
                              offset: 0
                              index: >-
                                0x0000000000000000000000000000000000000000000000000000000000000000
                              indexed: false
                              simple_type:
                                type: uint
                            - name: targetExchange
                              type: address
                              storage_location: default
                              offset: 0
                              index: >-
                                0x0000000000000000000000000000000000000000000000000000000000000000
                              indexed: false
                              simple_type:
                                type: address
                            - name: percent
                              type: uint256
                              storage_location: default
                              offset: 0
                              index: >-
                                0x0000000000000000000000000000000000000000000000000000000000000000
                              indexed: false
                              simple_type:
                                type: uint
                            - name: payload
                              type: bytes
                              storage_location: default
                              offset: 0
                              index: >-
                                0x0000000000000000000000000000000000000000000000000000000000000000
                              indexed: false
                              simple_type:
                                type: bytes
                            - name: networkFee
                              type: uint256
                              storage_location: default
                              offset: 0
                              index: >-
                                0x0000000000000000000000000000000000000000000000000000000000000000
                              indexed: false
                              simple_type:
                                type: uint
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: slice
                        - name: partner
                          type: address
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: address
                        - name: feePercent
                          type: uint256
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: uint
                        - name: permit
                          type: bytes
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: bytes
                        - name: deadline
                          type: uint256
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: uint
                        - name: uuid
                          type: bytes16
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: bytes
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                  outputs:
                    - name: ''
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                - type: function
                  name: maxFeePercent
                  constant: false
                  anonymous: false
                  stateMutability: view
                  inputs: []
                  outputs:
                    - name: ''
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                - type: function
                  name: multiSwap
                  constant: false
                  anonymous: false
                  stateMutability: payable
                  inputs:
                    - name: data
                      type: tuple
                      storage_location: default
                      components:
                        - name: fromToken
                          type: address
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: address
                        - name: fromAmount
                          type: uint256
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: uint
                        - name: toAmount
                          type: uint256
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: uint
                        - name: expectedAmount
                          type: uint256
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: uint
                        - name: beneficiary
                          type: address
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: address
                        - name: path
                          type: tuple[]
                          storage_location: default
                          components:
                            - name: to
                              type: address
                              storage_location: default
                              offset: 0
                              index: >-
                                0x0000000000000000000000000000000000000000000000000000000000000000
                              indexed: false
                              simple_type:
                                type: address
                            - name: totalNetworkFee
                              type: uint256
                              storage_location: default
                              offset: 0
                              index: >-
                                0x0000000000000000000000000000000000000000000000000000000000000000
                              indexed: false
                              simple_type:
                                type: uint
                            - name: adapters
                              type: tuple[]
                              storage_location: default
                              components:
                                - name: adapter
                                  type: address
                                  storage_location: default
                                  offset: 0
                                  index: >-
                                    0x0000000000000000000000000000000000000000000000000000000000000000
                                  indexed: false
                                  simple_type:
                                    type: address
                                - name: percent
                                  type: uint256
                                  storage_location: default
                                  offset: 0
                                  index: >-
                                    0x0000000000000000000000000000000000000000000000000000000000000000
                                  indexed: false
                                  simple_type:
                                    type: uint
                                - name: networkFee
                                  type: uint256
                                  storage_location: default
                                  offset: 0
                                  index: >-
                                    0x0000000000000000000000000000000000000000000000000000000000000000
                                  indexed: false
                                  simple_type:
                                    type: uint
                                - name: route
                                  type: tuple[]
                                  storage_location: default
                                  components:
                                    - name: index
                                      type: uint256
                                      storage_location: default
                                      offset: 0
                                      index: >-
                                        0x0000000000000000000000000000000000000000000000000000000000000000
                                      indexed: false
                                      simple_type:
                                        type: uint
                                    - name: targetExchange
                                      type: address
                                      storage_location: default
                                      offset: 0
                                      index: >-
                                        0x0000000000000000000000000000000000000000000000000000000000000000
                                      indexed: false
                                      simple_type:
                                        type: address
                                    - name: percent
                                      type: uint256
                                      storage_location: default
                                      offset: 0
                                      index: >-
                                        0x0000000000000000000000000000000000000000000000000000000000000000
                                      indexed: false
                                      simple_type:
                                        type: uint
                                    - name: payload
                                      type: bytes
                                      storage_location: default
                                      offset: 0
                                      index: >-
                                        0x0000000000000000000000000000000000000000000000000000000000000000
                                      indexed: false
                                      simple_type:
                                        type: bytes
                                    - name: networkFee
                                      type: uint256
                                      storage_location: default
                                      offset: 0
                                      index: >-
                                        0x0000000000000000000000000000000000000000000000000000000000000000
                                      indexed: false
                                      simple_type:
                                        type: uint
                                  offset: 0
                                  index: >-
                                    0x0000000000000000000000000000000000000000000000000000000000000000
                                  indexed: false
                                  simple_type:
                                    type: slice
                              offset: 0
                              index: >-
                                0x0000000000000000000000000000000000000000000000000000000000000000
                              indexed: false
                              simple_type:
                                type: slice
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: slice
                        - name: partner
                          type: address
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: address
                        - name: feePercent
                          type: uint256
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: uint
                        - name: permit
                          type: bytes
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: bytes
                        - name: deadline
                          type: uint256
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: uint
                        - name: uuid
                          type: bytes16
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: bytes
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                  outputs:
                    - name: ''
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                - type: function
                  name: paraswapSlippageShare
                  constant: false
                  anonymous: false
                  stateMutability: view
                  inputs: []
                  outputs:
                    - name: ''
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                - type: function
                  name: feeClaimer
                  constant: false
                  anonymous: false
                  stateMutability: view
                  inputs: []
                  outputs:
                    - name: ''
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                - type: function
                  name: initialize
                  constant: false
                  anonymous: false
                  stateMutability: nonpayable
                  inputs:
                    - name: ''
                      type: bytes
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                  outputs: []
                - type: event
                  name: BoughtV3
                  constant: false
                  anonymous: false
                  stateMutability: ''
                  inputs:
                    - name: uuid
                      type: bytes16
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                    - name: partner
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                    - name: feePercent
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                    - name: initiator
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                    - name: beneficiary
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: true
                      simple_type:
                        type: address
                    - name: srcToken
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: true
                      simple_type:
                        type: address
                    - name: destToken
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: true
                      simple_type:
                        type: address
                    - name: srcAmount
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                    - name: receivedAmount
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                    - name: expectedAmount
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                  outputs: null
                - type: event
                  name: SwappedV3
                  constant: false
                  anonymous: false
                  stateMutability: ''
                  inputs:
                    - name: uuid
                      type: bytes16
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                    - name: partner
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                    - name: feePercent
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                    - name: initiator
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                    - name: beneficiary
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: true
                      simple_type:
                        type: address
                    - name: srcToken
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: true
                      simple_type:
                        type: address
                    - name: destToken
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: true
                      simple_type:
                        type: address
                    - name: srcAmount
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                    - name: receivedAmount
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                    - name: expectedAmount
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                  outputs: null
              raw_abi: null
            src_map:
              '0':
                r: '316:13499:14'
                s: 316
                l: 13499
                ln: 14
                c: 1
                f: 14
                j: '-'
              '2':
                r: '316:13499:14'
                s: 316
                l: 13499
                ln: 14
                c: 1
                f: 14
                j: '-'
            creation_block: 0
            creation_tx: ''
            creator_address: ''
            created_at: '2023-06-13T17:26:36Z'
            language: solidity
            in_project: false
          - id: eth:1:0xdef171fe48cf0115b1d80b88dc8eab59176fee57
            contract_id: eth:1:0xdef171fe48cf0115b1d80b88dc8eab59176fee57
            balance: ''
            network_id: '1'
            public: true
            verified_by: etherscan
            verification_date: '2021-08-18T12:43:57Z'
            address: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
            contract_name: AugustusSwapper
            ens_domain: null
            type: contract
            evm_version: istanbul
            compiler_version: v0.7.5+commit.eb77ed08
            optimizations_used: true
            optimization_runs: 1000000
            libraries: null
            compiler_settings:
              optimizer:
                enabled: true
                runs: 1000000
              evmVersion: istanbul
              metadata:
                useLiteralContent: true
            deployed_bytecode: >-
              0x60806040526004361061019a5760003560e01c80639010d07c116100e1578063a64b6e5f1161008a578063ca15c87311610064578063ca15c873146105eb578063d2c4b5981461060b578063d547741f14610620578063dc9cc64514610640576101a1565b8063a64b6e5f1461058b578063aa5b2458146105ab578063aa97ef02146105cb576101a1565b80639812f33b116100bb5780639812f33b146105365780639a5a98d314610556578063a217fddf14610576576101a1565b80639010d07c146104d657806390d49b9d146104f657806391d1485414610516576101a1565b806336568abe1161014357806360e355071161011d57806360e35507146104745780636df77496146104945780637a3226ec146104c1576101a1565b806336568abe146104055780633a9243d7146104255780635459060d14610452576101a1565b8063248a9ca311610174578063248a9ca3146103a35780632f2ff15d146103d057806330d643b5146103f0576101a1565b80630815f6fd146103365780630d8e6e2c146103585780631880021914610383576101a1565b366101a157005b600080357fffffffff0000000000000000000000000000000000000000000000000000000016905060006101d48261065b565b905073ffffffffffffffffffffffffffffffffffffffff81166102a8576102a87f734e6e1c6ec3f883cac8d13d3e7390b280f5e94424662aa29e27394ed56586c9836040516024016102269190612082565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526106a9565b600060608273ffffffffffffffffffffffffffffffffffffffff166000366040516102d4929190611ff8565b600060405180830381855af49150503d806000811461030f576040519150601f19603f3d011682016040523d82523d6000602084013e610314565b606091505b50915091508161032757610327816106a9565b610330816106b1565b50505050005b34801561034257600080fd5b50610356610351366004611f83565b6106b9565b005b34801561036457600080fd5b5061036d6107da565b60405161037a91906120fc565b60405180910390f35b34801561038f57600080fd5b5061035661039e366004611dc9565b610811565b3480156103af57600080fd5b506103c36103be366004611f01565b610a31565b60405161037a9190612079565b3480156103dc57600080fd5b506103566103eb366004611f19565b610a46565b3480156103fc57600080fd5b506103c3610aa8565b34801561041157600080fd5b50610356610420366004611f19565b610acc565b34801561043157600080fd5b50610445610440366004611f01565b610b42565b60405161037a919061206e565b34801561045e57600080fd5b50610467610b57565b60405161037a9190612027565b34801561048057600080fd5b5061035661048f366004611dc9565b610b73565b3480156104a057600080fd5b506104b46104af366004611d6d565b610d93565b60405161037a91906125d1565b3480156104cd57600080fd5b506103c3610f6a565b3480156104e257600080fd5b506104676104f1366004611f48565b610f8e565b34801561050257600080fd5b50610356610511366004611d6d565b610faf565b34801561052257600080fd5b50610445610531366004611f19565b611084565b34801561054257600080fd5b50610445610551366004611f01565b61109c565b34801561056257600080fd5b5061036d610571366004611f01565b6110b1565b34801561058257600080fd5b506103c3611170565b34801561059757600080fd5b506103566105a6366004611d89565b611175565b3480156105b757600080fd5b506103566105c6366004611e1c565b6112c2565b3480156105d757600080fd5b5061036d6105e6366004611f01565b6114ef565b3480156105f757600080fd5b506103c3610606366004611f01565b611577565b34801561061757600080fd5b5061046761158e565b34801561062c57600080fd5b5061035661063b366004611f19565b6115aa565b34801561064c57600080fd5b5061046761065b366004611f69565b7fffffffff00000000000000000000000000000000000000000000000000000000811660009081526003602052604090205473ffffffffffffffffffffffffffffffffffffffff165b919050565b805160208201fd5b805160208201f35b6106c4600033611084565b610703576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa9061253d565b60405180910390fd5b61072d7f7a05a596cb0ce7fdea8a1e1ec73be300bdb35097c944ce1897202f7a13122eb282611084565b610763576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa906123a7565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116600090815260036020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055565b60408051808201909152600581527f352e302e30000000000000000000000000000000000000000000000000000000602082015290565b61081c600033611084565b610852576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa9061253d565b61087c7f8429d542926e6695b59ac6fbdcd9b37e8b1aeb757afab06ab60b1bb5878c3b4984611084565b6108b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa90612472565b60008373ffffffffffffffffffffffffffffffffffffffff1663439fab9160e01b84846040516024016108e69291906120af565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161096f9190612008565b600060405180830381855af49150503d80600081146109aa576040519150601f19603f3d011682016040523d82523d6000602084013e6109af565b606091505b50509050806109ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa906122dc565b60405173ffffffffffffffffffffffffffffffffffffffff8516907f4aa65286df310c4e8390d962c75f50380b8260d96ea27cf14847cd683e22d9db90600090a250505050565b60009081526008602052604090206002015490565b600082815260086020526040902060020154610a6490610531611620565b610a9a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa906121a3565b610aa48282611624565b5050565b7f7a05a596cb0ce7fdea8a1e1ec73be300bdb35097c944ce1897202f7a13122eb281565b610ad4611620565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b38576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa90612574565b610aa482826116a7565b60009081526004602052604090205460ff1690565b60015473ffffffffffffffffffffffffffffffffffffffff1690565b610b7e600033611084565b610bb4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa9061253d565b610bde7f7a05a596cb0ce7fdea8a1e1ec73be300bdb35097c944ce1897202f7a13122eb284611084565b610c14576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa90612313565b60008373ffffffffffffffffffffffffffffffffffffffff1663439fab9160e01b8484604051602401610c489291906120af565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051610cd19190612008565b600060405180830381855af49150503d8060008114610d0c576040519150601f19603f3d011682016040523d82523d6000602084013e610d11565b606091505b5050905080610d4c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa9061226e565b60405173ffffffffffffffffffffffffffffffffffffffff8516907f2622745e83f97f2d871ef785497c1eeba6f9bb94c7dd486cf28228e814d929e490600090a250505050565b610d9b611bf9565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260026020818152604092839020835160c0810185528154815260018083015460ff8082161515848701526101008083049091161515848901526201000090910461ffff16606084015283860180548851938116159092027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190911695909504601f810185900485028201850190965285815290949193608086019391929091830182828015610ea85780601f10610e7d57610100808354040283529160200191610ea8565b820191906000526020600020905b815481529060010190602001808311610e8b57829003601f168201915b505050918352505060038201805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f8101849004840282018401909252818152938201939291830182828015610f5a5780601f10610f2f57610100808354040283529160200191610f5a565b820191906000526020600020905b815481529060010190602001808311610f3d57829003601f168201915b5050505050815250509050919050565b7f8429d542926e6695b59ac6fbdcd9b37e8b1aeb757afab06ab60b1bb5878c3b4981565b6000828152600860205260408120610fa6908361172a565b90505b92915050565b610fba600033611084565b610ff0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa9061253d565b73ffffffffffffffffffffffffffffffffffffffff811661103d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa90612200565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000828152600860205260408120610fa69083611736565b60009081526007602052604090205460ff1690565b60008181526005602090815260409182902080548351601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156111645780601f1061113957610100808354040283529160200191611164565b820191906000526020600020905b81548152906001019060200180831161114757829003601f168201915b50505050509050919050565b600081565b611180600033611084565b6111b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa9061253d565b80156112bd5773ffffffffffffffffffffffffffffffffffffffff831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561129c5760008273ffffffffffffffffffffffffffffffffffffffff16826127109060405161121890612024565b600060405180830381858888f193505050503d8060008114611256576040519150601f19603f3d011682016040523d82523d6000602084013e61125b565b606091505b5050905080611296576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa9061210f565b506112bd565b6112bd73ffffffffffffffffffffffffffffffffffffffff84168383611758565b505050565b6112cd600033611084565b611303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa9061253d565b73ffffffffffffffffffffffffffffffffffffffff8916611350576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa9061243b565b73ffffffffffffffffffffffffffffffffffffffff891660009081526002602052604090208054156113ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa906122a5565b6000891180156113bf575061271089105b6113f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa90612237565b6127108661ffff161115611435576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa90612237565b8881556001810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016891515177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101008915150217905561149e600282018686611c37565b506001810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff166201000061ffff8916021790556114e2600382018484611c37565b5050505050505050505050565b60008181526006602090815260409182902080548351601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156111645780601f1061113957610100808354040283529160200191611164565b6000818152600860205260408120610fa9906117f9565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6000828152600860205260409020600201546115c890610531611620565b610b38576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa906123de565b6000610fa68373ffffffffffffffffffffffffffffffffffffffff8416611804565b3390565b600082815260086020526040902061163c90826115fe565b15610aa457611649611620565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526008602052604090206116bf908261184e565b15610aa4576116cc611620565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b6000610fa68383611870565b6000610fa68373ffffffffffffffffffffffffffffffffffffffff84166118cf565b6112bd8363a9059cbb60e01b8484604051602401611777929190612048565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526118e7565b6000610fa98261199d565b600061181083836118cf565b61184657508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610fa9565b506000610fa9565b6000610fa68373ffffffffffffffffffffffffffffffffffffffff84166119a1565b815460009082106118ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa90612146565b8260000182815481106118bc57fe5b9060005260206000200154905092915050565b60009081526001919091016020526040902054151590565b6060611949826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611a859092919063ffffffff16565b8051909150156112bd57808060200190518101906119679190611ee5565b6112bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa906124e0565b5490565b60008181526001830160205260408120548015611a7b5783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80830191908101906000908790839081106119f257fe5b9060005260206000200154905080876000018481548110611a0f57fe5b600091825260208083209091019290925582815260018981019092526040902090840190558654879080611a3f57fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610fa9565b6000915050610fa9565b6060611a948484600085611a9e565b90505b9392505050565b606082471015611ada576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa9061234a565b611ae385611ba0565b611b19576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa906124a9565b600060608673ffffffffffffffffffffffffffffffffffffffff168587604051611b439190612008565b60006040518083038185875af1925050503d8060008114611b80576040519150601f19603f3d011682016040523d82523d6000602084013e611b85565b606091505b5091509150611b95828286611ba6565b979650505050505050565b3b151590565b60608315611bb5575081611a97565b825115611bc55782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa91906120fc565b6040518060c0016040528060008152602001600015158152602001600015158152602001600061ffff16815260200160608152602001606081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282611c6d5760008555611cd1565b82601f10611ca4578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00823516178555611cd1565b82800160010185558215611cd1579182015b82811115611cd1578235825591602001919060010190611cb6565b50611cdd929150611ce1565b5090565b5b80821115611cdd5760008155600101611ce2565b80357fffffffff00000000000000000000000000000000000000000000000000000000811681146106a457600080fd5b60008083601f840112611d37578182fd5b50813567ffffffffffffffff811115611d4e578182fd5b602083019150836020828501011115611d6657600080fd5b9250929050565b600060208284031215611d7e578081fd5b8135611a9781612691565b600080600060608486031215611d9d578182fd5b8335611da881612691565b92506020840135611db881612691565b929592945050506040919091013590565b600080600060408486031215611ddd578283fd5b8335611de881612691565b9250602084013567ffffffffffffffff811115611e03578283fd5b611e0f86828701611d26565b9497909650939450505050565b600080600080600080600080600060e08a8c031215611e39578485fd5b8935611e4481612691565b985060208a0135975060408a0135611e5b816126b6565b965060608a0135611e6b816126b6565b955060808a013561ffff81168114611e81578586fd5b945060a08a013567ffffffffffffffff80821115611e9d578586fd5b611ea98d838e01611d26565b909650945060c08c0135915080821115611ec1578384fd5b50611ece8c828d01611d26565b915080935050809150509295985092959850929598565b600060208284031215611ef6578081fd5b8151611a97816126b6565b600060208284031215611f12578081fd5b5035919050565b60008060408385031215611f2b578182fd5b823591506020830135611f3d81612691565b809150509250929050565b60008060408385031215611f5a578182fd5b50508035926020909101359150565b600060208284031215611f7a578081fd5b610fa682611cf6565b60008060408385031215611f95578182fd5b611f9e83611cf6565b91506020830135611f3d81612691565b60008151808452611fc6816020860160208601612661565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000828483379101908152919050565b6000825161201a818460208701612661565b9190910192915050565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b90815260200190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b60006020825282602083015282846040840137818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101919050565b600060208252610fa66020830184611fae565b60208082526018908201527f4661696c656420746f207472616e736665722045746865720000000000000000604082015260600190565b60208082526022908201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60408201527f6473000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252602f908201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60408201527f2061646d696e20746f206772616e740000000000000000000000000000000000606082015260800190565b6020808252600f908201527f496e76616c696420616464726573730000000000000000000000000000000000604082015260600190565b6020808252600e908201527f496e76616c69642076616c756573000000000000000000000000000000000000604082015260600190565b6020808252601b908201527f4661696c656420746f20696e697469616c697a6520726f757465720000000000604082015260600190565b60208082526012908201527f416c726561647920726567697374657265640000000000000000000000000000604082015260600190565b6020808252601c908201527f4661696c656420746f20696e697469616c697a65206164617074657200000000604082015260600190565b60208082526016908201527f526f75746572206e6f742077686974656c697374656400000000000000000000604082015260600190565b60208082526026908201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60408201527f722063616c6c0000000000000000000000000000000000000000000000000000606082015260800190565b60208082526019908201527f526f75746572206973206e6f742077686974656c697374656400000000000000604082015260600190565b60208082526030908201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60408201527f2061646d696e20746f207265766f6b6500000000000000000000000000000000606082015260800190565b6020808252600f908201527f496e76616c696420706172746e65720000000000000000000000000000000000604082015260600190565b60208082526018908201527f45786368616e6765206e6f742077686974656c69737465640000000000000000604082015260600190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60408201527f6f74207375636365656400000000000000000000000000000000000000000000606082015260800190565b60208082526017908201527f63616c6c6572206973206e6f74207468652061646d696e000000000000000000604082015260600190565b6020808252602f908201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560408201527f20726f6c657320666f722073656c660000000000000000000000000000000000606082015260800190565b6000602082528251602083015260208301511515604083015260408301511515606083015261ffff6060840151166080830152608083015160c060a084015261261d60e0840182611fae565b905060a08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160c08501526126588282611fae565b95945050505050565b60005b8381101561267c578181015183820152602001612664565b8381111561268b576000848401525b50505050565b73ffffffffffffffffffffffffffffffffffffffff811681146126b357600080fd5b50565b80151581146126b357600080fdfea26469706673582212203fd8ae4e6506de07cbbca3cda754ae71293e8b3e0ba4c10c5c5bdfec31c3ff2464736f6c63430007050033
            creation_bytecode: >-
              0x60806040523480156200001157600080fd5b5060405162003395380380620033958339810160408190526200003491620001c9565b60006040516200004490620001bb565b604051809103906000f08015801562000061573d6000803e3d6000fd5b50600080546001600160a01b038084166001600160a01b031992831617835560018054918716919092161790559091506200009d9033620000a5565b5050620001f9565b620000b18282620000b5565b5050565b6000828152600860209081526040909120620000dc918390620015fe62000130821b17901c565b15620000b157620000ec62000150565b6001600160a01b0316816001600160a01b0316837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b600062000147836001600160a01b03841662000154565b90505b92915050565b3390565b6000620001628383620001a3565b6200019a575081546001818101845560008481526020808220909301849055845484825282860190935260409020919091556200014a565b5060006200014a565b60009081526001919091016020526040902054151590565b610a92806200290383390190565b600060208284031215620001db578081fd5b81516001600160a01b0381168114620001f2578182fd5b9392505050565b6126fa80620002096000396000f3fe60806040526004361061019a5760003560e01c80639010d07c116100e1578063a64b6e5f1161008a578063ca15c87311610064578063ca15c873146105eb578063d2c4b5981461060b578063d547741f14610620578063dc9cc64514610640576101a1565b8063a64b6e5f1461058b578063aa5b2458146105ab578063aa97ef02146105cb576101a1565b80639812f33b116100bb5780639812f33b146105365780639a5a98d314610556578063a217fddf14610576576101a1565b80639010d07c146104d657806390d49b9d146104f657806391d1485414610516576101a1565b806336568abe1161014357806360e355071161011d57806360e35507146104745780636df77496146104945780637a3226ec146104c1576101a1565b806336568abe146104055780633a9243d7146104255780635459060d14610452576101a1565b8063248a9ca311610174578063248a9ca3146103a35780632f2ff15d146103d057806330d643b5146103f0576101a1565b80630815f6fd146103365780630d8e6e2c146103585780631880021914610383576101a1565b366101a157005b600080357fffffffff0000000000000000000000000000000000000000000000000000000016905060006101d48261065b565b905073ffffffffffffffffffffffffffffffffffffffff81166102a8576102a87f734e6e1c6ec3f883cac8d13d3e7390b280f5e94424662aa29e27394ed56586c9836040516024016102269190612082565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526106a9565b600060608273ffffffffffffffffffffffffffffffffffffffff166000366040516102d4929190611ff8565b600060405180830381855af49150503d806000811461030f576040519150601f19603f3d011682016040523d82523d6000602084013e610314565b606091505b50915091508161032757610327816106a9565b610330816106b1565b50505050005b34801561034257600080fd5b50610356610351366004611f83565b6106b9565b005b34801561036457600080fd5b5061036d6107da565b60405161037a91906120fc565b60405180910390f35b34801561038f57600080fd5b5061035661039e366004611dc9565b610811565b3480156103af57600080fd5b506103c36103be366004611f01565b610a31565b60405161037a9190612079565b3480156103dc57600080fd5b506103566103eb366004611f19565b610a46565b3480156103fc57600080fd5b506103c3610aa8565b34801561041157600080fd5b50610356610420366004611f19565b610acc565b34801561043157600080fd5b50610445610440366004611f01565b610b42565b60405161037a919061206e565b34801561045e57600080fd5b50610467610b57565b60405161037a9190612027565b34801561048057600080fd5b5061035661048f366004611dc9565b610b73565b3480156104a057600080fd5b506104b46104af366004611d6d565b610d93565b60405161037a91906125d1565b3480156104cd57600080fd5b506103c3610f6a565b3480156104e257600080fd5b506104676104f1366004611f48565b610f8e565b34801561050257600080fd5b50610356610511366004611d6d565b610faf565b34801561052257600080fd5b50610445610531366004611f19565b611084565b34801561054257600080fd5b50610445610551366004611f01565b61109c565b34801561056257600080fd5b5061036d610571366004611f01565b6110b1565b34801561058257600080fd5b506103c3611170565b34801561059757600080fd5b506103566105a6366004611d89565b611175565b3480156105b757600080fd5b506103566105c6366004611e1c565b6112c2565b3480156105d757600080fd5b5061036d6105e6366004611f01565b6114ef565b3480156105f757600080fd5b506103c3610606366004611f01565b611577565b34801561061757600080fd5b5061046761158e565b34801561062c57600080fd5b5061035661063b366004611f19565b6115aa565b34801561064c57600080fd5b5061046761065b366004611f69565b7fffffffff00000000000000000000000000000000000000000000000000000000811660009081526003602052604090205473ffffffffffffffffffffffffffffffffffffffff165b919050565b805160208201fd5b805160208201f35b6106c4600033611084565b610703576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa9061253d565b60405180910390fd5b61072d7f7a05a596cb0ce7fdea8a1e1ec73be300bdb35097c944ce1897202f7a13122eb282611084565b610763576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa906123a7565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116600090815260036020526040902080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff909216919091179055565b60408051808201909152600581527f352e302e30000000000000000000000000000000000000000000000000000000602082015290565b61081c600033611084565b610852576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa9061253d565b61087c7f8429d542926e6695b59ac6fbdcd9b37e8b1aeb757afab06ab60b1bb5878c3b4984611084565b6108b2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa90612472565b60008373ffffffffffffffffffffffffffffffffffffffff1663439fab9160e01b84846040516024016108e69291906120af565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff0000000000000000000000000000000000000000000000000000000090941693909317909252905161096f9190612008565b600060405180830381855af49150503d80600081146109aa576040519150601f19603f3d011682016040523d82523d6000602084013e6109af565b606091505b50509050806109ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa906122dc565b60405173ffffffffffffffffffffffffffffffffffffffff8516907f4aa65286df310c4e8390d962c75f50380b8260d96ea27cf14847cd683e22d9db90600090a250505050565b60009081526008602052604090206002015490565b600082815260086020526040902060020154610a6490610531611620565b610a9a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa906121a3565b610aa48282611624565b5050565b7f7a05a596cb0ce7fdea8a1e1ec73be300bdb35097c944ce1897202f7a13122eb281565b610ad4611620565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610b38576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa90612574565b610aa482826116a7565b60009081526004602052604090205460ff1690565b60015473ffffffffffffffffffffffffffffffffffffffff1690565b610b7e600033611084565b610bb4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa9061253d565b610bde7f7a05a596cb0ce7fdea8a1e1ec73be300bdb35097c944ce1897202f7a13122eb284611084565b610c14576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa90612313565b60008373ffffffffffffffffffffffffffffffffffffffff1663439fab9160e01b8484604051602401610c489291906120af565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529181526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909416939093179092529051610cd19190612008565b600060405180830381855af49150503d8060008114610d0c576040519150601f19603f3d011682016040523d82523d6000602084013e610d11565b606091505b5050905080610d4c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa9061226e565b60405173ffffffffffffffffffffffffffffffffffffffff8516907f2622745e83f97f2d871ef785497c1eeba6f9bb94c7dd486cf28228e814d929e490600090a250505050565b610d9b611bf9565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260026020818152604092839020835160c0810185528154815260018083015460ff8082161515848701526101008083049091161515848901526201000090910461ffff16606084015283860180548851938116159092027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190911695909504601f810185900485028201850190965285815290949193608086019391929091830182828015610ea85780601f10610e7d57610100808354040283529160200191610ea8565b820191906000526020600020905b815481529060010190602001808311610e8b57829003601f168201915b505050918352505060038201805460408051602060026001851615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f8101849004840282018401909252818152938201939291830182828015610f5a5780601f10610f2f57610100808354040283529160200191610f5a565b820191906000526020600020905b815481529060010190602001808311610f3d57829003601f168201915b5050505050815250509050919050565b7f8429d542926e6695b59ac6fbdcd9b37e8b1aeb757afab06ab60b1bb5878c3b4981565b6000828152600860205260408120610fa6908361172a565b90505b92915050565b610fba600033611084565b610ff0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa9061253d565b73ffffffffffffffffffffffffffffffffffffffff811661103d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa90612200565b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b6000828152600860205260408120610fa69083611736565b60009081526007602052604090205460ff1690565b60008181526005602090815260409182902080548351601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156111645780601f1061113957610100808354040283529160200191611164565b820191906000526020600020905b81548152906001019060200180831161114757829003601f168201915b50505050509050919050565b600081565b611180600033611084565b6111b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa9061253d565b80156112bd5773ffffffffffffffffffffffffffffffffffffffff831673eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee141561129c5760008273ffffffffffffffffffffffffffffffffffffffff16826127109060405161121890612024565b600060405180830381858888f193505050503d8060008114611256576040519150601f19603f3d011682016040523d82523d6000602084013e61125b565b606091505b5050905080611296576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa9061210f565b506112bd565b6112bd73ffffffffffffffffffffffffffffffffffffffff84168383611758565b505050565b6112cd600033611084565b611303576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa9061253d565b73ffffffffffffffffffffffffffffffffffffffff8916611350576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa9061243b565b73ffffffffffffffffffffffffffffffffffffffff891660009081526002602052604090208054156113ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa906122a5565b6000891180156113bf575061271089105b6113f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa90612237565b6127108661ffff161115611435576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa90612237565b8881556001810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0016891515177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff166101008915150217905561149e600282018686611c37565b506001810180547fffffffffffffffffffffffffffffffffffffffffffffffffffffffff0000ffff166201000061ffff8916021790556114e2600382018484611c37565b5050505050505050505050565b60008181526006602090815260409182902080548351601f60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6101006001861615020190931692909204918201849004840281018401909452808452606093928301828280156111645780601f1061113957610100808354040283529160200191611164565b6000818152600860205260408120610fa9906117f9565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b6000828152600860205260409020600201546115c890610531611620565b610b38576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa906123de565b6000610fa68373ffffffffffffffffffffffffffffffffffffffff8416611804565b3390565b600082815260086020526040902061163c90826115fe565b15610aa457611649611620565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837f2f8788117e7eff1d82e926ec794901d17c78024a50270940304540a733656f0d60405160405180910390a45050565b60008281526008602052604090206116bf908261184e565b15610aa4576116cc611620565b73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16837ff6391f5c32d9c69d2a47ea670b442974b53935d1edc7fd64eb21e047a839171b60405160405180910390a45050565b6000610fa68383611870565b6000610fa68373ffffffffffffffffffffffffffffffffffffffff84166118cf565b6112bd8363a9059cbb60e01b8484604051602401611777929190612048565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff00000000000000000000000000000000000000000000000000000000909316929092179091526118e7565b6000610fa98261199d565b600061181083836118cf565b61184657508154600181810184556000848152602080822090930184905584548482528286019093526040902091909155610fa9565b506000610fa9565b6000610fa68373ffffffffffffffffffffffffffffffffffffffff84166119a1565b815460009082106118ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa90612146565b8260000182815481106118bc57fe5b9060005260206000200154905092915050565b60009081526001919091016020526040902054151590565b6060611949826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff16611a859092919063ffffffff16565b8051909150156112bd57808060200190518101906119679190611ee5565b6112bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa906124e0565b5490565b60008181526001830160205260408120548015611a7b5783547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff80830191908101906000908790839081106119f257fe5b9060005260206000200154905080876000018481548110611a0f57fe5b600091825260208083209091019290925582815260018981019092526040902090840190558654879080611a3f57fe5b60019003818190600052602060002001600090559055866001016000878152602001908152602001600020600090556001945050505050610fa9565b6000915050610fa9565b6060611a948484600085611a9e565b90505b9392505050565b606082471015611ada576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa9061234a565b611ae385611ba0565b611b19576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa906124a9565b600060608673ffffffffffffffffffffffffffffffffffffffff168587604051611b439190612008565b60006040518083038185875af1925050503d8060008114611b80576040519150601f19603f3d011682016040523d82523d6000602084013e611b85565b606091505b5091509150611b95828286611ba6565b979650505050505050565b3b151590565b60608315611bb5575081611a97565b825115611bc55782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106fa91906120fc565b6040518060c0016040528060008152602001600015158152602001600015158152602001600061ffff16815260200160608152602001606081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282611c6d5760008555611cd1565b82601f10611ca4578280017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00823516178555611cd1565b82800160010185558215611cd1579182015b82811115611cd1578235825591602001919060010190611cb6565b50611cdd929150611ce1565b5090565b5b80821115611cdd5760008155600101611ce2565b80357fffffffff00000000000000000000000000000000000000000000000000000000811681146106a457600080fd5b60008083601f840112611d37578182fd5b50813567ffffffffffffffff811115611d4e578182fd5b602083019150836020828501011115611d6657600080fd5b9250929050565b600060208284031215611d7e578081fd5b8135611a9781612691565b600080600060608486031215611d9d578182fd5b8335611da881612691565b92506020840135611db881612691565b929592945050506040919091013590565b600080600060408486031215611ddd578283fd5b8335611de881612691565b9250602084013567ffffffffffffffff811115611e03578283fd5b611e0f86828701611d26565b9497909650939450505050565b600080600080600080600080600060e08a8c031215611e39578485fd5b8935611e4481612691565b985060208a0135975060408a0135611e5b816126b6565b965060608a0135611e6b816126b6565b955060808a013561ffff81168114611e81578586fd5b945060a08a013567ffffffffffffffff80821115611e9d578586fd5b611ea98d838e01611d26565b909650945060c08c0135915080821115611ec1578384fd5b50611ece8c828d01611d26565b915080935050809150509295985092959850929598565b600060208284031215611ef6578081fd5b8151611a97816126b6565b600060208284031215611f12578081fd5b5035919050565b60008060408385031215611f2b578182fd5b823591506020830135611f3d81612691565b809150509250929050565b60008060408385031215611f5a578182fd5b50508035926020909101359150565b600060208284031215611f7a578081fd5b610fa682611cf6565b60008060408385031215611f95578182fd5b611f9e83611cf6565b91506020830135611f3d81612691565b60008151808452611fc6816020860160208601612661565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169290920160200192915050565b6000828483379101908152919050565b6000825161201a818460208701612661565b9190910192915050565b90565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff929092168252602082015260400190565b901515815260200190565b90815260200190565b7fffffffff0000000000000000000000000000000000000000000000000000000091909116815260200190565b60006020825282602083015282846040840137818301604090810191909152601f9092017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0160101919050565b600060208252610fa66020830184611fae565b60208082526018908201527f4661696c656420746f207472616e736665722045746865720000000000000000604082015260600190565b60208082526022908201527f456e756d657261626c655365743a20696e646578206f7574206f6620626f756e60408201527f6473000000000000000000000000000000000000000000000000000000000000606082015260800190565b6020808252602f908201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60408201527f2061646d696e20746f206772616e740000000000000000000000000000000000606082015260800190565b6020808252600f908201527f496e76616c696420616464726573730000000000000000000000000000000000604082015260600190565b6020808252600e908201527f496e76616c69642076616c756573000000000000000000000000000000000000604082015260600190565b6020808252601b908201527f4661696c656420746f20696e697469616c697a6520726f757465720000000000604082015260600190565b60208082526012908201527f416c726561647920726567697374657265640000000000000000000000000000604082015260600190565b6020808252601c908201527f4661696c656420746f20696e697469616c697a65206164617074657200000000604082015260600190565b60208082526016908201527f526f75746572206e6f742077686974656c697374656400000000000000000000604082015260600190565b60208082526026908201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60408201527f722063616c6c0000000000000000000000000000000000000000000000000000606082015260800190565b60208082526019908201527f526f75746572206973206e6f742077686974656c697374656400000000000000604082015260600190565b60208082526030908201527f416363657373436f6e74726f6c3a2073656e646572206d75737420626520616e60408201527f2061646d696e20746f207265766f6b6500000000000000000000000000000000606082015260800190565b6020808252600f908201527f496e76616c696420706172746e65720000000000000000000000000000000000604082015260600190565b60208082526018908201527f45786368616e6765206e6f742077686974656c69737465640000000000000000604082015260600190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60408201527f6f74207375636365656400000000000000000000000000000000000000000000606082015260800190565b60208082526017908201527f63616c6c6572206973206e6f74207468652061646d696e000000000000000000604082015260600190565b6020808252602f908201527f416363657373436f6e74726f6c3a2063616e206f6e6c792072656e6f756e636560408201527f20726f6c657320666f722073656c660000000000000000000000000000000000606082015260800190565b6000602082528251602083015260208301511515604083015260408301511515606083015261ffff6060840151166080830152608083015160c060a084015261261d60e0840182611fae565b905060a08401517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08483030160c08501526126588282611fae565b95945050505050565b60005b8381101561267c578181015183820152602001612664565b8381111561268b576000848401525b50505050565b73ffffffffffffffffffffffffffffffffffffffff811681146126b357600080fd5b50565b80151581146126b357600080fdfea2646970667358221220a9b3d1d743a9ede017488b662cc75bc60451efffa74dede19e76ef93e9149cad64736f6c63430007050033608060405234801561001057600080fd5b50600061001b61006a565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35061006e565b3390565b610a158061007d6000396000f3fe608060405234801561001057600080fd5b506004361061004c5760003560e01c806315dacbea14610051578063715018a6146100665780638da5cb5b1461006e578063f2fde38b1461008c575b600080fd5b61006461005f3660046106d0565b61009f565b005b6100646101a0565b61007661026b565b6040516100839190610756565b60405180910390f35b61006461009a3660046106b6565b610287565b6100a76103bd565b60005473ffffffffffffffffffffffffffffffffffffffff908116911614610104576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100fb906108ea565b60405180910390fd5b73ffffffffffffffffffffffffffffffffffffffff831632148061014257506101428373ffffffffffffffffffffffffffffffffffffffff166103c1565b610178576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100fb906108b3565b61019a73ffffffffffffffffffffffffffffffffffffffff85168484846103cb565b50505050565b6101a86103bd565b60005473ffffffffffffffffffffffffffffffffffffffff9081169116146101fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100fb906108ea565b6000805460405173ffffffffffffffffffffffffffffffffffffffff909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000169055565b60005473ffffffffffffffffffffffffffffffffffffffff1690565b61028f6103bd565b60005473ffffffffffffffffffffffffffffffffffffffff9081169116146102e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100fb906108ea565b73ffffffffffffffffffffffffffffffffffffffff8116610330576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100fb906107f9565b6000805460405173ffffffffffffffffffffffffffffffffffffffff808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b3390565b803b15155b919050565b61019a846323b872dd60e01b8585856040516024016103ec93929190610777565b604080517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe08184030181529190526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fffffffff000000000000000000000000000000000000000000000000000000009093169290921790915260606104cb826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c65648152508573ffffffffffffffffffffffffffffffffffffffff166105249092919063ffffffff16565b80519091501561051f57808060200190518101906104e9919061071a565b61051f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100fb90610956565b505050565b6060610533848460008561053d565b90505b9392505050565b606082471015610579576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100fb90610856565b610582856103c1565b6105b8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100fb9061091f565b600060608673ffffffffffffffffffffffffffffffffffffffff1685876040516105e2919061073a565b60006040518083038185875af1925050503d806000811461061f576040519150601f19603f3d011682016040523d82523d6000602084013e610624565b606091505b509150915061063482828661063f565b979650505050505050565b6060831561064e575081610536565b82511561065e5782518084602001fd5b816040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100fb91906107a8565b803573ffffffffffffffffffffffffffffffffffffffff811681146103c657600080fd5b6000602082840312156106c7578081fd5b61053682610692565b600080600080608085870312156106e5578283fd5b6106ee85610692565b93506106fc60208601610692565b925061070a60408601610692565b9396929550929360600135925050565b60006020828403121561072b578081fd5b81518015158114610536578182fd5b6000825161074c8184602087016109b3565b9190910192915050565b73ffffffffffffffffffffffffffffffffffffffff91909116815260200190565b73ffffffffffffffffffffffffffffffffffffffff9384168152919092166020820152604081019190915260600190565b60006020825282518060208401526107c78160408501602087016109b3565b601f017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0169190910160400192915050565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201527f6464726573730000000000000000000000000000000000000000000000000000606082015260800190565b60208082526026908201527f416464726573733a20696e73756666696369656e742062616c616e636520666f60408201527f722063616c6c0000000000000000000000000000000000000000000000000000606082015260800190565b60208082526014908201527f496e76616c69642066726f6d2061646472657373000000000000000000000000604082015260600190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e60408201527f6f74207375636365656400000000000000000000000000000000000000000000606082015260800190565b60005b838110156109ce5781810151838201526020016109b6565b8381111561019a575050600091015256fea2646970667358221220aa1874fa1602e178bce42ae0cf042879dfe48ce803daf9fefdb558352271824c64736f6c63430007050033
            data:
              main_contract: 0
              contract_info: null
              abi:
                - type: constructor
                  name: ''
                  constant: false
                  anonymous: false
                  stateMutability: ''
                  inputs:
                    - name: _feeWallet
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                  outputs: null
                - type: function
                  name: getVersion
                  constant: false
                  anonymous: false
                  stateMutability: pure
                  inputs: []
                  outputs:
                    - name: ''
                      type: string
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: string
                - type: function
                  name: setImplementation
                  constant: false
                  anonymous: false
                  stateMutability: nonpayable
                  inputs:
                    - name: selector
                      type: bytes4
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                    - name: implementation
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                  outputs: []
                - type: function
                  name: getImplementation
                  constant: false
                  anonymous: false
                  stateMutability: view
                  inputs:
                    - name: selector
                      type: bytes4
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                  outputs:
                    - name: ''
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                - type: function
                  name: transferTokens
                  constant: false
                  anonymous: false
                  stateMutability: nonpayable
                  inputs:
                    - name: token
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                    - name: destination
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                    - name: amount
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                  outputs: []
                - type: function
                  name: getRouterData
                  constant: false
                  anonymous: false
                  stateMutability: view
                  inputs:
                    - name: key
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                  outputs:
                    - name: ''
                      type: bytes
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                - type: function
                  name: getRoleAdmin
                  constant: false
                  anonymous: false
                  stateMutability: view
                  inputs:
                    - name: role
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                  outputs:
                    - name: ''
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                - type: function
                  name: initializeRouter
                  constant: false
                  anonymous: false
                  stateMutability: nonpayable
                  inputs:
                    - name: router
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                    - name: data
                      type: bytes
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                  outputs: []
                - type: function
                  name: getAdapterData
                  constant: false
                  anonymous: false
                  stateMutability: view
                  inputs:
                    - name: key
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                  outputs:
                    - name: ''
                      type: bytes
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                - type: function
                  name: getFeeWallet
                  constant: false
                  anonymous: false
                  stateMutability: view
                  inputs: []
                  outputs:
                    - name: ''
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                - type: function
                  name: isAdapterInitialized
                  constant: false
                  anonymous: false
                  stateMutability: view
                  inputs:
                    - name: key
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                  outputs:
                    - name: ''
                      type: bool
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bool
                - type: function
                  name: revokeRole
                  constant: false
                  anonymous: false
                  stateMutability: nonpayable
                  inputs:
                    - name: role
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                    - name: account
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                  outputs: []
                - type: function
                  name: ROUTER_ROLE
                  constant: false
                  anonymous: false
                  stateMutability: view
                  inputs: []
                  outputs:
                    - name: ''
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                - type: function
                  name: DEFAULT_ADMIN_ROLE
                  constant: false
                  anonymous: false
                  stateMutability: view
                  inputs: []
                  outputs:
                    - name: ''
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                - type: function
                  name: getTokenTransferProxy
                  constant: false
                  anonymous: false
                  stateMutability: view
                  inputs: []
                  outputs:
                    - name: ''
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                - type: function
                  name: renounceRole
                  constant: false
                  anonymous: false
                  stateMutability: nonpayable
                  inputs:
                    - name: role
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                    - name: account
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                  outputs: []
                - type: function
                  name: initializeAdapter
                  constant: false
                  anonymous: false
                  stateMutability: nonpayable
                  inputs:
                    - name: adapter
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                    - name: data
                      type: bytes
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                  outputs: []
                - type: function
                  name: getRoleMember
                  constant: false
                  anonymous: false
                  stateMutability: view
                  inputs:
                    - name: role
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                    - name: index
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                  outputs:
                    - name: ''
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                - type: function
                  name: grantRole
                  constant: false
                  anonymous: false
                  stateMutability: nonpayable
                  inputs:
                    - name: role
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                    - name: account
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                  outputs: []
                - type: function
                  name: registerPartner
                  constant: false
                  anonymous: false
                  stateMutability: nonpayable
                  inputs:
                    - name: partner
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                    - name: _partnerShare
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                    - name: _noPositiveSlippage
                      type: bool
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bool
                    - name: _positiveSlippageToUser
                      type: bool
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bool
                    - name: _feePercent
                      type: uint16
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                    - name: partnerId
                      type: string
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: string
                    - name: _data
                      type: bytes
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                  outputs: []
                - type: function
                  name: WHITELISTED_ROLE
                  constant: false
                  anonymous: false
                  stateMutability: view
                  inputs: []
                  outputs:
                    - name: ''
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                - type: function
                  name: isRouterInitialized
                  constant: false
                  anonymous: false
                  stateMutability: view
                  inputs:
                    - name: key
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                  outputs:
                    - name: ''
                      type: bool
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bool
                - type: function
                  name: getRoleMemberCount
                  constant: false
                  anonymous: false
                  stateMutability: view
                  inputs:
                    - name: role
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                  outputs:
                    - name: ''
                      type: uint256
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: uint
                - type: function
                  name: getPartnerFeeStructure
                  constant: false
                  anonymous: false
                  stateMutability: view
                  inputs:
                    - name: partner
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                  outputs:
                    - name: ''
                      type: tuple
                      storage_location: default
                      components:
                        - name: partnerShare
                          type: uint256
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: uint
                        - name: noPositiveSlippage
                          type: bool
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: bool
                        - name: positiveSlippageToUser
                          type: bool
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: bool
                        - name: feePercent
                          type: uint16
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: uint
                        - name: partnerId
                          type: string
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: string
                        - name: data
                          type: bytes
                          storage_location: default
                          offset: 0
                          index: >-
                            0x0000000000000000000000000000000000000000000000000000000000000000
                          indexed: false
                          simple_type:
                            type: bytes
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                - type: function
                  name: hasRole
                  constant: false
                  anonymous: false
                  stateMutability: view
                  inputs:
                    - name: role
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bytes
                    - name: account
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                  outputs:
                    - name: ''
                      type: bool
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: bool
                - type: function
                  name: setFeeWallet
                  constant: false
                  anonymous: false
                  stateMutability: nonpayable
                  inputs:
                    - name: _feeWallet
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: false
                      simple_type:
                        type: address
                  outputs: []
                - type: event
                  name: RouterInitialized
                  constant: false
                  anonymous: false
                  stateMutability: ''
                  inputs:
                    - name: router
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: true
                      simple_type:
                        type: address
                  outputs: null
                - type: event
                  name: AdapterInitialized
                  constant: false
                  anonymous: false
                  stateMutability: ''
                  inputs:
                    - name: adapter
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: true
                      simple_type:
                        type: address
                  outputs: null
                - type: event
                  name: RoleAdminChanged
                  constant: false
                  anonymous: false
                  stateMutability: ''
                  inputs:
                    - name: role
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: true
                      simple_type:
                        type: bytes
                    - name: previousAdminRole
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: true
                      simple_type:
                        type: bytes
                    - name: newAdminRole
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: true
                      simple_type:
                        type: bytes
                  outputs: null
                - type: event
                  name: RoleGranted
                  constant: false
                  anonymous: false
                  stateMutability: ''
                  inputs:
                    - name: role
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: true
                      simple_type:
                        type: bytes
                    - name: account
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: true
                      simple_type:
                        type: address
                    - name: sender
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: true
                      simple_type:
                        type: address
                  outputs: null
                - type: event
                  name: RoleRevoked
                  constant: false
                  anonymous: false
                  stateMutability: ''
                  inputs:
                    - name: role
                      type: bytes32
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: true
                      simple_type:
                        type: bytes
                    - name: account
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: true
                      simple_type:
                        type: address
                    - name: sender
                      type: address
                      storage_location: default
                      offset: 0
                      index: >-
                        0x0000000000000000000000000000000000000000000000000000000000000000
                      indexed: true
                      simple_type:
                        type: address
                  outputs: null
              raw_abi: null
            src_map:
              '0':
                r: '47102:5950:0'
                s: 47102
                l: 5950
                ln: 1467
                c: 1
                j: '-'
              '2':
                r: '47102:5950:0'
                s: 47102
                l: 5950
                ln: 1467
                c: 1
                j: '-'
            creation_block: 0
            creation_tx: ''
            creator_address: ''
            created_at: '2021-08-18T12:43:57Z'
            language: solidity
            in_project: false
        generated_access_list: []
    failed_tx_simulate_post_response:
      type: object
      title: Failed Transaction Simulation Response
      description: An object with details about transaction simulation with failed status.
      example:
        transaction:
          hash: '0x23f5cd88af5eb8b5b0b13d223d8f062b9d04ad682d503668e89be8aef29930e1'
          block_hash: ''
          block_number: 18827905
          from: '0xd8da6bf26964af9d7eed9e03e53415d37aa96045'
          gas: 617885
          gas_price: 87235100681
          gas_fee_cap: 0
          gas_tip_cap: 0
          cumulative_gas_used: 0
          gas_used: 389024
          effective_gas_price: 0
          input: >-
            0xa94e78ef0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000eaa63125dd63f10874f99cdbbb18410e7fc79dd300000000000000000000000000000000000000000004f68ca6d8cd91c6000000000000000000000000000000000000000000000000000000000000036e22623300000000000000000000000000000000000000000000000000000003728c0b380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000076000000000000000000000000000000000000000000000000000000000658357363e8a57981b0747b79f70262f8257408600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000300000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000004000000000000000000000000f9234cb08edb93c0d4a4d4c70cc3ffd070e78e07000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001000000000000000000004de5672fefac7f6e3017d9a2f1c14fe048191a24ce14000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000658c3d55000000000000000000000000000000000000000000000000000000000000002bc02aaa39b223fe8d0a0e5c4f27ead9083c756cc20001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
          nonce: 1176
          to: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
          index: 222
          value: 0x
          access_list: []
          status: false
          addresses: null
          contract_ids: null
          network_id: '1'
          timestamp: '2023-12-20T15:06:23Z'
          function_selector: ''
          l1_block_number: 0
          l1_timestamp: 0
          deposit_tx: false
          system_tx: false
          sig:
            v: '0x0'
            r: '0x0'
            s: '0x0'
          transaction_info:
            contract_id: eth:1:0xdef171fe48cf0115b1d80b88dc8eab59176fee57
            block_number: 18827905
            transaction_id: '0x23f5cd88af5eb8b5b0b13d223d8f062b9d04ad682d503668e89be8aef29930e1'
            contract_address: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
            method: fallback
            parameters: null
            intrinsic_gas: 32568
            refund_gas: 0
            call_trace:
              hash: >-
                0x23f5cd88af5eb8b5b0b13d223d8f062b9d04ad682d503668e89be8aef29930e1
              contract_name: AugustusSwapper
              function_name: fallback
              function_pc: 100
              function_op: JUMPDEST
              function_file_index: 0
              function_code_start: 47102
              function_line_number: 1467
              function_code_length: 5950
              function_variables:
                - soltype:
                    name: implementation
                    type: address
                    storage_location: default
                    offset: 0
                    index: >-
                      0x0000000000000000000000000000000000000000000000000000000000000000
                    indexed: false
                    simple_type:
                      type: address
                  value: '0x0000000000000000000000000000000000000000'
                - soltype:
                    name: success
                    type: bool
                    storage_location: default
                    offset: 0
                    index: >-
                      0x0000000000000000000000000000000000000000000000000000000000000000
                    indexed: false
                    simple_type:
                      type: bool
                  value: false
                - soltype:
                    name: resultData
                    type: bytes
                    storage_location: memory
                    offset: 0
                    index: >-
                      0x0000000000000000000000000000000000000000000000000000000000000000
                    indexed: false
                    simple_type:
                      type: bytes
                  value: 0x
                - soltype:
                    name: selector
                    type: bytes4
                    storage_location: default
                    offset: 0
                    index: >-
                      0x0000000000000000000000000000000000000000000000000000000000000000
                    indexed: false
                    simple_type:
                      type: bytes
                  value: '0x00000000'
              absolute_position: 28
              caller_pc: 0
              caller_op: CALL
              call_type: CALL
              address: '0xd8da6bf26964af9d7eed9e03e53415d37aa96045'
              from: '0xd8da6bf26964af9d7eed9e03e53415d37aa96045'
              from_balance: '103262894721457707739'
              to: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
              to_balance: '0'
              value: '0'
              caller:
                address: '0xd8da6bf26964af9d7eed9e03e53415d37aa96045'
                balance: '103208993461273428054'
              block_timestamp: '0001-01-01T00:00:00Z'
              gas: 585317
              gas_used: 356456
              intrinsic_gas: 32568
              storage_address: '0xd8da6bf26964af9d7eed9e03e53415d37aa96045'
              input: >-
                0xa94e78ef0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000eaa63125dd63f10874f99cdbbb18410e7fc79dd300000000000000000000000000000000000000000004f68ca6d8cd91c6000000000000000000000000000000000000000000000000000000000000036e22623300000000000000000000000000000000000000000000000000000003728c0b380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000076000000000000000000000000000000000000000000000000000000000658357363e8a57981b0747b79f70262f8257408600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000300000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000004000000000000000000000000f9234cb08edb93c0d4a4d4c70cc3ffd070e78e07000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001000000000000000000004de5672fefac7f6e3017d9a2f1c14fe048191a24ce14000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000658c3d55000000000000000000000000000000000000000000000000000000000000002bc02aaa39b223fe8d0a0e5c4f27ead9083c756cc20001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
              balance_diff:
                - address: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'
                  original: '103262894721457707739'
                  dirty: '103228958173650382395'
                  is_miner: false
                - address: '0x95222290DD7278Aa3Ddd389Cc1E1d165CC4BAfe5'
                  original: '14715718269524994540'
                  dirty: '14715757171924994540'
                  is_miner: true
              nonce_diff:
                - address: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'
                  original: '1176'
                  dirty: '1177'
              output: 0x
              decoded_output: null
              error_hex_data: >-
                0x08c379a000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000030526563656976656420616d6f756e74206f6620746f6b656e7320617265206c657373207468656e20657870656374656400000000000000000000000000000000
              network_id: '1'
              calls:
                - hash: ''
                  contract_name: AugustusSwapper
                  function_name: getImplementation
                  function_pc: 1627
                  function_op: JUMPDEST
                  function_file_index: 0
                  function_code_start: 49421
                  function_line_number: 1539
                  function_code_length: 123
                  absolute_position: 59
                  caller_pc: 467
                  caller_op: JUMP
                  caller_file_index: 0
                  caller_line_number: 1497
                  caller_code_start: 48052
                  caller_code_length: 27
                  call_type: JUMPDEST
                  address: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
                  from: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
                  from_balance: null
                  to: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
                  to_balance: null
                  value: null
                  caller:
                    address: '0xd8da6bf26964af9d7eed9e03e53415d37aa96045'
                    balance: '103208993461273428054'
                  block_timestamp: '0001-01-01T00:00:00Z'
                  gas: 585081
                  gas_used: 2202
                  storage_address: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
                  input: 0x
                  decoded_input:
                    - soltype:
                        name: selector
                        type: bytes4
                        storage_location: default
                        offset: 0
                        index: >-
                          0x0000000000000000000000000000000000000000000000000000000000000000
                        indexed: false
                        simple_type:
                          type: bytes
                      value: '0xa94e78ef'
                  output: 0x
                  decoded_output:
                    - soltype:
                        name: ''
                        type: address
                        storage_location: default
                        offset: 0
                        index: >-
                          0x0000000000000000000000000000000000000000000000000000000000000000
                        indexed: false
                        simple_type:
                          type: address
                      value: '0xbd7b550d2e7571383d84acf597a00d341e5c406e'
                  network_id: ''
                  calls: null
            stack_trace:
              - file_index: 0
                contract: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
                name: AugustusSwapper
                line: 1641
                error: execution reverted
                code: _revertWithData
                op: REVERT
                length: 34
              - file_index: 0
                contract: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
                name: AugustusSwapper
                line: 1510
                error: null
                code: _revertWithData
                op: JUMP
                length: 27
              - file_index: 0
                contract: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
                name: AugustusSwapper
                line: 1467
                error: null
                code: fallback
                op: JUMPDEST
                length: 5950
            logs: null
            balance_diff:
              - address: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'
                original: '103262894721457707739'
                dirty: '103228958173650382395'
                is_miner: false
              - address: '0x95222290DD7278Aa3Ddd389Cc1E1d165CC4BAfe5'
                original: '14715718269524994540'
                dirty: '14715757171924994540'
                is_miner: true
            nonce_diff:
              - address: '0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'
                original: '1176'
                dirty: '1177'
            state_diff: null
            raw_state_diff: null
            console_logs: null
            asset_changes: null
            balance_changes: null
            created_at: '2023-12-20T15:06:23Z'
          error_message: Received amount of tokens are less then expected
          error_info:
            error_message: Received amount of tokens are less then expected
            address: '0xbd7b550d2e7571383d84acf597a00d341e5c406e'
          method: ''
          decoded_input: null
          call_trace:
            - call_type: CALL
              from: '0xd8da6bf26964af9d7eed9e03e53415d37aa96045'
              to: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
              gas: 585317
              gas_used: 356456
              address: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
              error: value:"execution reverted"
              subtraces: 1
              input: >-
                0xa94e78ef0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000eaa63125dd63f10874f99cdbbb18410e7fc79dd300000000000000000000000000000000000000000004f68ca6d8cd91c6000000000000000000000000000000000000000000000000000000000000036e22623300000000000000000000000000000000000000000000000000000003728c0b380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000076000000000000000000000000000000000000000000000000000000000658357363e8a57981b0747b79f70262f8257408600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000300000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000004000000000000000000000000f9234cb08edb93c0d4a4d4c70cc3ffd070e78e07000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001000000000000000000004de5672fefac7f6e3017d9a2f1c14fe048191a24ce14000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000658c3d55000000000000000000000000000000000000000000000000000000000000002bc02aaa39b223fe8d0a0e5c4f27ead9083c756cc20001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
              output: >-
                0x08c379a000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000030526563656976656420616d6f756e74206f6620746f6b656e7320617265206c657373207468656e20657870656374656400000000000000000000000000000000
              errorMessage: value:"Received amount of tokens are less then expected"
              fromBalance: '0x05990f7fa38f0bdadb'
            - call_type: DELEGATECALL
              from: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
              to: '0xbd7b550d2e7571383d84acf597a00d341e5c406e'
              gas: 570683
              gas_used: 350693
              address: '0xbd7b550d2e7571383d84acf597a00d341e5c406e'
              error: value:"execution reverted"
              subtraces: 6
              trace_address:
                - 0
              input: >-
                0xa94e78ef0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000eaa63125dd63f10874f99cdbbb18410e7fc79dd300000000000000000000000000000000000000000004f68ca6d8cd91c6000000000000000000000000000000000000000000000000000000000000036e22623300000000000000000000000000000000000000000000000000000003728c0b380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000076000000000000000000000000000000000000000000000000000000000658357363e8a57981b0747b79f70262f8257408600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000300000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000004000000000000000000000000f9234cb08edb93c0d4a4d4c70cc3ffd070e78e07000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001000000000000000000004de5672fefac7f6e3017d9a2f1c14fe048191a24ce14000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000658c3d55000000000000000000000000000000000000000000000000000000000000002bc02aaa39b223fe8d0a0e5c4f27ead9083c756cc20001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
              output: >-
                0x08c379a000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000030526563656976656420616d6f756e74206f6620746f6b656e7320617265206c657373207468656e20657870656374656400000000000000000000000000000000
              gas_in: 582341
              gas_cost: 573283
              errorMessage: value:"Received amount of tokens are less then expected"
            - call_type: CALL
              from: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
              to: '0x216b4b4ba9f3e719726886d34a177484278bfcae'
              gas: 549988
              gas_used: 82617
              address: '0x216b4b4ba9f3e719726886d34a177484278bfcae'
              subtraces: 1
              trace_address:
                - 0
                - 0
              input: >-
                0x15dacbea000000000000000000000000eaa63125dd63f10874f99cdbbb18410e7fc79dd3000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045000000000000000000000000def171fe48cf0115b1d80b88dc8eab59176fee5700000000000000000000000000000000000000000004f68ca6d8cd91c6000000
              gas_in: 558817
              gas_cost: 550088
            - call_type: CALL
              from: '0x216b4b4ba9f3e719726886d34a177484278bfcae'
              to: '0xeaa63125dd63f10874f99cdbbb18410e7fc79dd3'
              gas: 535110
              gas_used: 75732
              address: '0xeaa63125dd63f10874f99cdbbb18410e7fc79dd3'
              trace_address:
                - 0
                - 0
                - 0
              input: >-
                0x23b872dd000000000000000000000000d8da6bf26964af9d7eed9e03e53415d37aa96045000000000000000000000000def171fe48cf0115b1d80b88dc8eab59176fee5700000000000000000000000000000000000000000004f68ca6d8cd91c6000000
              output: >-
                0x0000000000000000000000000000000000000000000000000000000000000001
              gas_in: 543703
              gas_cost: 535210
            - call_type: STATICCALL
              from: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
              to: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
              gas: 467576
              gas_used: 2849
              address: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
              trace_address:
                - 0
                - 1
              input: >-
                0x91d148548429d542926e6695b59ac6fbdcd9b37e8b1aeb757afab06ab60b1bb5878c3b490000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73
              output: >-
                0x0000000000000000000000000000000000000000000000000000000000000001
              gas_in: 475097
              gas_cost: 467676
            - call_type: DELEGATECALL
              from: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
              to: '0x9be264469ef954c139da4a45cf76cbcc5e3a6a73'
              gas: 458922
              gas_used: 98268
              address: '0x9be264469ef954c139da4a45cf76cbcc5e3a6a73'
              subtraces: 4
              trace_address:
                - 0
                - 2
              input: >-
                0xe76b146c000000000000000000000000eaa63125dd63f10874f99cdbbb18410e7fc79dd3000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00000000000000000000000000000000000000000004f68ca6d8cd91c6000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000004000000000000000000000000f9234cb08edb93c0d4a4d4c70cc3ffd070e78e07000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001000000000000000000004de5672fefac7f6e3017d9a2f1c14fe048191a24ce14
              gas_in: 468806
              gas_cost: 461522
            - call_type: CALL
              from: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
              to: '0xeaa63125dd63f10874f99cdbbb18410e7fc79dd3'
              gas: 447929
              gas_used: 22912
              address: '0xeaa63125dd63f10874f99cdbbb18410e7fc79dd3'
              trace_address:
                - 0
                - 2
                - 0
              input: >-
                0xa9059cbb000000000000000000000000672fefac7f6e3017d9a2f1c14fe048191a24ce1400000000000000000000000000000000000000000004f68ca6d8cd91c6000000
              output: >-
                0x0000000000000000000000000000000000000000000000000000000000000001
              gas_in: 455138
              gas_cost: 448029
            - call_type: STATICCALL
              from: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
              to: '0x672fefac7f6e3017d9a2f1c14fe048191a24ce14'
              gas: 422118
              gas_used: 2504
              address: '0x672fefac7f6e3017d9a2f1c14fe048191a24ce14'
              trace_address:
                - 0
                - 2
                - 1
              input: '0x0902f1ac'
              output: >-
                0x0000000000000000000000000000000000000000000000039906a60cd3555a0a0000000000000000000000000000000000000000002dccf57fa336092011410700000000000000000000000000000000000000000000000000000000658302ef
              gas_in: 428924
              gas_cost: 422224
            - call_type: CALL
              from: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
              to: '0x672fefac7f6e3017d9a2f1c14fe048191a24ce14'
              gas: 418401
              gas_used: 54571
              address: '0x672fefac7f6e3017d9a2f1c14fe048191a24ce14'
              subtraces: 3
              trace_address:
                - 0
                - 2
                - 2
              input: >-
                0x022c0d9f00000000000000000000000000000000000000000000000059cdaada173a1a770000000000000000000000000000000000000000000000000000000000000000000000000000000000000000def171fe48cf0115b1d80b88dc8eab59176fee5700000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000000
              gas_in: 425142
              gas_cost: 418501
            - call_type: CALL
              from: '0x672fefac7f6e3017d9a2f1c14fe048191a24ce14'
              to: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'
              gas: 398698
              gas_used: 29962
              address: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'
              trace_address:
                - 0
                - 2
                - 2
                - 0
              input: >-
                0xa9059cbb000000000000000000000000def171fe48cf0115b1d80b88dc8eab59176fee5700000000000000000000000000000000000000000000000059cdaada173a1a77
              output: >-
                0x0000000000000000000000000000000000000000000000000000000000000001
              gas_in: 407626
              gas_cost: 401298
              toBalance: '0x02c1c138082a8397d10036'
            - call_type: STATICCALL
              from: '0x672fefac7f6e3017d9a2f1c14fe048191a24ce14'
              to: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'
              gas: 368583
              gas_used: 534
              address: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'
              trace_address:
                - 0
                - 2
                - 2
                - 1
              input: >-
                0x70a08231000000000000000000000000672fefac7f6e3017d9a2f1c14fe048191a24ce14
              output: >-
                0x0000000000000000000000000000000000000000000000033f38fb32bc1b3f93
              gas_in: 374533
              gas_cost: 368683
              toBalance: '0x02c1c138082a8397d10036'
            - call_type: STATICCALL
              from: '0x672fefac7f6e3017d9a2f1c14fe048191a24ce14'
              to: '0xeaa63125dd63f10874f99cdbbb18410e7fc79dd3'
              gas: 367652
              gas_used: 668
              address: '0xeaa63125dd63f10874f99cdbbb18410e7fc79dd3'
              trace_address:
                - 0
                - 2
                - 2
                - 2
              input: >-
                0x70a08231000000000000000000000000672fefac7f6e3017d9a2f1c14fe048191a24ce14
              output: >-
                0x00000000000000000000000000000000000000000032c382267c039ae6114107
              gas_in: 373587
              gas_cost: 367752
            - call_type: CALL
              from: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
              to: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'
              gas: 364229
              gas_used: 9195
              address: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'
              subtraces: 1
              trace_address:
                - 0
                - 2
                - 3
              input: >-
                0x2e1a7d4d00000000000000000000000000000000000000000000000059cdaada173a1a77
              gas_in: 370110
              gas_cost: 364329
              toBalance: '0x02c1c138082a8397d10036'
            - call_type: CALL
              from: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'
              to: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
              gas: 2300
              gas_used: 55
              value: '0x59cdaada173a1a77'
              address: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
              trace_address:
                - 0
                - 2
                - 3
                - 0
              gas_in: 363378
              gas_cost: 9100
              fromBalance: '0x02c1c138082a8397d10036'
            - call_type: STATICCALL
              from: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
              to: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
              gas: 360871
              gas_used: 849
              address: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
              trace_address:
                - 0
                - 3
              input: >-
                0x91d148548429d542926e6695b59ac6fbdcd9b37e8b1aeb757afab06ab60b1bb5878c3b490000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73
              output: >-
                0x0000000000000000000000000000000000000000000000000000000000000001
              gas_in: 366699
              gas_cost: 360971
              fromBalance: '0x59cdaada173a1a77'
              toBalance: '0x59cdaada173a1a77'
            - call_type: DELEGATECALL
              from: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
              to: '0x9be264469ef954c139da4a45cf76cbcc5e3a6a73'
              gas: 356455
              gas_used: 139781
              address: '0x9be264469ef954c139da4a45cf76cbcc5e3a6a73'
              subtraces: 3
              trace_address:
                - 0
                - 4
              input: >-
                0xe76b146c000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000059cdaada173a1a77000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000658c3d55000000000000000000000000000000000000000000000000000000000000002bc02aaa39b223fe8d0a0e5c4f27ead9083c756cc20001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000
              gas_in: 362213
              gas_cost: 356555
              fromBalance: '0x59cdaada173a1a77'
            - call_type: CALL
              from: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
              to: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'
              gas: 340379
              gas_used: 21974
              value: '0x59cdaada173a1a77'
              address: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'
              trace_address:
                - 0
                - 4
                - 0
              input: '0xd0e30db0'
              gas_in: 352545
              gas_cost: 347179
              fromBalance: '0x59cdaada173a1a77'
              toBalance: '0x02c1c0de3a7fa98096e5bf'
            - call_type: STATICCALL
              from: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
              to: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'
              gas: 318240
              gas_used: 2717
              address: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'
              trace_address:
                - 0
                - 4
                - 1
              input: >-
                0xdd62ed3e000000000000000000000000def171fe48cf0115b1d80b88dc8eab59176fee57000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564
              output: >-
                0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
              gas_in: 323391
              gas_cost: 318340
              toBalance: '0x02c1c138082a8397d10036'
            - call_type: CALL
              from: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
              to: '0xe592427a0aece92de3edee1f18e0157c05861564'
              gas: 311926
              gas_used: 99869
              address: '0xe592427a0aece92de3edee1f18e0157c05861564'
              subtraces: 1
              trace_address:
                - 0
                - 4
                - 2
              input: >-
                0xc04b8d59000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000def171fe48cf0115b1d80b88dc8eab59176fee5700000000000000000000000000000000000000000000000000000000658c3d5500000000000000000000000000000000000000000000000059cdaada173a1a770000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002bc02aaa39b223fe8d0a0e5c4f27ead9083c756cc20001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000
              output: >-
                0x0000000000000000000000000000000000000000000000000000000360ddb566
              gas_in: 316977
              gas_cost: 312026
            - call_type: CALL
              from: '0xe592427a0aece92de3edee1f18e0157c05861564'
              to: '0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640'
              gas: 299736
              gas_used: 91971
              address: '0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640'
              subtraces: 4
              trace_address:
                - 0
                - 4
                - 2
                - 0
              input: >-
                0x128acb08000000000000000000000000def171fe48cf0115b1d80b88dc8eab59176fee57000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000059cdaada173a1a77000000000000000000000000fffd8963efd1fc6a506488495d951d5263988d2500000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000040000000000000000000000000def171fe48cf0115b1d80b88dc8eab59176fee57000000000000000000000000000000000000000000000000000000000000002bc02aaa39b223fe8d0a0e5c4f27ead9083c756cc20001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000
              output: >-
                0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffc9f224a9a00000000000000000000000000000000000000000000000059cdaada173a1a77
              gas_in: 304593
              gas_cost: 299836
            - call_type: CALL
              from: '0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640'
              to: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'
              gas: 266962
              gas_used: 44017
              address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'
              subtraces: 1
              trace_address:
                - 0
                - 4
                - 2
                - 0
                - 0
              input: >-
                0xa9059cbb000000000000000000000000def171fe48cf0115b1d80b88dc8eab59176fee570000000000000000000000000000000000000000000000000000000360ddb566
              output: >-
                0x0000000000000000000000000000000000000000000000000000000000000001
              gas_in: 273799
              gas_cost: 269562
            - call_type: DELEGATECALL
              from: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'
              to: '0xa2327a938febf5fec13bacfb16ae10ecbc4cbdcf'
              gas: 255659
              gas_used: 36728
              address: '0xa2327a938febf5fec13bacfb16ae10ecbc4cbdcf'
              trace_address:
                - 0
                - 4
                - 2
                - 0
                - 0
                - 0
              input: >-
                0xa9059cbb000000000000000000000000def171fe48cf0115b1d80b88dc8eab59176fee570000000000000000000000000000000000000000000000000000000360ddb566
              output: >-
                0x0000000000000000000000000000000000000000000000000000000000000001
              gas_in: 262317
              gas_cost: 258259
            - call_type: STATICCALL
              from: '0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640'
              to: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'
              gas: 222763
              gas_used: 2534
              address: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'
              trace_address:
                - 0
                - 4
                - 2
                - 0
                - 1
              input: >-
                0x70a0823100000000000000000000000088e6a0c2ddd26feeb64f039a2c41296fcb3f5640
              output: >-
                0x0000000000000000000000000000000000000000000003650dbbc03c4fa5f989
              gas_in: 226398
              gas_cost: 222863
              toBalance: '0x02c1c138082a8397d10036'
            - call_type: CALL
              from: '0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640'
              to: '0xe592427a0aece92de3edee1f18e0157c05861564'
              gas: 219479
              gas_used: 10327
              address: '0xe592427a0aece92de3edee1f18e0157c05861564'
              subtraces: 1
              trace_address:
                - 0
                - 4
                - 2
                - 0
                - 2
              input: >-
                0xfa461e33fffffffffffffffffffffffffffffffffffffffffffffffffffffffc9f224a9a00000000000000000000000000000000000000000000000059cdaada173a1a77000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000040000000000000000000000000def171fe48cf0115b1d80b88dc8eab59176fee57000000000000000000000000000000000000000000000000000000000000002bc02aaa39b223fe8d0a0e5c4f27ead9083c756cc20001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000
              gas_in: 223062
              gas_cost: 219579
            - call_type: CALL
              from: '0xe592427a0aece92de3edee1f18e0157c05861564'
              to: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'
              gas: 212328
              gas_used: 6225
              address: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'
              trace_address:
                - 0
                - 4
                - 2
                - 0
                - 2
                - 0
              input: >-
                0x23b872dd000000000000000000000000def171fe48cf0115b1d80b88dc8eab59176fee5700000000000000000000000088e6a0c2ddd26feeb64f039a2c41296fcb3f564000000000000000000000000000000000000000000000000059cdaada173a1a77
              output: >-
                0x0000000000000000000000000000000000000000000000000000000000000001
              gas_in: 215798
              gas_cost: 212428
              toBalance: '0x02c1c138082a8397d10036'
            - call_type: STATICCALL
              from: '0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640'
              to: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'
              gas: 208681
              gas_used: 534
              address: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'
              trace_address:
                - 0
                - 4
                - 2
                - 0
                - 3
              input: >-
                0x70a0823100000000000000000000000088e6a0c2ddd26feeb64f039a2c41296fcb3f5640
              output: >-
                0x00000000000000000000000000000000000000000000036567896b1666e01400
              gas_in: 212093
              gas_cost: 208781
              toBalance: '0x02c1c138082a8397d10036'
            - call_type: STATICCALL
              from: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
              to: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'
              gas: 218190
              gas_used: 1315
              address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'
              subtraces: 1
              trace_address:
                - 0
                - 5
              input: >-
                0x70a08231000000000000000000000000def171fe48cf0115b1d80b88dc8eab59176fee57
              output: >-
                0x0000000000000000000000000000000000000000000000000000000360ddb566
              gas_in: 221753
              gas_cost: 218290
            - call_type: DELEGATECALL
              from: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'
              to: '0xa2327a938febf5fec13bacfb16ae10ecbc4cbdcf'
              gas: 214051
              gas_used: 529
              address: '0xa2327a938febf5fec13bacfb16ae10ecbc4cbdcf'
              trace_address:
                - 0
                - 5
                - 0
              input: >-
                0x70a08231000000000000000000000000def171fe48cf0115b1d80b88dc8eab59176fee57
              output: >-
                0x0000000000000000000000000000000000000000000000000000000360ddb566
              gas_in: 217548
              gas_cost: 214151
        simulation:
          id: 40e1608b-807c-424e-a618-684462c975b5
          project_id: dfdc391a-a15d-4590-9aef-8691259c7df4
          owner_id: 7d5e8b1f-8bf8-4eae-a70f-fb7d354b1cc2
          network_id: '1'
          block_number: 18827905
          transaction_index: 222
          from: '0xd8da6bf26964af9d7eed9e03e53415d37aa96045'
          to: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
          input: >-
            0xa94e78ef0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000eaa63125dd63f10874f99cdbbb18410e7fc79dd300000000000000000000000000000000000000000004f68ca6d8cd91c6000000000000000000000000000000000000000000000000000000000000036e22623300000000000000000000000000000000000000000000000000000003728c0b380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000076000000000000000000000000000000000000000000000000000000000658357363e8a57981b0747b79f70262f8257408600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000300000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000004000000000000000000000000f9234cb08edb93c0d4a4d4c70cc3ffd070e78e07000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001000000000000000000004de5672fefac7f6e3017d9a2f1c14fe048191a24ce14000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000658c3d55000000000000000000000000000000000000000000000000000000000000002bc02aaa39b223fe8d0a0e5c4f27ead9083c756cc20001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
          gas: 617885
          gas_price: '87235100681'
          gas_used: 389024
          value: '0'
          status: false
          access_list: null
          queue_origin: ''
          block_header:
            number: '0x11f4a81'
            hash: '0x0000000000000000000000000000000000000000000000000000000000000000'
            stateRoot: '0x82f76ac995d4f0254f8bad7647437ff7de6d6cda60db508b1e7c67cf7400cf62'
            parentHash: '0xa8e1a14f1a05d7239a9152f31ed1b8edb96da15e4f79c4aa2db81cb8ffd47f5e'
            sha3Uncles: '0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347'
            transactionsRoot: '0xb663a12dc9d08b199a290b00fa3ede0c2645e398aaff78e37489d9fb32b9cbfa'
            receiptsRoot: '0x9cd03d4f988ff28f0c32e9af4c8096a88c2613db1f254d37f3ab1d1d93c99170'
            logsBloom: >-
              0x11a9da33d1239f4d15cc82b1eba1932195b04b9fbc6327d568b912aa6522cf3a0a301dbe6facc8ed54169f71e0f457d24f89d305c8427ba1aa92f8efea2a790023e0c90842100ab9f8fbc2793358fbfbbccf901d87404ad7c9c84c55bf3c99501d25f52d5322008f6896d290f0233d41e900a0b988f0a6025613bcf28549613a8613c75c962594025449bc4d990256e6e2004891aba142f86c218ccf487da009e6c711cd61db23dc1a305bcc91bb1d0b3668b09290566a0b2ff219a6933eb7e04be6111e80b4694c2230da63540bdc5c38baa31b086dcd1827adf0826468e4e75ff4b851ab7904ecc177d2cc98059ca4cf099d18f9b073dc9c01ca01f865554c
            timestamp: '0x658302ef'
            difficulty: '0x0'
            gasLimit: '0x1c9c380'
            gasUsed: '0x125a374'
            miner: '0x95222290dd7278aa3ddd389cc1e1d165cc4bafe5'
            extraData: '0x6265617665726275696c642e6f7267'
            mixHash: '0xb2cf03d01c18f6e0e14628a9649d55365ff945d4adbfad5c57432c151fa46063'
            nonce: '0x0000000000000000'
            baseFeePerGas: '0x1449a81f09'
            size: '0x0'
            totalDifficulty: '0x0'
            uncles: null
            transactions: null
          deposit_tx: false
          system_tx: false
          error_message: Received amount of tokens are less then expected
          nonce: 1176
          addresses: null
          contract_ids: null
          shared: false
          created_at: '2023-12-20T15:46:48.528829888Z'
        contracts: []
        generated_access_list:
          - address: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'
            storage_keys:
              - >-
                0xb1151b5f51c370d607b59e0034392dd388ea4cc8dded24ec75baf3df36983150
              - >-
                0xbe18050818615a061863c3528093c86c314aa924f93925c36fd5be45a42ec3ca
              - >-
                0x32aca9af4675729722d4aa9c0891f56dba63fc1b85f41bc291f7e7fd52335a62
              - >-
                0x54d8befa8763f7dbdb291e2d3a40534fbb7766679bf2edd78c87665633d4a77c
              - >-
                0x5cfa01b9a733d8746bc28fdd3f8992b7dd3bb6d323fe96a760fbd1b87ca3a2bd
              - >-
                0x05e950c03214daf5e318e3c0401e87e5c3b14177b9a9993d2e5f6176bb0f752a
              - >-
                0x831165dcd27d078878e07da4a03a9856a5144916b8c7e91719a90cdaa1551021
              - >-
                0xc939a6539eb45ae49d1805bceb816e1cb41fa7824b76cf22f1ef14dd4f91ad3f
              - >-
                0x870f2b14c3d588c98e6246b995bf23ee183ae1b236fd463aae6dbc6421fbdbbc
              - >-
                0x6044a56be1f9bd69fb6214cd8ea9cd066cc7cc6656efd85cf01591400cf3ea6e
              - >-
                0x75245230289a9f0bf73a6c59aef6651b98b3833a62a3c0bd9ab6b0dec8ed4d8f
              - >-
                0xfb19a963956c9cb662dd3ae48988c4b90766df71ea130109840abe0a1b23dba8
              - >-
                0xee61682ec263cf9ac626d5a9b0cd5e26edbfa98b5b368b540e65bd739c37e3b7
              - >-
                0xe2002f192e5b410f647b5a051088d89aa923122e1e0e59e25b32f63134f1a7bc
              - >-
                0xfb154a68a03230304e97d71be2bff62775b1c694c3204db71be5805200a1cab6
              - >-
                0x8d629cb47d08e89353adb6c7692b952b309de6af172d6a1081aad5fa72045c48
              - >-
                0x54763e8343071cde9ef08d1f32bda16c77eb2c0bf9439d9a006a24afb62f1d26
              - >-
                0x6e11b2ad3f4a126fa523dbca759473ee7a6cebd4efb81c3015eabee05d9bea1f
              - >-
                0x390f6178407c9b8e95802b8659e6df8e34c1e3d4f8d6a49e6132bbcdd937b63a
              - >-
                0x2a306d7595987ab10375e6e054d7489cc80c1cf5351587e21ffbd126573f06c6
              - >-
                0x86f9b3c93134ec3dc29a864a165f3be052694aab7a9557bf4f01adfeb84e5bc6
              - >-
                0x3c679e5fc421e825187f885e3dcd7f4493f886ceeb4930450588e35818a32b9c
              - >-
                0x9951e5c97f68238701a07028be91c5ba29bde0c65662546c454bab615c93f76a
              - >-
                0xdb5ad80047612bad580468d7c2521a02bc637474d1c0e25fb17578bb79939703
              - >-
                0x732054380c06f66b946fe3c55339b1fc707995878c89c46f3c874fa55acf3188
              - >-
                0x665ae534dc370e0455cfbd96007688eb3036c0098287ebb3828064cca2ac03b3
              - >-
                0xe03178286da22a27dd0b1f68fb538cd07bc9080172ee9a5a2238416fe86db02a
              - >-
                0x8761b7b1c0c7c85b3cee06295ae28773ba07212f72db3573807feed93af88995
              - >-
                0x16b0131cb8f09e3874089fadbc97a82dc91da2d57ee2fea4aa6163621926b5e3
              - >-
                0x73d637d229721ca538a0a2e9712eeef46a1889496c0a60f402b430eba28d4a2e
              - >-
                0xa7cfd2f04a8f6fb8c2619836a0cb0f31862033c39e547a17dbd12927913b7f3c
              - >-
                0xe687156f27314703a0601ce95cc5ef568cfe2dd188161c7d31ca6f7c0a4c7f6a
              - >-
                0x2c30439ff7212c18beb0de2b700fd386af1ab6015fea22f0bd119a1c11b87409
              - >-
                0xb2940356fd89a84cf9a86227596a2f59f085c679d5f9450737d0ae4daf0efcea
              - >-
                0xc0bc9d145b50ee07fdd19f9cdc2d2b37d785313255a7c48acd3581dd12b96501
              - >-
                0x0078d452977d1507feddb433a637b414a79282ee8c10aa7e4415a11ae7f7cb56
              - >-
                0x00db2bcf95d8db29dfb6d1ab022e294b4d9a9ebb895e7ccc2e92a6967a5eeccf
              - >-
                0x6a4eff247b7329536ddf871ed3dd8d4d7d9d28d29ceac00d4f1f45bc6a92ef2c
              - >-
                0x070e1d9d82b774cc5b0ee75c4a3bbfd6290fb35c96578e62a94dc7fbce4ff7b6
              - >-
                0xb2df7d687ff5b2c4a86806e82fcadfcbaa72549cdcf6ff2a191c8c2f41bcb1c0
              - >-
                0x2d7b45d5edc30d9b211067de1328f28cc51cb18843f4a6997b639c5b3d1af263
              - >-
                0xb064600732a82908427d092d333e607598a6238a59aeb45e1288cb0bac7161cf
              - >-
                0xaf863274be5681dd15c28b07cc44ec05c35b85e20483f94c782d341146ca0a94
              - >-
                0x4de5a72cdf1ec035d1477beb522f9197e1ed5d4ec09de245abbd406ef3686969
              - >-
                0x6b1109c7e1669b7a23f286ed1bc8b52e9f75b714f0aecf873ed7076aaa6a7e6e
              - >-
                0x1d78d98fbcdfb1fadd8e557fa84e8d03f58d576bf2677cc7c749affcf9514574
          - address: '0x672fefac7f6e3017d9a2f1c14fe048191a24ce14'
            storage_keys:
              - >-
                0x000000000000000000000000000000000000000000000000000000000000000a
              - >-
                0x0000000000000000000000000000000000000000000000000000000000000008
              - >-
                0x000000000000000000000000000000000000000000000000000000000000000c
              - >-
                0x0000000000000000000000000000000000000000000000000000000000000006
              - >-
                0x0000000000000000000000000000000000000000000000000000000000000007
              - >-
                0x0000000000000000000000000000000000000000000000000000000000000009
          - address: '0xe592427a0aece92de3edee1f18e0157c05861564'
          - address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'
            storage_keys:
              - >-
                0x1f21a62c4538bacf2aabeca410f0fe63151869f172e03c0e00357ba26a341eff
              - >-
                0xc89b25fe56d1ba78215fcf3327a6ba9c04e4963cbaa4bfd347c247e77d807314
              - >-
                0xfc2b3bb9fb6dbb48a9a60809098a73aec4efe638cc2b58c4fbda54532973c2bb
              - >-
                0x357054dd6aced983d97589cdcefc7259f879f3a2f58a95e2a99bba999cf5fd95
              - >-
                0xa7e7c6de3403f57f907d83f4ff7270f1db6606646146303d47116d6832d36f47
              - >-
                0x77c2deb5f328a1e2eb3e71837bf8cfc680463a159d7ed5194e39a26f7cc27293
              - >-
                0x8d629cb47d08e89353adb6c7692b952b309de6af172d6a1081aad5fa72045c48
              - >-
                0x5dbdfe526b24413b741fda95642956927e1071c9712bb304d570acca6aa82ad8
              - >-
                0xd8a70910dac42f61fd9139c80d49d52eb3db70e5a7a933aa2ea91eddffa444ac
              - >-
                0xe17984586c3f0705a19840446a6b2442fa70d4fca86fc23104ed4ee7341e9505
              - >-
                0x2d7b45d5edc30d9b211067de1328f28cc51cb18843f4a6997b639c5b3d1af263
              - >-
                0x390f6178407c9b8e95802b8659e6df8e34c1e3d4f8d6a49e6132bbcdd937b63a
              - >-
                0x368c3f5f03e5634b3e4381c9c3caac98f4d254c7027fd14b53436c90d060fef4
              - >-
                0x774f8bee1e75a08564e658613b87af0ac1a8c58c49805f476ff68bb84d72bf3d
              - >-
                0x26088c33b17dbee5ad120162feb67ad27b625349cd988da3a205b5370f0261cc
              - >-
                0xe03178286da22a27dd0b1f68fb538cd07bc9080172ee9a5a2238416fe86db02a
              - >-
                0xaa6d28fb9bd0913347937584e1d68460c089efde517bb42f9634f62fe306a434
              - >-
                0x25fca3dc274c4a6deae80522371872a0d8e1723e8adc8199203ae89d3bfc003b
              - >-
                0x7050c9e0f4ca769c69bd3a8ef740bc37934f8e2c036e5a723fd8ee048ed3f8c3
              - >-
                0x0000000000000000000000000000000000000000000000000000000000000001
              - >-
                0x7ae84188dad39ac65698da6b247c2d7e504146b8fbe71a97d078fbb717de2d6b
              - >-
                0xe970dc6029598efe7359214a041b60ce7df98f3a5340cade99ec3de3ea290096
              - >-
                0x429d4eed491ec793d176b1cd2c9e12912f9df2c877000f2084223eef2d801813
              - >-
                0x4ac01ad812d5eac4698019823b7f6a507bc749124a4d82b1dd4c65e681cf7c39
              - >-
                0xc668e4251a8789d75fe978accafefb85df2369d3b3541b22a8e8dcf06f32bb44
              - >-
                0x05b89c245b6b535083b09c5e52e49a44e81461d5a18a19a89b5a5de8dda8a709
              - >-
                0x7b2a2744ef673caea5f128eecf6c743820aa7b8cbab5155e3ba12b1a8f246e57
              - >-
                0x53ef391d93f7b166cf8e993d7655d216cb7f5673c0bac9fb6f3a4189cb0678da
              - >-
                0x8dfed3551451e4271757cba3941504b230c6f0def7eab62749ab3ce56c79e548
              - >-
                0x792377d75044a0e29f2bef131c77c1e46cdf0f64a1af2cb09c30c83710503c8c
              - >-
                0xb374d549c4210ce4d86594fd6e5e972db66a2b8995be56e77460d52fbd255e5e
              - >-
                0x75245230289a9f0bf73a6c59aef6651b98b3833a62a3c0bd9ab6b0dec8ed4d8f
              - >-
                0xee8bdd3038743c4073e7014db500c60f6c2e74c21a27a3c557dac101d5591f2b
              - >-
                0x6544ff4ca800d8d3458621f2162d4458e540f8fd830f2460504bbd851a4b7231
              - >-
                0xebdca4826694e9af24ae34d77ef52095c010139ea12a6cb7b29a1faf7db70cc8
              - >-
                0xf56408d23e6790fec5453738cf042a4a3ef7ec36e9ceae8978e4ffce8e903bc3
              - >-
                0x10d6a54a4754c8869d6886b5f5d7fbfa5b4522237ea5c60d11bc4e7a1ff9390b
              - >-
                0x5cfa01b9a733d8746bc28fdd3f8992b7dd3bb6d323fe96a760fbd1b87ca3a2bd
              - >-
                0x8e8ba7d0240c502147869f7a9ae17aa9f683ea273c256f64b6fe2403de607113
          - address: '0xa2327a938febf5fec13bacfb16ae10ecbc4cbdcf'
          - address: '0xbd7b550d2e7571383d84acf597a00d341e5c406e'
          - address: '0x88e6a0c2ddd26feeb64f039a2c41296fcb3f5640'
            storage_keys:
              - >-
                0x2d485130b957a7beea5ecd7e231d54ac468418c35ee5abf54033cba1ed869152
              - >-
                0x3d8047c064ce35705a1bead4dd6881d3d5cc157824df6b418efa3253e3af380d
              - >-
                0x26a0a9b5111ffb12cc8d7c9db23c1e494c9c9eb45e0a50b9595b437445c55321
              - >-
                0x3a6e87e167fb8e9df6332ee0be1411937d2c803a8c4b7522abe0c16b731dbe11
              - >-
                0x3a6e87e167fb8e9df6332ee0be1411937d2c803a8c4b7522abe0c16b731dbe0f
              - >-
                0x0e5a64d6a0bdafae0f7b67cefe5663aca73ac5682a96d43e8501a2731e0d2587
              - >-
                0x00000000000000000000000000000000000000000000000000000000000001df
              - >-
                0x2d485130b957a7beea5ecd7e231d54ac468418c35ee5abf54033cba1ed869154
              - >-
                0x1988775e6c6f4b25d912ae5577f9b19952e8e16a59481301121feafa0d673092
              - >-
                0x3d8047c064ce35705a1bead4dd6881d3d5cc157824df6b418efa3253e3af380b
              - >-
                0x0000000000000000000000000000000000000000000000000000000000000002
              - >-
                0x26a0a9b5111ffb12cc8d7c9db23c1e494c9c9eb45e0a50b9595b437445c55320
              - >-
                0x3d8047c064ce35705a1bead4dd6881d3d5cc157824df6b418efa3253e3af380c
              - >-
                0x3d8047c064ce35705a1bead4dd6881d3d5cc157824df6b418efa3253e3af380a
              - >-
                0xd5ec2cdba30098a7becae9abe9ca3bfbc32195ee222c3aa0cf0f78089743d55b
              - >-
                0x4599bbaa72a0f54af58cb2739cf429f4c2b98d872f82d2ddc59ada0987fe7789
              - >-
                0x2d485130b957a7beea5ecd7e231d54ac468418c35ee5abf54033cba1ed869155
              - >-
                0x0000000000000000000000000000000000000000000000000000000000000000
              - >-
                0xd5ec2cdba30098a7becae9abe9ca3bfbc32195ee222c3aa0cf0f78089743d55a
              - >-
                0x0e5a64d6a0bdafae0f7b67cefe5663aca73ac5682a96d43e8501a2731e0d2585
              - >-
                0x3a6e87e167fb8e9df6332ee0be1411937d2c803a8c4b7522abe0c16b731dbe0e
              - >-
                0x3a6e87e167fb8e9df6332ee0be1411937d2c803a8c4b7522abe0c16b731dbe10
              - >-
                0xd5ec2cdba30098a7becae9abe9ca3bfbc32195ee222c3aa0cf0f78089743d55d
              - >-
                0x0000000000000000000000000000000000000000000000000000000000000001
              - >-
                0x2d485130b957a7beea5ecd7e231d54ac468418c35ee5abf54033cba1ed869153
              - >-
                0xd5ec2cdba30098a7becae9abe9ca3bfbc32195ee222c3aa0cf0f78089743d55c
              - >-
                0x0e5a64d6a0bdafae0f7b67cefe5663aca73ac5682a96d43e8501a2731e0d2586
              - >-
                0x4599bbaa72a0f54af58cb2739cf429f4c2b98d872f82d2ddc59ada0987fe7788
              - >-
                0x00000000000000000000000000000000000000000000000000000000000001e0
              - >-
                0x0000000000000000000000000000000000000000000000000000000000000004
              - >-
                0x26a0a9b5111ffb12cc8d7c9db23c1e494c9c9eb45e0a50b9595b437445c5531f
              - >-
                0x0e5a64d6a0bdafae0f7b67cefe5663aca73ac5682a96d43e8501a2731e0d2584
              - >-
                0x4599bbaa72a0f54af58cb2739cf429f4c2b98d872f82d2ddc59ada0987fe7786
              - >-
                0x4599bbaa72a0f54af58cb2739cf429f4c2b98d872f82d2ddc59ada0987fe7787
              - >-
                0x26a0a9b5111ffb12cc8d7c9db23c1e494c9c9eb45e0a50b9595b437445c55322
          - address: '0xeaa63125dd63f10874f99cdbbb18410e7fc79dd3'
            storage_keys:
              - >-
                0x45c2b503ea51a1d9b7423b06f35a3b115be95ee1c7447d31ce91bdec13a838df
              - >-
                0xe629a3873b2edc434149348402890d970a76d9a3ae4de8e57541156dab274d10
              - >-
                0x000000000000000000000000000000000000000000000000000000000000000f
              - >-
                0x54f5b59dc9b5bb49000ab23a9d0a924c5cdd1733e5bebeadcb8611814450120b
              - >-
                0x0000000000000000000000000000000000000000000000000000000000000008
              - >-
                0x08b50f8ab9aed2a88937ba19dd1c7f2fb0dd9c09b8cb8b916ab927bdaf4231ee
              - >-
                0x5b168827ab5e4aec7d219c0c08aec79965fc30b606d02d27fc6011b8d7b336de
              - >-
                0x000000000000000000000000000000000000000000000000000000000000001d
              - >-
                0x000000000000000000000000000000000000000000000000000000000000000a
              - >-
                0x0151402d6433238fc9a326da90804ebebdf85c662d744604ec6b0aa92c8ef988
              - >-
                0x48f3fa8c95ff087d8cbbc791160670b986d4ec1227f66c769ef7f1bbc33eb1f7
              - >-
                0x69ab7fecb0ec21e1cd2aaa23514e6680d52a78867ffe01666c529f702e81b5a5
              - >-
                0x0000000000000000000000000000000000000000000000000000000000000009
              - >-
                0x0000000000000000000000000000000000000000000000000000000000000010
              - >-
                0x2bfc01d3e1f55c0e56fdd7bc07c7b8dc1346e63f92436866e127d1fa813cda37
              - >-
                0x4c4f2af5d8ca665fef6669f93a750710b96e8bace756a7caec23a869c68a86ae
              - >-
                0x4ef7278799d815a37db20cddf79b831e505f85d81d0a3ac215d12383e521a80d
              - >-
                0x3267aa9ffce70d805c5444e039cbfc3299506e0d9c7bfa1d9c36a8e3b7f40070
              - >-
                0x2cc6ff61f76f3ba62d36d68440e2d4af25cd179eb727f6a48edcbddae9245ea2
              - >-
                0x9445ff856dd7851ed9e208f3989e5d3a69895d6cd337662f0ae3c8949e9a6588
              - >-
                0x000000000000000000000000000000000000000000000000000000000000000b
              - >-
                0x061a2a571a85ac39befae776e8435d42c1ef793c8e7d72a6798de91d433a9876
              - >-
                0x0000000000000000000000000000000000000000000000000000000000000005
              - >-
                0x325cb5e74a1216db82b6c181bb8c505d9fe31901515f0956d03b679ba48adf61
              - >-
                0x79f64b09067f0f20624b681c806e434d3135fbb0983aaba741c61ef1f3de2cd6
              - >-
                0x263cae475013f53a7607366cbbeba4f0fec9fc1528d4e60a19af45776e01745b
              - >-
                0x87f649784884298b2a1c91521736972cb4ea244eabcb419843687738f23be3c0
              - >-
                0x0000000000000000000000000000000000000000000000000000000000000014
              - >-
                0x7e46e59b0025c6296745e6f60a5f254ebb93191af16a086909f480f26fd33f6d
              - >-
                0x348d2e5830c20f07ed9302299bcb5cd5a4c9931e292bf42e5466f557d2db1cd0
              - >-
                0xfca351f4d96129454cfc8ef7930b638ac71fea35eb69ee3b8d959496beb04a33
          - address: '0x216b4b4ba9f3e719726886d34a177484278bfcae'
            storage_keys:
              - >-
                0x0000000000000000000000000000000000000000000000000000000000000000
          - address: '0x9be264469ef954c139da4a45cf76cbcc5e3a6a73'
    simulation-asset-changes:
      title: Simulate Transaction Response with Asset Changes (ERC20 Swap)
      description: >-
        An object with details about simulated transaction with asset changes
        with ERC20 Swap.
      type: object
      properties:
        asset_changes:
          title: asset_changes
          description: Asset changes for given simulated transaction.
          type: array
          items:
            type: object
            properties:
              type:
                title: type
                description: Can be Transfer, Mint, Burn.
                type: string
                enum:
                  - Transfer
                  - Mint
                  - Burn
                example: Transfer
              from:
                title: from
                description: Address of the sender (Empty for mint transfers).
                type: string
                example: '0x3fc91a3afd70395cd496c647d5a6cc9d4b2b7fad'
              to:
                title: to
                description: Address of the receiver (Empty for burn transfers).
                type: string
                example: '0xdfc14d2af169b0d36c4eff567ada9b2e0cae044f'
              amount:
                title: amount
                description: The amount of the token that was transferred.
                type: string
                example: '0.004'
              raw_amount:
                title: raw_amount
                description: Raw amount transfer for the token.
                type: string
                example: '4000000000000000'
              dollar_value:
                title: dollar_value
                description: Dollar value of the transferred token.
                type: string
                example: '6.7093999023437499996'
              token_info:
                title: token_info
                description: Token information.
                type: object
                properties:
                  standard:
                    title: standard
                    description: 'Supported token standards: ERC20, ERC721, NativeCurrency.'
                    type: string
                    enum:
                      - ERC20
                      - ERC721
                      - NativeCurrency
                    example: ERC20
                  type:
                    title: type
                    description: 'The token type: Native, Fungible, Non-Fungible.'
                    type: string
                    enum:
                      - Native
                      - Fungible
                      - Non-Fungible
                    example: Fungible
                  contract_address:
                    title: contract_address
                    description: Address of the contract.
                    type: string
                    example: '0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9'
                  symbol:
                    title: symbol
                    description: Token symbol.
                    type: string
                    example: aave
                  name:
                    title: name
                    description: Token name.
                    type: string
                    example: AAVE
                  logo:
                    title: logo
                    description: URL for the token icon.
                    type: string
                    example: >-
                      https://assets.coingecko.com/coins/images/12645/large/AAVE.png?1601374110
                  decimals:
                    title: decimals
                    description: Number of decimals in the token.
                    type: number
                    example: 18
                  dollar_value:
                    title: dollar_value
                    description: Dollar value of a single ERC20 token.
                    type: string
                    example: '57.09000015258789'
                required:
                  - standard
                  - type
                  - contract_address
                  - symbol
                  - name
                  - logo
                  - decimals
                  - dollar_value
            required:
              - type
              - amount
              - raw_amount
              - dollar_value
              - token_info
      required:
        - asset_changes
      example:
        ...: ...
        transaction:
          ...: ...
          transaction_info:
            ...: ...
            asset_changes:
              - token_info:
                  standard: ERC20
                  type: Fungible
                  contract_address: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'
                  symbol: weth
                  name: WETH
                  logo: >-
                    https://assets.coingecko.com/coins/images/2518/large/weth.png?1628852295
                  decimals: 18
                  dollar_value: '1677.3499755859375'
                type: Mint
                to: '0x3fc91a3afd70395cd496c647d5a6cc9d4b2b7fad'
                amount: '0.004'
                raw_amount: '4000000000000000'
                dollar_value: '6.7093999023437499996'
              - token_info:
                  standard: ERC20
                  type: Fungible
                  contract_address: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'
                  symbol: weth
                  name: WETH
                  logo: >-
                    https://assets.coingecko.com/coins/images/2518/large/weth.png?1628852295
                  decimals: 18
                  dollar_value: '1677.3499755859375'
                type: Transfer
                from: '0x3fc91a3afd70395cd496c647d5a6cc9d4b2b7fad'
                to: '0xdfc14d2af169b0d36c4eff567ada9b2e0cae044f'
                amount: '0.004'
                raw_amount: '4000000000000000'
                dollar_value: '6.7093999023437499996'
              - token_info:
                  standard: ERC20
                  type: Fungible
                  contract_address: '0x7fc66500c84a76ad7e9c93437bfc5ac33e2ddae9'
                  symbol: aave
                  name: Aave
                  logo: >-
                    https://assets.coingecko.com/coins/images/12645/large/AAVE.png?1601374110
                  decimals: 18
                  dollar_value: '57.09000015258789'
                type: Transfer
                from: '0xdfc14d2af169b0d36c4eff567ada9b2e0cae044f'
                to: '0xe8e6959a29bb94cb1080de4257417e6f22ab3ae2'
                amount: '0.114329491204601088'
                raw_amount: '114329491204601088'
                dollar_value: '6.527070670315972013'
              - token_info:
                  standard: NativeCurrency
                  type: Native
                  symbol: eth
                  name: Ethereum
                  logo: >-
                    https://assets.coingecko.com/coins/images/279/large/ethereum.png?1595348880
                  decimals: 18
                  dollar_value: '1677.5799560546875'
                type: Transfer
                from: '0xe8e6959a29bb94cb1080de4257417e6f22ab3ae2'
                to: '0x3fc91a3afd70395cd496c647d5a6cc9d4b2b7fad'
                amount: '0.004'
                raw_amount: '4000000000000000'
                dollar_value: '6.7103198242187499997'
              - token_info:
                  standard: NativeCurrency
                  type: Native
                  symbol: eth
                  name: Ethereum
                  logo: >-
                    https://assets.coingecko.com/coins/images/279/large/ethereum.png?1595348880
                  decimals: 18
                  dollar_value: '1677.5799560546875'
                type: Transfer
                from: '0x3fc91a3afd70395cd496c647d5a6cc9d4b2b7fad'
                to: '0xc02aaa39b223fe8d0a0e5c4f27ead9083c756cc2'
                amount: '0.004'
                raw_amount: '4000000000000000'
                dollar_value: '6.7103198242187499997'
    simulate_nft_asset_changes_post_response:
      type: object
      title: Simulate Transaction Response with Asset Changes (NFT Transfer)
      description: >-
        An object with details about simulated transaction with asset changes
        with NFT Transfer.
      example:
        ...: ...
        transaction:
          ...: ...
          transaction_info:
            ...: ...
            asset_changes:
              - token_info:
                  standard: ERC20
                  type: Fungible
                  contract_address: '0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7'
                  symbol: wavax
                  name: Wrapped AVAX
                  logo: >-
                    https://assets.coingecko.com/coins/images/15075/large/wrapped-avax.png?1629873618
                  decimals: 18
                  dollar_value: '10.329999923706055'
                type: Mint
                to: '0xae079eda901f7727d0715aff8f82ba8295719977'
                amount: '9.434'
                raw_amount: '9434000000000000000'
                dollar_value: '97.45321928024291992'
              - token_info:
                  standard: ERC20
                  type: Fungible
                  contract_address: '0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7'
                  symbol: wavax
                  name: Wrapped AVAX
                  logo: >-
                    https://assets.coingecko.com/coins/images/15075/large/wrapped-avax.png?1629873618
                  decimals: 18
                  dollar_value: '10.329999923706055'
                type: Transfer
                from: '0xae079eda901f7727d0715aff8f82ba8295719977'
                to: '0x64c4607ad853999ee5042ba8377bfc4099c273de'
                amount: '0.075'
                raw_amount: '75000000000000000'
                dollar_value: '0.7747499942779541016'
              - token_info:
                  standard: ERC20
                  type: Fungible
                  contract_address: '0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7'
                  symbol: wavax
                  name: Wrapped AVAX
                  logo: >-
                    https://assets.coingecko.com/coins/images/15075/large/wrapped-avax.png?1629873618
                  decimals: 18
                  dollar_value: '10.329999923706055'
                type: Transfer
                from: '0xae079eda901f7727d0715aff8f82ba8295719977'
                to: '0x2fffffb80ea0c59ca19258872351ae4a43facb37'
                amount: '0.18'
                raw_amount: '180000000000000000'
                dollar_value: '1.8593999862670898438'
              - token_info:
                  standard: ERC20
                  type: Fungible
                  contract_address: '0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7'
                  symbol: wavax
                  name: Wrapped AVAX
                  logo: >-
                    https://assets.coingecko.com/coins/images/15075/large/wrapped-avax.png?1629873618
                  decimals: 18
                  dollar_value: '10.329999923706055'
                type: Transfer
                from: '0xae079eda901f7727d0715aff8f82ba8295719977'
                to: '0xd7b87018c0434427f3a1f9d8c26c3f1a8a759b1b'
                amount: '2.745'
                raw_amount: '2745000000000000000'
                dollar_value: '28.355849790573120116'
              - token_info:
                  standard: ERC721
                  type: NonFungible
                  contract_address: '0x7a420aeff902aaa2c85a190d7b91ce8beffffe14'
                  symbol: DCGHERO
                  name: Dragon Crypto Hero
                  logo: >-
                    https://assets.coingecko.com/nft_contracts/images/1461/small/dragon-crypto-hero.png?1662020122
                  decimals: 0
                  dollar_value: '28.489999771118164'
                type: Transfer
                from: '0xd7b87018c0434427f3a1f9d8c26c3f1a8a759b1b'
                to: '0xe8e6959a29bb94cb1080de4257417e6f22ab3ae2'
                amount: '1'
                raw_amount: '1'
                token_id: >-
                  0x0000000000000000000000000000000000000000000000000000000000000489
                dollar_value: '28.489999771118164062'
              - token_info:
                  standard: ERC20
                  type: Fungible
                  contract_address: '0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7'
                  symbol: wavax
                  name: Wrapped AVAX
                  logo: >-
                    https://assets.coingecko.com/coins/images/15075/large/wrapped-avax.png?1629873618
                  decimals: 18
                  dollar_value: '10.329999923706055'
                type: Transfer
                from: '0xae079eda901f7727d0715aff8f82ba8295719977'
                to: '0x64c4607ad853999ee5042ba8377bfc4099c273de'
                amount: '0.075'
                raw_amount: '75000000000000000'
                dollar_value: '0.7747499942779541016'
              - token_info:
                  standard: ERC20
                  type: Fungible
                  contract_address: '0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7'
                  symbol: wavax
                  name: Wrapped AVAX
                  logo: >-
                    https://assets.coingecko.com/coins/images/15075/large/wrapped-avax.png?1629873618
                  decimals: 18
                  dollar_value: '10.329999923706055'
                type: Transfer
                from: '0xae079eda901f7727d0715aff8f82ba8295719977'
                to: '0xb090fc5d0c06804dfbf06efb59ce1f291f13162a'
                amount: '0.15'
                raw_amount: '150000000000000000'
                dollar_value: '1.5494999885559082032'
              - token_info:
                  standard: ERC20
                  type: Fungible
                  contract_address: '0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7'
                  symbol: wavax
                  name: Wrapped AVAX
                  logo: >-
                    https://assets.coingecko.com/coins/images/15075/large/wrapped-avax.png?1629873618
                  decimals: 18
                  dollar_value: '10.329999923706055'
                type: Transfer
                from: '0xae079eda901f7727d0715aff8f82ba8295719977'
                to: '0x2ce84ba90f3cd2c9281cc3170295d84b60ac28b4'
                amount: '2.775'
                raw_amount: '2775000000000000000'
                dollar_value: '28.66574978828430176'
              - token_info:
                  standard: ERC721
                  type: NonFungible
                  contract_address: '0xb42d0f524564cafe2a47ca3331221903eda83b3c'
                  symbol: MONKEEZ
                  name: Monkeez
                  logo: >-
                    https://assets.coingecko.com/nft_contracts/images/1417/small/monkeez.png?1662019843
                  decimals: 0
                  dollar_value: '25.670000076293945'
                type: Transfer
                from: '0x2ce84ba90f3cd2c9281cc3170295d84b60ac28b4'
                to: '0xe8e6959a29bb94cb1080de4257417e6f22ab3ae2'
                amount: '1'
                raw_amount: '1'
                token_id: >-
                  0x0000000000000000000000000000000000000000000000000000000000000190
                dollar_value: '25.670000076293945312'
              - token_info:
                  standard: ERC20
                  type: Fungible
                  contract_address: '0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7'
                  symbol: wavax
                  name: Wrapped AVAX
                  logo: >-
                    https://assets.coingecko.com/coins/images/15075/large/wrapped-avax.png?1629873618
                  decimals: 18
                  dollar_value: '10.329999923706055'
                type: Transfer
                from: '0xae079eda901f7727d0715aff8f82ba8295719977'
                to: '0x64c4607ad853999ee5042ba8377bfc4099c273de'
                amount: '0.02475'
                raw_amount: '24750000000000000'
                dollar_value: '0.25566749811172485352'
              - token_info:
                  standard: ERC20
                  type: Fungible
                  contract_address: '0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7'
                  symbol: wavax
                  name: Wrapped AVAX
                  logo: >-
                    https://assets.coingecko.com/coins/images/15075/large/wrapped-avax.png?1629873618
                  decimals: 18
                  dollar_value: '10.329999923706055'
                type: Transfer
                from: '0xae079eda901f7727d0715aff8f82ba8295719977'
                to: '0x5b34932f643a143bdc9801064ea06526ba9476af'
                amount: '0.0495'
                raw_amount: '49500000000000000'
                dollar_value: '0.51133499622344970705'
              - token_info:
                  standard: ERC20
                  type: Fungible
                  contract_address: '0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7'
                  symbol: wavax
                  name: Wrapped AVAX
                  logo: >-
                    https://assets.coingecko.com/coins/images/15075/large/wrapped-avax.png?1629873618
                  decimals: 18
                  dollar_value: '10.329999923706055'
                type: Transfer
                from: '0xae079eda901f7727d0715aff8f82ba8295719977'
                to: '0x9aa4b22a616d5cbc6834d3e5da877d17f93c2b77'
                amount: '0.91575'
                raw_amount: '915750000000000000'
                dollar_value: '9.45969743013381958'
              - token_info:
                  standard: ERC721
                  type: NonFungible
                  contract_address: '0x4245a1bd84eb5f3ebc115c2edf57e50667f98b0b'
                  symbol: HOP
                  name: Hoppers Game
                  logo: >-
                    https://assets.coingecko.com/nft_contracts/images/1448/small/hoppers-game.png?1662020093
                  decimals: 0
                  dollar_value: '8.229999542236328'
                type: Transfer
                from: '0x9aa4b22a616d5cbc6834d3e5da877d17f93c2b77'
                to: '0xe8e6959a29bb94cb1080de4257417e6f22ab3ae2'
                amount: '1'
                raw_amount: '1'
                token_id: >-
                  0x00000000000000000000000000000000000000000000000000000000000011eb
                dollar_value: '8.229999542236328125'
              - token_info:
                  standard: ERC20
                  type: Fungible
                  contract_address: '0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7'
                  symbol: wavax
                  name: Wrapped AVAX
                  logo: >-
                    https://assets.coingecko.com/coins/images/15075/large/wrapped-avax.png?1629873618
                  decimals: 18
                  dollar_value: '10.329999923706055'
                type: Transfer
                from: '0xae079eda901f7727d0715aff8f82ba8295719977'
                to: '0x64c4607ad853999ee5042ba8377bfc4099c273de'
                amount: '0.0611'
                raw_amount: '61100000000000000'
                dollar_value: '0.63116299533843994143'
              - token_info:
                  standard: ERC20
                  type: Fungible
                  contract_address: '0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7'
                  symbol: wavax
                  name: Wrapped AVAX
                  logo: >-
                    https://assets.coingecko.com/coins/images/15075/large/wrapped-avax.png?1629873618
                  decimals: 18
                  dollar_value: '10.329999923706055'
                type: Transfer
                from: '0xae079eda901f7727d0715aff8f82ba8295719977'
                to: '0xcafbcfd3fe93bccf1e15fa831f7d98ecfab4e281'
                amount: '0.1222'
                raw_amount: '122200000000000000'
                dollar_value: '1.2623259906768798829'
              - token_info:
                  standard: ERC20
                  type: Fungible
                  contract_address: '0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7'
                  symbol: wavax
                  name: Wrapped AVAX
                  logo: >-
                    https://assets.coingecko.com/coins/images/15075/large/wrapped-avax.png?1629873618
                  decimals: 18
                  dollar_value: '10.329999923706055'
                type: Transfer
                from: '0xae079eda901f7727d0715aff8f82ba8295719977'
                to: '0xaee1806aefbe8068db299c4c859937a1aee55dae'
                amount: '2.2607'
                raw_amount: '2260700000000000000'
                dollar_value: '23.353030827522277832'
              - token_info:
                  standard: ERC721
                  type: NonFungible
                  contract_address: '0x3025c5c2aa6eb7364555aac0074292195701bbd6'
                  symbol: MADSKULLZ
                  name: MadSkullz
                  logo: >-
                    https://assets.coingecko.com/nft_contracts/images/1407/small/madskullz.png?1662019779
                  decimals: 0
                  dollar_value: '29.829999923706055'
                type: Transfer
                from: '0xaee1806aefbe8068db299c4c859937a1aee55dae'
                to: '0xe8e6959a29bb94cb1080de4257417e6f22ab3ae2'
                amount: '1'
                raw_amount: '1'
                token_id: >-
                  0x0000000000000000000000000000000000000000000000000000000000000827
                dollar_value: '29.829999923706054688'
              - token_info:
                  standard: NativeCurrency
                  type: Native
                  symbol: avax
                  name: Avalanche
                  logo: >-
                    https://assets.coingecko.com/coins/images/12559/large/Avalanche_Circle_RedWhite_Trans.png?1670992574
                  decimals: 18
                  dollar_value: '10.210000038146973'
                type: Transfer
                from: '0xe8e6959a29bb94cb1080de4257417e6f22ab3ae2'
                to: '0xae079eda901f7727d0715aff8f82ba8295719977'
                amount: '9.434'
                raw_amount: '9434000000000000000'
                dollar_value: '96.32114035987854004'
              - token_info:
                  standard: NativeCurrency
                  type: Native
                  symbol: avax
                  name: Avalanche
                  logo: >-
                    https://assets.coingecko.com/coins/images/12559/large/Avalanche_Circle_RedWhite_Trans.png?1670992574
                  decimals: 18
                  dollar_value: '10.210000038146973'
                type: Transfer
                from: '0xbb01d7ad46a1229f8383f4e863abf4461b427745'
                to: '0xb31f66aa3c1e785363f0875a1b74e27b85fd66c7'
                amount: '9.434'
                raw_amount: '9434000000000000000'
                dollar_value: '96.32114035987854004'
    error:
      type: object
      properties:
        error:
          type: object
          properties:
            id:
              description: >-
                Endpoints include an error ID that should be  provided when
                reporting bugs or opening support tickets to help  identify the
                issue.
              type: string
              example: 4d9d8375-3c56-4925-a3e7-eb137fed17e9
            slug:
              description: >-
                A short identifier corresponding to the HTTP status code
                returned. For  example, the ID for a response returning a 404
                status code would be "not_found."
              type: string
              example: not_found
            message:
              description: >-
                A message providing additional information about the error,
                including  details to help resolve it when possible.
              type: string
              example: The resource you were accessing could not be found.
            data:
              description: Additional context about the error.
              type: object
              properties:
                rid:
                  description: >-
                    Resource identifier indicating which resource type caused
                    the error.
                  type: string
                  enum:
                    - rid:account
                    - rid:project
                    - rid:alert
                    - rid:contract
                    - rid:delivery_channel
                    - rid:network
                    - rid:simulation
                    - rid:simulation_draft
                    - rid:vnet
                    - rid:wallet
                    - rid:action
                    - rid:action_call
                  example: rid:project
              additionalProperties: true
          required:
            - id
            - slug
            - message
      required:
        - error
  examples:
    full_mode_simulate_post_request:
      summary: Full Mode Simulation
      description: >-
        An example payload object with details about transaction simulation
        using a full mode.
      value:
        network_id: '1'
        from: '0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df'
        to: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
        input: >-
          0xa94e78ef000000000000000000000000000000000000000000000000000000000000002000000000000000000000000068037790a0229e9ce6eaa8a99ea92964106c470300000000000000000000000000000000000000000000010f0cf064dd592000000000000000000000000000000000000000000000000000000000000145dc1b2e00000000000000000000000000000000000000000000000000000001477f4d7d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000064d281e65c9438a5a99c4bccb1035296d5d2d8d200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000320000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002b68037790a0229e9ce6eaa8a99ea92964106c47030001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a730000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000060000000000000000000000001b81d678ffb9c0263b24a97847620c99d213eb14000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000064dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
        gas: 648318
        block_number: 17884583
        value: '0'
        save: true
        save_if_fails: true
        simulation_type: full
    quick_mode_simulate_post_request:
      summary: Quick Mode Simulation
      description: >-
        An example payload object with details about transaction simulation
        using a quick mode.
      value:
        network_id: '1'
        from: '0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df'
        to: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
        input: >-
          0xa94e78ef000000000000000000000000000000000000000000000000000000000000002000000000000000000000000068037790a0229e9ce6eaa8a99ea92964106c470300000000000000000000000000000000000000000000010f0cf064dd592000000000000000000000000000000000000000000000000000000000000145dc1b2e00000000000000000000000000000000000000000000000000000001477f4d7d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000064d281e65c9438a5a99c4bccb1035296d5d2d8d200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000320000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002b68037790a0229e9ce6eaa8a99ea92964106c47030001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a730000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000060000000000000000000000001b81d678ffb9c0263b24a97847620c99d213eb14000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000064dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
        gas: 648318
        block_number: 17884583
        value: '0'
        save: true
        save_if_fails: true
        simulation_type: quick
    abi_mode_simulate_post_request:
      summary: ABI Mode Simulation
      description: >-
        An example payload object with details about transaction simulation
        using an ABI mode.
      value:
        network_id: '1'
        from: '0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df'
        to: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
        input: >-
          0xa94e78ef000000000000000000000000000000000000000000000000000000000000002000000000000000000000000068037790a0229e9ce6eaa8a99ea92964106c470300000000000000000000000000000000000000000000010f0cf064dd592000000000000000000000000000000000000000000000000000000000000145dc1b2e00000000000000000000000000000000000000000000000000000001477f4d7d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000064d281e65c9438a5a99c4bccb1035296d5d2d8d200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000320000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002b68037790a0229e9ce6eaa8a99ea92964106c47030001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a730000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000060000000000000000000000001b81d678ffb9c0263b24a97847620c99d213eb14000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000064dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
        gas: 648318
        block_number: 17884583
        value: '0'
        save: true
        save_if_fails: true
        simulation_type: abi
    estimate_gas_simulate_post_request:
      summary: Estimate Gas Simulation
      description: >-
        An example payload object with details about transaction simulation with
        gas estimation enabled.
      value:
        network_id: '1'
        from: '0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df'
        to: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
        input: >-
          0xa94e78ef000000000000000000000000000000000000000000000000000000000000002000000000000000000000000068037790a0229e9ce6eaa8a99ea92964106c470300000000000000000000000000000000000000000000010f0cf064dd592000000000000000000000000000000000000000000000000000000000000145dc1b2e00000000000000000000000000000000000000000000000000000001477f4d7d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000064d281e65c9438a5a99c4bccb1035296d5d2d8d200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000320000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002b68037790a0229e9ce6eaa8a99ea92964106c47030001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a730000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000060000000000000000000000001b81d678ffb9c0263b24a97847620c99d213eb14000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000064dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
        gas: 648318
        block_number: 17884583
        value: '0'
        save: true
        save_if_fails: true
        estimate_gas: true
        simulation_type: quick
    failed_tx_simulate_post_request:
      summary: Failed Transaction Simulation
      description: >-
        An example payload object with details about transaction simulation with
        failed status.
      value:
        network_id: '1'
        block_number: 18827905
        transaction_index: 222
        from: '0xd8da6bf26964af9d7eed9e03e53415d37aa96045'
        input: >-
          0xa94e78ef0000000000000000000000000000000000000000000000000000000000000020000000000000000000000000eaa63125dd63f10874f99cdbbb18410e7fc79dd300000000000000000000000000000000000000000004f68ca6d8cd91c6000000000000000000000000000000000000000000000000000000000000036e22623300000000000000000000000000000000000000000000000000000003728c0b380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000016000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000000000076000000000000000000000000000000000000000000000000000000000658357363e8a57981b0747b79f70262f8257408600000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000300000000000000000000000000eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000004000000000000000000000000f9234cb08edb93c0d4a4d4c70cc3ffd070e78e07000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000a00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000001000000000000000000004de5672fefac7f6e3017d9a2f1c14fe048191a24ce14000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000004000000000000000000000000000000000000000000000000000000000658c3d55000000000000000000000000000000000000000000000000000000000000002bc02aaa39b223fe8d0a0e5c4f27ead9083c756cc20001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb480000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
        to: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
        gas: 617885
        gas_price: '87235100681'
        value: '0'
        access_list: []
        generate_access_list: true
        save: true
        simulation_type: quick
    state_block_overrides_simulate_post_request:
      summary: State and Block Header Overrides Simulation
      description: >-
        An example payload that applies both state overrides and block header
        overrides to the simulation.
      value:
        network_id: '1'
        from: '0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df'
        to: '0xdef171fe48cf0115b1d80b88dc8eab59176fee57'
        input: >-
          0xa94e78ef000000000000000000000000000000000000000000000000000000000000002000000000000000000000000068037790a0229e9ce6eaa8a99ea92964106c470300000000000000000000000000000000000000000000010f0cf064dd592000000000000000000000000000000000000000000000000000000000000145dc1b2e00000000000000000000000000000000000000000000000000000001477f4d7d000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001600000000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000007800000000000000000000000000000000000000000000000000000000064d281e65c9438a5a99c4bccb1035296d5d2d8d200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000000000320000000000000000000000000a0b86991c6218b36c1d19d4a2e9eb0ce3606eb4800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a73000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000080000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000000000000000000000000000000000000000000006000000000000000000000000e592427a0aece92de3edee1f18e0157c05861564000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002b68037790a0229e9ce6eaa8a99ea92964106c47030001f4a0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000000000000000000000000000000000000000000000000000000000000000000dac17f958d2ee523a2206206994597c13d831ec700000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000200000000000000000000000009be264469ef954c139da4a45cf76cbcc5e3a6a730000000000000000000000000000000000000000000000000000000000002710000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000800000000000000000000000000000000000000000000000000000000000000001000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000060000000000000000000000001b81d678ffb9c0263b24a97847620c99d213eb14000000000000000000000000000000000000000000000000000000000000271000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000400000000000000000000000000000000000000000000000000000000064db6806000000000000000000000000000000000000000000000000000000000000002ba0b86991c6218b36c1d19d4a2e9eb0ce3606eb48000064dac17f958d2ee523a2206206994597c13d831ec70000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
        gas: 648318
        gas_price: '18312000018'
        block_number: 17884583
        transaction_index: 0
        value: '0'
        save: true
        save_if_fails: true
        simulation_type: full
        generate_access_list: true
        state_objects:
          '0x3f41a1cfd3c8b8d9c162de0f42307a0095a6e5df':
            balance: '100000000000000000000'
          '0xdac17f958d2ee523a2206206994597c13d831ec7':
            storage:
              '0x0000000000000000000000000000000000000000000000000000000000000000': >-
                0x000000000000000000000000c6cde7c39eb2f0f0095f41570af89efc2c1ea828
        block_header:
          number: '0x110ace7'
          timestamp: '0x64d22deb'
          difficulty: '0x0'
          gasLimit: '0x1c9c380'
          baseFeePerGas: '0x3d5200956'
  responses:
    simulate_post:
      description: A successful response.
      headers:
        X-Tdly-Limit:
          $ref: '#/components/headers/ratelimit-limit'
        X-Tdly-Remaining:
          $ref: '#/components/headers/ratelimit-remaining'
        X-Tdly-Reset-Timestamp:
          $ref: '#/components/headers/ratelimit-reset'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/simulation-response'
            oneOf:
              - $ref: '#/components/schemas/full_mode_simulate_post_response'
              - $ref: '#/components/schemas/quick_mode_simulate_post_response'
              - $ref: '#/components/schemas/abi_mode_simulate_post_response'
              - $ref: '#/components/schemas/failed_tx_simulate_post_response'
              - $ref: '#/components/schemas/simulation-asset-changes'
              - $ref: '#/components/schemas/simulate_nft_asset_changes_post_response'
    bad_request:
      description: Bad Request
      headers:
        X-Tdly-Limit:
          $ref: '#/components/headers/ratelimit-limit'
        X-Tdly-Remaining:
          $ref: '#/components/headers/ratelimit-remaining'
        X-Tdly-Reset-Timestamp:
          $ref: '#/components/headers/ratelimit-reset'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
          example:
            error:
              id: 596b1dc7-af60-477b-aab3-6c93eb92ddfa
              slug: bad_request
              message: Bad request input parameters
    unauthorized:
      description: Unauthorized
      headers:
        X-Tdly-Limit:
          $ref: '#/components/headers/ratelimit-limit'
        X-Tdly-Remaining:
          $ref: '#/components/headers/ratelimit-remaining'
        X-Tdly-Reset-Timestamp:
          $ref: '#/components/headers/ratelimit-reset'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
          example:
            error:
              id: 596b1dc7-af60-477b-aab3-6c93eb92ddfa
              slug: unauthorized
              message: Unauthorized
    forbidden:
      description: Forbidden
      headers:
        X-Tdly-Limit:
          $ref: '#/components/headers/ratelimit-limit'
        X-Tdly-Remaining:
          $ref: '#/components/headers/ratelimit-remaining'
        X-Tdly-Reset-Timestamp:
          $ref: '#/components/headers/ratelimit-reset'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
          example:
            error:
              id: 596b1dc7-af60-477b-aab3-6c93eb92ddfa
              slug: insufficient_permissions
              message: Insufficient permissions
    not_found:
      description: The resource was not found.
      headers:
        X-Tdly-Limit:
          $ref: '#/components/headers/ratelimit-limit'
        X-Tdly-Remaining:
          $ref: '#/components/headers/ratelimit-remaining'
        X-Tdly-Reset-Timestamp:
          $ref: '#/components/headers/ratelimit-reset'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
          example:
            error:
              id: 596b1dc7-af60-477b-aab3-6c93eb92ddfa
              slug: resource_not_found
              message: The resource you requested could not be found.
    too_many_requests:
      description: >-
        The request was rate limited. See the [rate
        limits](#section/Introduction/Rate-limits) section for the current
        limits and how request counts expire.
      headers:
        X-Tdly-Limit:
          $ref: '#/components/headers/ratelimit-limit'
        X-Tdly-Remaining:
          $ref: '#/components/headers/ratelimit-remaining'
        X-Tdly-Reset-Timestamp:
          $ref: '#/components/headers/ratelimit-reset'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
          example:
            error:
              id: 9a7bbe06-7f6f-4a45-8c78-8d64b9a9d0e1
              slug: too_many_requests
              message: API Rate limit exceeded.
    server_error:
      description: Server error.
      headers:
        X-Tdly-Limit:
          $ref: '#/components/headers/ratelimit-limit'
        X-Tdly-Remaining:
          $ref: '#/components/headers/ratelimit-remaining'
        X-Tdly-Reset-Timestamp:
          $ref: '#/components/headers/ratelimit-reset'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/error'
          example:
            error:
              id: 596b1dc7-af60-477b-aab3-6c93eb92ddfa
              slug: internal_server_error
              message: Internal server error
  headers:
    ratelimit-limit:
      schema:
        type: integer
      example: 100
      description: >-
        The default limit on number of requests that can be made per minute.
        Current rate limits are:

        * **Non-authenticated users:** 100 requests per minute

        * **Authenticated users:** 400 requests per minute
    ratelimit-remaining:
      schema:
        type: integer
      example: 16
      description: >-
        The number of requests in your quota that remain before you hit your
        request limit.
    ratelimit-reset:
      schema:
        type: integer
      example: 1444931833
      description: >-
        The time when the oldest request will expire. The value is given in Unix
        epoch time.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      name: X-Access-Key
      in: header
      description: >-
        An API key is a token that a client provides when making API calls. Send
        it as the `X-Access-Key` request header on any endpoint:


        ```bash

        curl '<API_ENDPOINT>' \
          -H 'X-Access-Key: ${TENDERLY_ACCESS_KEY}' \
          ...
        ```


        Learn how to generate API access tokens at [Tenderly
        Docs](https://docs.tenderly.co/account/projects/how-to-generate-api-access-token).
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        Bearer authentication (also called token authentication) is an HTTP
        authentication scheme that involves security tokens called bearer
        tokens.

        The bearer token is a cryptic string, usually generated by the server in
        response to a login request. The client must send this token in

        the Authorization header when making requests to protected resources:


        ```bash

        curl '<API_ENDPOINT>' \
          -H 'Authorization: Bearer <TENDERLY_TOKEN>' \
          ...
        ```


        **Note**: Bearer tokens cannot be revoked and expire after 30 days.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.