<?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>20843</bug_id>
          
          <creation_ts>2008-09-14 14:51:18 -0700</creation_ts>
          <short_desc>Accelerated property accesses.</short_desc>
          <delta_ts>2008-09-14 19:37:59 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Gavin Barraclough">barraclough</reporter>
          <assigned_to name="Gavin Barraclough">barraclough</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>91137</commentid>
    <comment_count>0</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2008-09-14 14:51:18 -0700</bug_when>
    <thetext>Inline more of the array access code into the JIT code for get/put_by_val.

Accelerate get/put_by_id by speculatively inlining a disable direct access into the hot path of the code, and repatch this with the correct StructureID and property map offset once these are known.  In the case of accesses to the prototype and reading the array-length a trampoline is genertaed, and the branch to the slow-case is relinked to jump to this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91138</commentid>
    <comment_count>1</comment_count>
      <attachid>23416</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2008-09-14 14:53:14 -0700</bug_when>
    <thetext>Created attachment 23416
The patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91143</commentid>
    <comment_count>2</comment_count>
      <attachid>23420</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2008-09-14 15:31:45 -0700</bug_when>
    <thetext>Created attachment 23420
Sunspider results (+2.8%).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91144</commentid>
    <comment_count>3</comment_count>
      <attachid>23421</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2008-09-14 15:37:21 -0700</bug_when>
    <thetext>Created attachment 23421
v8 tests results - ~13% progression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91145</commentid>
    <comment_count>4</comment_count>
      <attachid>23422</attachid>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2008-09-14 15:37:56 -0700</bug_when>
    <thetext>Created attachment 23422
v8 tests results - pre-patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91157</commentid>
    <comment_count>5</comment_count>
      <attachid>23416</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-09-14 17:08:04 -0700</bug_when>
    <thetext>Comment on attachment 23416
The patch

The changelog should have perf numbers as is our norm.

+// This will not sign extend from 8bit, and should be somewhere up in kernel land.
+#define INVALID_POINTER_VALUE 0xF0F0F0F0
This should be below the includes.  Is this value correct for the mac (bdash thinks perhaps not).  Can it be a const int.

structureStubCompilationInfo should be m_ structureStubCompilationInfo

structIDInstrIdx is an odd variable name.  I think it can be more verbose.


+        #define PROPERTY_ACCESS_OFFSET_PUT_STRUCTUREID 19
+        #define PROPERTY_ACCESS_OFFSET_PUT_OFFSET 34
Can these be constants instead of #defines.  Same goes for a few others just like it.

There are a bunch of c-style casts.  Please convert to use c++-style to make cpst happy (and me!).

#if USE(CTI_REPATCH_PIC) &amp;&amp; 0 // This is not currently a performance win.  Sad face.
We usually don&apos;t commit things like this.

Please replace all TODOs with FIXMEs.

Overall, nothing popped out as being wrong, but it is a lot of code.  I think an extra pair of eyes would be good.  And for the future generations, perhaps a more detailed changelog, explaining exactly what you mean by re-patching.

r=me.  But I think it might be wise to let someone else r+ as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>91173</commentid>
    <comment_count>6</comment_count>
    <who name="Gavin Barraclough">barraclough</who>
    <bug_when>2008-09-14 19:37:59 -0700</bug_when>
    <thetext>Sending        JavaScriptCore/ChangeLog
Sending        JavaScriptCore/VM/CTI.cpp
Sending        JavaScriptCore/VM/CTI.h
Sending        JavaScriptCore/VM/CodeBlock.cpp
Sending        JavaScriptCore/VM/CodeBlock.h
Sending        JavaScriptCore/VM/Machine.cpp
Sending        JavaScriptCore/VM/Machine.h
Sending        JavaScriptCore/masm/X86Assembler.h
Transmitting file data ........
Committed revision 36418.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23416</attachid>
            <date>2008-09-14 14:53:14 -0700</date>
            <delta_ts>2008-09-14 17:08:04 -0700</delta_ts>
            <desc>The patch</desc>
            <filename>patch.recovolliej.3.txt</filename>
            <type>text/plain</type>
            <size>58025</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">SW5kZXg6IEphdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDM2NDA0KQorKysgSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjIgQEAKKzIwMDgtMDktMTQgIEdhdmluIEJh
cnJhY2xvdWdoICA8YmFycmFjbG91Z2hAYXBwbGUuY29tPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFjY2VsZXJhdGVkIHByb3BlcnR5IGFjY2Vzc2Vz
LgorICAgICAgICBJbmxpbmUgbW9yZSBvZiB0aGUgYXJyYXkgYWNjZXNzIGNvZGUgaW50byB0aGUg
SklUIGNvZGUgZm9yIGdldC9wdXRfYnlfdmFsLgorICAgICAgICBBY2NlbGVyYXRlIGdldC9wdXRf
YnlfaWQgYnkgc3BlY3VsYXRpdmVseSBpbmxpbmluZyBhIGRpc2FibGUgZGlyZWN0IGFjY2Vzcwor
ICAgICAgICBpbnRvIHRoZSBob3QgcGF0aCBvZiB0aGUgY29kZSwgYW5kIHJlcGF0Y2ggdGhpcyB3
aXRoIHRoZSBjb3JyZWN0IFN0cnVjdHVyZUlECisgICAgICAgIGFuZCBwcm9wZXJ0eSBtYXAgb2Zm
c2V0IG9uY2UgdGhlc2UgYXJlIGtub3duLiAgSW4gdGhlIGNhc2Ugb2YgYWNjZXNzZXMgdG8gdGhl
CisgICAgICAgIHByb3RvdHlwZSBhbmQgcmVhZGluZyB0aGUgYXJyYXktbGVuZ3RoIGEgdHJhbXBv
bGluZSBpcyBnZW5lcnRhZWQsIGFuZCB0aGUKKyAgICAgICAgYnJhbmNoIHRvIHRoZSBzbG93LWNh
c2UgaXMgcmVsaW5rZWQgdG8ganVtcCB0byB0aGlzLgorCisgICAgICAgICogVk0vQ1RJLmNwcDoK
KyAgICAgICAgKEpTQzo6Q1RJOjplbWl0Q2FsbCk6CisgICAgICAgIChKU0M6OkNUSTo6ZW1pdEp1
bXBTbG93Q2FzZUlmTm90SlNDZWxsKToKKyAgICAgICAgKEpTQzo6Q1RJOjpDVEkpOgorICAgICAg
ICAoSlNDOjpDVEk6OnByaXZhdGVDb21waWxlTWFpblBhc3MpOgorICAgICAgICAoSlNDOjpDVEk6
OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKToKKyAgICAgICAgKEpTQzo6Q1RJOjpwcml2YXRlQ29t
cGlsZSk6CisgICAgICAgIChKU0M6OkNUSTo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZik6Cisg
ICAgICAgIChKU0M6OkNUSTo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJvdG8pOgorICAgICAgICAo
SlNDOjpDVEk6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKToKKyAgICAgICAgKEpTQzo6Q1RJ
Ojpwcml2YXRlQ29tcGlsZVB1dEJ5SWRSZXBsYWNlKToKKyAgICAgICAgKEpTQzo6Q1RJOjpwcml2
YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKToKKyAgICAgICAgKEpTQzo6Q1RJOjpwcml2YXRl
Q29tcGlsZUFycmF5TGVuZ3RoVHJhbXBvbGluZSk6CisgICAgICAgIChKU0M6OkNUSTo6cHJpdmF0
ZUNvbXBpbGVTdHJpbmdMZW5ndGhUcmFtcG9saW5lKToKKyAgICAgICAgKEpTQzo6Q1RJOjpwYXRj
aEdldEJ5SWRTZWxmKToKKyAgICAgICAgKEpTQzo6Q1RJOjpwYXRjaFB1dEJ5SWRSZXBsYWNlKToK
KyAgICAgICAgKEpTQzo6Q1RJOjpwcml2YXRlQ29tcGlsZVBhdGNoR2V0QXJyYXlMZW5ndGgpOgor
ICAgICAgICAoSlNDOjpDVEk6OnByaXZhdGVDb21waWxlUGF0Y2hHZXRTdHJpbmdMZW5ndGgpOgor
ICAgICAgICAqIFZNL0NUSS5oOgorICAgICAgICAoSlNDOjpDVEk6OmNvbXBpbGVHZXRCeUlkU2Vs
Zik6CisgICAgICAgIChKU0M6OkNUSTo6Y29tcGlsZUdldEJ5SWRQcm90byk6CisgICAgICAgIChK
U0M6OkNUSTo6Y29tcGlsZUdldEJ5SWRDaGFpbik6CisgICAgICAgIChKU0M6OkNUSTo6Y29tcGls
ZVB1dEJ5SWRSZXBsYWNlKToKKyAgICAgICAgKEpTQzo6Q1RJOjpjb21waWxlUHV0QnlJZFRyYW5z
aXRpb24pOgorICAgICAgICAoSlNDOjpDVEk6OmNvbXBpbGVBcnJheUxlbmd0aFRyYW1wb2xpbmUp
OgorICAgICAgICAoSlNDOjpDVEk6OmNvbXBpbGVTdHJpbmdMZW5ndGhUcmFtcG9saW5lKToKKyAg
ICAgICAgKEpTQzo6Q1RJOjpjb21waWxlUGF0Y2hHZXRBcnJheUxlbmd0aCk6CisgICAgICAgIChK
U0M6OkNUSTo6Y29tcGlsZVBhdGNoR2V0U3RyaW5nTGVuZ3RoKToKKyAgICAgICAgKiBWTS9Db2Rl
QmxvY2suY3BwOgorICAgICAgICAoSlNDOjpDb2RlQmxvY2s6OmR1bXApOgorICAgICAgICAoSlND
OjpDb2RlQmxvY2s6On5Db2RlQmxvY2spOgorICAgICAgICAqIFZNL0NvZGVCbG9jay5oOgorICAg
ICAgICAoSlNDOjpTdHJ1Y3R1cmVTdHViSW5mbzo6U3RydWN0dXJlU3R1YkluZm8pOgorICAgICAg
ICAoSlNDOjpDb2RlQmxvY2s6OmdldFN0dWJJbmZvKToKKyAgICAgICAgKiBWTS9NYWNoaW5lLmNw
cDoKKyAgICAgICAgKEpTQzo6TWFjaGluZTo6dHJ5Q1RJQ2FjaGVQdXRCeUlEKToKKyAgICAgICAg
KEpTQzo6TWFjaGluZTo6dHJ5Q1RJQ2FjaGVHZXRCeUlEKToKKyAgICAgICAgKEpTQzo6TWFjaGlu
ZTo6Y3RpX29wX3B1dF9ieV92YWxfYXJyYXkpOgorICAgICAgICAqIFZNL01hY2hpbmUuaDoKKyAg
ICAgICAgKiBtYXNtL1g4NkFzc2VtYmxlci5oOgorICAgICAgICAoSlNDOjpYODZBc3NlbWJsZXI6
Oik6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6Y21wbF9pOG0pOgorICAgICAgICAoSlND
OjpYODZBc3NlbWJsZXI6OmVtaXRVbmxpbmtlZEphKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1i
bGVyOjpnZXRSZWxvY2F0ZWRBZGRyZXNzKToKKyAgICAgICAgKEpTQzo6WDg2QXNzZW1ibGVyOjpn
ZXREaWZmZXJlbmNlQmV0d2VlbkxhYmVscyk6CisgICAgICAgIChKU0M6Olg4NkFzc2VtYmxlcjo6
ZW1pdE1vZFJtX29wbXNpYik6CisKIDIwMDgtMDktMTQgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBDYW1lcm9uIFp3YXJpY2guCkluZGV4OiBKYXZh
U2NyaXB0Q29yZS9WTS9DVEkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3JpcHRDb3JlL1ZNL0NU
SS5jcHAJKHJldmlzaW9uIDM2NDAzKQorKysgSmF2YVNjcmlwdENvcmUvVk0vQ1RJLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMjgsNiArMjgsOSBAQAogCiAjaWYgRU5BQkxFKENUSSkKIAorLy8gVGhp
cyB3aWxsIG5vdCBzaWduIGV4dGVuZCBmcm9tIDhiaXQsIGFuZCBzaG91bGQgYmUgc29tZXdoZXJl
IHVwIGluIGtlcm5lbCBsYW5kLgorI2RlZmluZSBJTlZBTElEX1BPSU5URVJfVkFMVUUgMHhGMEYw
RjBGMAorCiAjaW5jbHVkZSAiQ29kZUJsb2NrLmgiCiAjaW5jbHVkZSAiSlNBcnJheS5oIgogI2lu
Y2x1ZGUgIk1hY2hpbmUuaCIKQEAgLTI0Miw2NCArMjQ1LDg1IEBAIHZvaWQgQ1RJOjpwcmludE9w
Y29kZU9wZXJhbmRUeXBlcyh1bnNpZ24KIAogI2VuZGlmCiAKLUFMV0FZU19JTkxJTkUgdm9pZCBD
VEk6OmVtaXRDYWxsKHVuc2lnbmVkIG9wY29kZUluZGV4LCBDVElIZWxwZXJfaiBoZWxwZXIpCitB
TFdBWVNfSU5MSU5FIFg4NkFzc2VtYmxlcjo6Sm1wU3JjIENUSTo6ZW1pdENhbGwodW5zaWduZWQg
b3Bjb2RlSW5kZXgsIENUSUhlbHBlcl9qIGhlbHBlcikKIHsKICNpZiBFTkFCTEUoU0FNUExJTkdf
VE9PTCkKICAgICBtX2ppdC5tb3ZsX2kzMm0oMSwgJmluQ2FsbGVkQ29kZSk7CiAjZW5kaWYKLSAg
ICBtX2NhbGxzLmFwcGVuZChDYWxsUmVjb3JkKG1faml0LmVtaXRDYWxsKCksIGhlbHBlciwgb3Bj
b2RlSW5kZXgpKTsKKyAgICBYODZBc3NlbWJsZXI6OkptcFNyYyBjYWxsID0gbV9qaXQuZW1pdENh
bGwoKTsKKyAgICBtX2NhbGxzLmFwcGVuZChDYWxsUmVjb3JkKGNhbGwsIGhlbHBlciwgb3Bjb2Rl
SW5kZXgpKTsKICAgICBlbWl0RGVidWdFeGNlcHRpb25DaGVjaygpOwogI2lmIEVOQUJMRShTQU1Q
TElOR19UT09MKQogICAgIG1faml0Lm1vdmxfaTMybSgwLCAmaW5DYWxsZWRDb2RlKTsKICNlbmRp
ZgorCisgICAgcmV0dXJuIGNhbGw7CiB9CiAKLUFMV0FZU19JTkxJTkUgdm9pZCBDVEk6OmVtaXRD
YWxsKHVuc2lnbmVkIG9wY29kZUluZGV4LCBDVElIZWxwZXJfcCBoZWxwZXIpCitBTFdBWVNfSU5M
SU5FIFg4NkFzc2VtYmxlcjo6Sm1wU3JjIENUSTo6ZW1pdENhbGwodW5zaWduZWQgb3Bjb2RlSW5k
ZXgsIENUSUhlbHBlcl9wIGhlbHBlcikKIHsKICNpZiBFTkFCTEUoU0FNUExJTkdfVE9PTCkKICAg
ICBtX2ppdC5tb3ZsX2kzMm0oMSwgJmluQ2FsbGVkQ29kZSk7CiAjZW5kaWYKLSAgICBtX2NhbGxz
LmFwcGVuZChDYWxsUmVjb3JkKG1faml0LmVtaXRDYWxsKCksIGhlbHBlciwgb3Bjb2RlSW5kZXgp
KTsKKyAgICBYODZBc3NlbWJsZXI6OkptcFNyYyBjYWxsID0gbV9qaXQuZW1pdENhbGwoKTsKKyAg
ICBtX2NhbGxzLmFwcGVuZChDYWxsUmVjb3JkKGNhbGwsIGhlbHBlciwgb3Bjb2RlSW5kZXgpKTsK
ICAgICBlbWl0RGVidWdFeGNlcHRpb25DaGVjaygpOwogI2lmIEVOQUJMRShTQU1QTElOR19UT09M
KQogICAgIG1faml0Lm1vdmxfaTMybSgwLCAmaW5DYWxsZWRDb2RlKTsKICNlbmRpZgorCisgICAg
cmV0dXJuIGNhbGw7CiB9CiAKLUFMV0FZU19JTkxJTkUgdm9pZCBDVEk6OmVtaXRDYWxsKHVuc2ln
bmVkIG9wY29kZUluZGV4LCBDVElIZWxwZXJfYiBoZWxwZXIpCitBTFdBWVNfSU5MSU5FIFg4NkFz
c2VtYmxlcjo6Sm1wU3JjIENUSTo6ZW1pdENhbGwodW5zaWduZWQgb3Bjb2RlSW5kZXgsIENUSUhl
bHBlcl9iIGhlbHBlcikKIHsKICNpZiBFTkFCTEUoU0FNUExJTkdfVE9PTCkKICAgICBtX2ppdC5t
b3ZsX2kzMm0oMSwgJmluQ2FsbGVkQ29kZSk7CiAjZW5kaWYKLSAgICBtX2NhbGxzLmFwcGVuZChD
YWxsUmVjb3JkKG1faml0LmVtaXRDYWxsKCksIGhlbHBlciwgb3Bjb2RlSW5kZXgpKTsKKyAgICBY
ODZBc3NlbWJsZXI6OkptcFNyYyBjYWxsID0gbV9qaXQuZW1pdENhbGwoKTsKKyAgICBtX2NhbGxz
LmFwcGVuZChDYWxsUmVjb3JkKGNhbGwsIGhlbHBlciwgb3Bjb2RlSW5kZXgpKTsKICAgICBlbWl0
RGVidWdFeGNlcHRpb25DaGVjaygpOwogI2lmIEVOQUJMRShTQU1QTElOR19UT09MKQogICAgIG1f
aml0Lm1vdmxfaTMybSgwLCAmaW5DYWxsZWRDb2RlKTsKICNlbmRpZgorCisgICAgcmV0dXJuIGNh
bGw7CiB9CiAKLUFMV0FZU19JTkxJTkUgdm9pZCBDVEk6OmVtaXRDYWxsKHVuc2lnbmVkIG9wY29k
ZUluZGV4LCBDVElIZWxwZXJfdiBoZWxwZXIpCitBTFdBWVNfSU5MSU5FIFg4NkFzc2VtYmxlcjo6
Sm1wU3JjIENUSTo6ZW1pdENhbGwodW5zaWduZWQgb3Bjb2RlSW5kZXgsIENUSUhlbHBlcl92IGhl
bHBlcikKIHsKICNpZiBFTkFCTEUoU0FNUExJTkdfVE9PTCkKICAgICBtX2ppdC5tb3ZsX2kzMm0o
MSwgJmluQ2FsbGVkQ29kZSk7CiAjZW5kaWYKLSAgICBtX2NhbGxzLmFwcGVuZChDYWxsUmVjb3Jk
KG1faml0LmVtaXRDYWxsKCksIGhlbHBlciwgb3Bjb2RlSW5kZXgpKTsKKyAgICBYODZBc3NlbWJs
ZXI6OkptcFNyYyBjYWxsID0gbV9qaXQuZW1pdENhbGwoKTsKKyAgICBtX2NhbGxzLmFwcGVuZChD
YWxsUmVjb3JkKGNhbGwsIGhlbHBlciwgb3Bjb2RlSW5kZXgpKTsKICAgICBlbWl0RGVidWdFeGNl
cHRpb25DaGVjaygpOwogI2lmIEVOQUJMRShTQU1QTElOR19UT09MKQogICAgIG1faml0Lm1vdmxf
aTMybSgwLCAmaW5DYWxsZWRDb2RlKTsKICNlbmRpZgorCisgICAgcmV0dXJuIGNhbGw7CiB9CiAK
LUFMV0FZU19JTkxJTkUgdm9pZCBDVEk6OmVtaXRDYWxsKHVuc2lnbmVkIG9wY29kZUluZGV4LCBD
VElIZWxwZXJfcyBoZWxwZXIpCitBTFdBWVNfSU5MSU5FIFg4NkFzc2VtYmxlcjo6Sm1wU3JjIENU
STo6ZW1pdENhbGwodW5zaWduZWQgb3Bjb2RlSW5kZXgsIENUSUhlbHBlcl9zIGhlbHBlcikKIHsK
ICNpZiBFTkFCTEUoU0FNUExJTkdfVE9PTCkKICAgICBtX2ppdC5tb3ZsX2kzMm0oMSwgJmluQ2Fs
bGVkQ29kZSk7CiAjZW5kaWYKLSAgICBtX2NhbGxzLmFwcGVuZChDYWxsUmVjb3JkKG1faml0LmVt
aXRDYWxsKCksIGhlbHBlciwgb3Bjb2RlSW5kZXgpKTsKKyAgICBYODZBc3NlbWJsZXI6OkptcFNy
YyBjYWxsID0gbV9qaXQuZW1pdENhbGwoKTsKKyAgICBtX2NhbGxzLmFwcGVuZChDYWxsUmVjb3Jk
KGNhbGwsIGhlbHBlciwgb3Bjb2RlSW5kZXgpKTsKICAgICBlbWl0RGVidWdFeGNlcHRpb25DaGVj
aygpOwogI2lmIEVOQUJMRShTQU1QTElOR19UT09MKQogICAgIG1faml0Lm1vdmxfaTMybSgwLCAm
aW5DYWxsZWRDb2RlKTsKICNlbmRpZgorCisgICAgcmV0dXJuIGNhbGw7Cit9CisKK0FMV0FZU19J
TkxJTkUgdm9pZCBDVEk6OmVtaXRKdW1wU2xvd0Nhc2VJZk5vdEpTQ2VsbChYODZBc3NlbWJsZXI6
OlJlZ2lzdGVySUQgcmVnLCB1bnNpZ25lZCBvcGNvZGVJbmRleCkKK3sKKyAgICBtX2ppdC50ZXN0
bF9pMzJyKEpTSW1tZWRpYXRlOjpUYWdNYXNrLCByZWcpOworICAgIG1fc2xvd0Nhc2VzLmFwcGVu
ZChTbG93Q2FzZUVudHJ5KG1faml0LmVtaXRVbmxpbmtlZEpuZSgpLCBvcGNvZGVJbmRleCkpOwog
fQogCiBBTFdBWVNfSU5MSU5FIHZvaWQgQ1RJOjplbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW0oWDg2
QXNzZW1ibGVyOjpSZWdpc3RlcklEIHJlZywgdW5zaWduZWQgb3Bjb2RlSW5kZXgpCkBAIC0zNjEs
NiArMzg1LDcgQEAgQ1RJOjpDVEkoTWFjaGluZSogbWFjaGluZSwgRXhlY1N0YXRlKiBleAogICAg
ICwgbV9leGVjKGV4ZWMpCiAgICAgLCBtX2NvZGVCbG9jayhjb2RlQmxvY2spCiAgICAgLCBtX2xh
YmVscyhjb2RlQmxvY2sgPyBjb2RlQmxvY2stPmluc3RydWN0aW9ucy5zaXplKCkgOiAwKQorICAg
ICwgc3RydWN0dXJlU3R1YkNvbXBpbGF0aW9uSW5mbyhjb2RlQmxvY2sgPyBjb2RlQmxvY2stPnN0
cnVjdHVyZUlESW5zdHJ1Y3Rpb25zLnNpemUoKSA6IDApCiB7CiB9CiAKQEAgLTQ2MCw2ICs0ODUs
OCBAQCB2b2lkIENUSTo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgSW5zdHJ1Y3Rpb24q
IGluc3RydWN0aW9uID0gbV9jb2RlQmxvY2stPmluc3RydWN0aW9ucy5iZWdpbigpOwogICAgIHVu
c2lnbmVkIGluc3RydWN0aW9uQ291bnQgPSBtX2NvZGVCbG9jay0+aW5zdHJ1Y3Rpb25zLnNpemUo
KTsKIAorICAgIHVuc2lnbmVkIHN0cnVjdElESW5zdHJJZHggPSAwOworCiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGluc3RydWN0aW9uQ291bnQ7ICkgewogICAgICAgICBtX2xhYmVsc1tp
XSA9IG1faml0LmxhYmVsKCk7CiAKQEAgLTU3NiwyNCArNjAzLDYzIEBAIHZvaWQgQ1RJOjpwcml2
YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgICAgIGkgKz0gMjsKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CisgICAgICAgIC8vIFRoZXNlIGFyY2hpdGVjdHVyZSBzcGVjaWZpYyB2
YWx1ZSBhcmUgdXNlZCB0byBlbmFibGUgcmVwYXRjaGluZy4KKyAgICAgICAgLy8gSW4gb3JkZXIg
dG8gYmUgYWJsZSB0byByZXBhdGNoIGJvdGggdGhlIFN0cnVjdHVyZUlELCBhbmQgdGhlIG9iamVj
dCBvZmZzZXQsIHdlIHN0b3JlIG9uZSBwb2ludGVyLAorICAgICAgICAvLyB0byBqdXN0IGFmdGVy
IHRoZSBhcmd1bWVudHMgaGF2ZSBiZWVuIGxvYWRlZCBpbnRvIHJlZ2lzdGVycyAnaG90UGF0aEJl
Z2luJywgYW5kIHdlIGdlbmVyYXRlIGNvZGUKKyAgICAgICAgLy8gc3VjaCB0aGF0IHRoZSBTdHJ1
Y3R1cmVJRCAmIG9mZnNldCBhcmUgYWx3YXlzIGF0IHRoZSBzYW1lIGRpc3RhbmNlIGZyb20gdGhp
cy4KKyAgICAgICAgI2RlZmluZSBQUk9QRVJUWV9BQ0NFU1NfT0ZGU0VUX1BVVF9TVFJVQ1RVUkVJ
RCAxOQorICAgICAgICAjZGVmaW5lIFBST1BFUlRZX0FDQ0VTU19PRkZTRVRfUFVUX09GRlNFVCAz
NAogICAgICAgICBjYXNlIG9wX3B1dF9ieV9pZDogewotICAgICAgICAgICAgSWRlbnRpZmllciog
aWRlbnQgPSAmKG1fY29kZUJsb2NrLT5pZGVudGlmaWVyc1tpbnN0cnVjdGlvbltpICsgMl0udS5v
cGVyYW5kXSk7Ci0gICAgICAgICAgICBlbWl0UHV0QXJnQ29uc3RhbnQocmVpbnRlcnByZXRfY2Fz
dDx1bnNpZ25lZD4oaWRlbnQpLCA0KTsKICAgICAgICAgICAgIGVtaXRHZXRBcmcoaW5zdHJ1Y3Rp
b25baSArIDFdLnUub3BlcmFuZCwgWDg2OjplYXgpOwogICAgICAgICAgICAgZW1pdEdldEFyZyhp
bnN0cnVjdGlvbltpICsgM10udS5vcGVyYW5kLCBYODY6OmVkeCk7Ci0gICAgICAgICAgICBlbWl0
UHV0QXJnKFg4Njo6ZWF4LCAwKTsgLy8gbGVhdmUgdGhlIGJhc2UgaW4gZWF4Ci0gICAgICAgICAg
ICBlbWl0UHV0QXJnKFg4Njo6ZWR4LCA4KTsgLy8gbGVhdmUgdGhlIGJhc2UgaW4gZWR4Ci0gICAg
ICAgICAgICBlbWl0Q2FsbChpLCBNYWNoaW5lOjpjdGlfb3BfcHV0X2J5X2lkKTsKKworICAgICAg
ICAgICAgQVNTRVJUKG1fY29kZUJsb2NrLT5zdHJ1Y3R1cmVJREluc3RydWN0aW9uc1tzdHJ1Y3RJ
REluc3RySWR4XS5vcGNvZGVJbmRleCA9PSBpKTsKKyAgICAgICAgICAgIFg4NkFzc2VtYmxlcjo6
Sm1wRHN0IGhvdFBhdGhCZWdpbiA9IG1faml0LmxhYmVsKCk7CisgICAgICAgICAgICBzdHJ1Y3R1
cmVTdHViQ29tcGlsYXRpb25JbmZvW3N0cnVjdElESW5zdHJJZHhdLmhvdFBhdGhCZWdpbiA9IGhv
dFBhdGhCZWdpbjsKKyAgICAgICAgICAgICsrc3RydWN0SURJbnN0cklkeDsKKworICAgICAgICAg
ICAgLy8gSnVtcCB0byBhIHNsb3cgY2FzZSBpZiBlaXRoZXIgdGhlIGJhc2Ugb2JqZWN0IGlzIGFu
IGltbWVkaWF0ZSwgb3IgaWYgdGhlIFN0cnVjdHVyZUlEIGRvZXMgbm90IG1hdGNoLgorICAgICAg
ICAgICAgZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxsKFg4Njo6ZWF4LCBpKTsKKyAgICAgICAg
ICAgIG1faml0LmNtcGxfaTMybShJTlZBTElEX1BPSU5URVJfVkFMVUUsIE9CSkVDVF9PRkZTRVQo
SlNDZWxsLCBtX3N0cnVjdHVyZUlEKSwgWDg2OjplYXgpOworICAgICAgICAgICAgQVNTRVJUKFg4
NkFzc2VtYmxlcjo6Z2V0RGlmZmVyZW5jZUJldHdlZW5MYWJlbHMoaG90UGF0aEJlZ2luLCBtX2pp
dC5sYWJlbCgpKSA9PSBQUk9QRVJUWV9BQ0NFU1NfT0ZGU0VUX1BVVF9TVFJVQ1RVUkVJRCk7Cisg
ICAgICAgICAgICBtX3Nsb3dDYXNlcy5hcHBlbmQoU2xvd0Nhc2VFbnRyeShtX2ppdC5lbWl0VW5s
aW5rZWRKbmUoKSwgaSkpOworCisgICAgICAgICAgICAvLyBQbGFudCBhIGxvYWQgZnJvbSBhIGJv
Z3VzIG9mc2V0IGluIHRoZSBvYmplY3QncyBwcm9wZXJ0eSBtYXA7IHdlIHdpbGwgcGF0Y2ggdGhp
cyBsYXRlciwgaWYgaXQgaXMgdG8gYmUgdXNlZC4KKyAgICAgICAgICAgIG1faml0Lm1vdmxfbXIo
T0JKRUNUX09GRlNFVChKU09iamVjdCwgbV9wcm9wZXJ0eVN0b3JhZ2UpLCBYODY6OmVheCwgWDg2
OjplYXgpOworICAgICAgICAgICAgbV9qaXQubW92bF9ybShYODY6OmVkeCwgSU5WQUxJRF9QT0lO
VEVSX1ZBTFVFLCBYODY6OmVheCk7CisgICAgICAgICAgICBBU1NFUlQoWDg2QXNzZW1ibGVyOjpn
ZXREaWZmZXJlbmNlQmV0d2VlbkxhYmVscyhob3RQYXRoQmVnaW4sIG1faml0LmxhYmVsKCkpID09
IFBST1BFUlRZX0FDQ0VTU19PRkZTRVRfUFVUX09GRlNFVCk7CisKICAgICAgICAgICAgIGkgKz0g
ODsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIC8vIFNlZSBjb21tZW50
IG9uIG9wX3B1dF9ieV9pZCwgYWJvdmUuCisgICAgICAgIC8vIEFzIGZvciBwdXRfYnlfaWQsIGdl
dF9ieV9pZCByZXF1aXJlcyB0aGUgb2Zmc2V0IG9mIHRoZSBTdHJ1Y3R1cmVJRCBhbmQgdGhlIG9m
ZnNldCBvZiB0aGUgYWNjZXNzIHRvIGJlIHJlcGF0Y2hlZC4KKyAgICAgICAgLy8gQWRkaXRpb25h
bGx5LCBmb3IgZ2V0X2J5X2lkIHdlIG5lZWQgcmVwYXRjaCB0aGUgb2Zmc2V0IG9mIHRoZSBicmFu
Y2ggdG8gdGhlIHNsb3cgY2FzZSAod2UgcmVwYXRjaCB0aGlzIHRvIGp1bXAKKyAgICAgICAgLy8g
dG8gYXJyYXktbGVuZ3RoIC8gcHJvdG90eXBlIGFjY2VzcyB0cmFucG9saW5lcywgYW5kIGZpbmFs
bHkgd2UgYWxzbyB0aGUgdGhlIHByb3BlcnR5LW1hcCBhY2Nlc3Mgb2Zmc2V0IGFzIGEgbGFiZWwK
KyAgICAgICAgLy8gdG8ganVtcCBiYWNrIHRvIGlmIG9uZSBvZiB0aGVzZSB0cmFtcG9saWVzIGZp
bmRzIGEgbWF0Y2guCisgICAgICAgICNkZWZpbmUgUFJPUEVSVFlfQUNDRVNTX09GRlNFVF9HRVRf
U1RSVUNUVVJFSUQgMTkKKyAgICAgICAgI2RlZmluZSBQUk9QRVJUWV9BQ0NFU1NfT0ZGU0VUX0dF
VF9KTVAgMjUKKyAgICAgICAgI2RlZmluZSBQUk9QRVJUWV9BQ0NFU1NfT0ZGU0VUX0dFVF9PRkZT
RVQgMzQKICAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6IHsKLSAgICAgICAgICAgIElkZW50aWZp
ZXIqIGlkZW50ID0gJihtX2NvZGVCbG9jay0+aWRlbnRpZmllcnNbaW5zdHJ1Y3Rpb25baSArIDNd
LnUub3BlcmFuZF0pOwotICAgICAgICAgICAgZW1pdFB1dEFyZ0NvbnN0YW50KHJlaW50ZXJwcmV0
X2Nhc3Q8dW5zaWduZWQ+KGlkZW50KSwgNCk7CiAgICAgICAgICAgICBlbWl0R2V0QXJnKGluc3Ry
dWN0aW9uW2kgKyAyXS51Lm9wZXJhbmQsIFg4Njo6ZWF4KTsKLSAgICAgICAgICAgIGVtaXRQdXRB
cmcoWDg2OjplYXgsIDApOyAvLyBsZWF2ZSB0aGUgYmFzZSBpbiBlYXgKLSAgICAgICAgICAgIGVt
aXRDYWxsKGksIE1hY2hpbmU6OmN0aV9vcF9nZXRfYnlfaWQpOwotICAgICAgICAgICAgZW1pdFB1
dFJlc3VsdChpbnN0cnVjdGlvbltpICsgMV0udS5vcGVyYW5kKTsKKworICAgICAgICAgICAgQVNT
RVJUKG1fY29kZUJsb2NrLT5zdHJ1Y3R1cmVJREluc3RydWN0aW9uc1tzdHJ1Y3RJREluc3RySWR4
XS5vcGNvZGVJbmRleCA9PSBpKTsKKworICAgICAgICAgICAgWDg2QXNzZW1ibGVyOjpKbXBEc3Qg
aG90UGF0aEJlZ2luID0gbV9qaXQubGFiZWwoKTsKKyAgICAgICAgICAgIHN0cnVjdHVyZVN0dWJD
b21waWxhdGlvbkluZm9bc3RydWN0SURJbnN0cklkeF0uaG90UGF0aEJlZ2luID0gaG90UGF0aEJl
Z2luOworICAgICAgICAgICAgKytzdHJ1Y3RJREluc3RySWR4OworCisgICAgICAgICAgICBlbWl0
SnVtcFNsb3dDYXNlSWZOb3RKU0NlbGwoWDg2OjplYXgsIGkpOworICAgICAgICAgICAgbV9qaXQu
Y21wbF9pMzJtKElOVkFMSURfUE9JTlRFUl9WQUxVRSwgT0JKRUNUX09GRlNFVChKU0NlbGwsIG1f
c3RydWN0dXJlSUQpLCBYODY6OmVheCk7CisgICAgICAgICAgICBBU1NFUlQoWDg2QXNzZW1ibGVy
OjpnZXREaWZmZXJlbmNlQmV0d2VlbkxhYmVscyhob3RQYXRoQmVnaW4sIG1faml0LmxhYmVsKCkp
ID09IFBST1BFUlRZX0FDQ0VTU19PRkZTRVRfR0VUX1NUUlVDVFVSRUlEKTsKKyAgICAgICAgICAg
IG1fc2xvd0Nhc2VzLmFwcGVuZChTbG93Q2FzZUVudHJ5KG1faml0LmVtaXRVbmxpbmtlZEpuZSgp
LCBpKSk7CisgICAgICAgICAgICBBU1NFUlQoWDg2QXNzZW1ibGVyOjpnZXREaWZmZXJlbmNlQmV0
d2VlbkxhYmVscyhob3RQYXRoQmVnaW4sIG1faml0LmxhYmVsKCkpID09IFBST1BFUlRZX0FDQ0VT
U19PRkZTRVRfR0VUX0pNUCk7CisKKyAgICAgICAgICAgIG1faml0Lm1vdmxfbXIoT0JKRUNUX09G
RlNFVChKU09iamVjdCwgbV9wcm9wZXJ0eVN0b3JhZ2UpLCBYODY6OmVheCwgWDg2OjplYXgpOwor
ICAgICAgICAgICAgbV9qaXQubW92bF9tcihJTlZBTElEX1BPSU5URVJfVkFMVUUsIFg4Njo6ZWF4
LCBYODY6OmVjeCk7CisgICAgICAgICAgICBBU1NFUlQoWDg2QXNzZW1ibGVyOjpnZXREaWZmZXJl
bmNlQmV0d2VlbkxhYmVscyhob3RQYXRoQmVnaW4sIG1faml0LmxhYmVsKCkpID09IFBST1BFUlRZ
X0FDQ0VTU19PRkZTRVRfR0VUX09GRlNFVCk7CisgICAgICAgICAgICBlbWl0UHV0UmVzdWx0KGlu
c3RydWN0aW9uW2kgKyAxXS51Lm9wZXJhbmQsIFg4Njo6ZWN4KTsKKwogICAgICAgICAgICAgaSAr
PSA4OwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KQEAgLTc0NiwxMSArODEyLDE0IEBA
IHZvaWQgQ1RJOjpwcml2YXRlQ29tcGlsZU1haW5QYXNzKCkKICAgICAgICAgICAgIG1fc2xvd0Nh
c2VzLmFwcGVuZChTbG93Q2FzZUVudHJ5KG1faml0LmVtaXRVbmxpbmtlZEpuZSgpLCBpKSk7CiAg
ICAgICAgICAgICBtX2ppdC5jbXBsX2kzMm0ocmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZD4obV9t
YWNoaW5lLT5tX2pzQXJyYXlWcHRyKSwgWDg2OjplYXgpOwogICAgICAgICAgICAgbV9zbG93Q2Fz
ZXMuYXBwZW5kKFNsb3dDYXNlRW50cnkobV9qaXQuZW1pdFVubGlua2VkSm5lKCksIGkpKTsKKwor
ICAgICAgICAgICAgLy8gVGhpcyBpcyBhbiBhcnJheTsgZ2V0IHRoZSBtX3N0b3JhZ2UgcG9pbnRl
ciBpbnRvIGVjeCwgdGhlbiBjaGVjayBpZiB0aGUgaW5kZXggaXMgYmVsb3cgdGhlIGZhc3QgY3V0
b2ZmCisgICAgICAgICAgICBtX2ppdC5tb3ZsX21yKE9CSkVDVF9PRkZTRVQoSlNBcnJheSwgbV9z
dG9yYWdlKSwgWDg2OjplYXgsIFg4Njo6ZWN4KTsKICAgICAgICAgICAgIG1faml0LmNtcGxfcm0o
WDg2OjplZHgsIE9CSkVDVF9PRkZTRVQoSlNBcnJheSwgbV9mYXN0QWNjZXNzQ3V0b2ZmKSwgWDg2
OjplYXgpOwogICAgICAgICAgICAgbV9zbG93Q2FzZXMuYXBwZW5kKFNsb3dDYXNlRW50cnkobV9q
aXQuZW1pdFVubGlua2VkSmJlKCksIGkpKTsKIAotICAgICAgICAgICAgbV9qaXQubW92bF9tcihP
QkpFQ1RfT0ZGU0VUKEpTQXJyYXksIG1fc3RvcmFnZSksIFg4Njo6ZWF4LCBYODY6OmVheCk7Ci0g
ICAgICAgICAgICBtX2ppdC5tb3ZsX21yKE9CSkVDVF9PRkZTRVQoQXJyYXlTdG9yYWdlLCBtX3Zl
Y3RvclswXSksIFg4Njo6ZWF4LCBYODY6OmVkeCwgc2l6ZW9mKEpTVmFsdWUqKSwgWDg2OjplYXgp
OworICAgICAgICAgICAgLy8gR2V0IHRoZSB2YWx1ZSBmcm9tIHRoZSB2ZWN0b3IKKyAgICAgICAg
ICAgIG1faml0Lm1vdmxfbXIoT0JKRUNUX09GRlNFVChBcnJheVN0b3JhZ2UsIG1fdmVjdG9yWzBd
KSwgWDg2OjplY3gsIFg4Njo6ZWR4LCBzaXplb2YoSlNWYWx1ZSopLCBYODY6OmVheCk7CiAgICAg
ICAgICAgICBlbWl0UHV0UmVzdWx0KGluc3RydWN0aW9uW2kgKyAxXS51Lm9wZXJhbmQpOwogICAg
ICAgICAgICAgaSArPSA0OwogICAgICAgICAgICAgYnJlYWs7CkBAIC03NzksMTggKzg0OCwzMCBA
QCB2b2lkIENUSTo6cHJpdmF0ZUNvbXBpbGVNYWluUGFzcygpCiAgICAgICAgIGNhc2Ugb3BfcHV0
X2J5X3ZhbDogewogICAgICAgICAgICAgZW1pdEdldEFyZyhpbnN0cnVjdGlvbltpICsgMV0udS5v
cGVyYW5kLCBYODY6OmVheCk7CiAgICAgICAgICAgICBlbWl0R2V0QXJnKGluc3RydWN0aW9uW2kg
KyAyXS51Lm9wZXJhbmQsIFg4Njo6ZWR4KTsKLSAgICAgICAgICAgIGVtaXRHZXRBcmcoaW5zdHJ1
Y3Rpb25baSArIDNdLnUub3BlcmFuZCwgWDg2OjplY3gpOwogICAgICAgICAgICAgZW1pdEp1bXBT
bG93Q2FzZUlmTm90SW1tKFg4Njo6ZWR4LCBpKTsKICAgICAgICAgICAgIGVtaXRGYXN0QXJpdGhJ
bW1Ub0ludChYODY6OmVkeCk7CiAgICAgICAgICAgICBtX2ppdC50ZXN0bF9pMzJyKEpTSW1tZWRp
YXRlOjpUYWdNYXNrLCBYODY6OmVheCk7CiAgICAgICAgICAgICBtX3Nsb3dDYXNlcy5hcHBlbmQo
U2xvd0Nhc2VFbnRyeShtX2ppdC5lbWl0VW5saW5rZWRKbmUoKSwgaSkpOwogICAgICAgICAgICAg
bV9qaXQuY21wbF9pMzJtKHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQ+KG1fbWFjaGluZS0+bV9q
c0FycmF5VnB0ciksIFg4Njo6ZWF4KTsKICAgICAgICAgICAgIG1fc2xvd0Nhc2VzLmFwcGVuZChT
bG93Q2FzZUVudHJ5KG1faml0LmVtaXRVbmxpbmtlZEpuZSgpLCBpKSk7CisKKyAgICAgICAgICAg
IC8vIFRoaXMgaXMgYW4gYXJyYXk7IGdldCB0aGUgbV9zdG9yYWdlIHBvaW50ZXIgaW50byBlY3gs
IHRoZW4gY2hlY2sgaWYgdGhlIGluZGV4IGlzIGJlbG93IHRoZSBmYXN0IGN1dG9mZgorICAgICAg
ICAgICAgbV9qaXQubW92bF9tcihPQkpFQ1RfT0ZGU0VUKEpTQXJyYXksIG1fc3RvcmFnZSksIFg4
Njo6ZWF4LCBYODY6OmVjeCk7CiAgICAgICAgICAgICBtX2ppdC5jbXBsX3JtKFg4Njo6ZWR4LCBP
QkpFQ1RfT0ZGU0VUKEpTQXJyYXksIG1fZmFzdEFjY2Vzc0N1dG9mZiksIFg4Njo6ZWF4KTsKKyAg
ICAgICAgICAgIFg4NkFzc2VtYmxlcjo6Sm1wU3JjIGluRmFzdFZlY3RvciA9IG1faml0LmVtaXRV
bmxpbmtlZEphKCk7CisgICAgICAgICAgICAvLyBObzsgb2ggd2VsbCwgY2hlY2sgaWYgdGhlIGFj
Y2VzcyBpZiB3aXRoaW4gdGhlIHZlY3RvciAtIGlmIHNvLCB3ZSBtYXkgc3RpbGwgYmUgb2theS4K
KyAgICAgICAgICAgIG1faml0LmNtcGxfcm0oWDg2OjplZHgsIE9CSkVDVF9PRkZTRVQoQXJyYXlT
dG9yYWdlLCBtX3ZlY3Rvckxlbmd0aCksIFg4Njo6ZWN4KTsKICAgICAgICAgICAgIG1fc2xvd0Nh
c2VzLmFwcGVuZChTbG93Q2FzZUVudHJ5KG1faml0LmVtaXRVbmxpbmtlZEpiZSgpLCBpKSk7CiAK
LSAgICAgICAgICAgIG1faml0Lm1vdmxfbXIoT0JKRUNUX09GRlNFVChKU0FycmF5LCBtX3N0b3Jh
Z2UpLCBYODY6OmVheCwgWDg2OjplYXgpOwotICAgICAgICAgICAgbV9qaXQubW92bF9ybShYODY6
OmVjeCwgT0JKRUNUX09GRlNFVChBcnJheVN0b3JhZ2UsIG1fdmVjdG9yWzBdKSwgWDg2OjplYXgs
IFg4Njo6ZWR4LCBzaXplb2YoSlNWYWx1ZSopKTsKKyAgICAgICAgICAgIC8vIFRoaXMgaXMgYSB3
cml0ZSB0byB0aGUgc2xvdyBwYXJ0IG9mIHRoZSB2ZWN0b3I7IGZpcnN0LCB3ZSBoYXZlIHRvIGNo
ZWNrIGlmIHRoaXMgd291bGQgYmUgdGhlIGZpcnN0IHdyaXRlIHRvIHRoaXMgbG9jYXRpb24uCisg
ICAgICAgICAgICAvLyBUT0RPOiBzaG91bGQgYmUgYWJsZSB0byBoYW5kbGUgaW5pdGlhbCB3cml0
ZSB0byBhcnJheTsgaW5jcmVtZW50IHRoZSB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSBhcnJh
eSwgYW5kIHBvdGVudGlhbGx5IHVwZGF0ZSBmYXN0IGFjY2VzcyBjdXRvZmYuIAorICAgICAgICAg
ICAgbV9qaXQuY21wbF9pOG0oMCwgT0JKRUNUX09GRlNFVChBcnJheVN0b3JhZ2UsIG1fdmVjdG9y
WzBdKSwgWDg2OjplY3gsIFg4Njo6ZWR4LCBzaXplb2YoSlNWYWx1ZSopKTsKKyAgICAgICAgICAg
IG1fc2xvd0Nhc2VzLmFwcGVuZChTbG93Q2FzZUVudHJ5KG1faml0LmVtaXRVbmxpbmtlZEplKCks
IGkpKTsKKworICAgICAgICAgICAgLy8gQWxsIGdvb2QgLSBwdXQgdGhlIHZhbHVlIGludG8gdGhl
IGFycmF5LgorICAgICAgICAgICAgbV9qaXQubGluayhpbkZhc3RWZWN0b3IsIG1faml0LmxhYmVs
KCkpOworICAgICAgICAgICAgZW1pdEdldEFyZyhpbnN0cnVjdGlvbltpICsgM10udS5vcGVyYW5k
LCBYODY6OmVheCk7CisgICAgICAgICAgICBtX2ppdC5tb3ZsX3JtKFg4Njo6ZWF4LCBPQkpFQ1Rf
T0ZGU0VUKEFycmF5U3RvcmFnZSwgbV92ZWN0b3JbMF0pLCBYODY6OmVjeCwgWDg2OjplZHgsIHNp
emVvZihKU1ZhbHVlKikpOwogICAgICAgICAgICAgaSArPSA0OwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KQEAgLTEzMDgsNiArMTM4OSw4IEBAIHZvaWQgQ1RJOjpwcml2YXRlQ29tcGls
ZU1haW5QYXNzKCkKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICB9
CiAgICAgfQorCisgICAgQVNTRVJUKHN0cnVjdElESW5zdHJJZHggPT0gbV9jb2RlQmxvY2stPnN0
cnVjdHVyZUlESW5zdHJ1Y3Rpb25zLnNpemUoKSk7CiB9CiAKIApAQCAtMTMzMiw5ICsxNDE1LDEx
IEBAIHZvaWQgQ1RJOjpwcml2YXRlQ29tcGlsZUxpbmtQYXNzKCkKICAgICAKIHZvaWQgQ1RJOjpw
cml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiB7CisgICAgdW5zaWduZWQgc3RydWN0SURJbnN0cklk
eCA9IDA7CisKICAgICBJbnN0cnVjdGlvbiogaW5zdHJ1Y3Rpb24gPSBtX2NvZGVCbG9jay0+aW5z
dHJ1Y3Rpb25zLmJlZ2luKCk7CiAgICAgZm9yIChWZWN0b3I8U2xvd0Nhc2VFbnRyeT46Oml0ZXJh
dG9yIGl0ZXIgPSBtX3Nsb3dDYXNlcy5iZWdpbigpOyBpdGVyICE9IG1fc2xvd0Nhc2VzLmVuZCgp
OyArK2l0ZXIpIHsKLSAgICAgICAgaW50IGkgPSBpdGVyLT50bzsKKyAgICAgICAgdW5zaWduZWQg
aSA9IGl0ZXItPnRvOwogICAgICAgICBtX2ppdC5lbWl0UmVzdG9yZUFyZ3VtZW50UmVmZXJlbmNl
KCk7CiAgICAgICAgIHN3aXRjaCAobV9tYWNoaW5lLT5nZXRPcGNvZGVJRChpbnN0cnVjdGlvbltp
XS51Lm9wY29kZSkpIHsKICAgICAgICAgY2FzZSBvcF9hZGQ6IHsKQEAgLTEzNzEsMTYgKzE0NTYs
MzUgQEAgdm9pZCBDVEk6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICB9CiAgICAgICAgIGNhc2Ugb3BfZ2V0X2J5X3ZhbDogeworICAgICAgICAg
ICAgLy8gVGhlIHNsb3cgY2FzZSB0aGF0IGhhbmRsZXMgYWNjZXNzZXMgdG8gYXJyYXlzIChiZWxv
dykgbWF5IGp1bXAgYmFjayB1cCB0byBoZXJlLiAKKyAgICAgICAgICAgIFg4NkFzc2VtYmxlcjo6
Sm1wRHN0IGJlZ2luR2V0QnlWYWxTbG93ID0gbV9qaXQubGFiZWwoKTsKKwogICAgICAgICAgICAg
WDg2QXNzZW1ibGVyOjpKbXBTcmMgbm90SW1tID0gaXRlci0+ZnJvbTsKICAgICAgICAgICAgIG1f
aml0LmxpbmsoKCsraXRlciktPmZyb20sIG1faml0LmxhYmVsKCkpOwogICAgICAgICAgICAgbV9q
aXQubGluaygoKytpdGVyKS0+ZnJvbSwgbV9qaXQubGFiZWwoKSk7Ci0gICAgICAgICAgICBtX2pp
dC5saW5rKCgrK2l0ZXIpLT5mcm9tLCBtX2ppdC5sYWJlbCgpKTsKICAgICAgICAgICAgIGVtaXRG
YXN0QXJpdGhJbnRUb0ltbU5vQ2hlY2soWDg2OjplZHgpOwogICAgICAgICAgICAgbV9qaXQubGlu
ayhub3RJbW0sIG1faml0LmxhYmVsKCkpOwogICAgICAgICAgICAgZW1pdFB1dEFyZyhYODY6OmVh
eCwgMCk7CiAgICAgICAgICAgICBlbWl0UHV0QXJnKFg4Njo6ZWR4LCA0KTsKICAgICAgICAgICAg
IGVtaXRDYWxsKGksIE1hY2hpbmU6OmN0aV9vcF9nZXRfYnlfdmFsKTsKICAgICAgICAgICAgIGVt
aXRQdXRSZXN1bHQoaW5zdHJ1Y3Rpb25baSArIDFdLnUub3BlcmFuZCk7CisgICAgICAgICAgICBt
X2ppdC5saW5rKG1faml0LmVtaXRVbmxpbmtlZEptcCgpLCBtX2xhYmVsc1tpICsgNF0pOworCisg
ICAgICAgICAgICAvLyBUaGlzIGlzIHNsb3cgY2FzZSB0aGF0IGhhbmRsZXMgYWNjZXNzZXMgdG8g
YXJyYXlzIGFib3ZlIHRoZSBmYXN0IGN1dC1vZmYuCisgICAgICAgICAgICAvLyBGaXJzdCwgY2hl
Y2sgaWYgdGhpcyBpcyBhbiBhY2Nlc3MgdG8gdGhlIHZlY3RvcgorICAgICAgICAgICAgbV9qaXQu
bGluaygoKytpdGVyKS0+ZnJvbSwgbV9qaXQubGFiZWwoKSk7CisgICAgICAgICAgICBtX2ppdC5j
bXBsX3JtKFg4Njo6ZWR4LCBPQkpFQ1RfT0ZGU0VUKEFycmF5U3RvcmFnZSwgbV92ZWN0b3JMZW5n
dGgpLCBYODY6OmVjeCk7CisgICAgICAgICAgICBtX2ppdC5saW5rKG1faml0LmVtaXRVbmxpbmtl
ZEpiZSgpLCBiZWdpbkdldEJ5VmFsU2xvdyk7CisKKyAgICAgICAgICAgIC8vIG9rYXksIG1pc3Nl
ZCB0aGUgZmFzdCByZWdpb24sIGJ1dCBpdCBpcyBzdGlsbCBpbiB0aGUgdmVjdG9yLiAgR2V0IHRo
ZSB2YWx1ZS4KKyAgICAgICAgICAgIG1faml0Lm1vdmxfbXIoT0JKRUNUX09GRlNFVChBcnJheVN0
b3JhZ2UsIG1fdmVjdG9yWzBdKSwgWDg2OjplY3gsIFg4Njo6ZWR4LCBzaXplb2YoSlNWYWx1ZSop
LCBYODY6OmVheCk7CisgICAgICAgICAgICAvLyBDaGVjayB3aGV0aGVyIHRoZSB2YWx1ZSBsb2Fk
ZWQgaXMgemVybzsgaWYgc28gd2UgbmVlZCB0byByZXR1cm4gdW5kZWZpbmVkLgorICAgICAgICAg
ICAgbV9qaXQudGVzdGxfcnIoWDg2OjplYXgsIFg4Njo6ZWF4KTsKKyAgICAgICAgICAgIFg4NkFz
c2VtYmxlcjo6Sm1wU3JjIGlzTm9uWmVybyA9IG1faml0LmVtaXRVbmxpbmtlZEpuZSgpOworICAg
ICAgICAgICAgbV9qaXQubW92bF9pMzJyKHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQ+KEpTSW1t
ZWRpYXRlOjp1bmRlZmluZWRJbW1lZGlhdGUoKSksIFg4Njo6ZWF4KTsKKyAgICAgICAgICAgIG1f
aml0LmxpbmsoaXNOb25aZXJvLCBtX2ppdC5sYWJlbCgpKTsKKyAgICAgICAgICAgIGVtaXRQdXRS
ZXN1bHQoaW5zdHJ1Y3Rpb25baSArIDFdLnUub3BlcmFuZCk7CisgICAgICAgICAgICAKICAgICAg
ICAgICAgIGkgKz0gNDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xNDQ1LDYg
KzE1NDksNTIgQEAgdm9pZCBDVEk6OnByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCkKICAgICAgICAg
ICAgIGkgKz0gNDsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CisgICAgICAgIGNhc2Ug
b3BfcHV0X2J5X2lkOiB7CisgICAgICAgICAgICBtX2ppdC5saW5rKGl0ZXItPmZyb20sIG1faml0
LmxhYmVsKCkpOworICAgICAgICAgICAgbV9qaXQubGluaygoKytpdGVyKS0+ZnJvbSwgbV9qaXQu
bGFiZWwoKSk7CisKKyAgICAgICAgICAgIElkZW50aWZpZXIqIGlkZW50ID0gJihtX2NvZGVCbG9j
ay0+aWRlbnRpZmllcnNbaW5zdHJ1Y3Rpb25baSArIDJdLnUub3BlcmFuZF0pOworICAgICAgICAg
ICAgZW1pdFB1dEFyZ0NvbnN0YW50KHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQ+KGlkZW50KSwg
NCk7CisgICAgICAgICAgICBlbWl0UHV0QXJnKFg4Njo6ZWF4LCAwKTsKKyAgICAgICAgICAgIGVt
aXRQdXRBcmcoWDg2OjplZHgsIDgpOworICAgICAgICAgICAgWDg2QXNzZW1ibGVyOjpKbXBTcmMg
Y2FsbCA9IGVtaXRDYWxsKGksIE1hY2hpbmU6OmN0aV9vcF9wdXRfYnlfaWQpOworCisgICAgICAg
ICAgICAvLyBUcmFjayB0aGUgbG9jYXRpb24gb2YgdGhlIGNhbGw7IHRoaXMgd2lsbCBiZSB1c2Vk
IHRvIHJlY292ZXIgcmVwYXRjaCBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgIEFTU0VSVChtX2Nv
ZGVCbG9jay0+c3RydWN0dXJlSURJbnN0cnVjdGlvbnNbc3RydWN0SURJbnN0cklkeF0ub3Bjb2Rl
SW5kZXggPT0gaSk7CisgICAgICAgICAgICBzdHJ1Y3R1cmVTdHViQ29tcGlsYXRpb25JbmZvW3N0
cnVjdElESW5zdHJJZHhdLmNhbGxSZXR1cm5Mb2NhdGlvbiA9IGNhbGw7CisgICAgICAgICAgICAr
K3N0cnVjdElESW5zdHJJZHg7CisKKyAgICAgICAgICAgIGkgKz0gODsKKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgICAgIC8vIEFzIGZvciB0aGUgaG90IHBhdGggb2YgZ2V0X2J5
X2lkLCBhYm92ZSwgd2UgZW5zdXJlIHRoYXQgd2UgY2FuIHVzZSBhbiBhcmNoaXRlY3R1cmUgc3Bl
Y2lmaWMgb2Zmc2V0CisgICAgICAgIC8vIHNvIHRoYXQgd2Ugb25seSBuZWVkIHRyYWNrIG9uZSBw
b2ludGVyIGludG8gdGhlIHNsb3cgY2FzZSBjb2RlIC0gd2UgdHJhY2sgYSBwb2ludGVyIHRvIHRo
ZSBsb2NhdGlvbgorICAgICAgICAvLyBvZiB0aGUgY2FsbCAod2hpY2ggd2UgY2FuIHVzZSB0byBs
b29rIHVwIHRoZSByZXBhdGNoIGluZm9ybWF0aW9uKSwgYnV0IHNob3VsZCBhIGFycmF5LWxlbmd0
aCBvcgorICAgICAgICAvLyBwcm90b3R5cGUgYWNjZXNzIHRyYW1vcGlsZSBmYWlsIHdlIHdhbnQg
dG8gYmFpbCBvdXQgYmFjayB0byBoZXJlLiAgVG8gZG8gc28gd2UgY2FuIHN1YnRyYWN0IGJhY2sK
KyAgICAgICAgLy8gdGhlIGRpc3RhbmNlIGZyb20gdGhlIGNhbGwgdG8gdGhlIGhlYWQgb2YgdGhl
IHNsb3cgY2FzZS4KKyAgICAgICAgI2RlZmluZSBQUk9QRVJUWV9BQ0NFU1NfT0ZGU0VUX0dFVF9T
TE9XX0NBTEwgMTcKKyAgICAgICAgY2FzZSBvcF9nZXRfYnlfaWQ6IHsKKyAgICAgICAgICAgIG1f
aml0LmxpbmsoaXRlci0+ZnJvbSwgbV9qaXQubGFiZWwoKSk7CisgICAgICAgICAgICBtX2ppdC5s
aW5rKCgrK2l0ZXIpLT5mcm9tLCBtX2ppdC5sYWJlbCgpKTsKKworI2lmbmRlZiBOREVCVUcKKyAg
ICAgICAgICAgIFg4NkFzc2VtYmxlcjo6Sm1wRHN0IGNvbGRQYXRoQmVnaW4gPSBtX2ppdC5sYWJl
bCgpOworI2VuZGlmICAgICAgICAKKyAgICAgICAgICAgIGVtaXRQdXRBcmcoWDg2OjplYXgsIDAp
OworICAgICAgICAgICAgSWRlbnRpZmllciogaWRlbnQgPSAmKG1fY29kZUJsb2NrLT5pZGVudGlm
aWVyc1tpbnN0cnVjdGlvbltpICsgM10udS5vcGVyYW5kXSk7CisgICAgICAgICAgICBlbWl0UHV0
QXJnQ29uc3RhbnQocmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZD4oaWRlbnQpLCA0KTsKKyAgICAg
ICAgICAgIFg4NkFzc2VtYmxlcjo6Sm1wU3JjIGNhbGwgPSBlbWl0Q2FsbChpLCBNYWNoaW5lOjpj
dGlfb3BfZ2V0X2J5X2lkKTsKKyAgICAgICAgICAgIEFTU0VSVChYODZBc3NlbWJsZXI6OmdldERp
ZmZlcmVuY2VCZXR3ZWVuTGFiZWxzKGNvbGRQYXRoQmVnaW4sIGNhbGwpID09IFBST1BFUlRZX0FD
Q0VTU19PRkZTRVRfR0VUX1NMT1dfQ0FMTCk7CisgICAgICAgICAgICBlbWl0UHV0UmVzdWx0KGlu
c3RydWN0aW9uW2kgKyAxXS51Lm9wZXJhbmQpOworCisgICAgICAgICAgICAvLyBUcmFjayB0aGUg
bG9jYXRpb24gb2YgdGhlIGNhbGw7IHRoaXMgd2lsbCBiZSB1c2VkIHRvIHJlY292ZXIgcmVwYXRj
aCBpbmZvcm1hdGlvbi4KKyAgICAgICAgICAgIEFTU0VSVChtX2NvZGVCbG9jay0+c3RydWN0dXJl
SURJbnN0cnVjdGlvbnNbc3RydWN0SURJbnN0cklkeF0ub3Bjb2RlSW5kZXggPT0gaSk7CisgICAg
ICAgICAgICBzdHJ1Y3R1cmVTdHViQ29tcGlsYXRpb25JbmZvW3N0cnVjdElESW5zdHJJZHhdLmNh
bGxSZXR1cm5Mb2NhdGlvbiA9IGNhbGw7CisgICAgICAgICAgICArK3N0cnVjdElESW5zdHJJZHg7
CisKKyAgICAgICAgICAgIGkgKz0gODsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CiAg
ICAgICAgIGNhc2Ugb3BfcHJlX2luYzogewogICAgICAgICAgICAgdW5zaWduZWQgc3JjRHN0ID0g
aW5zdHJ1Y3Rpb25baSArIDFdLnUub3BlcmFuZDsKICAgICAgICAgICAgIFg4NkFzc2VtYmxlcjo6
Sm1wU3JjIG5vdEltbSA9IGl0ZXItPmZyb207CkBAIC0xNDU4LDE2ICsxNjA4LDI4IEBAIHZvaWQg
Q1RJOjpwcml2YXRlQ29tcGlsZVNsb3dDYXNlcygpCiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIG9wX3B1dF9ieV92YWw6IHsKKyAgICAgICAgICAgIC8vIE5vcm1h
bCBzbG93IGNhc2VzIC0gZWl0aGVyIGlzIG5vdCBhbiBpbW1lZGlhdGUgaW1tLCBvciBpcyBhbiBh
cnJheS4KICAgICAgICAgICAgIFg4NkFzc2VtYmxlcjo6Sm1wU3JjIG5vdEltbSA9IGl0ZXItPmZy
b207CiAgICAgICAgICAgICBtX2ppdC5saW5rKCgrK2l0ZXIpLT5mcm9tLCBtX2ppdC5sYWJlbCgp
KTsKICAgICAgICAgICAgIG1faml0LmxpbmsoKCsraXRlciktPmZyb20sIG1faml0LmxhYmVsKCkp
OwotICAgICAgICAgICAgbV9qaXQubGluaygoKytpdGVyKS0+ZnJvbSwgbV9qaXQubGFiZWwoKSk7
CiAgICAgICAgICAgICBlbWl0RmFzdEFyaXRoSW50VG9JbW1Ob0NoZWNrKFg4Njo6ZWR4KTsKICAg
ICAgICAgICAgIG1faml0Lmxpbmsobm90SW1tLCBtX2ppdC5sYWJlbCgpKTsKKyAgICAgICAgICAg
IGVtaXRHZXRBcmcoaW5zdHJ1Y3Rpb25baSArIDNdLnUub3BlcmFuZCwgWDg2OjplY3gpOwogICAg
ICAgICAgICAgZW1pdFB1dEFyZyhYODY6OmVheCwgMCk7CiAgICAgICAgICAgICBlbWl0UHV0QXJn
KFg4Njo6ZWR4LCA0KTsKICAgICAgICAgICAgIGVtaXRQdXRBcmcoWDg2OjplY3gsIDgpOwogICAg
ICAgICAgICAgZW1pdENhbGwoaSwgTWFjaGluZTo6Y3RpX29wX3B1dF9ieV92YWwpOworICAgICAg
ICAgICAgbV9qaXQubGluayhtX2ppdC5lbWl0VW5saW5rZWRKbXAoKSwgbV9sYWJlbHNbaSArIDRd
KTsKKworICAgICAgICAgICAgLy8gc2xvdyBjYXNlcyBmb3IgaW1tZWRpYXRlIGludCBhY2Nlc3Nl
cyB0byBhcnJheXMKKyAgICAgICAgICAgIG1faml0LmxpbmsoKCsraXRlciktPmZyb20sIG1faml0
LmxhYmVsKCkpOworICAgICAgICAgICAgbV9qaXQubGluaygoKytpdGVyKS0+ZnJvbSwgbV9qaXQu
bGFiZWwoKSk7CisgICAgICAgICAgICBlbWl0R2V0QXJnKGluc3RydWN0aW9uW2kgKyAzXS51Lm9w
ZXJhbmQsIFg4Njo6ZWN4KTsKKyAgICAgICAgICAgIGVtaXRQdXRBcmcoWDg2OjplYXgsIDApOwor
ICAgICAgICAgICAgZW1pdFB1dEFyZyhYODY6OmVkeCwgNCk7CisgICAgICAgICAgICBlbWl0UHV0
QXJnKFg4Njo6ZWN4LCA4KTsKKyAgICAgICAgICAgIGVtaXRDYWxsKGksIE1hY2hpbmU6OmN0aV9v
cF9wdXRfYnlfdmFsX2FycmF5KTsKKwogICAgICAgICAgICAgaSArPSA0OwogICAgICAgICAgICAg
YnJlYWs7CiAgICAgICAgIH0KQEAgLTE2NDUsNiArMTgwNyw4IEBAIHZvaWQgQ1RJOjpwcml2YXRl
Q29tcGlsZVNsb3dDYXNlcygpCiAKICAgICAgICAgbV9qaXQubGluayhtX2ppdC5lbWl0VW5saW5r
ZWRKbXAoKSwgbV9sYWJlbHNbaV0pOwogICAgIH0KKworICAgIEFTU0VSVChzdHJ1Y3RJREluc3Ry
SWR4ID09IG1fY29kZUJsb2NrLT5zdHJ1Y3R1cmVJREluc3RydWN0aW9ucy5zaXplKCkpOwogfQog
CiB2b2lkIENUSTo6cHJpdmF0ZUNvbXBpbGUoKQpAQCAtMTcwNiwxMCArMTg3MCwxNyBAQCB2b2lk
IENUSTo6cHJpdmF0ZUNvbXBpbGUoKQogICAgIGZvciAoVmVjdG9yPEpTUkluZm8+OjppdGVyYXRv
ciBpdGVyID0gbV9qc3JTaXRlcy5iZWdpbigpOyBpdGVyICE9IG1fanNyU2l0ZXMuZW5kKCk7ICsr
aXRlcikKICAgICAgICAgWDg2QXNzZW1ibGVyOjpsaW5rQWJzb2x1dGVBZGRyZXNzKGNvZGUsIGl0
ZXItPmFkZHJQb3NpdGlvbiwgaXRlci0+dGFyZ2V0KTsKIAorICAgIGZvciAodW5zaWduZWQgaSA9
IDA7IGkgPCBtX2NvZGVCbG9jay0+c3RydWN0dXJlSURJbnN0cnVjdGlvbnMuc2l6ZSgpOyArK2kp
IHsKKyAgICAgICAgU3RydWN0dXJlU3R1YkluZm8mIGluZm8gPSBtX2NvZGVCbG9jay0+c3RydWN0
dXJlSURJbnN0cnVjdGlvbnNbaV07CisgICAgICAgIGluZm8uY2FsbFJldHVybkxvY2F0aW9uID0g
WDg2QXNzZW1ibGVyOjpnZXRSZWxvY2F0ZWRBZGRyZXNzKGNvZGUsIHN0cnVjdHVyZVN0dWJDb21w
aWxhdGlvbkluZm9baV0uY2FsbFJldHVybkxvY2F0aW9uKTsKKyAgICAgICAgaW5mby5ob3RQYXRo
QmVnaW4gPSBYODZBc3NlbWJsZXI6OmdldFJlbG9jYXRlZEFkZHJlc3MoY29kZSwgc3RydWN0dXJl
U3R1YkNvbXBpbGF0aW9uSW5mb1tpXS5ob3RQYXRoQmVnaW4pOworICAgIH0KKworCiAgICAgbV9j
b2RlQmxvY2stPmN0aUNvZGUgPSBjb2RlOwogfQogCi12b2lkKiBDVEk6OnByaXZhdGVDb21waWxl
R2V0QnlJZFNlbGYoU3RydWN0dXJlSUQqIHN0cnVjdHVyZUlELCBzaXplX3QgY2FjaGVkT2Zmc2V0
KQordm9pZCBDVEk6OnByaXZhdGVDb21waWxlR2V0QnlJZFNlbGYoU3RydWN0dXJlSUQqIHN0cnVj
dHVyZUlELCBzaXplX3QgY2FjaGVkT2Zmc2V0LCB2b2lkKiByZXR1cm5BZGRyZXNzKQogewogICAg
IC8vIENoZWNrIGVheCBpcyBhbiBvYmplY3Qgb2YgdGhlIHJpZ2h0IFN0cnVjdHVyZUlELgogICAg
IG1faml0LnRlc3RsX2kzMnIoSlNJbW1lZGlhdGU6OlRhZ01hc2ssIFg4Njo6ZWF4KTsKQEAgLTE3
MjgsMTYgKzE4OTksNjUgQEAgdm9pZCogQ1RJOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRTZWxmKFN0
cgogICAgIFg4NkFzc2VtYmxlcjo6bGluayhjb2RlLCBmYWlsdXJlQ2FzZXMxLCByZWludGVycHJl
dF9jYXN0PHZvaWQqPihNYWNoaW5lOjpjdGlfb3BfZ2V0X2J5X2lkX2ZhaWwpKTsKICAgICBYODZB
c3NlbWJsZXI6OmxpbmsoY29kZSwgZmFpbHVyZUNhc2VzMiwgcmVpbnRlcnByZXRfY2FzdDx2b2lk
Kj4oTWFjaGluZTo6Y3RpX29wX2dldF9ieV9pZF9mYWlsKSk7CiAgICAgCi0gICAgbV9jb2RlQmxv
Y2stPnN0cnVjdHVyZUlEQWNjZXNzU3R1YnMuYXBwZW5kKGNvZGUpOworICAgIG1fY29kZUJsb2Nr
LT5nZXRTdHViSW5mbyhyZXR1cm5BZGRyZXNzKS5zdHViUm91dGluZSA9IGNvZGU7CiAgICAgCi0g
ICAgcmV0dXJuIGNvZGU7CisgICAgY3RpUmVwYXRjaENhbGxCeVJldHVybkFkZHJlc3MocmV0dXJu
QWRkcmVzcywgY29kZSk7CiB9CiAKLXZvaWQqIENUSTo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkUHJv
dG8oRXhlY1N0YXRlKiBleGVjLCBTdHJ1Y3R1cmVJRCogc3RydWN0dXJlSUQsIFN0cnVjdHVyZUlE
KiBwcm90b3R5cGVTdHJ1Y3R1cmVJRCwgc2l6ZV90IGNhY2hlZE9mZnNldCkKK3ZvaWQgQ1RJOjpw
cml2YXRlQ29tcGlsZUdldEJ5SWRQcm90byhTdHJ1Y3R1cmVJRCogc3RydWN0dXJlSUQsIFN0cnVj
dHVyZUlEKiBwcm90b3R5cGVTdHJ1Y3R1cmVJRCwgc2l6ZV90IGNhY2hlZE9mZnNldCwgdm9pZCog
cmV0dXJuQWRkcmVzcykKIHsKKyNpZiBVU0UoQ1RJX1JFUEFUQ0hfUElDKQorICAgIFN0cnVjdHVy
ZVN0dWJJbmZvJiBpbmZvID0gbV9jb2RlQmxvY2stPmdldFN0dWJJbmZvKHJldHVybkFkZHJlc3Mp
OworCisgICAgLy8gV2UgZG9uJ3Qgd2FudCB0byByZXBhdGNoIG1vcmUgdGhhbiBvbmNlIC0gaW4g
ZnV0dXJlIGdvIHRvIGN0aV9vcF9wdXRfYnlfaWRfZ2VuZXJpYy4KKyAgICBjdGlSZXBhdGNoQ2Fs
bEJ5UmV0dXJuQWRkcmVzcyhyZXR1cm5BZGRyZXNzLCAodm9pZCopKE1hY2hpbmU6OmN0aV9vcF9n
ZXRfYnlfaWRfZmFpbCkpOworCiAgICAgLy8gVGhlIHByb3RvdHlwZSBvYmplY3QgZGVmaW5pdGVs
eSBleGlzdHMgKGlmIHRoaXMgc3R1YiBleGlzdHMgdGhlIENvZGVCbG9jayBpcyByZWZlcmVuY2lu
ZyBhIFN0cnVjdHVyZUlEIHRoYXQgaXMKICAgICAvLyByZWZlcmVuY2luZyB0aGUgcHJvdG90eXBl
IG9iamVjdCAtIGxldCdzIHNwZWN1bGF0aXZlbHkgbG9hZCBpdCdzIHRhYmxlIG5pY2UgYW5kIGVh
cmx5ISkKLSAgICBKU09iamVjdCogcHJvdG9PYmplY3QgPSBzdGF0aWNfY2FzdDxKU09iamVjdCo+
KHN0cnVjdHVyZUlELT5wcm90b3R5cGVGb3JMb29rdXAoZXhlYykpOworICAgIEpTT2JqZWN0KiBw
cm90b09iamVjdCA9IHN0YXRpY19jYXN0PEpTT2JqZWN0Kj4oc3RydWN0dXJlSUQtPnByb3RvdHlw
ZUZvckxvb2t1cChtX2V4ZWMpKTsKKyAgICBQcm9wZXJ0eVN0b3JhZ2UqIHByb3RvUHJvcGVydHlT
dG9yYWdlID0gJnByb3RvT2JqZWN0LT5tX3Byb3BlcnR5U3RvcmFnZTsKKyAgICBtX2ppdC5tb3Zs
X21yKHN0YXRpY19jYXN0PHZvaWQqPihwcm90b1Byb3BlcnR5U3RvcmFnZSksIFg4Njo6ZWR4KTsK
KworICAgIC8vIGNoZWNrIGVheCBpcyBhbiBvYmplY3Qgb2YgdGhlIHJpZ2h0IFN0cnVjdHVyZUlE
LgorICAgIG1faml0LnRlc3RsX2kzMnIoSlNJbW1lZGlhdGU6OlRhZ01hc2ssIFg4Njo6ZWF4KTsK
KyAgICBYODZBc3NlbWJsZXI6OkptcFNyYyBmYWlsdXJlQ2FzZXMxID0gbV9qaXQuZW1pdFVubGlu
a2VkSm5lKCk7CisgICAgbV9qaXQuY21wbF9pMzJtKHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+
KHN0cnVjdHVyZUlEKSwgT0JKRUNUX09GRlNFVChKU0NlbGwsIG1fc3RydWN0dXJlSUQpLCBYODY6
OmVheCk7CisgICAgWDg2QXNzZW1ibGVyOjpKbXBTcmMgZmFpbHVyZUNhc2VzMiA9IG1faml0LmVt
aXRVbmxpbmtlZEpuZSgpOworCisgICAgLy8gQ2hlY2sgdGhlIHByb3RvdHlwZSBvYmplY3QncyBT
dHJ1Y3R1cmVJRCBoYWQgbm90IGNoYW5nZWQuCisgICAgU3RydWN0dXJlSUQqKiBwcm90b1N0cnVj
dHVyZUlEQWRkcmVzcyA9ICYocHJvdG9PYmplY3QtPm1fc3RydWN0dXJlSUQpOworICAgIG1faml0
LmNtcGxfaTMybShyZWludGVycHJldF9jYXN0PHVpbnQzMl90Pihwcm90b3R5cGVTdHJ1Y3R1cmVJ
RCksIHN0YXRpY19jYXN0PHZvaWQqPihwcm90b1N0cnVjdHVyZUlEQWRkcmVzcykpOworICAgIFg4
NkFzc2VtYmxlcjo6Sm1wU3JjIGZhaWx1cmVDYXNlczMgPSBtX2ppdC5lbWl0VW5saW5rZWRKbmUo
KTsKKworICAgIC8vIENoZWNrcyBvdXQgb2theSEgLSBnZXREaXJlY3RPZmZzZXQKKyAgICBtX2pp
dC5tb3ZsX21yKGNhY2hlZE9mZnNldCAqIHNpemVvZihKU1ZhbHVlKiksIFg4Njo6ZWR4LCBYODY6
OmVjeCk7CisKKyAgICBYODZBc3NlbWJsZXI6OkptcFNyYyBzdWNjZXNzID0gbV9qaXQuZW1pdFVu
bGlua2VkSm1wKCk7CisKKyAgICB2b2lkKiBjb2RlID0gbV9qaXQuY29weSgpOworICAgIEFTU0VS
VChjb2RlKTsKKworICAgIC8vIFVzZSB0aGUgcmVwYXRjaCBpbmZvcm1hdGlvbiB0byBsaW5rIHRo
ZSBmYWlsdXJlIGNhc2VzIGJhY2sgdG8gdGhlIG9yaWdpbmFsIHNsb3cgY2FzZSByb3V0aW5lLgor
ICAgIHZvaWQqIHNsb3dDYXNlQmVnaW4gPSAoY2hhciopKGluZm8uY2FsbFJldHVybkxvY2F0aW9u
KSAtIFBST1BFUlRZX0FDQ0VTU19PRkZTRVRfR0VUX1NMT1dfQ0FMTDsKKyAgICBYODZBc3NlbWJs
ZXI6OmxpbmsoY29kZSwgZmFpbHVyZUNhc2VzMSwgc2xvd0Nhc2VCZWdpbik7CisgICAgWDg2QXNz
ZW1ibGVyOjpsaW5rKGNvZGUsIGZhaWx1cmVDYXNlczIsIHNsb3dDYXNlQmVnaW4pOworICAgIFg4
NkFzc2VtYmxlcjo6bGluayhjb2RlLCBmYWlsdXJlQ2FzZXMzLCBzbG93Q2FzZUJlZ2luKTsKKwor
ICAgIC8vIE9uIHN1Y2Nlc3MgcmV0dXJuIGJhY2sgdG8gdGhlIGhvdCBwYXRjaCBjb2RlLCBhdCBh
IHBvaW50IGl0IHdpbGwgcGVyZm9ybSB0aGUgc3RvcmUgdG8gZGVzdCBmb3IgdXMuCisgICAgaW50
cHRyX3Qgc3VjY2Vzc0Rlc3QgPSAoaW50cHRyX3QpKGluZm8uaG90UGF0aEJlZ2luKSArIFBST1BF
UlRZX0FDQ0VTU19PRkZTRVRfR0VUX09GRlNFVDsKKyAgICBYODZBc3NlbWJsZXI6OmxpbmsoY29k
ZSwgc3VjY2VzcywgKHZvaWQqKXN1Y2Nlc3NEZXN0KTsKKworICAgIC8vIFRyYWNrIHRoZSBzdHVi
IHdlIGhhdmUgY3JlYXRlZCBzbyB0aGF0IGl0IHdpbGwgYmUgZGVsZXRlZCBsYXRlci4KKyAgICBt
X2NvZGVCbG9jay0+Z2V0U3R1YkluZm8ocmV0dXJuQWRkcmVzcykuc3R1YlJvdXRpbmUgPSBjb2Rl
OworCisgICAgLy8gRmluYWxseSByZXBhdGNoIHRoZSBqdW1wIHRvIHNvdyBjYXNlIGJhY2sgaW4g
dGhlIGhvdCBwYXRoIHRvIGp1bXAgaGVyZSBpbnN0ZWFkLgorICAgIC8vIEZJWE1FOiBzaG91bGQg
cmV2ZXJ0IHRoaXMgcmVwYXRjaGluZywgb24gZmFpbHVyZS4KKyAgICB2b2lkKiBqbXBMb2NhdGlv
biA9IChjaGFyKikoaW5mby5ob3RQYXRoQmVnaW4pICsgUFJPUEVSVFlfQUNDRVNTX09GRlNFVF9H
RVRfSk1QOworICAgICgoaW50cHRyX3QqKWptcExvY2F0aW9uKVstMV0gPSAoaW50cHRyX3QpY29k
ZSAtIChpbnRwdHJfdClqbXBMb2NhdGlvbjsKKyNlbHNlCisgICAgLy8gVGhlIHByb3RvdHlwZSBv
YmplY3QgZGVmaW5pdGVseSBleGlzdHMgKGlmIHRoaXMgc3R1YiBleGlzdHMgdGhlIENvZGVCbG9j
ayBpcyByZWZlcmVuY2luZyBhIFN0cnVjdHVyZUlEIHRoYXQgaXMKKyAgICAvLyByZWZlcmVuY2lu
ZyB0aGUgcHJvdG90eXBlIG9iamVjdCAtIGxldCdzIHNwZWN1bGF0aXZlbHkgbG9hZCBpdCdzIHRh
YmxlIG5pY2UgYW5kIGVhcmx5ISkKKyAgICBKU09iamVjdCogcHJvdG9PYmplY3QgPSBzdGF0aWNf
Y2FzdDxKU09iamVjdCo+KHN0cnVjdHVyZUlELT5wcm90b3R5cGVGb3JMb29rdXAobV9leGVjKSk7
CiAgICAgUHJvcGVydHlTdG9yYWdlKiBwcm90b1Byb3BlcnR5U3RvcmFnZSA9ICZwcm90b09iamVj
dC0+bV9wcm9wZXJ0eVN0b3JhZ2U7CiAgICAgbV9qaXQubW92bF9tcihzdGF0aWNfY2FzdDx2b2lk
Kj4ocHJvdG9Qcm9wZXJ0eVN0b3JhZ2UpLCBYODY6OmVkeCk7CiAKQEAgLTE3NjQsMTIgKzE5ODQs
MTMgQEAgdm9pZCogQ1RJOjpwcml2YXRlQ29tcGlsZUdldEJ5SWRQcm90byhFeAogICAgIFg4NkFz
c2VtYmxlcjo6bGluayhjb2RlLCBmYWlsdXJlQ2FzZXMyLCByZWludGVycHJldF9jYXN0PHZvaWQq
PihNYWNoaW5lOjpjdGlfb3BfZ2V0X2J5X2lkX2ZhaWwpKTsKICAgICBYODZBc3NlbWJsZXI6Omxp
bmsoY29kZSwgZmFpbHVyZUNhc2VzMywgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oTWFjaGluZTo6
Y3RpX29wX2dldF9ieV9pZF9mYWlsKSk7CiAKLSAgICBtX2NvZGVCbG9jay0+c3RydWN0dXJlSURB
Y2Nlc3NTdHVicy5hcHBlbmQoY29kZSk7CisgICAgbV9jb2RlQmxvY2stPmdldFN0dWJJbmZvKHJl
dHVybkFkZHJlc3MpLnN0dWJSb3V0aW5lID0gY29kZTsKIAotICAgIHJldHVybiBjb2RlOworICAg
IGN0aVJlcGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKHJldHVybkFkZHJlc3MsIGNvZGUpOworI2Vu
ZGlmCiB9CiAKLXZvaWQqIENUSTo6cHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oRXhlY1N0YXRl
KiBleGVjLCBTdHJ1Y3R1cmVJRCogc3RydWN0dXJlSUQsIFN0cnVjdHVyZUlEQ2hhaW4qIGNoYWlu
LCBzaXplX3QgY291bnQsIHNpemVfdCBjYWNoZWRPZmZzZXQpCit2b2lkIENUSTo6cHJpdmF0ZUNv
bXBpbGVHZXRCeUlkQ2hhaW4oU3RydWN0dXJlSUQqIHN0cnVjdHVyZUlELCBTdHJ1Y3R1cmVJRENo
YWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCB2b2lkKiByZXR1
cm5BZGRyZXNzKQogewogICAgIEFTU0VSVChjb3VudCk7CiAgICAgCkBAIC0xNzg1LDcgKzIwMDYs
NyBAQCB2b2lkKiBDVEk6OnByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKEV4CiAgICAgUmVmUHRy
PFN0cnVjdHVyZUlEPiogY2hhaW5FbnRyaWVzID0gY2hhaW4tPmhlYWQoKTsKICAgICBKU09iamVj
dCogcHJvdG9PYmplY3QgPSAwOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGk8Y291bnQ7ICsr
aSkgewotICAgICAgICBwcm90b09iamVjdCA9IHN0YXRpY19jYXN0PEpTT2JqZWN0Kj4oY3VyclN0
cnVjdHVyZUlELT5wcm90b3R5cGVGb3JMb29rdXAoZXhlYykpOworICAgICAgICBwcm90b09iamVj
dCA9IHN0YXRpY19jYXN0PEpTT2JqZWN0Kj4oY3VyclN0cnVjdHVyZUlELT5wcm90b3R5cGVGb3JM
b29rdXAobV9leGVjKSk7CiAgICAgICAgIGN1cnJTdHJ1Y3R1cmVJRCA9IGNoYWluRW50cmllc1tp
XS5nZXQoKTsKIAogICAgICAgICAvLyBDaGVjayB0aGUgcHJvdG90eXBlIG9iamVjdCdzIFN0cnVj
dHVyZUlEIGhhZCBub3QgY2hhbmdlZC4KQEAgLTE4MDcsMTEgKzIwMjgsMTMgQEAgdm9pZCogQ1RJ
Ojpwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbihFeAogCiAgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IGJ1Y2tldHNPZkZhaWwuc2l6ZSgpOyArK2kpCiAgICAgICAgIFg4NkFzc2VtYmxlcjo6
bGluayhjb2RlLCBidWNrZXRzT2ZGYWlsW2ldLCByZWludGVycHJldF9jYXN0PHZvaWQqPihNYWNo
aW5lOjpjdGlfb3BfZ2V0X2J5X2lkX2ZhaWwpKTsKLSAgICBtX2NvZGVCbG9jay0+c3RydWN0dXJl
SURBY2Nlc3NTdHVicy5hcHBlbmQoY29kZSk7Ci0gICAgcmV0dXJuIGNvZGU7CisKKyAgICBtX2Nv
ZGVCbG9jay0+Z2V0U3R1YkluZm8ocmV0dXJuQWRkcmVzcykuc3R1YlJvdXRpbmUgPSBjb2RlOwor
CisgICAgY3RpUmVwYXRjaENhbGxCeVJldHVybkFkZHJlc3MocmV0dXJuQWRkcmVzcywgY29kZSk7
CiB9CiAKLXZvaWQqIENUSTo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkUmVwbGFjZShTdHJ1Y3R1cmVJ
RCogc3RydWN0dXJlSUQsIHNpemVfdCBjYWNoZWRPZmZzZXQpCit2b2lkIENUSTo6cHJpdmF0ZUNv
bXBpbGVQdXRCeUlkUmVwbGFjZShTdHJ1Y3R1cmVJRCogc3RydWN0dXJlSUQsIHNpemVfdCBjYWNo
ZWRPZmZzZXQsIHZvaWQqIHJldHVybkFkZHJlc3MpCiB7CiAgICAgLy8gY2hlY2sgZWF4IGlzIGFu
IG9iamVjdCBvZiB0aGUgcmlnaHQgU3RydWN0dXJlSUQuCiAgICAgbV9qaXQudGVzdGxfaTMycihK
U0ltbWVkaWF0ZTo6VGFnTWFzaywgWDg2OjplYXgpOwpAQCAtMTgzMCw5ICsyMDUzLDkgQEAgdm9p
ZCogQ1RJOjpwcml2YXRlQ29tcGlsZVB1dEJ5SWRSZXBsYWNlKAogICAgIFg4NkFzc2VtYmxlcjo6
bGluayhjb2RlLCBmYWlsdXJlQ2FzZXMxLCByZWludGVycHJldF9jYXN0PHZvaWQqPihNYWNoaW5l
OjpjdGlfb3BfcHV0X2J5X2lkX2ZhaWwpKTsKICAgICBYODZBc3NlbWJsZXI6OmxpbmsoY29kZSwg
ZmFpbHVyZUNhc2VzMiwgcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oTWFjaGluZTo6Y3RpX29wX3B1
dF9ieV9pZF9mYWlsKSk7CiAKLSAgICBtX2NvZGVCbG9jay0+c3RydWN0dXJlSURBY2Nlc3NTdHVi
cy5hcHBlbmQoY29kZSk7CisgICAgbV9jb2RlQmxvY2stPmdldFN0dWJJbmZvKHJldHVybkFkZHJl
c3MpLnN0dWJSb3V0aW5lID0gY29kZTsKICAgICAKLSAgICByZXR1cm4gY29kZTsKKyAgICBjdGlS
ZXBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhyZXR1cm5BZGRyZXNzLCBjb2RlKTsKIH0KIAogZXh0
ZXJuICJDIiB7CkBAIC0xODY2LDcgKzIwODksNyBAQCBzdGF0aWMgaW5saW5lIGJvb2wgdHJhbnNp
dGlvbldpbGxOZWVkU3RvCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkKiBDVEk6OnByaXZh
dGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24oU3RydWN0dXJlSUQqIG9sZFN0cnVjdHVyZUlELCBT
dHJ1Y3R1cmVJRCogbmV3U3RydWN0dXJlSUQsIHNpemVfdCBjYWNoZWRPZmZzZXQsIFN0cnVjdHVy
ZUlEQ2hhaW4qIHNJREMpCit2b2lkIENUSTo6cHJpdmF0ZUNvbXBpbGVQdXRCeUlkVHJhbnNpdGlv
bihTdHJ1Y3R1cmVJRCogb2xkU3RydWN0dXJlSUQsIFN0cnVjdHVyZUlEKiBuZXdTdHJ1Y3R1cmVJ
RCwgc2l6ZV90IGNhY2hlZE9mZnNldCwgU3RydWN0dXJlSURDaGFpbiogc0lEQywgdm9pZCogcmV0
dXJuQWRkcmVzcykKIHsKICAgICBWZWN0b3I8WDg2QXNzZW1ibGVyOjpKbXBTcmMsIDE2PiBmYWls
dXJlQ2FzZXM7CiAgICAgLy8gY2hlY2sgZWF4IGlzIGFuIG9iamVjdCBvZiB0aGUgcmlnaHQgU3Ry
dWN0dXJlSUQuCkBAIC0xOTM3LDEyICsyMTYwLDEyIEBAIHZvaWQqIENUSTo6cHJpdmF0ZUNvbXBp
bGVQdXRCeUlkVHJhbnNpdGkKICAgICBpZiAodHJhbnNpdGlvbldpbGxOZWVkU3RvcmFnZVJlYWxs
b2Mob2xkU3RydWN0dXJlSUQsIG5ld1N0cnVjdHVyZUlEKSkKICAgICAgICAgWDg2QXNzZW1ibGVy
OjpsaW5rKGNvZGUsIGNhbGxUYXJnZXQsIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KHRyYW5zaXRp
b25PYmplY3QpKTsKICAgICAKLSAgICBtX2NvZGVCbG9jay0+c3RydWN0dXJlSURBY2Nlc3NTdHVi
cy5hcHBlbmQoY29kZSk7CisgICAgbV9jb2RlQmxvY2stPmdldFN0dWJJbmZvKHJldHVybkFkZHJl
c3MpLnN0dWJSb3V0aW5lID0gY29kZTsKICAgICAKLSAgICByZXR1cm4gY29kZTsKKyAgICBjdGlS
ZXBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhyZXR1cm5BZGRyZXNzLCBjb2RlKTsKIH0KIAotdm9p
ZCogQ1RJOjpwcml2YXRlQXJyYXlMZW5ndGhUcmFtcG9saW5lKCkKK3ZvaWQqIENUSTo6cHJpdmF0
ZUNvbXBpbGVBcnJheUxlbmd0aFRyYW1wb2xpbmUoKQogewogICAgIC8vIENoZWNrIGVheCBpcyBh
biBhcnJheQogICAgIG1faml0LnRlc3RsX2kzMnIoSlNJbW1lZGlhdGU6OlRhZ01hc2ssIFg4Njo6
ZWF4KTsKQEAgLTE5NzAsNyArMjE5Myw3IEBAIHZvaWQqIENUSTo6cHJpdmF0ZUFycmF5TGVuZ3Ro
VHJhbXBvbGluZSgKICAgICByZXR1cm4gY29kZTsKIH0KIAotdm9pZCogQ1RJOjpwcml2YXRlU3Ry
aW5nTGVuZ3RoVHJhbXBvbGluZSgpCit2b2lkKiBDVEk6OnByaXZhdGVDb21waWxlU3RyaW5nTGVu
Z3RoVHJhbXBvbGluZSgpCiB7CiAgICAgLy8gQ2hlY2sgZWF4IGlzIGEgc3RyaW5nCiAgICAgbV9q
aXQudGVzdGxfaTMycihKU0ltbWVkaWF0ZTo6VGFnTWFzaywgWDg2OjplYXgpOwpAQCAtMTk5OCw2
ICsyMjIxLDEyMiBAQCB2b2lkKiBDVEk6OnByaXZhdGVTdHJpbmdMZW5ndGhUcmFtcG9saW5lCiAg
ICAgcmV0dXJuIGNvZGU7CiB9CiAKK3ZvaWQgQ1RJOjpwYXRjaEdldEJ5SWRTZWxmKENvZGVCbG9j
ayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVJRCogc3RydWN0dXJlSUQsIHNpemVfdCBjYWNoZWRPZmZz
ZXQsIHZvaWQqIHJldHVybkFkZHJlc3MpCit7CisgICAgU3RydWN0dXJlU3R1YkluZm8mIGluZm8g
PSBjb2RlQmxvY2stPmdldFN0dWJJbmZvKHJldHVybkFkZHJlc3MpOworCisgICAgLy8gV2UgZG9u
J3Qgd2FudCB0byByZXBhdGNoIG1vcmUgdGhhbiBvbmNlIC0gaW4gZnV0dXJlIGdvIHRvIGN0aV9v
cF9nZXRfYnlfaWRfZ2VuZXJpYy4KKyAgICAvLyBTaG91bGQgcHJvYmFibHkgZ28gdG8gTWFjaGlu
ZTo6Y3RpX29wX2dldF9ieV9pZF9mYWlsLCBidXQgdGhhdCBkb2Vzbid0IGRvIGFueXRoaW5nIGlu
dGVyZXN0aW5nIHJpZ2h0IG5vdy4KKyAgICBjdGlSZXBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhy
ZXR1cm5BZGRyZXNzLCAodm9pZCopKE1hY2hpbmU6OmN0aV9vcF9nZXRfYnlfaWRfZ2VuZXJpYykp
OworCisgICAgLy8gUmVwYXRjaCB0aGUgb2Zmc2V0IGludG8gdGhlIHByb3BvZXJ0eSBtYXAgdG8g
bG9hZCBmcm9tLCB0aGVuIHJlcGF0Y2ggdGhlIFN0cnVjdHVyZUlEIHRvIGxvb2sgZm9yLgorICAg
ICgoaW50KikoKGNoYXIqKShpbmZvLmhvdFBhdGhCZWdpbikgKyBQUk9QRVJUWV9BQ0NFU1NfT0ZG
U0VUX0dFVF9PRkZTRVQpKVstMV0gPSBjYWNoZWRPZmZzZXQgKiBzaXplb2YoSlNWYWx1ZSopOwor
ICAgICgoaW50KikoKGNoYXIqKShpbmZvLmhvdFBhdGhCZWdpbikgKyBQUk9QRVJUWV9BQ0NFU1Nf
T0ZGU0VUX0dFVF9TVFJVQ1RVUkVJRCkpWy0xXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWludDMyX3Q+
KHN0cnVjdHVyZUlEKTsKK30KKwordm9pZCBDVEk6OnBhdGNoUHV0QnlJZFJlcGxhY2UoQ29kZUJs
b2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZUlEKiBzdHJ1Y3R1cmVJRCwgc2l6ZV90IGNhY2hlZE9m
ZnNldCwgdm9pZCogcmV0dXJuQWRkcmVzcykKK3sKKyAgICBTdHJ1Y3R1cmVTdHViSW5mbyYgaW5m
byA9IGNvZGVCbG9jay0+Z2V0U3R1YkluZm8ocmV0dXJuQWRkcmVzcyk7CisgICAgCisgICAgLy8g
V2UgZG9uJ3Qgd2FudCB0byByZXBhdGNoIG1vcmUgdGhhbiBvbmNlIC0gaW4gZnV0dXJlIGdvIHRv
IGN0aV9vcF9wdXRfYnlfaWRfZ2VuZXJpYy4KKyAgICAvLyBTaG91bGQgcHJvYmFibHkgZ28gdG8g
TWFjaGluZTo6Y3RpX29wX3B1dF9ieV9pZF9mYWlsLCBidXQgdGhhdCBkb2Vzbid0IGRvIGFueXRo
aW5nIGludGVyZXN0aW5nIHJpZ2h0IG5vdy4KKyAgICBjdGlSZXBhdGNoQ2FsbEJ5UmV0dXJuQWRk
cmVzcyhyZXR1cm5BZGRyZXNzLCAodm9pZCopKE1hY2hpbmU6OmN0aV9vcF9wdXRfYnlfaWRfZ2Vu
ZXJpYykpOworCisgICAgLy8gUmVwYXRjaCB0aGUgb2Zmc2V0IGludG8gdGhlIHByb3BvZXJ0eSBt
YXAgdG8gbG9hZCBmcm9tLCB0aGVuIHJlcGF0Y2ggdGhlIFN0cnVjdHVyZUlEIHRvIGxvb2sgZm9y
LgorICAgICgoaW50KikoKGNoYXIqKShpbmZvLmhvdFBhdGhCZWdpbikgKyBQUk9QRVJUWV9BQ0NF
U1NfT0ZGU0VUX1BVVF9PRkZTRVQpKVstMV0gPSBjYWNoZWRPZmZzZXQgKiBzaXplb2YoSlNWYWx1
ZSopOworICAgICgoaW50KikoKGNoYXIqKShpbmZvLmhvdFBhdGhCZWdpbikgKyBQUk9QRVJUWV9B
Q0NFU1NfT0ZGU0VUX1BVVF9TVFJVQ1RVUkVJRCkpWy0xXSA9IHJlaW50ZXJwcmV0X2Nhc3Q8dWlu
dDMyX3Q+KHN0cnVjdHVyZUlEKTsKK30KKwordm9pZCBDVEk6OnByaXZhdGVDb21waWxlUGF0Y2hH
ZXRBcnJheUxlbmd0aCh2b2lkKiByZXR1cm5BZGRyZXNzKQoreworICAgIFN0cnVjdHVyZVN0dWJJ
bmZvJiBpbmZvID0gbV9jb2RlQmxvY2stPmdldFN0dWJJbmZvKHJldHVybkFkZHJlc3MpOworCisg
ICAgLy8gV2UgZG9uJ3Qgd2FudCB0byByZXBhdGNoIG1vcmUgdGhhbiBvbmNlIC0gaW4gZnV0dXJl
IGdvIHRvIGN0aV9vcF9wdXRfYnlfaWRfZ2VuZXJpYy4KKyAgICBjdGlSZXBhdGNoQ2FsbEJ5UmV0
dXJuQWRkcmVzcyhyZXR1cm5BZGRyZXNzLCAodm9pZCopKE1hY2hpbmU6OmN0aV9vcF9nZXRfYnlf
aWRfZmFpbCkpOworCisgICAgLy8gQ2hlY2sgZWF4IGlzIGFuIGFycmF5CisgICAgbV9qaXQudGVz
dGxfaTMycihKU0ltbWVkaWF0ZTo6VGFnTWFzaywgWDg2OjplYXgpOworICAgIFg4NkFzc2VtYmxl
cjo6Sm1wU3JjIGZhaWx1cmVDYXNlczEgPSBtX2ppdC5lbWl0VW5saW5rZWRKbmUoKTsKKyAgICBt
X2ppdC5jbXBsX2kzMm0ocmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZD4obV9tYWNoaW5lLT5tX2pz
QXJyYXlWcHRyKSwgWDg2OjplYXgpOworICAgIFg4NkFzc2VtYmxlcjo6Sm1wU3JjIGZhaWx1cmVD
YXNlczIgPSBtX2ppdC5lbWl0VW5saW5rZWRKbmUoKTsKKworICAgIC8vIENoZWNrcyBvdXQgb2th
eSEgLSBnZXQgdGhlIGxlbmd0aCBmcm9tIHRoZSBzdG9yYWdlCisgICAgbV9qaXQubW92bF9tcihP
QkpFQ1RfT0ZGU0VUKEpTQXJyYXksIG1fc3RvcmFnZSksIFg4Njo6ZWF4LCBYODY6OmVjeCk7Cisg
ICAgbV9qaXQubW92bF9tcihPQkpFQ1RfT0ZGU0VUKEFycmF5U3RvcmFnZSwgbV9sZW5ndGgpLCBY
ODY6OmVjeCwgWDg2OjplY3gpOworCisgICAgbV9qaXQuYWRkbF9ycihYODY6OmVjeCwgWDg2Ojpl
Y3gpOworICAgIFg4NkFzc2VtYmxlcjo6Sm1wU3JjIGZhaWx1cmVDYXNlczMgPSBtX2ppdC5lbWl0
VW5saW5rZWRKbygpOworICAgIG1faml0LmFkZGxfaThyKDEsIFg4Njo6ZWN4KTsKKworICAgIFg4
NkFzc2VtYmxlcjo6Sm1wU3JjIHN1Y2Nlc3MgPSBtX2ppdC5lbWl0VW5saW5rZWRKbXAoKTsKKwor
ICAgIHZvaWQqIGNvZGUgPSBtX2ppdC5jb3B5KCk7CisgICAgQVNTRVJUKGNvZGUpOworCisgICAg
Ly8gVXNlIHRoZSByZXBhdGNoIGluZm9ybWF0aW9uIHRvIGxpbmsgdGhlIGZhaWx1cmUgY2FzZXMg
YmFjayB0byB0aGUgb3JpZ2luYWwgc2xvdyBjYXNlIHJvdXRpbmUuCisgICAgdm9pZCogc2xvd0Nh
c2VCZWdpbiA9IChjaGFyKikoaW5mby5jYWxsUmV0dXJuTG9jYXRpb24pIC0gUFJPUEVSVFlfQUND
RVNTX09GRlNFVF9HRVRfU0xPV19DQUxMOworICAgIFg4NkFzc2VtYmxlcjo6bGluayhjb2RlLCBm
YWlsdXJlQ2FzZXMxLCBzbG93Q2FzZUJlZ2luKTsKKyAgICBYODZBc3NlbWJsZXI6OmxpbmsoY29k
ZSwgZmFpbHVyZUNhc2VzMiwgc2xvd0Nhc2VCZWdpbik7CisgICAgWDg2QXNzZW1ibGVyOjpsaW5r
KGNvZGUsIGZhaWx1cmVDYXNlczMsIHNsb3dDYXNlQmVnaW4pOworCisgICAgLy8gT24gc3VjY2Vz
cyByZXR1cm4gYmFjayB0byB0aGUgaG90IHBhdGNoIGNvZGUsIGF0IGEgcG9pbnQgaXQgd2lsbCBw
ZXJmb3JtIHRoZSBzdG9yZSB0byBkZXN0IGZvciB1cy4KKyAgICBpbnRwdHJfdCBzdWNjZXNzRGVz
dCA9IChpbnRwdHJfdCkoaW5mby5ob3RQYXRoQmVnaW4pICsgUFJPUEVSVFlfQUNDRVNTX09GRlNF
VF9HRVRfT0ZGU0VUOworICAgIFg4NkFzc2VtYmxlcjo6bGluayhjb2RlLCBzdWNjZXNzLCAodm9p
ZCopc3VjY2Vzc0Rlc3QpOworCisgICAgLy8gVHJhY2sgdGhlIHN0dWIgd2UgaGF2ZSBjcmVhdGVk
IHNvIHRoYXQgaXQgd2lsbCBiZSBkZWxldGVkIGxhdGVyLgorICAgIG1fY29kZUJsb2NrLT5nZXRT
dHViSW5mbyhyZXR1cm5BZGRyZXNzKS5zdHViUm91dGluZSA9IGNvZGU7CisKKyAgICAvLyBGaW5h
bGx5IHJlcGF0Y2ggdGhlIGp1bXAgdG8gc293IGNhc2UgYmFjayBpbiB0aGUgaG90IHBhdGggdG8g
anVtcCBoZXJlIGluc3RlYWQuCisgICAgLy8gRklYTUU6IHNob3VsZCByZXZlcnQgdGhpcyByZXBh
dGNoaW5nLCBvbiBmYWlsdXJlLgorICAgIHZvaWQqIGptcExvY2F0aW9uID0gKGNoYXIqKShpbmZv
LmhvdFBhdGhCZWdpbikgKyBQUk9QRVJUWV9BQ0NFU1NfT0ZGU0VUX0dFVF9KTVA7CisgICAgKChp
bnRwdHJfdCopam1wTG9jYXRpb24pWy0xXSA9IChpbnRwdHJfdCljb2RlIC0gKGludHB0cl90KWpt
cExvY2F0aW9uOworfQorCit2b2lkIENUSTo6cHJpdmF0ZUNvbXBpbGVQYXRjaEdldFN0cmluZ0xl
bmd0aCh2b2lkKiByZXR1cm5BZGRyZXNzKQoreworICAgIFN0cnVjdHVyZVN0dWJJbmZvJiBpbmZv
ID0gbV9jb2RlQmxvY2stPmdldFN0dWJJbmZvKHJldHVybkFkZHJlc3MpOworCisgICAgLy8gV2Ug
ZG9uJ3Qgd2FudCB0byByZXBhdGNoIG1vcmUgdGhhbiBvbmNlIC0gaW4gZnV0dXJlIGdvIHRvIGN0
aV9vcF9wdXRfYnlfaWRfZ2VuZXJpYy4KKyAgICBjdGlSZXBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVz
cyhyZXR1cm5BZGRyZXNzLCAodm9pZCopKE1hY2hpbmU6OmN0aV9vcF9nZXRfYnlfaWRfZmFpbCkp
OworCisgICAgLy8gQ2hlY2sgZWF4IGlzIGEgc3RyaW5nCisgICAgbV9qaXQudGVzdGxfaTMycihK
U0ltbWVkaWF0ZTo6VGFnTWFzaywgWDg2OjplYXgpOworICAgIFg4NkFzc2VtYmxlcjo6Sm1wU3Jj
IGZhaWx1cmVDYXNlczEgPSBtX2ppdC5lbWl0VW5saW5rZWRKbmUoKTsKKyAgICBtX2ppdC5jbXBs
X2kzMm0ocmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZD4obV9tYWNoaW5lLT5tX2pzU3RyaW5nVnB0
ciksIFg4Njo6ZWF4KTsKKyAgICBYODZBc3NlbWJsZXI6OkptcFNyYyBmYWlsdXJlQ2FzZXMyID0g
bV9qaXQuZW1pdFVubGlua2VkSm5lKCk7CisKKyAgICAvLyBDaGVja3Mgb3V0IG9rYXkhIC0gZ2V0
IHRoZSBsZW5ndGggZnJvbSB0aGUgc3RvcmFnZQorICAgIG1faml0Lm1vdmxfbXIoT0JKRUNUX09G
RlNFVChKU1N0cmluZywgbV92YWx1ZSkgKyBPQkpFQ1RfT0ZGU0VUKFVTdHJpbmcsIG1fcmVwKSwg
WDg2OjplYXgsIFg4Njo6ZWN4KTsKKyAgICBtX2ppdC5tb3ZsX21yKE9CSkVDVF9PRkZTRVQoVVN0
cmluZzo6UmVwLCBsZW4pLCBYODY6OmVjeCwgWDg2OjplY3gpOworCisgICAgbV9qaXQuYWRkbF9y
cihYODY6OmVjeCwgWDg2OjplY3gpOworICAgIFg4NkFzc2VtYmxlcjo6Sm1wU3JjIGZhaWx1cmVD
YXNlczMgPSBtX2ppdC5lbWl0VW5saW5rZWRKbygpOworICAgIG1faml0LmFkZGxfaThyKDEsIFg4
Njo6ZWN4KTsKKworICAgIFg4NkFzc2VtYmxlcjo6Sm1wU3JjIHN1Y2Nlc3MgPSBtX2ppdC5lbWl0
VW5saW5rZWRKbXAoKTsKKworICAgIHZvaWQqIGNvZGUgPSBtX2ppdC5jb3B5KCk7CisgICAgQVNT
RVJUKGNvZGUpOworCisgICAgLy8gVXNlIHRoZSByZXBhdGNoIGluZm9ybWF0aW9uIHRvIGxpbmsg
dGhlIGZhaWx1cmUgY2FzZXMgYmFjayB0byB0aGUgb3JpZ2luYWwgc2xvdyBjYXNlIHJvdXRpbmUu
CisgICAgdm9pZCogc2xvd0Nhc2VCZWdpbiA9IChjaGFyKikoaW5mby5jYWxsUmV0dXJuTG9jYXRp
b24pIC0gUFJPUEVSVFlfQUNDRVNTX09GRlNFVF9HRVRfU0xPV19DQUxMOworICAgIFg4NkFzc2Vt
Ymxlcjo6bGluayhjb2RlLCBmYWlsdXJlQ2FzZXMxLCBzbG93Q2FzZUJlZ2luKTsKKyAgICBYODZB
c3NlbWJsZXI6OmxpbmsoY29kZSwgZmFpbHVyZUNhc2VzMiwgc2xvd0Nhc2VCZWdpbik7CisgICAg
WDg2QXNzZW1ibGVyOjpsaW5rKGNvZGUsIGZhaWx1cmVDYXNlczMsIHNsb3dDYXNlQmVnaW4pOwor
CisgICAgLy8gT24gc3VjY2VzcyByZXR1cm4gYmFjayB0byB0aGUgaG90IHBhdGNoIGNvZGUsIGF0
IGEgcG9pbnQgaXQgd2lsbCBwZXJmb3JtIHRoZSBzdG9yZSB0byBkZXN0IGZvciB1cy4KKyAgICBp
bnRwdHJfdCBzdWNjZXNzRGVzdCA9IChpbnRwdHJfdCkoaW5mby5ob3RQYXRoQmVnaW4pICsgUFJP
UEVSVFlfQUNDRVNTX09GRlNFVF9HRVRfT0ZGU0VUOworICAgIFg4NkFzc2VtYmxlcjo6bGluayhj
b2RlLCBzdWNjZXNzLCAodm9pZCopc3VjY2Vzc0Rlc3QpOworCisgICAgLy8gVHJhY2sgdGhlIHN0
dWIgd2UgaGF2ZSBjcmVhdGVkIHNvIHRoYXQgaXQgd2lsbCBiZSBkZWxldGVkIGxhdGVyLgorICAg
IG1fY29kZUJsb2NrLT5nZXRTdHViSW5mbyhyZXR1cm5BZGRyZXNzKS5zdHViUm91dGluZSA9IGNv
ZGU7CisKKyAgICAvLyBGaW5hbGx5IHJlcGF0Y2ggdGhlIGp1bXAgdG8gc293IGNhc2UgYmFjayBp
biB0aGUgaG90IHBhdGggdG8ganVtcCBoZXJlIGluc3RlYWQuCisgICAgLy8gRklYTUU6IHNob3Vs
ZCBwcm9iYWJseSByZXZlcnQgdGhpcyByZXBhdGNoaW5nLCBvbiBmYWlsdXJlLgorICAgIHZvaWQq
IGptcExvY2F0aW9uID0gKGNoYXIqKShpbmZvLmhvdFBhdGhCZWdpbikgKyBQUk9QRVJUWV9BQ0NF
U1NfT0ZGU0VUX0dFVF9KTVA7CisgICAgKChpbnRwdHJfdCopam1wTG9jYXRpb24pWy0xXSA9IChp
bnRwdHJfdCljb2RlIC0gKGludHB0cl90KWptcExvY2F0aW9uOworfQorCiB2b2lkIENUSTo6ZW1p
dEdldFZhcmlhYmxlT2JqZWN0UmVnaXN0ZXIoWDg2QXNzZW1ibGVyOjpSZWdpc3RlcklEIHZhcmlh
YmxlT2JqZWN0LCBpbnQgaW5kZXgsIFg4NkFzc2VtYmxlcjo6UmVnaXN0ZXJJRCBkc3QpCiB7CiAg
ICAgbV9qaXQubW92bF9tcihKU1ZhcmlhYmxlT2JqZWN0OjpvZmZzZXRPZl9kKCksIHZhcmlhYmxl
T2JqZWN0LCBkc3QpOwpJbmRleDogSmF2YVNjcmlwdENvcmUvVk0vQ1RJLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gSmF2YVNjcmlwdENvcmUvVk0vQ1RJLmgJKHJldmlzaW9uIDM2NDAzKQorKysgSmF2YVNjcmlw
dENvcmUvVk0vQ1RJLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDYgKzI4LDggQEAKIAogI2lmIEVO
QUJMRShDVEkpCiAKKyNkZWZpbmUgV1RGX1VTRV9DVElfUkVQQVRDSF9QSUMgMQorCiAjaW5jbHVk
ZSAiT3Bjb2RlLmgiCiAjaW5jbHVkZSAiUmVnaXN0ZXJGaWxlLmgiCiAjaW5jbHVkZSA8bWFzbS9Y
ODZBc3NlbWJsZXIuaD4KQEAgLTIxNiw2ICsyMTgsMTEgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAg
ICAgIH0KICAgICB9OwogCisgICAgc3RydWN0IFN0cnVjdHVyZVN0dWJDb21waWxhdGlvbkluZm8g
eworICAgICAgICBYODZBc3NlbWJsZXI6OkptcFNyYyBjYWxsUmV0dXJuTG9jYXRpb247CisgICAg
ICAgIFg4NkFzc2VtYmxlcjo6Sm1wRHN0IGhvdFBhdGhCZWdpbjsKKyAgICB9OworCiAgICAgZXh0
ZXJuICJDIiB7CiAgICAgICAgIEpTVmFsdWUqIGN0aVRyYW1wb2xpbmUodm9pZCogY29kZSwgRXhl
Y1N0YXRlKiBleGVjLCBSZWdpc3RlckZpbGUqIHJlZ2lzdGVyRmlsZSwgUmVnaXN0ZXIqIHIsIFNj
b3BlQ2hhaW5Ob2RlKiBzY29wZUNoYWluLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgSlNWYWx1ZSoq
IGV4Y2VwdGlvbiwgUHJvZmlsZXIqKik7CiAgICAgICAgIHZvaWQgY3RpVk1UaHJvd1RyYW1wb2xp
bmUoKTsKQEAgLTIzNiw0NiArMjQzLDYwIEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0
aWMgdm9pZCogY29tcGlsZVJlZ0V4cChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IFVTdHJpbmcmIHBh
dHRlcm4sIHVuc2lnbmVkKiBudW1TdWJwYXR0ZXJuc19wdHIsIGNvbnN0IGNoYXIqKiBlcnJvcl9w
dHIsIGJvb2wgaWdub3JlQ2FzZSA9IGZhbHNlLCBib29sIG11bHRpbGluZSA9IGZhbHNlKTsKICNl
bmRpZgogCi0gICAgICAgIHN0YXRpYyB2b2lkKiBjb21waWxlR2V0QnlJZFNlbGYoTWFjaGluZSog
bWFjaGluZSwgRXhlY1N0YXRlKiBleGVjLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJl
SUQqIHN0cnVjdHVyZUlELCBzaXplX3QgY2FjaGVkT2Zmc2V0KQorICAgICAgICBzdGF0aWMgdm9p
ZCBjb21waWxlR2V0QnlJZFNlbGYoTWFjaGluZSogbWFjaGluZSwgRXhlY1N0YXRlKiBleGVjLCBD
b2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlSUQqIHN0cnVjdHVyZUlELCBzaXplX3QgY2Fj
aGVkT2Zmc2V0LCB2b2lkKiByZXR1cm5BZGRyZXNzKQogICAgICAgICB7CiAgICAgICAgICAgICBD
VEkgY3RpKG1hY2hpbmUsIGV4ZWMsIGNvZGVCbG9jayk7Ci0gICAgICAgICAgICByZXR1cm4gY3Rp
LnByaXZhdGVDb21waWxlR2V0QnlJZFNlbGYoc3RydWN0dXJlSUQsIGNhY2hlZE9mZnNldCk7Cisg
ICAgICAgICAgICBjdGkucHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZihzdHJ1Y3R1cmVJRCwgY2Fj
aGVkT2Zmc2V0LCByZXR1cm5BZGRyZXNzKTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyB2
b2lkKiBjb21waWxlR2V0QnlJZFByb3RvKE1hY2hpbmUqIG1hY2hpbmUsIEV4ZWNTdGF0ZSogZXhl
YywgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZUlEKiBzdHJ1Y3R1cmVJRCwgU3RydWN0
dXJlSUQqIHByb3RvdHlwZVN0cnVjdHVyZUlELCBzaXplX3QgY2FjaGVkT2Zmc2V0KQorICAgICAg
ICBzdGF0aWMgdm9pZCBjb21waWxlR2V0QnlJZFByb3RvKE1hY2hpbmUqIG1hY2hpbmUsIEV4ZWNT
dGF0ZSogZXhlYywgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZUlEKiBzdHJ1Y3R1cmVJ
RCwgU3RydWN0dXJlSUQqIHByb3RvdHlwZVN0cnVjdHVyZUlELCBzaXplX3QgY2FjaGVkT2Zmc2V0
LCB2b2lkKiByZXR1cm5BZGRyZXNzKQogICAgICAgICB7CiAgICAgICAgICAgICBDVEkgY3RpKG1h
Y2hpbmUsIGV4ZWMsIGNvZGVCbG9jayk7Ci0gICAgICAgICAgICByZXR1cm4gY3RpLnByaXZhdGVD
b21waWxlR2V0QnlJZFByb3RvKGV4ZWMsIHN0cnVjdHVyZUlELCBwcm90b3R5cGVTdHJ1Y3R1cmVJ
RCwgY2FjaGVkT2Zmc2V0KTsKKyAgICAgICAgICAgIGN0aS5wcml2YXRlQ29tcGlsZUdldEJ5SWRQ
cm90byhzdHJ1Y3R1cmVJRCwgcHJvdG90eXBlU3RydWN0dXJlSUQsIGNhY2hlZE9mZnNldCwgcmV0
dXJuQWRkcmVzcyk7CiAgICAgICAgIH0KIAotICAgICAgICBzdGF0aWMgdm9pZCogY29tcGlsZUdl
dEJ5SWRDaGFpbihNYWNoaW5lKiBtYWNoaW5lLCBFeGVjU3RhdGUqIGV4ZWMsIENvZGVCbG9jayog
Y29kZUJsb2NrLCBTdHJ1Y3R1cmVJRCogc3RydWN0dXJlSUQsIFN0cnVjdHVyZUlEQ2hhaW4qIGNo
YWluLCBzaXplX3QgY291bnQsIHNpemVfdCBjYWNoZWRPZmZzZXQpCisgICAgICAgIHN0YXRpYyB2
b2lkIGNvbXBpbGVHZXRCeUlkQ2hhaW4oTWFjaGluZSogbWFjaGluZSwgRXhlY1N0YXRlKiBleGVj
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlSUQqIHN0cnVjdHVyZUlELCBTdHJ1Y3R1
cmVJRENoYWluKiBjaGFpbiwgc2l6ZV90IGNvdW50LCBzaXplX3QgY2FjaGVkT2Zmc2V0LCB2b2lk
KiByZXR1cm5BZGRyZXNzKQogICAgICAgICB7CiAgICAgICAgICAgICBDVEkgY3RpKG1hY2hpbmUs
IGV4ZWMsIGNvZGVCbG9jayk7Ci0gICAgICAgICAgICByZXR1cm4gY3RpLnByaXZhdGVDb21waWxl
R2V0QnlJZENoYWluKGV4ZWMsIHN0cnVjdHVyZUlELCBjaGFpbiwgY291bnQsIGNhY2hlZE9mZnNl
dCk7CisgICAgICAgICAgICBjdGkucHJpdmF0ZUNvbXBpbGVHZXRCeUlkQ2hhaW4oc3RydWN0dXJl
SUQsIGNoYWluLCBjb3VudCwgY2FjaGVkT2Zmc2V0LCByZXR1cm5BZGRyZXNzKTsKICAgICAgICAg
fQogCi0gICAgICAgIHN0YXRpYyB2b2lkKiBjb21waWxlUHV0QnlJZFJlcGxhY2UoTWFjaGluZSog
bWFjaGluZSwgRXhlY1N0YXRlKiBleGVjLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJl
SUQqIHN0cnVjdHVyZUlELCBzaXplX3QgY2FjaGVkT2Zmc2V0KQorICAgICAgICBzdGF0aWMgdm9p
ZCBjb21waWxlUHV0QnlJZFJlcGxhY2UoTWFjaGluZSogbWFjaGluZSwgRXhlY1N0YXRlKiBleGVj
LCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgU3RydWN0dXJlSUQqIHN0cnVjdHVyZUlELCBzaXplX3Qg
Y2FjaGVkT2Zmc2V0LCB2b2lkKiByZXR1cm5BZGRyZXNzKQogICAgICAgICB7CiAgICAgICAgICAg
ICBDVEkgY3RpKG1hY2hpbmUsIGV4ZWMsIGNvZGVCbG9jayk7Ci0gICAgICAgICAgICByZXR1cm4g
Y3RpLnByaXZhdGVDb21waWxlUHV0QnlJZFJlcGxhY2Uoc3RydWN0dXJlSUQsIGNhY2hlZE9mZnNl
dCk7CisgICAgICAgICAgICBjdGkucHJpdmF0ZUNvbXBpbGVQdXRCeUlkUmVwbGFjZShzdHJ1Y3R1
cmVJRCwgY2FjaGVkT2Zmc2V0LCByZXR1cm5BZGRyZXNzKTsKICAgICAgICAgfQogICAgICAgICAK
LSAgICAgICAgc3RhdGljIHZvaWQqIGNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbihNYWNoaW5lKiBt
YWNoaW5lLCBFeGVjU3RhdGUqIGV4ZWMsIENvZGVCbG9jayogY29kZUJsb2NrLCBTdHJ1Y3R1cmVJ
RCogb2xkU3RydWN0dXJlSUQsIFN0cnVjdHVyZUlEKiBuZXdTdHJ1Y3R1cmVJRCwgc2l6ZV90IGNh
Y2hlZE9mZnNldCwgU3RydWN0dXJlSURDaGFpbiogc0lEQykKKyAgICAgICAgc3RhdGljIHZvaWQg
Y29tcGlsZVB1dEJ5SWRUcmFuc2l0aW9uKE1hY2hpbmUqIG1hY2hpbmUsIEV4ZWNTdGF0ZSogZXhl
YywgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZUlEKiBvbGRTdHJ1Y3R1cmVJRCwgU3Ry
dWN0dXJlSUQqIG5ld1N0cnVjdHVyZUlELCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBTdHJ1Y3R1cmVJ
RENoYWluKiBzSURDLCB2b2lkKiByZXR1cm5BZGRyZXNzKQogICAgICAgICB7CiAgICAgICAgICAg
ICBDVEkgY3RpKG1hY2hpbmUsIGV4ZWMsIGNvZGVCbG9jayk7Ci0gICAgICAgICAgICByZXR1cm4g
Y3RpLnByaXZhdGVDb21waWxlUHV0QnlJZFRyYW5zaXRpb24ob2xkU3RydWN0dXJlSUQsIG5ld1N0
cnVjdHVyZUlELCBjYWNoZWRPZmZzZXQsIHNJREMpOworICAgICAgICAgICAgY3RpLnByaXZhdGVD
b21waWxlUHV0QnlJZFRyYW5zaXRpb24ob2xkU3RydWN0dXJlSUQsIG5ld1N0cnVjdHVyZUlELCBj
YWNoZWRPZmZzZXQsIHNJREMsIHJldHVybkFkZHJlc3MpOwogICAgICAgICB9CiAKICAgICAgICAg
c3RhdGljIHZvaWQqIGNvbXBpbGVBcnJheUxlbmd0aFRyYW1wb2xpbmUoTWFjaGluZSogbWFjaGlu
ZSwgRXhlY1N0YXRlKiBleGVjLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykKICAgICAgICAgewogICAg
ICAgICAgICAgQ1RJIGN0aShtYWNoaW5lLCBleGVjLCBjb2RlQmxvY2spOwotICAgICAgICAgICAg
cmV0dXJuIGN0aS5wcml2YXRlQXJyYXlMZW5ndGhUcmFtcG9saW5lKCk7CisgICAgICAgICAgICBy
ZXR1cm4gY3RpLnByaXZhdGVDb21waWxlQXJyYXlMZW5ndGhUcmFtcG9saW5lKCk7CiAgICAgICAg
IH0KIAogICAgICAgICBzdGF0aWMgdm9pZCogY29tcGlsZVN0cmluZ0xlbmd0aFRyYW1wb2xpbmUo
TWFjaGluZSogbWFjaGluZSwgRXhlY1N0YXRlKiBleGVjLCBDb2RlQmxvY2sqIGNvZGVCbG9jaykK
ICAgICAgICAgewogICAgICAgICAgICAgQ1RJIGN0aShtYWNoaW5lLCBleGVjLCBjb2RlQmxvY2sp
OwotICAgICAgICAgICAgcmV0dXJuIGN0aS5wcml2YXRlU3RyaW5nTGVuZ3RoVHJhbXBvbGluZSgp
OworICAgICAgICAgICAgcmV0dXJuIGN0aS5wcml2YXRlQ29tcGlsZVN0cmluZ0xlbmd0aFRyYW1w
b2xpbmUoKTsKKyAgICAgICAgfQorCisgICAgICAgIHN0YXRpYyB2b2lkIHBhdGNoR2V0QnlJZFNl
bGYoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZUlEKiBzdHJ1Y3R1cmVJRCwgc2l6ZV90
IGNhY2hlZE9mZnNldCwgdm9pZCogcmV0dXJuQWRkcmVzcyk7CisgICAgICAgIHN0YXRpYyB2b2lk
IHBhdGNoUHV0QnlJZFJlcGxhY2UoQ29kZUJsb2NrKiBjb2RlQmxvY2ssIFN0cnVjdHVyZUlEKiBz
dHJ1Y3R1cmVJRCwgc2l6ZV90IGNhY2hlZE9mZnNldCwgdm9pZCogcmV0dXJuQWRkcmVzcyk7CisK
KyAgICAgICAgc3RhdGljIHZvaWQgY29tcGlsZVBhdGNoR2V0QXJyYXlMZW5ndGgoTWFjaGluZSog
bWFjaGluZSwgRXhlY1N0YXRlKiBleGVjLCBDb2RlQmxvY2sqIGNvZGVCbG9jaywgdm9pZCogcmV0
dXJuQWRkcmVzcykKKyAgICAgICAgeworICAgICAgICAgICAgQ1RJIGN0aShtYWNoaW5lLCBleGVj
LCBjb2RlQmxvY2spOworICAgICAgICAgICAgcmV0dXJuIGN0aS5wcml2YXRlQ29tcGlsZVBhdGNo
R2V0QXJyYXlMZW5ndGgocmV0dXJuQWRkcmVzcyk7CisgICAgICAgIH0KKyAgICAgICAgc3RhdGlj
IHZvaWQgY29tcGlsZVBhdGNoR2V0U3RyaW5nTGVuZ3RoKE1hY2hpbmUqIG1hY2hpbmUsIEV4ZWNT
dGF0ZSogZXhlYywgQ29kZUJsb2NrKiBjb2RlQmxvY2ssIHZvaWQqIHJldHVybkFkZHJlc3MpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIENUSSBjdGkobWFjaGluZSwgZXhlYywgY29kZUJsb2NrKTsK
KyAgICAgICAgICAgIHJldHVybiBjdGkucHJpdmF0ZUNvbXBpbGVQYXRjaEdldFN0cmluZ0xlbmd0
aChyZXR1cm5BZGRyZXNzKTsKICAgICAgICAgfQogCiAgICAgICAgIGlubGluZSBzdGF0aWMgSlNW
YWx1ZSogZXhlY3V0ZSh2b2lkKiBjb2RlLCBFeGVjU3RhdGUqIGV4ZWMsIFJlZ2lzdGVyRmlsZSog
cmVnaXN0ZXJGaWxlLCBSZWdpc3RlciogciwgU2NvcGVDaGFpbk5vZGUqIHNjb3BlQ2hhaW4sIENv
ZGVCbG9jayogY29kZUJsb2NrLCBKU1ZhbHVlKiogZXhjZXB0aW9uKQpAQCAtMjkzLDEzICszMTQs
MTcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVMaW5rUGFz
cygpOwogICAgICAgICB2b2lkIHByaXZhdGVDb21waWxlU2xvd0Nhc2VzKCk7CiAgICAgICAgIHZv
aWQgcHJpdmF0ZUNvbXBpbGUoKTsKLSAgICAgICAgdm9pZCogcHJpdmF0ZUNvbXBpbGVHZXRCeUlk
U2VsZihTdHJ1Y3R1cmVJRCosIHNpemVfdCBjYWNoZWRPZmZzZXQpOwotICAgICAgICB2b2lkKiBw
cml2YXRlQ29tcGlsZUdldEJ5SWRQcm90byhFeGVjU3RhdGUqLCBTdHJ1Y3R1cmVJRCosIFN0cnVj
dHVyZUlEKiBwcm90b3R5cGVTdHJ1Y3R1cmVJRCwgc2l6ZV90IGNhY2hlZE9mZnNldCk7Ci0gICAg
ICAgIHZvaWQqIHByaXZhdGVDb21waWxlR2V0QnlJZENoYWluKEV4ZWNTdGF0ZSosIFN0cnVjdHVy
ZUlEKiwgU3RydWN0dXJlSURDaGFpbiosIHNpemVfdCBjb3VudCwgc2l6ZV90IGNhY2hlZE9mZnNl
dCk7Ci0gICAgICAgIHZvaWQqIHByaXZhdGVDb21waWxlUHV0QnlJZFJlcGxhY2UoU3RydWN0dXJl
SUQqLCBzaXplX3QgY2FjaGVkT2Zmc2V0KTsKLSAgICAgICAgdm9pZCogcHJpdmF0ZUNvbXBpbGVQ
dXRCeUlkVHJhbnNpdGlvbihTdHJ1Y3R1cmVJRCosIFN0cnVjdHVyZUlEKiwgc2l6ZV90IGNhY2hl
ZE9mZnNldCwgU3RydWN0dXJlSURDaGFpbiopOwotICAgICAgICB2b2lkKiBwcml2YXRlQXJyYXlM
ZW5ndGhUcmFtcG9saW5lKCk7Ci0gICAgICAgIHZvaWQqIHByaXZhdGVTdHJpbmdMZW5ndGhUcmFt
cG9saW5lKCk7CisgICAgICAgIHZvaWQgcHJpdmF0ZUNvbXBpbGVHZXRCeUlkU2VsZihTdHJ1Y3R1
cmVJRCosIHNpemVfdCBjYWNoZWRPZmZzZXQsIHZvaWQqIHJldHVybkFkZHJlc3MpOworICAgICAg
ICB2b2lkIHByaXZhdGVDb21waWxlR2V0QnlJZFByb3RvKFN0cnVjdHVyZUlEKiwgU3RydWN0dXJl
SUQqIHByb3RvdHlwZVN0cnVjdHVyZUlELCBzaXplX3QgY2FjaGVkT2Zmc2V0LCB2b2lkKiByZXR1
cm5BZGRyZXNzKTsKKyAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZUdldEJ5SWRDaGFpbihTdHJ1
Y3R1cmVJRCosIFN0cnVjdHVyZUlEQ2hhaW4qLCBzaXplX3QgY291bnQsIHNpemVfdCBjYWNoZWRP
ZmZzZXQsIHZvaWQqIHJldHVybkFkZHJlc3MpOworICAgICAgICB2b2lkIHByaXZhdGVDb21waWxl
UHV0QnlJZFJlcGxhY2UoU3RydWN0dXJlSUQqLCBzaXplX3QgY2FjaGVkT2Zmc2V0LCB2b2lkKiBy
ZXR1cm5BZGRyZXNzKTsKKyAgICAgICAgdm9pZCBwcml2YXRlQ29tcGlsZVB1dEJ5SWRUcmFuc2l0
aW9uKFN0cnVjdHVyZUlEKiwgU3RydWN0dXJlSUQqLCBzaXplX3QgY2FjaGVkT2Zmc2V0LCBTdHJ1
Y3R1cmVJRENoYWluKiwgdm9pZCogcmV0dXJuQWRkcmVzcyk7CisKKyAgICAgICAgdm9pZCogcHJp
dmF0ZUNvbXBpbGVBcnJheUxlbmd0aFRyYW1wb2xpbmUoKTsKKyAgICAgICAgdm9pZCogcHJpdmF0
ZUNvbXBpbGVTdHJpbmdMZW5ndGhUcmFtcG9saW5lKCk7CisKKyAgICAgICAgdm9pZCBwcml2YXRl
Q29tcGlsZVBhdGNoR2V0QXJyYXlMZW5ndGgodm9pZCogcmV0dXJuQWRkcmVzcyk7CisgICAgICAg
IHZvaWQgcHJpdmF0ZUNvbXBpbGVQYXRjaEdldFN0cmluZ0xlbmd0aCh2b2lkKiByZXR1cm5BZGRy
ZXNzKTsKIAogICAgICAgICBlbnVtIENvbXBpbGVPcENhbGxUeXBlIHsgT3BDYWxsTm9ybWFsLCBP
cENhbGxFdmFsLCBPcENvbnN0cnVjdCB9OwogICAgICAgICB2b2lkIGNvbXBpbGVPcENhbGwoSW5z
dHJ1Y3Rpb24qIGluc3RydWN0aW9uLCB1bnNpZ25lZCBpLCBDb21waWxlT3BDYWxsVHlwZSB0eXBl
ID0gT3BDYWxsTm9ybWFsKTsKQEAgLTMxOSw2ICszNDQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAg
ICAgICAgSlNWYWx1ZSogZ2V0Q29uc3RhbnRJbW1lZGlhdGVOdW1lcmljQXJnKHVuc2lnbmVkIHNy
Yyk7CiAgICAgICAgIHVuc2lnbmVkIGdldERlVGFnZ2VkQ29uc3RhbnRJbW1lZGlhdGUoSlNWYWx1
ZSogaW1tKTsKIAorICAgICAgICB2b2lkIENUSTo6ZW1pdEp1bXBTbG93Q2FzZUlmTm90SlNDZWxs
KFg4NkFzc2VtYmxlcjo6UmVnaXN0ZXJJRCByZWcsIHVuc2lnbmVkIG9wY29kZUluZGV4KTsKICAg
ICAgICAgdm9pZCBlbWl0SnVtcFNsb3dDYXNlSWZOb3RJbW0oWDg2QXNzZW1ibGVyOjpSZWdpc3Rl
cklELCB1bnNpZ25lZCBvcGNvZGVJbmRleCk7CiAgICAgICAgIHZvaWQgZW1pdEp1bXBTbG93Q2Fz
ZUlmTm90SW1tcyhYODZBc3NlbWJsZXI6OlJlZ2lzdGVySUQsIFg4NkFzc2VtYmxlcjo6UmVnaXN0
ZXJJRCwgdW5zaWduZWQgb3Bjb2RlSW5kZXgpOwogCkBAIC0zMzEsMTEgKzM1NywxMSBAQCBuYW1l
c3BhY2UgSlNDIHsKIAogICAgICAgICB2b2lkIGVtaXREZWJ1Z0V4Y2VwdGlvbkNoZWNrKCk7CiAK
LSAgICAgICAgdm9pZCBlbWl0Q2FsbCh1bnNpZ25lZCBvcGNvZGVJbmRleCwgQ1RJSGVscGVyX2op
OwotICAgICAgICB2b2lkIGVtaXRDYWxsKHVuc2lnbmVkIG9wY29kZUluZGV4LCBDVElIZWxwZXJf
cCk7Ci0gICAgICAgIHZvaWQgZW1pdENhbGwodW5zaWduZWQgb3Bjb2RlSW5kZXgsIENUSUhlbHBl
cl9iKTsKLSAgICAgICAgdm9pZCBlbWl0Q2FsbCh1bnNpZ25lZCBvcGNvZGVJbmRleCwgQ1RJSGVs
cGVyX3YpOwotICAgICAgICB2b2lkIGVtaXRDYWxsKHVuc2lnbmVkIG9wY29kZUluZGV4LCBDVElI
ZWxwZXJfcyk7CisgICAgICAgIFg4NkFzc2VtYmxlcjo6Sm1wU3JjIGVtaXRDYWxsKHVuc2lnbmVk
IG9wY29kZUluZGV4LCBDVElIZWxwZXJfaik7CisgICAgICAgIFg4NkFzc2VtYmxlcjo6Sm1wU3Jj
IGVtaXRDYWxsKHVuc2lnbmVkIG9wY29kZUluZGV4LCBDVElIZWxwZXJfcCk7CisgICAgICAgIFg4
NkFzc2VtYmxlcjo6Sm1wU3JjIGVtaXRDYWxsKHVuc2lnbmVkIG9wY29kZUluZGV4LCBDVElIZWxw
ZXJfYik7CisgICAgICAgIFg4NkFzc2VtYmxlcjo6Sm1wU3JjIGVtaXRDYWxsKHVuc2lnbmVkIG9w
Y29kZUluZGV4LCBDVElIZWxwZXJfdik7CisgICAgICAgIFg4NkFzc2VtYmxlcjo6Sm1wU3JjIGVt
aXRDYWxsKHVuc2lnbmVkIG9wY29kZUluZGV4LCBDVElIZWxwZXJfcyk7CiAgICAgICAgIAogICAg
ICAgICB2b2lkIGVtaXRHZXRWYXJpYWJsZU9iamVjdFJlZ2lzdGVyKFg4NkFzc2VtYmxlcjo6UmVn
aXN0ZXJJRCB2YXJpYWJsZU9iamVjdCwgaW50IGluZGV4LCBYODZBc3NlbWJsZXI6OlJlZ2lzdGVy
SUQgZHN0KTsKICAgICAgICAgdm9pZCBlbWl0UHV0VmFyaWFibGVPYmplY3RSZWdpc3RlcihYODZB
c3NlbWJsZXI6OlJlZ2lzdGVySUQgc3JjLCBYODZBc3NlbWJsZXI6OlJlZ2lzdGVySUQgdmFyaWFi
bGVPYmplY3QsIGludCBpbmRleCk7CkBAIC0zNTIsNiArMzc4LDcgQEAgbmFtZXNwYWNlIEpTQyB7
CiAKICAgICAgICAgVmVjdG9yPENhbGxSZWNvcmQ+IG1fY2FsbHM7CiAgICAgICAgIFZlY3RvcjxY
ODZBc3NlbWJsZXI6OkptcERzdD4gbV9sYWJlbHM7CisgICAgICAgIFZlY3RvcjxTdHJ1Y3R1cmVT
dHViQ29tcGlsYXRpb25JbmZvPiBzdHJ1Y3R1cmVTdHViQ29tcGlsYXRpb25JbmZvOwogICAgICAg
ICBWZWN0b3I8Sm1wVGFibGU+IG1fam1wVGFibGU7CiAKICAgICAgICAgc3RydWN0IEpTUkluZm8g
ewpJbmRleDogSmF2YVNjcmlwdENvcmUvVk0vQ29kZUJsb2NrLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBK
YXZhU2NyaXB0Q29yZS9WTS9Db2RlQmxvY2suY3BwCShyZXZpc2lvbiAzNjQwMykKKysrIEphdmFT
Y3JpcHRDb3JlL1ZNL0NvZGVCbG9jay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3Nyw3ICsyNzcs
NyBAQCB2b2lkIENvZGVCbG9jazo6ZHVtcChFeGVjU3RhdGUqIGV4ZWMpIGNvCiAgICAgICAgIHBy
aW50ZigiXG5TdHJ1Y3R1cmVJRHM6XG4iKTsKICAgICAgICAgc2l6ZV90IGkgPSAwOwogICAgICAg
ICBkbyB7Ci0gICAgICAgICAgICAgcHJpbnRTdHJ1Y3R1cmVJRHMoJmluc3RydWN0aW9uc1tzdHJ1
Y3R1cmVJREluc3RydWN0aW9uc1tpXV0pOworICAgICAgICAgICAgIHByaW50U3RydWN0dXJlSURz
KCZpbnN0cnVjdGlvbnNbc3RydWN0dXJlSURJbnN0cnVjdGlvbnNbaV0ub3Bjb2RlSW5kZXhdKTsK
ICAgICAgICAgICAgICArK2k7CiAgICAgICAgIH0gd2hpbGUgKGkgPCBzdHJ1Y3R1cmVJREluc3Ry
dWN0aW9ucy5zaXplKCkpOwogICAgIH0KQEAgLTg0MCwxMyArODQwLDExIEBAIHZvaWQgQ29kZUJs
b2NrOjpkdW1wKEV4ZWNTdGF0ZSogZXhlYywgY28KIENvZGVCbG9jazo6fkNvZGVCbG9jaygpCiB7
CiAgICAgc2l6ZV90IHNpemUgPSBzdHJ1Y3R1cmVJREluc3RydWN0aW9ucy5zaXplKCk7Ci0gICAg
Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBzaXplOyArK2kpCi0gICAgICAgIGRlcmVmU3RydWN0dXJl
SURzKCZpbnN0cnVjdGlvbnNbc3RydWN0dXJlSURJbnN0cnVjdGlvbnNbaV1dKTsKLQotICAgIHNp
emUgPSBzdHJ1Y3R1cmVJREFjY2Vzc1N0dWJzLnNpemUoKTsKLSAgICBmb3IgKHNpemVfdCBpID0g
MDsgaSA8IHNpemU7ICsraSkKLSAgICAgICAgZmFzdEZyZWUoc3RydWN0dXJlSURBY2Nlc3NTdHVi
c1tpXSk7Ci0KKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAg
ICBkZXJlZlN0cnVjdHVyZUlEcygmaW5zdHJ1Y3Rpb25zW3N0cnVjdHVyZUlESW5zdHJ1Y3Rpb25z
W2ldLm9wY29kZUluZGV4XSk7CisgICAgICAgIGlmIChzdHJ1Y3R1cmVJREluc3RydWN0aW9uc1tp
XS5zdHViUm91dGluZSkKKyAgICAgICAgICAgIGZhc3RGcmVlKHN0cnVjdHVyZUlESW5zdHJ1Y3Rp
b25zW2ldLnN0dWJSb3V0aW5lKTsKKyAgICB9CiAjaWYgRU5BQkxFKENUSSkKICAgICBpZiAoY3Rp
Q29kZSkKICAgICAgICAgZmFzdEZyZWUoY3RpQ29kZSk7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9W
TS9Db2RlQmxvY2suaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZhU2NyaXB0Q29yZS9WTS9Db2RlQmxvY2su
aAkocmV2aXNpb24gMzY0MDMpCisrKyBKYXZhU2NyaXB0Q29yZS9WTS9Db2RlQmxvY2suaAkod29y
a2luZyBjb3B5KQpAQCAtNzYsNiArNzYsMjEgQEAgbmFtZXNwYWNlIEpTQyB7CiAjZW5kaWYKICAg
ICB9OwogCisgICAgc3RydWN0IFN0cnVjdHVyZVN0dWJJbmZvIHsKKyAgICAgICAgU3RydWN0dXJl
U3R1YkluZm8odW5zaWduZWQgb3Bjb2RlSW5kZXgpCisgICAgICAgICAgICA6IG9wY29kZUluZGV4
KG9wY29kZUluZGV4KQorICAgICAgICAgICAgLCBzdHViUm91dGluZSgwKQorICAgICAgICAgICAg
LCBjYWxsUmV0dXJuTG9jYXRpb24oMCkKKyAgICAgICAgICAgICwgaG90UGF0aEJlZ2luKDApCisg
ICAgICAgIHsKKyAgICAgICAgfQorICAgIAorICAgICAgICB1bnNpZ25lZCBvcGNvZGVJbmRleDsK
KyAgICAgICAgdm9pZCogc3R1YlJvdXRpbmU7CisgICAgICAgIHZvaWQqIGNhbGxSZXR1cm5Mb2Nh
dGlvbjsKKyAgICAgICAgdm9pZCogaG90UGF0aEJlZ2luOworICAgIH07CisKICAgICBzdHJ1Y3Qg
U3RyaW5nSnVtcFRhYmxlIHsKICAgICAgICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxVU3RyaW5n
OjpSZXA+LCBPZmZzZXRMb2NhdGlvbj4gU3RyaW5nT2Zmc2V0VGFibGU7CiAgICAgICAgIFN0cmlu
Z09mZnNldFRhYmxlIG9mZnNldFRhYmxlOwpAQCAtMTk5LDYgKzIxNCwyMCBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgICAgICAgdm9pZCByZWZTdHJ1Y3R1cmVJRHMoSW5zdHJ1Y3Rpb24qIHZQQykgY29u
c3Q7CiAgICAgICAgIHZvaWQgZGVyZWZTdHJ1Y3R1cmVJRHMoSW5zdHJ1Y3Rpb24qIHZQQykgY29u
c3Q7CiAKKyAgICAgICAgU3RydWN0dXJlU3R1YkluZm8mIGdldFN0dWJJbmZvKHZvaWQqIHJldHVy
bkFkZHJlc3MpCisgICAgICAgIHsKKyAgICAgICAgICAgIC8vIFRPRE86IHdvdWxkIGEgYmluYXJ5
IGNob3AgYmUgZmFzdGVyIGhlcmU/CisgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBp
IDwgc3RydWN0dXJlSURJbnN0cnVjdGlvbnMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgICAgICAg
ICBpZiAoc3RydWN0dXJlSURJbnN0cnVjdGlvbnNbaV0uY2FsbFJldHVybkxvY2F0aW9uID09IHJl
dHVybkFkZHJlc3MpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdHJ1Y3R1cmVJREluc3Ry
dWN0aW9uc1tpXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIAorICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICAvLyBrZWVwIHRoZSBjb21waWxlciBoYXBw
eS4KKyAgICAgICAgICAgIHN0YXRpYyBTdHJ1Y3R1cmVTdHViSW5mbyBkdWZmKDApOworICAgICAg
ICAgICAgcmV0dXJuIGR1ZmY7CisgICAgICAgIH0KKwogICAgICAgICBTY29wZU5vZGUqIG93bmVy
Tm9kZTsKICAgICAgICAgSlNHbG9iYWxEYXRhKiBnbG9iYWxEYXRhOwogI2lmIEVOQUJMRShDVEkp
CkBAIC0yMTgsOCArMjQ3LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgICAgIHVuc2lnbmVkIHNv
dXJjZU9mZnNldDsKIAogICAgICAgICBWZWN0b3I8SW5zdHJ1Y3Rpb24+IGluc3RydWN0aW9uczsK
LSAgICAgICAgVmVjdG9yPHNpemVfdD4gc3RydWN0dXJlSURJbnN0cnVjdGlvbnM7Ci0gICAgICAg
IFZlY3Rvcjx2b2lkKj4gc3RydWN0dXJlSURBY2Nlc3NTdHViczsKKyAgICAgICAgVmVjdG9yPFN0
cnVjdHVyZVN0dWJJbmZvPiBzdHJ1Y3R1cmVJREluc3RydWN0aW9uczsKIAogICAgICAgICAvLyBD
b25zdGFudCBwb29sCiAgICAgICAgIFZlY3RvcjxJZGVudGlmaWVyPiBpZGVudGlmaWVyczsKSW5k
ZXg6IEphdmFTY3JpcHRDb3JlL1ZNL01hY2hpbmUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEphdmFTY3Jp
cHRDb3JlL1ZNL01hY2hpbmUuY3BwCShyZXZpc2lvbiAzNjQwMykKKysrIEphdmFTY3JpcHRDb3Jl
L1ZNL01hY2hpbmUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNjY3LDcgKzM2NjcsNyBAQCBORVZF
Ul9JTkxJTkUgdm9pZCBNYWNoaW5lOjp0cnlDVElDYWNoZVB1CiAgICAgICAgIHZQQ1s2XSA9IGNo
YWluOwogICAgICAgICB2UENbN10gPSBzbG90LmNhY2hlZE9mZnNldCgpOwogICAgICAgICBjb2Rl
QmxvY2stPnJlZlN0cnVjdHVyZUlEcyh2UEMpOwotICAgICAgICBjdGlSZXBhdGNoQ2FsbEJ5UmV0
dXJuQWRkcmVzcyhyZXR1cm5BZGRyZXNzLCBDVEk6OmNvbXBpbGVQdXRCeUlkVHJhbnNpdGlvbih0
aGlzLCBleGVjLCBjb2RlQmxvY2ssIHN0cnVjdHVyZUlELT5wcmV2aW91c0lEKCksIHN0cnVjdHVy
ZUlELCBzbG90LmNhY2hlZE9mZnNldCgpLCBjaGFpbikpOworICAgICAgICBDVEk6OmNvbXBpbGVQ
dXRCeUlkVHJhbnNpdGlvbih0aGlzLCBleGVjLCBjb2RlQmxvY2ssIHN0cnVjdHVyZUlELT5wcmV2
aW91c0lEKCksIHN0cnVjdHVyZUlELCBzbG90LmNhY2hlZE9mZnNldCgpLCBjaGFpbiwgcmV0dXJu
QWRkcmVzcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCkBAIC0zNjc2LDcgKzM2NzYs
MTIgQEAgTkVWRVJfSU5MSU5FIHZvaWQgTWFjaGluZTo6dHJ5Q1RJQ2FjaGVQdQogICAgIHZQQ1s1
XSA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CiAgICAgY29kZUJsb2NrLT5yZWZTdHJ1Y3R1cmVJRHMo
dlBDKTsKIAotICAgIGN0aVJlcGF0Y2hDYWxsQnlSZXR1cm5BZGRyZXNzKHJldHVybkFkZHJlc3Ms
IENUSTo6Y29tcGlsZVB1dEJ5SWRSZXBsYWNlKHRoaXMsIGV4ZWMsIGNvZGVCbG9jaywgc3RydWN0
dXJlSUQsIHNsb3QuY2FjaGVkT2Zmc2V0KCkpKTsKKyNpZiBVU0UoQ1RJX1JFUEFUQ0hfUElDKQor
ICAgIFVOVVNFRF9QQVJBTShleGVjKTsKKyAgICBDVEk6OnBhdGNoUHV0QnlJZFJlcGxhY2UoY29k
ZUJsb2NrLCBzdHJ1Y3R1cmVJRCwgc2xvdC5jYWNoZWRPZmZzZXQoKSwgcmV0dXJuQWRkcmVzcyk7
CisjZWxzZQorICAgIENUSTo6Y29tcGlsZVB1dEJ5SWRSZXBsYWNlKHRoaXMsIGV4ZWMsIGNvZGVC
bG9jaywgc3RydWN0dXJlSUQsIHNsb3QuY2FjaGVkT2Zmc2V0KCksIHJldHVybkFkZHJlc3MpOwor
I2VuZGlmCiB9CiAKIHZvaWQqIE1hY2hpbmU6OmdldENUSUFycmF5TGVuZ3RoVHJhbXBvbGluZShF
eGVjU3RhdGUqIGV4ZWMsIENvZGVCbG9jayogY29kZUJsb2NrKQpAQCAtMzcwMCwxMSArMzcwNSwx
OSBAQCBORVZFUl9JTkxJTkUgdm9pZCBNYWNoaW5lOjp0cnlDVElDYWNoZUdlCiAgICAgLy8gVGhl
IGludGVycHJldGVyIGNoZWNrcyBmb3IgcmVjdXJzaW9uIGhlcmU7IEkgZG8gbm90IGJlbGlldmUg
dGhpcyBjYW4gb2NjdXIgaW4gQ1RJLgogCiAgICAgaWYgKGlzSlNBcnJheShiYXNlVmFsdWUpICYm
IHByb3BlcnR5TmFtZSA9PSBleGVjLT5wcm9wZXJ0eU5hbWVzKCkubGVuZ3RoKSB7CisjaWYgVVNF
KENUSV9SRVBBVENIX1BJQykKKyAgICAgICAgQ1RJOjpjb21waWxlUGF0Y2hHZXRBcnJheUxlbmd0
aCh0aGlzLCBleGVjLCBjb2RlQmxvY2ssIHJldHVybkFkZHJlc3MpOworI2Vsc2UKICAgICAgICAg
Y3RpUmVwYXRjaENhbGxCeVJldHVybkFkZHJlc3MocmV0dXJuQWRkcmVzcywgZ2V0Q1RJQXJyYXlM
ZW5ndGhUcmFtcG9saW5lKGV4ZWMsIGNvZGVCbG9jaykpOworI2VuZGlmCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAgICAgaWYgKGlzSlNTdHJpbmcoYmFzZVZhbHVlKSAmJiBwcm9wZXJ0eU5hbWUg
PT0gZXhlYy0+cHJvcGVydHlOYW1lcygpLmxlbmd0aCkgeworI2lmIFVTRShDVElfUkVQQVRDSF9Q
SUMpICYmIDAgLy8gVGhpcyBpcyBub3QgY3VycmVudGx5IGEgcGVyZm9ybWFuY2Ugd2luLiAgU2Fk
IGZhY2UuCisgICAgICAgIENUSTo6Y29tcGlsZVBhdGNoR2V0U3RyaW5nTGVuZ3RoKHRoaXMsIGV4
ZWMsIGNvZGVCbG9jaywgcmV0dXJuQWRkcmVzcyk7CisjZWxzZQogICAgICAgICBjdGlSZXBhdGNo
Q2FsbEJ5UmV0dXJuQWRkcmVzcyhyZXR1cm5BZGRyZXNzLCBnZXRDVElTdHJpbmdMZW5ndGhUcmFt
cG9saW5lKGV4ZWMsIGNvZGVCbG9jaykpOworI2VuZGlmCiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTM3NDMsNyArMzc1NiwxMSBAQCBORVZFUl9JTkxJTkUgdm9pZCBNYWNoaW5lOjp0cnlD
VElDYWNoZUdlCiAgICAgICAgIHZQQ1s1XSA9IHNsb3QuY2FjaGVkT2Zmc2V0KCk7CiAgICAgICAg
IGNvZGVCbG9jay0+cmVmU3RydWN0dXJlSURzKHZQQyk7CiAgICAgICAgIAotICAgICAgICBjdGlS
ZXBhdGNoQ2FsbEJ5UmV0dXJuQWRkcmVzcyhyZXR1cm5BZGRyZXNzLCBDVEk6OmNvbXBpbGVHZXRC
eUlkU2VsZih0aGlzLCBleGVjLCBjb2RlQmxvY2ssIHN0cnVjdHVyZUlELCBzbG90LmNhY2hlZE9m
ZnNldCgpKSk7CisjaWYgVVNFKENUSV9SRVBBVENIX1BJQykKKyAgICAgICAgQ1RJOjpwYXRjaEdl
dEJ5SWRTZWxmKGNvZGVCbG9jaywgc3RydWN0dXJlSUQsIHNsb3QuY2FjaGVkT2Zmc2V0KCksIHJl
dHVybkFkZHJlc3MpOworI2Vsc2UKKyAgICAgICAgQ1RJOjpjb21waWxlR2V0QnlJZFNlbGYodGhp
cywgZXhlYywgY29kZUJsb2NrLCBzdHJ1Y3R1cmVJRCwgc2xvdC5jYWNoZWRPZmZzZXQoKSwgcmV0
dXJuQWRkcmVzcyk7CisjZW5kaWYKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMzc2Niw3
ICszNzgzLDcgQEAgTkVWRVJfSU5MSU5FIHZvaWQgTWFjaGluZTo6dHJ5Q1RJQ2FjaGVHZQogICAg
ICAgICB2UENbNl0gPSBzbG90LmNhY2hlZE9mZnNldCgpOwogICAgICAgICBjb2RlQmxvY2stPnJl
ZlN0cnVjdHVyZUlEcyh2UEMpOwogCi0gICAgICAgIGN0aVJlcGF0Y2hDYWxsQnlSZXR1cm5BZGRy
ZXNzKHJldHVybkFkZHJlc3MsIENUSTo6Y29tcGlsZUdldEJ5SWRQcm90byh0aGlzLCBleGVjLCBj
b2RlQmxvY2ssIHN0cnVjdHVyZUlELCBzbG90QmFzZU9iamVjdC0+c3RydWN0dXJlSUQoKSwgc2xv
dC5jYWNoZWRPZmZzZXQoKSkpOworICAgICAgICBDVEk6OmNvbXBpbGVHZXRCeUlkUHJvdG8odGhp
cywgZXhlYywgY29kZUJsb2NrLCBzdHJ1Y3R1cmVJRCwgc2xvdEJhc2VPYmplY3QtPnN0cnVjdHVy
ZUlEKCksIHNsb3QuY2FjaGVkT2Zmc2V0KCksIHJldHVybkFkZHJlc3MpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC0zODA4LDcgKzM4MjUsNyBAQCBORVZFUl9JTkxJTkUgdm9pZCBNYWNo
aW5lOjp0cnlDVElDYWNoZUdlCiAgICAgdlBDWzddID0gc2xvdC5jYWNoZWRPZmZzZXQoKTsKICAg
ICBjb2RlQmxvY2stPnJlZlN0cnVjdHVyZUlEcyh2UEMpOwogCi0gICAgY3RpUmVwYXRjaENhbGxC
eVJldHVybkFkZHJlc3MocmV0dXJuQWRkcmVzcywgQ1RJOjpjb21waWxlR2V0QnlJZENoYWluKHRo
aXMsIGV4ZWMsIGNvZGVCbG9jaywgc3RydWN0dXJlSUQsIGNoYWluLCBjb3VudCwgc2xvdC5jYWNo
ZWRPZmZzZXQoKSkpOworICAgIENUSTo6Y29tcGlsZUdldEJ5SWRDaGFpbih0aGlzLCBleGVjLCBj
b2RlQmxvY2ssIHN0cnVjdHVyZUlELCBjaGFpbiwgY291bnQsIHNsb3QuY2FjaGVkT2Zmc2V0KCks
IHJldHVybkFkZHJlc3MpOwogfQogCiAKQEAgLTQ0ODMsNiArNDUwMCwzMCBAQCB2b2lkIE1hY2hp
bmU6OmN0aV9vcF9wdXRfYnlfdmFsKENUSV9BUkdTCiAgICAgVk1fQ0hFQ0tfRVhDRVBUSU9OX0FU
X0VORCgpOwogfQogCit2b2lkIE1hY2hpbmU6OmN0aV9vcF9wdXRfYnlfdmFsX2FycmF5KENUSV9B
UkdTKQoreworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IEFSR19leGVjOworCisgICAgSlNWYWx1ZSog
YmFzZVZhbHVlID0gQVJHX3NyYzE7CisgICAgaW50IGkgPSBBUkdfaW50MjsKKyAgICBKU1ZhbHVl
KiB2YWx1ZSA9IEFSR19zcmMzOworCisgICAgQVNTRVJUKGV4ZWMtPm1hY2hpbmUoKS0+aXNKU0Fy
cmF5KGJhc2VWYWx1ZSkpOworCisgICAgaWYgKExJS0VMWShpID49IDApKQorICAgICAgICBzdGF0
aWNfY2FzdDxKU0FycmF5Kj4oYmFzZVZhbHVlKS0+SlNBcnJheTo6cHV0KGV4ZWMsIGksIHZhbHVl
KTsKKyAgICBlbHNlIHsKKyAgICAgICAgSWRlbnRpZmllciBwcm9wZXJ0eShleGVjLCBKU0ltbWVk
aWF0ZTo6ZnJvbShpKS0+dG9TdHJpbmcoZXhlYykpOworICAgICAgICAvLyBUT0RPOiBjYW4gdG9T
dHJpbmcgdGhyb3cgYW4gZXhjZXB0aW9uIGhlcmU/CisgICAgICAgIGlmICghZXhlYy0+aGFkRXhj
ZXB0aW9uKCkpIHsgLy8gRG9uJ3QgcHV0IHRvIGFuIG9iamVjdCBpZiB0b1N0cmluZyB0aHJldyBh
biBleGNlcHRpb24uCisgICAgICAgICAgICBQdXRQcm9wZXJ0eVNsb3Qgc2xvdDsKKyAgICAgICAg
ICAgIGJhc2VWYWx1ZS0+cHV0KGV4ZWMsIHByb3BlcnR5LCB2YWx1ZSwgc2xvdCk7CisgICAgICAg
IH0KKyAgICB9CisKKyAgICBWTV9DSEVDS19FWENFUFRJT05fQVRfRU5EKCk7Cit9CisKIEpTVmFs
dWUqIE1hY2hpbmU6OmN0aV9vcF9sZXNzZXEoQ1RJX0FSR1MpCiB7CiAgICAgRXhlY1N0YXRlKiBl
eGVjID0gQVJHX2V4ZWM7CkluZGV4OiBKYXZhU2NyaXB0Q29yZS9WTS9NYWNoaW5lLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gSmF2YVNjcmlwdENvcmUvVk0vTWFjaGluZS5oCShyZXZpc2lvbiAzNjQwMykKKysr
IEphdmFTY3JpcHRDb3JlL1ZNL01hY2hpbmUuaAkod29ya2luZyBjb3B5KQpAQCAtMTY4LDYgKzE2
OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBzdGF0aWMgSlNWYWx1ZSogU0ZYX0NBTEwg
Y3RpX29wX3Jlc29sdmVfZnVuYyhDVElfQVJHUyk7CiAgICAgICAgIHN0YXRpYyBKU1ZhbHVlKiBT
RlhfQ0FMTCBjdGlfb3Bfc3ViKENUSV9BUkdTKTsKICAgICAgICAgc3RhdGljIHZvaWQgU0ZYX0NB
TEwgY3RpX29wX3B1dF9ieV92YWwoQ1RJX0FSR1MpOworICAgICAgICBzdGF0aWMgdm9pZCBTRlhf
Q0FMTCBjdGlfb3BfcHV0X2J5X3ZhbF9hcnJheShDVElfQVJHUyk7CiAgICAgICAgIHN0YXRpYyBK
U1ZhbHVlKiBTRlhfQ0FMTCBjdGlfb3BfbGVzc2VxKENUSV9BUkdTKTsKICAgICAgICAgc3RhdGlj
IGludCBTRlhfQ0FMTCBjdGlfb3BfbG9vcF9pZl90cnVlKENUSV9BUkdTKTsKICAgICAgICAgc3Rh
dGljIEpTVmFsdWUqIFNGWF9DQUxMIGN0aV9vcF9yZXNvbHZlX2Jhc2UoQ1RJX0FSR1MpOwpJbmRl
eDogSmF2YVNjcmlwdENvcmUvbWFzbS9YODZBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBKYXZh
U2NyaXB0Q29yZS9tYXNtL1g4NkFzc2VtYmxlci5oCShyZXZpc2lvbiAzNjQwMykKKysrIEphdmFT
Y3JpcHRDb3JlL21hc20vWDg2QXNzZW1ibGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTIwOSw2ICsy
MDksNyBAQCBwdWJsaWM6CiAgICAgICAgIE9QMl9KRV9yZWwzMiAgICA9IDB4ODQsCiAgICAgICAg
IE9QMl9KTkVfcmVsMzIgICA9IDB4ODUsCiAgICAgICAgIE9QMl9KQkVfcmVsMzIgICA9IDB4ODYs
CisgICAgICAgIE9QMl9KQV9yZWwzMiAgICA9IDB4ODcsCiAgICAgICAgIE9QMl9KTF9yZWwzMiAg
ICA9IDB4OEMsCiAgICAgICAgIE9QMl9KR0VfcmVsMzIgICA9IDB4OEQsCiAgICAgICAgIE9QMl9K
TEVfcmVsMzIgICA9IDB4OEUsCkBAIC0zNzEsNiArMzcyLDEzIEBAIHB1YmxpYzoKICAgICAgICAg
bV9idWZmZXItPnB1dEludChpbW0pOwogICAgIH0KIAorICAgIHZvaWQgY21wbF9pOG0oaW50IGlt
bSwgaW50IG9mZnNldCwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklEIGluZGV4LCBpbnQgc2Nh
bGUpCisgICAgeworICAgICAgICBtX2J1ZmZlci0+cHV0Qnl0ZShPUF9HUk9VUDFfRXZJYik7Cisg
ICAgICAgIGVtaXRNb2RSbV9vcG1zaWIoR1JPVVAxX09QX0NNUCwgYmFzZSwgaW5kZXgsIHNjYWxl
LCBvZmZzZXQpOworICAgICAgICBtX2J1ZmZlci0+cHV0Qnl0ZShpbW0pOworICAgIH0KKwogICAg
IHZvaWQgY21wd19ybShSZWdpc3RlcklEIHNyYywgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IGluZGV4LCBpbnQgc2NhbGUpCiAgICAgewogICAgICAgICBtX2J1ZmZlci0+cHV0Qnl0ZShQUkVf
T1BFUkFORF9TSVpFKTsKQEAgLTc0MSw2ICs3NDksMTQgQEAgcHVibGljOgogICAgICAgICByZXR1
cm4gSm1wU3JjKG1fYnVmZmVyLT5nZXRPZmZzZXQoKSk7CiAgICAgfQogICAgIAorICAgIEptcFNy
YyBlbWl0VW5saW5rZWRKYSgpCisgICAgeworICAgICAgICBtX2J1ZmZlci0+cHV0Qnl0ZShPUF8y
QllURV9FU0NBUEUpOworICAgICAgICBtX2J1ZmZlci0+cHV0Qnl0ZShPUDJfSkFfcmVsMzIpOwor
ICAgICAgICBtX2J1ZmZlci0+cHV0SW50KDApOworICAgICAgICByZXR1cm4gSm1wU3JjKG1fYnVm
ZmVyLT5nZXRPZmZzZXQoKSk7CisgICAgfQorICAgIAogICAgIEptcFNyYyBlbWl0VW5saW5rZWRK
YWUoKQogICAgIHsKICAgICAgICAgbV9idWZmZXItPnB1dEJ5dGUoT1BfMkJZVEVfRVNDQVBFKTsK
QEAgLTc4NSwxNiArODAxLDI2IEBAIHB1YmxpYzoKICAgICAgICAgKChpbnQqKSgocHRyZGlmZl90
KWNvZGUgKyBmcm9tLm1fb2Zmc2V0KSlbLTFdID0gKHB0cmRpZmZfdCl0byAtICgocHRyZGlmZl90
KWNvZGUgKyBmcm9tLm1fb2Zmc2V0KTsKICAgICB9CiAgICAgCi0gICAgdm9pZCogZ2V0UmVsb2Nh
dGVkQWRkcmVzcyh2b2lkKiBjb2RlLCBKbXBTcmMganVtcCkKKyAgICBzdGF0aWMgdm9pZCogZ2V0
UmVsb2NhdGVkQWRkcmVzcyh2b2lkKiBjb2RlLCBKbXBTcmMganVtcCkKICAgICB7CiAgICAgICAg
IHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPigocHRyZGlmZl90KWNvZGUgKyBqdW1wLm1f
b2Zmc2V0KTsKICAgICB9CiAgICAgCi0gICAgdm9pZCogZ2V0UmVsb2NhdGVkQWRkcmVzcyh2b2lk
KiBjb2RlLCBKbXBEc3QganVtcCkKKyAgICBzdGF0aWMgdm9pZCogZ2V0UmVsb2NhdGVkQWRkcmVz
cyh2b2lkKiBjb2RlLCBKbXBEc3QganVtcCkKICAgICB7CiAgICAgICAgIHJldHVybiByZWludGVy
cHJldF9jYXN0PHZvaWQqPigocHRyZGlmZl90KWNvZGUgKyBqdW1wLm1fb2Zmc2V0KTsKICAgICB9
CiAgICAgCisgICAgc3RhdGljIHVuc2lnbmVkIGdldERpZmZlcmVuY2VCZXR3ZWVuTGFiZWxzKEpt
cERzdCBzcmMsIEptcERzdCBkc3QpCisgICAgeworICAgICAgICByZXR1cm4gZHN0Lm1fb2Zmc2V0
IC0gc3JjLm1fb2Zmc2V0OworICAgIH0KKyAgICAKKyAgICBzdGF0aWMgdW5zaWduZWQgZ2V0RGlm
ZmVyZW5jZUJldHdlZW5MYWJlbHMoSm1wRHN0IHNyYywgSm1wU3JjIGRzdCkKKyAgICB7CisgICAg
ICAgIHJldHVybiBkc3QubV9vZmZzZXQgLSBzcmMubV9vZmZzZXQ7CisgICAgfQorICAgIAogICAg
IHZvaWQqIGNvcHkoKSAKICAgICB7CiAgICAgICAgIHJldHVybiBtX2J1ZmZlci0+Y29weSgpOwpA
QCAtOTMxLDYgKzk1NywxMSBAQCBwcml2YXRlOgogICAgICAgICBlbWl0TW9kUm1fcm0oc3RhdGlj
X2Nhc3Q8UmVnaXN0ZXJJRD4ob3Bjb2RlKSwgYWRkcik7CiAgICAgfQogCisgICAgdm9pZCBlbWl0
TW9kUm1fb3Btc2liKE9wY29kZUlEIG9wY29kZSwgUmVnaXN0ZXJJRCBiYXNlLCBSZWdpc3RlcklE
IGluZGV4LCBpbnQgc2NhbGUsIGludCBvZmZzZXQpCisgICAgeworICAgICAgICBlbWl0TW9kUm1f
cm1zaWIoc3RhdGljX2Nhc3Q8UmVnaXN0ZXJJRD4ob3Bjb2RlKSwgYmFzZSwgaW5kZXgsIHNjYWxl
LCBvZmZzZXQpOworICAgIH0KKwogICAgIEpJVENvZGVCdWZmZXIqIG1fYnVmZmVyOwogfTsKIAo=
</data>
<flag name="review"
          id="10447"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>23420</attachid>
            <date>2008-09-14 15:31:45 -0700</date>
            <delta_ts>2008-09-14 15:31:45 -0700</delta_ts>
            <desc>Sunspider results (+2.8%).</desc>
            <filename>compare.spidey.props.txt</filename>
            <type>text/plain</type>
            <size>5554</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">PT09IEJVSUxESU5HIEFHR1JFR0FURSBUQVJHRVQgRGVyaXZlZCBTb3VyY2VzIE9GIFBST0pFQ1Qg
SmF2YVNjcmlwdENvcmUgV0lUSCBDT05GSUdVUkFUSU9OIFJlbGVhc2UgPT09CgpDaGVja2luZyBE
ZXBlbmRlbmNpZXMuLi4KClBoYXNlU2NyaXB0RXhlY3V0aW9uICIvVXNlcnMvZ2F2aW4vRGVza3Rv
cC9OZXUvV2ViS2l0L1dlYktpdEJ1aWxkL0phdmFTY3JpcHRDb3JlLmJ1aWxkL1JlbGVhc2UvRGVy
aXZlZCBTb3VyY2VzLmJ1aWxkL1NjcmlwdC02NUZCM0Y2NTA5RDExRTkxMDBGNDlERUIuc2giCiAg
ICBjZCAvVXNlcnMvZ2F2aW4vRGVza3RvcC9OZXUvV2ViS2l0L0phdmFTY3JpcHRDb3JlCiAgICAv
YmluL3NoIC1jICJcIi9Vc2Vycy9nYXZpbi9EZXNrdG9wL05ldS9XZWJLaXQvV2ViS2l0QnVpbGQv
SmF2YVNjcmlwdENvcmUuYnVpbGQvUmVsZWFzZS9EZXJpdmVkIFNvdXJjZXMuYnVpbGQvU2NyaXB0
LTY1RkIzRjY1MDlEMTFFOTEwMEY0OURFQi5zaFwiIgptYWtlOiBOb3RoaW5nIHRvIGJlIGRvbmUg
Zm9yIGBhbGwnLgoKUGhhc2VTY3JpcHRFeGVjdXRpb24gIi9Vc2Vycy9nYXZpbi9EZXNrdG9wL05l
dS9XZWJLaXQvV2ViS2l0QnVpbGQvSmF2YVNjcmlwdENvcmUuYnVpbGQvUmVsZWFzZS9EZXJpdmVk
IFNvdXJjZXMuYnVpbGQvU2NyaXB0LTVEMzVERUUxMEM3QzE0MEIwMDg2NDhCMi5zaCIKICAgIGNk
IC9Vc2Vycy9nYXZpbi9EZXNrdG9wL05ldS9XZWJLaXQvSmF2YVNjcmlwdENvcmUKICAgIC9iaW4v
c2ggLWMgIlwiL1VzZXJzL2dhdmluL0Rlc2t0b3AvTmV1L1dlYktpdC9XZWJLaXRCdWlsZC9KYXZh
U2NyaXB0Q29yZS5idWlsZC9SZWxlYXNlL0Rlcml2ZWQgU291cmNlcy5idWlsZC9TY3JpcHQtNUQz
NURFRTEwQzdDMTQwQjAwODY0OEIyLnNoXCIiCgoKPT09IEJVSUxESU5HIE5BVElWRSBUQVJHRVQg
SmF2YVNjcmlwdENvcmUgT0YgUFJPSkVDVCBKYXZhU2NyaXB0Q29yZSBXSVRIIENPTkZJR1VSQVRJ
T04gUmVsZWFzZSA9PT0KCkNoZWNraW5nIERlcGVuZGVuY2llcy4uLgoKUGhhc2VTY3JpcHRFeGVj
dXRpb24gL1VzZXJzL2dhdmluL0Rlc2t0b3AvTmV1L1dlYktpdC9XZWJLaXRCdWlsZC9KYXZhU2Ny
aXB0Q29yZS5idWlsZC9SZWxlYXNlL0phdmFTY3JpcHRDb3JlLmJ1aWxkL1NjcmlwdC05MzE5NTg2
QjA5RDlGOTFBMDBBNTZGRDQuc2gKICAgIGNkIC9Vc2Vycy9nYXZpbi9EZXNrdG9wL05ldS9XZWJL
aXQvSmF2YVNjcmlwdENvcmUKICAgIC9iaW4vc2ggLWMgL1VzZXJzL2dhdmluL0Rlc2t0b3AvTmV1
L1dlYktpdC9XZWJLaXRCdWlsZC9KYXZhU2NyaXB0Q29yZS5idWlsZC9SZWxlYXNlL0phdmFTY3Jp
cHRDb3JlLmJ1aWxkL1NjcmlwdC05MzE5NTg2QjA5RDlGOTFBMDBBNTZGRDQuc2gKCgo9PT0gQlVJ
TERJTkcgTkFUSVZFIFRBUkdFVCBqc2MgT0YgUFJPSkVDVCBKYXZhU2NyaXB0Q29yZSBXSVRIIENP
TkZJR1VSQVRJT04gUmVsZWFzZSA9PT0KCkNoZWNraW5nIERlcGVuZGVuY2llcy4uLgoKUGhhc2VT
Y3JpcHRFeGVjdXRpb24gL1VzZXJzL2dhdmluL0Rlc2t0b3AvTmV1L1dlYktpdC9XZWJLaXRCdWls
ZC9KYXZhU2NyaXB0Q29yZS5idWlsZC9SZWxlYXNlL2pzYy5idWlsZC9TY3JpcHQtNUQ1RDhBQkYw
RTBEMEIwMzAwRjlDNjkyLnNoCiAgICBjZCAvVXNlcnMvZ2F2aW4vRGVza3RvcC9OZXUvV2ViS2l0
L0phdmFTY3JpcHRDb3JlCiAgICAvYmluL3NoIC1jIC9Vc2Vycy9nYXZpbi9EZXNrdG9wL05ldS9X
ZWJLaXQvV2ViS2l0QnVpbGQvSmF2YVNjcmlwdENvcmUuYnVpbGQvUmVsZWFzZS9qc2MuYnVpbGQv
U2NyaXB0LTVENUQ4QUJGMEUwRDBCMDMwMEY5QzY5Mi5zaAoqKiBCVUlMRCBTVUNDRUVERUQgKioK
U3RhcnRpbmcgc3Vuc3BpZGVyLWNvbXBhcmUtcmVzdWx0cyB3aXRoIERZTERfRlJBTUVXT1JLX1BB
VEggc2V0IHRvIHBvaW50IHRvIGJ1aWx0IEphdmFTY3JpcHRDb3JlIGluIC9Vc2Vycy9nYXZpbi9E
ZXNrdG9wL05ldS9XZWJLaXQvV2ViS2l0QnVpbGQvUmVsZWFzZS4KCgpURVNUICAgICAgICAgICAg
ICAgICAgIENPTVBBUklTT04gICAgICAgICAgICBGUk9NICAgICAgICAgICAgICAgICBUTyAgICAg
ICAgICAgICBERVRBSUxTCgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKKiogVE9UQUwgKio6ICAgICAg
ICAgICAxLjAyOHggYXMgZmFzdCAgICA5MzguMG1zICsvLSAwLjIlICAgOTEyLjRtcyArLy0gMC4y
JSAgICAgc2lnbmlmaWNhbnQKCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CgogIDNkOiAgICAgICAgICAg
ICAgICAgIDEuMDgzeCBhcyBmYXN0ICAgIDE1MC42bXMgKy8tIDAuNSUgICAxMzkuMW1zICsvLSAw
LjQlICAgICBzaWduaWZpY2FudAogICAgY3ViZTogICAgICAgICAgICAgID8/ICAgICAgICAgICAg
ICAgICA0Ni43bXMgKy8tIDAuNyUgICAgNDYuOG1zICsvLSAwLjYlICAgICBub3QgY29uY2x1c2l2
ZTogbWlnaHQgYmUgKjEuMDAyeCBhcyBzbG93KgogICAgbW9ycGg6ICAgICAgICAgICAgIC0gICAg
ICAgICAgICAgICAgICA1My40bXMgKy8tIDAuNyUgICAgNTMuM21zICsvLSAwLjYlIAogICAgcmF5
dHJhY2U6ICAgICAgICAgIDEuMjl4IGFzIGZhc3QgICAgICA1MC41bXMgKy8tIDAuNyUgICAgMzku
MG1zICsvLSAwLjAlICAgICBzaWduaWZpY2FudAoKICBhY2Nlc3M6ICAgICAgICAgICAgICAxLjEx
OHggYXMgZmFzdCAgICAxMDguM21zICsvLSAwLjMlICAgIDk2LjltcyArLy0gMC41JSAgICAgc2ln
bmlmaWNhbnQKICAgIGJpbmFyeS10cmVlczogICAgICAxLjAxM3ggYXMgZmFzdCAgICAgMTYuMG1z
ICsvLSAwLjAlICAgIDE1LjhtcyArLy0gMS45JSAgICAgc2lnbmlmaWNhbnQKICAgIGZhbm5rdWNo
OiAgICAgICAgICAxLjE2NXggYXMgZmFzdCAgICAgMTkuMW1zICsvLSAxLjIlICAgIDE2LjRtcyAr
Ly0gMi4zJSAgICAgc2lnbmlmaWNhbnQKICAgIG5ib2R5OiAgICAgICAgICAgICAxLjAxMHggYXMg
ZmFzdCAgICAgNTIuMm1zICsvLSAwLjYlICAgIDUxLjdtcyArLy0gMC43JSAgICAgc2lnbmlmaWNh
bnQKICAgIG5zaWV2ZTogICAgICAgICAgICAxLjYyeCBhcyBmYXN0ICAgICAgMjEuMG1zICsvLSAw
LjAlICAgIDEzLjBtcyArLy0gMi42JSAgICAgc2lnbmlmaWNhbnQKCiAgYml0b3BzOiAgICAgICAg
ICAgICAgLSAgICAgICAgICAgICAgICAgIDYxLjJtcyArLy0gMC45JSAgICA2MC42bXMgKy8tIDAu
NiUgCiAgICAzYml0LWJpdHMtaW4tYnl0ZTogKjEuMDM4eCBhcyBzbG93KiAgIDEwLjZtcyArLy0g
My41JSAgICAxMS4wbXMgKy8tIDAuMCUgICAgIHNpZ25pZmljYW50CiAgICBiaXRzLWluLWJ5dGU6
ICAgICAgLSAgICAgICAgICAgICAgICAgIDEyLjdtcyArLy0gMi43JSAgICAxMi42bXMgKy8tIDIu
OSUgCiAgICBiaXR3aXNlLWFuZDogICAgICAgLSAgICAgICAgICAgICAgICAgIDIwLjltcyArLy0g
MS4xJSAgICAyMC43bXMgKy8tIDEuNyUgCiAgICBuc2lldmUtYml0czogICAgICAgMS4wNDN4IGFz
IGZhc3QgICAgIDE3LjBtcyArLy0gMC4wJSAgICAxNi4zbXMgKy8tIDIuMSUgICAgIHNpZ25pZmlj
YW50CgogIGNvbnRyb2xmbG93OiAgICAgICAgIC0gICAgICAgICAgICAgICAgICAxNS4wbXMgKy8t
IDAuMCUgICAgMTUuMG1zICsvLSAwLjAlIAogICAgcmVjdXJzaXZlOiAgICAgICAgIC0gICAgICAg
ICAgICAgICAgICAxNS4wbXMgKy8tIDAuMCUgICAgMTUuMG1zICsvLSAwLjAlIAoKICBjcnlwdG86
ICAgICAgICAgICAgICAxLjAzN3ggYXMgZmFzdCAgICAgNTguOG1zICsvLSAwLjglICAgIDU2Ljdt
cyArLy0gMC42JSAgICAgc2lnbmlmaWNhbnQKICAgIGFlczogICAgICAgICAgICAgICAtICAgICAg
ICAgICAgICAgICAgMTcuMm1zICsvLSAxLjglICAgIDE3LjBtcyArLy0gMC4wJSAKICAgIG1kNTog
ICAgICAgICAgICAgICAxLjA2NXggYXMgZmFzdCAgICAgMjEuNG1zICsvLSAxLjclICAgIDIwLjFt
cyArLy0gMS4xJSAgICAgc2lnbmlmaWNhbnQKICAgIHNoYTE6ICAgICAgICAgICAgICAxLjAzMXgg
YXMgZmFzdCAgICAgMjAuMm1zICsvLSAxLjUlICAgIDE5LjZtcyArLy0gMS45JSAgICAgc2lnbmlm
aWNhbnQKCiAgZGF0ZTogICAgICAgICAgICAgICAgPz8gICAgICAgICAgICAgICAgIDg1LjVtcyAr
Ly0gMC42JSAgICA4NS44bXMgKy8tIDAuNSUgICAgIG5vdCBjb25jbHVzaXZlOiBtaWdodCBiZSAq
MS4wMDR4IGFzIHNsb3cqCiAgICBmb3JtYXQtdG9mdGU6ICAgICAgLSAgICAgICAgICAgICAgICAg
IDM4LjltcyArLy0gMC42JSAgICAzOC43bXMgKy8tIDAuOSUgCiAgICBmb3JtYXQteHBhcmI6ICAg
ICAgKjEuMDExeCBhcyBzbG93KiAgIDQ2LjZtcyArLy0gMC44JSAgICA0Ny4xbXMgKy8tIDAuNSUg
ICAgIHNpZ25pZmljYW50CgogIG1hdGg6ICAgICAgICAgICAgICAgIDEuMDE1eCBhcyBmYXN0ICAg
IDExNS45bXMgKy8tIDAuMiUgICAxMTQuMm1zICsvLSAwLjQlICAgICBzaWduaWZpY2FudAogICAg
Y29yZGljOiAgICAgICAgICAgIDEuMDUzeCBhcyBmYXN0ICAgICAzNS45bXMgKy8tIDAuNiUgICAg
MzQuMW1zICsvLSAwLjclICAgICBzaWduaWZpY2FudAogICAgcGFydGlhbC1zdW1zOiAgICAgICox
LjAxMXggYXMgc2xvdyogICA1Ni41bXMgKy8tIDAuNyUgICAgNTcuMW1zICsvLSAwLjclICAgICBz
aWduaWZpY2FudAogICAgc3BlY3RyYWwtbm9ybTogICAgIDEuMDIyeCBhcyBmYXN0ICAgICAyMy41
bXMgKy8tIDEuNiUgICAgMjMuMG1zICsvLSAwLjAlICAgICBzaWduaWZpY2FudAoKICByZWdleHA6
ICAgICAgICAgICAgICAxLjAyOXggYXMgZmFzdCAgICAgNDMuMW1zICsvLSAxLjIlICAgIDQxLjlt
cyArLy0gMS4wJSAgICAgc2lnbmlmaWNhbnQKICAgIGRuYTogICAgICAgICAgICAgICAxLjAyOXgg
YXMgZmFzdCAgICAgNDMuMW1zICsvLSAxLjIlICAgIDQxLjltcyArLy0gMS4wJSAgICAgc2lnbmlm
aWNhbnQKCiAgc3RyaW5nOiAgICAgICAgICAgICAgKjEuMDA5eCBhcyBzbG93KiAgMjk5LjZtcyAr
Ly0gMC40JSAgIDMwMi4ybXMgKy8tIDAuNCUgICAgIHNpZ25pZmljYW50CiAgICBiYXNlNjQ6ICAg
ICAgICAgICAgLSAgICAgICAgICAgICAgICAgIDIxLjhtcyArLy0gMS40JSAgICAyMS43bXMgKy8t
IDEuNiUgCiAgICBmYXN0YTogICAgICAgICAgICAgPz8gICAgICAgICAgICAgICAgIDU2LjhtcyAr
Ly0gMC44JSAgICA1Ny4ybXMgKy8tIDAuNSUgICAgIG5vdCBjb25jbHVzaXZlOiBtaWdodCBiZSAq
MS4wMDd4IGFzIHNsb3cqCiAgICB0YWdjbG91ZDogICAgICAgICAgKjEuMDI1eCBhcyBzbG93KiAg
IDkzLjJtcyArLy0gMC42JSAgICA5NS41bXMgKy8tIDAuNyUgICAgIHNpZ25pZmljYW50CiAgICB1
bnBhY2stY29kZTogICAgICAgPz8gICAgICAgICAgICAgICAgIDg0LjBtcyArLy0gMC40JSAgICA4
NC4ybXMgKy8tIDAuOSUgICAgIG5vdCBjb25jbHVzaXZlOiBtaWdodCBiZSAqMS4wMDJ4IGFzIHNs
b3cqCiAgICB2YWxpZGF0ZS1pbnB1dDogICAgLSAgICAgICAgICAgICAgICAgIDQzLjhtcyArLy0g
MS45JSAgICA0My42bXMgKy8tIDEuNiUgCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>23421</attachid>
            <date>2008-09-14 15:37:21 -0700</date>
            <delta_ts>2008-09-14 15:37:21 -0700</delta_ts>
            <desc>v8 tests results - ~13% progression.</desc>
            <filename>results.v8.36403.props.3.txt</filename>
            <type>text/plain</type>
            <size>3725</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">PT09IEJVSUxESU5HIEFHR1JFR0FURSBUQVJHRVQgRGVyaXZlZCBTb3VyY2VzIE9GIFBST0pFQ1Qg
SmF2YVNjcmlwdENvcmUgV0lUSCBDT05GSUdVUkFUSU9OIFJlbGVhc2UgPT09CgpDaGVja2luZyBE
ZXBlbmRlbmNpZXMuLi4KClBoYXNlU2NyaXB0RXhlY3V0aW9uICIvVXNlcnMvZ2F2aW4vRGVza3Rv
cC9OZXUvV2ViS2l0L1dlYktpdEJ1aWxkL0phdmFTY3JpcHRDb3JlLmJ1aWxkL1JlbGVhc2UvRGVy
aXZlZCBTb3VyY2VzLmJ1aWxkL1NjcmlwdC02NUZCM0Y2NTA5RDExRTkxMDBGNDlERUIuc2giCiAg
ICBjZCAvVXNlcnMvZ2F2aW4vRGVza3RvcC9OZXUvV2ViS2l0L0phdmFTY3JpcHRDb3JlCiAgICAv
YmluL3NoIC1jICJcIi9Vc2Vycy9nYXZpbi9EZXNrdG9wL05ldS9XZWJLaXQvV2ViS2l0QnVpbGQv
SmF2YVNjcmlwdENvcmUuYnVpbGQvUmVsZWFzZS9EZXJpdmVkIFNvdXJjZXMuYnVpbGQvU2NyaXB0
LTY1RkIzRjY1MDlEMTFFOTEwMEY0OURFQi5zaFwiIgptYWtlOiBOb3RoaW5nIHRvIGJlIGRvbmUg
Zm9yIGBhbGwnLgoKUGhhc2VTY3JpcHRFeGVjdXRpb24gIi9Vc2Vycy9nYXZpbi9EZXNrdG9wL05l
dS9XZWJLaXQvV2ViS2l0QnVpbGQvSmF2YVNjcmlwdENvcmUuYnVpbGQvUmVsZWFzZS9EZXJpdmVk
IFNvdXJjZXMuYnVpbGQvU2NyaXB0LTVEMzVERUUxMEM3QzE0MEIwMDg2NDhCMi5zaCIKICAgIGNk
IC9Vc2Vycy9nYXZpbi9EZXNrdG9wL05ldS9XZWJLaXQvSmF2YVNjcmlwdENvcmUKICAgIC9iaW4v
c2ggLWMgIlwiL1VzZXJzL2dhdmluL0Rlc2t0b3AvTmV1L1dlYktpdC9XZWJLaXRCdWlsZC9KYXZh
U2NyaXB0Q29yZS5idWlsZC9SZWxlYXNlL0Rlcml2ZWQgU291cmNlcy5idWlsZC9TY3JpcHQtNUQz
NURFRTEwQzdDMTQwQjAwODY0OEIyLnNoXCIiCgoKPT09IEJVSUxESU5HIE5BVElWRSBUQVJHRVQg
SmF2YVNjcmlwdENvcmUgT0YgUFJPSkVDVCBKYXZhU2NyaXB0Q29yZSBXSVRIIENPTkZJR1VSQVRJ
T04gUmVsZWFzZSA9PT0KCkNoZWNraW5nIERlcGVuZGVuY2llcy4uLgoKUGhhc2VTY3JpcHRFeGVj
dXRpb24gL1VzZXJzL2dhdmluL0Rlc2t0b3AvTmV1L1dlYktpdC9XZWJLaXRCdWlsZC9KYXZhU2Ny
aXB0Q29yZS5idWlsZC9SZWxlYXNlL0phdmFTY3JpcHRDb3JlLmJ1aWxkL1NjcmlwdC05MzE5NTg2
QjA5RDlGOTFBMDBBNTZGRDQuc2gKICAgIGNkIC9Vc2Vycy9nYXZpbi9EZXNrdG9wL05ldS9XZWJL
aXQvSmF2YVNjcmlwdENvcmUKICAgIC9iaW4vc2ggLWMgL1VzZXJzL2dhdmluL0Rlc2t0b3AvTmV1
L1dlYktpdC9XZWJLaXRCdWlsZC9KYXZhU2NyaXB0Q29yZS5idWlsZC9SZWxlYXNlL0phdmFTY3Jp
cHRDb3JlLmJ1aWxkL1NjcmlwdC05MzE5NTg2QjA5RDlGOTFBMDBBNTZGRDQuc2gKCgo9PT0gQlVJ
TERJTkcgTkFUSVZFIFRBUkdFVCBqc2MgT0YgUFJPSkVDVCBKYXZhU2NyaXB0Q29yZSBXSVRIIENP
TkZJR1VSQVRJT04gUmVsZWFzZSA9PT0KCkNoZWNraW5nIERlcGVuZGVuY2llcy4uLgoKUGhhc2VT
Y3JpcHRFeGVjdXRpb24gL1VzZXJzL2dhdmluL0Rlc2t0b3AvTmV1L1dlYktpdC9XZWJLaXRCdWls
ZC9KYXZhU2NyaXB0Q29yZS5idWlsZC9SZWxlYXNlL2pzYy5idWlsZC9TY3JpcHQtNUQ1RDhBQkYw
RTBEMEIwMzAwRjlDNjkyLnNoCiAgICBjZCAvVXNlcnMvZ2F2aW4vRGVza3RvcC9OZXUvV2ViS2l0
L0phdmFTY3JpcHRDb3JlCiAgICAvYmluL3NoIC1jIC9Vc2Vycy9nYXZpbi9EZXNrdG9wL05ldS9X
ZWJLaXQvV2ViS2l0QnVpbGQvSmF2YVNjcmlwdENvcmUuYnVpbGQvUmVsZWFzZS9qc2MuYnVpbGQv
U2NyaXB0LTVENUQ4QUJGMEUwRDBCMDMwMEY5QzY5Mi5zaAoqKiBCVUlMRCBTVUNDRUVERUQgKioK
U3RhcnRpbmcgc3Vuc3BpZGVyIHdpdGggRFlMRF9GUkFNRVdPUktfUEFUSCBzZXQgdG8gcG9pbnQg
dG8gYnVpbHQgSmF2YVNjcmlwdENvcmUgaW4gL1VzZXJzL2dhdmluL0Rlc2t0b3AvTmV1L1dlYktp
dC9XZWJLaXRCdWlsZC9SZWxlYXNlLgpEaXNjYXJkZWQgZmlyc3QgcnVuLgpbewogICAgInY4LWNy
eXB0byI6IDM4OSwKICAgICJ2OC1kZWx0YWJsdWUiOiAxNTAxLAogICAgInY4LWVhcmxleS1ib3ll
ciI6IDY2NSwKICAgICJ2OC1yYXl0cmFjZSI6IDEwNTUsCiAgICAidjgtcmljaGFyZHMiOiAxMjQ2
Cn0sCnsKICAgICJ2OC1jcnlwdG8iOiAzOTAsCiAgICAidjgtZGVsdGFibHVlIjogMTUwMiwKICAg
ICJ2OC1lYXJsZXktYm95ZXIiOiA2NjcsCiAgICAidjgtcmF5dHJhY2UiOiAxMDU2LAogICAgInY4
LXJpY2hhcmRzIjogMTIzOAp9LAp7CiAgICAidjgtY3J5cHRvIjogMzkwLAogICAgInY4LWRlbHRh
Ymx1ZSI6IDE1MDMsCiAgICAidjgtZWFybGV5LWJveWVyIjogNjYyLAogICAgInY4LXJheXRyYWNl
IjogMTA1MiwKICAgICJ2OC1yaWNoYXJkcyI6IDEyMzUKfSwKewogICAgInY4LWNyeXB0byI6IDM4
OSwKICAgICJ2OC1kZWx0YWJsdWUiOiAxNDk5LAogICAgInY4LWVhcmxleS1ib3llciI6IDY2MiwK
ICAgICJ2OC1yYXl0cmFjZSI6IDEwNTIsCiAgICAidjgtcmljaGFyZHMiOiAxMjM1Cn0sCnsKICAg
ICJ2OC1jcnlwdG8iOiAzODgsCiAgICAidjgtZGVsdGFibHVlIjogMTQ5OSwKICAgICJ2OC1lYXJs
ZXktYm95ZXIiOiA2NjEsCiAgICAidjgtcmF5dHJhY2UiOiAxMDUxLAogICAgInY4LXJpY2hhcmRz
IjogMTIzNgp9LAp7CiAgICAidjgtY3J5cHRvIjogMzg5LAogICAgInY4LWRlbHRhYmx1ZSI6IDE0
OTgsCiAgICAidjgtZWFybGV5LWJveWVyIjogNjYxLAogICAgInY4LXJheXRyYWNlIjogMTA1MSwK
ICAgICJ2OC1yaWNoYXJkcyI6IDEyMzUKfSwKewogICAgInY4LWNyeXB0byI6IDM4OSwKICAgICJ2
OC1kZWx0YWJsdWUiOiAxNTAyLAogICAgInY4LWVhcmxleS1ib3llciI6IDY2MiwKICAgICJ2OC1y
YXl0cmFjZSI6IDEwNDksCiAgICAidjgtcmljaGFyZHMiOiAxMjQ4Cn0sCnsKICAgICJ2OC1jcnlw
dG8iOiAzODksCiAgICAidjgtZGVsdGFibHVlIjogMTQ5OSwKICAgICJ2OC1lYXJsZXktYm95ZXIi
OiA2NjIsCiAgICAidjgtcmF5dHJhY2UiOiAxMDUyLAogICAgInY4LXJpY2hhcmRzIjogMTIzNQp9
LAp7CiAgICAidjgtY3J5cHRvIjogMzg5LAogICAgInY4LWRlbHRhYmx1ZSI6IDE1MDAsCiAgICAi
djgtZWFybGV5LWJveWVyIjogNjYxLAogICAgInY4LXJheXRyYWNlIjogMTA1MSwKICAgICJ2OC1y
aWNoYXJkcyI6IDEyMzUKfSwKewogICAgInY4LWNyeXB0byI6IDM4OSwKICAgICJ2OC1kZWx0YWJs
dWUiOiAxNDk5LAogICAgInY4LWVhcmxleS1ib3llciI6IDY2MSwKICAgICJ2OC1yYXl0cmFjZSI6
IDEwNTIsCiAgICAidjgtcmljaGFyZHMiOiAxMjM1Cn1dCgoKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KUkVTVUxUUyAobWVhbnMgYW5kIDk1JSBjb25maWRlbmNl
IGludGVydmFscykKLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K
VG90YWw6ICAgICAgICAgICAgIDQ4NDEuNm1zICsvLSAwLjElCi0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCgogIHY4OiAgICAgICAgICAgICAgNDg0MS42bXMgKy8t
IDAuMSUKICAgIGNyeXB0bzogICAgICAgICAzODkuMW1zICsvLSAwLjElCiAgICBkZWx0YWJsdWU6
ICAgICAxNTAwLjJtcyArLy0gMC4xJQogICAgZWFybGV5LWJveWVyOiAgIDY2Mi40bXMgKy8tIDAu
MiUKICAgIHJheXRyYWNlOiAgICAgIDEwNTIuMW1zICsvLSAwLjElCiAgICByaWNoYXJkczogICAg
ICAxMjM3LjhtcyArLy0gMC4zJQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>23422</attachid>
            <date>2008-09-14 15:37:56 -0700</date>
            <delta_ts>2008-09-14 15:37:56 -0700</delta_ts>
            <desc>v8 tests results - pre-patch.</desc>
            <filename>results.v8.36403.clean.3.txt</filename>
            <type>text/plain</type>
            <size>3738</size>
            <attacher name="Gavin Barraclough">barraclough</attacher>
            
              <data encoding="base64">PT09IEJVSUxESU5HIEFHR1JFR0FURSBUQVJHRVQgRGVyaXZlZCBTb3VyY2VzIE9GIFBST0pFQ1Qg
SmF2YVNjcmlwdENvcmUgV0lUSCBDT05GSUdVUkFUSU9OIFJlbGVhc2UgPT09CgpDaGVja2luZyBE
ZXBlbmRlbmNpZXMuLi4KClBoYXNlU2NyaXB0RXhlY3V0aW9uICIvVXNlcnMvZ2F2aW4vRGVza3Rv
cC9MaW9uL1dlYktpdC9XZWJLaXRCdWlsZC9KYXZhU2NyaXB0Q29yZS5idWlsZC9SZWxlYXNlL0Rl
cml2ZWQgU291cmNlcy5idWlsZC9TY3JpcHQtNjVGQjNGNjUwOUQxMUU5MTAwRjQ5REVCLnNoIgog
ICAgY2QgL1VzZXJzL2dhdmluL0Rlc2t0b3AvTGlvbi9XZWJLaXQvSmF2YVNjcmlwdENvcmUKICAg
IC9iaW4vc2ggLWMgIlwiL1VzZXJzL2dhdmluL0Rlc2t0b3AvTGlvbi9XZWJLaXQvV2ViS2l0QnVp
bGQvSmF2YVNjcmlwdENvcmUuYnVpbGQvUmVsZWFzZS9EZXJpdmVkIFNvdXJjZXMuYnVpbGQvU2Ny
aXB0LTY1RkIzRjY1MDlEMTFFOTEwMEY0OURFQi5zaFwiIgptYWtlOiBOb3RoaW5nIHRvIGJlIGRv
bmUgZm9yIGBhbGwnLgoKUGhhc2VTY3JpcHRFeGVjdXRpb24gIi9Vc2Vycy9nYXZpbi9EZXNrdG9w
L0xpb24vV2ViS2l0L1dlYktpdEJ1aWxkL0phdmFTY3JpcHRDb3JlLmJ1aWxkL1JlbGVhc2UvRGVy
aXZlZCBTb3VyY2VzLmJ1aWxkL1NjcmlwdC01RDM1REVFMTBDN0MxNDBCMDA4NjQ4QjIuc2giCiAg
ICBjZCAvVXNlcnMvZ2F2aW4vRGVza3RvcC9MaW9uL1dlYktpdC9KYXZhU2NyaXB0Q29yZQogICAg
L2Jpbi9zaCAtYyAiXCIvVXNlcnMvZ2F2aW4vRGVza3RvcC9MaW9uL1dlYktpdC9XZWJLaXRCdWls
ZC9KYXZhU2NyaXB0Q29yZS5idWlsZC9SZWxlYXNlL0Rlcml2ZWQgU291cmNlcy5idWlsZC9TY3Jp
cHQtNUQzNURFRTEwQzdDMTQwQjAwODY0OEIyLnNoXCIiCgoKPT09IEJVSUxESU5HIE5BVElWRSBU
QVJHRVQgSmF2YVNjcmlwdENvcmUgT0YgUFJPSkVDVCBKYXZhU2NyaXB0Q29yZSBXSVRIIENPTkZJ
R1VSQVRJT04gUmVsZWFzZSA9PT0KCkNoZWNraW5nIERlcGVuZGVuY2llcy4uLgoKUGhhc2VTY3Jp
cHRFeGVjdXRpb24gL1VzZXJzL2dhdmluL0Rlc2t0b3AvTGlvbi9XZWJLaXQvV2ViS2l0QnVpbGQv
SmF2YVNjcmlwdENvcmUuYnVpbGQvUmVsZWFzZS9KYXZhU2NyaXB0Q29yZS5idWlsZC9TY3JpcHQt
OTMxOTU4NkIwOUQ5RjkxQTAwQTU2RkQ0LnNoCiAgICBjZCAvVXNlcnMvZ2F2aW4vRGVza3RvcC9M
aW9uL1dlYktpdC9KYXZhU2NyaXB0Q29yZQogICAgL2Jpbi9zaCAtYyAvVXNlcnMvZ2F2aW4vRGVz
a3RvcC9MaW9uL1dlYktpdC9XZWJLaXRCdWlsZC9KYXZhU2NyaXB0Q29yZS5idWlsZC9SZWxlYXNl
L0phdmFTY3JpcHRDb3JlLmJ1aWxkL1NjcmlwdC05MzE5NTg2QjA5RDlGOTFBMDBBNTZGRDQuc2gK
Cgo9PT0gQlVJTERJTkcgTkFUSVZFIFRBUkdFVCBqc2MgT0YgUFJPSkVDVCBKYXZhU2NyaXB0Q29y
ZSBXSVRIIENPTkZJR1VSQVRJT04gUmVsZWFzZSA9PT0KCkNoZWNraW5nIERlcGVuZGVuY2llcy4u
LgoKUGhhc2VTY3JpcHRFeGVjdXRpb24gL1VzZXJzL2dhdmluL0Rlc2t0b3AvTGlvbi9XZWJLaXQv
V2ViS2l0QnVpbGQvSmF2YVNjcmlwdENvcmUuYnVpbGQvUmVsZWFzZS9qc2MuYnVpbGQvU2NyaXB0
LTVENUQ4QUJGMEUwRDBCMDMwMEY5QzY5Mi5zaAogICAgY2QgL1VzZXJzL2dhdmluL0Rlc2t0b3Av
TGlvbi9XZWJLaXQvSmF2YVNjcmlwdENvcmUKICAgIC9iaW4vc2ggLWMgL1VzZXJzL2dhdmluL0Rl
c2t0b3AvTGlvbi9XZWJLaXQvV2ViS2l0QnVpbGQvSmF2YVNjcmlwdENvcmUuYnVpbGQvUmVsZWFz
ZS9qc2MuYnVpbGQvU2NyaXB0LTVENUQ4QUJGMEUwRDBCMDMwMEY5QzY5Mi5zaAoqKiBCVUlMRCBT
VUNDRUVERUQgKioKU3RhcnRpbmcgc3Vuc3BpZGVyIHdpdGggRFlMRF9GUkFNRVdPUktfUEFUSCBz
ZXQgdG8gcG9pbnQgdG8gYnVpbHQgSmF2YVNjcmlwdENvcmUgaW4gL1VzZXJzL2dhdmluL0Rlc2t0
b3AvTGlvbi9XZWJLaXQvV2ViS2l0QnVpbGQvUmVsZWFzZS4KRGlzY2FyZGVkIGZpcnN0IHJ1bi4K
W3sKICAgICJ2OC1jcnlwdG8iOiA0MjQsCiAgICAidjgtZGVsdGFibHVlIjogMTc5NSwKICAgICJ2
OC1lYXJsZXktYm95ZXIiOiA2NjUsCiAgICAidjgtcmF5dHJhY2UiOiAxMTAxLAogICAgInY4LXJp
Y2hhcmRzIjogMTUzNAp9LAp7CiAgICAidjgtY3J5cHRvIjogNDI0LAogICAgInY4LWRlbHRhYmx1
ZSI6IDE3OTIsCiAgICAidjgtZWFybGV5LWJveWVyIjogNjY1LAogICAgInY4LXJheXRyYWNlIjog
MTEwMCwKICAgICJ2OC1yaWNoYXJkcyI6IDE1MzIKfSwKewogICAgInY4LWNyeXB0byI6IDQyNCwK
ICAgICJ2OC1kZWx0YWJsdWUiOiAxNzkwLAogICAgInY4LWVhcmxleS1ib3llciI6IDY2NSwKICAg
ICJ2OC1yYXl0cmFjZSI6IDEwOTksCiAgICAidjgtcmljaGFyZHMiOiAxNTMyCn0sCnsKICAgICJ2
OC1jcnlwdG8iOiA0MjQsCiAgICAidjgtZGVsdGFibHVlIjogMTc5MCwKICAgICJ2OC1lYXJsZXkt
Ym95ZXIiOiA2NjUsCiAgICAidjgtcmF5dHJhY2UiOiAxMDk4LAogICAgInY4LXJpY2hhcmRzIjog
MTU0MAp9LAp7CiAgICAidjgtY3J5cHRvIjogNDI4LAogICAgInY4LWRlbHRhYmx1ZSI6IDE4MDQs
CiAgICAidjgtZWFybGV5LWJveWVyIjogNjY2LAogICAgInY4LXJheXRyYWNlIjogMTEwMSwKICAg
ICJ2OC1yaWNoYXJkcyI6IDE1MzMKfSwKewogICAgInY4LWNyeXB0byI6IDQyNCwKICAgICJ2OC1k
ZWx0YWJsdWUiOiAxNzk0LAogICAgInY4LWVhcmxleS1ib3llciI6IDY2OCwKICAgICJ2OC1yYXl0
cmFjZSI6IDExMTMsCiAgICAidjgtcmljaGFyZHMiOiAxNTM4Cn0sCnsKICAgICJ2OC1jcnlwdG8i
OiA0MjgsCiAgICAidjgtZGVsdGFibHVlIjogMTgwMSwKICAgICJ2OC1lYXJsZXktYm95ZXIiOiA2
NjcsCiAgICAidjgtcmF5dHJhY2UiOiAxMTA0LAogICAgInY4LXJpY2hhcmRzIjogMTUzNgp9LAp7
CiAgICAidjgtY3J5cHRvIjogNDI1LAogICAgInY4LWRlbHRhYmx1ZSI6IDE3OTcsCiAgICAidjgt
ZWFybGV5LWJveWVyIjogNjY3LAogICAgInY4LXJheXRyYWNlIjogMTEwNCwKICAgICJ2OC1yaWNo
YXJkcyI6IDE1MzkKfSwKewogICAgInY4LWNyeXB0byI6IDQyNywKICAgICJ2OC1kZWx0YWJsdWUi
OiAxODAyLAogICAgInY4LWVhcmxleS1ib3llciI6IDY2OCwKICAgICJ2OC1yYXl0cmFjZSI6IDEw
OTksCiAgICAidjgtcmljaGFyZHMiOiAxNTM3Cn0sCnsKICAgICJ2OC1jcnlwdG8iOiA0MjYsCiAg
ICAidjgtZGVsdGFibHVlIjogMTgwMiwKICAgICJ2OC1lYXJsZXktYm95ZXIiOiA2NjQsCiAgICAi
djgtcmF5dHJhY2UiOiAxMTI0LAogICAgInY4LXJpY2hhcmRzIjogMTU3Nwp9XQoKCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09ClJFU1VMVFMgKG1lYW5zIGFuZCA5
NSUgY29uZmlkZW5jZSBpbnRlcnZhbHMpCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tClRvdGFsOiAgICAgICAgICAgICA1NTMyLjJtcyArLy0gMC4zJQotLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKICB2ODogICAgICAgICAgICAg
IDU1MzIuMm1zICsvLSAwLjMlCiAgICBjcnlwdG86ICAgICAgICAgNDI1LjRtcyArLy0gMC4zJQog
ICAgZGVsdGFibHVlOiAgICAgMTc5Ni43bXMgKy8tIDAuMiUKICAgIGVhcmxleS1ib3llcjogICA2
NjYuMG1zICsvLSAwLjIlCiAgICByYXl0cmFjZTogICAgICAxMTA0LjNtcyArLy0gMC41JQogICAg
cmljaGFyZHM6ICAgICAgMTUzOS44bXMgKy8tIDAuNiUK
</data>

          </attachment>
      

    </bug>

</bugzilla>