<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>96159</bug_id>
          
          <creation_ts>2012-09-07 16:53:46 -0700</creation_ts>
          <short_desc>Refactored bytecode generator initialization to support moving captured vars around</short_desc>
          <delta_ts>2013-07-19 10:39:43 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>96180</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Geoffrey Garen">ggaren</reporter>
          <assigned_to name="Geoffrey Garen">ggaren</assigned_to>
          <cc>barraclough</cc>
    
    <cc>oliver</cc>
    
    <cc>ossy</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>715126</commentid>
    <comment_count>0</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-09-07 16:53:46 -0700</bug_when>
    <thetext>Refactored bytecode generator initialization to support moving captured vars around</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715131</commentid>
    <comment_count>1</comment_count>
      <attachid>162907</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-09-07 16:57:39 -0700</bug_when>
    <thetext>Created attachment 162907
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715134</commentid>
    <comment_count>2</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-09-07 16:58:36 -0700</bug_when>
    <thetext>Committed r127939: &lt;http://trac.webkit.org/changeset/127939&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715140</commentid>
    <comment_count>3</comment_count>
      <attachid>162907</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-09-07 17:01:47 -0700</bug_when>
    <thetext>Comment on attachment 162907
Patch

Gavin reviewed this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715301</commentid>
    <comment_count>4</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2012-09-08 00:30:08 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; Committed r127939: &lt;http://trac.webkit.org/changeset/127939&gt;

It caused a regression - https://bugs.webkit.org/show_bug.cgi?id=96180
Could you check it, please?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715526</commentid>
    <comment_count>5</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-09-09 10:10:41 -0700</bug_when>
    <thetext>Rolled out in &lt;http://trac.webkit.org/changeset/127987&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715698</commentid>
    <comment_count>6</comment_count>
      <attachid>163035</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-09-09 21:24:01 -0700</bug_when>
    <thetext>Created attachment 163035
test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715702</commentid>
    <comment_count>7</comment_count>
      <attachid>163037</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-09-09 21:33:34 -0700</bug_when>
    <thetext>Created attachment 163037
test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>715703</commentid>
    <comment_count>8</comment_count>
      <attachid>163038</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2012-09-09 21:36:33 -0700</bug_when>
    <thetext>Created attachment 163038
test</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>162907</attachid>
            <date>2012-09-07 16:57:39 -0700</date>
            <delta_ts>2012-09-07 17:01:47 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96159-20120907165718.patch</filename>
            <type>text/plain</type>
            <size>29991</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTI3OTM2KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQ5IEBA
CisyMDEyLTA5LTA3ICBHZW9mZnJleSBHYXJlbiAgPGdnYXJlbkBhcHBsZS5jb20+CisKKyAgICAg
ICAgUmVmYWN0b3JlZCBieXRlY29kZSBnZW5lcmF0b3IgaW5pdGlhbGl6YXRpb24gdG8gc3VwcG9y
dCBtb3ZpbmcgY2FwdHVyZWQgdmFycyBhcm91bmQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTk2MTU5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgR2F2aW4g
QmFycmFjbG91Z2guCisKKyAgICAgICAgVGhpcyBwYXRjaCBzZXBhcmF0ZXMgdGhlIHN0YWdlcyBv
ZiBhbGxvY2F0aW5nIHJlZ2lzdGVycywgZGVjbGFyaW5nIGlkZW50aWZpZXJzCisgICAgICAgIGlu
IHRoZSBzeW1ib2wgdGFibGUsIGFuZCBpbml0aWFsaXppbmcgcmVnaXN0ZXJzLCBzbyB5b3UgY2Fu
IGNoYW5nZQorICAgICAgICBhbGxvY2F0aW9uIGRlY2lzaW9ucyB3aXRob3V0IGJyZWFraW5nIHRo
ZSB3b3JsZC4KKworICAgICAgICAqIGJ5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRvci5jcHA6
CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcik6IENh
bGwgYSBzZXQgb2YgaGVscGVyIGZ1bmN0aW9ucworICAgICAgICBpbnN0ZWFkIG9mIGlubGluaW5n
IGFsbCB0aGUgY29kZSwgdG8gaGVscCBjbGFyaXR5LgorCisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjphbGxvY2F0ZUNhcHR1cmVkVmFycyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2Rl
R2VuZXJhdG9yOjphbGxvY2F0ZVVuY2FwdHVyZWRWYXJzKToKKyAgICAgICAgKEpTQzo6Qnl0ZWNv
ZGVHZW5lcmF0b3I6OmFsbG9jYXRlQWN0aXZhdGlvblZhcik6CisgICAgICAgIChKU0M6OkJ5dGVj
b2RlR2VuZXJhdG9yOjphbGxvY2F0ZUFyZ3VtZW50c1ZhcnMpOgorICAgICAgICAoSlNDOjpCeXRl
Y29kZUdlbmVyYXRvcjo6YWxsb2NhdGVDYWxsZWVWYXJVbmRlY2xhcmVkKToKKyAgICAgICAgKEpT
Qzo6Qnl0ZWNvZGVHZW5lcmF0b3I6OmRlY2xhcmVQYXJhbWV0ZXJzKToKKyAgICAgICAgKEpTQzo6
Qnl0ZWNvZGVHZW5lcmF0b3I6OmRlY2xhcmVDYWxsZWUpOgorICAgICAgICAoSlNDOjpCeXRlY29k
ZUdlbmVyYXRvcjo6aW5pdENhbGxlZVZhcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjppbml0QXJndW1lbnRzVmFycyk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9y
Ojppbml0QWN0aXZhdGlvblZhcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpp
bml0VGhpc1BhcmFtZXRlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjppbml0
RnVuY3Rpb25EZWNsYXJhdGlvbnMpOgorICAgICAgICAoSlNDOjpCeXRlY29kZUdlbmVyYXRvcjo6
ZGVjbGFyZVBhcmFtZXRlcik6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJhdG9yOjpjcmVh
dGVMYXp5UmVnaXN0ZXJJZk5lY2Vzc2FyeSk6CisgICAgICAgIChKU0M6OkJ5dGVjb2RlR2VuZXJh
dG9yOjpjcmVhdGVBY3RpdmF0aW9uSWZOZWNlc3NhcnkpOiBGYWN0b3JlZCB0aGVzZQorICAgICAg
ICBoZWxwZXIgZnVuY3Rpb25zIG91dCBmcm9tIHByZS1leGlzdGluZyBjb2RlLgorCisgICAgICAg
ICogYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmg6CisgICAgICAgIChCeXRlY29kZUdl
bmVyYXRvcik6CisgICAgICAgICogcGFyc2VyL0FTVEJ1aWxkZXIuaDoKKyAgICAgICAgKEpTQzo6
QVNUQnVpbGRlcjo6Y3JlYXRlRnVuY0RlY2xTdGF0ZW1lbnQpOgorICAgICAgICAoSlNDOjpBU1RC
dWlsZGVyOjphZGRWYXIpOgorICAgICAgICAqIHBhcnNlci9Ob2Rlcy5oOgorICAgICAgICAoSlND
OjpEZWNsYXJhdGlvblN0YWNrczo6VmFyRGVjbGFyYXRpb246OlZhckRlY2xhcmF0aW9uKToKKyAg
ICAgICAgKFZhckRlY2xhcmF0aW9uKToKKyAgICAgICAgKEpTQzo6RGVjbGFyYXRpb25TdGFja3M6
OkZ1bmN0aW9uRGVjbGFyYXRpb246OkZ1bmN0aW9uRGVjbGFyYXRpb24pOgorICAgICAgICAoRnVu
Y3Rpb25EZWNsYXJhdGlvbik6IERlY2xhcmF0aW9uIHN0YWNrcyBnZXQgYSBsaXR0bGUgbW9yZSBk
YXRhIG5vdywKKyAgICAgICAgdG8gc3VwcG9ydCBhbGxvY2F0aW5nIHJlZ2lzdGVycyBiZWZvcmUg
cHV0dGluZyB0aGluZ3MgaW4gdGhlIHN5bWJvbAorICAgICAgICB0YWJsZS4gSSdtIGNvbnZpbmNl
ZCB0aGF0IHdlIHNob3VsZCBldmVudHVhbGx5IGp1c3QgZXhwYW5kIHRoZSBzeW1ib2wKKyAgICAg
ICAgdGFibGUgdG8gdW5kZXJzdGFuZCB0aGVzZSB0aGluZ3MuCisKIDIwMTItMDktMDcgIEdhdmlu
IEJhcnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgogCiAgICAgICAgIE9iamVjdC5w
cm90b3R5cGUuX19kZWZpbmV7RyxTfWV0dGVyX18gd2l0aCBub24tY2FsbGFibGUgc2Vjb25kIHBh
cmFtZXRlciBzaG91bGQgdGhyb3cgVHlwZUVycm9yIGluc3RlYWQgb2YgU3ludGF4RXJyb3IKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0ZWNvZGVHZW5lcmF0b3Iu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ieXRlY29tcGlsZXIvQnl0
ZWNvZGVHZW5lcmF0b3IuY3BwCShyZXZpc2lvbiAxMjc4MTApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMjc4LDkgKzI3OCw2IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihQ
cm8KICAgICAsIG1fY29kZVR5cGUoR2xvYmFsQ29kZSkKICAgICAsIG1fbmV4dENvbnN0YW50T2Zm
c2V0KDApCiAgICAgLCBtX2dsb2JhbENvbnN0YW50SW5kZXgoMCkKLSAgICAsIG1faGFzQ3JlYXRl
ZEFjdGl2YXRpb24odHJ1ZSkKLSAgICAsIG1fZmlyc3RMYXp5RnVuY3Rpb24oMCkKLSAgICAsIG1f
bGFzdExhenlGdW5jdGlvbigwKQogICAgICwgbV9nbG9iYWxEYXRhKHNjb3BlLT5nbG9iYWxEYXRh
KCkpCiAgICAgLCBtX2xhc3RPcGNvZGVJRChvcF9lbmQpCiAjaWZuZGVmIE5ERUJVRwpAQCAtMzIw
LDcgKzMxNyw3IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihQcm8KICAg
ICBnbG9iYWxPYmplY3QtPmFkZFJlZ2lzdGVycyhuZXdHbG9iYWxzKTsKIAogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25TdGFjay5zaXplKCk7ICsraSkgewotICAgICAgICBGdW5j
dGlvbkJvZHlOb2RlKiBmdW5jdGlvbiA9IGZ1bmN0aW9uU3RhY2tbaV07CisgICAgICAgIEZ1bmN0
aW9uQm9keU5vZGUqIGZ1bmN0aW9uID0gZnVuY3Rpb25TdGFja1tpXS5ub2RlOwogICAgICAgICBi
b29sIHByb3BlcnR5RGlkRXhpc3QgPSAKICAgICAgICAgICAgIGdsb2JhbE9iamVjdC0+cmVtb3Zl
RGlyZWN0KCptX2dsb2JhbERhdGEsIGZ1bmN0aW9uLT5pZGVudCgpKTsgLy8gTmV3bHkgZGVjbGFy
ZWQgZnVuY3Rpb25zIG92ZXJ3cml0ZSBleGlzdGluZyBwcm9wZXJ0aWVzLgogICAgICAgICAKQEAg
LTMzMiwxNSArMzI5LDIzOSBAQCBCeXRlY29kZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3Io
UHJvCiAgICAgfQogCiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCB2YXJTdGFjay5zaXplKCk7
ICsraSkgewotICAgICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5oYXNQcm9wZXJ0eShleGVjLCAqdmFy
U3RhY2tbaV0uZmlyc3QpKQorICAgICAgICBpZiAoZ2xvYmFsT2JqZWN0LT5oYXNQcm9wZXJ0eShl
eGVjLCAqdmFyU3RhY2tbaV0ubmFtZSkpCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
YWRkR2xvYmFsVmFyKAotICAgICAgICAgICAgKnZhclN0YWNrW2ldLmZpcnN0LAotICAgICAgICAg
ICAgKHZhclN0YWNrW2ldLnNlY29uZCAmIERlY2xhcmF0aW9uU3RhY2tzOjpJc0NvbnN0YW50KSA/
IElzQ29uc3RhbnQgOiBJc1ZhcmlhYmxlLAorICAgICAgICAgICAgKnZhclN0YWNrW2ldLm5hbWUs
CisgICAgICAgICAgICAodmFyU3RhY2tbaV0uYXR0cmlidXRlcyAmIERlY2xhcmF0aW9uU3RhY2tz
OjpJc0NvbnN0YW50KSA/IElzQ29uc3RhbnQgOiBJc1ZhcmlhYmxlLAogICAgICAgICAgICAgTm90
RnVuY3Rpb25Pck5vdFNwZWNpYWxpemFibGUpOwogICAgIH0KIH0KIAordm9pZCBCeXRlY29kZUdl
bmVyYXRvcjo6YWxsb2NhdGVDYXB0dXJlZFZhcnMoKQoreworICAgIEZ1bmN0aW9uQm9keU5vZGUq
IG5vZGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkJvZHlOb2RlKj4obV9zY29wZU5vZGUpOworICAg
IGlmICghbm9kZS0+aGFzQ2FwdHVyZWRWYXJpYWJsZXMoKSkKKyAgICAgICAgcmV0dXJuOworCisg
ICAgRGVjbGFyYXRpb25TdGFja3M6OkZ1bmN0aW9uU3RhY2smIGZ1bmN0aW9uU3RhY2sgPSBub2Rl
LT5mdW5jdGlvblN0YWNrKCk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBmdW5jdGlvblN0
YWNrLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmICghbm9kZS0+Y2FwdHVyZXMoZnVuY3Rpb25T
dGFja1tpXS5ub2RlLT5pZGVudCgpKSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBm
dW5jdGlvblN0YWNrW2ldLnJlZyA9IGFkZFZhcihmdW5jdGlvblN0YWNrW2ldLm5vZGUtPmlkZW50
KCksIGZhbHNlKTsKKyAgICAgICAgbV9mdW5jdGlvbnMuYWRkKGZ1bmN0aW9uU3RhY2tbaV0ubm9k
ZS0+aWRlbnQoKS5pbXBsKCkpOworICAgIH0KKworICAgIERlY2xhcmF0aW9uU3RhY2tzOjpWYXJT
dGFjayYgdmFyU3RhY2sgPSBub2RlLT52YXJTdGFjaygpOworICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgdmFyU3RhY2suc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKCFub2RlLT5jYXB0dXJl
cygqdmFyU3RhY2tbaV0ubmFtZSkpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgdmFy
U3RhY2tbaV0ucmVnID0gYWRkVmFyKCp2YXJTdGFja1tpXS5uYW1lLCB2YXJTdGFja1tpXS5hdHRy
aWJ1dGVzICYgRGVjbGFyYXRpb25TdGFja3M6OklzQ29uc3RhbnQpOworICAgIH0KK30KKwordm9p
ZCBCeXRlY29kZUdlbmVyYXRvcjo6YWxsb2NhdGVVbmNhcHR1cmVkVmFycygpCit7CisgICAgRnVu
Y3Rpb25Cb2R5Tm9kZSogbm9kZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uQm9keU5vZGUqPihtX3Nj
b3BlTm9kZSk7CisKKyAgICBEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjayYgZnVuY3Rp
b25TdGFjayA9IG5vZGUtPmZ1bmN0aW9uU3RhY2soKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsg
aSA8IGZ1bmN0aW9uU3RhY2suc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgaWYgKG5vZGUtPmNhcHR1
cmVzKGZ1bmN0aW9uU3RhY2tbaV0ubm9kZS0+aWRlbnQoKSkpCisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICAgICAgZnVuY3Rpb25TdGFja1tpXS5yZWcgPSBhZGRWYXIoZnVuY3Rpb25TdGFja1tp
XS5ub2RlLT5pZGVudCgpLCBmYWxzZSk7CisgICAgICAgIG1fZnVuY3Rpb25zLmFkZChmdW5jdGlv
blN0YWNrW2ldLm5vZGUtPmlkZW50KCkuaW1wbCgpKTsKKyAgICB9CisKKyAgICBEZWNsYXJhdGlv
blN0YWNrczo6VmFyU3RhY2smIHZhclN0YWNrID0gbm9kZS0+dmFyU3RhY2soKTsKKyAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHZhclN0YWNrLnNpemUoKTsgKytpKSB7CisgICAgICAgIGlmIChu
b2RlLT5jYXB0dXJlcygqdmFyU3RhY2tbaV0ubmFtZSkpCisgICAgICAgICAgICBjb250aW51ZTsK
KyAgICAgICAgdmFyU3RhY2tbaV0ucmVnID0gYWRkVmFyKCp2YXJTdGFja1tpXS5uYW1lLCB2YXJT
dGFja1tpXS5hdHRyaWJ1dGVzICYgRGVjbGFyYXRpb25TdGFja3M6OklzQ29uc3RhbnQpOworICAg
IH0KK30KKwordm9pZCBCeXRlY29kZUdlbmVyYXRvcjo6YWxsb2NhdGVBY3RpdmF0aW9uVmFyKCkK
K3sKKyAgICBpZiAoIW1fY29kZUJsb2NrLT5uZWVkc0Z1bGxTY29wZUNoYWluKCkpCisgICAgICAg
IHJldHVybjsKKworICAgIG1fYWN0aXZhdGlvblJlZ2lzdGVyID0gYWRkVmFyKCk7CisgICAgbV9j
b2RlQmxvY2stPnNldEFjdGl2YXRpb25SZWdpc3RlcihtX2FjdGl2YXRpb25SZWdpc3Rlci0+aW5k
ZXgoKSk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmFsbG9jYXRlQXJndW1lbnRzVmFy
cygpCit7CisgICAgRnVuY3Rpb25Cb2R5Tm9kZSogbm9kZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9u
Qm9keU5vZGUqPihtX3Njb3BlTm9kZSk7CisKKyAgICAvLyBCb3RoIG9wX3RlYXJfb2ZmX2FjdGl2
YXRpb24gYW5kIG9wX3RlYXJfb2ZmX2FyZ3VtZW50cyB0ZWFyIG9mZiB0aGUgJ2FyZ3VtZW50cycK
KyAgICAvLyBvYmplY3QsIGlmIGNyZWF0ZWQuCisgICAgaWYgKCFtX2NvZGVCbG9jay0+bmVlZHNG
dWxsU2NvcGVDaGFpbigpICYmICFub2RlLT51c2VzQXJndW1lbnRzKCkpCisgICAgICAgIHJldHVy
bjsKKworICAgIFJlZ2lzdGVySUQqIHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3RlciA9IGFkZFZh
cigpOyAvLyBBbm9ueW1vdXMsIHNvIGl0IGNhbid0IGJlIG1vZGlmaWVkIGJ5IHVzZXIgY29kZS4K
KyAgICBSZWdpc3RlcklEKiBhcmd1bWVudHNSZWdpc3RlciA9IGFkZFZhcihwcm9wZXJ0eU5hbWVz
KCkuYXJndW1lbnRzLCBmYWxzZSk7IC8vIENhbiBiZSBjaGFuZ2VkIGJ5IGFzc2lnbmluZyB0byAn
YXJndW1lbnRzJy4KKworICAgIC8vIFdlIGNhbiBzYXZlIGEgbGl0dGxlIHNwYWNlIGJ5IGhhcmQt
Y29kaW5nIHRoZSBrbm93bGVkZ2UgdGhhdCB0aGUgdHdvCisgICAgLy8gJ2FyZ3VtZW50cycgdmFs
dWVzIGFyZSBzdG9yZWQgaW4gY29uc2VjdXRpdmUgcmVnaXN0ZXJzLCBhbmQgc3RvcmluZworICAg
IC8vIG9ubHkgdGhlIGluZGV4IG9mIHRoZSBhc3NpZ25hYmxlIG9uZS4KKyAgICBtX2NvZGVCbG9j
ay0+c2V0QXJndW1lbnRzUmVnaXN0ZXIoYXJndW1lbnRzUmVnaXN0ZXItPmluZGV4KCkpOworICAg
IEFTU0VSVF9VTlVTRUQodW5tb2RpZmllZEFyZ3VtZW50c1JlZ2lzdGVyLCB1bm1vZGlmaWVkQXJn
dW1lbnRzUmVnaXN0ZXItPmluZGV4KCkgPT0gSlNDOjp1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0
ZXIobV9jb2RlQmxvY2stPmFyZ3VtZW50c1JlZ2lzdGVyKCkpKTsKK30KKwordm9pZCBCeXRlY29k
ZUdlbmVyYXRvcjo6YWxsb2NhdGVDYWxsZWVWYXJVbmRlY2xhcmVkKCkKK3sKKyAgICBGdW5jdGlv
bkJvZHlOb2RlKiBub2RlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25Cb2R5Tm9kZSo+KG1fc2NvcGVO
b2RlKTsKKworICAgIGlmIChub2RlLT5pZGVudCgpLmlzTnVsbCgpIHx8ICFub2RlLT5mdW5jdGlv
bk5hbWVJc0luU2NvcGUoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gSWYgbm9uLXN0cmlj
dCBldmFsIGlzIGluIHBsYXksIHdlIHVzZSBhIHNlcGFyYXRlIG9iamVjdCBpbiB0aGUgc2NvcGUg
Y2hhaW4gZm9yIHRoZSBjYWxsZWUncyBuYW1lLgorICAgIGlmICgobV9jb2RlQmxvY2stPnVzZXNF
dmFsKCkgJiYgIW1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgfHwgbV9zaG91bGRFbWl0RGVi
dWdIb29rcykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKCFub2RlLT5jYXB0dXJlcyhub2Rl
LT5pZGVudCgpKSkgeworICAgICAgICBtX2NhbGxlZVJlZ2lzdGVyLnNldEluZGV4KFJlZ2lzdGVy
RmlsZTo6Q2FsbGVlKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fY2FsbGVlUmVn
aXN0ZXIuc2V0SW5kZXgoYWRkVmFyKCktPmluZGV4KCkpOworfQorCit2b2lkIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpkZWNsYXJlUGFyYW1ldGVycygpCit7CisgICAgRnVuY3Rpb25Cb2R5Tm9kZSogbm9k
ZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uQm9keU5vZGUqPihtX3Njb3BlTm9kZSk7CisgICAgRnVu
Y3Rpb25QYXJhbWV0ZXJzJiBwYXJhbWV0ZXJzID0gKm5vZGUtPnBhcmFtZXRlcnMoKTsKKyAgICBt
X3BhcmFtZXRlcnMuZ3JvdyhwYXJhbWV0ZXJzLnNpemUoKSArIDEpOyAvLyByZXNlcnZlIHNwYWNl
IGZvciAidGhpcyIKKworICAgIC8vIEFkZCAidGhpcyIgYXMgYSBwYXJhbWV0ZXIKKyAgICBpbnQg
bmV4dFBhcmFtZXRlckluZGV4ID0gQ2FsbEZyYW1lOjp0aGlzQXJndW1lbnRPZmZzZXQoKTsKKyAg
ICBtX3RoaXNSZWdpc3Rlci5zZXRJbmRleChuZXh0UGFyYW1ldGVySW5kZXgtLSk7CisgICAgbV9j
b2RlQmxvY2stPmFkZFBhcmFtZXRlcigpOworICAgIAorICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgcGFyYW1ldGVycy5zaXplKCk7ICsraSkKKyAgICAgICAgZGVjbGFyZVBhcmFtZXRlcihwYXJh
bWV0ZXJzW2ldLCBuZXh0UGFyYW1ldGVySW5kZXgtLSk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5l
cmF0b3I6OmRlY2xhcmVDYWxsZWUoKQoreworICAgIEZ1bmN0aW9uQm9keU5vZGUqIG5vZGUgPSBz
dGF0aWNfY2FzdDxGdW5jdGlvbkJvZHlOb2RlKj4obV9zY29wZU5vZGUpOworCisgICAgaWYgKG5v
ZGUtPmlkZW50KCkuaXNOdWxsKCkgfHwgIW5vZGUtPmZ1bmN0aW9uTmFtZUlzSW5TY29wZSgpKQor
ICAgICAgICByZXR1cm47CisKKyAgICAvLyBJZiBub24tc3RyaWN0IGV2YWwgaXMgaW4gcGxheSwg
d2UgdXNlIGEgc2VwYXJhdGUgb2JqZWN0IGluIHRoZSBzY29wZSBjaGFpbiBmb3IgdGhlIGNhbGxl
ZSdzIG5hbWUuCisgICAgaWYgKChtX2NvZGVCbG9jay0+dXNlc0V2YWwoKSAmJiAhbV9jb2RlQmxv
Y2stPmlzU3RyaWN0TW9kZSgpKSB8fCBtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzKQorICAgICAgICBy
ZXR1cm47CisKKyAgICBzeW1ib2xUYWJsZSgpLmFkZChub2RlLT5pZGVudCgpLmltcGwoKSwgU3lt
Ym9sVGFibGVFbnRyeShtX2NhbGxlZVJlZ2lzdGVyLmluZGV4KCksIFJlYWRPbmx5KSk7Cit9CisK
K3ZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmluaXRDYWxsZWVWYXIoKQoreworICAgIEZ1bmN0aW9u
Qm9keU5vZGUqIG5vZGUgPSBzdGF0aWNfY2FzdDxGdW5jdGlvbkJvZHlOb2RlKj4obV9zY29wZU5v
ZGUpOworCisgICAgaWYgKG5vZGUtPmlkZW50KCkuaXNOdWxsKCkgfHwgIW5vZGUtPmZ1bmN0aW9u
TmFtZUlzSW5TY29wZSgpKQorICAgICAgICByZXR1cm47CisKKyAgICAvLyBJZiBub24tc3RyaWN0
IGV2YWwgaXMgaW4gcGxheSwgd2UgdXNlIGEgc2VwYXJhdGUgb2JqZWN0IGluIHRoZSBzY29wZSBj
aGFpbiBmb3IgdGhlIGNhbGxlZSdzIG5hbWUuCisgICAgaWYgKChtX2NvZGVCbG9jay0+dXNlc0V2
YWwoKSAmJiAhbV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKSB8fCBtX3Nob3VsZEVtaXREZWJ1
Z0hvb2tzKSB7CisgICAgICAgIGVtaXRPcGNvZGUob3BfcHVzaF9uYW1lX3Njb3BlKTsKKyAgICAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFkZENvbnN0YW50KG5vZGUtPmlkZW50KCkpKTsKKyAg
ICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKTsKKyAgICAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKFJlYWRPbmx5IHwgRG9udERlbGV0ZSk7CisKKyAgICAg
ICAgLy8gUHV0IGEgbWlycm9yIG9iamVjdCBpbiBjb21waWxhdGlvbiBzY29wZSwgc28gY29tcGls
ZS10aW1lIHZhcmlhYmxlIHJlc29sdXRpb24gc2VlcyB0aGUgcHJvcGVydHkgbmFtZSB3ZSdsbCBz
ZWUgYXQgcnVudGltZS4KKyAgICAgICAgbV9zY29wZS5zZXQoKmdsb2JhbERhdGEoKSwKKyAgICAg
ICAgICAgIEpTTmFtZVNjb3BlOjpjcmVhdGUoCisgICAgICAgICAgICAgICAgbV9zY29wZS0+Z2xv
YmFsT2JqZWN0KCktPmdsb2JhbEV4ZWMoKSwKKyAgICAgICAgICAgICAgICBub2RlLT5pZGVudCgp
LAorICAgICAgICAgICAgICAgIGpzVW5kZWZpbmVkKCksCisgICAgICAgICAgICAgICAgUmVhZE9u
bHkgfCBEb250RGVsZXRlLAorICAgICAgICAgICAgICAgIG1fc2NvcGUuZ2V0KCkKKyAgICAgICAg
ICAgICkKKyAgICAgICAgKTsKKworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKCFu
b2RlLT5jYXB0dXJlcyhub2RlLT5pZGVudCgpKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8g
TW92ZSB0aGUgY2FsbGVlIGludG8gdGhlIGNhcHR1cmVkIHNlY3Rpb24gb2YgdGhlIHN0YWNrLgor
ICAgIFJlZ2lzdGVySUQgY2FsbGVlKFJlZ2lzdGVyRmlsZTo6Q2FsbGVlKTsKKyAgICBlbWl0TW92
ZSgmbV9jYWxsZWVSZWdpc3RlciwgJmNhbGxlZSk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0
b3I6OmluaXRBcmd1bWVudHNWYXJzKCkKK3sKKyAgICBpZiAoIW1fY29kZUJsb2NrLT51c2VzQXJn
dW1lbnRzKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGludCBhcmd1bWVudHNSZWdpc3RlciA9
IG1fY29kZUJsb2NrLT5hcmd1bWVudHNSZWdpc3RlcigpOworICAgIGludCB1bm1vZGlmaWVkQXJn
dW1lbnRzUmVnaXN0ZXIgPSBKU0M6OnVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rlcihhcmd1bWVu
dHNSZWdpc3Rlcik7CisKKyAgICBwcmVwZW5kQ29tbWVudCgidW5tb2RpZmllZCBhcmd1bWVudHMi
KTsKKyAgICBlbWl0SW5pdExhenlSZWdpc3RlcigmcmVnaXN0ZXJGb3IodW5tb2RpZmllZEFyZ3Vt
ZW50c1JlZ2lzdGVyKSk7CisgICAgcHJlcGVuZENvbW1lbnQoImFyZ3VtZW50cyIpOworICAgIGVt
aXRJbml0TGF6eVJlZ2lzdGVyKCZyZWdpc3RlckZvcihhcmd1bWVudHNSZWdpc3RlcikpOworCisg
ICAgaWYgKChtX2NvZGVCbG9jay0+dXNlc0FyZ3VtZW50cygpICYmIG1fY29kZUJsb2NrLT5pc1N0
cmljdE1vZGUoKSkgfHwgbV9zaG91bGRFbWl0RGVidWdIb29rcykgeworICAgICAgICBlbWl0T3Bj
b2RlKG9wX2NyZWF0ZV9hcmd1bWVudHMpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQo
bV9jb2RlQmxvY2stPmFyZ3VtZW50c1JlZ2lzdGVyKCkpOworICAgIH0KK30KKwordm9pZCBCeXRl
Y29kZUdlbmVyYXRvcjo6aW5pdEFjdGl2YXRpb25WYXIoKQoreworICAgIGlmICghbV9jb2RlQmxv
Y2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgRnVuY3Rp
b25Cb2R5Tm9kZSogbm9kZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uQm9keU5vZGUqPihtX3Njb3Bl
Tm9kZSk7CisKKyAgICBlbWl0SW5pdExhenlSZWdpc3RlcihtX2FjdGl2YXRpb25SZWdpc3Rlcik7
CisKKyAgICBib29sIGNhbkxhemlseUNyZWF0ZUZ1bmN0aW9ucyA9ICFub2RlLT5uZWVkc0FjdGl2
YXRpb25Gb3JNb3JlVGhhblZhcmlhYmxlcygpICYmICFtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzOwor
ICAgIGlmIChjYW5MYXppbHlDcmVhdGVGdW5jdGlvbnMpCisgICAgICAgIHJldHVybjsKKworICAg
IGVtaXRPcGNvZGUob3BfY3JlYXRlX2FjdGl2YXRpb24pOworICAgIGluc3RydWN0aW9ucygpLmFw
cGVuZChtX2FjdGl2YXRpb25SZWdpc3Rlci0+aW5kZXgoKSk7Cit9CisKK3ZvaWQgQnl0ZWNvZGVH
ZW5lcmF0b3I6OmluaXRUaGlzUGFyYW1ldGVyKCkKK3sKKyAgICBGdW5jdGlvbkJvZHlOb2RlKiBu
b2RlID0gc3RhdGljX2Nhc3Q8RnVuY3Rpb25Cb2R5Tm9kZSo+KG1fc2NvcGVOb2RlKTsKKworICAg
IGlmIChpc0NvbnN0cnVjdG9yKCkpIHsKKyAgICAgICAgcHJlcGVuZENvbW1lbnQoIid0aGlzJyBi
ZWNhdXNlIHdlIGFyZSBhIENvbnN0cnVjdG9yIGZ1bmN0aW9uIik7CisgICAgICAgIGVtaXRPcGNv
ZGUob3BfY3JlYXRlX3RoaXMpOworICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV90aGlz
UmVnaXN0ZXIuaW5kZXgoKSk7CisgICAgfSBlbHNlIGlmICghbV9jb2RlQmxvY2stPmlzU3RyaWN0
TW9kZSgpICYmIChub2RlLT51c2VzVGhpcygpIHx8IG1fY29kZUJsb2NrLT51c2VzRXZhbCgpIHx8
IG1fc2hvdWxkRW1pdERlYnVnSG9va3MpKSB7CisgICAgICAgIFZhbHVlUHJvZmlsZSogcHJvZmls
ZSA9IGVtaXRQcm9maWxlZE9wY29kZShvcF9jb252ZXJ0X3RoaXMpOworICAgICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQobV90aGlzUmVnaXN0ZXIuaW5kZXgoKSk7CisgICAgICAgIGluc3RydWN0
aW9ucygpLmFwcGVuZChwcm9maWxlKTsKKyAgICB9Cit9CisKK3ZvaWQgQnl0ZWNvZGVHZW5lcmF0
b3I6OmluaXRGdW5jdGlvbkRlY2xhcmF0aW9ucygpCit7CisgICAgRnVuY3Rpb25Cb2R5Tm9kZSog
bm9kZSA9IHN0YXRpY19jYXN0PEZ1bmN0aW9uQm9keU5vZGUqPihtX3Njb3BlTm9kZSk7CisKKyAg
ICBjb25zdCBEZWNsYXJhdGlvblN0YWNrczo6RnVuY3Rpb25TdGFjayYgZnVuY3Rpb25TdGFjayA9
IG5vZGUtPmZ1bmN0aW9uU3RhY2soKTsKKyAgICBib29sIGNhbkxhemlseUNyZWF0ZUZ1bmN0aW9u
cyA9ICFub2RlLT5uZWVkc0FjdGl2YXRpb25Gb3JNb3JlVGhhblZhcmlhYmxlcygpICYmICFtX3No
b3VsZEVtaXREZWJ1Z0hvb2tzOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25T
dGFjay5zaXplKCk7ICsraSkgeworICAgICAgICBGdW5jdGlvbkJvZHlOb2RlKiBmdW5jdGlvbiA9
IGZ1bmN0aW9uU3RhY2tbaV0ubm9kZTsKKyAgICAgICAgY29uc3QgSWRlbnRpZmllciYgaWRlbnQg
PSBmdW5jdGlvbi0+aWRlbnQoKTsKKyAgICAgICAgUmVnaXN0ZXJJRCogcmVnID0gJnJlZ2lzdGVy
Rm9yKHN5bWJvbFRhYmxlKCkuZ2V0KGlkZW50LmltcGwoKSkuZ2V0SW5kZXgoKSk7CisgICAgICAg
IGlmIChub2RlLT5jYXB0dXJlcyhpZGVudCkgfHwgaWRlbnQgPT0gcHJvcGVydHlOYW1lcygpLmFy
Z3VtZW50cyB8fCAhY2FuTGF6aWx5Q3JlYXRlRnVuY3Rpb25zKQorICAgICAgICAgICAgZW1pdE5l
d0Z1bmN0aW9uKHJlZywgZnVuY3Rpb24pOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGVt
aXRJbml0TGF6eVJlZ2lzdGVyKHJlZyk7CisgICAgICAgICAgICBtX2xhenlGdW5jdGlvbnMuc2V0
KHJlZy0+aW5kZXgoKSwgZnVuY3Rpb24pOworICAgICAgICB9CisgICAgfQorfQorCiBCeXRlY29k
ZUdlbmVyYXRvcjo6Qnl0ZWNvZGVHZW5lcmF0b3IoRnVuY3Rpb25Cb2R5Tm9kZSogZnVuY3Rpb25C
b2R5LCBKU1Njb3BlKiBzY29wZSwgU3ltYm9sVGFibGUqIHN5bWJvbFRhYmxlLCBDb2RlQmxvY2sq
IGNvZGVCbG9jaywgQ29tcGlsYXRpb25LaW5kKQogICAgIDogbV9zaG91bGRFbWl0RGVidWdIb29r
cyhzY29wZS0+Z2xvYmFsT2JqZWN0KCktPmRlYnVnZ2VyKCkpCiAgICAgLCBtX3Nob3VsZEVtaXRQ
cm9maWxlSG9va3Moc2NvcGUtPmdsb2JhbE9iamVjdCgpLT5nbG9iYWxPYmplY3RNZXRob2RUYWJs
ZSgpLT5zdXBwb3J0c1Byb2ZpbGluZyhzY29wZS0+Z2xvYmFsT2JqZWN0KCkpKQpAQCAtMzU5LDkg
KzU4MCw2IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihGdW4KICAgICAs
IG1fY29kZVR5cGUoRnVuY3Rpb25Db2RlKQogICAgICwgbV9uZXh0Q29uc3RhbnRPZmZzZXQoMCkK
ICAgICAsIG1fZ2xvYmFsQ29uc3RhbnRJbmRleCgwKQotICAgICwgbV9oYXNDcmVhdGVkQWN0aXZh
dGlvbihmYWxzZSkKLSAgICAsIG1fZmlyc3RMYXp5RnVuY3Rpb24oMCkKLSAgICAsIG1fbGFzdExh
enlGdW5jdGlvbigwKQogICAgICwgbV9nbG9iYWxEYXRhKHNjb3BlLT5nbG9iYWxEYXRhKCkpCiAg
ICAgLCBtX2xhc3RPcGNvZGVJRChvcF9lbmQpCiAjaWZuZGVmIE5ERUJVRwpAQCAtMzc2LDE0MiAr
NTk0LDI2IEBAIEJ5dGVjb2RlR2VuZXJhdG9yOjpCeXRlY29kZUdlbmVyYXRvcihGdW4KICAgICAg
ICAgbV9jb2RlQmxvY2stPnNldE5lZWRzRnVsbFNjb3BlQ2hhaW4odHJ1ZSk7CiAKICAgICBjb2Rl
QmxvY2stPnNldEdsb2JhbERhdGEobV9nbG9iYWxEYXRhKTsKLSAgICAKLSAgICBwcmVwZW5kQ29t
bWVudCgiZW50ZXJpbmcgRnVuY3Rpb24gYmxvY2siKTsKLSAgICBlbWl0T3Bjb2RlKG9wX2VudGVy
KTsKLSAgICBpZiAobV9jb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKSkgewotICAgICAg
ICBtX2FjdGl2YXRpb25SZWdpc3RlciA9IGFkZFZhcigpOwotICAgICAgICBwcmVwZW5kQ29tbWVu
dCgiYWN0aXZhdGlvbiBmb3IgRnVsbCBTY29wZSBDaGFpbiIpOwotICAgICAgICBlbWl0SW5pdExh
enlSZWdpc3RlcihtX2FjdGl2YXRpb25SZWdpc3Rlcik7Ci0gICAgICAgIG1fY29kZUJsb2NrLT5z
ZXRBY3RpdmF0aW9uUmVnaXN0ZXIobV9hY3RpdmF0aW9uUmVnaXN0ZXItPmluZGV4KCkpOwotICAg
IH0KLQotICAgIC8vIEJvdGggb3BfdGVhcl9vZmZfYWN0aXZhdGlvbiBhbmQgb3BfdGVhcl9vZmZf
YXJndW1lbnRzIHRlYXIgb2ZmIHRoZSAnYXJndW1lbnRzJwotICAgIC8vIG9iamVjdCwgaWYgY3Jl
YXRlZC4KLSAgICBpZiAobV9jb2RlQmxvY2stPm5lZWRzRnVsbFNjb3BlQ2hhaW4oKSB8fCBmdW5j
dGlvbkJvZHktPnVzZXNBcmd1bWVudHMoKSkgewotICAgICAgICBSZWdpc3RlcklEKiB1bm1vZGlm
aWVkQXJndW1lbnRzUmVnaXN0ZXIgPSBhZGRWYXIoKTsgLy8gQW5vbnltb3VzLCBzbyBpdCBjYW4n
dCBiZSBtb2RpZmllZCBieSB1c2VyIGNvZGUuCi0gICAgICAgIFJlZ2lzdGVySUQqIGFyZ3VtZW50
c1JlZ2lzdGVyID0gYWRkVmFyKHByb3BlcnR5TmFtZXMoKS5hcmd1bWVudHMsIGZhbHNlKTsgLy8g
Q2FuIGJlIGNoYW5nZWQgYnkgYXNzaWduaW5nIHRvICdhcmd1bWVudHMnLgotCi0gICAgICAgIC8v
IFdlIGNhbiBzYXZlIGEgbGl0dGxlIHNwYWNlIGJ5IGhhcmQtY29kaW5nIHRoZSBrbm93bGVkZ2Ug
dGhhdCB0aGUgdHdvCi0gICAgICAgIC8vICdhcmd1bWVudHMnIHZhbHVlcyBhcmUgc3RvcmVkIGlu
IGNvbnNlY3V0aXZlIHJlZ2lzdGVycywgYW5kIHN0b3JpbmcKLSAgICAgICAgLy8gb25seSB0aGUg
aW5kZXggb2YgdGhlIGFzc2lnbmFibGUgb25lLgotICAgICAgICBjb2RlQmxvY2stPnNldEFyZ3Vt
ZW50c1JlZ2lzdGVyKGFyZ3VtZW50c1JlZ2lzdGVyLT5pbmRleCgpKTsKLSAgICAgICAgQVNTRVJU
X1VOVVNFRCh1bm1vZGlmaWVkQXJndW1lbnRzUmVnaXN0ZXIsIHVubW9kaWZpZWRBcmd1bWVudHNS
ZWdpc3Rlci0+aW5kZXgoKSA9PSBKU0M6OnVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rlcihjb2Rl
QmxvY2stPmFyZ3VtZW50c1JlZ2lzdGVyKCkpKTsKLQotICAgICAgICBwcmVwZW5kQ29tbWVudCgi
YXJndW1lbnRzIGZvciBGdWxsIFNjb3BlIENoYWluIik7Ci0gICAgICAgIGVtaXRJbml0TGF6eVJl
Z2lzdGVyKGFyZ3VtZW50c1JlZ2lzdGVyKTsKLSAgICAgICAgcHJlcGVuZENvbW1lbnQoInVubW9k
aWZpZWQgYXJndW1lbnRzIGZvciBGdWxsIFNjb3BlIENoYWluIik7Ci0gICAgICAgIGVtaXRJbml0
TGF6eVJlZ2lzdGVyKHVubW9kaWZpZWRBcmd1bWVudHNSZWdpc3Rlcik7Ci0gICAgICAgIAotICAg
ICAgICBpZiAobV9jb2RlQmxvY2stPmlzU3RyaWN0TW9kZSgpKSB7Ci0gICAgICAgICAgICBwcmVw
ZW5kQ29tbWVudCgiY3JlYXRlIGFyZ3VtZW50cyBmb3Igc3RyaWN0IG1vZGUiKTsKLSAgICAgICAg
ICAgIGVtaXRPcGNvZGUob3BfY3JlYXRlX2FyZ3VtZW50cyk7Ci0gICAgICAgICAgICBpbnN0cnVj
dGlvbnMoKS5hcHBlbmQoYXJndW1lbnRzUmVnaXN0ZXItPmluZGV4KCkpOwotICAgICAgICB9Ci0K
LSAgICAgICAgLy8gVGhlIGRlYnVnZ2VyIGN1cnJlbnRseSByZXRyaWV2ZXMgdGhlIGFyZ3VtZW50
cyBvYmplY3QgZnJvbSBhbiBhY3RpdmF0aW9uIHJhdGhlciB0aGFuIHB1bGxpbmcKLSAgICAgICAg
Ly8gaXQgZnJvbSBhIGNhbGwgZnJhbWUuICBJbiB0aGUgbG9uZy10ZXJtIGl0IHNob3VsZCBzdG9w
IGRvaW5nIHRoYXQgKDxyZGFyOi8vcHJvYmxlbS82OTExODg2PiksCi0gICAgICAgIC8vIGJ1dCBm
b3Igbm93IHdlIGZvcmNlIGVhZ2VyIGNyZWF0aW9uIG9mIHRoZSBhcmd1bWVudHMgb2JqZWN0IHdo
ZW4gZGVidWdnaW5nLgotICAgICAgICBpZiAobV9zaG91bGRFbWl0RGVidWdIb29rcykgewotICAg
ICAgICAgICAgcHJlcGVuZENvbW1lbnQoImNyZWF0ZSBhcmd1bWVudHMgZm9yIGRlYnVnIGhvb2tz
Iik7Ci0gICAgICAgICAgICBlbWl0T3Bjb2RlKG9wX2NyZWF0ZV9hcmd1bWVudHMpOwotICAgICAg
ICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKGFyZ3VtZW50c1JlZ2lzdGVyLT5pbmRleCgpKTsK
LSAgICAgICAgfQotICAgIH0KLQotICAgIFJlZ2lzdGVySUQqIGNhbGxlZVJlZ2lzdGVyID0gcmVz
b2x2ZUNhbGxlZShmdW5jdGlvbkJvZHkpOyAvLyBNYXkgcHVzaCB0byB0aGUgc2NvcGUgY2hhaW4g
YW5kL29yIGFkZCBhIGNhcHR1cmVkIHZhci4KLQotICAgIGNvbnN0IERlY2xhcmF0aW9uU3RhY2tz
OjpGdW5jdGlvblN0YWNrJiBmdW5jdGlvblN0YWNrID0gZnVuY3Rpb25Cb2R5LT5mdW5jdGlvblN0
YWNrKCk7Ci0gICAgY29uc3QgRGVjbGFyYXRpb25TdGFja3M6OlZhclN0YWNrJiB2YXJTdGFjayA9
IGZ1bmN0aW9uQm9keS0+dmFyU3RhY2soKTsKLQotICAgIC8vIENhcHR1cmVkIHZhcmlhYmxlcyBh
bmQgZnVuY3Rpb25zIGdvIGZpcnN0IHNvIHRoYXQgYWN0aXZhdGlvbnMgZG9uJ3QgaGF2ZQotICAg
IC8vIHRvIHN0ZXAgb3ZlciB0aGUgbm9uLWNhcHR1cmVkIGxvY2FscyB0byBtYXJrIHRoZW0uCi0g
ICAgbV9oYXNDcmVhdGVkQWN0aXZhdGlvbiA9IGZhbHNlOwotICAgIGlmIChmdW5jdGlvbkJvZHkt
Pmhhc0NhcHR1cmVkVmFyaWFibGVzKCkpIHsKLSAgICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBmdW5jdGlvblN0YWNrLnNpemUoKTsgKytpKSB7Ci0gICAgICAgICAgICBGdW5jdGlvbkJvZHlO
b2RlKiBmdW5jdGlvbiA9IGZ1bmN0aW9uU3RhY2tbaV07Ci0gICAgICAgICAgICBjb25zdCBJZGVu
dGlmaWVyJiBpZGVudCA9IGZ1bmN0aW9uLT5pZGVudCgpOwotICAgICAgICAgICAgaWYgKGZ1bmN0
aW9uQm9keS0+Y2FwdHVyZXMoaWRlbnQpKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFtX2hhc0Ny
ZWF0ZWRBY3RpdmF0aW9uKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1faGFzQ3JlYXRlZEFjdGl2
YXRpb24gPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICBwcmVwZW5kQ29tbWVudCgiYWN0aXZh
dGlvbiBmb3IgY2FwdHVyZWQgdmFycyIpOwotICAgICAgICAgICAgICAgICAgICBlbWl0T3Bjb2Rl
KG9wX2NyZWF0ZV9hY3RpdmF0aW9uKTsKLSAgICAgICAgICAgICAgICAgICAgaW5zdHJ1Y3Rpb25z
KCkuYXBwZW5kKG1fYWN0aXZhdGlvblJlZ2lzdGVyLT5pbmRleCgpKTsKLSAgICAgICAgICAgICAg
ICB9Ci0gICAgICAgICAgICAgICAgbV9mdW5jdGlvbnMuYWRkKGlkZW50LmltcGwoKSk7Ci0gICAg
ICAgICAgICAgICAgcHJlcGVuZENvbW1lbnQoImNhcHR1cmVkIGZ1bmN0aW9uIHZhciIpOwotICAg
ICAgICAgICAgICAgIGVtaXROZXdGdW5jdGlvbihhZGRWYXIoaWRlbnQsIGZhbHNlKSwgZnVuY3Rp
b24pOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgdmFyU3RhY2suc2l6ZSgpOyArK2kpIHsKLSAgICAgICAgICAgIGNvbnN0IElkZW50aWZp
ZXImIGlkZW50ID0gKnZhclN0YWNrW2ldLmZpcnN0OwotICAgICAgICAgICAgaWYgKGZ1bmN0aW9u
Qm9keS0+Y2FwdHVyZXMoaWRlbnQpKQotICAgICAgICAgICAgICAgIGFkZFZhcihpZGVudCwgdmFy
U3RhY2tbaV0uc2Vjb25kICYgRGVjbGFyYXRpb25TdGFja3M6OklzQ29uc3RhbnQpOwotICAgICAg
ICB9Ci0gICAgfQotICAgIGJvb2wgY2FuTGF6aWx5Q3JlYXRlRnVuY3Rpb25zID0gIWZ1bmN0aW9u
Qm9keS0+bmVlZHNBY3RpdmF0aW9uRm9yTW9yZVRoYW5WYXJpYWJsZXMoKSAmJiAhbV9zaG91bGRF
bWl0RGVidWdIb29rczsKLSAgICBpZiAoIWNhbkxhemlseUNyZWF0ZUZ1bmN0aW9ucyAmJiAhbV9o
YXNDcmVhdGVkQWN0aXZhdGlvbikgewotICAgICAgICBtX2hhc0NyZWF0ZWRBY3RpdmF0aW9uID0g
dHJ1ZTsKLSAgICAgICAgcHJlcGVuZENvbW1lbnQoImNhbm5vdCBsYXppbHkgY3JlYXRlIGZ1bmN0
aW9ucyIpOwotICAgICAgICBlbWl0T3Bjb2RlKG9wX2NyZWF0ZV9hY3RpdmF0aW9uKTsKLSAgICAg
ICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fYWN0aXZhdGlvblJlZ2lzdGVyLT5pbmRleCgpKTsK
LSAgICB9CiAKKyAgICBhbGxvY2F0ZUFyZ3VtZW50c1ZhcnMoKTsKKyAgICBhbGxvY2F0ZUFjdGl2
YXRpb25WYXIoKTsKKyAgICBhbGxvY2F0ZUNhbGxlZVZhclVuZGVjbGFyZWQoKTsKKyAgICBhbGxv
Y2F0ZUNhcHR1cmVkVmFycygpOwogICAgIGNvZGVCbG9jay0+bV9udW1DYXB0dXJlZFZhcnMgPSBj
b2RlQmxvY2stPm1fbnVtVmFyczsKLQotICAgIG1fZmlyc3RMYXp5RnVuY3Rpb24gPSBjb2RlQmxv
Y2stPm1fbnVtVmFyczsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGZ1bmN0aW9uU3RhY2su
c2l6ZSgpOyArK2kpIHsKLSAgICAgICAgRnVuY3Rpb25Cb2R5Tm9kZSogZnVuY3Rpb24gPSBmdW5j
dGlvblN0YWNrW2ldOwotICAgICAgICBjb25zdCBJZGVudGlmaWVyJiBpZGVudCA9IGZ1bmN0aW9u
LT5pZGVudCgpOwotICAgICAgICBpZiAoIWZ1bmN0aW9uQm9keS0+Y2FwdHVyZXMoaWRlbnQpKSB7
Ci0gICAgICAgICAgICBtX2Z1bmN0aW9ucy5hZGQoaWRlbnQuaW1wbCgpKTsKLSAgICAgICAgICAg
IFJlZlB0cjxSZWdpc3RlcklEPiByZWcgPSBhZGRWYXIoaWRlbnQsIGZhbHNlKTsKLSAgICAgICAg
ICAgIC8vIERvbid0IGxhemlseSBjcmVhdGUgZnVuY3Rpb25zIHRoYXQgb3ZlcnJpZGUgdGhlIG5h
bWUgJ2FyZ3VtZW50cycKLSAgICAgICAgICAgIC8vIGFzIHRoaXMgd291bGQgY29tcGxpY2F0ZSBs
YXp5IGluc3RhbnRpYXRpb24gb2YgYWN0dWFsIGFyZ3VtZW50cy4KLSAgICAgICAgICAgIHByZXBl
bmRDb21tZW50KCJhIGZ1bmN0aW9uIHRoYXQgb3ZlcnJpZGUgJ2FyZ3VtZW50cyciKTsKLSAgICAg
ICAgICAgIGlmICghY2FuTGF6aWx5Q3JlYXRlRnVuY3Rpb25zIHx8IGlkZW50ID09IHByb3BlcnR5
TmFtZXMoKS5hcmd1bWVudHMpCi0gICAgICAgICAgICAgICAgZW1pdE5ld0Z1bmN0aW9uKHJlZy5n
ZXQoKSwgZnVuY3Rpb24pOwotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgZW1p
dEluaXRMYXp5UmVnaXN0ZXIocmVnLmdldCgpKTsKLSAgICAgICAgICAgICAgICBtX2xhenlGdW5j
dGlvbnMuc2V0KHJlZy0+aW5kZXgoKSwgZnVuY3Rpb24pOwotICAgICAgICAgICAgfQotICAgICAg
ICB9Ci0gICAgfQotICAgIG1fbGFzdExhenlGdW5jdGlvbiA9IGNhbkxhemlseUNyZWF0ZUZ1bmN0
aW9ucyA/IGNvZGVCbG9jay0+bV9udW1WYXJzIDogbV9maXJzdExhenlGdW5jdGlvbjsKLSAgICBm
b3IgKHNpemVfdCBpID0gMDsgaSA8IHZhclN0YWNrLnNpemUoKTsgKytpKSB7Ci0gICAgICAgIGNv
bnN0IElkZW50aWZpZXImIGlkZW50ID0gKnZhclN0YWNrW2ldLmZpcnN0OwotICAgICAgICBpZiAo
IWZ1bmN0aW9uQm9keS0+Y2FwdHVyZXMoaWRlbnQpKQotICAgICAgICAgICAgYWRkVmFyKGlkZW50
LCB2YXJTdGFja1tpXS5zZWNvbmQgJiBEZWNsYXJhdGlvblN0YWNrczo6SXNDb25zdGFudCk7Ci0g
ICAgfQotCi0gICAgaWYgKG1fc2hvdWxkRW1pdERlYnVnSG9va3MpCisgICAgYWxsb2NhdGVVbmNh
cHR1cmVkVmFycygpOworICAgIGlmIChtX3Nob3VsZEVtaXREZWJ1Z0hvb2tzKSAvLyBGSVhNRTog
V2hhdCBhYm91dCBldmFsPwogICAgICAgICBjb2RlQmxvY2stPm1fbnVtQ2FwdHVyZWRWYXJzID0g
Y29kZUJsb2NrLT5tX251bVZhcnM7Ci0KLSAgICBGdW5jdGlvblBhcmFtZXRlcnMmIHBhcmFtZXRl
cnMgPSAqZnVuY3Rpb25Cb2R5LT5wYXJhbWV0ZXJzKCk7Ci0gICAgbV9wYXJhbWV0ZXJzLmdyb3co
cGFyYW1ldGVycy5zaXplKCkgKyAxKTsgLy8gcmVzZXJ2ZSBzcGFjZSBmb3IgInRoaXMiCi0KLSAg
ICAvLyBBZGQgInRoaXMiIGFzIGEgcGFyYW1ldGVyCi0gICAgaW50IG5leHRQYXJhbWV0ZXJJbmRl
eCA9IENhbGxGcmFtZTo6dGhpc0FyZ3VtZW50T2Zmc2V0KCk7Ci0gICAgbV90aGlzUmVnaXN0ZXIu
c2V0SW5kZXgobmV4dFBhcmFtZXRlckluZGV4LS0pOwotICAgIG1fY29kZUJsb2NrLT5hZGRQYXJh
bWV0ZXIoKTsKLSAgICAKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHBhcmFtZXRlcnMuc2l6
ZSgpOyArK2kpCi0gICAgICAgIGFkZFBhcmFtZXRlcihwYXJhbWV0ZXJzW2ldLCBuZXh0UGFyYW1l
dGVySW5kZXgtLSk7Ci0KICAgICBwcmVzZXJ2ZUxhc3RWYXIoKTsKIAotICAgIC8vIFdlIGRlY2xh
cmUgdGhlIGNhbGxlZSdzIG5hbWUgbGFzdCBiZWNhdXNlIGl0IHNob3VsZCBsb3NlIHRvIGEgdmFy
LCBmdW5jdGlvbiwgYW5kL29yIHBhcmFtZXRlciBkZWNsYXJhdGlvbi4KLSAgICBhZGRDYWxsZWUo
ZnVuY3Rpb25Cb2R5LCBjYWxsZWVSZWdpc3Rlcik7CisgICAgZGVjbGFyZVBhcmFtZXRlcnMoKTsg
Ly8gUGFyYW1ldGVycyBsb3NlIHRvIGZ1bmN0aW9ucworICAgIGRlY2xhcmVDYWxsZWUoKTsgLy8g
Q2FsbGVlIGxvc2VzIHRvIGV2ZXJ5dGhpbmcKIAotICAgIGlmIChpc0NvbnN0cnVjdG9yKCkpIHsK
LSAgICAgICAgcHJlcGVuZENvbW1lbnQoIid0aGlzJyBiZWNhdXNlIHdlIGFyZSBhIENvbnN0cnVj
dG9yIGZ1bmN0aW9uIik7Ci0gICAgICAgIGVtaXRPcGNvZGUob3BfY3JlYXRlX3RoaXMpOwotICAg
ICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQobV90aGlzUmVnaXN0ZXIuaW5kZXgoKSk7Ci0gICAg
fSBlbHNlIGlmICghY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSAmJiAoZnVuY3Rpb25Cb2R5LT51
c2VzVGhpcygpIHx8IGNvZGVCbG9jay0+dXNlc0V2YWwoKSB8fCBtX3Nob3VsZEVtaXREZWJ1Z0hv
b2tzKSkgewotICAgICAgICBWYWx1ZVByb2ZpbGUqIHByb2ZpbGUgPSBlbWl0UHJvZmlsZWRPcGNv
ZGUob3BfY29udmVydF90aGlzKTsKLSAgICAgICAgaW5zdHJ1Y3Rpb25zKCkuYXBwZW5kKG1fdGhp
c1JlZ2lzdGVyLmluZGV4KCkpOwotICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQocHJvZmls
ZSk7Ci0gICAgfQorICAgIGVtaXRPcGNvZGUob3BfZW50ZXIpOworICAgIGluaXRBcmd1bWVudHNW
YXJzKCk7CisgICAgaW5pdEFjdGl2YXRpb25WYXIoKTsKKyAgICBpbml0Q2FsbGVlVmFyKCk7Cisg
ICAgaW5pdFRoaXNQYXJhbWV0ZXIoKTsKKyAgICBpbml0RnVuY3Rpb25EZWNsYXJhdGlvbnMoKTsK
IH0KIAogQnl0ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKEV2YWxOb2RlKiBldmFs
Tm9kZSwgSlNTY29wZSogc2NvcGUsIFN5bWJvbFRhYmxlKiBzeW1ib2xUYWJsZSwgRXZhbENvZGVC
bG9jayogY29kZUJsb2NrLCBDb21waWxhdGlvbktpbmQpCkBAIC01MzIsOSArNjM0LDYgQEAgQnl0
ZWNvZGVHZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKEV2YQogICAgICwgbV9jb2RlVHlwZShF
dmFsQ29kZSkKICAgICAsIG1fbmV4dENvbnN0YW50T2Zmc2V0KDApCiAgICAgLCBtX2dsb2JhbENv
bnN0YW50SW5kZXgoMCkKLSAgICAsIG1faGFzQ3JlYXRlZEFjdGl2YXRpb24odHJ1ZSkKLSAgICAs
IG1fZmlyc3RMYXp5RnVuY3Rpb24oMCkKLSAgICAsIG1fbGFzdExhenlGdW5jdGlvbigwKQogICAg
ICwgbV9nbG9iYWxEYXRhKHNjb3BlLT5nbG9iYWxEYXRhKCkpCiAgICAgLCBtX2xhc3RPcGNvZGVJ
RChvcF9lbmQpCiAjaWZuZGVmIE5ERUJVRwpAQCAtNTU1LDE0ICs2NTQsMTQgQEAgQnl0ZWNvZGVH
ZW5lcmF0b3I6OkJ5dGVjb2RlR2VuZXJhdG9yKEV2YQogCiAgICAgY29uc3QgRGVjbGFyYXRpb25T
dGFja3M6OkZ1bmN0aW9uU3RhY2smIGZ1bmN0aW9uU3RhY2sgPSBldmFsTm9kZS0+ZnVuY3Rpb25T
dGFjaygpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZnVuY3Rpb25TdGFjay5zaXplKCk7
ICsraSkKLSAgICAgICAgbV9jb2RlQmxvY2stPmFkZEZ1bmN0aW9uRGVjbChGdW5jdGlvbkV4ZWN1
dGFibGU6OmNyZWF0ZSgqbV9nbG9iYWxEYXRhLCBmdW5jdGlvblN0YWNrW2ldKSk7CisgICAgICAg
IG1fY29kZUJsb2NrLT5hZGRGdW5jdGlvbkRlY2woRnVuY3Rpb25FeGVjdXRhYmxlOjpjcmVhdGUo
Km1fZ2xvYmFsRGF0YSwgZnVuY3Rpb25TdGFja1tpXS5ub2RlKSk7CiAKICAgICBjb25zdCBEZWNs
YXJhdGlvblN0YWNrczo6VmFyU3RhY2smIHZhclN0YWNrID0gZXZhbE5vZGUtPnZhclN0YWNrKCk7
CiAgICAgdW5zaWduZWQgbnVtVmFyaWFibGVzID0gdmFyU3RhY2suc2l6ZSgpOwogICAgIFZlY3Rv
cjxJZGVudGlmaWVyPiB2YXJpYWJsZXM7CiAgICAgdmFyaWFibGVzLnJlc2VydmVDYXBhY2l0eShu
dW1WYXJpYWJsZXMpOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtVmFyaWFibGVzOyAr
K2kpCi0gICAgICAgIHZhcmlhYmxlcy5hcHBlbmQoKnZhclN0YWNrW2ldLmZpcnN0KTsKKyAgICAg
ICAgdmFyaWFibGVzLmFwcGVuZCgqdmFyU3RhY2tbaV0ubmFtZSk7CiAgICAgY29kZUJsb2NrLT5h
ZG9wdFZhcmlhYmxlcyh2YXJpYWJsZXMpOwogICAgIGNvZGVCbG9jay0+bV9udW1DYXB0dXJlZFZh
cnMgPSBjb2RlQmxvY2stPm1fbnVtVmFyczsKICAgICBwcmVzZXJ2ZUxhc3RWYXIoKTsKQEAgLTU4
MCw1NCArNjc5LDcgQEAgUmVnaXN0ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OmVtaXRJbml0TAog
ICAgIHJldHVybiByZWc7CiB9CiAKLVJlZ2lzdGVySUQqIEJ5dGVjb2RlR2VuZXJhdG9yOjpyZXNv
bHZlQ2FsbGVlKEZ1bmN0aW9uQm9keU5vZGUqIGZ1bmN0aW9uQm9keU5vZGUpCi17Ci0gICAgaWYg
KGZ1bmN0aW9uQm9keU5vZGUtPmlkZW50KCkuaXNOdWxsKCkgfHwgIWZ1bmN0aW9uQm9keU5vZGUt
PmZ1bmN0aW9uTmFtZUlzSW5TY29wZSgpKQotICAgICAgICByZXR1cm4gMDsKLQotICAgIG1fY2Fs
bGVlUmVnaXN0ZXIuc2V0SW5kZXgoUmVnaXN0ZXJGaWxlOjpDYWxsZWUpOwotCi0gICAgLy8gSWYg
bm9uLXN0cmljdCBldmFsIGlzIGluIHBsYXksIHdlIHVzZSBhIHNlcGFyYXRlIG9iamVjdCBpbiB0
aGUgc2NvcGUgY2hhaW4gZm9yIHRoZSBjYWxsZWUncyBuYW1lLgotICAgIGlmICgobV9jb2RlQmxv
Y2stPnVzZXNFdmFsKCkgJiYgIW1fY29kZUJsb2NrLT5pc1N0cmljdE1vZGUoKSkgfHwgbV9zaG91
bGRFbWl0RGVidWdIb29rcykgewotICAgICAgICBlbWl0T3Bjb2RlKG9wX3B1c2hfbmFtZV9zY29w
ZSk7Ci0gICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChhZGRDb25zdGFudChmdW5jdGlvbkJv
ZHlOb2RlLT5pZGVudCgpKSk7Ci0gICAgICAgIGluc3RydWN0aW9ucygpLmFwcGVuZChtX2NhbGxl
ZVJlZ2lzdGVyLmluZGV4KCkpOwotICAgICAgICBpbnN0cnVjdGlvbnMoKS5hcHBlbmQoUmVhZE9u
bHkgfCBEb250RGVsZXRlKTsKLQotICAgICAgICAvLyBQdXQgYSBtaXJyb3Igb2JqZWN0IGluIGNv
bXBpbGF0aW9uIHNjb3BlLCBzbyBjb21waWxlLXRpbWUgdmFyaWFibGUgcmVzb2x1dGlvbiBzZWVz
IHRoZSBwcm9wZXJ0eSBuYW1lIHdlJ2xsIHNlZSBhdCBydW50aW1lLgotICAgICAgICBtX3Njb3Bl
LnNldCgqZ2xvYmFsRGF0YSgpLAotICAgICAgICAgICAgSlNOYW1lU2NvcGU6OmNyZWF0ZSgKLSAg
ICAgICAgICAgICAgICBtX3Njb3BlLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsRXhlYygpLAotICAg
ICAgICAgICAgICAgIGZ1bmN0aW9uQm9keU5vZGUtPmlkZW50KCksCi0gICAgICAgICAgICAgICAg
anNVbmRlZmluZWQoKSwKLSAgICAgICAgICAgICAgICBSZWFkT25seSB8IERvbnREZWxldGUsCi0g
ICAgICAgICAgICAgICAgbV9zY29wZS5nZXQoKQotICAgICAgICAgICAgKQotICAgICAgICApOwot
ICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpZiAoIWZ1bmN0aW9uQm9keU5vZGUtPmNh
cHR1cmVzKGZ1bmN0aW9uQm9keU5vZGUtPmlkZW50KCkpKQotICAgICAgICByZXR1cm4gJm1fY2Fs
bGVlUmVnaXN0ZXI7Ci0KLSAgICAvLyBNb3ZlIHRoZSBjYWxsZWUgaW50byB0aGUgY2FwdHVyZWQg
c2VjdGlvbiBvZiB0aGUgc3RhY2suCi0gICAgcmV0dXJuIGVtaXRNb3ZlKGFkZFZhcigpLCAmbV9j
YWxsZWVSZWdpc3Rlcik7Ci19Ci0KLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmFkZENhbGxlZShG
dW5jdGlvbkJvZHlOb2RlKiBmdW5jdGlvbkJvZHlOb2RlLCBSZWdpc3RlcklEKiBjYWxsZWVSZWdp
c3RlcikKLXsKLSAgICBpZiAoZnVuY3Rpb25Cb2R5Tm9kZS0+aWRlbnQoKS5pc051bGwoKSB8fCAh
ZnVuY3Rpb25Cb2R5Tm9kZS0+ZnVuY3Rpb25OYW1lSXNJblNjb3BlKCkpCi0gICAgICAgIHJldHVy
bjsKLQotICAgIC8vIElmIG5vbi1zdHJpY3QgZXZhbCBpcyBpbiBwbGF5LCB3ZSB1c2UgYSBzZXBh
cmF0ZSBvYmplY3QgaW4gdGhlIHNjb3BlIGNoYWluIGZvciB0aGUgY2FsbGVlJ3MgbmFtZS4KLSAg
ICBpZiAoKG1fY29kZUJsb2NrLT51c2VzRXZhbCgpICYmICFtX2NvZGVCbG9jay0+aXNTdHJpY3RN
b2RlKCkpIHx8IG1fc2hvdWxkRW1pdERlYnVnSG9va3MpCi0gICAgICAgIHJldHVybjsKLQotICAg
IEFTU0VSVChjYWxsZWVSZWdpc3Rlcik7Ci0gICAgc3ltYm9sVGFibGUoKS5hZGQoZnVuY3Rpb25C
b2R5Tm9kZS0+aWRlbnQoKS5pbXBsKCksIFN5bWJvbFRhYmxlRW50cnkoY2FsbGVlUmVnaXN0ZXIt
PmluZGV4KCksIFJlYWRPbmx5KSk7Ci19Ci0KLXZvaWQgQnl0ZWNvZGVHZW5lcmF0b3I6OmFkZFBh
cmFtZXRlcihjb25zdCBJZGVudGlmaWVyJiBpZGVudCwgaW50IHBhcmFtZXRlckluZGV4KQordm9p
ZCBCeXRlY29kZUdlbmVyYXRvcjo6ZGVjbGFyZVBhcmFtZXRlcihjb25zdCBJZGVudGlmaWVyJiBp
ZGVudCwgaW50IHBhcmFtZXRlckluZGV4KQogewogICAgIC8vIFBhcmFtZXRlcnMgb3ZlcndyaXRl
IHZhciBkZWNsYXJhdGlvbnMsIGJ1dCBub3QgZnVuY3Rpb24gZGVjbGFyYXRpb25zLgogICAgIFN0
cmluZ0ltcGwqIHJlcCA9IGlkZW50LmltcGwoKTsKQEAgLTY3MSw5ICs3MjMsMTEgQEAgUmVnaXN0
ZXJJRCogQnl0ZWNvZGVHZW5lcmF0b3I6OnVuY2hlY2tlZAogCiBSZWdpc3RlcklEKiBCeXRlY29k
ZUdlbmVyYXRvcjo6Y3JlYXRlTGF6eVJlZ2lzdGVySWZOZWNlc3NhcnkoUmVnaXN0ZXJJRCogcmVn
KQogewotICAgIGlmIChtX2xhc3RMYXp5RnVuY3Rpb24gPD0gcmVnLT5pbmRleCgpIHx8IHJlZy0+
aW5kZXgoKSA8IG1fZmlyc3RMYXp5RnVuY3Rpb24pCisgICAgRnVuY3Rpb25Cb2R5Tm9kZSogbm9k
ZSA9IG1fbGF6eUZ1bmN0aW9ucy5nZXQocmVnLT5pbmRleCgpKTsKKyAgICBpZiAoIW5vZGUpCiAg
ICAgICAgIHJldHVybiByZWc7Ci0gICAgZW1pdExhenlOZXdGdW5jdGlvbihyZWcsIG1fbGF6eUZ1
bmN0aW9ucy5nZXQocmVnLT5pbmRleCgpKSk7CisKKyAgICBlbWl0TGF6eU5ld0Z1bmN0aW9uKHJl
Zywgbm9kZSk7CiAgICAgcmV0dXJuIHJlZzsKIH0KIApAQCAtMTk0OSw5ICsyMDAzLDcgQEAgdm9p
ZCBCeXRlY29kZUdlbmVyYXRvcjo6Y3JlYXRlQXJndW1lbnRzSQogCiB2b2lkIEJ5dGVjb2RlR2Vu
ZXJhdG9yOjpjcmVhdGVBY3RpdmF0aW9uSWZOZWNlc3NhcnkoKQogewotICAgIGlmIChtX2hhc0Ny
ZWF0ZWRBY3RpdmF0aW9uKQotICAgICAgICByZXR1cm47Ci0gICAgaWYgKCFtX2NvZGVCbG9jay0+
bmVlZHNGdWxsU2NvcGVDaGFpbigpKQorICAgIGlmICghbV9jb2RlQmxvY2stPm5lZWRzRnVsbFNj
b3BlQ2hhaW4oKSB8fCBtX2NvZGVUeXBlICE9IEZ1bmN0aW9uQ29kZSkKICAgICAgICAgcmV0dXJu
OwogICAgIGVtaXRPcGNvZGUob3BfY3JlYXRlX2FjdGl2YXRpb24pOwogICAgIGluc3RydWN0aW9u
cygpLmFwcGVuZChtX2FjdGl2YXRpb25SZWdpc3Rlci0+aW5kZXgoKSk7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBpbGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb21waWxlci9CeXRlY29kZUdlbmVyYXRv
ci5oCShyZXZpc2lvbiAxMjc4MTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvbXBp
bGVyL0J5dGVjb2RlR2VuZXJhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTYxNCwxMSArNjE0LDIy
IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICAvLyBSZXR1cm5zIHRoZSBpbmRleCBvZiB0aGUg
YWRkZWQgdmFyLgogICAgICAgICBlbnVtIENvbnN0YW50TW9kZSB7IElzQ29uc3RhbnQsIElzVmFy
aWFibGUgfTsKICAgICAgICAgZW51bSBGdW5jdGlvbk1vZGUgeyBJc0Z1bmN0aW9uVG9TcGVjaWFs
aXplLCBOb3RGdW5jdGlvbk9yTm90U3BlY2lhbGl6YWJsZSB9OworICAgICAgICBlbnVtIFZhclR5
cGUgeyBDYXB0dXJlZCwgTm90Q2FwdHVyZWQgfTsKICAgICAgICAgaW50IGFkZEdsb2JhbFZhcihj
b25zdCBJZGVudGlmaWVyJiwgQ29uc3RhbnRNb2RlLCBGdW5jdGlvbk1vZGUpOworICAgICAgICB2
b2lkIGRlY2xhcmVQYXJhbWV0ZXIoY29uc3QgSWRlbnRpZmllciYsIGludCBwYXJhbWV0ZXJJbmRl
eCk7CiAKLSAgICAgICAgdm9pZCBhZGRQYXJhbWV0ZXIoY29uc3QgSWRlbnRpZmllciYsIGludCBw
YXJhbWV0ZXJJbmRleCk7Ci0gICAgICAgIFJlZ2lzdGVySUQqIHJlc29sdmVDYWxsZWUoRnVuY3Rp
b25Cb2R5Tm9kZSopOwotICAgICAgICB2b2lkIGFkZENhbGxlZShGdW5jdGlvbkJvZHlOb2RlKiwg
UmVnaXN0ZXJJRCopOworICAgICAgICB2b2lkIGFsbG9jYXRlQ2FwdHVyZWRWYXJzKCk7CisgICAg
ICAgIHZvaWQgYWxsb2NhdGVVbmNhcHR1cmVkVmFycygpOworICAgICAgICB2b2lkIGFsbG9jYXRl
QWN0aXZhdGlvblZhcigpOworICAgICAgICB2b2lkIGFsbG9jYXRlQXJndW1lbnRzVmFycygpOwor
ICAgICAgICB2b2lkIGFsbG9jYXRlQ2FsbGVlVmFyVW5kZWNsYXJlZCgpOworICAgICAgICB2b2lk
IGRlY2xhcmVQYXJhbWV0ZXJzKCk7CisgICAgICAgIHZvaWQgZGVjbGFyZUNhbGxlZSgpOworICAg
ICAgICB2b2lkIGluaXRDYWxsZWVWYXIoKTsKKyAgICAgICAgdm9pZCBpbml0QXJndW1lbnRzVmFy
cygpOworICAgICAgICB2b2lkIGluaXRBY3RpdmF0aW9uVmFyKCk7CisgICAgICAgIHZvaWQgaW5p
dFRoaXNQYXJhbWV0ZXIoKTsKKyAgICAgICAgdm9pZCBpbml0RnVuY3Rpb25EZWNsYXJhdGlvbnMo
KTsKIAogICAgICAgICB2b2lkIHByZXNlcnZlTGFzdFZhcigpOwogICAgICAgICBib29sIHNob3Vs
ZEF2b2lkUmVzb2x2ZUdsb2JhbCgpOwpAQCAtNzM4LDkgKzc0OSw2IEBAIG5hbWVzcGFjZSBKU0Mg
ewogCiAgICAgICAgIGludCBtX2dsb2JhbFZhclN0b3JhZ2VPZmZzZXQ7CiAKLSAgICAgICAgYm9v
bCBtX2hhc0NyZWF0ZWRBY3RpdmF0aW9uOwotICAgICAgICBpbnQgbV9maXJzdExhenlGdW5jdGlv
bjsKLSAgICAgICAgaW50IG1fbGFzdExhenlGdW5jdGlvbjsKICAgICAgICAgSGFzaE1hcDx1bnNp
Z25lZCBpbnQsIEZ1bmN0aW9uQm9keU5vZGUqLCBXVEY6OkludEhhc2g8dW5zaWduZWQgaW50Piwg
V1RGOjpVbnNpZ25lZFdpdGhaZXJvS2V5SGFzaFRyYWl0czx1bnNpZ25lZCBpbnQ+ID4gbV9sYXp5
RnVuY3Rpb25zOwogICAgICAgICB0eXBlZGVmIEhhc2hNYXA8RnVuY3Rpb25Cb2R5Tm9kZSosIHVu
c2lnbmVkPiBGdW5jdGlvbk9mZnNldE1hcDsKICAgICAgICAgRnVuY3Rpb25PZmZzZXRNYXAgbV9m
dW5jdGlvbk9mZnNldHM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1
aWxkZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL0FTVEJ1
aWxkZXIuaAkocmV2aXNpb24gMTI3ODA5KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNl
ci9BU1RCdWlsZGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTMxNCw3ICszMTQsNyBAQCBwdWJsaWM6
CiAgICAgICAgIEZ1bmNEZWNsTm9kZSogZGVjbCA9IG5ldyAobV9nbG9iYWxEYXRhKSBGdW5jRGVj
bE5vZGUobG9jYXRpb24sICpuYW1lLCBib2R5LCBtX3NvdXJjZUNvZGUtPnN1YkV4cHJlc3Npb24o
b3BlbkJyYWNlUG9zLCBjbG9zZUJyYWNlUG9zLCBib2R5U3RhcnRMaW5lKSwgcGFyYW1ldGVycyk7
CiAgICAgICAgIGlmICgqbmFtZSA9PSBtX2dsb2JhbERhdGEtPnByb3BlcnR5TmFtZXMtPmFyZ3Vt
ZW50cykKICAgICAgICAgICAgIHVzZXNBcmd1bWVudHMoKTsKLSAgICAgICAgbV9zY29wZS5tX2Z1
bmNEZWNsYXJhdGlvbnMtPmRhdGEuYXBwZW5kKGRlY2wtPmJvZHkoKSk7CisgICAgICAgIG1fc2Nv
cGUubV9mdW5jRGVjbGFyYXRpb25zLT5kYXRhLmFwcGVuZChEZWNsYXJhdGlvblN0YWNrczo6RnVu
Y3Rpb25EZWNsYXJhdGlvbihkZWNsLT5ib2R5KCkpKTsKICAgICAgICAgYm9keS0+c2V0TG9jKGJv
ZHlTdGFydExpbmUsIGJvZHlFbmRMaW5lLCBsb2NhdGlvbi5jb2x1bW4pOwogICAgICAgICByZXR1
cm4gZGVjbDsKICAgICB9CkBAIC01MDgsNyArNTA4LDcgQEAgcHVibGljOgogICAgIHsKICAgICAg
ICAgaWYgKG1fZ2xvYmFsRGF0YS0+cHJvcGVydHlOYW1lcy0+YXJndW1lbnRzID09ICppZGVudCkK
ICAgICAgICAgICAgIHVzZXNBcmd1bWVudHMoKTsKLSAgICAgICAgbV9zY29wZS5tX3ZhckRlY2xh
cmF0aW9ucy0+ZGF0YS5hcHBlbmQoc3RkOjptYWtlX3BhaXIoaWRlbnQsIGF0dHJzKSk7CisgICAg
ICAgIG1fc2NvcGUubV92YXJEZWNsYXJhdGlvbnMtPmRhdGEuYXBwZW5kKERlY2xhcmF0aW9uU3Rh
Y2tzOjpWYXJEZWNsYXJhdGlvbihpZGVudCwgYXR0cnMpKTsKICAgICB9CiAKICAgICBFeHByZXNz
aW9uTm9kZSogY29tYmluZUNvbW1hTm9kZXMoY29uc3QgSlNUb2tlbkxvY2F0aW9uJiBsb2NhdGlv
biwgRXhwcmVzc2lvbk5vZGUqIGxpc3QsIEV4cHJlc3Npb25Ob2RlKiBpbml0KQpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9wYXJzZXIvTm9kZXMuaAkocmV2aXNpb24gMTI3ODEwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9Ob2Rlcy5oCSh3b3JraW5nIGNvcHkpCkBAIC04NSw5ICs4
NSwyOSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICB0eXBlZGVmIEhhc2hTZXQ8UmVmUHRyPFN0cmlu
Z0ltcGw+LCBJZGVudGlmaWVyUmVwSGFzaD4gSWRlbnRpZmllclNldDsKIAogICAgIG5hbWVzcGFj
ZSBEZWNsYXJhdGlvblN0YWNrcyB7CisgICAgICAgIHN0cnVjdCBWYXJEZWNsYXJhdGlvbiB7Cisg
ICAgICAgICAgICBWYXJEZWNsYXJhdGlvbihjb25zdCBJZGVudGlmaWVyKiBuYW1lLCB1bnNpZ25l
ZCBhdHRyaWJ1dGVzKQorICAgICAgICAgICAgICAgIDogbmFtZShuYW1lKQorICAgICAgICAgICAg
ICAgICwgYXR0cmlidXRlcyhhdHRyaWJ1dGVzKQorICAgICAgICAgICAgICAgICwgcmVnKDApCisg
ICAgICAgICAgICB7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBjb25zdCBJZGVudGlmaWVy
KiBuYW1lOworICAgICAgICAgICAgdW5zaWduZWQgYXR0cmlidXRlczsKKyAgICAgICAgICAgIFJl
Z2lzdGVySUQqIHJlZzsKKyAgICAgICAgfTsKKyAgICAgICAgc3RydWN0IEZ1bmN0aW9uRGVjbGFy
YXRpb24geworICAgICAgICAgICAgZXhwbGljaXQgRnVuY3Rpb25EZWNsYXJhdGlvbihGdW5jdGlv
bkJvZHlOb2RlKiBub2RlKQorICAgICAgICAgICAgICAgIDogbm9kZShub2RlKQorICAgICAgICAg
ICAgICAgICwgcmVnKDApCisgICAgICAgICAgICB7CisgICAgICAgICAgICB9CisgICAgICAgICAg
ICBGdW5jdGlvbkJvZHlOb2RlKiBub2RlOworICAgICAgICAgICAgUmVnaXN0ZXJJRCogcmVnOwor
ICAgICAgICB9OwogICAgICAgICBlbnVtIFZhckF0dHJzIHsgSXNDb25zdGFudCA9IDEsIEhhc0lu
aXRpYWxpemVyID0gMiB9OwotICAgICAgICB0eXBlZGVmIFZlY3RvcjxzdGQ6OnBhaXI8Y29uc3Qg
SWRlbnRpZmllciosIHVuc2lnbmVkPiA+IFZhclN0YWNrOwotICAgICAgICB0eXBlZGVmIFZlY3Rv
cjxGdW5jdGlvbkJvZHlOb2RlKj4gRnVuY3Rpb25TdGFjazsKKyAgICAgICAgdHlwZWRlZiBWZWN0
b3I8VmFyRGVjbGFyYXRpb24+IFZhclN0YWNrOworICAgICAgICB0eXBlZGVmIFZlY3RvcjxGdW5j
dGlvbkRlY2xhcmF0aW9uPiBGdW5jdGlvblN0YWNrOwogICAgIH0KIAogICAgIHN0cnVjdCBTd2l0
Y2hJbmZvIHsK
</data>
<flag name="review"
          id="174164"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>163035</attachid>
            <date>2012-09-09 21:24:01 -0700</date>
            <delta_ts>2012-09-09 21:33:34 -0700</delta_ts>
            <desc>test</desc>
            <filename>scratch.html</filename>
            <type>text/html</type>
            <size>383</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">PHByZSBpZD0iY29uc29sZSI+PC9wcmU+Cgo8c2NyaXB0PgpmdW5jdGlvbiBsb2cocykKewoJZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZShzICsgIlxuIikpOwp9CgpmdW5jdGlvbiBnKCkgewoJcmV0dXJuIGYuYXJndW1l
bnRzOwp9Cgp2YXIgZiA9IGZ1bmN0aW9uKCkgewoJcmV0dXJuIGcoKSA9PSBnKCk7Cn07CmxvZyhm
KCkpOwoKdmFyIGYgPSBmdW5jdGlvbigpIHsKCWFyZ3VtZW50czsKCXJldHVybiBnKCkgPT0gZygp
Owp9Owpsb2coZigpKTsKCnZhciBmID0gZnVuY3Rpb24oKSB7CglyZXR1cm4gZyhhcmd1bWVudHMp
ID09IGcoYXJndW1lbnRzKTsKfTsKbG9nKGYoKSk7Cjwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>163037</attachid>
            <date>2012-09-09 21:33:34 -0700</date>
            <delta_ts>2012-09-09 21:36:33 -0700</delta_ts>
            <desc>test</desc>
            <filename>scratch.html</filename>
            <type>text/html</type>
            <size>552</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">PHByZSBpZD0iY29uc29sZSI+PC9wcmU+Cgo8c2NyaXB0PgpmdW5jdGlvbiBsb2cocykKewoJZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZShzICsgIlxuIikpOwp9CgpmdW5jdGlvbiBnKCkgewoJcmV0dXJuIGYuYXJndW1l
bnRzOwp9CgpmdW5jdGlvbiBhcmcwKCkgewoJcmV0dXJuIGYuYXJndW1lbnRzWzBdOwp9CgpmID0g
ZnVuY3Rpb24oKSB7CglyZXR1cm4gZygpID09IGcoKTsKfTsKbG9nKGYoKSk7CgpmID0gZnVuY3Rp
b24oKSB7Cglhcmd1bWVudHM7CglyZXR1cm4gZygpID09IGcoKSA9PSBhcmd1bWVudHM7Cn07Cmxv
ZyhmKCkpOwoKZiA9IGZ1bmN0aW9uKCkgewoJcmV0dXJuIGcoKSA9PSBnKCk7Cglhcmd1bWVudHM7
Cn07CmxvZyhmKCkpOwoKZiA9IGZ1bmN0aW9uKCkgewoJcmV0dXJuIGcoYXJndW1lbnRzKSA9PSBn
KGFyZ3VtZW50cyk7Cn07CmxvZyhmKCkpOwoKZiA9IGZ1bmN0aW9uKHgpIHsKCXJldHVybiBnKClb
MF0gPT0gKHggPSAxKTsKfTsKbG9nKGYoMCkpOwo8L3NjcmlwdD4K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>163038</attachid>
            <date>2012-09-09 21:36:33 -0700</date>
            <delta_ts>2012-09-09 21:36:33 -0700</delta_ts>
            <desc>test</desc>
            <filename>scratch.html</filename>
            <type>text/html</type>
            <size>577</size>
            <attacher name="Geoffrey Garen">ggaren</attacher>
            
              <data encoding="base64">PHByZSBpZD0iY29uc29sZSI+PC9wcmU+Cgo8c2NyaXB0PgpmdW5jdGlvbiBsb2cocykKewoJZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoImNvbnNvbGUiKS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVh
dGVUZXh0Tm9kZShzICsgIlxuIikpOwp9CgpmdW5jdGlvbiBnKCkgewoJcmV0dXJuIGYuYXJndW1l
bnRzOwp9CgpmID0gZnVuY3Rpb24oKSB7CglyZXR1cm4gZygpID09IGcoKTsKfTsKbG9nKGYoKSk7
CgpmID0gZnVuY3Rpb24oKSB7Cglhcmd1bWVudHM7CglyZXR1cm4gZygpID09IGcoKSA9PSBhcmd1
bWVudHM7Cn07CmxvZyhmKCkpOwoKZiA9IGZ1bmN0aW9uKCkgewoJcmV0dXJuIGcoKSA9PSBnKCk7
Cglhcmd1bWVudHM7Cn07CmxvZyhmKCkpOwoKZiA9IGZ1bmN0aW9uKCkgewoJcmV0dXJuIGcoYXJn
dW1lbnRzKSA9PSBnKGFyZ3VtZW50cyk7Cn07CmxvZyhmKCkpOwoKZiA9IGZ1bmN0aW9uKHgpIHsK
CXggPSAxOwoJcmV0dXJuIGcoKVswXSA9PSB4Owp9Owpsb2coZigwKSk7CgpmID0gZnVuY3Rpb24o
eCkgewoJeCA9IDE7CglyZXR1cm4gZygpWzBdID09ICh4ID0gMik7Cn07CmxvZyhmKDApKTsKPC9z
Y3JpcHQ+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>