Mockerena

Build Status Maintainability Test Coverage PyPi Version Python Version License Documentation Status Requirements Status

Mockerena allows anyone to mock data files through customized json schemas and provides routes for external systems to retrieve from it.

Getting Started

Install through git:

git clone https://github.com/FanThreeSixty/mockerena

Either you can install the project yourself or you can use the prepared scripts

To use the prepared scripts use:

cd mockerena
script/setup

To install dependencies yourself:

cd mockerena

# For Unix environments
virtualenv -p python3 venv
source venv/bin/activate

# For Windows environments
python -m venv venv/
venv/Scripts/activate.bat

pip install -r requirements.txt
pip install -e .

To run the project either use:

script/server

Or manually through:

python mockerena/app.py

Development

Generating documentation

You can either use makefile:

cd docs
make html

Or you can use autobuild:

cd docs
sphinx-autobuild . _build/html/

Or you can use the script:

script/docs

Linting project

You can run pylint yourself:

pylint mockerena

Or you can use the script:

script/lint

Running tests

Testing requires 3 python libraries to be installed prior to running. If you use the test script you can avoid installing these dependencies yourself. To install dependencies run:

pip install pytest pytest-cov pytest-flask

Once the dependencies are installed you can run pytest yourself:

pytest tests/

Or you can use the script:

script/test

Updating dependencies

You can run pip update yourself:

pip install -U -r requirements.txt

Or you can use the script:

script/update

Deployment

Deploy to AWS

First you’ll need to install the AWS CLI and configure. For more information on these steps, please visit Amazon’s documentation for further details. Once the CLI is installed you’ll need to install the serverless cli:

npm install -g serverless

Afterwards, to deploy simply run:

serverless deploy

Once the deploy is complete, run sls info to get the endpoint:

sls info

Docker deployment

docker build -t mockerena .
docker run -it -p 5000:5000 mockerena

# Or using docker compose
docker-compose up -d

Local deployment

To run a serverless setup locally, run:

sls wsgi serve

Navigate to localhost:5000 to see your app running locally.

Or you can deploy manually running this command in your init.d or systemctl scripts:

gunicorn3 --config gunicorn_config.py mockerena.app:app

Configuration

To configure Mockerena, inside settings.py there are a few settings:

HOST = os.environ.get('MOCKERENA_HOST', 'localhost')
PORT = os.environ.get('MOCKERENA_PORT', 9000)
BASE_PATH = os.environ.get('MOCKERENA_BASE_PATH', '')
DEBUG = os.environ.get('MOCKERENA_DEBUG', False)
SECRET_KEY = os.environ.get('MOCKERENA_SECRET_KEY', None)
ENV = os.environ.get('MOCKERENA_ENV', 'development')

At a minimum at least update MOCKERENA_HOST and MOCKERENA_PORT to whatever the new host and port will be and MOCKERENA_SECRET_KEY to a random hash.

There are also settings for configuring Mongo with mockerena. Update these as necessary:

# Database settings
MONGO_HOST = os.environ.get('MOCKERENA_MONGO_HOST', 'localhost')
MONGO_PORT = os.environ.get('MOCKERENA_MONGO_PORT', 27017)
MONGO_DBNAME = os.environ.get('MOCKERENA_MONGO_DBNAME', 'mockerena')
MONGO_AUTH_SOURCE = os.environ.get('MOCKERENA_MONGO_AUTH_SOURCE', 'mockerena')
MONGO_USERNAME = os.environ.get('MOCKERENA_MONGO_USERNAME', '')
MONGO_PASSWORD = os.environ.get('MOCKERENA_MONGO_PASSWORD', '')

For more configuration options visit Eve’s documentation

Using Mockerena

To generate fake data you can either:

  1. Save schemas and generate data using an id or

  2. You can generate data on-the-fly.

To save a schema, POST to /api/schema:

{
    "schema": "mock_example",
    "num_rows": 10,
    "file_format": "csv",
    "file_name": "mock_{}_example",
    "include_header": true,
    "delimiter": ",",
    "quote_character": "'",
    "columns": [
        {
            "name": "foo",
            "truncate": false,
            "type": "word",
            "description": "First column",
            "percent_empty": 0.2
        },
        {
            "name": "bar",
            "type": "random_element",
            "description": "Second column",
            "truncate": false,
            "args": {
                "elements": ["that"]
            },
            "function": "this + this"
        }
    ]
}

To breakdown what is happening at the schema-level above, here are what each item means:

schema - The name of the schema

num_rows - The default number of records to return

file_format - The default format of the file

file_name - The name of the file that is generated. {} is used to insert a datetime

include_header - Include the header for the CSV

exclude_null - Squash nulls for JSON formats

is_nested - Generate nested JSON

delimiter - CSV column separator

quote_character - Quoting character for CSV or TSV

On a column-level:

name - Column header name

type - Faker data type. See /api/types for a list of all types

description - A description of what what the column is for

truncate - Drop column after generation

percent_empty - Likeliness that the column will be empty. 0 to 1, 1 being 100%

args - Arguments passed into type

function - Post-processing function (see below)

format - Date format (use standard python date format strings)

To generate data, GET to /api/schema/{schema_id}/generate. You should receive something like this:

foo,bar
lose,thatthat
now,thatthat
and,thatthat
,thatthat
such,thatthat
government,thatthat
around,thatthat
room,thatthat
behind,thatthat
television,thatthat

You can optionally POST to /api/schema/generate directly to generate data without having to permanently save the schema.

Functions

Mockerena mostly uses Faker providers to generate random data. Click here for the full list of providers from Faker. With Mockerena, we’ve supplied a few additional providers that are available here.

You can also use the types endpoint /api/types to retrieve a complete list of all provider types.

Templates

Mockerena gives users the flexibility to define return types that aren’t listed as options for file_format. Any file format that isn’t immediately recognized, requires a template. So for example:

{
    "schema": "mock_example",
    "num_rows": 10,
    "file_format": "xml",
    "file_name": "mock_{}_example",
    "template": "<root>{% for r in records %}<record><foo>{{r['foo']}}</foo><bar>{{r['bar']}}</bar></record>{% endfor %}</root>"
    "columns": [
        {
            "name": "foo",
            "truncate": false,
            "type": "word",
            "description": "First column",
            "percent_empty": 0.2
        },
        {
            "name": "bar",
            "type": "random_element",
            "description": "Second column",
            "truncate": false,
            "args": {
                "elements": ["that"]
            },
            "function": "this + this"
        }
    ]
}

Would return and XML response like:

<root>
    <record>
        <foo>lose</foo>
        <bar>thatthat</bar>
    </record>
    <record>
        <foo>now</foo>
        <bar>thatthat</bar>
    </record>
    <record>
        <foo>and</foo>
        <bar>thatthat</bar>
    </record>
    <record>
        <foo></foo>
        <bar>thatthat</bar>
    </record>
    ....
</root>

And since Mockerena uses Jinja2 as the templating engine, you can leverage their robust set of filters and tests to further control how data populates the template.

Responses

Added v1.1.0

Responses allow for custom responses to be randomly returned For example:

{
    "schema": "mock_example",
    "file_format": "csv",
    "file_name": "mock_{}_example",
    "columns": [
        {
            "name": "foo",
            "type": "word"
        }
    ],
    "responses": [
        {
            "status_code": 201,
            "weight": 2
        },
        {
            "status_code": 502,
            "data": "",
            "content_type": "text/plain",
            "headers": {
                "Last-Modified": "Thur, 19 Sep 2019 19:25:10 GMT"
            },
            "weight": 1
        }
    ]
}

To breakdown what is happening:

status_code - Override response code returned. Default is 200

data - Override data returned. Default is usual dataset

content_type - Override content type. Default is based off file_format, or “text/plain

headers - Override response headers

weight - Probability response is returned. For example, a response with a weight of 2 is twice as likely to return than a response with a weight of 1

So in the example approximately 2 out of 3 attempts will return the normal response with a status code of 201, but 1 out of 3 attempts will return a response with a status code of 502, empty content and a last modified header with the timestamp “Thur, 19 Sep 2019 19:25:10 GMT”.

Providers

base

fake.bothify(text="## ??", letters="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")
# '70 SY'

fake.hexify(text="^^^^", upper=False)
# '5d05'

fake.language_code()
# 'kk'

fake.lexify(text="????", letters="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")
# 'ueZW'

fake.locale()
# 'fi_FI'

fake.numerify(text="###")
# '928'

fake.random_choices(elements=('a', 'b', 'c'), length=None)
# ['a', 'b']

fake.random_digit()
# 2

fake.random_digit_not_null()
# 7

fake.random_digit_not_null_or_empty()
# 1

fake.random_digit_or_empty()
# 0

fake.random_element(elements=('a', 'b', 'c'))
# 'a'

fake.random_elements(elements=('a', 'b', 'c'), length=None, unique=False)
# ['b']

fake.random_int(min=0, max=9999, step=1)
# 3825

fake.random_letter()
# 'A'

fake.random_letters(length=16)
# ['k', 'f', 'y', 'g', 'c', 'J', 'x', 'f', 'H', 'K', 'M', 'O', 'm', 'b', 'w', 'm']

fake.random_lowercase_letter()
# 'n'

fake.random_number(digits=None, fix_len=False)
# 6

fake.random_sample(elements=('a', 'b', 'c'), length=None)
# ['b']

fake.random_uppercase_letter()
# 'Z'

fake.randomize_nb_elements(number=10, le=False, ge=False, min=None, max=None)
# 11

address

fake.address()
# '965 Walker Row\nMichelemouth, FL 07740'

fake.building_number()
# '84727'

fake.city()
# 'Alexandertown'

fake.city_prefix()
# 'Lake'

fake.city_suffix()
# 'view'

fake.country()
# 'Saint Kitts and Nevis'

fake.country_code(representation="alpha-2")
# 'AU'

fake.military_apo()
# 'PSC 4280, Box 6638'

fake.military_dpo()
# 'Unit 0439 Box 9077'

fake.military_ship()
# 'USS'

fake.military_state()
# 'AE'

fake.postalcode()
# '18280'

fake.postalcode_in_state(state_abbr=None)
# '83233'

fake.postalcode_plus4()
# '10416-7532'

fake.postcode()
# '87410'

fake.postcode_in_state(state_abbr=None)
# '49524'

fake.secondary_address()
# 'Suite 580'

fake.state()
# 'New York'

fake.state_abbr(include_territories=True)
# 'FL'

fake.street_address()
# '1539 Michael Street'

fake.street_name()
# 'Dominguez Ports'

fake.street_suffix()
# 'Glen'

fake.zipcode()
# '11597'

fake.zipcode_in_state(state_abbr=None)
# '68022'

fake.zipcode_plus4()
# '12001-1983'

automotive

fake.license_plate()
# 'PBT 123'

bank

fake.bank_country()
# 'GB'

fake.bban()
# 'SCWM84334472954709'

fake.iban()
# 'GB11NJRO54900269409826'

barcode

fake.ean(length=13)
# '4003832285771'

fake.ean13(leading_zero=None)
# '9620020275212'

fake.ean8()
# '17726313'

fake.upc_a(upc_ae_mode=False, base=None, number_system_digit=None)
# '915865094906'

fake.upc_e(base=None, number_system_digit=None, safe_mode=True)
# '12356247'

color

fake.color(hue=None, luminosity=None, color_format="hex")
# '#c888f7'

fake.color_name()
# 'DarkGoldenRod'

fake.hex_color()
# '#95fcdf'

fake.rgb_color()
# '72,32,89'

fake.rgb_css_color()
# 'rgb(102,242,176)'

fake.safe_color_name()
# 'maroon'

fake.safe_hex_color()
# '#ccbb00'

company

fake.bs()
# 'implement revolutionary supply-chains'

fake.catch_phrase()
# 'Business-focused logistical attitude'

fake.company()
# 'Clay Group'

fake.company_suffix()
# 'LLC'

credit_card

fake.credit_card_expire(start="now", end="+10y", date_format="%m/%y")
# '09/25'

fake.credit_card_full(card_type=None)
# 'Discover\nDavid Taylor\n6011910416230682 07/24\nCVC: 814\n'

fake.credit_card_number(card_type=None)
# '4991269195116524'

fake.credit_card_provider(card_type=None)
# 'JCB 16 digit'

fake.credit_card_security_code(card_type=None)
# '4299'

currency

fake.cryptocurrency()
# ('ZCL', 'Zclassic')

fake.cryptocurrency_code()
# 'ZCL'

fake.cryptocurrency_name()
# 'BlackCoin'

fake.currency()
# ('BMD', 'Bermudian dollar')

fake.currency_code()
# 'BMD'

fake.currency_name()
# 'Haitian gourde'

date_time

fake.am_pm()
# 'AM'

fake.century()
# 'II'

fake.date(pattern="%Y-%m-%d", end_datetime=None)
# '1992-05-08'

fake.date_between(start_date="-30y", end_date="today")
# datetime.date(1996, 3, 11)

fake.date_between_dates(date_start=None, date_end=None)
# datetime.date(2019, 12, 17)

fake.date_object(end_datetime=None)
# datetime.date(1970, 4, 28)

fake.date_of_birth(tzinfo=None, minimum_age=0, maximum_age=115)
# datetime.date(1974, 8, 27)

fake.date_this_century(before_today=True, after_today=False)
# datetime.date(2014, 3, 15)

fake.date_this_decade(before_today=True, after_today=False)
# datetime.date(2017, 7, 10)

fake.date_this_month(before_today=True, after_today=False)
# datetime.date(2019, 12, 5)

fake.date_this_year(before_today=True, after_today=False)
# datetime.date(2019, 3, 14)

fake.date_time(tzinfo=None, end_datetime=None)
# datetime.datetime(2009, 5, 31, 19, 30)

fake.date_time_ad(tzinfo=None, end_datetime=None, start_datetime=None)
# datetime.datetime(717, 8, 11, 11, 16, 48)

fake.date_time_between(start_date="-30y", end_date="now", tzinfo=None)
# datetime.datetime(2005, 6, 14, 13, 37, 29)

fake.date_time_between_dates(datetime_start=None, datetime_end=None, tzinfo=None)
# datetime.datetime(2019, 12, 17, 15, 40, 47)

fake.date_time_this_century(before_now=True, after_now=False, tzinfo=None)
# datetime.datetime(2001, 1, 5, 21, 12, 31)

fake.date_time_this_decade(before_now=True, after_now=False, tzinfo=None)
# datetime.datetime(2013, 11, 26, 18, 38, 11)

fake.date_time_this_month(before_now=True, after_now=False, tzinfo=None)
# datetime.datetime(2019, 12, 2, 23, 26, 7)

fake.date_time_this_year(before_now=True, after_now=False, tzinfo=None)
# datetime.datetime(2019, 10, 9, 20, 38, 9)

fake.day_of_month()
# '30'

fake.day_of_week()
# 'Thursday'

fake.future_date(end_date="+30d", tzinfo=None)
# datetime.date(2020, 1, 12)

fake.future_datetime(end_date="+30d", tzinfo=None)
# datetime.datetime(2020, 1, 3, 3, 48, 8)

fake.iso8601(tzinfo=None, end_datetime=None)
# '1985-06-24T10:08:04'

fake.month()
# '09'

fake.month_name()
# 'March'

fake.past_date(start_date="-30d", tzinfo=None)
# datetime.date(2019, 11, 29)

fake.past_datetime(start_date="-30d", tzinfo=None)
# datetime.datetime(2019, 12, 7, 0, 2, 27)

fake.time(pattern="%H:%M:%S", end_datetime=None)
# '06:57:15'

fake.time_delta(end_datetime=None)
# datetime.timedelta(0)

fake.time_object(end_datetime=None)
# datetime.time(14, 29, 53)

fake.time_series(start_date="-30d", end_date="now", precision=None, distrib=None, tzinfo=None)
# <generator object Provider.time_series at 0x7f3d78a484f8>

fake.timezone()
# 'Asia/Jerusalem'

fake.unix_time(end_datetime=None, start_datetime=None)
# 1437575659

fake.year()
# '1971'

file

fake.file_extension(category=None)
# 'json'

fake.file_name(category=None, extension=None)
# 'amount.js'

fake.file_path(depth=1, category=None, extension=None)
# '/we/war.webm'

fake.mime_type(category=None)
# 'image/pjpeg'

fake.unix_device(prefix=None)
# '/dev/vdm'

fake.unix_partition(prefix=None)
# '/dev/sdi9'

geo

fake.coordinate(center=None, radius=0.001)
# Decimal('-103.020900')

fake.latitude()
# Decimal('46.895312')

fake.latlng()
# (Decimal('62.242791'), Decimal('-131.954833'))

fake.local_latlng(country_code="US", coords_only=False)
# ('38.96372', '-76.99081', 'Chillum', 'US', 'America/New_York')

fake.location_on_land(coords_only=False)
# ('30.76468', '74.12286', 'Kanganpur', 'PK', 'Asia/Karachi')

fake.longitude()
# Decimal('87.180878')

internet

fake.ascii_company_email(*args, **kwargs)
# 'michael17@lynn.net'

fake.ascii_email(*args, **kwargs)
# 'harrylloyd@hotmail.com'

fake.ascii_free_email(*args, **kwargs)
# 'landryjennifer@hotmail.com'

fake.ascii_safe_email(*args, **kwargs)
# 'sweeneydorothy@example.com'

fake.company_email(*args, **kwargs)
# 'whitney09@lowe.com'

fake.domain_name(*args, **kwargs)
# 'smith.com'

fake.domain_word(*args, **kwargs)
# 'wilson'

fake.email(*args, **kwargs)
# 'bradyadam@hotmail.com'

fake.free_email(*args, **kwargs)
# 'ecolon@gmail.com'

fake.free_email_domain(*args, **kwargs)
# 'gmail.com'

fake.hostname(*args, **kwargs)
# 'email-49.peterson.com'

fake.image_url(width=None, height=None)
# 'https://placekitten.com/748/98'

fake.ipv4(network=False, address_class=None, private=None)
# '150.231.191.162'

fake.ipv4_network_class()
# 'b'

fake.ipv4_private(network=False, address_class=None)
# '192.168.232.118'

fake.ipv4_public(network=False, address_class=None)
# '11.123.139.156'

fake.ipv6(network=False)
# '4a9f:dc70:9aba:53a:a0b1:d050:6d07:9b80'

fake.mac_address()
# '65:ec:40:78:62:92'

fake.safe_email(*args, **kwargs)
# 'owenswilliam@example.net'

fake.slug(*args, **kwargs)
# 'off-study-western'

fake.tld()
# 'org'

fake.uri()
# 'https://chambers-mcgee.com/search.htm'

fake.uri_extension()
# '.htm'

fake.uri_page()
# 'home'

fake.uri_path(deep=None)
# 'list/main/search'

fake.url(schemes=None)
# 'https://foster.info/'

fake.user_name(*args, **kwargs)
# 'michael98'

isbn

fake.isbn10(separator="-")
# '1-9759-1075-3'

fake.isbn13(separator="-")
# '978-0-915231-14-0'

job

fake.job()
# 'Contracting civil engineer'

lorem

fake.paragraph(nb_sentences=3, variable_nb_sentences=True, ext_word_list=None)
# ('Social scientist rock owner. Write visit him adult various. Throw fish guess '
#  'civil gun middle interview.')

fake.paragraphs(nb=3, ext_word_list=None)
# [   'Be involve push water. Pass my type report. Sure scientist economy '
#     'religious water.',
#     'Seat value decision professional month Mr hit war. Too PM resource '
#     'protect media or product address. Even central consumer. Choice speech '
#     'stop idea.',
#     'Past sit remember car. Especially sign chair about trouble.']

fake.sentence(nb_words=6, variable_nb_words=True, ext_word_list=None)
# 'Although building mention might.'

fake.sentences(nb=3, ext_word_list=None)
# [   'Father radio business social religious.',
#     'Fly life various little.',
#     'Modern nothing what well prove cold page.']

fake.text(max_nb_chars=200, ext_word_list=None)
# ('Into strategy young economy though big.\n'
#  'Democratic crime compare. Maintain see inside. Remember general practice '
#  'international risk.')

fake.texts(nb_texts=3, max_nb_chars=200, ext_word_list=None)
# [   'Bit child generation task local such. Election oil sea central buy level '
#     'everything. Eat specific central president brother this.',
#     'Deep police national exist rise. During off doctor cost begin actually. '
#     'Property read tend.\n'
#     'Power land part with none maintain wrong. Sound section tax dark teacher.',
#     'Street game such. Way or Mrs win tree arrive.\n'
#     'Central consider real oil they career. Story model stand I respond '
#     'throughout program. Collection three amount you.']

fake.word(ext_word_list=None)
# 'forget'

fake.words(nb=3, ext_word_list=None, unique=False)
# ['in', 'part', 'forward']

misc

fake.binary(length=1048576)
# (b'<[\xca\xb6\x1d\xca\xa7$%j\xfb\xa1\x08\xa7\xe8\xfb\x15\xac\xa4\xde'
#  b't\x17\xc6\x805\xbdrF\x06E\xa2Ns\x1c\xd9bMU{R\xb1\x8d\xceu\xcb\x97a\xa8'
#  b'\xac\xe6y\xe1\xec\x12\xd3dI\x92\xe3;g\x8f\xc1\xd8\x15\x98\xc5\x7f'
#  b'\xc5a\x84\xa0\x1dD\xa0\xde\xd3\x7fF[\x7f\x06\xdc$F\x8c\xb7y\x8f\xb7:\xb5'
#  b'3\xa7\xd7\xef\xb6\x10=9\xb8\x13F\x1e_\xdf\xd6 \xafd<\xa0)\x1cXb'
#  b'\n\x94\xfc\xb2\xe3\xa3\xf0~\xf8e\x82\x1f\xd5~\xb2\x1f\xba\xda\xf5\xf9'
#  b'U\xd3\xa5\x06\xe5\xbdm\xa2\xcaA\x19f\xf5\xec|\x8eN,\xdc*\x13|\xa6\xfb'
#  b'T\x0e\xf8\xf8\x9b\xd9\xc1\x94_*+\xad6\x93\xc9\x8d\x91#\xc7N\x85\xaf\x96\x8a'
#  b'\xae\xa4xP\xc9\xa0\x9fDI&\xa7\xaa/\xa0\xeb\xecj\x02-\x8a\rN\xa7t\x938\x14R'
#  b'\x85\xdc\xf3\xec\xea\xd3\xd8\x1d\x99\xe4Jf\\\x9e\xb2\xfdS\xd7?P\xe0\x0e;\xe3'
#  b"_\x90''\xbd\x8c\xd3#\xd4\xd586\x83#\x01\x9a8v3\xb8\x7fb\xa3\xf5"
#  b'\xb5\xcd\xf8\x8e\x7f\x8b\x1e\xea\xa8\xc9j\xce\xec\x83L\xde\xdf\x01\x0e\x9b'
#  b'\xcb\xcf\xcc/\xbd\x99g\xc5C\x14\xd3\x8a\x01\xdf\xc6t\xd0\xe8\xf5pWU\xe6\x8f'
#  b']\xd6\xc0\xee\x13\x0c\xce$\xc2\\\xf6;N-\xa6\x96\xaa\xb6\xf7j\xcdR\r+'
#  b'\x85\xcdj\x8eX\xba\xdf\x0c2S5\xee\x05\x18\xe4\xdf\x01\xacH\xf5\xe7Fsr'
#  b'\xd0\x89m\xcaG\xa5}\xa1/\xf1\xd8e\xb5k\x01g\xe1\x0e\xdd\xa6Q&\x0f\xad'
#  b'\xd8\xc9\xa9\x03I\xd2_f\x97\x86\xee\xf2\xbe5\x0f\xc2\xea\xaf\x18\xd2'
#  b'w\xb8\xb5#\xeby\x8eW\x80\xe8o\x9e~\xa6\x84\xa8\x04\xcb)\xc6\xee\xde0\xf2'
#  b'\xdd\t2\xcf\xcd\xdf\x83cs\x1d\x1f\x92\xd3\x96p\xc0\xa9\xc3`{,B\x1e\x8d'
#  b'4\xc6b\x16u/\x1f\xf8\xa2\xd1\x02\xe2\xf2\xe9\xea\x19\x8f\xc9\xfd/'
#  b'\x91\x05\xf9\x9dU<\xb6\x9f\xaa$\xb0\xca\xd4\x1fp\x1e\xa7\x03\x08\x95'
#  b'-\xc7\x1f\x02\xb2BjS2\x0e0\x18\xa2\xfbxHLY\xf5\xc2\xc8D \x07\xf1\xcc.n'
#  b'8\\1\xdc\xaf\t%y\xd0Ku{\x1e\xf8\xa1\xe8\x97G\xb1\xb1-Ccm\x93\xf0\x87\x84'
#  b'1\xba\x9b\x0c\x8d\xffE\xfb\x94\xde\xfb\xf5\t\xbe\xf1\x8b\xd3M\x84\x85'
#  b'\x9b*\xf5"h\xa5\xb1\xb7x\x15\x87\xaf\x92\xe3\xbe\xc2+.=^\xf0\xa2;\x8c'
#  b',\x87\xdfd\xef\x1a\xd7\xec\x8b\x03\x9b\xad\xd9s\x918{/\x05\x84|\xf1C\xd9'
#  b'\xdaX\xdc\x90s\xa3\xf5\xca\xe6\x92S\x84\x95\x87dUJg\x86\x90\xcc\xe4\xd7V'
#  b'\xd0\xb0\xab\xbao\x1f\xda"\xaa\xbaa\xdf(\xc5\xe0\xd1\xa5\x17W\x80'
#  b'\xc8\xb4\\\xf8\xed,c\xc4\xb3f\x8b\x15\x1b\xeb*\xbby\xf0\xd2\xfc'
#  b"\xa9\xe6\x08\x81\xe9Eu\x9d\x9a\xac\x1b\x04\xc2I\xc8\xab\x0f'v\xa2"
#  b'\xcf\xfd\xc5\xf2\x8d7\xac*\xe1\xae\xfb\xcb\xed\x1c\x01\xd3\xeb\xc2,us!\x01B'
#  b'\x94\x89\x15\xc7\xb5@}<\xfc\xa3\x86e\xd1\xab\xba\xf2\xc1O\xad\x90'
#  b'\xaf\x0f\xec\xe3\xd2\xe5\xe2\xbb\xf7\xc3&\xa0\xdd\xfei\xb8\xb5r\xb7\xb9'
#  b'\xb1|7D\xab\x07\x1c\xd46\x10>@73wo\xcd:m\xd2\xddxB\xa3\x96)\xfd\xce'
#  b'&\xfb/\x12;\xdcH\x16\x8dvua\n\x85\xcb\xeb\xf9d\xe1\x1a_}\xe4~\x81\x8a\xedb'
#  b'F\xa8My\xbb\x1eP\x8c/\x1c\x12\x83\xa5\xb8%d\n\xfflu<\xcbF\xff\x1c\n_ \xd8DfU'
#  b'\x7f\xc7\xbcG\xce\xbe:t-L\xaa\xf9+>\r\t,=\xe6\xc13o\xd7\x1b\xbf&dv2C\\\x9a'
#  b'\xc2\xc9\xa2\xbcas|3\x97\xe7\xc1\xdd\xdd\x8f\xf3V\xe5\xa5/\xb1\xf38\xc8~'
#  b'E(\xf6\xf07\xdc\x05\x15x\xfd2\x8f\x16[\x16\x85\xf2\xc8.\xb0)fr\xefR\x06{\x1b'
#  b'\x06\xd8\x8d\xb4.\xcb\xd9\xfa\x12}\xcd]\xb0\x1c\xb4\xfd\xdf3\xcd\x08'
#  b"h\xa4\xdc\xd7)\x1aEq\xb9'\xd2\x8c\xc3\x1d !\x07kWMY\xf4\xdb\x83Z\x9f\xbe\xa0"
#  b'\xd3\xf9F-^i\xb2\x1d\x9f\x91Ipl\x12\x0c\xbfM\x90V\x1ew^\xb7\xd0\xea%\xfe\xe6'
#  b'\xf3\xcd]\xe6\xc3\x08D-\n\xe8!\xa7\x87g\x8c\\\xc4\xb1\xcc\xfe')

fake.boolean(chance_of_getting_true=50)
# False

fake.csv(header=None, data_columns=('{{name}}', '{{address}}'), num_rows=10, include_row_ids=False)
# ('"Robert Flores","90985 Brandy Harbors Suite 473\n'
#  'Glennfurt, MD 32820"\r\n'
#  '"Michelle Cook","451 Jackson Plain Apt. 667\n'
#  'Lake Shellybury, WI 99379"\r\n'
#  '"Steven Austin","Unit 4061 Box 2565\n'
#  'DPO AA 70115"\r\n'
#  '"Joshua Campos","79660 Steven Centers Suite 057\n'
#  'Thompsonport, IN 46331"\r\n'
#  '"Jasmine Rivera","1048 Robinson Trail Suite 466\n'
#  'Bethfurt, MA 18903"\r\n'
#  '"Victoria Williams","Unit 3065 Box 3409\n'
#  'DPO AA 18553"\r\n'
#  '"James Weber","99405 Michelle Road\n'
#  'Christopherfurt, CA 72695"\r\n'
#  '"Caitlin Meyer","6788 Martin Falls\n'
#  'Andreashire, ME 18973"\r\n'
#  '"Stacey Mccall","408 Anderson Bypass\n'
#  'Marymouth, WV 30000"\r\n'
#  '"Jeffrey Garcia","7272 Fleming Union Apt. 724\n'
#  'Jeremyhaven, CT 83619"\r\n')

fake.dsv(dialect="faker-csv", header=None, data_columns=('{{name}}', '{{address}}'), num_rows=10, include_row_ids=False, **fmtparams)
# ('"James Kelley","USCGC Flores\n'
#  'FPO AP 08562"\r\n'
#  '"Angela Cook","1250 Amanda Lodge Suite 976\n'
#  'East Brandonfurt, ND 08108"\r\n'
#  '"Brian Mcgee","1368 Roger Fall\n'
#  'Christopherberg, MA 15108"\r\n'
#  '"Clarence Schneider","616 Andrew Orchard\n'
#  'Huertamouth, NC 05178"\r\n'
#  '"Crystal Macias","78135 Forbes Walk Apt. 430\n'
#  'North Allison, NM 05724"\r\n'
#  '"Mary Barry","58307 Terry Courts Suite 467\n'
#  'Danaville, IL 57530"\r\n'
#  '"Caroline Fleming","1822 Natasha Square Suite 719\n'
#  'Kristentown, ND 31125"\r\n'
#  '"John Garcia","179 Rojas Knoll Suite 157\n'
#  'Port Benjamin, SD 77938"\r\n'
#  '"Rachel Crane","599 Elizabeth Creek\n'
#  'Tinahaven, NM 63923"\r\n'
#  '"Melanie Bryant","4092 Sheri Brooks\n'
#  'New Matthew, MT 88070"\r\n')

fake.md5(raw_output=False)
# 'a9098354b95f4a413865fb2f4f03a954'

fake.null_boolean()
# None

fake.password(length=10, special_chars=True, digits=True, upper_case=True, lower_case=True)
# '^2Xn@yoxLz'

fake.psv(header=None, data_columns=('{{name}}', '{{address}}'), num_rows=10, include_row_ids=False)
# ('"Harold West"|"024 Cathy Flats Apt. 468\n'
#  'Toddland, OR 03155"\r\n'
#  '"Susan Haney"|"889 Tina Ville Apt. 304\n'
#  'Ebonyborough, NV 65304"\r\n'
#  '"Dr. Melissa Lewis DDS"|"921 Stephens Burg\n'
#  'North Brandonside, FL 95364"\r\n'
#  '"Meredith Lee"|"1163 Diaz Spur\n'
#  'North Sheila, NJ 46975"\r\n'
#  '"Carol Miller"|"6754 James Keys\n'
#  'West Brian, FL 74293"\r\n'
#  '"Mrs. Valerie Cohen"|"USCGC Wiley\n'
#  'FPO AE 77391"\r\n'
#  '"Joe Gibson"|"2336 Shannon Corners Suite 513\n'
#  'West Deborahfort, DC 05254"\r\n'
#  '"James Hicks"|"242 Mcintosh Expressway\n'
#  'Davisland, HI 73887"\r\n'
#  '"Joshua Watson"|"6428 Willis Forest Apt. 314\n'
#  'Port Mario, HI 76028"\r\n'
#  '"Victor Wagner"|"USNS Dunn\n'
#  'FPO AP 04670"\r\n')

fake.sha1(raw_output=False)
# '646dc2d66134502153ca17eb6e880dc0c2d28193'

fake.sha256(raw_output=False)
# '7fc1ab2bd2f9557353754e469eae8cca17490e1e5892175403293a7271b300bd'

fake.tar(uncompressed_size=65536, num_files=1, min_file_size=4096, compression=None)
# (b'OfPEqWyBfAwYcVIyyuRO1\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x000000644\x000000000\x000000000\x0000000002000\x0000000000'
#  b'000\x00012736\x00 0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00ustar  \x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x000000000\x000000000\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00y\x96LH-\x06\xa6\xc7:\xee\x1c\xe4\xd2:*\x1d&AH:\t\x9ew\xd3'
#  b'\xfb\x1d5\x07\r\xcb\x83e\xa6\xe1\x12\x9b1\xdc\xf7 \xa5\xf1U\x97@2\x02\xde'
#  b'\xc1\r_@\nM\xc6\xbf\xf7\x133\xb0\xd0\x80A\x00\x19\rgY\xcbq\xe0\xa1'
#  b'6\x10\xfb\x08J+5.\xdd\xca\xe5\xb4\x18\xaf\x90\xe4\x9e\xb8\x13O\xf5\xbd\xd0d'
#  b'\x16\xc1\xb6J\xdc\xbb\x8cz{\xe8\xaf\xcb\xcb\x9f\xb2\xd7x\xcc\xd9\xd8'
#  b'l\x1dw\xe8\x0b\x7f\rgj\xef\xe3\xa1\xbfYN\xa3\xff\xe4\x13\xfa\x11\x9f\x0bi'
#  b"\x00\x81\x97\xe5\xefb\xfc\xf6\x97\xa3\xee\x07'\x17#CKrc\xf1\x0e\t\xae\xfe"
#  b'\xa4PN\xb8\xaf<Hd\x8b)\xa9o\xfa\rG\xf2\x04rN\xfe\xb7\xff\xbd\x14'
#  b'\xbb\xd3f\xd2,!\xce\xd2\xf6\xbf\x94}\xb7\xb9\n\x15\xab\xcd\x1c\xb8H\xee\x9b.'
#  b"\x9fV\x8e\x8e\xe0\xd0\xf1\x9b^f'\xd0A\xfb\x7f(B\xcb\xcd\xe8E\xa2h\x8b"
#  b'\xfe\xc1\x96t\x14a\xcak\xc0\xb9k:\xf3:\x18\x9e\x0cZ}\xc4%W\x877\x0e:\xec@'
#  b'o\x84K\xdd\xfb`\xf3\x9b\xc8l\xf7\xcd\xd9\x1bO\x8d\xe7\xda\xb1\x9d'
#  b'\x00\x9a\xa2o\x16\x8c\xff\xf2\xc7\x05\xbd\xa3O\xc0\xc7)\xb4e\xd7\xe8R\x0542'
#  b'U6\x7f\xf1\xc4\x14\x12\rZ\x8b`\xe9\xf7\x97\xc6tI\xedx9?\x8f#\xb0CI\x0e\x19'
#  b'\x16\xccZ`s\xbc2\xb4o\xf1\xea\x80f\xb6\x9el}:\xcfm!,\x96Y*\x1b\x1f\x9b'
#  b'\xda\x1eJ\xde\xd2:\x90}\xe7X&\xa8\xa8\xdbl\xca>\xcat\x14r\xae\xabH'
#  b'\xe4:\xbf\xcfVm\xd6\xec\x9d7XY\xb6Eex\xb0j\xf6nb\xe9JL\xad\xcc+\xbf'
#  b'\x93%M\xb0^\x9c\xf4\x96\xf3\x06\xbf\x12\\\xf5\x82\xbe\xe1\xea\xe6Q(\x9c\xa7('
#  b'\xf0)0q>\xae\xb8A\xc3\x81\x16Z|\x8f"\xb6\x8b\xd3\xd0AK\xc0\xcc\x8dC\r\x83.'
#  b'\r\x0f\xf2_7\x14Ua8\xac"\x13\xc8[f\xa3\xd4\xdf}\xcc\xa9\xaa]\xf8'
#  b'\xcfQ\xd5\x1dI\xb8D\xbb@\xa5lH\x05d\x1d\xb1%\xccZ\xd5\xb9\xedm!3\xed\x08\x7f'
#  b"N\xe1\xbc\x08\xdeL\\]J=l\xd3\xb3\xeb\x9ffu'\xb4\xb0\xc7B\xbc{z\r\x8b\xfc"
#  b'r\xf8\xd8\xb94\x02C\xe6\xbb\xca\r\x04\xf3\xd8\xcf\x16\x1eB\xad\xaa@\xf9\xe9y'
#  b'HMU\x98\x151,\x8fo\x16s\xa4\x17\x94]\x89j\xb9\x05h\xcf\x9f\x1e\xe0'
#  b'"\x99\x19\xb0\xb7KuK{]-\x89\xaa\xe2\xfe\xaft\xb5<tg\xd0err\x81^MV\xdakD'
#  b']\xc3\x95kec{E\xddJ6\xf1h\x1db\xce\r8\xf4\xff\xcc\xf1\xd4\x13\x1bC\xcb\xba'
#  b'\x06m\xfa\xb3\x94l\xf2\x1f"\xb0\xc1\x18c\xe0%H\xed\xdd\xb9\xac:\xec>5'
#  b'`\xbb.\xbc\x13\xa9\xcf^}\xf2\xa2\x94\xa5l\xb9Pci\x06\x8dJ\xae\xcfj\xdeU\xa8K'
#  b':\xe2us$\xebb,\xc5\xbdKk\xf7\x8fK\xeb\xb7=\xa0[\x0c\x98\xb3\xccL"\xaf\xa1'
#  b"'duG\x86p\xa0\xc2\x12\xd7\xde\x0c\xb5~(\xa3\xfa\x9c\xe7\xba\x16C\x1f\x15"
#  b'\t#\x05\xc3Y\xbd\x8fM\x05B\x06\x1d\x03Up\x1e\x82lBw\xc4\xb1L1\xac\xdfs\x94'
#  b'\xf6\xbeE\x11\xf1\x0c\xb0\xbd\xce\xb3\x97\xfe\xad\xb03{}Q/\xb8\xb4\xa3\x07!'
#  b'\xb5U\xed\x8e\xea}i\xac\x9a\xeb\xbe\x0c\xa2\x89Y\xe5v\xc0\xcar\x99z\x03\xc9'
#  b'\xdb\xbb\xfc x\xfe\x12\xc6\xe5\xa8IE\x11a\xc61\xea\xa8\xc1x\xce\xff\x08\xf9'
#  b'\xb6|\x83o\xb8\x0b\xf8\x91\x10Ou\xe4\x81\xc8\xf4\x13\x1d\t\xe3R\xcbs\xa5b'
#  b'\x1c\x04B>\x7f\x88\\<\x1a\xdea\x02\xf0)\xad\x11R\xd4\xab\xa7]\xb2M6'
#  b'\x81\xc7\x03\x9c\x0e$Vv\xab\x7f\x17\xd1\xdb \x86\xafF)\xf9\x1e\xa2[C\x8b'
#  b'\xf5\x8fLv\x7fVg\xbf\xe6u\x10\xbd\x036\xa5\x80\x06\xa5\xd0\x85\x80\xd3\xecm'
#  b'Ul\xcf\x07\xa5\t\xde*7\xd4\xee\x03\xd6#?Jj\x8f|\x1d\xec\xcaIt\n\x95`\x15'
#  b'\xe2y^\xf2\xe9\x1e\x10\xb6-2\x02]ZN\xde%j\xe6\xc5\x8f\\\x00t\xd6\xa2\x1cLM'
#  b'm\xf18\x1c\xed\x8d\xdd5\x9d\xc5\x13\x93\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x00\x00\x00\x00\x00')

fake.tsv(header=None, data_columns=('{{name}}', '{{address}}'), num_rows=10, include_row_ids=False)
# ('"Dr. Corey Welch DDS"\t"3400 Norman Common Apt. 590\n'
#  'East Karenbury, GA 29373"\r\n'
#  '"Andrew Coleman"\t"85157 Joseph Squares\n'
#  'New Jeremy, LA 15177"\r\n'
#  '"Janice Anderson"\t"3703 Morgan Key\n'
#  'New Lisa, VA 52567"\r\n'
#  '"Laura Dickerson"\t"Unit 9858 Box 9198\n'
#  'DPO AA 14789"\r\n'
#  '"Christina Dalton"\t"171 Bryan Tunnel Apt. 313\n'
#  'Sherrimouth, WY 37899"\r\n'
#  '"Andre Adams"\t"5450 Mclean Shoal\n'
#  'Port Jenna, NV 75502"\r\n'
#  '"Pamela Mullen"\t"08508 Matthew Shoal\n'
#  'East Mark, DE 04993"\r\n'
#  '"Angela Rocha"\t"99943 Crane Ports Apt. 916\n'
#  'Charlesland, NH 39124"\r\n'
#  '"Courtney White"\t"4316 Hamilton Centers\n'
#  'North Angelaside, VA 35989"\r\n'
#  '"Lori Smith"\t"838 Wendy Street\n'
#  'New Mckenzietown, WV 72501"\r\n')

fake.uuid4(cast_to=<class 'str'>)
# '7be8b5b0-476c-4970-a763-185d2cc14aa9'

fake.zip(uncompressed_size=65536, num_files=1, min_file_size=4096, compression=None)
# (b"PK\x03\x04\x14\x00\x00\x00\x00\x00\x17}\x91Ow\x05'\x8b\x00\x04"
#  b'\x00\x00\x00\x04\x00\x00\x15\x00\x00\x00XUZjvleGBUGDhmAAcdcX1}\x86\x84\x1d|'
#  b'\xe6\xc6\x11P\x88e\xbes\xca-\xb1:5\x98r\x88\xed\x14k\xe16\xb4\x88\xcc'
#  b'k\xa7\x90R\x8d\xb9\xd3[,F\x07y\xbf\x94<\x18\xf5\xc2O\xc5\x87W\xd7\xe7'
#  b'X\xce\xfe\xb4;<\x93\xdc\x19\xd8\np\xcb\x19W\x866l\x10)\xc8\xb4\xb3\xb7'
#  b'\xea\x15\x86\x8a\x9d\xd9\xcdE\x0e\xe4>\x1c\xc0\n\xbf\x01\xc6Vn\x04'
#  b'\xd2\xd8\x9e~\xe1\xf7XqoF\xe5\xfe>\xa4\xe6\x87A\xe6\xba\xdc\xf7\xc0p\x14'
#  b'\xde\xad\xc9G\x05H"\xfb\xa0\xba\xfa\x0f\x90\xce\x17HOR\x83\rU\xc9`q'
#  b'\x84\xfe\xcc\xb2\xb1svwB&9\xe9\xb2\x7f\x94\x89\xf3\xab\x12\x83\x8d\xfe\x99r'
#  b"5\xf8x\x93\xf9\xa4%\x9a*b\xe8\x08X\x86\x93Q3\x9ct\x9f\x85\xea|C1't\xa0"
#  b'BY\xc0\xe1\x03\x17\xd96\t\xfb\xb0P\x9f\xec\x82\x12\x16\xa0\xb5\xa86\x94\x89E'
#  b'\x88YO\x07\x99\x1a\x14#\x98\x9fwSY\x95X9W\x14\x1a\xd6q"\xc9\xabD9PK'
#  b'\x04>3\x1c\xf62-\x15\x94\xd2k\xf0$\x82\x9e\xe0\xb6K\xdd\xb9\xd7\x8e*\xaf'
#  b'h\xa2Vw\x11Vco\x1f\x87\xff\x10\xec\xf4\xbd\xf6\xf2#\x0b1\xeb\xee/\xd9'
#  b'\xef\xebg\x17@\x01\xc9&\x7f\xf8_\x9f=J\x1d,-\xb2l\xa0\x13\xf6\x16\xe0'
#  b'\xb3XR\xab\xcd\xbc\xe9\x91\xb4\x14<g\x15\x7f\x19oR\xc9\xd8\xa6YAG\xe9'
#  b'\xdf\x85d$\xad:\xd2c\xfb\xd9\xb6\xa4\xe4*\xe2!\x8b\xffR\xfc\xc0G\x10F'
#  b'\xef&W\x1eD2"#;\xcb\x9d\xac\xb3\xec\xc8\x0c\x1b/\xa2\xd7*AIO+h\xfbc'
#  b'B \x9b\xa3|AK2\xae\x03\xee\xfcoD\xa3\x8bI\xd2\x11\x97\xa2\x12\xd4\xe6'
#  b'\xf6\xad=q\x98\x94b(g\x1d\x9e\xf1\xc3\xdd\x14\x8cl\x1a\x99VC\xe1\xabG'
#  b'\xc3>\xc0\x11\xc6\xb8\xcf<\xd1\xab\xbe\xd1\xd4\x1a\xfe?F(\x077$\xb3\x8a\x7f'
#  b'\xebG\xed\xf2\x84\x0f\x01DI\x11|JO\xcdQ^D=\xbb]\xe3\x14\x9cI#\x86\xd8\x1c'
#  b'\x90G\xc0$O\x94\xe0\xc7"\x9f\x93O\xfe\xe8i7Q\x14\xe3V-x7\x01G\x1c\x00\t'
#  b'wS\x9c\xe8\xf3\x18\xcfg,`\xd9\xa6\x15#\x7fL\xfb\xab`$\x1d\xd3z\xfb'
#  b'\x89\xb9\x7f]V\r\xce\x89\x02\xe82\xa9\xe5 \xe3\x18\xcbw\xf4eXW\xd2\xde'
#  b'e\x81T\xd6\xc3\xbd\x0e\x8a\xbf\x9c\x1e\x00\x9a\x1b\xfc\xee-\xa1\x86\\'
#  b'\xfc\xeb\xa3\x97\xb1\xa5\x9b\xb6\x8a\x0bC5\xfb\xe8\xa1\xb4q8Wt\xf1\xb3I\xdb'
#  b'Q>\x03\x0f2z\xdd\xc2\xbb\xf6Z\xb7R\xfb\xbd\xae\xe7\x98\xaa\x01\xfb;\x8e\x83'
#  b'\xf4\xb6j\x0c"\xea\x11m\xdd\x84cD\x04\x0eq\x90\x8dL\xc4\xf0\xf5\xa5\x19J'
#  b'\xb9\x1d73\x8eOl\xbb\x07\x93|\x8b.\xe0\xfd\x17\xa1\xf31\r\x84D\x11\x1f'
#  b'U=\xf7\xe6^6\x94\xd4\x0e\xdc\x8d3X\xac\x94\xdc\xb7\x9e|*2\x89T\x91'
#  b'\xe9.\xc6\x7f#\xe8Fb\xdaf\x99\xda$\x88/\xc5r\x0e0;\xf44\xc0H\xd1i\xea|'
#  b'\x8b]\xd1\xc0\xcf\x8d\x8e\x88\xbb.\x9a\xfd0W\xde\xebk&x\xbcs\xf2\xdcD'
#  b'\t\xf6{\x9f\x08,\x97e\x16\xb9\xae\x02\xd4\x81\x98z\x9bP~\x04\xddq\x07\x11'
#  b'\x94\xc2\x18\xfb\x04\x8c\x91\x0cdo\xab\xcdb\x98\xcbA9\x82\xc01ic\x8b\x8b'
#  b"u\xe4\x8d'\x86b\xfc\x81\xf2W\x85\xee\xab\x12\xd3\xff\xcb\x82,\xcatY\x11\r"
#  b'o7\x08\x1eM;N\xab\xdf\x89b\x02\xeb\x03!\xdd\xc5\xbc"\xfdp[\xd7k\xa6\x97y\xe5'
#  b'\xb5\x01\xfd\xc1\xcf\x869\x1a\xf6jrD#\xf1USS\xd76\xcc\x87#\x95\x03\xceY\x0e#'
#  b'n\xdb\xa9[\x07[\xf7NqE\xb5\x98\xf9\xf2S\xdf\xcb\xedW\xab\x94\x9aL\xf0\xf3czv'
#  b'."\x80\xf3C\xdc>)\xe2\xb1-%\xdao35\xfd\xe1Q\xa9m\xd1U\xd2\xef\x8d\xe2H'
#  b'\x03\x05\xac\xee\xfbA\x903\xe7\xef*T!\x98\xe3\xac\xf3\x1d\xbb\xcc3\x99U\x97'
#  b'\xdb\xca\x9a\xaboR,ln\x15\xe6#\xd9\xc5\x98;\x17\xf6!!D|X\xfc\xb0\xfd\xf2~'
#  b'\x9d\xfb\xc4#JC\x1d\xea\x93E3\xf2\xb4)\x86U\xb3\xef_\x83\xbc\xd6\x1eP'
#  b"K\x01\x02\x14\x03\x14\x00\x00\x00\x00\x00\x17}\x91Ow\x05'\x8b\x00"
#  b'\x04\x00\x00\x00\x04\x00\x00\x15\x00\x00\x00\x00\x00\x00\x00\x00'
#  b'\x00\x00\x00\x80\x01\x00\x00\x00\x00XUZjvleGBUGDhmAAcdcX1PK\x05\x06\x00\x00'
#  b'\x00\x00\x01\x00\x01\x00C\x00\x00\x003\x04\x00\x00\x00\x00')

mockerena

fake.empty()
# ''

fake.price(minimum=0, maximum=20)
# 16.78

fake.regex(expression='[a-zA-Z0-9]{12}')
# 'd79eSfd98Sz2'

fake.weighted_choice(elements=['a', 'b', 'c'], weights=[10, 2, 1])
# 'a'

person

fake.first_name()
# 'Monica'

fake.first_name_female()
# 'Catherine'

fake.first_name_male()
# 'Howard'

fake.last_name()
# 'Monroe'

fake.last_name_female()
# 'Davis'

fake.last_name_male()
# 'Peterson'

fake.name()
# 'Kimberly Hayes'

fake.name_female()
# 'Kimberly Simpson'

fake.name_male()
# 'Guy Robinson'

fake.prefix()
# 'Mrs.'

fake.prefix_female()
# 'Mrs.'

fake.prefix_male()
# 'Mr.'

fake.suffix()
# 'DDS'

fake.suffix_female()
# 'DDS'

fake.suffix_male()
# 'DVM'

phone_number

fake.msisdn()
# '1871519920248'

fake.phone_number()
# '425.060.2679x171'

profile

fake.profile(fields=None, sex=None)
# {   'address': '450 Bell Plain Suite 835\nMitchellshire, CT 90095',
#     'birthdate': datetime.date(1974, 12, 4),
#     'blood_group': 'B-',
#     'company': 'Jacobson-Elliott',
#     'current_location': (Decimal('11.6389045'), Decimal('-5.498963')),
#     'job': 'Furniture conservator/restorer',
#     'mail': 'vanessa06@yahoo.com',
#     'name': 'Lindsey Moore',
#     'residence': '28190 Mark Road\nEast Jonbury, AK 59940',
#     'sex': 'F',
#     'ssn': '575-51-4586',
#     'username': 'kknight',
#     'website': ['https://www.sutton.com/', 'http://gonzalez.org/']}

fake.simple_profile(sex=None)
# {   'address': '492 Felicia Coves Suite 951\nNew Keithtown, WY 72377',
#     'birthdate': datetime.date(1952, 1, 18),
#     'mail': 'mcleangregory@yahoo.com',
#     'name': 'Rachel Lawrence',
#     'sex': 'F',
#     'username': 'robertking'}

python

fake.pybool()
# False

fake.pydecimal(left_digits=None, right_digits=None, positive=False, min_value=None, max_value=None)
# Decimal('39.382069')

fake.pydict(nb_elements=10, variable_nb_elements=True, *value_types)
# {   'any': 'bIEWImVSeilExvfVzAQt',
#     'anything': 'sarah38@coleman.info',
#     'could': 'reeseshirley@peterson-baker.com',
#     'country': -88977.0,
#     'decade': 'drew86@kelley.com',
#     'do': 'http://hendrix-smith.com/tag/register.html',
#     'face': 3725,
#     'full': 'eUgYmsfBwJpsFyWEfeLA',
#     'own': 'http://www.turner.com/about/',
#     'reach': 'https://schneider.info/tags/about.html',
#     'soon': 'http://deleon.com/terms.asp',
#     'wall': 'TaiIVervjjrQwFaajGOs',
#     'worry': 'https://www.wu.biz/main/author.html'}

fake.pyfloat(left_digits=None, right_digits=None, positive=False, min_value=None, max_value=None)
# -67743.0

fake.pyint(min_value=0, max_value=9999, step=1)
# 3053

fake.pyiterable(nb_elements=10, variable_nb_elements=True, *value_types)
# (   'GldbKzKOMarKaMFqQDmb',
#     'http://www.ford-williams.com/main/',
#     'vYQaVmyaQrcvJzhJgihZ',
#     'KJyejdinuwiDDUqoCnoJ',
#     datetime.datetime(2008, 4, 15, 16, 47, 16),
#     datetime.datetime(1981, 10, 2, 1, 51, 11),
#     'YzXjwbpKihNWeRCyTVzu',
#     Decimal('8014.687'),
#     'vgwjrqxVgMgrXThstPQG',
#     Decimal('-598068520.484'))

fake.pylist(nb_elements=10, variable_nb_elements=True, *value_types)
# [   datetime.datetime(2014, 1, 21, 4, 21, 52),
#     8014,
#     681,
#     'WsSaNstwIaDHcVKmwGmR',
#     datetime.datetime(1976, 11, 8, 10, 0, 35),
#     'derrick66@yahoo.com',
#     'https://smith.com/search/',
#     -760473.42934]

fake.pyset(nb_elements=10, variable_nb_elements=True, *value_types)
# {1859, datetime.datetime(2011, 3, 21, 17, 20, 40), datetime.datetime(1971, 11, 27, 14, 27, 40), 'katherinecarter@hotmail.com', 'PkylXftPgKdqkcDzqObK', datetime.datetime(2010, 10, 23, 3, 35, 52), 'https://wright.com/', 4047, 7094, 'npviFeKJukhLXSFpIdxL', -7811233.3}

fake.pystr(min_chars=None, max_chars=20)
# 'WpbgERLJeDwPLNqdAQoU'

fake.pystr_format(string_format="?#-###{{random_int}}{{random_letter}}", letters="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ")
# 'n2-0755234c'

fake.pystruct(count=10, *value_types)
# (   [   Decimal('-13540452324169.0'),
#         'HRTLLqhfMsyBUuTwPNQt',
#         811.702,
#         'xqQhyFatECkNSIjbVpxP',
#         -567370968463.22,
#         'rUwhBmMMSRrNibOLnarU',
#         'http://jackson.com/',
#         1408,
#         'rzShTqnQEfTZFwUgQFmU',
#         'BGZodRmEsmeCIYnmXLGc'],
#     {   'hear': Decimal('12369.435855'),
#         'inside': 'IEtHqVPrvNUWScErsLTY',
#         'lawyer': 'http://www.brown.com/faq.html',
#         'necessary': 8257,
#         'operation': 'sBwzglaZfNFnLhBjbYqu',
#         'or': datetime.datetime(1979, 3, 27, 3, 32, 30),
#         'our': 6768,
#         'professional': 'ZlsAberdyIlJHZoCrSag',
#         'record': 8488,
#         'research': 3544},
#     {   'cold': {   8: 'DnMwftNGSOdKmUtKQQxU',
#                     9: [   'vbMZtMmBkjeuzBudfpSm',
#                            'RCpBHQdiphIcNNlxSxxw',
#                            'ebryant@rivera-mccann.com'],
#                     10: {   8: datetime.datetime(1996, 12, 18, 11, 42, 15),
#                             9: 'SUYNmeCAOEjoqYBjvSat',
#                             10: ['vIziFlxhKaTBYLSVnFxo', Decimal('-9105.65')]}},
#         'hour': {   7: Decimal('841271008.3'),
#                     8: [   Decimal('311033719146.0'),
#                            datetime.datetime(2007, 7, 8, 8, 34, 45),
#                            223258276.5],
#                     9: {   7: 'OhyKgLnDCRXwjYnzzmoo',
#                            8: 'jVsAZXLSxqaYqXkNQIvb',
#                            9: ['CicHUNSAEiErymSfNkeb', 968]}},
#         'mean': {   5: 5393,
#                     6: [   'https://www.garrett.com/',
#                            5269,
#                            datetime.datetime(2006, 1, 26, 9, 16, 23)],
#                     7: {   5: Decimal('2634721280916.84'),
#                            6: Decimal('846707683.27825'),
#                            7: [   'https://www.zimmerman.com/',
#                                   'IHvYFjdDHEGOUiEHqJAP']}},
#         'never': {   4: -834261.80146,
#                      5: [   'starkbrian@alvarez-dougherty.com',
#                             3449,
#                             'DOgmMaICIEoJYPgLxQDS'],
#                      6: {   4: 'bUotzJfglHzxGyMblnkX',
#                             5: 'sUAKifKmBpJXfWinlYEO',
#                             6: [5648, 'grixWfpmMxCkrstxiUGp']}},
#         'policy': {   9: 'dOxQtYxnorjnNAylcybt',
#                       10: [   'https://www.smith.net/category/tag/posts/homepage/',
#                               'UcrHiubkbwxUwuMLekpY',
#                               'keithanderson@hotmail.com'],
#                       11: {   9: 7038,
#                               10: 'DweqThgILmtONoNwYhns',
#                               11: [   Decimal('-610193752.97'),
#                                       Decimal('8.949')]}},
#         'rest': {   2: 'RDUEeMKSqvllYmLAdlMY',
#                     3: [   920067058.845,
#                            'nZIhIKGblTmLJnPNjkQR',
#                            'https://mccarthy.com/main/list/posts/home/'],
#                     4: {   2: 'MlfORxISpVlfsvuFvvto',
#                            3: 'martinjohnny@lynch.org',
#                            4: [   'https://clark.com/categories/app/faq.html',
#                                   5619]}},
#         'significant': {   0: datetime.datetime(2018, 8, 11, 14, 1, 22),
#                            1: [   'http://www.martinez.net/',
#                                   'https://www.morales-herman.com/app/categories/main.asp',
#                                   'YjVqprZmsQzZDpHuIcAY'],
#                            2: {   0: -7952.5686,
#                                   1: 'tznlmdnqjBnsZKkBKbvB',
#                                   2: [   1473,
#                                          'http://www.barton.com/search/list/login.php']}},
#         'strategy': {   6: 'myoder@hotmail.com',
#                         7: [   'hernandeztiffany@hotmail.com',
#                                'wQMlQOkBuzsVXjgEpIZp',
#                                datetime.datetime(1974, 10, 13, 14, 54, 11)],
#                         8: {   6: 3876,
#                                7: 'ISLzWOPvZWVHOwgDrSSf',
#                                8: [   'JWvWmBcgWHYmDfufNeEz',
#                                       'pUSajWlzevGzwUAxxIMx']}},
#         'wife': {   3: 8954,
#                     4: [   'EeCtgLpDddwUicuLvgui',
#                            'shannonbriggs@colon.com',
#                            Decimal('-6937.5183')],
#                     5: {   3: 9418,
#                            4: 'WzjiAVybyrqzWoAqBipj',
#                            5: [6294, 'OqslaYxCpZZnmpcaUzwH']}}})

fake.pytuple(nb_elements=10, variable_nb_elements=True, *value_types)
# (   8381764.17824994,
#     'linda94@ortiz.biz',
#     datetime.datetime(1978, 6, 3, 1, 56, 27),
#     'oRHkIVsefCJQpucnsYQM',
#     8259477.0,
#     'jeasMeHZAqGldPMxpeof',
#     'zCbgTRLOmQsqTyFioKpw',
#     'https://www.aguilar.com/register.htm')

ssn

fake.ein()
# '94-4286711'

fake.invalid_ssn()
# '678-00-1438'

fake.itin()
# '980-79-7149'

fake.ssn(taxpayer_identification_number_type="SSN")
# '444-95-7134'

user_agent

fake.android_platform_token()
# 'Android 2.2.3'

fake.chrome(version_from=13, version_to=63, build_from=800, build_to=899)
# ('Mozilla/5.0 (Windows NT 5.01) AppleWebKit/531.0 (KHTML, like Gecko) '
#  'Chrome/54.0.886.0 Safari/531.0')

fake.firefox()
# ('Mozilla/5.0 (Windows 98; dv-MV; rv:1.9.2.20) Gecko/2013-09-09 14:02:27 '
#  'Firefox/15.0')

fake.internet_explorer()
# 'Mozilla/5.0 (compatible; MSIE 8.0; Windows NT 6.2; Trident/4.0)'

fake.ios_platform_token()
# 'iPad; CPU iPad OS 9_3_6 like Mac OS X'

fake.linux_platform_token()
# 'X11; Linux i686'

fake.linux_processor()
# 'x86_64'

fake.mac_platform_token()
# 'Macintosh; U; PPC Mac OS X 10_5_7'

fake.mac_processor()
# 'U; Intel'

fake.opera()
# 'Opera/8.40.(Windows NT 5.01; ig-NG) Presto/2.9.176 Version/12.00'

fake.safari()
# ('Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_10_1 rv:4.0; id-ID) '
#  'AppleWebKit/531.20.4 (KHTML, like Gecko) Version/4.0 Safari/531.20.4')

fake.user_agent()
# ('Mozilla/5.0 (Windows NT 4.0) AppleWebKit/531.0 (KHTML, like Gecko) '
#  'Chrome/44.0.881.0 Safari/531.0')

fake.windows_platform_token()
# 'Windows NT 5.1'

API Routes

Retrieve all schemas

GET /api/schema

Retrieves one or more schema

Query params (optional):

Parameter

Description

projection

Conditional query where the user dictates which fields should be returned by the API

Store a schema

POST /api/schema

Stores one or more schema

Retrieve a schema

GET /api/schema/{schema_id}

Retrieves a schema document

Parameter

Description

schema_id

Either the name or the id of the schema

Replace a schema

PUT /api/schema/{schema_id}

Replaces a schema document

Parameter

Description

schema_id

Either the name or the id of the schema

Update a schema

PATCH /api/schema/{schema_id}

Updates a schema document

Parameter

Description

schema_id

Either the name or the id of the schema

Delete a schema

DELETE /api/schema/{schema_id}

Deletes a schema document

Parameter

Description

schema_id

Either the name or the id of the schema

Generate data

GET /api/schema/generate

Generates sample data for a provided schema

Query params (optional):

Parameter

Description

seed

The seed to use for the data generator

numrows

The number or rows of data to generate

file_format

Format of output

include_header

Include header with CSV, TSV or template

exclude_null

Squash nulls for JSON output

Generate data

GET /api/schema/{schema_id}/generate

Generates sample data from a schema

Parameter

Description

schema_id

Either the name or the id of the schema

Query params (optional):

Parameter

Description

seed

The seed to use for the data generator

numrows

The number or rows of data to generate

file_format

Format of output

include_header

Include header with CSV, TSV or template

exclude_null

Squash nulls for JSON output

Get provider types

DELETE /api/types

Returns all available provider types

API Reference

Mockerena

app

Indices and tables