<?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>177590</bug_id>
          
          <creation_ts>2017-09-27 21:27:20 -0700</creation_ts>
          <short_desc>REGRESSION(r214201): WebProcess hangs during policy decisions</short_desc>
          <delta_ts>2017-10-29 16:16:25 -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>
          
          
          <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>aestes</cc>
    
    <cc>commit-queue</cc>
    
    <cc>mitz</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1354023</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-27 21:27:20 -0700</bug_when>
    <thetext>REGRESSION(r214201): WebProcess hangs during policy decisions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354024</commentid>
    <comment_count>1</comment_count>
      <attachid>322064</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-27 21:28:47 -0700</bug_when>
    <thetext>Created attachment 322064
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354029</commentid>
    <comment_count>2</comment_count>
      <attachid>322065</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-09-27 21:49:08 -0700</bug_when>
    <thetext>Created attachment 322065
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1354790</commentid>
    <comment_count>3</comment_count>
      <attachid>322065</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-29 17:21:38 -0700</bug_when>
    <thetext>Comment on attachment 322065
Patch

Rejecting attachment 322065 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 322065, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
ject.pbxproj
Hunk #1 FAILED at 227.
Hunk #2 FAILED at 1330.
Hunk #3 succeeded at 1996 (offset 24 lines).
Hunk #4 succeeded at 3318 (offset 33 lines).
2 out of 4 hunks FAILED -- saving rejects to file Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj.rej
patching file Tools/TestWebKitAPI/Tests/WebKitCocoa/JavaScriptDuringNavigation.mm

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;, &apos;--reviewer&apos;, u&apos;Andy Estes&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.webkit.org/results/4703526</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355266</commentid>
    <comment_count>4</comment_count>
      <attachid>322384</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-10-02 10:07:46 -0700</bug_when>
    <thetext>Created attachment 322384
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355269</commentid>
    <comment_count>5</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-10-02 10:09:52 -0700</bug_when>
    <thetext>http://trac.webkit.org/r222714</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1355270</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-10-02 10:10:40 -0700</bug_when>
    <thetext>&lt;rdar://problem/34769298&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365856</commentid>
    <comment_count>7</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-10-29 16:16:25 -0700</bug_when>
    <thetext>This looks to be a 12-13% regression on JSBench on Mac.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322064</attachid>
            <date>2017-09-27 21:28:47 -0700</date>
            <delta_ts>2017-09-27 21:49:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177590-20170927212846.patch</filename>
            <type>text/plain</type>
            <size>45147</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjI1ODQpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDE3LTA5LTI3ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lPTihy
MjE0MjAxKTogV2ViUHJvY2VzcyBoYW5ncyBkdXJpbmcgcG9saWN5IGRlY2lzaW9ucworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3NTkwCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8zMzM2MjkyOT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGxpa2UgcjIyMjQzMSBidXQgZm9yIHRydW5rIGlu
c3RlYWQgb2YgYSBicmFuY2guCisgICAgICAgIEl0IGluY2x1ZGVzIHRoZSBzYW1lIHJlZ3Jlc3Np
b24gQVBJIHRlc3Qgc28gSSBkb24ndCBtYWtlIHRoZSBzYW1lIG1pc3Rha2UgYWdhaW4uCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZVNldFBh
Z2VOYXZpZ2F0aW9uQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lG
b3JSZXNwb25zZVN5bmMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JS
ZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkZy
YW1lTG9hZGVyQ2xpZW50OjphcHBseVRvRG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkRvY3VtZW50TG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRG9jdW1lbnRMb2FkZXI6OnNldE5hdmlnYXRp
b25JRCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWU6OnNldFVwUG9saWN5TGlzdGVuZXIpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZTo6aW52YWxpZGF0ZVBvbGljeUxpc3RlbmVyKToKKyAgICAgICAgKFdlYktp
dDo6V2ViRnJhbWU6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbik6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRSZWNlaXZlUG9saWN5RGVj
aXNpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMTctMDktMjcg
IEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBB
bGxvdyBtb2Rlcm4gZGVjb2Rpbmcgb2Ygc3RkOjpvcHRpb25hbDxUPgpJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyMjI1ODMpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
Mjc1LDcgKzIyNzUsOCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lv
CiAgICAgRG93bmxvYWRJRCBkb3dubG9hZElEID0geyB9OwogICAgIGlmIChhY3Rpb24gPT0gUG9s
aWN5QWN0aW9uOjpEb3dubG9hZCkgewogICAgICAgICAvLyBDcmVhdGUgYSBkb3dubG9hZCBwcm94
eS4KLSAgICAgICAgYXV0byogZG93bmxvYWQgPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuY3Jl
YXRlRG93bmxvYWRQcm94eShtX2RlY2lkZVBvbGljeUZvclJlc3BvbnNlUmVxdWVzdCwgdGhpcyk7
CisgICAgICAgIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgZG93bmxvYWRSZXF1ZXN0ID0gbV9kZWNp
ZGVQb2xpY3lGb3JSZXNwb25zZVJlcXVlc3QgPyAqbV9kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVJl
cXVlc3QgOiBSZXNvdXJjZVJlcXVlc3QoKTsKKyAgICAgICAgRG93bmxvYWRQcm94eSogZG93bmxv
YWQgPSBtX3Byb2Nlc3MtPnByb2Nlc3NQb29sKCkuY3JlYXRlRG93bmxvYWRQcm94eShkb3dubG9h
ZFJlcXVlc3QsIHRoaXMpOwogICAgICAgICBpZiAobmF2aWdhdGlvbikgewogICAgICAgICAgICAg
ZG93bmxvYWQtPnNldFdhc1VzZXJJbml0aWF0ZWQobmF2aWdhdGlvbi0+d2FzVXNlckluaXRpYXRl
ZCgpKTsKICAgICAgICAgICAgIGRvd25sb2FkLT5zZXRSZWRpcmVjdENoYWluKG5hdmlnYXRpb24t
PnRha2VSZWRpcmVjdENoYWluKCkpOwpAQCAtMjI4MywyOCArMjI4NCwyOCBAQCB2b2lkIFdlYlBh
Z2VQcm94eTo6cmVjZWl2ZWRQb2xpY3lEZWNpc2lvCiAKICAgICAgICAgZG93bmxvYWRJRCA9IGRv
d25sb2FkLT5kb3dubG9hZElEKCk7CiAgICAgICAgIGhhbmRsZURvd25sb2FkUmVxdWVzdChkb3du
bG9hZCk7Ci0gICAgICAgIG1fZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VSZXF1ZXN0ID0geyB9Owog
ICAgIH0KIAogICAgIC8vIElmIHdlIHJlY2VpdmVkIGEgcG9saWN5IGRlY2lzaW9uIHdoaWxlIGlu
IGRlY2lkZVBvbGljeUZvclJlc3BvbnNlIHRoZSBkZWNpc2lvbiB3aWxsCiAgICAgLy8gYmUgc2Vu
dCBiYWNrIHRvIHRoZSB3ZWIgcHJvY2VzcyBieSBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZS4KLSAg
ICBpZiAobV9yZXNwb25zZVBvbGljeVJlcGx5KSB7Ci0gICAgICAgIG1fcmVzcG9uc2VQb2xpY3lS
ZXBseS0+c2VuZChhY3Rpb24sIGRvd25sb2FkSUQpOwotICAgICAgICBBU1NFUlQoIW1fbmV3TmF2
aWdhdGlvbklEKTsKLSAgICAgICAgbV9yZXNwb25zZVBvbGljeVJlcGx5ID0gbnVsbHB0cjsKKyAg
ICBpZiAobV9pbkRlY2lkZVBvbGljeUZvclJlc3BvbnNlU3luYykgeworICAgICAgICBtX3N5bmNN
aW1lVHlwZVBvbGljeUFjdGlvbklzVmFsaWQgPSB0cnVlOworICAgICAgICBtX3N5bmNNaW1lVHlw
ZVBvbGljeUFjdGlvbiA9IGFjdGlvbjsKKyAgICAgICAgbV9zeW5jTWltZVR5cGVQb2xpY3lEb3du
bG9hZElEID0gZG93bmxvYWRJRDsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8vIElm
IHdlIHJlY2VpdmVkIGEgcG9saWN5IGRlY2lzaW9uIHdoaWxlIGluIGRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb24gdGhlIGRlY2lzaW9uIHdpbGwgCiAgICAgLy8gYmUgc2VudCBiYWNrIHRv
IHRoZSB3ZWIgcHJvY2VzcyBieSBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uLiAKLSAg
ICBpZiAobV9uYXZpZ2F0aW9uQWN0aW9uUG9saWN5UmVwbHkpIHsKLSAgICAgICAgbV9uYXZpZ2F0
aW9uQWN0aW9uUG9saWN5UmVwbHktPnNlbmQobV9uZXdOYXZpZ2F0aW9uSUQsIGFjdGlvbiwgZG93
bmxvYWRJRCwgd2Vic2l0ZVBvbGljaWVzKTsKLSAgICAgICAgbV9uZXdOYXZpZ2F0aW9uSUQgPSAw
OwotICAgICAgICBtX25hdmlnYXRpb25BY3Rpb25Qb2xpY3lSZXBseSA9IG51bGxwdHI7CisgICAg
aWYgKG1faW5EZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKSB7CisgICAgICAgIG1fc3lu
Y05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBY3Rpb25Jc1ZhbGlkID0gdHJ1ZTsKKyAgICAgICAgbV9z
eW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeUFjdGlvbiA9IGFjdGlvbjsKKyAgICAgICAgbV9zeW5j
TmF2aWdhdGlvbkFjdGlvblBvbGljeURvd25sb2FkSUQgPSBkb3dubG9hZElEOworICAgICAgICBt
X3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5V2Vic2l0ZVBvbGljaWVzID0gd2Vic2l0ZVBvbGlj
aWVzOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAotICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lLmZyYW1lSUQo
KSwgbGlzdGVuZXJJRCwgYWN0aW9uLCBuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdhdGlv
bklEKCkgOiAwLCBkb3dubG9hZElEKSwgbV9wYWdlSUQpOworICAgIG1fcHJvY2Vzcy0+c2VuZChN
ZXNzYWdlczo6V2ViUGFnZTo6RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lLmZyYW1lSUQo
KSwgbGlzdGVuZXJJRCwgYWN0aW9uLCBuYXZpZ2F0aW9uID8gbmF2aWdhdGlvbi0+bmF2aWdhdGlv
bklEKCkgOiAwLCBkb3dubG9hZElELCB3ZWJzaXRlUG9saWNpZXMpLCBtX3BhZ2VJRCk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpzZXRVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQp
CkBAIC0zNjU2LDcgKzM2NTcsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZnJhbWVEaWRCZWNvbWVG
cmFtZVNlCiAgICAgICAgIG1fZnJhbWVTZXRMYXJnZXN0RnJhbWUgPSB2YWx1ZSA/IG1fbWFpbkZy
YW1lIDogMDsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFt
ZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25E
YXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIGNvbnN0IEZyYW1lSW5mb0RhdGEmIG9yaWdpbmF0
aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNv
cmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEsIFJl
ZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9u
OjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdh
dGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgY29uc3QgRnJhbWVJbmZvRGF0
YSYgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1
c2VyRGF0YSwgYm9vbCYgcmVjZWl2ZWRQb2xpY3lBY3Rpb24sIHVpbnQ2NF90JiBuZXdOYXZpZ2F0
aW9uSUQsIFdlYkNvcmU6OlBvbGljeUFjdGlvbiYgcG9saWN5QWN0aW9uLCBEb3dubG9hZElEJiBk
b3dubG9hZElELCBXZWJzaXRlUG9saWNpZXMmIHdlYnNpdGVQb2xpY2llcykKIHsKICAgICBQYWdl
Q2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihtX3BhZ2VDbGllbnQpOwogCkBAIC0zNjcxLDExICsz
NjcyLDEwIEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2EKICAgICBN
RVNTQUdFX0NIRUNLX1VSTChyZXF1ZXN0LnVybCgpKTsKICAgICBNRVNTQUdFX0NIRUNLX1VSTChv
cmlnaW5hbFJlcXVlc3QudXJsKCkpOwogICAgIAotICAgIG1fbmV3TmF2aWdhdGlvbklEID0gMDsK
ICAgICBSZWY8V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiBsaXN0ZW5lciA9IGZyYW1lLT5z
ZXRVcFBvbGljeUxpc3RlbmVyUHJveHkobGlzdGVuZXJJRCk7CiAgICAgaWYgKCFuYXZpZ2F0aW9u
SUQpIHsKICAgICAgICAgYXV0byBuYXZpZ2F0aW9uID0gbV9uYXZpZ2F0aW9uU3RhdGUtPmNyZWF0
ZUxvYWRSZXF1ZXN0TmF2aWdhdGlvbihSZXNvdXJjZVJlcXVlc3QocmVxdWVzdCkpOwotICAgICAg
ICBtX25ld05hdmlnYXRpb25JRCA9IG5hdmlnYXRpb24tPm5hdmlnYXRpb25JRCgpOworICAgICAg
ICBuZXdOYXZpZ2F0aW9uSUQgPSBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKTsKICAgICAgICAg
bmF2aWdhdGlvbi0+c2V0V2FzVXNlckluaXRpYXRlZCghIW5hdmlnYXRpb25BY3Rpb25EYXRhLnVz
ZXJHZXN0dXJlVG9rZW5JZGVudGlmaWVyKTsKICAgICAgICAgbGlzdGVuZXItPnNldE5hdmlnYXRp
b24oV1RGTW92ZShuYXZpZ2F0aW9uKSk7CiAgICAgfSBlbHNlIHsKQEAgLTM2ODYsMTYgKzM2ODYs
MTkgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYQogCiAjaWYgRU5B
QkxFKENPTlRFTlRfRklMVEVSSU5HKQogICAgIGlmIChmcmFtZS0+ZGlkSGFuZGxlQ29udGVudEZp
bHRlclVuYmxvY2tOYXZpZ2F0aW9uKHJlcXVlc3QpKSB7Ci0gICAgICAgIHJlcGx5LT5zZW5kKG1f
bmV3TmF2aWdhdGlvbklELCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgeyB9LCB7IH0pOwotICAgICAg
ICBtX25ld05hdmlnYXRpb25JRCA9IDA7CisgICAgICAgIHJlY2VpdmVkUG9saWN5QWN0aW9uID0g
dHJ1ZTsKKyAgICAgICAgcG9saWN5QWN0aW9uID0gUG9saWN5QWN0aW9uOjpJZ25vcmU7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAjZW5kaWYKIAorICAgIEFTU0VSVCghbV9pbkRlY2lkZVBvbGlj
eUZvck5hdmlnYXRpb25BY3Rpb24pOworICAgIAorICAgIG1faW5EZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uID0gdHJ1ZTsKKyAgICBtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWN0
aW9uSXNWYWxpZCA9IGZhbHNlOwogI2lmIEVOQUJMRShET1dOTE9BRF9BVFRSSUJVVEUpCiAgICAg
bV9zeW5jTmF2aWdhdGlvbkFjdGlvbkhhc0Rvd25sb2FkQXR0cmlidXRlID0gIW5hdmlnYXRpb25B
Y3Rpb25EYXRhLmRvd25sb2FkQXR0cmlidXRlLmlzTnVsbCgpOwogI2VuZGlmCi0gICAgbV9uYXZp
Z2F0aW9uQWN0aW9uUG9saWN5UmVwbHkgPSBXVEZNb3ZlKHJlcGx5KTsKIAogICAgIFdlYkZyYW1l
UHJveHkqIG9yaWdpbmF0aW5nRnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKG9yaWdpbmF0aW5n
RnJhbWVJbmZvRGF0YS5mcmFtZUlEKTsKIApAQCAtMzcxNyw2ICszNzIwLDE1IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2EKICAgICAgICAgbV9wb2xpY3lDbGllbnQt
PmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24oKnRoaXMsIGZyYW1lLCBXVEZNb3ZlKG5h
dmlnYXRpb25BY3Rpb25EYXRhKSwgb3JpZ2luYXRpbmdGcmFtZSwgb3JpZ2luYWxSZXF1ZXN0LCBX
VEZNb3ZlKHJlcXVlc3QpLCBXVEZNb3ZlKGxpc3RlbmVyKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1I
YW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiAKICAgICBtX3Nob3Vs
ZFN1cHByZXNzQXBwTGlua3NJbk5leHROYXZpZ2F0aW9uUG9saWN5RGVjaXNpb24gPSBmYWxzZTsK
KyAgICBtX2luRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiA9IGZhbHNlOworCisgICAg
Ly8gQ2hlY2sgaWYgd2UgcmVjZWl2ZWQgYSBwb2xpY3kgZGVjaXNpb24gYWxyZWFkeS4gSWYgd2Ug
ZGlkLCB3ZSBjYW4ganVzdCBwYXNzIGl0IGJhY2suCisgICAgcmVjZWl2ZWRQb2xpY3lBY3Rpb24g
PSBtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWN0aW9uSXNWYWxpZDsKKyAgICBpZiAobV9z
eW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeUFjdGlvbklzVmFsaWQpIHsKKyAgICAgICAgcG9saWN5
QWN0aW9uID0gbV9zeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeUFjdGlvbjsKKyAgICAgICAgZG93
bmxvYWRJRCA9IG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lEb3dubG9hZElEOworICAgICAg
ICB3ZWJzaXRlUG9saWNpZXMgPSBtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5V2Vic2l0ZVBv
bGljaWVzOworICAgIH0KIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5l
d1dpbmRvd0FjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEm
IGZyYW1lU2VjdXJpdHlPcmlnaW4sIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFj
dGlvbkRhdGEsIFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFN0cmluZyYgZnJhbWVO
YW1lLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCkBAIC0z
NzY0LDE0ICszNzc2LDI3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JSZXNw
b24KICAgICAgICAgbV9wb2xpY3lDbGllbnQtPmRlY2lkZVBvbGljeUZvclJlc3BvbnNlKCp0aGlz
LCAqZnJhbWUsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUsIFdURk1vdmUobGlz
dGVuZXIpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2Jq
ZWN0KCkpLmdldCgpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJl
c3BvbnNlU3luYyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdpbkRhdGEmIGZy
YW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgUmVzb3VyY2VS
ZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBj
YW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1c2Vy
RGF0YSwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvclJlc3BvbnNl
U3luYzo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBv
bGljeUZvclJlc3BvbnNlU3luYyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9yaWdp
bkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3Qg
UmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVz
dCwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJE
YXRhJiB1c2VyRGF0YSwgYm9vbCYgcmVjZWl2ZWRQb2xpY3lBY3Rpb24sIFdlYkNvcmU6OlBvbGlj
eUFjdGlvbiYgcG9saWN5QWN0aW9uLCBEb3dubG9hZElEJiBkb3dubG9hZElEKQogewogICAgIFBh
Z2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKG1fcGFnZUNsaWVudCk7CiAKLSAgICBtX2RlY2lk
ZVBvbGljeUZvclJlc3BvbnNlUmVxdWVzdCA9IHJlcXVlc3Q7Ci0gICAgbV9yZXNwb25zZVBvbGlj
eVJlcGx5ID0gV1RGTW92ZShyZXBseSk7CisgICAgQVNTRVJUKCFtX2luRGVjaWRlUG9saWN5Rm9y
UmVzcG9uc2VTeW5jKTsKIAorICAgIG1faW5EZWNpZGVQb2xpY3lGb3JSZXNwb25zZVN5bmMgPSB0
cnVlOworICAgIG1fZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VSZXF1ZXN0ID0gJnJlcXVlc3Q7Cisg
ICAgbV9zeW5jTWltZVR5cGVQb2xpY3lBY3Rpb25Jc1ZhbGlkID0gZmFsc2U7CisgICAgCiAgICAg
ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoZnJhbWVJRCwgZnJhbWVTZWN1cml0eU9yaWdpbiwgbmF2
aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd01JTUVUeXBlLCBsaXN0ZW5lcklE
LCB1c2VyRGF0YSk7CisgICAgCisgICAgbV9pbkRlY2lkZVBvbGljeUZvclJlc3BvbnNlU3luYyA9
IGZhbHNlOworICAgIG1fZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VSZXF1ZXN0ID0gbnVsbHB0cjsK
KyAgICAKKyAgICAvLyBDaGVjayBpZiB3ZSByZWNlaXZlZCBhIHBvbGljeSBkZWNpc2lvbiBhbHJl
YWR5LiBJZiB3ZSBkaWQsIHdlIGNhbiBqdXN0IHBhc3MgaXQgYmFjay4KKyAgICByZWNlaXZlZFBv
bGljeUFjdGlvbiA9IG1fc3luY01pbWVUeXBlUG9saWN5QWN0aW9uSXNWYWxpZDsKKyAgICBpZiAo
bV9zeW5jTWltZVR5cGVQb2xpY3lBY3Rpb25Jc1ZhbGlkKSB7CisgICAgICAgIHBvbGljeUFjdGlv
biA9IG1fc3luY01pbWVUeXBlUG9saWN5QWN0aW9uOworICAgICAgICBkb3dubG9hZElEID0gbV9z
eW5jTWltZVR5cGVQb2xpY3lEb3dubG9hZElEOworICAgIH0KIH0KIAogdm9pZCBXZWJQYWdlUHJv
eHk6OnVuYWJsZVRvSW1wbGVtZW50UG9saWN5KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFJlc291
cmNlRXJyb3ImIGVycm9yLCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMjIyNTgzKQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTEyODMs
MTAgKzEyODMsMTAgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkRGVzdHJveU5hdmlnYXRpb24o
dWludDY0X3QgbmF2aWdhdGlvbklEKTsKIAotICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdh
dGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2aWdh
dGlvbkFjdGlvbkRhdGEmJiwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIHVpbnQ2NF90IG9yaWdpbmF0
aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVz
dCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0
IFVzZXJEYXRhJiwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb246OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBkZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3Vy
aXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgdWludDY0X3Qg
b3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2lu
YWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgdWludDY0X3QgbGlzdGVuZXJJ
RCwgY29uc3QgVXNlckRhdGEmLCBib29sJiByZWNlaXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3Qm
IG5ld05hdmlnYXRpb25JRCwgV2ViQ29yZTo6UG9saWN5QWN0aW9uJiwgRG93bmxvYWRJRCYsIFdl
YnNpdGVQb2xpY2llcyYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9u
KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJh
bWVTZWN1cml0eU9yaWdpbiwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgV2ViQ29yZTo6UmVzb3Vy
Y2VSZXF1ZXN0JiYsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0ZW5lcklE
LCBjb25zdCBVc2VyRGF0YSYpOwogICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UodWlu
dDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNl
Y3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291
cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNo
b3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKLSAgICB2
b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlU3luYyh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90
IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdl
YkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50NjRfdCBs
aXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYsIFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpE
ZWNpZGVQb2xpY3lGb3JSZXNwb25zZVN5bmM6OkRlbGF5ZWRSZXBseT4mJik7CisgICAgdm9pZCBk
ZWNpZGVQb2xpY3lGb3JSZXNwb25zZVN5bmModWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVu
ZXJJRCwgY29uc3QgVXNlckRhdGEmLCBib29sJiByZWNlaXZlZFBvbGljeUFjdGlvbiwgV2ViQ29y
ZTo6UG9saWN5QWN0aW9uJiwgRG93bmxvYWRJRCYpOwogICAgIHZvaWQgdW5hYmxlVG9JbXBsZW1l
bnRQb2xpY3kodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYs
IGNvbnN0IFVzZXJEYXRhJik7CiAKICAgICB2b2lkIHdpbGxTdWJtaXRGb3JtKHVpbnQ2NF90IGZy
YW1lSUQsIHVpbnQ2NF90IHNvdXJjZUZyYW1lSUQsIGNvbnN0IFZlY3RvcjxzdGQ6OnBhaXI8U3Ry
aW5nLCBTdHJpbmc+PiYgdGV4dEZpZWxkVmFsdWVzLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25z
dCBVc2VyRGF0YSYpOwpAQCAtMTc5OCwxMCArMTc5OCwxNiBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9pc0luUHJpbnRpbmdNb2RlIHsgZmFsc2UgfTsKICAgICBib29sIG1faXNQZXJmb3JtaW5nRE9N
UHJpbnRPcGVyYXRpb24geyBmYWxzZSB9OwogCi0gICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246OkRlbGF5ZWRSZXBseT4gbV9u
YXZpZ2F0aW9uQWN0aW9uUG9saWN5UmVwbHk7Ci0gICAgdWludDY0X3QgbV9uZXdOYXZpZ2F0aW9u
SUQgeyAwIH07Ci0gICAgUmVmUHRyPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGlj
eUZvclJlc3BvbnNlU3luYzo6RGVsYXllZFJlcGx5PiBtX3Jlc3BvbnNlUG9saWN5UmVwbHk7Ci0g
ICAgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG1fZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VSZXF1
ZXN0OworICAgIGJvb2wgbV9pbkRlY2lkZVBvbGljeUZvclJlc3BvbnNlU3luYyB7IGZhbHNlIH07
CisgICAgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0KiBtX2RlY2lkZVBvbGljeUZvclJl
c3BvbnNlUmVxdWVzdCB7IG51bGxwdHIgfTsKKyAgICBib29sIG1fc3luY01pbWVUeXBlUG9saWN5
QWN0aW9uSXNWYWxpZCB7IGZhbHNlIH07CisgICAgV2ViQ29yZTo6UG9saWN5QWN0aW9uIG1fc3lu
Y01pbWVUeXBlUG9saWN5QWN0aW9uIHsgV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpVc2UgfTsKKyAg
ICBEb3dubG9hZElEIG1fc3luY01pbWVUeXBlUG9saWN5RG93bmxvYWRJRCB7IDAgfTsKKyAgICBi
b29sIG1faW5EZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uIHsgZmFsc2UgfTsKKyAgICBi
b29sIG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBY3Rpb25Jc1ZhbGlkIHsgZmFsc2UgfTsK
KyAgICBXZWJDb3JlOjpQb2xpY3lBY3Rpb24gbV9zeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeUFj
dGlvbiB7IFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6VXNlIH07CisgICAgRG93bmxvYWRJRCBtX3N5
bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5RG93bmxvYWRJRCB7IDAgfTsKKyAgICBXZWJzaXRlUG9s
aWNpZXMgbV9zeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeVdlYnNpdGVQb2xpY2llczsKIAogICAg
IGJvb2wgbV9zaG91bGRTdXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lz
aW9uIHsgZmFsc2UgfTsKIApJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjIyNTgzKQorKysgU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC05
OCw4ICs5OCw4IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2VQcm94eSB7CiAjZW5kaWYKIAogICAgICMg
UG9saWN5IG1lc3NhZ2VzCi0gICAgRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTeW5jKHVpbnQ2NF90
IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0
eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNl
IHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgYm9vbCBjYW5TaG93
TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEp
IC0+IChlbnVtIFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIFdlYktpdDo6RG93
bmxvYWRJRCBkb3dubG9hZElEKSBEZWxheWVkCi0gICAgRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgc3RydWN0IFdl
YktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHN0cnVjdCBX
ZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBv
cmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IG9yaWdpbmFsUmVxdWVz
dCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHVpbnQ2NF90IGxpc3RlbmVySUQs
IFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpIC0+ICh1aW50NjRfdCBuZXdOYXZpZ2F0aW9uSUQs
IGVudW0gV2ViQ29yZTo6UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgV2ViS2l0OjpEb3dubG9h
ZElEIGRvd25sb2FkSUQsIHN0cnVjdCBXZWJLaXQ6OldlYnNpdGVQb2xpY2llcyB3ZWJzaXRlUG9s
aWNpZXMpIERlbGF5ZWQKKyAgICBEZWNpZGVQb2xpY3lGb3JSZXNwb25zZVN5bmModWludDY0X3Qg
ZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5
T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2Ug
cmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBib29sIGNhblNob3dN
SU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkg
LT4gKGJvb2wgcmVjZWl2ZWRQb2xpY3lBY3Rpb24sIGVudW0gV2ViQ29yZTo6UG9saWN5QWN0aW9u
IHBvbGljeUFjdGlvbiwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQpCisgICAgRGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29y
ZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgc3RydWN0IFdlYktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFj
dGlvbkRhdGEsIHN0cnVjdCBXZWJLaXQ6OkZyYW1lSW5mb0RhdGEgb3JpZ2luYXRpbmdGcmFtZUlu
Zm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1
ZXN0IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIHVp
bnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpIC0+IChib29sIHJl
Y2VpdmVkUG9saWN5QWN0aW9uLCB1aW50NjRfdCBuZXdOYXZpZ2F0aW9uSUQsIGVudW0gV2ViQ29y
ZTo6UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2Fk
SUQsIHN0cnVjdCBXZWJLaXQ6OldlYnNpdGVQb2xpY2llcyB3ZWJzaXRlUG9saWNpZXMpCiAgICAg
RGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgc3RydWN0IFdl
YktpdDo6TmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCBTdHJpbmcgZnJhbWVOYW1lLCB1aW50NjRfdCBsaXN0
ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogICAgIFVuYWJsZVRvSW1wbGVtZW50
UG9saWN5KHVpbnQ2NF90IGZyYW1lSUQsIFdlYkNvcmU6OlJlc291cmNlRXJyb3IgZXJyb3IsIFdl
YktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0FQSS9DL1dLUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlLmNwcAkocmV2aXNpb24gMjIyNTgzKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjE0MiwxOSArMjE0Miwx
NSBAQCB2b2lkIFdLUGFnZVNldFBhZ2VOYXZpZ2F0aW9uQ2xpZW50KFdLUGFnCiAgICAgcHJpdmF0
ZToKICAgICAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKFdlYlBhZ2VQ
cm94eSYgcGFnZSwgUmVmPEFQSTo6TmF2aWdhdGlvbkFjdGlvbj4mJiBuYXZpZ2F0aW9uQWN0aW9u
LCBSZWY8V2ViS2l0OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+JiYgbGlzdGVuZXIsIEFQ
STo6T2JqZWN0KiB1c2VyRGF0YSkgZmluYWwKICAgICAgICAgewotICAgICAgICAgICAgaWYgKCFt
X2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKSB7Ci0gICAgICAgICAgICAg
ICAgbGlzdGVuZXItPnVzZSh7IH0pOworICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIG1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24odG9BUEkoJnBhZ2UpLCB0b0FQSShuYXZpZ2F0aW9uQWN0aW9uLnB0cigpKSwgdG9BUEko
bGlzdGVuZXIucHRyKCkpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
byk7CiAgICAgICAgIH0KIAogICAgICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25S
ZXNwb25zZShXZWJQYWdlUHJveHkmIHBhZ2UsIEFQSTo6TmF2aWdhdGlvblJlc3BvbnNlJiBuYXZp
Z2F0aW9uUmVzcG9uc2UsIFJlZjxXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4m
JiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQogICAgICAgICB7Ci0g
ICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25z
ZSkgewotICAgICAgICAgICAgICAgIGxpc3RlbmVyLT51c2UoeyB9KTsKKyAgICAgICAgICAgIGlm
ICghbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKQogICAgICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KICAgICAgICAgICAgIG1fY2xpZW50LmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZSh0b0FQSSgmcGFnZSksIHRvQVBJKCZuYXZpZ2F0
aW9uUmVzcG9uc2UpLCB0b0FQSShsaXN0ZW5lci5wdHIoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9j
bGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDIyMjU4MykKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTY5OSwyMCArNjk5LDIyIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGVjaWQKIAogICAgIGJvb2wgY2FuU2hvd01JTUVUeXBlID0gd2ViUGFnZS0+Y2FuU2hv
d01JTUVUeXBlKHJlc3BvbnNlLm1pbWVUeXBlKCkpOwogCi0gICAgdWludDY0X3QgbGlzdGVuZXJJ
RCA9IG1fZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXIoV1RGTW92ZShmdW5jdGlvbikpOworICAg
IHVpbnQ2NF90IGxpc3RlbmVySUQgPSBtX2ZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyKFdURk1v
dmUoZnVuY3Rpb24pLCBXZWJGcmFtZTo6Rm9yTmF2aWdhdGlvbkFjdGlvbjo6Tm8pOworICAgIGJv
b2wgcmVjZWl2ZWRQb2xpY3lBY3Rpb247CiAgICAgUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbjsK
ICAgICBEb3dubG9hZElEIGRvd25sb2FkSUQ7CiAKICAgICBSZWY8V2ViRnJhbWU+IHByb3RlY3Qo
Km1fZnJhbWUpOwogICAgIFdlYkNvcmU6OkZyYW1lKiBjb3JlRnJhbWUgPSBtX2ZyYW1lLT5jb3Jl
RnJhbWUoKTsKICAgICBhdXRvIG5hdmlnYXRpb25JRCA9IHN0YXRpY19jYXN0PFdlYkRvY3VtZW50
TG9hZGVyJj4oKmNvcmVGcmFtZS0+bG9hZGVyKCkucHJvdmlzaW9uYWxEb2N1bWVudExvYWRlcigp
KS5uYXZpZ2F0aW9uSUQoKTsKLSAgICBpZiAoIXdlYlBhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvclJlc3BvbnNlU3luYyhtX2ZyYW1lLT5mcmFtZUlE
KCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKGNvcmVGcmFtZSksIG5hdmlnYXRpb25J
RCwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dNSU1FVHlwZSwgbGlzdGVuZXJJRCwgVXNlckRh
dGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2Vy
RGF0YS5nZXQoKSkuZ2V0KCkpKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5
Rm9yUmVzcG9uc2VTeW5jOjpSZXBseShwb2xpY3lBY3Rpb24sIGRvd25sb2FkSUQpLCBTZWNvbmRz
OjppbmZpbml0eSgpLCBJUEM6OlNlbmRTeW5jT3B0aW9uOjpJbmZvcm1QbGF0Zm9ybVByb2Nlc3NX
aWxsU3VzcGVuZCkpIHsKLSAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9u
KGxpc3RlbmVySUQsIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCB7IH0pOworICAgIGlmICghd2Vi
UGFnZS0+c2VuZFN5bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yUmVz
cG9uc2VTeW5jKG1fZnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJh
bWUoY29yZUZyYW1lKSwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd01J
TUVUeXBlLCBsaXN0ZW5lcklELCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFu
c2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpLCBNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JSZXNwb25zZVN5bmM6OlJlcGx5KHJlY2VpdmVk
UG9saWN5QWN0aW9uLCBwb2xpY3lBY3Rpb24sIGRvd25sb2FkSUQpLCBTZWNvbmRzOjppbmZpbml0
eSgpLCBJUEM6OlNlbmRTeW5jT3B0aW9uOjpJbmZvcm1QbGF0Zm9ybVByb2Nlc3NXaWxsU3VzcGVu
ZCkpIHsKKyAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVy
SUQsIFBvbGljeUFjdGlvbjo6SWdub3JlLCAwLCB7IH0sIHsgfSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKICAgICAvLyBXZSBjYWxsIHRoaXMgc3luY2hyb25vdXNseSBiZWNhdXNlIENGTmV0
d29yayBjYW4gb25seSBjb252ZXJ0IGEgbG9hZGluZyBjb25uZWN0aW9uIHRvIGEgZG93bmxvYWQg
ZnJvbSBpdHMgZGlkUmVjZWl2ZVJlc3BvbnNlIGNhbGxiYWNrLgotICAgIG1fZnJhbWUtPmRpZFJl
Y2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBwb2xpY3lBY3Rpb24sIDAsIGRvd25sb2Fk
SUQpOworICAgIGlmIChyZWNlaXZlZFBvbGljeUFjdGlvbikKKyAgICAgICAgbV9mcmFtZS0+ZGlk
UmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIHBvbGljeUFjdGlvbiwgMCwgZG93bmxv
YWRJRCwgeyB9KTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgbmF2aWdh
dGlvbkFjdGlvbiwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGb3JtU3RhdGUqIGZv
cm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIEZyYW1lUG9saWN5RnVuY3Rpb24mJiBm
dW5jdGlvbikKQEAgLTczNCw3ICs3MzYsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERlY2lkCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICB1aW50NjRfdCBsaXN0
ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihXVEZNb3ZlKGZ1bmN0aW9uKSk7
CisgICAgdWludDY0X3QgbGlzdGVuZXJJRCA9IG1fZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXIo
V1RGTW92ZShmdW5jdGlvbiksIFdlYkZyYW1lOjpGb3JOYXZpZ2F0aW9uQWN0aW9uOjpObyk7CiAK
ICAgICBOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YTsKICAgICBuYXZp
Z2F0aW9uQWN0aW9uRGF0YS5uYXZpZ2F0aW9uVHlwZSA9IGFjdGlvbi0+bmF2aWdhdGlvblR5cGUo
KTsKQEAgLTc1MSw2ICs3NTMsNTIgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0
Y2hEZWNpZAogICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRl
UG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKG1fZnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmln
aW5EYXRhOjpmcm9tRnJhbWUoY29yZUZyYW1lKSwgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIHJlcXVl
c3QsIGZyYW1lTmFtZSwgbGlzdGVuZXJJRCwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSk7CiB9
CiAKK3ZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmFwcGx5VG9Eb2N1bWVudExvYWRlcihjb25z
dCBXZWJzaXRlUG9saWNpZXMmIHdlYnNpdGVQb2xpY2llcykKK3sKKyAgICBpZiAoIW1fZnJhbWUp
CisgICAgICAgIHJldHVybjsKKyAgICBhdXRvKiBjb3JlRnJhbWUgPSBtX2ZyYW1lLT5jb3JlRnJh
bWUoKTsKKyAgICBpZiAoIWNvcmVGcmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIFdlYkRvY3Vt
ZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IHN0YXRpY19jYXN0PFdlYkRvY3VtZW50TG9hZGVy
Kj4oY29yZUZyYW1lLT5sb2FkZXIoKS5wb2xpY3lEb2N1bWVudExvYWRlcigpKTsKKyAgICBpZiAo
IWRvY3VtZW50TG9hZGVyKQorICAgICAgICBkb2N1bWVudExvYWRlciA9IHN0YXRpY19jYXN0PFdl
YkRvY3VtZW50TG9hZGVyKj4oY29yZUZyYW1lLT5sb2FkZXIoKS5wcm92aXNpb25hbERvY3VtZW50
TG9hZGVyKCkpOworICAgIGlmICghZG9jdW1lbnRMb2FkZXIpCisgICAgICAgIGRvY3VtZW50TG9h
ZGVyID0gc3RhdGljX2Nhc3Q8V2ViRG9jdW1lbnRMb2FkZXIqPihjb3JlRnJhbWUtPmxvYWRlcigp
LmRvY3VtZW50TG9hZGVyKCkpOworICAgIGlmICghZG9jdW1lbnRMb2FkZXIpCisgICAgICAgIHJl
dHVybjsKKworICAgIC8vIE9ubHkgc2V0VXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZCBpZiBp
dCBoYXNuJ3QgYWxyZWFkeSBiZWVuIGRpc2FibGVkIGJ5IHJlbG9hZGluZyB3aXRob3V0IGNvbnRl
bnQgYmxvY2tlcnMuCisgICAgaWYgKGRvY3VtZW50TG9hZGVyLT51c2VyQ29udGVudEV4dGVuc2lv
bnNFbmFibGVkKCkpCisgICAgICAgIGRvY3VtZW50TG9hZGVyLT5zZXRVc2VyQ29udGVudEV4dGVu
c2lvbnNFbmFibGVkKHdlYnNpdGVQb2xpY2llcy5jb250ZW50QmxvY2tlcnNFbmFibGVkKTsKKwor
ICAgIE9wdGlvblNldDxBdXRvcGxheVF1aXJrPiBxdWlya3M7CisgICAgYXV0byBhbGxvd2VkUXVp
cmtzID0gd2Vic2l0ZVBvbGljaWVzLmFsbG93ZWRBdXRvcGxheVF1aXJrczsKKworICAgIGlmIChh
bGxvd2VkUXVpcmtzLmNvbnRhaW5zKFdlYnNpdGVBdXRvcGxheVF1aXJrOjpJbmhlcml0ZWRVc2Vy
R2VzdHVyZXMpKQorICAgICAgICBxdWlya3MgfD0gQXV0b3BsYXlRdWlyazo6SW5oZXJpdGVkVXNl
ckdlc3R1cmVzOworCisgICAgaWYgKGFsbG93ZWRRdWlya3MuY29udGFpbnMoV2Vic2l0ZUF1dG9w
bGF5UXVpcms6OlN5bnRoZXNpemVkUGF1c2VFdmVudHMpKQorICAgICAgICBxdWlya3MgfD0gQXV0
b3BsYXlRdWlyazo6U3ludGhlc2l6ZWRQYXVzZUV2ZW50czsKKworICAgIGRvY3VtZW50TG9hZGVy
LT5zZXRBbGxvd2VkQXV0b3BsYXlRdWlya3MocXVpcmtzKTsKKworICAgIHN3aXRjaCAod2Vic2l0
ZVBvbGljaWVzLmF1dG9wbGF5UG9saWN5KSB7CisgICAgY2FzZSBXZWJzaXRlQXV0b3BsYXlQb2xp
Y3k6OkRlZmF1bHQ6CisgICAgICAgIGRvY3VtZW50TG9hZGVyLT5zZXRBdXRvcGxheVBvbGljeShB
dXRvcGxheVBvbGljeTo6RGVmYXVsdCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2Vic2l0
ZUF1dG9wbGF5UG9saWN5OjpBbGxvdzoKKyAgICAgICAgZG9jdW1lbnRMb2FkZXItPnNldEF1dG9w
bGF5UG9saWN5KEF1dG9wbGF5UG9saWN5OjpBbGxvdyk7CisgICAgICAgIGJyZWFrOworICAgIGNh
c2UgV2Vic2l0ZUF1dG9wbGF5UG9saWN5OjpBbGxvd1dpdGhvdXRTb3VuZDoKKyAgICAgICAgZG9j
dW1lbnRMb2FkZXItPnNldEF1dG9wbGF5UG9saWN5KEF1dG9wbGF5UG9saWN5OjpBbGxvd1dpdGhv
dXRTb3VuZCk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgV2Vic2l0ZUF1dG9wbGF5UG9saWN5
OjpEZW55OgorICAgICAgICBkb2N1bWVudExvYWRlci0+c2V0QXV0b3BsYXlQb2xpY3koQXV0b3Bs
YXlQb2xpY3k6OkRlbnkpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKIHZvaWQgV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihj
b25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBuYXZpZ2F0aW9uQWN0aW9uLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlcXVlc3QsIGJvb2wgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UsIEZvcm1TdGF0
ZSogZm9ybVN0YXRlLCBGcmFtZVBvbGljeUZ1bmN0aW9uJiYgZnVuY3Rpb24pCiB7CiAgICAgV2Vi
UGFnZSogd2ViUGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKQEAgLTc3Niw3ICs4MjQsOCBAQCB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkCiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAgICAgCi0gICAgdWludDY0X3QgbGlzdGVuZXJJRCA9IG1fZnJhbWUtPnNldFVwUG9saWN5
TGlzdGVuZXIoV1RGTW92ZShmdW5jdGlvbikpOworICAgIHVpbnQ2NF90IGxpc3RlbmVySUQgPSBt
X2ZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyKFdURk1vdmUoZnVuY3Rpb24pLCBXZWJGcmFtZTo6
Rm9yTmF2aWdhdGlvbkFjdGlvbjo6WWVzKTsKKyAgICBib29sIHJlY2VpdmVkUG9saWN5QWN0aW9u
OwogICAgIHVpbnQ2NF90IG5ld05hdmlnYXRpb25JRDsKICAgICBQb2xpY3lBY3Rpb24gcG9saWN5
QWN0aW9uOwogICAgIERvd25sb2FkSUQgZG93bmxvYWRJRDsKQEAgLTgxNyw4ICs4NjYsOCBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkCiAgICAgLy8gTm90aWZ5IHRo
ZSBVSVByb2Nlc3MuCiAgICAgUmVmPFdlYkZyYW1lPiBwcm90ZWN0KCptX2ZyYW1lKTsKICAgICBX
ZWJzaXRlUG9saWNpZXMgd2Vic2l0ZVBvbGljaWVzOwotICAgIGlmICghd2ViUGFnZS0+c2VuZFN5
bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bihtX2ZyYW1lLT5mcmFtZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKGNvcmVG
cmFtZSksIGRvY3VtZW50TG9hZGVyLT5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbkFjdGlvbkRh
dGEsIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgb3JpZ2luYXRpbmdGcmFtZSAmJiBvcmlnaW5h
dGluZ0ZyYW1lLT5wYWdlKCkgPyBvcmlnaW5hdGluZ0ZyYW1lLT5wYWdlKCktPnBhZ2VJRCgpIDog
MCwgbmF2aWdhdGlvbkFjdGlvbi5yZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVzdCwgbGlzdGVuZXJJ
RCwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFu
ZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjo6UmVwbHkobmV3TmF2aWdhdGlvbklELCBwb2xp
Y3lBY3Rpb24sIGRvd25sb2FkSUQsIHdlYnNpdGVQb2xpY2llcykpKSB7Ci0gICAgICAgIG1fZnJh
bWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBQb2xpY3lBY3Rpb246Okln
bm9yZSwgMCwgeyB9KTsKKyAgICBpZiAoIXdlYlBhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24obV9mcmFtZS0+ZnJhbWVJ
RCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21GcmFtZShjb3JlRnJhbWUpLCBkb2N1bWVudExv
YWRlci0+bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBvcmlnaW5hdGluZ0Zy
YW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5nRnJhbWUgJiYgb3JpZ2luYXRpbmdGcmFtZS0+cGFnZSgp
ID8gb3JpZ2luYXRpbmdGcmFtZS0+cGFnZSgpLT5wYWdlSUQoKSA6IDAsIG5hdmlnYXRpb25BY3Rp
b24ucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3QsIGxpc3RlbmVySUQsIFVzZXJEYXRhKFdlYlBy
b2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0
KCkpLmdldCgpKSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmln
YXRpb25BY3Rpb246OlJlcGx5KHJlY2VpdmVkUG9saWN5QWN0aW9uLCBuZXdOYXZpZ2F0aW9uSUQs
IHBvbGljeUFjdGlvbiwgZG93bmxvYWRJRCwgd2Vic2l0ZVBvbGljaWVzKSkpIHsKKyAgICAgICAg
bV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFBvbGljeUFjdGlv
bjo6SWdub3JlLCAwLCB7IH0sIHsgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTgy
OCwzNCArODc3LDkgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAog
ICAgIGlmIChkb2N1bWVudExvYWRlci0+dXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZCgpKQog
ICAgICAgICBkb2N1bWVudExvYWRlci0+c2V0VXNlckNvbnRlbnRFeHRlbnNpb25zRW5hYmxlZCh3
ZWJzaXRlUG9saWNpZXMuY29udGVudEJsb2NrZXJzRW5hYmxlZCk7CiAKLSAgICBPcHRpb25TZXQ8
QXV0b3BsYXlRdWlyaz4gcXVpcmtzOwotICAgIGF1dG8gYWxsb3dlZFF1aXJrcyA9IHdlYnNpdGVQ
b2xpY2llcy5hbGxvd2VkQXV0b3BsYXlRdWlya3M7Ci0KLSAgICBpZiAoYWxsb3dlZFF1aXJrcy5j
b250YWlucyhXZWJzaXRlQXV0b3BsYXlRdWlyazo6SW5oZXJpdGVkVXNlckdlc3R1cmVzKSkKLSAg
ICAgICAgcXVpcmtzIHw9IEF1dG9wbGF5UXVpcms6OkluaGVyaXRlZFVzZXJHZXN0dXJlczsKLQot
ICAgIGlmIChhbGxvd2VkUXVpcmtzLmNvbnRhaW5zKFdlYnNpdGVBdXRvcGxheVF1aXJrOjpTeW50
aGVzaXplZFBhdXNlRXZlbnRzKSkKLSAgICAgICAgcXVpcmtzIHw9IEF1dG9wbGF5UXVpcms6OlN5
bnRoZXNpemVkUGF1c2VFdmVudHM7Ci0KLSAgICBkb2N1bWVudExvYWRlci0+c2V0QWxsb3dlZEF1
dG9wbGF5UXVpcmtzKHF1aXJrcyk7Ci0KLSAgICBzd2l0Y2ggKHdlYnNpdGVQb2xpY2llcy5hdXRv
cGxheVBvbGljeSkgewotICAgIGNhc2UgV2Vic2l0ZUF1dG9wbGF5UG9saWN5OjpEZWZhdWx0Ogot
ICAgICAgICBkb2N1bWVudExvYWRlci0+c2V0QXV0b3BsYXlQb2xpY3koQXV0b3BsYXlQb2xpY3k6
OkRlZmF1bHQpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFdlYnNpdGVBdXRvcGxheVBvbGlj
eTo6QWxsb3c6Ci0gICAgICAgIGRvY3VtZW50TG9hZGVyLT5zZXRBdXRvcGxheVBvbGljeShBdXRv
cGxheVBvbGljeTo6QWxsb3cpOwotICAgICAgICBicmVhazsKLSAgICBjYXNlIFdlYnNpdGVBdXRv
cGxheVBvbGljeTo6QWxsb3dXaXRob3V0U291bmQ6Ci0gICAgICAgIGRvY3VtZW50TG9hZGVyLT5z
ZXRBdXRvcGxheVBvbGljeShBdXRvcGxheVBvbGljeTo6QWxsb3dXaXRob3V0U291bmQpOwotICAg
ICAgICBicmVhazsKLSAgICBjYXNlIFdlYnNpdGVBdXRvcGxheVBvbGljeTo6RGVueToKLSAgICAg
ICAgZG9jdW1lbnRMb2FkZXItPnNldEF1dG9wbGF5UG9saWN5KEF1dG9wbGF5UG9saWN5OjpEZW55
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotCiAgICAgLy8gV2UgY2FsbCB0aGlzIHN5bmNocm9u
b3VzbHkgYmVjYXVzZSBXZWJDb3JlIGNhbm5vdCBncmFjZWZ1bGx5IGhhbmRsZSBhIGZyYW1lIGxv
YWQgd2l0aG91dCBhIHN5bmNocm9ub3VzIG5hdmlnYXRpb24gcG9saWN5IHJlcGx5LgotICAgIG1f
ZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBwb2xpY3lBY3Rpb24s
IG5ld05hdmlnYXRpb25JRCwgZG93bmxvYWRJRCk7CisgICAgaWYgKHJlY2VpdmVkUG9saWN5QWN0
aW9uKQorICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJ
RCwgcG9saWN5QWN0aW9uLCBuZXdOYXZpZ2F0aW9uSUQsIGRvd25sb2FkSUQsIHdlYnNpdGVQb2xp
Y2llcyk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNhbmNlbFBvbGljeUNoZWNr
KCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFt
ZUxvYWRlckNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5oCShyZXZpc2lvbiAyMjI1ODMpCisr
KyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViS2l0
IHsKIAogY2xhc3MgUGx1Z2luVmlldzsKIGNsYXNzIFdlYkZyYW1lOworc3RydWN0IFdlYnNpdGVQ
b2xpY2llczsKICAgICAKIGNsYXNzIFdlYkZyYW1lTG9hZGVyQ2xpZW50IGZpbmFsIDogcHVibGlj
IFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50IHsKIHB1YmxpYzoKQEAgLTQ4LDYgKzQ5LDggQEAg
cHVibGljOgogCiAgICAgdm9pZCBzZXRVc2VJY29uTG9hZGluZ0NsaWVudChib29sIHVzZUljb25M
b2FkaW5nQ2xpZW50KSB7IG1fdXNlSWNvbkxvYWRpbmdDbGllbnQgPSB1c2VJY29uTG9hZGluZ0Ns
aWVudDsgfQogCisgICAgdm9pZCBhcHBseVRvRG9jdW1lbnRMb2FkZXIoY29uc3QgV2Vic2l0ZVBv
bGljaWVzJik7CisKIHByaXZhdGU6CiAgICAgdm9pZCBmcmFtZUxvYWRlckRlc3Ryb3llZCgpIGZp
bmFsOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJEb2N1bWVu
dExvYWRlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRG9jdW1lbnRMb2FkZXIuY3BwCShyZXZpc2lvbiAyMjI1ODMpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJEb2N1bWVudExvYWRlci5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTUxLDcgKzUxLDcgQEAgdm9pZCBXZWJEb2N1bWVudExvYWRlcjo6ZGV0YWNoRnJvbUZy
YW1lKAogdm9pZCBXZWJEb2N1bWVudExvYWRlcjo6c2V0TmF2aWdhdGlvbklEKHVpbnQ2NF90IG5h
dmlnYXRpb25JRCkKIHsKICAgICBBU1NFUlQobmF2aWdhdGlvbklEKTsKLSAgICBBU1NFUlQoIW1f
bmF2aWdhdGlvbklEKTsKKyAgICBBU1NFUlQoIW1fbmF2aWdhdGlvbklEIHx8IG1fbmF2aWdhdGlv
bklEID09IG5hdmlnYXRpb25JRCk7CiAKICAgICBtX25hdmlnYXRpb25JRCA9IG5hdmlnYXRpb25J
RDsKIH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFt
ZS5jcHAJKHJldmlzaW9uIDIyMjU4MykKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkZyYW1lLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjA5LDcgKzIwOSw3IEBAIHZvaWQg
V2ViRnJhbWU6OmludmFsaWRhdGUoKQogICAgIG1fY29yZUZyYW1lID0gMDsKIH0KIAotdWludDY0
X3QgV2ViRnJhbWU6OnNldFVwUG9saWN5TGlzdGVuZXIoV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5j
dGlvbiYmIHBvbGljeUZ1bmN0aW9uKQordWludDY0X3QgV2ViRnJhbWU6OnNldFVwUG9saWN5TGlz
dGVuZXIoV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmIHBvbGljeUZ1bmN0aW9uLCBGb3JO
YXZpZ2F0aW9uQWN0aW9uIGZvck5hdmlnYXRpb25BY3Rpb24pCiB7CiAgICAgLy8gRklYTUU6IDxy
ZGFyOi8vNTYzNDM4MT4gV2UgbmVlZCB0byBzdXBwb3J0IG11bHRpcGxlIGFjdGl2ZSBwb2xpY3kg
bGlzdGVuZXJzLgogCkBAIC0yMTcsNiArMjE3LDcgQEAgdWludDY0X3QgV2ViRnJhbWU6OnNldFVw
UG9saWN5TGlzdGVuZXIoVwogCiAgICAgbV9wb2xpY3lMaXN0ZW5lcklEID0gZ2VuZXJhdGVMaXN0
ZW5lcklEKCk7CiAgICAgbV9wb2xpY3lGdW5jdGlvbiA9IFdURk1vdmUocG9saWN5RnVuY3Rpb24p
OworICAgIG1fcG9saWN5RnVuY3Rpb25Gb3JOYXZpZ2F0aW9uQWN0aW9uID0gZm9yTmF2aWdhdGlv
bkFjdGlvbjsKICAgICByZXR1cm4gbV9wb2xpY3lMaXN0ZW5lcklEOwogfQogCkBAIC0yNDAsMTEg
KzI0MSwxMiBAQCB2b2lkIFdlYkZyYW1lOjppbnZhbGlkYXRlUG9saWN5TGlzdGVuZXIoCiAKICAg
ICBtX3BvbGljeURvd25sb2FkSUQgPSB7IH07CiAgICAgbV9wb2xpY3lMaXN0ZW5lcklEID0gMDsK
KyAgICBtX3BvbGljeUZ1bmN0aW9uRm9yTmF2aWdhdGlvbkFjdGlvbiA9IEZvck5hdmlnYXRpb25B
Y3Rpb246Ok5vOwogICAgIGlmIChhdXRvIGZ1bmN0aW9uID0gc3RkOjpleGNoYW5nZShtX3BvbGlj
eUZ1bmN0aW9uLCBudWxscHRyKSkKICAgICAgICAgZnVuY3Rpb24oUG9saWN5QWN0aW9uOjpJZ25v
cmUpOwogfQogCi12b2lkIFdlYkZyYW1lOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0
X3QgbGlzdGVuZXJJRCwgUG9saWN5QWN0aW9uIGFjdGlvbiwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBEb3dubG9hZElEIGRvd25sb2FkSUQpCit2b2lkIFdlYkZyYW1lOjpkaWRSZWNlaXZlUG9saWN5
RGVjaXNpb24odWludDY0X3QgbGlzdGVuZXJJRCwgUG9saWN5QWN0aW9uIGFjdGlvbiwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBEb3dubG9hZElEIGRvd25sb2FkSUQsIGNvbnN0IFdlYnNpdGVQb2xp
Y2llcyYgd2Vic2l0ZVBvbGljaWVzKQogewogICAgIGlmICghbV9jb3JlRnJhbWUpCiAgICAgICAg
IHJldHVybjsKQEAgLTI1OSw5ICsyNjEsMTMgQEAgdm9pZCBXZWJGcmFtZTo6ZGlkUmVjZWl2ZVBv
bGljeURlY2lzaW9uKAogICAgICAgICByZXR1cm47CiAKICAgICBGcmFtZVBvbGljeUZ1bmN0aW9u
IGZ1bmN0aW9uID0gV1RGTW92ZShtX3BvbGljeUZ1bmN0aW9uKTsKKyAgICBib29sIGZvck5hdmln
YXRpb25BY3Rpb24gPSBtX3BvbGljeUZ1bmN0aW9uRm9yTmF2aWdhdGlvbkFjdGlvbiA9PSBGb3JO
YXZpZ2F0aW9uQWN0aW9uOjpZZXM7CiAKICAgICBpbnZhbGlkYXRlUG9saWN5TGlzdGVuZXIoKTsK
IAorICAgIGlmIChmb3JOYXZpZ2F0aW9uQWN0aW9uICYmIG1fZnJhbWVMb2FkZXJDbGllbnQpCisg
ICAgICAgIG1fZnJhbWVMb2FkZXJDbGllbnQtPmFwcGx5VG9Eb2N1bWVudExvYWRlcih3ZWJzaXRl
UG9saWNpZXMpOworCiAgICAgbV9wb2xpY3lEb3dubG9hZElEID0gZG93bmxvYWRJRDsKICAgICBp
ZiAobmF2aWdhdGlvbklEKSB7CiAgICAgICAgIGlmIChXZWJEb2N1bWVudExvYWRlciogZG9jdW1l
bnRMb2FkZXIgPSBzdGF0aWNfY2FzdDxXZWJEb2N1bWVudExvYWRlcio+KG1fY29yZUZyYW1lLT5s
b2FkZXIoKS5wb2xpY3lEb2N1bWVudExvYWRlcigpKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAkocmV2aXNpb24gMjIyNTgzKQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAkod29ya2luZyBjb3B5KQpAQCAt
NjQsNiArNjQsNyBAQCBjbGFzcyBJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOwogY2xhc3MgSW5q
ZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZDsKIGNsYXNzIFdlYlBhZ2U7CiBzdHJ1Y3QgRnJhbWVJbmZv
RGF0YTsKK3N0cnVjdCBXZWJzaXRlUG9saWNpZXM7CiAKIGNsYXNzIFdlYkZyYW1lIDogcHVibGlj
IEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVjdDo6VHlwZTo6QnVuZGxlRnJhbWU+IHsKIHB1Ymxp
YzoKQEAgLTgyLDkgKzgzLDEwIEBAIHB1YmxpYzoKICAgICBGcmFtZUluZm9EYXRhIGluZm8oKSBj
b25zdDsKICAgICB1aW50NjRfdCBmcmFtZUlEKCkgY29uc3QgeyByZXR1cm4gbV9mcmFtZUlEOyB9
CiAKLSAgICB1aW50NjRfdCBzZXRVcFBvbGljeUxpc3RlbmVyKFdlYkNvcmU6OkZyYW1lUG9saWN5
RnVuY3Rpb24mJik7CisgICAgZW51bSBjbGFzcyBGb3JOYXZpZ2F0aW9uQWN0aW9uIHsgTm8sIFll
cyB9OworICAgIHVpbnQ2NF90IHNldFVwUG9saWN5TGlzdGVuZXIoV2ViQ29yZTo6RnJhbWVQb2xp
Y3lGdW5jdGlvbiYmLCBGb3JOYXZpZ2F0aW9uQWN0aW9uKTsKICAgICB2b2lkIGludmFsaWRhdGVQ
b2xpY3lMaXN0ZW5lcigpOwotICAgIHZvaWQgZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2
NF90IGxpc3RlbmVySUQsIFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBEb3dubG9hZElEKTsKKyAgICB2b2lkIGRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50
NjRfdCBsaXN0ZW5lcklELCBXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5hdmlnYXRp
b25JRCwgRG93bmxvYWRJRCwgY29uc3QgV2Vic2l0ZVBvbGljaWVzJik7CiAKICAgICB1aW50NjRf
dCBzZXRVcFdpbGxTdWJtaXRGb3JtTGlzdGVuZXIoV1RGOjpGdW5jdGlvbjx2b2lkKHZvaWQpPiYm
KTsKICAgICB2b2lkIGNvbnRpbnVlV2lsbFN1Ym1pdEZvcm0odWludDY0X3QpOwpAQCAtMTc3LDYg
KzE3OSw3IEBAIHByaXZhdGU6CiAKICAgICB1aW50NjRfdCBtX3BvbGljeUxpc3RlbmVySUQgeyAw
IH07CiAgICAgV2ViQ29yZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiBtX3BvbGljeUZ1bmN0aW9uOwor
ICAgIEZvck5hdmlnYXRpb25BY3Rpb24gbV9wb2xpY3lGdW5jdGlvbkZvck5hdmlnYXRpb25BY3Rp
b24geyBGb3JOYXZpZ2F0aW9uQWN0aW9uOjpObyB9OwogICAgIEhhc2hNYXA8dWludDY0X3QsIFdU
Rjo6RnVuY3Rpb248dm9pZCh2b2lkKT4+IG1fd2lsbFN1Ym1pdEZvcm1Db21wbGV0aW9uSGFuZGxl
cnM7CiAgICAgRG93bmxvYWRJRCBtX3BvbGljeURvd25sb2FkSUQgeyAwIH07CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAy
MjI1ODMpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMjczMywxMiArMjczMywxMiBAQCB2b2lkIFdlYlBhZ2U6OnNldFNl
c3Npb25JRChQQUw6OlNlc3Npb25JCiAgICAgbV9wYWdlLT5zZXRTZXNzaW9uSUQoc2Vzc2lvbklE
KTsKIH0KIAotdm9pZCBXZWJQYWdlOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3Qg
ZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBEb3dubG9hZElEJiBkb3dubG9hZElEKQordm9p
ZCBXZWJQYWdlOjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwgdWlu
dDY0X3QgbGlzdGVuZXJJRCwgUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgdWludDY0X3QgbmF2
aWdhdGlvbklELCBjb25zdCBEb3dubG9hZElEJiBkb3dubG9hZElELCBXZWJzaXRlUG9saWNpZXMm
JiB3ZWJzaXRlUG9saWNpZXMpCiB7CiAgICAgV2ViRnJhbWUqIGZyYW1lID0gV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkud2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAg
cmV0dXJuOwotICAgIGZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwg
cG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9uSUQsIGRvd25sb2FkSUQpOworICAgIGZyYW1lLT5kaWRS
ZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgcG9saWN5QWN0aW9uLCBuYXZpZ2F0aW9u
SUQsIGRvd25sb2FkSUQsIHdlYnNpdGVQb2xpY2llcyk7CiB9CiAKIHZvaWQgV2ViUGFnZTo6Y29u
dGludWVXaWxsU3VibWl0Rm9ybSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklE
KQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAkocmV2
aXNpb24gMjIyNTgzKQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTM4LDcgKzExMzgsNyBAQCBwcml2YXRlOgogICAgIHZv
aWQgcGxhdGZvcm1QcmVmZXJlbmNlc0RpZENoYW5nZShjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3Jl
Jik7CiAgICAgdm9pZCB1cGRhdGVQcmVmZXJlbmNlcyhjb25zdCBXZWJQcmVmZXJlbmNlc1N0b3Jl
Jik7CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBmcmFtZUlE
LCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJDb3JlOjpQb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5h
dmlnYXRpb25JRCwgY29uc3QgRG93bmxvYWRJRCYpOworICAgIHZvaWQgZGlkUmVjZWl2ZVBvbGlj
eURlY2lzaW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYkNvcmU6
OlBvbGljeUFjdGlvbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBEb3dubG9hZElEJiwg
V2Vic2l0ZVBvbGljaWVzJiYpOwogICAgIHZvaWQgY29udGludWVXaWxsU3VibWl0Rm9ybSh1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklEKTsKICAgICB2b2lkIHNldFVzZXJBZ2Vu
dChjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldEN1c3RvbVRleHRFbmNvZGluZ05hbWUoY29u
c3QgU3RyaW5nJik7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLm1lc3NhZ2VzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIyMjU4MykKKysrIFNvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4JKHdvcmtpbmcgY29w
eSkKQEAgLTE1MSw3ICsxNTEsNyBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlIExlZ2FjeVJlY2VpdmVy
IHsKICAgICBEaWRSZW1vdmVCYWNrRm9yd2FyZEl0ZW0odWludDY0X3QgYmFja0ZvcndhcmRJdGVt
SUQpCiAKICAgICBVcGRhdGVXZWJzaXRlUG9saWNpZXMoc3RydWN0IFdlYktpdDo6V2Vic2l0ZVBv
bGljaWVzIHdlYnNpdGVQb2xpY2llcykKLSAgICBEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWlu
dDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgZW51bSBXZWJDb3JlOjpQb2xpY3lB
Y3Rpb24gcG9saWN5QWN0aW9uLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYktpdDo6RG93bmxv
YWRJRCBkb3dubG9hZElEKQorICAgIERpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBm
cmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCBlbnVtIFdlYkNvcmU6OlBvbGljeUFjdGlvbiBw
b2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViS2l0OjpEb3dubG9hZElEIGRv
d25sb2FkSUQsIHN0cnVjdCBXZWJLaXQ6OldlYnNpdGVQb2xpY2llcyB3ZWJzaXRlUG9saWNpZXMp
CiAgICAgQ29udGludWVXaWxsU3VibWl0Rm9ybSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBs
aXN0ZW5lcklEKQogCiAgICAgQ2xlYXJTZWxlY3Rpb24oKQpJbmRleDogVG9vbHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjIyNTk5KQorKysgVG9v
bHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTctMDktMjcg
IEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBS
RUdSRVNTSU9OKHIyMTQyMDEpOiBXZWJQcm9jZXNzIGhhbmdzIGR1cmluZyBwb2xpY3kgZGVjaXNp
b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzc1
OTAKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMzMzYyOTI5PgorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0
QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktpdEFQSS9U
ZXN0cy9XZWJLaXRDb2NvYS9KYXZhU2NyaXB0RHVyaW5nTmF2aWdhdGlvbi5tbTogQWRkZWQuCisg
ICAgICAgICgtW0pTTmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6ZGlkRmluaXNoTmF2aWdhdGlv
bjpdKToKKyAgICAgICAgKC1bSlNOYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzpkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uOmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bSlNO
YXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9u
c2U6ZGVjaXNpb25IYW5kbGVyOl0pOgorICAgICAgICAoLVtKU05hdmlnYXRpb25EZWxlZ2F0ZSB3
ZWJWaWV3OnJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2U6aW5pdGlhdGVkQnlGcmFt
ZTpjb21wbGV0aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKFRFU1QpOgorCiAyMDE3LTA5LTI3ICBX
ZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29tPgogCiAgICAgICAgIERyYWcgZXZl
bnQgRGF0YVRyYW5zZmVyIGhhcyB1bmV4cGVjdGVkIHR5cGVzICJkeW4uYWg2MmQ0Li4uIgpJbmRl
eDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIyMjU4MykKKysrIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5n
IGNvcHkpCkBAIC0yMjYsNiArMjI2LDcgQEAKIAkJNUMwQkY4OTUxREQ1OTlDRDAwQjAwMzI4IC8q
IE5hdmlnYXRvckxhbmd1YWdlLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gRTE5REI5NzgxQjMyMTM3QzAwREIzOEQ0IC8qIE5hdmlnYXRvckxhbmd1YWdl
Lm1tICovOyB9OwogCQk1QzI5MzY5MzFENUJGNzBEMDBERUFCMUUgLyogQ29va2llQWNjZXB0UG9s
aWN5Lm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMy
OTM2OTExRDVCRjYzRTAwREVBQjFFIC8qIENvb2tpZUFjY2VwdFBvbGljeS5tbSAqLzsgfTsKIAkJ
NUMyOTM2OTYxRDVDMDBFRDAwREVBQjFFIC8qIENvb2tpZU1lc3NhZ2UuaHRtbCBpbiBDb3B5IFJl
c291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzI5MzY5NDFENUJG
RDE5MDBERUFCMUUgLyogQ29va2llTWVzc2FnZS5odG1sICovOyB9OworCQk1QzRBODQ5MDFGN0M3
QzBCMDBBQ0ZDNTQgLyogSmF2YVNjcmlwdER1cmluZ05hdmlnYXRpb24ubW0gaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzRBODQ4RjFGN0M3QkZEMDBBQ0ZD
NTQgLyogSmF2YVNjcmlwdER1cmluZ05hdmlnYXRpb24ubW0gKi87IH07CiAJCTVDNkU2NTQ0MUQ1
Q0VGRDQwMEY3ODYyRSAvKiBVUkxQYXJzZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUM2RTY1NDExRDVDRUY4NTAwRjc4NjJFIC8qIFVSTFBhcnNl
ci5jcHAgKi87IH07CiAJCTVDNzI2RDZGMUQzRUUwNkUwMEM1RTFBMSAvKiBJbnN0YW5jZU1ldGhv
ZFN3aXp6bGVyLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVm
ID0gNUM3MjZENkUxRDNFRTA2ODAwQzVFMUExIC8qIEluc3RhbmNlTWV0aG9kU3dpenpsZXIubW0g
Ki87IH07CiAJCTVDNzk2NDEwMUVCMDI3OEQwMDc1RDc0QyAvKiBFdmVudE1vZGlmaWVycy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1Qzc5NjQwRjFF
QjAyNjlCMDA3NUQ3NEMgLyogRXZlbnRNb2RpZmllcnMuY3BwICovOyB9OwpAQCAtMTMyNiw2ICsx
MzI3LDcgQEAKIAkJNUMwQkY4OEYxREQ1OTk5QjAwQjAwMzI4IC8qIFdlYlZpZXdDYW5QYXN0ZVpl
cm9QbmcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJWaWV3
Q2FuUGFzdGVaZXJvUG5nLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzI5MzY5
MTFENUJGNjNFMDBERUFCMUUgLyogQ29va2llQWNjZXB0UG9saWN5Lm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29va2llQWNjZXB0UG9saWN5Lm1tOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1QzI5MzY5NDFENUJGRDE5MDBERUFCMUUgLyogQ29va2ll
TWVzc2FnZS5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gQ29va2llTWVzc2FnZS5o
dG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzRBODQ4RjFGN0M3QkZEMDBBQ0ZD
NTQgLyogSmF2YVNjcmlwdER1cmluZ05hdmlnYXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBKYXZhU2NyaXB0RHVyaW5nTmF2aWdhdGlvbi5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM1RTYzM0QxRDBCNjc5NDAwODVBMDI1IC8qIFVuaXF1
ZVJlZi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBVbmlxdWVSZWYu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzZFNjU0MTFENUNFRjg1MDBGNzg2
MkUgLyogVVJMUGFyc2VyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IFVSTFBhcnNlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNzI2RDZEMUQz
RUUwNjgwMEM1RTFBMSAvKiBJbnN0YW5jZU1ldGhvZFN3aXp6bGVyLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IEluc3RhbmNlTWV0aG9kU3dpenpsZXIuaDsgcGF0aCA9IGNvY29h
L0luc3RhbmNlTWV0aG9kU3dpenpsZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAg
LTE5NjcsNiArMTk2OSw3IEBACiAJCQkJNTc1OTlFMjAxRjA3MTkxNzAwQTNGQjhDIC8qIEluZGV4
ZWREQlN0cnVjdHVyZWRDbG9uZUJhY2t3YXJkQ29tcGF0aWJpbGl0eS5tbSAqLywKIAkJCQk1MTk4
QTIzRjFFQTdFNTk1MDA4OTEwQjcgLyogSW5pdGlhbFdhcm1lZFByb2Nlc3NVc2VkLm1tICovLAog
CQkJCTJEQjAyMzJFMUU0RTg3MTgwMDcwNzEyMyAvKiBJbnRlcmFjdGlvbkRlYWRsb2NrQWZ0ZXJD
cmFzaC5tbSAqLywKKwkJCQk1QzRBODQ4RjFGN0M3QkZEMDBBQ0ZDNTQgLyogSmF2YVNjcmlwdER1
cmluZ05hdmlnYXRpb24ubW0gKi8sCiAJCQkJQzI1Q0NBMDUxRTUxMzgwQjAwMjZDQjhBIC8qIExp
bmVCcmVha2luZy5tbSAqLywKIAkJCQkzN0QzNkVENjFBRjQyRUNEMDBCQUY1RDkgLyogTG9hZEFs
dGVybmF0ZUhUTUxTdHJpbmcubW0gKi8sCiAJCQkJQTEyNTQ3OEQxREIxOEI5NDAwMzU4NTY0IC8q
IExvYWREYXRhV2l0aE5pbE1JTUVUeXBlLm1tICovLApAQCAtMzI3OCw2ICszMjgxLDcgQEAKIAkJ
CQk3QTkwOUE4MjFEODc3NDgwMDA3RTEwRjggLyogSW50UmVjdC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk3QTkwOUE4MzFEODc3NDgwMDA3RTEwRjggLyogSW50U2l6ZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQk1QzBCRjg5MzFERDU5OUJEMDBCMDAzMjggLyogSXNOYXZpZ2F0aW9uQWN0aW9uVHJ1
c3RlZC5tbSBpbiBTb3VyY2VzICovLAorCQkJCTVDNEE4NDkwMUY3QzdDMEIwMEFDRkM1NCAvKiBK
YXZhU2NyaXB0RHVyaW5nTmF2aWdhdGlvbi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUFE
MUE0MTFBMzQwMDQ0N0M0QyAvKiBKYXZhU2NyaXB0VGVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJ
CQk3Q0NFN0VBNTFBNDExQTA4MDA0NDdDNEMgLyogSmF2YVNjcmlwdFRlc3RNYWMubW0gaW4gU291
cmNlcyAqLywKIAkJCQk3Q0NFN0VDNDFBNDExQTdFMDA0NDdDNEMgLyogSlNXcmFwcGVyRm9yTm9k
ZUluV2ViRnJhbWUubW0gaW4gU291cmNlcyAqLywKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkv
VGVzdHMvV2ViS2l0Q29jb2EvSmF2YVNjcmlwdER1cmluZ05hdmlnYXRpb24ubW0KPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9KYXZhU2NyaXB0RHVy
aW5nTmF2aWdhdGlvbi5tbQkobm9uZXhpc3RlbnQpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0phdmFTY3JpcHREdXJpbmdOYXZpZ2F0aW9uLm1tCSh3b3JraW5nIGNv
cHkpCkBAIC0wLDAgKzEsOTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0ICJUZXN0LmgiCisjaW1wb3J0
IDxXZWJLaXQvV0tXZWJWaWV3Lmg+CisjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CisKKyNpZiBX
S19BUElfRU5BQkxFRAorCitzdGF0aWMgYm9vbCBuYXZpZ2F0aW9uQ29tcGxldGU7CitzdGF0aWMg
c2l6ZV90IGFsZXJ0czsKK3N0YXRpYyBib29sIHJlY2VpdmVkQm90aEFsZXJ0czsKK3N0YXRpYyBS
ZXRhaW5QdHI8TlNVUkw+IGZpcnN0VVJMOworc3RhdGljIFJldGFpblB0cjxOU1VSTD4gc2Vjb25k
VVJMOworCitAaW50ZXJmYWNlIEpTTmF2aWdhdGlvbkRlbGVnYXRlIDogTlNPYmplY3QgPFdLTmF2
aWdhdGlvbkRlbGVnYXRlLCBXS1VJRGVsZWdhdGU+CitAZW5kCisKK0BpbXBsZW1lbnRhdGlvbiBK
U05hdmlnYXRpb25EZWxlZ2F0ZQorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZp
ZXcgZGlkRmluaXNoTmF2aWdhdGlvbjoobnVsbF91bnNwZWNpZmllZCBXS05hdmlnYXRpb24gKilu
YXZpZ2F0aW9uCit7CisgICAgbmF2aWdhdGlvbkNvbXBsZXRlID0gdHJ1ZTsKK30KKworLSAodm9p
ZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb246KFdLTmF2aWdhdGlvbkFjdGlvbiAqKW5hdmlnYXRpb25BY3Rpb24gZGVjaXNpb25IYW5k
bGVyOih2b2lkICheKShXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3kpKWRlY2lzaW9uSGFuZGxlcgor
eworICAgIGlmIChbbmF2aWdhdGlvbkFjdGlvbi5yZXF1ZXN0LlVSTCBpc0VxdWFsVG86c2Vjb25k
VVJMLmdldCgpXSkgeworICAgICAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJhbGVy
dChkb2N1bWVudC5sb2NhdGlvbik7IiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkLCBOU0Vycm9yICop
IHsKKyAgICAgICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25BY3Rpb25Qb2xpY3lB
bGxvdyk7CisgICAgICAgIH1dOworICAgIH0gZWxzZQorICAgICAgICBkZWNpc2lvbkhhbmRsZXIo
V0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cpOworfQorCistICh2b2lkKXdlYlZpZXc6KFdL
V2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOihXS05h
dmlnYXRpb25SZXNwb25zZSAqKW5hdmlnYXRpb25SZXNwb25zZSBkZWNpc2lvbkhhbmRsZXI6KHZv
aWQgKF4pKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSlkZWNpc2lvbkhhbmRsZXIKK3sKKyAg
ICBpZiAoW25hdmlnYXRpb25SZXNwb25zZS5yZXNwb25zZS5VUkwgaXNFcXVhbFRvOnNlY29uZFVS
TC5nZXQoKV0pIHsKKyAgICAgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAiYWxlcnQo
ZG9jdW1lbnQubG9jYXRpb24pOyIgY29tcGxldGlvbkhhbmRsZXI6XihpZCwgTlNFcnJvciAqKSB7
CisgICAgICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lB
bGxvdyk7CisgICAgICAgIH1dOworICAgIH0gZWxzZQorICAgICAgICBkZWNpc2lvbkhhbmRsZXIo
V0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvdyk7Cit9CisKKy0gKHZvaWQpd2ViVmlldzoo
V0tXZWJWaWV3ICopd2ViVmlldyBydW5KYXZhU2NyaXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdlOihO
U1N0cmluZyAqKW1lc3NhZ2UgaW5pdGlhdGVkQnlGcmFtZTooV0tGcmFtZUluZm8gKilmcmFtZSBj
b21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29tcGxldGlvbkhhbmRsZXIKK3sKKyAg
ICBFWFBFQ1RfU1RSRVEobWVzc2FnZS5VVEY4U3RyaW5nLCBbW2ZpcnN0VVJMIGFic29sdXRlU3Ry
aW5nXSBVVEY4U3RyaW5nXSk7CisgICAgaWYgKCsrYWxlcnRzID09IDIpCisgICAgICAgIHJlY2Vp
dmVkQm90aEFsZXJ0cyA9IHRydWU7CisgICAgY29tcGxldGlvbkhhbmRsZXIoKTsKK30KKworQGVu
ZAorCitURVNUKFdlYktpdCwgSmF2YVNjcmlwdER1cmluZ05hdmlnYXRpb24pCit7CisgICAgZmly
c3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlIiB3
aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5yZXNvdXJj
ZXMiXTsKKyAgICBzZWNvbmRVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZvclJlc291
cmNlOkAic2ltcGxlMiIgd2l0aEV4dGVuc2lvbjpAImh0bWwiIHN1YmRpcmVjdG9yeTpAIlRlc3RX
ZWJLaXRBUEkucmVzb3VyY2VzIl07CisgICAgCisgICAgYXV0byB3ZWJWaWV3ID0gYWRvcHROUyhb
W1dLV2ViVmlldyBhbGxvY10gaW5pdF0pOworICAgIGF1dG8gZGVsZWdhdGUgPSBhZG9wdE5TKFtb
SlNOYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsKKyAgICBbd2ViVmlldyBzZXROYXZp
Z2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworICAgIFt3ZWJWaWV3IHNldFVJRGVsZWdh
dGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJMUmVx
dWVzdCByZXF1ZXN0V2l0aFVSTDpmaXJzdFVSTC5nZXQoKV1dOworICAgIFRlc3RXZWJLaXRBUEk6
OlV0aWw6OnJ1bigmbmF2aWdhdGlvbkNvbXBsZXRlKTsKKworICAgIFt3ZWJWaWV3IGxvYWRSZXF1
ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6c2Vjb25kVVJMLmdldCgpXV07CisgICAg
VGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZEJvdGhBbGVydHMpOworfQorCisjZW5k
aWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322065</attachid>
            <date>2017-09-27 21:49:08 -0700</date>
            <delta_ts>2017-10-02 10:07:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177590-20170927214907.patch</filename>
            <type>text/plain</type>
            <size>45225</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjI1OTkpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDE3LTA5LTI3ICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lPTihy
MjE0MjAxKTogV2ViUHJvY2VzcyBoYW5ncyBkdXJpbmcgcG9saWN5IGRlY2lzaW9ucworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3NTkwCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8zMzM2MjkyOT4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGlzIGlzIGxpa2UgcjIyMjQzMSBidXQgZm9yIHRydW5rIGlu
c3RlYWQgb2YgYSBicmFuY2guCisgICAgICAgIEl0IGluY2x1ZGVzIHRoZSBzYW1lIHJlZ3Jlc3Np
b24gQVBJIHRlc3Qgc28gSSBkb24ndCBtYWtlIHRoZSBzYW1lIG1pc3Rha2UgYWdhaW4uCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcDoKKyAgICAgICAgKFdLUGFnZVNldFBh
Z2VOYXZpZ2F0aW9uQ2xpZW50KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNw
cDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW9u
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0
aW9uQWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lG
b3JSZXNwb25zZVN5bmMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFdl
YlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JS
ZXNwb25zZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbik6CisgICAgICAgIChXZWJLaXQ6OldlYkZy
YW1lTG9hZGVyQ2xpZW50OjphcHBseVRvRG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViS2l0
OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
QWN0aW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50Lmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkRvY3VtZW50TG9h
ZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRG9jdW1lbnRMb2FkZXI6OnNldE5hdmlnYXRp
b25JRCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWU6OnNldFVwUG9saWN5TGlzdGVuZXIpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJGcmFtZTo6aW52YWxpZGF0ZVBvbGljeUxpc3RlbmVyKToKKyAgICAgICAgKFdlYktp
dDo6V2ViRnJhbWU6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbik6CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmg6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRSZWNlaXZlUG9saWN5RGVj
aXNpb24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAgICAg
ICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisKIDIwMTctMDktMjcg
IFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAgICAgRHJhZyBl
dmVudCBEYXRhVHJhbnNmZXIgaGFzIHVuZXhwZWN0ZWQgdHlwZXMgImR5bi5haDYyZDQuLi4iCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIy
MjU5OSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTIyNzUsNyArMjI3NSw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZl
ZFBvbGljeURlY2lzaW8KICAgICBEb3dubG9hZElEIGRvd25sb2FkSUQgPSB7IH07CiAgICAgaWYg
KGFjdGlvbiA9PSBQb2xpY3lBY3Rpb246OkRvd25sb2FkKSB7CiAgICAgICAgIC8vIENyZWF0ZSBh
IGRvd25sb2FkIHByb3h5LgotICAgICAgICBhdXRvKiBkb3dubG9hZCA9IG1fcHJvY2Vzcy0+cHJv
Y2Vzc1Bvb2woKS5jcmVhdGVEb3dubG9hZFByb3h5KG1fZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VS
ZXF1ZXN0LCB0aGlzKTsKKyAgICAgICAgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBkb3dubG9hZFJl
cXVlc3QgPSBtX2RlY2lkZVBvbGljeUZvclJlc3BvbnNlUmVxdWVzdCA/ICptX2RlY2lkZVBvbGlj
eUZvclJlc3BvbnNlUmVxdWVzdCA6IFJlc291cmNlUmVxdWVzdCgpOworICAgICAgICBEb3dubG9h
ZFByb3h5KiBkb3dubG9hZCA9IG1fcHJvY2Vzcy0+cHJvY2Vzc1Bvb2woKS5jcmVhdGVEb3dubG9h
ZFByb3h5KGRvd25sb2FkUmVxdWVzdCwgdGhpcyk7CiAgICAgICAgIGlmIChuYXZpZ2F0aW9uKSB7
CiAgICAgICAgICAgICBkb3dubG9hZC0+c2V0V2FzVXNlckluaXRpYXRlZChuYXZpZ2F0aW9uLT53
YXNVc2VySW5pdGlhdGVkKCkpOwogICAgICAgICAgICAgZG93bmxvYWQtPnNldFJlZGlyZWN0Q2hh
aW4obmF2aWdhdGlvbi0+dGFrZVJlZGlyZWN0Q2hhaW4oKSk7CkBAIC0yMjgzLDI4ICsyMjg0LDI4
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZWNlaXZlZFBvbGljeURlY2lzaW8KIAogICAgICAgICBk
b3dubG9hZElEID0gZG93bmxvYWQtPmRvd25sb2FkSUQoKTsKICAgICAgICAgaGFuZGxlRG93bmxv
YWRSZXF1ZXN0KGRvd25sb2FkKTsKLSAgICAgICAgbV9kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVJl
cXVlc3QgPSB7IH07CiAgICAgfQogCiAgICAgLy8gSWYgd2UgcmVjZWl2ZWQgYSBwb2xpY3kgZGVj
aXNpb24gd2hpbGUgaW4gZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UgdGhlIGRlY2lzaW9uIHdpbGwK
ICAgICAvLyBiZSBzZW50IGJhY2sgdG8gdGhlIHdlYiBwcm9jZXNzIGJ5IGRlY2lkZVBvbGljeUZv
clJlc3BvbnNlLgotICAgIGlmIChtX3Jlc3BvbnNlUG9saWN5UmVwbHkpIHsKLSAgICAgICAgbV9y
ZXNwb25zZVBvbGljeVJlcGx5LT5zZW5kKGFjdGlvbiwgZG93bmxvYWRJRCk7Ci0gICAgICAgIEFT
U0VSVCghbV9uZXdOYXZpZ2F0aW9uSUQpOwotICAgICAgICBtX3Jlc3BvbnNlUG9saWN5UmVwbHkg
PSBudWxscHRyOworICAgIGlmIChtX2luRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTeW5jKSB7Cisg
ICAgICAgIG1fc3luY01pbWVUeXBlUG9saWN5QWN0aW9uSXNWYWxpZCA9IHRydWU7CisgICAgICAg
IG1fc3luY01pbWVUeXBlUG9saWN5QWN0aW9uID0gYWN0aW9uOworICAgICAgICBtX3N5bmNNaW1l
VHlwZVBvbGljeURvd25sb2FkSUQgPSBkb3dubG9hZElEOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgLy8gSWYgd2UgcmVjZWl2ZWQgYSBwb2xpY3kgZGVjaXNpb24gd2hpbGUgaW4gZGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiB0aGUgZGVjaXNpb24gd2lsbCAKICAgICAvLyBi
ZSBzZW50IGJhY2sgdG8gdGhlIHdlYiBwcm9jZXNzIGJ5IGRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24uIAotICAgIGlmIChtX25hdmlnYXRpb25BY3Rpb25Qb2xpY3lSZXBseSkgewotICAg
ICAgICBtX25hdmlnYXRpb25BY3Rpb25Qb2xpY3lSZXBseS0+c2VuZChtX25ld05hdmlnYXRpb25J
RCwgYWN0aW9uLCBkb3dubG9hZElELCB3ZWJzaXRlUG9saWNpZXMpOwotICAgICAgICBtX25ld05h
dmlnYXRpb25JRCA9IDA7Ci0gICAgICAgIG1fbmF2aWdhdGlvbkFjdGlvblBvbGljeVJlcGx5ID0g
bnVsbHB0cjsKKyAgICBpZiAobV9pbkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pIHsK
KyAgICAgICAgbV9zeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeUFjdGlvbklzVmFsaWQgPSB0cnVl
OworICAgICAgICBtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWN0aW9uID0gYWN0aW9uOwor
ICAgICAgICBtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5RG93bmxvYWRJRCA9IGRvd25sb2Fk
SUQ7CisgICAgICAgIG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lXZWJzaXRlUG9saWNpZXMg
PSB3ZWJzaXRlUG9saWNpZXM7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCi0gICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24o
ZnJhbWUuZnJhbWVJRCgpLCBsaXN0ZW5lcklELCBhY3Rpb24sIG5hdmlnYXRpb24gPyBuYXZpZ2F0
aW9uLT5uYXZpZ2F0aW9uSUQoKSA6IDAsIGRvd25sb2FkSUQpLCBtX3BhZ2VJRCk7CisgICAgbV9w
cm9jZXNzLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpEaWRSZWNlaXZlUG9saWN5RGVjaXNpb24o
ZnJhbWUuZnJhbWVJRCgpLCBsaXN0ZW5lcklELCBhY3Rpb24sIG5hdmlnYXRpb24gPyBuYXZpZ2F0
aW9uLT5uYXZpZ2F0aW9uSUQoKSA6IDAsIGRvd25sb2FkSUQsIHdlYnNpdGVQb2xpY2llcyksIG1f
cGFnZUlEKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnNldFVzZXJBZ2VudChjb25zdCBTdHJp
bmcmIHVzZXJBZ2VudCkKQEAgLTM2NTYsNyArMzY1Nyw3IEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpm
cmFtZURpZEJlY29tZUZyYW1lU2UKICAgICAgICAgbV9mcmFtZVNldExhcmdlc3RGcmFtZSA9IHZh
bHVlID8gbV9tYWluRnJhbWUgOiAwOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9s
aWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTZWN1cml0eU9y
aWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgTmF2
aWdhdGlvbkFjdGlvbkRhdGEmJiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgY29uc3QgRnJhbWVJbmZv
RGF0YSYgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJ
RCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRh
JiB1c2VyRGF0YSwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb246OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5
OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBjb25z
dCBGcmFtZUluZm9EYXRhJiBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdp
bmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVx
dWVzdCwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29u
c3QgVXNlckRhdGEmIHVzZXJEYXRhLCBib29sJiByZWNlaXZlZFBvbGljeUFjdGlvbiwgdWludDY0
X3QmIG5ld05hdmlnYXRpb25JRCwgV2ViQ29yZTo6UG9saWN5QWN0aW9uJiBwb2xpY3lBY3Rpb24s
IERvd25sb2FkSUQmIGRvd25sb2FkSUQsIFdlYnNpdGVQb2xpY2llcyYgd2Vic2l0ZVBvbGljaWVz
KQogewogICAgIFBhZ2VDbGllbnRQcm90ZWN0b3IgcHJvdGVjdG9yKG1fcGFnZUNsaWVudCk7CiAK
QEAgLTM2NzEsMTEgKzM2NzIsMTAgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZv
ck5hdmlnYQogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKHJlcXVlc3QudXJsKCkpOwogICAgIE1FU1NB
R0VfQ0hFQ0tfVVJMKG9yaWdpbmFsUmVxdWVzdC51cmwoKSk7CiAgICAgCi0gICAgbV9uZXdOYXZp
Z2F0aW9uSUQgPSAwOwogICAgIFJlZjxXZWJGcmFtZVBvbGljeUxpc3RlbmVyUHJveHk+IGxpc3Rl
bmVyID0gZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXJQcm94eShsaXN0ZW5lcklEKTsKICAgICBp
ZiAoIW5hdmlnYXRpb25JRCkgewogICAgICAgICBhdXRvIG5hdmlnYXRpb24gPSBtX25hdmlnYXRp
b25TdGF0ZS0+Y3JlYXRlTG9hZFJlcXVlc3ROYXZpZ2F0aW9uKFJlc291cmNlUmVxdWVzdChyZXF1
ZXN0KSk7Ci0gICAgICAgIG1fbmV3TmF2aWdhdGlvbklEID0gbmF2aWdhdGlvbi0+bmF2aWdhdGlv
bklEKCk7CisgICAgICAgIG5ld05hdmlnYXRpb25JRCA9IG5hdmlnYXRpb24tPm5hdmlnYXRpb25J
RCgpOwogICAgICAgICBuYXZpZ2F0aW9uLT5zZXRXYXNVc2VySW5pdGlhdGVkKCEhbmF2aWdhdGlv
bkFjdGlvbkRhdGEudXNlckdlc3R1cmVUb2tlbklkZW50aWZpZXIpOwogICAgICAgICBsaXN0ZW5l
ci0+c2V0TmF2aWdhdGlvbihXVEZNb3ZlKG5hdmlnYXRpb24pKTsKICAgICB9IGVsc2UgewpAQCAt
MzY4NiwxNiArMzY4NiwxOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2
aWdhCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCiAgICAgaWYgKGZyYW1lLT5kaWRI
YW5kbGVDb250ZW50RmlsdGVyVW5ibG9ja05hdmlnYXRpb24ocmVxdWVzdCkpIHsKLSAgICAgICAg
cmVwbHktPnNlbmQobV9uZXdOYXZpZ2F0aW9uSUQsIFBvbGljeUFjdGlvbjo6SWdub3JlLCB7IH0s
IHsgfSk7Ci0gICAgICAgIG1fbmV3TmF2aWdhdGlvbklEID0gMDsKKyAgICAgICAgcmVjZWl2ZWRQ
b2xpY3lBY3Rpb24gPSB0cnVlOworICAgICAgICBwb2xpY3lBY3Rpb24gPSBQb2xpY3lBY3Rpb246
Oklnbm9yZTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICNlbmRpZgogCisgICAgQVNTRVJUKCFt
X2luRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbik7CisgICAgCisgICAgbV9pbkRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gPSB0cnVlOworICAgIG1fc3luY05hdmlnYXRpb25B
Y3Rpb25Qb2xpY3lBY3Rpb25Jc1ZhbGlkID0gZmFsc2U7CiAjaWYgRU5BQkxFKERPV05MT0FEX0FU
VFJJQlVURSkKICAgICBtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uSGFzRG93bmxvYWRBdHRyaWJ1dGUg
PSAhbmF2aWdhdGlvbkFjdGlvbkRhdGEuZG93bmxvYWRBdHRyaWJ1dGUuaXNOdWxsKCk7CiAjZW5k
aWYKLSAgICBtX25hdmlnYXRpb25BY3Rpb25Qb2xpY3lSZXBseSA9IFdURk1vdmUocmVwbHkpOwog
CiAgICAgV2ViRnJhbWVQcm94eSogb3JpZ2luYXRpbmdGcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJh
bWUob3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLmZyYW1lSUQpOwogCkBAIC0zNzE3LDYgKzM3MjAs
MTUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYQogICAgICAgICBt
X3BvbGljeUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbigqdGhpcywgZnJh
bWUsIFdURk1vdmUobmF2aWdhdGlvbkFjdGlvbkRhdGEpLCBvcmlnaW5hdGluZ0ZyYW1lLCBvcmln
aW5hbFJlcXVlc3QsIFdURk1vdmUocmVxdWVzdCksIFdURk1vdmUobGlzdGVuZXIpLCBtX3Byb2Nl
c3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsK
IAogICAgIG1fc2hvdWxkU3VwcHJlc3NBcHBMaW5rc0luTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNp
c2lvbiA9IGZhbHNlOworICAgIG1faW5EZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uID0g
ZmFsc2U7CisKKyAgICAvLyBDaGVjayBpZiB3ZSByZWNlaXZlZCBhIHBvbGljeSBkZWNpc2lvbiBh
bHJlYWR5LiBJZiB3ZSBkaWQsIHdlIGNhbiBqdXN0IHBhc3MgaXQgYmFjay4KKyAgICByZWNlaXZl
ZFBvbGljeUFjdGlvbiA9IG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBY3Rpb25Jc1ZhbGlk
OworICAgIGlmIChtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWN0aW9uSXNWYWxpZCkgewor
ICAgICAgICBwb2xpY3lBY3Rpb24gPSBtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWN0aW9u
OworICAgICAgICBkb3dubG9hZElEID0gbV9zeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeURvd25s
b2FkSUQ7CisgICAgICAgIHdlYnNpdGVQb2xpY2llcyA9IG1fc3luY05hdmlnYXRpb25BY3Rpb25Q
b2xpY3lXZWJzaXRlUG9saWNpZXM7CisgICAgfQogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVj
aWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3Vy
aXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgTmF2aWdhdGlvbkFjdGlvbkRhdGEm
JiBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3Qg
U3RyaW5nJiBmcmFtZU5hbWUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiB1
c2VyRGF0YSkKQEAgLTM3NjQsMTQgKzM3NzYsMjcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRlY2lk
ZVBvbGljeUZvclJlc3BvbgogICAgICAgICBtX3BvbGljeUNsaWVudC0+ZGVjaWRlUG9saWN5Rm9y
UmVzcG9uc2UoKnRoaXMsICpmcmFtZSwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dNSU1FVHlw
ZSwgV1RGTW92ZShsaXN0ZW5lciksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0
cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGVj
aWRlUG9saWN5Rm9yUmVzcG9uc2VTeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5
T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBy
ZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3Qg
VXNlckRhdGEmIHVzZXJEYXRhLCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9s
aWN5Rm9yUmVzcG9uc2VTeW5jOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCit2b2lkIFdlYlBhZ2VQ
cm94eTo6ZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByZXF1ZXN0LCBib29sIGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJ
RCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhLCBib29sJiByZWNlaXZlZFBvbGljeUFjdGlvbiwg
V2ViQ29yZTo6UG9saWN5QWN0aW9uJiBwb2xpY3lBY3Rpb24sIERvd25sb2FkSUQmIGRvd25sb2Fk
SUQpCiB7CiAgICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IobV9wYWdlQ2xpZW50KTsK
IAotICAgIG1fZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VSZXF1ZXN0ID0gcmVxdWVzdDsKLSAgICBt
X3Jlc3BvbnNlUG9saWN5UmVwbHkgPSBXVEZNb3ZlKHJlcGx5KTsKKyAgICBBU1NFUlQoIW1faW5E
ZWNpZGVQb2xpY3lGb3JSZXNwb25zZVN5bmMpOwogCisgICAgbV9pbkRlY2lkZVBvbGljeUZvclJl
c3BvbnNlU3luYyA9IHRydWU7CisgICAgbV9kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVJlcXVlc3Qg
PSAmcmVxdWVzdDsKKyAgICBtX3N5bmNNaW1lVHlwZVBvbGljeUFjdGlvbklzVmFsaWQgPSBmYWxz
ZTsKKyAgICAKICAgICBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZShmcmFtZUlELCBmcmFtZVNlY3Vy
aXR5T3JpZ2luLCBuYXZpZ2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5
cGUsIGxpc3RlbmVySUQsIHVzZXJEYXRhKTsKKyAgICAKKyAgICBtX2luRGVjaWRlUG9saWN5Rm9y
UmVzcG9uc2VTeW5jID0gZmFsc2U7CisgICAgbV9kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVJlcXVl
c3QgPSBudWxscHRyOworICAgIAorICAgIC8vIENoZWNrIGlmIHdlIHJlY2VpdmVkIGEgcG9saWN5
IGRlY2lzaW9uIGFscmVhZHkuIElmIHdlIGRpZCwgd2UgY2FuIGp1c3QgcGFzcyBpdCBiYWNrLgor
ICAgIHJlY2VpdmVkUG9saWN5QWN0aW9uID0gbV9zeW5jTWltZVR5cGVQb2xpY3lBY3Rpb25Jc1Zh
bGlkOworICAgIGlmIChtX3N5bmNNaW1lVHlwZVBvbGljeUFjdGlvbklzVmFsaWQpIHsKKyAgICAg
ICAgcG9saWN5QWN0aW9uID0gbV9zeW5jTWltZVR5cGVQb2xpY3lBY3Rpb247CisgICAgICAgIGRv
d25sb2FkSUQgPSBtX3N5bmNNaW1lVHlwZVBvbGljeURvd25sb2FkSUQ7CisgICAgfQogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6dW5hYmxlVG9JbXBsZW1lbnRQb2xpY3kodWludDY0X3QgZnJhbWVJ
RCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAyMjI1
OTkpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBj
b3B5KQpAQCAtMTI4MywxMCArMTI4MywxMCBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWREZXN0
cm95TmF2aWdhdGlvbih1aW50NjRfdCBuYXZpZ2F0aW9uSUQpOwogCi0gICAgdm9pZCBkZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6
OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBjb25zdCBGcmFtZUluZm9EYXRhJiwgdWlu
dDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYg
b3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgdWludDY0X3QgbGlz
dGVuZXJJRCwgY29uc3QgVXNlckRhdGEmLCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVj
aWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lk
IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
V2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIGNvbnN0IEZyYW1lSW5mb0Rh
dGEmLCB1aW50NjRfdCBvcmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VS
ZXF1ZXN0JiBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCB1aW50
NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYsIGJvb2wmIHJlY2VpdmVkUG9saWN5QWN0
aW9uLCB1aW50NjRfdCYgbmV3TmF2aWdhdGlvbklELCBXZWJDb3JlOjpQb2xpY3lBY3Rpb24mLCBE
b3dubG9hZElEJiwgV2Vic2l0ZVBvbGljaWVzJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JO
ZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlP
cmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmJiwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIHVpbnQ2
NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CiAgICAgdm9pZCBkZWNpZGVQb2xpY3lG
b3JSZXNwb25zZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdp
bkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2Vy
RGF0YSYpOwotICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTeW5jKHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9y
aWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3Bv
bnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5
cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiwgUmVmPE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvclJlc3BvbnNlU3luYzo6RGVsYXllZFJlcGx5PiYm
KTsKKyAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlU3luYyh1aW50NjRfdCBmcmFtZUlE
LCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4s
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXNwb25zZSYs
IGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1
aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0YSYsIGJvb2wmIHJlY2VpdmVkUG9saWN5
QWN0aW9uLCBXZWJDb3JlOjpQb2xpY3lBY3Rpb24mLCBEb3dubG9hZElEJik7CiAgICAgdm9pZCB1
bmFibGVUb0ltcGxlbWVudFBvbGljeSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpS
ZXNvdXJjZUVycm9yJiwgY29uc3QgVXNlckRhdGEmKTsKIAogICAgIHZvaWQgd2lsbFN1Ym1pdEZv
cm0odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3Qgc291cmNlRnJhbWVJRCwgY29uc3QgVmVjdG9y
PHN0ZDo6cGFpcjxTdHJpbmcsIFN0cmluZz4+JiB0ZXh0RmllbGRWYWx1ZXMsIHVpbnQ2NF90IGxp
c3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7CkBAIC0xNzk4LDEwICsxNzk4LDE2IEBAIHByaXZh
dGU6CiAgICAgYm9vbCBtX2lzSW5QcmludGluZ01vZGUgeyBmYWxzZSB9OwogICAgIGJvb2wgbV9p
c1BlcmZvcm1pbmdET01QcmludE9wZXJhdGlvbiB7IGZhbHNlIH07CiAKLSAgICBSZWZQdHI8TWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjo6RGVs
YXllZFJlcGx5PiBtX25hdmlnYXRpb25BY3Rpb25Qb2xpY3lSZXBseTsKLSAgICB1aW50NjRfdCBt
X25ld05hdmlnYXRpb25JRCB7IDAgfTsKLSAgICBSZWZQdHI8TWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTeW5jOjpEZWxheWVkUmVwbHk+IG1fcmVzcG9uc2VQ
b2xpY3lSZXBseTsKLSAgICBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgbV9kZWNpZGVQb2xpY3lG
b3JSZXNwb25zZVJlcXVlc3Q7CisgICAgYm9vbCBtX2luRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VT
eW5jIHsgZmFsc2UgfTsKKyAgICBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QqIG1fZGVj
aWRlUG9saWN5Rm9yUmVzcG9uc2VSZXF1ZXN0IHsgbnVsbHB0ciB9OworICAgIGJvb2wgbV9zeW5j
TWltZVR5cGVQb2xpY3lBY3Rpb25Jc1ZhbGlkIHsgZmFsc2UgfTsKKyAgICBXZWJDb3JlOjpQb2xp
Y3lBY3Rpb24gbV9zeW5jTWltZVR5cGVQb2xpY3lBY3Rpb24geyBXZWJDb3JlOjpQb2xpY3lBY3Rp
b246OlVzZSB9OworICAgIERvd25sb2FkSUQgbV9zeW5jTWltZVR5cGVQb2xpY3lEb3dubG9hZElE
IHsgMCB9OworICAgIGJvb2wgbV9pbkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24geyBm
YWxzZSB9OworICAgIGJvb2wgbV9zeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeUFjdGlvbklzVmFs
aWQgeyBmYWxzZSB9OworICAgIFdlYkNvcmU6OlBvbGljeUFjdGlvbiBtX3N5bmNOYXZpZ2F0aW9u
QWN0aW9uUG9saWN5QWN0aW9uIHsgV2ViQ29yZTo6UG9saWN5QWN0aW9uOjpVc2UgfTsKKyAgICBE
b3dubG9hZElEIG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lEb3dubG9hZElEIHsgMCB9Owor
ICAgIFdlYnNpdGVQb2xpY2llcyBtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5V2Vic2l0ZVBv
bGljaWVzOwogCiAgICAgYm9vbCBtX3Nob3VsZFN1cHByZXNzQXBwTGlua3NJbk5leHROYXZpZ2F0
aW9uUG9saWN5RGVjaXNpb24geyBmYWxzZSB9OwogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAyMjI1OTkpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHdvcmtp
bmcgY29weSkKQEAgLTk4LDggKzk4LDggQEAgbWVzc2FnZXMgLT4gV2ViUGFnZVByb3h5IHsKICNl
bmRpZgogCiAgICAgIyBQb2xpY3kgbWVzc2FnZXMKLSAgICBEZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZVN5bmModWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0
YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlJl
c291cmNlUmVzcG9uc2UgcmVzcG9uc2UsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0
LCBib29sIGNhblNob3dNSU1FVHlwZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2Vy
RGF0YSB1c2VyRGF0YSkgLT4gKGVudW0gV2ViQ29yZTo6UG9saWN5QWN0aW9uIHBvbGljeUFjdGlv
biwgV2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQpIERlbGF5ZWQKLSAgICBEZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpT
ZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlv
bklELCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9u
RGF0YSwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmlnaW5hdGluZ0ZyYW1lSW5mb0Rh
dGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qg
b3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgdWludDY0
X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkgLT4gKHVpbnQ2NF90IG5l
d05hdmlnYXRpb25JRCwgZW51bSBXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBX
ZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgc3RydWN0IFdlYktpdDo6V2Vic2l0ZVBvbGlj
aWVzIHdlYnNpdGVQb2xpY2llcykgRGVsYXllZAorICAgIERlY2lkZVBvbGljeUZvclJlc3BvbnNl
U3luYyh1aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRh
IGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVz
b3VyY2VSZXNwb25zZSByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3Qs
IGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJE
YXRhIHVzZXJEYXRhKSAtPiAoYm9vbCByZWNlaXZlZFBvbGljeUFjdGlvbiwgZW51bSBXZWJDb3Jl
OjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBXZWJLaXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJ
RCkKKyAgICBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQs
IHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVTZWN1cml0eU9yaWdpbiwg
dWludDY0X3QgbmF2aWdhdGlvbklELCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0
YSBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgc3RydWN0IFdlYktpdDo6RnJhbWVJbmZvRGF0YSBvcmln
aW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBXZWJDb3Jl
OjpSZXNvdXJjZVJlcXVlc3Qgb3JpZ2luYWxSZXF1ZXN0LCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdCwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0
YSkgLT4gKGJvb2wgcmVjZWl2ZWRQb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5ld05hdmlnYXRpb25J
RCwgZW51bSBXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBXZWJLaXQ6OkRvd25s
b2FkSUQgZG93bmxvYWRJRCwgc3RydWN0IFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzIHdlYnNpdGVQ
b2xpY2llcykKICAgICBEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJh
bWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3Jp
Z2luLCBzdHJ1Y3QgV2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uRGF0YSBuYXZpZ2F0aW9uQWN0aW9u
RGF0YSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIFN0cmluZyBmcmFtZU5hbWUs
IHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNlckRhdGEpCiAgICAgVW5h
YmxlVG9JbXBsZW1lbnRQb2xpY3kodWludDY0X3QgZnJhbWVJRCwgV2ViQ29yZTo6UmVzb3VyY2VF
cnJvciBlcnJvciwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKIApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCShyZXZpc2lvbiAyMjI1OTkpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
MTQyLDE5ICsyMTQyLDE1IEBAIHZvaWQgV0tQYWdlU2V0UGFnZU5hdmlnYXRpb25DbGllbnQoV0tQ
YWcKICAgICBwcml2YXRlOgogICAgICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24oV2ViUGFnZVByb3h5JiBwYWdlLCBSZWY8QVBJOjpOYXZpZ2F0aW9uQWN0aW9uPiYmIG5h
dmlnYXRpb25BY3Rpb24sIFJlZjxXZWJLaXQ6OldlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4m
JiBsaXN0ZW5lciwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBmaW5hbAogICAgICAgICB7Ci0gICAg
ICAgICAgICBpZiAoIW1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pIHsK
LSAgICAgICAgICAgICAgICBsaXN0ZW5lci0+dXNlKHsgfSk7CisgICAgICAgICAgICBpZiAoIW1f
Y2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24pCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgfQogICAgICAgICAgICAgbV9jbGllbnQuZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbih0b0FQSSgmcGFnZSksIHRvQVBJKG5hdmlnYXRpb25BY3Rpb24u
cHRyKCkpLCB0b0FQSShsaXN0ZW5lci5wdHIoKSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCiAgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvblJlc3BvbnNlKFdlYlBhZ2VQcm94eSYgcGFnZSwgQVBJOjpOYXZpZ2F0aW9u
UmVzcG9uc2UmIG5hdmlnYXRpb25SZXNwb25zZSwgUmVmPFdlYktpdDo6V2ViRnJhbWVQb2xpY3lM
aXN0ZW5lclByb3h5PiYmIGxpc3RlbmVyLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRl
CiAgICAgICAgIHsKLSAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvblJlc3BvbnNlKSB7Ci0gICAgICAgICAgICAgICAgbGlzdGVuZXItPnVzZSh7IH0pOwor
ICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9u
c2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICAgICAgfQogICAgICAgICAgICAg
bV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlKHRvQVBJKCZwYWdlKSwg
dG9BUEkoJm5hdmlnYXRpb25SZXNwb25zZSksIHRvQVBJKGxpc3RlbmVyLnB0cigpKSwgdG9BUEko
dXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKSW5kZXg6
IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAkocmV2aXNpb24gMjIyNTk5KQorKysgU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjk5LDIwICs2OTksMjIgQEAgdm9pZCBXZWJGcmFtZUxv
YWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogCiAgICAgYm9vbCBjYW5TaG93TUlNRVR5cGUgPSB3
ZWJQYWdlLT5jYW5TaG93TUlNRVR5cGUocmVzcG9uc2UubWltZVR5cGUoKSk7CiAKLSAgICB1aW50
NjRfdCBsaXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihXVEZNb3ZlKGZ1
bmN0aW9uKSk7CisgICAgdWludDY0X3QgbGlzdGVuZXJJRCA9IG1fZnJhbWUtPnNldFVwUG9saWN5
TGlzdGVuZXIoV1RGTW92ZShmdW5jdGlvbiksIFdlYkZyYW1lOjpGb3JOYXZpZ2F0aW9uQWN0aW9u
OjpObyk7CisgICAgYm9vbCByZWNlaXZlZFBvbGljeUFjdGlvbjsKICAgICBQb2xpY3lBY3Rpb24g
cG9saWN5QWN0aW9uOwogICAgIERvd25sb2FkSUQgZG93bmxvYWRJRDsKIAogICAgIFJlZjxXZWJG
cmFtZT4gcHJvdGVjdCgqbV9mcmFtZSk7CiAgICAgV2ViQ29yZTo6RnJhbWUqIGNvcmVGcmFtZSA9
IG1fZnJhbWUtPmNvcmVGcmFtZSgpOwogICAgIGF1dG8gbmF2aWdhdGlvbklEID0gc3RhdGljX2Nh
c3Q8V2ViRG9jdW1lbnRMb2FkZXImPigqY29yZUZyYW1lLT5sb2FkZXIoKS5wcm92aXNpb25hbERv
Y3VtZW50TG9hZGVyKCkpLm5hdmlnYXRpb25JRCgpOwotICAgIGlmICghd2ViUGFnZS0+c2VuZFN5
bmMoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTeW5jKG1f
ZnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUoY29yZUZyYW1l
KSwgbmF2aWdhdGlvbklELCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd01JTUVUeXBlLCBsaXN0
ZW5lcklELCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3Rz
VG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5
OjpEZWNpZGVQb2xpY3lGb3JSZXNwb25zZVN5bmM6OlJlcGx5KHBvbGljeUFjdGlvbiwgZG93bmxv
YWRJRCksIFNlY29uZHM6OmluZmluaXR5KCksIElQQzo6U2VuZFN5bmNPcHRpb246OkluZm9ybVBs
YXRmb3JtUHJvY2Vzc1dpbGxTdXNwZW5kKSkgewotICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZl
UG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHsgfSk7
CisgICAgaWYgKCF3ZWJQYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNp
ZGVQb2xpY3lGb3JSZXNwb25zZVN5bmMobV9mcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdp
bkRhdGE6OmZyb21GcmFtZShjb3JlRnJhbWUpLCBuYXZpZ2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1
ZXN0LCBjYW5TaG93TUlNRVR5cGUsIGxpc3RlbmVySUQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgp
KSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvclJlc3BvbnNlU3luYzo6
UmVwbHkocmVjZWl2ZWRQb2xpY3lBY3Rpb24sIHBvbGljeUFjdGlvbiwgZG93bmxvYWRJRCksIFNl
Y29uZHM6OmluZmluaXR5KCksIElQQzo6U2VuZFN5bmNPcHRpb246OkluZm9ybVBsYXRmb3JtUHJv
Y2Vzc1dpbGxTdXNwZW5kKSkgeworICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVj
aXNpb24obGlzdGVuZXJJRCwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHsgfSwgeyB9KTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIC8vIFdlIGNhbGwgdGhpcyBzeW5jaHJvbm91c2x5
IGJlY2F1c2UgQ0ZOZXR3b3JrIGNhbiBvbmx5IGNvbnZlcnQgYSBsb2FkaW5nIGNvbm5lY3Rpb24g
dG8gYSBkb3dubG9hZCBmcm9tIGl0cyBkaWRSZWNlaXZlUmVzcG9uc2UgY2FsbGJhY2suCi0gICAg
bV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIHBvbGljeUFjdGlv
biwgMCwgZG93bmxvYWRJRCk7CisgICAgaWYgKHJlY2VpdmVkUG9saWN5QWN0aW9uKQorICAgICAg
ICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgcG9saWN5QWN0
aW9uLCAwLCBkb3dubG9hZElELCB7IH0pOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0aW9u
QWN0aW9uJiBuYXZpZ2F0aW9uQWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IEZvcm1TdGF0ZSogZm9ybVN0YXRlLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgRnJhbWVQb2xp
Y3lGdW5jdGlvbiYmIGZ1bmN0aW9uKQpAQCAtNzM0LDcgKzczNiw3IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWQKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAg
IHVpbnQ2NF90IGxpc3RlbmVySUQgPSBtX2ZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyKFdURk1v
dmUoZnVuY3Rpb24pKTsKKyAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQ
b2xpY3lMaXN0ZW5lcihXVEZNb3ZlKGZ1bmN0aW9uKSwgV2ViRnJhbWU6OkZvck5hdmlnYXRpb25B
Y3Rpb246Ok5vKTsKIAogICAgIE5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25E
YXRhOwogICAgIG5hdmlnYXRpb25BY3Rpb25EYXRhLm5hdmlnYXRpb25UeXBlID0gYWN0aW9uLT5u
YXZpZ2F0aW9uVHlwZSgpOwpAQCAtNzUxLDYgKzc1Myw1MiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVy
Q2xpZW50OjpkaXNwYXRjaERlY2lkCiAgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOZXdXaW5kb3dBY3Rpb24obV9mcmFtZS0+ZnJhbWVJRCgp
LCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21GcmFtZShjb3JlRnJhbWUpLCBuYXZpZ2F0aW9uQWN0
aW9uRGF0YSwgcmVxdWVzdCwgZnJhbWVOYW1lLCBsaXN0ZW5lcklELCBVc2VyRGF0YShXZWJQcm9j
ZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgp
KS5nZXQoKSkpKTsKIH0KIAordm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6YXBwbHlUb0RvY3Vt
ZW50TG9hZGVyKGNvbnN0IFdlYnNpdGVQb2xpY2llcyYgd2Vic2l0ZVBvbGljaWVzKQoreworICAg
IGlmICghbV9mcmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIGF1dG8qIGNvcmVGcmFtZSA9IG1f
ZnJhbWUtPmNvcmVGcmFtZSgpOworICAgIGlmICghY29yZUZyYW1lKQorICAgICAgICByZXR1cm47
CisgICAgV2ViRG9jdW1lbnRMb2FkZXIqIGRvY3VtZW50TG9hZGVyID0gc3RhdGljX2Nhc3Q8V2Vi
RG9jdW1lbnRMb2FkZXIqPihjb3JlRnJhbWUtPmxvYWRlcigpLnBvbGljeURvY3VtZW50TG9hZGVy
KCkpOworICAgIGlmICghZG9jdW1lbnRMb2FkZXIpCisgICAgICAgIGRvY3VtZW50TG9hZGVyID0g
c3RhdGljX2Nhc3Q8V2ViRG9jdW1lbnRMb2FkZXIqPihjb3JlRnJhbWUtPmxvYWRlcigpLnByb3Zp
c2lvbmFsRG9jdW1lbnRMb2FkZXIoKSk7CisgICAgaWYgKCFkb2N1bWVudExvYWRlcikKKyAgICAg
ICAgZG9jdW1lbnRMb2FkZXIgPSBzdGF0aWNfY2FzdDxXZWJEb2N1bWVudExvYWRlcio+KGNvcmVG
cmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSk7CisgICAgaWYgKCFkb2N1bWVudExvYWRl
cikKKyAgICAgICAgcmV0dXJuOworCisgICAgLy8gT25seSBzZXRVc2VyQ29udGVudEV4dGVuc2lv
bnNFbmFibGVkIGlmIGl0IGhhc24ndCBhbHJlYWR5IGJlZW4gZGlzYWJsZWQgYnkgcmVsb2FkaW5n
IHdpdGhvdXQgY29udGVudCBibG9ja2Vycy4KKyAgICBpZiAoZG9jdW1lbnRMb2FkZXItPnVzZXJD
b250ZW50RXh0ZW5zaW9uc0VuYWJsZWQoKSkKKyAgICAgICAgZG9jdW1lbnRMb2FkZXItPnNldFVz
ZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJsZWQod2Vic2l0ZVBvbGljaWVzLmNvbnRlbnRCbG9ja2Vy
c0VuYWJsZWQpOworCisgICAgT3B0aW9uU2V0PEF1dG9wbGF5UXVpcms+IHF1aXJrczsKKyAgICBh
dXRvIGFsbG93ZWRRdWlya3MgPSB3ZWJzaXRlUG9saWNpZXMuYWxsb3dlZEF1dG9wbGF5UXVpcmtz
OworCisgICAgaWYgKGFsbG93ZWRRdWlya3MuY29udGFpbnMoV2Vic2l0ZUF1dG9wbGF5UXVpcms6
OkluaGVyaXRlZFVzZXJHZXN0dXJlcykpCisgICAgICAgIHF1aXJrcyB8PSBBdXRvcGxheVF1aXJr
OjpJbmhlcml0ZWRVc2VyR2VzdHVyZXM7CisKKyAgICBpZiAoYWxsb3dlZFF1aXJrcy5jb250YWlu
cyhXZWJzaXRlQXV0b3BsYXlRdWlyazo6U3ludGhlc2l6ZWRQYXVzZUV2ZW50cykpCisgICAgICAg
IHF1aXJrcyB8PSBBdXRvcGxheVF1aXJrOjpTeW50aGVzaXplZFBhdXNlRXZlbnRzOworCisgICAg
ZG9jdW1lbnRMb2FkZXItPnNldEFsbG93ZWRBdXRvcGxheVF1aXJrcyhxdWlya3MpOworCisgICAg
c3dpdGNoICh3ZWJzaXRlUG9saWNpZXMuYXV0b3BsYXlQb2xpY3kpIHsKKyAgICBjYXNlIFdlYnNp
dGVBdXRvcGxheVBvbGljeTo6RGVmYXVsdDoKKyAgICAgICAgZG9jdW1lbnRMb2FkZXItPnNldEF1
dG9wbGF5UG9saWN5KEF1dG9wbGF5UG9saWN5OjpEZWZhdWx0KTsKKyAgICAgICAgYnJlYWs7Cisg
ICAgY2FzZSBXZWJzaXRlQXV0b3BsYXlQb2xpY3k6OkFsbG93OgorICAgICAgICBkb2N1bWVudExv
YWRlci0+c2V0QXV0b3BsYXlQb2xpY3koQXV0b3BsYXlQb2xpY3k6OkFsbG93KTsKKyAgICAgICAg
YnJlYWs7CisgICAgY2FzZSBXZWJzaXRlQXV0b3BsYXlQb2xpY3k6OkFsbG93V2l0aG91dFNvdW5k
OgorICAgICAgICBkb2N1bWVudExvYWRlci0+c2V0QXV0b3BsYXlQb2xpY3koQXV0b3BsYXlQb2xp
Y3k6OkFsbG93V2l0aG91dFNvdW5kKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBXZWJzaXRl
QXV0b3BsYXlQb2xpY3k6OkRlbnk6CisgICAgICAgIGRvY3VtZW50TG9hZGVyLT5zZXRBdXRvcGxh
eVBvbGljeShBdXRvcGxheVBvbGljeTo6RGVueSk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30K
Kwogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIG5hdmlnYXRpb25BY3Rpb24sIGNv
bnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgYm9vbCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNw
b25zZSwgRm9ybVN0YXRlKiBmb3JtU3RhdGUsIEZyYW1lUG9saWN5RnVuY3Rpb24mJiBmdW5jdGlv
bikKIHsKICAgICBXZWJQYWdlKiB3ZWJQYWdlID0gbV9mcmFtZS0+cGFnZSgpOwpAQCAtNzc2LDcg
KzgyNCw4IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWQKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gbV9mcmFt
ZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihXVEZNb3ZlKGZ1bmN0aW9uKSk7CisgICAgdWludDY0X3Qg
bGlzdGVuZXJJRCA9IG1fZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXIoV1RGTW92ZShmdW5jdGlv
biksIFdlYkZyYW1lOjpGb3JOYXZpZ2F0aW9uQWN0aW9uOjpZZXMpOworICAgIGJvb2wgcmVjZWl2
ZWRQb2xpY3lBY3Rpb247CiAgICAgdWludDY0X3QgbmV3TmF2aWdhdGlvbklEOwogICAgIFBvbGlj
eUFjdGlvbiBwb2xpY3lBY3Rpb247CiAgICAgRG93bmxvYWRJRCBkb3dubG9hZElEOwpAQCAtODE3
LDggKzg2Niw4IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWQKICAg
ICAvLyBOb3RpZnkgdGhlIFVJUHJvY2Vzcy4KICAgICBSZWY8V2ViRnJhbWU+IHByb3RlY3QoKm1f
ZnJhbWUpOwogICAgIFdlYnNpdGVQb2xpY2llcyB3ZWJzaXRlUG9saWNpZXM7Ci0gICAgaWYgKCF3
ZWJQYWdlLT5zZW5kU3luYyhNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uKG1fZnJhbWUtPmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpm
cm9tRnJhbWUoY29yZUZyYW1lKSwgZG9jdW1lbnRMb2FkZXItPm5hdmlnYXRpb25JRCgpLCBuYXZp
Z2F0aW9uQWN0aW9uRGF0YSwgb3JpZ2luYXRpbmdGcmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ0Zy
YW1lICYmIG9yaWdpbmF0aW5nRnJhbWUtPnBhZ2UoKSA/IG9yaWdpbmF0aW5nRnJhbWUtPnBhZ2Uo
KS0+cGFnZUlEKCkgOiAwLCBuYXZpZ2F0aW9uQWN0aW9uLnJlc291cmNlUmVxdWVzdCgpLCByZXF1
ZXN0LCBsaXN0ZW5lcklELCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zv
cm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpLCBNZXNzYWdlczo6V2Vi
UGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOjpSZXBseShuZXdOYXZp
Z2F0aW9uSUQsIHBvbGljeUFjdGlvbiwgZG93bmxvYWRJRCwgd2Vic2l0ZVBvbGljaWVzKSkpIHsK
LSAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFBv
bGljeUFjdGlvbjo6SWdub3JlLCAwLCB7IH0pOworICAgIGlmICghd2ViUGFnZS0+c2VuZFN5bmMo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiht
X2ZyYW1lLT5mcmFtZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKGNvcmVGcmFt
ZSksIGRvY3VtZW50TG9hZGVyLT5uYXZpZ2F0aW9uSUQoKSwgbmF2aWdhdGlvbkFjdGlvbkRhdGEs
IG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgb3JpZ2luYXRpbmdGcmFtZSAmJiBvcmlnaW5hdGlu
Z0ZyYW1lLT5wYWdlKCkgPyBvcmlnaW5hdGluZ0ZyYW1lLT5wYWdlKCktPnBhZ2VJRCgpIDogMCwg
bmF2aWdhdGlvbkFjdGlvbi5yZXNvdXJjZVJlcXVlc3QoKSwgcmVxdWVzdCwgbGlzdGVuZXJJRCwg
VXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxl
cyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSwgTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbjo6UmVwbHkocmVjZWl2ZWRQb2xpY3lBY3Rpb24sIG5l
d05hdmlnYXRpb25JRCwgcG9saWN5QWN0aW9uLCBkb3dubG9hZElELCB3ZWJzaXRlUG9saWNpZXMp
KSkgeworICAgICAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJ
RCwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIDAsIHsgfSwgeyB9KTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtODI4LDM0ICs4NzcsOSBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERlY2lkCiAgICAgaWYgKGRvY3VtZW50TG9hZGVyLT51c2VyQ29udGVudEV4dGVuc2lv
bnNFbmFibGVkKCkpCiAgICAgICAgIGRvY3VtZW50TG9hZGVyLT5zZXRVc2VyQ29udGVudEV4dGVu
c2lvbnNFbmFibGVkKHdlYnNpdGVQb2xpY2llcy5jb250ZW50QmxvY2tlcnNFbmFibGVkKTsKIAot
ICAgIE9wdGlvblNldDxBdXRvcGxheVF1aXJrPiBxdWlya3M7Ci0gICAgYXV0byBhbGxvd2VkUXVp
cmtzID0gd2Vic2l0ZVBvbGljaWVzLmFsbG93ZWRBdXRvcGxheVF1aXJrczsKLQotICAgIGlmIChh
bGxvd2VkUXVpcmtzLmNvbnRhaW5zKFdlYnNpdGVBdXRvcGxheVF1aXJrOjpJbmhlcml0ZWRVc2Vy
R2VzdHVyZXMpKQotICAgICAgICBxdWlya3MgfD0gQXV0b3BsYXlRdWlyazo6SW5oZXJpdGVkVXNl
ckdlc3R1cmVzOwotCi0gICAgaWYgKGFsbG93ZWRRdWlya3MuY29udGFpbnMoV2Vic2l0ZUF1dG9w
bGF5UXVpcms6OlN5bnRoZXNpemVkUGF1c2VFdmVudHMpKQotICAgICAgICBxdWlya3MgfD0gQXV0
b3BsYXlRdWlyazo6U3ludGhlc2l6ZWRQYXVzZUV2ZW50czsKLQotICAgIGRvY3VtZW50TG9hZGVy
LT5zZXRBbGxvd2VkQXV0b3BsYXlRdWlya3MocXVpcmtzKTsKLQotICAgIHN3aXRjaCAod2Vic2l0
ZVBvbGljaWVzLmF1dG9wbGF5UG9saWN5KSB7Ci0gICAgY2FzZSBXZWJzaXRlQXV0b3BsYXlQb2xp
Y3k6OkRlZmF1bHQ6Ci0gICAgICAgIGRvY3VtZW50TG9hZGVyLT5zZXRBdXRvcGxheVBvbGljeShB
dXRvcGxheVBvbGljeTo6RGVmYXVsdCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgV2Vic2l0
ZUF1dG9wbGF5UG9saWN5OjpBbGxvdzoKLSAgICAgICAgZG9jdW1lbnRMb2FkZXItPnNldEF1dG9w
bGF5UG9saWN5KEF1dG9wbGF5UG9saWN5OjpBbGxvdyk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNh
c2UgV2Vic2l0ZUF1dG9wbGF5UG9saWN5OjpBbGxvd1dpdGhvdXRTb3VuZDoKLSAgICAgICAgZG9j
dW1lbnRMb2FkZXItPnNldEF1dG9wbGF5UG9saWN5KEF1dG9wbGF5UG9saWN5OjpBbGxvd1dpdGhv
dXRTb3VuZCk7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgV2Vic2l0ZUF1dG9wbGF5UG9saWN5
OjpEZW55OgotICAgICAgICBkb2N1bWVudExvYWRlci0+c2V0QXV0b3BsYXlQb2xpY3koQXV0b3Bs
YXlQb2xpY3k6OkRlbnkpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KICAgICAvLyBXZSBjYWxs
IHRoaXMgc3luY2hyb25vdXNseSBiZWNhdXNlIFdlYkNvcmUgY2Fubm90IGdyYWNlZnVsbHkgaGFu
ZGxlIGEgZnJhbWUgbG9hZCB3aXRob3V0IGEgc3luY2hyb25vdXMgbmF2aWdhdGlvbiBwb2xpY3kg
cmVwbHkuCi0gICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQs
IHBvbGljeUFjdGlvbiwgbmV3TmF2aWdhdGlvbklELCBkb3dubG9hZElEKTsKKyAgICBpZiAocmVj
ZWl2ZWRQb2xpY3lBY3Rpb24pCisgICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNp
c2lvbihsaXN0ZW5lcklELCBwb2xpY3lBY3Rpb24sIG5ld05hdmlnYXRpb25JRCwgZG93bmxvYWRJ
RCwgd2Vic2l0ZVBvbGljaWVzKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y2Fu
Y2VsUG9saWN5Q2hlY2soKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmgJKHJldmlz
aW9uIDIyMjU5OSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJGcmFtZUxvYWRlckNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0zNSw2ICszNSw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBQbHVnaW5WaWV3OwogY2xhc3MgV2ViRnJhbWU7Citz
dHJ1Y3QgV2Vic2l0ZVBvbGljaWVzOwogICAgIAogY2xhc3MgV2ViRnJhbWVMb2FkZXJDbGllbnQg
ZmluYWwgOiBwdWJsaWMgV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnQgewogcHVibGljOgpAQCAt
NDgsNiArNDksOCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHNldFVzZUljb25Mb2FkaW5nQ2xpZW50
KGJvb2wgdXNlSWNvbkxvYWRpbmdDbGllbnQpIHsgbV91c2VJY29uTG9hZGluZ0NsaWVudCA9IHVz
ZUljb25Mb2FkaW5nQ2xpZW50OyB9CiAKKyAgICB2b2lkIGFwcGx5VG9Eb2N1bWVudExvYWRlcihj
b25zdCBXZWJzaXRlUG9saWNpZXMmKTsKKwogcHJpdmF0ZToKICAgICB2b2lkIGZyYW1lTG9hZGVy
RGVzdHJveWVkKCkgZmluYWw7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYkRvY3VtZW50TG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvV2ViUGFnZS9XZWJEb2N1bWVudExvYWRlci5jcHAJKHJldmlzaW9uIDIyMjU5OSkK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkRvY3VtZW50TG9hZGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNTEsNyArNTEsNyBAQCB2b2lkIFdlYkRvY3VtZW50TG9hZGVy
OjpkZXRhY2hGcm9tRnJhbWUoCiB2b2lkIFdlYkRvY3VtZW50TG9hZGVyOjpzZXROYXZpZ2F0aW9u
SUQodWludDY0X3QgbmF2aWdhdGlvbklEKQogewogICAgIEFTU0VSVChuYXZpZ2F0aW9uSUQpOwot
ICAgIEFTU0VSVCghbV9uYXZpZ2F0aW9uSUQpOworICAgIEFTU0VSVCghbV9uYXZpZ2F0aW9uSUQg
fHwgbV9uYXZpZ2F0aW9uSUQgPT0gbmF2aWdhdGlvbklEKTsKIAogICAgIG1fbmF2aWdhdGlvbklE
ID0gbmF2aWdhdGlvbklEOwogfQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViRnJhbWUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYkZyYW1lLmNwcAkocmV2aXNpb24gMjIyNTk5KQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDksNyAr
MjA5LDcgQEAgdm9pZCBXZWJGcmFtZTo6aW52YWxpZGF0ZSgpCiAgICAgbV9jb3JlRnJhbWUgPSAw
OwogfQogCi11aW50NjRfdCBXZWJGcmFtZTo6c2V0VXBQb2xpY3lMaXN0ZW5lcihXZWJDb3JlOjpG
cmFtZVBvbGljeUZ1bmN0aW9uJiYgcG9saWN5RnVuY3Rpb24pCit1aW50NjRfdCBXZWJGcmFtZTo6
c2V0VXBQb2xpY3lMaXN0ZW5lcihXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYgcG9saWN5
RnVuY3Rpb24sIEZvck5hdmlnYXRpb25BY3Rpb24gZm9yTmF2aWdhdGlvbkFjdGlvbikKIHsKICAg
ICAvLyBGSVhNRTogPHJkYXI6Ly81NjM0MzgxPiBXZSBuZWVkIHRvIHN1cHBvcnQgbXVsdGlwbGUg
YWN0aXZlIHBvbGljeSBsaXN0ZW5lcnMuCiAKQEAgLTIxNyw2ICsyMTcsNyBAQCB1aW50NjRfdCBX
ZWJGcmFtZTo6c2V0VXBQb2xpY3lMaXN0ZW5lcihXCiAKICAgICBtX3BvbGljeUxpc3RlbmVySUQg
PSBnZW5lcmF0ZUxpc3RlbmVySUQoKTsKICAgICBtX3BvbGljeUZ1bmN0aW9uID0gV1RGTW92ZShw
b2xpY3lGdW5jdGlvbik7CisgICAgbV9wb2xpY3lGdW5jdGlvbkZvck5hdmlnYXRpb25BY3Rpb24g
PSBmb3JOYXZpZ2F0aW9uQWN0aW9uOwogICAgIHJldHVybiBtX3BvbGljeUxpc3RlbmVySUQ7CiB9
CiAKQEAgLTI0MCwxMSArMjQxLDEyIEBAIHZvaWQgV2ViRnJhbWU6OmludmFsaWRhdGVQb2xpY3lM
aXN0ZW5lcigKIAogICAgIG1fcG9saWN5RG93bmxvYWRJRCA9IHsgfTsKICAgICBtX3BvbGljeUxp
c3RlbmVySUQgPSAwOworICAgIG1fcG9saWN5RnVuY3Rpb25Gb3JOYXZpZ2F0aW9uQWN0aW9uID0g
Rm9yTmF2aWdhdGlvbkFjdGlvbjo6Tm87CiAgICAgaWYgKGF1dG8gZnVuY3Rpb24gPSBzdGQ6OmV4
Y2hhbmdlKG1fcG9saWN5RnVuY3Rpb24sIG51bGxwdHIpKQogICAgICAgICBmdW5jdGlvbihQb2xp
Y3lBY3Rpb246Oklnbm9yZSk7CiB9CiAKLXZvaWQgV2ViRnJhbWU6OmRpZFJlY2VpdmVQb2xpY3lE
ZWNpc2lvbih1aW50NjRfdCBsaXN0ZW5lcklELCBQb2xpY3lBY3Rpb24gYWN0aW9uLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIERvd25sb2FkSUQgZG93bmxvYWRJRCkKK3ZvaWQgV2ViRnJhbWU6OmRp
ZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBsaXN0ZW5lcklELCBQb2xpY3lBY3Rpb24g
YWN0aW9uLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29u
c3QgV2Vic2l0ZVBvbGljaWVzJiB3ZWJzaXRlUG9saWNpZXMpCiB7CiAgICAgaWYgKCFtX2NvcmVG
cmFtZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjU5LDkgKzI2MSwxMyBAQCB2b2lkIFdlYkZyYW1l
OjpkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24oCiAgICAgICAgIHJldHVybjsKIAogICAgIEZyYW1l
UG9saWN5RnVuY3Rpb24gZnVuY3Rpb24gPSBXVEZNb3ZlKG1fcG9saWN5RnVuY3Rpb24pOworICAg
IGJvb2wgZm9yTmF2aWdhdGlvbkFjdGlvbiA9IG1fcG9saWN5RnVuY3Rpb25Gb3JOYXZpZ2F0aW9u
QWN0aW9uID09IEZvck5hdmlnYXRpb25BY3Rpb246OlllczsKIAogICAgIGludmFsaWRhdGVQb2xp
Y3lMaXN0ZW5lcigpOwogCisgICAgaWYgKGZvck5hdmlnYXRpb25BY3Rpb24gJiYgbV9mcmFtZUxv
YWRlckNsaWVudCkKKyAgICAgICAgbV9mcmFtZUxvYWRlckNsaWVudC0+YXBwbHlUb0RvY3VtZW50
TG9hZGVyKHdlYnNpdGVQb2xpY2llcyk7CisKICAgICBtX3BvbGljeURvd25sb2FkSUQgPSBkb3du
bG9hZElEOwogICAgIGlmIChuYXZpZ2F0aW9uSUQpIHsKICAgICAgICAgaWYgKFdlYkRvY3VtZW50
TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IHN0YXRpY19jYXN0PFdlYkRvY3VtZW50TG9hZGVyKj4o
bV9jb3JlRnJhbWUtPmxvYWRlcigpLnBvbGljeURvY3VtZW50TG9hZGVyKCkpKQpJbmRleDogU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCShyZXZpc2lvbiAyMjI1
OTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC02NCw2ICs2NCw3IEBAIGNsYXNzIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5k
bGU7CiBjbGFzcyBJbmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOwogY2xhc3MgV2ViUGFnZTsKIHN0
cnVjdCBGcmFtZUluZm9EYXRhOworc3RydWN0IFdlYnNpdGVQb2xpY2llczsKIAogY2xhc3MgV2Vi
RnJhbWUgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVG
cmFtZT4gewogcHVibGljOgpAQCAtODIsOSArODMsMTAgQEAgcHVibGljOgogICAgIEZyYW1lSW5m
b0RhdGEgaW5mbygpIGNvbnN0OwogICAgIHVpbnQ2NF90IGZyYW1lSUQoKSBjb25zdCB7IHJldHVy
biBtX2ZyYW1lSUQ7IH0KIAotICAgIHVpbnQ2NF90IHNldFVwUG9saWN5TGlzdGVuZXIoV2ViQ29y
ZTo6RnJhbWVQb2xpY3lGdW5jdGlvbiYmKTsKKyAgICBlbnVtIGNsYXNzIEZvck5hdmlnYXRpb25B
Y3Rpb24geyBObywgWWVzIH07CisgICAgdWludDY0X3Qgc2V0VXBQb2xpY3lMaXN0ZW5lcihXZWJD
b3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uJiYsIEZvck5hdmlnYXRpb25BY3Rpb24pOwogICAgIHZv
aWQgaW52YWxpZGF0ZVBvbGljeUxpc3RlbmVyKCk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlUG9saWN5
RGVjaXNpb24odWludDY0X3QgbGlzdGVuZXJJRCwgV2ViQ29yZTo6UG9saWN5QWN0aW9uLCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIERvd25sb2FkSUQpOworICAgIHZvaWQgZGlkUmVjZWl2ZVBvbGlj
eURlY2lzaW9uKHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgdWlu
dDY0X3QgbmF2aWdhdGlvbklELCBEb3dubG9hZElELCBjb25zdCBXZWJzaXRlUG9saWNpZXMmKTsK
IAogICAgIHVpbnQ2NF90IHNldFVwV2lsbFN1Ym1pdEZvcm1MaXN0ZW5lcihXVEY6OkZ1bmN0aW9u
PHZvaWQodm9pZCk+JiYpOwogICAgIHZvaWQgY29udGludWVXaWxsU3VibWl0Rm9ybSh1aW50NjRf
dCk7CkBAIC0xNzcsNiArMTc5LDcgQEAgcHJpdmF0ZToKIAogICAgIHVpbnQ2NF90IG1fcG9saWN5
TGlzdGVuZXJJRCB7IDAgfTsKICAgICBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uIG1fcG9s
aWN5RnVuY3Rpb247CisgICAgRm9yTmF2aWdhdGlvbkFjdGlvbiBtX3BvbGljeUZ1bmN0aW9uRm9y
TmF2aWdhdGlvbkFjdGlvbiB7IEZvck5hdmlnYXRpb25BY3Rpb246Ok5vIH07CiAgICAgSGFzaE1h
cDx1aW50NjRfdCwgV1RGOjpGdW5jdGlvbjx2b2lkKHZvaWQpPj4gbV93aWxsU3VibWl0Rm9ybUNv
bXBsZXRpb25IYW5kbGVyczsKICAgICBEb3dubG9hZElEIG1fcG9saWN5RG93bmxvYWRJRCB7IDAg
fTsKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5j
cHAJKHJldmlzaW9uIDIyMjU5OSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNzMzLDEyICsyNzMzLDEyIEBAIHZvaWQg
V2ViUGFnZTo6c2V0U2Vzc2lvbklEKFBBTDo6U2Vzc2lvbkkKICAgICBtX3BhZ2UtPnNldFNlc3Np
b25JRChzZXNzaW9uSUQpOwogfQogCi12b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVQb2xpY3lEZWNp
c2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCBQb2xpY3lBY3Rpb24g
cG9saWN5QWN0aW9uLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IERvd25sb2FkSUQmIGRv
d25sb2FkSUQpCit2b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCBQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9u
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IERvd25sb2FkSUQmIGRvd25sb2FkSUQsIFdl
YnNpdGVQb2xpY2llcyYmIHdlYnNpdGVQb2xpY2llcykKIHsKICAgICBXZWJGcmFtZSogZnJhbWUg
PSBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBpZiAoIWZy
YW1lKQogICAgICAgICByZXR1cm47Ci0gICAgZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lv
bihsaXN0ZW5lcklELCBwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb25JRCwgZG93bmxvYWRJRCk7Cisg
ICAgZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBwb2xpY3lBY3Rp
b24sIG5hdmlnYXRpb25JRCwgZG93bmxvYWRJRCwgd2Vic2l0ZVBvbGljaWVzKTsKIH0KIAogdm9p
ZCBXZWJQYWdlOjpjb250aW51ZVdpbGxTdWJtaXRGb3JtKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2
NF90IGxpc3RlbmVySUQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5oCShyZXZpc2lvbiAyMjI1OTkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUGFnZS9XZWJQYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMzgsNyArMTEzOCw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBwbGF0Zm9ybVByZWZlcmVuY2VzRGlkQ2hhbmdlKGNvbnN0IFdlYlBy
ZWZlcmVuY2VzU3RvcmUmKTsKICAgICB2b2lkIHVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlBy
ZWZlcmVuY2VzU3RvcmUmKTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYkNvcmU6OlBvbGljeUFjdGlv
biwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBEb3dubG9hZElEJik7CisgICAgdm9pZCBk
aWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVu
ZXJJRCwgV2ViQ29yZTo6UG9saWN5QWN0aW9uLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0
IERvd25sb2FkSUQmLCBXZWJzaXRlUG9saWNpZXMmJik7CiAgICAgdm9pZCBjb250aW51ZVdpbGxT
dWJtaXRGb3JtKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQpOwogICAgIHZv
aWQgc2V0VXNlckFnZW50KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0Q3VzdG9tVGV4dEVu
Y29kaW5nTmFtZShjb25zdCBTdHJpbmcmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjIyNTk5
KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5p
bgkod29ya2luZyBjb3B5KQpAQCAtMTUxLDcgKzE1MSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2Ug
TGVnYWN5UmVjZWl2ZXIgewogICAgIERpZFJlbW92ZUJhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBi
YWNrRm9yd2FyZEl0ZW1JRCkKIAogICAgIFVwZGF0ZVdlYnNpdGVQb2xpY2llcyhzdHJ1Y3QgV2Vi
S2l0OjpXZWJzaXRlUG9saWNpZXMgd2Vic2l0ZVBvbGljaWVzKQotICAgIERpZFJlY2VpdmVQb2xp
Y3lEZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCBlbnVtIFdl
YkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwg
V2ViS2l0OjpEb3dubG9hZElEIGRvd25sb2FkSUQpCisgICAgRGlkUmVjZWl2ZVBvbGljeURlY2lz
aW9uKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGVudW0gV2ViQ29yZTo6
UG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJLaXQ6
OkRvd25sb2FkSUQgZG93bmxvYWRJRCwgc3RydWN0IFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzIHdl
YnNpdGVQb2xpY2llcykKICAgICBDb250aW51ZVdpbGxTdWJtaXRGb3JtKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IGxpc3RlbmVySUQpCiAKICAgICBDbGVhclNlbGVjdGlvbigpCkluZGV4OiBU
b29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
MjI1OTkpCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOSBA
QAorMjAxNy0wOS0yNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgorCisgICAgICAgIFJFR1JFU1NJT04ocjIxNDIwMSk6IFdlYlByb2Nlc3MgaGFuZ3MgZHVyaW5n
IHBvbGljeSBkZWNpc2lvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE3NzU5MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzMzNjI5Mjk+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0
QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBU
ZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0phdmFTY3JpcHREdXJpbmdOYXZpZ2F0aW9u
Lm1tOiBBZGRlZC4KKyAgICAgICAgKC1bSlNOYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzpkaWRG
aW5pc2hOYXZpZ2F0aW9uOl0pOgorICAgICAgICAoLVtKU05hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJW
aWV3OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246ZGVjaXNpb25IYW5kbGVyOl0pOgor
ICAgICAgICAoLVtKU05hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3OmRlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25SZXNwb25zZTpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW0pTTmF2aWdh
dGlvbkRlbGVnYXRlIHdlYlZpZXc6cnVuSmF2YVNjcmlwdEFsZXJ0UGFuZWxXaXRoTWVzc2FnZTpp
bml0aWF0ZWRCeUZyYW1lOmNvbXBsZXRpb25IYW5kbGVyOl0pOgorICAgICAgICAoVEVTVCk6CisK
IDIwMTctMDktMjcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAg
ICAgICAgRHJhZyBldmVudCBEYXRhVHJhbnNmZXIgaGFzIHVuZXhwZWN0ZWQgdHlwZXMgImR5bi5h
aDYyZDQuLi4iCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjIyNTk5KQor
KysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTIyNyw2ICsyMjcsNyBAQAogCQk1QzBCRjg5NTFERDU5
OUNEMDBCMDAzMjggLyogTmF2aWdhdG9yTGFuZ3VhZ2UubW0gaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFMTlEQjk3ODFCMzIxMzdDMDBEQjM4RDQgLyogTmF2
aWdhdG9yTGFuZ3VhZ2UubW0gKi87IH07CiAJCTVDMjkzNjkzMUQ1QkY3MEQwMERFQUIxRSAvKiBD
b29raWVBY2NlcHRQb2xpY3kubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1QzI5MzY5MTFENUJGNjNFMDBERUFCMUUgLyogQ29va2llQWNjZXB0UG9saWN5
Lm1tICovOyB9OwogCQk1QzI5MzY5NjFENUMwMEVEMDBERUFCMUUgLyogQ29va2llTWVzc2FnZS5o
dG1sIGluIENvcHkgUmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDVDMjkzNjk0MUQ1QkZEMTkwMERFQUIxRSAvKiBDb29raWVNZXNzYWdlLmh0bWwgKi87IH07CisJ
CTVDNEE4NDkwMUY3QzdDMEIwMEFDRkM1NCAvKiBKYXZhU2NyaXB0RHVyaW5nTmF2aWdhdGlvbi5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNEE4NDhG
MUY3QzdCRkQwMEFDRkM1NCAvKiBKYXZhU2NyaXB0RHVyaW5nTmF2aWdhdGlvbi5tbSAqLzsgfTsK
IAkJNUM2RTY1NDQxRDVDRUZENDAwRjc4NjJFIC8qIFVSTFBhcnNlci5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzZFNjU0MTFENUNFRjg1MDBGNzg2
MkUgLyogVVJMUGFyc2VyLmNwcCAqLzsgfTsKIAkJNUM3MjZENkYxRDNFRTA2RTAwQzVFMUExIC8q
IEluc3RhbmNlTWV0aG9kU3dpenpsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1QzcyNkQ2RTFEM0VFMDY4MDBDNUUxQTEgLyogSW5zdGFuY2VNZXRo
b2RTd2l6emxlci5tbSAqLzsgfTsKIAkJNUM3OTY0MTAxRUIwMjc4RDAwNzVENzRDIC8qIEV2ZW50
TW9kaWZpZXJzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IDVDNzk2NDBGMUVCMDI2OUIwMDc1RDc0QyAvKiBFdmVudE1vZGlmaWVycy5jcHAgKi87IH07
CkBAIC0xMzI5LDYgKzEzMzAsNyBAQAogCQk1QzBCRjg4RjFERDU5OTlCMDBCMDAzMjggLyogV2Vi
Vmlld0NhblBhc3RlWmVyb1BuZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsg
cGF0aCA9IFdlYlZpZXdDYW5QYXN0ZVplcm9QbmcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTVDMjkzNjkxMUQ1QkY2M0UwMERFQUIxRSAvKiBDb29raWVBY2NlcHRQb2xpY3kubW0g
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBDb29raWVBY2NlcHRQb2xp
Y3kubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMjkzNjk0MUQ1QkZEMTkwMERF
QUIxRSAvKiBDb29raWVNZXNzYWdlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBD
b29raWVNZXNzYWdlLmh0bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTVDNEE4NDhG
MUY3QzdCRkQwMEFDRkM1NCAvKiBKYXZhU2NyaXB0RHVyaW5nTmF2aWdhdGlvbi5tbSAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IEphdmFTY3JpcHREdXJpbmdOYXZpZ2F0
aW9uLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzVFNjMzRDFEMEI2Nzk0MDA4
NUEwMjUgLyogVW5pcXVlUmVmLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IFVuaXF1ZVJlZi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNkU2NTQx
MUQ1Q0VGODUwMEY3ODYyRSAvKiBVUkxQYXJzZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gVVJMUGFyc2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJNUM3MjZENkQxRDNFRTA2ODAwQzVFMUExIC8qIEluc3RhbmNlTWV0aG9kU3dpenpsZXIuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSW5zdGFuY2VNZXRob2RTd2l6emxlci5o
OyBwYXRoID0gY29jb2EvSW5zdGFuY2VNZXRob2RTd2l6emxlci5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTk3MCw2ICsxOTcyLDcgQEAKIAkJCQk1NzU5OUUyMDFGMDcxOTE3MDBB
M0ZCOEMgLyogSW5kZXhlZERCU3RydWN0dXJlZENsb25lQmFja3dhcmRDb21wYXRpYmlsaXR5Lm1t
ICovLAogCQkJCTUxOThBMjNGMUVBN0U1OTUwMDg5MTBCNyAvKiBJbml0aWFsV2FybWVkUHJvY2Vz
c1VzZWQubW0gKi8sCiAJCQkJMkRCMDIzMkUxRTRFODcxODAwNzA3MTIzIC8qIEludGVyYWN0aW9u
RGVhZGxvY2tBZnRlckNyYXNoLm1tICovLAorCQkJCTVDNEE4NDhGMUY3QzdCRkQwMEFDRkM1NCAv
KiBKYXZhU2NyaXB0RHVyaW5nTmF2aWdhdGlvbi5tbSAqLywKIAkJCQlDMjVDQ0EwNTFFNTEzODBC
MDAyNkNCOEEgLyogTGluZUJyZWFraW5nLm1tICovLAogCQkJCTM3RDM2RUQ2MUFGNDJFQ0QwMEJB
RjVEOSAvKiBMb2FkQWx0ZXJuYXRlSFRNTFN0cmluZy5tbSAqLywKIAkJCQlBMTI1NDc4RDFEQjE4
Qjk0MDAzNTg1NjQgLyogTG9hZERhdGFXaXRoTmlsTUlNRVR5cGUubW0gKi8sCkBAIC0zMjgyLDYg
KzMyODUsNyBAQAogCQkJCTdBOTA5QTgyMUQ4Nzc0ODAwMDdFMTBGOCAvKiBJbnRSZWN0LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTdBOTA5QTgzMUQ4Nzc0ODAwMDdFMTBGOCAvKiBJbnRTaXplLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTVDMEJGODkzMURENTk5QkQwMEIwMDMyOCAvKiBJc05hdmln
YXRpb25BY3Rpb25UcnVzdGVkLm1tIGluIFNvdXJjZXMgKi8sCisJCQkJNUM0QTg0OTAxRjdDN0Mw
QjAwQUNGQzU0IC8qIEphdmFTY3JpcHREdXJpbmdOYXZpZ2F0aW9uLm1tIGluIFNvdXJjZXMgKi8s
CiAJCQkJN0NDRTdFQUQxQTQxMUEzNDAwNDQ3QzRDIC8qIEphdmFTY3JpcHRUZXN0LmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCTdDQ0U3RUE1MUE0MTFBMDgwMDQ0N0M0QyAvKiBKYXZhU2NyaXB0VGVz
dE1hYy5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUM0MUE0MTFBN0UwMDQ0N0M0QyAvKiBK
U1dyYXBwZXJGb3JOb2RlSW5XZWJGcmFtZS5tbSBpbiBTb3VyY2VzICovLApJbmRleDogVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9KYXZhU2NyaXB0RHVyaW5nTmF2aWdhdGlv
bi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0phdmFTY3JpcHREdXJpbmdOYXZpZ2F0aW9uLm1tCShub25leGlzdGVudCkKKysrIFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSmF2YVNjcmlwdER1cmluZ05hdmlnYXRpb24u
bW0JKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSw5OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JT
IGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05U
UklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5U
QUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRF
IEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVT
SU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkg
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwg
T1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJ
TiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRl
ICJjb25maWcuaCIKKworI2ltcG9ydCAiUGxhdGZvcm1VdGlsaXRpZXMuaCIKKyNpbXBvcnQgIlRl
c3QuaCIKKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXcuaD4KKyNpbXBvcnQgPHd0Zi9SZXRhaW5Q
dHIuaD4KKworI2lmIFdLX0FQSV9FTkFCTEVECisKK3N0YXRpYyBib29sIG5hdmlnYXRpb25Db21w
bGV0ZTsKK3N0YXRpYyBzaXplX3QgYWxlcnRzOworc3RhdGljIGJvb2wgcmVjZWl2ZWRCb3RoQWxl
cnRzOworc3RhdGljIFJldGFpblB0cjxOU1VSTD4gZmlyc3RVUkw7CitzdGF0aWMgUmV0YWluUHRy
PE5TVVJMPiBzZWNvbmRVUkw7CisKK0BpbnRlcmZhY2UgSlNOYXZpZ2F0aW9uRGVsZWdhdGUgOiBO
U09iamVjdCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGUsIFdLVUlEZWxlZ2F0ZT4KK0BlbmQKKworQGlt
cGxlbWVudGF0aW9uIEpTTmF2aWdhdGlvbkRlbGVnYXRlCisKKy0gKHZvaWQpd2ViVmlldzooV0tX
ZWJWaWV3ICopd2ViVmlldyBkaWRGaW5pc2hOYXZpZ2F0aW9uOihudWxsX3Vuc3BlY2lmaWVkIFdL
TmF2aWdhdGlvbiAqKW5hdmlnYXRpb24KK3sKKyAgICBuYXZpZ2F0aW9uQ29tcGxldGUgPSB0cnVl
OworfQorCistICh2b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbjooV0tOYXZpZ2F0aW9uQWN0aW9uICopbmF2aWdhdGlvbkFjdGlv
biBkZWNpc2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvbkFjdGlvblBvbGljeSkpZGVj
aXNpb25IYW5kbGVyCit7CisgICAgaWYgKFtuYXZpZ2F0aW9uQWN0aW9uLnJlcXVlc3QuVVJMLmFi
c29sdXRlU3RyaW5nIGlzRXF1YWxUb1N0cmluZzpbc2Vjb25kVVJMIGFic29sdXRlU3RyaW5nXV0p
IHsKKyAgICAgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAiYWxlcnQoZG9jdW1lbnQu
bG9jYXRpb24pOyIgY29tcGxldGlvbkhhbmRsZXI6XihpZCwgTlNFcnJvciAqKSB7CisgICAgICAg
ICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cpOworICAg
ICAgICB9XTsKKyAgICB9IGVsc2UKKyAgICAgICAgZGVjaXNpb25IYW5kbGVyKFdLTmF2aWdhdGlv
bkFjdGlvblBvbGljeUFsbG93KTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3
ZWJWaWV3IGRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZTooV0tOYXZpZ2F0aW9uUmVz
cG9uc2UgKiluYXZpZ2F0aW9uUmVzcG9uc2UgZGVjaXNpb25IYW5kbGVyOih2b2lkICheKShXS05h
dmlnYXRpb25SZXNwb25zZVBvbGljeSkpZGVjaXNpb25IYW5kbGVyCit7CisgICAgaWYgKFtuYXZp
Z2F0aW9uUmVzcG9uc2UucmVzcG9uc2UuVVJMLmFic29sdXRlU3RyaW5nIGlzRXF1YWxUb1N0cmlu
Zzpbc2Vjb25kVVJMIGFic29sdXRlU3RyaW5nXV0pIHsKKyAgICAgICAgW3dlYlZpZXcgZXZhbHVh
dGVKYXZhU2NyaXB0OkAiYWxlcnQoZG9jdW1lbnQubG9jYXRpb24pOyIgY29tcGxldGlvbkhhbmRs
ZXI6XihpZCwgTlNFcnJvciAqKSB7CisgICAgICAgICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZp
Z2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvdyk7CisgICAgICAgIH1dOworICAgIH0gZWxzZQorICAg
ICAgICBkZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uUmVzcG9uc2VQb2xpY3lBbGxvdyk7Cit9
CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJWaWV3ICopd2ViVmlldyBydW5KYXZhU2NyaXB0QWxl
cnRQYW5lbFdpdGhNZXNzYWdlOihOU1N0cmluZyAqKW1lc3NhZ2UgaW5pdGlhdGVkQnlGcmFtZToo
V0tGcmFtZUluZm8gKilmcmFtZSBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCAoXikodm9pZCkpY29t
cGxldGlvbkhhbmRsZXIKK3sKKyAgICBFWFBFQ1RfU1RSRVEobWVzc2FnZS5VVEY4U3RyaW5nLCBb
W2ZpcnN0VVJMIGFic29sdXRlU3RyaW5nXSBVVEY4U3RyaW5nXSk7CisgICAgaWYgKCsrYWxlcnRz
ID09IDIpCisgICAgICAgIHJlY2VpdmVkQm90aEFsZXJ0cyA9IHRydWU7CisgICAgY29tcGxldGlv
bkhhbmRsZXIoKTsKK30KKworQGVuZAorCitURVNUKFdlYktpdCwgSmF2YVNjcmlwdER1cmluZ05h
dmlnYXRpb24pCit7CisgICAgZmlyc3RVUkwgPSBbW05TQnVuZGxlIG1haW5CdW5kbGVdIFVSTEZv
clJlc291cmNlOkAic2ltcGxlIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAi
VGVzdFdlYktpdEFQSS5yZXNvdXJjZXMiXTsKKyAgICBzZWNvbmRVUkwgPSBbW05TQnVuZGxlIG1h
aW5CdW5kbGVdIFVSTEZvclJlc291cmNlOkAic2ltcGxlMiIgd2l0aEV4dGVuc2lvbjpAImh0bWwi
IHN1YmRpcmVjdG9yeTpAIlRlc3RXZWJLaXRBUEkucmVzb3VyY2VzIl07CisgICAgCisgICAgYXV0
byB3ZWJWaWV3ID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdF0pOworICAgIGF1dG8g
ZGVsZWdhdGUgPSBhZG9wdE5TKFtbSlNOYXZpZ2F0aW9uRGVsZWdhdGUgYWxsb2NdIGluaXRdKTsK
KyAgICBbd2ViVmlldyBzZXROYXZpZ2F0aW9uRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworICAg
IFt3ZWJWaWV3IHNldFVJRGVsZWdhdGU6ZGVsZWdhdGUuZ2V0KCldOworCisgICAgW3dlYlZpZXcg
bG9hZFJlcXVlc3Q6W05TVVJMUmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpmaXJzdFVSTC5nZXQoKV1d
OworICAgIFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmbmF2aWdhdGlvbkNvbXBsZXRlKTsKKwor
ICAgIFt3ZWJWaWV3IGxvYWRSZXF1ZXN0OltOU1VSTFJlcXVlc3QgcmVxdWVzdFdpdGhVUkw6c2Vj
b25kVVJMLmdldCgpXV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZyZWNlaXZlZEJv
dGhBbGVydHMpOworfQorCisjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322384</attachid>
            <date>2017-10-02 10:07:46 -0700</date>
            <delta_ts>2017-10-02 10:09:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177590-20171002100746.patch</filename>
            <type>text/plain</type>
            <size>46106</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjI3MTIpCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBACisyMDE3LTEwLTAyICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lPTihy
MjE0MjAxKTogV2ViUHJvY2VzcyBoYW5ncyBkdXJpbmcgcG9saWN5IGRlY2lzaW9ucworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc3NTkwCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8zMzM2MjkyOT4KKworICAgICAgICBSZXZpZXdlZCBieSBBbmR5IEVz
dGVzLgorCisgICAgICAgIFRoaXMgaXMgbGlrZSByMjIyNDMxIGJ1dCBmb3IgdHJ1bmsgaW5zdGVh
ZCBvZiBhIGJyYW5jaC4KKyAgICAgICAgSXQgaW5jbHVkZXMgdGhlIHNhbWUgcmVncmVzc2lvbiBB
UEkgdGVzdCBzbyBJIGRvbid0IG1ha2UgdGhlIHNhbWUgbWlzdGFrZSBhZ2Fpbi4KKworICAgICAg
ICAqIFVJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlU2V0UGFnZU5h
dmlnYXRpb25DbGllbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpb24pOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRlY2lkZVBvbGljeUZvclJl
c3BvbnNlU3luYyk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJv
Y2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3Bv
bnNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmFwcGx5VG9Eb2N1bWVudExvYWRlcik6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24pOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRG9jdW1lbnRMb2FkZXIu
Y3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJEb2N1bWVudExvYWRlcjo6c2V0TmF2aWdhdGlvbklE
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJGcmFtZTo6c2V0VXBQb2xpY3lMaXN0ZW5lcik6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lOjppbnZhbGlkYXRlUG9saWN5TGlzdGVuZXIpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGcmFtZTo6ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViRnJhbWUuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFn
ZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lv
bik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaDoKKyAgICAgICAgKiBX
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbjoKKwogMjAxNy0xMC0wMiAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFJlbW92
ZSB1bm5lY2Vzc2FyeSBjb3B5IG9mIFNlc3Npb25JRCBpbiBXZWJQYWdlUHJveHkKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMjIyNzEyKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMjI3OSw3ICsyMjc5LDggQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5
RGVjaXNpbwogICAgIERvd25sb2FkSUQgZG93bmxvYWRJRCA9IHsgfTsKICAgICBpZiAoYWN0aW9u
ID09IFBvbGljeUFjdGlvbjo6RG93bmxvYWQpIHsKICAgICAgICAgLy8gQ3JlYXRlIGEgZG93bmxv
YWQgcHJveHkuCi0gICAgICAgIGF1dG8qIGRvd25sb2FkID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9v
bCgpLmNyZWF0ZURvd25sb2FkUHJveHkobV9kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVJlcXVlc3Qs
IHRoaXMpOworICAgICAgICBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGRvd25sb2FkUmVxdWVzdCA9
IG1fZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VSZXF1ZXN0ID8gKm1fZGVjaWRlUG9saWN5Rm9yUmVz
cG9uc2VSZXF1ZXN0IDogUmVzb3VyY2VSZXF1ZXN0KCk7CisgICAgICAgIERvd25sb2FkUHJveHkq
IGRvd25sb2FkID0gbV9wcm9jZXNzLT5wcm9jZXNzUG9vbCgpLmNyZWF0ZURvd25sb2FkUHJveHko
ZG93bmxvYWRSZXF1ZXN0LCB0aGlzKTsKICAgICAgICAgaWYgKG5hdmlnYXRpb24pIHsKICAgICAg
ICAgICAgIGRvd25sb2FkLT5zZXRXYXNVc2VySW5pdGlhdGVkKG5hdmlnYXRpb24tPndhc1VzZXJJ
bml0aWF0ZWQoKSk7CiAgICAgICAgICAgICBkb3dubG9hZC0+c2V0UmVkaXJlY3RDaGFpbihuYXZp
Z2F0aW9uLT50YWtlUmVkaXJlY3RDaGFpbigpKTsKQEAgLTIyODcsMjggKzIyODgsMjggQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OnJlY2VpdmVkUG9saWN5RGVjaXNpbwogCiAgICAgICAgIGRvd25sb2Fk
SUQgPSBkb3dubG9hZC0+ZG93bmxvYWRJRCgpOwogICAgICAgICBoYW5kbGVEb3dubG9hZFJlcXVl
c3QoZG93bmxvYWQpOwotICAgICAgICBtX2RlY2lkZVBvbGljeUZvclJlc3BvbnNlUmVxdWVzdCA9
IHsgfTsKICAgICB9CiAKICAgICAvLyBJZiB3ZSByZWNlaXZlZCBhIHBvbGljeSBkZWNpc2lvbiB3
aGlsZSBpbiBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZSB0aGUgZGVjaXNpb24gd2lsbAogICAgIC8v
IGJlIHNlbnQgYmFjayB0byB0aGUgd2ViIHByb2Nlc3MgYnkgZGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UuCi0gICAgaWYgKG1fcmVzcG9uc2VQb2xpY3lSZXBseSkgewotICAgICAgICBtX3Jlc3BvbnNl
UG9saWN5UmVwbHktPnNlbmQoYWN0aW9uLCBkb3dubG9hZElEKTsKLSAgICAgICAgQVNTRVJUKCFt
X25ld05hdmlnYXRpb25JRCk7Ci0gICAgICAgIG1fcmVzcG9uc2VQb2xpY3lSZXBseSA9IG51bGxw
dHI7CisgICAgaWYgKG1faW5EZWNpZGVQb2xpY3lGb3JSZXNwb25zZVN5bmMpIHsKKyAgICAgICAg
bV9zeW5jTWltZVR5cGVQb2xpY3lBY3Rpb25Jc1ZhbGlkID0gdHJ1ZTsKKyAgICAgICAgbV9zeW5j
TWltZVR5cGVQb2xpY3lBY3Rpb24gPSBhY3Rpb247CisgICAgICAgIG1fc3luY01pbWVUeXBlUG9s
aWN5RG93bmxvYWRJRCA9IGRvd25sb2FkSUQ7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICAvLyBJZiB3ZSByZWNlaXZlZCBhIHBvbGljeSBkZWNpc2lvbiB3aGlsZSBpbiBkZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uIHRoZSBkZWNpc2lvbiB3aWxsIAogICAgIC8vIGJlIHNlbnQg
YmFjayB0byB0aGUgd2ViIHByb2Nlc3MgYnkgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlv
bi4gCi0gICAgaWYgKG1fbmF2aWdhdGlvbkFjdGlvblBvbGljeVJlcGx5KSB7Ci0gICAgICAgIG1f
bmF2aWdhdGlvbkFjdGlvblBvbGljeVJlcGx5LT5zZW5kKG1fbmV3TmF2aWdhdGlvbklELCBhY3Rp
b24sIGRvd25sb2FkSUQsIHdlYnNpdGVQb2xpY2llcyk7Ci0gICAgICAgIG1fbmV3TmF2aWdhdGlv
bklEID0gMDsKLSAgICAgICAgbV9uYXZpZ2F0aW9uQWN0aW9uUG9saWN5UmVwbHkgPSBudWxscHRy
OworICAgIGlmIChtX2luRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbikgeworICAgICAg
ICBtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWN0aW9uSXNWYWxpZCA9IHRydWU7CisgICAg
ICAgIG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBY3Rpb24gPSBhY3Rpb247CisgICAgICAg
IG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lEb3dubG9hZElEID0gZG93bmxvYWRJRDsKKyAg
ICAgICAgbV9zeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeVdlYnNpdGVQb2xpY2llcyA9IHdlYnNp
dGVQb2xpY2llczsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKLSAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZS5m
cmFtZUlEKCksIGxpc3RlbmVySUQsIGFjdGlvbiwgbmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5h
dmlnYXRpb25JRCgpIDogMCwgZG93bmxvYWRJRCksIG1fcGFnZUlEKTsKKyAgICBtX3Byb2Nlc3Mt
PnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihmcmFtZS5m
cmFtZUlEKCksIGxpc3RlbmVySUQsIGFjdGlvbiwgbmF2aWdhdGlvbiA/IG5hdmlnYXRpb24tPm5h
dmlnYXRpb25JRCgpIDogMCwgZG93bmxvYWRJRCwgd2Vic2l0ZVBvbGljaWVzKSwgbV9wYWdlSUQp
OwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0VXNlckFnZW50KGNvbnN0IFN0cmluZyYgdXNl
ckFnZW50KQpAQCAtMzY2MCw3ICszNjYxLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmZyYW1lRGlk
QmVjb21lRnJhbWVTZQogICAgICAgICBtX2ZyYW1lU2V0TGFyZ2VzdEZyYW1lID0gdmFsdWUgPyBt
X21haW5GcmFtZSA6IDA7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JO
YXZpZ2F0aW9uQWN0aW9uKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFNlY3VyaXR5T3JpZ2luRGF0
YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBOYXZpZ2F0aW9u
QWN0aW9uRGF0YSYmIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBjb25zdCBGcmFtZUluZm9EYXRhJiBv
cmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIHVpbnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25z
dCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmIG9yaWdpbmFsUmVxdWVzdCwgUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJE
YXRhLCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
bkFjdGlvbjo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OmRlY2lk
ZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IE5hdmlnYXRpb25BY3Rpb25EYXRhJiYgbmF2aWdhdGlvbkFjdGlvbkRhdGEsIGNvbnN0IEZyYW1l
SW5mb0RhdGEmIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQ
YWdlSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYgb3JpZ2luYWxSZXF1ZXN0LCBS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2Vy
RGF0YSYgdXNlckRhdGEsIGJvb2wmIHJlY2VpdmVkUG9saWN5QWN0aW9uLCB1aW50NjRfdCYgbmV3
TmF2aWdhdGlvbklELCBXZWJDb3JlOjpQb2xpY3lBY3Rpb24mIHBvbGljeUFjdGlvbiwgRG93bmxv
YWRJRCYgZG93bmxvYWRJRCwgV2Vic2l0ZVBvbGljaWVzJiB3ZWJzaXRlUG9saWNpZXMpCiB7CiAg
ICAgUGFnZUNsaWVudFByb3RlY3RvciBwcm90ZWN0b3IobV9wYWdlQ2xpZW50KTsKIApAQCAtMzY3
NSwxMSArMzY3NiwxMCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdh
CiAgICAgTUVTU0FHRV9DSEVDS19VUkwocmVxdWVzdC51cmwoKSk7CiAgICAgTUVTU0FHRV9DSEVD
S19VUkwob3JpZ2luYWxSZXF1ZXN0LnVybCgpKTsKICAgICAKLSAgICBtX25ld05hdmlnYXRpb25J
RCA9IDA7CiAgICAgUmVmPFdlYkZyYW1lUG9saWN5TGlzdGVuZXJQcm94eT4gbGlzdGVuZXIgPSBm
cmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lclByb3h5KGxpc3RlbmVySUQpOwogICAgIGlmICghbmF2
aWdhdGlvbklEKSB7CiAgICAgICAgIGF1dG8gbmF2aWdhdGlvbiA9IG1fbmF2aWdhdGlvblN0YXRl
LT5jcmVhdGVMb2FkUmVxdWVzdE5hdmlnYXRpb24oUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpKTsK
LSAgICAgICAgbV9uZXdOYXZpZ2F0aW9uSUQgPSBuYXZpZ2F0aW9uLT5uYXZpZ2F0aW9uSUQoKTsK
KyAgICAgICAgbmV3TmF2aWdhdGlvbklEID0gbmF2aWdhdGlvbi0+bmF2aWdhdGlvbklEKCk7CiAg
ICAgICAgIG5hdmlnYXRpb24tPnNldFdhc1VzZXJJbml0aWF0ZWQoISFuYXZpZ2F0aW9uQWN0aW9u
RGF0YS51c2VyR2VzdHVyZVRva2VuSWRlbnRpZmllcik7CiAgICAgICAgIGxpc3RlbmVyLT5zZXRO
YXZpZ2F0aW9uKFdURk1vdmUobmF2aWdhdGlvbikpOwogICAgIH0gZWxzZSB7CkBAIC0zNjkwLDE2
ICszNjkwLDE5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xpY3lGb3JOYXZpZ2EKIAog
I2lmIEVOQUJMRShDT05URU5UX0ZJTFRFUklORykKICAgICBpZiAoZnJhbWUtPmRpZEhhbmRsZUNv
bnRlbnRGaWx0ZXJVbmJsb2NrTmF2aWdhdGlvbihyZXF1ZXN0KSkgewotICAgICAgICByZXBseS0+
c2VuZChtX25ld05hdmlnYXRpb25JRCwgUG9saWN5QWN0aW9uOjpJZ25vcmUsIHsgfSwgeyB9KTsK
LSAgICAgICAgbV9uZXdOYXZpZ2F0aW9uSUQgPSAwOworICAgICAgICByZWNlaXZlZFBvbGljeUFj
dGlvbiA9IHRydWU7CisgICAgICAgIHBvbGljeUFjdGlvbiA9IFBvbGljeUFjdGlvbjo6SWdub3Jl
OwogICAgICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCiAKKyAgICBBU1NFUlQoIW1faW5EZWNp
ZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKTsKKyAgICAKKyAgICBtX2luRGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbiA9IHRydWU7CisgICAgbV9zeW5jTmF2aWdhdGlvbkFjdGlvblBv
bGljeUFjdGlvbklzVmFsaWQgPSBmYWxzZTsKICNpZiBFTkFCTEUoRE9XTkxPQURfQVRUUklCVVRF
KQogICAgIG1fc3luY05hdmlnYXRpb25BY3Rpb25IYXNEb3dubG9hZEF0dHJpYnV0ZSA9ICFuYXZp
Z2F0aW9uQWN0aW9uRGF0YS5kb3dubG9hZEF0dHJpYnV0ZS5pc051bGwoKTsKICNlbmRpZgotICAg
IG1fbmF2aWdhdGlvbkFjdGlvblBvbGljeVJlcGx5ID0gV1RGTW92ZShyZXBseSk7CiAKICAgICBX
ZWJGcmFtZVByb3h5KiBvcmlnaW5hdGluZ0ZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShvcmln
aW5hdGluZ0ZyYW1lSW5mb0RhdGEuZnJhbWVJRCk7CiAKQEAgLTM3MjEsNiArMzcyNCwxNSBAQCB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhCiAgICAgICAgIG1fcG9saWN5
Q2xpZW50LT5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKCp0aGlzLCBmcmFtZSwgV1RG
TW92ZShuYXZpZ2F0aW9uQWN0aW9uRGF0YSksIG9yaWdpbmF0aW5nRnJhbWUsIG9yaWdpbmFsUmVx
dWVzdCwgV1RGTW92ZShyZXF1ZXN0KSwgV1RGTW92ZShsaXN0ZW5lciksIG1fcHJvY2Vzcy0+dHJh
bnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogCiAgICAg
bV9zaG91bGRTdXBwcmVzc0FwcExpbmtzSW5OZXh0TmF2aWdhdGlvblBvbGljeURlY2lzaW9uID0g
ZmFsc2U7CisgICAgbV9pbkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gPSBmYWxzZTsK
KworICAgIC8vIENoZWNrIGlmIHdlIHJlY2VpdmVkIGEgcG9saWN5IGRlY2lzaW9uIGFscmVhZHku
IElmIHdlIGRpZCwgd2UgY2FuIGp1c3QgcGFzcyBpdCBiYWNrLgorICAgIHJlY2VpdmVkUG9saWN5
QWN0aW9uID0gbV9zeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeUFjdGlvbklzVmFsaWQ7CisgICAg
aWYgKG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBY3Rpb25Jc1ZhbGlkKSB7CisgICAgICAg
IHBvbGljeUFjdGlvbiA9IG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lBY3Rpb247CisgICAg
ICAgIGRvd25sb2FkSUQgPSBtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5RG93bmxvYWRJRDsK
KyAgICAgICAgd2Vic2l0ZVBvbGljaWVzID0gbV9zeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeVdl
YnNpdGVQb2xpY2llczsKKyAgICB9CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xp
Y3lGb3JOZXdXaW5kb3dBY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmln
aW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCBOYXZpZ2F0aW9uQWN0aW9uRGF0YSYmIG5hdmln
YXRpb25BY3Rpb25EYXRhLCBSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBTdHJpbmcm
IGZyYW1lTmFtZSwgdWludDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRh
KQpAQCAtMzc2OCwxNCArMzc4MCwyNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGVjaWRlUG9saWN5
Rm9yUmVzcG9uCiAgICAgICAgIG1fcG9saWN5Q2xpZW50LT5kZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZSgqdGhpcywgKmZyYW1lLCByZXNwb25zZSwgcmVxdWVzdCwgY2FuU2hvd01JTUVUeXBlLCBXVEZN
b3ZlKGxpc3RlbmVyKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJE
YXRhLm9iamVjdCgpKS5nZXQoKSk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpkZWNpZGVQb2xp
Y3lGb3JSZXNwb25zZVN5bmModWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJpdHlPcmlnaW5E
YXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFJl
c291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
IGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25zdCBVc2VyRGF0
YSYgdXNlckRhdGEsIFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JS
ZXNwb25zZVN5bmM6OkRlbGF5ZWRSZXBseT4mJiByZXBseSkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpk
ZWNpZGVQb2xpY3lGb3JSZXNwb25zZVN5bmModWludDY0X3QgZnJhbWVJRCwgY29uc3QgU2VjdXJp
dHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBjb25zdCBSZXNvdXJjZVJlcXVlc3Qm
IHJlcXVlc3QsIGJvb2wgY2FuU2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBjb25z
dCBVc2VyRGF0YSYgdXNlckRhdGEsIGJvb2wmIHJlY2VpdmVkUG9saWN5QWN0aW9uLCBXZWJDb3Jl
OjpQb2xpY3lBY3Rpb24mIHBvbGljeUFjdGlvbiwgRG93bmxvYWRJRCYgZG93bmxvYWRJRCkKIHsK
ICAgICBQYWdlQ2xpZW50UHJvdGVjdG9yIHByb3RlY3RvcihtX3BhZ2VDbGllbnQpOwogCi0gICAg
bV9kZWNpZGVQb2xpY3lGb3JSZXNwb25zZVJlcXVlc3QgPSByZXF1ZXN0OwotICAgIG1fcmVzcG9u
c2VQb2xpY3lSZXBseSA9IFdURk1vdmUocmVwbHkpOworICAgIEFTU0VSVCghbV9pbkRlY2lkZVBv
bGljeUZvclJlc3BvbnNlU3luYyk7CiAKKyAgICBtX2luRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VT
eW5jID0gdHJ1ZTsKKyAgICBtX2RlY2lkZVBvbGljeUZvclJlc3BvbnNlUmVxdWVzdCA9ICZyZXF1
ZXN0OworICAgIG1fc3luY01pbWVUeXBlUG9saWN5QWN0aW9uSXNWYWxpZCA9IGZhbHNlOworICAg
IAogICAgIGRlY2lkZVBvbGljeUZvclJlc3BvbnNlKGZyYW1lSUQsIGZyYW1lU2VjdXJpdHlPcmln
aW4sIG5hdmlnYXRpb25JRCwgcmVzcG9uc2UsIHJlcXVlc3QsIGNhblNob3dNSU1FVHlwZSwgbGlz
dGVuZXJJRCwgdXNlckRhdGEpOworICAgIAorICAgIG1faW5EZWNpZGVQb2xpY3lGb3JSZXNwb25z
ZVN5bmMgPSBmYWxzZTsKKyAgICBtX2RlY2lkZVBvbGljeUZvclJlc3BvbnNlUmVxdWVzdCA9IG51
bGxwdHI7CisgICAgCisgICAgLy8gQ2hlY2sgaWYgd2UgcmVjZWl2ZWQgYSBwb2xpY3kgZGVjaXNp
b24gYWxyZWFkeS4gSWYgd2UgZGlkLCB3ZSBjYW4ganVzdCBwYXNzIGl0IGJhY2suCisgICAgcmVj
ZWl2ZWRQb2xpY3lBY3Rpb24gPSBtX3N5bmNNaW1lVHlwZVBvbGljeUFjdGlvbklzVmFsaWQ7Cisg
ICAgaWYgKG1fc3luY01pbWVUeXBlUG9saWN5QWN0aW9uSXNWYWxpZCkgeworICAgICAgICBwb2xp
Y3lBY3Rpb24gPSBtX3N5bmNNaW1lVHlwZVBvbGljeUFjdGlvbjsKKyAgICAgICAgZG93bmxvYWRJ
RCA9IG1fc3luY01pbWVUeXBlUG9saWN5RG93bmxvYWRJRDsKKyAgICB9CiB9CiAKIHZvaWQgV2Vi
UGFnZVByb3h5Ojp1bmFibGVUb0ltcGxlbWVudFBvbGljeSh1aW50NjRfdCBmcmFtZUlELCBjb25z
dCBSZXNvdXJjZUVycm9yJiBlcnJvciwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQpJbmRleDog
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDIyMjcxMikKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5nIGNvcHkpCkBA
IC0xMjgyLDEwICsxMjgyLDEwIEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZERlc3Ryb3lOYXZp
Z2F0aW9uKHVpbnQ2NF90IG5hdmlnYXRpb25JRCk7CiAKLSAgICB2b2lkIGRlY2lkZVBvbGljeUZv
ck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJp
dHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQs
IE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIGNvbnN0IEZyYW1lSW5mb0RhdGEmLCB1aW50NjRfdCBv
cmlnaW5hdGluZ1BhZ2VJRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiBvcmlnaW5h
bFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYmLCB1aW50NjRfdCBsaXN0ZW5lcklE
LCBjb25zdCBVc2VyRGF0YSYsIFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uOjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQgZGVjaWRl
UG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3Jl
OjpTZWN1cml0eU9yaWdpbkRhdGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgTmF2aWdhdGlvbkFjdGlvbkRhdGEmJiwgY29uc3QgRnJhbWVJbmZvRGF0YSYsIHVp
bnQ2NF90IG9yaWdpbmF0aW5nUGFnZUlELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Qm
IG9yaWdpbmFsUmVxdWVzdCwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiYsIHVpbnQ2NF90IGxp
c3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiwgYm9vbCYgcmVjZWl2ZWRQb2xpY3lBY3Rpb24sIHVp
bnQ2NF90JiBuZXdOYXZpZ2F0aW9uSUQsIFdlYkNvcmU6OlBvbGljeUFjdGlvbiYsIERvd25sb2Fk
SUQmLCBXZWJzaXRlUG9saWNpZXMmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvck5ld1dpbmRv
d0FjdGlvbih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRh
dGEmIGZyYW1lU2VjdXJpdHlPcmlnaW4sIE5hdmlnYXRpb25BY3Rpb25EYXRhJiYsIFdlYkNvcmU6
OlJlc291cmNlUmVxdWVzdCYmLCBjb25zdCBTdHJpbmcmIGZyYW1lTmFtZSwgdWludDY0X3QgbGlz
dGVuZXJJRCwgY29uc3QgVXNlckRhdGEmKTsKICAgICB2b2lkIGRlY2lkZVBvbGljeUZvclJlc3Bv
bnNlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYg
ZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3Jl
OjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9v
bCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJik7
Ci0gICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JSZXNwb25zZVN5bmModWludDY0X3QgZnJhbWVJRCwg
Y29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhJiBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1
aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVzcG9uc2UmLCBj
b25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBib29sIGNhblNob3dNSU1FVHlwZSwgdWlu
dDY0X3QgbGlzdGVuZXJJRCwgY29uc3QgVXNlckRhdGEmLCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQ
cm94eTo6RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTeW5jOjpEZWxheWVkUmVwbHk+JiYpOworICAg
IHZvaWQgZGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTeW5jKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYgZnJhbWVTZWN1cml0eU9yaWdpbiwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZVJlc3BvbnNlJiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0JiwgYm9vbCBjYW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90
IGxpc3RlbmVySUQsIGNvbnN0IFVzZXJEYXRhJiwgYm9vbCYgcmVjZWl2ZWRQb2xpY3lBY3Rpb24s
IFdlYkNvcmU6OlBvbGljeUFjdGlvbiYsIERvd25sb2FkSUQmKTsKICAgICB2b2lkIHVuYWJsZVRv
SW1wbGVtZW50UG9saWN5KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNl
RXJyb3ImLCBjb25zdCBVc2VyRGF0YSYpOwogCiAgICAgdm9pZCB3aWxsU3VibWl0Rm9ybSh1aW50
NjRfdCBmcmFtZUlELCB1aW50NjRfdCBzb3VyY2VGcmFtZUlELCBjb25zdCBWZWN0b3I8c3RkOjpw
YWlyPFN0cmluZywgU3RyaW5nPj4mIHRleHRGaWVsZFZhbHVlcywgdWludDY0X3QgbGlzdGVuZXJJ
RCwgY29uc3QgVXNlckRhdGEmKTsKQEAgLTE3OTksMTAgKzE3OTksMTYgQEAgcHJpdmF0ZToKICAg
ICBib29sIG1faXNJblByaW50aW5nTW9kZSB7IGZhbHNlIH07CiAgICAgYm9vbCBtX2lzUGVyZm9y
bWluZ0RPTVByaW50T3BlcmF0aW9uIHsgZmFsc2UgfTsKIAotICAgIFJlZlB0cjxNZXNzYWdlczo6
V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOjpEZWxheWVkUmVw
bHk+IG1fbmF2aWdhdGlvbkFjdGlvblBvbGljeVJlcGx5OwotICAgIHVpbnQ2NF90IG1fbmV3TmF2
aWdhdGlvbklEIHsgMCB9OwotICAgIFJlZlB0cjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNp
ZGVQb2xpY3lGb3JSZXNwb25zZVN5bmM6OkRlbGF5ZWRSZXBseT4gbV9yZXNwb25zZVBvbGljeVJl
cGx5OwotICAgIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBtX2RlY2lkZVBvbGljeUZvclJlc3Bv
bnNlUmVxdWVzdDsKKyAgICBib29sIG1faW5EZWNpZGVQb2xpY3lGb3JSZXNwb25zZVN5bmMgeyBm
YWxzZSB9OworICAgIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCogbV9kZWNpZGVQb2xp
Y3lGb3JSZXNwb25zZVJlcXVlc3QgeyBudWxscHRyIH07CisgICAgYm9vbCBtX3N5bmNNaW1lVHlw
ZVBvbGljeUFjdGlvbklzVmFsaWQgeyBmYWxzZSB9OworICAgIFdlYkNvcmU6OlBvbGljeUFjdGlv
biBtX3N5bmNNaW1lVHlwZVBvbGljeUFjdGlvbiB7IFdlYkNvcmU6OlBvbGljeUFjdGlvbjo6VXNl
IH07CisgICAgRG93bmxvYWRJRCBtX3N5bmNNaW1lVHlwZVBvbGljeURvd25sb2FkSUQgeyAwIH07
CisgICAgYm9vbCBtX2luRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiB7IGZhbHNlIH07
CisgICAgYm9vbCBtX3N5bmNOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWN0aW9uSXNWYWxpZCB7IGZh
bHNlIH07CisgICAgV2ViQ29yZTo6UG9saWN5QWN0aW9uIG1fc3luY05hdmlnYXRpb25BY3Rpb25Q
b2xpY3lBY3Rpb24geyBXZWJDb3JlOjpQb2xpY3lBY3Rpb246OlVzZSB9OworICAgIERvd25sb2Fk
SUQgbV9zeW5jTmF2aWdhdGlvbkFjdGlvblBvbGljeURvd25sb2FkSUQgeyAwIH07CisgICAgV2Vi
c2l0ZVBvbGljaWVzIG1fc3luY05hdmlnYXRpb25BY3Rpb25Qb2xpY3lXZWJzaXRlUG9saWNpZXM7
CiAKICAgICBib29sIG1fc2hvdWxkU3VwcHJlc3NBcHBMaW5rc0luTmV4dE5hdmlnYXRpb25Qb2xp
Y3lEZWNpc2lvbiB7IGZhbHNlIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4JKHJldmlzaW9uIDIyMjcwOCkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5
KQpAQCAtOTgsOCArOTgsOCBAQCBtZXNzYWdlcyAtPiBXZWJQYWdlUHJveHkgewogI2VuZGlmCiAK
ICAgICAjIFBvbGljeSBtZXNzYWdlcwotICAgIERlY2lkZVBvbGljeUZvclJlc3BvbnNlU3luYyh1
aW50NjRfdCBmcmFtZUlELCBzdHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1l
U2VjdXJpdHlPcmlnaW4sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViQ29yZTo6UmVzb3VyY2VS
ZXNwb25zZSByZXNwb25zZSwgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QsIGJvb2wg
Y2FuU2hvd01JTUVUeXBlLCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRhIHVz
ZXJEYXRhKSAtPiAoZW51bSBXZWJDb3JlOjpQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBXZWJL
aXQ6OkRvd25sb2FkSUQgZG93bmxvYWRJRCkgRGVsYXllZAotICAgIERlY2lkZVBvbGljeUZvck5h
dmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJhbWVJRCwgc3RydWN0IFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIHN0
cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBz
dHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5nRnJhbWVJbmZvRGF0YSwgdWlu
dDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCBvcmlnaW5h
bFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1ZXN0LCB1aW50NjRfdCBsaXN0
ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKSAtPiAodWludDY0X3QgbmV3TmF2aWdh
dGlvbklELCBlbnVtIFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIFdlYktpdDo6
RG93bmxvYWRJRCBkb3dubG9hZElELCBzdHJ1Y3QgV2ViS2l0OjpXZWJzaXRlUG9saWNpZXMgd2Vi
c2l0ZVBvbGljaWVzKSBEZWxheWVkCisgICAgRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTeW5jKHVp
bnQ2NF90IGZyYW1lSUQsIHN0cnVjdCBXZWJDb3JlOjpTZWN1cml0eU9yaWdpbkRhdGEgZnJhbWVT
ZWN1cml0eU9yaWdpbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJDb3JlOjpSZXNvdXJjZVJl
c3BvbnNlIHJlc3BvbnNlLCBXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgYm9vbCBj
YW5TaG93TUlNRVR5cGUsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYktpdDo6VXNlckRhdGEgdXNl
ckRhdGEpIC0+IChib29sIHJlY2VpdmVkUG9saWN5QWN0aW9uLCBlbnVtIFdlYkNvcmU6OlBvbGlj
eUFjdGlvbiBwb2xpY3lBY3Rpb24sIFdlYktpdDo6RG93bmxvYWRJRCBkb3dubG9hZElEKQorICAg
IERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24odWludDY0X3QgZnJhbWVJRCwgc3RydWN0
IFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luRGF0YSBmcmFtZVNlY3VyaXR5T3JpZ2luLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIHN0cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmln
YXRpb25BY3Rpb25EYXRhLCBzdHJ1Y3QgV2ViS2l0OjpGcmFtZUluZm9EYXRhIG9yaWdpbmF0aW5n
RnJhbWVJbmZvRGF0YSwgdWludDY0X3Qgb3JpZ2luYXRpbmdQYWdlSUQsIFdlYkNvcmU6OlJlc291
cmNlUmVxdWVzdCBvcmlnaW5hbFJlcXVlc3QsIFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCByZXF1
ZXN0LCB1aW50NjRfdCBsaXN0ZW5lcklELCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKSAtPiAo
Ym9vbCByZWNlaXZlZFBvbGljeUFjdGlvbiwgdWludDY0X3QgbmV3TmF2aWdhdGlvbklELCBlbnVt
IFdlYkNvcmU6OlBvbGljeUFjdGlvbiBwb2xpY3lBY3Rpb24sIFdlYktpdDo6RG93bmxvYWRJRCBk
b3dubG9hZElELCBzdHJ1Y3QgV2ViS2l0OjpXZWJzaXRlUG9saWNpZXMgd2Vic2l0ZVBvbGljaWVz
KQogICAgIERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbih1aW50NjRfdCBmcmFtZUlELCBz
dHJ1Y3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5EYXRhIGZyYW1lU2VjdXJpdHlPcmlnaW4sIHN0
cnVjdCBXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb25EYXRhIG5hdmlnYXRpb25BY3Rpb25EYXRhLCBX
ZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCwgU3RyaW5nIGZyYW1lTmFtZSwgdWludDY0
X3QgbGlzdGVuZXJJRCwgV2ViS2l0OjpVc2VyRGF0YSB1c2VyRGF0YSkKICAgICBVbmFibGVUb0lt
cGxlbWVudFBvbGljeSh1aW50NjRfdCBmcmFtZUlELCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yIGVy
cm9yLCBXZWJLaXQ6OlVzZXJEYXRhIHVzZXJEYXRhKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHJldmlzaW9uIDIyMjcwOCkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIxNDIsMTkg
KzIxNDIsMTUgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlTmF2aWdhdGlvbkNsaWVudChXS1BhZwogICAg
IHByaXZhdGU6CiAgICAgICAgIHZvaWQgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbihX
ZWJQYWdlUHJveHkmIHBhZ2UsIFJlZjxBUEk6Ok5hdmlnYXRpb25BY3Rpb24+JiYgbmF2aWdhdGlv
bkFjdGlvbiwgUmVmPFdlYktpdDo6V2ViRnJhbWVQb2xpY3lMaXN0ZW5lclByb3h5PiYmIGxpc3Rl
bmVyLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIGZpbmFsCiAgICAgICAgIHsKLSAgICAgICAgICAg
IGlmICghbV9jbGllbnQuZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbikgewotICAgICAg
ICAgICAgICAgIGxpc3RlbmVyLT51c2UoeyB9KTsKKyAgICAgICAgICAgIGlmICghbV9jbGllbnQu
ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbikKICAgICAgICAgICAgICAgICByZXR1cm47
Ci0gICAgICAgICAgICB9CiAgICAgICAgICAgICBtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uKHRvQVBJKCZwYWdlKSwgdG9BUEkobmF2aWdhdGlvbkFjdGlvbi5wdHIoKSks
IHRvQVBJKGxpc3RlbmVyLnB0cigpKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pOwogICAgICAgICB9CiAKICAgICAgICAgdm9pZCBkZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uUmVzcG9uc2UoV2ViUGFnZVByb3h5JiBwYWdlLCBBUEk6Ok5hdmlnYXRpb25SZXNwb25z
ZSYgbmF2aWdhdGlvblJlc3BvbnNlLCBSZWY8V2ViS2l0OjpXZWJGcmFtZVBvbGljeUxpc3RlbmVy
UHJveHk+JiYgbGlzdGVuZXIsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKICAgICAg
ICAgewotICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9u
UmVzcG9uc2UpIHsKLSAgICAgICAgICAgICAgICBsaXN0ZW5lci0+dXNlKHsgfSk7CisgICAgICAg
ICAgICBpZiAoIW1fY2xpZW50LmRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25SZXNwb25zZSkKICAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9CiAgICAgICAgICAgICBtX2NsaWVu
dC5kZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uUmVzcG9uc2UodG9BUEkoJnBhZ2UpLCB0b0FQSSgm
bmF2aWdhdGlvblJlc3BvbnNlKSwgdG9BUEkobGlzdGVuZXIucHRyKCkpLCB0b0FQSSh1c2VyRGF0
YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KIApJbmRleDogU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAyMjI3MDgpCisrKyBTb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC02OTksMjAgKzY5OSwyMiBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERlY2lkCiAKICAgICBib29sIGNhblNob3dNSU1FVHlwZSA9IHdlYlBhZ2Ut
PmNhblNob3dNSU1FVHlwZShyZXNwb25zZS5taW1lVHlwZSgpKTsKIAotICAgIHVpbnQ2NF90IGxp
c3RlbmVySUQgPSBtX2ZyYW1lLT5zZXRVcFBvbGljeUxpc3RlbmVyKFdURk1vdmUoZnVuY3Rpb24p
KTsKKyAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5l
cihXVEZNb3ZlKGZ1bmN0aW9uKSwgV2ViRnJhbWU6OkZvck5hdmlnYXRpb25BY3Rpb246Ok5vKTsK
KyAgICBib29sIHJlY2VpdmVkUG9saWN5QWN0aW9uOwogICAgIFBvbGljeUFjdGlvbiBwb2xpY3lB
Y3Rpb247CiAgICAgRG93bmxvYWRJRCBkb3dubG9hZElEOwogCiAgICAgUmVmPFdlYkZyYW1lPiBw
cm90ZWN0KCptX2ZyYW1lKTsKICAgICBXZWJDb3JlOjpGcmFtZSogY29yZUZyYW1lID0gbV9mcmFt
ZS0+Y29yZUZyYW1lKCk7CiAgICAgYXV0byBuYXZpZ2F0aW9uSUQgPSBzdGF0aWNfY2FzdDxXZWJE
b2N1bWVudExvYWRlciY+KCpjb3JlRnJhbWUtPmxvYWRlcigpLnByb3Zpc2lvbmFsRG9jdW1lbnRM
b2FkZXIoKSkubmF2aWdhdGlvbklEKCk7Ci0gICAgaWYgKCF3ZWJQYWdlLT5zZW5kU3luYyhNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JSZXNwb25zZVN5bmMobV9mcmFtZS0+
ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21GcmFtZShjb3JlRnJhbWUpLCBuYXZp
Z2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1ZXN0LCBjYW5TaG93TUlNRVR5cGUsIGxpc3RlbmVySUQs
IFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRs
ZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lk
ZVBvbGljeUZvclJlc3BvbnNlU3luYzo6UmVwbHkocG9saWN5QWN0aW9uLCBkb3dubG9hZElEKSwg
U2Vjb25kczo6aW5maW5pdHkoKSwgSVBDOjpTZW5kU3luY09wdGlvbjo6SW5mb3JtUGxhdGZvcm1Q
cm9jZXNzV2lsbFN1c3BlbmQpKSB7Ci0gICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lE
ZWNpc2lvbihsaXN0ZW5lcklELCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgeyB9KTsKKyAgICBp
ZiAoIXdlYlBhZ2UtPnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGlj
eUZvclJlc3BvbnNlU3luYyhtX2ZyYW1lLT5mcmFtZUlEKCksIFNlY3VyaXR5T3JpZ2luRGF0YTo6
ZnJvbUZyYW1lKGNvcmVGcmFtZSksIG5hdmlnYXRpb25JRCwgcmVzcG9uc2UsIHJlcXVlc3QsIGNh
blNob3dNSU1FVHlwZSwgbGlzdGVuZXJJRCwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9u
KCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSwgTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2VTeW5jOjpSZXBseShy
ZWNlaXZlZFBvbGljeUFjdGlvbiwgcG9saWN5QWN0aW9uLCBkb3dubG9hZElEKSwgU2Vjb25kczo6
aW5maW5pdHkoKSwgSVBDOjpTZW5kU3luY09wdGlvbjo6SW5mb3JtUGxhdGZvcm1Qcm9jZXNzV2ls
bFN1c3BlbmQpKSB7CisgICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihs
aXN0ZW5lcklELCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgeyB9LCB7IH0pOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCiAgICAgLy8gV2UgY2FsbCB0aGlzIHN5bmNocm9ub3VzbHkgYmVjYXVz
ZSBDRk5ldHdvcmsgY2FuIG9ubHkgY29udmVydCBhIGxvYWRpbmcgY29ubmVjdGlvbiB0byBhIGRv
d25sb2FkIGZyb20gaXRzIGRpZFJlY2VpdmVSZXNwb25zZSBjYWxsYmFjay4KLSAgICBtX2ZyYW1l
LT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgcG9saWN5QWN0aW9uLCAwLCBk
b3dubG9hZElEKTsKKyAgICBpZiAocmVjZWl2ZWRQb2xpY3lBY3Rpb24pCisgICAgICAgIG1fZnJh
bWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBwb2xpY3lBY3Rpb24sIDAs
IGRvd25sb2FkSUQsIHsgfSk7CiB9CiAKIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yTmV3V2luZG93QWN0aW9uKGNvbnN0IE5hdmlnYXRpb25BY3Rpb24m
IG5hdmlnYXRpb25BY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgRm9ybVN0
YXRlKiBmb3JtU3RhdGUsIGNvbnN0IFN0cmluZyYgZnJhbWVOYW1lLCBGcmFtZVBvbGljeUZ1bmN0
aW9uJiYgZnVuY3Rpb24pCkBAIC03MzQsNyArNzM2LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEZWNpZAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgdWludDY0
X3QgbGlzdGVuZXJJRCA9IG1fZnJhbWUtPnNldFVwUG9saWN5TGlzdGVuZXIoV1RGTW92ZShmdW5j
dGlvbikpOworICAgIHVpbnQ2NF90IGxpc3RlbmVySUQgPSBtX2ZyYW1lLT5zZXRVcFBvbGljeUxp
c3RlbmVyKFdURk1vdmUoZnVuY3Rpb24pLCBXZWJGcmFtZTo6Rm9yTmF2aWdhdGlvbkFjdGlvbjo6
Tm8pOwogCiAgICAgTmF2aWdhdGlvbkFjdGlvbkRhdGEgbmF2aWdhdGlvbkFjdGlvbkRhdGE7CiAg
ICAgbmF2aWdhdGlvbkFjdGlvbkRhdGEubmF2aWdhdGlvblR5cGUgPSBhY3Rpb24tPm5hdmlnYXRp
b25UeXBlKCk7CkBAIC03NTEsNiArNzUzLDUyIEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGVjaWQKICAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OkRlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihtX2ZyYW1lLT5mcmFtZUlEKCksIFNlY3Vy
aXR5T3JpZ2luRGF0YTo6ZnJvbUZyYW1lKGNvcmVGcmFtZSksIG5hdmlnYXRpb25BY3Rpb25EYXRh
LCByZXF1ZXN0LCBmcmFtZU5hbWUsIGxpc3RlbmVySUQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNp
bmdsZXRvbigpLnRyYW5zZm9ybU9iamVjdHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgp
KSkpOwogfQogCit2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjphcHBseVRvRG9jdW1lbnRMb2Fk
ZXIoY29uc3QgV2Vic2l0ZVBvbGljaWVzJiB3ZWJzaXRlUG9saWNpZXMpCit7CisgICAgaWYgKCFt
X2ZyYW1lKQorICAgICAgICByZXR1cm47CisgICAgYXV0byogY29yZUZyYW1lID0gbV9mcmFtZS0+
Y29yZUZyYW1lKCk7CisgICAgaWYgKCFjb3JlRnJhbWUpCisgICAgICAgIHJldHVybjsKKyAgICBX
ZWJEb2N1bWVudExvYWRlciogZG9jdW1lbnRMb2FkZXIgPSBzdGF0aWNfY2FzdDxXZWJEb2N1bWVu
dExvYWRlcio+KGNvcmVGcmFtZS0+bG9hZGVyKCkucG9saWN5RG9jdW1lbnRMb2FkZXIoKSk7Cisg
ICAgaWYgKCFkb2N1bWVudExvYWRlcikKKyAgICAgICAgZG9jdW1lbnRMb2FkZXIgPSBzdGF0aWNf
Y2FzdDxXZWJEb2N1bWVudExvYWRlcio+KGNvcmVGcmFtZS0+bG9hZGVyKCkucHJvdmlzaW9uYWxE
b2N1bWVudExvYWRlcigpKTsKKyAgICBpZiAoIWRvY3VtZW50TG9hZGVyKQorICAgICAgICBkb2N1
bWVudExvYWRlciA9IHN0YXRpY19jYXN0PFdlYkRvY3VtZW50TG9hZGVyKj4oY29yZUZyYW1lLT5s
b2FkZXIoKS5kb2N1bWVudExvYWRlcigpKTsKKyAgICBpZiAoIWRvY3VtZW50TG9hZGVyKQorICAg
ICAgICByZXR1cm47CisKKyAgICAvLyBPbmx5IHNldFVzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJs
ZWQgaWYgaXQgaGFzbid0IGFscmVhZHkgYmVlbiBkaXNhYmxlZCBieSByZWxvYWRpbmcgd2l0aG91
dCBjb250ZW50IGJsb2NrZXJzLgorICAgIGlmIChkb2N1bWVudExvYWRlci0+dXNlckNvbnRlbnRF
eHRlbnNpb25zRW5hYmxlZCgpKQorICAgICAgICBkb2N1bWVudExvYWRlci0+c2V0VXNlckNvbnRl
bnRFeHRlbnNpb25zRW5hYmxlZCh3ZWJzaXRlUG9saWNpZXMuY29udGVudEJsb2NrZXJzRW5hYmxl
ZCk7CisKKyAgICBPcHRpb25TZXQ8QXV0b3BsYXlRdWlyaz4gcXVpcmtzOworICAgIGF1dG8gYWxs
b3dlZFF1aXJrcyA9IHdlYnNpdGVQb2xpY2llcy5hbGxvd2VkQXV0b3BsYXlRdWlya3M7CisKKyAg
ICBpZiAoYWxsb3dlZFF1aXJrcy5jb250YWlucyhXZWJzaXRlQXV0b3BsYXlRdWlyazo6SW5oZXJp
dGVkVXNlckdlc3R1cmVzKSkKKyAgICAgICAgcXVpcmtzIHw9IEF1dG9wbGF5UXVpcms6OkluaGVy
aXRlZFVzZXJHZXN0dXJlczsKKworICAgIGlmIChhbGxvd2VkUXVpcmtzLmNvbnRhaW5zKFdlYnNp
dGVBdXRvcGxheVF1aXJrOjpTeW50aGVzaXplZFBhdXNlRXZlbnRzKSkKKyAgICAgICAgcXVpcmtz
IHw9IEF1dG9wbGF5UXVpcms6OlN5bnRoZXNpemVkUGF1c2VFdmVudHM7CisKKyAgICBkb2N1bWVu
dExvYWRlci0+c2V0QWxsb3dlZEF1dG9wbGF5UXVpcmtzKHF1aXJrcyk7CisKKyAgICBzd2l0Y2gg
KHdlYnNpdGVQb2xpY2llcy5hdXRvcGxheVBvbGljeSkgeworICAgIGNhc2UgV2Vic2l0ZUF1dG9w
bGF5UG9saWN5OjpEZWZhdWx0OgorICAgICAgICBkb2N1bWVudExvYWRlci0+c2V0QXV0b3BsYXlQ
b2xpY3koQXV0b3BsYXlQb2xpY3k6OkRlZmF1bHQpOworICAgICAgICBicmVhazsKKyAgICBjYXNl
IFdlYnNpdGVBdXRvcGxheVBvbGljeTo6QWxsb3c6CisgICAgICAgIGRvY3VtZW50TG9hZGVyLT5z
ZXRBdXRvcGxheVBvbGljeShBdXRvcGxheVBvbGljeTo6QWxsb3cpOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIFdlYnNpdGVBdXRvcGxheVBvbGljeTo6QWxsb3dXaXRob3V0U291bmQ6CisgICAg
ICAgIGRvY3VtZW50TG9hZGVyLT5zZXRBdXRvcGxheVBvbGljeShBdXRvcGxheVBvbGljeTo6QWxs
b3dXaXRob3V0U291bmQpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFdlYnNpdGVBdXRvcGxh
eVBvbGljeTo6RGVueToKKyAgICAgICAgZG9jdW1lbnRMb2FkZXItPnNldEF1dG9wbGF5UG9saWN5
KEF1dG9wbGF5UG9saWN5OjpEZW55KTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCiB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25B
Y3Rpb24oY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgbmF2aWdhdGlvbkFjdGlvbiwgY29uc3QgUmVz
b3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBib29sIGRpZFJlY2VpdmVSZWRpcmVjdFJlc3BvbnNlLCBG
b3JtU3RhdGUqIGZvcm1TdGF0ZSwgRnJhbWVQb2xpY3lGdW5jdGlvbiYmIGZ1bmN0aW9uKQogewog
ICAgIFdlYlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CkBAIC03NzYsNyArODI0LDgg
QEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogICAgICAgICByZXR1
cm47CiAgICAgfQogICAgIAotICAgIHVpbnQ2NF90IGxpc3RlbmVySUQgPSBtX2ZyYW1lLT5zZXRV
cFBvbGljeUxpc3RlbmVyKFdURk1vdmUoZnVuY3Rpb24pKTsKKyAgICB1aW50NjRfdCBsaXN0ZW5l
cklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihXVEZNb3ZlKGZ1bmN0aW9uKSwgV2Vi
RnJhbWU6OkZvck5hdmlnYXRpb25BY3Rpb246Olllcyk7CisgICAgYm9vbCByZWNlaXZlZFBvbGlj
eUFjdGlvbjsKICAgICB1aW50NjRfdCBuZXdOYXZpZ2F0aW9uSUQ7CiAgICAgUG9saWN5QWN0aW9u
IHBvbGljeUFjdGlvbjsKICAgICBEb3dubG9hZElEIGRvd25sb2FkSUQ7CkBAIC04MTcsOCArODY2
LDggQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZAogICAgIC8vIE5v
dGlmeSB0aGUgVUlQcm9jZXNzLgogICAgIFJlZjxXZWJGcmFtZT4gcHJvdGVjdCgqbV9mcmFtZSk7
CiAgICAgV2Vic2l0ZVBvbGljaWVzIHdlYnNpdGVQb2xpY2llczsKLSAgICBpZiAoIXdlYlBhZ2Ut
PnNlbmRTeW5jKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRp
b25BY3Rpb24obV9mcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21GcmFt
ZShjb3JlRnJhbWUpLCBkb2N1bWVudExvYWRlci0+bmF2aWdhdGlvbklEKCksIG5hdmlnYXRpb25B
Y3Rpb25EYXRhLCBvcmlnaW5hdGluZ0ZyYW1lSW5mb0RhdGEsIG9yaWdpbmF0aW5nRnJhbWUgJiYg
b3JpZ2luYXRpbmdGcmFtZS0+cGFnZSgpID8gb3JpZ2luYXRpbmdGcmFtZS0+cGFnZSgpLT5wYWdl
SUQoKSA6IDAsIG5hdmlnYXRpb25BY3Rpb24ucmVzb3VyY2VSZXF1ZXN0KCksIHJlcXVlc3QsIGxp
c3RlbmVySUQsIFVzZXJEYXRhKFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnRyYW5zZm9ybU9iamVj
dHNUb0hhbmRsZXModXNlckRhdGEuZ2V0KCkpLmdldCgpKSksIE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkRlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb246OlJlcGx5KG5ld05hdmlnYXRpb25J
RCwgcG9saWN5QWN0aW9uLCBkb3dubG9hZElELCB3ZWJzaXRlUG9saWNpZXMpKSkgewotICAgICAg
ICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgUG9saWN5QWN0
aW9uOjpJZ25vcmUsIDAsIHsgfSk7CisgICAgaWYgKCF3ZWJQYWdlLT5zZW5kU3luYyhNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uKG1fZnJhbWUt
PmZyYW1lSUQoKSwgU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRnJhbWUoY29yZUZyYW1lKSwgZG9j
dW1lbnRMb2FkZXItPm5hdmlnYXRpb25JRCgpLCBuYXZpZ2F0aW9uQWN0aW9uRGF0YSwgb3JpZ2lu
YXRpbmdGcmFtZUluZm9EYXRhLCBvcmlnaW5hdGluZ0ZyYW1lICYmIG9yaWdpbmF0aW5nRnJhbWUt
PnBhZ2UoKSA/IG9yaWdpbmF0aW5nRnJhbWUtPnBhZ2UoKS0+cGFnZUlEKCkgOiAwLCBuYXZpZ2F0
aW9uQWN0aW9uLnJlc291cmNlUmVxdWVzdCgpLCByZXF1ZXN0LCBsaXN0ZW5lcklELCBVc2VyRGF0
YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJE
YXRhLmdldCgpKS5nZXQoKSkpLCBNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lG
b3JOYXZpZ2F0aW9uQWN0aW9uOjpSZXBseShyZWNlaXZlZFBvbGljeUFjdGlvbiwgbmV3TmF2aWdh
dGlvbklELCBwb2xpY3lBY3Rpb24sIGRvd25sb2FkSUQsIHdlYnNpdGVQb2xpY2llcykpKSB7Cisg
ICAgICAgIG1fZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBQb2xp
Y3lBY3Rpb246Oklnbm9yZSwgMCwgeyB9LCB7IH0pOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC04MjgsMzQgKzg3Nyw5IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNo
RGVjaWQKICAgICBpZiAoZG9jdW1lbnRMb2FkZXItPnVzZXJDb250ZW50RXh0ZW5zaW9uc0VuYWJs
ZWQoKSkKICAgICAgICAgZG9jdW1lbnRMb2FkZXItPnNldFVzZXJDb250ZW50RXh0ZW5zaW9uc0Vu
YWJsZWQod2Vic2l0ZVBvbGljaWVzLmNvbnRlbnRCbG9ja2Vyc0VuYWJsZWQpOwogCi0gICAgT3B0
aW9uU2V0PEF1dG9wbGF5UXVpcms+IHF1aXJrczsKLSAgICBhdXRvIGFsbG93ZWRRdWlya3MgPSB3
ZWJzaXRlUG9saWNpZXMuYWxsb3dlZEF1dG9wbGF5UXVpcmtzOwotCi0gICAgaWYgKGFsbG93ZWRR
dWlya3MuY29udGFpbnMoV2Vic2l0ZUF1dG9wbGF5UXVpcms6OkluaGVyaXRlZFVzZXJHZXN0dXJl
cykpCi0gICAgICAgIHF1aXJrcyB8PSBBdXRvcGxheVF1aXJrOjpJbmhlcml0ZWRVc2VyR2VzdHVy
ZXM7Ci0KLSAgICBpZiAoYWxsb3dlZFF1aXJrcy5jb250YWlucyhXZWJzaXRlQXV0b3BsYXlRdWly
azo6U3ludGhlc2l6ZWRQYXVzZUV2ZW50cykpCi0gICAgICAgIHF1aXJrcyB8PSBBdXRvcGxheVF1
aXJrOjpTeW50aGVzaXplZFBhdXNlRXZlbnRzOwotCi0gICAgZG9jdW1lbnRMb2FkZXItPnNldEFs
bG93ZWRBdXRvcGxheVF1aXJrcyhxdWlya3MpOwotCi0gICAgc3dpdGNoICh3ZWJzaXRlUG9saWNp
ZXMuYXV0b3BsYXlQb2xpY3kpIHsKLSAgICBjYXNlIFdlYnNpdGVBdXRvcGxheVBvbGljeTo6RGVm
YXVsdDoKLSAgICAgICAgZG9jdW1lbnRMb2FkZXItPnNldEF1dG9wbGF5UG9saWN5KEF1dG9wbGF5
UG9saWN5OjpEZWZhdWx0KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXZWJzaXRlQXV0b3Bs
YXlQb2xpY3k6OkFsbG93OgotICAgICAgICBkb2N1bWVudExvYWRlci0+c2V0QXV0b3BsYXlQb2xp
Y3koQXV0b3BsYXlQb2xpY3k6OkFsbG93KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXZWJz
aXRlQXV0b3BsYXlQb2xpY3k6OkFsbG93V2l0aG91dFNvdW5kOgotICAgICAgICBkb2N1bWVudExv
YWRlci0+c2V0QXV0b3BsYXlQb2xpY3koQXV0b3BsYXlQb2xpY3k6OkFsbG93V2l0aG91dFNvdW5k
KTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSBXZWJzaXRlQXV0b3BsYXlQb2xpY3k6OkRlbnk6
Ci0gICAgICAgIGRvY3VtZW50TG9hZGVyLT5zZXRBdXRvcGxheVBvbGljeShBdXRvcGxheVBvbGlj
eTo6RGVueSk7Ci0gICAgICAgIGJyZWFrOwotICAgIH0KLQogICAgIC8vIFdlIGNhbGwgdGhpcyBz
eW5jaHJvbm91c2x5IGJlY2F1c2UgV2ViQ29yZSBjYW5ub3QgZ3JhY2VmdWxseSBoYW5kbGUgYSBm
cmFtZSBsb2FkIHdpdGhvdXQgYSBzeW5jaHJvbm91cyBuYXZpZ2F0aW9uIHBvbGljeSByZXBseS4K
LSAgICBtX2ZyYW1lLT5kaWRSZWNlaXZlUG9saWN5RGVjaXNpb24obGlzdGVuZXJJRCwgcG9saWN5
QWN0aW9uLCBuZXdOYXZpZ2F0aW9uSUQsIGRvd25sb2FkSUQpOworICAgIGlmIChyZWNlaXZlZFBv
bGljeUFjdGlvbikKKyAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxp
c3RlbmVySUQsIHBvbGljeUFjdGlvbiwgbmV3TmF2aWdhdGlvbklELCBkb3dubG9hZElELCB3ZWJz
aXRlUG9saWNpZXMpOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpjYW5jZWxQb2xp
Y3lDaGVjaygpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMjIy
NzA4KQorKysgU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1l
TG9hZGVyQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNl
IFdlYktpdCB7CiAKIGNsYXNzIFBsdWdpblZpZXc7CiBjbGFzcyBXZWJGcmFtZTsKK3N0cnVjdCBX
ZWJzaXRlUG9saWNpZXM7CiAgICAgCiBjbGFzcyBXZWJGcmFtZUxvYWRlckNsaWVudCBmaW5hbCA6
IHB1YmxpYyBXZWJDb3JlOjpGcmFtZUxvYWRlckNsaWVudCB7CiBwdWJsaWM6CkBAIC00OCw2ICs0
OSw4IEBAIHB1YmxpYzoKIAogICAgIHZvaWQgc2V0VXNlSWNvbkxvYWRpbmdDbGllbnQoYm9vbCB1
c2VJY29uTG9hZGluZ0NsaWVudCkgeyBtX3VzZUljb25Mb2FkaW5nQ2xpZW50ID0gdXNlSWNvbkxv
YWRpbmdDbGllbnQ7IH0KIAorICAgIHZvaWQgYXBwbHlUb0RvY3VtZW50TG9hZGVyKGNvbnN0IFdl
YnNpdGVQb2xpY2llcyYpOworCiBwcml2YXRlOgogICAgIHZvaWQgZnJhbWVMb2FkZXJEZXN0cm95
ZWQoKSBmaW5hbDsKIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2Vi
RG9jdW1lbnRMb2FkZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYkRvY3VtZW50TG9hZGVyLmNwcAkocmV2aXNpb24gMjIyNzA4KQorKysgU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRG9jdW1lbnRMb2FkZXIuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC01MSw3ICs1MSw3IEBAIHZvaWQgV2ViRG9jdW1lbnRMb2FkZXI6OmRldGFj
aEZyb21GcmFtZSgKIHZvaWQgV2ViRG9jdW1lbnRMb2FkZXI6OnNldE5hdmlnYXRpb25JRCh1aW50
NjRfdCBuYXZpZ2F0aW9uSUQpCiB7CiAgICAgQVNTRVJUKG5hdmlnYXRpb25JRCk7Ci0gICAgQVNT
RVJUKCFtX25hdmlnYXRpb25JRCk7CisgICAgQVNTRVJUKCFtX25hdmlnYXRpb25JRCB8fCBtX25h
dmlnYXRpb25JRCA9PSBuYXZpZ2F0aW9uSUQpOwogCiAgICAgbV9uYXZpZ2F0aW9uSUQgPSBuYXZp
Z2F0aW9uSUQ7CiB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJG
cmFtZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViRnJhbWUuY3BwCShyZXZpc2lvbiAyMjI3MDgpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwOSw3ICsyMDksNyBA
QCB2b2lkIFdlYkZyYW1lOjppbnZhbGlkYXRlKCkKICAgICBtX2NvcmVGcmFtZSA9IDA7CiB9CiAK
LXVpbnQ2NF90IFdlYkZyYW1lOjpzZXRVcFBvbGljeUxpc3RlbmVyKFdlYkNvcmU6OkZyYW1lUG9s
aWN5RnVuY3Rpb24mJiBwb2xpY3lGdW5jdGlvbikKK3VpbnQ2NF90IFdlYkZyYW1lOjpzZXRVcFBv
bGljeUxpc3RlbmVyKFdlYkNvcmU6OkZyYW1lUG9saWN5RnVuY3Rpb24mJiBwb2xpY3lGdW5jdGlv
biwgRm9yTmF2aWdhdGlvbkFjdGlvbiBmb3JOYXZpZ2F0aW9uQWN0aW9uKQogewogICAgIC8vIEZJ
WE1FOiA8cmRhcjovLzU2MzQzODE+IFdlIG5lZWQgdG8gc3VwcG9ydCBtdWx0aXBsZSBhY3RpdmUg
cG9saWN5IGxpc3RlbmVycy4KIApAQCAtMjE3LDYgKzIxNyw3IEBAIHVpbnQ2NF90IFdlYkZyYW1l
OjpzZXRVcFBvbGljeUxpc3RlbmVyKFcKIAogICAgIG1fcG9saWN5TGlzdGVuZXJJRCA9IGdlbmVy
YXRlTGlzdGVuZXJJRCgpOwogICAgIG1fcG9saWN5RnVuY3Rpb24gPSBXVEZNb3ZlKHBvbGljeUZ1
bmN0aW9uKTsKKyAgICBtX3BvbGljeUZ1bmN0aW9uRm9yTmF2aWdhdGlvbkFjdGlvbiA9IGZvck5h
dmlnYXRpb25BY3Rpb247CiAgICAgcmV0dXJuIG1fcG9saWN5TGlzdGVuZXJJRDsKIH0KIApAQCAt
MjQ0LDEyICsyNDUsMTMgQEAgdm9pZCBXZWJGcmFtZTo6aW52YWxpZGF0ZVBvbGljeUxpc3RlbmVy
KAogICAgIG1fcG9saWN5TGlzdGVuZXJJRCA9IDA7CiAgICAgaWYgKGF1dG8gZnVuY3Rpb24gPSBz
dGQ6OmV4Y2hhbmdlKG1fcG9saWN5RnVuY3Rpb24sIG51bGxwdHIpKQogICAgICAgICBmdW5jdGlv
bihQb2xpY3lBY3Rpb246Oklnbm9yZSk7CisgICAgbV9wb2xpY3lGdW5jdGlvbkZvck5hdmlnYXRp
b25BY3Rpb24gPSBGb3JOYXZpZ2F0aW9uQWN0aW9uOjpObzsKICAgICBmb3IgKGF1dG8mIGZ1bmN0
aW9uIDogbV93aWxsU3VibWl0Rm9ybUNvbXBsZXRpb25IYW5kbGVycy52YWx1ZXMoKSkKICAgICAg
ICAgZnVuY3Rpb24oKTsKICAgICBtX3dpbGxTdWJtaXRGb3JtQ29tcGxldGlvbkhhbmRsZXJzLmNs
ZWFyKCk7CiB9CiAKLXZvaWQgV2ViRnJhbWU6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50
NjRfdCBsaXN0ZW5lcklELCBQb2xpY3lBY3Rpb24gYWN0aW9uLCB1aW50NjRfdCBuYXZpZ2F0aW9u
SUQsIERvd25sb2FkSUQgZG93bmxvYWRJRCkKK3ZvaWQgV2ViRnJhbWU6OmRpZFJlY2VpdmVQb2xp
Y3lEZWNpc2lvbih1aW50NjRfdCBsaXN0ZW5lcklELCBQb2xpY3lBY3Rpb24gYWN0aW9uLCB1aW50
NjRfdCBuYXZpZ2F0aW9uSUQsIERvd25sb2FkSUQgZG93bmxvYWRJRCwgY29uc3QgV2Vic2l0ZVBv
bGljaWVzJiB3ZWJzaXRlUG9saWNpZXMpCiB7CiAgICAgaWYgKCFtX2NvcmVGcmFtZSkKICAgICAg
ICAgcmV0dXJuOwpAQCAtMjY0LDkgKzI2NiwxMyBAQCB2b2lkIFdlYkZyYW1lOjpkaWRSZWNlaXZl
UG9saWN5RGVjaXNpb24oCiAgICAgICAgIHJldHVybjsKIAogICAgIEZyYW1lUG9saWN5RnVuY3Rp
b24gZnVuY3Rpb24gPSBXVEZNb3ZlKG1fcG9saWN5RnVuY3Rpb24pOworICAgIGJvb2wgZm9yTmF2
aWdhdGlvbkFjdGlvbiA9IG1fcG9saWN5RnVuY3Rpb25Gb3JOYXZpZ2F0aW9uQWN0aW9uID09IEZv
ck5hdmlnYXRpb25BY3Rpb246OlllczsKIAogICAgIGludmFsaWRhdGVQb2xpY3lMaXN0ZW5lcigp
OwogCisgICAgaWYgKGZvck5hdmlnYXRpb25BY3Rpb24gJiYgbV9mcmFtZUxvYWRlckNsaWVudCkK
KyAgICAgICAgbV9mcmFtZUxvYWRlckNsaWVudC0+YXBwbHlUb0RvY3VtZW50TG9hZGVyKHdlYnNp
dGVQb2xpY2llcyk7CisKICAgICBtX3BvbGljeURvd25sb2FkSUQgPSBkb3dubG9hZElEOwogICAg
IGlmIChuYXZpZ2F0aW9uSUQpIHsKICAgICAgICAgaWYgKFdlYkRvY3VtZW50TG9hZGVyKiBkb2N1
bWVudExvYWRlciA9IHN0YXRpY19jYXN0PFdlYkRvY3VtZW50TG9hZGVyKj4obV9jb3JlRnJhbWUt
PmxvYWRlcigpLnBvbGljeURvY3VtZW50TG9hZGVyKCkpKQpJbmRleDogU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCShyZXZpc2lvbiAyMjI3MDgpCisrKyBTb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5oCSh3b3JraW5nIGNvcHkpCkBA
IC02NCw2ICs2NCw3IEBAIGNsYXNzIEluamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU7CiBjbGFzcyBJ
bmplY3RlZEJ1bmRsZVNjcmlwdFdvcmxkOwogY2xhc3MgV2ViUGFnZTsKIHN0cnVjdCBGcmFtZUlu
Zm9EYXRhOworc3RydWN0IFdlYnNpdGVQb2xpY2llczsKIAogY2xhc3MgV2ViRnJhbWUgOiBwdWJs
aWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBlOjpCdW5kbGVGcmFtZT4gewogcHVi
bGljOgpAQCAtODIsOSArODMsMTAgQEAgcHVibGljOgogICAgIEZyYW1lSW5mb0RhdGEgaW5mbygp
IGNvbnN0OwogICAgIHVpbnQ2NF90IGZyYW1lSUQoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lSUQ7
IH0KIAotICAgIHVpbnQ2NF90IHNldFVwUG9saWN5TGlzdGVuZXIoV2ViQ29yZTo6RnJhbWVQb2xp
Y3lGdW5jdGlvbiYmKTsKKyAgICBlbnVtIGNsYXNzIEZvck5hdmlnYXRpb25BY3Rpb24geyBObywg
WWVzIH07CisgICAgdWludDY0X3Qgc2V0VXBQb2xpY3lMaXN0ZW5lcihXZWJDb3JlOjpGcmFtZVBv
bGljeUZ1bmN0aW9uJiYsIEZvck5hdmlnYXRpb25BY3Rpb24pOwogICAgIHZvaWQgaW52YWxpZGF0
ZVBvbGljeUxpc3RlbmVyKCk7Ci0gICAgdm9pZCBkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWlu
dDY0X3QgbGlzdGVuZXJJRCwgV2ViQ29yZTo6UG9saWN5QWN0aW9uLCB1aW50NjRfdCBuYXZpZ2F0
aW9uSUQsIERvd25sb2FkSUQpOworICAgIHZvaWQgZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVp
bnQ2NF90IGxpc3RlbmVySUQsIFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBEb3dubG9hZElELCBjb25zdCBXZWJzaXRlUG9saWNpZXMmKTsKIAogICAgIHVpbnQ2
NF90IHNldFVwV2lsbFN1Ym1pdEZvcm1MaXN0ZW5lcihXVEY6OkZ1bmN0aW9uPHZvaWQodm9pZCk+
JiYpOwogICAgIHZvaWQgY29udGludWVXaWxsU3VibWl0Rm9ybSh1aW50NjRfdCk7CkBAIC0xNzcs
NiArMTc5LDcgQEAgcHJpdmF0ZToKIAogICAgIHVpbnQ2NF90IG1fcG9saWN5TGlzdGVuZXJJRCB7
IDAgfTsKICAgICBXZWJDb3JlOjpGcmFtZVBvbGljeUZ1bmN0aW9uIG1fcG9saWN5RnVuY3Rpb247
CisgICAgRm9yTmF2aWdhdGlvbkFjdGlvbiBtX3BvbGljeUZ1bmN0aW9uRm9yTmF2aWdhdGlvbkFj
dGlvbiB7IEZvck5hdmlnYXRpb25BY3Rpb246Ok5vIH07CiAgICAgSGFzaE1hcDx1aW50NjRfdCwg
V1RGOjpGdW5jdGlvbjx2b2lkKHZvaWQpPj4gbV93aWxsU3VibWl0Rm9ybUNvbXBsZXRpb25IYW5k
bGVyczsKICAgICBEb3dubG9hZElEIG1fcG9saWN5RG93bmxvYWRJRCB7IDAgfTsKIApJbmRleDog
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9u
IDIyMjcwOCkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0yNzMzLDEyICsyNzMzLDEyIEBAIHZvaWQgV2ViUGFnZTo6c2V0
U2Vzc2lvbklEKFBBTDo6U2Vzc2lvbkkKICAgICBtX3BhZ2UtPnNldFNlc3Npb25JRChzZXNzaW9u
SUQpOwogfQogCi12b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRf
dCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCBQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9u
LCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IERvd25sb2FkSUQmIGRvd25sb2FkSUQpCit2
b2lkIFdlYlBhZ2U6OmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1aW50NjRfdCBmcmFtZUlELCB1
aW50NjRfdCBsaXN0ZW5lcklELCBQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCB1aW50NjRfdCBu
YXZpZ2F0aW9uSUQsIGNvbnN0IERvd25sb2FkSUQmIGRvd25sb2FkSUQsIFdlYnNpdGVQb2xpY2ll
cyYmIHdlYnNpdGVQb2xpY2llcykKIHsKICAgICBXZWJGcmFtZSogZnJhbWUgPSBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAg
ICByZXR1cm47Ci0gICAgZnJhbWUtPmRpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklE
LCBwb2xpY3lBY3Rpb24sIG5hdmlnYXRpb25JRCwgZG93bmxvYWRJRCk7CisgICAgZnJhbWUtPmRp
ZFJlY2VpdmVQb2xpY3lEZWNpc2lvbihsaXN0ZW5lcklELCBwb2xpY3lBY3Rpb24sIG5hdmlnYXRp
b25JRCwgZG93bmxvYWRJRCwgd2Vic2l0ZVBvbGljaWVzKTsKIH0KIAogdm9pZCBXZWJQYWdlOjpj
b250aW51ZVdpbGxTdWJtaXRGb3JtKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVy
SUQpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCShy
ZXZpc2lvbiAyMjI3MDgpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQ
YWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTExMzgsNyArMTEzOCw3IEBAIHByaXZhdGU6CiAgICAg
dm9pZCBwbGF0Zm9ybVByZWZlcmVuY2VzRGlkQ2hhbmdlKGNvbnN0IFdlYlByZWZlcmVuY2VzU3Rv
cmUmKTsKICAgICB2b2lkIHVwZGF0ZVByZWZlcmVuY2VzKGNvbnN0IFdlYlByZWZlcmVuY2VzU3Rv
cmUmKTsKIAotICAgIHZvaWQgZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90IGZyYW1l
SUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIFdlYkNvcmU6OlBvbGljeUFjdGlvbiwgdWludDY0X3Qg
bmF2aWdhdGlvbklELCBjb25zdCBEb3dubG9hZElEJik7CisgICAgdm9pZCBkaWRSZWNlaXZlUG9s
aWN5RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbGlzdGVuZXJJRCwgV2ViQ29y
ZTo6UG9saWN5QWN0aW9uLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0IERvd25sb2FkSUQm
LCBXZWJzaXRlUG9saWNpZXMmJik7CiAgICAgdm9pZCBjb250aW51ZVdpbGxTdWJtaXRGb3JtKHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQpOwogICAgIHZvaWQgc2V0VXNlckFn
ZW50KGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0Q3VzdG9tVGV4dEVuY29kaW5nTmFtZShj
b25zdCBTdHJpbmcmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjIyNzA4KQorKysgU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkod29ya2luZyBj
b3B5KQpAQCAtMTUxLDcgKzE1MSw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgTGVnYWN5UmVjZWl2
ZXIgewogICAgIERpZFJlbW92ZUJhY2tGb3J3YXJkSXRlbSh1aW50NjRfdCBiYWNrRm9yd2FyZEl0
ZW1JRCkKIAogICAgIFVwZGF0ZVdlYnNpdGVQb2xpY2llcyhzdHJ1Y3QgV2ViS2l0OjpXZWJzaXRl
UG9saWNpZXMgd2Vic2l0ZVBvbGljaWVzKQotICAgIERpZFJlY2VpdmVQb2xpY3lEZWNpc2lvbih1
aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBsaXN0ZW5lcklELCBlbnVtIFdlYkNvcmU6OlBvbGlj
eUFjdGlvbiBwb2xpY3lBY3Rpb24sIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgV2ViS2l0OjpEb3du
bG9hZElEIGRvd25sb2FkSUQpCisgICAgRGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKHVpbnQ2NF90
IGZyYW1lSUQsIHVpbnQ2NF90IGxpc3RlbmVySUQsIGVudW0gV2ViQ29yZTo6UG9saWN5QWN0aW9u
IHBvbGljeUFjdGlvbiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBXZWJLaXQ6OkRvd25sb2FkSUQg
ZG93bmxvYWRJRCwgc3RydWN0IFdlYktpdDo6V2Vic2l0ZVBvbGljaWVzIHdlYnNpdGVQb2xpY2ll
cykKICAgICBDb250aW51ZVdpbGxTdWJtaXRGb3JtKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90
IGxpc3RlbmVySUQpCiAKICAgICBDbGVhclNlbGVjdGlvbigpCkluZGV4OiBUb29scy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMjI3MDgpCisrKyBU
b29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzNSBAQAorMjAxNy0xMC0w
MiAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAg
IFJFR1JFU1NJT04ocjIxNDIwMSk6IFdlYlByb2Nlc3MgaGFuZ3MgZHVyaW5nIHBvbGljeSBkZWNp
c2lvbnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3
NzU5MAorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzMzNjI5Mjk+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgQW5keSBFc3Rlcy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViS2l0Q29jb2EvSmF2YVNjcmlwdER1cmluZ05hdmlnYXRpb24ubW06IEFkZGVkLgorICAg
ICAgICAoLVtKU05hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3OmRpZEZpbmlzaE5hdmlnYXRpb246
XSk6CisgICAgICAgICgtW0pTTmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6ZGVjaWRlUG9saWN5
Rm9yTmF2aWdhdGlvbkFjdGlvbjpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW0pTTmF2
aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNl
OmRlY2lzaW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bSlNOYXZpZ2F0aW9uRGVsZWdhdGUgd2Vi
VmlldzpydW5KYXZhU2NyaXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdlOmluaXRpYXRlZEJ5RnJhbWU6
Y29tcGxldGlvbkhhbmRsZXI6XSk6CisgICAgICAgIChURVNUKToKKworMjAxNy0xMC0wMiAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIFJFR1JF
U1NJT04ocjIxNDIwMSk6IFdlYlByb2Nlc3MgaGFuZ3MgZHVyaW5nIHBvbGljeSBkZWNpc2lvbnMK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NzU5MAor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMzMzNjI5Mjk+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
QW5keSBFc3Rlcy4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvSmF2YVNjcmlwdER1cmluZ05hdmlnYXRpb24ubW06IEFkZGVkLgorICAgICAgICAo
LVtKU05hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3OmRpZEZpbmlzaE5hdmlnYXRpb246XSk6Cisg
ICAgICAgICgtW0pTTmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbjpkZWNpc2lvbkhhbmRsZXI6XSk6CisgICAgICAgICgtW0pTTmF2aWdhdGlv
bkRlbGVnYXRlIHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvblJlc3BvbnNlOmRlY2lz
aW9uSGFuZGxlcjpdKToKKyAgICAgICAgKC1bSlNOYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzpy
dW5KYXZhU2NyaXB0QWxlcnRQYW5lbFdpdGhNZXNzYWdlOmluaXRpYXRlZEJ5RnJhbWU6Y29tcGxl
dGlvbkhhbmRsZXI6XSk6CisgICAgICAgIChURVNUKToKKwogMjAxNy0xMC0wMiAgTWljaGFlbCBD
YXRhbnphcm8gIDxtY2F0YW56YXJvQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmVtb3ZlIEVOQUJM
RV9DU1NfUkVHSU9OUwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDIyMjcw
OCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yMjksNiArMjI5LDcgQEAKIAkJNUMyOTM2OTMx
RDVCRjcwRDAwREVBQjFFIC8qIENvb2tpZUFjY2VwdFBvbGljeS5tbSBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMjkzNjkxMUQ1QkY2M0UwMERFQUIxRSAv
KiBDb29raWVBY2NlcHRQb2xpY3kubW0gKi87IH07CiAJCTVDMjkzNjk2MUQ1QzAwRUQwMERFQUIx
RSAvKiBDb29raWVNZXNzYWdlLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNUMyOTM2OTQxRDVCRkQxOTAwREVBQjFFIC8qIENvb2tpZU1l
c3NhZ2UuaHRtbCAqLzsgfTsKIAkJNUM0QTg0OTUxRjdFRUZGQzAwQUNGQzU0IC8qIENvbmZpZ3Vy
YXRpb24ubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1
QzRBODQ5NDFGN0VFRkQ0MDBBQ0ZDNTQgLyogQ29uZmlndXJhdGlvbi5tbSAqLzsgfTsKKwkJNUM2
OUJERDUxRjgyQTdFRjAwMEY0RjRCIC8qIEphdmFTY3JpcHREdXJpbmdOYXZpZ2F0aW9uLm1tIGlu
IFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUM2OUJERDQxRjgy
QTdFQjAwMEY0RjRCIC8qIEphdmFTY3JpcHREdXJpbmdOYXZpZ2F0aW9uLm1tICovOyB9OwogCQk1
QzZFNjU0NDFENUNFRkQ0MDBGNzg2MkUgLyogVVJMUGFyc2VyLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDNkU2NTQxMUQ1Q0VGODUwMEY3ODYyRSAv
KiBVUkxQYXJzZXIuY3BwICovOyB9OwogCQk1QzcyNkQ2RjFEM0VFMDZFMDBDNUUxQTEgLyogSW5z
dGFuY2VNZXRob2RTd2l6emxlci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDVDNzI2RDZFMUQzRUUwNjgwMEM1RTFBMSAvKiBJbnN0YW5jZU1ldGhvZFN3
aXp6bGVyLm1tICovOyB9OwogCQk1Qzc5NjQxMDFFQjAyNzhEMDA3NUQ3NEMgLyogRXZlbnRNb2Rp
ZmllcnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NUM3OTY0MEYxRUIwMjY5QjAwNzVENzRDIC8qIEV2ZW50TW9kaWZpZXJzLmNwcCAqLzsgfTsKQEAg
LTEzNDUsNiArMTM0Niw3IEBACiAJCTVDMjkzNjk0MUQ1QkZEMTkwMERFQUIxRSAvKiBDb29raWVN
ZXNzYWdlLmh0bWwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0bWw7IHBhdGggPSBDb29raWVNZXNzYWdlLmh0
bWw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDNEE4NDk0MUY3RUVGRDQwMEFDRkM1
NCAvKiBDb25maWd1cmF0aW9uLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBw
YXRoID0gQ29uZmlndXJhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM1
RTYzM0QxRDBCNjc5NDAwODVBMDI1IC8qIFVuaXF1ZVJlZi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBVbmlxdWVSZWYuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQk1QzY5QkRENDFGODJBN0VCMDAwRjRGNEIgLyogSmF2YVNjcmlwdER1cmluZ05hdmln
YXRpb24ubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBKYXZhU2Ny
aXB0RHVyaW5nTmF2aWdhdGlvbi5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUM2
RTY1NDExRDVDRUY4NTAwRjc4NjJFIC8qIFVSTFBhcnNlci5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBVUkxQYXJzZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk1QzcyNkQ2RDFEM0VFMDY4MDBDNUUxQTEgLyogSW5zdGFuY2VNZXRob2RTd2l6emxl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBJbnN0YW5jZU1ldGhvZFN3aXp6
bGVyLmg7IHBhdGggPSBjb2NvYS9JbnN0YW5jZU1ldGhvZFN3aXp6bGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTVDNzI2RDZFMUQzRUUwNjgwMEM1RTFBMSAvKiBJbnN0YW5jZU1l
dGhvZFN3aXp6bGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBuYW1lID0g
SW5zdGFuY2VNZXRob2RTd2l6emxlci5tbTsgcGF0aCA9IGNvY29hL0luc3RhbmNlTWV0aG9kU3dp
enpsZXIubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xOTk0LDYgKzE5OTYsNyBA
QAogCQkJCTU3NTk5RTIwMUYwNzE5MTcwMEEzRkI4QyAvKiBJbmRleGVkREJTdHJ1Y3R1cmVkQ2xv
bmVCYWNrd2FyZENvbXBhdGliaWxpdHkubW0gKi8sCiAJCQkJNTE5OEEyM0YxRUE3RTU5NTAwODkx
MEI3IC8qIEluaXRpYWxXYXJtZWRQcm9jZXNzVXNlZC5tbSAqLywKIAkJCQkyREIwMjMyRTFFNEU4
NzE4MDA3MDcxMjMgLyogSW50ZXJhY3Rpb25EZWFkbG9ja0FmdGVyQ3Jhc2gubW0gKi8sCisJCQkJ
NUM2OUJERDQxRjgyQTdFQjAwMEY0RjRCIC8qIEphdmFTY3JpcHREdXJpbmdOYXZpZ2F0aW9uLm1t
ICovLAogCQkJCUMyNUNDQTA1MUU1MTM4MEIwMDI2Q0I4QSAvKiBMaW5lQnJlYWtpbmcubW0gKi8s
CiAJCQkJMzdEMzZFRDYxQUY0MkVDRDAwQkFGNUQ5IC8qIExvYWRBbHRlcm5hdGVIVE1MU3RyaW5n
Lm1tICovLAogCQkJCUExMjU0NzhEMURCMThCOTQwMDM1ODU2NCAvKiBMb2FkRGF0YVdpdGhOaWxN
SU1FVHlwZS5tbSAqLywKQEAgLTMzMTUsNiArMzMxOCw3IEBACiAJCQkJN0E5MDlBODIxRDg3NzQ4
MDAwN0UxMEY4IC8qIEludFJlY3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0E5MDlBODMxRDg3
NzQ4MDAwN0UxMEY4IC8qIEludFNpemUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNUMwQkY4OTMx
REQ1OTlCRDAwQjAwMzI4IC8qIElzTmF2aWdhdGlvbkFjdGlvblRydXN0ZWQubW0gaW4gU291cmNl
cyAqLywKKwkJCQk1QzY5QkRENTFGODJBN0VGMDAwRjRGNEIgLyogSmF2YVNjcmlwdER1cmluZ05h
dmlnYXRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VBRDFBNDExQTM0MDA0NDdDNEMg
LyogSmF2YVNjcmlwdFRlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJN0NDRTdFQTUxQTQxMUEw
ODAwNDQ3QzRDIC8qIEphdmFTY3JpcHRUZXN0TWFjLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJN0ND
RTdFQzQxQTQxMUE3RTAwNDQ3QzRDIC8qIEpTV3JhcHBlckZvck5vZGVJbldlYkZyYW1lLm1tIGlu
IFNvdXJjZXMgKi8sCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0phdmFTY3JpcHREdXJpbmdOYXZpZ2F0aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSmF2YVNjcmlwdER1cmluZ05hdmlnYXRpb24ubW0J
KG5vbmV4aXN0ZW50KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9K
YXZhU2NyaXB0RHVyaW5nTmF2aWdhdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDk4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW1wb3J0ICJQbGF0Zm9y
bVV0aWxpdGllcy5oIgorI2ltcG9ydCAiVGVzdC5oIgorI2ltcG9ydCA8V2ViS2l0L1dLV2ViVmll
dy5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCisjaWYgV0tfQVBJX0VOQUJMRUQKKwor
c3RhdGljIGJvb2wgbmF2aWdhdGlvbkNvbXBsZXRlOworc3RhdGljIHNpemVfdCBhbGVydHM7Citz
dGF0aWMgYm9vbCByZWNlaXZlZEJvdGhBbGVydHM7CitzdGF0aWMgUmV0YWluUHRyPE5TVVJMPiBm
aXJzdFVSTDsKK3N0YXRpYyBSZXRhaW5QdHI8TlNVUkw+IHNlY29uZFVSTDsKKworQGludGVyZmFj
ZSBKU05hdmlnYXRpb25EZWxlZ2F0ZSA6IE5TT2JqZWN0IDxXS05hdmlnYXRpb25EZWxlZ2F0ZSwg
V0tVSURlbGVnYXRlPgorQGVuZAorCitAaW1wbGVtZW50YXRpb24gSlNOYXZpZ2F0aW9uRGVsZWdh
dGUKKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcgKil3ZWJWaWV3IGRpZEZpbmlzaE5hdmln
YXRpb246KG51bGxfdW5zcGVjaWZpZWQgV0tOYXZpZ2F0aW9uICopbmF2aWdhdGlvbgoreworICAg
IG5hdmlnYXRpb25Db21wbGV0ZSA9IHRydWU7Cit9CisKKy0gKHZvaWQpd2ViVmlldzooV0tXZWJW
aWV3ICopd2ViVmlldyBkZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uOihXS05hdmlnYXRp
b25BY3Rpb24gKiluYXZpZ2F0aW9uQWN0aW9uIGRlY2lzaW9uSGFuZGxlcjoodm9pZCAoXikoV0tO
YXZpZ2F0aW9uQWN0aW9uUG9saWN5KSlkZWNpc2lvbkhhbmRsZXIKK3sKKyAgICBpZiAoW25hdmln
YXRpb25BY3Rpb24ucmVxdWVzdC5VUkwuYWJzb2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOltz
ZWNvbmRVUkwgYWJzb2x1dGVTdHJpbmddXSkgeworICAgICAgICBbd2ViVmlldyBldmFsdWF0ZUph
dmFTY3JpcHQ6QCJhbGVydChkb2N1bWVudC5sb2NhdGlvbik7IiBjb21wbGV0aW9uSGFuZGxlcjpe
KGlkLCBOU0Vycm9yICopIHsKKyAgICAgICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRp
b25BY3Rpb25Qb2xpY3lBbGxvdyk7CisgICAgICAgIH1dOworICAgIH0gZWxzZQorICAgICAgICBk
ZWNpc2lvbkhhbmRsZXIoV0tOYXZpZ2F0aW9uQWN0aW9uUG9saWN5QWxsb3cpOworfQorCistICh2
b2lkKXdlYlZpZXc6KFdLV2ViVmlldyAqKXdlYlZpZXcgZGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlv
blJlc3BvbnNlOihXS05hdmlnYXRpb25SZXNwb25zZSAqKW5hdmlnYXRpb25SZXNwb25zZSBkZWNp
c2lvbkhhbmRsZXI6KHZvaWQgKF4pKFdLTmF2aWdhdGlvblJlc3BvbnNlUG9saWN5KSlkZWNpc2lv
bkhhbmRsZXIKK3sKKyAgICBpZiAoW25hdmlnYXRpb25SZXNwb25zZS5yZXNwb25zZS5VUkwuYWJz
b2x1dGVTdHJpbmcgaXNFcXVhbFRvU3RyaW5nOltzZWNvbmRVUkwgYWJzb2x1dGVTdHJpbmddXSkg
eworICAgICAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3JpcHQ6QCJhbGVydChkb2N1bWVudC5s
b2NhdGlvbik7IiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkLCBOU0Vycm9yICopIHsKKyAgICAgICAg
ICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRpb25SZXNwb25zZVBvbGljeUFsbG93KTsKKyAg
ICAgICAgfV07CisgICAgfSBlbHNlCisgICAgICAgIGRlY2lzaW9uSGFuZGxlcihXS05hdmlnYXRp
b25SZXNwb25zZVBvbGljeUFsbG93KTsKK30KKworLSAodm9pZCl3ZWJWaWV3OihXS1dlYlZpZXcg
Kil3ZWJWaWV3IHJ1bkphdmFTY3JpcHRBbGVydFBhbmVsV2l0aE1lc3NhZ2U6KE5TU3RyaW5nICop
bWVzc2FnZSBpbml0aWF0ZWRCeUZyYW1lOihXS0ZyYW1lSW5mbyAqKWZyYW1lIGNvbXBsZXRpb25I
YW5kbGVyOih2b2lkICheKSh2b2lkKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIEVYUEVDVF9T
VFJFUShtZXNzYWdlLlVURjhTdHJpbmcsIFtbZmlyc3RVUkwgYWJzb2x1dGVTdHJpbmddIFVURjhT
dHJpbmddKTsKKyAgICBpZiAoKythbGVydHMgPT0gMikKKyAgICAgICAgcmVjZWl2ZWRCb3RoQWxl
cnRzID0gdHJ1ZTsKKyAgICBjb21wbGV0aW9uSGFuZGxlcigpOworfQorCitAZW5kCisKK1RFU1Qo
V2ViS2l0LCBKYXZhU2NyaXB0RHVyaW5nTmF2aWdhdGlvbikKK3sKKyAgICBmaXJzdFVSTCA9IFtb
TlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1wbGUiIHdpdGhFeHRlbnNp
b246QCJodG1sIiBzdWJkaXJlY3Rvcnk6QCJUZXN0V2ViS2l0QVBJLnJlc291cmNlcyJdOworICAg
IHNlY29uZFVSTCA9IFtbTlNCdW5kbGUgbWFpbkJ1bmRsZV0gVVJMRm9yUmVzb3VyY2U6QCJzaW1w
bGUyIiB3aXRoRXh0ZW5zaW9uOkAiaHRtbCIgc3ViZGlyZWN0b3J5OkAiVGVzdFdlYktpdEFQSS5y
ZXNvdXJjZXMiXTsKKyAgICAKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tXZWJWaWV3
IGFsbG9jXSBpbml0XSk7CisgICAgYXV0byBkZWxlZ2F0ZSA9IGFkb3B0TlMoW1tKU05hdmlnYXRp
b25EZWxlZ2F0ZSBhbGxvY10gaW5pdF0pOworICAgIFt3ZWJWaWV3IHNldE5hdmlnYXRpb25EZWxl
Z2F0ZTpkZWxlZ2F0ZS5nZXQoKV07CisgICAgW3dlYlZpZXcgc2V0VUlEZWxlZ2F0ZTpkZWxlZ2F0
ZS5nZXQoKV07CisKKyAgICBbd2ViVmlldyBsb2FkUmVxdWVzdDpbTlNVUkxSZXF1ZXN0IHJlcXVl
c3RXaXRoVVJMOmZpcnN0VVJMLmdldCgpXV07CisgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVu
KCZuYXZpZ2F0aW9uQ29tcGxldGUpOworCisgICAgW3dlYlZpZXcgbG9hZFJlcXVlc3Q6W05TVVJM
UmVxdWVzdCByZXF1ZXN0V2l0aFVSTDpzZWNvbmRVUkwuZ2V0KCldXTsKKyAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJnJlY2VpdmVkQm90aEFsZXJ0cyk7Cit9CisKKyNlbmRpZgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>