<?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>98752</bug_id>
          
          <creation_ts>2012-10-09 04:46:54 -0700</creation_ts>
          <short_desc>[CSS Regions] Create a separate list for the invalid regions</short_desc>
          <delta_ts>2012-10-10 10:11:15 -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>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>AdobeTracked</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>57312</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Andrei Bucur">abucur</reporter>
          <assigned_to name="Andrei Bucur">abucur</assigned_to>
          <cc>dglazkov</cc>
    
    <cc>donggwan.kim</cc>
    
    <cc>eric</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>mihnea</cc>
    
    <cc>rakuco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>737667</commentid>
    <comment_count>0</comment_count>
    <who name="Andrei Bucur">abucur</who>
    <bug_when>2012-10-09 04:46:54 -0700</bug_when>
    <thetext>The regions that create dependency cycles between flows (invalid regions) and valid regions reside in the same list. This adds complexity to the code because iterations through the region list need to check the validity of the items. Getting the first/last valid region is also overly-complicated (the first/last invalid regions need to be skipped). There should be a separate low traffic list for the invalid regions that&apos;s used when dependencies between flow threads change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737825</commentid>
    <comment_count>1</comment_count>
      <attachid>167765</attachid>
    <who name="Andrei Bucur">abucur</who>
    <bug_when>2012-10-09 08:53:22 -0700</bug_when>
    <thetext>Created attachment 167765
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>737879</commentid>
    <comment_count>2</comment_count>
      <attachid>167765</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-09 09:45:41 -0700</bug_when>
    <thetext>Comment on attachment 167765
Patch

Attachment 167765 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14248101

New failing tests:
fast/regions/flows-dependency-same-flow.html
fast/frames/frame-limit.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738739</commentid>
    <comment_count>3</comment_count>
      <attachid>167958</attachid>
    <who name="Andrei Bucur">abucur</who>
    <bug_when>2012-10-10 01:36:49 -0700</bug_when>
    <thetext>Created attachment 167958
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738799</commentid>
    <comment_count>4</comment_count>
      <attachid>167958</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-10 03:41:11 -0700</bug_when>
    <thetext>Comment on attachment 167958
Patch

Attachment 167958 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14229968

New failing tests:
fast/regions/flows-dependency-same-flow.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>738854</commentid>
    <comment_count>5</comment_count>
      <attachid>167983</attachid>
    <who name="Andrei Bucur">abucur</who>
    <bug_when>2012-10-10 05:18:07 -0700</bug_when>
    <thetext>Created attachment 167983
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739029</commentid>
    <comment_count>6</comment_count>
      <attachid>167983</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2012-10-10 09:41:29 -0700</bug_when>
    <thetext>Comment on attachment 167983
Patch

Love it! r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739054</commentid>
    <comment_count>7</comment_count>
      <attachid>167983</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-10 10:11:10 -0700</bug_when>
    <thetext>Comment on attachment 167983
Patch

Clearing flags on attachment: 167983

Committed r130918: &lt;http://trac.webkit.org/changeset/130918&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>739055</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-10 10:11:15 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167765</attachid>
            <date>2012-10-09 08:53:22 -0700</date>
            <delta_ts>2012-10-10 01:36:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98752-20121009185222.patch</filename>
            <type>text/plain</type>
            <size>36674</size>
            <attacher name="Andrei Bucur">abucur</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNzUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDc2OWExZGI3OTNhODNi
ZGQ5ZjRlYTg5Yjg3YmI5OTVlYzI4YzA0Mi4uYmY4OGEzODRmYTEwNGM5ZjJkOTNhNjVjMDcwZGRm
NGQzNzY3MzRhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEyLTEwLTA5ICBBbmRy
ZWkgQnVjdXIgIDxhYnVjdXJAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1MgUmVnaW9uc10gQ3Jl
YXRlIGEgc2VwYXJhdGUgbGlzdCBmb3IgdGhlIGludmFsaWQgcmVnaW9ucworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg3NTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIG1vdmVzIHRoZSBp
bnZhbGlkIHJlZ2lvbnMgaW4gYSBsb3cgdHJhZmZpYyBkYXRhIHN0cnVjdHVyZSwgb3V0c2lkZSB0
aGUgbWFpbiByZWdpb24gbGlzdC4gVGhpcyBzaG91bGQgYWRkIGEgc21hbGwgcGVyZm9ybWFuY2Ug
Ym9vc3QgKHRoZXJlJ3Mgbm8gdGVzdCBmb3IgaXQpIGFuZCBzaW1wbGlmaWVzIHRoZSBjb2RlIGlu
IHRoZSBmb2xsb3dpbmcgd2F5czoKKyAgICAgICAgLSBpdGVyYXRpb25zIHRocm91Z2ggdGhlIHJl
Z2lvbiBsaXN0IGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgaW52YWxpZCByZWdpb25zCisgICAg
ICAgIC0gYWNjZXNzaW5nIHRoZSBmaXJzdC9sYXN0IHJlZ2lvbiBpcyBzdHJhaWdodGZvcndhcmQK
KyAgICAgICAgLSBsaXN0IG1hbmlwdWxhdGlvbnMgYXJlIGVhc2llciB0byBpbXBsZW1lbnQgKGUu
Zy4gYmluYXJ5IHNlYXJjaCBmb3IgYSByZWdpb24pCisKKyAgICAgICAgVGVzdHM6IEFkYXB0ZWQg
ZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktc2FtZS1mbG93Lmh0bWwgdG8gdXNlIHRoZSBu
ZXcgZHVtcCBmb3JtYXQgZm9yIHRoZSByZWdpb24gY2hhaW4uCisKKyAgICAgICAgKiBkb20vV2Vi
S2l0TmFtZWRGbG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdE5hbWVkRmxvdzo6Z2V0
UmVnaW9uc0J5Q29udGVudCk6IE5vdyByZXR1cm5zIG9ubHkgdGhlIHZhbGlkIHJlZ2lvbnMuCisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXROYW1lZEZsb3c6OmdldFJlZ2lvbnMpOiBOb3cgcmV0dXJu
cyBvbmx5IHRoZSB2YWxpZCByZWdpb25zLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbG93
VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OlJlbmRlckZs
b3dUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6bGF5b3V0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OnVwZGF0ZUxvZ2ljYWxXaWR0aCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpjb21wdXRlTG9naWNhbEhlaWdo
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpyZXBhaW50UmVjdGFuZ2xl
SW5SZWdpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OnJlZ2lvbkF0
QmxvY2tPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6cmVtb3Zl
UmVuZGVyQm94UmVnaW9uSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFk
Ojpsb2dpY2FsV2lkdGhDaGFuZ2VkSW5SZWdpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckZsb3dUaHJlYWQ6OmZpcnN0UmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dU
aHJlYWQ6Omxhc3RSZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6
Y29tcHV0ZU92ZXJmbG93U3RhdGVGb3JSZWdpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckZsb3dUaHJlYWQ6OnJlZ2lvbkluUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxv
d1RocmVhZDo6Y2hlY2tSZWdpb25zV2l0aFN0eWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRmxvd1RocmVhZDo6b2JqZWN0SW5GbG93UmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckZsb3dUaHJlYWQ6OmF1dG9Mb2dpY2FsSGVpZ2h0UmVnaW9uc0NvdW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJOYW1lZEZsb3dUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjphZGRSZWdpb25Ub0xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93
VGhyZWFkOjphZGRSZWdpb25Ub1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1l
ZEZsb3dUaHJlYWQ6OnJlbW92ZVJlZ2lvbkZyb21UaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTmFtZWRGbG93VGhyZWFkOjpjaGVja0ludmFsaWRSZWdpb25zKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJOYW1lZEZsb3dUaHJlYWQ6OmludmFsaWRSZW5kZXJSZWdpb25MaXN0KToKKyAgICAgICAgKFJl
bmRlck5hbWVkRmxvd1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dU
aHJlYWQ6OmNhbkJlRGVzdHJveWVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVHJlZUFz
VGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVJlbmRlclJlZ2lvbkxpc3QpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVJlbmRlck5hbWVkRmxvd1Ro
cmVhZHMpOiBUaGUgdmFsaWQgcmVnaW9ucyBhcmUgbGlzdGVkIGZpcnN0IGZvbGxvd2VkIGJ5IHRo
ZSBpbnZhbGlkIHJlZ2lvbnMuCisKIDIwMTItMTAtMDkgIEFycGl0YSBCYWh1Z3VuYSAgPGFycGl0
YWJhaHVndW5hQGdtYWlsLmNvbT4KIAogICAgICAgICBUZXh0IGRlY29yYXRpb25zIHNwZWNpZmll
ZCBvbiB0aGUgY29udGFpbmluZyBibG9jayBhcmUgbm90IHByb3Blcmx5IGFwcGxpZWQgd2hlbiA6
OmZpcnN0LWxpbmUgaXMgcHJlc2VudC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9X
ZWJLaXROYW1lZEZsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE5hbWVkRmxvdy5j
cHAKaW5kZXggYmYwNWQyYzI5YzIzNmRhZDM5MzA4ZThiYTRmMmFlMzVhMTNjNzQxNS4uNTkzZTUx
YTZjMjU5ZjI5OTgwYWJjMzE4YTU0ZDA4NjFkYTlhMjc3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL1dlYktpdE5hbWVkRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1dl
YktpdE5hbWVkRmxvdy5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0
PiBXZWJLaXROYW1lZEZsb3c6OmdldFJlZ2lvbnNCeUNvbnRlbnQoTm9kZSogY29udGVudE5vZGUp
CiAgICAgICAgIGZvciAoUmVuZGVyUmVnaW9uTGlzdDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IHJl
Z2lvbkxpc3QuYmVnaW4oKTsgaXRlciAhPSByZWdpb25MaXN0LmVuZCgpOyArK2l0ZXIpIHsKICAg
ICAgICAgICAgIGNvbnN0IFJlbmRlclJlZ2lvbiogcmVuZGVyUmVnaW9uID0gKml0ZXI7CiAgICAg
ICAgICAgICAvLyBGSVhNRTogUHNldWRvLWVsZW1lbnRzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhl
IGxpc3QuCi0gICAgICAgICAgICBpZiAoIXJlbmRlclJlZ2lvbi0+aXNWYWxpZCgpIHx8ICFyZW5k
ZXJSZWdpb24tPm5vZGUoKSkKKyAgICAgICAgICAgIGlmICghcmVuZGVyUmVnaW9uLT5ub2RlKCkp
CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAobV9wYXJlbnRGbG93
VGhyZWFkLT5vYmplY3RJbkZsb3dSZWdpb24oY29udGVudE5vZGUtPnJlbmRlcmVyKCksIHJlbmRl
clJlZ2lvbikpCiAgICAgICAgICAgICAgICAgcmVnaW9uTm9kZXMuYXBwZW5kKHJlbmRlclJlZ2lv
bi0+bm9kZSgpKTsKQEAgLTE0NCw3ICsxNDQsNyBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBXZWJL
aXROYW1lZEZsb3c6OmdldFJlZ2lvbnMoKQogICAgIGZvciAoUmVuZGVyUmVnaW9uTGlzdDo6Y29u
c3RfaXRlcmF0b3IgaXRlciA9IHJlZ2lvbkxpc3QuYmVnaW4oKTsgaXRlciAhPSByZWdpb25MaXN0
LmVuZCgpOyArK2l0ZXIpIHsKICAgICAgICAgY29uc3QgUmVuZGVyUmVnaW9uKiByZW5kZXJSZWdp
b24gPSAqaXRlcjsKICAgICAgICAgLy8gRklYTUU6IFBzZXVkby1lbGVtZW50cyBhcmUgbm90IGlu
Y2x1ZGVkIGluIHRoZSBsaXN0LgotICAgICAgICBpZiAoIXJlbmRlclJlZ2lvbi0+aXNWYWxpZCgp
IHx8ICFyZW5kZXJSZWdpb24tPm5vZGUoKSkKKyAgICAgICAgaWYgKCFyZW5kZXJSZWdpb24tPm5v
ZGUoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICByZWdpb25Ob2Rlcy5hcHBlbmQo
cmVuZGVyUmVnaW9uLT5ub2RlKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGbG93VGhyZWFkLmNwcAppbmRleCA1MTIyOGRiY2I4ODgyOWQ0YjZhYTk2YTJjOTFi
OWZiZDU0Mjc4ZTNiLi4zNzk0NDNiNGFiNjBlZGRhMTFhMjU1ZTgzNTQ2MWEzYzgwZDNiNWZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCkBAIC00
Nyw3ICs0Nyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVuZGVyRmxvd1RocmVhZDo6UmVu
ZGVyRmxvd1RocmVhZChOb2RlKiBub2RlKQogICAgIDogUmVuZGVyQmxvY2sobm9kZSkKLSAgICAs
IG1faGFzVmFsaWRSZWdpb25zKGZhbHNlKQogICAgICwgbV9yZWdpb25zSW52YWxpZGF0ZWQoZmFs
c2UpCiAgICAgLCBtX3JlZ2lvbnNIYXZlVW5pZm9ybUxvZ2ljYWxXaWR0aCh0cnVlKQogICAgICwg
bV9yZWdpb25zSGF2ZVVuaWZvcm1Mb2dpY2FsSGVpZ2h0KHRydWUpCkBAIC0xMzYsMTcgKzEzNSwx
NSBAQCB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OmxheW91dCgpCiAgICAgbV9wYWdlTG9naWNhbEhl
aWdodENoYW5nZWQgPSBtX3JlZ2lvbnNJbnZhbGlkYXRlZCAmJiBldmVySGFkTGF5b3V0KCk7CiAg
ICAgaWYgKG1fcmVnaW9uc0ludmFsaWRhdGVkKSB7CiAgICAgICAgIG1fcmVnaW9uc0ludmFsaWRh
dGVkID0gZmFsc2U7Ci0gICAgICAgIG1faGFzVmFsaWRSZWdpb25zID0gZmFsc2U7CiAgICAgICAg
IG1fcmVnaW9uc0hhdmVVbmlmb3JtTG9naWNhbFdpZHRoID0gdHJ1ZTsKICAgICAgICAgbV9yZWdp
b25zSGF2ZVVuaWZvcm1Mb2dpY2FsSGVpZ2h0ID0gdHJ1ZTsKICAgICAgICAgbV9yZWdpb25SYW5n
ZU1hcC5jbGVhcigpOwogICAgICAgICBMYXlvdXRVbml0IHByZXZpb3VzUmVnaW9uTG9naWNhbFdp
ZHRoID0gMDsKICAgICAgICAgTGF5b3V0VW5pdCBwcmV2aW91c1JlZ2lvbkxvZ2ljYWxIZWlnaHQg
PSAwOworICAgICAgICBib29sIGZpcnN0UmVnaW9uVmlzaXRlZCA9IGZhbHNlOwogICAgICAgICBp
ZiAoaGFzUmVnaW9ucygpKSB7CiAgICAgICAgICAgICBmb3IgKFJlbmRlclJlZ2lvbkxpc3Q6Oml0
ZXJhdG9yIGl0ZXIgPSBtX3JlZ2lvbkxpc3QuYmVnaW4oKTsgaXRlciAhPSBtX3JlZ2lvbkxpc3Qu
ZW5kKCk7ICsraXRlcikgewogICAgICAgICAgICAgICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0g
Kml0ZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFyZWdpb24tPmlzVmFsaWQoKSkKLSAgICAgICAg
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFyZWdpb24tPm5l
ZWRzTGF5b3V0KCkpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHJlZ2lvbi0+
ZGVsZXRlQWxsUmVuZGVyQm94UmVnaW9uSW5mbygpOwpAQCAtMTU0LDggKzE1MSw4IEBAIHZvaWQg
UmVuZGVyRmxvd1RocmVhZDo6bGF5b3V0KCkKICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IHJl
Z2lvbkxvZ2ljYWxXaWR0aCA9IHJlZ2lvbi0+cGFnZUxvZ2ljYWxXaWR0aCgpOwogICAgICAgICAg
ICAgICAgIExheW91dFVuaXQgcmVnaW9uTG9naWNhbEhlaWdodCA9IHJlZ2lvbi0+cGFnZUxvZ2lj
YWxIZWlnaHQoKTsKIAotICAgICAgICAgICAgICAgIGlmICghbV9oYXNWYWxpZFJlZ2lvbnMpCi0g
ICAgICAgICAgICAgICAgICAgIG1faGFzVmFsaWRSZWdpb25zID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICBpZiAoIWZpcnN0UmVnaW9uVmlzaXRlZCkKKyAgICAgICAgICAgICAgICAgICAgZmlyc3RS
ZWdpb25WaXNpdGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
ICAgICAgICAgaWYgKG1fcmVnaW9uc0hhdmVVbmlmb3JtTG9naWNhbFdpZHRoICYmIHByZXZpb3Vz
UmVnaW9uTG9naWNhbFdpZHRoICE9IHJlZ2lvbkxvZ2ljYWxXaWR0aCkKICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fcmVnaW9uc0hhdmVVbmlmb3JtTG9naWNhbFdpZHRoID0gZmFsc2U7CkBAIC0x
NzEsOCArMTY4LDYgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpsYXlvdXQoKQogICAgICAgICAg
ICAgTGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0ID0gMDsKICAgICAgICAgICAgIGZvciAoUmVuZGVy
UmVnaW9uTGlzdDo6aXRlcmF0b3IgaXRlciA9IG1fcmVnaW9uTGlzdC5iZWdpbigpOyBpdGVyICE9
IG1fcmVnaW9uTGlzdC5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAgICAgICAgICAgUmVuZGVyUmVn
aW9uKiByZWdpb24gPSAqaXRlcjsKLSAgICAgICAgICAgICAgICBpZiAoIXJlZ2lvbi0+aXNWYWxp
ZCgpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAg
CiAgICAgICAgICAgICAgICAgTGF5b3V0VW5pdCByZWdpb25Mb2dpY2FsV2lkdGggPSByZWdpb24t
PnBhZ2VMb2dpY2FsV2lkdGgoKTsKICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IHJlZ2lvbkxv
Z2ljYWxIZWlnaHQgPSByZWdpb24tPmxvZ2ljYWxIZWlnaHRPZkFsbEZsb3dUaHJlYWRDb250ZW50
KCk7CkBAIC0yMDEsOCArMTk2LDYgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjp1cGRhdGVMb2dp
Y2FsV2lkdGgoKQogICAgIExheW91dFVuaXQgbG9naWNhbFdpZHRoID0gMDsKICAgICBmb3IgKFJl
bmRlclJlZ2lvbkxpc3Q6Oml0ZXJhdG9yIGl0ZXIgPSBtX3JlZ2lvbkxpc3QuYmVnaW4oKTsgaXRl
ciAhPSBtX3JlZ2lvbkxpc3QuZW5kKCk7ICsraXRlcikgewogICAgICAgICBSZW5kZXJSZWdpb24q
IHJlZ2lvbiA9ICppdGVyOwotICAgICAgICBpZiAoIXJlZ2lvbi0+aXNWYWxpZCgpKQotICAgICAg
ICAgICAgY29udGludWU7CiAgICAgICAgIEFTU0VSVCghcmVnaW9uLT5uZWVkc0xheW91dCgpKTsK
ICAgICAgICAgbG9naWNhbFdpZHRoID0gbWF4KHJlZ2lvbi0+cGFnZUxvZ2ljYWxXaWR0aCgpLCBs
b2dpY2FsV2lkdGgpOwogICAgIH0KQEAgLTIxMSw5ICsyMDQsNiBAQCB2b2lkIFJlbmRlckZsb3dU
aHJlYWQ6OnVwZGF0ZUxvZ2ljYWxXaWR0aCgpCiAgICAgLy8gSWYgdGhlIHJlZ2lvbnMgaGF2ZSBu
b24tdW5pZm9ybSBsb2dpY2FsIHdpZHRocywgdGhlbiBpbnNlcnQgaW5zZXQgaW5mb3JtYXRpb24g
Zm9yIHRoZSBSZW5kZXJGbG93VGhyZWFkLgogICAgIGZvciAoUmVuZGVyUmVnaW9uTGlzdDo6aXRl
cmF0b3IgaXRlciA9IG1fcmVnaW9uTGlzdC5iZWdpbigpOyBpdGVyICE9IG1fcmVnaW9uTGlzdC5l
bmQoKTsgKytpdGVyKSB7CiAgICAgICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0gKml0ZXI7Ci0g
ICAgICAgIGlmICghcmVnaW9uLT5pc1ZhbGlkKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAg
ICAgICAgCiAgICAgICAgIExheW91dFVuaXQgcmVnaW9uTG9naWNhbFdpZHRoID0gcmVnaW9uLT5w
YWdlTG9naWNhbFdpZHRoKCk7CiAgICAgICAgIGlmIChyZWdpb25Mb2dpY2FsV2lkdGggIT0gbG9n
aWNhbFdpZHRoKSB7CiAgICAgICAgICAgICBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0ID0gc3R5bGUo
KS0+ZGlyZWN0aW9uKCkgPT0gTFRSID8gWkVST19MQVlPVVRfVU5JVCA6IGxvZ2ljYWxXaWR0aCAt
IHJlZ2lvbkxvZ2ljYWxXaWR0aDsKQEAgLTIyOSw4ICsyMTksNiBAQCB2b2lkIFJlbmRlckZsb3dU
aHJlYWQ6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQsIExheW91dFVuaXQgbG9naWNh
bFRvcCwgTAogCiAgICAgZm9yIChSZW5kZXJSZWdpb25MaXN0Ojpjb25zdF9pdGVyYXRvciBpdGVy
ID0gbV9yZWdpb25MaXN0LmJlZ2luKCk7IGl0ZXIgIT0gbV9yZWdpb25MaXN0LmVuZCgpOyArK2l0
ZXIpIHsKICAgICAgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSAqaXRlcjsKLSAgICAgICAgaWYg
KCFyZWdpb24tPmlzVmFsaWQoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBBU1NF
UlQoIXJlZ2lvbi0+bmVlZHNMYXlvdXQoKSk7CiAgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fZXh0
ZW50ICs9IHJlZ2lvbi0+bG9naWNhbEhlaWdodE9mQWxsRmxvd1RocmVhZENvbnRlbnQoKTsKICAg
ICB9CkBAIC0zMjQsOCArMzEyLDYgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpyZXBhaW50UmVj
dGFuZ2xlSW5SZWdpb25zKGNvbnN0IExheW91dFJlY3QmIHJlcGFpbnRSZWN0LAogICAgIAogICAg
IGZvciAoUmVuZGVyUmVnaW9uTGlzdDo6aXRlcmF0b3IgaXRlciA9IG1fcmVnaW9uTGlzdC5iZWdp
bigpOyBpdGVyICE9IG1fcmVnaW9uTGlzdC5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAgIFJlbmRl
clJlZ2lvbiogcmVnaW9uID0gKml0ZXI7Ci0gICAgICAgIGlmICghcmVnaW9uLT5pc1ZhbGlkKCkp
Ci0gICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICByZWdpb24tPnJlcGFpbnRGbG93VGhy
ZWFkQ29udGVudChyZXBhaW50UmVjdCwgaW1tZWRpYXRlKTsKICAgICB9CkBAIC0zNDMsOCArMzI5
LDYgQEAgUmVuZGVyUmVnaW9uKiBSZW5kZXJGbG93VGhyZWFkOjpyZWdpb25BdEJsb2NrT2Zmc2V0
KExheW91dFVuaXQgb2Zmc2V0LCBib29sIGV4dGUKICAgICBib29sIHVzZUhvcml6b250YWxXcml0
aW5nTW9kZSA9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCk7CiAgICAgZm9yIChSZW5kZXJSZWdp
b25MaXN0Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gbV9yZWdpb25MaXN0LmJlZ2luKCk7IGl0ZXIg
IT0gbV9yZWdpb25MaXN0LmVuZCgpOyArK2l0ZXIpIHsKICAgICAgICAgUmVuZGVyUmVnaW9uKiBy
ZWdpb24gPSAqaXRlcjsKLSAgICAgICAgaWYgKCFyZWdpb24tPmlzVmFsaWQoKSkKLSAgICAgICAg
ICAgIGNvbnRpbnVlOwogCiAgICAgICAgIGlmIChvZmZzZXQgPD0gMCkKICAgICAgICAgICAgIHJl
dHVybiByZWdpb247CkBAIC00MzIsOCArNDE2LDYgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpy
ZW1vdmVSZW5kZXJCb3hSZWdpb25JbmZvKFJlbmRlckJveCogYm94KQogCiAgICAgZm9yIChSZW5k
ZXJSZWdpb25MaXN0OjppdGVyYXRvciBpdGVyID0gbV9yZWdpb25MaXN0LmZpbmQoc3RhcnRSZWdp
b24pOyBpdGVyICE9IG1fcmVnaW9uTGlzdC5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAgIFJlbmRl
clJlZ2lvbiogcmVnaW9uID0gKml0ZXI7Ci0gICAgICAgIGlmICghcmVnaW9uLT5pc1ZhbGlkKCkp
Ci0gICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgcmVnaW9uLT5yZW1vdmVSZW5kZXJCb3hS
ZWdpb25JbmZvKGJveCk7CiAgICAgICAgIGlmIChyZWdpb24gPT0gZW5kUmVnaW9uKQogICAgICAg
ICAgICAgYnJlYWs7CkBAIC00NDMsOCArNDI1LDYgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpy
ZW1vdmVSZW5kZXJCb3hSZWdpb25JbmZvKFJlbmRlckJveCogYm94KQogICAgIC8vIFdlIGhhdmUg
dG8gbWFrZSBzdXJlIHdlIGRpZCBub3QgbGVhdmUgYW55IFJlbmRlckJveFJlZ2lvbkluZm8gYXR0
YWNoZWQuCiAgICAgZm9yIChSZW5kZXJSZWdpb25MaXN0OjppdGVyYXRvciBpdGVyID0gbV9yZWdp
b25MaXN0LmJlZ2luKCk7IGl0ZXIgIT0gbV9yZWdpb25MaXN0LmVuZCgpOyArK2l0ZXIpIHsKICAg
ICAgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSAqaXRlcjsKLSAgICAgICAgaWYgKCFyZWdpb24t
PmlzVmFsaWQoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBBU1NFUlQoIXJlZ2lv
bi0+cmVuZGVyQm94UmVnaW9uSW5mbyhib3gpKTsKICAgICB9CiAjZW5kaWYKQEAgLTQ2MywxMCAr
NDQzLDYgQEAgYm9vbCBSZW5kZXJGbG93VGhyZWFkOjpsb2dpY2FsV2lkdGhDaGFuZ2VkSW5SZWdp
b25zKGNvbnN0IFJlbmRlckJsb2NrKiBibG9jaywgTGEKIAogICAgIGZvciAoUmVuZGVyUmVnaW9u
TGlzdDo6aXRlcmF0b3IgaXRlciA9IG1fcmVnaW9uTGlzdC5maW5kKHN0YXJ0UmVnaW9uKTsgaXRl
ciAhPSBtX3JlZ2lvbkxpc3QuZW5kKCk7ICsraXRlcikgewogICAgICAgICBSZW5kZXJSZWdpb24q
IHJlZ2lvbiA9ICppdGVyOwotICAgICAgICAKLSAgICAgICAgaWYgKCFyZWdpb24tPmlzVmFsaWQo
KSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCiAgICAgICAgIEFTU0VSVCghcmVnaW9uLT5uZWVk
c0xheW91dCgpKTsKIAogICAgICAgICBPd25QdHI8UmVuZGVyQm94UmVnaW9uSW5mbz4gb2xkSW5m
byA9IHJlZ2lvbi0+dGFrZVJlbmRlckJveFJlZ2lvbkluZm8oYmxvY2spOwpAQCAtNTEzLDI4ICs0
ODksMTQgQEAgUmVuZGVyUmVnaW9uKiBSZW5kZXJGbG93VGhyZWFkOjpmaXJzdFJlZ2lvbigpIGNv
bnN0CiB7CiAgICAgaWYgKCFoYXNWYWxpZFJlZ2lvbkluZm8oKSkKICAgICAgICAgcmV0dXJuIDA7
Ci0gICAgZm9yIChSZW5kZXJSZWdpb25MaXN0Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gbV9yZWdp
b25MaXN0LmJlZ2luKCk7IGl0ZXIgIT0gbV9yZWdpb25MaXN0LmVuZCgpOyArK2l0ZXIpIHsKLSAg
ICAgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSAqaXRlcjsKLSAgICAgICAgaWYgKCFyZWdpb24t
PmlzVmFsaWQoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICByZXR1cm4gcmVnaW9u
OwotICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKKyAgICBy
ZXR1cm4gbV9yZWdpb25MaXN0LmZpcnN0KCk7CiB9CiAKIFJlbmRlclJlZ2lvbiogUmVuZGVyRmxv
d1RocmVhZDo6bGFzdFJlZ2lvbigpIGNvbnN0CiB7CiAgICAgaWYgKCFoYXNWYWxpZFJlZ2lvbklu
Zm8oKSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgZm9yIChSZW5kZXJSZWdpb25MaXN0Ojpjb25z
dF9yZXZlcnNlX2l0ZXJhdG9yIGl0ZXIgPSBtX3JlZ2lvbkxpc3QucmJlZ2luKCk7IGl0ZXIgIT0g
bV9yZWdpb25MaXN0LnJlbmQoKTsgKytpdGVyKSB7Ci0gICAgICAgIFJlbmRlclJlZ2lvbiogcmVn
aW9uID0gKml0ZXI7Ci0gICAgICAgIGlmICghcmVnaW9uLT5pc1ZhbGlkKCkpCi0gICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgcmV0dXJuIHJlZ2lvbjsKLSAgICB9Ci0gICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG1fcmVnaW9uTGlzdC5sYXN0
KCk7CiB9CiAKIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6Y2xlYXJSZW5kZXJPYmplY3RDdXN0b21T
dHlsZShjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwKQEAgLTYzMCwxMCArNTkyLDYgQEAgdm9p
ZCBSZW5kZXJGbG93VGhyZWFkOjpjb21wdXRlT3ZlcmZsb3dTdGF0ZUZvclJlZ2lvbnMoTGF5b3V0
VW5pdCBvbGRDbGllbnRBZnRlckUKICAgICBSZW5kZXJSZWdpb24qIGxhc3RSZWcgPSBsYXN0UmVn
aW9uKCk7CiAgICAgZm9yIChSZW5kZXJSZWdpb25MaXN0OjppdGVyYXRvciBpdGVyID0gbV9yZWdp
b25MaXN0LmJlZ2luKCk7IGl0ZXIgIT0gbV9yZWdpb25MaXN0LmVuZCgpOyArK2l0ZXIpIHsKICAg
ICAgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSAqaXRlcjsKLSAgICAgICAgaWYgKCFyZWdpb24t
PmlzVmFsaWQoKSkgewotICAgICAgICAgICAgcmVnaW9uLT5zZXRSZWdpb25TdGF0ZShSZW5kZXJS
ZWdpb246OlJlZ2lvblVuZGVmaW5lZCk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAg
fQogICAgICAgICBMYXlvdXRVbml0IGZsb3dNaW4gPSBoZWlnaHQgLSAoaXNIb3Jpem9udGFsV3Jp
dGluZ01vZGUoKSA/IHJlZ2lvbi0+Zmxvd1RocmVhZFBvcnRpb25SZWN0KCkueSgpIDogcmVnaW9u
LT5mbG93VGhyZWFkUG9ydGlvblJlY3QoKS54KCkpOwogICAgICAgICBMYXlvdXRVbml0IGZsb3dN
YXggPSBoZWlnaHQgLSAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHJlZ2lvbi0+Zmxvd1Ro
cmVhZFBvcnRpb25SZWN0KCkubWF4WSgpIDogcmVnaW9uLT5mbG93VGhyZWFkUG9ydGlvblJlY3Qo
KS5tYXhYKCkpOwogICAgICAgICBSZW5kZXJSZWdpb246OlJlZ2lvblN0YXRlIHByZXZpb3VzU3Rh
dGUgPSByZWdpb24tPnJlZ2lvblN0YXRlKCk7CkBAIC02NjMsOCArNjIxLDYgQEAgYm9vbCBSZW5k
ZXJGbG93VGhyZWFkOjpyZWdpb25JblJhbmdlKGNvbnN0IFJlbmRlclJlZ2lvbiogdGFyZ2V0UmVn
aW9uLCBjb25zdCBSZW4KIAogICAgIGZvciAoUmVuZGVyUmVnaW9uTGlzdDo6Y29uc3RfaXRlcmF0
b3IgaXQgPSBtX3JlZ2lvbkxpc3QuZmluZChjb25zdF9jYXN0PFJlbmRlclJlZ2lvbio+KHN0YXJ0
UmVnaW9uKSk7IGl0ICE9IG1fcmVnaW9uTGlzdC5lbmQoKTsgKytpdCkgewogICAgICAgICBjb25z
dCBSZW5kZXJSZWdpb24qIGN1cnJSZWdpb24gPSAqaXQ7Ci0gICAgICAgIGlmICghY3VyclJlZ2lv
bi0+aXNWYWxpZCgpKQotICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmICh0YXJnZXRS
ZWdpb24gPT0gY3VyclJlZ2lvbikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBp
ZiAoY3VyclJlZ2lvbiA9PSBlbmRSZWdpb24pCkBAIC02ODAsOCArNjM2LDYgQEAgdm9pZCBSZW5k
ZXJGbG93VGhyZWFkOjpjaGVja1JlZ2lvbnNXaXRoU3R5bGluZygpCiAgICAgYm9vbCBoYXNSZWdp
b25zV2l0aFN0eWxpbmcgPSBmYWxzZTsKICAgICBmb3IgKFJlbmRlclJlZ2lvbkxpc3Q6Oml0ZXJh
dG9yIGl0ZXIgPSBtX3JlZ2lvbkxpc3QuYmVnaW4oKTsgaXRlciAhPSBtX3JlZ2lvbkxpc3QuZW5k
KCk7ICsraXRlcikgewogICAgICAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9ICppdGVyOwotICAg
ICAgICBpZiAoIXJlZ2lvbi0+aXNWYWxpZCgpKQotICAgICAgICAgICAgY29udGludWU7CiAgICAg
ICAgIGlmIChyZWdpb24tPmhhc0N1c3RvbVJlZ2lvblN0eWxlKCkpIHsKICAgICAgICAgICAgIGhh
c1JlZ2lvbnNXaXRoU3R5bGluZyA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKQEAgLTcyNSw4
ICs2NzksNiBAQCBib29sIFJlbmRlckZsb3dUaHJlYWQ6Om9iamVjdEluRmxvd1JlZ2lvbihjb25z
dCBSZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUmVuZAogICAgICAgICAvLyB0aGVuIHRoZSBv
YmplY3QgaXMgaW4gbGFzdCByZWdpb24uCiAgICAgICAgIGZvciAoUmVuZGVyUmVnaW9uTGlzdDo6
Y29uc3RfaXRlcmF0b3IgaXQgPSBtX3JlZ2lvbkxpc3QuZmluZChlbmNsb3NpbmdCb3hTdGFydFJl
Z2lvbik7IGl0ICE9IG1fcmVnaW9uTGlzdC5lbmQoKTsgKytpdCkgewogICAgICAgICAgICAgY29u
c3QgUmVuZGVyUmVnaW9uKiBjdXJyUmVnaW9uID0gKml0OwotICAgICAgICAgICAgaWYgKCFyZWdp
b24tPmlzVmFsaWQoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlm
IChjdXJyUmVnaW9uID09IHJlZ2lvbikKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIGlmIChvYmplY3RBQkJSZWN0LmludGVyc2VjdHMoY3VyclJlZ2lvbi0+YWJzb2x1dGVCb3Vu
ZGluZ0JveFJlY3QodHJ1ZSkpKQpAQCAtNzQ0LDExICs2OTYsNiBAQCB1bnNpZ25lZCBSZW5kZXJG
bG93VGhyZWFkOjphdXRvTG9naWNhbEhlaWdodFJlZ2lvbnNDb3VudCgpIGNvbnN0CiAgICAgdW5z
aWduZWQgYXV0b0xvZ2ljYWxIZWlnaHRSZWdpb25zID0gMDsKICAgICBmb3IgKFJlbmRlclJlZ2lv
bkxpc3Q6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX3JlZ2lvbkxpc3QuYmVnaW4oKTsgaXRlciAh
PSBtX3JlZ2lvbkxpc3QuZW5kKCk7ICsraXRlcikgewogICAgICAgICBjb25zdCBSZW5kZXJSZWdp
b24qIHJlZ2lvbiA9ICppdGVyOwotICAgICAgICBpZiAoIXJlZ2lvbi0+aXNWYWxpZCgpKSB7Ci0g
ICAgICAgICAgICBBU1NFUlQoIXJlZ2lvbi0+aGFzQXV0b0xvZ2ljYWxIZWlnaHQoKSk7Ci0gICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCiAgICAgICAgIGlmIChyZWdpb24tPmhhc0F1
dG9Mb2dpY2FsSGVpZ2h0KCkpCiAgICAgICAgICAgICBhdXRvTG9naWNhbEhlaWdodFJlZ2lvbnMr
KzsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxv
d1RocmVhZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaApp
bmRleCBiOTQyZWVlNTcyZTk1YWRhYzNjMDg5ZTEzMjUzNzY1NjZkZDE2NTIyLi45M2U5MTM3ZjA5
OGQwYTU1YjA3MWI2NjVlMDYxZDNkZmY0ZGM2ODdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9SZW5kZXJGbG93VGhyZWFkLmgKQEAgLTgwLDEzICs4MCwxMiBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBoaXRUZXN0Rmxvd1RocmVhZFBvcnRpb25JblJlZ2lvbihSZW5kZXJSZWdpb24qLCBMYXlv
dXRSZWN0IGZsb3dUaHJlYWRQb3J0aW9uUmVjdCwgTGF5b3V0UmVjdCBmbG93VGhyZWFkUG9ydGlv
bk92ZXJmbG93UmVjdCwgY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29u
c3QgSGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2lu
dCYgYWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0OwogCiAgICAgYm9vbCBoYXNSZWdpb25zKCkgY29u
c3QgeyByZXR1cm4gbV9yZWdpb25MaXN0LnNpemUoKTsgfQotICAgIGJvb2wgaGFzVmFsaWRSZWdp
b25zKCkgY29uc3QgeyBBU1NFUlQoIW1fcmVnaW9uc0ludmFsaWRhdGVkKTsgcmV0dXJuIG1faGFz
VmFsaWRSZWdpb25zOyB9CiAgICAgLy8gQ2hlY2sgaWYgdGhlIGNvbnRlbnQgaXMgZmxvd24gaW50
byBhdCBsZWFzdCBhIHJlZ2lvbiB3aXRoIHJlZ2lvbiBzdHlsaW5nIHJ1bGVzLgogICAgIGJvb2wg
aGFzUmVnaW9uc1dpdGhTdHlsaW5nKCkgY29uc3QgeyByZXR1cm4gbV9oYXNSZWdpb25zV2l0aFN0
eWxpbmc7IH0KICAgICB2b2lkIGNoZWNrUmVnaW9uc1dpdGhTdHlsaW5nKCk7CiAKICAgICB2b2lk
IGludmFsaWRhdGVSZWdpb25zKCkgeyBtX3JlZ2lvbnNJbnZhbGlkYXRlZCA9IHRydWU7IHNldE5l
ZWRzTGF5b3V0KHRydWUpOyB9Ci0gICAgYm9vbCBoYXNWYWxpZFJlZ2lvbkluZm8oKSBjb25zdCB7
IHJldHVybiAhbV9yZWdpb25zSW52YWxpZGF0ZWQgJiYgaGFzVmFsaWRSZWdpb25zKCk7IH0KKyAg
ICBib29sIGhhc1ZhbGlkUmVnaW9uSW5mbygpIGNvbnN0IHsgcmV0dXJuICFtX3JlZ2lvbnNJbnZh
bGlkYXRlZCAmJiAhbV9yZWdpb25MaXN0LmlzRW1wdHkoKTsgfQogCiAgICAgc3RhdGljIFBhc3NS
ZWZQdHI8UmVuZGVyU3R5bGU+IGNyZWF0ZUZsb3dUaHJlYWRTdHlsZShSZW5kZXJTdHlsZSogcGFy
ZW50U3R5bGUpOwogCkBAIC0xNzksNyArMTc4LDYgQEAgcHJvdGVjdGVkOgogICAgIHR5cGVkZWYg
SGFzaE1hcDxjb25zdCBSZW5kZXJCb3gqLCBSZW5kZXJSZWdpb25SYW5nZT4gUmVuZGVyUmVnaW9u
UmFuZ2VNYXA7CiAgICAgUmVuZGVyUmVnaW9uUmFuZ2VNYXAgbV9yZWdpb25SYW5nZU1hcDsKIAot
ICAgIGJvb2wgbV9oYXNWYWxpZFJlZ2lvbnMgOiAxOwogICAgIGJvb2wgbV9yZWdpb25zSW52YWxp
ZGF0ZWQgOiAxOwogICAgIGJvb2wgbV9yZWdpb25zSGF2ZVVuaWZvcm1Mb2dpY2FsV2lkdGggOiAx
OwogICAgIGJvb2wgbV9yZWdpb25zSGF2ZVVuaWZvcm1Mb2dpY2FsSGVpZ2h0IDogMTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAKaW5k
ZXggZjVlNjNmNDA2NDdhOWUxMTNkNTQ1ZjY2Yzk4NTRlYjNhZjE2NzY2Mi4uNTYyNDdjOGY4MTQx
MGZlNjNjNTVmMDFiNjc2ZDM5ZjdlMGM1YzZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAKQEAgLTIwMSwyNCArMjAxLDMxIEBA
IHN0YXRpYyBib29sIGNvbXBhcmVSZW5kZXJSZWdpb25zKGNvbnN0IFJlbmRlclJlZ2lvbiogZmly
c3RSZWdpb24sIGNvbnN0IFJlbmRlclJlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgUmVu
ZGVyTmFtZWRGbG93VGhyZWFkOjphZGRSZWdpb25Ub1RocmVhZChSZW5kZXJSZWdpb24qIHJlbmRl
clJlZ2lvbikKKy8vIFRoaXMgaGVscGVyIGZ1bmN0aW9uIGFkZHMgYSByZWdpb24gdG8gYSBsaXN0
IHByZXNlcnZpbmcgdGhlIG9yZGVyIHByb3BlcnR5IG9mIHRoZSBsaXN0Lgorc3RhdGljIHZvaWQg
YWRkUmVnaW9uVG9MaXN0KFJlbmRlclJlZ2lvbkxpc3QmIHJlZ2lvbkxpc3QsIFJlbmRlclJlZ2lv
biogcmVuZGVyUmVnaW9uKQogewotICAgIEFTU0VSVChyZW5kZXJSZWdpb24pOwotICAgIGlmICht
X3JlZ2lvbkxpc3QuaXNFbXB0eSgpKQotICAgICAgICBtX3JlZ2lvbkxpc3QuYWRkKHJlbmRlclJl
Z2lvbik7CisgICAgaWYgKHJlZ2lvbkxpc3QuaXNFbXB0eSgpKQorICAgICAgICByZWdpb25MaXN0
LmFkZChyZW5kZXJSZWdpb24pOwogICAgIGVsc2UgewogICAgICAgICAvLyBGaW5kIHRoZSBmaXJz
dCByZWdpb24gImdyZWF0ZXIiIHRoYW4gcmVuZGVyUmVnaW9uLgotICAgICAgICBSZW5kZXJSZWdp
b25MaXN0OjppdGVyYXRvciBpdCA9IG1fcmVnaW9uTGlzdC5iZWdpbigpOwotICAgICAgICB3aGls
ZSAoaXQgIT0gbV9yZWdpb25MaXN0LmVuZCgpICYmICFjb21wYXJlUmVuZGVyUmVnaW9ucyhyZW5k
ZXJSZWdpb24sICppdCkpCisgICAgICAgIFJlbmRlclJlZ2lvbkxpc3Q6Oml0ZXJhdG9yIGl0ID0g
cmVnaW9uTGlzdC5iZWdpbigpOworICAgICAgICB3aGlsZSAoaXQgIT0gcmVnaW9uTGlzdC5lbmQo
KSAmJiAhY29tcGFyZVJlbmRlclJlZ2lvbnMocmVuZGVyUmVnaW9uLCAqaXQpKQogICAgICAgICAg
ICAgKytpdDsKLSAgICAgICAgbV9yZWdpb25MaXN0Lmluc2VydEJlZm9yZShpdCwgcmVuZGVyUmVn
aW9uKTsKKyAgICAgICAgcmVnaW9uTGlzdC5pbnNlcnRCZWZvcmUoaXQsIHJlbmRlclJlZ2lvbik7
CiAgICAgfQorfQorCit2b2lkIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6YWRkUmVnaW9uVG9UaHJl
YWQoUmVuZGVyUmVnaW9uKiByZW5kZXJSZWdpb24pCit7CisgICAgQVNTRVJUKHJlbmRlclJlZ2lv
bik7CiAKICAgICByZXNldE1hcmtGb3JEZXN0cnVjdGlvbigpOwogCiAgICAgQVNTRVJUKCFyZW5k
ZXJSZWdpb24tPmlzVmFsaWQoKSk7CiAgICAgaWYgKHJlbmRlclJlZ2lvbi0+cGFyZW50TmFtZWRG
bG93VGhyZWFkKCkpIHsKICAgICAgICAgaWYgKHJlbmRlclJlZ2lvbi0+cGFyZW50TmFtZWRGbG93
VGhyZWFkKCktPmRlcGVuZHNPbih0aGlzKSkgeworICAgICAgICAgICAgLy8gVGhlIG9yZGVyIG9m
IGludmFsaWQgcmVnaW9ucyBpcyBpcnJlbGV2YW50LgorICAgICAgICAgICAgbV9pbnZhbGlkUmVn
aW9uTGlzdC5hZGQocmVuZGVyUmVnaW9uKTsKICAgICAgICAgICAgIC8vIFJlZ2lzdGVyIG91cnNl
bGYgdG8gZ2V0IGEgbm90aWZpY2F0aW9uIHdoZW4gdGhlIHN0YXRlIGNoYW5nZXMuCiAgICAgICAg
ICAgICByZW5kZXJSZWdpb24tPnBhcmVudE5hbWVkRmxvd1RocmVhZCgpLT5tX29ic2VydmVyVGhy
ZWFkc1NldC5hZGQodGhpcyk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yMjgsNiArMjM1LDcg
QEAgdm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmFkZFJlZ2lvblRvVGhyZWFkKFJlbmRlclJl
Z2lvbiogcmVuZGVyUmVnaW9uKQogICAgIH0KIAogICAgIHJlbmRlclJlZ2lvbi0+c2V0SXNWYWxp
ZCh0cnVlKTsKKyAgICBhZGRSZWdpb25Ub0xpc3QobV9yZWdpb25MaXN0LCByZW5kZXJSZWdpb24p
OwogCiAgICAgaW52YWxpZGF0ZVJlZ2lvbnMoKTsKIH0KQEAgLTIzNiwxMCArMjQ0LDExIEBAIHZv
aWQgUmVuZGVyTmFtZWRGbG93VGhyZWFkOjpyZW1vdmVSZWdpb25Gcm9tVGhyZWFkKFJlbmRlclJl
Z2lvbiogcmVuZGVyUmVnaW9uKQogewogICAgIEFTU0VSVChyZW5kZXJSZWdpb24pOwogICAgIG1f
cmVnaW9uUmFuZ2VNYXAuY2xlYXIoKTsKLSAgICBtX3JlZ2lvbkxpc3QucmVtb3ZlKHJlbmRlclJl
Z2lvbik7CiAKICAgICBpZiAocmVuZGVyUmVnaW9uLT5wYXJlbnROYW1lZEZsb3dUaHJlYWQoKSkg
ewogICAgICAgICBpZiAoIXJlbmRlclJlZ2lvbi0+aXNWYWxpZCgpKSB7CisgICAgICAgICAgICBB
U1NFUlQobV9pbnZhbGlkUmVnaW9uTGlzdC5jb250YWlucyhyZW5kZXJSZWdpb24pKTsKKyAgICAg
ICAgICAgIG1faW52YWxpZFJlZ2lvbkxpc3QucmVtb3ZlKHJlbmRlclJlZ2lvbik7CiAgICAgICAg
ICAgICByZW5kZXJSZWdpb24tPnBhcmVudE5hbWVkRmxvd1RocmVhZCgpLT5tX29ic2VydmVyVGhy
ZWFkc1NldC5yZW1vdmUodGhpcyk7CiAgICAgICAgICAgICAvLyBObyBuZWVkIHRvIGludmFsaWRh
dGUgdGhlIHJlZ2lvbnMgcmVjdGFuZ2xlcy4gVGhlIHJlbW92ZWQgcmVnaW9uCiAgICAgICAgICAg
ICAvLyB3YXMgbm90IHRha2VuIGludG8gYWNjb3VudC4gSnVzdCByZXR1cm4gaGVyZS4KQEAgLTI0
OCw2ICsyNTcsOSBAQCB2b2lkIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6cmVtb3ZlUmVnaW9uRnJv
bVRocmVhZChSZW5kZXJSZWdpb24qIHJlbmRlclJlZ2lvbikKICAgICAgICAgcmVtb3ZlRGVwZW5k
ZW5jeU9uRmxvd1RocmVhZChyZW5kZXJSZWdpb24tPnBhcmVudE5hbWVkRmxvd1RocmVhZCgpKTsK
ICAgICB9CiAKKyAgICBBU1NFUlQobV9yZWdpb25MaXN0LmNvbnRhaW5zKHJlbmRlclJlZ2lvbikp
OworICAgIG1fcmVnaW9uTGlzdC5yZW1vdmUocmVuZGVyUmVnaW9uKTsKKwogICAgIGlmIChjYW5C
ZURlc3Ryb3llZCgpKQogICAgICAgICBzZXRNYXJrRm9yRGVzdHJ1Y3Rpb24oKTsKIApAQCAtMjYw
LDE5ICsyNzIsMjkgQEAgdm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnJlbW92ZVJlZ2lvbkZy
b21UaHJlYWQoUmVuZGVyUmVnaW9uKiByZW5kZXJSZWdpb24pCiAKIHZvaWQgUmVuZGVyTmFtZWRG
bG93VGhyZWFkOjpjaGVja0ludmFsaWRSZWdpb25zKCkKIHsKLSAgICBmb3IgKFJlbmRlclJlZ2lv
bkxpc3Q6Oml0ZXJhdG9yIGl0ZXIgPSBtX3JlZ2lvbkxpc3QuYmVnaW4oKTsgaXRlciAhPSBtX3Jl
Z2lvbkxpc3QuZW5kKCk7ICsraXRlcikgeworICAgIFZlY3RvcjxSZW5kZXJSZWdpb24qPiBuZXdW
YWxpZFJlZ2lvbnM7CisgICAgZm9yIChSZW5kZXJSZWdpb25MaXN0OjppdGVyYXRvciBpdGVyID0g
bV9pbnZhbGlkUmVnaW9uTGlzdC5iZWdpbigpOyBpdGVyICE9IG1faW52YWxpZFJlZ2lvbkxpc3Qu
ZW5kKCk7ICsraXRlcikgewogICAgICAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9ICppdGVyOwog
ICAgICAgICAvLyBUaGUgb25seSByZWFzb24gYSByZWdpb24gd291bGQgYmUgaW52YWxpZCBpcyBi
ZWNhdXNlIGl0IGhhcyBhIHBhcmVudCBmbG93IHRocmVhZC4KLSAgICAgICAgQVNTRVJUKHJlZ2lv
bi0+aXNWYWxpZCgpIHx8IHJlZ2lvbi0+cGFyZW50TmFtZWRGbG93VGhyZWFkKCkpOwotICAgICAg
ICBpZiAocmVnaW9uLT5pc1ZhbGlkKCkgfHwgcmVnaW9uLT5wYXJlbnROYW1lZEZsb3dUaHJlYWQo
KS0+ZGVwZW5kc09uKHRoaXMpKQorICAgICAgICBBU1NFUlQoIXJlZ2lvbi0+aXNWYWxpZCgpICYm
IHJlZ2lvbi0+cGFyZW50TmFtZWRGbG93VGhyZWFkKCkpOworICAgICAgICBpZiAocmVnaW9uLT5w
YXJlbnROYW1lZEZsb3dUaHJlYWQoKS0+ZGVwZW5kc09uKHRoaXMpKQogICAgICAgICAgICAgY29u
dGludWU7CiAKKyAgICAgICAgbmV3VmFsaWRSZWdpb25zLmFwcGVuZChyZWdpb24pOworICAgIH0K
KworICAgIGZvciAoVmVjdG9yPFJlbmRlclJlZ2lvbio+OjppdGVyYXRvciBpdGVyID0gbmV3VmFs
aWRSZWdpb25zLmJlZ2luKCk7IGl0ZXIgIT0gbmV3VmFsaWRSZWdpb25zLmVuZCgpOyArK2l0ZXIp
IHsKKyAgICAgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSAqaXRlcjsKKyAgICAgICAgbV9pbnZh
bGlkUmVnaW9uTGlzdC5yZW1vdmUocmVnaW9uKTsKICAgICAgICAgcmVnaW9uLT5wYXJlbnROYW1l
ZEZsb3dUaHJlYWQoKS0+bV9vYnNlcnZlclRocmVhZHNTZXQucmVtb3ZlKHRoaXMpOwotICAgICAg
ICBhZGREZXBlbmRlbmN5T25GbG93VGhyZWFkKHJlZ2lvbi0+cGFyZW50TmFtZWRGbG93VGhyZWFk
KCkpOwogICAgICAgICByZWdpb24tPnNldElzVmFsaWQodHJ1ZSk7Ci0gICAgICAgIGludmFsaWRh
dGVSZWdpb25zKCk7CisgICAgICAgIGFkZERlcGVuZGVuY3lPbkZsb3dUaHJlYWQocmVnaW9uLT5w
YXJlbnROYW1lZEZsb3dUaHJlYWQoKSk7CisgICAgICAgIGFkZFJlZ2lvblRvTGlzdChtX3JlZ2lv
bkxpc3QsIHJlZ2lvbik7CiAgICAgfQogCisgICAgaWYgKCFuZXdWYWxpZFJlZ2lvbnMuaXNFbXB0
eSgpKQorICAgICAgICBpbnZhbGlkYXRlUmVnaW9ucygpOworCiAgICAgaWYgKG1fb2JzZXJ2ZXJU
aHJlYWRzU2V0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmggYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgKaW5kZXggMzE5OTMwN2NmZmZj
ZGQ5Yjg1ZDRjZGFjZWQzYzZjZjZhOTgxZWY1Zi4uYTgzMzE1MWJmOTVmNDJiOWRhYjJiYmZkMDc3
ZTQ1NDE3ZTMyNzZhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
ck5hbWVkRmxvd1RocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJO
YW1lZEZsb3dUaHJlYWQuaApAQCAtNTAsNiArNTAsOCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBB
dG9taWNTdHJpbmcmIGZsb3dUaHJlYWROYW1lKCkgY29uc3Q7CiAKKyAgICBjb25zdCBSZW5kZXJS
ZWdpb25MaXN0JiBpbnZhbGlkUmVuZGVyUmVnaW9uTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1faW52
YWxpZFJlZ2lvbkxpc3Q7IH0KKwogICAgIFJlbmRlck9iamVjdCogbmV4dFJlbmRlcmVyRm9yTm9k
ZShOb2RlKikgY29uc3Q7CiAgICAgUmVuZGVyT2JqZWN0KiBwcmV2aW91c1JlbmRlcmVyRm9yTm9k
ZShOb2RlKikgY29uc3Q7CiAKQEAgLTg2LDcgKzg4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFk
ZERlcGVuZGVuY3lPbkZsb3dUaHJlYWQoUmVuZGVyTmFtZWRGbG93VGhyZWFkKik7CiAgICAgdm9p
ZCByZW1vdmVEZXBlbmRlbmN5T25GbG93VGhyZWFkKFJlbmRlck5hbWVkRmxvd1RocmVhZCopOwog
ICAgIHZvaWQgY2hlY2tJbnZhbGlkUmVnaW9ucygpOwotICAgIGJvb2wgY2FuQmVEZXN0cm95ZWQo
KSBjb25zdCB7IHJldHVybiBtX3JlZ2lvbkxpc3QuaXNFbXB0eSgpICYmIG1fY29udGVudE5vZGVz
LmlzRW1wdHkoKTsgfQorICAgIGJvb2wgY2FuQmVEZXN0cm95ZWQoKSBjb25zdCB7IHJldHVybiBt
X2ludmFsaWRSZWdpb25MaXN0LmlzRW1wdHkoKSAmJiBtX3JlZ2lvbkxpc3QuaXNFbXB0eSgpICYm
IG1fY29udGVudE5vZGVzLmlzRW1wdHkoKTsgfQogICAgIHZvaWQgcmVnaW9uTGF5b3V0VXBkYXRl
RXZlbnRUaW1lckZpcmVkKFRpbWVyPFJlbmRlck5hbWVkRmxvd1RocmVhZD4qKTsKICAgICB2b2lk
IGNsZWFyQ29udGVudE5vZGVzKCk7CiAKQEAgLTEwNyw2ICsxMDksOCBAQCBwcml2YXRlOgogCiAg
ICAgTmFtZWRGbG93Q29udGVudE5vZGVzIG1fY29udGVudE5vZGVzOwogCisgICAgUmVuZGVyUmVn
aW9uTGlzdCBtX2ludmFsaWRSZWdpb25MaXN0OworCiAgICAgLy8gVGhlIERPTSBPYmplY3QgdGhh
dCByZXByZXNlbnRzIGEgbmFtZWQgZmxvdy4KICAgICBSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiBt
X25hbWVkRmxvdzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRl
clRyZWVBc1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1Rl
eHQuY3BwCmluZGV4IDgxM2NmN2UwYzkyYThlM2M4ZWIzZTk2OTEwZjAzYWEzNmE1ZDE0YTQuLmFj
NmJkMzQ1MjRmY2NlMDIzNzI2MTYxYjM5ZTBlNDc3ZjE0MzZkMWUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTY1NSw2ICs2NTUsMzEgQEAg
c3RhdGljIHZvaWQgd3JpdGUoVGV4dFN0cmVhbSYgdHMsIFJlbmRlckxheWVyJiBsLAogICAgICAg
ICB3cml0ZSh0cywgKmwucmVuZGVyZXIoKSwgaW5kZW50ICsgMSwgYmVoYXZpb3IpOwogfQogCitz
dGF0aWMgdm9pZCB3cml0ZVJlbmRlclJlZ2lvbkxpc3QoY29uc3QgUmVuZGVyUmVnaW9uTGlzdCYg
Zmxvd1RocmVhZFJlZ2lvbkxpc3QsIFRleHRTdHJlYW0mIHRzLCBpbnQgaW5kZW50KQoreworICAg
IGZvciAoUmVuZGVyUmVnaW9uTGlzdDo6Y29uc3RfaXRlcmF0b3IgaXRSUiA9IGZsb3dUaHJlYWRS
ZWdpb25MaXN0LmJlZ2luKCk7IGl0UlIgIT0gZmxvd1RocmVhZFJlZ2lvbkxpc3QuZW5kKCk7ICsr
aXRSUikgeworICAgICAgICBSZW5kZXJSZWdpb24qIHJlbmRlclJlZ2lvbiA9ICppdFJSOworICAg
ICAgICB3cml0ZUluZGVudCh0cywgaW5kZW50ICsgMik7CisgICAgICAgIHRzIDw8ICJSZW5kZXJS
ZWdpb24iOworICAgICAgICBpZiAocmVuZGVyUmVnaW9uLT5nZW5lcmF0aW5nTm9kZSgpKSB7Cisg
ICAgICAgICAgICBTdHJpbmcgdGFnTmFtZSA9IGdldFRhZ05hbWUocmVuZGVyUmVnaW9uLT5nZW5l
cmF0aW5nTm9kZSgpKTsKKyAgICAgICAgICAgIGlmICghdGFnTmFtZS5pc0VtcHR5KCkpCisgICAg
ICAgICAgICAgICAgdHMgPDwgIiB7IiA8PCB0YWdOYW1lIDw8ICJ9IjsKKyAgICAgICAgICAgIGlm
IChyZW5kZXJSZWdpb24tPmdlbmVyYXRpbmdOb2RlKCktPmlzRWxlbWVudE5vZGUoKSAmJiByZW5k
ZXJSZWdpb24tPmdlbmVyYXRpbmdOb2RlKCktPmhhc0lEKCkpIHsKKyAgICAgICAgICAgICAgICBF
bGVtZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KHJlbmRlclJlZ2lvbi0+Z2Vu
ZXJhdGluZ05vZGUoKSk7CisgICAgICAgICAgICAgICAgdHMgPDwgIiAjIiA8PCBlbGVtZW50LT5p
ZEZvclN0eWxlUmVzb2x1dGlvbigpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHJl
bmRlclJlZ2lvbi0+aGFzQ3VzdG9tUmVnaW9uU3R5bGUoKSkKKyAgICAgICAgICAgICAgICB0cyA8
PCAiIHJlZ2lvbiBzdHlsZTogMSI7CisgICAgICAgICAgICBpZiAocmVuZGVyUmVnaW9uLT5oYXNB
dXRvTG9naWNhbEhlaWdodCgpKQorICAgICAgICAgICAgICAgIHRzIDw8ICIgaGFzQXV0b0xvZ2lj
YWxIZWlnaHQiOworICAgICAgICB9CisgICAgICAgIGlmICghcmVuZGVyUmVnaW9uLT5pc1ZhbGlk
KCkpCisgICAgICAgICAgICB0cyA8PCAiIGludmFsaWQiOworICAgICAgICB0cyA8PCAiXG4iOwor
ICAgIH0KK30KKwogc3RhdGljIHZvaWQgd3JpdGVSZW5kZXJOYW1lZEZsb3dUaHJlYWRzKFRleHRT
dHJlYW0mIHRzLCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3LCBjb25zdCBSZW5kZXJMYXllciogcm9v
dExheWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTGF5b3V0UmVjdCYgcGFpbnRS
ZWN0LCBpbnQgaW5kZW50LCBSZW5kZXJBc1RleHRCZWhhdmlvciBiZWhhdmlvcikKIHsKQEAgLTY3
NSwzMiArNzAwLDE0IEBAIHN0YXRpYyB2b2lkIHdyaXRlUmVuZGVyTmFtZWRGbG93VGhyZWFkcyhU
ZXh0U3RyZWFtJiB0cywgUmVuZGVyVmlldyogcmVuZGVyVmlldywKICAgICAgICAgUmVuZGVyTGF5
ZXIqIGxheWVyID0gcmVuZGVyRmxvd1RocmVhZC0+bGF5ZXIoKTsKICAgICAgICAgd3JpdGVMYXll
cnModHMsIHJvb3RMYXllciwgbGF5ZXIsIHBhaW50UmVjdCwgaW5kZW50ICsgMiwgYmVoYXZpb3Ip
OwogCi0gICAgICAgIC8vIERpc3BsYXkgdGhlIHJlbmRlciByZWdpb25zIGF0dGFjaGVkIHRvIHRo
aXMgZmxvdyB0aHJlYWQKLSAgICAgICAgY29uc3QgUmVuZGVyUmVnaW9uTGlzdCYgZmxvd1RocmVh
ZFJlZ2lvbkxpc3QgPSByZW5kZXJGbG93VGhyZWFkLT5yZW5kZXJSZWdpb25MaXN0KCk7Ci0gICAg
ICAgIGlmICghZmxvd1RocmVhZFJlZ2lvbkxpc3QuaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIERp
c3BsYXkgdGhlIHZhbGlkIGFuZCBpbnZhbGlkIHJlbmRlciByZWdpb25zIGF0dGFjaGVkIHRvIHRo
aXMgZmxvdyB0aHJlYWQuCisgICAgICAgIGNvbnN0IFJlbmRlclJlZ2lvbkxpc3QmIHZhbGlkUmVn
aW9uc0xpc3QgPSByZW5kZXJGbG93VGhyZWFkLT5yZW5kZXJSZWdpb25MaXN0KCk7CisgICAgICAg
IGNvbnN0IFJlbmRlclJlZ2lvbkxpc3QmIGludmFsaWRSZWdpb25zTGlzdCA9IHJlbmRlckZsb3dU
aHJlYWQtPmludmFsaWRSZW5kZXJSZWdpb25MaXN0KCk7CisgICAgICAgIGlmICghdmFsaWRSZWdp
b25zTGlzdC5pc0VtcHR5KCkgfHwgIWludmFsaWRSZWdpb25zTGlzdC5pc0VtcHR5KCkpIHsKICAg
ICAgICAgICAgIHdyaXRlSW5kZW50KHRzLCBpbmRlbnQgKyAxKTsKICAgICAgICAgICAgIHRzIDw8
ICJSZWdpb25zIGZvciBmbG93ICciPDwgcmVuZGVyRmxvd1RocmVhZC0+Zmxvd1RocmVhZE5hbWUo
KSA8PCAiJ1xuIjsKLSAgICAgICAgICAgIGZvciAoUmVuZGVyUmVnaW9uTGlzdDo6Y29uc3RfaXRl
cmF0b3IgaXRSUiA9IGZsb3dUaHJlYWRSZWdpb25MaXN0LmJlZ2luKCk7IGl0UlIgIT0gZmxvd1Ro
cmVhZFJlZ2lvbkxpc3QuZW5kKCk7ICsraXRSUikgewotICAgICAgICAgICAgICAgIFJlbmRlclJl
Z2lvbiogcmVuZGVyUmVnaW9uID0gKml0UlI7Ci0gICAgICAgICAgICAgICAgd3JpdGVJbmRlbnQo
dHMsIGluZGVudCArIDIpOwotICAgICAgICAgICAgICAgIHRzIDw8ICJSZW5kZXJSZWdpb24iOwot
ICAgICAgICAgICAgICAgIGlmIChyZW5kZXJSZWdpb24tPmdlbmVyYXRpbmdOb2RlKCkpIHsKLSAg
ICAgICAgICAgICAgICAgICAgU3RyaW5nIHRhZ05hbWUgPSBnZXRUYWdOYW1lKHJlbmRlclJlZ2lv
bi0+Z2VuZXJhdGluZ05vZGUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghdGFnTmFtZS5p
c0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICB0cyA8PCAiIHsiIDw8IHRhZ05hbWUg
PDwgIn0iOwotICAgICAgICAgICAgICAgICAgICBpZiAocmVuZGVyUmVnaW9uLT5nZW5lcmF0aW5n
Tm9kZSgpLT5pc0VsZW1lbnROb2RlKCkgJiYgcmVuZGVyUmVnaW9uLT5nZW5lcmF0aW5nTm9kZSgp
LT5oYXNJRCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0g
c3RhdGljX2Nhc3Q8RWxlbWVudCo+KHJlbmRlclJlZ2lvbi0+Z2VuZXJhdGluZ05vZGUoKSk7Ci0g
ICAgICAgICAgICAgICAgICAgICAgICB0cyA8PCAiICMiIDw8IGVsZW1lbnQtPmlkRm9yU3R5bGVS
ZXNvbHV0aW9uKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAg
aWYgKHJlbmRlclJlZ2lvbi0+aGFzQ3VzdG9tUmVnaW9uU3R5bGUoKSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHRzIDw8ICIgcmVnaW9uIHN0eWxlOiAxIjsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKHJlbmRlclJlZ2lvbi0+aGFzQXV0b0xvZ2ljYWxIZWlnaHQoKSkKLSAgICAgICAgICAgICAg
ICAgICAgICAgIHRzIDw8ICIgaGFzQXV0b0xvZ2ljYWxIZWlnaHQiOwotICAgICAgICAgICAgICAg
IH0KLSAgICAgICAgICAgICAgICBpZiAoIXJlbmRlclJlZ2lvbi0+aXNWYWxpZCgpKQotICAgICAg
ICAgICAgICAgICAgICB0cyA8PCAiIGludmFsaWQiOwotICAgICAgICAgICAgICAgIHRzIDw8ICJc
biI7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICB3cml0ZVJlbmRlclJlZ2lvbkxpc3QodmFs
aWRSZWdpb25zTGlzdCwgdHMsIGluZGVudCk7CisgICAgICAgICAgICB3cml0ZVJlbmRlclJlZ2lv
bkxpc3QoaW52YWxpZFJlZ2lvbnNMaXN0LCB0cywgaW5kZW50KTsKICAgICAgICAgfQogICAgIH0K
IH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwppbmRleCA3MTZlMmMyZjQwMjk2NWQ2MDEyZjNjMDRlYTgwMjM0ZTcyNzdjYzgwLi5iZmY0
ZDY0OTFkYTIxM2Y0MmI5OTk2OGNhNjIzN2QxMGEzMDFmYWJiIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEg
QEAKKzIwMTItMTAtMDkgIEFuZHJlaSBCdWN1ciAgPGFidWN1ckBhZG9iZS5jb20+CisKKyAgICAg
ICAgW0NTUyBSZWdpb25zXSBDcmVhdGUgYSBzZXBhcmF0ZSBsaXN0IGZvciB0aGUgaW52YWxpZCBy
ZWdpb25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
ODc1MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRo
ZSByZXN1bHQgZm9yIGZhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LXNhbWUtZmxvdy5odG1s
IHNob3VsZG4ndCBoYXZlIGEgcGl4ZWwgb3V0cHV0IGFuZCBzaG91bGQgYmUgcGxhdGZvcm0gaW5k
ZXBlbmRlbnQuCisKKyAgICAgICAgKiBmYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1l
LWZsb3ctZXhwZWN0ZWQudHh0OiBSZW5hbWVkIGZyb20gTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFj
L2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LXNhbWUtZmxvdy1leHBlY3RlZC50eHQuCisg
ICAgICAgICogcGxhdGZvcm0vZWZsL2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LXNhbWUt
Zmxvdy1leHBlY3RlZC5wbmc6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZWZsL2Zhc3Qv
cmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LXNhbWUtZmxvdy1leHBlY3RlZC50eHQ6IFJlbW92ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3RrL2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LXNh
bWUtZmxvdy1leHBlY3RlZC5wbmc6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3RrL2Zh
c3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LXNhbWUtZmxvdy1leHBlY3RlZC50eHQ6IFJlbW92
ZWQuCisgICAgICAgICogcGxhdGZvcm0vbWFjL2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5
LXNhbWUtZmxvdy1leHBlY3RlZC5wbmc6IFJlbW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vcXQv
ZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktc2FtZS1mbG93LWV4cGVjdGVkLnBuZzogUmVt
b3ZlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9xdC9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5j
eS1zYW1lLWZsb3ctZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorCiAyMDEyLTEwLTA5ICBKdXNzaSBL
dWtrb25lbiAgPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KIAogICAgICAgICBbRUZMXSByZW1v
dmUgZHVwbGljYXRlIGZhaWx1cmUgZXhwZWN0YXRpb25zCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZsb3ctZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktc2FtZS1mbG93LWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5mODc5ZmRlZDNhYzBhZjFjOGY1YTRjYmU3ODMxNzIwMzZlNTYx
MTVlCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9yZWdpb25zL2Zsb3dzLWRl
cGVuZGVuY3ktc2FtZS1mbG93LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDIxIEBACitsYXllciBh
dCAoMCwwKSBzaXplIDgwMHg2MDAKKyAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAK
K2xheWVyIGF0ICgwLDApIHNpemUgODAweDE2CisgIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCww
KSBzaXplIDgwMHgxNgorICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDAK
KyAgICAgIFJlbmRlclJlZ2lvbiB7RElWfSBhdCAoMCwwKSBzaXplIDB4MAorICAgICAgUmVuZGVy
UmVnaW9uIHtESVZ9IGF0ICgwLDApIHNpemUgMHgwCisgICAgICBSZW5kZXJSZWdpb24ge0RJVn0g
YXQgKDAsMCkgc2l6ZSAweDAKK0Zsb3cgVGhyZWFkcworICBUaHJlYWQgd2l0aCBmbG93LW5hbWUg
J2Zsb3dCJworICBSZWdpb25zIGZvciBmbG93ICdmbG93QicKKyAgICBSZW5kZXJSZWdpb24ge0RJ
Vn0KKyAgICBSZW5kZXJSZWdpb24ge0RJVn0gaW52YWxpZAorICBUaHJlYWQgd2l0aCBmbG93LW5h
bWUgJ2Zsb3dDJworICBSZWdpb25zIGZvciBmbG93ICdmbG93QycKKyAgICBSZW5kZXJSZWdpb24g
e0RJVn0KKyAgICBSZW5kZXJSZWdpb24ge0RJVn0KKyAgVGhyZWFkIHdpdGggZmxvdy1uYW1lICdm
bG93QScKKyAgUmVnaW9ucyBmb3IgZmxvdyAnZmxvd0EnCisgICAgUmVuZGVyUmVnaW9uIHtESVZ9
CisgICAgUmVuZGVyUmVnaW9uIHtESVZ9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9lZmwvZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktc2FtZS1mbG93LWV4cGVjdGVkLnBu
ZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5j
eS1zYW1lLWZsb3ctZXhwZWN0ZWQucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBk
YzE0YjYwNTdkMjc3M2E0YWU5ODcyNzA4MTBiNDhmZjE2YTQ3YTg2Li4wMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAwCkhjbVY/
ZDAwMDAxCgpsaXRlcmFsIDI4NTgKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlVeyt2WVYyYT5p
MCpaKT1oXmhsQSVAV3MkbEhgb2s8bX0/b1RtfW5NCno8Q0loYjE1LTJlNmhrQSFxfGApJUI9ZS15
PFd3YFdNQUg7QSF7aHw+fEckQm4qcGpeNlReUm1AO0RXdSZDbz9jYAp6dEAzbm40NV5zJl9TISpD
MV9nbHcyQnJWIW8+JTIrUVc1QGcpN0ZAcXEyWE1tRUNhJl8+MUl8MjBwa2I7MkUkUnQKelhkc05I
Z3diM3VuaFFwQSFEdWNSJT58Pm1VXkV4ZEJeUFl1Vz12c1VZald7JkUzaDVRO09Yazt2ZCRAPzI+
XnpeCkJ6ViFlQQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9mYXN0L3Jl
Z2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZsb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvcGxhdGZvcm0vZWZsL2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LXNhbWUtZmxvdy1l
eHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczMzNmYzUwYzMwNTNk
MzBlMzM2MjE4OTUyNWI5ZTU4NTQ4N2UxMjQuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL2Zhc3QvcmVnaW9ucy9m
bG93cy1kZXBlbmRlbmN5LXNhbWUtZmxvdy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAt
MSwyMSArMCwwIEBACi1sYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKLSAgUmVuZGVyVmlldyBh
dCAoMCwwKSBzaXplIDgwMHg2MDAKLWxheWVyIGF0ICgwLDApIHNpemUgODAweDE2Ci0gIFJlbmRl
ckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHgxNgotICAgIFJlbmRlckJvZHkge0JPRFl9
IGF0ICg4LDgpIHNpemUgNzg0eDAKLSAgICAgIFJlbmRlclJlZ2lvbiB7RElWfSBhdCAoMCwwKSBz
aXplIDB4MAotICAgICAgUmVuZGVyUmVnaW9uIHtESVZ9IGF0ICgwLDApIHNpemUgMHgwCi0gICAg
ICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsMCkgc2l6ZSAweDAKLUZsb3cgVGhyZWFkcwotICBU
aHJlYWQgd2l0aCBmbG93LW5hbWUgJ2Zsb3dCJwotICBSZWdpb25zIGZvciBmbG93ICdmbG93QicK
LSAgICBSZW5kZXJSZWdpb24ge0RJVn0gaW52YWxpZAotICAgIFJlbmRlclJlZ2lvbiB7RElWfQot
ICBUaHJlYWQgd2l0aCBmbG93LW5hbWUgJ2Zsb3dDJwotICBSZWdpb25zIGZvciBmbG93ICdmbG93
QycKLSAgICBSZW5kZXJSZWdpb24ge0RJVn0KLSAgICBSZW5kZXJSZWdpb24ge0RJVn0KLSAgVGhy
ZWFkIHdpdGggZmxvdy1uYW1lICdmbG93QScKLSAgUmVnaW9ucyBmb3IgZmxvdyAnZmxvd0EnCi0g
ICAgUmVuZGVyUmVnaW9uIHtESVZ9Ci0gICAgUmVuZGVyUmVnaW9uIHtESVZ9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3kt
c2FtZS1mbG93LWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L3Jl
Z2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZsb3ctZXhwZWN0ZWQucG5nCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCBkYzE0YjYwNTdkMjc3M2E0YWU5ODcyNzA4MTBiNDhmZjE2YTQ3
YTg2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCkdJVCBiaW5hcnkg
cGF0Y2gKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpsaXRlcmFsIDI4NTgKemNtZUFTQE4/KG9sSHlg
dVZCcSFpYTB5fnlVeyt2WVYyYT5pMCpaKT1oXmhsQSVAV3MkbEhgb2s8bX0/b1RtfW5NCno8Q0lo
YjE1LTJlNmhrQSFxfGApJUI9ZS15PFd3YFdNQUg7QSF7aHw+fEckQm4qcGpeNlReUm1AO0RXdSZD
bz9jYAp6dEAzbm40NV5zJl9TISpDMV9nbHcyQnJWIW8+JTIrUVc1QGcpN0ZAcXEyWE1tRUNhJl8+
MUl8MjBwa2I7MkUkUnQKelhkc05IZ3diM3VuaFFwQSFEdWNSJT58Pm1VXkV4ZEJeUFl1Vz12c1VZ
ald7JkUzaDVRO09Yazt2ZCRAPzI+XnpeCkJ6ViFlQQoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZsb3ctZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvcmVnaW9ucy9mbG93cy1k
ZXBlbmRlbmN5LXNhbWUtZmxvdy1leHBlY3RlZC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDczMzNmYzUwYzMwNTNkMzBlMzM2MjE4OTUyNWI5ZTU4NTQ4N2UxMjQuLjAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vZ3RrL2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LXNhbWUtZmxvdy1leHBlY3RlZC50
eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1sYXllciBhdCAoMCwwKSBzaXplIDgw
MHg2MDAKLSAgUmVuZGVyVmlldyBhdCAoMCwwKSBzaXplIDgwMHg2MDAKLWxheWVyIGF0ICgwLDAp
IHNpemUgODAweDE2Ci0gIFJlbmRlckJsb2NrIHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHgxNgot
ICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4LDgpIHNpemUgNzg0eDAKLSAgICAgIFJlbmRlclJl
Z2lvbiB7RElWfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgUmVuZGVyUmVnaW9uIHtESVZ9IGF0
ICgwLDApIHNpemUgMHgwCi0gICAgICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsMCkgc2l6ZSAw
eDAKLUZsb3cgVGhyZWFkcwotICBUaHJlYWQgd2l0aCBmbG93LW5hbWUgJ2Zsb3dCJwotICBSZWdp
b25zIGZvciBmbG93ICdmbG93QicKLSAgICBSZW5kZXJSZWdpb24ge0RJVn0gaW52YWxpZAotICAg
IFJlbmRlclJlZ2lvbiB7RElWfQotICBUaHJlYWQgd2l0aCBmbG93LW5hbWUgJ2Zsb3dDJwotICBS
ZWdpb25zIGZvciBmbG93ICdmbG93QycKLSAgICBSZW5kZXJSZWdpb24ge0RJVn0KLSAgICBSZW5k
ZXJSZWdpb24ge0RJVn0KLSAgVGhyZWFkIHdpdGggZmxvdy1uYW1lICdmbG93QScKLSAgUmVnaW9u
cyBmb3IgZmxvdyAnZmxvd0EnCi0gICAgUmVuZGVyUmVnaW9uIHtESVZ9Ci0gICAgUmVuZGVyUmVn
aW9uIHtESVZ9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9yZWdp
b25zL2Zsb3dzLWRlcGVuZGVuY3ktc2FtZS1mbG93LWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL21hYy9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZsb3ctZXhw
ZWN0ZWQucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNzJhNDMwZDgwNGU4MzA4
ZTFiZDk5OTkxMzllNzM3MDE2ZDJlZjMwLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpsaXRlcmFs
IDEwNTY0CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTFCJVFsWWJwUnpua0I5
Z0NDTTQ3JD1TdUZ4ZU9Nagp6I3duPT0yQnYxX0RUWVJkTnZWa2pOIztxWiQqRT4kaUtaIUxoUkYl
JHw5PUJiaztgOzs0KUFuI1J0UEF7UHNffG4KelduaWRhWXo/YGVlS3xubi0+dVpTOHk8RkJyMy1T
fVdsWVJWMmArSi12bkBNKCpWKDk3WDRANCNXLXJUKW5SUUklCnpaUVRhO284OT9WTjZTQzUreD13
Y3ghSWd3SiZFXzJOYUJ3KjlaRWptbHMzPHNaUWBwUSUpSW1hPyl5TEFTKmt5Twp6NjFVKUlWYm88
MmVTVlM5VkU/MHN7djNIQ2F7bSkhb1EkKmZwQTZzYkhaZDxYY0wpQjxuPTBSTHs+JiRMRVRgbU0K
ent7N1llbENSRjEkfEx3ZU1xJUYrKDw0ZGBCTnRAR1Rxek5MYUlOJEdUdG19Q1hNS3R6bWF9bG1y
KDVKRkgkTHA/CnpSaTJoK1YoS3U5XkFQKHtDb0F0QTRpKztxQUFJSiRhanNHMWlNcmEjTnFYSGp0
NmhXaXBRZ0JPO2AjUEx6UFJ+UQp6e0R1YCVVZH4/b1QlYjMxbVphYXNueSEyRG1iQz52JmxzKkF3
MnpuQT4kcWNYTDQ/YGsjaW4mbVhJMGgtc19sTEwKenR8VzhEK3RnWHBCUT1Gb1dtTlZnZ3soOHEk
JFpBbSsmU3luPCtvbn5DVCpCK3Zmc293XjdHQGowYUlDQzh5QH1vCnomRC10RXVEI2M5UG5edkQq
d2sqaD1DeWk8ZXx4YHdFJFZ0JklxQWRlRXBva0F6ZUc+NjNjRyMjJD1QTWZobVZ2OAp6K0IxN05I
VEI3KVhncndjI0ZJRUhgTiptdEs0T3dlVVB+QHptVntKcHZiYmlnRj9yZnM4VFgybEBxOWJ0I0op
eXYKeitWU25kP3xGQXN1bE1ae1o5VGV1QHJ9VEBUTl97USs5VyhueTFxMVY+RWdWSDx+eUl4bWQ7
KHglQE8jbz4qKz8xCnp4WVNlck9AWUAtJjdNc05wOGx0bGBAR1NWY2RCSlY1aj94cmUyRHZAbUJa
IVZEdD43Q3t3cFdXLUNIWW94fWl8Vgp6WnVQdzJ2JllgM1VoPXYwSSVVV0h1Q0dxVkJ6e2dYYmRI
KzRQc01qbW0qdUJoMG8+fHI8eFFgakomTXU0Jk9VR1YKem5iP1FGYzU8eE1EXmwofEI+dlU0TSlB
V3c8OSZBVit3KGdUbSozdVpJcHlfWSE+SEgwRkhoWEhYaypvc3tAZCFgCnpaMk1MVE9LI2VAWikw
NTtoeFYzNSR5cntUT1oqdl9SZGZCT2VgY05oVWEqQ2ByZW1GTVhhRE0/QENwOWZUPV9HMwp6Oy0+
Uj51Sl5kOXg1MnZxRSVVYkVZcThIVjxCS2duWVpiaGR7KEpiZm9fUSErb2FCTHYjZF9pa2o3eSh6
Wm01YVYKemNgYlRkLWUldFJoS2JnPGxoQGtqQ2hxRkMzdE40PUxAISM3YVgwXyF0TWt2VnhfYkJk
bFh+dW8jZWRqVkRzeD5zCnp2QHFVP2ZrQT02KTVTNVFnN05NM2psMnZCSlM+SUB8S35DJWIqIUds
OG5AfXZvcTZTXzFyOzBgNyNOdllJME9fTgp6NmEqe3x3c0F0KDVXeU5vI3olcjZEWDV3Z0VHITt3
eGc5VktLdkJqPT80JENkO1dMXih6PEZwaWV+Z3c3cXZoamgKentRI3t7TjkpSllfUTdjVFh0YUdl
K0NDZ0BBQzkmVWZxbCU7X1ZILUBjKGk+eStDQ21fQUE8K25NKjliJntlI2l8CnohRCM8cncwfCgj
S04jJkZqUD8ma2Akd2JtaT0qP2Fxd353dW8/cEs+VXJ2WENmcHIwQkV4PjQ3VzM7VT8rU1Y5dApq
WW1CeHYyM3VSQmteNXloJEN+c3I2Q3tBa0F7amhne2FuXkxCe1RzNS0mZyVzCgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5
LXNhbWUtZmxvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9y
ZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktc2FtZS1mbG93LWV4cGVjdGVkLnR4dApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNzMzM2ZjNTBjMzA1M2QzMGUzMzYyMTg5NTI1YjllNTg1NDg3
ZTEyNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktc2FtZS1m
bG93LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLWxheWVyIGF0
ICgwLDApIHNpemUgODAweDYwMAotICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAot
bGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4MTYKLSAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDAp
IHNpemUgODAweDE2Ci0gICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4MAot
ICAgICAgUmVuZGVyUmVnaW9uIHtESVZ9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICBSZW5kZXJS
ZWdpb24ge0RJVn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgIFJlbmRlclJlZ2lvbiB7RElWfSBh
dCAoMCwwKSBzaXplIDB4MAotRmxvdyBUaHJlYWRzCi0gIFRocmVhZCB3aXRoIGZsb3ctbmFtZSAn
Zmxvd0InCi0gIFJlZ2lvbnMgZm9yIGZsb3cgJ2Zsb3dCJwotICAgIFJlbmRlclJlZ2lvbiB7RElW
fSBpbnZhbGlkCi0gICAgUmVuZGVyUmVnaW9uIHtESVZ9Ci0gIFRocmVhZCB3aXRoIGZsb3ctbmFt
ZSAnZmxvd0MnCi0gIFJlZ2lvbnMgZm9yIGZsb3cgJ2Zsb3dDJwotICAgIFJlbmRlclJlZ2lvbiB7
RElWfQotICAgIFJlbmRlclJlZ2lvbiB7RElWfQotICBUaHJlYWQgd2l0aCBmbG93LW5hbWUgJ2Zs
b3dBJwotICBSZWdpb25zIGZvciBmbG93ICdmbG93QScKLSAgICBSZW5kZXJSZWdpb24ge0RJVn0K
LSAgICBSZW5kZXJSZWdpb24ge0RJVn0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3Jt
L3F0L2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LXNhbWUtZmxvdy1leHBlY3RlZC5wbmcg
Yi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1z
YW1lLWZsb3ctZXhwZWN0ZWQucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzRj
MWM0MjkxZDY2OTA2ZWFkYWU4NjZiZWE0MWM3Njg0NmJhMDdhLi4wMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAwCkhjbVY/ZDAw
MDAxCgpsaXRlcmFsIDMzMjYKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlVeyt2WVYyYT5pMUIl
UWxZYnBSekVYN1dxQXNqJFohOyNWZjxafjh5CnpMPjRuSkBFcmtSIztNd1QobStBWTY0IXs1PGMh
cWg/QmRjfjFgQVc7bHZEISlRIzExdkxuRmhhKUlAX01eUTY/fAp6UjVQPGcoLWJxcTxPSzhvelpu
Pkt2T1FmS0xuYExIeT43X0pwdWxzJDtLMlVwNDtSVShhUSFNZmVAMklhcTJXTksKekVZUnBiaFp9
JlRCcl84T0xrYlRFMUglTUUxcUtGKFcyMXRqMFd6OHhNbC1AXyR1TD9makBBZ0h3YyUpT0k5ZU55
CmgpYHB8Q0FAPHIoP2AxZzBubCFoS3JvZ1RRZ1F1JlglUX5sb0NJSCtvXjJZIUcKCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5j
eS1zYW1lLWZsb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9y
ZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktc2FtZS1mbG93LWV4cGVjdGVkLnR4dApkZWxldGVkIGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggNzMzM2ZjNTBjMzA1M2QzMGUzMzYyMTg5NTI1YjllNTg1NDg3
ZTEyNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlv
dXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZs
b3ctZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotbGF5ZXIgYXQg
KDAsMCkgc2l6ZSA4MDB4NjAwCi0gIFJlbmRlclZpZXcgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCi1s
YXllciBhdCAoMCwwKSBzaXplIDgwMHgxNgotICBSZW5kZXJCbG9jayB7SFRNTH0gYXQgKDAsMCkg
c2l6ZSA4MDB4MTYKLSAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAoOCw4KSBzaXplIDc4NHgwCi0g
ICAgICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgIFJlbmRlclJl
Z2lvbiB7RElWfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgUmVuZGVyUmVnaW9uIHtESVZ9IGF0
ICgwLDApIHNpemUgMHgwCi1GbG93IFRocmVhZHMKLSAgVGhyZWFkIHdpdGggZmxvdy1uYW1lICdm
bG93QicKLSAgUmVnaW9ucyBmb3IgZmxvdyAnZmxvd0InCi0gICAgUmVuZGVyUmVnaW9uIHtESVZ9
IGludmFsaWQKLSAgICBSZW5kZXJSZWdpb24ge0RJVn0KLSAgVGhyZWFkIHdpdGggZmxvdy1uYW1l
ICdmbG93QycKLSAgUmVnaW9ucyBmb3IgZmxvdyAnZmxvd0MnCi0gICAgUmVuZGVyUmVnaW9uIHtE
SVZ9Ci0gICAgUmVuZGVyUmVnaW9uIHtESVZ9Ci0gIFRocmVhZCB3aXRoIGZsb3ctbmFtZSAnZmxv
d0EnCi0gIFJlZ2lvbnMgZm9yIGZsb3cgJ2Zsb3dBJwotICAgIFJlbmRlclJlZ2lvbiB7RElWfQot
ICAgIFJlbmRlclJlZ2lvbiB7RElWfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167958</attachid>
            <date>2012-10-10 01:36:49 -0700</date>
            <delta_ts>2012-10-10 05:18:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98752-20121010113547.patch</filename>
            <type>text/plain</type>
            <size>34210</size>
            <attacher name="Andrei Bucur">abucur</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwODcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTIxNGMyMjEzZjNhMDk5
ODdhYmZjNDgzZDNjZDc0NjMzOTA2NWM2Zi4uMjU2ZTJiZWY0MTJmMTgyNTc2ZDRhNDg1NzU1MTFh
MTE2MDgwMzA3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEyLTEwLTEwICBBbmRy
ZWkgQnVjdXIgIDxhYnVjdXJAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1MgUmVnaW9uc10gQ3Jl
YXRlIGEgc2VwYXJhdGUgbGlzdCBmb3IgdGhlIGludmFsaWQgcmVnaW9ucworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg3NTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIG1vdmVzIHRoZSBp
bnZhbGlkIHJlZ2lvbnMgaW4gYSBsb3cgdHJhZmZpYyBkYXRhIHN0cnVjdHVyZSwgb3V0c2lkZSB0
aGUgbWFpbiByZWdpb24gbGlzdC4gVGhpcyBzaG91bGQgYWRkIGEgc21hbGwgcGVyZm9ybWFuY2Ug
Ym9vc3QgKHRoZXJlJ3Mgbm8gdGVzdCBmb3IgaXQpIGFuZCBzaW1wbGlmaWVzIHRoZSBjb2RlIGlu
IHRoZSBmb2xsb3dpbmcgd2F5czoKKyAgICAgICAgLSBpdGVyYXRpb25zIHRocm91Z2ggdGhlIHJl
Z2lvbiBsaXN0IGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgaW52YWxpZCByZWdpb25zCisgICAg
ICAgIC0gYWNjZXNzaW5nIHRoZSBmaXJzdC9sYXN0IHJlZ2lvbiBpcyBzdHJhaWdodGZvcndhcmQK
KyAgICAgICAgLSBsaXN0IG1hbmlwdWxhdGlvbnMgYXJlIGVhc2llciB0byBpbXBsZW1lbnQgKGUu
Zy4gYmluYXJ5IHNlYXJjaCBmb3IgYSByZWdpb24pCisKKyAgICAgICAgVGVzdHM6IEFkYXB0ZWQg
ZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktc2FtZS1mbG93Lmh0bWwgdG8gdXNlIHRoZSBu
ZXcgZHVtcCBmb3JtYXQgZm9yIHRoZSByZWdpb24gY2hhaW4uCisKKyAgICAgICAgKiBkb20vV2Vi
S2l0TmFtZWRGbG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdE5hbWVkRmxvdzo6Z2V0
UmVnaW9uc0J5Q29udGVudCk6IE5vdyByZXR1cm5zIG9ubHkgdGhlIHZhbGlkIHJlZ2lvbnMuCisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXROYW1lZEZsb3c6OmdldFJlZ2lvbnMpOiBOb3cgcmV0dXJu
cyBvbmx5IHRoZSB2YWxpZCByZWdpb25zLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbG93
VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OlJlbmRlckZs
b3dUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6bGF5b3V0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OnVwZGF0ZUxvZ2ljYWxXaWR0aCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpjb21wdXRlTG9naWNhbEhlaWdo
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpyZXBhaW50UmVjdGFuZ2xl
SW5SZWdpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OnJlZ2lvbkF0
QmxvY2tPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6cmVtb3Zl
UmVuZGVyQm94UmVnaW9uSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFk
Ojpsb2dpY2FsV2lkdGhDaGFuZ2VkSW5SZWdpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckZsb3dUaHJlYWQ6OmZpcnN0UmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dU
aHJlYWQ6Omxhc3RSZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6
Y29tcHV0ZU92ZXJmbG93U3RhdGVGb3JSZWdpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckZsb3dUaHJlYWQ6OnJlZ2lvbkluUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxv
d1RocmVhZDo6Y2hlY2tSZWdpb25zV2l0aFN0eWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRmxvd1RocmVhZDo6b2JqZWN0SW5GbG93UmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckZsb3dUaHJlYWQ6OmF1dG9Mb2dpY2FsSGVpZ2h0UmVnaW9uc0NvdW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJOYW1lZEZsb3dUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjphZGRSZWdpb25Ub0xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93
VGhyZWFkOjphZGRSZWdpb25Ub1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1l
ZEZsb3dUaHJlYWQ6OnJlbW92ZVJlZ2lvbkZyb21UaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTmFtZWRGbG93VGhyZWFkOjpjaGVja0ludmFsaWRSZWdpb25zKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJOYW1lZEZsb3dUaHJlYWQ6OmludmFsaWRSZW5kZXJSZWdpb25MaXN0KToKKyAgICAgICAgKFJl
bmRlck5hbWVkRmxvd1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dU
aHJlYWQ6OmNhbkJlRGVzdHJveWVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVHJlZUFz
VGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVJlbmRlclJlZ2lvbkxpc3QpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVJlbmRlck5hbWVkRmxvd1Ro
cmVhZHMpOiBUaGUgdmFsaWQgcmVnaW9ucyBhcmUgbGlzdGVkIGZpcnN0IGZvbGxvd2VkIGJ5IHRo
ZSBpbnZhbGlkIHJlZ2lvbnMuCisKIDIwMTItMTAtMTAgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3
ZWJraXQub3JnPgogCiAgICAgICAgIEVsZW1lbnRBdHRyaWJ1dGVEYXRhOiB0aWdodGVuIG1lbWJl
ciBwYWNraW5nIG9uIDY0LWJpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJL
aXROYW1lZEZsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE5hbWVkRmxvdy5jcHAK
aW5kZXggYmYwNWQyYzI5YzIzNmRhZDM5MzA4ZThiYTRmMmFlMzVhMTNjNzQxNS4uNTkzZTUxYTZj
MjU5ZjI5OTgwYWJjMzE4YTU0ZDA4NjFkYTlhMjc3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1dlYktpdE5hbWVkRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1dlYktp
dE5hbWVkRmxvdy5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBX
ZWJLaXROYW1lZEZsb3c6OmdldFJlZ2lvbnNCeUNvbnRlbnQoTm9kZSogY29udGVudE5vZGUpCiAg
ICAgICAgIGZvciAoUmVuZGVyUmVnaW9uTGlzdDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IHJlZ2lv
bkxpc3QuYmVnaW4oKTsgaXRlciAhPSByZWdpb25MaXN0LmVuZCgpOyArK2l0ZXIpIHsKICAgICAg
ICAgICAgIGNvbnN0IFJlbmRlclJlZ2lvbiogcmVuZGVyUmVnaW9uID0gKml0ZXI7CiAgICAgICAg
ICAgICAvLyBGSVhNRTogUHNldWRvLWVsZW1lbnRzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIGxp
c3QuCi0gICAgICAgICAgICBpZiAoIXJlbmRlclJlZ2lvbi0+aXNWYWxpZCgpIHx8ICFyZW5kZXJS
ZWdpb24tPm5vZGUoKSkKKyAgICAgICAgICAgIGlmICghcmVuZGVyUmVnaW9uLT5ub2RlKCkpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAobV9wYXJlbnRGbG93VGhy
ZWFkLT5vYmplY3RJbkZsb3dSZWdpb24oY29udGVudE5vZGUtPnJlbmRlcmVyKCksIHJlbmRlclJl
Z2lvbikpCiAgICAgICAgICAgICAgICAgcmVnaW9uTm9kZXMuYXBwZW5kKHJlbmRlclJlZ2lvbi0+
bm9kZSgpKTsKQEAgLTE0NCw3ICsxNDQsNyBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBXZWJLaXRO
YW1lZEZsb3c6OmdldFJlZ2lvbnMoKQogICAgIGZvciAoUmVuZGVyUmVnaW9uTGlzdDo6Y29uc3Rf
aXRlcmF0b3IgaXRlciA9IHJlZ2lvbkxpc3QuYmVnaW4oKTsgaXRlciAhPSByZWdpb25MaXN0LmVu
ZCgpOyArK2l0ZXIpIHsKICAgICAgICAgY29uc3QgUmVuZGVyUmVnaW9uKiByZW5kZXJSZWdpb24g
PSAqaXRlcjsKICAgICAgICAgLy8gRklYTUU6IFBzZXVkby1lbGVtZW50cyBhcmUgbm90IGluY2x1
ZGVkIGluIHRoZSBsaXN0LgotICAgICAgICBpZiAoIXJlbmRlclJlZ2lvbi0+aXNWYWxpZCgpIHx8
ICFyZW5kZXJSZWdpb24tPm5vZGUoKSkKKyAgICAgICAgaWYgKCFyZW5kZXJSZWdpb24tPm5vZGUo
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICByZWdpb25Ob2Rlcy5hcHBlbmQocmVu
ZGVyUmVnaW9uLT5ub2RlKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGbG93VGhyZWFkLmNwcAppbmRleCA1MTIyOGRiY2I4ODgyOWQ0YjZhYTk2YTJjOTFiOWZi
ZDU0Mjc4ZTNiLi4zNzk0NDNiNGFiNjBlZGRhMTFhMjU1ZTgzNTQ2MWEzYzgwZDNiNWZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCkBAIC00Nyw3
ICs0Nyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVuZGVyRmxvd1RocmVhZDo6UmVuZGVy
Rmxvd1RocmVhZChOb2RlKiBub2RlKQogICAgIDogUmVuZGVyQmxvY2sobm9kZSkKLSAgICAsIG1f
aGFzVmFsaWRSZWdpb25zKGZhbHNlKQogICAgICwgbV9yZWdpb25zSW52YWxpZGF0ZWQoZmFsc2Up
CiAgICAgLCBtX3JlZ2lvbnNIYXZlVW5pZm9ybUxvZ2ljYWxXaWR0aCh0cnVlKQogICAgICwgbV9y
ZWdpb25zSGF2ZVVuaWZvcm1Mb2dpY2FsSGVpZ2h0KHRydWUpCkBAIC0xMzYsMTcgKzEzNSwxNSBA
QCB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OmxheW91dCgpCiAgICAgbV9wYWdlTG9naWNhbEhlaWdo
dENoYW5nZWQgPSBtX3JlZ2lvbnNJbnZhbGlkYXRlZCAmJiBldmVySGFkTGF5b3V0KCk7CiAgICAg
aWYgKG1fcmVnaW9uc0ludmFsaWRhdGVkKSB7CiAgICAgICAgIG1fcmVnaW9uc0ludmFsaWRhdGVk
ID0gZmFsc2U7Ci0gICAgICAgIG1faGFzVmFsaWRSZWdpb25zID0gZmFsc2U7CiAgICAgICAgIG1f
cmVnaW9uc0hhdmVVbmlmb3JtTG9naWNhbFdpZHRoID0gdHJ1ZTsKICAgICAgICAgbV9yZWdpb25z
SGF2ZVVuaWZvcm1Mb2dpY2FsSGVpZ2h0ID0gdHJ1ZTsKICAgICAgICAgbV9yZWdpb25SYW5nZU1h
cC5jbGVhcigpOwogICAgICAgICBMYXlvdXRVbml0IHByZXZpb3VzUmVnaW9uTG9naWNhbFdpZHRo
ID0gMDsKICAgICAgICAgTGF5b3V0VW5pdCBwcmV2aW91c1JlZ2lvbkxvZ2ljYWxIZWlnaHQgPSAw
OworICAgICAgICBib29sIGZpcnN0UmVnaW9uVmlzaXRlZCA9IGZhbHNlOwogICAgICAgICBpZiAo
aGFzUmVnaW9ucygpKSB7CiAgICAgICAgICAgICBmb3IgKFJlbmRlclJlZ2lvbkxpc3Q6Oml0ZXJh
dG9yIGl0ZXIgPSBtX3JlZ2lvbkxpc3QuYmVnaW4oKTsgaXRlciAhPSBtX3JlZ2lvbkxpc3QuZW5k
KCk7ICsraXRlcikgewogICAgICAgICAgICAgICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0gKml0
ZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFyZWdpb24tPmlzVmFsaWQoKSkKLSAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFyZWdpb24tPm5lZWRz
TGF5b3V0KCkpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHJlZ2lvbi0+ZGVs
ZXRlQWxsUmVuZGVyQm94UmVnaW9uSW5mbygpOwpAQCAtMTU0LDggKzE1MSw4IEBAIHZvaWQgUmVu
ZGVyRmxvd1RocmVhZDo6bGF5b3V0KCkKICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IHJlZ2lv
bkxvZ2ljYWxXaWR0aCA9IHJlZ2lvbi0+cGFnZUxvZ2ljYWxXaWR0aCgpOwogICAgICAgICAgICAg
ICAgIExheW91dFVuaXQgcmVnaW9uTG9naWNhbEhlaWdodCA9IHJlZ2lvbi0+cGFnZUxvZ2ljYWxI
ZWlnaHQoKTsKIAotICAgICAgICAgICAgICAgIGlmICghbV9oYXNWYWxpZFJlZ2lvbnMpCi0gICAg
ICAgICAgICAgICAgICAgIG1faGFzVmFsaWRSZWdpb25zID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICBpZiAoIWZpcnN0UmVnaW9uVmlzaXRlZCkKKyAgICAgICAgICAgICAgICAgICAgZmlyc3RSZWdp
b25WaXNpdGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKG1fcmVnaW9uc0hhdmVVbmlmb3JtTG9naWNhbFdpZHRoICYmIHByZXZpb3VzUmVn
aW9uTG9naWNhbFdpZHRoICE9IHJlZ2lvbkxvZ2ljYWxXaWR0aCkKICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fcmVnaW9uc0hhdmVVbmlmb3JtTG9naWNhbFdpZHRoID0gZmFsc2U7CkBAIC0xNzEs
OCArMTY4LDYgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpsYXlvdXQoKQogICAgICAgICAgICAg
TGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0ID0gMDsKICAgICAgICAgICAgIGZvciAoUmVuZGVyUmVn
aW9uTGlzdDo6aXRlcmF0b3IgaXRlciA9IG1fcmVnaW9uTGlzdC5iZWdpbigpOyBpdGVyICE9IG1f
cmVnaW9uTGlzdC5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAgICAgICAgICAgUmVuZGVyUmVnaW9u
KiByZWdpb24gPSAqaXRlcjsKLSAgICAgICAgICAgICAgICBpZiAoIXJlZ2lvbi0+aXNWYWxpZCgp
KQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgTGF5b3V0VW5pdCByZWdpb25Mb2dpY2FsV2lkdGggPSByZWdpb24tPnBh
Z2VMb2dpY2FsV2lkdGgoKTsKICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IHJlZ2lvbkxvZ2lj
YWxIZWlnaHQgPSByZWdpb24tPmxvZ2ljYWxIZWlnaHRPZkFsbEZsb3dUaHJlYWRDb250ZW50KCk7
CkBAIC0yMDEsOCArMTk2LDYgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjp1cGRhdGVMb2dpY2Fs
V2lkdGgoKQogICAgIExheW91dFVuaXQgbG9naWNhbFdpZHRoID0gMDsKICAgICBmb3IgKFJlbmRl
clJlZ2lvbkxpc3Q6Oml0ZXJhdG9yIGl0ZXIgPSBtX3JlZ2lvbkxpc3QuYmVnaW4oKTsgaXRlciAh
PSBtX3JlZ2lvbkxpc3QuZW5kKCk7ICsraXRlcikgewogICAgICAgICBSZW5kZXJSZWdpb24qIHJl
Z2lvbiA9ICppdGVyOwotICAgICAgICBpZiAoIXJlZ2lvbi0+aXNWYWxpZCgpKQotICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIEFTU0VSVCghcmVnaW9uLT5uZWVkc0xheW91dCgpKTsKICAg
ICAgICAgbG9naWNhbFdpZHRoID0gbWF4KHJlZ2lvbi0+cGFnZUxvZ2ljYWxXaWR0aCgpLCBsb2dp
Y2FsV2lkdGgpOwogICAgIH0KQEAgLTIxMSw5ICsyMDQsNiBAQCB2b2lkIFJlbmRlckZsb3dUaHJl
YWQ6OnVwZGF0ZUxvZ2ljYWxXaWR0aCgpCiAgICAgLy8gSWYgdGhlIHJlZ2lvbnMgaGF2ZSBub24t
dW5pZm9ybSBsb2dpY2FsIHdpZHRocywgdGhlbiBpbnNlcnQgaW5zZXQgaW5mb3JtYXRpb24gZm9y
IHRoZSBSZW5kZXJGbG93VGhyZWFkLgogICAgIGZvciAoUmVuZGVyUmVnaW9uTGlzdDo6aXRlcmF0
b3IgaXRlciA9IG1fcmVnaW9uTGlzdC5iZWdpbigpOyBpdGVyICE9IG1fcmVnaW9uTGlzdC5lbmQo
KTsgKytpdGVyKSB7CiAgICAgICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0gKml0ZXI7Ci0gICAg
ICAgIGlmICghcmVnaW9uLT5pc1ZhbGlkKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgCiAgICAgICAgIExheW91dFVuaXQgcmVnaW9uTG9naWNhbFdpZHRoID0gcmVnaW9uLT5wYWdl
TG9naWNhbFdpZHRoKCk7CiAgICAgICAgIGlmIChyZWdpb25Mb2dpY2FsV2lkdGggIT0gbG9naWNh
bFdpZHRoKSB7CiAgICAgICAgICAgICBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0ID0gc3R5bGUoKS0+
ZGlyZWN0aW9uKCkgPT0gTFRSID8gWkVST19MQVlPVVRfVU5JVCA6IGxvZ2ljYWxXaWR0aCAtIHJl
Z2lvbkxvZ2ljYWxXaWR0aDsKQEAgLTIyOSw4ICsyMTksNiBAQCB2b2lkIFJlbmRlckZsb3dUaHJl
YWQ6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQsIExheW91dFVuaXQgbG9naWNhbFRv
cCwgTAogCiAgICAgZm9yIChSZW5kZXJSZWdpb25MaXN0Ojpjb25zdF9pdGVyYXRvciBpdGVyID0g
bV9yZWdpb25MaXN0LmJlZ2luKCk7IGl0ZXIgIT0gbV9yZWdpb25MaXN0LmVuZCgpOyArK2l0ZXIp
IHsKICAgICAgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSAqaXRlcjsKLSAgICAgICAgaWYgKCFy
ZWdpb24tPmlzVmFsaWQoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBBU1NFUlQo
IXJlZ2lvbi0+bmVlZHNMYXlvdXQoKSk7CiAgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50
ICs9IHJlZ2lvbi0+bG9naWNhbEhlaWdodE9mQWxsRmxvd1RocmVhZENvbnRlbnQoKTsKICAgICB9
CkBAIC0zMjQsOCArMzEyLDYgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpyZXBhaW50UmVjdGFu
Z2xlSW5SZWdpb25zKGNvbnN0IExheW91dFJlY3QmIHJlcGFpbnRSZWN0LAogICAgIAogICAgIGZv
ciAoUmVuZGVyUmVnaW9uTGlzdDo6aXRlcmF0b3IgaXRlciA9IG1fcmVnaW9uTGlzdC5iZWdpbigp
OyBpdGVyICE9IG1fcmVnaW9uTGlzdC5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAgIFJlbmRlclJl
Z2lvbiogcmVnaW9uID0gKml0ZXI7Ci0gICAgICAgIGlmICghcmVnaW9uLT5pc1ZhbGlkKCkpCi0g
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICByZWdpb24tPnJlcGFpbnRGbG93VGhyZWFk
Q29udGVudChyZXBhaW50UmVjdCwgaW1tZWRpYXRlKTsKICAgICB9CkBAIC0zNDMsOCArMzI5LDYg
QEAgUmVuZGVyUmVnaW9uKiBSZW5kZXJGbG93VGhyZWFkOjpyZWdpb25BdEJsb2NrT2Zmc2V0KExh
eW91dFVuaXQgb2Zmc2V0LCBib29sIGV4dGUKICAgICBib29sIHVzZUhvcml6b250YWxXcml0aW5n
TW9kZSA9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCk7CiAgICAgZm9yIChSZW5kZXJSZWdpb25M
aXN0Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gbV9yZWdpb25MaXN0LmJlZ2luKCk7IGl0ZXIgIT0g
bV9yZWdpb25MaXN0LmVuZCgpOyArK2l0ZXIpIHsKICAgICAgICAgUmVuZGVyUmVnaW9uKiByZWdp
b24gPSAqaXRlcjsKLSAgICAgICAgaWYgKCFyZWdpb24tPmlzVmFsaWQoKSkKLSAgICAgICAgICAg
IGNvbnRpbnVlOwogCiAgICAgICAgIGlmIChvZmZzZXQgPD0gMCkKICAgICAgICAgICAgIHJldHVy
biByZWdpb247CkBAIC00MzIsOCArNDE2LDYgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpyZW1v
dmVSZW5kZXJCb3hSZWdpb25JbmZvKFJlbmRlckJveCogYm94KQogCiAgICAgZm9yIChSZW5kZXJS
ZWdpb25MaXN0OjppdGVyYXRvciBpdGVyID0gbV9yZWdpb25MaXN0LmZpbmQoc3RhcnRSZWdpb24p
OyBpdGVyICE9IG1fcmVnaW9uTGlzdC5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAgIFJlbmRlclJl
Z2lvbiogcmVnaW9uID0gKml0ZXI7Ci0gICAgICAgIGlmICghcmVnaW9uLT5pc1ZhbGlkKCkpCi0g
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgcmVnaW9uLT5yZW1vdmVSZW5kZXJCb3hSZWdp
b25JbmZvKGJveCk7CiAgICAgICAgIGlmIChyZWdpb24gPT0gZW5kUmVnaW9uKQogICAgICAgICAg
ICAgYnJlYWs7CkBAIC00NDMsOCArNDI1LDYgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpyZW1v
dmVSZW5kZXJCb3hSZWdpb25JbmZvKFJlbmRlckJveCogYm94KQogICAgIC8vIFdlIGhhdmUgdG8g
bWFrZSBzdXJlIHdlIGRpZCBub3QgbGVhdmUgYW55IFJlbmRlckJveFJlZ2lvbkluZm8gYXR0YWNo
ZWQuCiAgICAgZm9yIChSZW5kZXJSZWdpb25MaXN0OjppdGVyYXRvciBpdGVyID0gbV9yZWdpb25M
aXN0LmJlZ2luKCk7IGl0ZXIgIT0gbV9yZWdpb25MaXN0LmVuZCgpOyArK2l0ZXIpIHsKICAgICAg
ICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSAqaXRlcjsKLSAgICAgICAgaWYgKCFyZWdpb24tPmlz
VmFsaWQoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBBU1NFUlQoIXJlZ2lvbi0+
cmVuZGVyQm94UmVnaW9uSW5mbyhib3gpKTsKICAgICB9CiAjZW5kaWYKQEAgLTQ2MywxMCArNDQz
LDYgQEAgYm9vbCBSZW5kZXJGbG93VGhyZWFkOjpsb2dpY2FsV2lkdGhDaGFuZ2VkSW5SZWdpb25z
KGNvbnN0IFJlbmRlckJsb2NrKiBibG9jaywgTGEKIAogICAgIGZvciAoUmVuZGVyUmVnaW9uTGlz
dDo6aXRlcmF0b3IgaXRlciA9IG1fcmVnaW9uTGlzdC5maW5kKHN0YXJ0UmVnaW9uKTsgaXRlciAh
PSBtX3JlZ2lvbkxpc3QuZW5kKCk7ICsraXRlcikgewogICAgICAgICBSZW5kZXJSZWdpb24qIHJl
Z2lvbiA9ICppdGVyOwotICAgICAgICAKLSAgICAgICAgaWYgKCFyZWdpb24tPmlzVmFsaWQoKSkK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotCiAgICAgICAgIEFTU0VSVCghcmVnaW9uLT5uZWVkc0xh
eW91dCgpKTsKIAogICAgICAgICBPd25QdHI8UmVuZGVyQm94UmVnaW9uSW5mbz4gb2xkSW5mbyA9
IHJlZ2lvbi0+dGFrZVJlbmRlckJveFJlZ2lvbkluZm8oYmxvY2spOwpAQCAtNTEzLDI4ICs0ODks
MTQgQEAgUmVuZGVyUmVnaW9uKiBSZW5kZXJGbG93VGhyZWFkOjpmaXJzdFJlZ2lvbigpIGNvbnN0
CiB7CiAgICAgaWYgKCFoYXNWYWxpZFJlZ2lvbkluZm8oKSkKICAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgZm9yIChSZW5kZXJSZWdpb25MaXN0Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gbV9yZWdpb25M
aXN0LmJlZ2luKCk7IGl0ZXIgIT0gbV9yZWdpb25MaXN0LmVuZCgpOyArK2l0ZXIpIHsKLSAgICAg
ICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSAqaXRlcjsKLSAgICAgICAgaWYgKCFyZWdpb24tPmlz
VmFsaWQoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICByZXR1cm4gcmVnaW9uOwot
ICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1
cm4gbV9yZWdpb25MaXN0LmZpcnN0KCk7CiB9CiAKIFJlbmRlclJlZ2lvbiogUmVuZGVyRmxvd1Ro
cmVhZDo6bGFzdFJlZ2lvbigpIGNvbnN0CiB7CiAgICAgaWYgKCFoYXNWYWxpZFJlZ2lvbkluZm8o
KSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgZm9yIChSZW5kZXJSZWdpb25MaXN0Ojpjb25zdF9y
ZXZlcnNlX2l0ZXJhdG9yIGl0ZXIgPSBtX3JlZ2lvbkxpc3QucmJlZ2luKCk7IGl0ZXIgIT0gbV9y
ZWdpb25MaXN0LnJlbmQoKTsgKytpdGVyKSB7Ci0gICAgICAgIFJlbmRlclJlZ2lvbiogcmVnaW9u
ID0gKml0ZXI7Ci0gICAgICAgIGlmICghcmVnaW9uLT5pc1ZhbGlkKCkpCi0gICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgcmV0dXJuIHJlZ2lvbjsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG1fcmVnaW9uTGlzdC5sYXN0KCk7
CiB9CiAKIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6Y2xlYXJSZW5kZXJPYmplY3RDdXN0b21TdHls
ZShjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwKQEAgLTYzMCwxMCArNTkyLDYgQEAgdm9pZCBS
ZW5kZXJGbG93VGhyZWFkOjpjb21wdXRlT3ZlcmZsb3dTdGF0ZUZvclJlZ2lvbnMoTGF5b3V0VW5p
dCBvbGRDbGllbnRBZnRlckUKICAgICBSZW5kZXJSZWdpb24qIGxhc3RSZWcgPSBsYXN0UmVnaW9u
KCk7CiAgICAgZm9yIChSZW5kZXJSZWdpb25MaXN0OjppdGVyYXRvciBpdGVyID0gbV9yZWdpb25M
aXN0LmJlZ2luKCk7IGl0ZXIgIT0gbV9yZWdpb25MaXN0LmVuZCgpOyArK2l0ZXIpIHsKICAgICAg
ICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSAqaXRlcjsKLSAgICAgICAgaWYgKCFyZWdpb24tPmlz
VmFsaWQoKSkgewotICAgICAgICAgICAgcmVnaW9uLT5zZXRSZWdpb25TdGF0ZShSZW5kZXJSZWdp
b246OlJlZ2lvblVuZGVmaW5lZCk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQog
ICAgICAgICBMYXlvdXRVbml0IGZsb3dNaW4gPSBoZWlnaHQgLSAoaXNIb3Jpem9udGFsV3JpdGlu
Z01vZGUoKSA/IHJlZ2lvbi0+Zmxvd1RocmVhZFBvcnRpb25SZWN0KCkueSgpIDogcmVnaW9uLT5m
bG93VGhyZWFkUG9ydGlvblJlY3QoKS54KCkpOwogICAgICAgICBMYXlvdXRVbml0IGZsb3dNYXgg
PSBoZWlnaHQgLSAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHJlZ2lvbi0+Zmxvd1RocmVh
ZFBvcnRpb25SZWN0KCkubWF4WSgpIDogcmVnaW9uLT5mbG93VGhyZWFkUG9ydGlvblJlY3QoKS5t
YXhYKCkpOwogICAgICAgICBSZW5kZXJSZWdpb246OlJlZ2lvblN0YXRlIHByZXZpb3VzU3RhdGUg
PSByZWdpb24tPnJlZ2lvblN0YXRlKCk7CkBAIC02NjMsOCArNjIxLDYgQEAgYm9vbCBSZW5kZXJG
bG93VGhyZWFkOjpyZWdpb25JblJhbmdlKGNvbnN0IFJlbmRlclJlZ2lvbiogdGFyZ2V0UmVnaW9u
LCBjb25zdCBSZW4KIAogICAgIGZvciAoUmVuZGVyUmVnaW9uTGlzdDo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBtX3JlZ2lvbkxpc3QuZmluZChjb25zdF9jYXN0PFJlbmRlclJlZ2lvbio+KHN0YXJ0UmVn
aW9uKSk7IGl0ICE9IG1fcmVnaW9uTGlzdC5lbmQoKTsgKytpdCkgewogICAgICAgICBjb25zdCBS
ZW5kZXJSZWdpb24qIGN1cnJSZWdpb24gPSAqaXQ7Ci0gICAgICAgIGlmICghY3VyclJlZ2lvbi0+
aXNWYWxpZCgpKQotICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmICh0YXJnZXRSZWdp
b24gPT0gY3VyclJlZ2lvbikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBpZiAo
Y3VyclJlZ2lvbiA9PSBlbmRSZWdpb24pCkBAIC02ODAsOCArNjM2LDYgQEAgdm9pZCBSZW5kZXJG
bG93VGhyZWFkOjpjaGVja1JlZ2lvbnNXaXRoU3R5bGluZygpCiAgICAgYm9vbCBoYXNSZWdpb25z
V2l0aFN0eWxpbmcgPSBmYWxzZTsKICAgICBmb3IgKFJlbmRlclJlZ2lvbkxpc3Q6Oml0ZXJhdG9y
IGl0ZXIgPSBtX3JlZ2lvbkxpc3QuYmVnaW4oKTsgaXRlciAhPSBtX3JlZ2lvbkxpc3QuZW5kKCk7
ICsraXRlcikgewogICAgICAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9ICppdGVyOwotICAgICAg
ICBpZiAoIXJlZ2lvbi0+aXNWYWxpZCgpKQotICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IGlmIChyZWdpb24tPmhhc0N1c3RvbVJlZ2lvblN0eWxlKCkpIHsKICAgICAgICAgICAgIGhhc1Jl
Z2lvbnNXaXRoU3R5bGluZyA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKQEAgLTcyNSw4ICs2
NzksNiBAQCBib29sIFJlbmRlckZsb3dUaHJlYWQ6Om9iamVjdEluRmxvd1JlZ2lvbihjb25zdCBS
ZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUmVuZAogICAgICAgICAvLyB0aGVuIHRoZSBvYmpl
Y3QgaXMgaW4gbGFzdCByZWdpb24uCiAgICAgICAgIGZvciAoUmVuZGVyUmVnaW9uTGlzdDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBtX3JlZ2lvbkxpc3QuZmluZChlbmNsb3NpbmdCb3hTdGFydFJlZ2lv
bik7IGl0ICE9IG1fcmVnaW9uTGlzdC5lbmQoKTsgKytpdCkgewogICAgICAgICAgICAgY29uc3Qg
UmVuZGVyUmVnaW9uKiBjdXJyUmVnaW9uID0gKml0OwotICAgICAgICAgICAgaWYgKCFyZWdpb24t
PmlzVmFsaWQoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChj
dXJyUmVnaW9uID09IHJlZ2lvbikKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGlmIChvYmplY3RBQkJSZWN0LmludGVyc2VjdHMoY3VyclJlZ2lvbi0+YWJzb2x1dGVCb3VuZGlu
Z0JveFJlY3QodHJ1ZSkpKQpAQCAtNzQ0LDExICs2OTYsNiBAQCB1bnNpZ25lZCBSZW5kZXJGbG93
VGhyZWFkOjphdXRvTG9naWNhbEhlaWdodFJlZ2lvbnNDb3VudCgpIGNvbnN0CiAgICAgdW5zaWdu
ZWQgYXV0b0xvZ2ljYWxIZWlnaHRSZWdpb25zID0gMDsKICAgICBmb3IgKFJlbmRlclJlZ2lvbkxp
c3Q6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX3JlZ2lvbkxpc3QuYmVnaW4oKTsgaXRlciAhPSBt
X3JlZ2lvbkxpc3QuZW5kKCk7ICsraXRlcikgewogICAgICAgICBjb25zdCBSZW5kZXJSZWdpb24q
IHJlZ2lvbiA9ICppdGVyOwotICAgICAgICBpZiAoIXJlZ2lvbi0+aXNWYWxpZCgpKSB7Ci0gICAg
ICAgICAgICBBU1NFUlQoIXJlZ2lvbi0+aGFzQXV0b0xvZ2ljYWxIZWlnaHQoKSk7Ci0gICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCiAgICAgICAgIGlmIChyZWdpb24tPmhhc0F1dG9M
b2dpY2FsSGVpZ2h0KCkpCiAgICAgICAgICAgICBhdXRvTG9naWNhbEhlaWdodFJlZ2lvbnMrKzsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1Ro
cmVhZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaAppbmRl
eCBiOTQyZWVlNTcyZTk1YWRhYzNjMDg5ZTEzMjUzNzY1NjZkZDE2NTIyLi45M2U5MTM3ZjA5OGQw
YTU1YjA3MWI2NjVlMDYxZDNkZmY0ZGM2ODdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGbG93VGhyZWFkLmgKQEAgLTgwLDEzICs4MCwxMiBAQCBwdWJsaWM6CiAgICAgYm9v
bCBoaXRUZXN0Rmxvd1RocmVhZFBvcnRpb25JblJlZ2lvbihSZW5kZXJSZWdpb24qLCBMYXlvdXRS
ZWN0IGZsb3dUaHJlYWRQb3J0aW9uUmVjdCwgTGF5b3V0UmVjdCBmbG93VGhyZWFkUG9ydGlvbk92
ZXJmbG93UmVjdCwgY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3Qg
SGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYg
YWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0OwogCiAgICAgYm9vbCBoYXNSZWdpb25zKCkgY29uc3Qg
eyByZXR1cm4gbV9yZWdpb25MaXN0LnNpemUoKTsgfQotICAgIGJvb2wgaGFzVmFsaWRSZWdpb25z
KCkgY29uc3QgeyBBU1NFUlQoIW1fcmVnaW9uc0ludmFsaWRhdGVkKTsgcmV0dXJuIG1faGFzVmFs
aWRSZWdpb25zOyB9CiAgICAgLy8gQ2hlY2sgaWYgdGhlIGNvbnRlbnQgaXMgZmxvd24gaW50byBh
dCBsZWFzdCBhIHJlZ2lvbiB3aXRoIHJlZ2lvbiBzdHlsaW5nIHJ1bGVzLgogICAgIGJvb2wgaGFz
UmVnaW9uc1dpdGhTdHlsaW5nKCkgY29uc3QgeyByZXR1cm4gbV9oYXNSZWdpb25zV2l0aFN0eWxp
bmc7IH0KICAgICB2b2lkIGNoZWNrUmVnaW9uc1dpdGhTdHlsaW5nKCk7CiAKICAgICB2b2lkIGlu
dmFsaWRhdGVSZWdpb25zKCkgeyBtX3JlZ2lvbnNJbnZhbGlkYXRlZCA9IHRydWU7IHNldE5lZWRz
TGF5b3V0KHRydWUpOyB9Ci0gICAgYm9vbCBoYXNWYWxpZFJlZ2lvbkluZm8oKSBjb25zdCB7IHJl
dHVybiAhbV9yZWdpb25zSW52YWxpZGF0ZWQgJiYgaGFzVmFsaWRSZWdpb25zKCk7IH0KKyAgICBi
b29sIGhhc1ZhbGlkUmVnaW9uSW5mbygpIGNvbnN0IHsgcmV0dXJuICFtX3JlZ2lvbnNJbnZhbGlk
YXRlZCAmJiAhbV9yZWdpb25MaXN0LmlzRW1wdHkoKTsgfQogCiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8UmVuZGVyU3R5bGU+IGNyZWF0ZUZsb3dUaHJlYWRTdHlsZShSZW5kZXJTdHlsZSogcGFyZW50
U3R5bGUpOwogCkBAIC0xNzksNyArMTc4LDYgQEAgcHJvdGVjdGVkOgogICAgIHR5cGVkZWYgSGFz
aE1hcDxjb25zdCBSZW5kZXJCb3gqLCBSZW5kZXJSZWdpb25SYW5nZT4gUmVuZGVyUmVnaW9uUmFu
Z2VNYXA7CiAgICAgUmVuZGVyUmVnaW9uUmFuZ2VNYXAgbV9yZWdpb25SYW5nZU1hcDsKIAotICAg
IGJvb2wgbV9oYXNWYWxpZFJlZ2lvbnMgOiAxOwogICAgIGJvb2wgbV9yZWdpb25zSW52YWxpZGF0
ZWQgOiAxOwogICAgIGJvb2wgbV9yZWdpb25zSGF2ZVVuaWZvcm1Mb2dpY2FsV2lkdGggOiAxOwog
ICAgIGJvb2wgbV9yZWdpb25zSGF2ZVVuaWZvcm1Mb2dpY2FsSGVpZ2h0IDogMTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAKaW5kZXgg
ZjVlNjNmNDA2NDdhOWUxMTNkNTQ1ZjY2Yzk4NTRlYjNhZjE2NzY2Mi4uNTYyNDdjOGY4MTQxMGZl
NjNjNTVmMDFiNjc2ZDM5ZjdlMGM1YzZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAKQEAgLTIwMSwyNCArMjAxLDMxIEBAIHN0
YXRpYyBib29sIGNvbXBhcmVSZW5kZXJSZWdpb25zKGNvbnN0IFJlbmRlclJlZ2lvbiogZmlyc3RS
ZWdpb24sIGNvbnN0IFJlbmRlclJlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgUmVuZGVy
TmFtZWRGbG93VGhyZWFkOjphZGRSZWdpb25Ub1RocmVhZChSZW5kZXJSZWdpb24qIHJlbmRlclJl
Z2lvbikKKy8vIFRoaXMgaGVscGVyIGZ1bmN0aW9uIGFkZHMgYSByZWdpb24gdG8gYSBsaXN0IHBy
ZXNlcnZpbmcgdGhlIG9yZGVyIHByb3BlcnR5IG9mIHRoZSBsaXN0Lgorc3RhdGljIHZvaWQgYWRk
UmVnaW9uVG9MaXN0KFJlbmRlclJlZ2lvbkxpc3QmIHJlZ2lvbkxpc3QsIFJlbmRlclJlZ2lvbiog
cmVuZGVyUmVnaW9uKQogewotICAgIEFTU0VSVChyZW5kZXJSZWdpb24pOwotICAgIGlmIChtX3Jl
Z2lvbkxpc3QuaXNFbXB0eSgpKQotICAgICAgICBtX3JlZ2lvbkxpc3QuYWRkKHJlbmRlclJlZ2lv
bik7CisgICAgaWYgKHJlZ2lvbkxpc3QuaXNFbXB0eSgpKQorICAgICAgICByZWdpb25MaXN0LmFk
ZChyZW5kZXJSZWdpb24pOwogICAgIGVsc2UgewogICAgICAgICAvLyBGaW5kIHRoZSBmaXJzdCBy
ZWdpb24gImdyZWF0ZXIiIHRoYW4gcmVuZGVyUmVnaW9uLgotICAgICAgICBSZW5kZXJSZWdpb25M
aXN0OjppdGVyYXRvciBpdCA9IG1fcmVnaW9uTGlzdC5iZWdpbigpOwotICAgICAgICB3aGlsZSAo
aXQgIT0gbV9yZWdpb25MaXN0LmVuZCgpICYmICFjb21wYXJlUmVuZGVyUmVnaW9ucyhyZW5kZXJS
ZWdpb24sICppdCkpCisgICAgICAgIFJlbmRlclJlZ2lvbkxpc3Q6Oml0ZXJhdG9yIGl0ID0gcmVn
aW9uTGlzdC5iZWdpbigpOworICAgICAgICB3aGlsZSAoaXQgIT0gcmVnaW9uTGlzdC5lbmQoKSAm
JiAhY29tcGFyZVJlbmRlclJlZ2lvbnMocmVuZGVyUmVnaW9uLCAqaXQpKQogICAgICAgICAgICAg
KytpdDsKLSAgICAgICAgbV9yZWdpb25MaXN0Lmluc2VydEJlZm9yZShpdCwgcmVuZGVyUmVnaW9u
KTsKKyAgICAgICAgcmVnaW9uTGlzdC5pbnNlcnRCZWZvcmUoaXQsIHJlbmRlclJlZ2lvbik7CiAg
ICAgfQorfQorCit2b2lkIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6YWRkUmVnaW9uVG9UaHJlYWQo
UmVuZGVyUmVnaW9uKiByZW5kZXJSZWdpb24pCit7CisgICAgQVNTRVJUKHJlbmRlclJlZ2lvbik7
CiAKICAgICByZXNldE1hcmtGb3JEZXN0cnVjdGlvbigpOwogCiAgICAgQVNTRVJUKCFyZW5kZXJS
ZWdpb24tPmlzVmFsaWQoKSk7CiAgICAgaWYgKHJlbmRlclJlZ2lvbi0+cGFyZW50TmFtZWRGbG93
VGhyZWFkKCkpIHsKICAgICAgICAgaWYgKHJlbmRlclJlZ2lvbi0+cGFyZW50TmFtZWRGbG93VGhy
ZWFkKCktPmRlcGVuZHNPbih0aGlzKSkgeworICAgICAgICAgICAgLy8gVGhlIG9yZGVyIG9mIGlu
dmFsaWQgcmVnaW9ucyBpcyBpcnJlbGV2YW50LgorICAgICAgICAgICAgbV9pbnZhbGlkUmVnaW9u
TGlzdC5hZGQocmVuZGVyUmVnaW9uKTsKICAgICAgICAgICAgIC8vIFJlZ2lzdGVyIG91cnNlbGYg
dG8gZ2V0IGEgbm90aWZpY2F0aW9uIHdoZW4gdGhlIHN0YXRlIGNoYW5nZXMuCiAgICAgICAgICAg
ICByZW5kZXJSZWdpb24tPnBhcmVudE5hbWVkRmxvd1RocmVhZCgpLT5tX29ic2VydmVyVGhyZWFk
c1NldC5hZGQodGhpcyk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yMjgsNiArMjM1LDcgQEAg
dm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmFkZFJlZ2lvblRvVGhyZWFkKFJlbmRlclJlZ2lv
biogcmVuZGVyUmVnaW9uKQogICAgIH0KIAogICAgIHJlbmRlclJlZ2lvbi0+c2V0SXNWYWxpZCh0
cnVlKTsKKyAgICBhZGRSZWdpb25Ub0xpc3QobV9yZWdpb25MaXN0LCByZW5kZXJSZWdpb24pOwog
CiAgICAgaW52YWxpZGF0ZVJlZ2lvbnMoKTsKIH0KQEAgLTIzNiwxMCArMjQ0LDExIEBAIHZvaWQg
UmVuZGVyTmFtZWRGbG93VGhyZWFkOjpyZW1vdmVSZWdpb25Gcm9tVGhyZWFkKFJlbmRlclJlZ2lv
biogcmVuZGVyUmVnaW9uKQogewogICAgIEFTU0VSVChyZW5kZXJSZWdpb24pOwogICAgIG1fcmVn
aW9uUmFuZ2VNYXAuY2xlYXIoKTsKLSAgICBtX3JlZ2lvbkxpc3QucmVtb3ZlKHJlbmRlclJlZ2lv
bik7CiAKICAgICBpZiAocmVuZGVyUmVnaW9uLT5wYXJlbnROYW1lZEZsb3dUaHJlYWQoKSkgewog
ICAgICAgICBpZiAoIXJlbmRlclJlZ2lvbi0+aXNWYWxpZCgpKSB7CisgICAgICAgICAgICBBU1NF
UlQobV9pbnZhbGlkUmVnaW9uTGlzdC5jb250YWlucyhyZW5kZXJSZWdpb24pKTsKKyAgICAgICAg
ICAgIG1faW52YWxpZFJlZ2lvbkxpc3QucmVtb3ZlKHJlbmRlclJlZ2lvbik7CiAgICAgICAgICAg
ICByZW5kZXJSZWdpb24tPnBhcmVudE5hbWVkRmxvd1RocmVhZCgpLT5tX29ic2VydmVyVGhyZWFk
c1NldC5yZW1vdmUodGhpcyk7CiAgICAgICAgICAgICAvLyBObyBuZWVkIHRvIGludmFsaWRhdGUg
dGhlIHJlZ2lvbnMgcmVjdGFuZ2xlcy4gVGhlIHJlbW92ZWQgcmVnaW9uCiAgICAgICAgICAgICAv
LyB3YXMgbm90IHRha2VuIGludG8gYWNjb3VudC4gSnVzdCByZXR1cm4gaGVyZS4KQEAgLTI0OCw2
ICsyNTcsOSBAQCB2b2lkIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6cmVtb3ZlUmVnaW9uRnJvbVRo
cmVhZChSZW5kZXJSZWdpb24qIHJlbmRlclJlZ2lvbikKICAgICAgICAgcmVtb3ZlRGVwZW5kZW5j
eU9uRmxvd1RocmVhZChyZW5kZXJSZWdpb24tPnBhcmVudE5hbWVkRmxvd1RocmVhZCgpKTsKICAg
ICB9CiAKKyAgICBBU1NFUlQobV9yZWdpb25MaXN0LmNvbnRhaW5zKHJlbmRlclJlZ2lvbikpOwor
ICAgIG1fcmVnaW9uTGlzdC5yZW1vdmUocmVuZGVyUmVnaW9uKTsKKwogICAgIGlmIChjYW5CZURl
c3Ryb3llZCgpKQogICAgICAgICBzZXRNYXJrRm9yRGVzdHJ1Y3Rpb24oKTsKIApAQCAtMjYwLDE5
ICsyNzIsMjkgQEAgdm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnJlbW92ZVJlZ2lvbkZyb21U
aHJlYWQoUmVuZGVyUmVnaW9uKiByZW5kZXJSZWdpb24pCiAKIHZvaWQgUmVuZGVyTmFtZWRGbG93
VGhyZWFkOjpjaGVja0ludmFsaWRSZWdpb25zKCkKIHsKLSAgICBmb3IgKFJlbmRlclJlZ2lvbkxp
c3Q6Oml0ZXJhdG9yIGl0ZXIgPSBtX3JlZ2lvbkxpc3QuYmVnaW4oKTsgaXRlciAhPSBtX3JlZ2lv
bkxpc3QuZW5kKCk7ICsraXRlcikgeworICAgIFZlY3RvcjxSZW5kZXJSZWdpb24qPiBuZXdWYWxp
ZFJlZ2lvbnM7CisgICAgZm9yIChSZW5kZXJSZWdpb25MaXN0OjppdGVyYXRvciBpdGVyID0gbV9p
bnZhbGlkUmVnaW9uTGlzdC5iZWdpbigpOyBpdGVyICE9IG1faW52YWxpZFJlZ2lvbkxpc3QuZW5k
KCk7ICsraXRlcikgewogICAgICAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9ICppdGVyOwogICAg
ICAgICAvLyBUaGUgb25seSByZWFzb24gYSByZWdpb24gd291bGQgYmUgaW52YWxpZCBpcyBiZWNh
dXNlIGl0IGhhcyBhIHBhcmVudCBmbG93IHRocmVhZC4KLSAgICAgICAgQVNTRVJUKHJlZ2lvbi0+
aXNWYWxpZCgpIHx8IHJlZ2lvbi0+cGFyZW50TmFtZWRGbG93VGhyZWFkKCkpOwotICAgICAgICBp
ZiAocmVnaW9uLT5pc1ZhbGlkKCkgfHwgcmVnaW9uLT5wYXJlbnROYW1lZEZsb3dUaHJlYWQoKS0+
ZGVwZW5kc09uKHRoaXMpKQorICAgICAgICBBU1NFUlQoIXJlZ2lvbi0+aXNWYWxpZCgpICYmIHJl
Z2lvbi0+cGFyZW50TmFtZWRGbG93VGhyZWFkKCkpOworICAgICAgICBpZiAocmVnaW9uLT5wYXJl
bnROYW1lZEZsb3dUaHJlYWQoKS0+ZGVwZW5kc09uKHRoaXMpKQogICAgICAgICAgICAgY29udGlu
dWU7CiAKKyAgICAgICAgbmV3VmFsaWRSZWdpb25zLmFwcGVuZChyZWdpb24pOworICAgIH0KKwor
ICAgIGZvciAoVmVjdG9yPFJlbmRlclJlZ2lvbio+OjppdGVyYXRvciBpdGVyID0gbmV3VmFsaWRS
ZWdpb25zLmJlZ2luKCk7IGl0ZXIgIT0gbmV3VmFsaWRSZWdpb25zLmVuZCgpOyArK2l0ZXIpIHsK
KyAgICAgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSAqaXRlcjsKKyAgICAgICAgbV9pbnZhbGlk
UmVnaW9uTGlzdC5yZW1vdmUocmVnaW9uKTsKICAgICAgICAgcmVnaW9uLT5wYXJlbnROYW1lZEZs
b3dUaHJlYWQoKS0+bV9vYnNlcnZlclRocmVhZHNTZXQucmVtb3ZlKHRoaXMpOwotICAgICAgICBh
ZGREZXBlbmRlbmN5T25GbG93VGhyZWFkKHJlZ2lvbi0+cGFyZW50TmFtZWRGbG93VGhyZWFkKCkp
OwogICAgICAgICByZWdpb24tPnNldElzVmFsaWQodHJ1ZSk7Ci0gICAgICAgIGludmFsaWRhdGVS
ZWdpb25zKCk7CisgICAgICAgIGFkZERlcGVuZGVuY3lPbkZsb3dUaHJlYWQocmVnaW9uLT5wYXJl
bnROYW1lZEZsb3dUaHJlYWQoKSk7CisgICAgICAgIGFkZFJlZ2lvblRvTGlzdChtX3JlZ2lvbkxp
c3QsIHJlZ2lvbik7CiAgICAgfQogCisgICAgaWYgKCFuZXdWYWxpZFJlZ2lvbnMuaXNFbXB0eSgp
KQorICAgICAgICBpbnZhbGlkYXRlUmVnaW9ucygpOworCiAgICAgaWYgKG1fb2JzZXJ2ZXJUaHJl
YWRzU2V0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgKaW5kZXggMzE5OTMwN2NmZmZjZGQ5
Yjg1ZDRjZGFjZWQzYzZjZjZhOTgxZWY1Zi4uYTgzMzE1MWJmOTVmNDJiOWRhYjJiYmZkMDc3ZTQ1
NDE3ZTMyNzZhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5h
bWVkRmxvd1RocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1l
ZEZsb3dUaHJlYWQuaApAQCAtNTAsNiArNTAsOCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIGZsb3dUaHJlYWROYW1lKCkgY29uc3Q7CiAKKyAgICBjb25zdCBSZW5kZXJSZWdp
b25MaXN0JiBpbnZhbGlkUmVuZGVyUmVnaW9uTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1faW52YWxp
ZFJlZ2lvbkxpc3Q7IH0KKwogICAgIFJlbmRlck9iamVjdCogbmV4dFJlbmRlcmVyRm9yTm9kZShO
b2RlKikgY29uc3Q7CiAgICAgUmVuZGVyT2JqZWN0KiBwcmV2aW91c1JlbmRlcmVyRm9yTm9kZShO
b2RlKikgY29uc3Q7CiAKQEAgLTg2LDcgKzg4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZERl
cGVuZGVuY3lPbkZsb3dUaHJlYWQoUmVuZGVyTmFtZWRGbG93VGhyZWFkKik7CiAgICAgdm9pZCBy
ZW1vdmVEZXBlbmRlbmN5T25GbG93VGhyZWFkKFJlbmRlck5hbWVkRmxvd1RocmVhZCopOwogICAg
IHZvaWQgY2hlY2tJbnZhbGlkUmVnaW9ucygpOwotICAgIGJvb2wgY2FuQmVEZXN0cm95ZWQoKSBj
b25zdCB7IHJldHVybiBtX3JlZ2lvbkxpc3QuaXNFbXB0eSgpICYmIG1fY29udGVudE5vZGVzLmlz
RW1wdHkoKTsgfQorICAgIGJvb2wgY2FuQmVEZXN0cm95ZWQoKSBjb25zdCB7IHJldHVybiBtX2lu
dmFsaWRSZWdpb25MaXN0LmlzRW1wdHkoKSAmJiBtX3JlZ2lvbkxpc3QuaXNFbXB0eSgpICYmIG1f
Y29udGVudE5vZGVzLmlzRW1wdHkoKTsgfQogICAgIHZvaWQgcmVnaW9uTGF5b3V0VXBkYXRlRXZl
bnRUaW1lckZpcmVkKFRpbWVyPFJlbmRlck5hbWVkRmxvd1RocmVhZD4qKTsKICAgICB2b2lkIGNs
ZWFyQ29udGVudE5vZGVzKCk7CiAKQEAgLTEwNyw2ICsxMDksOCBAQCBwcml2YXRlOgogCiAgICAg
TmFtZWRGbG93Q29udGVudE5vZGVzIG1fY29udGVudE5vZGVzOwogCisgICAgUmVuZGVyUmVnaW9u
TGlzdCBtX2ludmFsaWRSZWdpb25MaXN0OworCiAgICAgLy8gVGhlIERPTSBPYmplY3QgdGhhdCBy
ZXByZXNlbnRzIGEgbmFtZWQgZmxvdy4KICAgICBSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiBtX25h
bWVkRmxvdzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRy
ZWVBc1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQu
Y3BwCmluZGV4IDgxM2NmN2UwYzkyYThlM2M4ZWIzZTk2OTEwZjAzYWEzNmE1ZDE0YTQuLmFjNmJk
MzQ1MjRmY2NlMDIzNzI2MTYxYjM5ZTBlNDc3ZjE0MzZkMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTY1NSw2ICs2NTUsMzEgQEAgc3Rh
dGljIHZvaWQgd3JpdGUoVGV4dFN0cmVhbSYgdHMsIFJlbmRlckxheWVyJiBsLAogICAgICAgICB3
cml0ZSh0cywgKmwucmVuZGVyZXIoKSwgaW5kZW50ICsgMSwgYmVoYXZpb3IpOwogfQogCitzdGF0
aWMgdm9pZCB3cml0ZVJlbmRlclJlZ2lvbkxpc3QoY29uc3QgUmVuZGVyUmVnaW9uTGlzdCYgZmxv
d1RocmVhZFJlZ2lvbkxpc3QsIFRleHRTdHJlYW0mIHRzLCBpbnQgaW5kZW50KQoreworICAgIGZv
ciAoUmVuZGVyUmVnaW9uTGlzdDo6Y29uc3RfaXRlcmF0b3IgaXRSUiA9IGZsb3dUaHJlYWRSZWdp
b25MaXN0LmJlZ2luKCk7IGl0UlIgIT0gZmxvd1RocmVhZFJlZ2lvbkxpc3QuZW5kKCk7ICsraXRS
UikgeworICAgICAgICBSZW5kZXJSZWdpb24qIHJlbmRlclJlZ2lvbiA9ICppdFJSOworICAgICAg
ICB3cml0ZUluZGVudCh0cywgaW5kZW50ICsgMik7CisgICAgICAgIHRzIDw8ICJSZW5kZXJSZWdp
b24iOworICAgICAgICBpZiAocmVuZGVyUmVnaW9uLT5nZW5lcmF0aW5nTm9kZSgpKSB7CisgICAg
ICAgICAgICBTdHJpbmcgdGFnTmFtZSA9IGdldFRhZ05hbWUocmVuZGVyUmVnaW9uLT5nZW5lcmF0
aW5nTm9kZSgpKTsKKyAgICAgICAgICAgIGlmICghdGFnTmFtZS5pc0VtcHR5KCkpCisgICAgICAg
ICAgICAgICAgdHMgPDwgIiB7IiA8PCB0YWdOYW1lIDw8ICJ9IjsKKyAgICAgICAgICAgIGlmIChy
ZW5kZXJSZWdpb24tPmdlbmVyYXRpbmdOb2RlKCktPmlzRWxlbWVudE5vZGUoKSAmJiByZW5kZXJS
ZWdpb24tPmdlbmVyYXRpbmdOb2RlKCktPmhhc0lEKCkpIHsKKyAgICAgICAgICAgICAgICBFbGVt
ZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KHJlbmRlclJlZ2lvbi0+Z2VuZXJh
dGluZ05vZGUoKSk7CisgICAgICAgICAgICAgICAgdHMgPDwgIiAjIiA8PCBlbGVtZW50LT5pZEZv
clN0eWxlUmVzb2x1dGlvbigpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHJlbmRl
clJlZ2lvbi0+aGFzQ3VzdG9tUmVnaW9uU3R5bGUoKSkKKyAgICAgICAgICAgICAgICB0cyA8PCAi
IHJlZ2lvbiBzdHlsZTogMSI7CisgICAgICAgICAgICBpZiAocmVuZGVyUmVnaW9uLT5oYXNBdXRv
TG9naWNhbEhlaWdodCgpKQorICAgICAgICAgICAgICAgIHRzIDw8ICIgaGFzQXV0b0xvZ2ljYWxI
ZWlnaHQiOworICAgICAgICB9CisgICAgICAgIGlmICghcmVuZGVyUmVnaW9uLT5pc1ZhbGlkKCkp
CisgICAgICAgICAgICB0cyA8PCAiIGludmFsaWQiOworICAgICAgICB0cyA8PCAiXG4iOworICAg
IH0KK30KKwogc3RhdGljIHZvaWQgd3JpdGVSZW5kZXJOYW1lZEZsb3dUaHJlYWRzKFRleHRTdHJl
YW0mIHRzLCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3LCBjb25zdCBSZW5kZXJMYXllciogcm9vdExh
eWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTGF5b3V0UmVjdCYgcGFpbnRSZWN0
LCBpbnQgaW5kZW50LCBSZW5kZXJBc1RleHRCZWhhdmlvciBiZWhhdmlvcikKIHsKQEAgLTY3NSwz
MiArNzAwLDE0IEBAIHN0YXRpYyB2b2lkIHdyaXRlUmVuZGVyTmFtZWRGbG93VGhyZWFkcyhUZXh0
U3RyZWFtJiB0cywgUmVuZGVyVmlldyogcmVuZGVyVmlldywKICAgICAgICAgUmVuZGVyTGF5ZXIq
IGxheWVyID0gcmVuZGVyRmxvd1RocmVhZC0+bGF5ZXIoKTsKICAgICAgICAgd3JpdGVMYXllcnMo
dHMsIHJvb3RMYXllciwgbGF5ZXIsIHBhaW50UmVjdCwgaW5kZW50ICsgMiwgYmVoYXZpb3IpOwog
Ci0gICAgICAgIC8vIERpc3BsYXkgdGhlIHJlbmRlciByZWdpb25zIGF0dGFjaGVkIHRvIHRoaXMg
ZmxvdyB0aHJlYWQKLSAgICAgICAgY29uc3QgUmVuZGVyUmVnaW9uTGlzdCYgZmxvd1RocmVhZFJl
Z2lvbkxpc3QgPSByZW5kZXJGbG93VGhyZWFkLT5yZW5kZXJSZWdpb25MaXN0KCk7Ci0gICAgICAg
IGlmICghZmxvd1RocmVhZFJlZ2lvbkxpc3QuaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIERpc3Bs
YXkgdGhlIHZhbGlkIGFuZCBpbnZhbGlkIHJlbmRlciByZWdpb25zIGF0dGFjaGVkIHRvIHRoaXMg
ZmxvdyB0aHJlYWQuCisgICAgICAgIGNvbnN0IFJlbmRlclJlZ2lvbkxpc3QmIHZhbGlkUmVnaW9u
c0xpc3QgPSByZW5kZXJGbG93VGhyZWFkLT5yZW5kZXJSZWdpb25MaXN0KCk7CisgICAgICAgIGNv
bnN0IFJlbmRlclJlZ2lvbkxpc3QmIGludmFsaWRSZWdpb25zTGlzdCA9IHJlbmRlckZsb3dUaHJl
YWQtPmludmFsaWRSZW5kZXJSZWdpb25MaXN0KCk7CisgICAgICAgIGlmICghdmFsaWRSZWdpb25z
TGlzdC5pc0VtcHR5KCkgfHwgIWludmFsaWRSZWdpb25zTGlzdC5pc0VtcHR5KCkpIHsKICAgICAg
ICAgICAgIHdyaXRlSW5kZW50KHRzLCBpbmRlbnQgKyAxKTsKICAgICAgICAgICAgIHRzIDw8ICJS
ZWdpb25zIGZvciBmbG93ICciPDwgcmVuZGVyRmxvd1RocmVhZC0+Zmxvd1RocmVhZE5hbWUoKSA8
PCAiJ1xuIjsKLSAgICAgICAgICAgIGZvciAoUmVuZGVyUmVnaW9uTGlzdDo6Y29uc3RfaXRlcmF0
b3IgaXRSUiA9IGZsb3dUaHJlYWRSZWdpb25MaXN0LmJlZ2luKCk7IGl0UlIgIT0gZmxvd1RocmVh
ZFJlZ2lvbkxpc3QuZW5kKCk7ICsraXRSUikgewotICAgICAgICAgICAgICAgIFJlbmRlclJlZ2lv
biogcmVuZGVyUmVnaW9uID0gKml0UlI7Ci0gICAgICAgICAgICAgICAgd3JpdGVJbmRlbnQodHMs
IGluZGVudCArIDIpOwotICAgICAgICAgICAgICAgIHRzIDw8ICJSZW5kZXJSZWdpb24iOwotICAg
ICAgICAgICAgICAgIGlmIChyZW5kZXJSZWdpb24tPmdlbmVyYXRpbmdOb2RlKCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgU3RyaW5nIHRhZ05hbWUgPSBnZXRUYWdOYW1lKHJlbmRlclJlZ2lvbi0+
Z2VuZXJhdGluZ05vZGUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghdGFnTmFtZS5pc0Vt
cHR5KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICB0cyA8PCAiIHsiIDw8IHRhZ05hbWUgPDwg
In0iOwotICAgICAgICAgICAgICAgICAgICBpZiAocmVuZGVyUmVnaW9uLT5nZW5lcmF0aW5nTm9k
ZSgpLT5pc0VsZW1lbnROb2RlKCkgJiYgcmVuZGVyUmVnaW9uLT5nZW5lcmF0aW5nTm9kZSgpLT5o
YXNJRCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gc3Rh
dGljX2Nhc3Q8RWxlbWVudCo+KHJlbmRlclJlZ2lvbi0+Z2VuZXJhdGluZ05vZGUoKSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB0cyA8PCAiICMiIDw8IGVsZW1lbnQtPmlkRm9yU3R5bGVSZXNv
bHV0aW9uKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYg
KHJlbmRlclJlZ2lvbi0+aGFzQ3VzdG9tUmVnaW9uU3R5bGUoKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHRzIDw8ICIgcmVnaW9uIHN0eWxlOiAxIjsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KHJlbmRlclJlZ2lvbi0+aGFzQXV0b0xvZ2ljYWxIZWlnaHQoKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHRzIDw8ICIgaGFzQXV0b0xvZ2ljYWxIZWlnaHQiOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBpZiAoIXJlbmRlclJlZ2lvbi0+aXNWYWxpZCgpKQotICAgICAgICAg
ICAgICAgICAgICB0cyA8PCAiIGludmFsaWQiOwotICAgICAgICAgICAgICAgIHRzIDw8ICJcbiI7
Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICB3cml0ZVJlbmRlclJlZ2lvbkxpc3QodmFsaWRS
ZWdpb25zTGlzdCwgdHMsIGluZGVudCk7CisgICAgICAgICAgICB3cml0ZVJlbmRlclJlZ2lvbkxp
c3QoaW52YWxpZFJlZ2lvbnNMaXN0LCB0cywgaW5kZW50KTsKICAgICAgICAgfQogICAgIH0KIH0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxNGIyZDA5YzExOWQzMTExNTZlMTdjNzg3NTFhYjNmNjkxMmU3MTNmLi42ZGU0NzNl
NzNjMGFkYmE4YzJiMGVmMzVmNjc3ZDRlM2Q3YmEzNDMwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAK
KzIwMTItMTAtMTAgIEFuZHJlaSBCdWN1ciAgPGFidWN1ckBhZG9iZS5jb20+CisKKyAgICAgICAg
W0NTUyBSZWdpb25zXSBDcmVhdGUgYSBzZXBhcmF0ZSBsaXN0IGZvciB0aGUgaW52YWxpZCByZWdp
b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODc1
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBy
ZXN1bHQgZm9yIGZhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LXNhbWUtZmxvdy5odG1sIHdh
cyBhZGFwdGVkIHRvIHRoZSBuZXcgZHVtcCBmb3JtYXQuCisgICAgICAgIEFsc28sIHRoZSBQTkcg
ZmlsZXMgd2VyZSByZW1vdmVkIGJlY2F1c2UgaXQgaXMgbm90IGEgcGl4ZWwgdGVzdC4KKworICAg
ICAgICAqIHBsYXRmb3JtL2VmbC9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZs
b3ctZXhwZWN0ZWQucG5nOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9mYXN0L3Jl
Z2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZsb3ctZXhwZWN0ZWQudHh0OgorICAgICAgICAq
IHBsYXRmb3JtL2d0ay9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZsb3ctZXhw
ZWN0ZWQucG5nOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9mYXN0L3JlZ2lvbnMv
Zmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZsb3ctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRm
b3JtL21hYy9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZsb3ctZXhwZWN0ZWQu
cG5nOiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L3JlZ2lvbnMvZmxvd3Mt
ZGVwZW5kZW5jeS1zYW1lLWZsb3ctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBsYXRmb3JtL3F0
L2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LXNhbWUtZmxvdy1leHBlY3RlZC5wbmc6IFJl
bW92ZWQuCisgICAgICAgICogcGxhdGZvcm0vcXQvZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVu
Y3ktc2FtZS1mbG93LWV4cGVjdGVkLnR4dDoKKwogMjAxMi0xMC0wOSAgS2VudCBUYW11cmEgIDx0
a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIGEgdGVzdCB0byBjaGVjayBhIHN0ZXAg
YXR0cmlidXRlIHdvcmtzIGZvciBhIGNhbGVuZGFyIHBpY2tlcgpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvcGxhdGZvcm0vZWZsL2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LXNhbWUtZmxv
dy1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvZmFzdC9yZWdpb25zL2Zs
b3dzLWRlcGVuZGVuY3ktc2FtZS1mbG93LWV4cGVjdGVkLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggZGMxNGI2MDU3ZDI3NzNhNGFlOTg3MjcwODEwYjQ4ZmYxNmE0N2E4Ni4uMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMApHSVQgYmluYXJ5IHBhdGNoCmxp
dGVyYWwgMApIY21WP2QwMDAwMQoKbGl0ZXJhbCAyODU4CnpjbWVBU0BOPyhvbEh5YHVWQnEhaWEw
eX55VXsrdllWMmE+aTAqWik9aF5obEElQFdzJGxIYG9rPG19P29UbX1uTQp6PENJaGIxNS0yZTZo
a0EhcXxgKSVCPWUteTxXd2BXTUFIO0Ehe2h8PnxHJEJuKnBqXjZUXlJtQDtEV3UmQ28/Y2AKenRA
M25uNDVecyZfUyEqQzFfZ2x3MkJyViFvPiUyK1FXNUBnKTdGQHFxMlhNbUVDYSZfPjFJfDIwcGti
OzJFJFJ0CnpYZHNOSGd3YjN1bmhRcEEhRHVjUiU+fD5tVV5FeGRCXlBZdVc9dnNVWWpXeyZFM2g1
UTtPWGs7dmQkQD8yPl56XgpCelYhZUEKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9lZmwvZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktc2FtZS1mbG93LWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5j
eS1zYW1lLWZsb3ctZXhwZWN0ZWQudHh0CmluZGV4IDczMzNmYzUwYzMwNTNkMzBlMzM2MjE4OTUy
NWI5ZTU4NTQ4N2UxMjQuLmY4NzlmZGVkM2FjMGFmMWM4ZjVhNGNiZTc4MzE3MjAzNmU1NjExNWUg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9mYXN0L3JlZ2lvbnMvZmxvd3Mt
ZGVwZW5kZW5jeS1zYW1lLWZsb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2VmbC9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZsb3ctZXhwZWN0ZWQu
dHh0CkBAIC05LDggKzksOCBAQCBsYXllciBhdCAoMCwwKSBzaXplIDgwMHgxNgogRmxvdyBUaHJl
YWRzCiAgIFRocmVhZCB3aXRoIGZsb3ctbmFtZSAnZmxvd0InCiAgIFJlZ2lvbnMgZm9yIGZsb3cg
J2Zsb3dCJwotICAgIFJlbmRlclJlZ2lvbiB7RElWfSBpbnZhbGlkCiAgICAgUmVuZGVyUmVnaW9u
IHtESVZ9CisgICAgUmVuZGVyUmVnaW9uIHtESVZ9IGludmFsaWQKICAgVGhyZWFkIHdpdGggZmxv
dy1uYW1lICdmbG93QycKICAgUmVnaW9ucyBmb3IgZmxvdyAnZmxvd0MnCiAgICAgUmVuZGVyUmVn
aW9uIHtESVZ9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9yZWdp
b25zL2Zsb3dzLWRlcGVuZGVuY3ktc2FtZS1mbG93LWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2d0ay9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZsb3ctZXhw
ZWN0ZWQucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYzE0YjYwNTdkMjc3M2E0
YWU5ODcyNzA4MTBiNDhmZjE2YTQ3YTg2Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCkdJVCBiaW5hcnkgcGF0Y2gKbGl0ZXJhbCAwCkhjbVY/ZDAwMDAxCgpsaXRlcmFs
IDI4NTgKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlVeyt2WVYyYT5pMCpaKT1oXmhsQSVAV3Mk
bEhgb2s8bX0/b1RtfW5NCno8Q0loYjE1LTJlNmhrQSFxfGApJUI9ZS15PFd3YFdNQUg7QSF7aHw+
fEckQm4qcGpeNlReUm1AO0RXdSZDbz9jYAp6dEAzbm40NV5zJl9TISpDMV9nbHcyQnJWIW8+JTIr
UVc1QGcpN0ZAcXEyWE1tRUNhJl8+MUl8MjBwa2I7MkUkUnQKelhkc05IZ3diM3VuaFFwQSFEdWNS
JT58Pm1VXkV4ZEJeUFl1Vz12c1VZald7JkUzaDVRO09Yazt2ZCRAPzI+XnpeCkJ6ViFlQQoKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVw
ZW5kZW5jeS1zYW1lLWZsb3ctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3Rr
L2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LXNhbWUtZmxvdy1leHBlY3RlZC50eHQKaW5k
ZXggNzMzM2ZjNTBjMzA1M2QzMGUzMzYyMTg5NTI1YjllNTg1NDg3ZTEyNC4uZjg3OWZkZWQzYWMw
YWYxYzhmNWE0Y2JlNzgzMTcyMDM2ZTU2MTE1ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrL2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LXNhbWUtZmxvdy1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvcmVnaW9ucy9mbG93cy1k
ZXBlbmRlbmN5LXNhbWUtZmxvdy1leHBlY3RlZC50eHQKQEAgLTksOCArOSw4IEBAIGxheWVyIGF0
ICgwLDApIHNpemUgODAweDE2CiBGbG93IFRocmVhZHMKICAgVGhyZWFkIHdpdGggZmxvdy1uYW1l
ICdmbG93QicKICAgUmVnaW9ucyBmb3IgZmxvdyAnZmxvd0InCi0gICAgUmVuZGVyUmVnaW9uIHtE
SVZ9IGludmFsaWQKICAgICBSZW5kZXJSZWdpb24ge0RJVn0KKyAgICBSZW5kZXJSZWdpb24ge0RJ
Vn0gaW52YWxpZAogICBUaHJlYWQgd2l0aCBmbG93LW5hbWUgJ2Zsb3dDJwogICBSZWdpb25zIGZv
ciBmbG93ICdmbG93QycKICAgICBSZW5kZXJSZWdpb24ge0RJVn0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZs
b3ctZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvcmVnaW9ucy9m
bG93cy1kZXBlbmRlbmN5LXNhbWUtZmxvdy1leHBlY3RlZC5wbmcKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDE3MmE0MzBkODA0ZTgzMDhlMWJkOTk5OTEzOWU3MzcwMTZkMmVmMzAuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKR0lUIGJpbmFyeSBwYXRjaAps
aXRlcmFsIDAKSGNtVj9kMDAwMDEKCmxpdGVyYWwgMTA1NjQKemNtZUFTQE4/KG9sSHlgdVZCcSFp
YTB5fnlVeyt2WVYyYT5pMUIlUWxZYnBSem5rQjlnQ0NNNDckPVN1RnhlT01qCnojd249PTJCdjFf
RFRZUmROdlZrak4jO3FaJCpFPiRpS1ohTGhSRiUkfDk9QmJrO2A7OzQpQW4jUnRQQXtQc198bgp6
V25pZGFZej9gZWVLfG5uLT51WlM4eTxGQnIzLVN9V2xZUlYyYCtKLXZuQE0oKlYoOTdYNEA0I1ct
clQpblJRSSUKelpRVGE7bzg5P1ZONlNDNSt4PXdjeCFJZ3dKJkVfMk5hQncqOVpFam1sczM8c1pR
YHBRJSlJbWE/KXlMQVMqa3lPCno2MVUpSVZibzwyZVNWUzlWRT8wc3t2M0hDYXttKSFvUSQqZnBB
NnNiSFpkPFhjTClCPG49MFJMez4mJExFVGBtTQp6e3s3WWVsQ1JGMSR8THdlTXElRisoPDRkYEJO
dEBHVHF6TkxhSU4kR1R0bX1DWE1LdHptYX1sbXIoNUpGSCRMcD8KelJpMmgrVihLdTleQVAoe0Nv
QXRBNGkrO3FBQUlKJGFqc0cxaU1yYSNOcVhIanQ2aFdpcFFnQk87YCNQTHpQUn5RCnp7RHVgJVVk
fj9vVCViMzFtWmFhc255ITJEbWJDPnYmbHMqQXcyem5BPiRxY1hMND9gayNpbiZtWEkwaC1zX2xM
TAp6dHxXOEQrdGdYcEJRPUZvV21OVmdneyg4cSQkWkFtKyZTeW48K29ufkNUKkIrdmZzb3deN0dA
ajBhSUNDOHlAfW8KeiZELXRFdUQjYzlQbl52RCp3aypoPUN5aTxlfHhgd0UkVnQmSXFBZGVFcG9r
QXplRz42M2NHIyMkPVBNZmhtVnY4CnorQjE3TkhUQjcpWGdyd2MjRklFSGBOKm10SzRPd2VVUH5A
em1We0pwdmJiaWdGP3JmczhUWDJsQHE5YnQjSil5dgp6K1ZTbmQ/fEZBc3VsTVp7WjlUZXVAcn1U
QFROX3tRKzlXKG55MXExVj5FZ1ZIPH55SXhtZDsoeCVATyNvPiorPzEKenhZU2VyT0BZQC0mN01z
TnA4bHRsYEBHU1ZjZEJKVjVqP3hyZTJEdkBtQlohVkR0PjdDe3dwV1ctQ0hZb3h9aXxWCnpadVB3
MnYmWWAzVWg9djBJJVVXSHVDR3FWQnp7Z1hiZEgrNFBzTWptbSp1Qmgwbz58cjx4UWBqSiZNdTQm
T1VHVgp6bmI/UUZjNTx4TURebCh8Qj52VTRNKUFXdzw5JkFWK3coZ1RtKjN1WklweV9ZIT5ISDBG
SGhYSFhrKm9ze0BkIWAKeloyTUxUT0sjZUBaKTA1O2h4VjM1JHlye1RPWip2X1JkZkJPZWBjTmhV
YSpDYHJlbUZNWGFETT9AQ3A5ZlQ9X0czCno7LT5SPnVKXmQ5eDUydnFFJVViRVlxOEhWPEJLZ25Z
WmJoZHsoSmJmb19RIStvYUJMdiNkX2lrajd5KHpabTVhVgp6Y2BiVGQtZSV0UmhLYmc8bGhAa2pD
aHFGQzN0TjQ9TEAhIzdhWDBfIXRNa3ZWeF9iQmRsWH51byNlZGpWRHN4PnMKenZAcVU/ZmtBPTYp
NVM1UWc3Tk0zamwydkJKUz5JQHxLfkMlYiohR2w4bkB9dm9xNlNfMXI7MGA3I052WUkwT19OCno2
YSp7fHdzQXQoNVd5Tm8jeiVyNkRYNXdnRUchO3d4ZzlWS0t2Qmo9PzQkQ2Q7V0xeKHo8RnBpZX5n
dzdxdmhqaAp6e1Eje3tOOSlKWV9RN2NUWHRhR2UrQ0NnQEFDOSZVZnFsJTtfVkgtQGMoaT55K0ND
bV9BQTwrbk0qOWIme2UjaXwKeiFEIzxydzB8KCNLTiMmRmpQPyZrYCR3Ym1pPSo/YXF3fnd1bz9w
Sz5VcnZYQ2ZwcjBCRXg+NDdXMztVPytTVjl0CmpZbUJ4djIzdVJCa141eWgkQ35zcjZDe0FrQXtq
aGd7YW5eTEJ7VHM1LSZnJXMKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMv
ZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktc2FtZS1mbG93LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1l
LWZsb3ctZXhwZWN0ZWQudHh0CmluZGV4IDczMzNmYzUwYzMwNTNkMzBlMzM2MjE4OTUyNWI5ZTU4
NTQ4N2UxMjQuLmY4NzlmZGVkM2FjMGFmMWM4ZjVhNGNiZTc4MzE3MjAzNmU1NjExNWUgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5k
ZW5jeS1zYW1lLWZsb3ctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL21h
Yy9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZsb3ctZXhwZWN0ZWQudHh0CkBA
IC05LDggKzksOCBAQCBsYXllciBhdCAoMCwwKSBzaXplIDgwMHgxNgogRmxvdyBUaHJlYWRzCiAg
IFRocmVhZCB3aXRoIGZsb3ctbmFtZSAnZmxvd0InCiAgIFJlZ2lvbnMgZm9yIGZsb3cgJ2Zsb3dC
JwotICAgIFJlbmRlclJlZ2lvbiB7RElWfSBpbnZhbGlkCiAgICAgUmVuZGVyUmVnaW9uIHtESVZ9
CisgICAgUmVuZGVyUmVnaW9uIHtESVZ9IGludmFsaWQKICAgVGhyZWFkIHdpdGggZmxvdy1uYW1l
ICdmbG93QycKICAgUmVnaW9ucyBmb3IgZmxvdyAnZmxvd0MnCiAgICAgUmVuZGVyUmVnaW9uIHtE
SVZ9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L3JlZ2lvbnMvZmxv
d3MtZGVwZW5kZW5jeS1zYW1lLWZsb3ctZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vcXQvZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktc2FtZS1mbG93LWV4cGVjdGVkLnBu
ZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTM0YzFjNDI5MWQ2NjkwNmVhZGFlODY2
YmVhNDFjNzY4NDZiYTA3YS4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MApHSVQgYmluYXJ5IHBhdGNoCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKbGl0ZXJhbCAzMzI2Cnpj
bWVBU0BOPyhvbEh5YHVWQnEhaWEweX55VXsrdllWMmE+aTFCJVFsWWJwUnpFWDdXcUFzaiRaITsj
VmY8Wn44eQp6TD40bkpARXJrUiM7TXdUKG0rQVk2NCF7NTxjIXFoP0JkY34xYEFXO2x2RCEpUSMx
MXZMbkZoYSlJQF9NXlE2P3wKelI1UDxnKC1icXE8T0s4b3pabj5Ldk9RZktMbmBMSHk+N19KcHVs
cyQ7SzJVcDQ7UlUoYVEhTWZlQDJJYXEyV05LCnpFWVJwYmhafSZUQnJfOE9Ma2JURTFIJU1FMXFL
RihXMjF0ajBXejh4TWwtQF8kdUw/ZmpAQWdId2MlKU9JOWVOeQpoKWBwfENBQDxyKD9gMWcwbmwh
aEtyb2dUUWdRdSZYJVF+bG9DSUgrb14yWSFHCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vcXQvZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktc2FtZS1mbG93LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRl
bmN5LXNhbWUtZmxvdy1leHBlY3RlZC50eHQKaW5kZXggNzMzM2ZjNTBjMzA1M2QzMGUzMzYyMTg5
NTI1YjllNTg1NDg3ZTEyNC4uZjg3OWZkZWQzYWMwYWYxYzhmNWE0Y2JlNzgzMTcyMDM2ZTU2MTE1
ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9yZWdpb25zL2Zsb3dz
LWRlcGVuZGVuY3ktc2FtZS1mbG93LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9xdC9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZsb3ctZXhwZWN0ZWQu
dHh0CkBAIC05LDggKzksOCBAQCBsYXllciBhdCAoMCwwKSBzaXplIDgwMHgxNgogRmxvdyBUaHJl
YWRzCiAgIFRocmVhZCB3aXRoIGZsb3ctbmFtZSAnZmxvd0InCiAgIFJlZ2lvbnMgZm9yIGZsb3cg
J2Zsb3dCJwotICAgIFJlbmRlclJlZ2lvbiB7RElWfSBpbnZhbGlkCiAgICAgUmVuZGVyUmVnaW9u
IHtESVZ9CisgICAgUmVuZGVyUmVnaW9uIHtESVZ9IGludmFsaWQKICAgVGhyZWFkIHdpdGggZmxv
dy1uYW1lICdmbG93QycKICAgUmVnaW9ucyBmb3IgZmxvdyAnZmxvd0MnCiAgICAgUmVuZGVyUmVn
aW9uIHtESVZ9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167983</attachid>
            <date>2012-10-10 05:18:07 -0700</date>
            <delta_ts>2012-10-10 10:11:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-98752-20121010151705.patch</filename>
            <type>text/plain</type>
            <size>37489</size>
            <attacher name="Andrei Bucur">abucur</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwODcxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTIxNGMyMjEzZjNhMDk5
ODdhYmZjNDgzZDNjZDc0NjMzOTA2NWM2Zi4uMjU2ZTJiZWY0MTJmMTgyNTc2ZDRhNDg1NzU1MTFh
MTE2MDgwMzA3YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEyLTEwLTEwICBBbmRy
ZWkgQnVjdXIgIDxhYnVjdXJAYWRvYmUuY29tPgorCisgICAgICAgIFtDU1MgUmVnaW9uc10gQ3Jl
YXRlIGEgc2VwYXJhdGUgbGlzdCBmb3IgdGhlIGludmFsaWQgcmVnaW9ucworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg3NTIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIG1vdmVzIHRoZSBp
bnZhbGlkIHJlZ2lvbnMgaW4gYSBsb3cgdHJhZmZpYyBkYXRhIHN0cnVjdHVyZSwgb3V0c2lkZSB0
aGUgbWFpbiByZWdpb24gbGlzdC4gVGhpcyBzaG91bGQgYWRkIGEgc21hbGwgcGVyZm9ybWFuY2Ug
Ym9vc3QgKHRoZXJlJ3Mgbm8gdGVzdCBmb3IgaXQpIGFuZCBzaW1wbGlmaWVzIHRoZSBjb2RlIGlu
IHRoZSBmb2xsb3dpbmcgd2F5czoKKyAgICAgICAgLSBpdGVyYXRpb25zIHRocm91Z2ggdGhlIHJl
Z2lvbiBsaXN0IGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgaW52YWxpZCByZWdpb25zCisgICAg
ICAgIC0gYWNjZXNzaW5nIHRoZSBmaXJzdC9sYXN0IHJlZ2lvbiBpcyBzdHJhaWdodGZvcndhcmQK
KyAgICAgICAgLSBsaXN0IG1hbmlwdWxhdGlvbnMgYXJlIGVhc2llciB0byBpbXBsZW1lbnQgKGUu
Zy4gYmluYXJ5IHNlYXJjaCBmb3IgYSByZWdpb24pCisKKyAgICAgICAgVGVzdHM6IEFkYXB0ZWQg
ZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktc2FtZS1mbG93Lmh0bWwgdG8gdXNlIHRoZSBu
ZXcgZHVtcCBmb3JtYXQgZm9yIHRoZSByZWdpb24gY2hhaW4uCisKKyAgICAgICAgKiBkb20vV2Vi
S2l0TmFtZWRGbG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYktpdE5hbWVkRmxvdzo6Z2V0
UmVnaW9uc0J5Q29udGVudCk6IE5vdyByZXR1cm5zIG9ubHkgdGhlIHZhbGlkIHJlZ2lvbnMuCisg
ICAgICAgIChXZWJDb3JlOjpXZWJLaXROYW1lZEZsb3c6OmdldFJlZ2lvbnMpOiBOb3cgcmV0dXJu
cyBvbmx5IHRoZSB2YWxpZCByZWdpb25zLgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJGbG93
VGhyZWFkLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OlJlbmRlckZs
b3dUaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6bGF5b3V0KToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OnVwZGF0ZUxvZ2ljYWxXaWR0aCk6
CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpjb21wdXRlTG9naWNhbEhlaWdo
dCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFkOjpyZXBhaW50UmVjdGFuZ2xl
SW5SZWdpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dUaHJlYWQ6OnJlZ2lvbkF0
QmxvY2tPZmZzZXQpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6cmVtb3Zl
UmVuZGVyQm94UmVnaW9uSW5mbyk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJGbG93VGhyZWFk
Ojpsb2dpY2FsV2lkdGhDaGFuZ2VkSW5SZWdpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckZsb3dUaHJlYWQ6OmZpcnN0UmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckZsb3dU
aHJlYWQ6Omxhc3RSZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxvd1RocmVhZDo6
Y29tcHV0ZU92ZXJmbG93U3RhdGVGb3JSZWdpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckZsb3dUaHJlYWQ6OnJlZ2lvbkluUmFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRmxv
d1RocmVhZDo6Y2hlY2tSZWdpb25zV2l0aFN0eWxpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVu
ZGVyRmxvd1RocmVhZDo6b2JqZWN0SW5GbG93UmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlckZsb3dUaHJlYWQ6OmF1dG9Mb2dpY2FsSGVpZ2h0UmVnaW9uc0NvdW50KToKKyAgICAgICAg
KiByZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJOYW1lZEZsb3dUaHJlYWQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJD
b3JlOjphZGRSZWdpb25Ub0xpc3QpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTmFtZWRGbG93
VGhyZWFkOjphZGRSZWdpb25Ub1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1l
ZEZsb3dUaHJlYWQ6OnJlbW92ZVJlZ2lvbkZyb21UaHJlYWQpOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyTmFtZWRGbG93VGhyZWFkOjpjaGVja0ludmFsaWRSZWdpb25zKToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmg6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJOYW1lZEZsb3dUaHJlYWQ6OmludmFsaWRSZW5kZXJSZWdpb25MaXN0KToKKyAgICAgICAgKFJl
bmRlck5hbWVkRmxvd1RocmVhZCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJOYW1lZEZsb3dU
aHJlYWQ6OmNhbkJlRGVzdHJveWVkKToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyVHJlZUFz
VGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVJlbmRlclJlZ2lvbkxpc3QpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVJlbmRlck5hbWVkRmxvd1Ro
cmVhZHMpOiBUaGUgdmFsaWQgcmVnaW9ucyBhcmUgbGlzdGVkIGZpcnN0IGZvbGxvd2VkIGJ5IHRo
ZSBpbnZhbGlkIHJlZ2lvbnMuCisKIDIwMTItMTAtMTAgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3
ZWJraXQub3JnPgogCiAgICAgICAgIEVsZW1lbnRBdHRyaWJ1dGVEYXRhOiB0aWdodGVuIG1lbWJl
ciBwYWNraW5nIG9uIDY0LWJpdC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9XZWJL
aXROYW1lZEZsb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1dlYktpdE5hbWVkRmxvdy5jcHAK
aW5kZXggYmYwNWQyYzI5YzIzNmRhZDM5MzA4ZThiYTRmMmFlMzVhMTNjNzQxNS4uNTkzZTUxYTZj
MjU5ZjI5OTgwYWJjMzE4YTU0ZDA4NjFkYTlhMjc3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvZG9tL1dlYktpdE5hbWVkRmxvdy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL1dlYktp
dE5hbWVkRmxvdy5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBX
ZWJLaXROYW1lZEZsb3c6OmdldFJlZ2lvbnNCeUNvbnRlbnQoTm9kZSogY29udGVudE5vZGUpCiAg
ICAgICAgIGZvciAoUmVuZGVyUmVnaW9uTGlzdDo6Y29uc3RfaXRlcmF0b3IgaXRlciA9IHJlZ2lv
bkxpc3QuYmVnaW4oKTsgaXRlciAhPSByZWdpb25MaXN0LmVuZCgpOyArK2l0ZXIpIHsKICAgICAg
ICAgICAgIGNvbnN0IFJlbmRlclJlZ2lvbiogcmVuZGVyUmVnaW9uID0gKml0ZXI7CiAgICAgICAg
ICAgICAvLyBGSVhNRTogUHNldWRvLWVsZW1lbnRzIGFyZSBub3QgaW5jbHVkZWQgaW4gdGhlIGxp
c3QuCi0gICAgICAgICAgICBpZiAoIXJlbmRlclJlZ2lvbi0+aXNWYWxpZCgpIHx8ICFyZW5kZXJS
ZWdpb24tPm5vZGUoKSkKKyAgICAgICAgICAgIGlmICghcmVuZGVyUmVnaW9uLT5ub2RlKCkpCiAg
ICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBpZiAobV9wYXJlbnRGbG93VGhy
ZWFkLT5vYmplY3RJbkZsb3dSZWdpb24oY29udGVudE5vZGUtPnJlbmRlcmVyKCksIHJlbmRlclJl
Z2lvbikpCiAgICAgICAgICAgICAgICAgcmVnaW9uTm9kZXMuYXBwZW5kKHJlbmRlclJlZ2lvbi0+
bm9kZSgpKTsKQEAgLTE0NCw3ICsxNDQsNyBAQCBQYXNzUmVmUHRyPE5vZGVMaXN0PiBXZWJLaXRO
YW1lZEZsb3c6OmdldFJlZ2lvbnMoKQogICAgIGZvciAoUmVuZGVyUmVnaW9uTGlzdDo6Y29uc3Rf
aXRlcmF0b3IgaXRlciA9IHJlZ2lvbkxpc3QuYmVnaW4oKTsgaXRlciAhPSByZWdpb25MaXN0LmVu
ZCgpOyArK2l0ZXIpIHsKICAgICAgICAgY29uc3QgUmVuZGVyUmVnaW9uKiByZW5kZXJSZWdpb24g
PSAqaXRlcjsKICAgICAgICAgLy8gRklYTUU6IFBzZXVkby1lbGVtZW50cyBhcmUgbm90IGluY2x1
ZGVkIGluIHRoZSBsaXN0LgotICAgICAgICBpZiAoIXJlbmRlclJlZ2lvbi0+aXNWYWxpZCgpIHx8
ICFyZW5kZXJSZWdpb24tPm5vZGUoKSkKKyAgICAgICAgaWYgKCFyZW5kZXJSZWdpb24tPm5vZGUo
KSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICByZWdpb25Ob2Rlcy5hcHBlbmQocmVu
ZGVyUmVnaW9uLT5ub2RlKCkpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJGbG93VGhyZWFkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJGbG93VGhyZWFkLmNwcAppbmRleCA1MTIyOGRiY2I4ODgyOWQ0YjZhYTk2YTJjOTFiOWZi
ZDU0Mjc4ZTNiLi4zNzk0NDNiNGFiNjBlZGRhMTFhMjU1ZTgzNTQ2MWEzYzgwZDNiNWZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuY3BwCkBAIC00Nyw3
ICs0Nyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogUmVuZGVyRmxvd1RocmVhZDo6UmVuZGVy
Rmxvd1RocmVhZChOb2RlKiBub2RlKQogICAgIDogUmVuZGVyQmxvY2sobm9kZSkKLSAgICAsIG1f
aGFzVmFsaWRSZWdpb25zKGZhbHNlKQogICAgICwgbV9yZWdpb25zSW52YWxpZGF0ZWQoZmFsc2Up
CiAgICAgLCBtX3JlZ2lvbnNIYXZlVW5pZm9ybUxvZ2ljYWxXaWR0aCh0cnVlKQogICAgICwgbV9y
ZWdpb25zSGF2ZVVuaWZvcm1Mb2dpY2FsSGVpZ2h0KHRydWUpCkBAIC0xMzYsMTcgKzEzNSwxNSBA
QCB2b2lkIFJlbmRlckZsb3dUaHJlYWQ6OmxheW91dCgpCiAgICAgbV9wYWdlTG9naWNhbEhlaWdo
dENoYW5nZWQgPSBtX3JlZ2lvbnNJbnZhbGlkYXRlZCAmJiBldmVySGFkTGF5b3V0KCk7CiAgICAg
aWYgKG1fcmVnaW9uc0ludmFsaWRhdGVkKSB7CiAgICAgICAgIG1fcmVnaW9uc0ludmFsaWRhdGVk
ID0gZmFsc2U7Ci0gICAgICAgIG1faGFzVmFsaWRSZWdpb25zID0gZmFsc2U7CiAgICAgICAgIG1f
cmVnaW9uc0hhdmVVbmlmb3JtTG9naWNhbFdpZHRoID0gdHJ1ZTsKICAgICAgICAgbV9yZWdpb25z
SGF2ZVVuaWZvcm1Mb2dpY2FsSGVpZ2h0ID0gdHJ1ZTsKICAgICAgICAgbV9yZWdpb25SYW5nZU1h
cC5jbGVhcigpOwogICAgICAgICBMYXlvdXRVbml0IHByZXZpb3VzUmVnaW9uTG9naWNhbFdpZHRo
ID0gMDsKICAgICAgICAgTGF5b3V0VW5pdCBwcmV2aW91c1JlZ2lvbkxvZ2ljYWxIZWlnaHQgPSAw
OworICAgICAgICBib29sIGZpcnN0UmVnaW9uVmlzaXRlZCA9IGZhbHNlOwogICAgICAgICBpZiAo
aGFzUmVnaW9ucygpKSB7CiAgICAgICAgICAgICBmb3IgKFJlbmRlclJlZ2lvbkxpc3Q6Oml0ZXJh
dG9yIGl0ZXIgPSBtX3JlZ2lvbkxpc3QuYmVnaW4oKTsgaXRlciAhPSBtX3JlZ2lvbkxpc3QuZW5k
KCk7ICsraXRlcikgewogICAgICAgICAgICAgICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0gKml0
ZXI7Ci0gICAgICAgICAgICAgICAgaWYgKCFyZWdpb24tPmlzVmFsaWQoKSkKLSAgICAgICAgICAg
ICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICAgICAgQVNTRVJUKCFyZWdpb24tPm5lZWRz
TGF5b3V0KCkpOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIHJlZ2lvbi0+ZGVs
ZXRlQWxsUmVuZGVyQm94UmVnaW9uSW5mbygpOwpAQCAtMTU0LDggKzE1MSw4IEBAIHZvaWQgUmVu
ZGVyRmxvd1RocmVhZDo6bGF5b3V0KCkKICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IHJlZ2lv
bkxvZ2ljYWxXaWR0aCA9IHJlZ2lvbi0+cGFnZUxvZ2ljYWxXaWR0aCgpOwogICAgICAgICAgICAg
ICAgIExheW91dFVuaXQgcmVnaW9uTG9naWNhbEhlaWdodCA9IHJlZ2lvbi0+cGFnZUxvZ2ljYWxI
ZWlnaHQoKTsKIAotICAgICAgICAgICAgICAgIGlmICghbV9oYXNWYWxpZFJlZ2lvbnMpCi0gICAg
ICAgICAgICAgICAgICAgIG1faGFzVmFsaWRSZWdpb25zID0gdHJ1ZTsKKyAgICAgICAgICAgICAg
ICBpZiAoIWZpcnN0UmVnaW9uVmlzaXRlZCkKKyAgICAgICAgICAgICAgICAgICAgZmlyc3RSZWdp
b25WaXNpdGVkID0gdHJ1ZTsKICAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAg
ICAgICAgaWYgKG1fcmVnaW9uc0hhdmVVbmlmb3JtTG9naWNhbFdpZHRoICYmIHByZXZpb3VzUmVn
aW9uTG9naWNhbFdpZHRoICE9IHJlZ2lvbkxvZ2ljYWxXaWR0aCkKICAgICAgICAgICAgICAgICAg
ICAgICAgIG1fcmVnaW9uc0hhdmVVbmlmb3JtTG9naWNhbFdpZHRoID0gZmFsc2U7CkBAIC0xNzEs
OCArMTY4LDYgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpsYXlvdXQoKQogICAgICAgICAgICAg
TGF5b3V0VW5pdCBsb2dpY2FsSGVpZ2h0ID0gMDsKICAgICAgICAgICAgIGZvciAoUmVuZGVyUmVn
aW9uTGlzdDo6aXRlcmF0b3IgaXRlciA9IG1fcmVnaW9uTGlzdC5iZWdpbigpOyBpdGVyICE9IG1f
cmVnaW9uTGlzdC5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAgICAgICAgICAgUmVuZGVyUmVnaW9u
KiByZWdpb24gPSAqaXRlcjsKLSAgICAgICAgICAgICAgICBpZiAoIXJlZ2lvbi0+aXNWYWxpZCgp
KQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgCiAg
ICAgICAgICAgICAgICAgTGF5b3V0VW5pdCByZWdpb25Mb2dpY2FsV2lkdGggPSByZWdpb24tPnBh
Z2VMb2dpY2FsV2lkdGgoKTsKICAgICAgICAgICAgICAgICBMYXlvdXRVbml0IHJlZ2lvbkxvZ2lj
YWxIZWlnaHQgPSByZWdpb24tPmxvZ2ljYWxIZWlnaHRPZkFsbEZsb3dUaHJlYWRDb250ZW50KCk7
CkBAIC0yMDEsOCArMTk2LDYgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjp1cGRhdGVMb2dpY2Fs
V2lkdGgoKQogICAgIExheW91dFVuaXQgbG9naWNhbFdpZHRoID0gMDsKICAgICBmb3IgKFJlbmRl
clJlZ2lvbkxpc3Q6Oml0ZXJhdG9yIGl0ZXIgPSBtX3JlZ2lvbkxpc3QuYmVnaW4oKTsgaXRlciAh
PSBtX3JlZ2lvbkxpc3QuZW5kKCk7ICsraXRlcikgewogICAgICAgICBSZW5kZXJSZWdpb24qIHJl
Z2lvbiA9ICppdGVyOwotICAgICAgICBpZiAoIXJlZ2lvbi0+aXNWYWxpZCgpKQotICAgICAgICAg
ICAgY29udGludWU7CiAgICAgICAgIEFTU0VSVCghcmVnaW9uLT5uZWVkc0xheW91dCgpKTsKICAg
ICAgICAgbG9naWNhbFdpZHRoID0gbWF4KHJlZ2lvbi0+cGFnZUxvZ2ljYWxXaWR0aCgpLCBsb2dp
Y2FsV2lkdGgpOwogICAgIH0KQEAgLTIxMSw5ICsyMDQsNiBAQCB2b2lkIFJlbmRlckZsb3dUaHJl
YWQ6OnVwZGF0ZUxvZ2ljYWxXaWR0aCgpCiAgICAgLy8gSWYgdGhlIHJlZ2lvbnMgaGF2ZSBub24t
dW5pZm9ybSBsb2dpY2FsIHdpZHRocywgdGhlbiBpbnNlcnQgaW5zZXQgaW5mb3JtYXRpb24gZm9y
IHRoZSBSZW5kZXJGbG93VGhyZWFkLgogICAgIGZvciAoUmVuZGVyUmVnaW9uTGlzdDo6aXRlcmF0
b3IgaXRlciA9IG1fcmVnaW9uTGlzdC5iZWdpbigpOyBpdGVyICE9IG1fcmVnaW9uTGlzdC5lbmQo
KTsgKytpdGVyKSB7CiAgICAgICAgIFJlbmRlclJlZ2lvbiogcmVnaW9uID0gKml0ZXI7Ci0gICAg
ICAgIGlmICghcmVnaW9uLT5pc1ZhbGlkKCkpCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAg
ICAgCiAgICAgICAgIExheW91dFVuaXQgcmVnaW9uTG9naWNhbFdpZHRoID0gcmVnaW9uLT5wYWdl
TG9naWNhbFdpZHRoKCk7CiAgICAgICAgIGlmIChyZWdpb25Mb2dpY2FsV2lkdGggIT0gbG9naWNh
bFdpZHRoKSB7CiAgICAgICAgICAgICBMYXlvdXRVbml0IGxvZ2ljYWxMZWZ0ID0gc3R5bGUoKS0+
ZGlyZWN0aW9uKCkgPT0gTFRSID8gWkVST19MQVlPVVRfVU5JVCA6IGxvZ2ljYWxXaWR0aCAtIHJl
Z2lvbkxvZ2ljYWxXaWR0aDsKQEAgLTIyOSw4ICsyMTksNiBAQCB2b2lkIFJlbmRlckZsb3dUaHJl
YWQ6OmNvbXB1dGVMb2dpY2FsSGVpZ2h0KExheW91dFVuaXQsIExheW91dFVuaXQgbG9naWNhbFRv
cCwgTAogCiAgICAgZm9yIChSZW5kZXJSZWdpb25MaXN0Ojpjb25zdF9pdGVyYXRvciBpdGVyID0g
bV9yZWdpb25MaXN0LmJlZ2luKCk7IGl0ZXIgIT0gbV9yZWdpb25MaXN0LmVuZCgpOyArK2l0ZXIp
IHsKICAgICAgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSAqaXRlcjsKLSAgICAgICAgaWYgKCFy
ZWdpb24tPmlzVmFsaWQoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBBU1NFUlQo
IXJlZ2lvbi0+bmVlZHNMYXlvdXQoKSk7CiAgICAgICAgIGNvbXB1dGVkVmFsdWVzLm1fZXh0ZW50
ICs9IHJlZ2lvbi0+bG9naWNhbEhlaWdodE9mQWxsRmxvd1RocmVhZENvbnRlbnQoKTsKICAgICB9
CkBAIC0zMjQsOCArMzEyLDYgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpyZXBhaW50UmVjdGFu
Z2xlSW5SZWdpb25zKGNvbnN0IExheW91dFJlY3QmIHJlcGFpbnRSZWN0LAogICAgIAogICAgIGZv
ciAoUmVuZGVyUmVnaW9uTGlzdDo6aXRlcmF0b3IgaXRlciA9IG1fcmVnaW9uTGlzdC5iZWdpbigp
OyBpdGVyICE9IG1fcmVnaW9uTGlzdC5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAgIFJlbmRlclJl
Z2lvbiogcmVnaW9uID0gKml0ZXI7Ci0gICAgICAgIGlmICghcmVnaW9uLT5pc1ZhbGlkKCkpCi0g
ICAgICAgICAgICBjb250aW51ZTsKIAogICAgICAgICByZWdpb24tPnJlcGFpbnRGbG93VGhyZWFk
Q29udGVudChyZXBhaW50UmVjdCwgaW1tZWRpYXRlKTsKICAgICB9CkBAIC0zNDMsOCArMzI5LDYg
QEAgUmVuZGVyUmVnaW9uKiBSZW5kZXJGbG93VGhyZWFkOjpyZWdpb25BdEJsb2NrT2Zmc2V0KExh
eW91dFVuaXQgb2Zmc2V0LCBib29sIGV4dGUKICAgICBib29sIHVzZUhvcml6b250YWxXcml0aW5n
TW9kZSA9IGlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCk7CiAgICAgZm9yIChSZW5kZXJSZWdpb25M
aXN0Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gbV9yZWdpb25MaXN0LmJlZ2luKCk7IGl0ZXIgIT0g
bV9yZWdpb25MaXN0LmVuZCgpOyArK2l0ZXIpIHsKICAgICAgICAgUmVuZGVyUmVnaW9uKiByZWdp
b24gPSAqaXRlcjsKLSAgICAgICAgaWYgKCFyZWdpb24tPmlzVmFsaWQoKSkKLSAgICAgICAgICAg
IGNvbnRpbnVlOwogCiAgICAgICAgIGlmIChvZmZzZXQgPD0gMCkKICAgICAgICAgICAgIHJldHVy
biByZWdpb247CkBAIC00MzIsOCArNDE2LDYgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpyZW1v
dmVSZW5kZXJCb3hSZWdpb25JbmZvKFJlbmRlckJveCogYm94KQogCiAgICAgZm9yIChSZW5kZXJS
ZWdpb25MaXN0OjppdGVyYXRvciBpdGVyID0gbV9yZWdpb25MaXN0LmZpbmQoc3RhcnRSZWdpb24p
OyBpdGVyICE9IG1fcmVnaW9uTGlzdC5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAgIFJlbmRlclJl
Z2lvbiogcmVnaW9uID0gKml0ZXI7Ci0gICAgICAgIGlmICghcmVnaW9uLT5pc1ZhbGlkKCkpCi0g
ICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgcmVnaW9uLT5yZW1vdmVSZW5kZXJCb3hSZWdp
b25JbmZvKGJveCk7CiAgICAgICAgIGlmIChyZWdpb24gPT0gZW5kUmVnaW9uKQogICAgICAgICAg
ICAgYnJlYWs7CkBAIC00NDMsOCArNDI1LDYgQEAgdm9pZCBSZW5kZXJGbG93VGhyZWFkOjpyZW1v
dmVSZW5kZXJCb3hSZWdpb25JbmZvKFJlbmRlckJveCogYm94KQogICAgIC8vIFdlIGhhdmUgdG8g
bWFrZSBzdXJlIHdlIGRpZCBub3QgbGVhdmUgYW55IFJlbmRlckJveFJlZ2lvbkluZm8gYXR0YWNo
ZWQuCiAgICAgZm9yIChSZW5kZXJSZWdpb25MaXN0OjppdGVyYXRvciBpdGVyID0gbV9yZWdpb25M
aXN0LmJlZ2luKCk7IGl0ZXIgIT0gbV9yZWdpb25MaXN0LmVuZCgpOyArK2l0ZXIpIHsKICAgICAg
ICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSAqaXRlcjsKLSAgICAgICAgaWYgKCFyZWdpb24tPmlz
VmFsaWQoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICBBU1NFUlQoIXJlZ2lvbi0+
cmVuZGVyQm94UmVnaW9uSW5mbyhib3gpKTsKICAgICB9CiAjZW5kaWYKQEAgLTQ2MywxMCArNDQz
LDYgQEAgYm9vbCBSZW5kZXJGbG93VGhyZWFkOjpsb2dpY2FsV2lkdGhDaGFuZ2VkSW5SZWdpb25z
KGNvbnN0IFJlbmRlckJsb2NrKiBibG9jaywgTGEKIAogICAgIGZvciAoUmVuZGVyUmVnaW9uTGlz
dDo6aXRlcmF0b3IgaXRlciA9IG1fcmVnaW9uTGlzdC5maW5kKHN0YXJ0UmVnaW9uKTsgaXRlciAh
PSBtX3JlZ2lvbkxpc3QuZW5kKCk7ICsraXRlcikgewogICAgICAgICBSZW5kZXJSZWdpb24qIHJl
Z2lvbiA9ICppdGVyOwotICAgICAgICAKLSAgICAgICAgaWYgKCFyZWdpb24tPmlzVmFsaWQoKSkK
LSAgICAgICAgICAgIGNvbnRpbnVlOwotCiAgICAgICAgIEFTU0VSVCghcmVnaW9uLT5uZWVkc0xh
eW91dCgpKTsKIAogICAgICAgICBPd25QdHI8UmVuZGVyQm94UmVnaW9uSW5mbz4gb2xkSW5mbyA9
IHJlZ2lvbi0+dGFrZVJlbmRlckJveFJlZ2lvbkluZm8oYmxvY2spOwpAQCAtNTEzLDI4ICs0ODks
MTQgQEAgUmVuZGVyUmVnaW9uKiBSZW5kZXJGbG93VGhyZWFkOjpmaXJzdFJlZ2lvbigpIGNvbnN0
CiB7CiAgICAgaWYgKCFoYXNWYWxpZFJlZ2lvbkluZm8oKSkKICAgICAgICAgcmV0dXJuIDA7Ci0g
ICAgZm9yIChSZW5kZXJSZWdpb25MaXN0Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gbV9yZWdpb25M
aXN0LmJlZ2luKCk7IGl0ZXIgIT0gbV9yZWdpb25MaXN0LmVuZCgpOyArK2l0ZXIpIHsKLSAgICAg
ICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSAqaXRlcjsKLSAgICAgICAgaWYgKCFyZWdpb24tPmlz
VmFsaWQoKSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICByZXR1cm4gcmVnaW9uOwot
ICAgIH0KLSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4gMDsKKyAgICByZXR1
cm4gbV9yZWdpb25MaXN0LmZpcnN0KCk7CiB9CiAKIFJlbmRlclJlZ2lvbiogUmVuZGVyRmxvd1Ro
cmVhZDo6bGFzdFJlZ2lvbigpIGNvbnN0CiB7CiAgICAgaWYgKCFoYXNWYWxpZFJlZ2lvbkluZm8o
KSkKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgZm9yIChSZW5kZXJSZWdpb25MaXN0Ojpjb25zdF9y
ZXZlcnNlX2l0ZXJhdG9yIGl0ZXIgPSBtX3JlZ2lvbkxpc3QucmJlZ2luKCk7IGl0ZXIgIT0gbV9y
ZWdpb25MaXN0LnJlbmQoKTsgKytpdGVyKSB7Ci0gICAgICAgIFJlbmRlclJlZ2lvbiogcmVnaW9u
ID0gKml0ZXI7Ci0gICAgICAgIGlmICghcmVnaW9uLT5pc1ZhbGlkKCkpCi0gICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgcmV0dXJuIHJlZ2lvbjsKLSAgICB9Ci0gICAgQVNTRVJUX05PVF9S
RUFDSEVEKCk7Ci0gICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIG1fcmVnaW9uTGlzdC5sYXN0KCk7
CiB9CiAKIHZvaWQgUmVuZGVyRmxvd1RocmVhZDo6Y2xlYXJSZW5kZXJPYmplY3RDdXN0b21TdHls
ZShjb25zdCBSZW5kZXJPYmplY3QqIG9iamVjdCwKQEAgLTYzMCwxMCArNTkyLDYgQEAgdm9pZCBS
ZW5kZXJGbG93VGhyZWFkOjpjb21wdXRlT3ZlcmZsb3dTdGF0ZUZvclJlZ2lvbnMoTGF5b3V0VW5p
dCBvbGRDbGllbnRBZnRlckUKICAgICBSZW5kZXJSZWdpb24qIGxhc3RSZWcgPSBsYXN0UmVnaW9u
KCk7CiAgICAgZm9yIChSZW5kZXJSZWdpb25MaXN0OjppdGVyYXRvciBpdGVyID0gbV9yZWdpb25M
aXN0LmJlZ2luKCk7IGl0ZXIgIT0gbV9yZWdpb25MaXN0LmVuZCgpOyArK2l0ZXIpIHsKICAgICAg
ICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSAqaXRlcjsKLSAgICAgICAgaWYgKCFyZWdpb24tPmlz
VmFsaWQoKSkgewotICAgICAgICAgICAgcmVnaW9uLT5zZXRSZWdpb25TdGF0ZShSZW5kZXJSZWdp
b246OlJlZ2lvblVuZGVmaW5lZCk7Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQog
ICAgICAgICBMYXlvdXRVbml0IGZsb3dNaW4gPSBoZWlnaHQgLSAoaXNIb3Jpem9udGFsV3JpdGlu
Z01vZGUoKSA/IHJlZ2lvbi0+Zmxvd1RocmVhZFBvcnRpb25SZWN0KCkueSgpIDogcmVnaW9uLT5m
bG93VGhyZWFkUG9ydGlvblJlY3QoKS54KCkpOwogICAgICAgICBMYXlvdXRVbml0IGZsb3dNYXgg
PSBoZWlnaHQgLSAoaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKSA/IHJlZ2lvbi0+Zmxvd1RocmVh
ZFBvcnRpb25SZWN0KCkubWF4WSgpIDogcmVnaW9uLT5mbG93VGhyZWFkUG9ydGlvblJlY3QoKS5t
YXhYKCkpOwogICAgICAgICBSZW5kZXJSZWdpb246OlJlZ2lvblN0YXRlIHByZXZpb3VzU3RhdGUg
PSByZWdpb24tPnJlZ2lvblN0YXRlKCk7CkBAIC02NjMsOCArNjIxLDYgQEAgYm9vbCBSZW5kZXJG
bG93VGhyZWFkOjpyZWdpb25JblJhbmdlKGNvbnN0IFJlbmRlclJlZ2lvbiogdGFyZ2V0UmVnaW9u
LCBjb25zdCBSZW4KIAogICAgIGZvciAoUmVuZGVyUmVnaW9uTGlzdDo6Y29uc3RfaXRlcmF0b3Ig
aXQgPSBtX3JlZ2lvbkxpc3QuZmluZChjb25zdF9jYXN0PFJlbmRlclJlZ2lvbio+KHN0YXJ0UmVn
aW9uKSk7IGl0ICE9IG1fcmVnaW9uTGlzdC5lbmQoKTsgKytpdCkgewogICAgICAgICBjb25zdCBS
ZW5kZXJSZWdpb24qIGN1cnJSZWdpb24gPSAqaXQ7Ci0gICAgICAgIGlmICghY3VyclJlZ2lvbi0+
aXNWYWxpZCgpKQotICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIGlmICh0YXJnZXRSZWdp
b24gPT0gY3VyclJlZ2lvbikKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBpZiAo
Y3VyclJlZ2lvbiA9PSBlbmRSZWdpb24pCkBAIC02ODAsOCArNjM2LDYgQEAgdm9pZCBSZW5kZXJG
bG93VGhyZWFkOjpjaGVja1JlZ2lvbnNXaXRoU3R5bGluZygpCiAgICAgYm9vbCBoYXNSZWdpb25z
V2l0aFN0eWxpbmcgPSBmYWxzZTsKICAgICBmb3IgKFJlbmRlclJlZ2lvbkxpc3Q6Oml0ZXJhdG9y
IGl0ZXIgPSBtX3JlZ2lvbkxpc3QuYmVnaW4oKTsgaXRlciAhPSBtX3JlZ2lvbkxpc3QuZW5kKCk7
ICsraXRlcikgewogICAgICAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9ICppdGVyOwotICAgICAg
ICBpZiAoIXJlZ2lvbi0+aXNWYWxpZCgpKQotICAgICAgICAgICAgY29udGludWU7CiAgICAgICAg
IGlmIChyZWdpb24tPmhhc0N1c3RvbVJlZ2lvblN0eWxlKCkpIHsKICAgICAgICAgICAgIGhhc1Jl
Z2lvbnNXaXRoU3R5bGluZyA9IHRydWU7CiAgICAgICAgICAgICBicmVhazsKQEAgLTcyNSw4ICs2
NzksNiBAQCBib29sIFJlbmRlckZsb3dUaHJlYWQ6Om9iamVjdEluRmxvd1JlZ2lvbihjb25zdCBS
ZW5kZXJPYmplY3QqIG9iamVjdCwgY29uc3QgUmVuZAogICAgICAgICAvLyB0aGVuIHRoZSBvYmpl
Y3QgaXMgaW4gbGFzdCByZWdpb24uCiAgICAgICAgIGZvciAoUmVuZGVyUmVnaW9uTGlzdDo6Y29u
c3RfaXRlcmF0b3IgaXQgPSBtX3JlZ2lvbkxpc3QuZmluZChlbmNsb3NpbmdCb3hTdGFydFJlZ2lv
bik7IGl0ICE9IG1fcmVnaW9uTGlzdC5lbmQoKTsgKytpdCkgewogICAgICAgICAgICAgY29uc3Qg
UmVuZGVyUmVnaW9uKiBjdXJyUmVnaW9uID0gKml0OwotICAgICAgICAgICAgaWYgKCFyZWdpb24t
PmlzVmFsaWQoKSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIGlmIChj
dXJyUmVnaW9uID09IHJlZ2lvbikKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg
IGlmIChvYmplY3RBQkJSZWN0LmludGVyc2VjdHMoY3VyclJlZ2lvbi0+YWJzb2x1dGVCb3VuZGlu
Z0JveFJlY3QodHJ1ZSkpKQpAQCAtNzQ0LDExICs2OTYsNiBAQCB1bnNpZ25lZCBSZW5kZXJGbG93
VGhyZWFkOjphdXRvTG9naWNhbEhlaWdodFJlZ2lvbnNDb3VudCgpIGNvbnN0CiAgICAgdW5zaWdu
ZWQgYXV0b0xvZ2ljYWxIZWlnaHRSZWdpb25zID0gMDsKICAgICBmb3IgKFJlbmRlclJlZ2lvbkxp
c3Q6OmNvbnN0X2l0ZXJhdG9yIGl0ZXIgPSBtX3JlZ2lvbkxpc3QuYmVnaW4oKTsgaXRlciAhPSBt
X3JlZ2lvbkxpc3QuZW5kKCk7ICsraXRlcikgewogICAgICAgICBjb25zdCBSZW5kZXJSZWdpb24q
IHJlZ2lvbiA9ICppdGVyOwotICAgICAgICBpZiAoIXJlZ2lvbi0+aXNWYWxpZCgpKSB7Ci0gICAg
ICAgICAgICBBU1NFUlQoIXJlZ2lvbi0+aGFzQXV0b0xvZ2ljYWxIZWlnaHQoKSk7Ci0gICAgICAg
ICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCiAgICAgICAgIGlmIChyZWdpb24tPmhhc0F1dG9M
b2dpY2FsSGVpZ2h0KCkpCiAgICAgICAgICAgICBhdXRvTG9naWNhbEhlaWdodFJlZ2lvbnMrKzsK
ICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRmxvd1Ro
cmVhZC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckZsb3dUaHJlYWQuaAppbmRl
eCBiOTQyZWVlNTcyZTk1YWRhYzNjMDg5ZTEzMjUzNzY1NjZkZDE2NTIyLi45M2U5MTM3ZjA5OGQw
YTU1YjA3MWI2NjVlMDYxZDNkZmY0ZGM2ODdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRmxvd1RocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJGbG93VGhyZWFkLmgKQEAgLTgwLDEzICs4MCwxMiBAQCBwdWJsaWM6CiAgICAgYm9v
bCBoaXRUZXN0Rmxvd1RocmVhZFBvcnRpb25JblJlZ2lvbihSZW5kZXJSZWdpb24qLCBMYXlvdXRS
ZWN0IGZsb3dUaHJlYWRQb3J0aW9uUmVjdCwgTGF5b3V0UmVjdCBmbG93VGhyZWFkUG9ydGlvbk92
ZXJmbG93UmVjdCwgY29uc3QgSGl0VGVzdFJlcXVlc3QmLCBIaXRUZXN0UmVzdWx0JiwgY29uc3Qg
SGl0VGVzdExvY2F0aW9uJiBsb2NhdGlvbkluQ29udGFpbmVyLCBjb25zdCBMYXlvdXRQb2ludCYg
YWNjdW11bGF0ZWRPZmZzZXQpIGNvbnN0OwogCiAgICAgYm9vbCBoYXNSZWdpb25zKCkgY29uc3Qg
eyByZXR1cm4gbV9yZWdpb25MaXN0LnNpemUoKTsgfQotICAgIGJvb2wgaGFzVmFsaWRSZWdpb25z
KCkgY29uc3QgeyBBU1NFUlQoIW1fcmVnaW9uc0ludmFsaWRhdGVkKTsgcmV0dXJuIG1faGFzVmFs
aWRSZWdpb25zOyB9CiAgICAgLy8gQ2hlY2sgaWYgdGhlIGNvbnRlbnQgaXMgZmxvd24gaW50byBh
dCBsZWFzdCBhIHJlZ2lvbiB3aXRoIHJlZ2lvbiBzdHlsaW5nIHJ1bGVzLgogICAgIGJvb2wgaGFz
UmVnaW9uc1dpdGhTdHlsaW5nKCkgY29uc3QgeyByZXR1cm4gbV9oYXNSZWdpb25zV2l0aFN0eWxp
bmc7IH0KICAgICB2b2lkIGNoZWNrUmVnaW9uc1dpdGhTdHlsaW5nKCk7CiAKICAgICB2b2lkIGlu
dmFsaWRhdGVSZWdpb25zKCkgeyBtX3JlZ2lvbnNJbnZhbGlkYXRlZCA9IHRydWU7IHNldE5lZWRz
TGF5b3V0KHRydWUpOyB9Ci0gICAgYm9vbCBoYXNWYWxpZFJlZ2lvbkluZm8oKSBjb25zdCB7IHJl
dHVybiAhbV9yZWdpb25zSW52YWxpZGF0ZWQgJiYgaGFzVmFsaWRSZWdpb25zKCk7IH0KKyAgICBi
b29sIGhhc1ZhbGlkUmVnaW9uSW5mbygpIGNvbnN0IHsgcmV0dXJuICFtX3JlZ2lvbnNJbnZhbGlk
YXRlZCAmJiAhbV9yZWdpb25MaXN0LmlzRW1wdHkoKTsgfQogCiAgICAgc3RhdGljIFBhc3NSZWZQ
dHI8UmVuZGVyU3R5bGU+IGNyZWF0ZUZsb3dUaHJlYWRTdHlsZShSZW5kZXJTdHlsZSogcGFyZW50
U3R5bGUpOwogCkBAIC0xNzksNyArMTc4LDYgQEAgcHJvdGVjdGVkOgogICAgIHR5cGVkZWYgSGFz
aE1hcDxjb25zdCBSZW5kZXJCb3gqLCBSZW5kZXJSZWdpb25SYW5nZT4gUmVuZGVyUmVnaW9uUmFu
Z2VNYXA7CiAgICAgUmVuZGVyUmVnaW9uUmFuZ2VNYXAgbV9yZWdpb25SYW5nZU1hcDsKIAotICAg
IGJvb2wgbV9oYXNWYWxpZFJlZ2lvbnMgOiAxOwogICAgIGJvb2wgbV9yZWdpb25zSW52YWxpZGF0
ZWQgOiAxOwogICAgIGJvb2wgbV9yZWdpb25zSGF2ZVVuaWZvcm1Mb2dpY2FsV2lkdGggOiAxOwog
ICAgIGJvb2wgbV9yZWdpb25zSGF2ZVVuaWZvcm1Mb2dpY2FsSGVpZ2h0IDogMTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1lZEZsb3dUaHJlYWQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAKaW5kZXgg
ZjVlNjNmNDA2NDdhOWUxMTNkNTQ1ZjY2Yzk4NTRlYjNhZjE2NzY2Mi4uNTYyNDdjOGY4MTQxMGZl
NjNjNTVmMDFiNjc2ZDM5ZjdlMGM1YzZmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlck5hbWVkRmxvd1RocmVhZC5jcHAKQEAgLTIwMSwyNCArMjAxLDMxIEBAIHN0
YXRpYyBib29sIGNvbXBhcmVSZW5kZXJSZWdpb25zKGNvbnN0IFJlbmRlclJlZ2lvbiogZmlyc3RS
ZWdpb24sIGNvbnN0IFJlbmRlclJlCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgUmVuZGVy
TmFtZWRGbG93VGhyZWFkOjphZGRSZWdpb25Ub1RocmVhZChSZW5kZXJSZWdpb24qIHJlbmRlclJl
Z2lvbikKKy8vIFRoaXMgaGVscGVyIGZ1bmN0aW9uIGFkZHMgYSByZWdpb24gdG8gYSBsaXN0IHBy
ZXNlcnZpbmcgdGhlIG9yZGVyIHByb3BlcnR5IG9mIHRoZSBsaXN0Lgorc3RhdGljIHZvaWQgYWRk
UmVnaW9uVG9MaXN0KFJlbmRlclJlZ2lvbkxpc3QmIHJlZ2lvbkxpc3QsIFJlbmRlclJlZ2lvbiog
cmVuZGVyUmVnaW9uKQogewotICAgIEFTU0VSVChyZW5kZXJSZWdpb24pOwotICAgIGlmIChtX3Jl
Z2lvbkxpc3QuaXNFbXB0eSgpKQotICAgICAgICBtX3JlZ2lvbkxpc3QuYWRkKHJlbmRlclJlZ2lv
bik7CisgICAgaWYgKHJlZ2lvbkxpc3QuaXNFbXB0eSgpKQorICAgICAgICByZWdpb25MaXN0LmFk
ZChyZW5kZXJSZWdpb24pOwogICAgIGVsc2UgewogICAgICAgICAvLyBGaW5kIHRoZSBmaXJzdCBy
ZWdpb24gImdyZWF0ZXIiIHRoYW4gcmVuZGVyUmVnaW9uLgotICAgICAgICBSZW5kZXJSZWdpb25M
aXN0OjppdGVyYXRvciBpdCA9IG1fcmVnaW9uTGlzdC5iZWdpbigpOwotICAgICAgICB3aGlsZSAo
aXQgIT0gbV9yZWdpb25MaXN0LmVuZCgpICYmICFjb21wYXJlUmVuZGVyUmVnaW9ucyhyZW5kZXJS
ZWdpb24sICppdCkpCisgICAgICAgIFJlbmRlclJlZ2lvbkxpc3Q6Oml0ZXJhdG9yIGl0ID0gcmVn
aW9uTGlzdC5iZWdpbigpOworICAgICAgICB3aGlsZSAoaXQgIT0gcmVnaW9uTGlzdC5lbmQoKSAm
JiAhY29tcGFyZVJlbmRlclJlZ2lvbnMocmVuZGVyUmVnaW9uLCAqaXQpKQogICAgICAgICAgICAg
KytpdDsKLSAgICAgICAgbV9yZWdpb25MaXN0Lmluc2VydEJlZm9yZShpdCwgcmVuZGVyUmVnaW9u
KTsKKyAgICAgICAgcmVnaW9uTGlzdC5pbnNlcnRCZWZvcmUoaXQsIHJlbmRlclJlZ2lvbik7CiAg
ICAgfQorfQorCit2b2lkIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6YWRkUmVnaW9uVG9UaHJlYWQo
UmVuZGVyUmVnaW9uKiByZW5kZXJSZWdpb24pCit7CisgICAgQVNTRVJUKHJlbmRlclJlZ2lvbik7
CiAKICAgICByZXNldE1hcmtGb3JEZXN0cnVjdGlvbigpOwogCiAgICAgQVNTRVJUKCFyZW5kZXJS
ZWdpb24tPmlzVmFsaWQoKSk7CiAgICAgaWYgKHJlbmRlclJlZ2lvbi0+cGFyZW50TmFtZWRGbG93
VGhyZWFkKCkpIHsKICAgICAgICAgaWYgKHJlbmRlclJlZ2lvbi0+cGFyZW50TmFtZWRGbG93VGhy
ZWFkKCktPmRlcGVuZHNPbih0aGlzKSkgeworICAgICAgICAgICAgLy8gVGhlIG9yZGVyIG9mIGlu
dmFsaWQgcmVnaW9ucyBpcyBpcnJlbGV2YW50LgorICAgICAgICAgICAgbV9pbnZhbGlkUmVnaW9u
TGlzdC5hZGQocmVuZGVyUmVnaW9uKTsKICAgICAgICAgICAgIC8vIFJlZ2lzdGVyIG91cnNlbGYg
dG8gZ2V0IGEgbm90aWZpY2F0aW9uIHdoZW4gdGhlIHN0YXRlIGNoYW5nZXMuCiAgICAgICAgICAg
ICByZW5kZXJSZWdpb24tPnBhcmVudE5hbWVkRmxvd1RocmVhZCgpLT5tX29ic2VydmVyVGhyZWFk
c1NldC5hZGQodGhpcyk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yMjgsNiArMjM1LDcgQEAg
dm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OmFkZFJlZ2lvblRvVGhyZWFkKFJlbmRlclJlZ2lv
biogcmVuZGVyUmVnaW9uKQogICAgIH0KIAogICAgIHJlbmRlclJlZ2lvbi0+c2V0SXNWYWxpZCh0
cnVlKTsKKyAgICBhZGRSZWdpb25Ub0xpc3QobV9yZWdpb25MaXN0LCByZW5kZXJSZWdpb24pOwog
CiAgICAgaW52YWxpZGF0ZVJlZ2lvbnMoKTsKIH0KQEAgLTIzNiwxMCArMjQ0LDExIEBAIHZvaWQg
UmVuZGVyTmFtZWRGbG93VGhyZWFkOjpyZW1vdmVSZWdpb25Gcm9tVGhyZWFkKFJlbmRlclJlZ2lv
biogcmVuZGVyUmVnaW9uKQogewogICAgIEFTU0VSVChyZW5kZXJSZWdpb24pOwogICAgIG1fcmVn
aW9uUmFuZ2VNYXAuY2xlYXIoKTsKLSAgICBtX3JlZ2lvbkxpc3QucmVtb3ZlKHJlbmRlclJlZ2lv
bik7CiAKICAgICBpZiAocmVuZGVyUmVnaW9uLT5wYXJlbnROYW1lZEZsb3dUaHJlYWQoKSkgewog
ICAgICAgICBpZiAoIXJlbmRlclJlZ2lvbi0+aXNWYWxpZCgpKSB7CisgICAgICAgICAgICBBU1NF
UlQobV9pbnZhbGlkUmVnaW9uTGlzdC5jb250YWlucyhyZW5kZXJSZWdpb24pKTsKKyAgICAgICAg
ICAgIG1faW52YWxpZFJlZ2lvbkxpc3QucmVtb3ZlKHJlbmRlclJlZ2lvbik7CiAgICAgICAgICAg
ICByZW5kZXJSZWdpb24tPnBhcmVudE5hbWVkRmxvd1RocmVhZCgpLT5tX29ic2VydmVyVGhyZWFk
c1NldC5yZW1vdmUodGhpcyk7CiAgICAgICAgICAgICAvLyBObyBuZWVkIHRvIGludmFsaWRhdGUg
dGhlIHJlZ2lvbnMgcmVjdGFuZ2xlcy4gVGhlIHJlbW92ZWQgcmVnaW9uCiAgICAgICAgICAgICAv
LyB3YXMgbm90IHRha2VuIGludG8gYWNjb3VudC4gSnVzdCByZXR1cm4gaGVyZS4KQEAgLTI0OCw2
ICsyNTcsOSBAQCB2b2lkIFJlbmRlck5hbWVkRmxvd1RocmVhZDo6cmVtb3ZlUmVnaW9uRnJvbVRo
cmVhZChSZW5kZXJSZWdpb24qIHJlbmRlclJlZ2lvbikKICAgICAgICAgcmVtb3ZlRGVwZW5kZW5j
eU9uRmxvd1RocmVhZChyZW5kZXJSZWdpb24tPnBhcmVudE5hbWVkRmxvd1RocmVhZCgpKTsKICAg
ICB9CiAKKyAgICBBU1NFUlQobV9yZWdpb25MaXN0LmNvbnRhaW5zKHJlbmRlclJlZ2lvbikpOwor
ICAgIG1fcmVnaW9uTGlzdC5yZW1vdmUocmVuZGVyUmVnaW9uKTsKKwogICAgIGlmIChjYW5CZURl
c3Ryb3llZCgpKQogICAgICAgICBzZXRNYXJrRm9yRGVzdHJ1Y3Rpb24oKTsKIApAQCAtMjYwLDE5
ICsyNzIsMjkgQEAgdm9pZCBSZW5kZXJOYW1lZEZsb3dUaHJlYWQ6OnJlbW92ZVJlZ2lvbkZyb21U
aHJlYWQoUmVuZGVyUmVnaW9uKiByZW5kZXJSZWdpb24pCiAKIHZvaWQgUmVuZGVyTmFtZWRGbG93
VGhyZWFkOjpjaGVja0ludmFsaWRSZWdpb25zKCkKIHsKLSAgICBmb3IgKFJlbmRlclJlZ2lvbkxp
c3Q6Oml0ZXJhdG9yIGl0ZXIgPSBtX3JlZ2lvbkxpc3QuYmVnaW4oKTsgaXRlciAhPSBtX3JlZ2lv
bkxpc3QuZW5kKCk7ICsraXRlcikgeworICAgIFZlY3RvcjxSZW5kZXJSZWdpb24qPiBuZXdWYWxp
ZFJlZ2lvbnM7CisgICAgZm9yIChSZW5kZXJSZWdpb25MaXN0OjppdGVyYXRvciBpdGVyID0gbV9p
bnZhbGlkUmVnaW9uTGlzdC5iZWdpbigpOyBpdGVyICE9IG1faW52YWxpZFJlZ2lvbkxpc3QuZW5k
KCk7ICsraXRlcikgewogICAgICAgICBSZW5kZXJSZWdpb24qIHJlZ2lvbiA9ICppdGVyOwogICAg
ICAgICAvLyBUaGUgb25seSByZWFzb24gYSByZWdpb24gd291bGQgYmUgaW52YWxpZCBpcyBiZWNh
dXNlIGl0IGhhcyBhIHBhcmVudCBmbG93IHRocmVhZC4KLSAgICAgICAgQVNTRVJUKHJlZ2lvbi0+
aXNWYWxpZCgpIHx8IHJlZ2lvbi0+cGFyZW50TmFtZWRGbG93VGhyZWFkKCkpOwotICAgICAgICBp
ZiAocmVnaW9uLT5pc1ZhbGlkKCkgfHwgcmVnaW9uLT5wYXJlbnROYW1lZEZsb3dUaHJlYWQoKS0+
ZGVwZW5kc09uKHRoaXMpKQorICAgICAgICBBU1NFUlQoIXJlZ2lvbi0+aXNWYWxpZCgpICYmIHJl
Z2lvbi0+cGFyZW50TmFtZWRGbG93VGhyZWFkKCkpOworICAgICAgICBpZiAocmVnaW9uLT5wYXJl
bnROYW1lZEZsb3dUaHJlYWQoKS0+ZGVwZW5kc09uKHRoaXMpKQogICAgICAgICAgICAgY29udGlu
dWU7CiAKKyAgICAgICAgbmV3VmFsaWRSZWdpb25zLmFwcGVuZChyZWdpb24pOworICAgIH0KKwor
ICAgIGZvciAoVmVjdG9yPFJlbmRlclJlZ2lvbio+OjppdGVyYXRvciBpdGVyID0gbmV3VmFsaWRS
ZWdpb25zLmJlZ2luKCk7IGl0ZXIgIT0gbmV3VmFsaWRSZWdpb25zLmVuZCgpOyArK2l0ZXIpIHsK
KyAgICAgICAgUmVuZGVyUmVnaW9uKiByZWdpb24gPSAqaXRlcjsKKyAgICAgICAgbV9pbnZhbGlk
UmVnaW9uTGlzdC5yZW1vdmUocmVnaW9uKTsKICAgICAgICAgcmVnaW9uLT5wYXJlbnROYW1lZEZs
b3dUaHJlYWQoKS0+bV9vYnNlcnZlclRocmVhZHNTZXQucmVtb3ZlKHRoaXMpOwotICAgICAgICBh
ZGREZXBlbmRlbmN5T25GbG93VGhyZWFkKHJlZ2lvbi0+cGFyZW50TmFtZWRGbG93VGhyZWFkKCkp
OwogICAgICAgICByZWdpb24tPnNldElzVmFsaWQodHJ1ZSk7Ci0gICAgICAgIGludmFsaWRhdGVS
ZWdpb25zKCk7CisgICAgICAgIGFkZERlcGVuZGVuY3lPbkZsb3dUaHJlYWQocmVnaW9uLT5wYXJl
bnROYW1lZEZsb3dUaHJlYWQoKSk7CisgICAgICAgIGFkZFJlZ2lvblRvTGlzdChtX3JlZ2lvbkxp
c3QsIHJlZ2lvbik7CiAgICAgfQogCisgICAgaWYgKCFuZXdWYWxpZFJlZ2lvbnMuaXNFbXB0eSgp
KQorICAgICAgICBpbnZhbGlkYXRlUmVnaW9ucygpOworCiAgICAgaWYgKG1fb2JzZXJ2ZXJUaHJl
YWRzU2V0LmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyTmFtZWRGbG93VGhyZWFkLmgKaW5kZXggMzE5OTMwN2NmZmZjZGQ5
Yjg1ZDRjZGFjZWQzYzZjZjZhOTgxZWY1Zi4uYTgzMzE1MWJmOTVmNDJiOWRhYjJiYmZkMDc3ZTQ1
NDE3ZTMyNzZhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck5h
bWVkRmxvd1RocmVhZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJOYW1l
ZEZsb3dUaHJlYWQuaApAQCAtNTAsNiArNTAsOCBAQCBwdWJsaWM6CiAKICAgICBjb25zdCBBdG9t
aWNTdHJpbmcmIGZsb3dUaHJlYWROYW1lKCkgY29uc3Q7CiAKKyAgICBjb25zdCBSZW5kZXJSZWdp
b25MaXN0JiBpbnZhbGlkUmVuZGVyUmVnaW9uTGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1faW52YWxp
ZFJlZ2lvbkxpc3Q7IH0KKwogICAgIFJlbmRlck9iamVjdCogbmV4dFJlbmRlcmVyRm9yTm9kZShO
b2RlKikgY29uc3Q7CiAgICAgUmVuZGVyT2JqZWN0KiBwcmV2aW91c1JlbmRlcmVyRm9yTm9kZShO
b2RlKikgY29uc3Q7CiAKQEAgLTg2LDcgKzg4LDcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZERl
cGVuZGVuY3lPbkZsb3dUaHJlYWQoUmVuZGVyTmFtZWRGbG93VGhyZWFkKik7CiAgICAgdm9pZCBy
ZW1vdmVEZXBlbmRlbmN5T25GbG93VGhyZWFkKFJlbmRlck5hbWVkRmxvd1RocmVhZCopOwogICAg
IHZvaWQgY2hlY2tJbnZhbGlkUmVnaW9ucygpOwotICAgIGJvb2wgY2FuQmVEZXN0cm95ZWQoKSBj
b25zdCB7IHJldHVybiBtX3JlZ2lvbkxpc3QuaXNFbXB0eSgpICYmIG1fY29udGVudE5vZGVzLmlz
RW1wdHkoKTsgfQorICAgIGJvb2wgY2FuQmVEZXN0cm95ZWQoKSBjb25zdCB7IHJldHVybiBtX2lu
dmFsaWRSZWdpb25MaXN0LmlzRW1wdHkoKSAmJiBtX3JlZ2lvbkxpc3QuaXNFbXB0eSgpICYmIG1f
Y29udGVudE5vZGVzLmlzRW1wdHkoKTsgfQogICAgIHZvaWQgcmVnaW9uTGF5b3V0VXBkYXRlRXZl
bnRUaW1lckZpcmVkKFRpbWVyPFJlbmRlck5hbWVkRmxvd1RocmVhZD4qKTsKICAgICB2b2lkIGNs
ZWFyQ29udGVudE5vZGVzKCk7CiAKQEAgLTEwNyw2ICsxMDksOCBAQCBwcml2YXRlOgogCiAgICAg
TmFtZWRGbG93Q29udGVudE5vZGVzIG1fY29udGVudE5vZGVzOwogCisgICAgUmVuZGVyUmVnaW9u
TGlzdCBtX2ludmFsaWRSZWdpb25MaXN0OworCiAgICAgLy8gVGhlIERPTSBPYmplY3QgdGhhdCBy
ZXByZXNlbnRzIGEgbmFtZWQgZmxvdy4KICAgICBSZWZQdHI8V2ViS2l0TmFtZWRGbG93PiBtX25h
bWVkRmxvdzsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRy
ZWVBc1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQu
Y3BwCmluZGV4IDgxM2NmN2UwYzkyYThlM2M4ZWIzZTk2OTEwZjAzYWEzNmE1ZDE0YTQuLmFjNmJk
MzQ1MjRmY2NlMDIzNzI2MTYxYjM5ZTBlNDc3ZjE0MzZkMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAgLTY1NSw2ICs2NTUsMzEgQEAgc3Rh
dGljIHZvaWQgd3JpdGUoVGV4dFN0cmVhbSYgdHMsIFJlbmRlckxheWVyJiBsLAogICAgICAgICB3
cml0ZSh0cywgKmwucmVuZGVyZXIoKSwgaW5kZW50ICsgMSwgYmVoYXZpb3IpOwogfQogCitzdGF0
aWMgdm9pZCB3cml0ZVJlbmRlclJlZ2lvbkxpc3QoY29uc3QgUmVuZGVyUmVnaW9uTGlzdCYgZmxv
d1RocmVhZFJlZ2lvbkxpc3QsIFRleHRTdHJlYW0mIHRzLCBpbnQgaW5kZW50KQoreworICAgIGZv
ciAoUmVuZGVyUmVnaW9uTGlzdDo6Y29uc3RfaXRlcmF0b3IgaXRSUiA9IGZsb3dUaHJlYWRSZWdp
b25MaXN0LmJlZ2luKCk7IGl0UlIgIT0gZmxvd1RocmVhZFJlZ2lvbkxpc3QuZW5kKCk7ICsraXRS
UikgeworICAgICAgICBSZW5kZXJSZWdpb24qIHJlbmRlclJlZ2lvbiA9ICppdFJSOworICAgICAg
ICB3cml0ZUluZGVudCh0cywgaW5kZW50ICsgMik7CisgICAgICAgIHRzIDw8ICJSZW5kZXJSZWdp
b24iOworICAgICAgICBpZiAocmVuZGVyUmVnaW9uLT5nZW5lcmF0aW5nTm9kZSgpKSB7CisgICAg
ICAgICAgICBTdHJpbmcgdGFnTmFtZSA9IGdldFRhZ05hbWUocmVuZGVyUmVnaW9uLT5nZW5lcmF0
aW5nTm9kZSgpKTsKKyAgICAgICAgICAgIGlmICghdGFnTmFtZS5pc0VtcHR5KCkpCisgICAgICAg
ICAgICAgICAgdHMgPDwgIiB7IiA8PCB0YWdOYW1lIDw8ICJ9IjsKKyAgICAgICAgICAgIGlmIChy
ZW5kZXJSZWdpb24tPmdlbmVyYXRpbmdOb2RlKCktPmlzRWxlbWVudE5vZGUoKSAmJiByZW5kZXJS
ZWdpb24tPmdlbmVyYXRpbmdOb2RlKCktPmhhc0lEKCkpIHsKKyAgICAgICAgICAgICAgICBFbGVt
ZW50KiBlbGVtZW50ID0gc3RhdGljX2Nhc3Q8RWxlbWVudCo+KHJlbmRlclJlZ2lvbi0+Z2VuZXJh
dGluZ05vZGUoKSk7CisgICAgICAgICAgICAgICAgdHMgPDwgIiAjIiA8PCBlbGVtZW50LT5pZEZv
clN0eWxlUmVzb2x1dGlvbigpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHJlbmRl
clJlZ2lvbi0+aGFzQ3VzdG9tUmVnaW9uU3R5bGUoKSkKKyAgICAgICAgICAgICAgICB0cyA8PCAi
IHJlZ2lvbiBzdHlsZTogMSI7CisgICAgICAgICAgICBpZiAocmVuZGVyUmVnaW9uLT5oYXNBdXRv
TG9naWNhbEhlaWdodCgpKQorICAgICAgICAgICAgICAgIHRzIDw8ICIgaGFzQXV0b0xvZ2ljYWxI
ZWlnaHQiOworICAgICAgICB9CisgICAgICAgIGlmICghcmVuZGVyUmVnaW9uLT5pc1ZhbGlkKCkp
CisgICAgICAgICAgICB0cyA8PCAiIGludmFsaWQiOworICAgICAgICB0cyA8PCAiXG4iOworICAg
IH0KK30KKwogc3RhdGljIHZvaWQgd3JpdGVSZW5kZXJOYW1lZEZsb3dUaHJlYWRzKFRleHRTdHJl
YW0mIHRzLCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3LCBjb25zdCBSZW5kZXJMYXllciogcm9vdExh
eWVyLAogICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgTGF5b3V0UmVjdCYgcGFpbnRSZWN0
LCBpbnQgaW5kZW50LCBSZW5kZXJBc1RleHRCZWhhdmlvciBiZWhhdmlvcikKIHsKQEAgLTY3NSwz
MiArNzAwLDE0IEBAIHN0YXRpYyB2b2lkIHdyaXRlUmVuZGVyTmFtZWRGbG93VGhyZWFkcyhUZXh0
U3RyZWFtJiB0cywgUmVuZGVyVmlldyogcmVuZGVyVmlldywKICAgICAgICAgUmVuZGVyTGF5ZXIq
IGxheWVyID0gcmVuZGVyRmxvd1RocmVhZC0+bGF5ZXIoKTsKICAgICAgICAgd3JpdGVMYXllcnMo
dHMsIHJvb3RMYXllciwgbGF5ZXIsIHBhaW50UmVjdCwgaW5kZW50ICsgMiwgYmVoYXZpb3IpOwog
Ci0gICAgICAgIC8vIERpc3BsYXkgdGhlIHJlbmRlciByZWdpb25zIGF0dGFjaGVkIHRvIHRoaXMg
ZmxvdyB0aHJlYWQKLSAgICAgICAgY29uc3QgUmVuZGVyUmVnaW9uTGlzdCYgZmxvd1RocmVhZFJl
Z2lvbkxpc3QgPSByZW5kZXJGbG93VGhyZWFkLT5yZW5kZXJSZWdpb25MaXN0KCk7Ci0gICAgICAg
IGlmICghZmxvd1RocmVhZFJlZ2lvbkxpc3QuaXNFbXB0eSgpKSB7CisgICAgICAgIC8vIERpc3Bs
YXkgdGhlIHZhbGlkIGFuZCBpbnZhbGlkIHJlbmRlciByZWdpb25zIGF0dGFjaGVkIHRvIHRoaXMg
ZmxvdyB0aHJlYWQuCisgICAgICAgIGNvbnN0IFJlbmRlclJlZ2lvbkxpc3QmIHZhbGlkUmVnaW9u
c0xpc3QgPSByZW5kZXJGbG93VGhyZWFkLT5yZW5kZXJSZWdpb25MaXN0KCk7CisgICAgICAgIGNv
bnN0IFJlbmRlclJlZ2lvbkxpc3QmIGludmFsaWRSZWdpb25zTGlzdCA9IHJlbmRlckZsb3dUaHJl
YWQtPmludmFsaWRSZW5kZXJSZWdpb25MaXN0KCk7CisgICAgICAgIGlmICghdmFsaWRSZWdpb25z
TGlzdC5pc0VtcHR5KCkgfHwgIWludmFsaWRSZWdpb25zTGlzdC5pc0VtcHR5KCkpIHsKICAgICAg
ICAgICAgIHdyaXRlSW5kZW50KHRzLCBpbmRlbnQgKyAxKTsKICAgICAgICAgICAgIHRzIDw8ICJS
ZWdpb25zIGZvciBmbG93ICciPDwgcmVuZGVyRmxvd1RocmVhZC0+Zmxvd1RocmVhZE5hbWUoKSA8
PCAiJ1xuIjsKLSAgICAgICAgICAgIGZvciAoUmVuZGVyUmVnaW9uTGlzdDo6Y29uc3RfaXRlcmF0
b3IgaXRSUiA9IGZsb3dUaHJlYWRSZWdpb25MaXN0LmJlZ2luKCk7IGl0UlIgIT0gZmxvd1RocmVh
ZFJlZ2lvbkxpc3QuZW5kKCk7ICsraXRSUikgewotICAgICAgICAgICAgICAgIFJlbmRlclJlZ2lv
biogcmVuZGVyUmVnaW9uID0gKml0UlI7Ci0gICAgICAgICAgICAgICAgd3JpdGVJbmRlbnQodHMs
IGluZGVudCArIDIpOwotICAgICAgICAgICAgICAgIHRzIDw8ICJSZW5kZXJSZWdpb24iOwotICAg
ICAgICAgICAgICAgIGlmIChyZW5kZXJSZWdpb24tPmdlbmVyYXRpbmdOb2RlKCkpIHsKLSAgICAg
ICAgICAgICAgICAgICAgU3RyaW5nIHRhZ05hbWUgPSBnZXRUYWdOYW1lKHJlbmRlclJlZ2lvbi0+
Z2VuZXJhdGluZ05vZGUoKSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmICghdGFnTmFtZS5pc0Vt
cHR5KCkpCi0gICAgICAgICAgICAgICAgICAgICAgICB0cyA8PCAiIHsiIDw8IHRhZ05hbWUgPDwg
In0iOwotICAgICAgICAgICAgICAgICAgICBpZiAocmVuZGVyUmVnaW9uLT5nZW5lcmF0aW5nTm9k
ZSgpLT5pc0VsZW1lbnROb2RlKCkgJiYgcmVuZGVyUmVnaW9uLT5nZW5lcmF0aW5nTm9kZSgpLT5o
YXNJRCgpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBFbGVtZW50KiBlbGVtZW50ID0gc3Rh
dGljX2Nhc3Q8RWxlbWVudCo+KHJlbmRlclJlZ2lvbi0+Z2VuZXJhdGluZ05vZGUoKSk7Ci0gICAg
ICAgICAgICAgICAgICAgICAgICB0cyA8PCAiICMiIDw8IGVsZW1lbnQtPmlkRm9yU3R5bGVSZXNv
bHV0aW9uKCk7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgaWYg
KHJlbmRlclJlZ2lvbi0+aGFzQ3VzdG9tUmVnaW9uU3R5bGUoKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHRzIDw8ICIgcmVnaW9uIHN0eWxlOiAxIjsKLSAgICAgICAgICAgICAgICAgICAgaWYg
KHJlbmRlclJlZ2lvbi0+aGFzQXV0b0xvZ2ljYWxIZWlnaHQoKSkKLSAgICAgICAgICAgICAgICAg
ICAgICAgIHRzIDw8ICIgaGFzQXV0b0xvZ2ljYWxIZWlnaHQiOwotICAgICAgICAgICAgICAgIH0K
LSAgICAgICAgICAgICAgICBpZiAoIXJlbmRlclJlZ2lvbi0+aXNWYWxpZCgpKQotICAgICAgICAg
ICAgICAgICAgICB0cyA8PCAiIGludmFsaWQiOwotICAgICAgICAgICAgICAgIHRzIDw8ICJcbiI7
Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICB3cml0ZVJlbmRlclJlZ2lvbkxpc3QodmFsaWRS
ZWdpb25zTGlzdCwgdHMsIGluZGVudCk7CisgICAgICAgICAgICB3cml0ZVJlbmRlclJlZ2lvbkxp
c3QoaW52YWxpZFJlZ2lvbnNMaXN0LCB0cywgaW5kZW50KTsKICAgICAgICAgfQogICAgIH0KIH0K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxNGIyZDA5YzExOWQzMTExNTZlMTdjNzg3NTFhYjNmNjkxMmU3MTNmLi5iMWZkZmE4
OTQ3ZmEwMmMzYjI0YWY2MTlhZjlkMzc4MDk5MWZjZjljIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAK
KzIwMTItMTAtMTAgIEFuZHJlaSBCdWN1ciAgPGFidWN1ckBhZG9iZS5jb20+CisKKyAgICAgICAg
W0NTUyBSZWdpb25zXSBDcmVhdGUgYSBzZXBhcmF0ZSBsaXN0IGZvciB0aGUgaW52YWxpZCByZWdp
b25zCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05ODc1
MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBy
ZXN1bHQgZm9yIGZhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LXNhbWUtZmxvdy5odG1sIHdh
cyBhZGFwdGVkIHRvIHRoZSBuZXcgZHVtcCBmb3JtYXQuCisgICAgICAgIEFsc28sIHRoZSBwbGF0
Zm9ybSBleHBlY3RlZCByZXN1bHRzIGZpbGVzIHdlcmUgcmVtb3ZlZCBhbmQgYSBnZW5lcmljIGJh
c2VsaW5lIHdhcyBhZGRlZC4KKworICAgICAgICAqIGZhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRl
bmN5LXNhbWUtZmxvdy1leHBlY3RlZC5wbmc6IEFkZGVkLgorICAgICAgICAqIGZhc3QvcmVnaW9u
cy9mbG93cy1kZXBlbmRlbmN5LXNhbWUtZmxvdy1leHBlY3RlZC50eHQ6IFJlbmFtZWQgZnJvbSBM
YXlvdXRUZXN0cy9wbGF0Zm9ybS9xdC9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1l
LWZsb3ctZXhwZWN0ZWQudHh0LgorICAgICAgICAqIHBsYXRmb3JtL2VmbC9mYXN0L3JlZ2lvbnMv
Zmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZsb3ctZXhwZWN0ZWQucG5nOiBSZW1vdmVkLgorICAgICAg
ICAqIHBsYXRmb3JtL2VmbC9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZsb3ct
ZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL2d0ay9mYXN0L3JlZ2lv
bnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZsb3ctZXhwZWN0ZWQucG5nOiBSZW1vdmVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2d0ay9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZs
b3ctZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L3Jl
Z2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZsb3ctZXhwZWN0ZWQucG5nOiBSZW1vdmVkLgor
ICAgICAgICAqIHBsYXRmb3JtL21hYy9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1l
LWZsb3ctZXhwZWN0ZWQudHh0OiBSZW1vdmVkLgorICAgICAgICAqIHBsYXRmb3JtL3F0L2Zhc3Qv
cmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LXNhbWUtZmxvdy1leHBlY3RlZC5wbmc6IFJlbW92ZWQu
CisKIDIwMTItMTAtMDkgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAgICAg
ICAgIEFkZCBhIHRlc3QgdG8gY2hlY2sgYSBzdGVwIGF0dHJpYnV0ZSB3b3JrcyBmb3IgYSBjYWxl
bmRhciBwaWNrZXIKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG93cy1k
ZXBlbmRlbmN5LXNhbWUtZmxvdy1leHBlY3RlZC5wbmcgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lv
bnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZsb3ctZXhwZWN0ZWQucG5nCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmRl
Y2RhNzY3N2VjNzU5ZGIxZTE0OGQ0OWM4ZTZhZTkwZWY4ODQwYzUKR0lUIGJpbmFyeSBwYXRjaAps
aXRlcmFsIDk3NDIKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlVeyt2WVYyYT5pMUIlUWxZYnBS
em5rQjlnQ0NNNDckPVN1RnhlT01qCnojd249PTJCdjFfRFRZUmROdlZrak4jO3FaJCpFPiRpS1oh
TGhSRiUkfDk+K3VzNG5ueWFTVytvZTB6TihGTXxSUAp6aSgkaDV4eShyJnRMTCFCWk10LTRVaW9R
MzEmME8oTWtXPngwUjt5STBnSG9lb0Rlb2R1IWZRR2tzd0c0c14kYT4KemktJWlvMlRUSntsPF5W
IXNRaFU3akhWQjg5dmFPYnF2Z1lCYDhabFhLcjdWSWBmOz48RnhveUVaNkEpZDRAY1hGCnpxd1Bh
ckE5SipRSmxafVVaNkEtZWs0TXxiLX5xU017PXNQZlY2PVpRK0NMY1dBQl5AN00qOWIme2UjaXwo
ZGhpKgp6PT18I0Z7UE83aEkoIWtyPT15QHVeJWJNKlBlI3xASyNJZytILTZtNntXNj9tJkhMP3x6
fH4kMTQ0JHJqRjYqMlUKRm5nOVV1WH1BQ1kKCmxpdGVyYWwgMApIY21WP2QwMDAwMQoKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LXNhbWUtZmxv
dy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5j
eS1zYW1lLWZsb3ctZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY4NzlmZGVkM2FjMGFmMWM4ZjVh
NGNiZTc4MzE3MjAzNmU1NjExNWUKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZsb3ctZXhwZWN0ZWQudHh0CkBAIC0wLDAg
KzEsMjEgQEAKK2xheWVyIGF0ICgwLDApIHNpemUgODAweDYwMAorICBSZW5kZXJWaWV3IGF0ICgw
LDApIHNpemUgODAweDYwMAorbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4MTYKKyAgUmVuZGVyQmxv
Y2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDE2CisgICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQg
KDgsOCkgc2l6ZSA3ODR4MAorICAgICAgUmVuZGVyUmVnaW9uIHtESVZ9IGF0ICgwLDApIHNpemUg
MHgwCisgICAgICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsMCkgc2l6ZSAweDAKKyAgICAgIFJl
bmRlclJlZ2lvbiB7RElWfSBhdCAoMCwwKSBzaXplIDB4MAorRmxvdyBUaHJlYWRzCisgIFRocmVh
ZCB3aXRoIGZsb3ctbmFtZSAnZmxvd0InCisgIFJlZ2lvbnMgZm9yIGZsb3cgJ2Zsb3dCJworICAg
IFJlbmRlclJlZ2lvbiB7RElWfQorICAgIFJlbmRlclJlZ2lvbiB7RElWfSBpbnZhbGlkCisgIFRo
cmVhZCB3aXRoIGZsb3ctbmFtZSAnZmxvd0MnCisgIFJlZ2lvbnMgZm9yIGZsb3cgJ2Zsb3dDJwor
ICAgIFJlbmRlclJlZ2lvbiB7RElWfQorICAgIFJlbmRlclJlZ2lvbiB7RElWfQorICBUaHJlYWQg
d2l0aCBmbG93LW5hbWUgJ2Zsb3dBJworICBSZWdpb25zIGZvciBmbG93ICdmbG93QScKKyAgICBS
ZW5kZXJSZWdpb24ge0RJVn0KKyAgICBSZW5kZXJSZWdpb24ge0RJVn0KZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL2VmbC9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1l
LWZsb3ctZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZWZsL2Zhc3QvcmVnaW9u
cy9mbG93cy1kZXBlbmRlbmN5LXNhbWUtZmxvdy1leHBlY3RlZC5wbmcKZGVsZXRlZCBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IGRjMTRiNjA1N2QyNzczYTRhZTk4NzI3MDgxMGI0OGZmMTZhNDdhODYu
LjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKR0lUIGJpbmFyeSBwYXRj
aApsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmxpdGVyYWwgMjg1OAp6Y21lQVNATj8ob2xIeWB1VkJx
IWlhMHl+eVV7K3ZZVjJhPmkwKlopPWheaGxBJUBXcyRsSGBvazxtfT9vVG19bk0KejxDSWhiMTUt
MmU2aGtBIXF8YCklQj1lLXk8V3dgV01BSDtBIXtofD58RyRCbipwal42VF5SbUA7RFd1JkNvP2Ng
Cnp0QDNubjQ1XnMmX1MhKkMxX2dsdzJCclYhbz4lMitRVzVAZyk3RkBxcTJYTW1FQ2EmXz4xSXwy
MHBrYjsyRSRSdAp6WGRzTkhnd2IzdW5oUXBBIUR1Y1IlPnw+bVVeRXhkQl5QWXVXPXZzVVlqV3sm
RTNoNVE7T1hrO3ZkJEA/Mj5eel4KQnpWIWVBCgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZWZsL2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LXNhbWUtZmxvdy1leHBlY3Rl
ZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9lZmwvZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVu
ZGVuY3ktc2FtZS1mbG93LWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggNzMzM2ZjNTBjMzA1M2QzMGUzMzYyMTg5NTI1YjllNTg1NDg3ZTEyNC4uMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9l
ZmwvZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktc2FtZS1mbG93LWV4cGVjdGVkLnR4dAor
KysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLWxheWVyIGF0ICgwLDApIHNpemUgODAweDYw
MAotICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYwMAotbGF5ZXIgYXQgKDAsMCkgc2l6
ZSA4MDB4MTYKLSAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgwLDApIHNpemUgODAweDE2Ci0gICAg
UmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4MAotICAgICAgUmVuZGVyUmVnaW9u
IHtESVZ9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAs
MCkgc2l6ZSAweDAKLSAgICAgIFJlbmRlclJlZ2lvbiB7RElWfSBhdCAoMCwwKSBzaXplIDB4MAot
RmxvdyBUaHJlYWRzCi0gIFRocmVhZCB3aXRoIGZsb3ctbmFtZSAnZmxvd0InCi0gIFJlZ2lvbnMg
Zm9yIGZsb3cgJ2Zsb3dCJwotICAgIFJlbmRlclJlZ2lvbiB7RElWfSBpbnZhbGlkCi0gICAgUmVu
ZGVyUmVnaW9uIHtESVZ9Ci0gIFRocmVhZCB3aXRoIGZsb3ctbmFtZSAnZmxvd0MnCi0gIFJlZ2lv
bnMgZm9yIGZsb3cgJ2Zsb3dDJwotICAgIFJlbmRlclJlZ2lvbiB7RElWfQotICAgIFJlbmRlclJl
Z2lvbiB7RElWfQotICBUaHJlYWQgd2l0aCBmbG93LW5hbWUgJ2Zsb3dBJwotICBSZWdpb25zIGZv
ciBmbG93ICdmbG93QScKLSAgICBSZW5kZXJSZWdpb24ge0RJVn0KLSAgICBSZW5kZXJSZWdpb24g
e0RJVn0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2d0ay9mYXN0L3JlZ2lvbnMv
Zmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZsb3ctZXhwZWN0ZWQucG5nIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vZ3RrL2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRlbmN5LXNhbWUtZmxvdy1leHBlY3Rl
ZC5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjMTRiNjA1N2QyNzczYTRhZTk4
NzI3MDgxMGI0OGZmMTZhNDdhODYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDAKSGNtVj9kMDAwMDEKCmxpdGVyYWwgMjg1
OAp6Y21lQVNATj8ob2xIeWB1VkJxIWlhMHl+eVV7K3ZZVjJhPmkwKlopPWheaGxBJUBXcyRsSGBv
azxtfT9vVG19bk0KejxDSWhiMTUtMmU2aGtBIXF8YCklQj1lLXk8V3dgV01BSDtBIXtofD58RyRC
bipwal42VF5SbUA7RFd1JkNvP2NgCnp0QDNubjQ1XnMmX1MhKkMxX2dsdzJCclYhbz4lMitRVzVA
Zyk3RkBxcTJYTW1FQ2EmXz4xSXwyMHBrYjsyRSRSdAp6WGRzTkhnd2IzdW5oUXBBIUR1Y1IlPnw+
bVVeRXhkQl5QWXVXPXZzVVlqV3smRTNoNVE7T1hrO3ZkJEA/Mj5eel4KQnpWIWVBCgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vZ3RrL2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRl
bmN5LXNhbWUtZmxvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFz
dC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktc2FtZS1mbG93LWV4cGVjdGVkLnR4dApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzMzM2ZjNTBjMzA1M2QzMGUzMzYyMTg5NTI1YjllNTg1
NDg3ZTEyNC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9M
YXlvdXRUZXN0cy9wbGF0Zm9ybS9ndGsvZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktc2Ft
ZS1mbG93LWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLWxheWVy
IGF0ICgwLDApIHNpemUgODAweDYwMAotICBSZW5kZXJWaWV3IGF0ICgwLDApIHNpemUgODAweDYw
MAotbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4MTYKLSAgUmVuZGVyQmxvY2sge0hUTUx9IGF0ICgw
LDApIHNpemUgODAweDE2Ci0gICAgUmVuZGVyQm9keSB7Qk9EWX0gYXQgKDgsOCkgc2l6ZSA3ODR4
MAotICAgICAgUmVuZGVyUmVnaW9uIHtESVZ9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICBSZW5k
ZXJSZWdpb24ge0RJVn0gYXQgKDAsMCkgc2l6ZSAweDAKLSAgICAgIFJlbmRlclJlZ2lvbiB7RElW
fSBhdCAoMCwwKSBzaXplIDB4MAotRmxvdyBUaHJlYWRzCi0gIFRocmVhZCB3aXRoIGZsb3ctbmFt
ZSAnZmxvd0InCi0gIFJlZ2lvbnMgZm9yIGZsb3cgJ2Zsb3dCJwotICAgIFJlbmRlclJlZ2lvbiB7
RElWfSBpbnZhbGlkCi0gICAgUmVuZGVyUmVnaW9uIHtESVZ9Ci0gIFRocmVhZCB3aXRoIGZsb3ct
bmFtZSAnZmxvd0MnCi0gIFJlZ2lvbnMgZm9yIGZsb3cgJ2Zsb3dDJwotICAgIFJlbmRlclJlZ2lv
biB7RElWfQotICAgIFJlbmRlclJlZ2lvbiB7RElWfQotICBUaHJlYWQgd2l0aCBmbG93LW5hbWUg
J2Zsb3dBJwotICBSZWdpb25zIGZvciBmbG93ICdmbG93QScKLSAgICBSZW5kZXJSZWdpb24ge0RJ
Vn0KLSAgICBSZW5kZXJSZWdpb24ge0RJVn0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRm
b3JtL21hYy9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZsb3ctZXhwZWN0ZWQu
cG5nIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL2Zhc3QvcmVnaW9ucy9mbG93cy1kZXBlbmRl
bmN5LXNhbWUtZmxvdy1leHBlY3RlZC5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDE3MmE0MzBkODA0ZTgzMDhlMWJkOTk5OTEzOWU3MzcwMTZkMmVmMzAuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKR0lUIGJpbmFyeSBwYXRjaApsaXRlcmFsIDAKSGNt
Vj9kMDAwMDEKCmxpdGVyYWwgMTA1NjQKemNtZUFTQE4/KG9sSHlgdVZCcSFpYTB5fnlVeyt2WVYy
YT5pMUIlUWxZYnBSem5rQjlnQ0NNNDckPVN1RnhlT01qCnojd249PTJCdjFfRFRZUmROdlZrak4j
O3FaJCpFPiRpS1ohTGhSRiUkfDk9QmJrO2A7OzQpQW4jUnRQQXtQc198bgp6V25pZGFZej9gZWVL
fG5uLT51WlM4eTxGQnIzLVN9V2xZUlYyYCtKLXZuQE0oKlYoOTdYNEA0I1ctclQpblJRSSUKelpR
VGE7bzg5P1ZONlNDNSt4PXdjeCFJZ3dKJkVfMk5hQncqOVpFam1sczM8c1pRYHBRJSlJbWE/KXlM
QVMqa3lPCno2MVUpSVZibzwyZVNWUzlWRT8wc3t2M0hDYXttKSFvUSQqZnBBNnNiSFpkPFhjTClC
PG49MFJMez4mJExFVGBtTQp6e3s3WWVsQ1JGMSR8THdlTXElRisoPDRkYEJOdEBHVHF6TkxhSU4k
R1R0bX1DWE1LdHptYX1sbXIoNUpGSCRMcD8KelJpMmgrVihLdTleQVAoe0NvQXRBNGkrO3FBQUlK
JGFqc0cxaU1yYSNOcVhIanQ2aFdpcFFnQk87YCNQTHpQUn5RCnp7RHVgJVVkfj9vVCViMzFtWmFh
c255ITJEbWJDPnYmbHMqQXcyem5BPiRxY1hMND9gayNpbiZtWEkwaC1zX2xMTAp6dHxXOEQrdGdY
cEJRPUZvV21OVmdneyg4cSQkWkFtKyZTeW48K29ufkNUKkIrdmZzb3deN0dAajBhSUNDOHlAfW8K
eiZELXRFdUQjYzlQbl52RCp3aypoPUN5aTxlfHhgd0UkVnQmSXFBZGVFcG9rQXplRz42M2NHIyMk
PVBNZmhtVnY4CnorQjE3TkhUQjcpWGdyd2MjRklFSGBOKm10SzRPd2VVUH5Aem1We0pwdmJiaWdG
P3JmczhUWDJsQHE5YnQjSil5dgp6K1ZTbmQ/fEZBc3VsTVp7WjlUZXVAcn1UQFROX3tRKzlXKG55
MXExVj5FZ1ZIPH55SXhtZDsoeCVATyNvPiorPzEKenhZU2VyT0BZQC0mN01zTnA4bHRsYEBHU1Zj
ZEJKVjVqP3hyZTJEdkBtQlohVkR0PjdDe3dwV1ctQ0hZb3h9aXxWCnpadVB3MnYmWWAzVWg9djBJ
JVVXSHVDR3FWQnp7Z1hiZEgrNFBzTWptbSp1Qmgwbz58cjx4UWBqSiZNdTQmT1VHVgp6bmI/UUZj
NTx4TURebCh8Qj52VTRNKUFXdzw5JkFWK3coZ1RtKjN1WklweV9ZIT5ISDBGSGhYSFhrKm9ze0Bk
IWAKeloyTUxUT0sjZUBaKTA1O2h4VjM1JHlye1RPWip2X1JkZkJPZWBjTmhVYSpDYHJlbUZNWGFE
TT9AQ3A5ZlQ9X0czCno7LT5SPnVKXmQ5eDUydnFFJVViRVlxOEhWPEJLZ25ZWmJoZHsoSmJmb19R
IStvYUJMdiNkX2lrajd5KHpabTVhVgp6Y2BiVGQtZSV0UmhLYmc8bGhAa2pDaHFGQzN0TjQ9TEAh
IzdhWDBfIXRNa3ZWeF9iQmRsWH51byNlZGpWRHN4PnMKenZAcVU/ZmtBPTYpNVM1UWc3Tk0zamwy
dkJKUz5JQHxLfkMlYiohR2w4bkB9dm9xNlNfMXI7MGA3I052WUkwT19OCno2YSp7fHdzQXQoNVd5
Tm8jeiVyNkRYNXdnRUchO3d4ZzlWS0t2Qmo9PzQkQ2Q7V0xeKHo8RnBpZX5ndzdxdmhqaAp6e1Ej
e3tOOSlKWV9RN2NUWHRhR2UrQ0NnQEFDOSZVZnFsJTtfVkgtQGMoaT55K0NDbV9BQTwrbk0qOWIm
e2UjaXwKeiFEIzxydzB8KCNLTiMmRmpQPyZrYCR3Ym1pPSo/YXF3fnd1bz9wSz5VcnZYQ2ZwcjBC
RXg+NDdXMztVPytTVjl0CmpZbUJ4djIzdVJCa141eWgkQ35zcjZDe0FrQXtqaGd7YW5eTEJ7VHM1
LSZnJXMKCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvZmFzdC9yZWdpb25z
L2Zsb3dzLWRlcGVuZGVuY3ktc2FtZS1mbG93LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3Bs
YXRmb3JtL21hYy9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZsb3ctZXhwZWN0
ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MzMzZmM1MGMzMDUzZDMwZTMz
NjIxODk1MjViOWU1ODU0ODdlMTI0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL21hYy9mYXN0L3JlZ2lvbnMvZmxvd3Mt
ZGVwZW5kZW5jeS1zYW1lLWZsb3ctZXhwZWN0ZWQudHh0CisrKyAvZGV2L251bGwKQEAgLTEsMjEg
KzAsMCBAQAotbGF5ZXIgYXQgKDAsMCkgc2l6ZSA4MDB4NjAwCi0gIFJlbmRlclZpZXcgYXQgKDAs
MCkgc2l6ZSA4MDB4NjAwCi1sYXllciBhdCAoMCwwKSBzaXplIDgwMHgxNgotICBSZW5kZXJCbG9j
ayB7SFRNTH0gYXQgKDAsMCkgc2l6ZSA4MDB4MTYKLSAgICBSZW5kZXJCb2R5IHtCT0RZfSBhdCAo
OCw4KSBzaXplIDc4NHgwCi0gICAgICBSZW5kZXJSZWdpb24ge0RJVn0gYXQgKDAsMCkgc2l6ZSAw
eDAKLSAgICAgIFJlbmRlclJlZ2lvbiB7RElWfSBhdCAoMCwwKSBzaXplIDB4MAotICAgICAgUmVu
ZGVyUmVnaW9uIHtESVZ9IGF0ICgwLDApIHNpemUgMHgwCi1GbG93IFRocmVhZHMKLSAgVGhyZWFk
IHdpdGggZmxvdy1uYW1lICdmbG93QicKLSAgUmVnaW9ucyBmb3IgZmxvdyAnZmxvd0InCi0gICAg
UmVuZGVyUmVnaW9uIHtESVZ9IGludmFsaWQKLSAgICBSZW5kZXJSZWdpb24ge0RJVn0KLSAgVGhy
ZWFkIHdpdGggZmxvdy1uYW1lICdmbG93QycKLSAgUmVnaW9ucyBmb3IgZmxvdyAnZmxvd0MnCi0g
ICAgUmVuZGVyUmVnaW9uIHtESVZ9Ci0gICAgUmVuZGVyUmVnaW9uIHtESVZ9Ci0gIFRocmVhZCB3
aXRoIGZsb3ctbmFtZSAnZmxvd0EnCi0gIFJlZ2lvbnMgZm9yIGZsb3cgJ2Zsb3dBJwotICAgIFJl
bmRlclJlZ2lvbiB7RElWfQotICAgIFJlbmRlclJlZ2lvbiB7RElWfQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vcXQvZmFzdC9yZWdpb25zL2Zsb3dzLWRlcGVuZGVuY3ktc2FtZS1m
bG93LWV4cGVjdGVkLnBuZyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvcmVnaW9ucy9m
bG93cy1kZXBlbmRlbmN5LXNhbWUtZmxvdy1leHBlY3RlZC5wbmcKZGVsZXRlZCBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDEzNGMxYzQyOTFkNjY5MDZlYWRhZTg2NmJlYTQxYzc2ODQ2YmEwN2EuLjAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKR0lUIGJpbmFyeSBwYXRjaAps
aXRlcmFsIDAKSGNtVj9kMDAwMDEKCmxpdGVyYWwgMzMyNgp6Y21lQVNATj8ob2xIeWB1VkJxIWlh
MHl+eVV7K3ZZVjJhPmkxQiVRbFlicFJ6RVg3V3FBc2okWiE7I1ZmPFp+OHkKekw+NG5KQEVya1Ij
O013VChtK0FZNjQhezU8YyFxaD9CZGN+MWBBVztsdkQhKVEjMTF2TG5GaGEpSUBfTV5RNj98CnpS
NVA8ZygtYnFxPE9LOG96Wm4+S3ZPUWZLTG5gTEh5PjdfSnB1bHMkO0syVXA0O1JVKGFRIU1mZUAy
SWFxMldOSwp6RVlScGJoWn0mVEJyXzhPTGtiVEUxSCVNRTFxS0YoVzIxdGowV3o4eE1sLUBfJHVM
P2ZqQEFnSHdjJSlPSTllTnkKaClgcHxDQUA8cig/YDFnMG5sIWhLcm9nVFFnUXUmWCVRfmxvQ0lI
K29eMlkhRwoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvcmVnaW9u
cy9mbG93cy1kZXBlbmRlbmN5LXNhbWUtZmxvdy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9xdC9mYXN0L3JlZ2lvbnMvZmxvd3MtZGVwZW5kZW5jeS1zYW1lLWZsb3ctZXhwZWN0
ZWQudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MzMzZmM1MGMzMDUzZDMwZTMz
NjIxODk1MjViOWU1ODU0ODdlMTI0Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL3BsYXRmb3JtL3F0L2Zhc3QvcmVnaW9ucy9mbG93cy1k
ZXBlbmRlbmN5LXNhbWUtZmxvdy1leHBlY3RlZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwyMSAr
MCwwIEBACi1sYXllciBhdCAoMCwwKSBzaXplIDgwMHg2MDAKLSAgUmVuZGVyVmlldyBhdCAoMCww
KSBzaXplIDgwMHg2MDAKLWxheWVyIGF0ICgwLDApIHNpemUgODAweDE2Ci0gIFJlbmRlckJsb2Nr
IHtIVE1MfSBhdCAoMCwwKSBzaXplIDgwMHgxNgotICAgIFJlbmRlckJvZHkge0JPRFl9IGF0ICg4
LDgpIHNpemUgNzg0eDAKLSAgICAgIFJlbmRlclJlZ2lvbiB7RElWfSBhdCAoMCwwKSBzaXplIDB4
MAotICAgICAgUmVuZGVyUmVnaW9uIHtESVZ9IGF0ICgwLDApIHNpemUgMHgwCi0gICAgICBSZW5k
ZXJSZWdpb24ge0RJVn0gYXQgKDAsMCkgc2l6ZSAweDAKLUZsb3cgVGhyZWFkcwotICBUaHJlYWQg
d2l0aCBmbG93LW5hbWUgJ2Zsb3dCJwotICBSZWdpb25zIGZvciBmbG93ICdmbG93QicKLSAgICBS
ZW5kZXJSZWdpb24ge0RJVn0gaW52YWxpZAotICAgIFJlbmRlclJlZ2lvbiB7RElWfQotICBUaHJl
YWQgd2l0aCBmbG93LW5hbWUgJ2Zsb3dDJwotICBSZWdpb25zIGZvciBmbG93ICdmbG93QycKLSAg
ICBSZW5kZXJSZWdpb24ge0RJVn0KLSAgICBSZW5kZXJSZWdpb24ge0RJVn0KLSAgVGhyZWFkIHdp
dGggZmxvdy1uYW1lICdmbG93QScKLSAgUmVnaW9ucyBmb3IgZmxvdyAnZmxvd0EnCi0gICAgUmVu
ZGVyUmVnaW9uIHtESVZ9Ci0gICAgUmVuZGVyUmVnaW9uIHtESVZ9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>