<?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>79393</bug_id>
          
          <creation_ts>2012-02-23 13:12:53 -0800</creation_ts>
          <short_desc>[BlackBerry] Eliminate excessive BlackBerry::Platform use in InputHandler</short_desc>
          <delta_ts>2012-02-24 08:33:27 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>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>0</everconfirmed>
          <reporter name="Mike Fenton">mifenton</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>563397</commentid>
    <comment_count>0</comment_count>
    <who name="Mike Fenton">mifenton</who>
    <bug_when>2012-02-23 13:12:53 -0800</bug_when>
    <thetext>Clean up BlackBerry::Platform usage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>563414</commentid>
    <comment_count>1</comment_count>
      <attachid>128544</attachid>
    <who name="Mike Fenton">mifenton</who>
    <bug_when>2012-02-23 13:32:01 -0800</bug_when>
    <thetext>Created attachment 128544
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564306</commentid>
    <comment_count>2</comment_count>
      <attachid>128729</attachid>
    <who name="Mike Fenton">mifenton</who>
    <bug_when>2012-02-24 07:06:12 -0800</bug_when>
    <thetext>Created attachment 128729
Patch 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564339</commentid>
    <comment_count>3</comment_count>
      <attachid>128729</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-24 08:33:23 -0800</bug_when>
    <thetext>Comment on attachment 128729
Patch 2

Clearing flags on attachment: 128729

Committed r108803: &lt;http://trac.webkit.org/changeset/108803&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>564340</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-02-24 08:33:27 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128544</attachid>
            <date>2012-02-23 13:32:01 -0800</date>
            <delta_ts>2012-02-23 13:44:45 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>0001-2012-02-23-Mike-Fenton-mifenton-rim.com.patch</filename>
            <type>text/plain</type>
            <size>26064</size>
            <attacher name="Mike Fenton">mifenton</attacher>
            
              <data encoding="base64">RnJvbSA4ZTZmZWVkNmI0ZDgwZmI5N2UyZjk5NTY4NGYxNWE1YjJmMjUxYzkwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtlIEZlbnRvbiA8bWlmZW50b25AcmltLmNvbT4KRGF0ZTog
VGh1LCAyMyBGZWIgMjAxMiAxNjowNToyNiAtMDUwMApTdWJqZWN0OiBbUEFUQ0hdIDIwMTItMDIt
MjMgIE1pa2UgRmVudG9uICA8bWlmZW50b25AcmltLmNvbT4KCiAgICAgICAgQ2xlYW51cCB1c2Fn
ZSBvZiBCbGFja0JlcnJ5OjpQbGF0Zm9ybSBpbiBJbnB1dEhhbmRsZXIuCgogICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICAqIFdlYktpdFN1cHBvcnQvSW5wdXRIYW5k
bGVyLmNwcDoKICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0Ojpjb252ZXJ0U3RyaW5nVG9XY2hh
cik6CiAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6Y29udmVydFN0cmluZ1RvV2NoYXJWZWN0
b3IpOgogICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OmNvbnZlcnRTcGFubmFibGVTdHJpbmdU
b1N0cmluZyk6CiAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6SW5wdXRIYW5kbGVyOjpsZWFy
blRleHQpOgogICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6c2V0RWxl
bWVudFVuZm9jdXNlZCk6CiAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6SW5wdXRIYW5kbGVy
OjpzaG91bGRBY2NlcHRJbnB1dEZvY3VzKToKICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJ
bnB1dEhhbmRsZXI6OnNldEVsZW1lbnRGb2N1c2VkKToKICAgICAgICAoQmxhY2tCZXJyeTo6V2Vi
S2l0OjpJbnB1dEhhbmRsZXI6Om5vZGVUZXh0Q2hhbmdlZCk6CiAgICAgICAgKEJsYWNrQmVycnk6
OldlYktpdDo6SW5wdXRIYW5kbGVyOjplbnN1cmVGb2N1c1RleHRFbGVtZW50VmlzaWJsZSk6CiAg
ICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6SW5wdXRIYW5kbGVyOjpmcmFtZVVubG9hZGVkKToK
ICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1dEhhbmRsZXI6OnNlbGVjdGlvbkNoYW5n
ZWQpOgogICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6c2V0U2VsZWN0
aW9uKToKICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1dEhhbmRsZXI6OmhhbmRsZUtl
eWJvYXJkSW5wdXQpOgogICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6
ZGVsZXRlVGV4dFJlbGF0aXZlVG9DdXJzb3IpOgogICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6
OklucHV0SGFuZGxlcjo6ZGVsZXRlVGV4dCk6CiAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6
SW5wdXRIYW5kbGVyOjpzcGFubmFibGVUZXh0SW5SYW5nZSk6CiAgICAgICAgKEJsYWNrQmVycnk6
OldlYktpdDo6SW5wdXRIYW5kbGVyOjpzZXRDb21wb3NpbmdSZWdpb24pOgogICAgICAgIChCbGFj
a0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6ZmluaXNoQ29tcG9zaXRpb24pOgogICAgICAg
IChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6c2V0VGV4dCk6CiAgICAgICAgKEJs
YWNrQmVycnk6OldlYktpdDo6SW5wdXRIYW5kbGVyOjpzZXRUZXh0QXR0cmlidXRlcyk6CiAgICAg
ICAgKEJsYWNrQmVycnk6OldlYktpdDo6SW5wdXRIYW5kbGVyOjpzZXRSZWxhdGl2ZUN1cnNvclBv
c2l0aW9uKToKICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1dEhhbmRsZXI6OnNldFNw
YW5uYWJsZVRleHRBbmRSZWxhdGl2ZUN1cnNvcik6CiAgICAgICAgKEJsYWNrQmVycnk6OldlYktp
dDo6SW5wdXRIYW5kbGVyOjpzZXRDb21wb3NpbmdUZXh0KToKICAgICAgICAoQmxhY2tCZXJyeTo6
V2ViS2l0OjpJbnB1dEhhbmRsZXI6OmNvbW1pdFRleHQpOgotLS0KIFNvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgIHwgICAzNSArKysrKysKIC4uLi9ibGFj
a2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5wdXRIYW5kbGVyLmNwcCAgICAgIHwgIDExMCArKysrKysr
KysrLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA5MCBpbnNlcnRpb25zKCspLCA1NSBkZWxl
dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwppbmRleCBiYzM3ZjdmLi45Nzgy
NGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw0MCBAQAogMjAx
Mi0wMi0yMyAgTWlrZSBGZW50b24gIDxtaWZlbnRvbkByaW0uY29tPgogCisgICAgICAgIFtCbGFj
a0JlcnJ5XSBFbGltaW5hdGUgZXhjZXNzaXZlIEJsYWNrQmVycnk6OlBsYXRmb3JtIHVzZSBpbiBJ
bnB1dEhhbmRsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc5MzkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQ2xlYW51cCB1c2FnZSBvZiBCbGFja0JlcnJ5OjpQbGF0Zm9ybSBpbiBJbnB1dEhhbmRsZXIu
CisKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxlci5jcHA6CisgICAgICAgIChC
bGFja0JlcnJ5OjpXZWJLaXQ6OmNvbnZlcnRTdHJpbmdUb1djaGFyKToKKyAgICAgICAgKEJsYWNr
QmVycnk6OldlYktpdDo6Y29udmVydFN0cmluZ1RvV2NoYXJWZWN0b3IpOgorICAgICAgICAoQmxh
Y2tCZXJyeTo6V2ViS2l0Ojpjb252ZXJ0U3Bhbm5hYmxlU3RyaW5nVG9TdHJpbmcpOgorICAgICAg
ICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1dEhhbmRsZXI6OmxlYXJuVGV4dCk6CisgICAgICAg
IChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6c2V0RWxlbWVudFVuZm9jdXNlZCk6
CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6c2hvdWxkQWNjZXB0
SW5wdXRGb2N1cyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6
c2V0RWxlbWVudEZvY3VzZWQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1dEhh
bmRsZXI6Om5vZGVUZXh0Q2hhbmdlZCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6Oklu
cHV0SGFuZGxlcjo6ZW5zdXJlRm9jdXNUZXh0RWxlbWVudFZpc2libGUpOgorICAgICAgICAoQmxh
Y2tCZXJyeTo6V2ViS2l0OjpJbnB1dEhhbmRsZXI6OmZyYW1lVW5sb2FkZWQpOgorICAgICAgICAo
QmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1dEhhbmRsZXI6OnNlbGVjdGlvbkNoYW5nZWQpOgorICAg
ICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1dEhhbmRsZXI6OnNldFNlbGVjdGlvbik6Cisg
ICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6aGFuZGxlS2V5Ym9hcmRJ
bnB1dCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6ZGVsZXRl
VGV4dFJlbGF0aXZlVG9DdXJzb3IpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1
dEhhbmRsZXI6OmRlbGV0ZVRleHQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1
dEhhbmRsZXI6OnNwYW5uYWJsZVRleHRJblJhbmdlKToKKyAgICAgICAgKEJsYWNrQmVycnk6Oldl
YktpdDo6SW5wdXRIYW5kbGVyOjpzZXRDb21wb3NpbmdSZWdpb24pOgorICAgICAgICAoQmxhY2tC
ZXJyeTo6V2ViS2l0OjpJbnB1dEhhbmRsZXI6OmZpbmlzaENvbXBvc2l0aW9uKToKKyAgICAgICAg
KEJsYWNrQmVycnk6OldlYktpdDo6SW5wdXRIYW5kbGVyOjpzZXRUZXh0KToKKyAgICAgICAgKEJs
YWNrQmVycnk6OldlYktpdDo6SW5wdXRIYW5kbGVyOjpzZXRUZXh0QXR0cmlidXRlcyk6CisgICAg
ICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6c2V0UmVsYXRpdmVDdXJzb3JQ
b3NpdGlvbik6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6c2V0
U3Bhbm5hYmxlVGV4dEFuZFJlbGF0aXZlQ3Vyc29yKToKKyAgICAgICAgKEJsYWNrQmVycnk6Oldl
YktpdDo6SW5wdXRIYW5kbGVyOjpzZXRDb21wb3NpbmdUZXh0KToKKyAgICAgICAgKEJsYWNrQmVy
cnk6OldlYktpdDo6SW5wdXRIYW5kbGVyOjpjb21taXRUZXh0KToKKworMjAxMi0wMi0yMyAgTWlr
ZSBGZW50b24gIDxtaWZlbnRvbkByaW0uY29tPgorCiAgICAgICAgIFtCbGFja0JlcnJ5XSBFbGlt
aW5hdGUgZXhjZXNzaXZlIEJsYWNrQmVycnk6OlBsYXRmb3JtIHVzZSBpbiBTZWxlY3Rpb25IYW5k
bGVyLgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzkz
OTEKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQv
SW5wdXRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0
L0lucHV0SGFuZGxlci5jcHAKaW5kZXggOGNhYTQ1Yi4uOWI2MGEwMiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5wdXRIYW5kbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9JbnB1dEhhbmRsZXIuY3Bw
CkBAIC02NCwyMyArNjQsMjMgQEAKICNkZWZpbmUgRU5BQkxFX0lOUFVUX0xPRyAwCiAjZGVmaW5l
IEVOQUJMRV9GT0NVU19MT0cgMAogCitzdGF0aWMgY29uc3QgaW50IE1heExlYXJuVGV4dERhdGFT
aXplID0gNTAwOworCit1c2luZyBuYW1lc3BhY2UgQmxhY2tCZXJyeTo6UGxhdGZvcm07Cit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwogI2lmIEVOQUJMRV9JTlBVVF9MT0cKLSNkZWZpbmUgSW5w
dXRMb2coc2V2ZXJpdHksIGZvcm1hdCwgLi4uKSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6bG9nQWx3
YXlzKHNldmVyaXR5LCBmb3JtYXQsICMjIF9fVkFfQVJHU19fKQorI2RlZmluZSBJbnB1dExvZyhz
ZXZlcml0eSwgZm9ybWF0LCAuLi4pIGxvZ0Fsd2F5cyhzZXZlcml0eSwgZm9ybWF0LCAjIyBfX1ZB
X0FSR1NfXykKICNlbHNlCiAjZGVmaW5lIElucHV0TG9nKHNldmVyaXR5LCBmb3JtYXQsIC4uLikK
ICNlbmRpZiAvLyBFTkFCTEVfSU5QVVRfTE9HCiAKICNpZiBFTkFCTEVfRk9DVVNfTE9HCi0jZGVm
aW5lIEZvY3VzTG9nKHNldmVyaXR5LCBmb3JtYXQsIC4uLikgQmxhY2tCZXJyeTo6UGxhdGZvcm06
OmxvZ0Fsd2F5cyhzZXZlcml0eSwgZm9ybWF0LCAjIyBfX1ZBX0FSR1NfXykKKyNkZWZpbmUgRm9j
dXNMb2coc2V2ZXJpdHksIGZvcm1hdCwgLi4uKSBsb2dBbHdheXMoc2V2ZXJpdHksIGZvcm1hdCwg
IyMgX19WQV9BUkdTX18pCiAjZWxzZQogI2RlZmluZSBGb2N1c0xvZyhzZXZlcml0eSwgZm9ybWF0
LCAuLi4pCiAjZW5kaWYgLy8gRU5BQkxFX0ZPQ1VTX0xPRwogCi1zdGF0aWMgY29uc3QgaW50IE1h
eExlYXJuVGV4dERhdGFTaXplID0gNTAwOwotCi11c2luZyBuYW1lc3BhY2UgQmxhY2tCZXJyeTo6
UGxhdGZvcm07Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQogbmFtZXNwYWNlIEJsYWNrQmVy
cnkgewogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTI5OCw3ICsyOTgsNyBAQCBzdGF0aWMgYm9v
bCBjb252ZXJ0U3RyaW5nVG9XY2hhcihjb25zdCBTdHJpbmcmIHN0cmluZywgd2NoYXJfdCogZGVz
dCwgaW50IGRlc3RDYQogICAgIC8vIHdjaGFyX3Qgc3RyaW5ncyBzZW50IHRvIElNRiBhcmUgMzIg
Yml0IHNvIGNhc3RpbmcgdG8gVUNoYXIzMiBpcyBzYWZlLgogICAgIHVfc3RyVG9VVEYzMihyZWlu
dGVycHJldF9jYXN0PFVDaGFyMzIqPihkZXN0KSwgZGVzdENhcGFjaXR5LCBkZXN0TGVuZ3RoLCBz
dHJpbmcuY2hhcmFjdGVycygpLCBzdHJpbmcubGVuZ3RoKCksICZlYyk7CiAgICAgaWYgKGVjKSB7
Ci0gICAgICAgIElucHV0TG9nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbEluZm8sICJJ
bnB1dEhhbmRsZXI6OmNvbnZlcnRTdHJpbmdUb1djaGFyIEVycm9yIGNvbnZlcnRpbmcgc3RyaW5n
IGVjICglZCkuIiwgZWMpOworICAgICAgICBJbnB1dExvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZv
LCAiSW5wdXRIYW5kbGVyOjpjb252ZXJ0U3RyaW5nVG9XY2hhciBFcnJvciBjb252ZXJ0aW5nIHN0
cmluZyBlYyAoJWQpLiIsIGVjKTsKICAgICAgICAgZGVzdExlbmd0aCA9IDA7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKICAgICB9CkBAIC0zMTQsNyArMzE0LDcgQEAgc3RhdGljIGJvb2wgY29udmVy
dFN0cmluZ1RvV2NoYXJWZWN0b3IoY29uc3QgU3RyaW5nJiBzdHJpbmcsIFdURjo6VmVjdG9yPHdj
aGFyX3QKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICBpZiAoIXdjaGFyU3RyaW5nLnRyeVJl
c2VydmVDYXBhY2l0eShsZW5ndGggKyAxKSkgewotICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6bG9nQWx3YXlzKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbFdhcm4sICJJbnB1dEhh
bmRsZXI6OmNvbnZlcnRTdHJpbmdUb1djaGFyVmVjdG9yIENhbm5vdCBhbGxvY2F0ZSBtZW1vcnkg
Zm9yIHN0cmluZy5cbiIpOworICAgICAgICBQbGF0Zm9ybTo6bG9nQWx3YXlzKFBsYXRmb3JtOjpM
b2dMZXZlbFdhcm4sICJJbnB1dEhhbmRsZXI6OmNvbnZlcnRTdHJpbmdUb1djaGFyVmVjdG9yIENh
bm5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIHN0cmluZy5cbiIpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCkBAIC0zMzQsNyArMzM0LDcgQEAgc3RhdGljIFN0cmluZyBjb252ZXJ0U3Bh
bm5hYmxlU3RyaW5nVG9TdHJpbmcoc3Bhbm5hYmxlX3N0cmluZ190KiBzcmMpCiAgICAgV1RGOjpW
ZWN0b3I8VUNoYXI+IGRlc3Q7CiAgICAgaW50IGRlc3RDYXBhY2l0eSA9IChzcmMtPmxlbmd0aCAq
IDIpICsgMTsKICAgICBpZiAoIWRlc3QudHJ5UmVzZXJ2ZUNhcGFjaXR5KGRlc3RDYXBhY2l0eSkp
IHsKLSAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OmxvZ0Fsd2F5cyhCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6TG9nTGV2ZWxXYXJuLCAiSW5wdXRIYW5kbGVyOjpjb252ZXJ0U3Bhbm5hYmxlU3Ry
aW5nVG9TdHJpbmcgQ2Fubm90IGFsbG9jYXRlIG1lbW9yeSBmb3Igc3RyaW5nLlxuIik7CisgICAg
ICAgIFBsYXRmb3JtOjpsb2dBbHdheXMoUGxhdGZvcm06OkxvZ0xldmVsV2FybiwgIklucHV0SGFu
ZGxlcjo6Y29udmVydFNwYW5uYWJsZVN0cmluZ1RvU3RyaW5nIENhbm5vdCBhbGxvY2F0ZSBtZW1v
cnkgZm9yIHN0cmluZy5cbiIpOwogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgfQogCkBA
IC0zNDMsNyArMzQzLDcgQEAgc3RhdGljIFN0cmluZyBjb252ZXJ0U3Bhbm5hYmxlU3RyaW5nVG9T
dHJpbmcoc3Bhbm5hYmxlX3N0cmluZ190KiBzcmMpCiAgICAgLy8gd2NoYXJfdCBzdHJpbmdzIHNl
bnQgZnJvbSBJTUYgYXJlIDMyIGJpdCBzbyBjYXN0aW5nIHRvIFVDaGFyMzIgaXMgc2FmZS4KICAg
ICB1X3N0ckZyb21VVEYzMihkZXN0LmRhdGEoKSwgZGVzdENhcGFjaXR5LCAmZGVzdExlbmd0aCwg
cmVpbnRlcnByZXRfY2FzdDxVQ2hhcjMyKj4oc3JjLT5zdHIpLCBzcmMtPmxlbmd0aCwgJmVjKTsK
ICAgICBpZiAoZWMpIHsKLSAgICAgICAgSW5wdXRMb2coQmxhY2tCZXJyeTo6UGxhdGZvcm06Okxv
Z0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6Y29udmVydFNwYW5uYWJsZVN0cmluZ1RvU3RyaW5n
IEVycm9yIGNvbnZlcnRpbmcgc3RyaW5nIGVjICglZCkuIiwgZWMpOworICAgICAgICBJbnB1dExv
ZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpjb252ZXJ0U3Bhbm5hYmxl
U3RyaW5nVG9TdHJpbmcgRXJyb3IgY29udmVydGluZyBzdHJpbmcgZWMgKCVkKS4iLCBlYyk7CiAg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICB9CiAgICAgZGVzdC5yZXNpemUoZGVzdExlbmd0
aCk7CkBAIC0zNzksMTQgKzM3OSwxNCBAQCB2b2lkIElucHV0SGFuZGxlcjo6bGVhcm5UZXh0KCkK
ICAgICBpZiAodGV4dEluRmllbGQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBJ
bnB1dExvZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVy
OjpsZWFyblRleHQgJXMiLCB0ZXh0SW5GaWVsZC5sYXRpbjEoKS5kYXRhKCkpOworICAgIElucHV0
TG9nKFBsYXRmb3JtOjpMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6OmxlYXJuVGV4dCAlcyIs
IHRleHRJbkZpZWxkLmxhdGluMSgpLmRhdGEoKSk7CiAgICAgc2VuZExlYXJuVGV4dERldGFpbHMo
dGV4dEluRmllbGQpOwogfQogCiB2b2lkIElucHV0SGFuZGxlcjo6c2V0RWxlbWVudFVuZm9jdXNl
ZChib29sIHJlZm9jdXNPY2N1cmluZykKIHsKICAgICBpZiAoaXNBY3RpdmVUZXh0RWRpdCgpKSB7
Ci0gICAgICAgIEZvY3VzTG9nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbEluZm8sICJJ
bnB1dEhhbmRsZXI6OnNldEVsZW1lbnRVbmZvY3VzZWQiKTsKKyAgICAgICAgRm9jdXNMb2coUGxh
dGZvcm06OkxvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6c2V0RWxlbWVudFVuZm9jdXNlZCIp
OwogCiAgICAgICAgIC8vIFBhc3MgYW55IHRleHQgaW50byB0aGUgZmllbGQgdG8gSU1GIHRvIGxl
YXJuLgogICAgICAgICBsZWFyblRleHQoKTsKQEAgLTQxMywzNiArNDEzLDM2IEBAIGJvb2wgSW5w
dXRIYW5kbGVyOjpzaG91bGRBY2NlcHRJbnB1dEZvY3VzKCkKICAgICBpZiAobV93ZWJQYWdlLT5t
X2R1bXBSZW5kZXJUcmVlKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6U2V0dGluZ3M6OmdldCgpLT5hbHdheXNTaG93S2V5Ym9hcmRPbkZvY3Vz
KCkpIHsKLSAgICAgICAgRm9jdXNMb2coQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsSW5m
bywgIklucHV0SGFuZGxlcjo6c2hvdWxkQWNjZXB0SW5wdXRGb2N1cyBhbHdheXNTaG93S2V5Ym9h
cmRPbkZvY3VzIGlzIGFjdGl2ZS4iKTsKKyAgICBpZiAoUGxhdGZvcm06OlNldHRpbmdzOjpnZXQo
KS0+YWx3YXlzU2hvd0tleWJvYXJkT25Gb2N1cygpKSB7CisgICAgICAgIEZvY3VzTG9nKFBsYXRm
b3JtOjpMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6OnNob3VsZEFjY2VwdElucHV0Rm9jdXMg
YWx3YXlzU2hvd0tleWJvYXJkT25Gb2N1cyBpcyBhY3RpdmUuIik7CiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIAogICAgIEZyYW1lKiBmb2N1c2VkRnJhbWUgPSBtX3dlYlBhZ2UtPmZvY3Vz
ZWRPck1haW5GcmFtZSgpOwogICAgIGlmICghZm9jdXNlZEZyYW1lKSB7Ci0gICAgICAgIEZvY3Vz
TG9nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6OnNo
b3VsZEFjY2VwdElucHV0Rm9jdXMgRnJhbWUgbm90IHZhbGlkLiIpOworICAgICAgICBGb2N1c0xv
ZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpzaG91bGRBY2NlcHRJbnB1
dEZvY3VzIEZyYW1lIG5vdCB2YWxpZC4iKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0K
IAogICAgIC8vIEFueSB1c2VyIGFjdGlvbiBzaG91bGQgYmUgcmVzcGVjdGVkLiBNb3VzZSB3aWxs
IGJlIGRvd24gd2hlbiB0b3VjaCBpcwogICAgIC8vIHVzZWQgdG8gZm9jdXMuCiAgICAgaWYgKGZv
Y3VzZWRGcmFtZS0+ZXZlbnRIYW5kbGVyKCktPm1vdXNlUHJlc3NlZCgpKSB7Ci0gICAgICAgIEZv
Y3VzTG9nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6
OnNob3VsZEFjY2VwdElucHV0Rm9jdXMgTW91c2UgaXMgcHJlc3NlZCBmb2N1c2luZy4iKTsKKyAg
ICAgICAgRm9jdXNMb2coUGxhdGZvcm06OkxvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6c2hv
dWxkQWNjZXB0SW5wdXRGb2N1cyBNb3VzZSBpcyBwcmVzc2VkIGZvY3VzaW5nLiIpOwogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKICAgICBpZiAoIW1fd2ViUGFnZS0+bV9jbGllbnQtPmhh
c0tleWJvYXJkRm9jdXMoKSkgewotICAgICAgICBGb2N1c0xvZyhCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6TG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpzaG91bGRBY2NlcHRJbnB1dEZvY3VzIENs
aWVudCBkb2VzIG5vdCBoYXZlIGlucHV0IGZvY3VzLiIpOworICAgICAgICBGb2N1c0xvZyhQbGF0
Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpzaG91bGRBY2NlcHRJbnB1dEZvY3Vz
IENsaWVudCBkb2VzIG5vdCBoYXZlIGlucHV0IGZvY3VzLiIpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCiAgICAgaWYgKG1fd2ViUGFnZS0+aXNMb2FkaW5nKCkpIHsKLSAgICAgICAg
Rm9jdXNMb2coQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsSW5mbywgIklucHV0SGFuZGxl
cjo6c2hvdWxkQWNjZXB0SW5wdXRGb2N1cyBXZWJwYWdlIGlzIGxvYWRpbmcuIik7CisgICAgICAg
IEZvY3VzTG9nKFBsYXRmb3JtOjpMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6OnNob3VsZEFj
Y2VwdElucHV0Rm9jdXMgV2VicGFnZSBpcyBsb2FkaW5nLiIpOwogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCiAgICAgLy8gTWFrZSBzdXJlIHRoZSBmb2N1c2VkIGZyYW1lIGlzIG5vdCBw
cm9jZXNzaW5nIGxvYWQgZXZlbnRzLgotICAgIEZvY3VzTG9nKEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6OnNob3VsZEFjY2VwdElucHV0Rm9jdXMgcmV0
dXJuaW5nIHN0YXRlIG9mIHByb2Nlc3NpbmdMb2FkRXZlbnQgKCVzKS4iLCAhZm9jdXNlZEZyYW1l
LT5kb2N1bWVudCgpLT5wcm9jZXNzaW5nTG9hZEV2ZW50KCkgPyAidHJ1ZSIgOiAiZmFsc2UiKTsK
KyAgICBGb2N1c0xvZyhQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpzaG91
bGRBY2NlcHRJbnB1dEZvY3VzIHJldHVybmluZyBzdGF0ZSBvZiBwcm9jZXNzaW5nTG9hZEV2ZW50
ICglcykuIiwgIWZvY3VzZWRGcmFtZS0+ZG9jdW1lbnQoKS0+cHJvY2Vzc2luZ0xvYWRFdmVudCgp
ID8gInRydWUiIDogImZhbHNlIik7CiAgICAgcmV0dXJuICFmb2N1c2VkRnJhbWUtPmRvY3VtZW50
KCktPnByb2Nlc3NpbmdMb2FkRXZlbnQoKTsKIH0KIApAQCAtNDc0LDcgKzQ3NCw3IEBAIHZvaWQg
SW5wdXRIYW5kbGVyOjpzZXRFbGVtZW50Rm9jdXNlZChFbGVtZW50KiBlbGVtZW50KQogICAgIEJs
YWNrQmVycnlJbnB1dFR5cGUgdHlwZSA9IGVsZW1lbnRUeXBlKGVsZW1lbnQpOwogICAgIG1fY3Vy
cmVudEZvY3VzRWxlbWVudFRleHRFZGl0TWFzayA9IGlucHV0U3R5bGUodHlwZSwgZWxlbWVudCk7
CiAKLSAgICBGb2N1c0xvZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiSW5w
dXRIYW5kbGVyOjpzZXRFbGVtZW50Rm9jdXNlZCwgVHlwZT0lZCwgU3R5bGU9JWQiLCB0eXBlLCBt
X2N1cnJlbnRGb2N1c0VsZW1lbnRUZXh0RWRpdE1hc2spOworICAgIEZvY3VzTG9nKFBsYXRmb3Jt
OjpMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6OnNldEVsZW1lbnRGb2N1c2VkLCBUeXBlPSVk
LCBTdHlsZT0lZCIsIHR5cGUsIG1fY3VycmVudEZvY3VzRWxlbWVudFRleHRFZGl0TWFzayk7CiAK
ICAgICBtX3dlYlBhZ2UtPm1fY2xpZW50LT5pbnB1dEZvY3VzR2FpbmVkKHR5cGUsCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2N1cnJlbnRGb2N1c0VsZW1lbnRU
ZXh0RWRpdE1hc2ssCkBAIC01MzYsNyArNTM2LDcgQEAgdm9pZCBJbnB1dEhhbmRsZXI6Om5vZGVU
ZXh0Q2hhbmdlZChjb25zdCBOb2RlKiBub2RlKQogICAgIGlmIChub2RlICE9IG1fY3VycmVudEZv
Y3VzRWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgSW5wdXRMb2coQmxhY2tCZXJyeTo6
UGxhdGZvcm06OkxvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6bm9kZVRleHRDaGFuZ2VkIik7
CisgICAgSW5wdXRMb2coUGxhdGZvcm06OkxvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6bm9k
ZVRleHRDaGFuZ2VkIik7CiAKICAgICBtX3dlYlBhZ2UtPm1fY2xpZW50LT5pbnB1dFRleHRDaGFu
Z2VkKCk7CiAKQEAgLTU1MCw3ICs1NTAsNyBAQCB2b2lkIElucHV0SGFuZGxlcjo6ZW5zdXJlRm9j
dXNUZXh0RWxlbWVudFZpc2libGUoQ2FyZXRTY3JvbGxUeXBlIHNjcm9sbFR5cGUpCiAgICAgaWYg
KCFtX2N1cnJlbnRGb2N1c0VsZW1lbnQgfHwgIW1fbmF2aWdhdGlvbk1vZGUgfHwgIW1fY3VycmVu
dEZvY3VzRWxlbWVudC0+ZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKCFC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6U2V0dGluZ3M6OmdldCgpLT5hbGxvd0NlbnRlclNjcm9sbEFk
anVzdG1lbnRGb3JJbnB1dEZpZWxkcygpICYmIHNjcm9sbFR5cGUgIT0gRWRnZUlmTmVlZGVkKQor
ICAgIGlmICghUGxhdGZvcm06OlNldHRpbmdzOjpnZXQoKS0+YWxsb3dDZW50ZXJTY3JvbGxBZGp1
c3RtZW50Rm9ySW5wdXRGaWVsZHMoKSAmJiBzY3JvbGxUeXBlICE9IEVkZ2VJZk5lZWRlZCkKICAg
ICAgICAgcmV0dXJuOwogCiAgICAgRnJhbWUqIGVsZW1lbnRGcmFtZSA9IG1fY3VycmVudEZvY3Vz
RWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKQEAgLTcyMCw3ICs3MjAsNyBAQCB2b2lkIElu
cHV0SGFuZGxlcjo6ZnJhbWVVbmxvYWRlZChGcmFtZSogZnJhbWUpCiAgICAgaWYgKG1fY3VycmVu
dEZvY3VzRWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKSAhPSBmcmFtZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgRm9jdXNMb2coQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsSW5mbywg
IklucHV0SGFuZGxlcjo6ZnJhbWVVbmxvYWRlZCIpOworICAgIEZvY3VzTG9nKExvZ0xldmVsSW5m
bywgIklucHV0SGFuZGxlcjo6ZnJhbWVVbmxvYWRlZCIpOwogCiAgICAgc2V0RWxlbWVudFVuZm9j
dXNlZChmYWxzZSAvKnJlZm9jdXNPY2N1cmluZyovKTsKIH0KQEAgLTg2OSw3ICs4NjksNyBAQCB2
b2lkIElucHV0SGFuZGxlcjo6c2VsZWN0aW9uQ2hhbmdlZCgpCiAgICAgaW50IG5ld1NlbGVjdGlv
blN0YXJ0ID0gc2VsZWN0aW9uU3RhcnQoKTsKICAgICBpbnQgbmV3U2VsZWN0aW9uRW5kID0gc2Vs
ZWN0aW9uRW5kKCk7CiAKLSAgICBJbnB1dExvZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2
ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpzZWxlY3Rpb25DaGFuZ2VkIHNlbGVjdGlvblN0YXJ0PSV1
LCBzZWxlY3Rpb25FbmQ9JXUiLCBuZXdTZWxlY3Rpb25TdGFydCwgbmV3U2VsZWN0aW9uRW5kKTsK
KyAgICBJbnB1dExvZyhMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6OnNlbGVjdGlvbkNoYW5n
ZWQgc2VsZWN0aW9uU3RhcnQ9JXUsIHNlbGVjdGlvbkVuZD0ldSIsIG5ld1NlbGVjdGlvblN0YXJ0
LCBuZXdTZWxlY3Rpb25FbmQpOwogCiAgICAgbV93ZWJQYWdlLT5tX2NsaWVudC0+aW5wdXRTZWxl
Y3Rpb25DaGFuZ2VkKG5ld1NlbGVjdGlvblN0YXJ0LCBuZXdTZWxlY3Rpb25FbmQpOwogCkBAIC04
OTUsNyArODk1LDcgQEAgYm9vbCBJbnB1dEhhbmRsZXI6OnNldFNlbGVjdGlvbihpbnQgc3RhcnQs
IGludCBlbmQsIGJvb2wgY2hhbmdlSXNQYXJ0T2ZDb21wb3NpdGkKICAgICBWaXNpYmxlU2VsZWN0
aW9uIG5ld1NlbGVjdGlvbiA9IERPTVN1cHBvcnQ6OnZpc2libGVTZWxlY3Rpb25Gb3JSYW5nZUlu
cHV0RWxlbWVudChtX2N1cnJlbnRGb2N1c0VsZW1lbnQuZ2V0KCksIHN0YXJ0LCBlbmQpOwogICAg
IG1fY3VycmVudEZvY3VzRWxlbWVudC0+ZG9jdW1lbnQoKS0+ZnJhbWUoKS0+c2VsZWN0aW9uKCkt
PnNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24sIGNoYW5nZUlzUGFydE9mQ29tcG9zaXRpb24gPyAw
IDogRnJhbWVTZWxlY3Rpb246OkNsb3NlVHlwaW5nIHwgRnJhbWVTZWxlY3Rpb246OkNsZWFyVHlw
aW5nU3R5bGUpOwogCi0gICAgSW5wdXRMb2coQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVs
SW5mbywgIklucHV0SGFuZGxlcjo6c2V0U2VsZWN0aW9uIHNlbGVjdGlvblN0YXJ0PSV1LCBzZWxl
Y3Rpb25FbmQ9JXUiLCBzdGFydCwgZW5kKTsKKyAgICBJbnB1dExvZyhMb2dMZXZlbEluZm8sICJJ
bnB1dEhhbmRsZXI6OnNldFNlbGVjdGlvbiBzZWxlY3Rpb25TdGFydD0ldSwgc2VsZWN0aW9uRW5k
PSV1Iiwgc3RhcnQsIGVuZCk7CiAKICAgICByZXR1cm4gc3RhcnQgPT0gc2VsZWN0aW9uU3RhcnQo
KSAmJiBlbmQgPT0gc2VsZWN0aW9uRW5kKCk7CiB9CkBAIC05MzAsOSArOTMwLDkgQEAgdm9pZCBJ
bnB1dEhhbmRsZXI6OmNhbmNlbFNlbGVjdGlvbigpCiAgICAgc2V0Q3Vyc29yUG9zaXRpb24oc2Vs
ZWN0aW9uU3RhcnRQb3NpdGlvbik7CiB9CiAKLWJvb2wgSW5wdXRIYW5kbGVyOjpoYW5kbGVLZXli
b2FyZElucHV0KGNvbnN0IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpLZXlib2FyZEV2ZW50JiBrZXli
b2FyZEV2ZW50LCBib29sIGNoYW5nZUlzUGFydE9mQ29tcG9zaXRpb24pCitib29sIElucHV0SGFu
ZGxlcjo6aGFuZGxlS2V5Ym9hcmRJbnB1dChjb25zdCBQbGF0Zm9ybTo6S2V5Ym9hcmRFdmVudCYg
a2V5Ym9hcmRFdmVudCwgYm9vbCBjaGFuZ2VJc1BhcnRPZkNvbXBvc2l0aW9uKQogewotICAgIElu
cHV0TG9nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6
OmhhbmRsZUtleWJvYXJkSW5wdXQgcmVjZWl2ZWQgY2hhcmFjdGVyPSVsYywgdHlwZT0lZCIsIGtl
eWJvYXJkRXZlbnQuY2hhcmFjdGVyKCksIGtleWJvYXJkRXZlbnQudHlwZSgpKTsKKyAgICBJbnB1
dExvZyhMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6OmhhbmRsZUtleWJvYXJkSW5wdXQgcmVj
ZWl2ZWQgY2hhcmFjdGVyPSVsYywgdHlwZT0lZCIsIGtleWJvYXJkRXZlbnQuY2hhcmFjdGVyKCks
IGtleWJvYXJkRXZlbnQudHlwZSgpKTsKIAogICAgIC8vIElmIHdlIGFyZW4ndCBzcGVjaWZpY2Fs
bHkgcGFydCBvZiBhIGNvbXBvc2l0aW9uLCBmYWlsLCBJTUYgc2hvdWxkIG5ldmVyIHNlbmQga2V5
IGlucHV0CiAgICAgLy8gd2hpbGUgY29tcG9zaW5nIHRleHQuIElmIElNRiBoYXMgZmFpbGVkLCB3
ZSBzaG91bGQgaGF2ZSBhbHJlYWR5IGZpbmlzaGVkIHRoZQpAQCAtOTQ5LDIzICs5NDksMjMgQEAg
Ym9vbCBJbnB1dEhhbmRsZXI6OmhhbmRsZUtleWJvYXJkSW5wdXQoY29uc3QgQmxhY2tCZXJyeTo6
UGxhdGZvcm06OktleWJvYXJkRXZlbnQKICAgICBBU1NFUlQobV93ZWJQYWdlLT5tX3BhZ2UtPmZv
Y3VzQ29udHJvbGxlcigpKTsKICAgICBib29sIGtleWJvYXJkRXZlbnRIYW5kbGVkID0gZmFsc2U7
CiAgICAgaWYgKEZyYW1lKiBmb2N1c2VkRnJhbWUgPSBtX3dlYlBhZ2UtPm1fcGFnZS0+Zm9jdXND
b250cm9sbGVyKCktPmZvY3VzZWRGcmFtZSgpKSB7Ci0gICAgICAgIGJvb2wgaXNLZXlDaGFyID0g
a2V5Ym9hcmRFdmVudC50eXBlKCkgPT0gQmxhY2tCZXJyeTo6UGxhdGZvcm06OktleWJvYXJkRXZl
bnQ6OktleUNoYXI7Ci0gICAgICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpLZXlib2FyZEV2ZW50
OjpUeXBlIHR5cGUgPSBrZXlib2FyZEV2ZW50LnR5cGUoKTsKKyAgICAgICAgYm9vbCBpc0tleUNo
YXIgPSBrZXlib2FyZEV2ZW50LnR5cGUoKSA9PSBQbGF0Zm9ybTo6S2V5Ym9hcmRFdmVudDo6S2V5
Q2hhcjsKKyAgICAgICAgUGxhdGZvcm06OktleWJvYXJkRXZlbnQ6OlR5cGUgdHlwZSA9IGtleWJv
YXJkRXZlbnQudHlwZSgpOwogCiAgICAgICAgIC8vIElmIHRoaXMgaXMgYSBLZXlDaGFyIHR5cGUg
dGhlbiB3ZSBoYW5kbGUgaXQgYXMgYSBrZXlkb3duIGZvbGxvd2VkIGJ5IGEga2V5IHVwLgogICAg
ICAgICBpZiAoaXNLZXlDaGFyKQotICAgICAgICAgICAgdHlwZSA9IEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpLZXlib2FyZEV2ZW50OjpLZXlEb3duOworICAgICAgICAgICAgdHlwZSA9IFBsYXRmb3Jt
OjpLZXlib2FyZEV2ZW50OjpLZXlEb3duOwogCi0gICAgICAgIEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpLZXlib2FyZEV2ZW50IGFkanVzdGVkS2V5Ym9hcmRFdmVudChrZXlib2FyZEV2ZW50LmNoYXJh
Y3RlcigpLCB0eXBlLCBhZGp1c3RlZE1vZGlmaWVycyk7CisgICAgICAgIFBsYXRmb3JtOjpLZXli
b2FyZEV2ZW50IGFkanVzdGVkS2V5Ym9hcmRFdmVudChrZXlib2FyZEV2ZW50LmNoYXJhY3Rlcigp
LCB0eXBlLCBhZGp1c3RlZE1vZGlmaWVycyk7CiAgICAgICAgIGtleWJvYXJkRXZlbnRIYW5kbGVk
ID0gZm9jdXNlZEZyYW1lLT5ldmVudEhhbmRsZXIoKS0+a2V5RXZlbnQoUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50KGFkanVzdGVkS2V5Ym9hcmRFdmVudCkpOwogCiAgICAgICAgIGlmIChpc0tleUNoYXIp
IHsKLSAgICAgICAgICAgIHR5cGUgPSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6S2V5Ym9hcmRFdmVu
dDo6S2V5VXA7Ci0gICAgICAgICAgICBhZGp1c3RlZEtleWJvYXJkRXZlbnQgPSBCbGFja0JlcnJ5
OjpQbGF0Zm9ybTo6S2V5Ym9hcmRFdmVudChrZXlib2FyZEV2ZW50LmNoYXJhY3RlcigpLCB0eXBl
LCBhZGp1c3RlZE1vZGlmaWVycyk7CisgICAgICAgICAgICB0eXBlID0gUGxhdGZvcm06OktleWJv
YXJkRXZlbnQ6OktleVVwOworICAgICAgICAgICAgYWRqdXN0ZWRLZXlib2FyZEV2ZW50ID0gUGxh
dGZvcm06OktleWJvYXJkRXZlbnQoa2V5Ym9hcmRFdmVudC5jaGFyYWN0ZXIoKSwgdHlwZSwgYWRq
dXN0ZWRNb2RpZmllcnMpOwogICAgICAgICAgICAga2V5Ym9hcmRFdmVudEhhbmRsZWQgPSBmb2N1
c2VkRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5rZXlFdmVudChQbGF0Zm9ybUtleWJvYXJkRXZlbnQo
YWRqdXN0ZWRLZXlib2FyZEV2ZW50KSkgfHwga2V5Ym9hcmRFdmVudEhhbmRsZWQ7CiAgICAgICAg
IH0KIAotICAgICAgICBpZiAoIWNoYW5nZUlzUGFydE9mQ29tcG9zaXRpb24gJiYgdHlwZSA9PSBC
bGFja0JlcnJ5OjpQbGF0Zm9ybTo6S2V5Ym9hcmRFdmVudDo6S2V5VXApCisgICAgICAgIGlmICgh
Y2hhbmdlSXNQYXJ0T2ZDb21wb3NpdGlvbiAmJiB0eXBlID09IFBsYXRmb3JtOjpLZXlib2FyZEV2
ZW50OjpLZXlVcCkKICAgICAgICAgICAgIGVuc3VyZUZvY3VzVGV4dEVsZW1lbnRWaXNpYmxlKEVk
Z2VJZk5lZWRlZCk7CiAgICAgfQogICAgIHJldHVybiBrZXlib2FyZEV2ZW50SGFuZGxlZDsKQEAg
LTEzMzgsNyArMTMzOCw3IEBAIGJvb2wgSW5wdXRIYW5kbGVyOjpkZWxldGVUZXh0UmVsYXRpdmVU
b0N1cnNvcihpbnQgbGVmdE9mZnNldCwgaW50IHJpZ2h0T2Zmc2V0KQogCiAgICAgUHJvY2Vzc2lu
Z0NoYW5nZUd1YXJkIGd1YXJkKHRoaXMpOwogCi0gICAgSW5wdXRMb2coQmxhY2tCZXJyeTo6UGxh
dGZvcm06OkxvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6ZGVsZXRlVGV4dFJlbGF0aXZlVG9D
dXJzb3IgbGVmdCAlZCByaWdodCAlZCIsIGxlZnRPZmZzZXQsIHJpZ2h0T2Zmc2V0KTsKKyAgICBJ
bnB1dExvZyhMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6OmRlbGV0ZVRleHRSZWxhdGl2ZVRv
Q3Vyc29yIGxlZnQgJWQgcmlnaHQgJWQiLCBsZWZ0T2Zmc2V0LCByaWdodE9mZnNldCk7CiAKICAg
ICBpbnQgY2FyZXRPZmZzZXQgPSBjYXJldFBvc2l0aW9uKCk7CiAgICAgaW50IHN0YXJ0ID0gcmVs
YXRpdmVMZWZ0T2Zmc2V0KGNhcmV0T2Zmc2V0LCBsZWZ0T2Zmc2V0KTsKQEAgLTEzNjMsNyArMTM2
Myw3IEBAIGJvb2wgSW5wdXRIYW5kbGVyOjpkZWxldGVUZXh0KGludCBzdGFydCwgaW50IGVuZCkK
ICAgICBpZiAoIXNldFNlbGVjdGlvbihzdGFydCwgZW5kLCB0cnVlIC8qY2hhbmdlSXNQYXJ0T2ZD
b21wb3NpdGlvbiovKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgSW5wdXRMb2coQmxh
Y2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6ZGVsZXRlVGV4
dCBzdGFydCAlZCBlbmQgJWQiLCBzdGFydCwgZW5kKTsKKyAgICBJbnB1dExvZyhMb2dMZXZlbElu
Zm8sICJJbnB1dEhhbmRsZXI6OmRlbGV0ZVRleHQgc3RhcnQgJWQgZW5kICVkIiwgc3RhcnQsIGVu
ZCk7CiAKICAgICByZXR1cm4gZGVsZXRlU2VsZWN0aW9uKCk7CiB9CkBAIC0xMzgzLDEzICsxMzgz
LDEzIEBAIHNwYW5uYWJsZV9zdHJpbmdfdCogSW5wdXRIYW5kbGVyOjpzcGFubmFibGVUZXh0SW5S
YW5nZShpbnQgc3RhcnQsIGludCBlbmQsIGludDMyCiAKICAgICBzcGFubmFibGVfc3RyaW5nX3Qq
IHBzdCA9IChzcGFubmFibGVfc3RyaW5nX3QqKW1hbGxvYyhzaXplb2Yoc3Bhbm5hYmxlX3N0cmlu
Z190KSk7CiAgICAgaWYgKCFwc3QpIHsKLSAgICAgICAgSW5wdXRMb2coQmxhY2tCZXJyeTo6UGxh
dGZvcm06OkxvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6c3Bhbm5hYmxlVGV4dEluUmFuZ2Ug
ZXJyb3IgYWxsb2NhdGluZyBzcGFubmFibGUgc3RyaW5nLiIpOworICAgICAgICBJbnB1dExvZyhM
b2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6OnNwYW5uYWJsZVRleHRJblJhbmdlIGVycm9yIGFs
bG9jYXRpbmcgc3Bhbm5hYmxlIHN0cmluZy4iKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQog
CiAgICAgcHN0LT5zdHIgPSAod2NoYXJfdCopbWFsbG9jKHNpemVvZih3Y2hhcl90KSAqIChsZW5n
dGggKyAxKSk7CiAgICAgaWYgKCFwc3QtPnN0cikgewotICAgICAgICBJbnB1dExvZyhCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpzcGFubmFibGVUZXh0
SW5SYW5nZSBDYW5ub3QgYWxsb2NhdGUgbWVtb3J5IGZvciBzdHJpbmcuXG4iKTsKKyAgICAgICAg
SW5wdXRMb2coTG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpzcGFubmFibGVUZXh0SW5SYW5n
ZSBDYW5ub3QgYWxsb2NhdGUgbWVtb3J5IGZvciBzdHJpbmcuXG4iKTsKICAgICAgICAgZnJlZShw
c3QpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC0xNTMyLDcgKzE1MzIsNyBAQCBpbnQz
Ml90IElucHV0SGFuZGxlcjo6c2V0Q29tcG9zaW5nUmVnaW9uKGludDMyX3Qgc3RhcnQsIGludDMy
X3QgZW5kKQogICAgIGlmIChjb21wb3NpdGlvbkFjdGl2ZSgpKQogICAgICAgICBhZGRBdHRyaWJ1
dGVkVGV4dE1hcmtlcihzdGFydCwgZW5kLCBjb21wb3NpdGlvblRleHRTdHlsZSgpKTsKIAotICAg
IElucHV0TG9nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRs
ZXI6OnNldENvbXBvc2luZ1JlZ2lvbiBzdGFydCAlZCBlbmQgJWQiLCBzdGFydCwgZW5kKTsKKyAg
ICBJbnB1dExvZyhMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6OnNldENvbXBvc2luZ1JlZ2lv
biBzdGFydCAlZCBlbmQgJWQiLCBzdGFydCwgZW5kKTsKIAogICAgIHJldHVybiAwOwogfQpAQCAt
MTU0OSw3ICsxNTQ5LDcgQEAgaW50MzJfdCBJbnB1dEhhbmRsZXI6OmZpbmlzaENvbXBvc2l0aW9u
KCkKICAgICAvLyBSZW1vdmUgYWxsIG1hcmtlcnMuCiAgICAgcmVtb3ZlQXR0cmlidXRlZFRleHRN
YXJrZXIoKTsKIAotICAgIElucHV0TG9nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbElu
Zm8sICJJbnB1dEhhbmRsZXI6OmZpbmlzaENvbXBvc2l0aW9uIGNvbXBsZXRlZCIpOworICAgIElu
cHV0TG9nKExvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6ZmluaXNoQ29tcG9zaXRpb24gY29t
cGxldGVkIik7CiAKICAgICByZXR1cm4gMDsKIH0KQEAgLTE2MTMsNyArMTYxMyw3IEBAIGJvb2wg
SW5wdXRIYW5kbGVyOjpzZXRUZXh0KHNwYW5uYWJsZV9zdHJpbmdfdCogc3Bhbm5hYmxlU3RyaW5n
KQogICAgICAgICAvLyBIYW5kbGUgdGhlIGNhc2Ugd2hlcmUgdGV4dCBpcyBiZWluZyBjb21wb3Nl
ZC4KICAgICAgICAgaWYgKGZpcnN0U3BhbkluU3RyaW5nKHNwYW5uYWJsZVN0cmluZywgQ09NUE9T
RURfVEVYVF9BVFRSSUIpKQogICAgICAgICAgICAgcmV0dXJuIGVkaXRvci0+Y29tbWFuZCgiSW5z
ZXJ0VGV4dCIpLmV4ZWN1dGUodGV4dFRvSW5zZXJ0LnJpZ2h0KDEpKTsKLSAgICAgICAgcmV0dXJu
IGhhbmRsZUtleWJvYXJkSW5wdXQoQmxhY2tCZXJyeTo6UGxhdGZvcm06OktleWJvYXJkRXZlbnQo
dGV4dFRvSW5zZXJ0W3RleHRMZW5ndGggLSAxXSwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OktleWJv
YXJkRXZlbnQ6OktleUNoYXIsIDApLCBmYWxzZSAvKiBjaGFuZ2VJc1BhcnRPZkNvbXBvc2l0aW9u
ICovKTsKKyAgICAgICAgcmV0dXJuIGhhbmRsZUtleWJvYXJkSW5wdXQoUGxhdGZvcm06OktleWJv
YXJkRXZlbnQodGV4dFRvSW5zZXJ0W3RleHRMZW5ndGggLSAxXSwgUGxhdGZvcm06OktleWJvYXJk
RXZlbnQ6OktleUNoYXIsIDApLCBmYWxzZSAvKiBjaGFuZ2VJc1BhcnRPZkNvbXBvc2l0aW9uICov
KTsKICAgICB9CiAKICAgICAvLyBJZiBubyBzcGFucyBoYXZlIGNoYW5nZWQsIHRyZWF0IGl0IGFz
IGEgZGVsZXRlIG9wZXJhdGlvbi4KQEAgLTE2MzgsNyArMTYzOCw3IEBAIGJvb2wgSW5wdXRIYW5k
bGVyOjpzZXRUZXh0KHNwYW5uYWJsZV9zdHJpbmdfdCogc3Bhbm5hYmxlU3RyaW5nKQogICAgICAg
ICByZXR1cm4gdHJ1ZTsKICAgICB9CiAKLSAgICBJbnB1dExvZyhCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6TG9nTGV2ZWxJbmZvLCAic2V0VGV4dCBzcGFubmFibGVTdHJpbmcgaXMgJXMsICVkIFxuIiwg
dGV4dFRvSW5zZXJ0LmxhdGluMSgpLmRhdGEoKSwgdGV4dExlbmd0aCk7CisgICAgSW5wdXRMb2co
TG9nTGV2ZWxJbmZvLCAic2V0VGV4dCBzcGFubmFibGVTdHJpbmcgaXMgJXMsICVkIFxuIiwgdGV4
dFRvSW5zZXJ0LmxhdGluMSgpLmRhdGEoKSwgdGV4dExlbmd0aCk7CiAKICAgICAvLyBUcmlnZ2Vy
aW5nIGFuIGluc2VydCBvZiB0aGUgdGV4dCB3aXRoIGEgc3BhY2UgY2hhcmFjdGVyIHRyYWlsaW5n
CiAgICAgLy8gY2F1c2VzIG5ldyB0ZXh0IHRvIGFkb3B0IHRoZSBwcmV2aW91cyB0ZXh0IHN0eWxl
LgpAQCAtMTY1MSwyNyArMTY1MSwyNyBAQCBib29sIElucHV0SGFuZGxlcjo6c2V0VGV4dChzcGFu
bmFibGVfc3RyaW5nX3QqIHNwYW5uYWJsZVN0cmluZykKICAgICAgICAgdGV4dFRvSW5zZXJ0LnJl
bW92ZSh0ZXh0TGVuZ3RoLCAxKTsKICAgICB9CiAKLSAgICBJbnB1dExvZyhCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpzZXRUZXh0IFJlcXVlc3QgYmVp
bmcgcHJvY2Vzc2VkIFRleHQgYmVmb3JlICVzIiwgZWxlbWVudFRleHQoKS5sYXRpbjEoKS5kYXRh
KCkpOworICAgIElucHV0TG9nKExvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6c2V0VGV4dCBS
ZXF1ZXN0IGJlaW5nIHByb2Nlc3NlZCBUZXh0IGJlZm9yZSAlcyIsIGVsZW1lbnRUZXh0KCkubGF0
aW4xKCkuZGF0YSgpKTsKIAogICAgIGlmICh0ZXh0TGVuZ3RoID09IDEgJiYgIXNwYW5uYWJsZVN0
cmluZy0+c3BhbnNfY291bnQpIHsKICAgICAgICAgLy8gSGFuZGxlIHNpbmdsZSBrZXkgbm9uLWF0
dHJpYnV0ZWQgZW50cnkgYXMga2V5IHByZXNzIHJhdGhlciB0aGFuIGluc2VydCB0byBhbGxvdwog
ICAgICAgICAvLyB0cmlnZ2VyaW5nIG9mIGphdmFzY3JpcHQgZXZlbnRzLgogCi0gICAgICAgIHJl
dHVybiBoYW5kbGVLZXlib2FyZElucHV0KEJsYWNrQmVycnk6OlBsYXRmb3JtOjpLZXlib2FyZEV2
ZW50KHRleHRUb0luc2VydFswXSwgQmxhY2tCZXJyeTo6UGxhdGZvcm06OktleWJvYXJkRXZlbnQ6
OktleUNoYXIsIDApLCB0cnVlIC8qIGNoYW5nZUlzUGFydE9mQ29tcG9zaXRpb24gKi8pOworICAg
ICAgICByZXR1cm4gaGFuZGxlS2V5Ym9hcmRJbnB1dChQbGF0Zm9ybTo6S2V5Ym9hcmRFdmVudCh0
ZXh0VG9JbnNlcnRbMF0sIFBsYXRmb3JtOjpLZXlib2FyZEV2ZW50OjpLZXlDaGFyLCAwKSwgdHJ1
ZSAvKiBjaGFuZ2VJc1BhcnRPZkNvbXBvc2l0aW9uICovKTsKICAgICB9CiAKICAgICAvLyBQZXJm
b3JtIHRoZSB0ZXh0IGNoYW5nZSBhcyBhIHNpbmdsZSBjb21tYW5kIGlmIHRoZXJlIGlzIG9uZS4K
ICAgICBpZiAoIXRleHRUb0luc2VydC5pc0VtcHR5KCkgJiYgIWVkaXRvci0+Y29tbWFuZCgiSW5z
ZXJ0VGV4dCIpLmV4ZWN1dGUodGV4dFRvSW5zZXJ0KSkgewotICAgICAgICBJbnB1dExvZyhCbGFj
a0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxXYXJuLCAiSW5wdXRIYW5kbGVyOjpzZXRUZXh0IEZh
aWxlZCB0byBpbnNlcnQgdGV4dCAlcyIsIHRleHRUb0luc2VydC5sYXRpbjEoKS5kYXRhKCkpOwor
ICAgICAgICBJbnB1dExvZyhMb2dMZXZlbFdhcm4sICJJbnB1dEhhbmRsZXI6OnNldFRleHQgRmFp
bGVkIHRvIGluc2VydCB0ZXh0ICVzIiwgdGV4dFRvSW5zZXJ0LmxhdGluMSgpLmRhdGEoKSk7CiAg
ICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBJbnB1dExvZyhCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpzZXRUZXh0IFJlcXVlc3QgYmVp
bmcgcHJvY2Vzc2VkIFRleHQgYWZ0ZXIgaW5zZXJ0ICVzIiwgZWxlbWVudFRleHQoKS5sYXRpbjEo
KS5kYXRhKCkpOworICAgIElucHV0TG9nKExvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6c2V0
VGV4dCBSZXF1ZXN0IGJlaW5nIHByb2Nlc3NlZCBUZXh0IGFmdGVyIGluc2VydCAlcyIsIGVsZW1l
bnRUZXh0KCkubGF0aW4xKCkuZGF0YSgpKTsKIAogICAgIGlmIChyZXF1aXJlc1NwYWNlS2V5UHJl
c3MpCi0gICAgICAgIGhhbmRsZUtleWJvYXJkSW5wdXQoQmxhY2tCZXJyeTo6UGxhdGZvcm06Oktl
eWJvYXJkRXZlbnQoMzIgLyogc3BhY2UgKi8sIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpLZXlib2Fy
ZEV2ZW50OjpLZXlDaGFyLCAwKSwgdHJ1ZSAvKiBjaGFuZ2VJc1BhcnRPZkNvbXBvc2l0aW9uICov
KTsKKyAgICAgICAgaGFuZGxlS2V5Ym9hcmRJbnB1dChQbGF0Zm9ybTo6S2V5Ym9hcmRFdmVudCgz
MiAvKiBzcGFjZSAqLywgUGxhdGZvcm06OktleWJvYXJkRXZlbnQ6OktleUNoYXIsIDApLCB0cnVl
IC8qIGNoYW5nZUlzUGFydE9mQ29tcG9zaXRpb24gKi8pOwogCi0gICAgSW5wdXRMb2coQmxhY2tC
ZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6c2V0VGV4dCBUZXh0
IGFmdGVyICVzIiwgZWxlbWVudFRleHQoKS5sYXRpbjEoKS5kYXRhKCkpOworICAgIElucHV0TG9n
KExvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6c2V0VGV4dCBUZXh0IGFmdGVyICVzIiwgZWxl
bWVudFRleHQoKS5sYXRpbjEoKS5kYXRhKCkpOwogCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0x
Njk2LDEzICsxNjk2LDEzIEBAIGJvb2wgSW5wdXRIYW5kbGVyOjpzZXRUZXh0QXR0cmlidXRlcyhp
bnQgaW5zZXJ0aW9uUG9pbnQsIHNwYW5uYWJsZV9zdHJpbmdfdCogc3BhCiAgICAgICAgIC8vIHVz
ZWQgYnkgSU1GLiBXaGVuIHRoZXkgYWRkIHN1cHBvcnQgZm9yIG9uIHRoZSBmbHkgc3BlbGwgY2hl
Y2tpbmcgd2UgY2FuCiAgICAgICAgIC8vIHVzZSBpdCB0byBhcHBseSBzcGVsbGluZyBtYXJrZXJz
IGFuZCBkaXNhYmxlIGNvbnRpbnVvdXMgc3BlbGwgY2hlY2tpbmcuCiAKLSAgICAgICAgSW5wdXRM
b2coQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6c2V0
VGV4dEF0dHJpYnV0ZXMgYWRkaW5nIG1hcmtlciAlZCB0byAlZCAtICVkIiwgc3RhcnRQb3NpdGlv
biwgZW5kUG9zaXRpb24sIHNwYW4tPmF0dHJpYnV0ZXNfbWFzayk7CisgICAgICAgIElucHV0TG9n
KExvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6c2V0VGV4dEF0dHJpYnV0ZXMgYWRkaW5nIG1h
cmtlciAlZCB0byAlZCAtICVkIiwgc3RhcnRQb3NpdGlvbiwgZW5kUG9zaXRpb24sIHNwYW4tPmF0
dHJpYnV0ZXNfbWFzayk7CiAgICAgICAgIGFkZEF0dHJpYnV0ZWRUZXh0TWFya2VyKHN0YXJ0UG9z
aXRpb24sIGVuZFBvc2l0aW9uLCB0ZXh0U3R5bGVGcm9tTWFzayhzcGFuLT5hdHRyaWJ1dGVzX21h
c2spKTsKIAogICAgICAgICBzcGFuKys7CiAgICAgfQogCi0gICAgSW5wdXRMb2coQmxhY2tCZXJy
eTo6UGxhdGZvcm06OkxvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6c2V0VGV4dEF0dHJpYnV0
ZXMgYXR0cmlidXRlIGNvdW50ICVkIiwgc3Bhbm5hYmxlU3RyaW5nLT5zcGFuc19jb3VudCk7Cisg
ICAgSW5wdXRMb2coTG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpzZXRUZXh0QXR0cmlidXRl
cyBhdHRyaWJ1dGUgY291bnQgJWQiLCBzcGFubmFibGVTdHJpbmctPnNwYW5zX2NvdW50KTsKIAog
ICAgIHJldHVybiB0cnVlOwogfQpAQCAtMTczMywxNCArMTczMywxNCBAQCBib29sIElucHV0SGFu
ZGxlcjo6c2V0UmVsYXRpdmVDdXJzb3JQb3NpdGlvbihpbnQgaW5zZXJ0aW9uUG9pbnQsIGludCBy
ZWxhdGl2ZUN1cgogICAgIGlmIChjdXJzb3JQb3NpdGlvbiA8IDAgfHwgY3Vyc29yUG9zaXRpb24g
PiAoaW50KWVsZW1lbnRUZXh0KCkubGVuZ3RoKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAot
ICAgIElucHV0TG9nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbEluZm8sICJJbnB1dEhh
bmRsZXI6OnNldFJlbGF0aXZlQ3Vyc29yUG9zaXRpb24gY3Vyc29yIHBvc2l0aW9uICVkIiwgY3Vy
c29yUG9zaXRpb24pOworICAgIElucHV0TG9nKExvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6
c2V0UmVsYXRpdmVDdXJzb3JQb3NpdGlvbiBjdXJzb3IgcG9zaXRpb24gJWQiLCBjdXJzb3JQb3Np
dGlvbik7CiAKICAgICByZXR1cm4gc2V0Q3Vyc29yUG9zaXRpb24oY3Vyc29yUG9zaXRpb24pOwog
fQogCiBib29sIElucHV0SGFuZGxlcjo6c2V0U3Bhbm5hYmxlVGV4dEFuZFJlbGF0aXZlQ3Vyc29y
KHNwYW5uYWJsZV9zdHJpbmdfdCogc3Bhbm5hYmxlU3RyaW5nLCBpbnQgcmVsYXRpdmVDdXJzb3JQ
b3NpdGlvbiwgYm9vbCBtYXJrVGV4dEFzQ29tcG9zaW5nKQogewotICAgIElucHV0TG9nKEJsYWNr
QmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6OnNldFNwYW5uYWJs
ZVRleHRBbmRSZWxhdGl2ZUN1cnNvciglZCwgJWQsICVkKVxuIiwgc3Bhbm5hYmxlU3RyaW5nLT5s
ZW5ndGgsIHJlbGF0aXZlQ3Vyc29yUG9zaXRpb24sIG1hcmtUZXh0QXNDb21wb3NpbmcpOworICAg
IElucHV0TG9nKExvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6c2V0U3Bhbm5hYmxlVGV4dEFu
ZFJlbGF0aXZlQ3Vyc29yKCVkLCAlZCwgJWQpXG4iLCBzcGFubmFibGVTdHJpbmctPmxlbmd0aCwg
cmVsYXRpdmVDdXJzb3JQb3NpdGlvbiwgbWFya1RleHRBc0NvbXBvc2luZyk7CiAgICAgaW50IGlu
c2VydGlvblBvaW50ID0gY29tcG9zaXRpb25BY3RpdmUoKSA/IG1fY29tcG9zaW5nVGV4dFN0YXJ0
IDogc2VsZWN0aW9uU3RhcnQoKTsKIAogICAgIFByb2Nlc3NpbmdDaGFuZ2VHdWFyZCBndWFyZCh0
aGlzKTsKQEAgLTE3NzQsNyArMTc3NCw3IEBAIGludDMyX3QgSW5wdXRIYW5kbGVyOjpzZXRDb21w
b3NpbmdUZXh0KHNwYW5uYWJsZV9zdHJpbmdfdCogc3Bhbm5hYmxlU3RyaW5nLCBpbnQzCiAgICAg
aWYgKCFzcGFubmFibGVTdHJpbmcpCiAgICAgICAgIHJldHVybiAtMTsKIAotICAgIElucHV0TG9n
KEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6OnNldENv
bXBvc2luZ1RleHQgYXQgcmVsYXRpdmVDdXJzb3JQb3NpdGlvbjogJWQiLCByZWxhdGl2ZUN1cnNv
clBvc2l0aW9uKTsKKyAgICBJbnB1dExvZyhMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6OnNl
dENvbXBvc2luZ1RleHQgYXQgcmVsYXRpdmVDdXJzb3JQb3NpdGlvbjogJWQiLCByZWxhdGl2ZUN1
cnNvclBvc2l0aW9uKTsKIAogICAgIHJldHVybiBzZXRTcGFubmFibGVUZXh0QW5kUmVsYXRpdmVD
dXJzb3Ioc3Bhbm5hYmxlU3RyaW5nLCByZWxhdGl2ZUN1cnNvclBvc2l0aW9uLCB0cnVlIC8qIG1h
cmtUZXh0QXNDb21wb3NpbmcgKi8pID8gMCA6IC0xOwogfQpAQCAtMTc4Nyw3ICsxNzg3LDcgQEAg
aW50MzJfdCBJbnB1dEhhbmRsZXI6OmNvbW1pdFRleHQoc3Bhbm5hYmxlX3N0cmluZ190KiBzcGFu
bmFibGVTdHJpbmcsIGludDMyX3QgcmUKICAgICBpZiAoIXNwYW5uYWJsZVN0cmluZykKICAgICAg
ICAgcmV0dXJuIC0xOwogCi0gICAgSW5wdXRMb2coQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xl
dmVsSW5mbywgIklucHV0SGFuZGxlcjo6Y29tbWl0VGV4dCIpOworICAgIElucHV0TG9nKExvZ0xl
dmVsSW5mbywgIklucHV0SGFuZGxlcjo6Y29tbWl0VGV4dCIpOwogCiAgICAgcmV0dXJuIHNldFNw
YW5uYWJsZVRleHRBbmRSZWxhdGl2ZUN1cnNvcihzcGFubmFibGVTdHJpbmcsIHJlbGF0aXZlQ3Vy
c29yUG9zaXRpb24sIGZhbHNlIC8qIG1hcmtUZXh0QXNDb21wb3NpbmcgKi8pID8gMCA6IC0xOwog
fQotLSAKMS43LjUuNAoK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>128729</attachid>
            <date>2012-02-24 07:06:12 -0800</date>
            <delta_ts>2012-02-24 08:33:23 -0800</delta_ts>
            <desc>Patch 2</desc>
            <filename>0001-2012-02-23-Mike-Fenton-mifenton-rim.com.patch</filename>
            <type>text/plain</type>
            <size>25883</size>
            <attacher name="Mike Fenton">mifenton</attacher>
            
              <data encoding="base64">RnJvbSAyOTY1M2QzNDJkMjljNDkyYmQ0N2I3YmIyOTZhNDc1YjNkMTBkN2MxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNaWtlIEZlbnRvbiA8bWlmZW50b25AcmltLmNvbT4KRGF0ZTog
VGh1LCAyMyBGZWIgMjAxMiAxNjowNToyNiAtMDUwMApTdWJqZWN0OiBbUEFUQ0hdIDIwMTItMDIt
MjMgIE1pa2UgRmVudG9uICA8bWlmZW50b25AcmltLmNvbT4KCiAgICAgICAgQ2xlYW51cCB1c2Fn
ZSBvZiBCbGFja0JlcnJ5OjpQbGF0Zm9ybSBpbiBJbnB1dEhhbmRsZXIuCgogICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICAqIFdlYktpdFN1cHBvcnQvSW5wdXRIYW5k
bGVyLmNwcDoKICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0Ojpjb252ZXJ0U3RyaW5nVG9XY2hh
cik6CiAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6Y29udmVydFN0cmluZ1RvV2NoYXJWZWN0
b3IpOgogICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OmNvbnZlcnRTcGFubmFibGVTdHJpbmdU
b1N0cmluZyk6CiAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6SW5wdXRIYW5kbGVyOjpsZWFy
blRleHQpOgogICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6c2V0RWxl
bWVudFVuZm9jdXNlZCk6CiAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6SW5wdXRIYW5kbGVy
OjpzaG91bGRBY2NlcHRJbnB1dEZvY3VzKToKICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJ
bnB1dEhhbmRsZXI6OnNldEVsZW1lbnRGb2N1c2VkKToKICAgICAgICAoQmxhY2tCZXJyeTo6V2Vi
S2l0OjpJbnB1dEhhbmRsZXI6Om5vZGVUZXh0Q2hhbmdlZCk6CiAgICAgICAgKEJsYWNrQmVycnk6
OldlYktpdDo6SW5wdXRIYW5kbGVyOjplbnN1cmVGb2N1c1RleHRFbGVtZW50VmlzaWJsZSk6CiAg
ICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6SW5wdXRIYW5kbGVyOjpmcmFtZVVubG9hZGVkKToK
ICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1dEhhbmRsZXI6OnNlbGVjdGlvbkNoYW5n
ZWQpOgogICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6c2V0U2VsZWN0
aW9uKToKICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1dEhhbmRsZXI6OmhhbmRsZUtl
eWJvYXJkSW5wdXQpOgogICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6
ZGVsZXRlVGV4dFJlbGF0aXZlVG9DdXJzb3IpOgogICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6
OklucHV0SGFuZGxlcjo6ZGVsZXRlVGV4dCk6CiAgICAgICAgKEJsYWNrQmVycnk6OldlYktpdDo6
SW5wdXRIYW5kbGVyOjpzcGFubmFibGVUZXh0SW5SYW5nZSk6CiAgICAgICAgKEJsYWNrQmVycnk6
OldlYktpdDo6SW5wdXRIYW5kbGVyOjpzZXRDb21wb3NpbmdSZWdpb24pOgogICAgICAgIChCbGFj
a0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6ZmluaXNoQ29tcG9zaXRpb24pOgogICAgICAg
IChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6c2V0VGV4dCk6CiAgICAgICAgKEJs
YWNrQmVycnk6OldlYktpdDo6SW5wdXRIYW5kbGVyOjpzZXRUZXh0QXR0cmlidXRlcyk6CiAgICAg
ICAgKEJsYWNrQmVycnk6OldlYktpdDo6SW5wdXRIYW5kbGVyOjpzZXRSZWxhdGl2ZUN1cnNvclBv
c2l0aW9uKToKICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1dEhhbmRsZXI6OnNldFNw
YW5uYWJsZVRleHRBbmRSZWxhdGl2ZUN1cnNvcik6CiAgICAgICAgKEJsYWNrQmVycnk6OldlYktp
dDo6SW5wdXRIYW5kbGVyOjpzZXRDb21wb3NpbmdUZXh0KToKICAgICAgICAoQmxhY2tCZXJyeTo6
V2ViS2l0OjpJbnB1dEhhbmRsZXI6OmNvbW1pdFRleHQpOgotLS0KIFNvdXJjZS9XZWJLaXQvYmxh
Y2tiZXJyeS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAgIHwgICAzNSArKysrKysKIC4uLi9ibGFj
a2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5wdXRIYW5kbGVyLmNwcCAgICAgIHwgIDExMCArKysrKysr
KysrLS0tLS0tLS0tLQogMiBmaWxlcyBjaGFuZ2VkLCA5MCBpbnNlcnRpb25zKCspLCA1NSBkZWxl
dGlvbnMoLSkKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9n
IGIvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L0NoYW5nZUxvZwppbmRleCBhNTU0MzVlLi4yMWRl
ZTdmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9DaGFuZ2VMb2cKQEAgLTEsNSArMSw0MCBAQAogMjAx
Mi0wMi0yNCAgTWlrZSBGZW50b24gIDxtaWZlbnRvbkByaW0uY29tPgogCisgICAgICAgIFtCbGFj
a0JlcnJ5XSBFbGltaW5hdGUgZXhjZXNzaXZlIEJsYWNrQmVycnk6OlBsYXRmb3JtIHVzZSBpbiBJ
bnB1dEhhbmRsZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc5MzkzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgQ2xlYW51cCB1c2FnZSBvZiBCbGFja0JlcnJ5OjpQbGF0Zm9ybSBpbiBJbnB1dEhhbmRsZXIu
CisKKyAgICAgICAgKiBXZWJLaXRTdXBwb3J0L0lucHV0SGFuZGxlci5jcHA6CisgICAgICAgIChC
bGFja0JlcnJ5OjpXZWJLaXQ6OmNvbnZlcnRTdHJpbmdUb1djaGFyKToKKyAgICAgICAgKEJsYWNr
QmVycnk6OldlYktpdDo6Y29udmVydFN0cmluZ1RvV2NoYXJWZWN0b3IpOgorICAgICAgICAoQmxh
Y2tCZXJyeTo6V2ViS2l0Ojpjb252ZXJ0U3Bhbm5hYmxlU3RyaW5nVG9TdHJpbmcpOgorICAgICAg
ICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1dEhhbmRsZXI6OmxlYXJuVGV4dCk6CisgICAgICAg
IChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6c2V0RWxlbWVudFVuZm9jdXNlZCk6
CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6c2hvdWxkQWNjZXB0
SW5wdXRGb2N1cyk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6
c2V0RWxlbWVudEZvY3VzZWQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1dEhh
bmRsZXI6Om5vZGVUZXh0Q2hhbmdlZCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6Oklu
cHV0SGFuZGxlcjo6ZW5zdXJlRm9jdXNUZXh0RWxlbWVudFZpc2libGUpOgorICAgICAgICAoQmxh
Y2tCZXJyeTo6V2ViS2l0OjpJbnB1dEhhbmRsZXI6OmZyYW1lVW5sb2FkZWQpOgorICAgICAgICAo
QmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1dEhhbmRsZXI6OnNlbGVjdGlvbkNoYW5nZWQpOgorICAg
ICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1dEhhbmRsZXI6OnNldFNlbGVjdGlvbik6Cisg
ICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6aGFuZGxlS2V5Ym9hcmRJ
bnB1dCk6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6ZGVsZXRl
VGV4dFJlbGF0aXZlVG9DdXJzb3IpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1
dEhhbmRsZXI6OmRlbGV0ZVRleHQpOgorICAgICAgICAoQmxhY2tCZXJyeTo6V2ViS2l0OjpJbnB1
dEhhbmRsZXI6OnNwYW5uYWJsZVRleHRJblJhbmdlKToKKyAgICAgICAgKEJsYWNrQmVycnk6Oldl
YktpdDo6SW5wdXRIYW5kbGVyOjpzZXRDb21wb3NpbmdSZWdpb24pOgorICAgICAgICAoQmxhY2tC
ZXJyeTo6V2ViS2l0OjpJbnB1dEhhbmRsZXI6OmZpbmlzaENvbXBvc2l0aW9uKToKKyAgICAgICAg
KEJsYWNrQmVycnk6OldlYktpdDo6SW5wdXRIYW5kbGVyOjpzZXRUZXh0KToKKyAgICAgICAgKEJs
YWNrQmVycnk6OldlYktpdDo6SW5wdXRIYW5kbGVyOjpzZXRUZXh0QXR0cmlidXRlcyk6CisgICAg
ICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6c2V0UmVsYXRpdmVDdXJzb3JQ
b3NpdGlvbik6CisgICAgICAgIChCbGFja0JlcnJ5OjpXZWJLaXQ6OklucHV0SGFuZGxlcjo6c2V0
U3Bhbm5hYmxlVGV4dEFuZFJlbGF0aXZlQ3Vyc29yKToKKyAgICAgICAgKEJsYWNrQmVycnk6Oldl
YktpdDo6SW5wdXRIYW5kbGVyOjpzZXRDb21wb3NpbmdUZXh0KToKKyAgICAgICAgKEJsYWNrQmVy
cnk6OldlYktpdDo6SW5wdXRIYW5kbGVyOjpjb21taXRUZXh0KToKKworMjAxMi0wMi0yNCAgTWlr
ZSBGZW50b24gIDxtaWZlbnRvbkByaW0uY29tPgorCiAgICAgICAgIFtCbGFja0JlcnJ5XSBFbGlt
aW5hdGUgZXhjZXNzaXZlIEJsYWNrQmVycnk6OlBsYXRmb3JtIHVzZSBpbiBTZWxlY3Rpb25IYW5k
bGVyLgogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzkz
OTEKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQv
SW5wdXRIYW5kbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvYmxhY2tiZXJyeS9XZWJLaXRTdXBwb3J0
L0lucHV0SGFuZGxlci5jcHAKaW5kZXggMjdiOTQxZS4uYzZhZWI0OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9ibGFja2JlcnJ5L1dlYktpdFN1cHBvcnQvSW5wdXRIYW5kbGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L2JsYWNrYmVycnkvV2ViS2l0U3VwcG9ydC9JbnB1dEhhbmRsZXIuY3Bw
CkBAIC02NCwyMyArNjQsMjMgQEAKICNkZWZpbmUgRU5BQkxFX0lOUFVUX0xPRyAwCiAjZGVmaW5l
IEVOQUJMRV9GT0NVU19MT0cgMAogCitzdGF0aWMgY29uc3QgaW50IE1heExlYXJuVGV4dERhdGFT
aXplID0gNTAwOworCit1c2luZyBuYW1lc3BhY2UgQmxhY2tCZXJyeTo6UGxhdGZvcm07Cit1c2lu
ZyBuYW1lc3BhY2UgV2ViQ29yZTsKKwogI2lmIEVOQUJMRV9JTlBVVF9MT0cKLSNkZWZpbmUgSW5w
dXRMb2coc2V2ZXJpdHksIGZvcm1hdCwgLi4uKSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6bG9nQWx3
YXlzKHNldmVyaXR5LCBmb3JtYXQsICMjIF9fVkFfQVJHU19fKQorI2RlZmluZSBJbnB1dExvZyhz
ZXZlcml0eSwgZm9ybWF0LCAuLi4pIGxvZ0Fsd2F5cyhzZXZlcml0eSwgZm9ybWF0LCAjIyBfX1ZB
X0FSR1NfXykKICNlbHNlCiAjZGVmaW5lIElucHV0TG9nKHNldmVyaXR5LCBmb3JtYXQsIC4uLikK
ICNlbmRpZiAvLyBFTkFCTEVfSU5QVVRfTE9HCiAKICNpZiBFTkFCTEVfRk9DVVNfTE9HCi0jZGVm
aW5lIEZvY3VzTG9nKHNldmVyaXR5LCBmb3JtYXQsIC4uLikgQmxhY2tCZXJyeTo6UGxhdGZvcm06
OmxvZ0Fsd2F5cyhzZXZlcml0eSwgZm9ybWF0LCAjIyBfX1ZBX0FSR1NfXykKKyNkZWZpbmUgRm9j
dXNMb2coc2V2ZXJpdHksIGZvcm1hdCwgLi4uKSBsb2dBbHdheXMoc2V2ZXJpdHksIGZvcm1hdCwg
IyMgX19WQV9BUkdTX18pCiAjZWxzZQogI2RlZmluZSBGb2N1c0xvZyhzZXZlcml0eSwgZm9ybWF0
LCAuLi4pCiAjZW5kaWYgLy8gRU5BQkxFX0ZPQ1VTX0xPRwogCi1zdGF0aWMgY29uc3QgaW50IE1h
eExlYXJuVGV4dERhdGFTaXplID0gNTAwOwotCi11c2luZyBuYW1lc3BhY2UgQmxhY2tCZXJyeTo6
UGxhdGZvcm07Ci11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLQogbmFtZXNwYWNlIEJsYWNrQmVy
cnkgewogbmFtZXNwYWNlIFdlYktpdCB7CiAKQEAgLTI5Nyw3ICsyOTcsNyBAQCBzdGF0aWMgYm9v
bCBjb252ZXJ0U3RyaW5nVG9XY2hhcihjb25zdCBTdHJpbmcmIHN0cmluZywgd2NoYXJfdCogZGVz
dCwgaW50IGRlc3RDYQogICAgIC8vIHdjaGFyX3Qgc3RyaW5ncyBzZW50IHRvIElNRiBhcmUgMzIg
Yml0IHNvIGNhc3RpbmcgdG8gVUNoYXIzMiBpcyBzYWZlLgogICAgIHVfc3RyVG9VVEYzMihyZWlu
dGVycHJldF9jYXN0PFVDaGFyMzIqPihkZXN0KSwgZGVzdENhcGFjaXR5LCBkZXN0TGVuZ3RoLCBz
dHJpbmcuY2hhcmFjdGVycygpLCBzdHJpbmcubGVuZ3RoKCksICZlYyk7CiAgICAgaWYgKGVjKSB7
Ci0gICAgICAgIElucHV0TG9nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbEluZm8sICJJ
bnB1dEhhbmRsZXI6OmNvbnZlcnRTdHJpbmdUb1djaGFyIEVycm9yIGNvbnZlcnRpbmcgc3RyaW5n
IGVjICglZCkuIiwgZWMpOworICAgICAgICBJbnB1dExvZyhMb2dMZXZlbEluZm8sICJJbnB1dEhh
bmRsZXI6OmNvbnZlcnRTdHJpbmdUb1djaGFyIEVycm9yIGNvbnZlcnRpbmcgc3RyaW5nIGVjICgl
ZCkuIiwgZWMpOwogICAgICAgICBkZXN0TGVuZ3RoID0gMDsKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIH0KQEAgLTMxMyw3ICszMTMsNyBAQCBzdGF0aWMgYm9vbCBjb252ZXJ0U3RyaW5nVG9X
Y2hhclZlY3Rvcihjb25zdCBTdHJpbmcmIHN0cmluZywgV1RGOjpWZWN0b3I8d2NoYXJfdAogICAg
ICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIGlmICghd2NoYXJTdHJpbmcudHJ5UmVzZXJ2ZUNhcGFj
aXR5KGxlbmd0aCArIDEpKSB7Ci0gICAgICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjpsb2dBbHdh
eXMoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsV2FybiwgIklucHV0SGFuZGxlcjo6Y29u
dmVydFN0cmluZ1RvV2NoYXJWZWN0b3IgQ2Fubm90IGFsbG9jYXRlIG1lbW9yeSBmb3Igc3RyaW5n
LlxuIik7CisgICAgICAgIGxvZ0Fsd2F5cyhMb2dMZXZlbFdhcm4sICJJbnB1dEhhbmRsZXI6OmNv
bnZlcnRTdHJpbmdUb1djaGFyVmVjdG9yIENhbm5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIHN0cmlu
Zy5cbiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCkBAIC0zMzMsNyArMzMzLDcg
QEAgc3RhdGljIFN0cmluZyBjb252ZXJ0U3Bhbm5hYmxlU3RyaW5nVG9TdHJpbmcoc3Bhbm5hYmxl
X3N0cmluZ190KiBzcmMpCiAgICAgV1RGOjpWZWN0b3I8VUNoYXI+IGRlc3Q7CiAgICAgaW50IGRl
c3RDYXBhY2l0eSA9IChzcmMtPmxlbmd0aCAqIDIpICsgMTsKICAgICBpZiAoIWRlc3QudHJ5UmVz
ZXJ2ZUNhcGFjaXR5KGRlc3RDYXBhY2l0eSkpIHsKLSAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZv
cm06OmxvZ0Fsd2F5cyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxXYXJuLCAiSW5wdXRI
YW5kbGVyOjpjb252ZXJ0U3Bhbm5hYmxlU3RyaW5nVG9TdHJpbmcgQ2Fubm90IGFsbG9jYXRlIG1l
bW9yeSBmb3Igc3RyaW5nLlxuIik7CisgICAgICAgIGxvZ0Fsd2F5cyhMb2dMZXZlbFdhcm4sICJJ
bnB1dEhhbmRsZXI6OmNvbnZlcnRTcGFubmFibGVTdHJpbmdUb1N0cmluZyBDYW5ub3QgYWxsb2Nh
dGUgbWVtb3J5IGZvciBzdHJpbmcuXG4iKTsKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAg
IH0KIApAQCAtMzQyLDcgKzM0Miw3IEBAIHN0YXRpYyBTdHJpbmcgY29udmVydFNwYW5uYWJsZVN0
cmluZ1RvU3RyaW5nKHNwYW5uYWJsZV9zdHJpbmdfdCogc3JjKQogICAgIC8vIHdjaGFyX3Qgc3Ry
aW5ncyBzZW50IGZyb20gSU1GIGFyZSAzMiBiaXQgc28gY2FzdGluZyB0byBVQ2hhcjMyIGlzIHNh
ZmUuCiAgICAgdV9zdHJGcm9tVVRGMzIoZGVzdC5kYXRhKCksIGRlc3RDYXBhY2l0eSwgJmRlc3RM
ZW5ndGgsIHJlaW50ZXJwcmV0X2Nhc3Q8VUNoYXIzMio+KHNyYy0+c3RyKSwgc3JjLT5sZW5ndGgs
ICZlYyk7CiAgICAgaWYgKGVjKSB7Ci0gICAgICAgIElucHV0TG9nKEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6OmNvbnZlcnRTcGFubmFibGVTdHJpbmdU
b1N0cmluZyBFcnJvciBjb252ZXJ0aW5nIHN0cmluZyBlYyAoJWQpLiIsIGVjKTsKKyAgICAgICAg
SW5wdXRMb2coTG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpjb252ZXJ0U3Bhbm5hYmxlU3Ry
aW5nVG9TdHJpbmcgRXJyb3IgY29udmVydGluZyBzdHJpbmcgZWMgKCVkKS4iLCBlYyk7CiAgICAg
ICAgIHJldHVybiBTdHJpbmcoKTsKICAgICB9CiAgICAgZGVzdC5yZXNpemUoZGVzdExlbmd0aCk7
CkBAIC0zNzgsMTQgKzM3OCwxNCBAQCB2b2lkIElucHV0SGFuZGxlcjo6bGVhcm5UZXh0KCkKICAg
ICBpZiAodGV4dEluRmllbGQuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBJbnB1
dExvZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjps
ZWFyblRleHQgJXMiLCB0ZXh0SW5GaWVsZC5sYXRpbjEoKS5kYXRhKCkpOworICAgIElucHV0TG9n
KExvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6bGVhcm5UZXh0ICVzIiwgdGV4dEluRmllbGQu
bGF0aW4xKCkuZGF0YSgpKTsKICAgICBzZW5kTGVhcm5UZXh0RGV0YWlscyh0ZXh0SW5GaWVsZCk7
CiB9CiAKIHZvaWQgSW5wdXRIYW5kbGVyOjpzZXRFbGVtZW50VW5mb2N1c2VkKGJvb2wgcmVmb2N1
c09jY3VyaW5nKQogewogICAgIGlmIChpc0FjdGl2ZVRleHRFZGl0KCkpIHsKLSAgICAgICAgRm9j
dXNMb2coQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6
c2V0RWxlbWVudFVuZm9jdXNlZCIpOworICAgICAgICBGb2N1c0xvZyhMb2dMZXZlbEluZm8sICJJ
bnB1dEhhbmRsZXI6OnNldEVsZW1lbnRVbmZvY3VzZWQiKTsKIAogICAgICAgICAvLyBQYXNzIGFu
eSB0ZXh0IGludG8gdGhlIGZpZWxkIHRvIElNRiB0byBsZWFybi4KICAgICAgICAgbGVhcm5UZXh0
KCk7CkBAIC00MTIsMzYgKzQxMiwzNiBAQCBib29sIElucHV0SGFuZGxlcjo6c2hvdWxkQWNjZXB0
SW5wdXRGb2N1cygpCiAgICAgaWYgKG1fd2ViUGFnZS0+bV9kdW1wUmVuZGVyVHJlZSkKICAgICAg
ICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAoQmxhY2tCZXJyeTo6UGxhdGZvcm06OlNldHRpbmdz
OjpnZXQoKS0+YWx3YXlzU2hvd0tleWJvYXJkT25Gb2N1cygpKSB7Ci0gICAgICAgIEZvY3VzTG9n
KEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6OnNob3Vs
ZEFjY2VwdElucHV0Rm9jdXMgYWx3YXlzU2hvd0tleWJvYXJkT25Gb2N1cyBpcyBhY3RpdmUuIik7
CisgICAgaWYgKFBsYXRmb3JtOjpTZXR0aW5nczo6Z2V0KCktPmFsd2F5c1Nob3dLZXlib2FyZE9u
Rm9jdXMoKSkgeworICAgICAgICBGb2N1c0xvZyhMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6
OnNob3VsZEFjY2VwdElucHV0Rm9jdXMgYWx3YXlzU2hvd0tleWJvYXJkT25Gb2N1cyBpcyBhY3Rp
dmUuIik7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KIAogICAgIEZyYW1lKiBmb2N1c2Vk
RnJhbWUgPSBtX3dlYlBhZ2UtPmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIGlmICghZm9jdXNl
ZEZyYW1lKSB7Ci0gICAgICAgIEZvY3VzTG9nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZl
bEluZm8sICJJbnB1dEhhbmRsZXI6OnNob3VsZEFjY2VwdElucHV0Rm9jdXMgRnJhbWUgbm90IHZh
bGlkLiIpOworICAgICAgICBGb2N1c0xvZyhMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6OnNo
b3VsZEFjY2VwdElucHV0Rm9jdXMgRnJhbWUgbm90IHZhbGlkLiIpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCiAgICAgLy8gQW55IHVzZXIgYWN0aW9uIHNob3VsZCBiZSByZXNwZWN0
ZWQuIE1vdXNlIHdpbGwgYmUgZG93biB3aGVuIHRvdWNoIGlzCiAgICAgLy8gdXNlZCB0byBmb2N1
cy4KICAgICBpZiAoZm9jdXNlZEZyYW1lLT5ldmVudEhhbmRsZXIoKS0+bW91c2VQcmVzc2VkKCkp
IHsKLSAgICAgICAgRm9jdXNMb2coQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsSW5mbywg
IklucHV0SGFuZGxlcjo6c2hvdWxkQWNjZXB0SW5wdXRGb2N1cyBNb3VzZSBpcyBwcmVzc2VkIGZv
Y3VzaW5nLiIpOworICAgICAgICBGb2N1c0xvZyhMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6
OnNob3VsZEFjY2VwdElucHV0Rm9jdXMgTW91c2UgaXMgcHJlc3NlZCBmb2N1c2luZy4iKTsKICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCiAgICAgaWYgKCFtX3dlYlBhZ2UtPm1fY2xpZW50
LT5oYXNLZXlib2FyZEZvY3VzKCkpIHsKLSAgICAgICAgRm9jdXNMb2coQmxhY2tCZXJyeTo6UGxh
dGZvcm06OkxvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6c2hvdWxkQWNjZXB0SW5wdXRGb2N1
cyBDbGllbnQgZG9lcyBub3QgaGF2ZSBpbnB1dCBmb2N1cy4iKTsKKyAgICAgICAgRm9jdXNMb2co
TG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpzaG91bGRBY2NlcHRJbnB1dEZvY3VzIENsaWVu
dCBkb2VzIG5vdCBoYXZlIGlucHV0IGZvY3VzLiIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQogCiAgICAgaWYgKG1fd2ViUGFnZS0+aXNMb2FkaW5nKCkpIHsKLSAgICAgICAgRm9jdXNM
b2coQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6c2hv
dWxkQWNjZXB0SW5wdXRGb2N1cyBXZWJwYWdlIGlzIGxvYWRpbmcuIik7CisgICAgICAgIEZvY3Vz
TG9nKExvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6c2hvdWxkQWNjZXB0SW5wdXRGb2N1cyBX
ZWJwYWdlIGlzIGxvYWRpbmcuIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKICAg
ICAvLyBNYWtlIHN1cmUgdGhlIGZvY3VzZWQgZnJhbWUgaXMgbm90IHByb2Nlc3NpbmcgbG9hZCBl
dmVudHMuCi0gICAgRm9jdXNMb2coQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsSW5mbywg
IklucHV0SGFuZGxlcjo6c2hvdWxkQWNjZXB0SW5wdXRGb2N1cyByZXR1cm5pbmcgc3RhdGUgb2Yg
cHJvY2Vzc2luZ0xvYWRFdmVudCAoJXMpLiIsICFmb2N1c2VkRnJhbWUtPmRvY3VtZW50KCktPnBy
b2Nlc3NpbmdMb2FkRXZlbnQoKSA/ICJ0cnVlIiA6ICJmYWxzZSIpOworICAgIEZvY3VzTG9nKExv
Z0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6c2hvdWxkQWNjZXB0SW5wdXRGb2N1cyByZXR1cm5p
bmcgc3RhdGUgb2YgcHJvY2Vzc2luZ0xvYWRFdmVudCAoJXMpLiIsICFmb2N1c2VkRnJhbWUtPmRv
Y3VtZW50KCktPnByb2Nlc3NpbmdMb2FkRXZlbnQoKSA/ICJ0cnVlIiA6ICJmYWxzZSIpOwogICAg
IHJldHVybiAhZm9jdXNlZEZyYW1lLT5kb2N1bWVudCgpLT5wcm9jZXNzaW5nTG9hZEV2ZW50KCk7
CiB9CiAKQEAgLTQ3Myw3ICs0NzMsNyBAQCB2b2lkIElucHV0SGFuZGxlcjo6c2V0RWxlbWVudEZv
Y3VzZWQoRWxlbWVudCogZWxlbWVudCkKICAgICBCbGFja0JlcnJ5SW5wdXRUeXBlIHR5cGUgPSBl
bGVtZW50VHlwZShlbGVtZW50KTsKICAgICBtX2N1cnJlbnRGb2N1c0VsZW1lbnRUZXh0RWRpdE1h
c2sgPSBpbnB1dFN0eWxlKHR5cGUsIGVsZW1lbnQpOwogCi0gICAgRm9jdXNMb2coQmxhY2tCZXJy
eTo6UGxhdGZvcm06OkxvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6c2V0RWxlbWVudEZvY3Vz
ZWQsIFR5cGU9JWQsIFN0eWxlPSVkIiwgdHlwZSwgbV9jdXJyZW50Rm9jdXNFbGVtZW50VGV4dEVk
aXRNYXNrKTsKKyAgICBGb2N1c0xvZyhMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6OnNldEVs
ZW1lbnRGb2N1c2VkLCBUeXBlPSVkLCBTdHlsZT0lZCIsIHR5cGUsIG1fY3VycmVudEZvY3VzRWxl
bWVudFRleHRFZGl0TWFzayk7CiAKICAgICBtX3dlYlBhZ2UtPm1fY2xpZW50LT5pbnB1dEZvY3Vz
R2FpbmVkKHR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBt
X2N1cnJlbnRGb2N1c0VsZW1lbnRUZXh0RWRpdE1hc2ssCkBAIC01MzQsNyArNTM0LDcgQEAgdm9p
ZCBJbnB1dEhhbmRsZXI6Om5vZGVUZXh0Q2hhbmdlZChjb25zdCBOb2RlKiBub2RlKQogICAgIGlm
IChub2RlICE9IG1fY3VycmVudEZvY3VzRWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAg
SW5wdXRMb2coQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsSW5mbywgIklucHV0SGFuZGxl
cjo6bm9kZVRleHRDaGFuZ2VkIik7CisgICAgSW5wdXRMb2coTG9nTGV2ZWxJbmZvLCAiSW5wdXRI
YW5kbGVyOjpub2RlVGV4dENoYW5nZWQiKTsKIAogICAgIG1fd2ViUGFnZS0+bV9jbGllbnQtPmlu
cHV0VGV4dENoYW5nZWQoKTsKIApAQCAtNTQ4LDcgKzU0OCw3IEBAIHZvaWQgSW5wdXRIYW5kbGVy
OjplbnN1cmVGb2N1c1RleHRFbGVtZW50VmlzaWJsZShDYXJldFNjcm9sbFR5cGUgc2Nyb2xsVHlw
ZSkKICAgICBpZiAoIW1fY3VycmVudEZvY3VzRWxlbWVudCB8fCAhbV9jdXJyZW50Rm9jdXNFbGVt
ZW50LT5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoIUJsYWNrQmVycnk6
OlBsYXRmb3JtOjpTZXR0aW5nczo6Z2V0KCktPmFsbG93Q2VudGVyU2Nyb2xsQWRqdXN0bWVudEZv
cklucHV0RmllbGRzKCkgJiYgc2Nyb2xsVHlwZSAhPSBFZGdlSWZOZWVkZWQpCisgICAgaWYgKCFQ
bGF0Zm9ybTo6U2V0dGluZ3M6OmdldCgpLT5hbGxvd0NlbnRlclNjcm9sbEFkanVzdG1lbnRGb3JJ
bnB1dEZpZWxkcygpICYmIHNjcm9sbFR5cGUgIT0gRWRnZUlmTmVlZGVkKQogICAgICAgICByZXR1
cm47CiAKICAgICBGcmFtZSogZWxlbWVudEZyYW1lID0gbV9jdXJyZW50Rm9jdXNFbGVtZW50LT5k
b2N1bWVudCgpLT5mcmFtZSgpOwpAQCAtNzE4LDcgKzcxOCw3IEBAIHZvaWQgSW5wdXRIYW5kbGVy
OjpmcmFtZVVubG9hZGVkKEZyYW1lKiBmcmFtZSkKICAgICBpZiAobV9jdXJyZW50Rm9jdXNFbGVt
ZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpICE9IGZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBGb2N1c0xvZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5k
bGVyOjpmcmFtZVVubG9hZGVkIik7CisgICAgRm9jdXNMb2coTG9nTGV2ZWxJbmZvLCAiSW5wdXRI
YW5kbGVyOjpmcmFtZVVubG9hZGVkIik7CiAKICAgICBzZXRFbGVtZW50VW5mb2N1c2VkKGZhbHNl
IC8qcmVmb2N1c09jY3VyaW5nKi8pOwogfQpAQCAtODM3LDcgKzgzNyw3IEBAIHZvaWQgSW5wdXRI
YW5kbGVyOjpzZWxlY3Rpb25DaGFuZ2VkKCkKICAgICBpbnQgbmV3U2VsZWN0aW9uU3RhcnQgPSBz
ZWxlY3Rpb25TdGFydCgpOwogICAgIGludCBuZXdTZWxlY3Rpb25FbmQgPSBzZWxlY3Rpb25FbmQo
KTsKIAotICAgIElucHV0TG9nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbEluZm8sICJJ
bnB1dEhhbmRsZXI6OnNlbGVjdGlvbkNoYW5nZWQgc2VsZWN0aW9uU3RhcnQ9JXUsIHNlbGVjdGlv
bkVuZD0ldSIsIG5ld1NlbGVjdGlvblN0YXJ0LCBuZXdTZWxlY3Rpb25FbmQpOworICAgIElucHV0
TG9nKExvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6c2VsZWN0aW9uQ2hhbmdlZCBzZWxlY3Rp
b25TdGFydD0ldSwgc2VsZWN0aW9uRW5kPSV1IiwgbmV3U2VsZWN0aW9uU3RhcnQsIG5ld1NlbGVj
dGlvbkVuZCk7CiAKICAgICBtX3dlYlBhZ2UtPm1fY2xpZW50LT5pbnB1dFNlbGVjdGlvbkNoYW5n
ZWQobmV3U2VsZWN0aW9uU3RhcnQsIG5ld1NlbGVjdGlvbkVuZCk7CiAKQEAgLTg2Myw3ICs4NjMs
NyBAQCBib29sIElucHV0SGFuZGxlcjo6c2V0U2VsZWN0aW9uKGludCBzdGFydCwgaW50IGVuZCwg
Ym9vbCBjaGFuZ2VJc1BhcnRPZkNvbXBvc2l0aQogICAgIFZpc2libGVTZWxlY3Rpb24gbmV3U2Vs
ZWN0aW9uID0gRE9NU3VwcG9ydDo6dmlzaWJsZVNlbGVjdGlvbkZvclJhbmdlSW5wdXRFbGVtZW50
KG1fY3VycmVudEZvY3VzRWxlbWVudC5nZXQoKSwgc3RhcnQsIGVuZCk7CiAgICAgbV9jdXJyZW50
Rm9jdXNFbGVtZW50LT5kb2N1bWVudCgpLT5mcmFtZSgpLT5zZWxlY3Rpb24oKS0+c2V0U2VsZWN0
aW9uKG5ld1NlbGVjdGlvbiwgY2hhbmdlSXNQYXJ0T2ZDb21wb3NpdGlvbiA/IDAgOiBGcmFtZVNl
bGVjdGlvbjo6Q2xvc2VUeXBpbmcgfCBGcmFtZVNlbGVjdGlvbjo6Q2xlYXJUeXBpbmdTdHlsZSk7
CiAKLSAgICBJbnB1dExvZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiSW5w
dXRIYW5kbGVyOjpzZXRTZWxlY3Rpb24gc2VsZWN0aW9uU3RhcnQ9JXUsIHNlbGVjdGlvbkVuZD0l
dSIsIHN0YXJ0LCBlbmQpOworICAgIElucHV0TG9nKExvZ0xldmVsSW5mbywgIklucHV0SGFuZGxl
cjo6c2V0U2VsZWN0aW9uIHNlbGVjdGlvblN0YXJ0PSV1LCBzZWxlY3Rpb25FbmQ9JXUiLCBzdGFy
dCwgZW5kKTsKIAogICAgIHJldHVybiBzdGFydCA9PSBzZWxlY3Rpb25TdGFydCgpICYmIGVuZCA9
PSBzZWxlY3Rpb25FbmQoKTsKIH0KQEAgLTg5OCw5ICs4OTgsOSBAQCB2b2lkIElucHV0SGFuZGxl
cjo6Y2FuY2VsU2VsZWN0aW9uKCkKICAgICBzZXRDdXJzb3JQb3NpdGlvbihzZWxlY3Rpb25TdGFy
dFBvc2l0aW9uKTsKIH0KIAotYm9vbCBJbnB1dEhhbmRsZXI6OmhhbmRsZUtleWJvYXJkSW5wdXQo
Y29uc3QgQmxhY2tCZXJyeTo6UGxhdGZvcm06OktleWJvYXJkRXZlbnQmIGtleWJvYXJkRXZlbnQs
IGJvb2wgY2hhbmdlSXNQYXJ0T2ZDb21wb3NpdGlvbikKK2Jvb2wgSW5wdXRIYW5kbGVyOjpoYW5k
bGVLZXlib2FyZElucHV0KGNvbnN0IFBsYXRmb3JtOjpLZXlib2FyZEV2ZW50JiBrZXlib2FyZEV2
ZW50LCBib29sIGNoYW5nZUlzUGFydE9mQ29tcG9zaXRpb24pCiB7Ci0gICAgSW5wdXRMb2coQmxh
Y2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6aGFuZGxlS2V5
Ym9hcmRJbnB1dCByZWNlaXZlZCBjaGFyYWN0ZXI9JWxjLCB0eXBlPSVkIiwga2V5Ym9hcmRFdmVu
dC5jaGFyYWN0ZXIoKSwga2V5Ym9hcmRFdmVudC50eXBlKCkpOworICAgIElucHV0TG9nKExvZ0xl
dmVsSW5mbywgIklucHV0SGFuZGxlcjo6aGFuZGxlS2V5Ym9hcmRJbnB1dCByZWNlaXZlZCBjaGFy
YWN0ZXI9JWxjLCB0eXBlPSVkIiwga2V5Ym9hcmRFdmVudC5jaGFyYWN0ZXIoKSwga2V5Ym9hcmRF
dmVudC50eXBlKCkpOwogCiAgICAgLy8gSWYgd2UgYXJlbid0IHNwZWNpZmljYWxseSBwYXJ0IG9m
IGEgY29tcG9zaXRpb24sIGZhaWwsIElNRiBzaG91bGQgbmV2ZXIgc2VuZCBrZXkgaW5wdXQKICAg
ICAvLyB3aGlsZSBjb21wb3NpbmcgdGV4dC4gSWYgSU1GIGhhcyBmYWlsZWQsIHdlIHNob3VsZCBo
YXZlIGFscmVhZHkgZmluaXNoZWQgdGhlCkBAIC05MTcsMjMgKzkxNywyMyBAQCBib29sIElucHV0
SGFuZGxlcjo6aGFuZGxlS2V5Ym9hcmRJbnB1dChjb25zdCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6
S2V5Ym9hcmRFdmVudAogICAgIEFTU0VSVChtX3dlYlBhZ2UtPm1fcGFnZS0+Zm9jdXNDb250cm9s
bGVyKCkpOwogICAgIGJvb2wga2V5Ym9hcmRFdmVudEhhbmRsZWQgPSBmYWxzZTsKICAgICBpZiAo
RnJhbWUqIGZvY3VzZWRGcmFtZSA9IG1fd2ViUGFnZS0+bV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS0+Zm9jdXNlZEZyYW1lKCkpIHsKLSAgICAgICAgYm9vbCBpc0tleUNoYXIgPSBrZXlib2FyZEV2
ZW50LnR5cGUoKSA9PSBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6S2V5Ym9hcmRFdmVudDo6S2V5Q2hh
cjsKLSAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OktleWJvYXJkRXZlbnQ6OlR5cGUgdHlw
ZSA9IGtleWJvYXJkRXZlbnQudHlwZSgpOworICAgICAgICBib29sIGlzS2V5Q2hhciA9IGtleWJv
YXJkRXZlbnQudHlwZSgpID09IFBsYXRmb3JtOjpLZXlib2FyZEV2ZW50OjpLZXlDaGFyOworICAg
ICAgICBQbGF0Zm9ybTo6S2V5Ym9hcmRFdmVudDo6VHlwZSB0eXBlID0ga2V5Ym9hcmRFdmVudC50
eXBlKCk7CiAKICAgICAgICAgLy8gSWYgdGhpcyBpcyBhIEtleUNoYXIgdHlwZSB0aGVuIHdlIGhh
bmRsZSBpdCBhcyBhIGtleWRvd24gZm9sbG93ZWQgYnkgYSBrZXkgdXAuCiAgICAgICAgIGlmIChp
c0tleUNoYXIpCi0gICAgICAgICAgICB0eXBlID0gQmxhY2tCZXJyeTo6UGxhdGZvcm06OktleWJv
YXJkRXZlbnQ6OktleURvd247CisgICAgICAgICAgICB0eXBlID0gUGxhdGZvcm06OktleWJvYXJk
RXZlbnQ6OktleURvd247CiAKLSAgICAgICAgQmxhY2tCZXJyeTo6UGxhdGZvcm06OktleWJvYXJk
RXZlbnQgYWRqdXN0ZWRLZXlib2FyZEV2ZW50KGtleWJvYXJkRXZlbnQuY2hhcmFjdGVyKCksIHR5
cGUsIGFkanVzdGVkTW9kaWZpZXJzKTsKKyAgICAgICAgUGxhdGZvcm06OktleWJvYXJkRXZlbnQg
YWRqdXN0ZWRLZXlib2FyZEV2ZW50KGtleWJvYXJkRXZlbnQuY2hhcmFjdGVyKCksIHR5cGUsIGFk
anVzdGVkTW9kaWZpZXJzKTsKICAgICAgICAga2V5Ym9hcmRFdmVudEhhbmRsZWQgPSBmb2N1c2Vk
RnJhbWUtPmV2ZW50SGFuZGxlcigpLT5rZXlFdmVudChQbGF0Zm9ybUtleWJvYXJkRXZlbnQoYWRq
dXN0ZWRLZXlib2FyZEV2ZW50KSk7CiAKICAgICAgICAgaWYgKGlzS2V5Q2hhcikgewotICAgICAg
ICAgICAgdHlwZSA9IEJsYWNrQmVycnk6OlBsYXRmb3JtOjpLZXlib2FyZEV2ZW50OjpLZXlVcDsK
LSAgICAgICAgICAgIGFkanVzdGVkS2V5Ym9hcmRFdmVudCA9IEJsYWNrQmVycnk6OlBsYXRmb3Jt
OjpLZXlib2FyZEV2ZW50KGtleWJvYXJkRXZlbnQuY2hhcmFjdGVyKCksIHR5cGUsIGFkanVzdGVk
TW9kaWZpZXJzKTsKKyAgICAgICAgICAgIHR5cGUgPSBQbGF0Zm9ybTo6S2V5Ym9hcmRFdmVudDo6
S2V5VXA7CisgICAgICAgICAgICBhZGp1c3RlZEtleWJvYXJkRXZlbnQgPSBQbGF0Zm9ybTo6S2V5
Ym9hcmRFdmVudChrZXlib2FyZEV2ZW50LmNoYXJhY3RlcigpLCB0eXBlLCBhZGp1c3RlZE1vZGlm
aWVycyk7CiAgICAgICAgICAgICBrZXlib2FyZEV2ZW50SGFuZGxlZCA9IGZvY3VzZWRGcmFtZS0+
ZXZlbnRIYW5kbGVyKCktPmtleUV2ZW50KFBsYXRmb3JtS2V5Ym9hcmRFdmVudChhZGp1c3RlZEtl
eWJvYXJkRXZlbnQpKSB8fCBrZXlib2FyZEV2ZW50SGFuZGxlZDsKICAgICAgICAgfQogCi0gICAg
ICAgIGlmICghY2hhbmdlSXNQYXJ0T2ZDb21wb3NpdGlvbiAmJiB0eXBlID09IEJsYWNrQmVycnk6
OlBsYXRmb3JtOjpLZXlib2FyZEV2ZW50OjpLZXlVcCkKKyAgICAgICAgaWYgKCFjaGFuZ2VJc1Bh
cnRPZkNvbXBvc2l0aW9uICYmIHR5cGUgPT0gUGxhdGZvcm06OktleWJvYXJkRXZlbnQ6OktleVVw
KQogICAgICAgICAgICAgZW5zdXJlRm9jdXNUZXh0RWxlbWVudFZpc2libGUoRWRnZUlmTmVlZGVk
KTsKICAgICB9CiAgICAgcmV0dXJuIGtleWJvYXJkRXZlbnRIYW5kbGVkOwpAQCAtMTI0NCw3ICsx
MjQ0LDcgQEAgYm9vbCBJbnB1dEhhbmRsZXI6OmRlbGV0ZVRleHRSZWxhdGl2ZVRvQ3Vyc29yKGlu
dCBsZWZ0T2Zmc2V0LCBpbnQgcmlnaHRPZmZzZXQpCiAKICAgICBQcm9jZXNzaW5nQ2hhbmdlR3Vh
cmQgZ3VhcmQodGhpcyk7CiAKLSAgICBJbnB1dExvZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9n
TGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpkZWxldGVUZXh0UmVsYXRpdmVUb0N1cnNvciBsZWZ0
ICVkIHJpZ2h0ICVkIiwgbGVmdE9mZnNldCwgcmlnaHRPZmZzZXQpOworICAgIElucHV0TG9nKExv
Z0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6ZGVsZXRlVGV4dFJlbGF0aXZlVG9DdXJzb3IgbGVm
dCAlZCByaWdodCAlZCIsIGxlZnRPZmZzZXQsIHJpZ2h0T2Zmc2V0KTsKIAogICAgIGludCBjYXJl
dE9mZnNldCA9IGNhcmV0UG9zaXRpb24oKTsKICAgICBpbnQgc3RhcnQgPSByZWxhdGl2ZUxlZnRP
ZmZzZXQoY2FyZXRPZmZzZXQsIGxlZnRPZmZzZXQpOwpAQCAtMTI2OSw3ICsxMjY5LDcgQEAgYm9v
bCBJbnB1dEhhbmRsZXI6OmRlbGV0ZVRleHQoaW50IHN0YXJ0LCBpbnQgZW5kKQogICAgIGlmICgh
c2V0U2VsZWN0aW9uKHN0YXJ0LCBlbmQsIHRydWUgLypjaGFuZ2VJc1BhcnRPZkNvbXBvc2l0aW9u
Ki8pKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBJbnB1dExvZyhCbGFja0JlcnJ5OjpQ
bGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpkZWxldGVUZXh0IHN0YXJ0ICVk
IGVuZCAlZCIsIHN0YXJ0LCBlbmQpOworICAgIElucHV0TG9nKExvZ0xldmVsSW5mbywgIklucHV0
SGFuZGxlcjo6ZGVsZXRlVGV4dCBzdGFydCAlZCBlbmQgJWQiLCBzdGFydCwgZW5kKTsKIAogICAg
IHJldHVybiBkZWxldGVTZWxlY3Rpb24oKTsKIH0KQEAgLTEyODksMTMgKzEyODksMTMgQEAgc3Bh
bm5hYmxlX3N0cmluZ190KiBJbnB1dEhhbmRsZXI6OnNwYW5uYWJsZVRleHRJblJhbmdlKGludCBz
dGFydCwgaW50IGVuZCwgaW50MzIKIAogICAgIHNwYW5uYWJsZV9zdHJpbmdfdCogcHN0ID0gKHNw
YW5uYWJsZV9zdHJpbmdfdCopbWFsbG9jKHNpemVvZihzcGFubmFibGVfc3RyaW5nX3QpKTsKICAg
ICBpZiAoIXBzdCkgewotICAgICAgICBJbnB1dExvZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9n
TGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpzcGFubmFibGVUZXh0SW5SYW5nZSBlcnJvciBhbGxv
Y2F0aW5nIHNwYW5uYWJsZSBzdHJpbmcuIik7CisgICAgICAgIElucHV0TG9nKExvZ0xldmVsSW5m
bywgIklucHV0SGFuZGxlcjo6c3Bhbm5hYmxlVGV4dEluUmFuZ2UgZXJyb3IgYWxsb2NhdGluZyBz
cGFubmFibGUgc3RyaW5nLiIpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAKICAgICBwc3Qt
PnN0ciA9ICh3Y2hhcl90KiltYWxsb2Moc2l6ZW9mKHdjaGFyX3QpICogKGxlbmd0aCArIDEpKTsK
ICAgICBpZiAoIXBzdC0+c3RyKSB7Ci0gICAgICAgIElucHV0TG9nKEJsYWNrQmVycnk6OlBsYXRm
b3JtOjpMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6OnNwYW5uYWJsZVRleHRJblJhbmdlIENh
bm5vdCBhbGxvY2F0ZSBtZW1vcnkgZm9yIHN0cmluZy5cbiIpOworICAgICAgICBJbnB1dExvZyhM
b2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6OnNwYW5uYWJsZVRleHRJblJhbmdlIENhbm5vdCBh
bGxvY2F0ZSBtZW1vcnkgZm9yIHN0cmluZy5cbiIpOwogICAgICAgICBmcmVlKHBzdCk7CiAgICAg
ICAgIHJldHVybiAwOwogICAgIH0KQEAgLTE0MzgsNyArMTQzOCw3IEBAIGludDMyX3QgSW5wdXRI
YW5kbGVyOjpzZXRDb21wb3NpbmdSZWdpb24oaW50MzJfdCBzdGFydCwgaW50MzJfdCBlbmQpCiAg
ICAgaWYgKGNvbXBvc2l0aW9uQWN0aXZlKCkpCiAgICAgICAgIGFkZEF0dHJpYnV0ZWRUZXh0TWFy
a2VyKHN0YXJ0LCBlbmQsIGNvbXBvc2l0aW9uVGV4dFN0eWxlKCkpOwogCi0gICAgSW5wdXRMb2co
QmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6c2V0Q29t
cG9zaW5nUmVnaW9uIHN0YXJ0ICVkIGVuZCAlZCIsIHN0YXJ0LCBlbmQpOworICAgIElucHV0TG9n
KExvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6c2V0Q29tcG9zaW5nUmVnaW9uIHN0YXJ0ICVk
IGVuZCAlZCIsIHN0YXJ0LCBlbmQpOwogCiAgICAgcmV0dXJuIDA7CiB9CkBAIC0xNDU1LDcgKzE0
NTUsNyBAQCBpbnQzMl90IElucHV0SGFuZGxlcjo6ZmluaXNoQ29tcG9zaXRpb24oKQogICAgIC8v
IFJlbW92ZSBhbGwgbWFya2Vycy4KICAgICByZW1vdmVBdHRyaWJ1dGVkVGV4dE1hcmtlcigpOwog
Ci0gICAgSW5wdXRMb2coQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsSW5mbywgIklucHV0
SGFuZGxlcjo6ZmluaXNoQ29tcG9zaXRpb24gY29tcGxldGVkIik7CisgICAgSW5wdXRMb2coTG9n
TGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpmaW5pc2hDb21wb3NpdGlvbiBjb21wbGV0ZWQiKTsK
IAogICAgIHJldHVybiAwOwogfQpAQCAtMTUxOSw3ICsxNTE5LDcgQEAgYm9vbCBJbnB1dEhhbmRs
ZXI6OnNldFRleHQoc3Bhbm5hYmxlX3N0cmluZ190KiBzcGFubmFibGVTdHJpbmcpCiAgICAgICAg
IC8vIEhhbmRsZSB0aGUgY2FzZSB3aGVyZSB0ZXh0IGlzIGJlaW5nIGNvbXBvc2VkLgogICAgICAg
ICBpZiAoZmlyc3RTcGFuSW5TdHJpbmcoc3Bhbm5hYmxlU3RyaW5nLCBDT01QT1NFRF9URVhUX0FU
VFJJQikpCiAgICAgICAgICAgICByZXR1cm4gZWRpdG9yLT5jb21tYW5kKCJJbnNlcnRUZXh0Iiku
ZXhlY3V0ZSh0ZXh0VG9JbnNlcnQucmlnaHQoMSkpOwotICAgICAgICByZXR1cm4gaGFuZGxlS2V5
Ym9hcmRJbnB1dChCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6S2V5Ym9hcmRFdmVudCh0ZXh0VG9JbnNl
cnRbdGV4dExlbmd0aCAtIDFdLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6S2V5Ym9hcmRFdmVudDo6
S2V5Q2hhciwgMCksIGZhbHNlIC8qIGNoYW5nZUlzUGFydE9mQ29tcG9zaXRpb24gKi8pOworICAg
ICAgICByZXR1cm4gaGFuZGxlS2V5Ym9hcmRJbnB1dChQbGF0Zm9ybTo6S2V5Ym9hcmRFdmVudCh0
ZXh0VG9JbnNlcnRbdGV4dExlbmd0aCAtIDFdLCBQbGF0Zm9ybTo6S2V5Ym9hcmRFdmVudDo6S2V5
Q2hhciwgMCksIGZhbHNlIC8qIGNoYW5nZUlzUGFydE9mQ29tcG9zaXRpb24gKi8pOwogICAgIH0K
IAogICAgIC8vIElmIG5vIHNwYW5zIGhhdmUgY2hhbmdlZCwgdHJlYXQgaXQgYXMgYSBkZWxldGUg
b3BlcmF0aW9uLgpAQCAtMTU0NCw3ICsxNTQ0LDcgQEAgYm9vbCBJbnB1dEhhbmRsZXI6OnNldFRl
eHQoc3Bhbm5hYmxlX3N0cmluZ190KiBzcGFubmFibGVTdHJpbmcpCiAgICAgICAgIHJldHVybiB0
cnVlOwogICAgIH0KIAotICAgIElucHV0TG9nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZl
bEluZm8sICJzZXRUZXh0IHNwYW5uYWJsZVN0cmluZyBpcyAlcywgJWQgXG4iLCB0ZXh0VG9JbnNl
cnQubGF0aW4xKCkuZGF0YSgpLCB0ZXh0TGVuZ3RoKTsKKyAgICBJbnB1dExvZyhMb2dMZXZlbElu
Zm8sICJzZXRUZXh0IHNwYW5uYWJsZVN0cmluZyBpcyAlcywgJWQgXG4iLCB0ZXh0VG9JbnNlcnQu
bGF0aW4xKCkuZGF0YSgpLCB0ZXh0TGVuZ3RoKTsKIAogICAgIC8vIFRyaWdnZXJpbmcgYW4gaW5z
ZXJ0IG9mIHRoZSB0ZXh0IHdpdGggYSBzcGFjZSBjaGFyYWN0ZXIgdHJhaWxpbmcKICAgICAvLyBj
YXVzZXMgbmV3IHRleHQgdG8gYWRvcHQgdGhlIHByZXZpb3VzIHRleHQgc3R5bGUuCkBAIC0xNTU3
LDI3ICsxNTU3LDI3IEBAIGJvb2wgSW5wdXRIYW5kbGVyOjpzZXRUZXh0KHNwYW5uYWJsZV9zdHJp
bmdfdCogc3Bhbm5hYmxlU3RyaW5nKQogICAgICAgICB0ZXh0VG9JbnNlcnQucmVtb3ZlKHRleHRM
ZW5ndGgsIDEpOwogICAgIH0KIAotICAgIElucHV0TG9nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpM
b2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6OnNldFRleHQgUmVxdWVzdCBiZWluZyBwcm9jZXNz
ZWQgVGV4dCBiZWZvcmUgJXMiLCBlbGVtZW50VGV4dCgpLmxhdGluMSgpLmRhdGEoKSk7CisgICAg
SW5wdXRMb2coTG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpzZXRUZXh0IFJlcXVlc3QgYmVp
bmcgcHJvY2Vzc2VkIFRleHQgYmVmb3JlICVzIiwgZWxlbWVudFRleHQoKS5sYXRpbjEoKS5kYXRh
KCkpOwogCiAgICAgaWYgKHRleHRMZW5ndGggPT0gMSAmJiAhc3Bhbm5hYmxlU3RyaW5nLT5zcGFu
c19jb3VudCkgewogICAgICAgICAvLyBIYW5kbGUgc2luZ2xlIGtleSBub24tYXR0cmlidXRlZCBl
bnRyeSBhcyBrZXkgcHJlc3MgcmF0aGVyIHRoYW4gaW5zZXJ0IHRvIGFsbG93CiAgICAgICAgIC8v
IHRyaWdnZXJpbmcgb2YgamF2YXNjcmlwdCBldmVudHMuCiAKLSAgICAgICAgcmV0dXJuIGhhbmRs
ZUtleWJvYXJkSW5wdXQoQmxhY2tCZXJyeTo6UGxhdGZvcm06OktleWJvYXJkRXZlbnQodGV4dFRv
SW5zZXJ0WzBdLCBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6S2V5Ym9hcmRFdmVudDo6S2V5Q2hhciwg
MCksIHRydWUgLyogY2hhbmdlSXNQYXJ0T2ZDb21wb3NpdGlvbiAqLyk7CisgICAgICAgIHJldHVy
biBoYW5kbGVLZXlib2FyZElucHV0KFBsYXRmb3JtOjpLZXlib2FyZEV2ZW50KHRleHRUb0luc2Vy
dFswXSwgUGxhdGZvcm06OktleWJvYXJkRXZlbnQ6OktleUNoYXIsIDApLCB0cnVlIC8qIGNoYW5n
ZUlzUGFydE9mQ29tcG9zaXRpb24gKi8pOwogICAgIH0KIAogICAgIC8vIFBlcmZvcm0gdGhlIHRl
eHQgY2hhbmdlIGFzIGEgc2luZ2xlIGNvbW1hbmQgaWYgdGhlcmUgaXMgb25lLgogICAgIGlmICgh
dGV4dFRvSW5zZXJ0LmlzRW1wdHkoKSAmJiAhZWRpdG9yLT5jb21tYW5kKCJJbnNlcnRUZXh0Iiku
ZXhlY3V0ZSh0ZXh0VG9JbnNlcnQpKSB7Ci0gICAgICAgIElucHV0TG9nKEJsYWNrQmVycnk6OlBs
YXRmb3JtOjpMb2dMZXZlbFdhcm4sICJJbnB1dEhhbmRsZXI6OnNldFRleHQgRmFpbGVkIHRvIGlu
c2VydCB0ZXh0ICVzIiwgdGV4dFRvSW5zZXJ0LmxhdGluMSgpLmRhdGEoKSk7CisgICAgICAgIElu
cHV0TG9nKExvZ0xldmVsV2FybiwgIklucHV0SGFuZGxlcjo6c2V0VGV4dCBGYWlsZWQgdG8gaW5z
ZXJ0IHRleHQgJXMiLCB0ZXh0VG9JbnNlcnQubGF0aW4xKCkuZGF0YSgpKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIH0KIAotICAgIElucHV0TG9nKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpM
b2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6OnNldFRleHQgUmVxdWVzdCBiZWluZyBwcm9jZXNz
ZWQgVGV4dCBhZnRlciBpbnNlcnQgJXMiLCBlbGVtZW50VGV4dCgpLmxhdGluMSgpLmRhdGEoKSk7
CisgICAgSW5wdXRMb2coTG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpzZXRUZXh0IFJlcXVl
c3QgYmVpbmcgcHJvY2Vzc2VkIFRleHQgYWZ0ZXIgaW5zZXJ0ICVzIiwgZWxlbWVudFRleHQoKS5s
YXRpbjEoKS5kYXRhKCkpOwogCiAgICAgaWYgKHJlcXVpcmVzU3BhY2VLZXlQcmVzcykKLSAgICAg
ICAgaGFuZGxlS2V5Ym9hcmRJbnB1dChCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6S2V5Ym9hcmRFdmVu
dCgzMiAvKiBzcGFjZSAqLywgQmxhY2tCZXJyeTo6UGxhdGZvcm06OktleWJvYXJkRXZlbnQ6Oktl
eUNoYXIsIDApLCB0cnVlIC8qIGNoYW5nZUlzUGFydE9mQ29tcG9zaXRpb24gKi8pOworICAgICAg
ICBoYW5kbGVLZXlib2FyZElucHV0KFBsYXRmb3JtOjpLZXlib2FyZEV2ZW50KDMyIC8qIHNwYWNl
ICovLCBQbGF0Zm9ybTo6S2V5Ym9hcmRFdmVudDo6S2V5Q2hhciwgMCksIHRydWUgLyogY2hhbmdl
SXNQYXJ0T2ZDb21wb3NpdGlvbiAqLyk7CiAKLSAgICBJbnB1dExvZyhCbGFja0JlcnJ5OjpQbGF0
Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpzZXRUZXh0IFRleHQgYWZ0ZXIgJXMi
LCBlbGVtZW50VGV4dCgpLmxhdGluMSgpLmRhdGEoKSk7CisgICAgSW5wdXRMb2coTG9nTGV2ZWxJ
bmZvLCAiSW5wdXRIYW5kbGVyOjpzZXRUZXh0IFRleHQgYWZ0ZXIgJXMiLCBlbGVtZW50VGV4dCgp
LmxhdGluMSgpLmRhdGEoKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KQEAgLTE2MDIsMTMgKzE2
MDIsMTMgQEAgYm9vbCBJbnB1dEhhbmRsZXI6OnNldFRleHRBdHRyaWJ1dGVzKGludCBpbnNlcnRp
b25Qb2ludCwgc3Bhbm5hYmxlX3N0cmluZ190KiBzcGEKICAgICAgICAgLy8gdXNlZCBieSBJTUYu
IFdoZW4gdGhleSBhZGQgc3VwcG9ydCBmb3Igb24gdGhlIGZseSBzcGVsbCBjaGVja2luZyB3ZSBj
YW4KICAgICAgICAgLy8gdXNlIGl0IHRvIGFwcGx5IHNwZWxsaW5nIG1hcmtlcnMgYW5kIGRpc2Fi
bGUgY29udGludW91cyBzcGVsbCBjaGVja2luZy4KIAotICAgICAgICBJbnB1dExvZyhCbGFja0Jl
cnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpzZXRUZXh0QXR0cmli
dXRlcyBhZGRpbmcgbWFya2VyICVkIHRvICVkIC0gJWQiLCBzdGFydFBvc2l0aW9uLCBlbmRQb3Np
dGlvbiwgc3Bhbi0+YXR0cmlidXRlc19tYXNrKTsKKyAgICAgICAgSW5wdXRMb2coTG9nTGV2ZWxJ
bmZvLCAiSW5wdXRIYW5kbGVyOjpzZXRUZXh0QXR0cmlidXRlcyBhZGRpbmcgbWFya2VyICVkIHRv
ICVkIC0gJWQiLCBzdGFydFBvc2l0aW9uLCBlbmRQb3NpdGlvbiwgc3Bhbi0+YXR0cmlidXRlc19t
YXNrKTsKICAgICAgICAgYWRkQXR0cmlidXRlZFRleHRNYXJrZXIoc3RhcnRQb3NpdGlvbiwgZW5k
UG9zaXRpb24sIHRleHRTdHlsZUZyb21NYXNrKHNwYW4tPmF0dHJpYnV0ZXNfbWFzaykpOwogCiAg
ICAgICAgIHNwYW4rKzsKICAgICB9CiAKLSAgICBJbnB1dExvZyhCbGFja0JlcnJ5OjpQbGF0Zm9y
bTo6TG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpzZXRUZXh0QXR0cmlidXRlcyBhdHRyaWJ1
dGUgY291bnQgJWQiLCBzcGFubmFibGVTdHJpbmctPnNwYW5zX2NvdW50KTsKKyAgICBJbnB1dExv
ZyhMb2dMZXZlbEluZm8sICJJbnB1dEhhbmRsZXI6OnNldFRleHRBdHRyaWJ1dGVzIGF0dHJpYnV0
ZSBjb3VudCAlZCIsIHNwYW5uYWJsZVN0cmluZy0+c3BhbnNfY291bnQpOwogCiAgICAgcmV0dXJu
IHRydWU7CiB9CkBAIC0xNjM5LDE0ICsxNjM5LDE0IEBAIGJvb2wgSW5wdXRIYW5kbGVyOjpzZXRS
ZWxhdGl2ZUN1cnNvclBvc2l0aW9uKGludCBpbnNlcnRpb25Qb2ludCwgaW50IHJlbGF0aXZlQ3Vy
CiAgICAgaWYgKGN1cnNvclBvc2l0aW9uIDwgMCB8fCBjdXJzb3JQb3NpdGlvbiA+IChpbnQpZWxl
bWVudFRleHQoKS5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgSW5wdXRM
b2coQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6c2V0
UmVsYXRpdmVDdXJzb3JQb3NpdGlvbiBjdXJzb3IgcG9zaXRpb24gJWQiLCBjdXJzb3JQb3NpdGlv
bik7CisgICAgSW5wdXRMb2coTG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpzZXRSZWxhdGl2
ZUN1cnNvclBvc2l0aW9uIGN1cnNvciBwb3NpdGlvbiAlZCIsIGN1cnNvclBvc2l0aW9uKTsKIAog
ICAgIHJldHVybiBzZXRDdXJzb3JQb3NpdGlvbihjdXJzb3JQb3NpdGlvbik7CiB9CiAKIGJvb2wg
SW5wdXRIYW5kbGVyOjpzZXRTcGFubmFibGVUZXh0QW5kUmVsYXRpdmVDdXJzb3Ioc3Bhbm5hYmxl
X3N0cmluZ190KiBzcGFubmFibGVTdHJpbmcsIGludCByZWxhdGl2ZUN1cnNvclBvc2l0aW9uLCBi
b29sIG1hcmtUZXh0QXNDb21wb3NpbmcpCiB7Ci0gICAgSW5wdXRMb2coQmxhY2tCZXJyeTo6UGxh
dGZvcm06OkxvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6c2V0U3Bhbm5hYmxlVGV4dEFuZFJl
bGF0aXZlQ3Vyc29yKCVkLCAlZCwgJWQpXG4iLCBzcGFubmFibGVTdHJpbmctPmxlbmd0aCwgcmVs
YXRpdmVDdXJzb3JQb3NpdGlvbiwgbWFya1RleHRBc0NvbXBvc2luZyk7CisgICAgSW5wdXRMb2co
TG9nTGV2ZWxJbmZvLCAiSW5wdXRIYW5kbGVyOjpzZXRTcGFubmFibGVUZXh0QW5kUmVsYXRpdmVD
dXJzb3IoJWQsICVkLCAlZClcbiIsIHNwYW5uYWJsZVN0cmluZy0+bGVuZ3RoLCByZWxhdGl2ZUN1
cnNvclBvc2l0aW9uLCBtYXJrVGV4dEFzQ29tcG9zaW5nKTsKICAgICBpbnQgaW5zZXJ0aW9uUG9p
bnQgPSBjb21wb3NpdGlvbkFjdGl2ZSgpID8gbV9jb21wb3NpbmdUZXh0U3RhcnQgOiBzZWxlY3Rp
b25TdGFydCgpOwogCiAgICAgUHJvY2Vzc2luZ0NoYW5nZUd1YXJkIGd1YXJkKHRoaXMpOwpAQCAt
MTY4MCw3ICsxNjgwLDcgQEAgaW50MzJfdCBJbnB1dEhhbmRsZXI6OnNldENvbXBvc2luZ1RleHQo
c3Bhbm5hYmxlX3N0cmluZ190KiBzcGFubmFibGVTdHJpbmcsIGludDMKICAgICBpZiAoIXNwYW5u
YWJsZVN0cmluZykKICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgSW5wdXRMb2coQmxhY2tCZXJy
eTo6UGxhdGZvcm06OkxvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6c2V0Q29tcG9zaW5nVGV4
dCBhdCByZWxhdGl2ZUN1cnNvclBvc2l0aW9uOiAlZCIsIHJlbGF0aXZlQ3Vyc29yUG9zaXRpb24p
OworICAgIElucHV0TG9nKExvZ0xldmVsSW5mbywgIklucHV0SGFuZGxlcjo6c2V0Q29tcG9zaW5n
VGV4dCBhdCByZWxhdGl2ZUN1cnNvclBvc2l0aW9uOiAlZCIsIHJlbGF0aXZlQ3Vyc29yUG9zaXRp
b24pOwogCiAgICAgcmV0dXJuIHNldFNwYW5uYWJsZVRleHRBbmRSZWxhdGl2ZUN1cnNvcihzcGFu
bmFibGVTdHJpbmcsIHJlbGF0aXZlQ3Vyc29yUG9zaXRpb24sIHRydWUgLyogbWFya1RleHRBc0Nv
bXBvc2luZyAqLykgPyAwIDogLTE7CiB9CkBAIC0xNjkzLDcgKzE2OTMsNyBAQCBpbnQzMl90IElu
cHV0SGFuZGxlcjo6Y29tbWl0VGV4dChzcGFubmFibGVfc3RyaW5nX3QqIHNwYW5uYWJsZVN0cmlu
ZywgaW50MzJfdCByZQogICAgIGlmICghc3Bhbm5hYmxlU3RyaW5nKQogICAgICAgICByZXR1cm4g
LTE7CiAKLSAgICBJbnB1dExvZyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9nTGV2ZWxJbmZvLCAi
SW5wdXRIYW5kbGVyOjpjb21taXRUZXh0Iik7CisgICAgSW5wdXRMb2coTG9nTGV2ZWxJbmZvLCAi
SW5wdXRIYW5kbGVyOjpjb21taXRUZXh0Iik7CiAKICAgICByZXR1cm4gc2V0U3Bhbm5hYmxlVGV4
dEFuZFJlbGF0aXZlQ3Vyc29yKHNwYW5uYWJsZVN0cmluZywgcmVsYXRpdmVDdXJzb3JQb3NpdGlv
biwgZmFsc2UgLyogbWFya1RleHRBc0NvbXBvc2luZyAqLykgPyAwIDogLTE7CiB9Ci0tIAoxLjcu
NS40Cgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>