<?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>201573</bug_id>
          
          <creation_ts>2019-09-06 20:31:24 -0700</creation_ts>
          <short_desc>Disable TLS 1.0 and 1.1 in WebSockets</short_desc>
          <delta_ts>2019-09-12 17:21:55 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=201745</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1568818</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-06 20:31:24 -0700</bug_when>
    <thetext>Disable TLS 1.0 and 1.1 in WebSockets</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568820</commentid>
    <comment_count>1</comment_count>
      <attachid>378269</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-06 20:37:45 -0700</bug_when>
    <thetext>Created attachment 378269
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568834</commentid>
    <comment_count>2</comment_count>
      <attachid>378277</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-06 21:35:12 -0700</bug_when>
    <thetext>Created attachment 378277
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568890</commentid>
    <comment_count>3</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-07 09:10:08 -0700</bug_when>
    <thetext>Layout test failure unrelated.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1568891</commentid>
    <comment_count>4</comment_count>
      <attachid>378293</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-07 09:11:40 -0700</bug_when>
    <thetext>Created attachment 378293
fix windows build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569067</commentid>
    <comment_count>5</comment_count>
      <attachid>378293</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-08 23:31:43 -0700</bug_when>
    <thetext>Comment on attachment 378293
fix windows build

View in context: https://bugs.webkit.org/attachment.cgi?id=378293&amp;action=review

&gt; Source/WebCore/platform/network/cf/SocketStreamHandleImplCFNet.cpp:314
&gt; +void SocketStreamHandleImpl::setLegacyTLSEnabledCheck(Function&lt;bool()&gt;&amp;&amp; function)

Can we just have setLegacyTLSEnabledCheck take a bool?

&gt; Source/WebKit/NetworkProcess/cocoa/NetworkProcessCocoa.mm:75
&gt; +    });

We coud write it as WebCore::SocketStreamHandleImpl::setLegacyTLSEnabledCheck(parameters.enableLegacyTLS)

&gt; Source/WebKit/UIProcess/Cocoa/WebProcessPoolCocoa.mm:285
&gt; +    parameters.defaultDataStoreParameters.networkSessionParameters.enableLegacyTLS = parameters.enableLegacyTLS;

We disable it for WebKit2.
Can we also do the same for WebKit1?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569371</commentid>
    <comment_count>6</comment_count>
      <attachid>378421</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-09 18:08:20 -0700</bug_when>
    <thetext>Created attachment 378421
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569390</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-09 18:39:31 -0700</bug_when>
    <thetext>http://trac.webkit.org/r249684</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569393</commentid>
    <comment_count>8</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-09 18:40:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/55207423&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569431</commentid>
    <comment_count>9</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-09 20:44:41 -0700</bug_when>
    <thetext>Looking into iOS api test failures...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1569440</commentid>
    <comment_count>10</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-09-09 21:30:53 -0700</bug_when>
    <thetext>http://trac.webkit.org/r249704</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378269</attachid>
            <date>2019-09-06 20:37:45 -0700</date>
            <delta_ts>2019-09-06 21:35:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201573-20190906203744.patch</filename>
            <type>text/plain</type>
            <size>38206</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjg1N2YzOGVmOWI2Nzcy
Y2I5YmM2YmRkZGMyYTk0M2Q1ZTRiNTgwYi4uNTg2MTdiYTljMjZhNWMwYTg3ZDVmYzcwOWQ4NWE3
M2YzYzQ4YjljMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE5LTA5LTA2ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRGlzYWJs
ZSBUTFMgMS4wIGFuZCAxLjEgaW4gV2ViU29ja2V0cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNTczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBleHBhbmRzIG9uIHdoYXQgSSBzdGFydGVkIGlu
IHIyNDkwMTkgd2hlbiBJIGRpc2FibGVkIGxlZ2FjeSBUTFMgZm9yIG91ciB1c2Ugb2YgTlNVUkxT
ZXNzaW9uLgorICAgICAgICBTaW5jZSBvdXIgV2ViU29ja2V0IGltcGxlbWVudGF0aW9uIHVzZXMg
YSBkaWZmZXJlbnQgbmV0d29yayBpbnRlcmZhY2UsIGRpc2FibGUgbGVnYWN5IFRMUyBmb3IgdGhl
bSwgdG9vLgorICAgICAgICBJIHVzZSB0aGUgc2FtZSB0ZW1wb3JhcnkgZGVmYXVsdCB0byByZS1l
bmFibGUgbGVnYWN5IFRMUy4gIEkgYWxzbyBhZGQgYSB1bml0IHRlc3QgZm9yIGJvdGggV2ViU29j
a2V0cyBhbmQgTlNVUkxTZXNzaW9uIHVzZS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZ1
bmN0aW9uPGJvb2wpOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6
c2V0TGVnYWN5VExTRW5hYmxlZENoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVh
bUhhbmRsZUltcGw6OmNyZWF0ZVN0cmVhbXMpOgorCiAyMDE5LTA5LTA2ICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgV2hlbiBkaXNhYmxpbmcg
bGVnYWN5IHByaXZhdGUgYnJvd3NpbmcgZm9yIHRlc3RpbmcsIGNoYW5nZSB0aGUgU2Vzc2lvbklE
IGJhY2sgdG8gd2hhdCBpdCB3YXMsIG5vdCB0aGUgZGVmYXVsdFNlc3Npb25JRApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFu
Z2VMb2cKaW5kZXggY2I5ZjM3ZDcwOWEyNzZkMTc2NTQzNGM5MTJhN2E5ZGViZWFiOTE3NC4uMDY2
ODg0N2U0NjQ3YTJhZmU4OWJhMTY0YzdhOTQ4MjAyNDEyYjZkZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTIgQEAKKzIwMTktMDktMDYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBEaXNhYmxlIFRMUyAxLjAgYW5kIDEuMSBpbiBX
ZWJTb2NrZXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDE1NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg6CisKIDIwMTktMDgtMzAgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgSEFWRV9D
Rk5FVFdPUktfV0lUSF9BVVRPX0FEREVEX0hUVFBfSEVBREVSX1NVUFBSRVNTSU9OX1NVUFBPUlQg
Y29uZGl0aW9uYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggY2IyNDM5OGVlYTZhNGQyZjhhYjU4MzI3ZTNiZGQ5Mjlm
NGMyOTY3Yi4uOWI0ZjYxYWYzNjdkMjczZWFmNmQ4NDBjZDQyZmQ0NWI1Yzk4NTNjOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMiBAQAorMjAxOS0wOS0wNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIERpc2FibGUgVExTIDEuMCBhbmQgMS4xIGlu
IFdlYlNvY2tldHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwMTU3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxh
dGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3NDb2NvYSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9h
bGxvd0FueVRMU0NlcnRpZmljYXRlRm9yV2ViU29ja2V0VGVzdGluZ10pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKToKKwogMjAxOS0w
OS0wNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFdoZW4gZGlzYWJsaW5nIGxlZ2FjeSBwcml2YXRlIGJyb3dzaW5nIGZvciB0ZXN0aW5nLCBj
aGFuZ2UgdGhlIFNlc3Npb25JRCBiYWNrIHRvIHdoYXQgaXQgd2FzLCBub3QgdGhlIGRlZmF1bHRT
ZXNzaW9uSUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0
d29ya1NQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgK
aW5kZXggMGJmMGJiOGIzN2JlNmIxN2MwZGE0ZTUzMDM3ZDcyODI1YmY3MDM0ZC4uMDQ4Y2RiMTQx
YWM4YjcwNmRmYzFlNzFkODdiNjhhOTM1M2E5YTNmZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDxD
Rk5ldHdvcmsvQ0ZIVFRQQ29va2llc1ByaXYuaD4KICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZIVFRQ
U3RyZWFtLmg+CiAjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NGUHJveHlTdXBwb3J0UHJpdi5oPgorI2lu
Y2x1ZGUgPENGTmV0d29yay9DRlNvY2tldFN0cmVhbVByaXYuaD4KICNpbmNsdWRlIDxDRk5ldHdv
cmsvQ0ZVUkxDYWNoZVByaXYuaD4KICNpbmNsdWRlIDxDRk5ldHdvcmsvQ0ZVUkxDb25uZWN0aW9u
UHJpdi5oPgogI2luY2x1ZGUgPENGTmV0d29yay9DRlVSTENyZWRlbnRpYWxTdG9yYWdlLmg+CkBA
IC0yODIsNiArMjgzLDcgQEAgZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRlVSTFJlcXVlc3RB
bGxvd0FsbFBPU1RDYWNoaW5nOwogZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIF9rQ0ZVUkxDYWNo
ZVBhcnRpdGlvbktleTsKIGV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBfa0NGVVJMQ29ubmVjdGlv
blByb3BlcnR5U2hvdWxkU25pZmY7CiBleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYgX2tDRlVSTFN0
b3JhZ2VTZXNzaW9uSXNQcml2YXRlOworZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIGtDRlN0cmVh
bVNvY2tldFNlY3VyaXR5TGV2ZWxUTFN2MV8yOwogCiAjaWYgSEFWRShDRk5FVFdPUktfV0lUSF9D
T05URU5UX0VOQ09ESU5HX1NOSUZGSU5HX09WRVJSSURFKQogZXh0ZXJuIGNvbnN0IENGU3RyaW5n
UmVmIGtDRlVSTFJlcXVlc3RDb250ZW50RGVjb2RlclNraXBVUkxDaGVjazsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1w
bC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5k
bGVJbXBsLmgKaW5kZXggNzdkYWRjYzc3NDQ3MThjNWZhNTI5OGIyNzY0MWM5ODM0NGQyOWI2Yi4u
MTczZTZhZWM4MWFmZWU4NTEzYzEyMmUwNDJlMmVmMjRiYmFhNjg1NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5k
bGVJbXBsLmgKQEAgLTUxLDYgKzUxLDggQEAgcHVibGljOgogCiAgICAgdmlydHVhbCB+U29ja2V0
U3RyZWFtSGFuZGxlSW1wbCgpOwogCisgICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0
TGVnYWN5VExTRW5hYmxlZENoZWNrKEZ1bmN0aW9uPGJvb2woKT4mJik7CisKICAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIHBsYXRmb3JtU2VuZChjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVu
Z3RoLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB2
b2lkIHBsYXRmb3JtU2VuZEhhbmRzaGFrZShjb25zdCB1aW50OF90KiBkYXRhLCBzaXplX3QgbGVu
Z3RoLCBjb25zdCBPcHRpb25hbDxDb29raWVSZXF1ZXN0SGVhZGVyRmllbGRQcm94eT4mLCBGdW5j
dGlvbjx2b2lkKGJvb2wsIGJvb2wpPiYmKSBmaW5hbDsKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lk
IHBsYXRmb3JtQ2xvc2UoKSBmaW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNw
cAppbmRleCAxNDhlMjcyZGExMzYzYTlkYjJhYzgyNjc2OGFlYmNiODUyM2M4ZmJlLi4xZTBlYjMy
NDY5MjA0ZTk2NDFiZGZhNTcxMmJjMTdjYmI1ZWNkMWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5k
bGVJbXBsQ0ZOZXQuY3BwCkBAIC0zMDUsNiArMzA1LDE3IEBAIHN0YXRpYyB2b2lkIHNldENPTk5F
Q1RQcm94eUZvclN0cmVhbShDRlJlYWRTdHJlYW1SZWYgc3RyZWFtLCBDRlN0cmluZ1JlZiBwcm94
eUhvCiAgICAgQ0ZSZWFkU3RyZWFtU2V0UHJvcGVydHkoc3RyZWFtLCBrQ0ZTdHJlYW1Qcm9wZXJ0
eUNPTk5FQ1RQcm94eSwgY29ubmVjdERpY3Rpb25hcnkuZ2V0KCkpOwogfQogCitzdGF0aWMgRnVu
Y3Rpb248Ym9vbCgpPiYgbGVnYWN5VExTRW5hYmxlZENoZWNrKCkKK3sKKyAgICBzdGF0aWMgTmV2
ZXJEZXN0cm95ZWQ8RnVuY3Rpb248Ym9vbCgpPj4gZnVuY3Rpb247CisgICAgcmV0dXJuIGZ1bmN0
aW9uOworfQorCit2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnNldExlZ2FjeVRMU0VuYWJs
ZWRDaGVjayhGdW5jdGlvbjxib29sKCk+JiYgZnVuY3Rpb24pCit7CisgICAgbGVnYWN5VExTRW5h
YmxlZENoZWNrKCkgPSBXVEZNb3ZlKGZ1bmN0aW9uKTsKK30KKwogdm9pZCBTb2NrZXRTdHJlYW1I
YW5kbGVJbXBsOjpjcmVhdGVTdHJlYW1zKCkKIHsKICAgICBpZiAobV9jb25uZWN0aW9uVHlwZSA9
PSBVbmtub3duKQpAQCAtMzI3LDcgKzMzOCw2IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1w
bDo6Y3JlYXRlU3RyZWFtcygpCiAgICAgICAgIENGUmVhZFN0cmVhbVNldFByb3BlcnR5KHJlYWRT
dHJlYW0sIGtDRlN0cmVhbVByb3BlcnR5U291cmNlQXBwbGljYXRpb24sIG1fYXVkaXREYXRhLnNv
dXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhLmdldCgpKTsKICAgICAgICAgQ0ZXcml0ZVN0cmVhbVNl
dFByb3BlcnR5KHdyaXRlU3RyZWFtLCBrQ0ZTdHJlYW1Qcm9wZXJ0eVNvdXJjZUFwcGxpY2F0aW9u
LCBtX2F1ZGl0RGF0YS5zb3VyY2VBcHBsaWNhdGlvbkF1ZGl0RGF0YS5nZXQoKSk7CiAgICAgfQot
ICAgIAogI2VuZGlmCiAKICAgICBtX3JlYWRTdHJlYW0gPSBhZG9wdENGKHJlYWRTdHJlYW0pOwpA
QCAtMzU1LDggKzM2NSwyMyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmNyZWF0ZVN0
cmVhbXMoKQogCiAgICAgaWYgKHNob3VsZFVzZVNTTCgpKSB7CiAgICAgICAgIENGQm9vbGVhblJl
ZiB2YWxpZGF0ZUNlcnRpZmljYXRlQ2hhaW4gPSBEZXByZWNhdGVkR2xvYmFsU2V0dGluZ3M6OmFs
bG93c0FueVNTTENlcnRpZmljYXRlKCkgPyBrQ0ZCb29sZWFuRmFsc2UgOiBrQ0ZCb29sZWFuVHJ1
ZTsKLSAgICAgICAgY29uc3Qgdm9pZCoga2V5c1tdID0geyBrQ0ZTdHJlYW1TU0xQZWVyTmFtZSwg
a0NGU3RyZWFtU1NMTGV2ZWwsIGtDRlN0cmVhbVNTTFZhbGlkYXRlc0NlcnRpZmljYXRlQ2hhaW4g
fTsKLSAgICAgICAgY29uc3Qgdm9pZCogdmFsdWVzW10gPSB7IGhvc3QuZ2V0KCksIGtDRlN0cmVh
bVNvY2tldFNlY3VyaXR5TGV2ZWxOZWdvdGlhdGVkU1NMLCB2YWxpZGF0ZUNlcnRpZmljYXRlQ2hh
aW4gfTsKKyAgICAgICAgYm9vbCBlbmFibGVMZWdhY3lUTFMgPSBmYWxzZTsKKyAgICAgICAgaWYg
KGF1dG8mIGNoZWNrID0gbGVnYWN5VExTRW5hYmxlZENoZWNrKCkpCisgICAgICAgICAgICBlbmFi
bGVMZWdhY3lUTFMgPSBjaGVjaygpOworICAgICAgICBjb25zdCB2b2lkKiBrZXlzW10gPSB7Cisg
ICAgICAgICAgICBrQ0ZTdHJlYW1TU0xQZWVyTmFtZSwKKyAgICAgICAgICAgIGtDRlN0cmVhbVNT
TExldmVsLAorICAgICAgICAgICAga0NGU3RyZWFtU1NMVmFsaWRhdGVzQ2VydGlmaWNhdGVDaGFp
bgorICAgICAgICB9OworICAgICAgICBjb25zdCB2b2lkKiB2YWx1ZXNbXSA9IHsKKyAgICAgICAg
ICAgIGhvc3QuZ2V0KCksCisjaWYgUExBVEZPUk0oQ09DT0EpCisgICAgICAgICAgICBlbmFibGVM
ZWdhY3lUTFMgPyBrQ0ZTdHJlYW1Tb2NrZXRTZWN1cml0eUxldmVsTmVnb3RpYXRlZFNTTCA6IGtD
RlN0cmVhbVNvY2tldFNlY3VyaXR5TGV2ZWxUTFN2MV8yLAorI2Vsc2UKKyAgICAgICAgICAgIGtD
RlN0cmVhbVNvY2tldFNlY3VyaXR5TGV2ZWxOZWdvdGlhdGVkU1NMCisjZW5kaWYKKyAgICAgICAg
ICAgIHZhbGlkYXRlQ2VydGlmaWNhdGVDaGFpbgorICAgICAgICB9OwogICAgICAgICBSZXRhaW5Q
dHI8Q0ZEaWN0aW9uYXJ5UmVmPiBzZXR0aW5ncyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5Q3JlYXRl
KDAsIGtleXMsIHZhbHVlcywgV1RGX0FSUkFZX0xFTkdUSChrZXlzKSwgJmtDRlR5cGVEaWN0aW9u
YXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykpOwogICAg
ICAgICBDRlJlYWRTdHJlYW1TZXRQcm9wZXJ0eShtX3JlYWRTdHJlYW0uZ2V0KCksIGtDRlN0cmVh
bVByb3BlcnR5U1NMU2V0dGluZ3MsIHNldHRpbmdzLmdldCgpKTsKICAgICAgICAgQ0ZXcml0ZVN0
cmVhbVNldFByb3BlcnR5KG1fd3JpdGVTdHJlYW0uZ2V0KCksIGtDRlN0cmVhbVByb3BlcnR5U1NM
U2V0dGluZ3MsIHNldHRpbmdzLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0
d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5j
cHAKaW5kZXggZDI4NTE0N2FmNjMwMGFmZTk3YzNlZGNlMzkxZDMzYzNjMTQxMjc0Yy4uZmIzZTIx
ODU5N2JiZWM1OWM2NDQ5NDlhZjExZDYxN2ZlOWY1NmIxZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9u
UGFyYW1ldGVycy5jcHAKQEAgLTkzLDYgKzkzLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vzc0NyZWF0
aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QKICAgICBl
bmNvZGVyIDw8IGVuYWJsZUFkQ2xpY2tBdHRyaWJ1dGlvbkRlYnVnTW9kZTsKICAgICBlbmNvZGVy
IDw8IGhzdHNTdG9yYWdlRGlyZWN0b3J5OwogICAgIGVuY29kZXIgPDwgaHN0c1N0b3JhZ2VEaXJl
Y3RvcnlFeHRlbnNpb25IYW5kbGU7CisgICAgZW5jb2RlciA8PCBlbmFibGVMZWdhY3lUTFM7CiB9
CiAKIGJvb2wgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJUEM6OkRl
Y29kZXImIGRlY29kZXIsIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiByZXN1bHQp
CkBAIC0yMjgsNiArMjI5LDkgQEAgYm9vbCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
czo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgTmV0d29ya1Byb2MKICAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHJlc3VsdC5oc3RzU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZSkp
CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJl
c3VsdC5lbmFibGVMZWdhY3lUTFMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9O
ZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IDgxYjE1NGVm
ZDYwYzQzOGRjYmYyMThkMzg4ZTA1YTRlMzRlNGE3ODIuLjhlYzkzNTgzYjhiZTU2NTAzYjVhYWI5
MjJjOTlhZGY5YTY2MTE1YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2UvV2ViS2l0
L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKQEAgLTEx
MSw2ICsxMTEsNyBAQCBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMgewog
ICAgIGJvb2wgZW5hYmxlQWRDbGlja0F0dHJpYnV0aW9uRGVidWdNb2RlIHsgZmFsc2UgfTsKICAg
ICBTdHJpbmcgaHN0c1N0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlIGhzdHNTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgIGJvb2wgZW5hYmxl
TGVnYWN5VExTIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0Nv
Y29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vz
c0NvY29hLm1tCmluZGV4IGNjZTI2YWNmYjA0Y2Y3MDc0ZTc2M2Y1YmJjOGU0YTVlOThhMTVjOWEu
LjUxYzc3M2U1NzhkN2EwY2IyMTBjMThkZjJkZDQ3MWYyZDVkOTk2ZmYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2NvYS5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9jZXNzQ29j
b2EubW0KQEAgLTM5LDYgKzM5LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFwcGxpY2F0
aW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgorI2ltcG9ydCA8V2ViQ29yZS9Tb2NrZXRT
dHJlYW1IYW5kbGVJbXBsLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQSS5oPgog
I2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvQ2FsbGJhY2tBZ2dyZWdhdG9y
Lmg+CkBAIC02OSw2ICs3MCwxMCBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplTmV0d29ya1NldHRp
bmdzKCkKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1By
b2Nlc3NDb2NvYShjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1l
dGVycykKIHsKKyAgICBXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpzZXRMZWdhY3lU
TFNFbmFibGVkQ2hlY2soW2VuYWJsZWQgPSBwYXJhbWV0ZXJzLmVuYWJsZUxlZ2FjeVRMU10gewor
ICAgICAgICByZXR1cm4gZW5hYmxlZDsKKyAgICB9KTsKKwogICAgIFdlYkNvcmU6OnNldEFwcGxp
Y2F0aW9uQnVuZGxlSWRlbnRpZmllcihwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZUlkZW50aWZp
ZXIpOwogICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0aW9uU0RLVmVyc2lvbihwYXJhbWV0ZXJzLnVp
UHJvY2Vzc1NES1ZlcnNpb24pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCmluZGV4IGViYWM1NjhlM2RkYjY4NzBmODViMDE1MDhl
YzIwZmFhYjdmMjA0ZDYuLmIxZTcxZDQyNGI2OTQ1MzExZWNiZTM2MWQ2MzJhYWM4OTJhOTAxNWEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQ
b29sLm1tCkBAIC02NDgsNCArNjQ4LDkgQEAgc3RhdGljIE5TRGljdGlvbmFyeSAqcG9saWNpZXNI
YXNoTWFwVG9EaWN0aW9uYXJ5KGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFMKICAgICBf
cHJvY2Vzc1Bvb2wtPmNsZWFyUGVybWFuZW50Q3JlZGVudGlhbHNGb3JQcm90ZWN0aW9uU3BhY2Uo
V2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlKHByb3RlY3Rpb25TcGFjZSkpOwogfQogCistICh2b2lk
KV9hbGxvd0FueVRMU0NlcnRpZmljYXRlRm9yV2ViU29ja2V0VGVzdGluZworeworICAgIF9wcm9j
ZXNzUG9vbC0+c2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JXZWJTb2NrZXQodHJ1ZSk7Cit9
CisKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9X
S1Byb2Nlc3NQb29sUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKaW5kZXggZWZmZjQwNTBhOThlMDJiMjE5MGRjYzAzNmNm
Njg3MTg1OGVkZmQwYy4uNjY2NjdiYTllMDMzZDIwNzZmYWRiMDFiMTU2ZmQ4MTNlZWEyOTZlNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bv
b2xQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJv
Y2Vzc1Bvb2xQcml2YXRlLmgKQEAgLTEyMyw2ICsxMjMsNyBAQAogLSAodm9pZClfZ2V0QWN0aXZl
UGFnZXNPcmlnaW5zSW5XZWJQcm9jZXNzRm9yVGVzdGluZzoocGlkX3QpcGlkIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkKF4pKE5TQXJyYXk8TlNTdHJpbmcgKj4gKikpY29tcGxldGlvbkhhbmRsZXIg
V0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNC40KSwgaW9zKDEyLjIpKTsKIC0gKEJPT0wpX25l
dHdvcmtQcm9jZXNzSGFzRW50aXRsZW1lbnRGb3JUZXN0aW5nOihOU1N0cmluZyAqKWVudGl0bGVt
ZW50IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQuNCksIGlvcygxMi4yKSk7CiAtICh2b2lk
KV9jbGVhclBlcm1hbmVudENyZWRlbnRpYWxzRm9yUHJvdGVjdGlvblNwYWNlOihOU1VSTFByb3Rl
Y3Rpb25TcGFjZSAqKXByb3RlY3Rpb25TcGFjZSBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01B
Q19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfYWxsb3dBbnlUTFNDZXJ0aWZpY2F0
ZUZvcldlYlNvY2tldFRlc3RpbmcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNfVEJBKSwg
aW9zKFdLX0lPU19UQkEpKTsKIAogQHByb3BlcnR5IChub25hdG9taWMsIGdldHRlcj1faXNDb29r
aWVTdG9yYWdlUGFydGl0aW9uaW5nRW5hYmxlZCwgc2V0dGVyPV9zZXRDb29raWVTdG9yYWdlUGFy
dGl0aW9uaW5nRW5hYmxlZDopIEJPT0wgX2Nvb2tpZVN0b3JhZ2VQYXJ0aXRpb25pbmdFbmFibGVk
IFdLX0FQSV9ERVBSRUNBVEVEKCJQYXJ0aXRpb25lZCBjb29raWVzIGFyZSBubyBsb25nZXIgc3Vw
cG9ydGVkIiwgbWFjb3MoMTAuMTIuMywgMTAuMTQuNCksIGlvcygxMC4zLCAxMi4yKSk7CiBAcHJv
cGVydHkgKG5vbmF0b21pYywgZ2V0dGVyPV9pc1N0b3JhZ2VBY2Nlc3NBUElFbmFibGVkLCBzZXR0
ZXI9X3NldFN0b3JhZ2VBY2Nlc3NBUElFbmFibGVkOikgQk9PTCBfc3RvcmFnZUFjY2Vzc0FQSUVu
YWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9zKDExLjMpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2Eu
bW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1t
CmluZGV4IDlmZDZhNjExYjU1Y2FkYjY5ODAxNjJkZWRmMWUzNWFmNzlhYWFmMjUuLjBmYWIwODYy
ZTNmMmU0ZTE5OGVkYjQ1MzliNTI1MjE5NGRiNDIzM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQpAQCAtMjgxLDcgKzI4
MSw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9j
ZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBw
YXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1l
dGVycy5lbmFibGVMZWdhY3lUTFMgPSBbZGVmYXVsdHMgYm9vbEZvcktleTpAIldlYktpdEVuYWJs
ZUxlZ2FjeVRMUyJdOworICAgIHBhcmFtZXRlcnMuZW5hYmxlTGVnYWN5VExTID0gW2RlZmF1bHRz
IGJvb2xGb3JLZXk6QCJXZWJLaXRFbmFibGVMZWdhY3lUTFMiXTsKKyAgICBwYXJhbWV0ZXJzLmRl
ZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5lbmFibGVM
ZWdhY3lUTFMgPSBwYXJhbWV0ZXJzLmVuYWJsZUxlZ2FjeVRMUzsKIAogICAgIHBhcmFtZXRlcnMu
bmV0d29ya0FUU0NvbnRleHQgPSBhZG9wdENGKF9DRk5ldHdvcmtDb3B5QVRTQ29udGV4dCgpKTsK
IApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDQw
NmU4Mzg2NjY4ZWVlNjlkODUwN2YxMzJiNTVhMDQzZWEzZmM1OTAuLjE0ZWRkZTNiMjA5YTg2M2Uy
Zjg1YTE5ZjBlYzMzYzQyYmEwNzIwYTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysg
Yi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxOS0wOS0wNiAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIERpc2FibGUgVExT
IDEuMCBhbmQgMS4xIGluIFdlYlNvY2tldHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMTU3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9Tb3VyY2VzQ29jb2EudHh0OgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVENQU2VydmVyLmNwcDoKKyAgICAgICAgKHNrX0NSWVBUT19C
VUZGRVJfbnVtKToKKyAgICAgICAgKHNrX0NSWVBUT19CVUZGRVJfdmFsdWUpOgorICAgICAgICAo
VGVzdFdlYktpdEFQSTo6ZGVsZXRlcjxDUllQVE9fQlVGRkVSPjo6b3BlcmF0b3IoKSk6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpUQ1BTZXJ2ZXI6OlRDUFNlcnZlcik6CisgICAgICAgIChUZXN0
V2ViS2l0QVBJOjpUQ1BTZXJ2ZXI6Omxpc3RlbkZvckNvbm5lY3Rpb25zKToKKyAgICAgICAgKFRl
c3RXZWJLaXRBUEk6OmRlbGV0ZXI8WDUwOT46Om9wZXJhdG9yKCkpOiBEZWxldGVkLgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6ZGVsZXRlcjx1aW50OF90OjpvcGVyYXRvcigpKTogRGVsZXRlZC4K
KyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1RDUFNlcnZlci5oOgorICAgICAgICAqIFRlc3RXZWJL
aXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAq
IFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVExTRGVwcmVjYXRpb24ubW06IEFkZGVk
LgorICAgICAgICAoLVtXZWJTb2NrZXREZWxlZ2F0ZSB3YWl0Rm9yTWVzc2FnZV0pOgorICAgICAg
ICAoLVtXZWJTb2NrZXREZWxlZ2F0ZSB3ZWJWaWV3OnJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0
aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVz
dE5hdmlnYXRpb25EZWxlZ2F0ZS5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29jb2EvVGVz
dE5hdmlnYXRpb25EZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bVGVzdE5hdmlnYXRpb25EZWxlZ2F0
ZSB3ZWJWaWV3OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjb21wbGV0aW9uSGFu
ZGxlcjpdKToKKyAgICAgICAgKC1bVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSB3YWl0Rm9yRGlkRmFp
bFByb3Zpc2lvbmFsTmF2aWdhdGlvbl0pOgorCiAyMDE5LTA5LTA2ICBBbGV4IENocmlzdGVuc2Vu
ICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgV2hlbiBkaXNhYmxpbmcgbGVn
YWN5IHByaXZhdGUgYnJvd3NpbmcgZm9yIHRlc3RpbmcsIGNoYW5nZSB0aGUgU2Vzc2lvbklEIGJh
Y2sgdG8gd2hhdCBpdCB3YXMsIG5vdCB0aGUgZGVmYXVsdFNlc3Npb25JRApkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9Tb3VyY2VzQ29jb2EudHh0IGIvVG9vbHMvVGVzdFdlYktpdEFQ
SS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDA3NzA1MGQ4ZWNlNGU4ZTA4NDEzNTM3Y2E5NWM0YWE0
N2Y2NDM4YTYuLjdkYjRjMzk2ODgzZjk2ODI5NzQwMWM5Zjk4NjE1OWE3NWEyMjliZWQgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvU291cmNlc0NvY29hLnR4dAorKysgYi9Ub29scy9U
ZXN0V2ViS2l0QVBJL1NvdXJjZXNDb2NvYS50eHQKQEAgLTI4LDMgKzI4LDUgQEAgY29jb2EvUGxh
dGZvcm1VdGlsaXRpZXNDb2NvYS5tbQogY29jb2EvVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5tbQog
Y29jb2EvVGVzdFByb3RvY29sLm1tCiBjb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCisKK1Rlc3RzL1dl
YktpdENvY29hL1RMU0RlcHJlY2F0aW9uLm1tCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0
QVBJL1RDUFNlcnZlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1RDUFNlcnZlci5jcHAKaW5k
ZXggMTIzODI1N2UwYjBkYTAyN2Q5NTYzODJmNWJkNTc0YmYwYmVhYzZjMy4uMTZmOTI4MjMyMzFl
ZTNmMzJmZjU0YWEwOTIxMzVkYTQxZTA4NmNkYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktp
dEFQSS9UQ1BTZXJ2ZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVENQU2VydmVyLmNw
cApAQCAtMzMsNDYgKzMzLDU5IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+CiAKICNp
ZiBIQVZFKFNTTCkKKworI2RlZmluZSBTVEFDS19PRih0eXBlKSBzdHJ1Y3Qgc3RhY2tfc3RfIyN0
eXBlCisKIGV4dGVybiAiQyIgewogCitlbnVtIHNzbF92ZXJpZnlfcmVzdWx0X3QgeworICAgIHNz
bF92ZXJpZnlfb2ssCisgICAgc3NsX3ZlcmlmeV9pbnZhbGlkLAorICAgIHNzbF92ZXJpZnlfcmV0
cnksCit9OworCiBzdHJ1Y3QgQklPOwotc3RydWN0IFg1MDk7CitzdHJ1Y3QgQ1JZUFRPX0JVRkZF
UjsKIHN0cnVjdCBTU0xfQ1RYOwogc3RydWN0IEVWUF9QS0VZOwogc3RydWN0IFNTTF9NRVRIT0Q7
Ci1zdHJ1Y3QgWDUwOV9TVE9SRV9DVFggewotICAgIHZvaWQqIHVudXNlZDsKLSAgICBYNTA5KiBj
ZXJ0OwotfTsKK3N0cnVjdCBTU0xfUFJJVkFURV9LRVlfTUVUSE9EOworc3RydWN0IF9TVEFDSzsK
K3N0cnVjdCBDUllQVE9fQlVGRkVSX1BPT0w7CiBzdHJ1Y3QgcGVtX3Bhc3N3b3JkX2NiOwogaW50
IEJJT19mcmVlKEJJTyopOwogaW50IFNTTF9mcmVlKFNTTCopOwotaW50IFg1MDlfZnJlZShYNTA5
Kik7CiBpbnQgU1NMX0NUWF9mcmVlKFNTTF9DVFgqKTsKIGludCBFVlBfUEtFWV9mcmVlKEVWUF9Q
S0VZKik7CiBpbnQgU1NMX2xpYnJhcnlfaW5pdCgpOwotY29uc3QgU1NMX01FVEhPRCogU1NMdjIz
X3NlcnZlcl9tZXRob2QoKTsKK2NvbnN0IFNTTF9NRVRIT0QqIFRMU193aXRoX2J1ZmZlcnNfbWV0
aG9kKCk7CiBCSU8qIEJJT19uZXdfbWVtX2J1Zihjb25zdCB2b2lkKiwgaW50KTsKLVg1MDkqIFBF
TV9yZWFkX2Jpb19YNTA5KEJJTyosIFg1MDkqKiwgcGVtX3Bhc3N3b3JkX2NiKiwgdm9pZCopOwog
RVZQX1BLRVkqIFBFTV9yZWFkX2Jpb19Qcml2YXRlS2V5KEJJTyosIEVWUF9QS0VZKiosIHBlbV9w
YXNzd29yZF9jYiosIHZvaWQqKTsKIFNTTF9DVFgqIFNTTF9DVFhfbmV3KGNvbnN0IFNTTF9NRVRI
T0QqKTsKLWNvbnN0IFNTTF9NRVRIT0QqIFNTTHYyM19zZXJ2ZXJfbWV0aG9kKCk7Ci1pbnQgU1NM
X0NUWF91c2VfY2VydGlmaWNhdGUoU1NMX0NUWCosIFg1MDkqKTsKLWludCBTU0xfQ1RYX3VzZV9Q
cml2YXRlS2V5KFNTTF9DVFgqLCBFVlBfUEtFWSopOwogU1NMKiBTU0xfbmV3KFNTTF9DVFgqKTsK
IGludCBTU0xfYWNjZXB0KFNTTCopOwogaW50IFNTTF9zZXRfZmQoU1NMKiwgaW50KTsKLXZvaWQg
U1NMX0NUWF9zZXRfdmVyaWZ5KFNTTF9DVFgqLCBpbnQsIGludCAoKikoaW50LCBYNTA5X1NUT1JF
X0NUWCopKTsKLXZvaWQgU1NMX0NUWF9zZXRfY2VydF92ZXJpZnlfY2FsbGJhY2soU1NMX0NUWCos
IGludCAoKikoWDUwOV9TVE9SRV9DVFgqLCB2b2lkKiksIHZvaWQqKTsKIGludCBTU0xfZ2V0X2Vy
cm9yKGNvbnN0IFNTTCosIGludCk7Cit2b2lkIFNTTF9DVFhfc2V0X2N1c3RvbV92ZXJpZnkoU1NM
X0NUWCosIGludCBtb2RlLCBlbnVtIHNzbF92ZXJpZnlfcmVzdWx0X3QgKCpjYWxsYmFjaykoU1NM
ICpzc2wsIHVpbnQ4X3QgKm91dF9hbGVydCkpOwogaW50IFNTTF9yZWFkKFNTTCosIHZvaWQqLCBp
bnQpOwogaW50IFNTTF93cml0ZShTU0wqLCBjb25zdCB2b2lkKiwgaW50KTsKLWludCBpMmRfWDUw
OShYNTA5KiwgdW5zaWduZWQgY2hhcioqKTsKK2NvbnN0IHVpbnQ4X3QqIENSWVBUT19CVUZGRVJf
ZGF0YShjb25zdCBDUllQVE9fQlVGRkVSKik7CitzaXplX3QgQ1JZUFRPX0JVRkZFUl9sZW4oY29u
c3QgQ1JZUFRPX0JVRkZFUiopOwogdm9pZCBPUEVOU1NMX2ZyZWUodm9pZCopOworaW50IFNTTF9D
VFhfc2V0X2NoYWluX2FuZF9rZXkoU1NMX0NUWCosIENSWVBUT19CVUZGRVIgKmNvbnN0ICpjZXJ0
cywgc2l6ZV90IG51bV9jZXJ0cywgRVZQX1BLRVkqLCBjb25zdCBTU0xfUFJJVkFURV9LRVlfTUVU
SE9EKik7CitDUllQVE9fQlVGRkVSKiBDUllQVE9fQlVGRkVSX25ldyhjb25zdCB1aW50OF90Kiwg
c2l6ZV90LCBDUllQVE9fQlVGRkVSX1BPT0wqKTsKK3ZvaWQgQ1JZUFRPX0JVRkZFUl9mcmVlKENS
WVBUT19CVUZGRVIqKTsKK3NpemVfdCBza19udW0oY29uc3QgX1NUQUNLKik7Cit2b2lkKiBza192
YWx1ZShjb25zdCBfU1RBQ0sqLCBzaXplX3QpOworY29uc3QgU1RBQ0tfT0YoQ1JZUFRPX0JVRkZF
UikgKlNTTF9nZXQwX3BlZXJfY2VydGlmaWNhdGVzKGNvbnN0IFNTTCopOwordm9pZCBTU0xfQ1RY
X3NldF9tYXhfcHJvdG9fdmVyc2lvbihTU0xfQ1RYKiwgdWludDE2X3QpOwogI2RlZmluZSBTU0xf
VkVSSUZZX1BFRVIgMHgwMQogI2RlZmluZSBTU0xfVkVSSUZZX0ZBSUxfSUZfTk9fUEVFUl9DRVJU
IDB4MDIKIAogfSAvLyBleHRlcm4gIkMiCisKK2lubGluZSBzaXplX3Qgc2tfQ1JZUFRPX0JVRkZF
Ul9udW0oY29uc3QgU1RBQ0tfT0YoQ1JZUFRPX0JVRkZFUikgKnNrKSB7IHJldHVybiBza19udW0o
KGNvbnN0IF9TVEFDSyAqKXNrKTsgfQoraW5saW5lIENSWVBUT19CVUZGRVIqIHNrX0NSWVBUT19C
VUZGRVJfdmFsdWUoY29uc3QgU1RBQ0tfT0YoQ1JZUFRPX0JVRkZFUikgKnNrLCBzaXplX3QgaSkg
eyByZXR1cm4gKENSWVBUT19CVUZGRVIgKilza192YWx1ZSgoY29uc3QgX1NUQUNLICopc2ssIGkp
OyB9CiAjZW5kaWYgLy8gSEFWRShTU0wpCiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKQEAg
LTkxLDEyICsxMDQsNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBkZWxldGVyPFNTTD4gewogICAgICAg
ICBTU0xfZnJlZShzc2wpOwogICAgIH0KIH07Ci10ZW1wbGF0ZTw+IHN0cnVjdCBkZWxldGVyPFg1
MDk+IHsKLSAgICB2b2lkIG9wZXJhdG9yKCkoWDUwOSogeDUwOSkKLSAgICB7Ci0gICAgICAgIFg1
MDlfZnJlZSh4NTA5KTsKLSAgICB9Ci19OwogdGVtcGxhdGU8PiBzdHJ1Y3QgZGVsZXRlcjxTU0xf
Q1RYPiB7CiAgICAgdm9pZCBvcGVyYXRvcigpKFNTTF9DVFgqIGN0eCkKICAgICB7CkBAIC0xMDks
MTIgKzExNiwxNSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBkZWxldGVyPEVWUF9QS0VZPiB7CiAgICAg
ICAgIEVWUF9QS0VZX2ZyZWUoa2V5KTsKICAgICB9CiB9OwotdGVtcGxhdGU8PiBzdHJ1Y3QgZGVs
ZXRlcjx1aW50OF90W10+IHsKLSAgICB2b2lkIG9wZXJhdG9yKCkodWludDhfdCogYnVmZmVyKQor
dGVtcGxhdGU8PiBzdHJ1Y3QgZGVsZXRlcjxDUllQVE9fQlVGRkVSPiB7CisgICAgdm9pZCBvcGVy
YXRvcigpKENSWVBUT19CVUZGRVIqIGJ1ZmZlcikKICAgICB7Ci0gICAgICAgIE9QRU5TU0xfZnJl
ZShidWZmZXIpOworICAgICAgICBDUllQVE9fQlVGRkVSX2ZyZWUoYnVmZmVyKTsKICAgICB9CiB9
OworbmFtZXNwYWNlIHNzbCB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdXNpbmcgdW5pcXVlX3B0
ciA9IHN0ZDo6dW5pcXVlX3B0cjxULCBkZWxldGVyPFQ+PjsKK30KICNlbmRpZiAvLyBIQVZFKFNT
TCkKIAogVENQU2VydmVyOjpUQ1BTZXJ2ZXIoRnVuY3Rpb248dm9pZChTb2NrZXQpPiYmIGNvbm5l
Y3Rpb25IYW5kbGVyLCBzaXplX3QgY29ubmVjdGlvbnMpCkBAIC0xMjQsNDkgKzEzNCwzMiBAQCBU
Q1BTZXJ2ZXI6OlRDUFNlcnZlcihGdW5jdGlvbjx2b2lkKFNvY2tldCk+JiYgY29ubmVjdGlvbkhh
bmRsZXIsIHNpemVfdCBjb25uZWN0aQogfQogCiAjaWYgSEFWRShTU0wpCi1UQ1BTZXJ2ZXI6OlRD
UFNlcnZlcihQcm90b2NvbCBwcm90b2NvbCwgRnVuY3Rpb248dm9pZChTU0wqKT4mJiBzZWN1cmVD
b25uZWN0aW9uSGFuZGxlcikKK1RDUFNlcnZlcjo6VENQU2VydmVyKFByb3RvY29sIHByb3RvY29s
LCBGdW5jdGlvbjx2b2lkKFNTTCopPiYmIHNlY3VyZUNvbm5lY3Rpb25IYW5kbGVyLCBPcHRpb25h
bDx1aW50MTZfdD4gbWF4VExTVmVyc2lvbikKIHsKLSAgICBhdXRvIHN0YXJ0U2VjdXJlQ29ubmVj
dGlvbiA9IFtzZWN1cmVDb25uZWN0aW9uSGFuZGxlciA9IFdURk1vdmUoc2VjdXJlQ29ubmVjdGlv
bkhhbmRsZXIpLCBwcm90b2NvbF0gKFNvY2tldCBzb2NrZXQpIHsKKyAgICBhdXRvIHN0YXJ0U2Vj
dXJlQ29ubmVjdGlvbiA9IFtzZWN1cmVDb25uZWN0aW9uSGFuZGxlciA9IFdURk1vdmUoc2VjdXJl
Q29ubmVjdGlvbkhhbmRsZXIpLCBwcm90b2NvbCwgbWF4VExTVmVyc2lvbl0gKFNvY2tldCBzb2Nr
ZXQpIHsKICAgICAgICAgU1NMX2xpYnJhcnlfaW5pdCgpOwogCi0gICAgICAgIHN0ZDo6dW5pcXVl
X3B0cjxTU0xfQ1RYLCBkZWxldGVyPFNTTF9DVFg+PiBjdHgoU1NMX0NUWF9uZXcoU1NMdjIzX3Nl
cnZlcl9tZXRob2QoKSkpOworICAgICAgICBzc2w6OnVuaXF1ZV9wdHI8U1NMX0NUWD4gY3R4KFNT
TF9DVFhfbmV3KFRMU193aXRoX2J1ZmZlcnNfbWV0aG9kKCkpKTsKIAogICAgICAgICAvLyBUaGlz
IGlzIGEgdGVzdCBjZXJ0aWZpY2F0ZSBmcm9tIEJvcmluZ1NTTC4KLSAgICAgICAgY2hhciBrQ2Vy
dFBFTVtdID0KLSAgICAgICAgIi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLVxuIgotICAgICAg
ICAiTUlJQ1dEQ0NBY0dnQXdJQkFnSUpBUHV3VEM2ckVKc01NQTBHQ1NxR1NJYjNEUUVCQlFVQU1F
VXhDekFKQmdOVlxuIgotICAgICAgICAiQkFZVEFrRlZNUk13RVFZRFZRUUlEQXBUYjIxbExWTjBZ
WFJsTVNFd0h3WURWUVFLREJoSmJuUmxjbTVsZENCWFxuIgotICAgICAgICAiYVdSbmFYUnpJRkIw
ZVNCTWRHUXdIaGNOTVRRd05ESXpNakExTURRd1doY05NVGN3TkRJeU1qQTFNRFF3V2pCRlxuIgot
ICAgICAgICAiTVFzd0NRWURWUVFHRXdKQlZURVRNQkVHQTFVRUNBd0tVMjl0WlMxVGRHRjBaVEVo
TUI4R0ExVUVDZ3dZU1c1MFxuIgotICAgICAgICAiWlhKdVpYUWdWMmxrWjJsMGN5QlFkSGtnVEhS
a01JR2ZNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0R05BRENCaVFLQlxuIgotICAgICAgICAiZ1FEWUs4
aW1NdVJpLzAzejBLMVppMFdudmZGSHZ3bFlleUs5TmE2WEpZYVVvSURBdEI5MmtXZEdNZEFRaExj
aVxuIgotICAgICAgICAiSG5BamtYTEk2VzE1T29WM2dBL0VsUloxeFVweFRNaGpQNlB5WTV3cVQ1
cjZ5OEZ4YmlpRktLQW5IbVVjcmdmVlxuIgotICAgICAgICAiVzI4dFErMHJrTEdNcnlSdHJ1a1hP
Z1hCdjdnY3JtVTdHMWpDMmE3V3FtZUk4UUlEQVFBQm8xQXdUakFkQmdOVlxuIgotICAgICAgICAi
SFE0RUZnUVVpM1hWck1zSXZnNGZaYmY2VnI1c3AzWGFoYTh3SHdZRFZSMGpCQmd3Rm9BVWkzWFZy
TXNJdmc0ZlxuIgotICAgICAgICAiWmJmNlZyNXNwM1hhaGE4d0RBWURWUjBUQkFVd0F3RUIvekFO
QmdrcWhraUc5dzBCQVFVRkFBT0JnUUE3NkhodFxuIgotICAgICAgICAibGRZOWF2Y1RHU3did29p
dUlxdjBqVEwxZkhGbnp5M1JITUxEaCtMcHZvbGM1RFNyU0pIQ1A1V3VLMGVlSlhoclxuIgotICAg
ICAgICAiVDVvUXBITDl6L2NDRExBS0NLUmE0dVYwZmhFZE9XQnF5UjlwOHk1akp0eWU3MnQ2Q3VG
VVY1aXFjcEY0Qkg0ZlxuIgotICAgICAgICAiajJWTkh3c1NySndrRDRRVUdsVXRIN3Z3blFteUNG
eFpNbVdBSmc9PVxuIgotICAgICAgICAiLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLVxuIjsKLQot
ICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QklPLCBkZWxldGVyPEJJTz4+IGNlcnRCSU8oQklPX25l
d19tZW1fYnVmKGtDZXJ0UEVNLCBzdHJsZW4oa0NlcnRQRU0pKSk7Ci0gICAgICAgIHN0ZDo6dW5p
cXVlX3B0cjxYNTA5LCBkZWxldGVyPFg1MDk+PiBjZXJ0WDUwOShQRU1fcmVhZF9iaW9fWDUwOShj
ZXJ0QklPLmdldCgpLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKSk7Ci0gICAgICAgIEFTU0VS
VChjZXJ0WDUwOSk7Ci0gICAgICAgIFNTTF9DVFhfdXNlX2NlcnRpZmljYXRlKGN0eC5nZXQoKSwg
Y2VydFg1MDkuZ2V0KCkpOwotCi0gICAgICAgIGlmIChwcm90b2NvbCA9PSBQcm90b2NvbDo6SFRU
UFNXaXRoQ2xpZW50Q2VydGlmaWNhdGVSZXF1ZXN0KSB7Ci0gICAgICAgICAgICBTU0xfQ1RYX3Nl
dF92ZXJpZnkoY3R4LmdldCgpLCBTU0xfVkVSSUZZX1BFRVIgfCBTU0xfVkVSSUZZX0ZBSUxfSUZf
Tk9fUEVFUl9DRVJULCBudWxscHRyKTsKLSAgICAgICAgICAgIFNTTF9DVFhfc2V0X2NlcnRfdmVy
aWZ5X2NhbGxiYWNrKGN0eC5nZXQoKSwgW10gKFg1MDlfU1RPUkVfQ1RYKiBzdG9yZV9jdHgsIHZv
aWQqKSAtPiBpbnQgewotICAgICAgICAgICAgICAgIHVpbnQ4X3QqIGJ1ZmZlclBvaW50ZXIgPSBu
dWxscHRyOwotICAgICAgICAgICAgICAgIGF1dG8gbGVuZ3RoID0gaTJkX1g1MDkoc3RvcmVfY3R4
LT5jZXJ0LCAmYnVmZmVyUG9pbnRlcik7Ci0gICAgICAgICAgICAgICAgc3RkOjp1bmlxdWVfcHRy
PHVpbnQ4X3RbXSwgZGVsZXRlcjx1aW50OF90W10+PiBidWZmZXIoYnVmZmVyUG9pbnRlcik7Ci0g
ICAgICAgICAgICAgICAgYXV0byBleHBlY3RlZENlcnQgPSB0ZXN0Q2VydGlmaWNhdGUoKTsKLSAg
ICAgICAgICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8aW50PihleHBlY3RlZENlcnQuc2l6
ZSgpKSwgbGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8IGxlbmd0
aDsgKytpKQotICAgICAgICAgICAgICAgICAgICBFWFBFQ1RfRVEoYnVmZmVyLmdldCgpW2ldLCBl
eHBlY3RlZENlcnRbaV0pOwotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgICAg
fSwgbnVsbHB0cik7Ci0gICAgICAgIH0KKyAgICAgICAgU3RyaW5nIGNlcnRQRU0oCisgICAgICAg
ICJNSUlDV0RDQ0FjR2dBd0lCQWdJSkFQdXdUQzZyRUpzTU1BMEdDU3FHU0liM0RRRUJCUVVBTUVV
eEN6QUpCZ05WIgorICAgICAgICAiQkFZVEFrRlZNUk13RVFZRFZRUUlEQXBUYjIxbExWTjBZWFJs
TVNFd0h3WURWUVFLREJoSmJuUmxjbTVsZENCWCIKKyAgICAgICAgImFXUm5hWFJ6SUZCMGVTQk1k
R1F3SGhjTk1UUXdOREl6TWpBMU1EUXdXaGNOTVRjd05ESXlNakExTURRd1dqQkYiCisgICAgICAg
ICJNUXN3Q1FZRFZRUUdFd0pCVlRFVE1CRUdBMVVFQ0F3S1UyOXRaUzFUZEdGMFpURWhNQjhHQTFV
RUNnd1lTVzUwIgorICAgICAgICAiWlhKdVpYUWdWMmxrWjJsMGN5QlFkSGtnVEhSa01JR2ZNQTBH
Q1NxR1NJYjNEUUVCQVFVQUE0R05BRENCaVFLQiIKKyAgICAgICAgImdRRFlLOGltTXVSaS8wM3ow
SzFaaTBXbnZmRkh2d2xZZXlLOU5hNlhKWWFVb0lEQXRCOTJrV2RHTWRBUWhMY2kiCisgICAgICAg
ICJIbkFqa1hMSTZXMTVPb1YzZ0EvRWxSWjF4VXB4VE1oalA2UHlZNXdxVDVyNnk4RnhiaWlGS0tB
bkhtVWNyZ2ZWIgorICAgICAgICAiVzI4dFErMHJrTEdNcnlSdHJ1a1hPZ1hCdjdnY3JtVTdHMWpD
MmE3V3FtZUk4UUlEQVFBQm8xQXdUakFkQmdOViIKKyAgICAgICAgIkhRNEVGZ1FVaTNYVnJNc0l2
ZzRmWmJmNlZyNXNwM1hhaGE4d0h3WURWUjBqQkJnd0ZvQVVpM1hWck1zSXZnNGYiCisgICAgICAg
ICJaYmY2VnI1c3AzWGFoYTh3REFZRFZSMFRCQVV3QXdFQi96QU5CZ2txaGtpRzl3MEJBUVVGQUFP
QmdRQTc2SGh0IgorICAgICAgICAibGRZOWF2Y1RHU3did29pdUlxdjBqVEwxZkhGbnp5M1JITUxE
aCtMcHZvbGM1RFNyU0pIQ1A1V3VLMGVlSlhociIKKyAgICAgICAgIlQ1b1FwSEw5ei9jQ0RMQUtD
S1JhNHVWMGZoRWRPV0JxeVI5cDh5NWpKdHllNzJ0NkN1RlVWNWlxY3BGNEJINGYiCisgICAgICAg
ICJqMlZOSHdzU3JKd2tENFFVR2xVdEg3dnduUW15Q0Z4Wk1tV0FKZz09Iik7CisgICAgICAgIFZl
Y3Rvcjx1aW50OF90PiBjZXJ0REVSOworICAgICAgICBiYXNlNjREZWNvZGUoY2VydFBFTSwgY2Vy
dERFUiwgV1RGOjpCYXNlNjREZWNvZGVPcHRpb25zOjpCYXNlNjREZWZhdWx0KTsKKyAgICAgICAg
c3NsOjp1bmlxdWVfcHRyPENSWVBUT19CVUZGRVI+IGNlcnQoQ1JZUFRPX0JVRkZFUl9uZXcoY2Vy
dERFUi5kYXRhKCksIGNlcnRERVIuc2l6ZSgpLCBudWxscHRyKSk7CisgICAgICAgIEFTU0VSVChj
ZXJ0KTsKIAogICAgICAgICAvLyBUaGlzIGlzIGEgdGVzdCBrZXkgZnJvbSBCb3JpbmdTU0wuCiAg
ICAgICAgIGNoYXIga0tleVBFTVtdID0KQEAgLTE4NiwxOSArMTc5LDMzIEBAIFRDUFNlcnZlcjo6
VENQU2VydmVyKFByb3RvY29sIHByb3RvY29sLCBGdW5jdGlvbjx2b2lkKFNTTCopPiYmIHNlY3Vy
ZUNvbm5lY3Rpb25ICiAgICAgICAgICJtb1pXZ2pIdkIyVzlDa243c0Rxc1BCK1UydHlYMGpvRGRR
RXl1aU1FQ0RZOG9RPT1cbiIKICAgICAgICAgIi0tLS0tRU5EIFJTQSBQUklWQVRFIEtFWS0tLS0t
XG4iOwogCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCSU8sIGRlbGV0ZXI8QklPPj4gcHJpdmF0
ZUtleUJJTyhCSU9fbmV3X21lbV9idWYoa0tleVBFTSwgc3RybGVuKGtLZXlQRU0pKSk7Ci0gICAg
ICAgIHN0ZDo6dW5pcXVlX3B0cjxFVlBfUEtFWSwgZGVsZXRlcjxFVlBfUEtFWT4+IHByaXZhdGVL
ZXkoUEVNX3JlYWRfYmlvX1ByaXZhdGVLZXkocHJpdmF0ZUtleUJJTy5nZXQoKSwgbnVsbHB0ciwg
bnVsbHB0ciwgbnVsbHB0cikpOworICAgICAgICBzc2w6OnVuaXF1ZV9wdHI8QklPPiBwcml2YXRl
S2V5QklPKEJJT19uZXdfbWVtX2J1ZihrS2V5UEVNLCBzdHJsZW4oa0tleVBFTSkpKTsKKyAgICAg
ICAgc3NsOjp1bmlxdWVfcHRyPEVWUF9QS0VZPiBwcml2YXRlS2V5KFBFTV9yZWFkX2Jpb19Qcml2
YXRlS2V5KHByaXZhdGVLZXlCSU8uZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpKTsK
ICAgICAgICAgQVNTRVJUKHByaXZhdGVLZXkpOwotICAgICAgICBTU0xfQ1RYX3VzZV9Qcml2YXRl
S2V5KGN0eC5nZXQoKSwgcHJpdmF0ZUtleS5nZXQoKSk7CiAKLSAgICAgICAgc3RkOjp1bmlxdWVf
cHRyPFNTTCwgZGVsZXRlcjxTU0w+PiBzc2woU1NMX25ldyhjdHguZ2V0KCkpKTsKKyAgICAgICAg
U1NMX0NUWF9zZXRfY2hhaW5fYW5kX2tleShjdHguZ2V0KCksIHJlaW50ZXJwcmV0X2Nhc3Q8Q1JZ
UFRPX0JVRkZFUiAqY29uc3QgKj4oJmNlcnQpLCAxLCBwcml2YXRlS2V5LmdldCgpLCBudWxscHRy
KTsKKworICAgICAgICBpZiAocHJvdG9jb2wgPT0gUHJvdG9jb2w6OkhUVFBTV2l0aENsaWVudENl
cnRpZmljYXRlUmVxdWVzdCkgeworICAgICAgICAgICAgU1NMX0NUWF9zZXRfY3VzdG9tX3Zlcmlm
eShjdHguZ2V0KCksIFNTTF9WRVJJRllfUEVFUiB8IFNTTF9WRVJJRllfRkFJTF9JRl9OT19QRUVS
X0NFUlQsIFtdIChTU0wqIHNzbCwgdWludDhfdCopIC0+IHNzbF92ZXJpZnlfcmVzdWx0X3Qgewor
ICAgICAgICAgICAgICAgIGF1dG8gY2hhaW4gPSBTU0xfZ2V0MF9wZWVyX2NlcnRpZmljYXRlcyhz
c2wpOworICAgICAgICAgICAgICAgIEVYUEVDVF9FUShza19DUllQVE9fQlVGRkVSX251bShjaGFp
biksIDJ1KTsKKyAgICAgICAgICAgICAgICBhdXRvIGNlcnQgPSBza19DUllQVE9fQlVGRkVSX3Zh
bHVlKGNoYWluLCAwKTsKKyAgICAgICAgICAgICAgICBhdXRvIGV4cGVjdGVkQ2VydCA9IHRlc3RD
ZXJ0aWZpY2F0ZSgpOworICAgICAgICAgICAgICAgIEVYUEVDVF9FUShDUllQVE9fQlVGRkVSX2xl
bihjZXJ0KSwgZXhwZWN0ZWRDZXJ0LnNpemUoKSk7CisgICAgICAgICAgICAgICAgRVhQRUNUX1RS
VUUoIW1lbWNtcChDUllQVE9fQlVGRkVSX2RhdGEoY2VydCksIGV4cGVjdGVkQ2VydC5kYXRhKCks
IGV4cGVjdGVkQ2VydC5zaXplKCkpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3NsX3Zlcmlm
eV9vazsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1heFRMU1Zl
cnNpb24pCisgICAgICAgICAgICBTU0xfQ1RYX3NldF9tYXhfcHJvdG9fdmVyc2lvbihjdHguZ2V0
KCksICptYXhUTFNWZXJzaW9uKTsKKworICAgICAgICBzc2w6OnVuaXF1ZV9wdHI8U1NMPiBzc2wo
U1NMX25ldyhjdHguZ2V0KCkpKTsKICAgICAgICAgQVNTRVJUKHNzbCk7CiAgICAgICAgIFNTTF9z
ZXRfZmQoc3NsLmdldCgpLCBzb2NrZXQpOwogCiAgICAgICAgIGF1dG8gYWNjZXB0UmVzdWx0ID0g
U1NMX2FjY2VwdChzc2wuZ2V0KCkpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKGFjY2VwdFJlc3Vs
dCwgYWNjZXB0UmVzdWx0ID4gMCk7Ci0gICAgICAgIAotICAgICAgICBzZWN1cmVDb25uZWN0aW9u
SGFuZGxlcihzc2wuZ2V0KCkpOworICAgICAgICBzZWN1cmVDb25uZWN0aW9uSGFuZGxlcihhY2Nl
cHRSZXN1bHQgPiAwID8gc3NsLmdldCgpIDogbnVsbHB0cik7CiAgICAgfTsKIAogICAgIHN3aXRj
aCAocHJvdG9jb2wpIHsKQEAgLTIzOSw2ICsyNDYsNyBAQCB2b2lkIFRDUFNlcnZlcjo6bGlzdGVu
Rm9yQ29ubmVjdGlvbnMoc2l6ZV90IGNvbm5lY3Rpb25zKQogICAgICAgICAgICAgICAgIGNsb3Nl
KGNvbm5lY3Rpb25Tb2NrZXQpOwogICAgICAgICAgICAgfSkpOwogICAgICAgICB9CisgICAgICAg
IGNsb3NlKGxpc3RlbmluZ1NvY2tldCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvVENQU2VydmVyLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL1RDUFNlcnZl
ci5oCmluZGV4IDZhOTgxYzAxNWIxODk1N2JjYTJjNjE0NjEyZmMzOTcwNjBjNDAyYWMuLjc2YTMx
OTk5ZDdhN2JhNDAzZWYzNGNkOTQzNWYyZWY3YTJkNDNhOGMgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rl
c3RXZWJLaXRBUEkvVENQU2VydmVyLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UQ1BTZXJ2
ZXIuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSA8dGhyZWFkPgogI2luY2x1ZGUgPHd0
Zi9GdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KIAogI2lmIEhBVkUoU1NMKQpAQCAtNDYsNyArNDcsNyBAQCBwdWJsaWM6CiAgICAg
ZW51bSBjbGFzcyBQcm90b2NvbCA6IHVpbnQ4X3QgewogICAgICAgICBIVFRQUywgSFRUUFNQcm94
eSwgSFRUUFNXaXRoQ2xpZW50Q2VydGlmaWNhdGVSZXF1ZXN0CiAgICAgfTsKLSAgICBUQ1BTZXJ2
ZXIoUHJvdG9jb2wsIEZ1bmN0aW9uPHZvaWQoU1NMKik+JiYpOworICAgIFRDUFNlcnZlcihQcm90
b2NvbCwgRnVuY3Rpb248dm9pZChTU0wqKT4mJiwgT3B0aW9uYWw8dWludDE2X3Q+IG1heFRMU1Zl
cnNpb24gPSBXVEY6Om51bGxvcHQpOwogI2VuZGlmIC8vIEhBVkUoU1NMKQogICAgIH5UQ1BTZXJ2
ZXIoKTsKICAgICAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTQ3NDNkMjcwZWYyZmI2NDEw
MGYzZjdlNWM4M2Y2OGI3ZmM4N2ZiOC4uNmRhM2YxZmM5NGE5NzdjODhlYThkNjc5Njg0M2QyOWIy
MTRmMzEwMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4NjQsNiArMTg2NCw3IEBACiAJ
CTVDNjlCREQ0MUY4MkE3RUIwMDBGNEY0QiAvKiBKYXZhU2NyaXB0RHVyaW5nTmF2aWdhdGlvbi5t
bSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEphdmFTY3JpcHREdXJp
bmdOYXZpZ2F0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzZFMjdBNjIy
NEVFQkVBMDAxMjg3MzYgLyogVVJMQ2Fub25pY2FsaXphdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVSTENhbm9uaWNhbGl6YXRpb24ubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNzE0ODk0MjEyM0E0MDcwMEZERTNDNSAvKiBXS1dlYnNp
dGVEYXRhc3RvcmUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBX
S1dlYnNpdGVEYXRhc3RvcmUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNzNB
ODFBMjMyMzA1OTgwMERFQTg1QSAvKiBUTFNEZXByZWNhdGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRMU0RlcHJlY2F0aW9uLm1tOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk1Qzc1NzE1RjIyMTI0OUJEMDBCOUU1QUMgLyogQnVuZGxlUmV0YWlu
UGFnZVBsdWdJbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEJ1
bmRsZVJldGFpblBhZ2VQbHVnSW4ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVD
Nzk2NDBGMUVCMDI2OUIwMDc1RDc0QyAvKiBFdmVudE1vZGlmaWVycy5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFdmVudE1vZGlmaWVycy5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTVDN0M3NENBMUZCNTI4RDQwMDJGOUFCRSAvKiBXZWJWaWV3U2No
ZWR1bGVJblJ1bkxvb3AubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGgg
PSBXZWJWaWV3U2NoZWR1bGVJblJ1bkxvb3AubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CkBAIC0yODczLDYgKzI4NzQsNyBAQAogCQkJCUY0Q0Q3NEM4MjBGREI0OTYwMERFMzc5NCAvKiBU
ZXN0VVJMU2NoZW1lSGFuZGxlci5tbSAqLywKIAkJCQk1QzE2RjhGQjIzMEM5NDJCMDA3NEM0QTgg
LyogVGV4dFNpemUubW0gKi8sCiAJCQkJQzIyRkEzMkEyMjhGODcwODAwOUQ3OTg4IC8qIFRleHRX
aWR0aC5tbSAqLywKKwkJCQk1QzczQTgxQTIzMjMwNTk4MDBERUE4NUEgLyogVExTRGVwcmVjYXRp
b24ubW0gKi8sCiAJCQkJNUNCNDBCNEQxRjRCOThCRTAwN0RDN0I5IC8qIFVJRGVsZWdhdGUubW0g
Ki8sCiAJCQkJNUMzQTc3QTkyMkYyMEI4QTAwMzgyN0ZGIC8qIFVwbG9hZERpcmVjdG9yeS5tbSAq
LywKIAkJCQk3Q0MzRTFGQTE5N0UyMzQxMDBCRTYyNTIgLyogVXNlckNvbnRlbnRDb250cm9sbGVy
Lm1tICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2Nv
YS9UTFNEZXByZWNhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29j
b2EvVExTRGVwcmVjYXRpb24ubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWZlZTFhMjIzZDI4ZGI3YTBhZjQ4ZGEz
YTgzOTIyOTRkZDEzYjYwZAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvVExTRGVwcmVjYXRpb24ubW0KQEAgLTAsMCArMSwxNDEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0
aWVzLmgiCisjaW1wb3J0ICJUQ1BTZXJ2ZXIuaCIKKyNpbXBvcnQgIlRlc3ROYXZpZ2F0aW9uRGVs
ZWdhdGUuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPFdlYktpdC9XS1By
b2Nlc3NQb29sUHJpdmF0ZS5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCitAaW50ZXJm
YWNlIFdlYlNvY2tldERlbGVnYXRlIDogTlNPYmplY3QgPFdLVUlEZWxlZ2F0ZT4KKy0gKE5TU3Ry
aW5nICopd2FpdEZvck1lc3NhZ2U7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJTb2NrZXRE
ZWxlZ2F0ZSB7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfbWVzc2FnZTsKK30KKworLSAoTlNT
dHJpbmcgKil3YWl0Rm9yTWVzc2FnZQoreworICAgIHdoaWxlICghX21lc3NhZ2UpCisgICAgICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29wKCk7CisgICAgcmV0dXJuIF9tZXNzYWdl
LmF1dG9yZWxlYXNlKCk7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBydW5KYXZhU2NyaXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2Ug
aW5pdGlhdGVkQnlGcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBjb21wbGV0aW9uSGFuZGxlcjoo
dm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBfbWVzc2FnZSA9IG1lc3Nh
Z2U7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KKworQGVuZAorCituYW1lc3BhY2UgVGVz
dFdlYktpdEFQSSB7CisKK2NvbnN0IHVpbnQxNl90IHRsczFfMSA9IDB4MDMwMjsKK3N0YXRpYyBO
U1N0cmluZyAqZGVmYXVsdHNLZXkgPSBAIldlYktpdEVuYWJsZUxlZ2FjeVRMUyI7CisKK1RFU1Qo
V2ViS2l0LCBUTFNWZXJzaW9uV2ViU29ja2V0KQoreworICAgIGF1dG8gZ2V0V2ViU29ja2V0RXZl
bnQgPSBbXSAoYm9vbCBjbGllbnRBbGxvd0RlcHJlY2F0ZWRUTFMsIGJvb2wgc2VydmVyTGltaXRU
TFMpIHsKKyAgICAgICAgT3B0aW9uYWw8dWludDE2X3Q+IG1heFNlcnZlclRMU1ZlcnNpb247Cisg
ICAgICAgIGlmIChzZXJ2ZXJMaW1pdFRMUykKKyAgICAgICAgICAgIG1heFNlcnZlclRMU1ZlcnNp
b24gPSB0bHMxXzE7CisgICAgICAgIFRDUFNlcnZlciBzZXJ2ZXIoVENQU2VydmVyOjpQcm90b2Nv
bDo6SFRUUFMsIFs9XShTU0wgKnNzbCkgeworICAgICAgICAgICAgRVhQRUNUX1RSVUUoIXNzbCA9
PSAoY2xpZW50QWxsb3dEZXByZWNhdGVkVExTICE9IHNlcnZlckxpbWl0VExTKSk7CisgICAgICAg
IH0sIG1heFNlcnZlclRMU1ZlcnNpb24pOworCisgICAgICAgIGlmIChjbGllbnRBbGxvd0RlcHJl
Y2F0ZWRUTFMpCisgICAgICAgICAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1
bHRzXSBzZXRCb29sOllFUyBmb3JLZXk6ZGVmYXVsdHNLZXldOworICAgICAgICAKKyAgICAgICAg
YXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbVGVzdFdLV2ViVmlldyBuZXddKTsKKyAgICAgICAgYXV0
byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1dlYlNvY2tldERlbGVnYXRlIG5ld10pOworICAgICAgICBb
d2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKyAgICAgICAgW3dlYlZpZXcg
c3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAic3RhcnQgbmV0d29yayBwcm9jZXNzIl07Cisg
ICAgICAgIFtbd2ViVmlldyBjb25maWd1cmF0aW9uXS5wcm9jZXNzUG9vbCBfYWxsb3dBbnlUTFND
ZXJ0aWZpY2F0ZUZvcldlYlNvY2tldFRlc3RpbmddOworICAgICAgICBbd2ViVmlldyBzeW5jaHJv
bm91c2x5TG9hZEhUTUxTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6CisgICAgICAg
ICAgICBAIjxzY3JpcHQ+IgorICAgICAgICAgICAgImNvbnN0IHNvY2tldCA9IG5ldyBXZWJTb2Nr
ZXQoJ3dzczovL2xvY2FsaG9zdDolZCcpOyIKKyAgICAgICAgICAgICJzb2NrZXQub25jbG9zZSA9
IGZ1bmN0aW9uKGV2ZW50KXsgYWxlcnQoJ2Nsb3NlJyk7IH07IgorICAgICAgICAgICAgInNvY2tl
dC5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpeyBhbGVydCgnZXJyb3I6ICcgKyBldmVudC5kYXRh
KTsgfTsiCisgICAgICAgICAgICAiPC9zY3JpcHQ+Iiwgc2VydmVyLnBvcnQoKV1dOworICAgICAg
ICBOU1N0cmluZyAqbWVzc2FnZSA9IFtkZWxlZ2F0ZSB3YWl0Rm9yTWVzc2FnZV07CisgICAgICAg
IAorICAgICAgICBpZiAoY2xpZW50QWxsb3dEZXByZWNhdGVkVExTKQorICAgICAgICAgICAgW1tO
U1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gcmVtb3ZlT2JqZWN0Rm9yS2V5OmRl
ZmF1bHRzS2V5XTsKKworICAgICAgICByZXR1cm4gbWVzc2FnZTsKKyAgICB9OworCisgICAgRVhQ
RUNUX1dLX1NUUkVRKGdldFdlYlNvY2tldEV2ZW50KHRydWUsIHRydWUpLCAiY2xvc2UiKTsKKyAg
ICBFWFBFQ1RfV0tfU1RSRVEoZ2V0V2ViU29ja2V0RXZlbnQoZmFsc2UsIHRydWUpLCAiZXJyb3I6
IHVuZGVmaW5lZCIpOworICAgIEVYUEVDVF9XS19TVFJFUShnZXRXZWJTb2NrZXRFdmVudChmYWxz
ZSwgZmFsc2UpLCAiY2xvc2UiKTsKK30KKworVEVTVChXZWJLaXQsIFRMU1ZlcnNpb25OZXR3b3Jr
U2Vzc2lvbikKK3sKKyAgICBzdGF0aWMgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rlc3ROYXZp
Z2F0aW9uRGVsZWdhdGUgbmV3XSk7CisgICAgYXV0byBtYWtlV2ViVmlld1dpdGggPSBbJl0gKFdL
V2Vic2l0ZURhdGFTdG9yZSAqc3RvcmUpIHsKKyAgICAgICAgV0tXZWJWaWV3Q29uZmlndXJhdGlv
biAqY29uZmlndXJhdGlvbiA9IFtbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2NdIGluaXRd
IGF1dG9yZWxlYXNlXTsKKyAgICAgICAgY29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0b3JlID0g
c3RvcmU7CisgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcgYWxsb2Nd
IGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJhdGlvbjpj
b25maWd1cmF0aW9uXSk7CisgICAgICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxlZ2F0ZTpk
ZWxlZ2F0ZS5nZXQoKV07CisgICAgICAgIFtkZWxlZ2F0ZSBzZXREaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2U6XihXS1dlYlZpZXcgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSAqY2hhbGxlbmdlLCB2b2lkICheY2FsbGJhY2spKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VE
aXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICopKSB7CisgICAgICAgICAgICBjYWxsYmFjayhO
U1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgW05TVVJMQ3JlZGVudGlhbCBj
cmVkZW50aWFsRm9yVHJ1c3Q6Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJUcnVzdF0p
OworICAgICAgICB9XTsKKyAgICAgICAgcmV0dXJuIHdlYlZpZXc7CisgICAgfTsKKyAgICB7Cisg
ICAgICAgIFRDUFNlcnZlciBzZXJ2ZXIoVENQU2VydmVyOjpQcm90b2NvbDo6SFRUUFMsIFtdKFNT
TCAqc3NsKSB7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0Uoc3NsKTsKKyAgICAgICAgfSwgdGxz
MV8xKTsKKyAgICAgICAgYXV0byB3ZWJWaWV3ID0gbWFrZVdlYlZpZXdXaXRoKFtXS1dlYnNpdGVE
YXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0pOworICAgICAgICBbd2ViVmlldyBsb2FkUmVxdWVz
dDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0
cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyLnBv
cnQoKV1dXV07CisgICAgICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmFpbFByb3Zpc2lvbmFsTmF2
aWdhdGlvbl07CisgICAgfQorICAgIHsKKyAgICAgICAgVENQU2VydmVyIHNlcnZlcihUQ1BTZXJ2
ZXI6OlByb3RvY29sOjpIVFRQUywgW10oU1NMICpzc2wpIHsKKyAgICAgICAgICAgIEVYUEVDVF9G
QUxTRShzc2wpOworICAgICAgICB9LCB0bHMxXzEpOworICAgICAgICBhdXRvIHdlYlZpZXcgPSBt
YWtlV2ViVmlld1dpdGgoW1dLV2Vic2l0ZURhdGFTdG9yZSBub25QZXJzaXN0ZW50RGF0YVN0b3Jl
XSk7CisgICAgICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdp
dGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJo
dHRwczovLzEyNy4wLjAuMTolZC8iLCBzZXJ2ZXIucG9ydCgpXV1dXTsKKyAgICAgICAgW2RlbGVn
YXRlIHdhaXRGb3JEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uXTsKKyAgICB9CisgICAgewor
ICAgICAgICBUQ1BTZXJ2ZXIgc2VydmVyKFRDUFNlcnZlcjo6UHJvdG9jb2w6OkhUVFBTLCBbXShT
U0wgKnNzbCkgeworICAgICAgICAgICAgVENQU2VydmVyOjpyZXNwb25kV2l0aE9LKHNzbCk7Cisg
ICAgICAgIH0sIHRsczFfMSk7CisgICAgICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2Vy
RGVmYXVsdHNdIHNldEJvb2w6WUVTIGZvcktleTpkZWZhdWx0c0tleV07CisgICAgICAgIGF1dG8g
d2ViVmlldyA9IG1ha2VXZWJWaWV3V2l0aChbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1bHREYXRh
U3RvcmVdKTsKKyAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1
ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlci5wb3J0KCldXV1dOworICAgICAgICBb
ZGVsZWdhdGUgd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworICAgICAgICBbW05TVXNlckRl
ZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSByZW1vdmVPYmplY3RGb3JLZXk6ZGVmYXVsdHNL
ZXldOworICAgIH0KK30KKworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rl
c3ROYXZpZ2F0aW9uRGVsZWdhdGUuaAppbmRleCBlZmZiZDQ5OTE1YjE4YTQ0OTI0NTQ2Y2ZmNjA5
YjRjYzk5NDZhNDQ1Li40MjVkNjc1MzM0NWQyNGZjMDRlZjc5ZTY3M2M4YTkxNGU1ZGM3Yzg5IDEw
MDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3ROYXZpZ2F0aW9uRGVsZWdh
dGUuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3ROYXZpZ2F0aW9uRGVsZWdh
dGUuaApAQCAtMzcsOSArMzcsMTEgQEAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lk
ICheZGlkRmluaXNoTmF2aWdhdGlvbikoV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvbiAqKTsKIEBw
cm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkIChecmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFu
Z2UpKFdLV2ViVmlldyAqLCBfV0tSZW5kZXJpbmdQcm9ncmVzc0V2ZW50cyk7CiBAcHJvcGVydHkg
KG5vbmF0b21pYywgY29weSkgdm9pZCAoXndlYkNvbnRlbnRQcm9jZXNzRGlkVGVybWluYXRlKShX
S1dlYlZpZXcgKik7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkoV0tXZWJWaWV3ICosIE5TVVJMQXV0aGVudGljYXRp
b25DaGFsbGVuZ2UgKiwgdm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURpc3Bvc2l0
aW9uLCBOU1VSTENyZWRlbnRpYWwgKikpOwogCiAtICh2b2lkKXdhaXRGb3JEaWRTdGFydFByb3Zp
c2lvbmFsTmF2aWdhdGlvbjsKIC0gKHZvaWQpd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb247Cist
ICh2b2lkKXdhaXRGb3JEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uOwogCiBAZW5kCiAKZGlm
ZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdE5hdmlnYXRpb25EZWxlZ2F0
ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5t
bQppbmRleCA3NDJhYzdhODEyY2FjYzcwZWQyOGYyMDA1YTQyM2Y4M2E1YTVjNGZlLi41NThlYTc3
ODJlNTFhMjY3NDYwMDY3OTc1ZDcwYTkyMTFmZmNhY2UwIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL2NvY29hL1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUubW0KKysrIGIvVG9vbHMvVGVz
dFdlYktpdEFQSS9jb2NvYS9UZXN0TmF2aWdhdGlvbkRlbGVnYXRlLm1tCkBAIC03NSw2ICs3NSwx
NCBAQAogICAgICAgICBfcmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2Uod2ViVmlldywgcHJvZ3Jl
c3NFdmVudHMpOwogfQogCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlICopY2hhbGxlbmdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VSTFNlc3Npb25B
dXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKSljb21wbGV0aW9uSGFu
ZGxlcgoreworICAgIGlmIChfZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKQorICAg
ICAgICBfZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHdlYlZpZXcsIGNoYWxsZW5n
ZSwgY29tcGxldGlvbkhhbmRsZXIpOworICAgIGVsc2UKKyAgICAgICAgY29tcGxldGlvbkhhbmRs
ZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVBlcmZvcm1EZWZhdWx0SGFuZGxpbmcsIG5pbCk7
Cit9CisKIC0gKHZvaWQpd2FpdEZvckRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uCiB7CiAg
ICAgRVhQRUNUX0ZBTFNFKHNlbGYuZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24pOwpAQCAt
MTAzLDYgKzExMSwyMCBAQAogICAgIHNlbGYuZGlkRmluaXNoTmF2aWdhdGlvbiA9IG5pbDsKIH0K
IAorLSAodm9pZCl3YWl0Rm9yRGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbgoreworICAgIEVY
UEVDVF9GQUxTRShzZWxmLmRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb24pOworCisgICAgX19i
bG9jayBib29sIGZpbmlzaGVkID0gZmFsc2U7CisgICAgc2VsZi5kaWRGYWlsUHJvdmlzaW9uYWxO
YXZpZ2F0aW9uID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uICosIE5TRXJyb3IgKikgewor
ICAgICAgICBmaW5pc2hlZCA9IHRydWU7CisgICAgfTsKKworICAgIFRlc3RXZWJLaXRBUEk6OlV0
aWw6OnJ1bigmZmluaXNoZWQpOworCisgICAgc2VsZi5kaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0
aW9uID0gbmlsOworfQorCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcgKFRlc3RX
ZWJLaXRBUElFeHRyYXMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378277</attachid>
            <date>2019-09-06 21:35:12 -0700</date>
            <delta_ts>2019-09-07 09:11:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201573-20190906213511.patch</filename>
            <type>text/plain</type>
            <size>38211</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjg1N2YzOGVmOWI2Nzcy
Y2I5YmM2YmRkZGMyYTk0M2Q1ZTRiNTgwYi4uNTg2MTdiYTljMjZhNWMwYTg3ZDVmYzcwOWQ4NWE3
M2YzYzQ4YjljMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE5LTA5LTA2ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRGlzYWJs
ZSBUTFMgMS4wIGFuZCAxLjEgaW4gV2ViU29ja2V0cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNTczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBleHBhbmRzIG9uIHdoYXQgSSBzdGFydGVkIGlu
IHIyNDkwMTkgd2hlbiBJIGRpc2FibGVkIGxlZ2FjeSBUTFMgZm9yIG91ciB1c2Ugb2YgTlNVUkxT
ZXNzaW9uLgorICAgICAgICBTaW5jZSBvdXIgV2ViU29ja2V0IGltcGxlbWVudGF0aW9uIHVzZXMg
YSBkaWZmZXJlbnQgbmV0d29yayBpbnRlcmZhY2UsIGRpc2FibGUgbGVnYWN5IFRMUyBmb3IgdGhl
bSwgdG9vLgorICAgICAgICBJIHVzZSB0aGUgc2FtZSB0ZW1wb3JhcnkgZGVmYXVsdCB0byByZS1l
bmFibGUgbGVnYWN5IFRMUy4gIEkgYWxzbyBhZGQgYSB1bml0IHRlc3QgZm9yIGJvdGggV2ViU29j
a2V0cyBhbmQgTlNVUkxTZXNzaW9uIHVzZS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZ1
bmN0aW9uPGJvb2wpOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6
c2V0TGVnYWN5VExTRW5hYmxlZENoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVh
bUhhbmRsZUltcGw6OmNyZWF0ZVN0cmVhbXMpOgorCiAyMDE5LTA5LTA2ICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgV2hlbiBkaXNhYmxpbmcg
bGVnYWN5IHByaXZhdGUgYnJvd3NpbmcgZm9yIHRlc3RpbmcsIGNoYW5nZSB0aGUgU2Vzc2lvbklE
IGJhY2sgdG8gd2hhdCBpdCB3YXMsIG5vdCB0aGUgZGVmYXVsdFNlc3Npb25JRApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFu
Z2VMb2cKaW5kZXggY2I5ZjM3ZDcwOWEyNzZkMTc2NTQzNGM5MTJhN2E5ZGViZWFiOTE3NC4uMDY2
ODg0N2U0NjQ3YTJhZmU4OWJhMTY0YzdhOTQ4MjAyNDEyYjZkZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTIgQEAKKzIwMTktMDktMDYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBEaXNhYmxlIFRMUyAxLjAgYW5kIDEuMSBpbiBX
ZWJTb2NrZXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDE1NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg6CisKIDIwMTktMDgtMzAgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgSEFWRV9D
Rk5FVFdPUktfV0lUSF9BVVRPX0FEREVEX0hUVFBfSEVBREVSX1NVUFBSRVNTSU9OX1NVUFBPUlQg
Y29uZGl0aW9uYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggY2IyNDM5OGVlYTZhNGQyZjhhYjU4MzI3ZTNiZGQ5Mjlm
NGMyOTY3Yi4uOWI0ZjYxYWYzNjdkMjczZWFmNmQ4NDBjZDQyZmQ0NWI1Yzk4NTNjOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMiBAQAorMjAxOS0wOS0wNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIERpc2FibGUgVExTIDEuMCBhbmQgMS4xIGlu
IFdlYlNvY2tldHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwMTU3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxh
dGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3NDb2NvYSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9h
bGxvd0FueVRMU0NlcnRpZmljYXRlRm9yV2ViU29ja2V0VGVzdGluZ10pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKToKKwogMjAxOS0w
OS0wNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFdoZW4gZGlzYWJsaW5nIGxlZ2FjeSBwcml2YXRlIGJyb3dzaW5nIGZvciB0ZXN0aW5nLCBj
aGFuZ2UgdGhlIFNlc3Npb25JRCBiYWNrIHRvIHdoYXQgaXQgd2FzLCBub3QgdGhlIGRlZmF1bHRT
ZXNzaW9uSUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0
d29ya1NQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgK
aW5kZXggMGJmMGJiOGIzN2JlNmIxN2MwZGE0ZTUzMDM3ZDcyODI1YmY3MDM0ZC4uNzg4MWM3ODk2
Mjg3NzJjNGMzNjQ2ZGE3MTM4ZjU5NmFhZTU4ZmZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgKQEAgLTU1LDcgKzU1LDkgQEAgZXh0ZXJuIGNvbnN0
IENGU3RyaW5nUmVmIF9rQ0ZXaW5kb3dzU1NMUGVlckNlcnQ7CiAKIFdURl9FWFRFUk5fQ19FTkQK
IAotI2VuZGlmCisjZWxzZSAvLyBQTEFURk9STShXSU4pCisjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NG
U29ja2V0U3RyZWFtUHJpdi5oPgorI2VuZGlmIC8vIFBMQVRGT1JNKFdJTikKIAogLy8gRklYTUU6
IFJlbW92ZSB0aGUgZGVmaW5lZChfX09CSkNfXyktZ3VhcmQgb25jZSB3ZSBmaXggPHJkYXI6Ly9w
cm9ibGVtLzE5MDMzNjEwPi4KICNpZiBkZWZpbmVkKF9fT0JKQ19fKSAmJiBQTEFURk9STShDT0NP
QSkKQEAgLTI4Miw2ICsyODQsNyBAQCBleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGVVJMUmVx
dWVzdEFsbG93QWxsUE9TVENhY2hpbmc7CiBleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYgX2tDRlVS
TENhY2hlUGFydGl0aW9uS2V5OwogZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIF9rQ0ZVUkxDb25u
ZWN0aW9uUHJvcGVydHlTaG91bGRTbmlmZjsKIGV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBfa0NG
VVJMU3RvcmFnZVNlc3Npb25Jc1ByaXZhdGU7CitleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NG
U3RyZWFtU29ja2V0U2VjdXJpdHlMZXZlbFRMU3YxXzI7CiAKICNpZiBIQVZFKENGTkVUV09SS19X
SVRIX0NPTlRFTlRfRU5DT0RJTkdfU05JRkZJTkdfT1ZFUlJJREUpCiBleHRlcm4gY29uc3QgQ0ZT
dHJpbmdSZWYga0NGVVJMUmVxdWVzdENvbnRlbnREZWNvZGVyU2tpcFVSTENoZWNrOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5k
bGVJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVh
bUhhbmRsZUltcGwuaAppbmRleCA3N2RhZGNjNzc0NDcxOGM1ZmE1Mjk4YjI3NjQxYzk4MzQ0ZDI5
YjZiLi4xNzNlNmFlYzgxYWZlZTg1MTNjMTIyZTA0MmUyZWYyNGJiYWE2ODU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUlt
cGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVh
bUhhbmRsZUltcGwuaApAQCAtNTEsNiArNTEsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5T
b2NrZXRTdHJlYW1IYW5kbGVJbXBsKCk7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9p
ZCBzZXRMZWdhY3lUTFNFbmFibGVkQ2hlY2soRnVuY3Rpb248Ym9vbCgpPiYmKTsKKwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcGxhdGZvcm1TZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBsZW5ndGgsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcGxhdGZvcm1TZW5kSGFuZHNoYWtlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBsZW5ndGgsIGNvbnN0IE9wdGlvbmFsPENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5PiYs
IEZ1bmN0aW9uPHZvaWQoYm9vbCwgYm9vbCk+JiYpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcGxhdGZvcm1DbG9zZSgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZO
ZXQuY3BwCmluZGV4IDE0OGUyNzJkYTEzNjNhOWRiMmFjODI2NzY4YWViY2I4NTIzYzhmYmUuLjFl
MGViMzI0NjkyMDRlOTY0MWJkZmE1NzEyYmMxN2NiYjVlY2QxYzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVh
bUhhbmRsZUltcGxDRk5ldC5jcHAKQEAgLTMwNSw2ICszMDUsMTcgQEAgc3RhdGljIHZvaWQgc2V0
Q09OTkVDVFByb3h5Rm9yU3RyZWFtKENGUmVhZFN0cmVhbVJlZiBzdHJlYW0sIENGU3RyaW5nUmVm
IHByb3h5SG8KICAgICBDRlJlYWRTdHJlYW1TZXRQcm9wZXJ0eShzdHJlYW0sIGtDRlN0cmVhbVBy
b3BlcnR5Q09OTkVDVFByb3h5LCBjb25uZWN0RGljdGlvbmFyeS5nZXQoKSk7CiB9CiAKK3N0YXRp
YyBGdW5jdGlvbjxib29sKCk+JiBsZWdhY3lUTFNFbmFibGVkQ2hlY2soKQoreworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxGdW5jdGlvbjxib29sKCk+PiBmdW5jdGlvbjsKKyAgICByZXR1cm4g
ZnVuY3Rpb247Cit9CisKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6c2V0TGVnYWN5VExT
RW5hYmxlZENoZWNrKEZ1bmN0aW9uPGJvb2woKT4mJiBmdW5jdGlvbikKK3sKKyAgICBsZWdhY3lU
TFNFbmFibGVkQ2hlY2soKSA9IFdURk1vdmUoZnVuY3Rpb24pOworfQorCiB2b2lkIFNvY2tldFN0
cmVhbUhhbmRsZUltcGw6OmNyZWF0ZVN0cmVhbXMoKQogewogICAgIGlmIChtX2Nvbm5lY3Rpb25U
eXBlID09IFVua25vd24pCkBAIC0zMjcsNyArMzM4LDYgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5k
bGVJbXBsOjpjcmVhdGVTdHJlYW1zKCkKICAgICAgICAgQ0ZSZWFkU3RyZWFtU2V0UHJvcGVydHko
cmVhZFN0cmVhbSwga0NGU3RyZWFtUHJvcGVydHlTb3VyY2VBcHBsaWNhdGlvbiwgbV9hdWRpdERh
dGEuc291cmNlQXBwbGljYXRpb25BdWRpdERhdGEuZ2V0KCkpOwogICAgICAgICBDRldyaXRlU3Ry
ZWFtU2V0UHJvcGVydHkod3JpdGVTdHJlYW0sIGtDRlN0cmVhbVByb3BlcnR5U291cmNlQXBwbGlj
YXRpb24sIG1fYXVkaXREYXRhLnNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhLmdldCgpKTsKICAg
ICB9Ci0gICAgCiAjZW5kaWYKIAogICAgIG1fcmVhZFN0cmVhbSA9IGFkb3B0Q0YocmVhZFN0cmVh
bSk7CkBAIC0zNTUsOCArMzY1LDIzIEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y3Jl
YXRlU3RyZWFtcygpCiAKICAgICBpZiAoc2hvdWxkVXNlU1NMKCkpIHsKICAgICAgICAgQ0ZCb29s
ZWFuUmVmIHZhbGlkYXRlQ2VydGlmaWNhdGVDaGFpbiA9IERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5n
czo6YWxsb3dzQW55U1NMQ2VydGlmaWNhdGUoKSA/IGtDRkJvb2xlYW5GYWxzZSA6IGtDRkJvb2xl
YW5UcnVlOwotICAgICAgICBjb25zdCB2b2lkKiBrZXlzW10gPSB7IGtDRlN0cmVhbVNTTFBlZXJO
YW1lLCBrQ0ZTdHJlYW1TU0xMZXZlbCwga0NGU3RyZWFtU1NMVmFsaWRhdGVzQ2VydGlmaWNhdGVD
aGFpbiB9OwotICAgICAgICBjb25zdCB2b2lkKiB2YWx1ZXNbXSA9IHsgaG9zdC5nZXQoKSwga0NG
U3RyZWFtU29ja2V0U2VjdXJpdHlMZXZlbE5lZ290aWF0ZWRTU0wsIHZhbGlkYXRlQ2VydGlmaWNh
dGVDaGFpbiB9OworICAgICAgICBib29sIGVuYWJsZUxlZ2FjeVRMUyA9IGZhbHNlOworICAgICAg
ICBpZiAoYXV0byYgY2hlY2sgPSBsZWdhY3lUTFNFbmFibGVkQ2hlY2soKSkKKyAgICAgICAgICAg
IGVuYWJsZUxlZ2FjeVRMUyA9IGNoZWNrKCk7CisgICAgICAgIGNvbnN0IHZvaWQqIGtleXNbXSA9
IHsKKyAgICAgICAgICAgIGtDRlN0cmVhbVNTTFBlZXJOYW1lLAorICAgICAgICAgICAga0NGU3Ry
ZWFtU1NMTGV2ZWwsCisgICAgICAgICAgICBrQ0ZTdHJlYW1TU0xWYWxpZGF0ZXNDZXJ0aWZpY2F0
ZUNoYWluCisgICAgICAgIH07CisgICAgICAgIGNvbnN0IHZvaWQqIHZhbHVlc1tdID0geworICAg
ICAgICAgICAgaG9zdC5nZXQoKSwKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgICAgIGVu
YWJsZUxlZ2FjeVRMUyA/IGtDRlN0cmVhbVNvY2tldFNlY3VyaXR5TGV2ZWxOZWdvdGlhdGVkU1NM
IDoga0NGU3RyZWFtU29ja2V0U2VjdXJpdHlMZXZlbFRMU3YxXzIsCisjZWxzZQorICAgICAgICAg
ICAga0NGU3RyZWFtU29ja2V0U2VjdXJpdHlMZXZlbE5lZ290aWF0ZWRTU0wKKyNlbmRpZgorICAg
ICAgICAgICAgdmFsaWRhdGVDZXJ0aWZpY2F0ZUNoYWluCisgICAgICAgIH07CiAgICAgICAgIFJl
dGFpblB0cjxDRkRpY3Rpb25hcnlSZWY+IHNldHRpbmdzID0gYWRvcHRDRihDRkRpY3Rpb25hcnlD
cmVhdGUoMCwga2V5cywgdmFsdWVzLCBXVEZfQVJSQVlfTEVOR1RIKGtleXMpLCAma0NGVHlwZURp
Y3Rpb25hcnlLZXlDYWxsQmFja3MsICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7
CiAgICAgICAgIENGUmVhZFN0cmVhbVNldFByb3BlcnR5KG1fcmVhZFN0cmVhbS5nZXQoKSwga0NG
U3RyZWFtUHJvcGVydHlTU0xTZXR0aW5ncywgc2V0dGluZ3MuZ2V0KCkpOwogICAgICAgICBDRldy
aXRlU3RyZWFtU2V0UHJvcGVydHkobV93cml0ZVN0cmVhbS5nZXQoKSwga0NGU3RyZWFtUHJvcGVy
dHlTU0xTZXR0aW5ncywgc2V0dGluZ3MuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5jcHAgYi9T
b3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0
ZXJzLmNwcAppbmRleCBkMjg1MTQ3YWY2MzAwYWZlOTdjM2VkY2UzOTFkMzNjM2MxNDEyNzRjLi5m
YjNlMjE4NTk3YmJlYzU5YzY0NDk0OWFmMTFkNjE3ZmU5ZjU2YjFlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3Jl
YXRpb25QYXJhbWV0ZXJzLmNwcApAQCAtOTMsNiArOTMsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNz
Q3JlYXRpb25QYXJhbWV0ZXJzOjplbmNvZGUoSVBDOjpFbmNvZGVyJiBlbmNvZGVyKSBjb25zdAog
ICAgIGVuY29kZXIgPDwgZW5hYmxlQWRDbGlja0F0dHJpYnV0aW9uRGVidWdNb2RlOwogICAgIGVu
Y29kZXIgPDwgaHN0c1N0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgZW5jb2RlciA8PCBoc3RzU3RvcmFn
ZURpcmVjdG9yeUV4dGVuc2lvbkhhbmRsZTsKKyAgICBlbmNvZGVyIDw8IGVuYWJsZUxlZ2FjeVRM
UzsKIH0KIAogYm9vbCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZGVjb2RlKElQ
Qzo6RGVjb2RlciYgZGVjb2RlciwgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMmIHJl
c3VsdCkKQEAgLTIyOCw2ICsyMjksOSBAQCBib29sIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNvZGVyJiBkZWNvZGVyLCBOZXR3b3JrUHJvYwogICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUocmVzdWx0LmhzdHNTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFu
ZGxlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAorICAgIGlmICghZGVjb2Rlci5kZWNv
ZGUocmVzdWx0LmVuYWJsZUxlZ2FjeVRMUykpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAg
IHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9j
ZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmggYi9Tb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgKaW5kZXggODFi
MTU0ZWZkNjBjNDM4ZGNiZjIxOGQzODhlMDVhNGUzNGU0YTc4Mi4uOGVjOTM1ODNiOGJlNTY1MDNi
NWFhYjkyMmM5OWFkZjlhNjYxMTVhMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaApA
QCAtMTExLDYgKzExMSw3IEBAIHN0cnVjdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cyB7CiAgICAgYm9vbCBlbmFibGVBZENsaWNrQXR0cmlidXRpb25EZWJ1Z01vZGUgeyBmYWxzZSB9
OwogICAgIFN0cmluZyBoc3RzU3RvcmFnZURpcmVjdG9yeTsKICAgICBTYW5kYm94RXh0ZW5zaW9u
OjpIYW5kbGUgaHN0c1N0b3JhZ2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisgICAgYm9vbCBl
bmFibGVMZWdhY3lUTFMgeyBmYWxzZSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9j
ZXNzQ29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQ
cm9jZXNzQ29jb2EubW0KaW5kZXggY2NlMjZhY2ZiMDRjZjcwNzRlNzYzZjViYmM4ZTRhNWU5OGEx
NWM5YS4uNTFjNzczZTU3OGQ3YTBjYjIxMGMxOGRmMmRkNDcxZjJkNWQ5OTZmZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29h
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nl
c3NDb2NvYS5tbQpAQCAtMzksNiArMzksNyBAQAogI2ltcG9ydCA8V2ViQ29yZS9SdW50aW1lQXBw
bGljYXRpb25DaGVja3MuaD4KICNpbXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNp
bXBvcnQgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW5EYXRhLmg+CisjaW1wb3J0IDxXZWJDb3JlL1Nv
Y2tldFN0cmVhbUhhbmRsZUltcGwuaD4KICNpbXBvcnQgPHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJ
Lmg+CiAjaW1wb3J0IDx3dGYvQmxvY2tQdHIuaD4KICNpbXBvcnQgPHd0Zi9DYWxsYmFja0FnZ3Jl
Z2F0b3IuaD4KQEAgLTY5LDYgKzcwLDEwIEBAIHN0YXRpYyB2b2lkIGluaXRpYWxpemVOZXR3b3Jr
U2V0dGluZ3MoKQogCiB2b2lkIE5ldHdvcmtQcm9jZXNzOjpwbGF0Zm9ybUluaXRpYWxpemVOZXR3
b3JrUHJvY2Vzc0NvY29hKGNvbnN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBw
YXJhbWV0ZXJzKQogeworICAgIFdlYkNvcmU6OlNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnNldExl
Z2FjeVRMU0VuYWJsZWRDaGVjayhbZW5hYmxlZCA9IHBhcmFtZXRlcnMuZW5hYmxlTGVnYWN5VExT
XSB7CisgICAgICAgIHJldHVybiBlbmFibGVkOworICAgIH0pOworCiAgICAgV2ViQ29yZTo6c2V0
QXBwbGljYXRpb25CdW5kbGVJZGVudGlmaWVyKHBhcmFtZXRlcnMudWlQcm9jZXNzQnVuZGxlSWRl
bnRpZmllcik7CiAgICAgV2ViQ29yZTo6c2V0QXBwbGljYXRpb25TREtWZXJzaW9uKHBhcmFtZXRl
cnMudWlQcm9jZXNzU0RLVmVyc2lvbik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tIGIvU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0KaW5kZXggZWJhYzU2OGUzZGRiNjg3MGY4NWIw
MTUwOGVjMjBmYWFiN2YyMDRkNi4uYjFlNzFkNDI0YjY5NDUzMTFlY2JlMzYxZDYzMmFhYzg5MmE5
MDE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJv
Y2Vzc1Bvb2wubW0KKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJv
Y2Vzc1Bvb2wubW0KQEAgLTY0OCw0ICs2NDgsOSBAQCBzdGF0aWMgTlNEaWN0aW9uYXJ5ICpwb2xp
Y2llc0hhc2hNYXBUb0RpY3Rpb25hcnkoY29uc3QgSGFzaE1hcDxTdHJpbmcsIEhhc2hNYXA8Uwog
ICAgIF9wcm9jZXNzUG9vbC0+Y2xlYXJQZXJtYW5lbnRDcmVkZW50aWFsc0ZvclByb3RlY3Rpb25T
cGFjZShXZWJDb3JlOjpQcm90ZWN0aW9uU3BhY2UocHJvdGVjdGlvblNwYWNlKSk7CiB9CiAKKy0g
KHZvaWQpX2FsbG93QW55VExTQ2VydGlmaWNhdGVGb3JXZWJTb2NrZXRUZXN0aW5nCit7CisgICAg
X3Byb2Nlc3NQb29sLT5zZXRBbGxvd3NBbnlTU0xDZXJ0aWZpY2F0ZUZvcldlYlNvY2tldCh0cnVl
KTsKK30KKwogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAppbmRleCBlZmZmNDA1MGE5OGUwMmIyMTkwZGNj
MDM2Y2Y2ODcxODU4ZWRmZDBjLi42NjY2N2JhOWUwMzNkMjA3NmZhZGIwMWIxNTZmZDgxM2VlYTI5
NmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9j
ZXNzUG9vbFByaXZhdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tQcm9jZXNzUG9vbFByaXZhdGUuaApAQCAtMTIzLDYgKzEyMyw3IEBACiAtICh2b2lkKV9nZXRB
Y3RpdmVQYWdlc09yaWdpbnNJbldlYlByb2Nlc3NGb3JUZXN0aW5nOihwaWRfdClwaWQgY29tcGxl
dGlvbkhhbmRsZXI6KHZvaWQoXikoTlNBcnJheTxOU1N0cmluZyAqPiAqKSljb21wbGV0aW9uSGFu
ZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjE0LjQpLCBpb3MoMTIuMikpOwogLSAoQk9P
TClfbmV0d29ya1Byb2Nlc3NIYXNFbnRpdGxlbWVudEZvclRlc3Rpbmc6KE5TU3RyaW5nICopZW50
aXRsZW1lbnQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNC40KSwgaW9zKDEyLjIpKTsKIC0g
KHZvaWQpX2NsZWFyUGVybWFuZW50Q3JlZGVudGlhbHNGb3JQcm90ZWN0aW9uU3BhY2U6KE5TVVJM
UHJvdGVjdGlvblNwYWNlICopcHJvdGVjdGlvblNwYWNlIFdLX0FQSV9BVkFJTEFCTEUobWFjb3Mo
V0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CistICh2b2lkKV9hbGxvd0FueVRMU0NlcnRp
ZmljYXRlRm9yV2ViU29ja2V0VGVzdGluZyBXS19BUElfQVZBSUxBQkxFKG1hY29zKFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiBAcHJvcGVydHkgKG5vbmF0b21pYywgZ2V0dGVyPV9p
c0Nvb2tpZVN0b3JhZ2VQYXJ0aXRpb25pbmdFbmFibGVkLCBzZXR0ZXI9X3NldENvb2tpZVN0b3Jh
Z2VQYXJ0aXRpb25pbmdFbmFibGVkOikgQk9PTCBfY29va2llU3RvcmFnZVBhcnRpdGlvbmluZ0Vu
YWJsZWQgV0tfQVBJX0RFUFJFQ0FURUQoIlBhcnRpdGlvbmVkIGNvb2tpZXMgYXJlIG5vIGxvbmdl
ciBzdXBwb3J0ZWQiLCBtYWNvcygxMC4xMi4zLCAxMC4xNC40KSwgaW9zKDEwLjMsIDEyLjIpKTsK
IEBwcm9wZXJ0eSAobm9uYXRvbWljLCBnZXR0ZXI9X2lzU3RvcmFnZUFjY2Vzc0FQSUVuYWJsZWQs
IHNldHRlcj1fc2V0U3RvcmFnZUFjY2Vzc0FQSUVuYWJsZWQ6KSBCT09MIF9zdG9yYWdlQWNjZXNz
QVBJRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zKDEwLjEzLjQpLCBpb3MoMTEuMykpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xD
b2NvYS5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29j
b2EubW0KaW5kZXggOWZkNmE2MTFiNTVjYWRiNjk4MDE2MmRlZGYxZTM1YWY3OWFhYWYyNS4uMGZh
YjA4NjJlM2YyZTRlMTk4ZWRiNDUzOWI1MjUyMTk0ZGI0MjMzZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQorKysgYi9Tb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENvY29hLm1tCkBAIC0yODEs
NyArMjgxLDggQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29y
a1Byb2Nlc3MoTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmEKICAgICAgICAgfQogICAgIH0KIAot
ICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25Q
YXJhbWV0ZXJzLmVuYWJsZUxlZ2FjeVRMUyA9IFtkZWZhdWx0cyBib29sRm9yS2V5OkAiV2ViS2l0
RW5hYmxlTGVnYWN5VExTIl07CisgICAgcGFyYW1ldGVycy5lbmFibGVMZWdhY3lUTFMgPSBbZGVm
YXVsdHMgYm9vbEZvcktleTpAIldlYktpdEVuYWJsZUxlZ2FjeVRMUyJdOworICAgIHBhcmFtZXRl
cnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmVu
YWJsZUxlZ2FjeVRMUyA9IHBhcmFtZXRlcnMuZW5hYmxlTGVnYWN5VExTOwogCiAgICAgcGFyYW1l
dGVycy5uZXR3b3JrQVRTQ29udGV4dCA9IGFkb3B0Q0YoX0NGTmV0d29ya0NvcHlBVFNDb250ZXh0
KCkpOwogCmRpZmYgLS1naXQgYS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5k
ZXggNDA2ZTgzODY2NjhlZWU2OWQ4NTA3ZjEzMmI1NWEwNDNlYTNmYzU5MC4uMTRlZGRlM2IyMDlh
ODYzZTJmODVhMTlmMGVjMzNjNDJiYTA3MjBhNCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9n
CisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDE5LTA5LTA2ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRGlzYWJs
ZSBUTFMgMS4wIGFuZCAxLjEgaW4gV2ViU29ja2V0cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNTczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1NvdXJjZXNDb2NvYS50eHQ6
CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UQ1BTZXJ2ZXIuY3BwOgorICAgICAgICAoc2tfQ1JZ
UFRPX0JVRkZFUl9udW0pOgorICAgICAgICAoc2tfQ1JZUFRPX0JVRkZFUl92YWx1ZSk6CisgICAg
ICAgIChUZXN0V2ViS2l0QVBJOjpkZWxldGVyPENSWVBUT19CVUZGRVI+OjpvcGVyYXRvcigpKToK
KyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRDUFNlcnZlcjo6VENQU2VydmVyKToKKyAgICAgICAg
KFRlc3RXZWJLaXRBUEk6OlRDUFNlcnZlcjo6bGlzdGVuRm9yQ29ubmVjdGlvbnMpOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6ZGVsZXRlcjxYNTA5Pjo6b3BlcmF0b3IoKSk6IERlbGV0ZWQuCisg
ICAgICAgIChUZXN0V2ViS2l0QVBJOjpkZWxldGVyPHVpbnQ4X3Q6Om9wZXJhdG9yKCkpOiBEZWxl
dGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVENQU2VydmVyLmg6CisgICAgICAgICogVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAg
ICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UTFNEZXByZWNhdGlvbi5tbTog
QWRkZWQuCisgICAgICAgICgtW1dlYlNvY2tldERlbGVnYXRlIHdhaXRGb3JNZXNzYWdlXSk6Cisg
ICAgICAgICgtW1dlYlNvY2tldERlbGVnYXRlIHdlYlZpZXc6cnVuSmF2YVNjcmlwdEFsZXJ0UGFu
ZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9jb2Nv
YS9UZXN0TmF2aWdhdGlvbkRlbGVnYXRlLm1tOgorICAgICAgICAoLVtUZXN0TmF2aWdhdGlvbkRl
bGVnYXRlIHdlYlZpZXc6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOmNvbXBsZXRp
b25IYW5kbGVyOl0pOgorICAgICAgICAoLVtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIHdhaXRGb3JE
aWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uXSk6CisKIDIwMTktMDktMDYgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBXaGVuIGRpc2FibGlu
ZyBsZWdhY3kgcHJpdmF0ZSBicm93c2luZyBmb3IgdGVzdGluZywgY2hhbmdlIHRoZSBTZXNzaW9u
SUQgYmFjayB0byB3aGF0IGl0IHdhcywgbm90IHRoZSBkZWZhdWx0U2Vzc2lvbklECmRpZmYgLS1n
aXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1NvdXJjZXNDb2NvYS50eHQgYi9Ub29scy9UZXN0V2Vi
S2l0QVBJL1NvdXJjZXNDb2NvYS50eHQKaW5kZXggMDc3MDUwZDhlY2U0ZThlMDg0MTM1MzdjYTk1
YzRhYTQ3ZjY0MzhhNi4uN2RiNGMzOTY4ODNmOTY4Mjk3NDAxYzlmOTg2MTU5YTc1YTIyOWJlZCAx
MDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvU291cmNlc0NvY29hLnR4dApAQCAtMjgsMyArMjgsNSBAQCBjb2Nv
YS9QbGF0Zm9ybVV0aWxpdGllc0NvY29hLm1tCiBjb2NvYS9UZXN0TmF2aWdhdGlvbkRlbGVnYXRl
Lm1tCiBjb2NvYS9UZXN0UHJvdG9jb2wubW0KIGNvY29hL1Rlc3RXS1dlYlZpZXcubW0KKworVGVz
dHMvV2ViS2l0Q29jb2EvVExTRGVwcmVjYXRpb24ubW0KZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RX
ZWJLaXRBUEkvVENQU2VydmVyLmNwcCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVENQU2VydmVyLmNw
cAppbmRleCAxMjM4MjU3ZTBiMGRhMDI3ZDk1NjM4MmY1YmQ1NzRiZjBiZWFjNmMzLi4xNmY5Mjgy
MzIzMWVlM2YzMmZmNTRhYTA5MjEzNWRhNDFlMDg2Y2RjIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1RDUFNlcnZlci5jcHAKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UQ1BTZXJ2
ZXIuY3BwCkBAIC0zMyw0NiArMzMsNTkgQEAKICNpbmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4K
IAogI2lmIEhBVkUoU1NMKQorCisjZGVmaW5lIFNUQUNLX09GKHR5cGUpIHN0cnVjdCBzdGFja19z
dF8jI3R5cGUKKwogZXh0ZXJuICJDIiB7CiAKK2VudW0gc3NsX3ZlcmlmeV9yZXN1bHRfdCB7Cisg
ICAgc3NsX3ZlcmlmeV9vaywKKyAgICBzc2xfdmVyaWZ5X2ludmFsaWQsCisgICAgc3NsX3Zlcmlm
eV9yZXRyeSwKK307CisKIHN0cnVjdCBCSU87Ci1zdHJ1Y3QgWDUwOTsKK3N0cnVjdCBDUllQVE9f
QlVGRkVSOwogc3RydWN0IFNTTF9DVFg7CiBzdHJ1Y3QgRVZQX1BLRVk7CiBzdHJ1Y3QgU1NMX01F
VEhPRDsKLXN0cnVjdCBYNTA5X1NUT1JFX0NUWCB7Ci0gICAgdm9pZCogdW51c2VkOwotICAgIFg1
MDkqIGNlcnQ7Ci19Oworc3RydWN0IFNTTF9QUklWQVRFX0tFWV9NRVRIT0Q7CitzdHJ1Y3QgX1NU
QUNLOworc3RydWN0IENSWVBUT19CVUZGRVJfUE9PTDsKIHN0cnVjdCBwZW1fcGFzc3dvcmRfY2I7
CiBpbnQgQklPX2ZyZWUoQklPKik7CiBpbnQgU1NMX2ZyZWUoU1NMKik7Ci1pbnQgWDUwOV9mcmVl
KFg1MDkqKTsKIGludCBTU0xfQ1RYX2ZyZWUoU1NMX0NUWCopOwogaW50IEVWUF9QS0VZX2ZyZWUo
RVZQX1BLRVkqKTsKIGludCBTU0xfbGlicmFyeV9pbml0KCk7Ci1jb25zdCBTU0xfTUVUSE9EKiBT
U0x2MjNfc2VydmVyX21ldGhvZCgpOworY29uc3QgU1NMX01FVEhPRCogVExTX3dpdGhfYnVmZmVy
c19tZXRob2QoKTsKIEJJTyogQklPX25ld19tZW1fYnVmKGNvbnN0IHZvaWQqLCBpbnQpOwotWDUw
OSogUEVNX3JlYWRfYmlvX1g1MDkoQklPKiwgWDUwOSoqLCBwZW1fcGFzc3dvcmRfY2IqLCB2b2lk
Kik7CiBFVlBfUEtFWSogUEVNX3JlYWRfYmlvX1ByaXZhdGVLZXkoQklPKiwgRVZQX1BLRVkqKiwg
cGVtX3Bhc3N3b3JkX2NiKiwgdm9pZCopOwogU1NMX0NUWCogU1NMX0NUWF9uZXcoY29uc3QgU1NM
X01FVEhPRCopOwotY29uc3QgU1NMX01FVEhPRCogU1NMdjIzX3NlcnZlcl9tZXRob2QoKTsKLWlu
dCBTU0xfQ1RYX3VzZV9jZXJ0aWZpY2F0ZShTU0xfQ1RYKiwgWDUwOSopOwotaW50IFNTTF9DVFhf
dXNlX1ByaXZhdGVLZXkoU1NMX0NUWCosIEVWUF9QS0VZKik7CiBTU0wqIFNTTF9uZXcoU1NMX0NU
WCopOwogaW50IFNTTF9hY2NlcHQoU1NMKik7CiBpbnQgU1NMX3NldF9mZChTU0wqLCBpbnQpOwot
dm9pZCBTU0xfQ1RYX3NldF92ZXJpZnkoU1NMX0NUWCosIGludCwgaW50ICgqKShpbnQsIFg1MDlf
U1RPUkVfQ1RYKikpOwotdm9pZCBTU0xfQ1RYX3NldF9jZXJ0X3ZlcmlmeV9jYWxsYmFjayhTU0xf
Q1RYKiwgaW50ICgqKShYNTA5X1NUT1JFX0NUWCosIHZvaWQqKSwgdm9pZCopOwogaW50IFNTTF9n
ZXRfZXJyb3IoY29uc3QgU1NMKiwgaW50KTsKK3ZvaWQgU1NMX0NUWF9zZXRfY3VzdG9tX3Zlcmlm
eShTU0xfQ1RYKiwgaW50IG1vZGUsIGVudW0gc3NsX3ZlcmlmeV9yZXN1bHRfdCAoKmNhbGxiYWNr
KShTU0wgKnNzbCwgdWludDhfdCAqb3V0X2FsZXJ0KSk7CiBpbnQgU1NMX3JlYWQoU1NMKiwgdm9p
ZCosIGludCk7CiBpbnQgU1NMX3dyaXRlKFNTTCosIGNvbnN0IHZvaWQqLCBpbnQpOwotaW50IGky
ZF9YNTA5KFg1MDkqLCB1bnNpZ25lZCBjaGFyKiopOworY29uc3QgdWludDhfdCogQ1JZUFRPX0JV
RkZFUl9kYXRhKGNvbnN0IENSWVBUT19CVUZGRVIqKTsKK3NpemVfdCBDUllQVE9fQlVGRkVSX2xl
bihjb25zdCBDUllQVE9fQlVGRkVSKik7CiB2b2lkIE9QRU5TU0xfZnJlZSh2b2lkKik7CitpbnQg
U1NMX0NUWF9zZXRfY2hhaW5fYW5kX2tleShTU0xfQ1RYKiwgQ1JZUFRPX0JVRkZFUiAqY29uc3Qg
KmNlcnRzLCBzaXplX3QgbnVtX2NlcnRzLCBFVlBfUEtFWSosIGNvbnN0IFNTTF9QUklWQVRFX0tF
WV9NRVRIT0QqKTsKK0NSWVBUT19CVUZGRVIqIENSWVBUT19CVUZGRVJfbmV3KGNvbnN0IHVpbnQ4
X3QqLCBzaXplX3QsIENSWVBUT19CVUZGRVJfUE9PTCopOwordm9pZCBDUllQVE9fQlVGRkVSX2Zy
ZWUoQ1JZUFRPX0JVRkZFUiopOworc2l6ZV90IHNrX251bShjb25zdCBfU1RBQ0sqKTsKK3ZvaWQq
IHNrX3ZhbHVlKGNvbnN0IF9TVEFDSyosIHNpemVfdCk7Citjb25zdCBTVEFDS19PRihDUllQVE9f
QlVGRkVSKSAqU1NMX2dldDBfcGVlcl9jZXJ0aWZpY2F0ZXMoY29uc3QgU1NMKik7Cit2b2lkIFNT
TF9DVFhfc2V0X21heF9wcm90b192ZXJzaW9uKFNTTF9DVFgqLCB1aW50MTZfdCk7CiAjZGVmaW5l
IFNTTF9WRVJJRllfUEVFUiAweDAxCiAjZGVmaW5lIFNTTF9WRVJJRllfRkFJTF9JRl9OT19QRUVS
X0NFUlQgMHgwMgogCiB9IC8vIGV4dGVybiAiQyIKKworaW5saW5lIHNpemVfdCBza19DUllQVE9f
QlVGRkVSX251bShjb25zdCBTVEFDS19PRihDUllQVE9fQlVGRkVSKSAqc2spIHsgcmV0dXJuIHNr
X251bSgoY29uc3QgX1NUQUNLICopc2spOyB9CitpbmxpbmUgQ1JZUFRPX0JVRkZFUiogc2tfQ1JZ
UFRPX0JVRkZFUl92YWx1ZShjb25zdCBTVEFDS19PRihDUllQVE9fQlVGRkVSKSAqc2ssIHNpemVf
dCBpKSB7IHJldHVybiAoQ1JZUFRPX0JVRkZFUiAqKXNrX3ZhbHVlKChjb25zdCBfU1RBQ0sgKilz
aywgaSk7IH0KICNlbmRpZiAvLyBIQVZFKFNTTCkKIAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkg
ewpAQCAtOTEsMTIgKzEwNCw2IEBAIHRlbXBsYXRlPD4gc3RydWN0IGRlbGV0ZXI8U1NMPiB7CiAg
ICAgICAgIFNTTF9mcmVlKHNzbCk7CiAgICAgfQogfTsKLXRlbXBsYXRlPD4gc3RydWN0IGRlbGV0
ZXI8WDUwOT4gewotICAgIHZvaWQgb3BlcmF0b3IoKShYNTA5KiB4NTA5KQotICAgIHsKLSAgICAg
ICAgWDUwOV9mcmVlKHg1MDkpOwotICAgIH0KLX07CiB0ZW1wbGF0ZTw+IHN0cnVjdCBkZWxldGVy
PFNTTF9DVFg+IHsKICAgICB2b2lkIG9wZXJhdG9yKCkoU1NMX0NUWCogY3R4KQogICAgIHsKQEAg
LTEwOSwxMiArMTE2LDE1IEBAIHRlbXBsYXRlPD4gc3RydWN0IGRlbGV0ZXI8RVZQX1BLRVk+IHsK
ICAgICAgICAgRVZQX1BLRVlfZnJlZShrZXkpOwogICAgIH0KIH07Ci10ZW1wbGF0ZTw+IHN0cnVj
dCBkZWxldGVyPHVpbnQ4X3RbXT4gewotICAgIHZvaWQgb3BlcmF0b3IoKSh1aW50OF90KiBidWZm
ZXIpCit0ZW1wbGF0ZTw+IHN0cnVjdCBkZWxldGVyPENSWVBUT19CVUZGRVI+IHsKKyAgICB2b2lk
IG9wZXJhdG9yKCkoQ1JZUFRPX0JVRkZFUiogYnVmZmVyKQogICAgIHsKLSAgICAgICAgT1BFTlNT
TF9mcmVlKGJ1ZmZlcik7CisgICAgICAgIENSWVBUT19CVUZGRVJfZnJlZShidWZmZXIpOwogICAg
IH0KIH07CituYW1lc3BhY2Ugc3NsIHsKK3RlbXBsYXRlIDx0eXBlbmFtZSBUPiB1c2luZyB1bmlx
dWVfcHRyID0gc3RkOjp1bmlxdWVfcHRyPFQsIGRlbGV0ZXI8VD4+OworfQogI2VuZGlmIC8vIEhB
VkUoU1NMKQogCiBUQ1BTZXJ2ZXI6OlRDUFNlcnZlcihGdW5jdGlvbjx2b2lkKFNvY2tldCk+JiYg
Y29ubmVjdGlvbkhhbmRsZXIsIHNpemVfdCBjb25uZWN0aW9ucykKQEAgLTEyNCw0OSArMTM0LDMy
IEBAIFRDUFNlcnZlcjo6VENQU2VydmVyKEZ1bmN0aW9uPHZvaWQoU29ja2V0KT4mJiBjb25uZWN0
aW9uSGFuZGxlciwgc2l6ZV90IGNvbm5lY3RpCiB9CiAKICNpZiBIQVZFKFNTTCkKLVRDUFNlcnZl
cjo6VENQU2VydmVyKFByb3RvY29sIHByb3RvY29sLCBGdW5jdGlvbjx2b2lkKFNTTCopPiYmIHNl
Y3VyZUNvbm5lY3Rpb25IYW5kbGVyKQorVENQU2VydmVyOjpUQ1BTZXJ2ZXIoUHJvdG9jb2wgcHJv
dG9jb2wsIEZ1bmN0aW9uPHZvaWQoU1NMKik+JiYgc2VjdXJlQ29ubmVjdGlvbkhhbmRsZXIsIE9w
dGlvbmFsPHVpbnQxNl90PiBtYXhUTFNWZXJzaW9uKQogewotICAgIGF1dG8gc3RhcnRTZWN1cmVD
b25uZWN0aW9uID0gW3NlY3VyZUNvbm5lY3Rpb25IYW5kbGVyID0gV1RGTW92ZShzZWN1cmVDb25u
ZWN0aW9uSGFuZGxlciksIHByb3RvY29sXSAoU29ja2V0IHNvY2tldCkgeworICAgIGF1dG8gc3Rh
cnRTZWN1cmVDb25uZWN0aW9uID0gW3NlY3VyZUNvbm5lY3Rpb25IYW5kbGVyID0gV1RGTW92ZShz
ZWN1cmVDb25uZWN0aW9uSGFuZGxlciksIHByb3RvY29sLCBtYXhUTFNWZXJzaW9uXSAoU29ja2V0
IHNvY2tldCkgewogICAgICAgICBTU0xfbGlicmFyeV9pbml0KCk7CiAKLSAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFNTTF9DVFgsIGRlbGV0ZXI8U1NMX0NUWD4+IGN0eChTU0xfQ1RYX25ldyhTU0x2
MjNfc2VydmVyX21ldGhvZCgpKSk7CisgICAgICAgIHNzbDo6dW5pcXVlX3B0cjxTU0xfQ1RYPiBj
dHgoU1NMX0NUWF9uZXcoVExTX3dpdGhfYnVmZmVyc19tZXRob2QoKSkpOwogCiAgICAgICAgIC8v
IFRoaXMgaXMgYSB0ZXN0IGNlcnRpZmljYXRlIGZyb20gQm9yaW5nU1NMLgotICAgICAgICBjaGFy
IGtDZXJ0UEVNW10gPQotICAgICAgICAiLS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tXG4iCi0g
ICAgICAgICJNSUlDV0RDQ0FjR2dBd0lCQWdJSkFQdXdUQzZyRUpzTU1BMEdDU3FHU0liM0RRRUJC
UVVBTUVVeEN6QUpCZ05WXG4iCi0gICAgICAgICJCQVlUQWtGVk1STXdFUVlEVlFRSURBcFRiMjFs
TFZOMFlYUmxNU0V3SHdZRFZRUUtEQmhKYm5SbGNtNWxkQ0JYXG4iCi0gICAgICAgICJhV1JuYVhS
eklGQjBlU0JNZEdRd0hoY05NVFF3TkRJek1qQTFNRFF3V2hjTk1UY3dOREl5TWpBMU1EUXdXakJG
XG4iCi0gICAgICAgICJNUXN3Q1FZRFZRUUdFd0pCVlRFVE1CRUdBMVVFQ0F3S1UyOXRaUzFUZEdG
MFpURWhNQjhHQTFVRUNnd1lTVzUwXG4iCi0gICAgICAgICJaWEp1WlhRZ1YybGtaMmwwY3lCUWRI
a2dUSFJrTUlHZk1BMEdDU3FHU0liM0RRRUJBUVVBQTRHTkFEQ0JpUUtCXG4iCi0gICAgICAgICJn
UURZSzhpbU11UmkvMDN6MEsxWmkwV252ZkZIdndsWWV5SzlOYTZYSllhVW9JREF0Qjkya1dkR01k
QVFoTGNpXG4iCi0gICAgICAgICJIbkFqa1hMSTZXMTVPb1YzZ0EvRWxSWjF4VXB4VE1oalA2UHlZ
NXdxVDVyNnk4RnhiaWlGS0tBbkhtVWNyZ2ZWXG4iCi0gICAgICAgICJXMjh0USswcmtMR01yeVJ0
cnVrWE9nWEJ2N2djcm1VN0cxakMyYTdXcW1lSThRSURBUUFCbzFBd1RqQWRCZ05WXG4iCi0gICAg
ICAgICJIUTRFRmdRVWkzWFZyTXNJdmc0ZlpiZjZWcjVzcDNYYWhhOHdId1lEVlIwakJCZ3dGb0FV
aTNYVnJNc0l2ZzRmXG4iCi0gICAgICAgICJaYmY2VnI1c3AzWGFoYTh3REFZRFZSMFRCQVV3QXdF
Qi96QU5CZ2txaGtpRzl3MEJBUVVGQUFPQmdRQTc2SGh0XG4iCi0gICAgICAgICJsZFk5YXZjVEdT
d2J3b2l1SXF2MGpUTDFmSEZuenkzUkhNTERoK0xwdm9sYzVEU3JTSkhDUDVXdUswZWVKWGhyXG4i
Ci0gICAgICAgICJUNW9RcEhMOXovY0NETEFLQ0tSYTR1VjBmaEVkT1dCcXlSOXA4eTVqSnR5ZTcy
dDZDdUZVVjVpcWNwRjRCSDRmXG4iCi0gICAgICAgICJqMlZOSHdzU3JKd2tENFFVR2xVdEg3dndu
UW15Q0Z4Wk1tV0FKZz09XG4iCi0gICAgICAgICItLS0tLUVORCBDRVJUSUZJQ0FURS0tLS0tXG4i
OwotCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCSU8sIGRlbGV0ZXI8QklPPj4gY2VydEJJTyhC
SU9fbmV3X21lbV9idWYoa0NlcnRQRU0sIHN0cmxlbihrQ2VydFBFTSkpKTsKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFg1MDksIGRlbGV0ZXI8WDUwOT4+IGNlcnRYNTA5KFBFTV9yZWFkX2Jpb19Y
NTA5KGNlcnRCSU8uZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIpKTsKLSAgICAgICAg
QVNTRVJUKGNlcnRYNTA5KTsKLSAgICAgICAgU1NMX0NUWF91c2VfY2VydGlmaWNhdGUoY3R4Lmdl
dCgpLCBjZXJ0WDUwOS5nZXQoKSk7Ci0KLSAgICAgICAgaWYgKHByb3RvY29sID09IFByb3RvY29s
OjpIVFRQU1dpdGhDbGllbnRDZXJ0aWZpY2F0ZVJlcXVlc3QpIHsKLSAgICAgICAgICAgIFNTTF9D
VFhfc2V0X3ZlcmlmeShjdHguZ2V0KCksIFNTTF9WRVJJRllfUEVFUiB8IFNTTF9WRVJJRllfRkFJ
TF9JRl9OT19QRUVSX0NFUlQsIG51bGxwdHIpOwotICAgICAgICAgICAgU1NMX0NUWF9zZXRfY2Vy
dF92ZXJpZnlfY2FsbGJhY2soY3R4LmdldCgpLCBbXSAoWDUwOV9TVE9SRV9DVFgqIHN0b3JlX2N0
eCwgdm9pZCopIC0+IGludCB7Ci0gICAgICAgICAgICAgICAgdWludDhfdCogYnVmZmVyUG9pbnRl
ciA9IG51bGxwdHI7Ci0gICAgICAgICAgICAgICAgYXV0byBsZW5ndGggPSBpMmRfWDUwOShzdG9y
ZV9jdHgtPmNlcnQsICZidWZmZXJQb2ludGVyKTsKLSAgICAgICAgICAgICAgICBzdGQ6OnVuaXF1
ZV9wdHI8dWludDhfdFtdLCBkZWxldGVyPHVpbnQ4X3RbXT4+IGJ1ZmZlcihidWZmZXJQb2ludGVy
KTsKLSAgICAgICAgICAgICAgICBhdXRvIGV4cGVjdGVkQ2VydCA9IHRlc3RDZXJ0aWZpY2F0ZSgp
OwotICAgICAgICAgICAgICAgIEVYUEVDVF9FUShzdGF0aWNfY2FzdDxpbnQ+KGV4cGVjdGVkQ2Vy
dC5zaXplKCkpLCBsZW5ndGgpOwotICAgICAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwg
bGVuZ3RoOyArK2kpCi0gICAgICAgICAgICAgICAgICAgIEVYUEVDVF9FUShidWZmZXIuZ2V0KClb
aV0sIGV4cGVjdGVkQ2VydFtpXSk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIDE7Ci0gICAgICAg
ICAgICB9LCBudWxscHRyKTsKLSAgICAgICAgfQorICAgICAgICBTdHJpbmcgY2VydFBFTSgKKyAg
ICAgICAgIk1JSUNXRENDQWNHZ0F3SUJBZ0lKQVB1d1RDNnJFSnNNTUEwR0NTcUdTSWIzRFFFQkJR
VUFNRVV4Q3pBSkJnTlYiCisgICAgICAgICJCQVlUQWtGVk1STXdFUVlEVlFRSURBcFRiMjFsTFZO
MFlYUmxNU0V3SHdZRFZRUUtEQmhKYm5SbGNtNWxkQ0JYIgorICAgICAgICAiYVdSbmFYUnpJRkIw
ZVNCTWRHUXdIaGNOTVRRd05ESXpNakExTURRd1doY05NVGN3TkRJeU1qQTFNRFF3V2pCRiIKKyAg
ICAgICAgIk1Rc3dDUVlEVlFRR0V3SkJWVEVUTUJFR0ExVUVDQXdLVTI5dFpTMVRkR0YwWlRFaE1C
OEdBMVVFQ2d3WVNXNTAiCisgICAgICAgICJaWEp1WlhRZ1YybGtaMmwwY3lCUWRIa2dUSFJrTUlH
Zk1BMEdDU3FHU0liM0RRRUJBUVVBQTRHTkFEQ0JpUUtCIgorICAgICAgICAiZ1FEWUs4aW1NdVJp
LzAzejBLMVppMFdudmZGSHZ3bFlleUs5TmE2WEpZYVVvSURBdEI5MmtXZEdNZEFRaExjaSIKKyAg
ICAgICAgIkhuQWprWExJNlcxNU9vVjNnQS9FbFJaMXhVcHhUTWhqUDZQeVk1d3FUNXI2eThGeGJp
aUZLS0FuSG1VY3JnZlYiCisgICAgICAgICJXMjh0USswcmtMR01yeVJ0cnVrWE9nWEJ2N2djcm1V
N0cxakMyYTdXcW1lSThRSURBUUFCbzFBd1RqQWRCZ05WIgorICAgICAgICAiSFE0RUZnUVVpM1hW
ck1zSXZnNGZaYmY2VnI1c3AzWGFoYTh3SHdZRFZSMGpCQmd3Rm9BVWkzWFZyTXNJdmc0ZiIKKyAg
ICAgICAgIlpiZjZWcjVzcDNYYWhhOHdEQVlEVlIwVEJBVXdBd0VCL3pBTkJna3Foa2lHOXcwQkFR
VUZBQU9CZ1FBNzZIaHQiCisgICAgICAgICJsZFk5YXZjVEdTd2J3b2l1SXF2MGpUTDFmSEZuenkz
UkhNTERoK0xwdm9sYzVEU3JTSkhDUDVXdUswZWVKWGhyIgorICAgICAgICAiVDVvUXBITDl6L2ND
RExBS0NLUmE0dVYwZmhFZE9XQnF5UjlwOHk1akp0eWU3MnQ2Q3VGVVY1aXFjcEY0Qkg0ZiIKKyAg
ICAgICAgImoyVk5Id3NTckp3a0Q0UVVHbFV0SDd2d25RbXlDRnhaTW1XQUpnPT0iKTsKKyAgICAg
ICAgVmVjdG9yPHVpbnQ4X3Q+IGNlcnRERVI7CisgICAgICAgIGJhc2U2NERlY29kZShjZXJ0UEVN
LCBjZXJ0REVSLCBXVEY6OkJhc2U2NERlY29kZU9wdGlvbnM6OkJhc2U2NERlZmF1bHQpOworICAg
ICAgICBzc2w6OnVuaXF1ZV9wdHI8Q1JZUFRPX0JVRkZFUj4gY2VydChDUllQVE9fQlVGRkVSX25l
dyhjZXJ0REVSLmRhdGEoKSwgY2VydERFUi5zaXplKCksIG51bGxwdHIpKTsKKyAgICAgICAgQVNT
RVJUKGNlcnQpOwogCiAgICAgICAgIC8vIFRoaXMgaXMgYSB0ZXN0IGtleSBmcm9tIEJvcmluZ1NT
TC4KICAgICAgICAgY2hhciBrS2V5UEVNW10gPQpAQCAtMTg2LDE5ICsxNzksMzMgQEAgVENQU2Vy
dmVyOjpUQ1BTZXJ2ZXIoUHJvdG9jb2wgcHJvdG9jb2wsIEZ1bmN0aW9uPHZvaWQoU1NMKik+JiYg
c2VjdXJlQ29ubmVjdGlvbkgKICAgICAgICAgIm1vWldnakh2QjJXOUNrbjdzRHFzUEIrVTJ0eVgw
am9EZFFFeXVpTUVDRFk4b1E9PVxuIgogICAgICAgICAiLS0tLS1FTkQgUlNBIFBSSVZBVEUgS0VZ
LS0tLS1cbiI7CiAKLSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEJJTywgZGVsZXRlcjxCSU8+PiBw
cml2YXRlS2V5QklPKEJJT19uZXdfbWVtX2J1ZihrS2V5UEVNLCBzdHJsZW4oa0tleVBFTSkpKTsK
LSAgICAgICAgc3RkOjp1bmlxdWVfcHRyPEVWUF9QS0VZLCBkZWxldGVyPEVWUF9QS0VZPj4gcHJp
dmF0ZUtleShQRU1fcmVhZF9iaW9fUHJpdmF0ZUtleShwcml2YXRlS2V5QklPLmdldCgpLCBudWxs
cHRyLCBudWxscHRyLCBudWxscHRyKSk7CisgICAgICAgIHNzbDo6dW5pcXVlX3B0cjxCSU8+IHBy
aXZhdGVLZXlCSU8oQklPX25ld19tZW1fYnVmKGtLZXlQRU0sIHN0cmxlbihrS2V5UEVNKSkpOwor
ICAgICAgICBzc2w6OnVuaXF1ZV9wdHI8RVZQX1BLRVk+IHByaXZhdGVLZXkoUEVNX3JlYWRfYmlv
X1ByaXZhdGVLZXkocHJpdmF0ZUtleUJJTy5nZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0
cikpOwogICAgICAgICBBU1NFUlQocHJpdmF0ZUtleSk7Ci0gICAgICAgIFNTTF9DVFhfdXNlX1By
aXZhdGVLZXkoY3R4LmdldCgpLCBwcml2YXRlS2V5LmdldCgpKTsKIAotICAgICAgICBzdGQ6OnVu
aXF1ZV9wdHI8U1NMLCBkZWxldGVyPFNTTD4+IHNzbChTU0xfbmV3KGN0eC5nZXQoKSkpOworICAg
ICAgICBTU0xfQ1RYX3NldF9jaGFpbl9hbmRfa2V5KGN0eC5nZXQoKSwgcmVpbnRlcnByZXRfY2Fz
dDxDUllQVE9fQlVGRkVSICpjb25zdCAqPigmY2VydCksIDEsIHByaXZhdGVLZXkuZ2V0KCksIG51
bGxwdHIpOworCisgICAgICAgIGlmIChwcm90b2NvbCA9PSBQcm90b2NvbDo6SFRUUFNXaXRoQ2xp
ZW50Q2VydGlmaWNhdGVSZXF1ZXN0KSB7CisgICAgICAgICAgICBTU0xfQ1RYX3NldF9jdXN0b21f
dmVyaWZ5KGN0eC5nZXQoKSwgU1NMX1ZFUklGWV9QRUVSIHwgU1NMX1ZFUklGWV9GQUlMX0lGX05P
X1BFRVJfQ0VSVCwgW10gKFNTTCogc3NsLCB1aW50OF90KikgLT4gc3NsX3ZlcmlmeV9yZXN1bHRf
dCB7CisgICAgICAgICAgICAgICAgYXV0byBjaGFpbiA9IFNTTF9nZXQwX3BlZXJfY2VydGlmaWNh
dGVzKHNzbCk7CisgICAgICAgICAgICAgICAgRVhQRUNUX0VRKHNrX0NSWVBUT19CVUZGRVJfbnVt
KGNoYWluKSwgMnUpOworICAgICAgICAgICAgICAgIGF1dG8gY2VydCA9IHNrX0NSWVBUT19CVUZG
RVJfdmFsdWUoY2hhaW4sIDApOworICAgICAgICAgICAgICAgIGF1dG8gZXhwZWN0ZWRDZXJ0ID0g
dGVzdENlcnRpZmljYXRlKCk7CisgICAgICAgICAgICAgICAgRVhQRUNUX0VRKENSWVBUT19CVUZG
RVJfbGVuKGNlcnQpLCBleHBlY3RlZENlcnQuc2l6ZSgpKTsKKyAgICAgICAgICAgICAgICBFWFBF
Q1RfVFJVRSghbWVtY21wKENSWVBUT19CVUZGRVJfZGF0YShjZXJ0KSwgZXhwZWN0ZWRDZXJ0LmRh
dGEoKSwgZXhwZWN0ZWRDZXJ0LnNpemUoKSkpOworICAgICAgICAgICAgICAgIHJldHVybiBzc2xf
dmVyaWZ5X29rOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKworICAgICAgICBpZiAobWF4
VExTVmVyc2lvbikKKyAgICAgICAgICAgIFNTTF9DVFhfc2V0X21heF9wcm90b192ZXJzaW9uKGN0
eC5nZXQoKSwgKm1heFRMU1ZlcnNpb24pOworCisgICAgICAgIHNzbDo6dW5pcXVlX3B0cjxTU0w+
IHNzbChTU0xfbmV3KGN0eC5nZXQoKSkpOwogICAgICAgICBBU1NFUlQoc3NsKTsKICAgICAgICAg
U1NMX3NldF9mZChzc2wuZ2V0KCksIHNvY2tldCk7CiAKICAgICAgICAgYXV0byBhY2NlcHRSZXN1
bHQgPSBTU0xfYWNjZXB0KHNzbC5nZXQoKSk7Ci0gICAgICAgIEFTU0VSVF9VTlVTRUQoYWNjZXB0
UmVzdWx0LCBhY2NlcHRSZXN1bHQgPiAwKTsKLSAgICAgICAgCi0gICAgICAgIHNlY3VyZUNvbm5l
Y3Rpb25IYW5kbGVyKHNzbC5nZXQoKSk7CisgICAgICAgIHNlY3VyZUNvbm5lY3Rpb25IYW5kbGVy
KGFjY2VwdFJlc3VsdCA+IDAgPyBzc2wuZ2V0KCkgOiBudWxscHRyKTsKICAgICB9OwogCiAgICAg
c3dpdGNoIChwcm90b2NvbCkgewpAQCAtMjM5LDYgKzI0Niw3IEBAIHZvaWQgVENQU2VydmVyOjps
aXN0ZW5Gb3JDb25uZWN0aW9ucyhzaXplX3QgY29ubmVjdGlvbnMpCiAgICAgICAgICAgICAgICAg
Y2xvc2UoY29ubmVjdGlvblNvY2tldCk7CiAgICAgICAgICAgICB9KSk7CiAgICAgICAgIH0KKyAg
ICAgICAgY2xvc2UobGlzdGVuaW5nU29ja2V0KTsKICAgICB9KTsKIH0KIApkaWZmIC0tZ2l0IGEv
VG9vbHMvVGVzdFdlYktpdEFQSS9UQ1BTZXJ2ZXIuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVENQ
U2VydmVyLmgKaW5kZXggNmE5ODFjMDE1YjE4OTU3YmNhMmM2MTQ2MTJmYzM5NzA2MGM0MDJhYy4u
NzZhMzE5OTlkN2E3YmE0MDNlZjM0Y2Q5NDM1ZjJlZjdhMmQ0M2E4YyAxMDA2NDQKLS0tIGEvVG9v
bHMvVGVzdFdlYktpdEFQSS9UQ1BTZXJ2ZXIuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1RD
UFNlcnZlci5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlIDx0aHJlYWQ+CiAjaW5jbHVk
ZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgogCiAjaWYgSEFWRShTU0wpCkBAIC00Niw3ICs0Nyw3IEBAIHB1YmxpYzoK
ICAgICBlbnVtIGNsYXNzIFByb3RvY29sIDogdWludDhfdCB7CiAgICAgICAgIEhUVFBTLCBIVFRQ
U1Byb3h5LCBIVFRQU1dpdGhDbGllbnRDZXJ0aWZpY2F0ZVJlcXVlc3QKICAgICB9OwotICAgIFRD
UFNlcnZlcihQcm90b2NvbCwgRnVuY3Rpb248dm9pZChTU0wqKT4mJik7CisgICAgVENQU2VydmVy
KFByb3RvY29sLCBGdW5jdGlvbjx2b2lkKFNTTCopPiYmLCBPcHRpb25hbDx1aW50MTZfdD4gbWF4
VExTVmVyc2lvbiA9IFdURjo6bnVsbG9wdCk7CiAjZW5kaWYgLy8gSEFWRShTU0wpCiAgICAgflRD
UFNlcnZlcigpOwogICAgIApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxNDc0M2QyNzBlZjJm
YjY0MTAwZjNmN2U1YzgzZjY4YjdmYzg3ZmI4Li42ZGEzZjFmYzk0YTk3N2M4OGVhOGQ2Nzk2ODQz
ZDI5YjIxNGYzMTAyIDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRB
UEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMTg2NCw2ICsxODY0LDcg
QEAKIAkJNUM2OUJERDQxRjgyQTdFQjAwMEY0RjRCIC8qIEphdmFTY3JpcHREdXJpbmdOYXZpZ2F0
aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSmF2YVNjcmlw
dER1cmluZ05hdmlnYXRpb24ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNkUy
N0E2MjI0RUVCRUEwMDEyODczNiAvKiBVUkxDYW5vbmljYWxpemF0aW9uLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVVJMQ2Fub25pY2FsaXphdGlvbi5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM3MTQ4OTQyMTIzQTQwNzAwRkRFM0M1IC8qIFdL
V2Vic2l0ZURhdGFzdG9yZS5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IFdLV2Vic2l0ZURhdGFzdG9yZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
NUM3M0E4MUEyMzIzMDU5ODAwREVBODVBIC8qIFRMU0RlcHJlY2F0aW9uLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gVExTRGVwcmVjYXRpb24ubW07IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNzU3MTVGMjIxMjQ5QkQwMEI5RTVBQyAvKiBCdW5kbGVS
ZXRhaW5QYWdlUGx1Z0luLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gQnVuZGxlUmV0YWluUGFnZVBsdWdJbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNUM3OTY0MEYxRUIwMjY5QjAwNzVENzRDIC8qIEV2ZW50TW9kaWZpZXJzLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV2ZW50TW9kaWZpZXJzLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM3Qzc0Q0ExRkI1MjhENDAwMkY5QUJFIC8qIFdlYlZp
ZXdTY2hlZHVsZUluUnVuTG9vcC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdlYlZpZXdTY2hlZHVsZUluUnVuTG9vcC5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTI4NzMsNiArMjg3NCw3IEBACiAJCQkJRjRDRDc0QzgyMEZEQjQ5NjAwREUzNzk0
IC8qIFRlc3RVUkxTY2hlbWVIYW5kbGVyLm1tICovLAogCQkJCTVDMTZGOEZCMjMwQzk0MkIwMDc0
QzRBOCAvKiBUZXh0U2l6ZS5tbSAqLywKIAkJCQlDMjJGQTMyQTIyOEY4NzA4MDA5RDc5ODggLyog
VGV4dFdpZHRoLm1tICovLAorCQkJCTVDNzNBODFBMjMyMzA1OTgwMERFQTg1QSAvKiBUTFNEZXBy
ZWNhdGlvbi5tbSAqLywKIAkJCQk1Q0I0MEI0RDFGNEI5OEJFMDA3REM3QjkgLyogVUlEZWxlZ2F0
ZS5tbSAqLywKIAkJCQk1QzNBNzdBOTIyRjIwQjhBMDAzODI3RkYgLyogVXBsb2FkRGlyZWN0b3J5
Lm1tICovLAogCQkJCTdDQzNFMUZBMTk3RTIzNDEwMEJFNjI1MiAvKiBVc2VyQ29udGVudENvbnRy
b2xsZXIubW0gKi8sCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktp
dENvY29hL1RMU0RlcHJlY2F0aW9uLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9UTFNEZXByZWNhdGlvbi5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZmVlMWEyMjNkMjhkYjdhMGFm
NDhkYTNhODM5MjI5NGRkMTNiNjBkCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9UTFNEZXByZWNhdGlvbi5tbQpAQCAtMCwwICsxLDE0MSBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2ltcG9ydCAiUGxhdGZvcm1V
dGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRDUFNlcnZlci5oIgorI2ltcG9ydCAiVGVzdE5hdmlnYXRp
b25EZWxlZ2F0ZS5oIgorI2ltcG9ydCAiVGVzdFdLV2ViVmlldy5oIgorI2ltcG9ydCA8V2ViS2l0
L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKK0Bp
bnRlcmZhY2UgV2ViU29ja2V0RGVsZWdhdGUgOiBOU09iamVjdCA8V0tVSURlbGVnYXRlPgorLSAo
TlNTdHJpbmcgKil3YWl0Rm9yTWVzc2FnZTsKK0BlbmQKKworQGltcGxlbWVudGF0aW9uIFdlYlNv
Y2tldERlbGVnYXRlIHsKKyAgICBSZXRhaW5QdHI8TlNTdHJpbmc+IF9tZXNzYWdlOworfQorCist
IChOU1N0cmluZyAqKXdhaXRGb3JNZXNzYWdlCit7CisgICAgd2hpbGUgKCFfbWVzc2FnZSkKKyAg
ICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6c3BpblJ1bkxvb3AoKTsKKyAgICByZXR1cm4gX21l
c3NhZ2UuYXV0b3JlbGVhc2UoKTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IHJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVz
c2FnZSBpbml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGNvbXBsZXRpb25IYW5k
bGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9tZXNzYWdlID0g
bWVzc2FnZTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCitAZW5kCisKK25hbWVzcGFj
ZSBUZXN0V2ViS2l0QVBJIHsKKworY29uc3QgdWludDE2X3QgdGxzMV8xID0gMHgwMzAyOworc3Rh
dGljIE5TU3RyaW5nICpkZWZhdWx0c0tleSA9IEAiV2ViS2l0RW5hYmxlTGVnYWN5VExTIjsKKwor
VEVTVChXZWJLaXQsIFRMU1ZlcnNpb25XZWJTb2NrZXQpCit7CisgICAgYXV0byBnZXRXZWJTb2Nr
ZXRFdmVudCA9IFtdIChib29sIGNsaWVudEFsbG93RGVwcmVjYXRlZFRMUywgYm9vbCBzZXJ2ZXJM
aW1pdFRMUykgeworICAgICAgICBPcHRpb25hbDx1aW50MTZfdD4gbWF4U2VydmVyVExTVmVyc2lv
bjsKKyAgICAgICAgaWYgKHNlcnZlckxpbWl0VExTKQorICAgICAgICAgICAgbWF4U2VydmVyVExT
VmVyc2lvbiA9IHRsczFfMTsKKyAgICAgICAgVENQU2VydmVyIHNlcnZlcihUQ1BTZXJ2ZXI6OlBy
b3RvY29sOjpIVFRQUywgWz1dKFNTTCAqc3NsKSB7CisgICAgICAgICAgICBFWFBFQ1RfVFJVRSgh
c3NsID09IChjbGllbnRBbGxvd0RlcHJlY2F0ZWRUTFMgIT0gc2VydmVyTGltaXRUTFMpKTsKKyAg
ICAgICAgfSwgbWF4U2VydmVyVExTVmVyc2lvbik7CisKKyAgICAgICAgaWYgKGNsaWVudEFsbG93
RGVwcmVjYXRlZFRMUykKKyAgICAgICAgICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2Vy
RGVmYXVsdHNdIHNldEJvb2w6WUVTIGZvcktleTpkZWZhdWx0c0tleV07CisgICAgICAgIAorICAg
ICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtUZXN0V0tXZWJWaWV3IG5ld10pOworICAgICAg
ICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbV2ViU29ja2V0RGVsZWdhdGUgbmV3XSk7CisgICAg
ICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworICAgICAgICBbd2Vi
VmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6QCJzdGFydCBuZXR3b3JrIHByb2Nlc3Mi
XTsKKyAgICAgICAgW1t3ZWJWaWV3IGNvbmZpZ3VyYXRpb25dLnByb2Nlc3NQb29sIF9hbGxvd0Fu
eVRMU0NlcnRpZmljYXRlRm9yV2ViU29ja2V0VGVzdGluZ107CisgICAgICAgIFt3ZWJWaWV3IHN5
bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDoKKyAg
ICAgICAgICAgIEAiPHNjcmlwdD4iCisgICAgICAgICAgICAiY29uc3Qgc29ja2V0ID0gbmV3IFdl
YlNvY2tldCgnd3NzOi8vbG9jYWxob3N0OiVkJyk7IgorICAgICAgICAgICAgInNvY2tldC5vbmNs
b3NlID0gZnVuY3Rpb24oZXZlbnQpeyBhbGVydCgnY2xvc2UnKTsgfTsiCisgICAgICAgICAgICAi
c29ja2V0Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCl7IGFsZXJ0KCdlcnJvcjogJyArIGV2ZW50
LmRhdGEpOyB9OyIKKyAgICAgICAgICAgICI8L3NjcmlwdD4iLCBzZXJ2ZXIucG9ydCgpXV07Cisg
ICAgICAgIE5TU3RyaW5nICptZXNzYWdlID0gW2RlbGVnYXRlIHdhaXRGb3JNZXNzYWdlXTsKKyAg
ICAgICAgCisgICAgICAgIGlmIChjbGllbnRBbGxvd0RlcHJlY2F0ZWRUTFMpCisgICAgICAgICAg
ICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSByZW1vdmVPYmplY3RGb3JL
ZXk6ZGVmYXVsdHNLZXldOworCisgICAgICAgIHJldHVybiBtZXNzYWdlOworICAgIH07CisKKyAg
ICBFWFBFQ1RfV0tfU1RSRVEoZ2V0V2ViU29ja2V0RXZlbnQodHJ1ZSwgdHJ1ZSksICJjbG9zZSIp
OworICAgIEVYUEVDVF9XS19TVFJFUShnZXRXZWJTb2NrZXRFdmVudChmYWxzZSwgdHJ1ZSksICJl
cnJvcjogdW5kZWZpbmVkIik7CisgICAgRVhQRUNUX1dLX1NUUkVRKGdldFdlYlNvY2tldEV2ZW50
KGZhbHNlLCBmYWxzZSksICJjbG9zZSIpOworfQorCitURVNUKFdlYktpdCwgVExTVmVyc2lvbk5l
dHdvcmtTZXNzaW9uKQoreworICAgIHN0YXRpYyBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbVGVz
dE5hdmlnYXRpb25EZWxlZ2F0ZSBuZXddKTsKKyAgICBhdXRvIG1ha2VXZWJWaWV3V2l0aCA9IFsm
XSAoV0tXZWJzaXRlRGF0YVN0b3JlICpzdG9yZSkgeworICAgICAgICBXS1dlYlZpZXdDb25maWd1
cmF0aW9uICpjb25maWd1cmF0aW9uID0gW1tbV0tXZWJWaWV3Q29uZmlndXJhdGlvbiBhbGxvY10g
aW5pdF0gYXV0b3JlbGVhc2VdOworICAgICAgICBjb25maWd1cmF0aW9uLndlYnNpdGVEYXRhU3Rv
cmUgPSBzdG9yZTsKKyAgICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBh
bGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VSZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0
aW9uOmNvbmZpZ3VyYXRpb25dKTsKKyAgICAgICAgW3dlYlZpZXcgc2V0TmF2aWdhdGlvbkRlbGVn
YXRlOmRlbGVnYXRlLmdldCgpXTsKKyAgICAgICAgW2RlbGVnYXRlIHNldERpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZTpeKFdLV2ViVmlldyAqLCBOU1VSTEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlICpjaGFsbGVuZ2UsIHZvaWQgKF5jYWxsYmFjaykoTlNVUkxTZXNzaW9uQXV0aENoYWxs
ZW5nZURpc3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKikpIHsKKyAgICAgICAgICAgIGNhbGxi
YWNrKE5TVVJMU2Vzc2lvbkF1dGhDaGFsbGVuZ2VVc2VDcmVkZW50aWFsLCBbTlNVUkxDcmVkZW50
aWFsIGNyZWRlbnRpYWxGb3JUcnVzdDpjaGFsbGVuZ2UucHJvdGVjdGlvblNwYWNlLnNlcnZlclRy
dXN0XSk7CisgICAgICAgIH1dOworICAgICAgICByZXR1cm4gd2ViVmlldzsKKyAgICB9OworICAg
IHsKKyAgICAgICAgVENQU2VydmVyIHNlcnZlcihUQ1BTZXJ2ZXI6OlByb3RvY29sOjpIVFRQUywg
W10oU1NMICpzc2wpIHsKKyAgICAgICAgICAgIEVYUEVDVF9GQUxTRShzc2wpOworICAgICAgICB9
LCB0bHMxXzEpOworICAgICAgICBhdXRvIHdlYlZpZXcgPSBtYWtlV2ViVmlld1dpdGgoW1dLV2Vi
c2l0ZURhdGFTdG9yZSBkZWZhdWx0RGF0YVN0b3JlXSk7CisgICAgICAgIFt3ZWJWaWV3IGxvYWRS
ZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6
W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6QCJodHRwczovLzEyNy4wLjAuMTolZC8iLCBzZXJ2
ZXIucG9ydCgpXV1dXTsKKyAgICAgICAgW2RlbGVnYXRlIHdhaXRGb3JEaWRGYWlsUHJvdmlzaW9u
YWxOYXZpZ2F0aW9uXTsKKyAgICB9CisgICAgeworICAgICAgICBUQ1BTZXJ2ZXIgc2VydmVyKFRD
UFNlcnZlcjo6UHJvdG9jb2w6OkhUVFBTLCBbXShTU0wgKnNzbCkgeworICAgICAgICAgICAgRVhQ
RUNUX0ZBTFNFKHNzbCk7CisgICAgICAgIH0sIHRsczFfMSk7CisgICAgICAgIGF1dG8gd2ViVmll
dyA9IG1ha2VXZWJWaWV3V2l0aChbV0tXZWJzaXRlRGF0YVN0b3JlIG5vblBlcnNpc3RlbnREYXRh
U3RvcmVdKTsKKyAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1
ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1h
dDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlci5wb3J0KCldXV1dOworICAgICAgICBb
ZGVsZWdhdGUgd2FpdEZvckRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb25dOworICAgIH0KKyAg
ICB7CisgICAgICAgIFRDUFNlcnZlciBzZXJ2ZXIoVENQU2VydmVyOjpQcm90b2NvbDo6SFRUUFMs
IFtdKFNTTCAqc3NsKSB7CisgICAgICAgICAgICBUQ1BTZXJ2ZXI6OnJlc3BvbmRXaXRoT0soc3Ns
KTsKKyAgICAgICAgfSwgdGxzMV8xKTsKKyAgICAgICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFy
ZFVzZXJEZWZhdWx0c10gc2V0Qm9vbDpZRVMgZm9yS2V5OmRlZmF1bHRzS2V5XTsKKyAgICAgICAg
YXV0byB3ZWJWaWV3ID0gbWFrZVdlYlZpZXdXaXRoKFtXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVs
dERhdGFTdG9yZV0pOworICAgICAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0
IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRo
Rm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2VydmVyLnBvcnQoKV1dXV07CisgICAg
ICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlvbl07CisgICAgICAgIFtbTlNV
c2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHJlbW92ZU9iamVjdEZvcktleTpkZWZh
dWx0c0tleV07CisgICAgfQorfQorCit9CmRpZmYgLS1naXQgYS9Ub29scy9UZXN0V2ViS2l0QVBJ
L2NvY29hL1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaCBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29j
b2EvVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oCmluZGV4IGVmZmJkNDk5MTViMThhNDQ5MjQ1NDZj
ZmY2MDliNGNjOTk0NmE0NDUuLjQyNWQ2NzUzMzQ1ZDI0ZmMwNGVmNzllNjczYzhhOTE0ZTVkYzdj
ODkgMTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdE5hdmlnYXRpb25E
ZWxlZ2F0ZS5oCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdE5hdmlnYXRpb25E
ZWxlZ2F0ZS5oCkBAIC0zNyw5ICszNywxMSBAQAogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkp
IHZvaWQgKF5kaWRGaW5pc2hOYXZpZ2F0aW9uKShXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uICop
OwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5yZW5kZXJpbmdQcm9ncmVzc0Rp
ZENoYW5nZSkoV0tXZWJWaWV3ICosIF9XS1JlbmRlcmluZ1Byb2dyZXNzRXZlbnRzKTsKIEBwcm9w
ZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkIChed2ViQ29udGVudFByb2Nlc3NEaWRUZXJtaW5h
dGUpKFdLV2ViVmlldyAqKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkICheZGlk
UmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKShXS1dlYlZpZXcgKiwgTlNVUkxBdXRoZW50
aWNhdGlvbkNoYWxsZW5nZSAqLCB2b2lkICheKShOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlRGlz
cG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKSk7CiAKIC0gKHZvaWQpd2FpdEZvckRpZFN0YXJ0
UHJvdmlzaW9uYWxOYXZpZ2F0aW9uOwogLSAodm9pZCl3YWl0Rm9yRGlkRmluaXNoTmF2aWdhdGlv
bjsKKy0gKHZvaWQpd2FpdEZvckRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb247CiAKIEBlbmQK
IApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0TmF2aWdhdGlvbkRl
bGVnYXRlLm1tIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0TmF2aWdhdGlvbkRlbGVn
YXRlLm1tCmluZGV4IDc0MmFjN2E4MTJjYWNjNzBlZDI4ZjIwMDVhNDIzZjgzYTVhNWM0ZmUuLjU1
OGVhNzc4MmU1MWEyNjc0NjAwNjc5NzVkNzBhOTIxMWZmY2FjZTAgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5tbQorKysgYi9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUubW0KQEAgLTc1LDYg
Kzc1LDE0IEBACiAgICAgICAgIF9yZW5kZXJpbmdQcm9ncmVzc0RpZENoYW5nZSh3ZWJWaWV3LCBw
cm9ncmVzc0V2ZW50cyk7CiB9CiAKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmll
dyBkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25D
aGFsbGVuZ2UgKiljaGFsbGVuZ2UgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TVVJMU2Vz
c2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICopKWNvbXBsZXRp
b25IYW5kbGVyCit7CisgICAgaWYgKF9kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Up
CisgICAgICAgIF9kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uod2ViVmlldywgY2hh
bGxlbmdlLCBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgZWxzZQorICAgICAgICBjb21wbGV0aW9u
SGFuZGxlcihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlUGVyZm9ybURlZmF1bHRIYW5kbGluZywg
bmlsKTsKK30KKwogLSAodm9pZCl3YWl0Rm9yRGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24K
IHsKICAgICBFWFBFQ1RfRkFMU0Uoc2VsZi5kaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbik7
CkBAIC0xMDMsNiArMTExLDIwIEBACiAgICAgc2VsZi5kaWRGaW5pc2hOYXZpZ2F0aW9uID0gbmls
OwogfQogCistICh2b2lkKXdhaXRGb3JEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uCit7Cisg
ICAgRVhQRUNUX0ZBTFNFKHNlbGYuZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbik7CisKKyAg
ICBfX2Jsb2NrIGJvb2wgZmluaXNoZWQgPSBmYWxzZTsKKyAgICBzZWxmLmRpZEZhaWxQcm92aXNp
b25hbE5hdmlnYXRpb24gPSBeKFdLV2ViVmlldyAqLCBXS05hdmlnYXRpb24gKiwgTlNFcnJvciAq
KSB7CisgICAgICAgIGZpbmlzaGVkID0gdHJ1ZTsKKyAgICB9OworCisgICAgVGVzdFdlYktpdEFQ
STo6VXRpbDo6cnVuKCZmaW5pc2hlZCk7CisKKyAgICBzZWxmLmRpZEZhaWxQcm92aXNpb25hbE5h
dmlnYXRpb24gPSBuaWw7Cit9CisKIEBlbmQKIAogQGltcGxlbWVudGF0aW9uIFdLV2ViVmlldyAo
VGVzdFdlYktpdEFQSUV4dHJhcykK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378293</attachid>
            <date>2019-09-07 09:11:40 -0700</date>
            <delta_ts>2019-09-09 18:08:18 -0700</delta_ts>
            <desc>fix windows build</desc>
            <filename>attachment.cgi.patch</filename>
            <type>text/plain</type>
            <size>38212</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5NTc1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjg1N2YzOGVmOWI2Nzcy
Y2I5YmM2YmRkZGMyYTk0M2Q1ZTRiNTgwYi4uNTg2MTdiYTljMjZhNWMwYTg3ZDVmYzcwOWQ4NWE3
M2YzYzQ4YjljMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDE5LTA5LTA2ICBBbGV4
IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRGlzYWJs
ZSBUTFMgMS4wIGFuZCAxLjEgaW4gV2ViU29ja2V0cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNTczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVGhpcyBleHBhbmRzIG9uIHdoYXQgSSBzdGFydGVkIGlu
IHIyNDkwMTkgd2hlbiBJIGRpc2FibGVkIGxlZ2FjeSBUTFMgZm9yIG91ciB1c2Ugb2YgTlNVUkxT
ZXNzaW9uLgorICAgICAgICBTaW5jZSBvdXIgV2ViU29ja2V0IGltcGxlbWVudGF0aW9uIHVzZXMg
YSBkaWZmZXJlbnQgbmV0d29yayBpbnRlcmZhY2UsIGRpc2FibGUgbGVnYWN5IFRMUyBmb3IgdGhl
bSwgdG9vLgorICAgICAgICBJIHVzZSB0aGUgc2FtZSB0ZW1wb3JhcnkgZGVmYXVsdCB0byByZS1l
bmFibGUgbGVnYWN5IFRMUy4gIEkgYWxzbyBhZGQgYSB1bml0IHRlc3QgZm9yIGJvdGggV2ViU29j
a2V0cyBhbmQgTlNVUkxTZXNzaW9uIHVzZS4KKworICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsv
Y2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZ1
bmN0aW9uPGJvb2wpOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6
c2V0TGVnYWN5VExTRW5hYmxlZENoZWNrKToKKyAgICAgICAgKFdlYkNvcmU6OlNvY2tldFN0cmVh
bUhhbmRsZUltcGw6OmNyZWF0ZVN0cmVhbXMpOgorCiAyMDE5LTA5LTA2ICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgV2hlbiBkaXNhYmxpbmcg
bGVnYWN5IHByaXZhdGUgYnJvd3NpbmcgZm9yIHRlc3RpbmcsIGNoYW5nZSB0aGUgU2Vzc2lvbklE
IGJhY2sgdG8gd2hhdCBpdCB3YXMsIG5vdCB0aGUgZGVmYXVsdFNlc3Npb25JRApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL1BBTC9DaGFu
Z2VMb2cKaW5kZXggY2I5ZjM3ZDcwOWEyNzZkMTc2NTQzNGM5MTJhN2E5ZGViZWFiOTE3NC4uMDY2
ODg0N2U0NjQ3YTJhZmU4OWJhMTY0YzdhOTQ4MjAyNDEyYjZkZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvUEFML0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9QQUwvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTIgQEAKKzIwMTktMDktMDYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBEaXNhYmxlIFRMUyAxLjAgYW5kIDEuMSBpbiBX
ZWJTb2NrZXRzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMDE1NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg6CisKIDIwMTktMDgtMzAgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUgSEFWRV9D
Rk5FVFdPUktfV0lUSF9BVVRPX0FEREVEX0hUVFBfSEVBREVSX1NVUFBSRVNTSU9OX1NVUFBPUlQg
Y29uZGl0aW9uYWwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKaW5kZXggY2IyNDM5OGVlYTZhNGQyZjhhYjU4MzI3ZTNiZGQ5Mjlm
NGMyOTY3Yi4uOWI0ZjYxYWYzNjdkMjczZWFmNmQ4NDBjZDQyZmQ0NWI1Yzk4NTNjOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwyMiBAQAorMjAxOS0wOS0wNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIERpc2FibGUgVExTIDEuMCBhbmQgMS4xIGlu
IFdlYlNvY2tldHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIwMTU3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5j
b2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3ND
cmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3
b3JrUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxh
dGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3NDb2NvYSk6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tOgorICAgICAgICAoLVtXS1Byb2Nlc3NQb29sIF9h
bGxvd0FueVRMU0NlcnRpZmljYXRlRm9yV2ViU29ja2V0VGVzdGluZ10pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdvcmtQcm9jZXNzKToKKwogMjAxOS0w
OS0wNiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAg
ICAgIFdoZW4gZGlzYWJsaW5nIGxlZ2FjeSBwcml2YXRlIGJyb3dzaW5nIGZvciB0ZXN0aW5nLCBj
aGFuZ2UgdGhlIFNlc3Npb25JRCBiYWNrIHRvIHdoYXQgaXQgd2FzLCBub3QgdGhlIGRlZmF1bHRT
ZXNzaW9uSUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NGTmV0
d29ya1NQSS5oIGIvU291cmNlL1dlYkNvcmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgK
aW5kZXggMGJmMGJiOGIzN2JlNmIxN2MwZGE0ZTUzMDM3ZDcyODI1YmY3MDM0ZC4uNzg4MWM3ODk2
Mjg3NzJjNGMzNjQ2ZGE3MTM4ZjU5NmFhZTU4ZmZlNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvUEFML3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgKKysrIGIvU291cmNlL1dlYkNvcmUvUEFM
L3BhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmgKQEAgLTU1LDcgKzU1LDkgQEAgZXh0ZXJuIGNvbnN0
IENGU3RyaW5nUmVmIF9rQ0ZXaW5kb3dzU1NMUGVlckNlcnQ7CiAKIFdURl9FWFRFUk5fQ19FTkQK
IAotI2VuZGlmCisjZWxzZSAvLyBQTEFURk9STShXSU4pCisjaW5jbHVkZSA8Q0ZOZXR3b3JrL0NG
U29ja2V0U3RyZWFtUHJpdi5oPgorI2VuZGlmIC8vIFBMQVRGT1JNKFdJTikKIAogLy8gRklYTUU6
IFJlbW92ZSB0aGUgZGVmaW5lZChfX09CSkNfXyktZ3VhcmQgb25jZSB3ZSBmaXggPHJkYXI6Ly9w
cm9ibGVtLzE5MDMzNjEwPi4KICNpZiBkZWZpbmVkKF9fT0JKQ19fKSAmJiBQTEFURk9STShDT0NP
QSkKQEAgLTI4Miw2ICsyODQsNyBAQCBleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGVVJMUmVx
dWVzdEFsbG93QWxsUE9TVENhY2hpbmc7CiBleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYgX2tDRlVS
TENhY2hlUGFydGl0aW9uS2V5OwogZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIF9rQ0ZVUkxDb25u
ZWN0aW9uUHJvcGVydHlTaG91bGRTbmlmZjsKIGV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBfa0NG
VVJMU3RvcmFnZVNlc3Npb25Jc1ByaXZhdGU7CitleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NG
U3RyZWFtU29ja2V0U2VjdXJpdHlMZXZlbFRMU3YxXzI7CiAKICNpZiBIQVZFKENGTkVUV09SS19X
SVRIX0NPTlRFTlRfRU5DT0RJTkdfU05JRkZJTkdfT1ZFUlJJREUpCiBleHRlcm4gY29uc3QgQ0ZT
dHJpbmdSZWYga0NGVVJMUmVxdWVzdENvbnRlbnREZWNvZGVyU2tpcFVSTENoZWNrOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5k
bGVJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVh
bUhhbmRsZUltcGwuaAppbmRleCA3N2RhZGNjNzc0NDcxOGM1ZmE1Mjk4YjI3NjQxYzk4MzQ0ZDI5
YjZiLi4xNzNlNmFlYzgxYWZlZTg1MTNjMTIyZTA0MmUyZWYyNGJiYWE2ODU2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVhbUhhbmRsZUlt
cGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVh
bUhhbmRsZUltcGwuaApAQCAtNTEsNiArNTEsOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIH5T
b2NrZXRTdHJlYW1IYW5kbGVJbXBsKCk7CiAKKyAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9p
ZCBzZXRMZWdhY3lUTFNFbmFibGVkQ2hlY2soRnVuY3Rpb248Ym9vbCgpPiYmKTsKKwogICAgIFdF
QkNPUkVfRVhQT1JUIHZvaWQgcGxhdGZvcm1TZW5kKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBsZW5ndGgsIEZ1bmN0aW9uPHZvaWQoYm9vbCk+JiYpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHZvaWQgcGxhdGZvcm1TZW5kSGFuZHNoYWtlKGNvbnN0IHVpbnQ4X3QqIGRhdGEsIHNpemVf
dCBsZW5ndGgsIGNvbnN0IE9wdGlvbmFsPENvb2tpZVJlcXVlc3RIZWFkZXJGaWVsZFByb3h5PiYs
IEZ1bmN0aW9uPHZvaWQoYm9vbCwgYm9vbCk+JiYpIGZpbmFsOwogICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgcGxhdGZvcm1DbG9zZSgpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZO
ZXQuY3BwCmluZGV4IDE0OGUyNzJkYTEzNjNhOWRiMmFjODI2NzY4YWViY2I4NTIzYzhmYmUuLjFl
MGViMzI0NjkyMDRlOTY0MWJkZmE1NzEyYmMxN2NiYjVlY2QxYzggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1NvY2tldFN0cmVh
bUhhbmRsZUltcGxDRk5ldC5jcHAKQEAgLTMwNSw2ICszMDUsMTcgQEAgc3RhdGljIHZvaWQgc2V0
Q09OTkVDVFByb3h5Rm9yU3RyZWFtKENGUmVhZFN0cmVhbVJlZiBzdHJlYW0sIENGU3RyaW5nUmVm
IHByb3h5SG8KICAgICBDRlJlYWRTdHJlYW1TZXRQcm9wZXJ0eShzdHJlYW0sIGtDRlN0cmVhbVBy
b3BlcnR5Q09OTkVDVFByb3h5LCBjb25uZWN0RGljdGlvbmFyeS5nZXQoKSk7CiB9CiAKK3N0YXRp
YyBGdW5jdGlvbjxib29sKCk+JiBsZWdhY3lUTFNFbmFibGVkQ2hlY2soKQoreworICAgIHN0YXRp
YyBOZXZlckRlc3Ryb3llZDxGdW5jdGlvbjxib29sKCk+PiBmdW5jdGlvbjsKKyAgICByZXR1cm4g
ZnVuY3Rpb247Cit9CisKK3ZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6c2V0TGVnYWN5VExT
RW5hYmxlZENoZWNrKEZ1bmN0aW9uPGJvb2woKT4mJiBmdW5jdGlvbikKK3sKKyAgICBsZWdhY3lU
TFNFbmFibGVkQ2hlY2soKSA9IFdURk1vdmUoZnVuY3Rpb24pOworfQorCiB2b2lkIFNvY2tldFN0
cmVhbUhhbmRsZUltcGw6OmNyZWF0ZVN0cmVhbXMoKQogewogICAgIGlmIChtX2Nvbm5lY3Rpb25U
eXBlID09IFVua25vd24pCkBAIC0zMjcsNyArMzM4LDYgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5k
bGVJbXBsOjpjcmVhdGVTdHJlYW1zKCkKICAgICAgICAgQ0ZSZWFkU3RyZWFtU2V0UHJvcGVydHko
cmVhZFN0cmVhbSwga0NGU3RyZWFtUHJvcGVydHlTb3VyY2VBcHBsaWNhdGlvbiwgbV9hdWRpdERh
dGEuc291cmNlQXBwbGljYXRpb25BdWRpdERhdGEuZ2V0KCkpOwogICAgICAgICBDRldyaXRlU3Ry
ZWFtU2V0UHJvcGVydHkod3JpdGVTdHJlYW0sIGtDRlN0cmVhbVByb3BlcnR5U291cmNlQXBwbGlj
YXRpb24sIG1fYXVkaXREYXRhLnNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhLmdldCgpKTsKICAg
ICB9Ci0gICAgCiAjZW5kaWYKIAogICAgIG1fcmVhZFN0cmVhbSA9IGFkb3B0Q0YocmVhZFN0cmVh
bSk7CkBAIC0zNTUsOCArMzY1LDIzIEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y3Jl
YXRlU3RyZWFtcygpCiAKICAgICBpZiAoc2hvdWxkVXNlU1NMKCkpIHsKICAgICAgICAgQ0ZCb29s
ZWFuUmVmIHZhbGlkYXRlQ2VydGlmaWNhdGVDaGFpbiA9IERlcHJlY2F0ZWRHbG9iYWxTZXR0aW5n
czo6YWxsb3dzQW55U1NMQ2VydGlmaWNhdGUoKSA/IGtDRkJvb2xlYW5GYWxzZSA6IGtDRkJvb2xl
YW5UcnVlOwotICAgICAgICBjb25zdCB2b2lkKiBrZXlzW10gPSB7IGtDRlN0cmVhbVNTTFBlZXJO
YW1lLCBrQ0ZTdHJlYW1TU0xMZXZlbCwga0NGU3RyZWFtU1NMVmFsaWRhdGVzQ2VydGlmaWNhdGVD
aGFpbiB9OwotICAgICAgICBjb25zdCB2b2lkKiB2YWx1ZXNbXSA9IHsgaG9zdC5nZXQoKSwga0NG
U3RyZWFtU29ja2V0U2VjdXJpdHlMZXZlbE5lZ290aWF0ZWRTU0wsIHZhbGlkYXRlQ2VydGlmaWNh
dGVDaGFpbiB9OworICAgICAgICBib29sIGVuYWJsZUxlZ2FjeVRMUyA9IGZhbHNlOworICAgICAg
ICBpZiAoYXV0byYgY2hlY2sgPSBsZWdhY3lUTFNFbmFibGVkQ2hlY2soKSkKKyAgICAgICAgICAg
IGVuYWJsZUxlZ2FjeVRMUyA9IGNoZWNrKCk7CisgICAgICAgIGNvbnN0IHZvaWQqIGtleXNbXSA9
IHsKKyAgICAgICAgICAgIGtDRlN0cmVhbVNTTFBlZXJOYW1lLAorICAgICAgICAgICAga0NGU3Ry
ZWFtU1NMTGV2ZWwsCisgICAgICAgICAgICBrQ0ZTdHJlYW1TU0xWYWxpZGF0ZXNDZXJ0aWZpY2F0
ZUNoYWluCisgICAgICAgIH07CisgICAgICAgIGNvbnN0IHZvaWQqIHZhbHVlc1tdID0geworICAg
ICAgICAgICAgaG9zdC5nZXQoKSwKKyNpZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgICAgIGVu
YWJsZUxlZ2FjeVRMUyA/IGtDRlN0cmVhbVNvY2tldFNlY3VyaXR5TGV2ZWxOZWdvdGlhdGVkU1NM
IDoga0NGU3RyZWFtU29ja2V0U2VjdXJpdHlMZXZlbFRMU3YxXzIsCisjZWxzZQorICAgICAgICAg
ICAga0NGU3RyZWFtU29ja2V0U2VjdXJpdHlMZXZlbE5lZ290aWF0ZWRTU0wsCisjZW5kaWYKKyAg
ICAgICAgICAgIHZhbGlkYXRlQ2VydGlmaWNhdGVDaGFpbgorICAgICAgICB9OwogICAgICAgICBS
ZXRhaW5QdHI8Q0ZEaWN0aW9uYXJ5UmVmPiBzZXR0aW5ncyA9IGFkb3B0Q0YoQ0ZEaWN0aW9uYXJ5
Q3JlYXRlKDAsIGtleXMsIHZhbHVlcywgV1RGX0FSUkFZX0xFTkdUSChrZXlzKSwgJmtDRlR5cGVE
aWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLCAma0NGVHlwZURpY3Rpb25hcnlWYWx1ZUNhbGxCYWNrcykp
OwogICAgICAgICBDRlJlYWRTdHJlYW1TZXRQcm9wZXJ0eShtX3JlYWRTdHJlYW0uZ2V0KCksIGtD
RlN0cmVhbVByb3BlcnR5U1NMU2V0dGluZ3MsIHNldHRpbmdzLmdldCgpKTsKICAgICAgICAgQ0ZX
cml0ZVN0cmVhbVNldFByb3BlcnR5KG1fd3JpdGVTdHJlYW0uZ2V0KCksIGtDRlN0cmVhbVByb3Bl
cnR5U1NMU2V0dGluZ3MsIHNldHRpbmdzLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwIGIv
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1l
dGVycy5jcHAKaW5kZXggZDI4NTE0N2FmNjMwMGFmZTk3YzNlZGNlMzkxZDMzYzNjMTQxMjc0Yy4u
ZmIzZTIxODU5N2JiZWM1OWM2NDQ5NDlhZjExZDYxN2ZlOWY1NmIxZSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVy
cy5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0Ny
ZWF0aW9uUGFyYW1ldGVycy5jcHAKQEAgLTkzLDYgKzkzLDcgQEAgdm9pZCBOZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlKElQQzo6RW5jb2RlciYgZW5jb2RlcikgY29uc3QK
ICAgICBlbmNvZGVyIDw8IGVuYWJsZUFkQ2xpY2tBdHRyaWJ1dGlvbkRlYnVnTW9kZTsKICAgICBl
bmNvZGVyIDw8IGhzdHNTdG9yYWdlRGlyZWN0b3J5OwogICAgIGVuY29kZXIgPDwgaHN0c1N0b3Jh
Z2VEaXJlY3RvcnlFeHRlbnNpb25IYW5kbGU7CisgICAgZW5jb2RlciA8PCBlbmFibGVMZWdhY3lU
TFM7CiB9CiAKIGJvb2wgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShJ
UEM6OkRlY29kZXImIGRlY29kZXIsIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJiBy
ZXN1bHQpCkBAIC0yMjgsNiArMjI5LDkgQEAgYm9vbCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFy
YW1ldGVyczo6ZGVjb2RlKElQQzo6RGVjb2RlciYgZGVjb2RlciwgTmV0d29ya1Byb2MKICAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5oc3RzU3RvcmFnZURpcmVjdG9yeUV4dGVuc2lvbkhh
bmRsZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHJlc3VsdC5lbmFibGVMZWdhY3lUTFMpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJv
Y2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCmluZGV4IDgx
YjE1NGVmZDYwYzQzOGRjYmYyMThkMzg4ZTA1YTRlMzRlNGE3ODIuLjhlYzkzNTgzYjhiZTU2NTAz
YjVhYWI5MjJjOTlhZGY5YTY2MTE1YTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmgK
QEAgLTExMSw2ICsxMTEsNyBAQCBzdHJ1Y3QgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRl
cnMgewogICAgIGJvb2wgZW5hYmxlQWRDbGlja0F0dHJpYnV0aW9uRGVidWdNb2RlIHsgZmFsc2Ug
fTsKICAgICBTdHJpbmcgaHN0c1N0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgU2FuZGJveEV4dGVuc2lv
bjo6SGFuZGxlIGhzdHNTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgIGJvb2wg
ZW5hYmxlTGVnYWN5VExTIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJv
Y2Vzc0NvY29hLm1tIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3Jr
UHJvY2Vzc0NvY29hLm1tCmluZGV4IGNjZTI2YWNmYjA0Y2Y3MDc0ZTc2M2Y1YmJjOGU0YTVlOThh
MTVjOWEuLjUxYzc3M2U1NzhkN2EwY2IyMTBjMThkZjJkZDQ3MWYyZDVkOTk2ZmYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29ya1Byb2Nlc3NDb2Nv
YS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NvY29hL05ldHdvcmtQcm9j
ZXNzQ29jb2EubW0KQEAgLTM5LDYgKzM5LDcgQEAKICNpbXBvcnQgPFdlYkNvcmUvUnVudGltZUFw
cGxpY2F0aW9uQ2hlY2tzLmg+CiAjaW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAj
aW1wb3J0IDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luRGF0YS5oPgorI2ltcG9ydCA8V2ViQ29yZS9T
b2NrZXRTdHJlYW1IYW5kbGVJbXBsLmg+CiAjaW1wb3J0IDxwYWwvc3BpL2NmL0NGTmV0d29ya1NQ
SS5oPgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvQ2FsbGJhY2tBZ2dy
ZWdhdG9yLmg+CkBAIC02OSw2ICs3MCwxMCBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplTmV0d29y
a1NldHRpbmdzKCkKIAogdm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0
d29ya1Byb2Nlc3NDb2NvYShjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYg
cGFyYW1ldGVycykKIHsKKyAgICBXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpzZXRM
ZWdhY3lUTFNFbmFibGVkQ2hlY2soW2VuYWJsZWQgPSBwYXJhbWV0ZXJzLmVuYWJsZUxlZ2FjeVRM
U10geworICAgICAgICByZXR1cm4gZW5hYmxlZDsKKyAgICB9KTsKKwogICAgIFdlYkNvcmU6OnNl
dEFwcGxpY2F0aW9uQnVuZGxlSWRlbnRpZmllcihwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZUlk
ZW50aWZpZXIpOwogICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0aW9uU0RLVmVyc2lvbihwYXJhbWV0
ZXJzLnVpUHJvY2Vzc1NES1ZlcnNpb24pOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbSBiL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tCmluZGV4IGViYWM1NjhlM2RkYjY4NzBmODVi
MDE1MDhlYzIwZmFhYjdmMjA0ZDYuLmIxZTcxZDQyNGI2OTQ1MzExZWNiZTM2MWQ2MzJhYWM4OTJh
OTAxNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1By
b2Nlc3NQb29sLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1By
b2Nlc3NQb29sLm1tCkBAIC02NDgsNCArNjQ4LDkgQEAgc3RhdGljIE5TRGljdGlvbmFyeSAqcG9s
aWNpZXNIYXNoTWFwVG9EaWN0aW9uYXJ5KGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBIYXNoTWFwPFMK
ICAgICBfcHJvY2Vzc1Bvb2wtPmNsZWFyUGVybWFuZW50Q3JlZGVudGlhbHNGb3JQcm90ZWN0aW9u
U3BhY2UoV2ViQ29yZTo6UHJvdGVjdGlvblNwYWNlKHByb3RlY3Rpb25TcGFjZSkpOwogfQogCist
ICh2b2lkKV9hbGxvd0FueVRMU0NlcnRpZmljYXRlRm9yV2ViU29ja2V0VGVzdGluZworeworICAg
IF9wcm9jZXNzUG9vbC0+c2V0QWxsb3dzQW55U1NMQ2VydGlmaWNhdGVGb3JXZWJTb2NrZXQodHJ1
ZSk7Cit9CisKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKaW5kZXggZWZmZjQwNTBhOThlMDJiMjE5MGRj
YzAzNmNmNjg3MTg1OGVkZmQwYy4uNjY2NjdiYTllMDMzZDIwNzZmYWRiMDFiMTU2ZmQ4MTNlZWEy
OTZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJv
Y2Vzc1Bvb2xQcml2YXRlLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmgKQEAgLTEyMyw2ICsxMjMsNyBAQAogLSAodm9pZClfZ2V0
QWN0aXZlUGFnZXNPcmlnaW5zSW5XZWJQcm9jZXNzRm9yVGVzdGluZzoocGlkX3QpcGlkIGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TQXJyYXk8TlNTdHJpbmcgKj4gKikpY29tcGxldGlvbkhh
bmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNC40KSwgaW9zKDEyLjIpKTsKIC0gKEJP
T0wpX25ldHdvcmtQcm9jZXNzSGFzRW50aXRsZW1lbnRGb3JUZXN0aW5nOihOU1N0cmluZyAqKWVu
dGl0bGVtZW50IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQuNCksIGlvcygxMi4yKSk7CiAt
ICh2b2lkKV9jbGVhclBlcm1hbmVudENyZWRlbnRpYWxzRm9yUHJvdGVjdGlvblNwYWNlOihOU1VS
TFByb3RlY3Rpb25TcGFjZSAqKXByb3RlY3Rpb25TcGFjZSBXS19BUElfQVZBSUxBQkxFKG1hY29z
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfYWxsb3dBbnlUTFNDZXJ0
aWZpY2F0ZUZvcldlYlNvY2tldFRlc3RpbmcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogQHByb3BlcnR5IChub25hdG9taWMsIGdldHRlcj1f
aXNDb29raWVTdG9yYWdlUGFydGl0aW9uaW5nRW5hYmxlZCwgc2V0dGVyPV9zZXRDb29raWVTdG9y
YWdlUGFydGl0aW9uaW5nRW5hYmxlZDopIEJPT0wgX2Nvb2tpZVN0b3JhZ2VQYXJ0aXRpb25pbmdF
bmFibGVkIFdLX0FQSV9ERVBSRUNBVEVEKCJQYXJ0aXRpb25lZCBjb29raWVzIGFyZSBubyBsb25n
ZXIgc3VwcG9ydGVkIiwgbWFjb3MoMTAuMTIuMywgMTAuMTQuNCksIGlvcygxMC4zLCAxMi4yKSk7
CiBAcHJvcGVydHkgKG5vbmF0b21pYywgZ2V0dGVyPV9pc1N0b3JhZ2VBY2Nlc3NBUElFbmFibGVk
LCBzZXR0ZXI9X3NldFN0b3JhZ2VBY2Nlc3NBUElFbmFibGVkOikgQk9PTCBfc3RvcmFnZUFjY2Vz
c0FQSUVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9zKDExLjMpKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29s
Q29jb2EubW0gYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9XZWJQcm9jZXNzUG9vbENv
Y29hLm1tCmluZGV4IDlmZDZhNjExYjU1Y2FkYjY5ODAxNjJkZWRmMWUzNWFmNzlhYWFmMjUuLjBm
YWIwODYyZTNmMmU0ZTE5OGVkYjQ1MzliNTI1MjE5NGRiNDIzM2YgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2EubW0KKysrIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQpAQCAtMjgx
LDcgKzI4MSw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZU5ldHdv
cmtQcm9jZXNzKE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhCiAgICAgICAgIH0KICAgICB9CiAK
LSAgICBwYXJhbWV0ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9u
UGFyYW1ldGVycy5lbmFibGVMZWdhY3lUTFMgPSBbZGVmYXVsdHMgYm9vbEZvcktleTpAIldlYktp
dEVuYWJsZUxlZ2FjeVRMUyJdOworICAgIHBhcmFtZXRlcnMuZW5hYmxlTGVnYWN5VExTID0gW2Rl
ZmF1bHRzIGJvb2xGb3JLZXk6QCJXZWJLaXRFbmFibGVMZWdhY3lUTFMiXTsKKyAgICBwYXJhbWV0
ZXJzLmRlZmF1bHREYXRhU3RvcmVQYXJhbWV0ZXJzLm5ldHdvcmtTZXNzaW9uUGFyYW1ldGVycy5l
bmFibGVMZWdhY3lUTFMgPSBwYXJhbWV0ZXJzLmVuYWJsZUxlZ2FjeVRMUzsKIAogICAgIHBhcmFt
ZXRlcnMubmV0d29ya0FUU0NvbnRleHQgPSBhZG9wdENGKF9DRk5ldHdvcmtDb3B5QVRTQ29udGV4
dCgpKTsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmlu
ZGV4IDQwNmU4Mzg2NjY4ZWVlNjlkODUwN2YxMzJiNTVhMDQzZWEzZmM1OTAuLjE0ZWRkZTNiMjA5
YTg2M2UyZjg1YTE5ZjBlYzMzYzQyYmEwNzIwYTQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxv
ZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAxOS0wOS0wNiAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIERpc2Fi
bGUgVExTIDEuMCBhbmQgMS4xIGluIFdlYlNvY2tldHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTU3MworCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9Tb3VyY2VzQ29jb2EudHh0
OgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVENQU2VydmVyLmNwcDoKKyAgICAgICAgKHNrX0NS
WVBUT19CVUZGRVJfbnVtKToKKyAgICAgICAgKHNrX0NSWVBUT19CVUZGRVJfdmFsdWUpOgorICAg
ICAgICAoVGVzdFdlYktpdEFQSTo6ZGVsZXRlcjxDUllQVE9fQlVGRkVSPjo6b3BlcmF0b3IoKSk6
CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpUQ1BTZXJ2ZXI6OlRDUFNlcnZlcik6CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpUQ1BTZXJ2ZXI6Omxpc3RlbkZvckNvbm5lY3Rpb25zKToKKyAgICAg
ICAgKFRlc3RXZWJLaXRBUEk6OmRlbGV0ZXI8WDUwOT46Om9wZXJhdG9yKCkpOiBEZWxldGVkLgor
ICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGVsZXRlcjx1aW50OF90OjpvcGVyYXRvcigpKTogRGVs
ZXRlZC4KKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1RDUFNlcnZlci5oOgorICAgICAgICAqIFRl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVExTRGVwcmVjYXRpb24ubW06
IEFkZGVkLgorICAgICAgICAoLVtXZWJTb2NrZXREZWxlZ2F0ZSB3YWl0Rm9yTWVzc2FnZV0pOgor
ICAgICAgICAoLVtXZWJTb2NrZXREZWxlZ2F0ZSB3ZWJWaWV3OnJ1bkphdmFTY3JpcHRBbGVydFBh
bmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFtZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAg
ICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1QpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29j
b2EvVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5oOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvY29j
b2EvVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5tbToKKyAgICAgICAgKC1bVGVzdE5hdmlnYXRpb25E
ZWxlZ2F0ZSB3ZWJWaWV3OmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZTpjb21wbGV0
aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bVGVzdE5hdmlnYXRpb25EZWxlZ2F0ZSB3YWl0Rm9y
RGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbl0pOgorCiAyMDE5LTA5LTA2ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CiAKICAgICAgICAgV2hlbiBkaXNhYmxp
bmcgbGVnYWN5IHByaXZhdGUgYnJvd3NpbmcgZm9yIHRlc3RpbmcsIGNoYW5nZSB0aGUgU2Vzc2lv
bklEIGJhY2sgdG8gd2hhdCBpdCB3YXMsIG5vdCB0aGUgZGVmYXVsdFNlc3Npb25JRApkaWZmIC0t
Z2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9Tb3VyY2VzQ29jb2EudHh0IGIvVG9vbHMvVGVzdFdl
YktpdEFQSS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IDA3NzA1MGQ4ZWNlNGU4ZTA4NDEzNTM3Y2E5
NWM0YWE0N2Y2NDM4YTYuLjdkYjRjMzk2ODgzZjk2ODI5NzQwMWM5Zjk4NjE1OWE3NWEyMjliZWQg
MTAwNjQ0Ci0tLSBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvU291cmNlc0NvY29hLnR4dAorKysgYi9U
b29scy9UZXN0V2ViS2l0QVBJL1NvdXJjZXNDb2NvYS50eHQKQEAgLTI4LDMgKzI4LDUgQEAgY29j
b2EvUGxhdGZvcm1VdGlsaXRpZXNDb2NvYS5tbQogY29jb2EvVGVzdE5hdmlnYXRpb25EZWxlZ2F0
ZS5tbQogY29jb2EvVGVzdFByb3RvY29sLm1tCiBjb2NvYS9UZXN0V0tXZWJWaWV3Lm1tCisKK1Rl
c3RzL1dlYktpdENvY29hL1RMU0RlcHJlY2F0aW9uLm1tCmRpZmYgLS1naXQgYS9Ub29scy9UZXN0
V2ViS2l0QVBJL1RDUFNlcnZlci5jcHAgYi9Ub29scy9UZXN0V2ViS2l0QVBJL1RDUFNlcnZlci5j
cHAKaW5kZXggMTIzODI1N2UwYjBkYTAyN2Q5NTYzODJmNWJkNTc0YmYwYmVhYzZjMy4uMTZmOTI4
MjMyMzFlZTNmMzJmZjU0YWEwOTIxMzVkYTQxZTA4NmNkYyAxMDA2NDQKLS0tIGEvVG9vbHMvVGVz
dFdlYktpdEFQSS9UQ1BTZXJ2ZXIuY3BwCisrKyBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVENQU2Vy
dmVyLmNwcApAQCAtMzMsNDYgKzMzLDU5IEBACiAjaW5jbHVkZSA8d3RmL3RleHQvQmFzZTY0Lmg+
CiAKICNpZiBIQVZFKFNTTCkKKworI2RlZmluZSBTVEFDS19PRih0eXBlKSBzdHJ1Y3Qgc3RhY2tf
c3RfIyN0eXBlCisKIGV4dGVybiAiQyIgewogCitlbnVtIHNzbF92ZXJpZnlfcmVzdWx0X3Qgewor
ICAgIHNzbF92ZXJpZnlfb2ssCisgICAgc3NsX3ZlcmlmeV9pbnZhbGlkLAorICAgIHNzbF92ZXJp
ZnlfcmV0cnksCit9OworCiBzdHJ1Y3QgQklPOwotc3RydWN0IFg1MDk7CitzdHJ1Y3QgQ1JZUFRP
X0JVRkZFUjsKIHN0cnVjdCBTU0xfQ1RYOwogc3RydWN0IEVWUF9QS0VZOwogc3RydWN0IFNTTF9N
RVRIT0Q7Ci1zdHJ1Y3QgWDUwOV9TVE9SRV9DVFggewotICAgIHZvaWQqIHVudXNlZDsKLSAgICBY
NTA5KiBjZXJ0OwotfTsKK3N0cnVjdCBTU0xfUFJJVkFURV9LRVlfTUVUSE9EOworc3RydWN0IF9T
VEFDSzsKK3N0cnVjdCBDUllQVE9fQlVGRkVSX1BPT0w7CiBzdHJ1Y3QgcGVtX3Bhc3N3b3JkX2Ni
OwogaW50IEJJT19mcmVlKEJJTyopOwogaW50IFNTTF9mcmVlKFNTTCopOwotaW50IFg1MDlfZnJl
ZShYNTA5Kik7CiBpbnQgU1NMX0NUWF9mcmVlKFNTTF9DVFgqKTsKIGludCBFVlBfUEtFWV9mcmVl
KEVWUF9QS0VZKik7CiBpbnQgU1NMX2xpYnJhcnlfaW5pdCgpOwotY29uc3QgU1NMX01FVEhPRCog
U1NMdjIzX3NlcnZlcl9tZXRob2QoKTsKK2NvbnN0IFNTTF9NRVRIT0QqIFRMU193aXRoX2J1ZmZl
cnNfbWV0aG9kKCk7CiBCSU8qIEJJT19uZXdfbWVtX2J1Zihjb25zdCB2b2lkKiwgaW50KTsKLVg1
MDkqIFBFTV9yZWFkX2Jpb19YNTA5KEJJTyosIFg1MDkqKiwgcGVtX3Bhc3N3b3JkX2NiKiwgdm9p
ZCopOwogRVZQX1BLRVkqIFBFTV9yZWFkX2Jpb19Qcml2YXRlS2V5KEJJTyosIEVWUF9QS0VZKios
IHBlbV9wYXNzd29yZF9jYiosIHZvaWQqKTsKIFNTTF9DVFgqIFNTTF9DVFhfbmV3KGNvbnN0IFNT
TF9NRVRIT0QqKTsKLWNvbnN0IFNTTF9NRVRIT0QqIFNTTHYyM19zZXJ2ZXJfbWV0aG9kKCk7Ci1p
bnQgU1NMX0NUWF91c2VfY2VydGlmaWNhdGUoU1NMX0NUWCosIFg1MDkqKTsKLWludCBTU0xfQ1RY
X3VzZV9Qcml2YXRlS2V5KFNTTF9DVFgqLCBFVlBfUEtFWSopOwogU1NMKiBTU0xfbmV3KFNTTF9D
VFgqKTsKIGludCBTU0xfYWNjZXB0KFNTTCopOwogaW50IFNTTF9zZXRfZmQoU1NMKiwgaW50KTsK
LXZvaWQgU1NMX0NUWF9zZXRfdmVyaWZ5KFNTTF9DVFgqLCBpbnQsIGludCAoKikoaW50LCBYNTA5
X1NUT1JFX0NUWCopKTsKLXZvaWQgU1NMX0NUWF9zZXRfY2VydF92ZXJpZnlfY2FsbGJhY2soU1NM
X0NUWCosIGludCAoKikoWDUwOV9TVE9SRV9DVFgqLCB2b2lkKiksIHZvaWQqKTsKIGludCBTU0xf
Z2V0X2Vycm9yKGNvbnN0IFNTTCosIGludCk7Cit2b2lkIFNTTF9DVFhfc2V0X2N1c3RvbV92ZXJp
ZnkoU1NMX0NUWCosIGludCBtb2RlLCBlbnVtIHNzbF92ZXJpZnlfcmVzdWx0X3QgKCpjYWxsYmFj
aykoU1NMICpzc2wsIHVpbnQ4X3QgKm91dF9hbGVydCkpOwogaW50IFNTTF9yZWFkKFNTTCosIHZv
aWQqLCBpbnQpOwogaW50IFNTTF93cml0ZShTU0wqLCBjb25zdCB2b2lkKiwgaW50KTsKLWludCBp
MmRfWDUwOShYNTA5KiwgdW5zaWduZWQgY2hhcioqKTsKK2NvbnN0IHVpbnQ4X3QqIENSWVBUT19C
VUZGRVJfZGF0YShjb25zdCBDUllQVE9fQlVGRkVSKik7CitzaXplX3QgQ1JZUFRPX0JVRkZFUl9s
ZW4oY29uc3QgQ1JZUFRPX0JVRkZFUiopOwogdm9pZCBPUEVOU1NMX2ZyZWUodm9pZCopOworaW50
IFNTTF9DVFhfc2V0X2NoYWluX2FuZF9rZXkoU1NMX0NUWCosIENSWVBUT19CVUZGRVIgKmNvbnN0
ICpjZXJ0cywgc2l6ZV90IG51bV9jZXJ0cywgRVZQX1BLRVkqLCBjb25zdCBTU0xfUFJJVkFURV9L
RVlfTUVUSE9EKik7CitDUllQVE9fQlVGRkVSKiBDUllQVE9fQlVGRkVSX25ldyhjb25zdCB1aW50
OF90Kiwgc2l6ZV90LCBDUllQVE9fQlVGRkVSX1BPT0wqKTsKK3ZvaWQgQ1JZUFRPX0JVRkZFUl9m
cmVlKENSWVBUT19CVUZGRVIqKTsKK3NpemVfdCBza19udW0oY29uc3QgX1NUQUNLKik7Cit2b2lk
KiBza192YWx1ZShjb25zdCBfU1RBQ0sqLCBzaXplX3QpOworY29uc3QgU1RBQ0tfT0YoQ1JZUFRP
X0JVRkZFUikgKlNTTF9nZXQwX3BlZXJfY2VydGlmaWNhdGVzKGNvbnN0IFNTTCopOwordm9pZCBT
U0xfQ1RYX3NldF9tYXhfcHJvdG9fdmVyc2lvbihTU0xfQ1RYKiwgdWludDE2X3QpOwogI2RlZmlu
ZSBTU0xfVkVSSUZZX1BFRVIgMHgwMQogI2RlZmluZSBTU0xfVkVSSUZZX0ZBSUxfSUZfTk9fUEVF
Ul9DRVJUIDB4MDIKIAogfSAvLyBleHRlcm4gIkMiCisKK2lubGluZSBzaXplX3Qgc2tfQ1JZUFRP
X0JVRkZFUl9udW0oY29uc3QgU1RBQ0tfT0YoQ1JZUFRPX0JVRkZFUikgKnNrKSB7IHJldHVybiBz
a19udW0oKGNvbnN0IF9TVEFDSyAqKXNrKTsgfQoraW5saW5lIENSWVBUT19CVUZGRVIqIHNrX0NS
WVBUT19CVUZGRVJfdmFsdWUoY29uc3QgU1RBQ0tfT0YoQ1JZUFRPX0JVRkZFUikgKnNrLCBzaXpl
X3QgaSkgeyByZXR1cm4gKENSWVBUT19CVUZGRVIgKilza192YWx1ZSgoY29uc3QgX1NUQUNLICop
c2ssIGkpOyB9CiAjZW5kaWYgLy8gSEFWRShTU0wpCiAKIG5hbWVzcGFjZSBUZXN0V2ViS2l0QVBJ
IHsKQEAgLTkxLDEyICsxMDQsNiBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBkZWxldGVyPFNTTD4gewog
ICAgICAgICBTU0xfZnJlZShzc2wpOwogICAgIH0KIH07Ci10ZW1wbGF0ZTw+IHN0cnVjdCBkZWxl
dGVyPFg1MDk+IHsKLSAgICB2b2lkIG9wZXJhdG9yKCkoWDUwOSogeDUwOSkKLSAgICB7Ci0gICAg
ICAgIFg1MDlfZnJlZSh4NTA5KTsKLSAgICB9Ci19OwogdGVtcGxhdGU8PiBzdHJ1Y3QgZGVsZXRl
cjxTU0xfQ1RYPiB7CiAgICAgdm9pZCBvcGVyYXRvcigpKFNTTF9DVFgqIGN0eCkKICAgICB7CkBA
IC0xMDksMTIgKzExNiwxNSBAQCB0ZW1wbGF0ZTw+IHN0cnVjdCBkZWxldGVyPEVWUF9QS0VZPiB7
CiAgICAgICAgIEVWUF9QS0VZX2ZyZWUoa2V5KTsKICAgICB9CiB9OwotdGVtcGxhdGU8PiBzdHJ1
Y3QgZGVsZXRlcjx1aW50OF90W10+IHsKLSAgICB2b2lkIG9wZXJhdG9yKCkodWludDhfdCogYnVm
ZmVyKQordGVtcGxhdGU8PiBzdHJ1Y3QgZGVsZXRlcjxDUllQVE9fQlVGRkVSPiB7CisgICAgdm9p
ZCBvcGVyYXRvcigpKENSWVBUT19CVUZGRVIqIGJ1ZmZlcikKICAgICB7Ci0gICAgICAgIE9QRU5T
U0xfZnJlZShidWZmZXIpOworICAgICAgICBDUllQVE9fQlVGRkVSX2ZyZWUoYnVmZmVyKTsKICAg
ICB9CiB9OworbmFtZXNwYWNlIHNzbCB7Cit0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4gdXNpbmcgdW5p
cXVlX3B0ciA9IHN0ZDo6dW5pcXVlX3B0cjxULCBkZWxldGVyPFQ+PjsKK30KICNlbmRpZiAvLyBI
QVZFKFNTTCkKIAogVENQU2VydmVyOjpUQ1BTZXJ2ZXIoRnVuY3Rpb248dm9pZChTb2NrZXQpPiYm
IGNvbm5lY3Rpb25IYW5kbGVyLCBzaXplX3QgY29ubmVjdGlvbnMpCkBAIC0xMjQsNDkgKzEzNCwz
MiBAQCBUQ1BTZXJ2ZXI6OlRDUFNlcnZlcihGdW5jdGlvbjx2b2lkKFNvY2tldCk+JiYgY29ubmVj
dGlvbkhhbmRsZXIsIHNpemVfdCBjb25uZWN0aQogfQogCiAjaWYgSEFWRShTU0wpCi1UQ1BTZXJ2
ZXI6OlRDUFNlcnZlcihQcm90b2NvbCBwcm90b2NvbCwgRnVuY3Rpb248dm9pZChTU0wqKT4mJiBz
ZWN1cmVDb25uZWN0aW9uSGFuZGxlcikKK1RDUFNlcnZlcjo6VENQU2VydmVyKFByb3RvY29sIHBy
b3RvY29sLCBGdW5jdGlvbjx2b2lkKFNTTCopPiYmIHNlY3VyZUNvbm5lY3Rpb25IYW5kbGVyLCBP
cHRpb25hbDx1aW50MTZfdD4gbWF4VExTVmVyc2lvbikKIHsKLSAgICBhdXRvIHN0YXJ0U2VjdXJl
Q29ubmVjdGlvbiA9IFtzZWN1cmVDb25uZWN0aW9uSGFuZGxlciA9IFdURk1vdmUoc2VjdXJlQ29u
bmVjdGlvbkhhbmRsZXIpLCBwcm90b2NvbF0gKFNvY2tldCBzb2NrZXQpIHsKKyAgICBhdXRvIHN0
YXJ0U2VjdXJlQ29ubmVjdGlvbiA9IFtzZWN1cmVDb25uZWN0aW9uSGFuZGxlciA9IFdURk1vdmUo
c2VjdXJlQ29ubmVjdGlvbkhhbmRsZXIpLCBwcm90b2NvbCwgbWF4VExTVmVyc2lvbl0gKFNvY2tl
dCBzb2NrZXQpIHsKICAgICAgICAgU1NMX2xpYnJhcnlfaW5pdCgpOwogCi0gICAgICAgIHN0ZDo6
dW5pcXVlX3B0cjxTU0xfQ1RYLCBkZWxldGVyPFNTTF9DVFg+PiBjdHgoU1NMX0NUWF9uZXcoU1NM
djIzX3NlcnZlcl9tZXRob2QoKSkpOworICAgICAgICBzc2w6OnVuaXF1ZV9wdHI8U1NMX0NUWD4g
Y3R4KFNTTF9DVFhfbmV3KFRMU193aXRoX2J1ZmZlcnNfbWV0aG9kKCkpKTsKIAogICAgICAgICAv
LyBUaGlzIGlzIGEgdGVzdCBjZXJ0aWZpY2F0ZSBmcm9tIEJvcmluZ1NTTC4KLSAgICAgICAgY2hh
ciBrQ2VydFBFTVtdID0KLSAgICAgICAgIi0tLS0tQkVHSU4gQ0VSVElGSUNBVEUtLS0tLVxuIgot
ICAgICAgICAiTUlJQ1dEQ0NBY0dnQXdJQkFnSUpBUHV3VEM2ckVKc01NQTBHQ1NxR1NJYjNEUUVC
QlFVQU1FVXhDekFKQmdOVlxuIgotICAgICAgICAiQkFZVEFrRlZNUk13RVFZRFZRUUlEQXBUYjIx
bExWTjBZWFJsTVNFd0h3WURWUVFLREJoSmJuUmxjbTVsZENCWFxuIgotICAgICAgICAiYVdSbmFY
UnpJRkIwZVNCTWRHUXdIaGNOTVRRd05ESXpNakExTURRd1doY05NVGN3TkRJeU1qQTFNRFF3V2pC
RlxuIgotICAgICAgICAiTVFzd0NRWURWUVFHRXdKQlZURVRNQkVHQTFVRUNBd0tVMjl0WlMxVGRH
RjBaVEVoTUI4R0ExVUVDZ3dZU1c1MFxuIgotICAgICAgICAiWlhKdVpYUWdWMmxrWjJsMGN5QlFk
SGtnVEhSa01JR2ZNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0R05BRENCaVFLQlxuIgotICAgICAgICAi
Z1FEWUs4aW1NdVJpLzAzejBLMVppMFdudmZGSHZ3bFlleUs5TmE2WEpZYVVvSURBdEI5MmtXZEdN
ZEFRaExjaVxuIgotICAgICAgICAiSG5BamtYTEk2VzE1T29WM2dBL0VsUloxeFVweFRNaGpQNlB5
WTV3cVQ1cjZ5OEZ4YmlpRktLQW5IbVVjcmdmVlxuIgotICAgICAgICAiVzI4dFErMHJrTEdNcnlS
dHJ1a1hPZ1hCdjdnY3JtVTdHMWpDMmE3V3FtZUk4UUlEQVFBQm8xQXdUakFkQmdOVlxuIgotICAg
ICAgICAiSFE0RUZnUVVpM1hWck1zSXZnNGZaYmY2VnI1c3AzWGFoYTh3SHdZRFZSMGpCQmd3Rm9B
VWkzWFZyTXNJdmc0ZlxuIgotICAgICAgICAiWmJmNlZyNXNwM1hhaGE4d0RBWURWUjBUQkFVd0F3
RUIvekFOQmdrcWhraUc5dzBCQVFVRkFBT0JnUUE3NkhodFxuIgotICAgICAgICAibGRZOWF2Y1RH
U3did29pdUlxdjBqVEwxZkhGbnp5M1JITUxEaCtMcHZvbGM1RFNyU0pIQ1A1V3VLMGVlSlhoclxu
IgotICAgICAgICAiVDVvUXBITDl6L2NDRExBS0NLUmE0dVYwZmhFZE9XQnF5UjlwOHk1akp0eWU3
MnQ2Q3VGVVY1aXFjcEY0Qkg0ZlxuIgotICAgICAgICAiajJWTkh3c1NySndrRDRRVUdsVXRIN3Z3
blFteUNGeFpNbVdBSmc9PVxuIgotICAgICAgICAiLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLVxu
IjsKLQotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8QklPLCBkZWxldGVyPEJJTz4+IGNlcnRCSU8o
QklPX25ld19tZW1fYnVmKGtDZXJ0UEVNLCBzdHJsZW4oa0NlcnRQRU0pKSk7Ci0gICAgICAgIHN0
ZDo6dW5pcXVlX3B0cjxYNTA5LCBkZWxldGVyPFg1MDk+PiBjZXJ0WDUwOShQRU1fcmVhZF9iaW9f
WDUwOShjZXJ0QklPLmdldCgpLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyKSk7Ci0gICAgICAg
IEFTU0VSVChjZXJ0WDUwOSk7Ci0gICAgICAgIFNTTF9DVFhfdXNlX2NlcnRpZmljYXRlKGN0eC5n
ZXQoKSwgY2VydFg1MDkuZ2V0KCkpOwotCi0gICAgICAgIGlmIChwcm90b2NvbCA9PSBQcm90b2Nv
bDo6SFRUUFNXaXRoQ2xpZW50Q2VydGlmaWNhdGVSZXF1ZXN0KSB7Ci0gICAgICAgICAgICBTU0xf
Q1RYX3NldF92ZXJpZnkoY3R4LmdldCgpLCBTU0xfVkVSSUZZX1BFRVIgfCBTU0xfVkVSSUZZX0ZB
SUxfSUZfTk9fUEVFUl9DRVJULCBudWxscHRyKTsKLSAgICAgICAgICAgIFNTTF9DVFhfc2V0X2Nl
cnRfdmVyaWZ5X2NhbGxiYWNrKGN0eC5nZXQoKSwgW10gKFg1MDlfU1RPUkVfQ1RYKiBzdG9yZV9j
dHgsIHZvaWQqKSAtPiBpbnQgewotICAgICAgICAgICAgICAgIHVpbnQ4X3QqIGJ1ZmZlclBvaW50
ZXIgPSBudWxscHRyOwotICAgICAgICAgICAgICAgIGF1dG8gbGVuZ3RoID0gaTJkX1g1MDkoc3Rv
cmVfY3R4LT5jZXJ0LCAmYnVmZmVyUG9pbnRlcik7Ci0gICAgICAgICAgICAgICAgc3RkOjp1bmlx
dWVfcHRyPHVpbnQ4X3RbXSwgZGVsZXRlcjx1aW50OF90W10+PiBidWZmZXIoYnVmZmVyUG9pbnRl
cik7Ci0gICAgICAgICAgICAgICAgYXV0byBleHBlY3RlZENlcnQgPSB0ZXN0Q2VydGlmaWNhdGUo
KTsKLSAgICAgICAgICAgICAgICBFWFBFQ1RfRVEoc3RhdGljX2Nhc3Q8aW50PihleHBlY3RlZENl
cnQuc2l6ZSgpKSwgbGVuZ3RoKTsKLSAgICAgICAgICAgICAgICBmb3IgKGludCBpID0gMDsgaSA8
IGxlbmd0aDsgKytpKQotICAgICAgICAgICAgICAgICAgICBFWFBFQ1RfRVEoYnVmZmVyLmdldCgp
W2ldLCBleHBlY3RlZENlcnRbaV0pOwotICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAg
ICAgICAgfSwgbnVsbHB0cik7Ci0gICAgICAgIH0KKyAgICAgICAgU3RyaW5nIGNlcnRQRU0oCisg
ICAgICAgICJNSUlDV0RDQ0FjR2dBd0lCQWdJSkFQdXdUQzZyRUpzTU1BMEdDU3FHU0liM0RRRUJC
UVVBTUVVeEN6QUpCZ05WIgorICAgICAgICAiQkFZVEFrRlZNUk13RVFZRFZRUUlEQXBUYjIxbExW
TjBZWFJsTVNFd0h3WURWUVFLREJoSmJuUmxjbTVsZENCWCIKKyAgICAgICAgImFXUm5hWFJ6SUZC
MGVTQk1kR1F3SGhjTk1UUXdOREl6TWpBMU1EUXdXaGNOTVRjd05ESXlNakExTURRd1dqQkYiCisg
ICAgICAgICJNUXN3Q1FZRFZRUUdFd0pCVlRFVE1CRUdBMVVFQ0F3S1UyOXRaUzFUZEdGMFpURWhN
QjhHQTFVRUNnd1lTVzUwIgorICAgICAgICAiWlhKdVpYUWdWMmxrWjJsMGN5QlFkSGtnVEhSa01J
R2ZNQTBHQ1NxR1NJYjNEUUVCQVFVQUE0R05BRENCaVFLQiIKKyAgICAgICAgImdRRFlLOGltTXVS
aS8wM3owSzFaaTBXbnZmRkh2d2xZZXlLOU5hNlhKWWFVb0lEQXRCOTJrV2RHTWRBUWhMY2kiCisg
ICAgICAgICJIbkFqa1hMSTZXMTVPb1YzZ0EvRWxSWjF4VXB4VE1oalA2UHlZNXdxVDVyNnk4Rnhi
aWlGS0tBbkhtVWNyZ2ZWIgorICAgICAgICAiVzI4dFErMHJrTEdNcnlSdHJ1a1hPZ1hCdjdnY3Jt
VTdHMWpDMmE3V3FtZUk4UUlEQVFBQm8xQXdUakFkQmdOViIKKyAgICAgICAgIkhRNEVGZ1FVaTNY
VnJNc0l2ZzRmWmJmNlZyNXNwM1hhaGE4d0h3WURWUjBqQkJnd0ZvQVVpM1hWck1zSXZnNGYiCisg
ICAgICAgICJaYmY2VnI1c3AzWGFoYTh3REFZRFZSMFRCQVV3QXdFQi96QU5CZ2txaGtpRzl3MEJB
UVVGQUFPQmdRQTc2SGh0IgorICAgICAgICAibGRZOWF2Y1RHU3did29pdUlxdjBqVEwxZkhGbnp5
M1JITUxEaCtMcHZvbGM1RFNyU0pIQ1A1V3VLMGVlSlhociIKKyAgICAgICAgIlQ1b1FwSEw5ei9j
Q0RMQUtDS1JhNHVWMGZoRWRPV0JxeVI5cDh5NWpKdHllNzJ0NkN1RlVWNWlxY3BGNEJINGYiCisg
ICAgICAgICJqMlZOSHdzU3JKd2tENFFVR2xVdEg3dnduUW15Q0Z4Wk1tV0FKZz09Iik7CisgICAg
ICAgIFZlY3Rvcjx1aW50OF90PiBjZXJ0REVSOworICAgICAgICBiYXNlNjREZWNvZGUoY2VydFBF
TSwgY2VydERFUiwgV1RGOjpCYXNlNjREZWNvZGVPcHRpb25zOjpCYXNlNjREZWZhdWx0KTsKKyAg
ICAgICAgc3NsOjp1bmlxdWVfcHRyPENSWVBUT19CVUZGRVI+IGNlcnQoQ1JZUFRPX0JVRkZFUl9u
ZXcoY2VydERFUi5kYXRhKCksIGNlcnRERVIuc2l6ZSgpLCBudWxscHRyKSk7CisgICAgICAgIEFT
U0VSVChjZXJ0KTsKIAogICAgICAgICAvLyBUaGlzIGlzIGEgdGVzdCBrZXkgZnJvbSBCb3JpbmdT
U0wuCiAgICAgICAgIGNoYXIga0tleVBFTVtdID0KQEAgLTE4NiwxOSArMTc5LDMzIEBAIFRDUFNl
cnZlcjo6VENQU2VydmVyKFByb3RvY29sIHByb3RvY29sLCBGdW5jdGlvbjx2b2lkKFNTTCopPiYm
IHNlY3VyZUNvbm5lY3Rpb25ICiAgICAgICAgICJtb1pXZ2pIdkIyVzlDa243c0Rxc1BCK1UydHlY
MGpvRGRRRXl1aU1FQ0RZOG9RPT1cbiIKICAgICAgICAgIi0tLS0tRU5EIFJTQSBQUklWQVRFIEtF
WS0tLS0tXG4iOwogCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCSU8sIGRlbGV0ZXI8QklPPj4g
cHJpdmF0ZUtleUJJTyhCSU9fbmV3X21lbV9idWYoa0tleVBFTSwgc3RybGVuKGtLZXlQRU0pKSk7
Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFVlBfUEtFWSwgZGVsZXRlcjxFVlBfUEtFWT4+IHBy
aXZhdGVLZXkoUEVNX3JlYWRfYmlvX1ByaXZhdGVLZXkocHJpdmF0ZUtleUJJTy5nZXQoKSwgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0cikpOworICAgICAgICBzc2w6OnVuaXF1ZV9wdHI8QklPPiBw
cml2YXRlS2V5QklPKEJJT19uZXdfbWVtX2J1ZihrS2V5UEVNLCBzdHJsZW4oa0tleVBFTSkpKTsK
KyAgICAgICAgc3NsOjp1bmlxdWVfcHRyPEVWUF9QS0VZPiBwcml2YXRlS2V5KFBFTV9yZWFkX2Jp
b19Qcml2YXRlS2V5KHByaXZhdGVLZXlCSU8uZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIG51bGxw
dHIpKTsKICAgICAgICAgQVNTRVJUKHByaXZhdGVLZXkpOwotICAgICAgICBTU0xfQ1RYX3VzZV9Q
cml2YXRlS2V5KGN0eC5nZXQoKSwgcHJpdmF0ZUtleS5nZXQoKSk7CiAKLSAgICAgICAgc3RkOjp1
bmlxdWVfcHRyPFNTTCwgZGVsZXRlcjxTU0w+PiBzc2woU1NMX25ldyhjdHguZ2V0KCkpKTsKKyAg
ICAgICAgU1NMX0NUWF9zZXRfY2hhaW5fYW5kX2tleShjdHguZ2V0KCksIHJlaW50ZXJwcmV0X2Nh
c3Q8Q1JZUFRPX0JVRkZFUiAqY29uc3QgKj4oJmNlcnQpLCAxLCBwcml2YXRlS2V5LmdldCgpLCBu
dWxscHRyKTsKKworICAgICAgICBpZiAocHJvdG9jb2wgPT0gUHJvdG9jb2w6OkhUVFBTV2l0aENs
aWVudENlcnRpZmljYXRlUmVxdWVzdCkgeworICAgICAgICAgICAgU1NMX0NUWF9zZXRfY3VzdG9t
X3ZlcmlmeShjdHguZ2V0KCksIFNTTF9WRVJJRllfUEVFUiB8IFNTTF9WRVJJRllfRkFJTF9JRl9O
T19QRUVSX0NFUlQsIFtdIChTU0wqIHNzbCwgdWludDhfdCopIC0+IHNzbF92ZXJpZnlfcmVzdWx0
X3QgeworICAgICAgICAgICAgICAgIGF1dG8gY2hhaW4gPSBTU0xfZ2V0MF9wZWVyX2NlcnRpZmlj
YXRlcyhzc2wpOworICAgICAgICAgICAgICAgIEVYUEVDVF9FUShza19DUllQVE9fQlVGRkVSX251
bShjaGFpbiksIDJ1KTsKKyAgICAgICAgICAgICAgICBhdXRvIGNlcnQgPSBza19DUllQVE9fQlVG
RkVSX3ZhbHVlKGNoYWluLCAwKTsKKyAgICAgICAgICAgICAgICBhdXRvIGV4cGVjdGVkQ2VydCA9
IHRlc3RDZXJ0aWZpY2F0ZSgpOworICAgICAgICAgICAgICAgIEVYUEVDVF9FUShDUllQVE9fQlVG
RkVSX2xlbihjZXJ0KSwgZXhwZWN0ZWRDZXJ0LnNpemUoKSk7CisgICAgICAgICAgICAgICAgRVhQ
RUNUX1RSVUUoIW1lbWNtcChDUllQVE9fQlVGRkVSX2RhdGEoY2VydCksIGV4cGVjdGVkQ2VydC5k
YXRhKCksIGV4cGVjdGVkQ2VydC5zaXplKCkpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gc3Ns
X3ZlcmlmeV9vazsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAgaWYgKG1h
eFRMU1ZlcnNpb24pCisgICAgICAgICAgICBTU0xfQ1RYX3NldF9tYXhfcHJvdG9fdmVyc2lvbihj
dHguZ2V0KCksICptYXhUTFNWZXJzaW9uKTsKKworICAgICAgICBzc2w6OnVuaXF1ZV9wdHI8U1NM
PiBzc2woU1NMX25ldyhjdHguZ2V0KCkpKTsKICAgICAgICAgQVNTRVJUKHNzbCk7CiAgICAgICAg
IFNTTF9zZXRfZmQoc3NsLmdldCgpLCBzb2NrZXQpOwogCiAgICAgICAgIGF1dG8gYWNjZXB0UmVz
dWx0ID0gU1NMX2FjY2VwdChzc2wuZ2V0KCkpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKGFjY2Vw
dFJlc3VsdCwgYWNjZXB0UmVzdWx0ID4gMCk7Ci0gICAgICAgIAotICAgICAgICBzZWN1cmVDb25u
ZWN0aW9uSGFuZGxlcihzc2wuZ2V0KCkpOworICAgICAgICBzZWN1cmVDb25uZWN0aW9uSGFuZGxl
cihhY2NlcHRSZXN1bHQgPiAwID8gc3NsLmdldCgpIDogbnVsbHB0cik7CiAgICAgfTsKIAogICAg
IHN3aXRjaCAocHJvdG9jb2wpIHsKQEAgLTIzOSw2ICsyNDYsNyBAQCB2b2lkIFRDUFNlcnZlcjo6
bGlzdGVuRm9yQ29ubmVjdGlvbnMoc2l6ZV90IGNvbm5lY3Rpb25zKQogICAgICAgICAgICAgICAg
IGNsb3NlKGNvbm5lY3Rpb25Tb2NrZXQpOwogICAgICAgICAgICAgfSkpOwogICAgICAgICB9Cisg
ICAgICAgIGNsb3NlKGxpc3RlbmluZ1NvY2tldCk7CiAgICAgfSk7CiB9CiAKZGlmZiAtLWdpdCBh
L1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVENQU2VydmVyLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL1RD
UFNlcnZlci5oCmluZGV4IDZhOTgxYzAxNWIxODk1N2JjYTJjNjE0NjEyZmMzOTcwNjBjNDAyYWMu
Ljc2YTMxOTk5ZDdhN2JhNDAzZWYzNGNkOTQzNWYyZWY3YTJkNDNhOGMgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL1Rlc3RXZWJLaXRBUEkvVENQU2VydmVyLmgKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
Q1BTZXJ2ZXIuaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVkZSA8dGhyZWFkPgogI2luY2x1
ZGUgPHd0Zi9GdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KIAogI2lmIEhBVkUoU1NMKQpAQCAtNDYsNyArNDcsNyBAQCBwdWJsaWM6
CiAgICAgZW51bSBjbGFzcyBQcm90b2NvbCA6IHVpbnQ4X3QgewogICAgICAgICBIVFRQUywgSFRU
UFNQcm94eSwgSFRUUFNXaXRoQ2xpZW50Q2VydGlmaWNhdGVSZXF1ZXN0CiAgICAgfTsKLSAgICBU
Q1BTZXJ2ZXIoUHJvdG9jb2wsIEZ1bmN0aW9uPHZvaWQoU1NMKik+JiYpOworICAgIFRDUFNlcnZl
cihQcm90b2NvbCwgRnVuY3Rpb248dm9pZChTU0wqKT4mJiwgT3B0aW9uYWw8dWludDE2X3Q+IG1h
eFRMU1ZlcnNpb24gPSBXVEY6Om51bGxvcHQpOwogI2VuZGlmIC8vIEhBVkUoU1NMKQogICAgIH5U
Q1BTZXJ2ZXIoKTsKICAgICAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdl
YktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMTQ3NDNkMjcwZWYy
ZmI2NDEwMGYzZjdlNWM4M2Y2OGI3ZmM4N2ZiOC4uNmRhM2YxZmM5NGE5NzdjODhlYThkNjc5Njg0
M2QyOWIyMTRmMzEwMiAxMDA2NDQKLS0tIGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTE4NjQsNiArMTg2NCw3
IEBACiAJCTVDNjlCREQ0MUY4MkE3RUIwMDBGNEY0QiAvKiBKYXZhU2NyaXB0RHVyaW5nTmF2aWdh
dGlvbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEphdmFTY3Jp
cHREdXJpbmdOYXZpZ2F0aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzZF
MjdBNjIyNEVFQkVBMDAxMjg3MzYgLyogVVJMQ2Fub25pY2FsaXphdGlvbi5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFVSTENhbm9uaWNhbGl6YXRpb24ubW07IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNzE0ODk0MjEyM0E0MDcwMEZERTNDNSAvKiBX
S1dlYnNpdGVEYXRhc3RvcmUubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBXS1dlYnNpdGVEYXRhc3RvcmUubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTVDNzNBODFBMjMyMzA1OTgwMERFQTg1QSAvKiBUTFNEZXByZWNhdGlvbi5tbSAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFRMU0RlcHJlY2F0aW9uLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1Qzc1NzE1RjIyMTI0OUJEMDBCOUU1QUMgLyogQnVuZGxl
UmV0YWluUGFnZVBsdWdJbi5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0
aCA9IEJ1bmRsZVJldGFpblBhZ2VQbHVnSW4ubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTVDNzk2NDBGMUVCMDI2OUIwMDc1RDc0QyAvKiBFdmVudE1vZGlmaWVycy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBFdmVudE1vZGlmaWVycy5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDN0M3NENBMUZCNTI4RDQwMDJGOUFCRSAvKiBXZWJW
aWV3U2NoZWR1bGVJblJ1bkxvb3AubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7
IHBhdGggPSBXZWJWaWV3U2NoZWR1bGVJblJ1bkxvb3AubW07IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yODczLDYgKzI4NzQsNyBAQAogCQkJCUY0Q0Q3NEM4MjBGREI0OTYwMERFMzc5
NCAvKiBUZXN0VVJMU2NoZW1lSGFuZGxlci5tbSAqLywKIAkJCQk1QzE2RjhGQjIzMEM5NDJCMDA3
NEM0QTggLyogVGV4dFNpemUubW0gKi8sCiAJCQkJQzIyRkEzMkEyMjhGODcwODAwOUQ3OTg4IC8q
IFRleHRXaWR0aC5tbSAqLywKKwkJCQk1QzczQTgxQTIzMjMwNTk4MDBERUE4NUEgLyogVExTRGVw
cmVjYXRpb24ubW0gKi8sCiAJCQkJNUNCNDBCNEQxRjRCOThCRTAwN0RDN0I5IC8qIFVJRGVsZWdh
dGUubW0gKi8sCiAJCQkJNUMzQTc3QTkyMkYyMEI4QTAwMzgyN0ZGIC8qIFVwbG9hZERpcmVjdG9y
eS5tbSAqLywKIAkJCQk3Q0MzRTFGQTE5N0UyMzQxMDBCRTYyNTIgLyogVXNlckNvbnRlbnRDb250
cm9sbGVyLm1tICovLApkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJL
aXRDb2NvYS9UTFNEZXByZWNhdGlvbi5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvVExTRGVwcmVjYXRpb24ubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWZlZTFhMjIzZDI4ZGI3YTBh
ZjQ4ZGEzYTgzOTIyOTRkZDEzYjYwZAotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL1Rlc3RXZWJL
aXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVExTRGVwcmVjYXRpb24ubW0KQEAgLTAsMCArMSwxNDEg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpbXBvcnQgIlBsYXRmb3Jt
VXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUQ1BTZXJ2ZXIuaCIKKyNpbXBvcnQgIlRlc3ROYXZpZ2F0
aW9uRGVsZWdhdGUuaCIKKyNpbXBvcnQgIlRlc3RXS1dlYlZpZXcuaCIKKyNpbXBvcnQgPFdlYktp
dC9XS1Byb2Nlc3NQb29sUHJpdmF0ZS5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCitA
aW50ZXJmYWNlIFdlYlNvY2tldERlbGVnYXRlIDogTlNPYmplY3QgPFdLVUlEZWxlZ2F0ZT4KKy0g
KE5TU3RyaW5nICopd2FpdEZvck1lc3NhZ2U7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJT
b2NrZXREZWxlZ2F0ZSB7CisgICAgUmV0YWluUHRyPE5TU3RyaW5nPiBfbWVzc2FnZTsKK30KKwor
LSAoTlNTdHJpbmcgKil3YWl0Rm9yTWVzc2FnZQoreworICAgIHdoaWxlICghX21lc3NhZ2UpCisg
ICAgICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnNwaW5SdW5Mb29wKCk7CisgICAgcmV0dXJuIF9t
ZXNzYWdlLmF1dG9yZWxlYXNlKCk7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICop
d2ViVmlldyBydW5KYXZhU2NyaXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKW1l
c3NhZ2UgaW5pdGlhdGVkQnlGcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBjb21wbGV0aW9uSGFu
ZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBfbWVzc2FnZSA9
IG1lc3NhZ2U7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KKworQGVuZAorCituYW1lc3Bh
Y2UgVGVzdFdlYktpdEFQSSB7CisKK2NvbnN0IHVpbnQxNl90IHRsczFfMSA9IDB4MDMwMjsKK3N0
YXRpYyBOU1N0cmluZyAqZGVmYXVsdHNLZXkgPSBAIldlYktpdEVuYWJsZUxlZ2FjeVRMUyI7CisK
K1RFU1QoV2ViS2l0LCBUTFNWZXJzaW9uV2ViU29ja2V0KQoreworICAgIGF1dG8gZ2V0V2ViU29j
a2V0RXZlbnQgPSBbXSAoYm9vbCBjbGllbnRBbGxvd0RlcHJlY2F0ZWRUTFMsIGJvb2wgc2VydmVy
TGltaXRUTFMpIHsKKyAgICAgICAgT3B0aW9uYWw8dWludDE2X3Q+IG1heFNlcnZlclRMU1ZlcnNp
b247CisgICAgICAgIGlmIChzZXJ2ZXJMaW1pdFRMUykKKyAgICAgICAgICAgIG1heFNlcnZlclRM
U1ZlcnNpb24gPSB0bHMxXzE7CisgICAgICAgIFRDUFNlcnZlciBzZXJ2ZXIoVENQU2VydmVyOjpQ
cm90b2NvbDo6SFRUUFMsIFs9XShTU0wgKnNzbCkgeworICAgICAgICAgICAgRVhQRUNUX1RSVUUo
IXNzbCA9PSAoY2xpZW50QWxsb3dEZXByZWNhdGVkVExTICE9IHNlcnZlckxpbWl0VExTKSk7Cisg
ICAgICAgIH0sIG1heFNlcnZlclRMU1ZlcnNpb24pOworCisgICAgICAgIGlmIChjbGllbnRBbGxv
d0RlcHJlY2F0ZWRUTFMpCisgICAgICAgICAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNl
ckRlZmF1bHRzXSBzZXRCb29sOllFUyBmb3JLZXk6ZGVmYXVsdHNLZXldOworICAgICAgICAKKyAg
ICAgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhbVGVzdFdLV2ViVmlldyBuZXddKTsKKyAgICAg
ICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1dlYlNvY2tldERlbGVnYXRlIG5ld10pOworICAg
ICAgICBbd2ViVmlldyBzZXRVSURlbGVnYXRlOmRlbGVnYXRlLmdldCgpXTsKKyAgICAgICAgW3dl
YlZpZXcgc3luY2hyb25vdXNseUxvYWRIVE1MU3RyaW5nOkAic3RhcnQgbmV0d29yayBwcm9jZXNz
Il07CisgICAgICAgIFtbd2ViVmlldyBjb25maWd1cmF0aW9uXS5wcm9jZXNzUG9vbCBfYWxsb3dB
bnlUTFNDZXJ0aWZpY2F0ZUZvcldlYlNvY2tldFRlc3RpbmddOworICAgICAgICBbd2ViVmlldyBz
eW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3JtYXQ6Cisg
ICAgICAgICAgICBAIjxzY3JpcHQ+IgorICAgICAgICAgICAgImNvbnN0IHNvY2tldCA9IG5ldyBX
ZWJTb2NrZXQoJ3dzczovL2xvY2FsaG9zdDolZCcpOyIKKyAgICAgICAgICAgICJzb2NrZXQub25j
bG9zZSA9IGZ1bmN0aW9uKGV2ZW50KXsgYWxlcnQoJ2Nsb3NlJyk7IH07IgorICAgICAgICAgICAg
InNvY2tldC5vbmVycm9yID0gZnVuY3Rpb24oZXZlbnQpeyBhbGVydCgnZXJyb3I6ICcgKyBldmVu
dC5kYXRhKTsgfTsiCisgICAgICAgICAgICAiPC9zY3JpcHQ+Iiwgc2VydmVyLnBvcnQoKV1dOwor
ICAgICAgICBOU1N0cmluZyAqbWVzc2FnZSA9IFtkZWxlZ2F0ZSB3YWl0Rm9yTWVzc2FnZV07Cisg
ICAgICAgIAorICAgICAgICBpZiAoY2xpZW50QWxsb3dEZXByZWNhdGVkVExTKQorICAgICAgICAg
ICAgW1tOU1VzZXJEZWZhdWx0cyBzdGFuZGFyZFVzZXJEZWZhdWx0c10gcmVtb3ZlT2JqZWN0Rm9y
S2V5OmRlZmF1bHRzS2V5XTsKKworICAgICAgICByZXR1cm4gbWVzc2FnZTsKKyAgICB9OworCisg
ICAgRVhQRUNUX1dLX1NUUkVRKGdldFdlYlNvY2tldEV2ZW50KHRydWUsIHRydWUpLCAiY2xvc2Ui
KTsKKyAgICBFWFBFQ1RfV0tfU1RSRVEoZ2V0V2ViU29ja2V0RXZlbnQoZmFsc2UsIHRydWUpLCAi
ZXJyb3I6IHVuZGVmaW5lZCIpOworICAgIEVYUEVDVF9XS19TVFJFUShnZXRXZWJTb2NrZXRFdmVu
dChmYWxzZSwgZmFsc2UpLCAiY2xvc2UiKTsKK30KKworVEVTVChXZWJLaXQsIFRMU1ZlcnNpb25O
ZXR3b3JrU2Vzc2lvbikKK3sKKyAgICBzdGF0aWMgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1Rl
c3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7CisgICAgYXV0byBtYWtlV2ViVmlld1dpdGggPSBb
Jl0gKFdLV2Vic2l0ZURhdGFTdG9yZSAqc3RvcmUpIHsKKyAgICAgICAgV0tXZWJWaWV3Q29uZmln
dXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtbW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gYWxsb2Nd
IGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgY29uZmlndXJhdGlvbi53ZWJzaXRlRGF0YVN0
b3JlID0gc3RvcmU7CisgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMoW1tXS1dlYlZpZXcg
YWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYwMCkgY29uZmlndXJh
dGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxl
Z2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisgICAgICAgIFtkZWxlZ2F0ZSBzZXREaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2U6XihXS1dlYlZpZXcgKiwgTlNVUkxBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZSAqY2hhbGxlbmdlLCB2b2lkICheY2FsbGJhY2spKE5TVVJMU2Vzc2lvbkF1dGhDaGFs
bGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICopKSB7CisgICAgICAgICAgICBjYWxs
YmFjayhOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwgW05TVVJMQ3JlZGVu
dGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6Y2hhbGxlbmdlLnByb3RlY3Rpb25TcGFjZS5zZXJ2ZXJU
cnVzdF0pOworICAgICAgICB9XTsKKyAgICAgICAgcmV0dXJuIHdlYlZpZXc7CisgICAgfTsKKyAg
ICB7CisgICAgICAgIFRDUFNlcnZlciBzZXJ2ZXIoVENQU2VydmVyOjpQcm90b2NvbDo6SFRUUFMs
IFtdKFNTTCAqc3NsKSB7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0Uoc3NsKTsKKyAgICAgICAg
fSwgdGxzMV8xKTsKKyAgICAgICAgYXV0byB3ZWJWaWV3ID0gbWFrZVdlYlZpZXdXaXRoKFtXS1dl
YnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0pOworICAgICAgICBbd2ViVmlldyBsb2Fk
UmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBVUkxXaXRoU3RyaW5n
OltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4wLjE6JWQvIiwgc2Vy
dmVyLnBvcnQoKV1dXV07CisgICAgICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlkRmFpbFByb3Zpc2lv
bmFsTmF2aWdhdGlvbl07CisgICAgfQorICAgIHsKKyAgICAgICAgVENQU2VydmVyIHNlcnZlcihU
Q1BTZXJ2ZXI6OlByb3RvY29sOjpIVFRQUywgW10oU1NMICpzc2wpIHsKKyAgICAgICAgICAgIEVY
UEVDVF9GQUxTRShzc2wpOworICAgICAgICB9LCB0bHMxXzEpOworICAgICAgICBhdXRvIHdlYlZp
ZXcgPSBtYWtlV2ViVmlld1dpdGgoW1dLV2Vic2l0ZURhdGFTdG9yZSBub25QZXJzaXN0ZW50RGF0
YVN0b3JlXSk7CisgICAgICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVx
dWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0cmluZ1dpdGhGb3Jt
YXQ6QCJodHRwczovLzEyNy4wLjAuMTolZC8iLCBzZXJ2ZXIucG9ydCgpXV1dXTsKKyAgICAgICAg
W2RlbGVnYXRlIHdhaXRGb3JEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uXTsKKyAgICB9Cisg
ICAgeworICAgICAgICBUQ1BTZXJ2ZXIgc2VydmVyKFRDUFNlcnZlcjo6UHJvdG9jb2w6OkhUVFBT
LCBbXShTU0wgKnNzbCkgeworICAgICAgICAgICAgVENQU2VydmVyOjpyZXNwb25kV2l0aE9LKHNz
bCk7CisgICAgICAgIH0sIHRsczFfMSk7CisgICAgICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRh
cmRVc2VyRGVmYXVsdHNdIHNldEJvb2w6WUVTIGZvcktleTpkZWZhdWx0c0tleV07CisgICAgICAg
IGF1dG8gd2ViVmlldyA9IG1ha2VXZWJWaWV3V2l0aChbV0tXZWJzaXRlRGF0YVN0b3JlIGRlZmF1
bHREYXRhU3RvcmVdKTsKKyAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVz
dCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJpbmcgc3RyaW5nV2l0
aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlci5wb3J0KCldXV1dOworICAg
ICAgICBbZGVsZWdhdGUgd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOworICAgICAgICBbW05T
VXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSByZW1vdmVPYmplY3RGb3JLZXk6ZGVm
YXVsdHNLZXldOworICAgIH0KK30KKworfQpkaWZmIC0tZ2l0IGEvVG9vbHMvVGVzdFdlYktpdEFQ
SS9jb2NvYS9UZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmggYi9Ub29scy9UZXN0V2ViS2l0QVBJL2Nv
Y29hL1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUuaAppbmRleCBlZmZiZDQ5OTE1YjE4YTQ0OTI0NTQ2
Y2ZmNjA5YjRjYzk5NDZhNDQ1Li40MjVkNjc1MzM0NWQyNGZjMDRlZjc5ZTY3M2M4YTkxNGU1ZGM3
Yzg5IDEwMDY0NAotLS0gYS9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3ROYXZpZ2F0aW9u
RGVsZWdhdGUuaAorKysgYi9Ub29scy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3ROYXZpZ2F0aW9u
RGVsZWdhdGUuaApAQCAtMzcsOSArMzcsMTEgQEAKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5
KSB2b2lkICheZGlkRmluaXNoTmF2aWdhdGlvbikoV0tXZWJWaWV3ICosIFdLTmF2aWdhdGlvbiAq
KTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkIChecmVuZGVyaW5nUHJvZ3Jlc3NE
aWRDaGFuZ2UpKFdLV2ViVmlldyAqLCBfV0tSZW5kZXJpbmdQcm9ncmVzc0V2ZW50cyk7CiBAcHJv
cGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXndlYkNvbnRlbnRQcm9jZXNzRGlkVGVybWlu
YXRlKShXS1dlYlZpZXcgKik7CitAcHJvcGVydHkgKG5vbmF0b21pYywgY29weSkgdm9pZCAoXmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkoV0tXZWJWaWV3ICosIE5TVVJMQXV0aGVu
dGljYXRpb25DaGFsbGVuZ2UgKiwgdm9pZCAoXikoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZURp
c3Bvc2l0aW9uLCBOU1VSTENyZWRlbnRpYWwgKikpOwogCiAtICh2b2lkKXdhaXRGb3JEaWRTdGFy
dFByb3Zpc2lvbmFsTmF2aWdhdGlvbjsKIC0gKHZvaWQpd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRp
b247CistICh2b2lkKXdhaXRGb3JEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uOwogCiBAZW5k
CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdE5hdmlnYXRpb25E
ZWxlZ2F0ZS5tbSBiL1Rvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdE5hdmlnYXRpb25EZWxl
Z2F0ZS5tbQppbmRleCA3NDJhYzdhODEyY2FjYzcwZWQyOGYyMDA1YTQyM2Y4M2E1YTVjNGZlLi41
NThlYTc3ODJlNTFhMjY3NDYwMDY3OTc1ZDcwYTkyMTFmZmNhY2UwIDEwMDY0NAotLS0gYS9Ub29s
cy9UZXN0V2ViS2l0QVBJL2NvY29hL1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUubW0KKysrIGIvVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0TmF2aWdhdGlvbkRlbGVnYXRlLm1tCkBAIC03NSw2
ICs3NSwxNCBAQAogICAgICAgICBfcmVuZGVyaW5nUHJvZ3Jlc3NEaWRDaGFuZ2Uod2ViVmlldywg
cHJvZ3Jlc3NFdmVudHMpOwogfQogCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOihOU1VSTEF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlICopY2hhbGxlbmdlIGNvbXBsZXRpb25IYW5kbGVyOih2b2lkICheKShOU1VSTFNl
c3Npb25BdXRoQ2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKSljb21wbGV0
aW9uSGFuZGxlcgoreworICAgIGlmIChfZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KQorICAgICAgICBfZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHdlYlZpZXcsIGNo
YWxsZW5nZSwgY29tcGxldGlvbkhhbmRsZXIpOworICAgIGVsc2UKKyAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoTlNVUkxTZXNzaW9uQXV0aENoYWxsZW5nZVBlcmZvcm1EZWZhdWx0SGFuZGxpbmcs
IG5pbCk7Cit9CisKIC0gKHZvaWQpd2FpdEZvckRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9u
CiB7CiAgICAgRVhQRUNUX0ZBTFNFKHNlbGYuZGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24p
OwpAQCAtMTAzLDYgKzExMSwyMCBAQAogICAgIHNlbGYuZGlkRmluaXNoTmF2aWdhdGlvbiA9IG5p
bDsKIH0KIAorLSAodm9pZCl3YWl0Rm9yRGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbgorewor
ICAgIEVYUEVDVF9GQUxTRShzZWxmLmRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb24pOworCisg
ICAgX19ibG9jayBib29sIGZpbmlzaGVkID0gZmFsc2U7CisgICAgc2VsZi5kaWRGYWlsUHJvdmlz
aW9uYWxOYXZpZ2F0aW9uID0gXihXS1dlYlZpZXcgKiwgV0tOYXZpZ2F0aW9uICosIE5TRXJyb3Ig
KikgeworICAgICAgICBmaW5pc2hlZCA9IHRydWU7CisgICAgfTsKKworICAgIFRlc3RXZWJLaXRB
UEk6OlV0aWw6OnJ1bigmZmluaXNoZWQpOworCisgICAgc2VsZi5kaWRGYWlsUHJvdmlzaW9uYWxO
YXZpZ2F0aW9uID0gbmlsOworfQorCiBAZW5kCiAKIEBpbXBsZW1lbnRhdGlvbiBXS1dlYlZpZXcg
KFRlc3RXZWJLaXRBUElFeHRyYXMpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>378421</attachid>
            <date>2019-09-09 18:08:20 -0700</date>
            <delta_ts>2019-09-09 18:37:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201573-20190909180819.patch</filename>
            <type>text/plain</type>
            <size>39950</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0OTY3MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIwIEBACisyMDE5LTA5LTA5ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRGlzYWJsZSBU
TFMgMS4wIGFuZCAxLjEgaW4gV2ViU29ja2V0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxNTczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5u
IEZhYmxldC4KKworICAgICAgICBUaGlzIGV4cGFuZHMgb24gd2hhdCBJIHN0YXJ0ZWQgaW4gcjI0
OTAxOSB3aGVuIEkgZGlzYWJsZWQgbGVnYWN5IFRMUyBmb3Igb3VyIHVzZSBvZiBOU1VSTFNlc3Np
b24uCisgICAgICAgIFNpbmNlIG91ciBXZWJTb2NrZXQgaW1wbGVtZW50YXRpb24gdXNlcyBhIGRp
ZmZlcmVudCBuZXR3b3JrIGludGVyZmFjZSwgZGlzYWJsZSBsZWdhY3kgVExTIGZvciB0aGVtLCB0
b28uCisgICAgICAgIEkgdXNlIHRoZSBzYW1lIHRlbXBvcmFyeSBkZWZhdWx0IHRvIHJlLWVuYWJs
ZSBsZWdhY3kgVExTLiAgSSBhbHNvIGFkZCBhIHVuaXQgdGVzdCBmb3IgYm90aCBXZWJTb2NrZXRz
IGFuZCBOU1VSTFNlc3Npb24gdXNlLgorCisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9T
b2NrZXRTdHJlYW1IYW5kbGVJbXBsLmg6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9T
b2NrZXRTdHJlYW1IYW5kbGVJbXBsQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RnVuY3Rp
b248Ym9vbCk6CisgICAgICAgIChXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpzZXRM
ZWdhY3lUTFNFbmFibGVkQ2hlY2spOgorICAgICAgICAoV2ViQ29yZTo6U29ja2V0U3RyZWFtSGFu
ZGxlSW1wbDo6Y3JlYXRlU3RyZWFtcyk6CisKIDIwMTktMDktMDkgIFNhYW0gQmFyYXRpICA8c2Jh
cmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBmb2xsb3cgdXAgdG8gcjI0OTYz
MC4gV2UgbmVlZCBwYWRkaW5nIGZvciBBRERSRVNTMzIgQ1BVcyB0byBhbGxvdyByZXBsYWNlV2l0
aCB0byB3b3JrIG9uIHRoZSBpbnRlbmRlZCB0eXBlcy4KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BB
TC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwko
cmV2aXNpb24gMjQ5NjcxKQorKysgU291cmNlL1dlYkNvcmUvUEFML0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDEyIEBACisyMDE5LTA5LTA5ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgRGlzYWJsZSBUTFMgMS4wIGFuZCAx
LjEgaW4gV2ViU29ja2V0cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjAxNTczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgWW91ZW5uIEZhYmxldC4KKwor
ICAgICAgICAqIHBhbC9zcGkvY2YvQ0ZOZXR3b3JrU1BJLmg6CisKIDIwMTktMDgtMzAgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBSZW1vdmUg
SEFWRV9DRk5FVFdPUktfV0lUSF9BVVRPX0FEREVEX0hUVFBfSEVBREVSX1NVUFBSRVNTSU9OX1NV
UFBPUlQgY29uZGl0aW9uYWwKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2NmL0NG
TmV0d29ya1NQSS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL1BBTC9wYWwvc3BpL2Nm
L0NGTmV0d29ya1NQSS5oCShyZXZpc2lvbiAyNDk2NzEpCisrKyBTb3VyY2UvV2ViQ29yZS9QQUwv
cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaAkod29ya2luZyBjb3B5KQpAQCAtNTUsNyArNTUsOSBA
QCBleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYgX2tDRldpbmRvd3NTU0xQCiAKIFdURl9FWFRFUk5f
Q19FTkQKIAotI2VuZGlmCisjZWxzZSAvLyBQTEFURk9STShXSU4pCisjaW5jbHVkZSA8Q0ZOZXR3
b3JrL0NGU29ja2V0U3RyZWFtUHJpdi5oPgorI2VuZGlmIC8vIFBMQVRGT1JNKFdJTikKIAogLy8g
RklYTUU6IFJlbW92ZSB0aGUgZGVmaW5lZChfX09CSkNfXyktZ3VhcmQgb25jZSB3ZSBmaXggPHJk
YXI6Ly9wcm9ibGVtLzE5MDMzNjEwPi4KICNpZiBkZWZpbmVkKF9fT0JKQ19fKSAmJiBQTEFURk9S
TShDT0NPQSkKQEAgLTI4Miw2ICsyODQsNyBAQCBleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NG
VVJMUmVxdWVzdEFsCiBleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYgX2tDRlVSTENhY2hlUGFydGl0
aW9uS2V5OwogZXh0ZXJuIGNvbnN0IENGU3RyaW5nUmVmIF9rQ0ZVUkxDb25uZWN0aW9uUHJvcGVy
dHlTaG91bGRTbmlmZjsKIGV4dGVybiBjb25zdCBDRlN0cmluZ1JlZiBfa0NGVVJMU3RvcmFnZVNl
c3Npb25Jc1ByaXZhdGU7CitleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NGU3RyZWFtU29ja2V0
U2VjdXJpdHlMZXZlbFRMU3YxXzI7CiAKICNpZiBIQVZFKENGTkVUV09SS19XSVRIX0NPTlRFTlRf
RU5DT0RJTkdfU05JRkZJTkdfT1ZFUlJJREUpCiBleHRlcm4gY29uc3QgQ0ZTdHJpbmdSZWYga0NG
VVJMUmVxdWVzdENvbnRlbnREZWNvZGVyU2tpcFVSTENoZWNrOwpJbmRleDogU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9Tb2NrZXRTdHJlYW1IYW5k
bGVJbXBsLmgJKHJldmlzaW9uIDI0OTY3MSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oCSh3b3JraW5nIGNvcHkpCkBAIC01MSw2
ICs1MSw4IEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgflNvY2tldFN0cmVhbUhhbmRsZUltcGwo
KTsKIAorICAgIFdFQkNPUkVfRVhQT1JUIHN0YXRpYyB2b2lkIHNldExlZ2FjeVRMU0VuYWJsZWQo
Ym9vbCk7CisKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYXRmb3JtU2VuZChjb25zdCB1aW50
OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBGdW5jdGlvbjx2b2lkKGJvb2wpPiYmKSBmaW5hbDsK
ICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYXRmb3JtU2VuZEhhbmRzaGFrZShjb25zdCB1aW50
OF90KiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBjb25zdCBPcHRpb25hbDxDb29raWVSZXF1ZXN0SGVh
ZGVyRmllbGRQcm94eT4mLCBGdW5jdGlvbjx2b2lkKGJvb2wsIGJvb2wpPiYmKSBmaW5hbDsKICAg
ICBXRUJDT1JFX0VYUE9SVCB2b2lkIHBsYXRmb3JtQ2xvc2UoKSBmaW5hbDsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Nv
Y2tldFN0cmVhbUhhbmRsZUltcGxDRk5ldC5jcHAJKHJldmlzaW9uIDI0OTY3MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvU29ja2V0U3RyZWFtSGFuZGxlSW1wbENGTmV0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzA1LDYgKzMwNSwxMyBAQCBzdGF0aWMgdm9pZCBzZXRD
T05ORUNUUHJveHlGb3JTdHJlYW0oQ0ZSCiAgICAgQ0ZSZWFkU3RyZWFtU2V0UHJvcGVydHkoc3Ry
ZWFtLCBrQ0ZTdHJlYW1Qcm9wZXJ0eUNPTk5FQ1RQcm94eSwgY29ubmVjdERpY3Rpb25hcnkuZ2V0
KCkpOwogfQogCitzdGF0aWMgYm9vbCBnTGVnYWN5VExTRW5hYmxlZCA9IGZhbHNlOworCit2b2lk
IFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnNldExlZ2FjeVRMU0VuYWJsZWQoYm9vbCBlbmFibGVk
KQoreworICAgIGdMZWdhY3lUTFNFbmFibGVkID0gZW5hYmxlZDsKK30KKwogdm9pZCBTb2NrZXRT
dHJlYW1IYW5kbGVJbXBsOjpjcmVhdGVTdHJlYW1zKCkKIHsKICAgICBpZiAobV9jb25uZWN0aW9u
VHlwZSA9PSBVbmtub3duKQpAQCAtMzI3LDcgKzMzNCw2IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFu
ZGxlSW1wbDo6Y3JlYXRlU3RyZWEKICAgICAgICAgQ0ZSZWFkU3RyZWFtU2V0UHJvcGVydHkocmVh
ZFN0cmVhbSwga0NGU3RyZWFtUHJvcGVydHlTb3VyY2VBcHBsaWNhdGlvbiwgbV9hdWRpdERhdGEu
c291cmNlQXBwbGljYXRpb25BdWRpdERhdGEuZ2V0KCkpOwogICAgICAgICBDRldyaXRlU3RyZWFt
U2V0UHJvcGVydHkod3JpdGVTdHJlYW0sIGtDRlN0cmVhbVByb3BlcnR5U291cmNlQXBwbGljYXRp
b24sIG1fYXVkaXREYXRhLnNvdXJjZUFwcGxpY2F0aW9uQXVkaXREYXRhLmdldCgpKTsKICAgICB9
Ci0gICAgCiAjZW5kaWYKIAogICAgIG1fcmVhZFN0cmVhbSA9IGFkb3B0Q0YocmVhZFN0cmVhbSk7
CkBAIC0zNTUsOCArMzYxLDIwIEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1wbDo6Y3JlYXRl
U3RyZWEKIAogICAgIGlmIChzaG91bGRVc2VTU0woKSkgewogICAgICAgICBDRkJvb2xlYW5SZWYg
dmFsaWRhdGVDZXJ0aWZpY2F0ZUNoYWluID0gRGVwcmVjYXRlZEdsb2JhbFNldHRpbmdzOjphbGxv
d3NBbnlTU0xDZXJ0aWZpY2F0ZSgpID8ga0NGQm9vbGVhbkZhbHNlIDoga0NGQm9vbGVhblRydWU7
Ci0gICAgICAgIGNvbnN0IHZvaWQqIGtleXNbXSA9IHsga0NGU3RyZWFtU1NMUGVlck5hbWUsIGtD
RlN0cmVhbVNTTExldmVsLCBrQ0ZTdHJlYW1TU0xWYWxpZGF0ZXNDZXJ0aWZpY2F0ZUNoYWluIH07
Ci0gICAgICAgIGNvbnN0IHZvaWQqIHZhbHVlc1tdID0geyBob3N0LmdldCgpLCBrQ0ZTdHJlYW1T
b2NrZXRTZWN1cml0eUxldmVsTmVnb3RpYXRlZFNTTCwgdmFsaWRhdGVDZXJ0aWZpY2F0ZUNoYWlu
IH07CisgICAgICAgIGNvbnN0IHZvaWQqIGtleXNbXSA9IHsKKyAgICAgICAgICAgIGtDRlN0cmVh
bVNTTFBlZXJOYW1lLAorICAgICAgICAgICAga0NGU3RyZWFtU1NMTGV2ZWwsCisgICAgICAgICAg
ICBrQ0ZTdHJlYW1TU0xWYWxpZGF0ZXNDZXJ0aWZpY2F0ZUNoYWluCisgICAgICAgIH07CisgICAg
ICAgIGNvbnN0IHZvaWQqIHZhbHVlc1tdID0geworICAgICAgICAgICAgaG9zdC5nZXQoKSwKKyNp
ZiBQTEFURk9STShDT0NPQSkKKyAgICAgICAgICAgIGdMZWdhY3lUTFNFbmFibGVkID8ga0NGU3Ry
ZWFtU29ja2V0U2VjdXJpdHlMZXZlbE5lZ290aWF0ZWRTU0wgOiBrQ0ZTdHJlYW1Tb2NrZXRTZWN1
cml0eUxldmVsVExTdjFfMiwKKyNlbHNlCisgICAgICAgICAgICBrQ0ZTdHJlYW1Tb2NrZXRTZWN1
cml0eUxldmVsTmVnb3RpYXRlZFNTTCwKKyNlbmRpZgorICAgICAgICAgICAgdmFsaWRhdGVDZXJ0
aWZpY2F0ZUNoYWluCisgICAgICAgIH07CiAgICAgICAgIFJldGFpblB0cjxDRkRpY3Rpb25hcnlS
ZWY+IHNldHRpbmdzID0gYWRvcHRDRihDRkRpY3Rpb25hcnlDcmVhdGUoMCwga2V5cywgdmFsdWVz
LCBXVEZfQVJSQVlfTEVOR1RIKGtleXMpLCAma0NGVHlwZURpY3Rpb25hcnlLZXlDYWxsQmFja3Ms
ICZrQ0ZUeXBlRGljdGlvbmFyeVZhbHVlQ2FsbEJhY2tzKSk7CiAgICAgICAgIENGUmVhZFN0cmVh
bVNldFByb3BlcnR5KG1fcmVhZFN0cmVhbS5nZXQoKSwga0NGU3RyZWFtUHJvcGVydHlTU0xTZXR0
aW5ncywgc2V0dGluZ3MuZ2V0KCkpOwogICAgICAgICBDRldyaXRlU3RyZWFtU2V0UHJvcGVydHko
bV93cml0ZVN0cmVhbS5nZXQoKSwga0NGU3RyZWFtUHJvcGVydHlTU0xTZXR0aW5ncywgc2V0dGlu
Z3MuZ2V0KCkpOwpJbmRleDogU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHJldmlzaW9uIDI0OTY3MSkKKysrIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTktMDktMDkg
IEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBE
aXNhYmxlIFRMUyAxLjAgYW5kIDEuMSBpbiBXZWJTb2NrZXRzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDE1NzMKKworICAgICAgICBSZXZpZXdlZCBi
eSBZb3Vlbm4gRmFibGV0LgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nl
c3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrUHJvY2Vz
c0NyZWF0aW9uUGFyYW1ldGVyczo6ZW5jb2RlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZSk6CisgICAgICAgICogTmV0d29y
a1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuaDoKKyAgICAgICAgKiBO
ZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tOgorICAgICAgICAoV2Vi
S2l0OjpOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3NDb2Nv
YSk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1Byb2Nlc3NQb29sLm1tOgorICAg
ICAgICAoLVtXS1Byb2Nlc3NQb29sIF9hbGxvd0FueVRMU0NlcnRpZmljYXRlRm9yV2ViU29ja2V0
VGVzdGluZ10pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFBy
aXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5t
bToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZU5l
dHdvcmtQcm9jZXNzKToKKwogMjAxOS0wOS0wOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3Rl
bnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIERlcHJlY2F0ZSB1bnVzZWQgU1BJIHRvIHByZWNv
bm5lY3QgdG8gYSBzZXJ2ZXIKSW5kZXg6IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0
d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnMuY3Bw
CShyZXZpc2lvbiAyNDk2NzEpCisrKyBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL05ldHdv
cmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTMsNiAr
OTMsNyBAQCB2b2lkIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjplCiAgICAgZW5j
b2RlciA8PCBlbmFibGVBZENsaWNrQXR0cmlidXRpb25EZWJ1Z01vZGU7CiAgICAgZW5jb2RlciA8
PCBoc3RzU3RvcmFnZURpcmVjdG9yeTsKICAgICBlbmNvZGVyIDw8IGhzdHNTdG9yYWdlRGlyZWN0
b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgIGVuY29kZXIgPDwgZW5hYmxlTGVnYWN5VExTOwogfQog
CiBib29sIE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzOjpkZWNvZGUoSVBDOjpEZWNv
ZGVyJiBkZWNvZGVyLCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcmVzdWx0KQpA
QCAtMjI4LDYgKzIyOSw5IEBAIGJvb2wgTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFtZXRlcnM6
OmQKICAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHJlc3VsdC5oc3RzU3RvcmFnZURpcmVjdG9yeUV4
dGVuc2lvbkhhbmRsZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAKKyAgICBpZiAoIWRl
Y29kZXIuZGVjb2RlKHJlc3VsdC5lbmFibGVMZWdhY3lUTFMpKQorICAgICAgICByZXR1cm4gZmFs
c2U7CisKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApJbmRleDogU291cmNlL1dlYktpdC9OZXR3b3Jr
UHJvY2Vzcy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvTmV0d29ya1Byb2Nlc3NDcmVhdGlvblBhcmFt
ZXRlcnMuaAkocmV2aXNpb24gMjQ5NjcxKQorKysgU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vz
cy9OZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTEsNiArMTExLDcgQEAgc3RydWN0IE5ldHdvcmtQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzIAog
ICAgIGJvb2wgZW5hYmxlQWRDbGlja0F0dHJpYnV0aW9uRGVidWdNb2RlIHsgZmFsc2UgfTsKICAg
ICBTdHJpbmcgaHN0c1N0b3JhZ2VEaXJlY3Rvcnk7CiAgICAgU2FuZGJveEV4dGVuc2lvbjo6SGFu
ZGxlIGhzdHNTdG9yYWdlRGlyZWN0b3J5RXh0ZW5zaW9uSGFuZGxlOworICAgIGJvb2wgZW5hYmxl
TGVnYWN5VExTIHsgZmFsc2UgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDog
U291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY29jb2EvTmV0d29y
a1Byb2Nlc3NDb2NvYS5tbQkocmV2aXNpb24gMjQ5NjcxKQorKysgU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jb2NvYS9OZXR3b3JrUHJvY2Vzc0NvY29hLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0zOSw2ICszOSw3IEBACiAjaW1wb3J0IDxXZWJDb3JlL1J1bnRpbWVBcHBsaWNhdGlvbkNoZWNr
cy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TZWN1cml0eU9yaWdpbi5oPgogI2ltcG9ydCA8V2ViQ29y
ZS9TZWN1cml0eU9yaWdpbkRhdGEuaD4KKyNpbXBvcnQgPFdlYkNvcmUvU29ja2V0U3RyZWFtSGFu
ZGxlSW1wbC5oPgogI2ltcG9ydCA8cGFsL3NwaS9jZi9DRk5ldHdvcmtTUEkuaD4KICNpbXBvcnQg
PHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3RmL0NhbGxiYWNrQWdncmVnYXRvci5oPgpAQCAt
NjksNiArNzAsOCBAQCBzdGF0aWMgdm9pZCBpbml0aWFsaXplTmV0d29ya1NldHRpbmdzKCkKIAog
dm9pZCBOZXR3b3JrUHJvY2Vzczo6cGxhdGZvcm1Jbml0aWFsaXplTmV0d29ya1Byb2Nlc3NDb2Nv
YShjb25zdCBOZXR3b3JrUHJvY2Vzc0NyZWF0aW9uUGFyYW1ldGVycyYgcGFyYW1ldGVycykKIHsK
KyAgICBXZWJDb3JlOjpTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpzZXRMZWdhY3lUTFNFbmFibGVk
KHBhcmFtZXRlcnMuZW5hYmxlTGVnYWN5VExTKTsKKwogICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0
aW9uQnVuZGxlSWRlbnRpZmllcihwYXJhbWV0ZXJzLnVpUHJvY2Vzc0J1bmRsZUlkZW50aWZpZXIp
OwogICAgIFdlYkNvcmU6OnNldEFwcGxpY2F0aW9uU0RLVmVyc2lvbihwYXJhbWV0ZXJzLnVpUHJv
Y2Vzc1NES1ZlcnNpb24pOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvV0tQcm9jZXNzUG9vbC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbC5tbQkocmV2aXNpb24gMjQ5NjcxKQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2wubW0JKHdvcmtpbmcgY29w
eSkKQEAgLTY0Nyw0ICs2NDcsOSBAQCAtICh2b2lkKV9jbGVhclBlcm1hbmVudENyZWRlbnRpYWxz
Rm9yUHJvCiAgICAgX3Byb2Nlc3NQb29sLT5jbGVhclBlcm1hbmVudENyZWRlbnRpYWxzRm9yUHJv
dGVjdGlvblNwYWNlKFdlYkNvcmU6OlByb3RlY3Rpb25TcGFjZShwcm90ZWN0aW9uU3BhY2UpKTsK
IH0KIAorLSAodm9pZClfYWxsb3dBbnlUTFNDZXJ0aWZpY2F0ZUZvcldlYlNvY2tldFRlc3RpbmcK
K3sKKyAgICBfcHJvY2Vzc1Bvb2wtPnNldEFsbG93c0FueVNTTENlcnRpZmljYXRlRm9yV2ViU29j
a2V0KHRydWUpOworfQorCiBAZW5kCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tQcm9jZXNzUG9vbFByaXZhdGUuaAkocmV2aXNpb24gMjQ5
NjcxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLUHJvY2Vzc1Bvb2xQ
cml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEyMyw2ICsxMjMsNyBAQAogLSAodm9pZClfZ2V0
QWN0aXZlUGFnZXNPcmlnaW5zSW5XZWJQcm9jZXNzRm9yVGVzdGluZzoocGlkX3QpcGlkIGNvbXBs
ZXRpb25IYW5kbGVyOih2b2lkKF4pKE5TQXJyYXk8TlNTdHJpbmcgKj4gKikpY29tcGxldGlvbkhh
bmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xNC40KSwgaW9zKDEyLjIpKTsKIC0gKEJP
T0wpX25ldHdvcmtQcm9jZXNzSGFzRW50aXRsZW1lbnRGb3JUZXN0aW5nOihOU1N0cmluZyAqKWVu
dGl0bGVtZW50IFdLX0FQSV9BVkFJTEFCTEUobWFjb3MoMTAuMTQuNCksIGlvcygxMi4yKSk7CiAt
ICh2b2lkKV9jbGVhclBlcm1hbmVudENyZWRlbnRpYWxzRm9yUHJvdGVjdGlvblNwYWNlOihOU1VS
TFByb3RlY3Rpb25TcGFjZSAqKXByb3RlY3Rpb25TcGFjZSBXS19BUElfQVZBSUxBQkxFKG1hY29z
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOworLSAodm9pZClfYWxsb3dBbnlUTFNDZXJ0
aWZpY2F0ZUZvcldlYlNvY2tldFRlc3RpbmcgV0tfQVBJX0FWQUlMQUJMRShtYWNvcyhXS19NQUNf
VEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIAogQHByb3BlcnR5IChub25hdG9taWMsIGdldHRlcj1f
aXNDb29raWVTdG9yYWdlUGFydGl0aW9uaW5nRW5hYmxlZCwgc2V0dGVyPV9zZXRDb29raWVTdG9y
YWdlUGFydGl0aW9uaW5nRW5hYmxlZDopIEJPT0wgX2Nvb2tpZVN0b3JhZ2VQYXJ0aXRpb25pbmdF
bmFibGVkIFdLX0FQSV9ERVBSRUNBVEVEKCJQYXJ0aXRpb25lZCBjb29raWVzIGFyZSBubyBsb25n
ZXIgc3VwcG9ydGVkIiwgbWFjb3MoMTAuMTIuMywgMTAuMTQuNCksIGlvcygxMC4zLCAxMi4yKSk7
CiBAcHJvcGVydHkgKG5vbmF0b21pYywgZ2V0dGVyPV9pc1N0b3JhZ2VBY2Nlc3NBUElFbmFibGVk
LCBzZXR0ZXI9X3NldFN0b3JhZ2VBY2Nlc3NBUElFbmFibGVkOikgQk9PTCBfc3RvcmFnZUFjY2Vz
c0FQSUVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvcygxMC4xMy40KSwgaW9zKDExLjMpKTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1dlYlByb2Nlc3NQb29sQ29jb2Eu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvV2ViUHJvY2Vz
c1Bvb2xDb2NvYS5tbQkocmV2aXNpb24gMjQ5NjcxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvQ29jb2EvV2ViUHJvY2Vzc1Bvb2xDb2NvYS5tbQkod29ya2luZyBjb3B5KQpAQCAtMjgxLDcg
KzI4MSw4IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsYXRmb3JtSW5pdGlhbGl6ZU4KICAgICAg
ICAgfQogICAgIH0KIAotICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMu
bmV0d29ya1Nlc3Npb25QYXJhbWV0ZXJzLmVuYWJsZUxlZ2FjeVRMUyA9IFtkZWZhdWx0cyBib29s
Rm9yS2V5OkAiV2ViS2l0RW5hYmxlTGVnYWN5VExTIl07CisgICAgcGFyYW1ldGVycy5lbmFibGVM
ZWdhY3lUTFMgPSBbZGVmYXVsdHMgYm9vbEZvcktleTpAIldlYktpdEVuYWJsZUxlZ2FjeVRMUyJd
OworICAgIHBhcmFtZXRlcnMuZGVmYXVsdERhdGFTdG9yZVBhcmFtZXRlcnMubmV0d29ya1Nlc3Np
b25QYXJhbWV0ZXJzLmVuYWJsZUxlZ2FjeVRMUyA9IHBhcmFtZXRlcnMuZW5hYmxlTGVnYWN5VExT
OwogCiAgICAgcGFyYW1ldGVycy5uZXR3b3JrQVRTQ29udGV4dCA9IGFkb3B0Q0YoX0NGTmV0d29y
a0NvcHlBVFNDb250ZXh0KCkpOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFu
Z2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCShy
ZXZpc2lvbiAyNDk2NzYpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHdv
cmtpbmcgY29weSkKQEAgLTEsMyArMSwxMyBAQAorMjAxOS0wOS0wOSAgQWxleCBDaHJpc3RlbnNl
biAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIERpc2FibGUgVExTIDEuMCBh
bmQgMS4xIGluIFdlYlNvY2tldHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIwMTU3MworCisgICAgICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQu
CisKKyAgICAgICAgKiBXZWJWaWV3L1dlYlZpZXcubW06CisgICAgICAgICgtW1dlYlZpZXcgX2Nv
bW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmFtZTpncm91cE5hbWU6XSk6CisKIDIwMTktMDkt
MDYgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBXaGVuIGRpc2FibGluZyBsZWdhY3kgcHJpdmF0ZSBicm93c2luZyBmb3IgdGVzdGluZywgY2hh
bmdlIHRoZSBTZXNzaW9uSUQgYmFjayB0byB3aGF0IGl0IHdhcywgbm90IHRoZSBkZWZhdWx0U2Vz
c2lvbklECkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dlYlZpZXcubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CShyZXZpc2lvbiAyNDk2NzEpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9XZWJWaWV3L1dl
YlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTIwNSw2ICsyMDUsNyBAQAogI2ltcG9ydCA8V2Vi
Q29yZS9TZXR0aW5ncy5oPgogI2ltcG9ydCA8V2ViQ29yZS9TaG91bGRUcmVhdEFzQ29udGludWlu
Z0xvYWQuaD4KICNpbXBvcnQgPFdlYkNvcmUvU29ja2V0UHJvdmlkZXIuaD4KKyNpbXBvcnQgPFdl
YkNvcmUvU29ja2V0U3RyZWFtSGFuZGxlSW1wbC5oPgogI2ltcG9ydCA8V2ViQ29yZS9TdHJpbmdV
dGlsaXRpZXMuaD4KICNpbXBvcnQgPFdlYkNvcmUvU3R5bGVQcm9wZXJ0aWVzLmg+CiAjaW1wb3J0
IDxXZWJDb3JlL1RleHRSZXNvdXJjZURlY29kZXIuaD4KQEAgLTE0MTksNiArMTQyMCw5IEBAIC0g
KHZvaWQpX2NvbW1vbkluaXRpYWxpemF0aW9uV2l0aEZyYW1lTmEKICAgICAgICAgaWYgKElPU0Fw
cGxpY2F0aW9uOjppc01vYmlsZVNhZmFyaSgpKQogICAgICAgICAgICAgRGVwcmVjYXRlZEdsb2Jh
bFNldHRpbmdzOjpzZXRTaG91bGRNYW5hZ2VBdWRpb1Nlc3Npb25DYXRlZ29yeSh0cnVlKTsKICNl
bmRpZgorICAgICAgICAKKyAgICAgICAgaWYgKFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2Vy
RGVmYXVsdHNdIGJvb2xGb3JLZXk6QCJXZWJLaXRFbmFibGVMZWdhY3lUTFMiXSkKKyAgICAgICAg
ICAgIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OnNldExlZ2FjeVRMU0VuYWJsZWQodHJ1ZSk7CiAK
ICAgICAgICAgZGlkT25lVGltZUluaXRpYWxpemF0aW9uID0gdHJ1ZTsKICAgICB9CkluZGV4OiBU
b29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
NDk2NzEpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMCBA
QAorMjAxOS0wOS0wOSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgorCisgICAgICAgIERpc2FibGUgVExTIDEuMCBhbmQgMS4xIGluIFdlYlNvY2tldHMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTU3MworCisgICAg
ICAgIFJldmlld2VkIGJ5IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJ
L1NvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UQ1BTZXJ2ZXIuY3Bw
OgorICAgICAgICAoc2tfQ1JZUFRPX0JVRkZFUl9udW0pOgorICAgICAgICAoc2tfQ1JZUFRPX0JV
RkZFUl92YWx1ZSk6CisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkZWxldGVyPENSWVBUT19CVUZG
RVI+OjpvcGVyYXRvcigpKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRDUFNlcnZlcjo6VENQ
U2VydmVyKToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRDUFNlcnZlcjo6bGlzdGVuRm9yQ29u
bmVjdGlvbnMpOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6ZGVsZXRlcjxYNTA5Pjo6b3BlcmF0
b3IoKSk6IERlbGV0ZWQuCisgICAgICAgIChUZXN0V2ViS2l0QVBJOjpkZWxldGVyPHVpbnQ4X3Q6
Om9wZXJhdG9yKCkpOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVENQU2VydmVy
Lmg6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9U
TFNEZXByZWNhdGlvbi5tbTogQWRkZWQuCisgICAgICAgICgtW1dlYlNvY2tldERlbGVnYXRlIHdh
aXRGb3JNZXNzYWdlXSk6CisgICAgICAgICgtW1dlYlNvY2tldERlbGVnYXRlIHdlYlZpZXc6cnVu
SmF2YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2FnZTppbml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRp
b25IYW5kbGVyOl0pOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6VEVTVCk6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmg6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0TmF2aWdhdGlvbkRlbGVnYXRlLm1tOgorICAgICAgICAo
LVtUZXN0TmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtUZXN0TmF2aWdhdGlv
bkRlbGVnYXRlIHdhaXRGb3JEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9uXSk6CisKIDIwMTkt
MDktMDkgIEFha2FzaCBKYWluICA8YWFrYXNoX2phaW5AYXBwbGUuY29tPgogCiAgICAgICAgIEVX
UyB0ZXN0dHViZSBlbW9qaSBkb2Vzbid0IGV4aXN0IG9uIG1hY09TIE1vamF2ZQpJbmRleDogVG9v
bHMvVGVzdFdlYktpdEFQSS9Tb3VyY2VzQ29jb2EudHh0Cj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvU291cmNlc0NvY29hLnR4dAkocmV2aXNpb24gMjQ5NjcxKQorKysgVG9vbHMv
VGVzdFdlYktpdEFQSS9Tb3VyY2VzQ29jb2EudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0yOCwzICsy
OCw1IEBAIGNvY29hL1BsYXRmb3JtVXRpbGl0aWVzQ29jb2EubW0KIGNvY29hL1Rlc3ROYXZpZ2F0
aW9uRGVsZWdhdGUubW0KIGNvY29hL1Rlc3RQcm90b2NvbC5tbQogY29jb2EvVGVzdFdLV2ViVmll
dy5tbQorCitUZXN0cy9XZWJLaXRDb2NvYS9UTFNEZXByZWNhdGlvbi5tbQpJbmRleDogVG9vbHMv
VGVzdFdlYktpdEFQSS9UQ1BTZXJ2ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJL
aXRBUEkvVENQU2VydmVyLmNwcAkocmV2aXNpb24gMjQ5NjcxKQorKysgVG9vbHMvVGVzdFdlYktp
dEFQSS9UQ1BTZXJ2ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw0NiArMzMsNTkgQEAKICNp
bmNsdWRlIDx3dGYvdGV4dC9CYXNlNjQuaD4KIAogI2lmIEhBVkUoU1NMKQorCisjZGVmaW5lIFNU
QUNLX09GKHR5cGUpIHN0cnVjdCBzdGFja19zdF8jI3R5cGUKKwogZXh0ZXJuICJDIiB7CiAKK2Vu
dW0gc3NsX3ZlcmlmeV9yZXN1bHRfdCB7CisgICAgc3NsX3ZlcmlmeV9vaywKKyAgICBzc2xfdmVy
aWZ5X2ludmFsaWQsCisgICAgc3NsX3ZlcmlmeV9yZXRyeSwKK307CisKIHN0cnVjdCBCSU87Ci1z
dHJ1Y3QgWDUwOTsKK3N0cnVjdCBDUllQVE9fQlVGRkVSOwogc3RydWN0IFNTTF9DVFg7CiBzdHJ1
Y3QgRVZQX1BLRVk7CiBzdHJ1Y3QgU1NMX01FVEhPRDsKLXN0cnVjdCBYNTA5X1NUT1JFX0NUWCB7
Ci0gICAgdm9pZCogdW51c2VkOwotICAgIFg1MDkqIGNlcnQ7Ci19Oworc3RydWN0IFNTTF9QUklW
QVRFX0tFWV9NRVRIT0Q7CitzdHJ1Y3QgX1NUQUNLOworc3RydWN0IENSWVBUT19CVUZGRVJfUE9P
TDsKIHN0cnVjdCBwZW1fcGFzc3dvcmRfY2I7CiBpbnQgQklPX2ZyZWUoQklPKik7CiBpbnQgU1NM
X2ZyZWUoU1NMKik7Ci1pbnQgWDUwOV9mcmVlKFg1MDkqKTsKIGludCBTU0xfQ1RYX2ZyZWUoU1NM
X0NUWCopOwogaW50IEVWUF9QS0VZX2ZyZWUoRVZQX1BLRVkqKTsKIGludCBTU0xfbGlicmFyeV9p
bml0KCk7Ci1jb25zdCBTU0xfTUVUSE9EKiBTU0x2MjNfc2VydmVyX21ldGhvZCgpOworY29uc3Qg
U1NMX01FVEhPRCogVExTX3dpdGhfYnVmZmVyc19tZXRob2QoKTsKIEJJTyogQklPX25ld19tZW1f
YnVmKGNvbnN0IHZvaWQqLCBpbnQpOwotWDUwOSogUEVNX3JlYWRfYmlvX1g1MDkoQklPKiwgWDUw
OSoqLCBwZW1fcGFzc3dvcmRfY2IqLCB2b2lkKik7CiBFVlBfUEtFWSogUEVNX3JlYWRfYmlvX1By
aXZhdGVLZXkoQklPKiwgRVZQX1BLRVkqKiwgcGVtX3Bhc3N3b3JkX2NiKiwgdm9pZCopOwogU1NM
X0NUWCogU1NMX0NUWF9uZXcoY29uc3QgU1NMX01FVEhPRCopOwotY29uc3QgU1NMX01FVEhPRCog
U1NMdjIzX3NlcnZlcl9tZXRob2QoKTsKLWludCBTU0xfQ1RYX3VzZV9jZXJ0aWZpY2F0ZShTU0xf
Q1RYKiwgWDUwOSopOwotaW50IFNTTF9DVFhfdXNlX1ByaXZhdGVLZXkoU1NMX0NUWCosIEVWUF9Q
S0VZKik7CiBTU0wqIFNTTF9uZXcoU1NMX0NUWCopOwogaW50IFNTTF9hY2NlcHQoU1NMKik7CiBp
bnQgU1NMX3NldF9mZChTU0wqLCBpbnQpOwotdm9pZCBTU0xfQ1RYX3NldF92ZXJpZnkoU1NMX0NU
WCosIGludCwgaW50ICgqKShpbnQsIFg1MDlfU1RPUkVfQ1RYKikpOwotdm9pZCBTU0xfQ1RYX3Nl
dF9jZXJ0X3ZlcmlmeV9jYWxsYmFjayhTU0xfQ1RYKiwgaW50ICgqKShYNTA5X1NUT1JFX0NUWCos
IHZvaWQqKSwgdm9pZCopOwogaW50IFNTTF9nZXRfZXJyb3IoY29uc3QgU1NMKiwgaW50KTsKK3Zv
aWQgU1NMX0NUWF9zZXRfY3VzdG9tX3ZlcmlmeShTU0xfQ1RYKiwgaW50IG1vZGUsIGVudW0gc3Ns
X3ZlcmlmeV9yZXN1bHRfdCAoKmNhbGxiYWNrKShTU0wgKnNzbCwgdWludDhfdCAqb3V0X2FsZXJ0
KSk7CiBpbnQgU1NMX3JlYWQoU1NMKiwgdm9pZCosIGludCk7CiBpbnQgU1NMX3dyaXRlKFNTTCos
IGNvbnN0IHZvaWQqLCBpbnQpOwotaW50IGkyZF9YNTA5KFg1MDkqLCB1bnNpZ25lZCBjaGFyKiop
OworY29uc3QgdWludDhfdCogQ1JZUFRPX0JVRkZFUl9kYXRhKGNvbnN0IENSWVBUT19CVUZGRVIq
KTsKK3NpemVfdCBDUllQVE9fQlVGRkVSX2xlbihjb25zdCBDUllQVE9fQlVGRkVSKik7CiB2b2lk
IE9QRU5TU0xfZnJlZSh2b2lkKik7CitpbnQgU1NMX0NUWF9zZXRfY2hhaW5fYW5kX2tleShTU0xf
Q1RYKiwgQ1JZUFRPX0JVRkZFUiAqY29uc3QgKmNlcnRzLCBzaXplX3QgbnVtX2NlcnRzLCBFVlBf
UEtFWSosIGNvbnN0IFNTTF9QUklWQVRFX0tFWV9NRVRIT0QqKTsKK0NSWVBUT19CVUZGRVIqIENS
WVBUT19CVUZGRVJfbmV3KGNvbnN0IHVpbnQ4X3QqLCBzaXplX3QsIENSWVBUT19CVUZGRVJfUE9P
TCopOwordm9pZCBDUllQVE9fQlVGRkVSX2ZyZWUoQ1JZUFRPX0JVRkZFUiopOworc2l6ZV90IHNr
X251bShjb25zdCBfU1RBQ0sqKTsKK3ZvaWQqIHNrX3ZhbHVlKGNvbnN0IF9TVEFDSyosIHNpemVf
dCk7Citjb25zdCBTVEFDS19PRihDUllQVE9fQlVGRkVSKSAqU1NMX2dldDBfcGVlcl9jZXJ0aWZp
Y2F0ZXMoY29uc3QgU1NMKik7Cit2b2lkIFNTTF9DVFhfc2V0X21heF9wcm90b192ZXJzaW9uKFNT
TF9DVFgqLCB1aW50MTZfdCk7CiAjZGVmaW5lIFNTTF9WRVJJRllfUEVFUiAweDAxCiAjZGVmaW5l
IFNTTF9WRVJJRllfRkFJTF9JRl9OT19QRUVSX0NFUlQgMHgwMgogCiB9IC8vIGV4dGVybiAiQyIK
KworaW5saW5lIHNpemVfdCBza19DUllQVE9fQlVGRkVSX251bShjb25zdCBTVEFDS19PRihDUllQ
VE9fQlVGRkVSKSAqc2spIHsgcmV0dXJuIHNrX251bSgoY29uc3QgX1NUQUNLICopc2spOyB9Citp
bmxpbmUgQ1JZUFRPX0JVRkZFUiogc2tfQ1JZUFRPX0JVRkZFUl92YWx1ZShjb25zdCBTVEFDS19P
RihDUllQVE9fQlVGRkVSKSAqc2ssIHNpemVfdCBpKSB7IHJldHVybiAoQ1JZUFRPX0JVRkZFUiAq
KXNrX3ZhbHVlKChjb25zdCBfU1RBQ0sgKilzaywgaSk7IH0KICNlbmRpZiAvLyBIQVZFKFNTTCkK
IAogbmFtZXNwYWNlIFRlc3RXZWJLaXRBUEkgewpAQCAtOTEsMTIgKzEwNCw2IEBAIHRlbXBsYXRl
PD4gc3RydWN0IGRlbGV0ZXI8U1NMPiB7CiAgICAgICAgIFNTTF9mcmVlKHNzbCk7CiAgICAgfQog
fTsKLXRlbXBsYXRlPD4gc3RydWN0IGRlbGV0ZXI8WDUwOT4gewotICAgIHZvaWQgb3BlcmF0b3Io
KShYNTA5KiB4NTA5KQotICAgIHsKLSAgICAgICAgWDUwOV9mcmVlKHg1MDkpOwotICAgIH0KLX07
CiB0ZW1wbGF0ZTw+IHN0cnVjdCBkZWxldGVyPFNTTF9DVFg+IHsKICAgICB2b2lkIG9wZXJhdG9y
KCkoU1NMX0NUWCogY3R4KQogICAgIHsKQEAgLTEwOSwxMiArMTE2LDE1IEBAIHRlbXBsYXRlPD4g
c3RydWN0IGRlbGV0ZXI8RVZQX1BLRVk+IHsKICAgICAgICAgRVZQX1BLRVlfZnJlZShrZXkpOwog
ICAgIH0KIH07Ci10ZW1wbGF0ZTw+IHN0cnVjdCBkZWxldGVyPHVpbnQ4X3RbXT4gewotICAgIHZv
aWQgb3BlcmF0b3IoKSh1aW50OF90KiBidWZmZXIpCit0ZW1wbGF0ZTw+IHN0cnVjdCBkZWxldGVy
PENSWVBUT19CVUZGRVI+IHsKKyAgICB2b2lkIG9wZXJhdG9yKCkoQ1JZUFRPX0JVRkZFUiogYnVm
ZmVyKQogICAgIHsKLSAgICAgICAgT1BFTlNTTF9mcmVlKGJ1ZmZlcik7CisgICAgICAgIENSWVBU
T19CVUZGRVJfZnJlZShidWZmZXIpOwogICAgIH0KIH07CituYW1lc3BhY2Ugc3NsIHsKK3RlbXBs
YXRlIDx0eXBlbmFtZSBUPiB1c2luZyB1bmlxdWVfcHRyID0gc3RkOjp1bmlxdWVfcHRyPFQsIGRl
bGV0ZXI8VD4+OworfQogI2VuZGlmIC8vIEhBVkUoU1NMKQogCiBUQ1BTZXJ2ZXI6OlRDUFNlcnZl
cihGdW5jdGlvbjx2b2lkKFNvY2tldCk+JiYgY29ubmVjdGlvbkhhbmRsZXIsIHNpemVfdCBjb25u
ZWN0aW9ucykKQEAgLTEyNCw0OSArMTM0LDMyIEBAIFRDUFNlcnZlcjo6VENQU2VydmVyKEZ1bmN0
aW9uPHZvaWQoU29ja2UKIH0KIAogI2lmIEhBVkUoU1NMKQotVENQU2VydmVyOjpUQ1BTZXJ2ZXIo
UHJvdG9jb2wgcHJvdG9jb2wsIEZ1bmN0aW9uPHZvaWQoU1NMKik+JiYgc2VjdXJlQ29ubmVjdGlv
bkhhbmRsZXIpCitUQ1BTZXJ2ZXI6OlRDUFNlcnZlcihQcm90b2NvbCBwcm90b2NvbCwgRnVuY3Rp
b248dm9pZChTU0wqKT4mJiBzZWN1cmVDb25uZWN0aW9uSGFuZGxlciwgT3B0aW9uYWw8dWludDE2
X3Q+IG1heFRMU1ZlcnNpb24pCiB7Ci0gICAgYXV0byBzdGFydFNlY3VyZUNvbm5lY3Rpb24gPSBb
c2VjdXJlQ29ubmVjdGlvbkhhbmRsZXIgPSBXVEZNb3ZlKHNlY3VyZUNvbm5lY3Rpb25IYW5kbGVy
KSwgcHJvdG9jb2xdIChTb2NrZXQgc29ja2V0KSB7CisgICAgYXV0byBzdGFydFNlY3VyZUNvbm5l
Y3Rpb24gPSBbc2VjdXJlQ29ubmVjdGlvbkhhbmRsZXIgPSBXVEZNb3ZlKHNlY3VyZUNvbm5lY3Rp
b25IYW5kbGVyKSwgcHJvdG9jb2wsIG1heFRMU1ZlcnNpb25dIChTb2NrZXQgc29ja2V0KSB7CiAg
ICAgICAgIFNTTF9saWJyYXJ5X2luaXQoKTsKIAotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8U1NM
X0NUWCwgZGVsZXRlcjxTU0xfQ1RYPj4gY3R4KFNTTF9DVFhfbmV3KFNTTHYyM19zZXJ2ZXJfbWV0
aG9kKCkpKTsKKyAgICAgICAgc3NsOjp1bmlxdWVfcHRyPFNTTF9DVFg+IGN0eChTU0xfQ1RYX25l
dyhUTFNfd2l0aF9idWZmZXJzX21ldGhvZCgpKSk7CiAKICAgICAgICAgLy8gVGhpcyBpcyBhIHRl
c3QgY2VydGlmaWNhdGUgZnJvbSBCb3JpbmdTU0wuCi0gICAgICAgIGNoYXIga0NlcnRQRU1bXSA9
Ci0gICAgICAgICItLS0tLUJFR0lOIENFUlRJRklDQVRFLS0tLS1cbiIKLSAgICAgICAgIk1JSUNX
RENDQWNHZ0F3SUJBZ0lKQVB1d1RDNnJFSnNNTUEwR0NTcUdTSWIzRFFFQkJRVUFNRVV4Q3pBSkJn
TlZcbiIKLSAgICAgICAgIkJBWVRBa0ZWTVJNd0VRWURWUVFJREFwVGIyMWxMVk4wWVhSbE1TRXdI
d1lEVlFRS0RCaEpiblJsY201bGRDQlhcbiIKLSAgICAgICAgImFXUm5hWFJ6SUZCMGVTQk1kR1F3
SGhjTk1UUXdOREl6TWpBMU1EUXdXaGNOTVRjd05ESXlNakExTURRd1dqQkZcbiIKLSAgICAgICAg
Ik1Rc3dDUVlEVlFRR0V3SkJWVEVUTUJFR0ExVUVDQXdLVTI5dFpTMVRkR0YwWlRFaE1COEdBMVVF
Q2d3WVNXNTBcbiIKLSAgICAgICAgIlpYSnVaWFFnVjJsa1oybDBjeUJRZEhrZ1RIUmtNSUdmTUEw
R0NTcUdTSWIzRFFFQkFRVUFBNEdOQURDQmlRS0JcbiIKLSAgICAgICAgImdRRFlLOGltTXVSaS8w
M3owSzFaaTBXbnZmRkh2d2xZZXlLOU5hNlhKWWFVb0lEQXRCOTJrV2RHTWRBUWhMY2lcbiIKLSAg
ICAgICAgIkhuQWprWExJNlcxNU9vVjNnQS9FbFJaMXhVcHhUTWhqUDZQeVk1d3FUNXI2eThGeGJp
aUZLS0FuSG1VY3JnZlZcbiIKLSAgICAgICAgIlcyOHRRKzBya0xHTXJ5UnRydWtYT2dYQnY3Z2Ny
bVU3RzFqQzJhN1dxbWVJOFFJREFRQUJvMUF3VGpBZEJnTlZcbiIKLSAgICAgICAgIkhRNEVGZ1FV
aTNYVnJNc0l2ZzRmWmJmNlZyNXNwM1hhaGE4d0h3WURWUjBqQkJnd0ZvQVVpM1hWck1zSXZnNGZc
biIKLSAgICAgICAgIlpiZjZWcjVzcDNYYWhhOHdEQVlEVlIwVEJBVXdBd0VCL3pBTkJna3Foa2lH
OXcwQkFRVUZBQU9CZ1FBNzZIaHRcbiIKLSAgICAgICAgImxkWTlhdmNUR1N3YndvaXVJcXYwalRM
MWZIRm56eTNSSE1MRGgrTHB2b2xjNURTclNKSENQNVd1SzBlZUpYaHJcbiIKLSAgICAgICAgIlQ1
b1FwSEw5ei9jQ0RMQUtDS1JhNHVWMGZoRWRPV0JxeVI5cDh5NWpKdHllNzJ0NkN1RlVWNWlxY3BG
NEJINGZcbiIKLSAgICAgICAgImoyVk5Id3NTckp3a0Q0UVVHbFV0SDd2d25RbXlDRnhaTW1XQUpn
PT1cbiIKLSAgICAgICAgIi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS1cbiI7Ci0KLSAgICAgICAg
c3RkOjp1bmlxdWVfcHRyPEJJTywgZGVsZXRlcjxCSU8+PiBjZXJ0QklPKEJJT19uZXdfbWVtX2J1
ZihrQ2VydFBFTSwgc3RybGVuKGtDZXJ0UEVNKSkpOwotICAgICAgICBzdGQ6OnVuaXF1ZV9wdHI8
WDUwOSwgZGVsZXRlcjxYNTA5Pj4gY2VydFg1MDkoUEVNX3JlYWRfYmlvX1g1MDkoY2VydEJJTy5n
ZXQoKSwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikpOwotICAgICAgICBBU1NFUlQoY2VydFg1
MDkpOwotICAgICAgICBTU0xfQ1RYX3VzZV9jZXJ0aWZpY2F0ZShjdHguZ2V0KCksIGNlcnRYNTA5
LmdldCgpKTsKLQotICAgICAgICBpZiAocHJvdG9jb2wgPT0gUHJvdG9jb2w6OkhUVFBTV2l0aENs
aWVudENlcnRpZmljYXRlUmVxdWVzdCkgewotICAgICAgICAgICAgU1NMX0NUWF9zZXRfdmVyaWZ5
KGN0eC5nZXQoKSwgU1NMX1ZFUklGWV9QRUVSIHwgU1NMX1ZFUklGWV9GQUlMX0lGX05PX1BFRVJf
Q0VSVCwgbnVsbHB0cik7Ci0gICAgICAgICAgICBTU0xfQ1RYX3NldF9jZXJ0X3ZlcmlmeV9jYWxs
YmFjayhjdHguZ2V0KCksIFtdIChYNTA5X1NUT1JFX0NUWCogc3RvcmVfY3R4LCB2b2lkKikgLT4g
aW50IHsKLSAgICAgICAgICAgICAgICB1aW50OF90KiBidWZmZXJQb2ludGVyID0gbnVsbHB0cjsK
LSAgICAgICAgICAgICAgICBhdXRvIGxlbmd0aCA9IGkyZF9YNTA5KHN0b3JlX2N0eC0+Y2VydCwg
JmJ1ZmZlclBvaW50ZXIpOwotICAgICAgICAgICAgICAgIHN0ZDo6dW5pcXVlX3B0cjx1aW50OF90
W10sIGRlbGV0ZXI8dWludDhfdFtdPj4gYnVmZmVyKGJ1ZmZlclBvaW50ZXIpOwotICAgICAgICAg
ICAgICAgIGF1dG8gZXhwZWN0ZWRDZXJ0ID0gdGVzdENlcnRpZmljYXRlKCk7Ci0gICAgICAgICAg
ICAgICAgRVhQRUNUX0VRKHN0YXRpY19jYXN0PGludD4oZXhwZWN0ZWRDZXJ0LnNpemUoKSksIGxl
bmd0aCk7Ci0gICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBsZW5ndGg7ICsraSkK
LSAgICAgICAgICAgICAgICAgICAgRVhQRUNUX0VRKGJ1ZmZlci5nZXQoKVtpXSwgZXhwZWN0ZWRD
ZXJ0W2ldKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gMTsKLSAgICAgICAgICAgIH0sIG51bGxw
dHIpOwotICAgICAgICB9CisgICAgICAgIFN0cmluZyBjZXJ0UEVNKAorICAgICAgICAiTUlJQ1dE
Q0NBY0dnQXdJQkFnSUpBUHV3VEM2ckVKc01NQTBHQ1NxR1NJYjNEUUVCQlFVQU1FVXhDekFKQmdO
ViIKKyAgICAgICAgIkJBWVRBa0ZWTVJNd0VRWURWUVFJREFwVGIyMWxMVk4wWVhSbE1TRXdId1lE
VlFRS0RCaEpiblJsY201bGRDQlgiCisgICAgICAgICJhV1JuYVhSeklGQjBlU0JNZEdRd0hoY05N
VFF3TkRJek1qQTFNRFF3V2hjTk1UY3dOREl5TWpBMU1EUXdXakJGIgorICAgICAgICAiTVFzd0NR
WURWUVFHRXdKQlZURVRNQkVHQTFVRUNBd0tVMjl0WlMxVGRHRjBaVEVoTUI4R0ExVUVDZ3dZU1c1
MCIKKyAgICAgICAgIlpYSnVaWFFnVjJsa1oybDBjeUJRZEhrZ1RIUmtNSUdmTUEwR0NTcUdTSWIz
RFFFQkFRVUFBNEdOQURDQmlRS0IiCisgICAgICAgICJnUURZSzhpbU11UmkvMDN6MEsxWmkwV252
ZkZIdndsWWV5SzlOYTZYSllhVW9JREF0Qjkya1dkR01kQVFoTGNpIgorICAgICAgICAiSG5BamtY
TEk2VzE1T29WM2dBL0VsUloxeFVweFRNaGpQNlB5WTV3cVQ1cjZ5OEZ4YmlpRktLQW5IbVVjcmdm
ViIKKyAgICAgICAgIlcyOHRRKzBya0xHTXJ5UnRydWtYT2dYQnY3Z2NybVU3RzFqQzJhN1dxbWVJ
OFFJREFRQUJvMUF3VGpBZEJnTlYiCisgICAgICAgICJIUTRFRmdRVWkzWFZyTXNJdmc0ZlpiZjZW
cjVzcDNYYWhhOHdId1lEVlIwakJCZ3dGb0FVaTNYVnJNc0l2ZzRmIgorICAgICAgICAiWmJmNlZy
NXNwM1hhaGE4d0RBWURWUjBUQkFVd0F3RUIvekFOQmdrcWhraUc5dzBCQVFVRkFBT0JnUUE3Nkho
dCIKKyAgICAgICAgImxkWTlhdmNUR1N3YndvaXVJcXYwalRMMWZIRm56eTNSSE1MRGgrTHB2b2xj
NURTclNKSENQNVd1SzBlZUpYaHIiCisgICAgICAgICJUNW9RcEhMOXovY0NETEFLQ0tSYTR1VjBm
aEVkT1dCcXlSOXA4eTVqSnR5ZTcydDZDdUZVVjVpcWNwRjRCSDRmIgorICAgICAgICAiajJWTkh3
c1NySndrRDRRVUdsVXRIN3Z3blFteUNGeFpNbVdBSmc9PSIpOworICAgICAgICBWZWN0b3I8dWlu
dDhfdD4gY2VydERFUjsKKyAgICAgICAgYmFzZTY0RGVjb2RlKGNlcnRQRU0sIGNlcnRERVIsIFdU
Rjo6QmFzZTY0RGVjb2RlT3B0aW9uczo6QmFzZTY0RGVmYXVsdCk7CisgICAgICAgIHNzbDo6dW5p
cXVlX3B0cjxDUllQVE9fQlVGRkVSPiBjZXJ0KENSWVBUT19CVUZGRVJfbmV3KGNlcnRERVIuZGF0
YSgpLCBjZXJ0REVSLnNpemUoKSwgbnVsbHB0cikpOworICAgICAgICBBU1NFUlQoY2VydCk7CiAK
ICAgICAgICAgLy8gVGhpcyBpcyBhIHRlc3Qga2V5IGZyb20gQm9yaW5nU1NMLgogICAgICAgICBj
aGFyIGtLZXlQRU1bXSA9CkBAIC0xODYsMTkgKzE3OSwzMyBAQCBUQ1BTZXJ2ZXI6OlRDUFNlcnZl
cihQcm90b2NvbCBwcm90b2NvbCwgCiAgICAgICAgICJtb1pXZ2pIdkIyVzlDa243c0Rxc1BCK1Uy
dHlYMGpvRGRRRXl1aU1FQ0RZOG9RPT1cbiIKICAgICAgICAgIi0tLS0tRU5EIFJTQSBQUklWQVRF
IEtFWS0tLS0tXG4iOwogCi0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxCSU8sIGRlbGV0ZXI8QklP
Pj4gcHJpdmF0ZUtleUJJTyhCSU9fbmV3X21lbV9idWYoa0tleVBFTSwgc3RybGVuKGtLZXlQRU0p
KSk7Ci0gICAgICAgIHN0ZDo6dW5pcXVlX3B0cjxFVlBfUEtFWSwgZGVsZXRlcjxFVlBfUEtFWT4+
IHByaXZhdGVLZXkoUEVNX3JlYWRfYmlvX1ByaXZhdGVLZXkocHJpdmF0ZUtleUJJTy5nZXQoKSwg
bnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0cikpOworICAgICAgICBzc2w6OnVuaXF1ZV9wdHI8QklP
PiBwcml2YXRlS2V5QklPKEJJT19uZXdfbWVtX2J1ZihrS2V5UEVNLCBzdHJsZW4oa0tleVBFTSkp
KTsKKyAgICAgICAgc3NsOjp1bmlxdWVfcHRyPEVWUF9QS0VZPiBwcml2YXRlS2V5KFBFTV9yZWFk
X2Jpb19Qcml2YXRlS2V5KHByaXZhdGVLZXlCSU8uZ2V0KCksIG51bGxwdHIsIG51bGxwdHIsIG51
bGxwdHIpKTsKICAgICAgICAgQVNTRVJUKHByaXZhdGVLZXkpOwotICAgICAgICBTU0xfQ1RYX3Vz
ZV9Qcml2YXRlS2V5KGN0eC5nZXQoKSwgcHJpdmF0ZUtleS5nZXQoKSk7CiAKLSAgICAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFNTTCwgZGVsZXRlcjxTU0w+PiBzc2woU1NMX25ldyhjdHguZ2V0KCkpKTsK
KyAgICAgICAgU1NMX0NUWF9zZXRfY2hhaW5fYW5kX2tleShjdHguZ2V0KCksIHJlaW50ZXJwcmV0
X2Nhc3Q8Q1JZUFRPX0JVRkZFUiAqY29uc3QgKj4oJmNlcnQpLCAxLCBwcml2YXRlS2V5LmdldCgp
LCBudWxscHRyKTsKKworICAgICAgICBpZiAocHJvdG9jb2wgPT0gUHJvdG9jb2w6OkhUVFBTV2l0
aENsaWVudENlcnRpZmljYXRlUmVxdWVzdCkgeworICAgICAgICAgICAgU1NMX0NUWF9zZXRfY3Vz
dG9tX3ZlcmlmeShjdHguZ2V0KCksIFNTTF9WRVJJRllfUEVFUiB8IFNTTF9WRVJJRllfRkFJTF9J
Rl9OT19QRUVSX0NFUlQsIFtdIChTU0wqIHNzbCwgdWludDhfdCopIC0+IHNzbF92ZXJpZnlfcmVz
dWx0X3QgeworICAgICAgICAgICAgICAgIGF1dG8gY2hhaW4gPSBTU0xfZ2V0MF9wZWVyX2NlcnRp
ZmljYXRlcyhzc2wpOworICAgICAgICAgICAgICAgIEVYUEVDVF9FUShza19DUllQVE9fQlVGRkVS
X251bShjaGFpbiksIDJ1KTsKKyAgICAgICAgICAgICAgICBhdXRvIGNlcnQgPSBza19DUllQVE9f
QlVGRkVSX3ZhbHVlKGNoYWluLCAwKTsKKyAgICAgICAgICAgICAgICBhdXRvIGV4cGVjdGVkQ2Vy
dCA9IHRlc3RDZXJ0aWZpY2F0ZSgpOworICAgICAgICAgICAgICAgIEVYUEVDVF9FUShDUllQVE9f
QlVGRkVSX2xlbihjZXJ0KSwgZXhwZWN0ZWRDZXJ0LnNpemUoKSk7CisgICAgICAgICAgICAgICAg
RVhQRUNUX1RSVUUoIW1lbWNtcChDUllQVE9fQlVGRkVSX2RhdGEoY2VydCksIGV4cGVjdGVkQ2Vy
dC5kYXRhKCksIGV4cGVjdGVkQ2VydC5zaXplKCkpKTsKKyAgICAgICAgICAgICAgICByZXR1cm4g
c3NsX3ZlcmlmeV9vazsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAgaWYg
KG1heFRMU1ZlcnNpb24pCisgICAgICAgICAgICBTU0xfQ1RYX3NldF9tYXhfcHJvdG9fdmVyc2lv
bihjdHguZ2V0KCksICptYXhUTFNWZXJzaW9uKTsKKworICAgICAgICBzc2w6OnVuaXF1ZV9wdHI8
U1NMPiBzc2woU1NMX25ldyhjdHguZ2V0KCkpKTsKICAgICAgICAgQVNTRVJUKHNzbCk7CiAgICAg
ICAgIFNTTF9zZXRfZmQoc3NsLmdldCgpLCBzb2NrZXQpOwogCiAgICAgICAgIGF1dG8gYWNjZXB0
UmVzdWx0ID0gU1NMX2FjY2VwdChzc2wuZ2V0KCkpOwotICAgICAgICBBU1NFUlRfVU5VU0VEKGFj
Y2VwdFJlc3VsdCwgYWNjZXB0UmVzdWx0ID4gMCk7Ci0gICAgICAgIAotICAgICAgICBzZWN1cmVD
b25uZWN0aW9uSGFuZGxlcihzc2wuZ2V0KCkpOworICAgICAgICBzZWN1cmVDb25uZWN0aW9uSGFu
ZGxlcihhY2NlcHRSZXN1bHQgPiAwID8gc3NsLmdldCgpIDogbnVsbHB0cik7CiAgICAgfTsKIAog
ICAgIHN3aXRjaCAocHJvdG9jb2wpIHsKQEAgLTIzOSw2ICsyNDYsNyBAQCB2b2lkIFRDUFNlcnZl
cjo6bGlzdGVuRm9yQ29ubmVjdGlvbnMoc2l6CiAgICAgICAgICAgICAgICAgY2xvc2UoY29ubmVj
dGlvblNvY2tldCk7CiAgICAgICAgICAgICB9KSk7CiAgICAgICAgIH0KKyAgICAgICAgY2xvc2Uo
bGlzdGVuaW5nU29ja2V0KTsKICAgICB9KTsKIH0KIApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQ
SS9UQ1BTZXJ2ZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1RDUFNlcnZl
ci5oCShyZXZpc2lvbiAyNDk2NzEpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1RDUFNlcnZlci5o
CSh3b3JraW5nIGNvcHkpCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlIDx0aHJlYWQ+CiAj
aW5jbHVkZSA8d3RmL0Z1bmN0aW9uLmg+CisjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CiAjaW5j
bHVkZSA8d3RmL1ZlY3Rvci5oPgogCiAjaWYgSEFWRShTU0wpCkBAIC00Niw3ICs0Nyw3IEBAIHB1
YmxpYzoKICAgICBlbnVtIGNsYXNzIFByb3RvY29sIDogdWludDhfdCB7CiAgICAgICAgIEhUVFBT
LCBIVFRQU1Byb3h5LCBIVFRQU1dpdGhDbGllbnRDZXJ0aWZpY2F0ZVJlcXVlc3QKICAgICB9Owot
ICAgIFRDUFNlcnZlcihQcm90b2NvbCwgRnVuY3Rpb248dm9pZChTU0wqKT4mJik7CisgICAgVENQ
U2VydmVyKFByb3RvY29sLCBGdW5jdGlvbjx2b2lkKFNTTCopPiYmLCBPcHRpb25hbDx1aW50MTZf
dD4gbWF4VExTVmVyc2lvbiA9IFdURjo6bnVsbG9wdCk7CiAjZW5kaWYgLy8gSEFWRShTU0wpCiAg
ICAgflRDUFNlcnZlcigpOwogICAgIApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2Vi
S2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVz
dFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlz
aW9uIDI0OTY3MSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0xODY1LDYgKzE4NjUsNyBAQAog
CQk1QzY5QkRENDFGODJBN0VCMDAwRjRGNEIgLyogSmF2YVNjcmlwdER1cmluZ05hdmlnYXRpb24u
bW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBKYXZhU2NyaXB0RHVy
aW5nTmF2aWdhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM2RTI3QTYy
MjRFRUJFQTAwMTI4NzM2IC8qIFVSTENhbm9uaWNhbGl6YXRpb24ubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBVUkxDYW5vbmljYWxpemF0aW9uLm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1QzcxNDg5NDIxMjNBNDA3MDBGREUzQzUgLyogV0tXZWJz
aXRlRGF0YXN0b3JlLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
V0tXZWJzaXRlRGF0YXN0b3JlLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1Qzcz
QTgxQTIzMjMwNTk4MDBERUE4NUEgLyogVExTRGVwcmVjYXRpb24ubW0gKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBUTFNEZXByZWNhdGlvbi5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNUM3NTcxNUYyMjEyNDlCRDAwQjlFNUFDIC8qIEJ1bmRsZVJldGFp
blBhZ2VQbHVnSW4ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBC
dW5kbGVSZXRhaW5QYWdlUGx1Z0luLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
Qzc5NjQwRjFFQjAyNjlCMDA3NUQ3NEMgLyogRXZlbnRNb2RpZmllcnMuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXZlbnRNb2RpZmllcnMuY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1QzdDNzRDQTFGQjUyOEQ0MDAyRjlBQkUgLyogV2ViVmlld1Nj
aGVkdWxlSW5SdW5Mb29wLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRo
ID0gV2ViVmlld1NjaGVkdWxlSW5SdW5Mb29wLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwpAQCAtMjg3Myw2ICsyODc0LDcgQEAKIAkJCQlGNENENzRDODIwRkRCNDk2MDBERTM3OTQgLyog
VGVzdFVSTFNjaGVtZUhhbmRsZXIubW0gKi8sCiAJCQkJNUMxNkY4RkIyMzBDOTQyQjAwNzRDNEE4
IC8qIFRleHRTaXplLm1tICovLAogCQkJCUMyMkZBMzJBMjI4Rjg3MDgwMDlENzk4OCAvKiBUZXh0
V2lkdGgubW0gKi8sCisJCQkJNUM3M0E4MUEyMzIzMDU5ODAwREVBODVBIC8qIFRMU0RlcHJlY2F0
aW9uLm1tICovLAogCQkJCTVDQjQwQjREMUY0Qjk4QkUwMDdEQzdCOSAvKiBVSURlbGVnYXRlLm1t
ICovLAogCQkJCTVDM0E3N0E5MjJGMjBCOEEwMDM4MjdGRiAvKiBVcGxvYWREaXJlY3RvcnkubW0g
Ki8sCiAJCQkJN0NDM0UxRkExOTdFMjM0MTAwQkU2MjUyIC8qIFVzZXJDb250ZW50Q29udHJvbGxl
ci5tbSAqLywKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvVExT
RGVwcmVjYXRpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9X
ZWJLaXRDb2NvYS9UTFNEZXByZWNhdGlvbi5tbQkobm9uZXhpc3RlbnQpCisrKyBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL1RMU0RlcHJlY2F0aW9uLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsMTkzIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIElu
Yy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
CisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVENQU2VydmVyLmgiCisj
aW1wb3J0ICJUZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgiCisjaW1wb3J0ICJUZXN0V0tXZWJWaWV3
LmgiCisjaW1wb3J0ICJXZWJDb3JlVGVzdFN1cHBvcnQuaCIKKyNpbXBvcnQgPFdlYktpdC9XS1By
b2Nlc3NQb29sUHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L1dlYktpdC5oPgorI2ltcG9ydCA8
d3RmL1JldGFpblB0ci5oPgorCitAaW50ZXJmYWNlIFdlYlNvY2tldERlbGVnYXRlIDogTlNPYmpl
Y3QgPFdLVUlEZWxlZ2F0ZSwgV2ViVUlEZWxlZ2F0ZT4KKy0gKE5TU3RyaW5nICopd2FpdEZvck1l
c3NhZ2U7CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBXZWJTb2NrZXREZWxlZ2F0ZSB7CisgICAg
UmV0YWluUHRyPE5TU3RyaW5nPiBfbWVzc2FnZTsKK30KKworLSAoTlNTdHJpbmcgKil3YWl0Rm9y
TWVzc2FnZQoreworICAgIHdoaWxlICghX21lc3NhZ2UpCisgICAgICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnNwaW5SdW5Mb29wKCk7CisgICAgcmV0dXJuIF9tZXNzYWdlLmF1dG9yZWxlYXNlKCk7
Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBydW5KYXZhU2NyaXB0
QWxlcnRQYW5lbFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgaW5pdGlhdGVkQnlGcmFt
ZTooV0tGcmFtZUluZm8gKilmcmFtZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkp
Y29tcGxldGlvbkhhbmRsZXIKK3sKKyAgICBfbWVzc2FnZSA9IG1lc3NhZ2U7CisgICAgY29tcGxl
dGlvbkhhbmRsZXIoKTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXZWJWaWV3ICopc2VuZGVyIHJ1
bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2U6KE5TU3RyaW5nICopbWVzc2FnZSBpbml0
aWF0ZWRCeUZyYW1lOihXZWJGcmFtZSAqKWZyYW1lCit7CisgICAgX21lc3NhZ2UgPSBtZXNzYWdl
OworfQorCitAZW5kCisKK25hbWVzcGFjZSBUZXN0V2ViS2l0QVBJIHsKKworY29uc3QgdWludDE2
X3QgdGxzMV8xID0gMHgwMzAyOworc3RhdGljIE5TU3RyaW5nICpkZWZhdWx0c0tleSA9IEAiV2Vi
S2l0RW5hYmxlTGVnYWN5VExTIjsKKworVEVTVChXZWJLaXQsIFRMU1ZlcnNpb25XZWJTb2NrZXQp
Cit7CisgICAgYXV0byBnZXRXZWJTb2NrZXRFdmVudCA9IFtdIChib29sIGNsaWVudEFsbG93RGVw
cmVjYXRlZFRMUywgYm9vbCBzZXJ2ZXJMaW1pdFRMUykgeworICAgICAgICBPcHRpb25hbDx1aW50
MTZfdD4gbWF4U2VydmVyVExTVmVyc2lvbjsKKyAgICAgICAgaWYgKHNlcnZlckxpbWl0VExTKQor
ICAgICAgICAgICAgbWF4U2VydmVyVExTVmVyc2lvbiA9IHRsczFfMTsKKyAgICAgICAgVENQU2Vy
dmVyIHNlcnZlcihUQ1BTZXJ2ZXI6OlByb3RvY29sOjpIVFRQUywgWz1dKFNTTCAqc3NsKSB7Cisg
ICAgICAgICAgICBFWFBFQ1RfVFJVRSghc3NsID09IChjbGllbnRBbGxvd0RlcHJlY2F0ZWRUTFMg
IT0gc2VydmVyTGltaXRUTFMpKTsKKyAgICAgICAgfSwgbWF4U2VydmVyVExTVmVyc2lvbik7CisK
KyAgICAgICAgaWYgKGNsaWVudEFsbG93RGVwcmVjYXRlZFRMUykKKyAgICAgICAgICAgIFtbTlNV
c2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldEJvb2w6WUVTIGZvcktleTpkZWZh
dWx0c0tleV07CisgICAgICAgIAorICAgICAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtUZXN0
V0tXZWJWaWV3IG5ld10pOworICAgICAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHROUyhbV2ViU29j
a2V0RGVsZWdhdGUgbmV3XSk7CisgICAgICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdh
dGUuZ2V0KCldOworICAgICAgICBbd2ViVmlldyBzeW5jaHJvbm91c2x5TG9hZEhUTUxTdHJpbmc6
QCJzdGFydCBuZXR3b3JrIHByb2Nlc3MiXTsKKyAgICAgICAgW1t3ZWJWaWV3IGNvbmZpZ3VyYXRp
b25dLnByb2Nlc3NQb29sIF9hbGxvd0FueVRMU0NlcnRpZmljYXRlRm9yV2ViU29ja2V0VGVzdGlu
Z107CisgICAgICAgIFt3ZWJWaWV3IHN5bmNocm9ub3VzbHlMb2FkSFRNTFN0cmluZzpbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDoKKyAgICAgICAgICAgIEAiPHNjcmlwdD4iCisgICAgICAgICAg
ICAiY29uc3Qgc29ja2V0ID0gbmV3IFdlYlNvY2tldCgnd3NzOi8vbG9jYWxob3N0OiVkJyk7Igor
ICAgICAgICAgICAgInNvY2tldC5vbmNsb3NlID0gZnVuY3Rpb24oZXZlbnQpeyBhbGVydCgnY2xv
c2UnKTsgfTsiCisgICAgICAgICAgICAic29ja2V0Lm9uZXJyb3IgPSBmdW5jdGlvbihldmVudCl7
IGFsZXJ0KCdlcnJvcjogJyArIGV2ZW50LmRhdGEpOyB9OyIKKyAgICAgICAgICAgICI8L3Njcmlw
dD4iLCBzZXJ2ZXIucG9ydCgpXV07CisgICAgICAgIE5TU3RyaW5nICptZXNzYWdlID0gW2RlbGVn
YXRlIHdhaXRGb3JNZXNzYWdlXTsKKyAgICAgICAgCisgICAgICAgIGlmIChjbGllbnRBbGxvd0Rl
cHJlY2F0ZWRUTFMpCisgICAgICAgICAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRl
ZmF1bHRzXSByZW1vdmVPYmplY3RGb3JLZXk6ZGVmYXVsdHNLZXldOworCisgICAgICAgIHJldHVy
biBtZXNzYWdlOworICAgIH07CisKKyAgICBFWFBFQ1RfV0tfU1RSRVEoZ2V0V2ViU29ja2V0RXZl
bnQodHJ1ZSwgdHJ1ZSksICJjbG9zZSIpOworICAgIEVYUEVDVF9XS19TVFJFUShnZXRXZWJTb2Nr
ZXRFdmVudChmYWxzZSwgdHJ1ZSksICJlcnJvcjogdW5kZWZpbmVkIik7CisgICAgRVhQRUNUX1dL
X1NUUkVRKGdldFdlYlNvY2tldEV2ZW50KGZhbHNlLCBmYWxzZSksICJjbG9zZSIpOworfQorCitO
U1N0cmluZyAqZ2V0V2ViU29ja2V0RXZlbnRXZWJLaXRMZWdhY3koYm9vbCBjbGllbnRBbGxvd0Rl
cHJlY2F0ZWRUTFMsIGJvb2wgc2VydmVyTGltaXRUTFMpCit7CisgICAgT3B0aW9uYWw8dWludDE2
X3Q+IG1heFNlcnZlclRMU1ZlcnNpb247CisgICAgaWYgKHNlcnZlckxpbWl0VExTKQorICAgICAg
ICBtYXhTZXJ2ZXJUTFNWZXJzaW9uID0gdGxzMV8xOworICAgIFRDUFNlcnZlciBzZXJ2ZXIoVENQ
U2VydmVyOjpQcm90b2NvbDo6SFRUUFMsIFs9XShTU0wgKnNzbCkgeworICAgICAgICBFWFBFQ1Rf
VFJVRSghc3NsID09IChjbGllbnRBbGxvd0RlcHJlY2F0ZWRUTFMgIT0gc2VydmVyTGltaXRUTFMp
KTsKKyAgICB9LCBtYXhTZXJ2ZXJUTFNWZXJzaW9uKTsKKworICAgIGlmIChjbGllbnRBbGxvd0Rl
cHJlY2F0ZWRUTFMpCisgICAgICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVs
dHNdIHNldEJvb2w6WUVTIGZvcktleTpkZWZhdWx0c0tleV07CisgICAgCisgICAgYXV0byB3ZWJW
aWV3ID0gYWRvcHROUyhbV2ViVmlldyBuZXddKTsKKyAgICBhdXRvIGRlbGVnYXRlID0gYWRvcHRO
UyhbV2ViU29ja2V0RGVsZWdhdGUgbmV3XSk7CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpk
ZWxlZ2F0ZS5nZXQoKV07CisgICAgV2ViQ29yZVRlc3RTdXBwb3J0OjpzZXRBbGxvd3NBbnlTU0xD
ZXJ0aWZpY2F0ZSh0cnVlKTsKKyAgICBbW3dlYlZpZXcgbWFpbkZyYW1lXSBsb2FkSFRNTFN0cmlu
ZzpbTlNTdHJpbmcgc3RyaW5nV2l0aEZvcm1hdDoKKyAgICAgICAgQCI8c2NyaXB0PiIKKyAgICAg
ICAgImNvbnN0IHNvY2tldCA9IG5ldyBXZWJTb2NrZXQoJ3dzczovL2xvY2FsaG9zdDolZCcpOyIK
KyAgICAgICAgInNvY2tldC5vbmNsb3NlID0gZnVuY3Rpb24oZXZlbnQpeyBhbGVydCgnY2xvc2Un
KTsgfTsiCisgICAgICAgICJzb2NrZXQub25lcnJvciA9IGZ1bmN0aW9uKGV2ZW50KXsgYWxlcnQo
J2Vycm9yOiAnICsgZXZlbnQuZGF0YSk7IH07IgorICAgICAgICAiPC9zY3JpcHQ+Iiwgc2VydmVy
LnBvcnQoKV0gYmFzZVVSTDpuaWxdOworICAgIE5TU3RyaW5nICptZXNzYWdlID0gW2RlbGVnYXRl
IHdhaXRGb3JNZXNzYWdlXTsKKworICAgIGlmIChjbGllbnRBbGxvd0RlcHJlY2F0ZWRUTFMpCisg
ICAgICAgIFtbTlNVc2VyRGVmYXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHJlbW92ZU9iamVj
dEZvcktleTpkZWZhdWx0c0tleV07CisKKyAgICByZXR1cm4gbWVzc2FnZTsKK30KKworVEVTVChX
ZWJLaXQsIFRMU1ZlcnNpb25XZWJTb2NrZXRXZWJLaXRMZWdhY3kxKQoreworICAgIEVYUEVDVF9X
S19TVFJFUShnZXRXZWJTb2NrZXRFdmVudFdlYktpdExlZ2FjeSh0cnVlLCB0cnVlKSwgImNsb3Nl
Iik7Cit9CisKK1RFU1QoV2ViS2l0LCBUTFNWZXJzaW9uV2ViU29ja2V0V2ViS2l0TGVnYWN5MikK
K3sKKyAgICBFWFBFQ1RfV0tfU1RSRVEoZ2V0V2ViU29ja2V0RXZlbnRXZWJLaXRMZWdhY3koZmFs
c2UsIHRydWUpLCAiY2xvc2UiKTsKK30KKworVEVTVChXZWJLaXQsIFRMU1ZlcnNpb25XZWJTb2Nr
ZXRXZWJLaXRMZWdhY3kzKQoreworICAgIEVYUEVDVF9XS19TVFJFUShnZXRXZWJTb2NrZXRFdmVu
dFdlYktpdExlZ2FjeShmYWxzZSwgZmFsc2UpLCAiY2xvc2UiKTsKK30KKworVEVTVChXZWJLaXQs
IFRMU1ZlcnNpb25OZXR3b3JrU2Vzc2lvbikKK3sKKyAgICBzdGF0aWMgYXV0byBkZWxlZ2F0ZSA9
IGFkb3B0TlMoW1Rlc3ROYXZpZ2F0aW9uRGVsZWdhdGUgbmV3XSk7CisgICAgYXV0byBtYWtlV2Vi
Vmlld1dpdGggPSBbJl0gKFdLV2Vic2l0ZURhdGFTdG9yZSAqc3RvcmUpIHsKKyAgICAgICAgV0tX
ZWJWaWV3Q29uZmlndXJhdGlvbiAqY29uZmlndXJhdGlvbiA9IFtbW1dLV2ViVmlld0NvbmZpZ3Vy
YXRpb24gYWxsb2NdIGluaXRdIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgY29uZmlndXJhdGlvbi53
ZWJzaXRlRGF0YVN0b3JlID0gc3RvcmU7CisgICAgICAgIGF1dG8gd2ViVmlldyA9IGFkb3B0TlMo
W1tXS1dlYlZpZXcgYWxsb2NdIGluaXRXaXRoRnJhbWU6TlNNYWtlUmVjdCgwLCAwLCA4MDAsIDYw
MCkgY29uZmlndXJhdGlvbjpjb25maWd1cmF0aW9uXSk7CisgICAgICAgIFt3ZWJWaWV3IHNldE5h
dmlnYXRpb25EZWxlZ2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisgICAgICAgIFtkZWxlZ2F0ZSBzZXRE
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6XihXS1dlYlZpZXcgKiwgTlNVUkxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZSAqY2hhbGxlbmdlLCB2b2lkICheY2FsbGJhY2spKE5TVVJMU2Vz
c2lvbkF1dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICopKSB7CisgICAg
ICAgICAgICBjYWxsYmFjayhOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlVXNlQ3JlZGVudGlhbCwg
W05TVVJMQ3JlZGVudGlhbCBjcmVkZW50aWFsRm9yVHJ1c3Q6Y2hhbGxlbmdlLnByb3RlY3Rpb25T
cGFjZS5zZXJ2ZXJUcnVzdF0pOworICAgICAgICB9XTsKKyAgICAgICAgcmV0dXJuIHdlYlZpZXc7
CisgICAgfTsKKyAgICB7CisgICAgICAgIFRDUFNlcnZlciBzZXJ2ZXIoVENQU2VydmVyOjpQcm90
b2NvbDo6SFRUUFMsIFtdKFNTTCAqc3NsKSB7CisgICAgICAgICAgICBFWFBFQ1RfRkFMU0Uoc3Ns
KTsKKyAgICAgICAgfSwgdGxzMV8xKTsKKyAgICAgICAgYXV0byB3ZWJWaWV3ID0gbWFrZVdlYlZp
ZXdXaXRoKFtXS1dlYnNpdGVEYXRhU3RvcmUgZGVmYXVsdERhdGFTdG9yZV0pOworICAgICAgICBb
d2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVlc3RXaXRoVVJMOltOU1VSTCBV
UkxXaXRoU3RyaW5nOltOU1N0cmluZyBzdHJpbmdXaXRoRm9ybWF0OkAiaHR0cHM6Ly8xMjcuMC4w
LjE6JWQvIiwgc2VydmVyLnBvcnQoKV1dXV07CisgICAgICAgIFtkZWxlZ2F0ZSB3YWl0Rm9yRGlk
RmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbl07CisgICAgfQorICAgIHsKKyAgICAgICAgVENQU2Vy
dmVyIHNlcnZlcihUQ1BTZXJ2ZXI6OlByb3RvY29sOjpIVFRQUywgW10oU1NMICpzc2wpIHsKKyAg
ICAgICAgICAgIEVYUEVDVF9GQUxTRShzc2wpOworICAgICAgICB9LCB0bHMxXzEpOworICAgICAg
ICBhdXRvIHdlYlZpZXcgPSBtYWtlV2ViVmlld1dpdGgoW1dLV2Vic2l0ZURhdGFTdG9yZSBub25Q
ZXJzaXN0ZW50RGF0YVN0b3JlXSk7CisgICAgICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VS
TFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6W05TVVJMIFVSTFdpdGhTdHJpbmc6W05TU3RyaW5nIHN0
cmluZ1dpdGhGb3JtYXQ6QCJodHRwczovLzEyNy4wLjAuMTolZC8iLCBzZXJ2ZXIucG9ydCgpXV1d
XTsKKyAgICAgICAgW2RlbGVnYXRlIHdhaXRGb3JEaWRGYWlsUHJvdmlzaW9uYWxOYXZpZ2F0aW9u
XTsKKyAgICB9CisgICAgeworICAgICAgICBUQ1BTZXJ2ZXIgc2VydmVyKFRDUFNlcnZlcjo6UHJv
dG9jb2w6OkhUVFBTLCBbXShTU0wgKnNzbCkgeworICAgICAgICAgICAgVENQU2VydmVyOjpyZXNw
b25kV2l0aE9LKHNzbCk7CisgICAgICAgIH0sIHRsczFfMSk7CisgICAgICAgIFtbTlNVc2VyRGVm
YXVsdHMgc3RhbmRhcmRVc2VyRGVmYXVsdHNdIHNldEJvb2w6WUVTIGZvcktleTpkZWZhdWx0c0tl
eV07CisgICAgICAgIGF1dG8gd2ViVmlldyA9IG1ha2VXZWJWaWV3V2l0aChbV0tXZWJzaXRlRGF0
YVN0b3JlIGRlZmF1bHREYXRhU3RvcmVdKTsKKyAgICAgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6
W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpbTlNVUkwgVVJMV2l0aFN0cmluZzpbTlNTdHJp
bmcgc3RyaW5nV2l0aEZvcm1hdDpAImh0dHBzOi8vMTI3LjAuMC4xOiVkLyIsIHNlcnZlci5wb3J0
KCldXV1dOworICAgICAgICBbZGVsZWdhdGUgd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb25dOwor
ICAgICAgICBbW05TVXNlckRlZmF1bHRzIHN0YW5kYXJkVXNlckRlZmF1bHRzXSByZW1vdmVPYmpl
Y3RGb3JLZXk6ZGVmYXVsdHNLZXldOworICAgIH0KK30KKworfQpJbmRleDogVG9vbHMvVGVzdFdl
YktpdEFQSS9jb2NvYS9UZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9v
bHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0TmF2aWdhdGlvbkRlbGVnYXRlLmgJKHJldmlzaW9u
IDI0OTY3MSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2EvVGVzdE5hdmlnYXRpb25EZWxl
Z2F0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNyw5ICszNywxMSBAQAogQHByb3BlcnR5IChub25h
dG9taWMsIGNvcHkpIHZvaWQgKF5kaWRGaW5pc2hOYXZpZ2F0aW9uKShXS1dlYlZpZXcgKiwgV0tO
YXZpZ2F0aW9uICopOwogQHByb3BlcnR5IChub25hdG9taWMsIGNvcHkpIHZvaWQgKF5yZW5kZXJp
bmdQcm9ncmVzc0RpZENoYW5nZSkoV0tXZWJWaWV3ICosIF9XS1JlbmRlcmluZ1Byb2dyZXNzRXZl
bnRzKTsKIEBwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5KSB2b2lkIChed2ViQ29udGVudFByb2Nl
c3NEaWRUZXJtaW5hdGUpKFdLV2ViVmlldyAqKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBjb3B5
KSB2b2lkICheZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKShXS1dlYlZpZXcgKiwg
TlNVUkxBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSAqLCB2b2lkICheKShOU1VSTFNlc3Npb25BdXRo
Q2hhbGxlbmdlRGlzcG9zaXRpb24sIE5TVVJMQ3JlZGVudGlhbCAqKSk7CiAKIC0gKHZvaWQpd2Fp
dEZvckRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uOwogLSAodm9pZCl3YWl0Rm9yRGlkRmlu
aXNoTmF2aWdhdGlvbjsKKy0gKHZvaWQpd2FpdEZvckRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRp
b247CiAKIEBlbmQKIApJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9jb2NvYS9UZXN0TmF2aWdh
dGlvbkRlbGVnYXRlLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvY29jb2Ev
VGVzdE5hdmlnYXRpb25EZWxlZ2F0ZS5tbQkocmV2aXNpb24gMjQ5NjcxKQorKysgVG9vbHMvVGVz
dFdlYktpdEFQSS9jb2NvYS9UZXN0TmF2aWdhdGlvbkRlbGVnYXRlLm1tCSh3b3JraW5nIGNvcHkp
CkBAIC03NSw2ICs3NSwxNCBAQCAtICh2b2lkKV93ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3
IHJlCiAgICAgICAgIF9yZW5kZXJpbmdQcm9ncmVzc0RpZENoYW5nZSh3ZWJWaWV3LCBwcm9ncmVz
c0V2ZW50cyk7CiB9CiAKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2U6KE5TVVJMQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UgKiljaGFsbGVuZ2UgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKE5TVVJMU2Vzc2lvbkF1
dGhDaGFsbGVuZ2VEaXNwb3NpdGlvbiwgTlNVUkxDcmVkZW50aWFsICopKWNvbXBsZXRpb25IYW5k
bGVyCit7CisgICAgaWYgKF9kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCisgICAg
ICAgIF9kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uod2ViVmlldywgY2hhbGxlbmdl
LCBjb21wbGV0aW9uSGFuZGxlcik7CisgICAgZWxzZQorICAgICAgICBjb21wbGV0aW9uSGFuZGxl
cihOU1VSTFNlc3Npb25BdXRoQ2hhbGxlbmdlUGVyZm9ybURlZmF1bHRIYW5kbGluZywgbmlsKTsK
K30KKwogLSAodm9pZCl3YWl0Rm9yRGlkU3RhcnRQcm92aXNpb25hbE5hdmlnYXRpb24KIHsKICAg
ICBFWFBFQ1RfRkFMU0Uoc2VsZi5kaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbik7CkBAIC0x
MDMsNiArMTExLDIwIEBAIC0gKHZvaWQpd2FpdEZvckRpZEZpbmlzaE5hdmlnYXRpb24KICAgICBz
ZWxmLmRpZEZpbmlzaE5hdmlnYXRpb24gPSBuaWw7CiB9CiAKKy0gKHZvaWQpd2FpdEZvckRpZEZh
aWxQcm92aXNpb25hbE5hdmlnYXRpb24KK3sKKyAgICBFWFBFQ1RfRkFMU0Uoc2VsZi5kaWRGYWls
UHJvdmlzaW9uYWxOYXZpZ2F0aW9uKTsKKworICAgIF9fYmxvY2sgYm9vbCBmaW5pc2hlZCA9IGZh
bHNlOworICAgIHNlbGYuZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbiA9IF4oV0tXZWJWaWV3
ICosIFdLTmF2aWdhdGlvbiAqLCBOU0Vycm9yICopIHsKKyAgICAgICAgZmluaXNoZWQgPSB0cnVl
OworICAgIH07CisKKyAgICBUZXN0V2ViS2l0QVBJOjpVdGlsOjpydW4oJmZpbmlzaGVkKTsKKwor
ICAgIHNlbGYuZGlkRmFpbFByb3Zpc2lvbmFsTmF2aWdhdGlvbiA9IG5pbDsKK30KKwogQGVuZAog
CiBAaW1wbGVtZW50YXRpb24gV0tXZWJWaWV3IChUZXN0V2ViS2l0QVBJRXh0cmFzKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>