<pre style='margin:0'>
Perry E. Metzger (pmetzger) pushed a commit to branch master
in repository macports-ports.
</pre>
<p><a href="https://github.com/macports/macports-ports/commit/e6469bd6b3677f76e7b6657a3b2b59b622b6885c">https://github.com/macports/macports-ports/commit/e6469bd6b3677f76e7b6657a3b2b59b622b6885c</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit e6469bd6b3677f76e7b6657a3b2b59b622b6885c
</span>Author: Chih-Hsuan Yen <yan12125@gmail.com>
AuthorDate: Sat Feb 24 00:21:44 2018 +0800
<span style='display:block; white-space:pre;color:#404040;'> py-mitmproxy: update to 3.0.3
</span>---
python/py-mitmproxy/Portfile | 20 +-
python/py-mitmproxy/files/pr2170.patch | 13 --
python/py-mitmproxy/files/pr2208.patch | 70 -------
python/py-mitmproxy/files/pr2239.patch | 352 ---------------------------------
4 files changed, 7 insertions(+), 448 deletions(-)
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-mitmproxy/Portfile b/python/py-mitmproxy/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 18dee34..4966404 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py-mitmproxy/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/python/py-mitmproxy/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -5,7 +5,7 @@ PortGroup python 1.0
</span> PortGroup github 1.0
<span style='display:block; white-space:pre;background:#ffe0e0;'>-github.setup mitmproxy mitmproxy 2.0.2 v
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+github.setup mitmproxy mitmproxy 3.0.3 v
</span>
name py-${github.project}
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -24,9 +24,9 @@ long_description \
</span>
homepage http://mitmproxy.org/
<span style='display:block; white-space:pre;background:#ffe0e0;'>-checksums md5 187145b3044ba4a9684e47d10652bd11 \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- rmd160 4bb785c9cd18ee16d7d865710cdd4bbdca8df1cb \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- sha256 48e2e4bcaf39d9a8b7fa478e9ca0a9e335baa5b8e90d1adea46cdcba2b80fa05
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums md5 10dad9fd64341911088aab69fe7246bd \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ rmd160 984900dd57989c6bdece066b95a3cd9bda77dd59 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sha256 543a697ff6a3d1dd97e7f72470a60e3abb8d8524b5686b3b333407b980150ea7
</span>
python.versions 36
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -38,14 +38,12 @@ if {${name} ne ${subport}} {
</span> port:py${python.version}-brotlipy \
port:py${python.version}-click \
port:py${python.version}-certifi \
<span style='display:block; white-space:pre;background:#ffe0e0;'>- port:py${python.version}-construct \
</span> port:py${python.version}-cryptography \
<span style='display:block; white-space:pre;background:#ffe0e0;'>- port:py${python.version}-cssutils \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:py${python.version}-h11 \
</span> port:py${python.version}-h2 \
<span style='display:block; white-space:pre;background:#ffe0e0;'>- port:py${python.version}-html2text \
</span> port:py${python.version}-hyperframe \
<span style='display:block; white-space:pre;background:#ffe0e0;'>- port:py${python.version}-jsbeautifier \
</span> port:py${python.version}-kaitaistruct \
<span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:py${python.version}-ldap3 \
</span> port:py${python.version}-openssl \
port:py${python.version}-parsing \
port:py${python.version}-passlib \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -55,7 +53,7 @@ if {${name} ne ${subport}} {
</span> port:py${python.version}-sortedcontainers \
port:py${python.version}-tornado \
port:py${python.version}-urwid \
<span style='display:block; white-space:pre;background:#ffe0e0;'>- port:py${python.version}-watchdog
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ port:py${python.version}-wsproto
</span>
# Testing dependencies
depends_build-append port:py${python.version}-pytest \
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -63,10 +61,6 @@ if {${name} ne ${subport}} {
</span> port:py${python.version}-flask \
port:py${python.version}-tz
<span style='display:block; white-space:pre;background:#ffe0e0;'>- patchfiles pr2208.patch \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- pr2239.patch \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- pr2170.patch
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span> post-patch {
# Remove all upper bounds - potential breakings are detected by test
reinplace "s/, *<\[0-9=.\]*//" ${worksrcpath}/setup.py
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-mitmproxy/files/pr2170.patch b/python/py-mitmproxy/files/pr2170.patch
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 7f3ca3f..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py-mitmproxy/files/pr2170.patch
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,13 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git test/mitmproxy/contentviews/test_xml_html.py test/mitmproxy/contentviews/test_xml_html.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 899ecfded..2b0aee4d6 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- test/mitmproxy/contentviews/test_xml_html.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ test/mitmproxy/contentviews/test_xml_html.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -23,7 +23,7 @@ def test_format_xml(filename):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- path = data.path(filename)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- with open(path) as f:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- input = f.read()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- with open(path.replace(".", "-formatted.")) as f:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ with open("-formatted.".join(path.rsplit(".", 1))) as f:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- expected = f.read()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- tokens = xml_html.tokenize(input)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- assert xml_html.format_xml(tokens) == expected
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-mitmproxy/files/pr2208.patch b/python/py-mitmproxy/files/pr2208.patch
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index b541ca2..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py-mitmproxy/files/pr2208.patch
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,70 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git mitmproxy/proxy/protocol/http2.py mitmproxy/proxy/protocol/http2.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index a6e8a4dd9..c1812b3da 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- mitmproxy/proxy/protocol/http2.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ mitmproxy/proxy/protocol/http2.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -188,7 +188,7 @@ def _handle_data_received(self, eid, event, source_conn):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self.streams[eid].kill()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self.connections[source_conn].safe_reset_stream(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- event.stream_id,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- h2.errors.REFUSED_STREAM
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ h2.errors.ErrorCodes.REFUSED_STREAM
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- )
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self.log("HTTP body too large. Limit is {}.".format(bsl), "info")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- else:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -207,7 +207,7 @@ def _handle_stream_ended(self, eid):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- def _handle_stream_reset(self, eid, event, is_server, other_conn):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self.streams[eid].kill()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if eid in self.streams and event.error_code == h2.errors.CANCEL:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if eid in self.streams and event.error_code == h2.errors.ErrorCodes.CANCEL:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if is_server:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- other_stream_id = self.streams[eid].client_stream_id
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- else:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -228,7 +228,7 @@ def _handle_connection_terminated(self, event, is_server):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- event.last_stream_id,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- event.additional_data), "info")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- if event.error_code != h2.errors.NO_ERROR:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ if event.error_code != h2.errors.ErrorCodes.NO_ERROR:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # Something terrible has happened - kill everything!
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self.connections[self.client_conn].close_connection(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- error_code=event.error_code,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git test/mitmproxy/proxy/protocol/test_http2.py test/mitmproxy/proxy/protocol/test_http2.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 1f695cc5f..23027c242 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- test/mitmproxy/proxy/protocol/test_http2.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ test/mitmproxy/proxy/protocol/test_http2.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -36,7 +36,11 @@ class _Http2ServerBase(net_tservers.ServerTestBase):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- class handler(mitmproxy.net.tcp.BaseHandler):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- def handle(self):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- h2_conn = h2.connection.H2Connection(client_side=False, header_encoding=False)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ config = h2.config.H2Configuration(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ client_side=False,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ validate_outbound_headers=False,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ validate_inbound_headers=False)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ h2_conn = h2.connection.H2Connection(config)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- preamble = self.rfile.read(24)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- h2_conn.initiate_connection()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -138,7 +142,11 @@ def _setup_connection(self):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- client.convert_to_ssl(alpn_protos=[b'h2'])
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- h2_conn = h2.connection.H2Connection(client_side=True, header_encoding=False)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ config = h2.config.H2Configuration(
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ client_side=True,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ validate_outbound_headers=False,
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ validate_inbound_headers=False)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ h2_conn = h2.connection.H2Connection(config)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- h2_conn.initiate_connection()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- client.wfile.write(h2_conn.data_to_send())
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- client.wfile.flush()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -756,7 +764,7 @@ class TestMaxConcurrentStreams(_Http2Test):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- @classmethod
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- def setup_class(cls):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- _Http2TestBase.setup_class()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- _Http2ServerBase.setup_class(h2_server_settings={h2.settings.MAX_CONCURRENT_STREAMS: 2})
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ _Http2ServerBase.setup_class(h2_server_settings={h2.settings.SettingCodes.MAX_CONCURRENT_STREAMS: 2})
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- @classmethod
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- def handle_server_event(cls, event, h2_conn, rfile, wfile):
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/python/py-mitmproxy/files/pr2239.patch b/python/py-mitmproxy/files/pr2239.patch
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index c291d67..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/python/py-mitmproxy/files/pr2239.patch
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,352 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git mitmproxy/contentviews/image/image_parser.py mitmproxy/contentviews/image/image_parser.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 062fb38e3..7c74669af 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- mitmproxy/contentviews/image/image_parser.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ mitmproxy/contentviews/image/image_parser.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -37,7 +37,7 @@ def parse_gif(data: bytes) -> Metadata:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- descriptor = img.logical_screen_descriptor
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- parts = [
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ('Format', 'Compuserve GIF'),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- ('Version', "GIF{}".format(img.header.version.decode('ASCII'))),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ ('Version', "GIF{}".format(img.hdr.version)),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ('Size', "{} x {} px".format(descriptor.screen_width, descriptor.screen_height)),
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ('background', str(descriptor.bg_color_index))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- ]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git mitmproxy/contrib/kaitaistruct/exif.py mitmproxy/contrib/kaitaistruct/exif.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 6236a7086..2e8f1f9ff 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- mitmproxy/contrib/kaitaistruct/exif.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ mitmproxy/contrib/kaitaistruct/exif.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1,16 +1,18 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--# The source was exif.ksy from here - https://github.com/kaitai-io/kaitai_struct_formats/blob/24e2d00048b8084ceec30a187a79cb87a79a48ba/image/exif.ksy
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import array
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import struct
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import zlib
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- from enum import Enum
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+from pkg_resources import parse_version
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+from kaitaistruct import __version__ as ks_version, KaitaiStruct, KaitaiStream, BytesIO
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--from .exif_le import ExifLe
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--from .exif_be import ExifBe
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+if parse_version(ks_version) < parse_version('0.7'):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ raise Exception("Incompatible Kaitai Struct Python API: 0.7 or later is required, but you have %s" % (ks_version))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+from exif_le import ExifLe
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- class Exif(KaitaiStruct):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- def __init__(self, _io, _parent=None, _root=None):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self._io = _io
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -22,3 +24,5 @@ def __init__(self, _io, _parent=None, _root=None):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self.body = ExifLe(self._io)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- elif _on == 19789:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self.body = ExifBe(self._io)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git mitmproxy/contrib/kaitaistruct/exif_be.py mitmproxy/contrib/kaitaistruct/exif_be.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 7980a9e8f..8a6e7a2b5 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- mitmproxy/contrib/kaitaistruct/exif_be.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ mitmproxy/contrib/kaitaistruct/exif_be.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1,14 +1,17 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--# The source was exif_be.ksy from here - https://github.com/kaitai-io/kaitai_struct_formats/blob/24e2d00048b8084ceec30a187a79cb87a79a48ba/image/exif_be.ksy
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import array
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import struct
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import zlib
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- from enum import Enum
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+from pkg_resources import parse_version
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+from kaitaistruct import __version__ as ks_version, KaitaiStruct, KaitaiStream, BytesIO
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+if parse_version(ks_version) < parse_version('0.7'):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ raise Exception("Incompatible Kaitai Struct Python API: 0.7 or later is required, but you have %s" % (ks_version))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- class ExifBe(KaitaiStruct):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- def __init__(self, _io, _parent=None, _root=None):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self._io = _io
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -569,3 +572,5 @@ def ifd0(self):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self._m_ifd0 = self._root.Ifd(self._io, self, self._root)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self._io.seek(_pos)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return self._m_ifd0 if hasattr(self, '_m_ifd0') else None
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git mitmproxy/contrib/kaitaistruct/exif_le.py mitmproxy/contrib/kaitaistruct/exif_le.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 207b3bebe..84e53a38d 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- mitmproxy/contrib/kaitaistruct/exif_le.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ mitmproxy/contrib/kaitaistruct/exif_le.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1,14 +1,17 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--# The source was exif_le.ksy from here - https://github.com/kaitai-io/kaitai_struct_formats/blob/24e2d00048b8084ceec30a187a79cb87a79a48ba/image/exif_le.ksy
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import array
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import struct
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import zlib
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- from enum import Enum
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+from pkg_resources import parse_version
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+from kaitaistruct import __version__ as ks_version, KaitaiStruct, KaitaiStream, BytesIO
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+if parse_version(ks_version) < parse_version('0.7'):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ raise Exception("Incompatible Kaitai Struct Python API: 0.7 or later is required, but you have %s" % (ks_version))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- class ExifLe(KaitaiStruct):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- def __init__(self, _io, _parent=None, _root=None):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self._io = _io
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -569,3 +572,5 @@ def ifd0(self):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self._m_ifd0 = self._root.Ifd(self._io, self, self._root)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self._io.seek(_pos)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- return self._m_ifd0 if hasattr(self, '_m_ifd0') else None
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git mitmproxy/contrib/kaitaistruct/gif.py mitmproxy/contrib/kaitaistruct/gif.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 61499cc73..820df568c 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- mitmproxy/contrib/kaitaistruct/gif.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ mitmproxy/contrib/kaitaistruct/gif.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1,14 +1,17 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--# The source was png.ksy from here - https://github.com/kaitai-io/kaitai_struct_formats/blob/562154250bea0081fed4e232751b934bc270a0c7/image/gif.ksy
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import array
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import struct
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import zlib
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- from enum import Enum
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+from pkg_resources import parse_version
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+from kaitaistruct import __version__ as ks_version, KaitaiStruct, KaitaiStream, BytesIO
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+if parse_version(ks_version) < parse_version('0.7'):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ raise Exception("Incompatible Kaitai Struct Python API: 0.7 or later is required, but you have %s" % (ks_version))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- class Gif(KaitaiStruct):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- class BlockType(Enum):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -24,8 +27,8 @@ def __init__(self, _io, _parent=None, _root=None):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self._io = _io
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self._parent = _parent
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self._root = _root if _root else self
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- self.header = self._root.Header(self._io, self, self._root)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- self.logical_screen_descriptor = self._root.LogicalScreenDescriptor(self._io, self, self._root)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ self.hdr = self._root.Header(self._io, self, self._root)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ self.logical_screen_descriptor = self._root.LogicalScreenDescriptorStruct(self._io, self, self._root)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if self.logical_screen_descriptor.has_color_table:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self._raw_global_color_table = self._io.read_bytes((self.logical_screen_descriptor.color_table_size * 3))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- io = KaitaiStream(BytesIO(self._raw_global_color_table))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -55,7 +58,7 @@ def __init__(self, _io, _parent=None, _root=None):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self.blue = self._io.read_u1()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- class LogicalScreenDescriptor(KaitaiStruct):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ class LogicalScreenDescriptorStruct(KaitaiStruct):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- def __init__(self, _io, _parent=None, _root=None):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self._io = _io
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self._parent = _parent
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -163,7 +166,7 @@ def __init__(self, _io, _parent=None, _root=None):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self._parent = _parent
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self._root = _root if _root else self
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self.magic = self._io.ensure_fixed_contents(struct.pack('3b', 71, 73, 70))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- self.version = self._io.read_bytes(3)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ self.version = (self._io.read_bytes(3)).decode(u"ASCII")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- class ExtGraphicControl(KaitaiStruct):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -245,3 +248,6 @@ def __init__(self, _io, _parent=None, _root=None):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self.body = self._root.ExtGraphicControl(self._io, self, self._root)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- else:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self.body = self._root.Subblocks(self._io, self, self._root)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git mitmproxy/contrib/kaitaistruct/jpeg.py mitmproxy/contrib/kaitaistruct/jpeg.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 08e382a97..a49c83b93 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- mitmproxy/contrib/kaitaistruct/jpeg.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ mitmproxy/contrib/kaitaistruct/jpeg.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1,15 +1,18 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--# The source was jpeg.ksy from here - https://github.com/kaitai-io/kaitai_struct_formats/blob/24e2d00048b8084ceec30a187a79cb87a79a48ba/image/jpeg.ksy
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import array
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import struct
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import zlib
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- from enum import Enum
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+from pkg_resources import parse_version
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+from kaitaistruct import __version__ as ks_version, KaitaiStruct, KaitaiStream, BytesIO
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--from .exif import Exif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+if parse_version(ks_version) < parse_version('0.7'):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ raise Exception("Incompatible Kaitai Struct Python API: 0.7 or later is required, but you have %s" % (ks_version))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+from exif import Exif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- class Jpeg(KaitaiStruct):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- class ComponentId(Enum):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -127,7 +130,7 @@ def __init__(self, _io, _parent=None, _root=None):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self._io = _io
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self._parent = _parent
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self._root = _root if _root else self
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- self.magic = self._io.read_strz("ASCII", 0, False, True, True)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ self.magic = (self._io.read_bytes_term(0, False, True, True)).decode(u"ASCII")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- _on = self.magic
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if _on == u"Exif":
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self.body = self._root.ExifInJpeg(self._io, self, self._root)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -195,7 +198,7 @@ def __init__(self, _io, _parent=None, _root=None):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self._io = _io
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self._parent = _parent
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self._root = _root if _root else self
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- self.magic = self._io.read_str_byte_limit(5, "ASCII")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ self.magic = (self._io.read_bytes(5)).decode(u"ASCII")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self.version_major = self._io.read_u1()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self.version_minor = self._io.read_u1()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self.density_units = self._root.SegmentApp0.DensityUnit(self._io.read_u1())
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -204,3 +207,6 @@ def __init__(self, _io, _parent=None, _root=None):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self.thumbnail_x = self._io.read_u1()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self.thumbnail_y = self._io.read_u1()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self.thumbnail = self._io.read_bytes(((self.thumbnail_x * self.thumbnail_y) * 3))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git mitmproxy/contrib/kaitaistruct/make.sh mitmproxy/contrib/kaitaistruct/make.sh
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-new file mode 100755
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 000000000..218d51989
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- /dev/null
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ mitmproxy/contrib/kaitaistruct/make.sh
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -0,0 +1,10 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#!/usr/bin/env bash
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+wget -N https://raw.githubusercontent.com/kaitai-io/kaitai_struct_formats/master/image/exif_be.ksy
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+wget -N https://raw.githubusercontent.com/kaitai-io/kaitai_struct_formats/master/image/exif_le.ksy
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+wget -N https://raw.githubusercontent.com/kaitai-io/kaitai_struct_formats/master/image/exif.ksy
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+wget -N https://raw.githubusercontent.com/kaitai-io/kaitai_struct_formats/master/image/gif.ksy
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+wget -N https://raw.githubusercontent.com/kaitai-io/kaitai_struct_formats/master/image/jpeg.ksy
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+wget -N https://raw.githubusercontent.com/kaitai-io/kaitai_struct_formats/master/image/png.ksy
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+kaitai-struct-compiler --target python --opaque-types=true *.ksy
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git mitmproxy/contrib/kaitaistruct/png.py mitmproxy/contrib/kaitaistruct/png.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 2f3c1a5c3..98a706937 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- mitmproxy/contrib/kaitaistruct/png.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ mitmproxy/contrib/kaitaistruct/png.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -1,14 +1,17 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- # This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--# The source was png.ksy from here - https://github.com/kaitai-io/kaitai_struct_formats/blob/9370c720b7d2ad329102d89bdc880ba6a706ef26/image/png.ksy
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import array
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import struct
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- import zlib
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- from enum import Enum
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+from pkg_resources import parse_version
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+from kaitaistruct import __version__ as ks_version, KaitaiStruct, KaitaiStream, BytesIO
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+if parse_version(ks_version) < parse_version('0.7'):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ raise Exception("Incompatible Kaitai Struct Python API: 0.7 or later is required, but you have %s" % (ks_version))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- class Png(KaitaiStruct):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- class ColorType(Enum):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -51,7 +54,7 @@ def __init__(self, _io, _parent=None, _root=None):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self._parent = _parent
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self._root = _root if _root else self
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self.len = self._io.read_u4be()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- self.type = self._io.read_str_byte_limit(4, "UTF-8")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ self.type = (self._io.read_bytes(4)).decode(u"UTF-8")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- _on = self.type
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if _on == u"iTXt":
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self._raw_body = self._io.read_bytes(self.len)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -194,7 +197,7 @@ def __init__(self, _io, _parent=None, _root=None):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self._io = _io
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self._parent = _parent
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self._root = _root if _root else self
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- self.keyword = self._io.read_strz("UTF-8", 0, False, True, True)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ self.keyword = (self._io.read_bytes_term(0, False, True, True)).decode(u"UTF-8")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self.compression_method = self._io.read_u1()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self._raw_text_datastream = self._io.read_bytes_full()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self.text_datastream = zlib.decompress(self._raw_text_datastream)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -259,12 +262,12 @@ def __init__(self, _io, _parent=None, _root=None):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self._io = _io
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self._parent = _parent
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self._root = _root if _root else self
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- self.keyword = self._io.read_strz("UTF-8", 0, False, True, True)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ self.keyword = (self._io.read_bytes_term(0, False, True, True)).decode(u"UTF-8")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self.compression_flag = self._io.read_u1()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self.compression_method = self._io.read_u1()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- self.language_tag = self._io.read_strz("ASCII", 0, False, True, True)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- self.translated_keyword = self._io.read_strz("UTF-8", 0, False, True, True)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- self.text = self._io.read_str_eos("UTF-8")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ self.language_tag = (self._io.read_bytes_term(0, False, True, True)).decode(u"ASCII")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ self.translated_keyword = (self._io.read_bytes_term(0, False, True, True)).decode(u"UTF-8")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ self.text = (self._io.read_bytes_full()).decode(u"UTF-8")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- class TextChunk(KaitaiStruct):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -272,8 +275,8 @@ def __init__(self, _io, _parent=None, _root=None):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self._io = _io
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self._parent = _parent
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self._root = _root if _root else self
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- self.keyword = self._io.read_strz("iso8859-1", 0, False, True, True)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-- self.text = self._io.read_str_eos("iso8859-1")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ self.keyword = (self._io.read_bytes_term(0, False, True, True)).decode(u"iso8859-1")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ self.text = (self._io.read_bytes_full()).decode(u"iso8859-1")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- class TimeChunk(KaitaiStruct):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -287,3 +290,6 @@ def __init__(self, _io, _parent=None, _root=None):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self.hour = self._io.read_u1()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self.minute = self._io.read_u1()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self.second = self._io.read_u1()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git mitmproxy/contrib/kaitaistruct/exif.py mitmproxy/contrib/kaitaistruct/exif.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index 2e8f1f9ff..d99cceef1 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- mitmproxy/contrib/kaitaistruct/exif.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ mitmproxy/contrib/kaitaistruct/exif.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -12,7 +12,9 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if parse_version(ks_version) < parse_version('0.7'):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- raise Exception("Incompatible Kaitai Struct Python API: 0.7 or later is required, but you have %s" % (ks_version))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--from exif_le import ExifLe
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+from .exif_le import ExifLe
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+from .exif_be import ExifBe
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- class Exif(KaitaiStruct):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- def __init__(self, _io, _parent=None, _root=None):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self._io = _io
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -24,5 +26,3 @@ def __init__(self, _io, _parent=None, _root=None):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self.body = ExifLe(self._io)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- elif _on == 19789:
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self.body = ExifBe(self._io)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff --git mitmproxy/contrib/kaitaistruct/jpeg.py mitmproxy/contrib/kaitaistruct/jpeg.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-index a49c83b93..33fc012fa 100644
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- mitmproxy/contrib/kaitaistruct/jpeg.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ mitmproxy/contrib/kaitaistruct/jpeg.py
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -12,7 +12,8 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- if parse_version(ks_version) < parse_version('0.7'):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- raise Exception("Incompatible Kaitai Struct Python API: 0.7 or later is required, but you have %s" % (ks_version))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--from exif import Exif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+from .exif import Exif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- class Jpeg(KaitaiStruct):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- class ComponentId(Enum):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -207,6 +208,3 @@ def __init__(self, _io, _parent=None, _root=None):
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self.thumbnail_x = self._io.read_u1()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self.thumbnail_y = self._io.read_u1()
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- self.thumbnail = self._io.read_bytes(((self.thumbnail_x * self.thumbnail_y) * 3))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--
</span></pre><pre style='margin:0'>
</pre>