<?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>51011</bug_id>
          
          <creation_ts>2010-12-13 21:33:51 -0800</creation_ts>
          <short_desc>WebKit2: Need to be able to set the application name for the user agent for a WKPage</short_desc>
          <delta_ts>2010-12-13 21:49:33 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>OS X 10.5</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>321669</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-12-13 21:33:51 -0800</bug_when>
    <thetext>We need to be able to set the application name for the user agent for a WKPage.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321672</commentid>
    <comment_count>1</comment_count>
      <attachid>76496</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-12-13 21:40:03 -0800</bug_when>
    <thetext>Created attachment 76496
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321673</commentid>
    <comment_count>2</comment_count>
      <attachid>76496</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2010-12-13 21:45:43 -0800</bug_when>
    <thetext>Comment on attachment 76496
Patch

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

Maybe we should move the user agent computation code to WebCore so that it can be shared between WebKit1 and WebKit2?

&gt; WebKit2/UIProcess/WebPageProxy.cpp:631
&gt; +        return;

Doesn&apos;t seem like this check is needed here.

&gt; WebKit2/UIProcess/WebPageProxy.h:404
&gt; +    static String standardUserAgent(const String&amp; = String());

I think leaving out the parameter name here just leads to confusion.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>321674</commentid>
    <comment_count>3</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2010-12-13 21:49:33 -0800</bug_when>
    <thetext>Landed in r74000.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>76496</attachid>
            <date>2010-12-13 21:40:03 -0800</date>
            <delta_ts>2010-12-13 21:45:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>userAgent.diff</filename>
            <type>text/plain</type>
            <size>29447</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvQ2hhbmdlTG9n
CShyZXZpc2lvbiA3Mzk5OSkKKysrIFdlYktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsNzIgQEAKKzIwMTAtMTItMTMgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZWJLaXQy
OiBOZWVkIHRvIGJlIGFibGUgdG8gc2V0IHRoZSBhcHBsaWNhdGlvbiBuYW1lIGZvciB0aGUgdXNl
ciBhZ2VudCBmb3IgYSBXS1BhZ2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTUxMDExCisKKyAgICAgICAgRml4ZXM6CisgICAgICAgICAgICBXZWJLaXQy
OiBOZWVkIHRvIGJlIGFibGUgdG8gc2V0IHRoZSBhcHBsaWNhdGlvbiBuYW1lIGZvciB0aGUgdXNl
ciBhZ2VudCBmb3IgYSBXS1BhZ2UKKyAgICAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84NTY0NTMy
PgorICAgICAgICAgICAgV2ViS2l0MjogTmVlZCB0byBiZSBhYmxlIHRvIGdldCB0aGUgY29tcHV0
ZWQgdXNlciBhZ2VudCBmb3IgYSBXS1BhZ2UKKyAgICAgICAgICAgIDxyZGFyOi8vcHJvYmxlbS84
NjM3Mjg1PgorCisgICAgICAgIE1vdmVzIHVzZXIgYWdlbnQgY29tcHV0YXRpb24gdG8gdGhlIFVJ
UHJvY2VzcyBhbmQganVzdCBwYXNzZXMgaXQgdG8gdGhlIFdlYlByb2Nlc3MKKyAgICAgICAgd2hl
biBpdCBoYXMgY2hhbmdlZC4KKworICAgICAgICAqIFNoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJh
bWV0ZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6
ZW5jb2RlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVyczo6ZGVj
b2RlKToKKyAgICAgICAgKiBTaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oOgorICAg
ICAgICBBZGQgYSB1c2VyIGFnZW50IHRvIHRoZSBjcmVhdGlvbiBwYXJhbWV0ZXJzLgorCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9DL1dLUGFnZS5jcHA6CisgICAgICAgIChXS1BhZ2VDb3B5VXNl
ckFnZW50KToKKyAgICAgICAgKFdLUGFnZUNvcHlBcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQp
OgorICAgICAgICAoV0tQYWdlU2V0QXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50KToKKyAgICAg
ICAgKFdLUGFnZVNldEN1c3RvbVVzZXJBZ2VudCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9D
L1dLUGFnZS5oOgorICAgICAgICBBZGQgbmV3IEFQSSB0byBzZXQgdGhlIGFwcGxpY2F0aW9uIG5h
bWUgYW5kIGFjY2VzcyB0aGUgY29tcHV0ZWQgdXNlciBhZ2VudC4KKworICAgICAgICAqIFVJUHJv
Y2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6Oldl
YlBhZ2VQcm94eSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2xvc2UpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFVzZXJBZ2VudCk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6c2V0QXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXRDdXN0b21Vc2VyQWdlbnQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRDcmFzaCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6Y3JlYXRpb25QYXJhbWV0ZXJzKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUGFnZVByb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6dXNlckFnZW50
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjphcHBsaWNhdGlvbk5hbWVGb3JVc2Vy
QWdlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tOiBBZGRl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2U6OldlYlBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpzZXRV
c2VyQWdlbnQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmg6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnVzZXJBZ2VudCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW46CisgICAgICAgIFBpcGUgdGhyb3VnaCB1c2VyIGFn
ZW50LgorCisgICAgICAgIChXZWJLaXQ6OmNhbGxHZXN0YWx0KToKKyAgICAgICAgKFdlYktpdDo6
bWFjT1NYVmVyc2lvblN0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OnVzZXJWaXNpYmxlV2ViS2l0
VmVyc2lvblN0cmluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c3RhbmRhcmRV
c2VyQWdlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy93aW4vV2ViUGFnZVByb3h5V2luLmNwcDog
QWRkZWQuCisgICAgICAgIChXZWJLaXQ6OndpbmRvd3NWZXJzaW9uKToKKyAgICAgICAgKFdlYktp
dDo6dXNlclZpc2libGVXZWJLaXRWZXJzaW9uU3RyaW5nKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpzdGFuZGFyZFVzZXJBZ2VudCk6CisgICAgICAgIFBvcnQgc3RhbmRhcmRVc2Vy
QWdlbnQgY29tcHV0YXRpb24gZnJvbSBXZWJLaXQxLgorCisgICAgICAgICogVUlQcm9jZXNzL3F0
L1dlYlBhZ2VQcm94eVF0LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94
eTo6c3RhbmRhcmRVc2VyQWdlbnQpOgorICAgICAgICBTdHViIG91dCB0aGUgdXNlciBhZ2VudCBz
byB0aGVyZSBpcyBubyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBXZWJLaXQyLnBy
bzoKKyAgICAgICAgKiBXZWJLaXQyLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAg
ICogd2luL1dlYktpdDIudmNwcm9qOgorICAgICAgICBBZGQgbmV3IGZpbGUuCisKIDIwMTAtMTIt
MTMgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2Vk
IGJ5IEpvbiBIb25leWN1dHQgKGFuZCBCcmlhbiBXZWluc3RlaW4gaW4gaGVhcnQpLgpJbmRleDog
V2ViS2l0Mi9XZWJLaXQyLnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1dlYktpdDIucHJvCShy
ZXZpc2lvbiA3Mzk4NikKKysrIFdlYktpdDIvV2ViS2l0Mi5wcm8JKHdvcmtpbmcgY29weSkKQEAg
LTU0NSw2ICs1NDUsNyBAQCBTT1VSQ0VTICs9IFwKICAgICBVSVByb2Nlc3MvcXQvV2ViQ29udGV4
dE1lbnVQcm94eVF0LmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1dlYkNvbnRleHRRdC5jcHAgXAog
ICAgIFVJUHJvY2Vzcy9xdC9XZWJJbnNwZWN0b3JQcm94eVF0LmNwcCBcCisgICAgVUlQcm9jZXNz
L3F0L1dlYlBhZ2VQcm94eVF0LmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1dlYlBvcHVwTWVudVBy
b3h5UXQuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQvV2ViUHJlZmVyZW5jZXNRdC5jcHAgXAogICAg
IFdlYlByb2Nlc3MvQXV0aGVudGljYXRpb24vQXV0aGVudGljYXRpb25NYW5hZ2VyLmNwcCBcCklu
ZGV4OiBXZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmNwcAkocmV2
aXNpb24gNzM5ODUpCisrKyBXZWJLaXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzcsNiArMzcsNyBAQCB2b2lkIFdlYlBhZ2VDcmVhdGlv
blBhcmFtZXRlcnM6OmVuY29kZShDCiAgICAgZW5jb2Rlci0+ZW5jb2RlKHBhZ2VHcm91cERhdGEp
OwogICAgIGVuY29kZXItPmVuY29kZShkcmF3c0JhY2tncm91bmQpOwogICAgIGVuY29kZXItPmVu
Y29kZShkcmF3c1RyYW5zcGFyZW50QmFja2dyb3VuZCk7CisgICAgZW5jb2Rlci0+ZW5jb2RlKHVz
ZXJBZ2VudCk7CiAKICNpZiBQTEFURk9STShXSU4pCiAgICAgZW5jb2Rlci0+ZW5jb2RlKHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDY0X3Q+KG5hdGl2ZVdpbmRvdykpOwpAQCAtNTcsNiArNTgsOCBAQCBi
b29sIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnM6OmRlY29kZShDCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBpZiAoIWRlY29kZXItPmRlY29kZShwYXJhbWV0ZXJzLmRyYXdzVHJhbnNwYXJl
bnRCYWNrZ3JvdW5kKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIGlmICghZGVjb2Rlci0+
ZGVjb2RlKHBhcmFtZXRlcnMudXNlckFnZW50KSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAj
aWYgUExBVEZPUk0oV0lOKQogICAgIHVpbnQ2NF90IG5hdGl2ZVdpbmRvdzsKSW5kZXg6IFdlYktp
dDIvU2hhcmVkL1dlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJL
aXQyL1NoYXJlZC9XZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJzLmgJKHJldmlzaW9uIDczOTg1KQor
KysgV2ViS2l0Mi9TaGFyZWQvV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycy5oCSh3b3JraW5nIGNv
cHkpCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiV2ViUGFnZUdyb3VwRGF0YS5oIgogI2lu
Y2x1ZGUgIldlYlByZWZlcmVuY2VzU3RvcmUuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ludFNpemUu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIENvcmVJUEMg
ewogICAgIGNsYXNzIEFyZ3VtZW50RGVjb2RlcjsKQEAgLTUwLDYgKzUxLDggQEAgc3RydWN0IFdl
YlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgewogICAgIGJvb2wgZHJhd3NCYWNrZ3JvdW5kOwogICAg
IGJvb2wgZHJhd3NUcmFuc3BhcmVudEJhY2tncm91bmQ7CiAKKyAgICBTdHJpbmcgdXNlckFnZW50
OworCiAjaWYgUExBVEZPUk0oV0lOKQogICAgIEhXTkQgbmF0aXZlV2luZG93OwogI2VuZGlmCklu
ZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDczOTg2KQorKysgV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtOTAsNiAr
OTAsNyBAQCBXZWJQYWdlUHJveHk6OldlYlBhZ2VQcm94eShXZWJDb250ZXh0KiBjCiAgICAgLCBt
X2NvbnRleHQoY29udGV4dCkKICAgICAsIG1fcGFnZUdyb3VwKHBhZ2VHcm91cCkKICAgICAsIG1f
bWFpbkZyYW1lKDApCisgICAgLCBtX3VzZXJBZ2VudChzdGFuZGFyZFVzZXJBZ2VudCgpKQogICAg
ICwgbV9lc3RpbWF0ZWRQcm9ncmVzcygwLjApCiAgICAgLCBtX2lzSW5XaW5kb3coZmFsc2UpCiAg
ICAgLCBtX2JhY2tGb3J3YXJkTGlzdChXZWJCYWNrRm9yd2FyZExpc3Q6OmNyZWF0ZSh0aGlzKSkK
QEAgLTIyMyw4ICsyMjQsNiBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xvc2UoKQogICAgIHByb2Nl
c3MoKS0+ZGlzY29ubmVjdEZyYW1lc0Zyb21QYWdlKHRoaXMpOwogICAgIG1fbWFpbkZyYW1lID0g
MDsKIAotICAgIG1fY3VzdG9tVXNlckFnZW50ID0gU3RyaW5nKCk7Ci0KICNpZiBFTkFCTEUoSU5T
UEVDVE9SKQogICAgIGlmIChtX2luc3BlY3RvcikgewogICAgICAgICBtX2luc3BlY3Rvci0+aW52
YWxpZGF0ZSgpOwpAQCAtNjAzLDE2ICs2MDIsNDUgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnJlY2Vp
dmVkUG9saWN5RGVjaXNpbwogICAgIHByb2Nlc3MoKS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6
RGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGZyYW1lLT5mcmFtZUlEKCksIGxpc3RlbmVySUQsIGFj
dGlvbiwgZG93bmxvYWRJRCksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnNl
dEN1c3RvbVVzZXJBZ2VudChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKK3ZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRVc2VyQWdlbnQoY29uc3QgU3RyaW5nJiB1c2VyQWdlbnQpCiB7CisgICAgaWYgKG1f
dXNlckFnZW50ID09IHVzZXJBZ2VudCkKKyAgICAgICAgcmV0dXJuOworICAgIG1fdXNlckFnZW50
ID0gdXNlckFnZW50OworCiAgICAgaWYgKCFpc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybjsKKyAg
ICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVzZXJBZ2VudChtX3VzZXJB
Z2VudCksIG1fcGFnZUlEKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnNldEFwcGxpY2F0aW9u
TmFtZUZvclVzZXJBZ2VudChjb25zdCBTdHJpbmcmIGFwcGxpY2F0aW9uTmFtZSkKK3sKKyAgICBp
ZiAobV9hcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPT0gYXBwbGljYXRpb25OYW1lKQorICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAobV9jdXN0b21Vc2VyQWdlbnQgPT0gdXNlckFnZW50IHx8
IChtX2N1c3RvbVVzZXJBZ2VudC5pc0VtcHR5KCkgJiYgdXNlckFnZW50LmlzRW1wdHkoKSkpCisg
ICAgbV9hcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQgPSBhcHBsaWNhdGlvbk5hbWU7CisgICAg
aWYgKCFtX2N1c3RvbVVzZXJBZ2VudC5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fY3VzdG9tVXNlckFnZW50ID0gdXNlckFnZW50OwotICAgIHByb2Nlc3MoKS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZTo6U2V0Q3VzdG9tVXNlckFnZW50KHVzZXJBZ2VudCksIG1fcGFnZUlEKTsK
KyAgICBzZXRVc2VyQWdlbnQoc3RhbmRhcmRVc2VyQWdlbnQobV9hcHBsaWNhdGlvbk5hbWVGb3JV
c2VyQWdlbnQpKTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnNldEN1c3RvbVVzZXJBZ2VudChj
b25zdCBTdHJpbmcmIGN1c3RvbVVzZXJBZ2VudCkKK3sKKyAgICBpZiAoIWlzVmFsaWQoKSkKKyAg
ICAgICAgcmV0dXJuOworCisgICAgaWYgKG1fY3VzdG9tVXNlckFnZW50ID09IGN1c3RvbVVzZXJB
Z2VudCkKKyAgICAgICAgcmV0dXJuOworCisgICAgbV9jdXN0b21Vc2VyQWdlbnQgPSBjdXN0b21V
c2VyQWdlbnQ7CisKKyAgICBpZiAobV9jdXN0b21Vc2VyQWdlbnQuaXNFbXB0eSgpKSB7CisgICAg
ICAgIHNldFVzZXJBZ2VudChzdGFuZGFyZFVzZXJBZ2VudChtX2FwcGxpY2F0aW9uTmFtZUZvclVz
ZXJBZ2VudCkpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgc2V0VXNlckFnZW50KG1f
Y3VzdG9tVXNlckFnZW50KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnRlcm1pbmF0ZVByb2Nl
c3MoKQpAQCAtMTU4Miw3ICsxNjEwLDYgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRD
cmFzaCgpCiAgICAgfQogI2VuZGlmCiAKLSAgICBtX2N1c3RvbVVzZXJBZ2VudCA9IFN0cmluZygp
OwogICAgIG1fcGFnZVRpdGxlID0gU3RyaW5nKCk7CiAgICAgbV90b29sVGlwID0gU3RyaW5nKCk7
CiAKQEAgLTE2MTUsNiArMTY0Miw3IEBAIFdlYlBhZ2VDcmVhdGlvblBhcmFtZXRlcnMgV2ViUGFn
ZVByb3h5OjoKICAgICBwYXJhbWV0ZXJzLnBhZ2VHcm91cERhdGEgPSBtX3BhZ2VHcm91cC0+ZGF0
YSgpOwogICAgIHBhcmFtZXRlcnMuZHJhd3NCYWNrZ3JvdW5kID0gbV9kcmF3c0JhY2tncm91bmQ7
CiAgICAgcGFyYW1ldGVycy5kcmF3c1RyYW5zcGFyZW50QmFja2dyb3VuZCA9IG1fZHJhd3NUcmFu
c3BhcmVudEJhY2tncm91bmQ7CisgICAgcGFyYW1ldGVycy51c2VyQWdlbnQgPSB1c2VyQWdlbnQo
KTsKIAogI2lmIFBMQVRGT1JNKFdJTikKICAgICBwYXJhbWV0ZXJzLm5hdGl2ZVdpbmRvdyA9IG1f
cGFnZUNsaWVudC0+bmF0aXZlV2luZG93KCk7CkluZGV4OiBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAkocmV2aXNpb24gNzM5ODYpCisrKyBXZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAko
d29ya2luZyBjb3B5KQpAQCAtMTk1LDEyICsxOTUsMTYgQEAgcHVibGljOgogCiAgICAgY29uc3Qg
U3RyaW5nJiBwYWdlVGl0bGUoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VUaXRsZTsgfQogICAgIGNv
bnN0IFN0cmluZyYgdG9vbFRpcCgpIGNvbnN0IHsgcmV0dXJuIG1fdG9vbFRpcDsgfQorCisgICAg
dm9pZCBzZXRVc2VyQWdlbnQoY29uc3QgU3RyaW5nJik7CisgICAgY29uc3QgU3RyaW5nJiB1c2Vy
QWdlbnQoKSBjb25zdCB7IHJldHVybiBtX3VzZXJBZ2VudDsgfQorICAgIHZvaWQgc2V0QXBwbGlj
YXRpb25OYW1lRm9yVXNlckFnZW50KGNvbnN0IFN0cmluZyYpOworICAgIGNvbnN0IFN0cmluZyYg
YXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50KCkgY29uc3QgeyByZXR1cm4gbV9hcHBsaWNhdGlv
bk5hbWVGb3JVc2VyQWdlbnQ7IH0KKyAgICB2b2lkIHNldEN1c3RvbVVzZXJBZ2VudChjb25zdCBT
dHJpbmcmKTsKICAgICBjb25zdCBTdHJpbmcmIGN1c3RvbVVzZXJBZ2VudCgpIGNvbnN0IHsgcmV0
dXJuIG1fY3VzdG9tVXNlckFnZW50OyB9CiAKICAgICBkb3VibGUgZXN0aW1hdGVkUHJvZ3Jlc3Mo
KSBjb25zdCB7IHJldHVybiBtX2VzdGltYXRlZFByb2dyZXNzOyB9CiAKLSAgICB2b2lkIHNldEN1
c3RvbVVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsKLQogICAgIHZvaWQgdGVybWluYXRlUHJvY2Vz
cygpOwogCiAgICAgdHlwZWRlZiBib29sICgqV2ViUGFnZVByb3h5U2Vzc2lvblN0YXRlRmlsdGVy
Q2FsbGJhY2spKFdLUGFnZVJlZiwgV0tTdHJpbmdSZWYgdHlwZSwgV0tUeXBlUmVmIG9iamVjdCwg
dm9pZCogY29udGV4dCk7CkBAIC0zOTcsNiArNDAxLDggQEAgcHJpdmF0ZToKICAgICB2b2lkIHNl
dENvbXBsZXhUZXh0SW5wdXRFbmFibGVkKHVpbnQ2NF90IHBsdWdpbkNvbXBsZXhUZXh0SW5wdXRJ
ZGVudGlmaWVyLCBib29sIGNvbXBsZXhUZXh0SW5wdXRFbmFibGVkKTsKICNlbmRpZgogCisgICAg
c3RhdGljIFN0cmluZyBzdGFuZGFyZFVzZXJBZ2VudChjb25zdCBTdHJpbmcmID0gU3RyaW5nKCkp
OworCiAgICAgUGFnZUNsaWVudCogbV9wYWdlQ2xpZW50OwogICAgIFdlYkxvYWRlckNsaWVudCBt
X2xvYWRlckNsaWVudDsKICAgICBXZWJQb2xpY3lDbGllbnQgbV9wb2xpY3lDbGllbnQ7CkBAIC00
MTIsNiArNDE4LDggQEAgcHJpdmF0ZToKICAgICBSZWZQdHI8V2ViRnJhbWVQcm94eT4gbV9mb2N1
c2VkRnJhbWU7CiAgICAgU3RyaW5nIG1fcGFnZVRpdGxlOwogCisgICAgU3RyaW5nIG1fdXNlckFn
ZW50OworICAgIFN0cmluZyBtX2FwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudDsKICAgICBTdHJp
bmcgbV9jdXN0b21Vc2VyQWdlbnQ7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQpJbmRleDogV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCShyZXZpc2lvbiA3Mzk4NSkKKysrIFdlYktpdDIvVUlQ
cm9jZXNzL0FQSS9DL1dLUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE2NCw2ICsxNjQsMjEg
QEAgZG91YmxlIFdLUGFnZUdldEVzdGltYXRlZFByb2dyZXNzKFdLUGFnZQogICAgIHJldHVybiB0
b0ltcGwocGFnZVJlZiktPmVzdGltYXRlZFByb2dyZXNzKCk7CiB9CiAKK1dLU3RyaW5nUmVmIFdL
UGFnZUNvcHlVc2VyQWdlbnQoV0tQYWdlUmVmIHBhZ2VSZWYpCit7CisgICAgcmV0dXJuIHRvQ29w
aWVkQVBJKHRvSW1wbChwYWdlUmVmKS0+dXNlckFnZW50KCkpOworfQorCitXS1N0cmluZ1JlZiBX
S1BhZ2VDb3B5QXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50KFdLUGFnZVJlZiBwYWdlUmVmKQor
eworICAgIHJldHVybiB0b0NvcGllZEFQSSh0b0ltcGwocGFnZVJlZiktPmFwcGxpY2F0aW9uTmFt
ZUZvclVzZXJBZ2VudCgpKTsKK30KKwordm9pZCBXS1BhZ2VTZXRBcHBsaWNhdGlvbk5hbWVGb3JV
c2VyQWdlbnQoV0tQYWdlUmVmIHBhZ2VSZWYsIFdLU3RyaW5nUmVmIGFwcGxpY2F0aW9uTmFtZSkK
K3sKKyAgICB0b0ltcGwocGFnZVJlZiktPnNldEFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCh0
b1dURlN0cmluZyhhcHBsaWNhdGlvbk5hbWUpKTsKK30KKwogV0tTdHJpbmdSZWYgV0tQYWdlQ29w
eUN1c3RvbVVzZXJBZ2VudChXS1BhZ2VSZWYgcGFnZVJlZikKIHsKICAgICByZXR1cm4gdG9Db3Bp
ZWRBUEkodG9JbXBsKHBhZ2VSZWYpLT5jdXN0b21Vc2VyQWdlbnQoKSk7CkBAIC0xNzEsNyArMTg2
LDcgQEAgV0tTdHJpbmdSZWYgV0tQYWdlQ29weUN1c3RvbVVzZXJBZ2VudChXSwogCiB2b2lkIFdL
UGFnZVNldEN1c3RvbVVzZXJBZ2VudChXS1BhZ2VSZWYgcGFnZVJlZiwgV0tTdHJpbmdSZWYgdXNl
ckFnZW50UmVmKQogewotICAgIHRvSW1wbChwYWdlUmVmKS0+c2V0Q3VzdG9tVXNlckFnZW50KHRv
SW1wbCh1c2VyQWdlbnRSZWYpLT5zdHJpbmcoKSk7CisgICAgdG9JbXBsKHBhZ2VSZWYpLT5zZXRD
dXN0b21Vc2VyQWdlbnQodG9XVEZTdHJpbmcodXNlckFnZW50UmVmKSk7CiB9CiAKIHZvaWQgV0tQ
YWdlVGVybWluYXRlKFdLUGFnZVJlZiBwYWdlUmVmKQpJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL0MvV0tQYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQ
YWdlLmgJKHJldmlzaW9uIDczOTg2KQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1MSw2ICsyNTEsMTEgQEAgV0tfRVhQT1JUIGRvdWJsZSBX
S1BhZ2VHZXRFc3RpbWF0ZWRQcm9ncgogV0tfRVhQT1JUIFdLSW5zcGVjdG9yUmVmIFdLUGFnZUdl
dEluc3BlY3RvcihXS1BhZ2VSZWYgcGFnZSk7CiAjZW5kaWYKIAorV0tfRVhQT1JUIFdLU3RyaW5n
UmVmIFdLUGFnZUNvcHlVc2VyQWdlbnQoV0tQYWdlUmVmIHBhZ2UpOworCitXS19FWFBPUlQgV0tT
dHJpbmdSZWYgV0tQYWdlQ29weUFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudChXS1BhZ2VSZWYg
cGFnZSk7CitXS19FWFBPUlQgdm9pZCBXS1BhZ2VTZXRBcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdl
bnQoV0tQYWdlUmVmIHBhZ2UsIFdLU3RyaW5nUmVmIHVzZXJBZ2VudCk7CisKIFdLX0VYUE9SVCBX
S1N0cmluZ1JlZiBXS1BhZ2VDb3B5Q3VzdG9tVXNlckFnZW50KFdLUGFnZVJlZiBwYWdlKTsKIFdL
X0VYUE9SVCB2b2lkIFdLUGFnZVNldEN1c3RvbVVzZXJBZ2VudChXS1BhZ2VSZWYgcGFnZSwgV0tT
dHJpbmdSZWYgdXNlckFnZW50KTsKIApJbmRleDogV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBh
Z2VQcm94eU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFn
ZVByb3h5TWFjLm1tCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBh
Z2VQcm94eU1hYy5tbQkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5NSBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMg
b2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
LgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24g
YW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisg
KgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09O
VFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisg
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9S
IElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklU
UzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICog
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4g
SUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisK
KyNpbmNsdWRlICJXZWJQYWdlUHJveHkuaCIKKworI2luY2x1ZGUgPFdlYkNvcmUvTGFuZ3VhZ2Uu
aD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdDb25jYXRlbmF0ZS5oPgorCit1c2luZyBuYW1l
c3BhY2UgV2ViQ29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKyNpZiBkZWZpbmVkKF9fcHBj
X18pIHx8IGRlZmluZWQoX19wcGM2NF9fKQorI2RlZmluZSBQUk9DRVNTT1IgIlBQQyIKKyNlbGlm
IGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmluZWQoX194ODZfNjRfXykKKyNkZWZpbmUgUFJPQ0VT
U09SICJJbnRlbCIKKyNlbHNlCisjZXJyb3IgVW5rbm93biBhcmNoaXRlY3R1cmUKKyNlbmRpZgor
CitzdGF0aWMgaW5saW5lIGludCBjYWxsR2VzdGFsdChPU1R5cGUgc2VsZWN0b3IpCit7CisgICAg
U0ludDMyIHZhbHVlID0gMDsKKyAgICBHZXN0YWx0KHNlbGVjdG9yLCAmdmFsdWUpOworICAgIHJl
dHVybiB2YWx1ZTsKK30KKworLy8gVXNlcyB1bmRlcnNjb3JlcyBpbnN0ZWFkIG9mIGRvdHMgYmVj
YXVzZSBpZiAiNC4iIGV2ZXIgYXBwZWFycyBpbiBhIHVzZXIgYWdlbnQgc3RyaW5nLCBvbGQgREhU
TUwgbGlicmFyaWVzIHRyZWF0IGl0IGFzIE5ldHNjYXBlIDQuCitzdGF0aWMgU3RyaW5nIG1hY09T
WFZlcnNpb25TdHJpbmcoKQoreworICAgIC8vIENhbid0IHVzZSAtW05TUHJvY2Vzc0luZm8gb3Bl
cmF0aW5nU3lzdGVtVmVyc2lvblN0cmluZ10gYmVjYXVzZSBpdCBoYXMgdG9vIG11Y2ggc3R1ZmYg
d2UgZG9uJ3Qgd2FudC4KKyAgICBpbnQgbWFqb3IgPSBjYWxsR2VzdGFsdChnZXN0YWx0U3lzdGVt
VmVyc2lvbk1ham9yKTsKKyAgICBBU1NFUlQobWFqb3IpOworCisgICAgaW50IG1pbm9yID0gY2Fs
bEdlc3RhbHQoZ2VzdGFsdFN5c3RlbVZlcnNpb25NaW5vcik7CisgICAgaW50IGJ1Z0ZpeCA9IGNh
bGxHZXN0YWx0KGdlc3RhbHRTeXN0ZW1WZXJzaW9uQnVnRml4KTsKKyAgICBpZiAoYnVnRml4KQor
ICAgICAgICByZXR1cm4gU3RyaW5nOjpmb3JtYXQoIiVkXyVkXyVkIiwgbWFqb3IsIG1pbm9yLCBi
dWdGaXgpOworICAgIGlmIChtaW5vcikKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIl
ZF8lZCIsIG1ham9yLCBtaW5vcik7CisgICAgcmV0dXJuIFN0cmluZzo6Zm9ybWF0KCIlZCIsIG1h
am9yKTsKK30KKworc3RhdGljIFN0cmluZyB1c2VyVmlzaWJsZVdlYktpdFZlcnNpb25TdHJpbmco
KQoreworICAgIC8vIElmIHRoZSB2ZXJzaW9uIGlzIDQgZGlnaXRzIGxvbmcgb3IgbG9uZ2VyLCB0
aGVuIHRoZSBmaXJzdCBkaWdpdCByZXByZXNlbnRzCisgICAgLy8gdGhlIHZlcnNpb24gb2YgdGhl
IE9TLiBPdXIgdXNlciBhZ2VudCBzdHJpbmcgc2hvdWxkIG5vdCBpbmNsdWRlIHRoaXMgZmlyc3Qg
ZGlnaXQsCisgICAgLy8gc28gc3RyaXAgaXQgb2ZmIGFuZCByZXBvcnQgdGhlIHJlc3QgYXMgdGhl
IHZlcnNpb24uIDxyZGFyOi8vcHJvYmxlbS80OTk3NTQ3PgorICAgIE5TU3RyaW5nICpmdWxsVmVy
c2lvbiA9IFtbTlNCdW5kbGUgYnVuZGxlRm9yQ2xhc3M6TlNDbGFzc0Zyb21TdHJpbmcoQCJXS1Zp
ZXciKV0gb2JqZWN0Rm9ySW5mb0RpY3Rpb25hcnlLZXk6KE5TU3RyaW5nICopa0NGQnVuZGxlVmVy
c2lvbktleV07CisgICAgTlNSYW5nZSBub25EaWdpdFJhbmdlID0gW2Z1bGxWZXJzaW9uIHJhbmdl
T2ZDaGFyYWN0ZXJGcm9tU2V0OltbTlNDaGFyYWN0ZXJTZXQgZGVjaW1hbERpZ2l0Q2hhcmFjdGVy
U2V0XSBpbnZlcnRlZFNldF1dOworICAgIGlmIChub25EaWdpdFJhbmdlLmxvY2F0aW9uID09IE5T
Tm90Rm91bmQgJiYgW2Z1bGxWZXJzaW9uIGxlbmd0aF0gPj0gNCkKKyAgICAgICAgcmV0dXJuIFtm
dWxsVmVyc2lvbiBzdWJzdHJpbmdGcm9tSW5kZXg6MV07CisgICAgaWYgKG5vbkRpZ2l0UmFuZ2Uu
bG9jYXRpb24gIT0gTlNOb3RGb3VuZCAmJiBub25EaWdpdFJhbmdlLmxvY2F0aW9uID49IDQpCisg
ICAgICAgIHJldHVybiBbZnVsbFZlcnNpb24gc3Vic3RyaW5nRnJvbUluZGV4OjFdOworICAgIHJl
dHVybiBmdWxsVmVyc2lvbjsKK30KKworU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RhbmRhcmRVc2Vy
QWdlbnQoY29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQpCit7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIG9zVmVyc2lvbiwgKG1hY09TWFZlcnNpb25TdHJp
bmcoKSkpOworICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCB3ZWJLaXRWZXJzaW9uLCAo
dXNlclZpc2libGVXZWJLaXRWZXJzaW9uU3RyaW5nKCkpKTsKKworICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgdXBhdGUgdGhlIHVzZXIgYWdlbnQgaWYgdGhlIGRlZmF1bHQgbGFuZ3VhZ2UgY2hhbmdl
cy4KKyAgICBTdHJpbmcgbGFuZ3VhZ2UgPSBkZWZhdWx0TGFuZ3VhZ2UoKTsKKworICAgIFdURl9B
UlJBWV9MRU5HVEgKKworICAgIGlmIChhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQuaXNFbXB0
eSgpKQorICAgICAgICByZXR1cm4gbWFrZVN0cmluZygiTW96aWxsYS81LjAgKE1hY2ludG9zaDsg
VTsgIiBQUk9DRVNTT1IgIiBNYWMgT1MgWCAiLCBvc1ZlcnNpb24sICI7ICIsIGxhbmd1YWdlLCAi
KSBBcHBsZVdlYktpdC8iLCB3ZWJLaXRWZXJzaW9uLCAiIChLSFRNTCwgbGlrZSBHZWNrbykiKTsK
KyAgICByZXR1cm4gbWFrZVN0cmluZygiTW96aWxsYS81LjAgKE1hY2ludG9zaDsgVTsgIiBQUk9D
RVNTT1IgIiBNYWMgT1MgWCAiLCBvc1ZlcnNpb24sICI7ICIsIGxhbmd1YWdlLCAiKSBBcHBsZVdl
YktpdC8iLCB3ZWJLaXRWZXJzaW9uLCAiIChLSFRNTCwgbGlrZSBHZWNrbykgIiwgYXBwbGljYXRp
b25OYW1lRm9yVXNlckFnZW50KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBX
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQYWdlUHJveHlRdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvV2ViUGFnZVByb3h5UXQuY3BwCShyZXZpc2lvbiAwKQorKysgV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvV2ViUGFnZVByb3h5UXQuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCww
ICsxLDM2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgorCituYW1l
c3BhY2UgV2ViS2l0IHsKKworU3RyaW5nIFdlYlBhZ2VQcm94eTo6c3RhbmRhcmRVc2VyQWdlbnQo
Y29uc3QgU3RyaW5nJiBhcHBsaWNhdGlvbk5hbWVGb3JVc2VyQWdlbnQpCit7CisgICAgLy8gRklY
TUU6IFRoaXMgc2hvdWxkIG5vdCBiZSBoYXJkIGNvZGVkLgorICAgIHJldHVybiAiTW96aWxsYS81
LjAgKE1hY2ludG9zaDsgVTsgSW50ZWwgTWFjIE9TIFggMTBfNjsgZW4tdXMpIEFwcGxlV2ViS2l0
LzUzMS40IChLSFRNTCwgbGlrZSBHZWNrbykgVmVyc2lvbi80LjAuMyBTYWZhcmkvNTMxLjQiOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFdlYktpdDIvVUlQcm9jZXNzL3dpbi9X
ZWJQYWdlUHJveHlXaW4uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvVUlQcm9jZXNzL3dpbi9X
ZWJQYWdlUHJveHlXaW4uY3BwCShyZXZpc2lvbiAwKQorKysgV2ViS2l0Mi9VSVByb2Nlc3Mvd2lu
L1dlYlBhZ2VQcm94eVdpbi5jcHAJKHJldmlzaW9uIDApCkBAIC0wLDAgKzEsMTEzIEBACisvKgor
KiBDb3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKgor
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisqIGFyZSBtZXQ6CisqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorKgor
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorKiBUSEUgSU1QTElFRCBXQVJSQU5USUVT
IE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisqIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUworKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTgorKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorKiBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
CisqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyovCisKKyNpbmNsdWRlICJXZWJQ
YWdlUHJveHkuaCIKKworI2luY2x1ZGUgPHRjaGFyLmg+CisjaW5jbHVkZSA8V2ViQ29yZS9MYW5n
dWFnZS5oPgorI2luY2x1ZGUgPFdlYkNvcmUvV2ViQ29yZUluc3RhbmNlSGFuZGxlLmg+CisjaW5j
bHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0NvbmNh
dGVuYXRlLmg+CisKK3VzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOworCituYW1lc3BhY2UgV2ViS2l0
IHsKKworc3RhdGljIFN0cmluZyB3aW5kb3dzVmVyc2lvbigpCit7CisgICBTdHJpbmcgb3NWZXJz
aW9uOworICAgT1NWRVJTSU9OSU5GTyB2ZXJzaW9uSW5mbyA9IHsgMCB9OworICAgdmVyc2lvbklu
Zm8uZHdPU1ZlcnNpb25JbmZvU2l6ZSA9IHNpemVvZih2ZXJzaW9uSW5mbyk7CisgICA6OkdldFZl
cnNpb25FeCgmdmVyc2lvbkluZm8pOworCisgICBpZiAodmVyc2lvbkluZm8uZHdQbGF0Zm9ybUlk
ID09IFZFUl9QTEFURk9STV9XSU4zMl9XSU5ET1dTKSB7CisgICAgICAgaWYgKHZlcnNpb25JbmZv
LmR3TWFqb3JWZXJzaW9uID09IDQpIHsKKyAgICAgICAgICAgaWYgKHZlcnNpb25JbmZvLmR3TWlu
b3JWZXJzaW9uID09IDApCisgICAgICAgICAgICAgICBvc1ZlcnNpb24gPSAiV2luZG93cyA5NSI7
CisgICAgICAgICAgIGVsc2UgaWYgKHZlcnNpb25JbmZvLmR3TWlub3JWZXJzaW9uID09IDEwKQor
ICAgICAgICAgICAgICAgb3NWZXJzaW9uID0gIldpbmRvd3MgOTgiOworICAgICAgICAgICBlbHNl
IGlmICh2ZXJzaW9uSW5mby5kd01pbm9yVmVyc2lvbiA9PSA5MCkKKyAgICAgICAgICAgICAgIG9z
VmVyc2lvbiA9ICJXaW5kb3dzIDk4OyBXaW4gOXggNC45MCI7CisgICAgICAgfQorICAgfSBlbHNl
IGlmICh2ZXJzaW9uSW5mby5kd1BsYXRmb3JtSWQgPT0gVkVSX1BMQVRGT1JNX1dJTjMyX05UKQor
ICAgICAgIG9zVmVyc2lvbiA9IG1ha2VTdHJpbmcoIldpbmRvd3MgTlQgIiwgU3RyaW5nOjpudW1i
ZXIodmVyc2lvbkluZm8uZHdNYWpvclZlcnNpb24pLCAnLicsIFN0cmluZzo6bnVtYmVyKHZlcnNp
b25JbmZvLmR3TWlub3JWZXJzaW9uKSk7CisKKyAgIGlmICghb3NWZXJzaW9uLmxlbmd0aCgpKQor
ICAgICAgIG9zVmVyc2lvbiA9IG1ha2VTdHJpbmcoIldpbmRvd3MgIiwgU3RyaW5nOjpudW1iZXIo
dmVyc2lvbkluZm8uZHdNYWpvclZlcnNpb24pLCAnLicsIFN0cmluZzo6bnVtYmVyKHZlcnNpb25J
bmZvLmR3TWlub3JWZXJzaW9uKSk7CisgICByZXR1cm4gb3NWZXJzaW9uOworfQorCitzdGF0aWMg
U3RyaW5nIHVzZXJWaXNpYmxlV2ViS2l0VmVyc2lvblN0cmluZygpCit7CisgICBTdHJpbmcgdmVy
c2lvblN0ciA9ICI0MjArIjsKKyAgIHZvaWQqIGRhdGEgPSAwOworCisgICBzdHJ1Y3QgTEFOR0FO
RENPREVQQUdFIHsKKyAgICAgICBXT1JEIHdMYW5ndWFnZTsKKyAgICAgICBXT1JEIHdDb2RlUGFn
ZTsKKyAgIH0gKmxwVHJhbnNsYXRlOworCisgICBUQ0hBUiBwYXRoW01BWF9QQVRIXTsKKyAgIDo6
R2V0TW9kdWxlRmlsZU5hbWUoaW5zdGFuY2VIYW5kbGUoKSwgcGF0aCwgV1RGX0FSUkFZX0xFTkdU
SChwYXRoKSk7CisgICBEV09SRCBoYW5kbGU7CisgICBEV09SRCB2ZXJzaW9uU2l6ZSA9IDo6R2V0
RmlsZVZlcnNpb25JbmZvU2l6ZShwYXRoLCAmaGFuZGxlKTsKKyAgIGlmICghdmVyc2lvblNpemUp
CisgICAgICAgZ290byBleGl0OworICAgZGF0YSA9IGZhc3RNYWxsb2ModmVyc2lvblNpemUpOwor
ICAgaWYgKCFkYXRhKQorICAgICAgIGdvdG8gZXhpdDsKKyAgIGlmICghOjpHZXRGaWxlVmVyc2lv
bkluZm8ocGF0aCwgMCwgdmVyc2lvblNpemUsIGRhdGEpKQorICAgICAgIGdvdG8gZXhpdDsKKyAg
IFVJTlQgY2JUcmFuc2xhdGU7CisgICBpZiAoITo6VmVyUXVlcnlWYWx1ZShkYXRhLCBURVhUKCJc
XFZhckZpbGVJbmZvXFxUcmFuc2xhdGlvbiIpLCAoTFBWT0lEKikmbHBUcmFuc2xhdGUsICZjYlRy
YW5zbGF0ZSkpCisgICAgICAgZ290byBleGl0OworICAgVENIQVIga2V5WzI1Nl07CisgICBfc3Rw
cmludGZfcyhrZXksIFdURl9BUlJBWV9MRU5HVEgoa2V5KSwgVEVYVCgiXFxTdHJpbmdGaWxlSW5m
b1xcJTA0eCUwNHhcXFByb2R1Y3RWZXJzaW9uIiksIGxwVHJhbnNsYXRlWzBdLndMYW5ndWFnZSwg
bHBUcmFuc2xhdGVbMF0ud0NvZGVQYWdlKTsKKyAgIExQQ1RTVFIgcHJvZHVjdFZlcnNpb247Cisg
ICBVSU5UIHByb2R1Y3RWZXJzaW9uTGVuZ3RoOworICAgaWYgKCE6OlZlclF1ZXJ5VmFsdWUoZGF0
YSwgKExQVFNUUikoTFBDVFNUUilrZXksICh2b2lkKiopJnByb2R1Y3RWZXJzaW9uLCAmcHJvZHVj
dFZlcnNpb25MZW5ndGgpKQorICAgICAgIGdvdG8gZXhpdDsKKyAgIHZlcnNpb25TdHIgPSBTdHJp
bmcocHJvZHVjdFZlcnNpb24sIHByb2R1Y3RWZXJzaW9uTGVuZ3RoIC0gMSk7CisKK2V4aXQ6Cisg
ICBpZiAoZGF0YSkKKyAgICAgICBmYXN0RnJlZShkYXRhKTsKKyAgIHJldHVybiB2ZXJzaW9uU3Ry
OworfQorCitTdHJpbmcgV2ViUGFnZVByb3h5OjpzdGFuZGFyZFVzZXJBZ2VudChjb25zdCBTdHJp
bmcmIGFwcGxpY2F0aW9uTmFtZUZvclVzZXJBZ2VudCkKK3sKKyAgIERFRklORV9TVEFUSUNfTE9D
QUwoU3RyaW5nLCBvc1ZlcnNpb24sICh3aW5kb3dzVmVyc2lvbigpKSk7CisgICBERUZJTkVfU1RB
VElDX0xPQ0FMKFN0cmluZywgd2ViS2l0VmVyc2lvbiwgKHVzZXJWaXNpYmxlV2ViS2l0VmVyc2lv
blN0cmluZygpKSk7CisKKyAgIC8vIEZJWE1FOiBXZSBzaG91bGQgdXBhdGUgdGhlIHVzZXIgYWdl
bnQgaWYgdGhlIGRlZmF1bHQgbGFuZ3VhZ2UgY2hhbmdlcy4KKyAgIFN0cmluZyBsYW5ndWFnZSA9
IGRlZmF1bHRMYW5ndWFnZSgpOworCisgICBpZiAoYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50
LmlzRW1wdHkoKSkKKyAgICAgICByZXR1cm4gbWFrZVN0cmluZygiTW96aWxsYS81LjAgKFdpbmRv
d3M7IFU7ICIsIG9zVmVyc2lvbiwgIjsgIiwgbGFuZ3VhZ2UsICIpIEFwcGxlV2ViS2l0LyIsIHdl
YktpdFZlcnNpb24sICIgKEtIVE1MLCBsaWtlIEdlY2tvKSIpOworICAgcmV0dXJuIG1ha2VTdHJp
bmcoIk1vemlsbGEvNS4wIChXaW5kb3dzOyBVOyAiLCBvc1ZlcnNpb24sICI7ICIsIGxhbmd1YWdl
LCAiKSBBcHBsZVdlYktpdC8iLCB3ZWJLaXRWZXJzaW9uLCAiIChLSFRNTCwgbGlrZSBHZWNrbykg
IiwgYXBwbGljYXRpb25OYW1lRm9yVXNlckFnZW50KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CkluZGV4OiBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2
aXNpb24gNzM5ODYpCisrKyBXZWJLaXQyL1dlYktpdDIueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agkod29ya2luZyBjb3B5KQpAQCAtNDM5LDYgKzQzOSw3IEBACiAJCUJDODQ1MkE3MTE2MkM4MDkw
MENBQjlCNSAvKiBEcmF3aW5nQXJlYS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCQzg0NTJBNTExNjJDODA5MDBDQUI5QjUgLyogRHJhd2luZ0FyZWEu
Y3BwICovOyB9OwogCQlCQzg0NTJBODExNjJDODA5MDBDQUI5QjUgLyogRHJhd2luZ0FyZWEuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDODQ1MkE2MTE2
MkM4MDkwMENBQjlCNSAvKiBEcmF3aW5nQXJlYS5oICovOyB9OwogCQlCQzg0RUIxODEyQTcxMDBD
MDA4M0YyREEgLyogV2ViUHJlZmVyZW5jZXNNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzg0RUIxNzEyQTcxMDBDMDA4M0YyREEgLyogV2ViUHJl
ZmVyZW5jZXNNYWMubW0gKi87IH07CisJCUJDODU3RTg3MTJCNzFFQkIwMEVERUIyRSAvKiBXZWJQ
YWdlUHJveHlNYWMubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBCQzg1N0U4NTEyQjcxRUJCMDBFREVCMkUgLyogV2ViUGFnZVByb3h5TWFjLm1tICovOyB9
OwogCQlCQzg2OTlCNTExNkFBREFBMDAyQTkyNUIgLyogV0tWaWV3LmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzg2OTlCMjExNkFBREFBMDAyQTkyNUIg
LyogV0tWaWV3LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHVibGljLCApOyB9OyB9
OwogCQlCQzg2OTlCNjExNkFBREFBMDAyQTkyNUIgLyogV0tWaWV3Lm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM4Njk5QjMxMTZBQURBQTAwMkE5MjVC
IC8qIFdLVmlldy5tbSAqLzsgfTsKIAkJQkM4Njk5QjcxMTZBQURBQTAwMkE5MjVCIC8qIFdLVmll
d0ludGVybmFsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCQzg2OTlCNDExNkFBREFBMDAyQTkyNUIgLyogV0tWaWV3SW50ZXJuYWwuaCAqLzsgfTsKQEAg
LTEwODUsNiArMTA4Niw3IEBACiAJCUJDODQ1MkE1MTE2MkM4MDkwMENBQjlCNSAvKiBEcmF3aW5n
QXJlYS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBEcmF3aW5nQXJl
YS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDODQ1MkE2MTE2MkM4MDkwMENB
QjlCNSAvKiBEcmF3aW5nQXJlYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBE
cmF3aW5nQXJlYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzg0RUIxNzEyQTcx
MDBDMDA4M0YyREEgLyogV2ViUHJlZmVyZW5jZXNNYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5vYmpjcHA7IHBhdGggPSBXZWJQcmVmZXJlbmNlc01hYy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKKwkJQkM4NTdFODUxMkI3MUVCQjAwRURFQjJFIC8qIFdlYlBhZ2VQcm94eU1h
Yy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlBhZ2VQcm94
eU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4Njk5QjIxMTZBQURBQTAw
MkE5MjVCIC8qIFdLVmlldy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXS1Zp
ZXcuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4Njk5QjMxMTZBQURBQTAwMkE5
MjVCIC8qIFdLVmlldy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9
IFdLVmlldy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM4Njk5QjQxMTZBQURB
QTAwMkE5MjVCIC8qIFdLVmlld0ludGVybmFsLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdLVmlld0ludGVybmFsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0y
MjQ5LDYgKzIyNTEsNyBAQAogCQkJCTUxQUNCQjlFMTI3QThGMkMwMEQyMDNCOSAvKiBXZWJDb250
ZXh0TWVudVByb3h5TWFjLmggKi8sCiAJCQkJNTFBQ0JCOUYxMjdBOEYyQzAwRDIwM0I5IC8qIFdl
YkNvbnRleHRNZW51UHJveHlNYWMubW0gKi8sCiAJCQkJMUNBOEI5MzUxMjdDNzc0RTAwNTc2QzJC
IC8qIFdlYkluc3BlY3RvclByb3h5TWFjLm1tICovLAorCQkJCUJDODU3RTg1MTJCNzFFQkIwMEVE
RUIyRSAvKiBXZWJQYWdlUHJveHlNYWMubW0gKi8sCiAJCQkJQkM1NzUwOTUxMjY4RjNDNjAwNkYw
RjEyIC8qIFdlYlBvcHVwTWVudVByb3h5TWFjLmggKi8sCiAJCQkJQkM1NzUwOTYxMjY4RjNDNjAw
NkYwRjEyIC8qIFdlYlBvcHVwTWVudVByb3h5TWFjLm1tICovLAogCQkJCUJDODRFQjE3MTJBNzEw
MEMwMDgzRjJEQSAvKiBXZWJQcmVmZXJlbmNlc01hYy5tbSAqLywKQEAgLTMxMDIsNiArMzEwNSw3
IEBACiAJCQkJRjYyQTc2NjExMkIxQUJFRDAwMDVGMUI2IC8qIFdLRGF0YWJhc2VNYW5hZ2VyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUY2MkE3NkI2MTJCMUIyNUYwMDA1RjFCNiAvKiBXZWJEYXRh
YmFzZU1hbmFnZXJNZXNzYWdlUmVjZWl2ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjYyQTc2
QjgxMkIxQjI1RjAwMDVGMUI2IC8qIFdlYkRhdGFiYXNlTWFuYWdlclByb3h5TWVzc2FnZVJlY2Vp
dmVyLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJDODU3RTg3MTJCNzFFQkIwMEVERUIyRSAvKiBX
ZWJQYWdlUHJveHlNYWMubW0gaW4gU291cmNlcyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVw
bG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiA3Mzk4NSkKKysrIFdlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTksNiArMTU5LDggQEAg
V2ViUGFnZTo6V2ViUGFnZSh1aW50NjRfdCBwYWdlSUQsIGNvbnN0IAogICAgIHNldERyYXdzQmFj
a2dyb3VuZChwYXJhbWV0ZXJzLmRyYXdzQmFja2dyb3VuZCk7CiAgICAgc2V0RHJhd3NUcmFuc3Bh
cmVudEJhY2tncm91bmQocGFyYW1ldGVycy5kcmF3c1RyYW5zcGFyZW50QmFja2dyb3VuZCk7CiAK
KyAgICBtX3VzZXJBZ2VudCA9IHBhcmFtZXRlcnMudXNlckFnZW50OworCiAjaWZuZGVmIE5ERUJV
RwogICAgIHdlYlBhZ2VDb3VudGVyLmluY3JlbWVudCgpOwogI2VuZGlmCkBAIC04NjAsMTggKzg2
Miw5IEBAIHZvaWQgV2ViUGFnZTo6c2hvdygpCiAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVBy
b3h5OjpTaG93UGFnZSgpKTsKIH0KIAotdm9pZCBXZWJQYWdlOjpzZXRDdXN0b21Vc2VyQWdlbnQo
Y29uc3QgU3RyaW5nJiBjdXN0b21Vc2VyQWdlbnQpCit2b2lkIFdlYlBhZ2U6OnNldFVzZXJBZ2Vu
dChjb25zdCBTdHJpbmcmIHVzZXJBZ2VudCkKIHsKLSAgICBtX2N1c3RvbVVzZXJBZ2VudCA9IGN1
c3RvbVVzZXJBZ2VudDsKLX0KLQotU3RyaW5nIFdlYlBhZ2U6OnVzZXJBZ2VudCgpIGNvbnN0Ci17
Ci0gICAgaWYgKCFtX2N1c3RvbVVzZXJBZ2VudC5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiBt
X2N1c3RvbVVzZXJBZ2VudDsKLQotICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBiYXNlZCBv
biBhbiBhcHBsaWNhdGlvbiBuYW1lLgotICAgIHJldHVybiAiTW96aWxsYS81LjAgKE1hY2ludG9z
aDsgVTsgSW50ZWwgTWFjIE9TIFggMTBfNjsgZW4tdXMpIEFwcGxlV2ViS2l0LzUzMS40IChLSFRN
TCwgbGlrZSBHZWNrbykgVmVyc2lvbi80LjAuMyBTYWZhcmkvNTMxLjQiOworICAgIG1fdXNlckFn
ZW50ID0gdXNlckFnZW50OwogfQogCiBJbnRSZWN0IFdlYlBhZ2U6OndpbmRvd1Jlc2l6ZXJSZWN0
KCkgY29uc3QKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmgJKHJldmlzaW9u
IDczOTg1KQorKysgV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0xMjYsNyArMTI2LDcgQEAgcHVibGljOgogICAgIGJvb2wgaGFuZGxlRWRpdGlu
Z0tleWJvYXJkRXZlbnQoV2ViQ29yZTo6S2V5Ym9hcmRFdmVudCopOwogI2VuZGlmCiAgICAgdm9p
ZCBzaG93KCk7Ci0gICAgU3RyaW5nIHVzZXJBZ2VudCgpIGNvbnN0OworICAgIFN0cmluZyB1c2Vy
QWdlbnQoKSBjb25zdCB7IHJldHVybiBtX3VzZXJBZ2VudDsgfQogICAgIFdlYkNvcmU6OkludFJl
Y3Qgd2luZG93UmVzaXplclJlY3QoKSBjb25zdDsKICAgICBib29sIHRhYnNUb0xpbmtzKCkgY29u
c3QgeyByZXR1cm4gbV90YWJUb0xpbmtzOyB9CiAKQEAgLTMwMSw3ICszMDEsNyBAQCBwcml2YXRl
OgogICAgIHZvaWQgdXBkYXRlUHJlZmVyZW5jZXMoY29uc3QgV2ViUHJlZmVyZW5jZXNTdG9yZSYp
OwogCiAgICAgdm9pZCBkaWRSZWNlaXZlUG9saWN5RGVjaXNpb24odWludDY0X3QgZnJhbWVJRCwg
dWludDY0X3QgbGlzdGVuZXJJRCwgdWludDMyX3QgcG9saWN5QWN0aW9uLCB1aW50NjRfdCBkb3du
bG9hZElEKTsKLSAgICB2b2lkIHNldEN1c3RvbVVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsKKyAg
ICB2b2lkIHNldFVzZXJBZ2VudChjb25zdCBTdHJpbmcmKTsKIAogI2lmIFBMQVRGT1JNKE1BQykK
ICAgICB2b2lkIHNldFdpbmRvd0lzVmlzaWJsZShib29sIHdpbmRvd0lzVmlzaWJsZSk7CkBAIC0z
MzIsNyArMzMyLDcgQEAgcHJpdmF0ZToKIAogICAgIFJlZlB0cjxXZWJQYWdlR3JvdXBQcm94eT4g
bV9wYWdlR3JvdXA7CiAKLSAgICBTdHJpbmcgbV9jdXN0b21Vc2VyQWdlbnQ7CisgICAgU3RyaW5n
IG1fdXNlckFnZW50OwogCiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX3ZpZXdTaXplOwogICAgIFJl
ZlB0cjxEcmF3aW5nQXJlYT4gbV9kcmF3aW5nQXJlYTsKSW5kZXg6IFdlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5tZXNzYWdlcy5pbgkocmV2aXNpb24gNzM5ODUpCisrKyBX
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLm1lc3NhZ2VzLmluCSh3b3JraW5nIGNv
cHkpCkBAIC01Nyw3ICs1Nyw3IEBAIG1lc3NhZ2VzIC0+IFdlYlBhZ2UgewogCiAgICAgUHJlZmVy
ZW5jZXNEaWRDaGFuZ2UoV2ViS2l0OjpXZWJQcmVmZXJlbmNlc1N0b3JlIHN0b3JlKQogCi0gICAg
U2V0Q3VzdG9tVXNlckFnZW50KFdURjo6U3RyaW5nIGN1c3RvbVVzZXJBZ2VudCkKKyAgICBTZXRV
c2VyQWdlbnQoV1RGOjpTdHJpbmcgdXNlckFnZW50KQogCiAjaWYgRU5BQkxFKFRJTEVEX0JBQ0tJ
TkdfU1RPUkUpCiAgICAgU2V0QWN0dWFsVmlzaWJsZUNvbnRlbnRSZWN0KFdlYkNvcmU6OkludFJl
Y3QgcmVjdCkKSW5kZXg6IFdlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdDIvd2luL1dlYktpdDIudmNwcm9qCShyZXZpc2lvbiA3Mzk4NikKKysrIFdlYktpdDIv
d2luL1dlYktpdDIudmNwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNDY2LDYgKzI0NjYsMTAgQEAK
IAkJCQkJPgogCQkJCTwvRmlsZT4KIAkJCQk8RmlsZQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJ
UHJvY2Vzc1x3aW5cV2ViUGFnZVByb3h5V2luLmNwcCIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJ
CQk8RmlsZQogCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXFVJUHJvY2Vzc1x3aW5cV2ViUG9wdXBNZW51
UHJveHlXaW4uY3BwIgogCQkJCQk+CiAJCQkJPC9GaWxlPgo=
</data>
<flag name="review"
          id="67449"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>