<?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>144032</bug_id>
          
          <creation_ts>2015-04-21 19:33:38 -0700</creation_ts>
          <short_desc>WKWebsiteDataStore doesn&apos;t track and remove IndexedDB databases</short_desc>
          <delta_ts>2021-08-11 14:30:22 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Anders Carlsson">andersca</reporter>
          <assigned_to name="Anders Carlsson">andersca</assigned_to>
          <cc>commit-queue</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1087283</commentid>
    <comment_count>0</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-04-21 19:33:38 -0700</bug_when>
    <thetext>WKWebsiteDataStore doesn&apos;t track and remove IndexedDB databases</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087285</commentid>
    <comment_count>1</comment_count>
      <attachid>251294</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-04-21 19:36:22 -0700</bug_when>
    <thetext>Created attachment 251294
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087286</commentid>
    <comment_count>2</comment_count>
      <attachid>251295</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-04-21 19:37:04 -0700</bug_when>
    <thetext>Created attachment 251295
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087290</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-04-21 19:39:01 -0700</bug_when>
    <thetext>Attachment 251295 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/Databases/DatabaseProcessProxy.cpp:88:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Databases/DatabaseProcessProxy.cpp:98:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Databases/DatabaseProcessProxy.cpp:106:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Databases/DatabaseProcessProxy.h:51:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Databases/DatabaseProcessProxy.h:52:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Databases/DatabaseProcessProxy.h:53:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Databases/DatabaseProcessProxy.h:88:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Databases/DatabaseProcessProxy.h:89:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/UIProcess/Databases/DatabaseProcessProxy.h:90:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp:205:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp:222:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp:250:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp:251:  Wrong number of spaces before statement. (expected: 12)  [whitespace/indent] [4]
ERROR: Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp:262:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp:282:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp:294:  Extra space before ( in function call  [whitespace/parens] [4]
ERROR: Source/WebKit2/DatabaseProcess/DatabaseProcess.cpp:303:  Missing space around : in range-based for statement  [whitespace/colon] [4]
Total errors found: 17 in 13 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087291</commentid>
    <comment_count>4</comment_count>
      <attachid>251294</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-04-21 19:39:48 -0700</bug_when>
    <thetext>Comment on attachment 251294
Patch

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

&gt; Source/WebKit2/UIProcess/API/Cocoa/WKWebsiteDataRecord.mm:66
&gt; +        [array addObject:@&quot;Indexed DB&quot;];

is it really ever &quot;Indexed DB&quot;? I see &quot;Indexed Database&quot; and &quot;IndexedDB&quot;, but never &quot;Indexed DB&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087293</commentid>
    <comment_count>5</comment_count>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2015-04-21 19:48:02 -0700</bug_when>
    <thetext>Committed r183093: &lt;http://trac.webkit.org/changeset/183093&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1783636</commentid>
    <comment_count>6</comment_count>
    <who name="Sihui Liu">sihui_liu</who>
    <bug_when>2021-08-11 14:30:22 -0700</bug_when>
    <thetext>*** Bug 144031 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251294</attachid>
            <date>2015-04-21 19:36:22 -0700</date>
            <delta_ts>2015-04-21 19:39:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144032-20150421193521.patch</filename>
            <type>text/plain</type>
            <size>25458</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzMDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYTRjNGRhYmZhNzdlMjQx
ZjQ3ZDAzMjIyOGQ4Y2FhZjJlYjI0N2I3MS4uYmExNjY2Zjk2Y2Y4OTA5YWRmNTg4NDVjN2FiYzc5
NTU0ODc5YWZiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQyIEBACiAyMDE1LTA0LTIxICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgV0tXZWJzaXRlRGF0
YVN0b3JlIGRvZXNuJ3QgdHJhY2sgYW5kIHJlbW92ZSBJbmRleGVkREIgZGF0YWJhc2VzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQwMzIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERhdGFiYXNlUHJv
Y2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZVByb2Nl
c3M6OmZldGNoV2Vic2l0ZURhdGEpOgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZVByb2Nlc3M6
OmRlbGV0ZVdlYnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNzOjpk
ZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMpOgorICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9E
YXRhYmFzZVByb2Nlc3MuaDoKKyAgICAgICAgKiBEYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9j
ZXNzLm1lc3NhZ2VzLmluOgorICAgICAgICAqIFNoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0
YVR5cGVzLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVj
b3JkLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3Jk
Lm1tOgorICAgICAgICAoZGF0YVR5cGVzVG9TdHJpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmg6CisgICAgICAgIChXZWJLaXQ6
OnRvV2Vic2l0ZURhdGFUeXBlcyk6CisgICAgICAgIChXZWJLaXQ6OnRvV0tXZWJzaXRlRGF0YVR5
cGVzKToKKyAgICAgICAgKiBVSVByb2Nlc3MvRGF0YWJhc2VzL0RhdGFiYXNlUHJvY2Vzc1Byb3h5
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Z2VuZXJhdGVDYWxsYmFja0lEKToKKyAgICAgICAgKFdl
YktpdDo6RGF0YWJhc2VQcm9jZXNzUHJveHk6On5EYXRhYmFzZVByb2Nlc3NQcm94eSk6CisgICAg
ICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzc1Byb3h5OjpmZXRjaFdlYnNpdGVEYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhKToK
KyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRh
Rm9yT3JpZ2lucyk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzc1Byb3h5OjpkaWRD
bG9zZSk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzc1Byb3h5OjpkaWRGZXRjaFdl
YnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNzUHJveHk6OmRpZERl
bGV0ZVdlYnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNzUHJveHk6
OmRpZERlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyk6CisgICAgICAgICogVUlQcm9jZXNzL0Rh
dGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NQcm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9EYXRh
YmFzZXMvRGF0YWJhc2VQcm9jZXNzUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dl
YnNpdGVEYXRhU3RvcmUuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpm
ZXRjaERhdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRh
KToKKworMjAxNS0wNC0yMSAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgor
CiAgICAgICAgIEFkZCBtb2R1bGUgbWFwcyBmb3IgV2ViS2l0CiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQwMjYKICAgICAgICAgcmRhcjovL3Byb2Js
ZW0vMTk2NjU0MjgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9E
YXRhYmFzZVByb2Nlc3MuY3BwIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFi
YXNlUHJvY2Vzcy5jcHAKaW5kZXggOTBhMTY4N2ZlM2QzZTk2YWNlODYwMmI1MTkxY2MzMjg3Yzc3
YTUzNi4uYzhhYzNhNTk4ODU5MGFlM2I1MDVmZjJmMTEyOTBmMDEwZTAwMjg4MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAKQEAg
LTM4LDYgKzM4LDcgQEAKICNpbmNsdWRlICJXZWJPcmlnaW5EYXRhTWFuYWdlci5oIgogI2luY2x1
ZGUgIldlYk9yaWdpbkRhdGFNYW5hZ2VyTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJPcmlnaW5E
YXRhTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgogI2lu
Y2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3RlbS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVt
ZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1RleHRFbmNvZGluZy5oPgpAQCAtMTk4LDYgKzE5
OSwxMTUgQEAgdm9pZCBEYXRhYmFzZVByb2Nlc3M6OmNyZWF0ZURhdGFiYXNlVG9XZWJQcm9jZXNz
Q29ubmVjdGlvbigpCiAjZW5kaWYKIH0KIAordm9pZCBEYXRhYmFzZVByb2Nlc3M6OmZldGNoV2Vi
c2l0ZURhdGEoU2Vzc2lvbklELCB1aW50NjRfdCB3ZWJzaXRlRGF0YVR5cGVzLCB1aW50NjRfdCBj
YWxsYmFja0lEKQoreworICAgIHN0cnVjdCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBwdWJs
aWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7CisgICAgICAgIGV4
cGxpY2l0IENhbGxiYWNrQWdncmVnYXRvcihzdGQ6OmZ1bmN0aW9uPHZvaWQgKFdlYnNpdGVEYXRh
KT4gY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgICAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIo
V1RGOjptb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAg
ICAgICAgfkNhbGxiYWNrQWdncmVnYXRvcigpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VS
VChSdW5Mb29wOjppc01haW4oKSk7CisKKyAgICAgICAgICAgIGF1dG8gY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEY6Om1vdmUobV9jb21wbGV0aW9uSGFuZGxlcik7CisgICAgICAgICAgICBhdXRvIHdl
YnNpdGVEYXRhID0gV1RGOjptb3ZlKG1fd2Vic2l0ZURhdGEpOworCisgICAgICAgICAgICBSdW5M
b29wOjptYWluKCkuZGlzcGF0Y2goW2NvbXBsZXRpb25IYW5kbGVyLCB3ZWJzaXRlRGF0YV0gewor
ICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHdlYnNpdGVEYXRhKTsKKyAgICAgICAg
ICAgIH0pOworICAgICAgICB9CisKKyAgICAgICAgc3RkOjpmdW5jdGlvbjx2b2lkIChXZWJzaXRl
RGF0YSk+IG1fY29tcGxldGlvbkhhbmRsZXI7CisgICAgICAgIFdlYnNpdGVEYXRhIG1fd2Vic2l0
ZURhdGE7CisgICAgfTsKKworICAgIFJlZlB0cjxDYWxsYmFja0FnZ3JlZ2F0b3I+IGNhbGxiYWNr
QWdncmVnYXRvciA9IGFkb3B0UmVmKG5ldyBDYWxsYmFja0FnZ3JlZ2F0b3IoW3RoaXMsIGNhbGxi
YWNrSURdKFdlYnNpdGVEYXRhIHdlYnNpdGVEYXRhKSB7CisgICAgICAgIHBhcmVudFByb2Nlc3ND
b25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OkRhdGFiYXNlUHJvY2Vzc1Byb3h5OjpEaWRGZXRj
aFdlYnNpdGVEYXRhKGNhbGxiYWNrSUQsIHdlYnNpdGVEYXRhKSwgMCk7CisgICAgfSkpOworCisg
ICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMgJiBXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFz
ZXMpIHsKKyAgICAgICAgLy8gRklYTUU6IFBpY2sgdGhlIHJpZ2h0IGRhdGFiYXNlIHN0b3JlIGJh
c2VkIG9uIHRoZSBzZXNzaW9uIElELgorICAgICAgICBwb3N0RGF0YWJhc2VUYXNrKHN0ZDo6bWFr
ZV91bmlxdWU8QXN5bmNUYXNrPihbY2FsbGJhY2tBZ2dyZWdhdG9yLCB3ZWJzaXRlRGF0YVR5cGVz
LCB0aGlzXSB7CisKKyAgICAgICAgICAgIFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBz
ZWN1cml0eU9yaWdpbnM7CisKKyAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luRGF0
YSA6IGdldEluZGV4ZWREYXRhYmFzZU9yaWdpbnMoKSkKKyAgICAgICAgICAgICAgICBzZWN1cml0
eU9yaWdpbnMuYXBwZW5kKG9yaWdpbkRhdGEuc2VjdXJpdHlPcmlnaW4oKSk7CisKKyAgICAgICAg
ICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJhY2tBZ2dyZWdhdG9yLCBzZWN1cml0
eU9yaWdpbnNdIHsKKyAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIHNlY3VyaXR5T3Jp
Z2luIDogc2VjdXJpdHlPcmlnaW5zKQorICAgICAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3Jl
Z2F0b3ItPm1fd2Vic2l0ZURhdGEuZW50cmllcy5hcHBlbmQoV2Vic2l0ZURhdGE6OkVudHJ5IHsg
c2VjdXJpdHlPcmlnaW4sIFdlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlcyB9KTsKKyAg
ICAgICAgICAgIH0pOworICAgICAgICB9KSk7CisgICAgfQorfQorCit2b2lkIERhdGFiYXNlUHJv
Y2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEoV2ViQ29yZTo6U2Vzc2lvbklELCB1aW50NjRfdCB3ZWJz
aXRlRGF0YVR5cGVzLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlm
aWVkU2luY2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQpCit7CisgICAgc3RydWN0IENhbGxiYWNrQWdn
cmVnYXRvciBmaW5hbCA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxDYWxsYmFja0FnZ3Jl
Z2F0b3I+IHsKKyAgICAgICAgZXhwbGljaXQgQ2FsbGJhY2tBZ2dyZWdhdG9yKHN0ZDo6ZnVuY3Rp
b248dm9pZCAoKT4gY29tcGxldGlvbkhhbmRsZXIpCisgICAgICAgIDogbV9jb21wbGV0aW9uSGFu
ZGxlcihXVEY6Om1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQorICAgICAgICB7CisgICAgICAgIH0K
KworICAgICAgICB+Q2FsbGJhY2tBZ2dyZWdhdG9yKCkKKyAgICAgICAgeworICAgICAgICAgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFdURjo6bW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIH0KKwor
ICAgICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IG1fY29tcGxldGlvbkhhbmRsZXI7CisgICAg
fTsKKworICAgIFJlZlB0cjxDYWxsYmFja0FnZ3JlZ2F0b3I+IGNhbGxiYWNrQWdncmVnYXRvciA9
IGFkb3B0UmVmKG5ldyBDYWxsYmFja0FnZ3JlZ2F0b3IoW3RoaXMsIGNhbGxiYWNrSURdKCkgewor
ICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpEYXRhYmFz
ZVByb2Nlc3NQcm94eTo6RGlkRGVsZXRlV2Vic2l0ZURhdGEoY2FsbGJhY2tJRCksIDApOworICAg
IH0pKTsKKworICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzICYgV2Vic2l0ZURhdGFUeXBlSW5kZXhl
ZERCRGF0YWJhc2VzKSB7CisgICAgICAgIHBvc3REYXRhYmFzZVRhc2soc3RkOjptYWtlX3VuaXF1
ZTxBc3luY1Rhc2s+KFt0aGlzLCBjYWxsYmFja0FnZ3JlZ2F0b3IsIG1vZGlmaWVkU2luY2VdIHsK
KyAgICAgICAgICAgIGRvdWJsZSBzdGFydERhdGUgPSBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2Nr
Ojp0b190aW1lX3QobW9kaWZpZWRTaW5jZSk7CisKKyAgICAgICAgICAgIGRlbGV0ZUluZGV4ZWRE
YXRhYmFzZUVudHJpZXNNb2RpZmllZEJldHdlZW5EYXRlcyhzdGFydERhdGUsIHN0ZDo6bnVtZXJp
Y19saW1pdHM8ZG91YmxlPjo6bWF4KCkpOworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRp
c3BhdGNoKFtjYWxsYmFja0FnZ3JlZ2F0b3JdIHsgfSk7CisgICAgICAgIH0pKTsKKyAgICB9Cit9
CisKK3ZvaWQgRGF0YWJhc2VQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoV2Vi
Q29yZTo6U2Vzc2lvbklELCB1aW50NjRfdCB3ZWJzaXRlRGF0YVR5cGVzLCBjb25zdCBWZWN0b3I8
U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3JpZ2lucywgdWludDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAg
ICBzdHJ1Y3QgQ2FsbGJhY2tBZ2dyZWdhdG9yIGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZD
b3VudGVkPENhbGxiYWNrQWdncmVnYXRvcj4geworICAgICAgICBleHBsaWNpdCBDYWxsYmFja0Fn
Z3JlZ2F0b3Ioc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICAg
ICAgICAgIDogbV9jb21wbGV0aW9uSGFuZGxlcihXVEY6Om1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICB+Q2FsbGJhY2tBZ2dyZWdhdG9yKCkK
KyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAg
ICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURjo6bW92ZShtX2NvbXBsZXRpb25I
YW5kbGVyKSk7CisgICAgICAgIH0KKworICAgICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IG1f
Y29tcGxldGlvbkhhbmRsZXI7CisgICAgfTsKKworICAgIFJlZlB0cjxDYWxsYmFja0FnZ3JlZ2F0
b3I+IGNhbGxiYWNrQWdncmVnYXRvciA9IGFkb3B0UmVmKG5ldyBDYWxsYmFja0FnZ3JlZ2F0b3Io
W3RoaXMsIGNhbGxiYWNrSURdKCkgeworICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpEYXRhYmFzZVByb2Nlc3NQcm94eTo6RGlkRGVsZXRlV2Vic2l0ZURh
dGFGb3JPcmlnaW5zKGNhbGxiYWNrSUQpLCAwKTsKKyAgICB9KSk7CisKKyAgICBpZiAod2Vic2l0
ZURhdGFUeXBlcyAmIFdlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlcykgeworICAgICAg
ICBwb3N0RGF0YWJhc2VUYXNrKHN0ZDo6bWFrZV91bmlxdWU8QXN5bmNUYXNrPihbdGhpcywgb3Jp
Z2lucywgY2FsbGJhY2tBZ2dyZWdhdG9yXSB7CisgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8m
IG9yaWdpbjogb3JpZ2lucykKKyAgICAgICAgICAgICAgICBkZWxldGVJbmRleGVkRGF0YWJhc2VF
bnRyaWVzRm9yT3JpZ2luKG9yaWdpbik7CisKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5k
aXNwYXRjaChbY2FsbGJhY2tBZ2dyZWdhdG9yXSB7IH0pOworICAgICAgICB9KSk7CisgICAgfQor
fQorCiBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiBEYXRhYmFzZVByb2Nlc3M6OmdldEluZGV4
ZWREYXRhYmFzZU9yaWdpbnMoKQogewogICAgIFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+IHJl
c3VsdHM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJh
c2VQcm9jZXNzLmggYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9j
ZXNzLmgKaW5kZXggNzE0ODdjMGEzNjg5Y2UzMjc1NDU4MjNlMGRlOWJmZDkwMTcxMTgxMC4uY2I2
MmExMmM5NmM2YjBjNTAwNmQ1MDBkZWQ5MzBlMWZkNjE0YzJlZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuaApAQCAtODgsNiArODgsMTAg
QEAgcHJpdmF0ZToKICAgICB2b2lkIGluaXRpYWxpemVEYXRhYmFzZVByb2Nlc3MoY29uc3QgRGF0
YWJhc2VQcm9jZXNzQ3JlYXRpb25QYXJhbWV0ZXJzJik7CiAgICAgdm9pZCBjcmVhdGVEYXRhYmFz
ZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKTsKIAorICAgIHZvaWQgZmV0Y2hXZWJzaXRlRGF0YShX
ZWJDb3JlOjpTZXNzaW9uSUQsIHVpbnQ2NF90IHdlYnNpdGVEYXRhVHlwZXMsIHVpbnQ2NF90IGNh
bGxiYWNrSUQpOworICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGEoV2ViQ29yZTo6U2Vzc2lvbklE
LCB1aW50NjRfdCB3ZWJzaXRlRGF0YVR5cGVzLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0
aW1lX3BvaW50IG1vZGlmaWVkU2luY2UsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQg
ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKFdlYkNvcmU6OlNlc3Npb25JRCwgdWludDY0X3Qg
d2Vic2l0ZURhdGFUeXBlcywgY29uc3QgVmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdp
bnMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworCiAgICAgLy8gRm9yIGV4ZWN1dGlvbiBvbiB3b3Jr
IHF1ZXVlIHRocmVhZCBvbmx5CiAgICAgdm9pZCBwZXJmb3JtTmV4dERhdGFiYXNlVGFzaygpOwog
ICAgIHZvaWQgZW5zdXJlUGF0aEV4aXN0cyhjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MubWVzc2FnZXMuaW4g
Yi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLm1lc3NhZ2Vz
LmluCmluZGV4IGZhOWNmYzIwNjNlOTFmMTI0ZThlYjExYTJjNjZkMWJiNmU5NDgyZTMuLjczNmIy
YzhiNjQ0ODgyNTg4MDMyZDgyMzFlNTA5NDViYTI3YjI2ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIv
U291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5tZXNzYWdlcy5p
bgpAQCAtMjgsNiArMjgsMTAgQEAgbWVzc2FnZXMgLT4gRGF0YWJhc2VQcm9jZXNzIExlZ2FjeVJl
Y2VpdmVyIHsKIAogICAgICMgQ3JlYXRlcyBhIGNvbm5lY3Rpb24gZm9yIGNvbW11bmljYXRpb24g
d2l0aCBhIFdlYlByb2Nlc3MKICAgICBDcmVhdGVEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rp
b24oKQorCisgICAgRmV0Y2hXZWJzaXRlRGF0YShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklE
LCB1aW50NjRfdCB3ZWJzaXRlRGF0YVR5cGVzLCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIERl
bGV0ZVdlYnNpdGVEYXRhKFdlYkNvcmU6OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHdl
YnNpdGVEYXRhVHlwZXMsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9k
aWZpZWRTaW5jZSwgdWludDY0X3QgY2FsbGJhY2tJRCkKKyAgICBEZWxldGVXZWJzaXRlRGF0YUZv
ck9yaWdpbnMoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgdWludDY0X3Qgd2Vic2l0ZURh
dGFUeXBlcywgVmVjdG9yPFdlYktpdDo6U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zLCB1aW50
NjRfdCBjYWxsYmFja0lEKQogfQogCiAjZW5kaWYgLy8gRU5BQkxFKERBVEFCQVNFX1BST0NFU1Mp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURh
dGFUeXBlcy5oIGIvU291cmNlL1dlYktpdDIvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRh
VHlwZXMuaAppbmRleCAzZjJlZDg2ZTA1ZTVlZjVlNWFkYjRjYTVkMTllZTUwZTQ3ZjBkYjAyLi5l
NjNmOTZmODgxNjQ4MWViMWYwMmQ4YjE2N2JmMDE3NzI4NTg3ODc1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFUeXBlcy5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGVzLmgKQEAgLTM1
LDYgKzM1LDcgQEAgZW51bSBXZWJzaXRlRGF0YVR5cGVzIHsKICAgICBXZWJzaXRlRGF0YVR5cGVP
ZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZSA9IDEgPDwgMywKICAgICBXZWJzaXRlRGF0YVR5cGVM
b2NhbFN0b3JhZ2UgPSAxIDw8IDQsCiAgICAgV2Vic2l0ZURhdGFUeXBlV2ViU1FMRGF0YWJhc2Vz
ID0gMSA8PCA1LAorICAgIFdlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlcyA9IDEgPDwg
NiwKIH07CiAKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2Vic2l0ZURhdGFSZWNvcmQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Q29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5oCmluZGV4IGRkMjY2MmNhZmExODM2ODUyYzlkNDQ4
ZDBiM2IyMzY2YmQ3MzA5OTAuLmQ0NGYxNjcwN2RiNDhlOGUwOTg3ZDdkZDJkOWNlYTA0NWQ4NmY4
MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVJlY29yZC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2Ev
V0tXZWJzaXRlRGF0YVJlY29yZC5oCkBAIC0zOCw2ICszOCw3IEBAIFdLX0VYVEVSTiBOU1N0cmlu
ZyAqIGNvbnN0IFdLV2Vic2l0ZURhdGFUeXBlT2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUgV0tf
QVZBSUxBCiBXS19FWFRFUk4gTlNTdHJpbmcgKiBjb25zdCBXS1dlYnNpdGVEYXRhVHlwZUNvb2tp
ZXMgV0tfQVZBSUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOwogV0tfRVhURVJOIE5TU3Ry
aW5nICogY29uc3QgV0tXZWJzaXRlRGF0YVR5cGVMb2NhbFN0b3JhZ2UgV0tfQVZBSUxBQkxFKFdL
X01BQ19UQkEsIFdLX0lPU19UQkEpOwogV0tfRVhURVJOIE5TU3RyaW5nICogY29uc3QgV0tXZWJz
aXRlRGF0YVR5cGVXZWJTUUxEYXRhYmFzZXMgV0tfQVZBSUxBQkxFKFdLX01BQ19UQkEsIFdLX0lP
U19UQkEpOworV0tfRVhURVJOIE5TU3RyaW5nICogY29uc3QgV0tXZWJzaXRlRGF0YVR5cGVJbmRl
eGVkREJEYXRhYmFzZXMgV0tfQVZBSUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOwogCiBX
S19DTEFTU19BVkFJTEFCTEUoV0tfTUFDX1RCQSwgV0tfSU9TX1RCQSkKIEBpbnRlcmZhY2UgV0tX
ZWJzaXRlRGF0YVJlY29yZCA6IE5TT2JqZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQubW0KaW5kZXggMzhmMzhh
MWQ5MGZhNzc3YzEwNGJkYTI3NDk4ZGM4NGQ0NDM3MTNiNy4uODUzOWE3ZjhlYTkyNDc0NmVlZjEy
ZjVhZWZiMzc1ZjgyNzU1NWI4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5tbQpAQCAtMzUsNiArMzUsNyBA
QCBOU1N0cmluZyAqIGNvbnN0IFdLV2Vic2l0ZURhdGFUeXBlT2ZmbGluZVdlYkFwcGxpY2F0aW9u
Q2FjaGUgPSBAIldLV2Vic2l0ZURhdGFUeQogTlNTdHJpbmcgKiBjb25zdCBXS1dlYnNpdGVEYXRh
VHlwZUNvb2tpZXMgPSBAIldLV2Vic2l0ZURhdGFUeXBlQ29va2llcyI7CiBOU1N0cmluZyAqIGNv
bnN0IFdLV2Vic2l0ZURhdGFUeXBlTG9jYWxTdG9yYWdlID0gQCJXS1dlYnNpdGVEYXRhVHlwZUxv
Y2FsU3RvcmFnZSI7CiBOU1N0cmluZyAqIGNvbnN0IFdLV2Vic2l0ZURhdGFUeXBlV2ViU1FMRGF0
YWJhc2VzID0gQCJXS1dlYnNpdGVEYXRhVHlwZVdlYlNRTERhdGFiYXNlcyI7CitOU1N0cmluZyAq
IGNvbnN0IFdLV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzID0gQCJXS1dlYnNpdGVE
YXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlcyI7CiAKIEBpbXBsZW1lbnRhdGlvbiBXS1dlYnNpdGVE
YXRhUmVjb3JkCiAKQEAgLTYxLDYgKzYyLDggQEAgc3RhdGljIE5TU3RyaW5nICpkYXRhVHlwZXNU
b1N0cmluZyhOU1NldCAqZGF0YVR5cGVzKQogICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OkAiTG9j
YWwgU3RvcmFnZSJdOwogICAgIGlmIChbZGF0YVR5cGVzIGNvbnRhaW5zT2JqZWN0OldLV2Vic2l0
ZURhdGFUeXBlV2ViU1FMRGF0YWJhc2VzXSkKICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpAIldl
YiBTUUwiXTsKKyAgICBpZiAoW2RhdGFUeXBlcyBjb250YWluc09iamVjdDpXS1dlYnNpdGVEYXRh
VHlwZUluZGV4ZWREQkRhdGFiYXNlc10pCisgICAgICAgIFthcnJheSBhZGRPYmplY3Q6QCJJbmRl
eGVkIERCIl07CiAKICAgICByZXR1cm4gW2FycmF5IGNvbXBvbmVudHNKb2luZWRCeVN0cmluZzpA
IiwgIl07CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkSW50ZXJuYWwuaAppbmRleCBhM2E1ZTExMzYy
MjczNmE4YmM4ZGIwZjQxYWE0NTBjMzkwYmUzMWFjLi5iZDQwMjU1MGUwYjY2ZDdjMTdjNGFhODg5
YWUzNGU5MDMwN2I2ODJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgKQEAgLTU2
LDYgKzU2LDggQEAgc3RhdGljIGlubGluZSBXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZXMgdG9XZWJz
aXRlRGF0YVR5cGVzKE5TU2V0ICp3a1dlYnNpdGVEYXRhVHkKICAgICAgICAgd2Vic2l0ZURhdGFU
eXBlcyB8PSBXZWJzaXRlRGF0YVR5cGVzOjpXZWJzaXRlRGF0YVR5cGVMb2NhbFN0b3JhZ2U7CiAg
ICAgaWYgKFt3a1dlYnNpdGVEYXRhVHlwZXMgY29udGFpbnNPYmplY3Q6V0tXZWJzaXRlRGF0YVR5
cGVXZWJTUUxEYXRhYmFzZXNdKQogICAgICAgICB3ZWJzaXRlRGF0YVR5cGVzIHw9IFdlYnNpdGVE
YXRhVHlwZXM6OldlYnNpdGVEYXRhVHlwZVdlYlNRTERhdGFiYXNlczsKKyAgICBpZiAoW3drV2Vi
c2l0ZURhdGFUeXBlcyBjb250YWluc09iamVjdDpXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRh
dGFiYXNlc10pCisgICAgICAgIHdlYnNpdGVEYXRhVHlwZXMgfD0gV2Vic2l0ZURhdGFUeXBlczo6
V2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzOwogCiAgICAgcmV0dXJuIHN0YXRpY19j
YXN0PFdlYnNpdGVEYXRhVHlwZXM+KHdlYnNpdGVEYXRhVHlwZXMpOwogfQpAQCAtNzgsNiArODAs
OCBAQCBzdGF0aWMgaW5saW5lIFJldGFpblB0cjxOU1NldD4gdG9XS1dlYnNpdGVEYXRhVHlwZXMo
aW50IHdlYnNpdGVEYXRhVHlwZXMpCiAgICAgICAgIFt3a1dlYnNpdGVEYXRhVHlwZXMgYWRkT2Jq
ZWN0OldLV2Vic2l0ZURhdGFUeXBlTG9jYWxTdG9yYWdlXTsKICAgICBpZiAod2Vic2l0ZURhdGFU
eXBlcyAmIFdlYnNpdGVEYXRhVHlwZXM6OldlYnNpdGVEYXRhVHlwZVdlYlNRTERhdGFiYXNlcykK
ICAgICAgICAgW3drV2Vic2l0ZURhdGFUeXBlcyBhZGRPYmplY3Q6V0tXZWJzaXRlRGF0YVR5cGVX
ZWJTUUxEYXRhYmFzZXNdOworICAgIGlmICh3ZWJzaXRlRGF0YVR5cGVzICYgV2Vic2l0ZURhdGFU
eXBlczo6V2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzKQorICAgICAgICBbd2tXZWJz
aXRlRGF0YVR5cGVzIGFkZE9iamVjdDpXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNl
c107CiAKICAgICByZXR1cm4gd2tXZWJzaXRlRGF0YVR5cGVzOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RhdGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NQcm94eS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRGF0YWJhc2VzL0RhdGFiYXNlUHJvY2Vzc1Byb3h5
LmNwcAppbmRleCBiNjMxOWQ4YzU2Zjc1Yzg1MWZjMDcwODM3NGYyYjIyYmQ1YjE2MjZhLi4yYTI4
NjlmNDFjZjg1NDJmMjExODhkODg5ZGY2OWFkMDk5MWMzMGZjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvRGF0YWJhc2VzL0RhdGFiYXNlUHJvY2Vzc1Byb3h5LmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRGF0YWJhc2VzL0RhdGFiYXNlUHJvY2Vzc1Byb3h5
LmNwcApAQCAtMzEsNiArMzEsNyBAQAogI2luY2x1ZGUgIldlYk9yaWdpbkRhdGFNYW5hZ2VyUHJv
eHkuaCIKICNpbmNsdWRlICJXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKICNp
bmNsdWRlICJXZWJQcm9jZXNzUG9vbC5oIgorI2luY2x1ZGUgIldlYnNpdGVEYXRhLmgiCiAjaW5j
bHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1lbnRlZC5oPgogCiAjaWYgRU5BQkxFKERBVEFCQVNFX1BS
T0NFU1MpCkBAIC0zOSw2ICs0MCwxMyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CiAKK3N0YXRpYyB1aW50NjRfdCBnZW5lcmF0ZUNhbGxiYWNrSUQoKQor
eworICAgIHN0YXRpYyB1aW50NjRfdCBjYWxsYmFja0lEOworCisgICAgcmV0dXJuICsrY2FsbGJh
Y2tJRDsKK30KKwogUGFzc1JlZlB0cjxEYXRhYmFzZVByb2Nlc3NQcm94eT4gRGF0YWJhc2VQcm9j
ZXNzUHJveHk6OmNyZWF0ZShXZWJQcm9jZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCiB7CiAgICAgcmV0
dXJuIGFkb3B0UmVmKG5ldyBEYXRhYmFzZVByb2Nlc3NQcm94eShwcm9jZXNzUG9vbCkpOwpAQCAt
NTMsOSArNjEsMTEgQEAgRGF0YWJhc2VQcm9jZXNzUHJveHk6OkRhdGFiYXNlUHJvY2Vzc1Byb3h5
KFdlYlByb2Nlc3NQb29sKiBwcm9jZXNzUG9vbCkKIAogRGF0YWJhc2VQcm9jZXNzUHJveHk6On5E
YXRhYmFzZVByb2Nlc3NQcm94eSgpCiB7CisgICAgQVNTRVJUKG1fcGVuZGluZ0ZldGNoV2Vic2l0
ZURhdGFDYWxsYmFja3MuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQobV9wZW5kaW5nRGVsZXRlV2Vi
c2l0ZURhdGFDYWxsYmFja3MuaXNFbXB0eSgpKTsKKyAgICBBU1NFUlQobV9wZW5kaW5nRGVsZXRl
V2Vic2l0ZURhdGFGb3JPcmlnaW5zQ2FsbGJhY2tzLmlzRW1wdHkoKSk7CiB9CiAKLQogdm9pZCBE
YXRhYmFzZVByb2Nlc3NQcm94eTo6Z2V0TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6Okxh
dW5jaE9wdGlvbnMmIGxhdW5jaE9wdGlvbnMpCiB7CiAgICAgbGF1bmNoT3B0aW9ucy5wcm9jZXNz
VHlwZSA9IFByb2Nlc3NMYXVuY2hlcjo6RGF0YWJhc2VQcm9jZXNzOwpAQCAtNzUsNiArODUsMzgg
QEAgdm9pZCBEYXRhYmFzZVByb2Nlc3NQcm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25u
ZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6Ok0KICAgICB9CiB9CiAKK3ZvaWQgRGF0YWJhc2VQcm9j
ZXNzUHJveHk6OmZldGNoV2Vic2l0ZURhdGEoU2Vzc2lvbklEIHNlc3Npb25JRCwgV2Vic2l0ZURh
dGFUeXBlcyBkYXRhVHlwZXMsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoV2Vic2l0ZURhdGEpPiBjb21w
bGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoY2FuU2VuZE1lc3NhZ2UoKSk7CisKKyAgICB1
aW50NjRfdCBjYWxsYmFja0lEID0gZ2VuZXJhdGVDYWxsYmFja0lEKCk7CisgICAgbV9wZW5kaW5n
RmV0Y2hXZWJzaXRlRGF0YUNhbGxiYWNrcy5hZGQoY2FsbGJhY2tJRCwgV1RGOjptb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKSk7CisKKyAgICBzZW5kKE1lc3NhZ2VzOjpEYXRhYmFzZVByb2Nlc3M6OkZl
dGNoV2Vic2l0ZURhdGEoc2Vzc2lvbklELCBkYXRhVHlwZXMsIGNhbGxiYWNrSUQpLCAwKTsKK30K
Kwordm9pZCBEYXRhYmFzZVByb2Nlc3NQcm94eTo6ZGVsZXRlV2Vic2l0ZURhdGEoV2ViQ29yZTo6
U2Vzc2lvbklEIHNlc3Npb25JRCwgV2Vic2l0ZURhdGFUeXBlcyBkYXRhVHlwZXMsIHN0ZDo6Y2hy
b25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSwgIHN0ZDo6ZnVuY3Rp
b248dm9pZCAoKT4gY29tcGxldGlvbkhhbmRsZXIpCit7CisgICAgYXV0byBjYWxsYmFja0lEID0g
Z2VuZXJhdGVDYWxsYmFja0lEKCk7CisKKyAgICBtX3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0YUNh
bGxiYWNrcy5hZGQoY2FsbGJhY2tJRCwgV1RGOjptb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Cisg
ICAgc2VuZChNZXNzYWdlczo6RGF0YWJhc2VQcm9jZXNzOjpEZWxldGVXZWJzaXRlRGF0YShzZXNz
aW9uSUQsIGRhdGFUeXBlcywgbW9kaWZpZWRTaW5jZSwgY2FsbGJhY2tJRCksIDApOworfQorCit2
b2lkIERhdGFiYXNlUHJvY2Vzc1Byb3h5OjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoU2Vz
c2lvbklEIHNlc3Npb25JRCwgV2Vic2l0ZURhdGFUeXBlcyBkYXRhVHlwZXMsIGNvbnN0IFZlY3Rv
cjxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiYgb3JpZ2lucywgc3RkOjpmdW5jdGlv
bjx2b2lkICgpPiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBBU1NFUlQoY2FuU2VuZE1lc3Nh
Z2UoKSk7CisKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gZ2VuZXJhdGVDYWxsYmFja0lEKCk7
CisgICAgbV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zQ2FsbGJhY2tzLmFkZChj
YWxsYmFja0lELCBXVEY6Om1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKKworICAgIFZlY3RvcjxT
ZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdpbkRhdGE7CisgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBv
cmlnaW5zKQorICAgICAgICBvcmlnaW5EYXRhLmFwcGVuZChTZWN1cml0eU9yaWdpbkRhdGE6OmZy
b21TZWN1cml0eU9yaWdpbigqb3JpZ2luKSk7CisKKyAgICBzZW5kKE1lc3NhZ2VzOjpEYXRhYmFz
ZVByb2Nlc3M6OkRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhzZXNzaW9uSUQsIGRhdGFUeXBl
cywgb3JpZ2luRGF0YSwgY2FsbGJhY2tJRCksIDApOworfQorCiB2b2lkIERhdGFiYXNlUHJvY2Vz
c1Byb3h5OjpnZXREYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uKFBhc3NSZWZQdHI8TWVzc2FnZXM6
OldlYlByb2Nlc3NQcm94eTo6R2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJl
cGx5PiByZXBseSkKIHsKICAgICBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllcy5hcHBlbmQocmVw
bHkpOwpAQCAtMTAyLDYgKzE0NCwxOCBAQCB2b2lkIERhdGFiYXNlUHJvY2Vzc1Byb3h5OjpkaWRD
bG9zZShJUEM6OkNvbm5lY3Rpb24mKQogI2VuZGlmCiAgICAgfQogCisgICAgZm9yIChjb25zdCBh
dXRvJiBjYWxsYmFjayA6IG1fcGVuZGluZ0ZldGNoV2Vic2l0ZURhdGFDYWxsYmFja3MudmFsdWVz
KCkpCisgICAgICAgIGNhbGxiYWNrKFdlYnNpdGVEYXRhKCkpOworICAgIG1fcGVuZGluZ0ZldGNo
V2Vic2l0ZURhdGFDYWxsYmFja3MuY2xlYXIoKTsKKworICAgIGZvciAoY29uc3QgYXV0byYgY2Fs
bGJhY2sgOiBtX3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0YUNhbGxiYWNrcy52YWx1ZXMoKSkKKyAg
ICAgICAgY2FsbGJhY2soKTsKKyAgICBtX3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0YUNhbGxiYWNr
cy5jbGVhcigpOworCisgICAgZm9yIChjb25zdCBhdXRvJiBjYWxsYmFjayA6IG1fcGVuZGluZ0Rl
bGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2luc0NhbGxiYWNrcy52YWx1ZXMoKSkKKyAgICAgICAgY2Fs
bGJhY2soKTsKKyAgICBtX3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnNDYWxsYmFj
a3MuY2xlYXIoKTsKKwogICAgIC8vIFRlbGwgUHJvY2Vzc1Bvb2wgdG8gZm9yZ2V0IGFib3V0IHRo
aXMgZGF0YWJhc2UgcHJvY2Vzcy4gVGhpcyBtYXkgY2F1c2UgdXMgdG8gYmUgZGVsZXRlZC4KICAg
ICBtX3Byb2Nlc3NQb29sLT5kYXRhYmFzZVByb2Nlc3NDcmFzaGVkKHRoaXMpOwogfQpAQCAtMTI1
LDYgKzE3OSwyNCBAQCB2b2lkIERhdGFiYXNlUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVEYXRhYmFz
ZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oY29uc3QgSVBDOjpBdAogI2VuZGlmCiB9CiAKK3ZvaWQg
RGF0YWJhc2VQcm9jZXNzUHJveHk6OmRpZEZldGNoV2Vic2l0ZURhdGEodWludDY0X3QgY2FsbGJh
Y2tJRCwgY29uc3QgV2Vic2l0ZURhdGEmIHdlYnNpdGVEYXRhKQoreworICAgIGF1dG8gY2FsbGJh
Y2sgPSBtX3BlbmRpbmdGZXRjaFdlYnNpdGVEYXRhQ2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJRCk7
CisgICAgY2FsbGJhY2sod2Vic2l0ZURhdGEpOworfQorCit2b2lkIERhdGFiYXNlUHJvY2Vzc1By
b3h5OjpkaWREZWxldGVXZWJzaXRlRGF0YSh1aW50NjRfdCBjYWxsYmFja0lEKQoreworICAgIGF1
dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0YUNhbGxiYWNrcy50YWtlKGNh
bGxiYWNrSUQpOworICAgIGNhbGxiYWNrKCk7Cit9CisKK3ZvaWQgRGF0YWJhc2VQcm9jZXNzUHJv
eHk6OmRpZERlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyh1aW50NjRfdCBjYWxsYmFja0lEKQor
eworICAgIGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0YUZvck9yaWdp
bnNDYWxsYmFja3MudGFrZShjYWxsYmFja0lEKTsKKyAgICBjYWxsYmFjaygpOworfQorCiB2b2lk
IERhdGFiYXNlUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVy
KiBsYXVuY2hlciwgSVBDOjpDb25uZWN0aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlm
aWVyKQogewogICAgIENoaWxkUHJvY2Vzc1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcobGF1bmNo
ZXIsIGNvbm5lY3Rpb25JZGVudGlmaWVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJhc2VQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJhc2VQcm9jZXNzUHJveHkuaAppbmRleCBiZTY2YWRl
ZGVlMjc3ZGE0NTc5Y2M4ZWU3MmJiODJjZDlhOGI1NmViLi44YWQ4NjllYjMzN2MwZDRjOGQyZGVl
YmNmMDQ1ODcwY2Y2Y2UxYzUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
RGF0YWJhc2VzL0RhdGFiYXNlUHJvY2Vzc1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0RhdGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NQcm94eS5oCkBAIC0zMSw4ICszMSwxNCBA
QAogI2luY2x1ZGUgIkNoaWxkUHJvY2Vzc1Byb3h5LmgiCiAjaW5jbHVkZSAiUHJvY2Vzc0xhdW5j
aGVyLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJX
ZWJzaXRlRGF0YVR5cGVzLmgiCiAjaW5jbHVkZSA8d3RmL0RlcXVlLmg+CiAKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKK2NsYXNzIFNlY3VyaXR5T3JpZ2luOworY2xhc3MgU2Vzc2lvbklEOworfQorCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CkBAIC00Miw2ICs0OCwx
MCBAQCBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8RGF0YWJhc2VQcm9jZXNzUHJveHk+
IGNyZWF0ZShXZWJQcm9jZXNzUG9vbCopOwogICAgIH5EYXRhYmFzZVByb2Nlc3NQcm94eSgpOwog
CisgICAgdm9pZCBmZXRjaFdlYnNpdGVEYXRhKFdlYkNvcmU6OlNlc3Npb25JRCwgV2Vic2l0ZURh
dGFUeXBlcywgc3RkOjpmdW5jdGlvbjx2b2lkIChXZWJzaXRlRGF0YSk+IGNvbXBsZXRpb25IYW5k
bGVyKTsKKyAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhKFdlYkNvcmU6OlNlc3Npb25JRCwgV2Vi
c2l0ZURhdGFUeXBlcywgc3RkOjpjaHJvbm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2Rp
ZmllZFNpbmNlLCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IGNvbXBsZXRpb25IYW5kbGVyKTsKKyAg
ICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyhXZWJDb3JlOjpTZXNzaW9uSUQsIFdl
YnNpdGVEYXRhVHlwZXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmln
aW4+PiYgb3JpZ2lucywgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBjb21wbGV0aW9uSGFuZGxlcik7
CisKICAgICB2b2lkIGdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb24oUGFzc1JlZlB0cjxNZXNz
YWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXREYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxh
eWVkUmVwbHk+KTsKIAogcHJpdmF0ZToKQEAgLTYxLDYgKzcxLDkgQEAgcHJpdmF0ZToKIAogICAg
IC8vIE1lc3NhZ2UgaGFuZGxlcnMKICAgICB2b2lkIGRpZENyZWF0ZURhdGFiYXNlVG9XZWJQcm9j
ZXNzQ29ubmVjdGlvbihjb25zdCBJUEM6OkF0dGFjaG1lbnQmKTsKKyAgICB2b2lkIGRpZEZldGNo
V2Vic2l0ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgV2Vic2l0ZURhdGEmKTsKKyAg
ICB2b2lkIGRpZERlbGV0ZVdlYnNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZv
aWQgZGlkRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwog
CiAgICAgLy8gUHJvY2Vzc0xhdW5jaGVyOjpDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmlu
aXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVuY2hlciosIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmll
cikgb3ZlcnJpZGU7CkBAIC03MSw2ICs4NCwxMCBAQCBwcml2YXRlOgogCiAgICAgdW5zaWduZWQg
bV9udW1QZW5kaW5nQ29ubmVjdGlvblJlcXVlc3RzOwogICAgIERlcXVlPFJlZlB0cjxNZXNzYWdl
czo6V2ViUHJvY2Vzc1Byb3h5OjpHZXREYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVk
UmVwbHk+PiBtX3BlbmRpbmdDb25uZWN0aW9uUmVwbGllczsKKworICAgIEhhc2hNYXA8dWludDY0
X3QsIHN0ZDo6ZnVuY3Rpb248dm9pZCAoV2Vic2l0ZURhdGEpPj4gbV9wZW5kaW5nRmV0Y2hXZWJz
aXRlRGF0YUNhbGxiYWNrczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OmZ1bmN0aW9uPHZv
aWQgKCk+PiBtX3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0YUNhbGxiYWNrczsKKyAgICBIYXNoTWFw
PHVpbnQ2NF90LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+PiBtX3BlbmRpbmdEZWxldGVXZWJzaXRl
RGF0YUZvck9yaWdpbnNDYWxsYmFja3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJhc2VQcm9j
ZXNzUHJveHkubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRGF0YWJhc2Vz
L0RhdGFiYXNlUHJvY2Vzc1Byb3h5Lm1lc3NhZ2VzLmluCmluZGV4IDZiYzYyMjlkNGJiN2NjOTZi
ZjljMGNkZTE3YWIyYmRiYTI1YTM3ZDAuLjE5ODZjZDQ0NWZkZDNjMmJhNTM1YTQ0Njc3MDBkN2Rh
MDdjNmI4MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EYXRhYmFzZXMv
RGF0YWJhc2VQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0RhdGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjQs
NiArMjQsMTAgQEAKIAogbWVzc2FnZXMgLT4gRGF0YWJhc2VQcm9jZXNzUHJveHkgTGVnYWN5UmVj
ZWl2ZXIgewogICAgIERpZENyZWF0ZURhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbihJUEM6
OkF0dGFjaG1lbnQgY29ubmVjdGlvbklkZW50aWZpZXIpCisKKyAgICBEaWRGZXRjaFdlYnNpdGVE
YXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQsIHN0cnVjdCBXZWJLaXQ6OldlYnNpdGVEYXRhIHdlYnNp
dGVEYXRhKQorICAgIERpZERlbGV0ZVdlYnNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpCisg
ICAgRGlkRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB9
CiAKICNlbmRpZiAvLyBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKaW5kZXggYTIwNzRlN2IxYjY5MTczNmYwYzk5YTc0YjVh
YzdiZDVjYmU2NmNiMy4uOWZjMzU1ZWFmZmJhOTkyNDczNWQ0OGY4OGRjOTRjZWUwYjcxODI4MSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTMwMCw2ICsz
MDAsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKICAgICB2b2lk
IGVuc3VyZURhdGFiYXNlUHJvY2VzcygpOworICAgIERhdGFiYXNlUHJvY2Vzc1Byb3h5KiBkYXRh
YmFzZVByb2Nlc3MoKSB7IHJldHVybiBtX2RhdGFiYXNlUHJvY2Vzcy5nZXQoKTsgfQogICAgIHZv
aWQgZ2V0RGF0YWJhc2VQcm9jZXNzQ29ubmVjdGlvbihQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQ
cm9jZXNzUHJveHk6OkdldERhdGFiYXNlUHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4p
OwogICAgIHZvaWQgZGF0YWJhc2VQcm9jZXNzQ3Jhc2hlZChEYXRhYmFzZVByb2Nlc3NQcm94eSop
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURh
dGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAKaW5kZXggZGFkNWQ4YzY5YTc4OWNiMTE4ZjJkYWRm
NmFhZTVjYjQzOTQzZmYzYi4uZjcyNzM0YTAwYmQyNWEzZWM2ZWNhODYyN2NjYTYwNmVhZTViYzAy
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNp
dGVEYXRhU3RvcmUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0
YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApAQCAtMzE5LDYgKzMxOSwyMyBAQCB2b2lkIFdlYnNpdGVE
YXRhU3RvcmU6OmZldGNoRGF0YShXZWJzaXRlRGF0YVR5cGVzIGRhdGFUeXBlcywgc3RkOjpmdW5j
dGlvbjx2b2lkCiAgICAgICAgIH0pOwogICAgIH0KIAorI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9D
RVNTKQorICAgIGlmIChkYXRhVHlwZXMgJiBXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFz
ZXMgJiYgIWlzTm9uUGVyc2lzdGVudCgpKSB7CisgICAgICAgIEhhc2hTZXQ8V2ViUHJvY2Vzc1Bv
b2wqPiBwcm9jZXNzUG9vbHM7CisgICAgICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IHByb2Nlc3Nl
cygpKQorICAgICAgICAgICAgcHJvY2Vzc1Bvb2xzLmFkZCgmcHJvY2Vzcy0+cHJvY2Vzc1Bvb2wo
KSk7CisKKyAgICAgICAgZm9yIChhdXRvJiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scykgewor
ICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPmVuc3VyZURhdGFiYXNlUHJvY2VzcygpOworCisgICAg
ICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygpOworICAgICAg
ICAgICAgcHJvY2Vzc1Bvb2wtPmRhdGFiYXNlUHJvY2VzcygpLT5mZXRjaFdlYnNpdGVEYXRhKG1f
c2Vzc2lvbklELCBkYXRhVHlwZXMsIFtjYWxsYmFja0FnZ3JlZ2F0b3JdKFdlYnNpdGVEYXRhIHdl
YnNpdGVEYXRhKSB7CisgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5yZW1vdmVQ
ZW5kaW5nQ2FsbGJhY2soV1RGOjptb3ZlKHdlYnNpdGVEYXRhKSk7CisgICAgICAgICAgICB9KTsK
KyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCiAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5jYWxs
SWZOZWVkZWQoKTsKIH0KIApAQCAtNDc1LDYgKzQ5MiwyMyBAQCB2b2lkIFdlYnNpdGVEYXRhU3Rv
cmU6OnJlbW92ZURhdGEoV2Vic2l0ZURhdGFUeXBlcyBkYXRhVHlwZXMsIHN0ZDo6Y2hyb25vOjpz
eXN0ZQogICAgICAgICB9KTsKICAgICB9CiAKKyNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykK
KyAgICBpZiAoZGF0YVR5cGVzICYgV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzICYm
ICFpc05vblBlcnNpc3RlbnQoKSkgeworICAgICAgICBIYXNoU2V0PFdlYlByb2Nlc3NQb29sKj4g
cHJvY2Vzc1Bvb2xzOworICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBwcm9jZXNzZXMoKSkK
KyAgICAgICAgICAgIHByb2Nlc3NQb29scy5hZGQoJnByb2Nlc3MtPnByb2Nlc3NQb29sKCkpOwor
CisgICAgICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMpIHsKKyAgICAg
ICAgICAgIHByb2Nlc3NQb29sLT5lbnN1cmVEYXRhYmFzZVByb2Nlc3MoKTsKKworICAgICAgICAg
ICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsKKyAgICAgICAgICAg
IHByb2Nlc3NQb29sLT5kYXRhYmFzZVByb2Nlc3MoKS0+ZGVsZXRlV2Vic2l0ZURhdGEobV9zZXNz
aW9uSUQsIGRhdGFUeXBlcywgbW9kaWZpZWRTaW5jZSwgW2NhbGxiYWNrQWdncmVnYXRvcl0oKSB7
CisgICAgICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5yZW1vdmVQZW5kaW5nQ2FsbGJh
Y2soKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisgICAgfQorI2VuZGlmCisKICAgICAv
LyBUaGVyZSdzIGEgY2hhbmNlIHRoYXQgd2UgZG9uJ3QgaGF2ZSBhbnkgcGVuZGluZyBjYWxsYmFj
a3MuIElmIHNvLCB3ZSB3YW50IHRvIGRpc3BhdGNoIHRoZSBjb21wbGV0aW9uIGhhbmRsZXIgcmln
aHQgYXdheS4KICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPmNhbGxJZk5lZWRlZCgpOwogfQpAQCAt
NjMxLDYgKzY2NSwyMyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoV2Vic2l0
ZURhdGFUeXBlcyBkYXRhVHlwZXMsIGNvbnN0IFZlY3RvcjxXZWJzaQogICAgICAgICB9KTsKICAg
ICB9CiAKKyNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKKyAgICBpZiAoZGF0YVR5cGVzICYg
V2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzICYmICFpc05vblBlcnNpc3RlbnQoKSkg
eworICAgICAgICBIYXNoU2V0PFdlYlByb2Nlc3NQb29sKj4gcHJvY2Vzc1Bvb2xzOworICAgICAg
ICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBwcm9jZXNzZXMoKSkKKyAgICAgICAgICAgIHByb2Nlc3NQ
b29scy5hZGQoJnByb2Nlc3MtPnByb2Nlc3NQb29sKCkpOworCisgICAgICAgIGZvciAoYXV0byYg
cHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMpIHsKKyAgICAgICAgICAgIHByb2Nlc3NQb29sLT5l
bnN1cmVEYXRhYmFzZVByb2Nlc3MoKTsKKworICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9y
LT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsKKyAgICAgICAgICAgIHByb2Nlc3NQb29sLT5kYXRhYmFz
ZVByb2Nlc3MoKS0+ZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKG1fc2Vzc2lvbklELCBkYXRh
VHlwZXMsIG9yaWdpbnMsIFtjYWxsYmFja0FnZ3JlZ2F0b3JdKCkgeworICAgICAgICAgICAgICAg
IGNhbGxiYWNrQWdncmVnYXRvci0+cmVtb3ZlUGVuZGluZ0NhbGxiYWNrKCk7CisgICAgICAgICAg
ICB9KTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCiAgICAgLy8gVGhlcmUncyBhIGNoYW5j
ZSB0aGF0IHdlIGRvbid0IGhhdmUgYW55IHBlbmRpbmcgY2FsbGJhY2tzLiBJZiBzbywgd2Ugd2Fu
dCB0byBkaXNwYXRjaCB0aGUgY29tcGxldGlvbiBoYW5kbGVyIHJpZ2h0IGF3YXkuCiAgICAgY2Fs
bGJhY2tBZ2dyZWdhdG9yLT5jYWxsSWZOZWVkZWQoKTsKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251295</attachid>
            <date>2015-04-21 19:37:04 -0700</date>
            <delta_ts>2015-04-21 19:40:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144032-20150421193603.patch</filename>
            <type>text/plain</type>
            <size>25491</size>
            <attacher name="Anders Carlsson">andersca</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTgzMDkwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggYTRjNGRhYmZhNzdlMjQx
ZjQ3ZDAzMjIyOGQ4Y2FhZjJlYjI0N2I3MS4uZTdmMGRkZjFjMjk5NTY2YWJmYjczYTcxZjYyMjA5
MTE1OGNlM2NkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDQzIEBACiAyMDE1LTA0LTIxICBBbmRl
cnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKKyAgICAgICAgV0tXZWJzaXRlRGF0
YVN0b3JlIGRvZXNuJ3QgdHJhY2sgYW5kIHJlbW92ZSBJbmRleGVkREIgZGF0YWJhc2VzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQwMzIKKyAgICAg
ICAgcmRhcjovL3Byb2JsZW0vMjAyNDI4NTYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZVByb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEpOgor
ICAgICAgICAoV2ViS2l0OjpEYXRhYmFzZVByb2Nlc3M6OmRlbGV0ZVdlYnNpdGVEYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNzOjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdp
bnMpOgorICAgICAgICAqIERhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuaDoKKyAgICAg
ICAgKiBEYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLm1lc3NhZ2VzLmluOgorICAgICAg
ICAqIFNoYXJlZC9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVR5cGVzLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRhUmVjb3JkLm1tOgorICAgICAgICAoZGF0YVR5cGVz
VG9TdHJpbmcpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJl
Y29yZEludGVybmFsLmg6CisgICAgICAgIChXZWJLaXQ6OnRvV2Vic2l0ZURhdGFUeXBlcyk6Cisg
ICAgICAgIChXZWJLaXQ6OnRvV0tXZWJzaXRlRGF0YVR5cGVzKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvRGF0YWJhc2VzL0RhdGFiYXNlUHJvY2Vzc1Byb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6
Z2VuZXJhdGVDYWxsYmFja0lEKToKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNzUHJv
eHk6On5EYXRhYmFzZVByb2Nlc3NQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OkRhdGFiYXNlUHJv
Y2Vzc1Byb3h5OjpmZXRjaFdlYnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6RGF0YWJhc2VQ
cm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhKToKKyAgICAgICAgKFdlYktpdDo6RGF0YWJh
c2VQcm9jZXNzUHJveHk6OmRlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lucyk6CisgICAgICAgIChX
ZWJLaXQ6OkRhdGFiYXNlUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZSk6CisgICAgICAgIChXZWJLaXQ6
OkRhdGFiYXNlUHJvY2Vzc1Byb3h5OjpkaWRGZXRjaFdlYnNpdGVEYXRhKToKKyAgICAgICAgKFdl
YktpdDo6RGF0YWJhc2VQcm9jZXNzUHJveHk6OmRpZERlbGV0ZVdlYnNpdGVEYXRhKToKKyAgICAg
ICAgKFdlYktpdDo6RGF0YWJhc2VQcm9jZXNzUHJveHk6OmRpZERlbGV0ZVdlYnNpdGVEYXRhRm9y
T3JpZ2lucyk6CisgICAgICAgICogVUlQcm9jZXNzL0RhdGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NQ
cm94eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJhc2VQcm9jZXNzUHJv
eHkubWVzc2FnZXMuaW46CisgICAgICAgICogVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmg6Cisg
ICAgICAgICogVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpmZXRjaERhdGEpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJzaXRlRGF0YVN0b3JlOjpyZW1vdmVEYXRhKToKKworMjAxNS0wNC0yMSAgQW5kZXJz
IENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29tPgorCiAgICAgICAgIEFkZCBtb2R1bGUgbWFw
cyBmb3IgV2ViS2l0CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNDQwMjYKICAgICAgICAgcmRhcjovL3Byb2JsZW0vMTk2NjU0MjgKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9EYXRhYmFzZVByb2Nlc3MuY3BwIGIvU291
cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAKaW5kZXggOTBh
MTY4N2ZlM2QzZTk2YWNlODYwMmI1MTkxY2MzMjg3Yzc3YTUzNi4uYzhhYzNhNTk4ODU5MGFlM2I1
MDVmZjJmMTEyOTBmMDEwZTAwMjg4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGF0YWJh
c2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJh
c2VQcm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5jcHAKQEAgLTM4LDYgKzM4LDcgQEAKICNpbmNsdWRl
ICJXZWJPcmlnaW5EYXRhTWFuYWdlci5oIgogI2luY2x1ZGUgIldlYk9yaWdpbkRhdGFNYW5hZ2Vy
TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJPcmlnaW5EYXRhTWFuYWdlclByb3h5TWVzc2FnZXMu
aCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmlsZVN5c3Rl
bS5oPgogI2luY2x1ZGUgPFdlYkNvcmUvTm90SW1wbGVtZW50ZWQuaD4KICNpbmNsdWRlIDxXZWJD
b3JlL1RleHRFbmNvZGluZy5oPgpAQCAtMTk4LDYgKzE5OSwxMTUgQEAgdm9pZCBEYXRhYmFzZVBy
b2Nlc3M6OmNyZWF0ZURhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbigpCiAjZW5kaWYKIH0K
IAordm9pZCBEYXRhYmFzZVByb2Nlc3M6OmZldGNoV2Vic2l0ZURhdGEoU2Vzc2lvbklELCB1aW50
NjRfdCB3ZWJzaXRlRGF0YVR5cGVzLCB1aW50NjRfdCBjYWxsYmFja0lEKQoreworICAgIHN0cnVj
dCBDYWxsYmFja0FnZ3JlZ2F0b3IgZmluYWwgOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8
Q2FsbGJhY2tBZ2dyZWdhdG9yPiB7CisgICAgICAgIGV4cGxpY2l0IENhbGxiYWNrQWdncmVnYXRv
cihzdGQ6OmZ1bmN0aW9uPHZvaWQgKFdlYnNpdGVEYXRhKT4gY29tcGxldGlvbkhhbmRsZXIpCisg
ICAgICAgICAgICA6IG1fY29tcGxldGlvbkhhbmRsZXIoV1RGOjptb3ZlKGNvbXBsZXRpb25IYW5k
bGVyKSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgfkNhbGxiYWNrQWdncmVnYXRv
cigpCisgICAgICAgIHsKKyAgICAgICAgICAgIEFTU0VSVChSdW5Mb29wOjppc01haW4oKSk7CisK
KyAgICAgICAgICAgIGF1dG8gY29tcGxldGlvbkhhbmRsZXIgPSBXVEY6Om1vdmUobV9jb21wbGV0
aW9uSGFuZGxlcik7CisgICAgICAgICAgICBhdXRvIHdlYnNpdGVEYXRhID0gV1RGOjptb3ZlKG1f
d2Vic2l0ZURhdGEpOworCisgICAgICAgICAgICBSdW5Mb29wOjptYWluKCkuZGlzcGF0Y2goW2Nv
bXBsZXRpb25IYW5kbGVyLCB3ZWJzaXRlRGF0YV0geworICAgICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKHdlYnNpdGVEYXRhKTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9CisKKyAg
ICAgICAgc3RkOjpmdW5jdGlvbjx2b2lkIChXZWJzaXRlRGF0YSk+IG1fY29tcGxldGlvbkhhbmRs
ZXI7CisgICAgICAgIFdlYnNpdGVEYXRhIG1fd2Vic2l0ZURhdGE7CisgICAgfTsKKworICAgIFJl
ZlB0cjxDYWxsYmFja0FnZ3JlZ2F0b3I+IGNhbGxiYWNrQWdncmVnYXRvciA9IGFkb3B0UmVmKG5l
dyBDYWxsYmFja0FnZ3JlZ2F0b3IoW3RoaXMsIGNhbGxiYWNrSURdKFdlYnNpdGVEYXRhIHdlYnNp
dGVEYXRhKSB7CisgICAgICAgIHBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2Fn
ZXM6OkRhdGFiYXNlUHJvY2Vzc1Byb3h5OjpEaWRGZXRjaFdlYnNpdGVEYXRhKGNhbGxiYWNrSUQs
IHdlYnNpdGVEYXRhKSwgMCk7CisgICAgfSkpOworCisgICAgaWYgKHdlYnNpdGVEYXRhVHlwZXMg
JiBXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMpIHsKKyAgICAgICAgLy8gRklYTUU6
IFBpY2sgdGhlIHJpZ2h0IGRhdGFiYXNlIHN0b3JlIGJhc2VkIG9uIHRoZSBzZXNzaW9uIElELgor
ICAgICAgICBwb3N0RGF0YWJhc2VUYXNrKHN0ZDo6bWFrZV91bmlxdWU8QXN5bmNUYXNrPihbY2Fs
bGJhY2tBZ2dyZWdhdG9yLCB3ZWJzaXRlRGF0YVR5cGVzLCB0aGlzXSB7CisKKyAgICAgICAgICAg
IFZlY3RvcjxSZWZQdHI8U2VjdXJpdHlPcmlnaW4+PiBzZWN1cml0eU9yaWdpbnM7CisKKyAgICAg
ICAgICAgIGZvciAoY29uc3QgYXV0byYgb3JpZ2luRGF0YSA6IGdldEluZGV4ZWREYXRhYmFzZU9y
aWdpbnMoKSkKKyAgICAgICAgICAgICAgICBzZWN1cml0eU9yaWdpbnMuYXBwZW5kKG9yaWdpbkRh
dGEuc2VjdXJpdHlPcmlnaW4oKSk7CisKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNw
YXRjaChbY2FsbGJhY2tBZ2dyZWdhdG9yLCBzZWN1cml0eU9yaWdpbnNdIHsKKyAgICAgICAgICAg
ICAgICBmb3IgKGNvbnN0IGF1dG8mIHNlY3VyaXR5T3JpZ2luIDogc2VjdXJpdHlPcmlnaW5zKQor
ICAgICAgICAgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0b3ItPm1fd2Vic2l0ZURhdGEuZW50
cmllcy5hcHBlbmQoV2Vic2l0ZURhdGE6OkVudHJ5IHsgc2VjdXJpdHlPcmlnaW4sIFdlYnNpdGVE
YXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlcyB9KTsKKyAgICAgICAgICAgIH0pOworICAgICAgICB9
KSk7CisgICAgfQorfQorCit2b2lkIERhdGFiYXNlUHJvY2Vzczo6ZGVsZXRlV2Vic2l0ZURhdGEo
V2ViQ29yZTo6U2Vzc2lvbklELCB1aW50NjRfdCB3ZWJzaXRlRGF0YVR5cGVzLCBzdGQ6OmNocm9u
bzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2UsIHVpbnQ2NF90IGNhbGxi
YWNrSUQpCit7CisgICAgc3RydWN0IENhbGxiYWNrQWdncmVnYXRvciBmaW5hbCA6IHB1YmxpYyBU
aHJlYWRTYWZlUmVmQ291bnRlZDxDYWxsYmFja0FnZ3JlZ2F0b3I+IHsKKyAgICAgICAgZXhwbGlj
aXQgQ2FsbGJhY2tBZ2dyZWdhdG9yKHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gY29tcGxldGlvbkhh
bmRsZXIpCisgICAgICAgIDogbV9jb21wbGV0aW9uSGFuZGxlcihXVEY6Om1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKQorICAgICAgICB7CisgICAgICAgIH0KKworICAgICAgICB+Q2FsbGJhY2tBZ2dy
ZWdhdG9yKCkKKyAgICAgICAgeworICAgICAgICAgICAgQVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigp
KTsKKworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURjo6bW92ZShtX2Nv
bXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIH0KKworICAgICAgICBzdGQ6OmZ1bmN0aW9uPHZv
aWQgKCk+IG1fY29tcGxldGlvbkhhbmRsZXI7CisgICAgfTsKKworICAgIFJlZlB0cjxDYWxsYmFj
a0FnZ3JlZ2F0b3I+IGNhbGxiYWNrQWdncmVnYXRvciA9IGFkb3B0UmVmKG5ldyBDYWxsYmFja0Fn
Z3JlZ2F0b3IoW3RoaXMsIGNhbGxiYWNrSURdKCkgeworICAgICAgICBwYXJlbnRQcm9jZXNzQ29u
bmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpEYXRhYmFzZVByb2Nlc3NQcm94eTo6RGlkRGVsZXRl
V2Vic2l0ZURhdGEoY2FsbGJhY2tJRCksIDApOworICAgIH0pKTsKKworICAgIGlmICh3ZWJzaXRl
RGF0YVR5cGVzICYgV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzKSB7CisgICAgICAg
IHBvc3REYXRhYmFzZVRhc2soc3RkOjptYWtlX3VuaXF1ZTxBc3luY1Rhc2s+KFt0aGlzLCBjYWxs
YmFja0FnZ3JlZ2F0b3IsIG1vZGlmaWVkU2luY2VdIHsKKyAgICAgICAgICAgIGRvdWJsZSBzdGFy
dERhdGUgPSBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0b190aW1lX3QobW9kaWZpZWRTaW5j
ZSk7CisKKyAgICAgICAgICAgIGRlbGV0ZUluZGV4ZWREYXRhYmFzZUVudHJpZXNNb2RpZmllZEJl
dHdlZW5EYXRlcyhzdGFydERhdGUsIHN0ZDo6bnVtZXJpY19saW1pdHM8ZG91YmxlPjo6bWF4KCkp
OworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFtjYWxsYmFja0FnZ3JlZ2F0
b3JdIHsgfSk7CisgICAgICAgIH0pKTsKKyAgICB9Cit9CisKK3ZvaWQgRGF0YWJhc2VQcm9jZXNz
OjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoV2ViQ29yZTo6U2Vzc2lvbklELCB1aW50NjRf
dCB3ZWJzaXRlRGF0YVR5cGVzLCBjb25zdCBWZWN0b3I8U2VjdXJpdHlPcmlnaW5EYXRhPiYgb3Jp
Z2lucywgdWludDY0X3QgY2FsbGJhY2tJRCkKK3sKKyAgICBzdHJ1Y3QgQ2FsbGJhY2tBZ2dyZWdh
dG9yIGZpbmFsIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPENhbGxiYWNrQWdncmVnYXRv
cj4geworICAgICAgICBleHBsaWNpdCBDYWxsYmFja0FnZ3JlZ2F0b3Ioc3RkOjpmdW5jdGlvbjx2
b2lkICgpPiBjb21wbGV0aW9uSGFuZGxlcikKKyAgICAgICAgICAgIDogbV9jb21wbGV0aW9uSGFu
ZGxlcihXVEY6Om1vdmUoY29tcGxldGlvbkhhbmRsZXIpKQorICAgICAgICB7CisgICAgICAgIH0K
KworICAgICAgICB+Q2FsbGJhY2tBZ2dyZWdhdG9yKCkKKyAgICAgICAgeworICAgICAgICAgICAg
QVNTRVJUKFJ1bkxvb3A6OmlzTWFpbigpKTsKKworICAgICAgICAgICAgUnVuTG9vcDo6bWFpbigp
LmRpc3BhdGNoKFdURjo6bW92ZShtX2NvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgIH0KKwor
ICAgICAgICBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+IG1fY29tcGxldGlvbkhhbmRsZXI7CisgICAg
fTsKKworICAgIFJlZlB0cjxDYWxsYmFja0FnZ3JlZ2F0b3I+IGNhbGxiYWNrQWdncmVnYXRvciA9
IGFkb3B0UmVmKG5ldyBDYWxsYmFja0FnZ3JlZ2F0b3IoW3RoaXMsIGNhbGxiYWNrSURdKCkgewor
ICAgICAgICBwYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpEYXRhYmFz
ZVByb2Nlc3NQcm94eTo6RGlkRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zKGNhbGxiYWNrSUQp
LCAwKTsKKyAgICB9KSk7CisKKyAgICBpZiAod2Vic2l0ZURhdGFUeXBlcyAmIFdlYnNpdGVEYXRh
VHlwZUluZGV4ZWREQkRhdGFiYXNlcykgeworICAgICAgICBwb3N0RGF0YWJhc2VUYXNrKHN0ZDo6
bWFrZV91bmlxdWU8QXN5bmNUYXNrPihbdGhpcywgb3JpZ2lucywgY2FsbGJhY2tBZ2dyZWdhdG9y
XSB7CisgICAgICAgICAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdpbjogb3JpZ2lucykKKyAgICAg
ICAgICAgICAgICBkZWxldGVJbmRleGVkRGF0YWJhc2VFbnRyaWVzRm9yT3JpZ2luKG9yaWdpbik7
CisKKyAgICAgICAgICAgIFJ1bkxvb3A6Om1haW4oKS5kaXNwYXRjaChbY2FsbGJhY2tBZ2dyZWdh
dG9yXSB7IH0pOworICAgICAgICB9KSk7CisgICAgfQorfQorCiBWZWN0b3I8U2VjdXJpdHlPcmln
aW5EYXRhPiBEYXRhYmFzZVByb2Nlc3M6OmdldEluZGV4ZWREYXRhYmFzZU9yaWdpbnMoKQogewog
ICAgIFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+IHJlc3VsdHM7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9EYXRhYmFzZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLmgKaW5kZXggNzE0ODdjMGEzNjg5
Y2UzMjc1NDU4MjNlMGRlOWJmZDkwMTcxMTgxMC4uY2I2MmExMmM5NmM2YjBjNTAwNmQ1MDBkZWQ5
MzBlMWZkNjE0YzJlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQcm9jZXNz
L0RhdGFiYXNlUHJvY2Vzcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9E
YXRhYmFzZVByb2Nlc3MuaApAQCAtODgsNiArODgsMTAgQEAgcHJpdmF0ZToKICAgICB2b2lkIGlu
aXRpYWxpemVEYXRhYmFzZVByb2Nlc3MoY29uc3QgRGF0YWJhc2VQcm9jZXNzQ3JlYXRpb25QYXJh
bWV0ZXJzJik7CiAgICAgdm9pZCBjcmVhdGVEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24o
KTsKIAorICAgIHZvaWQgZmV0Y2hXZWJzaXRlRGF0YShXZWJDb3JlOjpTZXNzaW9uSUQsIHVpbnQ2
NF90IHdlYnNpdGVEYXRhVHlwZXMsIHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZGVs
ZXRlV2Vic2l0ZURhdGEoV2ViQ29yZTo6U2Vzc2lvbklELCB1aW50NjRfdCB3ZWJzaXRlRGF0YVR5
cGVzLCBzdGQ6OmNocm9ubzo6c3lzdGVtX2Nsb2NrOjp0aW1lX3BvaW50IG1vZGlmaWVkU2luY2Us
IHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZGVsZXRlV2Vic2l0ZURhdGFGb3JPcmln
aW5zKFdlYkNvcmU6OlNlc3Npb25JRCwgdWludDY0X3Qgd2Vic2l0ZURhdGFUeXBlcywgY29uc3Qg
VmVjdG9yPFNlY3VyaXR5T3JpZ2luRGF0YT4mIG9yaWdpbnMsIHVpbnQ2NF90IGNhbGxiYWNrSUQp
OworCiAgICAgLy8gRm9yIGV4ZWN1dGlvbiBvbiB3b3JrIHF1ZXVlIHRocmVhZCBvbmx5CiAgICAg
dm9pZCBwZXJmb3JtTmV4dERhdGFiYXNlVGFzaygpOwogICAgIHZvaWQgZW5zdXJlUGF0aEV4aXN0
cyhjb25zdCBTdHJpbmcmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJv
Y2Vzcy9EYXRhYmFzZVByb2Nlc3MubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9EYXRhYmFz
ZVByb2Nlc3MvRGF0YWJhc2VQcm9jZXNzLm1lc3NhZ2VzLmluCmluZGV4IGZhOWNmYzIwNjNlOTFm
MTI0ZThlYjExYTJjNjZkMWJiNmU5NDgyZTMuLjczNmIyYzhiNjQ0ODgyNTg4MDMyZDgyMzFlNTA5
NDViYTI3YjI2ODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0RhdGFiYXNlUHJvY2Vzcy9E
YXRhYmFzZVByb2Nlc3MubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvRGF0YWJhc2VQ
cm9jZXNzL0RhdGFiYXNlUHJvY2Vzcy5tZXNzYWdlcy5pbgpAQCAtMjgsNiArMjgsMTAgQEAgbWVz
c2FnZXMgLT4gRGF0YWJhc2VQcm9jZXNzIExlZ2FjeVJlY2VpdmVyIHsKIAogICAgICMgQ3JlYXRl
cyBhIGNvbm5lY3Rpb24gZm9yIGNvbW11bmljYXRpb24gd2l0aCBhIFdlYlByb2Nlc3MKICAgICBD
cmVhdGVEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24oKQorCisgICAgRmV0Y2hXZWJzaXRl
RGF0YShXZWJDb3JlOjpTZXNzaW9uSUQgc2Vzc2lvbklELCB1aW50NjRfdCB3ZWJzaXRlRGF0YVR5
cGVzLCB1aW50NjRfdCBjYWxsYmFja0lEKQorICAgIERlbGV0ZVdlYnNpdGVEYXRhKFdlYkNvcmU6
OlNlc3Npb25JRCBzZXNzaW9uSUQsIHVpbnQ2NF90IHdlYnNpdGVEYXRhVHlwZXMsIHN0ZDo6Y2hy
b25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVfcG9pbnQgbW9kaWZpZWRTaW5jZSwgdWludDY0X3QgY2Fs
bGJhY2tJRCkKKyAgICBEZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoV2ViQ29yZTo6U2Vzc2lv
bklEIHNlc3Npb25JRCwgdWludDY0X3Qgd2Vic2l0ZURhdGFUeXBlcywgVmVjdG9yPFdlYktpdDo6
U2VjdXJpdHlPcmlnaW5EYXRhPiBvcmlnaW5zLCB1aW50NjRfdCBjYWxsYmFja0lEKQogfQogCiAj
ZW5kaWYgLy8gRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9TaGFyZWQvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFUeXBlcy5oIGIvU291cmNlL1dlYktp
dDIvU2hhcmVkL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhVHlwZXMuaAppbmRleCAzZjJlZDg2ZTA1
ZTVlZjVlNWFkYjRjYTVkMTllZTUwZTQ3ZjBkYjAyLi5lNjNmOTZmODgxNjQ4MWViMWYwMmQ4YjE2
N2JmMDE3NzI4NTg3ODc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9TaGFyZWQvV2Vic2l0
ZURhdGEvV2Vic2l0ZURhdGFUeXBlcy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1NoYXJlZC9XZWJz
aXRlRGF0YS9XZWJzaXRlRGF0YVR5cGVzLmgKQEAgLTM1LDYgKzM1LDcgQEAgZW51bSBXZWJzaXRl
RGF0YVR5cGVzIHsKICAgICBXZWJzaXRlRGF0YVR5cGVPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNo
ZSA9IDEgPDwgMywKICAgICBXZWJzaXRlRGF0YVR5cGVMb2NhbFN0b3JhZ2UgPSAxIDw8IDQsCiAg
ICAgV2Vic2l0ZURhdGFUeXBlV2ViU1FMRGF0YWJhc2VzID0gMSA8PCA1LAorICAgIFdlYnNpdGVE
YXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlcyA9IDEgPDwgNiwKIH07CiAKIH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmQu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29y
ZC5oCmluZGV4IGRkMjY2MmNhZmExODM2ODUyYzlkNDQ4ZDBiM2IyMzY2YmQ3MzA5OTAuLmQ0NGYx
NjcwN2RiNDhlOGUwOTg3ZDdkZDJkOWNlYTA0NWQ4NmY4MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJzaXRlRGF0YVJlY29yZC5oCkBA
IC0zOCw2ICszOCw3IEBAIFdLX0VYVEVSTiBOU1N0cmluZyAqIGNvbnN0IFdLV2Vic2l0ZURhdGFU
eXBlT2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUgV0tfQVZBSUxBCiBXS19FWFRFUk4gTlNTdHJp
bmcgKiBjb25zdCBXS1dlYnNpdGVEYXRhVHlwZUNvb2tpZXMgV0tfQVZBSUxBQkxFKFdLX01BQ19U
QkEsIFdLX0lPU19UQkEpOwogV0tfRVhURVJOIE5TU3RyaW5nICogY29uc3QgV0tXZWJzaXRlRGF0
YVR5cGVMb2NhbFN0b3JhZ2UgV0tfQVZBSUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOwog
V0tfRVhURVJOIE5TU3RyaW5nICogY29uc3QgV0tXZWJzaXRlRGF0YVR5cGVXZWJTUUxEYXRhYmFz
ZXMgV0tfQVZBSUxBQkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOworV0tfRVhURVJOIE5TU3Ry
aW5nICogY29uc3QgV0tXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMgV0tfQVZBSUxB
QkxFKFdLX01BQ19UQkEsIFdLX0lPU19UQkEpOwogCiBXS19DTEFTU19BVkFJTEFCTEUoV0tfTUFD
X1RCQSwgV0tfSU9TX1RCQSkKIEBpbnRlcmZhY2UgV0tXZWJzaXRlRGF0YVJlY29yZCA6IE5TT2Jq
ZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
c2l0ZURhdGFSZWNvcmQubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2Vic2l0ZURhdGFSZWNvcmQubW0KaW5kZXggMzhmMzhhMWQ5MGZhNzc3YzEwNGJkYTI3NDk4ZGM4
NGQ0NDM3MTNiNy4uODUzOWE3ZjhlYTkyNDc0NmVlZjEyZjVhZWZiMzc1ZjgyNzU1NWI4OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
UmVjb3JkLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJz
aXRlRGF0YVJlY29yZC5tbQpAQCAtMzUsNiArMzUsNyBAQCBOU1N0cmluZyAqIGNvbnN0IFdLV2Vi
c2l0ZURhdGFUeXBlT2ZmbGluZVdlYkFwcGxpY2F0aW9uQ2FjaGUgPSBAIldLV2Vic2l0ZURhdGFU
eQogTlNTdHJpbmcgKiBjb25zdCBXS1dlYnNpdGVEYXRhVHlwZUNvb2tpZXMgPSBAIldLV2Vic2l0
ZURhdGFUeXBlQ29va2llcyI7CiBOU1N0cmluZyAqIGNvbnN0IFdLV2Vic2l0ZURhdGFUeXBlTG9j
YWxTdG9yYWdlID0gQCJXS1dlYnNpdGVEYXRhVHlwZUxvY2FsU3RvcmFnZSI7CiBOU1N0cmluZyAq
IGNvbnN0IFdLV2Vic2l0ZURhdGFUeXBlV2ViU1FMRGF0YWJhc2VzID0gQCJXS1dlYnNpdGVEYXRh
VHlwZVdlYlNRTERhdGFiYXNlcyI7CitOU1N0cmluZyAqIGNvbnN0IFdLV2Vic2l0ZURhdGFUeXBl
SW5kZXhlZERCRGF0YWJhc2VzID0gQCJXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNl
cyI7CiAKIEBpbXBsZW1lbnRhdGlvbiBXS1dlYnNpdGVEYXRhUmVjb3JkCiAKQEAgLTYxLDYgKzYy
LDggQEAgc3RhdGljIE5TU3RyaW5nICpkYXRhVHlwZXNUb1N0cmluZyhOU1NldCAqZGF0YVR5cGVz
KQogICAgICAgICBbYXJyYXkgYWRkT2JqZWN0OkAiTG9jYWwgU3RvcmFnZSJdOwogICAgIGlmIChb
ZGF0YVR5cGVzIGNvbnRhaW5zT2JqZWN0OldLV2Vic2l0ZURhdGFUeXBlV2ViU1FMRGF0YWJhc2Vz
XSkKICAgICAgICAgW2FycmF5IGFkZE9iamVjdDpAIldlYiBTUUwiXTsKKyAgICBpZiAoW2RhdGFU
eXBlcyBjb250YWluc09iamVjdDpXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlc10p
CisgICAgICAgIFthcnJheSBhZGRPYmplY3Q6QCJJbmRleGVkIERCIl07CiAKICAgICByZXR1cm4g
W2FycmF5IGNvbXBvbmVudHNKb2luZWRCeVN0cmluZzpAIiwgIl07CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNvcmRJbnRl
cm5hbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYnNpdGVEYXRh
UmVjb3JkSW50ZXJuYWwuaAppbmRleCBhM2E1ZTExMzYyMjczNmE4YmM4ZGIwZjQxYWE0NTBjMzkw
YmUzMWFjLi5iZDQwMjU1MGUwYjY2ZDdjMTdjNGFhODg5YWUzNGU5MDMwN2I2ODJhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vic2l0ZURhdGFSZWNv
cmRJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tX
ZWJzaXRlRGF0YVJlY29yZEludGVybmFsLmgKQEAgLTU2LDYgKzU2LDggQEAgc3RhdGljIGlubGlu
ZSBXZWJLaXQ6OldlYnNpdGVEYXRhVHlwZXMgdG9XZWJzaXRlRGF0YVR5cGVzKE5TU2V0ICp3a1dl
YnNpdGVEYXRhVHkKICAgICAgICAgd2Vic2l0ZURhdGFUeXBlcyB8PSBXZWJzaXRlRGF0YVR5cGVz
OjpXZWJzaXRlRGF0YVR5cGVMb2NhbFN0b3JhZ2U7CiAgICAgaWYgKFt3a1dlYnNpdGVEYXRhVHlw
ZXMgY29udGFpbnNPYmplY3Q6V0tXZWJzaXRlRGF0YVR5cGVXZWJTUUxEYXRhYmFzZXNdKQogICAg
ICAgICB3ZWJzaXRlRGF0YVR5cGVzIHw9IFdlYnNpdGVEYXRhVHlwZXM6OldlYnNpdGVEYXRhVHlw
ZVdlYlNRTERhdGFiYXNlczsKKyAgICBpZiAoW3drV2Vic2l0ZURhdGFUeXBlcyBjb250YWluc09i
amVjdDpXS1dlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlc10pCisgICAgICAgIHdlYnNp
dGVEYXRhVHlwZXMgfD0gV2Vic2l0ZURhdGFUeXBlczo6V2Vic2l0ZURhdGFUeXBlSW5kZXhlZERC
RGF0YWJhc2VzOwogCiAgICAgcmV0dXJuIHN0YXRpY19jYXN0PFdlYnNpdGVEYXRhVHlwZXM+KHdl
YnNpdGVEYXRhVHlwZXMpOwogfQpAQCAtNzgsNiArODAsOCBAQCBzdGF0aWMgaW5saW5lIFJldGFp
blB0cjxOU1NldD4gdG9XS1dlYnNpdGVEYXRhVHlwZXMoaW50IHdlYnNpdGVEYXRhVHlwZXMpCiAg
ICAgICAgIFt3a1dlYnNpdGVEYXRhVHlwZXMgYWRkT2JqZWN0OldLV2Vic2l0ZURhdGFUeXBlTG9j
YWxTdG9yYWdlXTsKICAgICBpZiAod2Vic2l0ZURhdGFUeXBlcyAmIFdlYnNpdGVEYXRhVHlwZXM6
OldlYnNpdGVEYXRhVHlwZVdlYlNRTERhdGFiYXNlcykKICAgICAgICAgW3drV2Vic2l0ZURhdGFU
eXBlcyBhZGRPYmplY3Q6V0tXZWJzaXRlRGF0YVR5cGVXZWJTUUxEYXRhYmFzZXNdOworICAgIGlm
ICh3ZWJzaXRlRGF0YVR5cGVzICYgV2Vic2l0ZURhdGFUeXBlczo6V2Vic2l0ZURhdGFUeXBlSW5k
ZXhlZERCRGF0YWJhc2VzKQorICAgICAgICBbd2tXZWJzaXRlRGF0YVR5cGVzIGFkZE9iamVjdDpX
S1dlYnNpdGVEYXRhVHlwZUluZGV4ZWREQkRhdGFiYXNlc107CiAKICAgICByZXR1cm4gd2tXZWJz
aXRlRGF0YVR5cGVzOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rh
dGFiYXNlcy9EYXRhYmFzZVByb2Nlc3NQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvRGF0YWJhc2VzL0RhdGFiYXNlUHJvY2Vzc1Byb3h5LmNwcAppbmRleCBiNjMxOWQ4YzU2Zjc1
Yzg1MWZjMDcwODM3NGYyYjIyYmQ1YjE2MjZhLi4yYTI4NjlmNDFjZjg1NDJmMjExODhkODg5ZGY2
OWFkMDk5MWMzMGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRGF0YWJh
c2VzL0RhdGFiYXNlUHJvY2Vzc1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvRGF0YWJhc2VzL0RhdGFiYXNlUHJvY2Vzc1Byb3h5LmNwcApAQCAtMzEsNiArMzEsNyBAQAog
I2luY2x1ZGUgIldlYk9yaWdpbkRhdGFNYW5hZ2VyUHJveHkuaCIKICNpbmNsdWRlICJXZWJPcmln
aW5EYXRhTWFuYWdlclByb3h5TWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUG9vbC5o
IgorI2luY2x1ZGUgIldlYnNpdGVEYXRhLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9Ob3RJbXBsZW1l
bnRlZC5oPgogCiAjaWYgRU5BQkxFKERBVEFCQVNFX1BST0NFU1MpCkBAIC0zOSw2ICs0MCwxMyBA
QCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK3N0YXRp
YyB1aW50NjRfdCBnZW5lcmF0ZUNhbGxiYWNrSUQoKQoreworICAgIHN0YXRpYyB1aW50NjRfdCBj
YWxsYmFja0lEOworCisgICAgcmV0dXJuICsrY2FsbGJhY2tJRDsKK30KKwogUGFzc1JlZlB0cjxE
YXRhYmFzZVByb2Nlc3NQcm94eT4gRGF0YWJhc2VQcm9jZXNzUHJveHk6OmNyZWF0ZShXZWJQcm9j
ZXNzUG9vbCogcHJvY2Vzc1Bvb2wpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEYXRhYmFz
ZVByb2Nlc3NQcm94eShwcm9jZXNzUG9vbCkpOwpAQCAtNTMsOSArNjEsMTEgQEAgRGF0YWJhc2VQ
cm9jZXNzUHJveHk6OkRhdGFiYXNlUHJvY2Vzc1Byb3h5KFdlYlByb2Nlc3NQb29sKiBwcm9jZXNz
UG9vbCkKIAogRGF0YWJhc2VQcm9jZXNzUHJveHk6On5EYXRhYmFzZVByb2Nlc3NQcm94eSgpCiB7
CisgICAgQVNTRVJUKG1fcGVuZGluZ0ZldGNoV2Vic2l0ZURhdGFDYWxsYmFja3MuaXNFbXB0eSgp
KTsKKyAgICBBU1NFUlQobV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFDYWxsYmFja3MuaXNFbXB0
eSgpKTsKKyAgICBBU1NFUlQobV9wZW5kaW5nRGVsZXRlV2Vic2l0ZURhdGFGb3JPcmlnaW5zQ2Fs
bGJhY2tzLmlzRW1wdHkoKSk7CiB9CiAKLQogdm9pZCBEYXRhYmFzZVByb2Nlc3NQcm94eTo6Z2V0
TGF1bmNoT3B0aW9ucyhQcm9jZXNzTGF1bmNoZXI6OkxhdW5jaE9wdGlvbnMmIGxhdW5jaE9wdGlv
bnMpCiB7CiAgICAgbGF1bmNoT3B0aW9ucy5wcm9jZXNzVHlwZSA9IFByb2Nlc3NMYXVuY2hlcjo6
RGF0YWJhc2VQcm9jZXNzOwpAQCAtNzUsNiArODUsMzggQEAgdm9pZCBEYXRhYmFzZVByb2Nlc3NQ
cm94eTo6ZGlkUmVjZWl2ZU1lc3NhZ2UoSVBDOjpDb25uZWN0aW9uJiBjb25uZWN0aW9uLCBJUEM6
Ok0KICAgICB9CiB9CiAKK3ZvaWQgRGF0YWJhc2VQcm9jZXNzUHJveHk6OmZldGNoV2Vic2l0ZURh
dGEoU2Vzc2lvbklEIHNlc3Npb25JRCwgV2Vic2l0ZURhdGFUeXBlcyBkYXRhVHlwZXMsIHN0ZDo6
ZnVuY3Rpb248dm9pZCAoV2Vic2l0ZURhdGEpPiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAgICBB
U1NFUlQoY2FuU2VuZE1lc3NhZ2UoKSk7CisKKyAgICB1aW50NjRfdCBjYWxsYmFja0lEID0gZ2Vu
ZXJhdGVDYWxsYmFja0lEKCk7CisgICAgbV9wZW5kaW5nRmV0Y2hXZWJzaXRlRGF0YUNhbGxiYWNr
cy5hZGQoY2FsbGJhY2tJRCwgV1RGOjptb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisKKyAgICBz
ZW5kKE1lc3NhZ2VzOjpEYXRhYmFzZVByb2Nlc3M6OkZldGNoV2Vic2l0ZURhdGEoc2Vzc2lvbklE
LCBkYXRhVHlwZXMsIGNhbGxiYWNrSUQpLCAwKTsKK30KKwordm9pZCBEYXRhYmFzZVByb2Nlc3NQ
cm94eTo6ZGVsZXRlV2Vic2l0ZURhdGEoV2ViQ29yZTo6U2Vzc2lvbklEIHNlc3Npb25JRCwgV2Vi
c2l0ZURhdGFUeXBlcyBkYXRhVHlwZXMsIHN0ZDo6Y2hyb25vOjpzeXN0ZW1fY2xvY2s6OnRpbWVf
cG9pbnQgbW9kaWZpZWRTaW5jZSwgIHN0ZDo6ZnVuY3Rpb248dm9pZCAoKT4gY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgYXV0byBjYWxsYmFja0lEID0gZ2VuZXJhdGVDYWxsYmFja0lEKCk7CisK
KyAgICBtX3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0YUNhbGxiYWNrcy5hZGQoY2FsbGJhY2tJRCwg
V1RGOjptb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgc2VuZChNZXNzYWdlczo6RGF0YWJh
c2VQcm9jZXNzOjpEZWxldGVXZWJzaXRlRGF0YShzZXNzaW9uSUQsIGRhdGFUeXBlcywgbW9kaWZp
ZWRTaW5jZSwgY2FsbGJhY2tJRCksIDApOworfQorCit2b2lkIERhdGFiYXNlUHJvY2Vzc1Byb3h5
OjpkZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnMoU2Vzc2lvbklEIHNlc3Npb25JRCwgV2Vic2l0
ZURhdGFUeXBlcyBkYXRhVHlwZXMsIGNvbnN0IFZlY3RvcjxSZWZQdHI8V2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW4+PiYgb3JpZ2lucywgc3RkOjpmdW5jdGlvbjx2b2lkICgpPiBjb21wbGV0aW9uSGFu
ZGxlcikKK3sKKyAgICBBU1NFUlQoY2FuU2VuZE1lc3NhZ2UoKSk7CisKKyAgICB1aW50NjRfdCBj
YWxsYmFja0lEID0gZ2VuZXJhdGVDYWxsYmFja0lEKCk7CisgICAgbV9wZW5kaW5nRGVsZXRlV2Vi
c2l0ZURhdGFGb3JPcmlnaW5zQ2FsbGJhY2tzLmFkZChjYWxsYmFja0lELCBXVEY6Om1vdmUoY29t
cGxldGlvbkhhbmRsZXIpKTsKKworICAgIFZlY3RvcjxTZWN1cml0eU9yaWdpbkRhdGE+IG9yaWdp
bkRhdGE7CisgICAgZm9yIChhdXRvJiBvcmlnaW4gOiBvcmlnaW5zKQorICAgICAgICBvcmlnaW5E
YXRhLmFwcGVuZChTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21TZWN1cml0eU9yaWdpbigqb3JpZ2lu
KSk7CisKKyAgICBzZW5kKE1lc3NhZ2VzOjpEYXRhYmFzZVByb2Nlc3M6OkRlbGV0ZVdlYnNpdGVE
YXRhRm9yT3JpZ2lucyhzZXNzaW9uSUQsIGRhdGFUeXBlcywgb3JpZ2luRGF0YSwgY2FsbGJhY2tJ
RCksIDApOworfQorCiB2b2lkIERhdGFiYXNlUHJvY2Vzc1Byb3h5OjpnZXREYXRhYmFzZVByb2Nl
c3NDb25uZWN0aW9uKFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6R2V0RGF0
YWJhc2VQcm9jZXNzQ29ubmVjdGlvbjo6RGVsYXllZFJlcGx5PiByZXBseSkKIHsKICAgICBtX3Bl
bmRpbmdDb25uZWN0aW9uUmVwbGllcy5hcHBlbmQocmVwbHkpOwpAQCAtMTAyLDYgKzE0NCwxOCBA
QCB2b2lkIERhdGFiYXNlUHJvY2Vzc1Byb3h5OjpkaWRDbG9zZShJUEM6OkNvbm5lY3Rpb24mKQog
I2VuZGlmCiAgICAgfQogCisgICAgZm9yIChjb25zdCBhdXRvJiBjYWxsYmFjayA6IG1fcGVuZGlu
Z0ZldGNoV2Vic2l0ZURhdGFDYWxsYmFja3MudmFsdWVzKCkpCisgICAgICAgIGNhbGxiYWNrKFdl
YnNpdGVEYXRhKCkpOworICAgIG1fcGVuZGluZ0ZldGNoV2Vic2l0ZURhdGFDYWxsYmFja3MuY2xl
YXIoKTsKKworICAgIGZvciAoY29uc3QgYXV0byYgY2FsbGJhY2sgOiBtX3BlbmRpbmdEZWxldGVX
ZWJzaXRlRGF0YUNhbGxiYWNrcy52YWx1ZXMoKSkKKyAgICAgICAgY2FsbGJhY2soKTsKKyAgICBt
X3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0YUNhbGxiYWNrcy5jbGVhcigpOworCisgICAgZm9yIChj
b25zdCBhdXRvJiBjYWxsYmFjayA6IG1fcGVuZGluZ0RlbGV0ZVdlYnNpdGVEYXRhRm9yT3JpZ2lu
c0NhbGxiYWNrcy52YWx1ZXMoKSkKKyAgICAgICAgY2FsbGJhY2soKTsKKyAgICBtX3BlbmRpbmdE
ZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnNDYWxsYmFja3MuY2xlYXIoKTsKKwogICAgIC8vIFRl
bGwgUHJvY2Vzc1Bvb2wgdG8gZm9yZ2V0IGFib3V0IHRoaXMgZGF0YWJhc2UgcHJvY2Vzcy4gVGhp
cyBtYXkgY2F1c2UgdXMgdG8gYmUgZGVsZXRlZC4KICAgICBtX3Byb2Nlc3NQb29sLT5kYXRhYmFz
ZVByb2Nlc3NDcmFzaGVkKHRoaXMpOwogfQpAQCAtMTI1LDYgKzE3OSwyNCBAQCB2b2lkIERhdGFi
YXNlUHJvY2Vzc1Byb3h5OjpkaWRDcmVhdGVEYXRhYmFzZVRvV2ViUHJvY2Vzc0Nvbm5lY3Rpb24o
Y29uc3QgSVBDOjpBdAogI2VuZGlmCiB9CiAKK3ZvaWQgRGF0YWJhc2VQcm9jZXNzUHJveHk6OmRp
ZEZldGNoV2Vic2l0ZURhdGEodWludDY0X3QgY2FsbGJhY2tJRCwgY29uc3QgV2Vic2l0ZURhdGEm
IHdlYnNpdGVEYXRhKQoreworICAgIGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdGZXRjaFdlYnNp
dGVEYXRhQ2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJRCk7CisgICAgY2FsbGJhY2sod2Vic2l0ZURh
dGEpOworfQorCit2b2lkIERhdGFiYXNlUHJvY2Vzc1Byb3h5OjpkaWREZWxldGVXZWJzaXRlRGF0
YSh1aW50NjRfdCBjYWxsYmFja0lEKQoreworICAgIGF1dG8gY2FsbGJhY2sgPSBtX3BlbmRpbmdE
ZWxldGVXZWJzaXRlRGF0YUNhbGxiYWNrcy50YWtlKGNhbGxiYWNrSUQpOworICAgIGNhbGxiYWNr
KCk7Cit9CisKK3ZvaWQgRGF0YWJhc2VQcm9jZXNzUHJveHk6OmRpZERlbGV0ZVdlYnNpdGVEYXRh
Rm9yT3JpZ2lucyh1aW50NjRfdCBjYWxsYmFja0lEKQoreworICAgIGF1dG8gY2FsbGJhY2sgPSBt
X3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnNDYWxsYmFja3MudGFrZShjYWxsYmFj
a0lEKTsKKyAgICBjYWxsYmFjaygpOworfQorCiB2b2lkIERhdGFiYXNlUHJvY2Vzc1Byb3h5Ojpk
aWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiBsYXVuY2hlciwgSVBDOjpDb25uZWN0
aW9uOjpJZGVudGlmaWVyIGNvbm5lY3Rpb25JZGVudGlmaWVyKQogewogICAgIENoaWxkUHJvY2Vz
c1Byb3h5OjpkaWRGaW5pc2hMYXVuY2hpbmcobGF1bmNoZXIsIGNvbm5lY3Rpb25JZGVudGlmaWVy
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJh
c2VQcm9jZXNzUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0
YWJhc2VQcm9jZXNzUHJveHkuaAppbmRleCBiZTY2YWRlZGVlMjc3ZGE0NTc5Y2M4ZWU3MmJiODJj
ZDlhOGI1NmViLi44YWQ4NjllYjMzN2MwZDRjOGQyZGVlYmNmMDQ1ODcwY2Y2Y2UxYzUwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRGF0YWJhc2VzL0RhdGFiYXNlUHJvY2Vz
c1Byb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RhdGFiYXNlcy9EYXRhYmFz
ZVByb2Nlc3NQcm94eS5oCkBAIC0zMSw4ICszMSwxNCBAQAogI2luY2x1ZGUgIkNoaWxkUHJvY2Vz
c1Byb3h5LmgiCiAjaW5jbHVkZSAiUHJvY2Vzc0xhdW5jaGVyLmgiCiAjaW5jbHVkZSAiV2ViUHJv
Y2Vzc1Byb3h5TWVzc2FnZXMuaCIKKyNpbmNsdWRlICJXZWJzaXRlRGF0YVR5cGVzLmgiCiAjaW5j
bHVkZSA8d3RmL0RlcXVlLmg+CiAKK25hbWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFNlY3VyaXR5
T3JpZ2luOworY2xhc3MgU2Vzc2lvbklEOworfQorCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xh
c3MgV2ViUHJvY2Vzc1Bvb2w7CkBAIC00Miw2ICs0OCwxMCBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8RGF0YWJhc2VQcm9jZXNzUHJveHk+IGNyZWF0ZShXZWJQcm9jZXNzUG9vbCop
OwogICAgIH5EYXRhYmFzZVByb2Nlc3NQcm94eSgpOwogCisgICAgdm9pZCBmZXRjaFdlYnNpdGVE
YXRhKFdlYkNvcmU6OlNlc3Npb25JRCwgV2Vic2l0ZURhdGFUeXBlcywgc3RkOjpmdW5jdGlvbjx2
b2lkIChXZWJzaXRlRGF0YSk+IGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIGRlbGV0ZVdl
YnNpdGVEYXRhKFdlYkNvcmU6OlNlc3Npb25JRCwgV2Vic2l0ZURhdGFUeXBlcywgc3RkOjpjaHJv
bm86OnN5c3RlbV9jbG9jazo6dGltZV9wb2ludCBtb2RpZmllZFNpbmNlLCBzdGQ6OmZ1bmN0aW9u
PHZvaWQgKCk+IGNvbXBsZXRpb25IYW5kbGVyKTsKKyAgICB2b2lkIGRlbGV0ZVdlYnNpdGVEYXRh
Rm9yT3JpZ2lucyhXZWJDb3JlOjpTZXNzaW9uSUQsIFdlYnNpdGVEYXRhVHlwZXMsIGNvbnN0IFZl
Y3RvcjxSZWZQdHI8V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4+PiYgb3JpZ2lucywgc3RkOjpmdW5j
dGlvbjx2b2lkICgpPiBjb21wbGV0aW9uSGFuZGxlcik7CisKICAgICB2b2lkIGdldERhdGFiYXNl
UHJvY2Vzc0Nvbm5lY3Rpb24oUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpH
ZXREYXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+KTsKIAogcHJpdmF0ZToK
QEAgLTYxLDYgKzcxLDkgQEAgcHJpdmF0ZToKIAogICAgIC8vIE1lc3NhZ2UgaGFuZGxlcnMKICAg
ICB2b2lkIGRpZENyZWF0ZURhdGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbihjb25zdCBJUEM6
OkF0dGFjaG1lbnQmKTsKKyAgICB2b2lkIGRpZEZldGNoV2Vic2l0ZURhdGEodWludDY0X3QgY2Fs
bGJhY2tJRCwgY29uc3QgV2Vic2l0ZURhdGEmKTsKKyAgICB2b2lkIGRpZERlbGV0ZVdlYnNpdGVE
YXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpOworICAgIHZvaWQgZGlkRGVsZXRlV2Vic2l0ZURhdGFG
b3JPcmlnaW5zKHVpbnQ2NF90IGNhbGxiYWNrSUQpOwogCiAgICAgLy8gUHJvY2Vzc0xhdW5jaGVy
OjpDbGllbnQKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTGF1bmNoaW5nKFByb2Nlc3NMYXVu
Y2hlciosIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcikgb3ZlcnJpZGU7CkBAIC03MSw2ICs4
NCwxMCBAQCBwcml2YXRlOgogCiAgICAgdW5zaWduZWQgbV9udW1QZW5kaW5nQ29ubmVjdGlvblJl
cXVlc3RzOwogICAgIERlcXVlPFJlZlB0cjxNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpHZXRE
YXRhYmFzZVByb2Nlc3NDb25uZWN0aW9uOjpEZWxheWVkUmVwbHk+PiBtX3BlbmRpbmdDb25uZWN0
aW9uUmVwbGllczsKKworICAgIEhhc2hNYXA8dWludDY0X3QsIHN0ZDo6ZnVuY3Rpb248dm9pZCAo
V2Vic2l0ZURhdGEpPj4gbV9wZW5kaW5nRmV0Y2hXZWJzaXRlRGF0YUNhbGxiYWNrczsKKyAgICBI
YXNoTWFwPHVpbnQ2NF90LCBzdGQ6OmZ1bmN0aW9uPHZvaWQgKCk+PiBtX3BlbmRpbmdEZWxldGVX
ZWJzaXRlRGF0YUNhbGxiYWNrczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBzdGQ6OmZ1bmN0aW9u
PHZvaWQgKCk+PiBtX3BlbmRpbmdEZWxldGVXZWJzaXRlRGF0YUZvck9yaWdpbnNDYWxsYmFja3M7
CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJhc2VQcm9jZXNzUHJveHkubWVzc2FnZXMuaW4gYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRGF0YWJhc2VzL0RhdGFiYXNlUHJvY2Vzc1Byb3h5Lm1l
c3NhZ2VzLmluCmluZGV4IDZiYzYyMjlkNGJiN2NjOTZiZjljMGNkZTE3YWIyYmRiYTI1YTM3ZDAu
LjE5ODZjZDQ0NWZkZDNjMmJhNTM1YTQ0Njc3MDBkN2RhMDdjNmI4MmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EYXRhYmFzZXMvRGF0YWJhc2VQcm9jZXNzUHJveHkubWVz
c2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RhdGFiYXNlcy9EYXRhYmFz
ZVByb2Nlc3NQcm94eS5tZXNzYWdlcy5pbgpAQCAtMjQsNiArMjQsMTAgQEAKIAogbWVzc2FnZXMg
LT4gRGF0YWJhc2VQcm9jZXNzUHJveHkgTGVnYWN5UmVjZWl2ZXIgewogICAgIERpZENyZWF0ZURh
dGFiYXNlVG9XZWJQcm9jZXNzQ29ubmVjdGlvbihJUEM6OkF0dGFjaG1lbnQgY29ubmVjdGlvbklk
ZW50aWZpZXIpCisKKyAgICBEaWRGZXRjaFdlYnNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQs
IHN0cnVjdCBXZWJLaXQ6OldlYnNpdGVEYXRhIHdlYnNpdGVEYXRhKQorICAgIERpZERlbGV0ZVdl
YnNpdGVEYXRhKHVpbnQ2NF90IGNhbGxiYWNrSUQpCisgICAgRGlkRGVsZXRlV2Vic2l0ZURhdGFG
b3JPcmlnaW5zKHVpbnQ2NF90IGNhbGxiYWNrSUQpCiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoREFU
QUJBU0VfUFJPQ0VTUykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgK
aW5kZXggYTIwNzRlN2IxYjY5MTczNmYwYzk5YTc0YjVhYzdiZDVjYmU2NmNiMy4uOWZjMzU1ZWFm
ZmJhOTkyNDczNWQ0OGY4OGRjOTRjZWUwYjcxODI4MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQb29sLmgKQEAgLTMwMCw2ICszMDAsNyBAQCBwdWJsaWM6CiAKICNpZiBF
TkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKICAgICB2b2lkIGVuc3VyZURhdGFiYXNlUHJvY2Vzcygp
OworICAgIERhdGFiYXNlUHJvY2Vzc1Byb3h5KiBkYXRhYmFzZVByb2Nlc3MoKSB7IHJldHVybiBt
X2RhdGFiYXNlUHJvY2Vzcy5nZXQoKTsgfQogICAgIHZvaWQgZ2V0RGF0YWJhc2VQcm9jZXNzQ29u
bmVjdGlvbihQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkdldERhdGFiYXNl
UHJvY2Vzc0Nvbm5lY3Rpb246OkRlbGF5ZWRSZXBseT4pOwogICAgIHZvaWQgZGF0YWJhc2VQcm9j
ZXNzQ3Jhc2hlZChEYXRhYmFzZVByb2Nlc3NQcm94eSopOwogI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vic2l0ZURhdGEvV2Vic2l0ZURhdGFTdG9yZS5j
cHAKaW5kZXggZGFkNWQ4YzY5YTc4OWNiMTE4ZjJkYWRmNmFhZTVjYjQzOTQzZmYzYi4uZjcyNzM0
YTAwYmQyNWEzZWM2ZWNhODYyN2NjYTYwNmVhZTViYzAyYiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYnNpdGVEYXRhL1dlYnNpdGVEYXRhU3RvcmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJzaXRlRGF0YS9XZWJzaXRlRGF0YVN0b3JlLmNwcApA
QCAtMzE5LDYgKzMxOSwyMyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OmZldGNoRGF0YShXZWJz
aXRlRGF0YVR5cGVzIGRhdGFUeXBlcywgc3RkOjpmdW5jdGlvbjx2b2lkCiAgICAgICAgIH0pOwog
ICAgIH0KIAorI2lmIEVOQUJMRShEQVRBQkFTRV9QUk9DRVNTKQorICAgIGlmIChkYXRhVHlwZXMg
JiBXZWJzaXRlRGF0YVR5cGVJbmRleGVkREJEYXRhYmFzZXMgJiYgIWlzTm9uUGVyc2lzdGVudCgp
KSB7CisgICAgICAgIEhhc2hTZXQ8V2ViUHJvY2Vzc1Bvb2wqPiBwcm9jZXNzUG9vbHM7CisgICAg
ICAgIGZvciAoYXV0byYgcHJvY2VzcyA6IHByb2Nlc3NlcygpKQorICAgICAgICAgICAgcHJvY2Vz
c1Bvb2xzLmFkZCgmcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKSk7CisKKyAgICAgICAgZm9yIChhdXRv
JiBwcm9jZXNzUG9vbCA6IHByb2Nlc3NQb29scykgeworICAgICAgICAgICAgcHJvY2Vzc1Bvb2wt
PmVuc3VyZURhdGFiYXNlUHJvY2VzcygpOworCisgICAgICAgICAgICBjYWxsYmFja0FnZ3JlZ2F0
b3ItPmFkZFBlbmRpbmdDYWxsYmFjaygpOworICAgICAgICAgICAgcHJvY2Vzc1Bvb2wtPmRhdGFi
YXNlUHJvY2VzcygpLT5mZXRjaFdlYnNpdGVEYXRhKG1fc2Vzc2lvbklELCBkYXRhVHlwZXMsIFtj
YWxsYmFja0FnZ3JlZ2F0b3JdKFdlYnNpdGVEYXRhIHdlYnNpdGVEYXRhKSB7CisgICAgICAgICAg
ICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5yZW1vdmVQZW5kaW5nQ2FsbGJhY2soV1RGOjptb3Zl
KHdlYnNpdGVEYXRhKSk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRp
ZgorCiAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5jYWxsSWZOZWVkZWQoKTsKIH0KIApAQCAtNDc1
LDYgKzQ5MiwyMyBAQCB2b2lkIFdlYnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoV2Vic2l0ZURh
dGFUeXBlcyBkYXRhVHlwZXMsIHN0ZDo6Y2hyb25vOjpzeXN0ZQogICAgICAgICB9KTsKICAgICB9
CiAKKyNpZiBFTkFCTEUoREFUQUJBU0VfUFJPQ0VTUykKKyAgICBpZiAoZGF0YVR5cGVzICYgV2Vi
c2l0ZURhdGFUeXBlSW5kZXhlZERCRGF0YWJhc2VzICYmICFpc05vblBlcnNpc3RlbnQoKSkgewor
ICAgICAgICBIYXNoU2V0PFdlYlByb2Nlc3NQb29sKj4gcHJvY2Vzc1Bvb2xzOworICAgICAgICBm
b3IgKGF1dG8mIHByb2Nlc3MgOiBwcm9jZXNzZXMoKSkKKyAgICAgICAgICAgIHByb2Nlc3NQb29s
cy5hZGQoJnByb2Nlc3MtPnByb2Nlc3NQb29sKCkpOworCisgICAgICAgIGZvciAoYXV0byYgcHJv
Y2Vzc1Bvb2wgOiBwcm9jZXNzUG9vbHMpIHsKKyAgICAgICAgICAgIHByb2Nlc3NQb29sLT5lbnN1
cmVEYXRhYmFzZVByb2Nlc3MoKTsKKworICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5h
ZGRQZW5kaW5nQ2FsbGJhY2soKTsKKyAgICAgICAgICAgIHByb2Nlc3NQb29sLT5kYXRhYmFzZVBy
b2Nlc3MoKS0+ZGVsZXRlV2Vic2l0ZURhdGEobV9zZXNzaW9uSUQsIGRhdGFUeXBlcywgbW9kaWZp
ZWRTaW5jZSwgW2NhbGxiYWNrQWdncmVnYXRvcl0oKSB7CisgICAgICAgICAgICAgICAgY2FsbGJh
Y2tBZ2dyZWdhdG9yLT5yZW1vdmVQZW5kaW5nQ2FsbGJhY2soKTsKKyAgICAgICAgICAgIH0pOwor
ICAgICAgICB9CisgICAgfQorI2VuZGlmCisKICAgICAvLyBUaGVyZSdzIGEgY2hhbmNlIHRoYXQg
d2UgZG9uJ3QgaGF2ZSBhbnkgcGVuZGluZyBjYWxsYmFja3MuIElmIHNvLCB3ZSB3YW50IHRvIGRp
c3BhdGNoIHRoZSBjb21wbGV0aW9uIGhhbmRsZXIgcmlnaHQgYXdheS4KICAgICBjYWxsYmFja0Fn
Z3JlZ2F0b3ItPmNhbGxJZk5lZWRlZCgpOwogfQpAQCAtNjMxLDYgKzY2NSwyMyBAQCB2b2lkIFdl
YnNpdGVEYXRhU3RvcmU6OnJlbW92ZURhdGEoV2Vic2l0ZURhdGFUeXBlcyBkYXRhVHlwZXMsIGNv
bnN0IFZlY3RvcjxXZWJzaQogICAgICAgICB9KTsKICAgICB9CiAKKyNpZiBFTkFCTEUoREFUQUJB
U0VfUFJPQ0VTUykKKyAgICBpZiAoZGF0YVR5cGVzICYgV2Vic2l0ZURhdGFUeXBlSW5kZXhlZERC
RGF0YWJhc2VzICYmICFpc05vblBlcnNpc3RlbnQoKSkgeworICAgICAgICBIYXNoU2V0PFdlYlBy
b2Nlc3NQb29sKj4gcHJvY2Vzc1Bvb2xzOworICAgICAgICBmb3IgKGF1dG8mIHByb2Nlc3MgOiBw
cm9jZXNzZXMoKSkKKyAgICAgICAgICAgIHByb2Nlc3NQb29scy5hZGQoJnByb2Nlc3MtPnByb2Nl
c3NQb29sKCkpOworCisgICAgICAgIGZvciAoYXV0byYgcHJvY2Vzc1Bvb2wgOiBwcm9jZXNzUG9v
bHMpIHsKKyAgICAgICAgICAgIHByb2Nlc3NQb29sLT5lbnN1cmVEYXRhYmFzZVByb2Nlc3MoKTsK
KworICAgICAgICAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5hZGRQZW5kaW5nQ2FsbGJhY2soKTsK
KyAgICAgICAgICAgIHByb2Nlc3NQb29sLT5kYXRhYmFzZVByb2Nlc3MoKS0+ZGVsZXRlV2Vic2l0
ZURhdGFGb3JPcmlnaW5zKG1fc2Vzc2lvbklELCBkYXRhVHlwZXMsIG9yaWdpbnMsIFtjYWxsYmFj
a0FnZ3JlZ2F0b3JdKCkgeworICAgICAgICAgICAgICAgIGNhbGxiYWNrQWdncmVnYXRvci0+cmVt
b3ZlUGVuZGluZ0NhbGxiYWNrKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0K
KyNlbmRpZgorCiAgICAgLy8gVGhlcmUncyBhIGNoYW5jZSB0aGF0IHdlIGRvbid0IGhhdmUgYW55
IHBlbmRpbmcgY2FsbGJhY2tzLiBJZiBzbywgd2Ugd2FudCB0byBkaXNwYXRjaCB0aGUgY29tcGxl
dGlvbiBoYW5kbGVyIHJpZ2h0IGF3YXkuCiAgICAgY2FsbGJhY2tBZ2dyZWdhdG9yLT5jYWxsSWZO
ZWVkZWQoKTsKIH0K
</data>
<flag name="review"
          id="276088"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>