<?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>116847</bug_id>
          
          <creation_ts>2013-05-27 17:02:23 -0700</creation_ts>
          <short_desc>testRunner should be able to tell you if a function is DFG compiled</short_desc>
          <delta_ts>2013-05-28 10:09:18 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Filip Pizlo">fpizlo</reporter>
          <assigned_to name="Filip Pizlo">fpizlo</assigned_to>
          <cc>mhahnenberg</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>894193</commentid>
    <comment_count>0</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-05-27 17:02:23 -0700</bug_when>
    <thetext>testRunner should be able to tell you if a function is DFG compiled</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894196</commentid>
    <comment_count>1</comment_count>
      <attachid>203017</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-05-27 17:06:48 -0700</bug_when>
    <thetext>Created attachment 203017
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894198</commentid>
    <comment_count>2</comment_count>
      <attachid>203017</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-05-27 18:42:07 -0700</bug_when>
    <thetext>Comment on attachment 203017
Patch

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

&gt; Source/JavaScriptCore/API/JSCTestRunnerUtils.cpp:52
&gt; +        return 0;

Is this meant to return the JSValueRef of 0 or a null JSValueRef? I ask because everywhere else we return undefined.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894199</commentid>
    <comment_count>3</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-05-27 18:48:22 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 203017 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=203017&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/API/JSCTestRunnerUtils.cpp:52
&gt; &gt; +        return 0;
&gt; 
&gt; Is this meant to return the JSValueRef of 0 or a null JSValueRef? I ask because everywhere else we return undefined.

It&apos;s meant to return 0. 

We return undefined if the user didn&apos;t pass a function. 

Here, the user passed a function. If it doesn&apos;t have a code block that just means that it hasn&apos;t been called yet so by definition it has had zero DFG compiles.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894367</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-05-28 08:22:00 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; (From update of attachment 203017 [details] [details])
&gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=203017&amp;action=review
&gt; &gt; 
&gt; &gt; &gt; Source/JavaScriptCore/API/JSCTestRunnerUtils.cpp:52
&gt; &gt; &gt; +        return 0;
&gt; &gt; 
&gt; &gt; Is this meant to return the JSValueRef of 0 or a null JSValueRef? I ask because everywhere else we return undefined.
&gt; 
&gt; It&apos;s meant to return 0. 
&gt; 
&gt; We return undefined if the user didn&apos;t pass a function. 
&gt; 
&gt; Here, the user passed a function. If it doesn&apos;t have a code block that just means that it hasn&apos;t been called yet so by definition it has had zero DFG compiles.

In that case, don&apos;t you need to make a JSValueRef that contains zero instead of returning a null JSValueRef?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894383</commentid>
    <comment_count>5</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-05-28 09:27:34 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (In reply to comment #3)
&gt; &gt; (In reply to comment #2)
&gt; &gt; &gt; (From update of attachment 203017 [details] [details] [details])
&gt; &gt; &gt; View in context: https://bugs.webkit.org/attachment.cgi?id=203017&amp;action=review
&gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Source/JavaScriptCore/API/JSCTestRunnerUtils.cpp:52
&gt; &gt; &gt; &gt; +        return 0;
&gt; &gt; &gt; 
&gt; &gt; &gt; Is this meant to return the JSValueRef of 0 or a null JSValueRef? I ask because everywhere else we return undefined.
&gt; &gt; 
&gt; &gt; It&apos;s meant to return 0. 
&gt; &gt; 
&gt; &gt; We return undefined if the user didn&apos;t pass a function. 
&gt; &gt; 
&gt; &gt; Here, the user passed a function. If it doesn&apos;t have a code block that just means that it hasn&apos;t been called yet so by definition it has had zero DFG compiles.
&gt; 
&gt; In that case, don&apos;t you need to make a JSValueRef that contains zero instead of returning a null JSValueRef?

Oh.  Good point!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894388</commentid>
    <comment_count>6</comment_count>
      <attachid>203062</attachid>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-05-28 09:31:02 -0700</bug_when>
    <thetext>Created attachment 203062
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894391</commentid>
    <comment_count>7</comment_count>
      <attachid>203062</attachid>
    <who name="Mark Hahnenberg">mhahnenberg</who>
    <bug_when>2013-05-28 09:41:31 -0700</bug_when>
    <thetext>Comment on attachment 203062
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>894404</commentid>
    <comment_count>8</comment_count>
    <who name="Filip Pizlo">fpizlo</who>
    <bug_when>2013-05-28 10:09:18 -0700</bug_when>
    <thetext>Landed in http://trac.webkit.org/changeset/150807</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>203017</attachid>
            <date>2013-05-27 17:06:48 -0700</date>
            <delta_ts>2013-05-28 09:31:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-116847-20130527170528.patch</filename>
            <type>text/plain</type>
            <size>26860</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUwNzg1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBA
CisyMDEzLTA1LTI3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
dGVzdFJ1bm5lciBzaG91bGQgYmUgYWJsZSB0byB0ZWxsIHlvdSBpZiBhIGZ1bmN0aW9uIGlzIERG
RyBjb21waWxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTE2ODQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBBUEkvSlNDVGVzdFJ1bm5lclV0aWxzLmNwcDogQWRkZWQuCisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSlNDOjpudW1iZXJPZkRGR0NvbXBpbGVzKToKKyAgICAgICAgKiBBUEkvSlNDVGVz
dFJ1bm5lclV0aWxzLmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ5dGVjb2RlL0Nv
ZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bnVtYmVyT2ZERkdDb21waWxl
cyk6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAg
ICAgICAoQ29kZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHV29ya2xpc3QuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OldvcmtsaXN0OjpydW5UaHJlYWQpOgorICAgICAgICAqIHJ1bnRpbWUvRXhl
Y3V0YWJsZS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb25J
bmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlv
bjo6SlNGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmpzRXhlY3V0YWJsZSk6
CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmlzSG9zdEZ1bmN0aW9uKToKKyAgICAgICAgKEpT
Qzo6SlNGdW5jdGlvbjo6bmF0aXZlRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9u
OjpuYXRpdmVDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6CisK
IDIwMTMtMDUtMjcgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBm
b3VydGhUaWVyOiBERkcgQXJpdGhNb2Qgc2hvdWxkIGhhdmUgdGhlICFub2RlVXNlZEFzTnVtYmVy
IG9wdGltaXphdGlvbnMgdGhhdCBBcml0aERpdiBoYXMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDVGVzdFJ1bm5lclV0aWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ1Rlc3RSdW5uZXJVdGlscy5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ1Rlc3RSdW5uZXJVdGlscy5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTQ1Rlc3RSdW5uZXJV
dGlscy5oIgorCisjaW5jbHVkZSAiQVBJQ2FzdC5oIgorI2luY2x1ZGUgIkNvZGVCbG9jay5oIgor
I2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0pTVmFsdWVSZWYg
bnVtYmVyT2ZERkdDb21waWxlcyhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiB0aGVG
dW5jdGlvblZhbHVlUmVmKQoreworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY29udGV4dCk7
CisgICAgSlNWYWx1ZSB0aGVGdW5jdGlvblZhbHVlID0gdG9KUyhleGVjLCB0aGVGdW5jdGlvblZh
bHVlUmVmKTsKKyAgICAKKyAgICBKU0Z1bmN0aW9uKiB0aGVGdW5jdGlvbiA9IGpzRHluYW1pY0Nh
c3Q8SlNGdW5jdGlvbio+KHRoZUZ1bmN0aW9uVmFsdWUpOworICAgIGlmICghdGhlRnVuY3Rpb24p
CisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKyAgICAKKyAg
ICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0R5bmFtaWNDYXN0PEZ1bmN0aW9u
RXhlY3V0YWJsZSo+KAorICAgICAgICB0aGVGdW5jdGlvbi0+ZXhlY3V0YWJsZSgpKTsKKyAgICBp
ZiAoIWV4ZWN1dGFibGUpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250
ZXh0KTsKKyAgICAKKyAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gZXhlY3V0YWJs
ZS0+YmFzZWxpbmVDb2RlQmxvY2tGb3IoQ29kZUZvckNhbGwpOworICAgIAorICAgIGlmICghYmFz
ZWxpbmVDb2RlQmxvY2spCisgICAgICAgIHJldHVybiAwOworICAgIAorICAgIHJldHVybiBKU1Zh
bHVlTWFrZU51bWJlcihjb250ZXh0LCBiYXNlbGluZUNvZGVCbG9jay0+bnVtYmVyT2ZERkdDb21w
aWxlcygpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKSW5kZXg6IFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9BUEkvSlNDVGVzdFJ1bm5lclV0aWxzLmgKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL0FQSS9KU0NUZXN0UnVubmVyVXRpbHMuaAkocmV2aXNpb24gMCkKKysrIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDVGVzdFJ1bm5lclV0aWxzLmgJKHJldmlzaW9uIDAp
CkBAIC0wLDAgKzEsMzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4g
CisgKi8KKworI2lmbmRlZiBKU0NUZXN0UnVubmVyVXRpbHNfaAorI2RlZmluZSBKU0NUZXN0UnVu
bmVyVXRpbHNfaAorCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDb250ZXh0UmVmLmg+Cisj
aW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNWYWx1ZVJlZi5oPgorCituYW1lc3BhY2UgSlNDIHsK
KworSlNfRVhQT1JUX1BSSVZBVEUgSlNWYWx1ZVJlZiBudW1iZXJPZkRGR0NvbXBpbGVzKEpTQ29u
dGV4dFJlZiwgSlNWYWx1ZVJlZiB0aGVGdW5jdGlvbik7CisKK30gLy8gbmFtZXNwYWNlIEpTQwor
CisjZW5kaWYgLy8gSlNDVGVzdFJ1bm5lclV0aWxzX2gKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCShyZXZpc2lvbiAxNTA3ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MTE2LDYgKzExNiw3IEBACiAJCTBGMjM1QkVDMTcxNzhFNzMwMDY5MEM3RiAvKiBERkdPU1JFeGl0
QmFzZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYy
MzVCRTgxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRCYXNlLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyMzVCRUQxNzE3OEU3MzAwNjkw
QzdGIC8qIERGR09TUkV4aXRQcmVwYXJhdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjIzNUJFOTE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NS
RXhpdFByZXBhcmF0aW9uLmNwcCAqLzsgfTsKIAkJMEYyMzVCRUUxNzE3OEU3MzAwNjkwQzdGIC8q
IERGR09TUkV4aXRQcmVwYXJhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEYyMzVCRUExNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRQcmVw
YXJhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTBGMjNCQTk1MTc1NDFEQkMwMEM0OENGRSAvKiBKU0Z1bmN0aW9uSW5saW5lcy5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyM0JBOTQxNzU0MURC
QzAwQzQ4Q0ZFIC8qIEpTRnVuY3Rpb25JbmxpbmVzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyNDJEQTcxM0YzQjFFODAwN0FERDRDIC8qIFdl
YWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGMjQyREE1MTNGM0IxQkIwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFy
dmVzdGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsK
IAkJMEYyNTZDMzYxNjI3QjBBRDAwN0YyNzgzIC8qIERGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQ
YXRoR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSAwRjI1NkMzNDE2MjdCMEFBMDA3RjI3ODMgLyogREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xv
d1BhdGhHZW5lcmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwRjJCREMxNTE1MUM1RDREMDBDRDg5MTAgLyogREZHRml4dXBQaGFzZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjJCREMxMjE1
MUM1RDRBMDBDRDg5MTAgLyogREZHRml4dXBQaGFzZS5jcHAgKi87IH07CkBAIC0xNzgsNiArMTc5
LDggQEAKIAkJMEY1NkExRDMxNTAwMEYzNTAwMjk5MkIxIC8qIEV4ZWN1dGlvbkNvdW50ZXIuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTZBMUQxMTUw
MDBGMzEwMDI5OTJCMSAvKiBFeGVjdXRpb25Db3VudGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY1NkExRDUxNTAwMUNGNDAwMjk5MkIxIC8q
IEV4ZWN1dGlvbkNvdW50ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gMEY1NkExRDQxNTAwMUNGMjAwMjk5MkIxIC8qIEV4ZWN1dGlvbkNvdW50ZXIu
Y3BwICovOyB9OwogCQkwRjU3MkQ0RjE2ODc5RkREMDBFNTdGQkQgLyogVGh1bmtHZW5lcmF0b3Iu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTcyRDRE
MTY4NzlGREIwMEU1N0ZCRCAvKiBUaHVua0dlbmVyYXRvci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTBGNUVFNEU4MTc1NDI0QUYwMDlBRTQyRCAv
KiBKU0NUZXN0UnVubmVyVXRpbHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY1RUU0RTYxNzU0MjRBRjAwOUFFNDJEIC8qIEpTQ1Rlc3RSdW5uZXJV
dGlscy5jcHAgKi87IH07CisJCTBGNUVFNEU5MTc1NDI0QUYwMDlBRTQyRCAvKiBKU0NUZXN0UnVu
bmVyVXRpbHMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDBGNUVFNEU3MTc1NDI0QUYwMDlBRTQyRCAvKiBKU0NUZXN0UnVubmVyVXRpbHMuaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwRjVFRjkxRTE2ODc4
RjdBMDAzRTVDMjUgLyogSklUVGh1bmtzLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUVGOTFCMTY4NzhGNzgwMDNFNUMyNSAvKiBKSVRUaHVua3Mu
Y3BwICovOyB9OwogCQkwRjVFRjkxRjE2ODc4RjdEMDAzRTVDMjUgLyogSklUVGh1bmtzLmggaW4g
SGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVFRjkxQzE2ODc4
Rjc4MDAzRTVDMjUgLyogSklUVGh1bmtzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAo
UHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEY1RjA4Q0YxNDZDNzYzMzAwMDQ3MkE5IC8qIFVuY29uZGl0
aW9uYWxGaW5hbGl6ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDBGNUYwOENFMTQ2Qzc2MkYwMDA0NzJBOSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVy
LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTEx
MTMsNiArMTExNiw3IEBACiAJCTBGMjM1QkU4MTcxNzhFNzMwMDY5MEM3RiAvKiBERkdPU1JFeGl0
QmFzZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IG5hbWUgPSBERkdPU1JFeGl0QmFzZS5o
OyBwYXRoID0gZGZnL0RGR09TUkV4aXRCYXNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGMjM1QkU5MTcxNzhFNzMwMDY5MEM3RiAvKiBERkdPU1JFeGl0UHJlcGFyYXRpb24uY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gREZHT1NSRXhpdFByZXBhcmF0
aW9uLmNwcDsgcGF0aCA9IGRmZy9ERkdPU1JFeGl0UHJlcGFyYXRpb24uY3BwOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQkwRjIzNUJFQTE3MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhp
dFByZXBhcmF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR09TUkV4
aXRQcmVwYXJhdGlvbi5oOyBwYXRoID0gZGZnL0RGR09TUkV4aXRQcmVwYXJhdGlvbi5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjIzQkE5NDE3NTQxREJDMDBDNDhDRkUgLyogSlNG
dW5jdGlvbklubGluZXMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNGdW5j
dGlvbklubGluZXMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyNDJEQTUxM0Yz
QjFCQjAwN0FERDRDIC8qIFdlYWtSZWZlcmVuY2VIYXJ2ZXN0ZXIuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjI1NkMzNDE2MjdCMEFBMDA3RjI3ODMgLyogREZHQ2FsbEFycmF5
QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBu
YW1lID0gREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1BhdGhHZW5lcmF0b3IuaDsgcGF0aCA9IGRm
Zy9ERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQkwRjJCREMxMjE1MUM1RDRBMDBDRDg5MTAgLyogREZHRml4dXBQaGFz
ZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUgPSBERkdGaXh1cFBoYXNl
LmNwcDsgcGF0aCA9IGRmZy9ERkdGaXh1cFBoYXNlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTExNzQsNiArMTE3OCw4IEBACiAJCTBGNTZBMUQxMTUwMDBGMzEwMDI5OTJCMSAv
KiBFeGVjdXRpb25Db3VudGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEV4
ZWN1dGlvbkNvdW50ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1NkExRDQx
NTAwMUNGMjAwMjk5MkIxIC8qIEV4ZWN1dGlvbkNvdW50ZXIuY3BwICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAuY3BwOyBwYXRoID0gRXhlY3V0aW9uQ291bnRlci5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGNTcyRDREMTY4NzlGREIwMEU1N0ZCRCAvKiBUaHVua0dlbmVyYXRv
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBUaHVua0dlbmVyYXRvci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjVFRTRFNjE3NTQyNEFGMDA5QUU0MkQgLyog
SlNDVGVzdFJ1bm5lclV0aWxzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJ
CTBGNUVFNEU3MTc1NDI0QUYwMDlBRTQyRCAvKiBKU0NUZXN0UnVubmVyVXRpbHMuaCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNDVGVzdFJ1bm5lclV0aWxzLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTBGNUVGOTFCMTY4NzhGNzgwMDNFNUMyNSAvKiBKSVRUaHVu
a3MuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSklUVGh1bmtzLmNw
cDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RUY5MUMxNjg3OEY3ODAwM0U1QzI1
IC8qIEpJVFRodW5rcy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKSVRUaHVu
a3MuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEY1RjA4Q0UxNDZDNzYyRjAwMDQ3
MkE5IC8qIFVuY29uZGl0aW9uYWxGaW5hbGl6ZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVW5jb25kaXRpb25hbEZpbmFsaXplci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwpAQCAtMjQyNiw2ICsyNDMyLDggQEAKIAkJCQkxQ0FBOEI0QjBEMzJDMzlBMDA0MUJDRkYg
LyogSmF2YVNjcmlwdENvcmUuaCAqLywKIAkJCQlCQzA4OTRENTBGQUZCQTJEMDAwMDE4NjUgLyog
SlNBUElWYWx1ZVdyYXBwZXIuY3BwICovLAogCQkJCUJDMDg5NEQ2MEZBRkJBMkQwMDAwMTg2NSAv
KiBKU0FQSVZhbHVlV3JhcHBlci5oICovLAorCQkJCUMyQ0YzOUJGMTZFMTVBODEwMERENjlCRSAv
KiBKU0FQSVdyYXBwZXJPYmplY3QuY3BwICovLAorCQkJCUMyQ0YzOUMwMTZFMTVBODEwMERENjlC
RSAvKiBKU0FQSVdyYXBwZXJPYmplY3QuaCAqLywKIAkJCQkxNDIxMzU5QTBBNjc3RjRGMDBBODE5
NUUgLyogSlNCYXNlLmNwcCAqLywKIAkJCQkxNDI3MTEzODBBNDYwQkJCMDA4MEVFRUEgLyogSlNC
YXNlLmggKi8sCiAJCQkJMTQwRDE3RDYwRThBRDRBOTAwMENEMTdEIC8qIEpTQmFzZVByaXZhdGUu
aCAqLywKQEAgLTI0NDQsNyArMjQ1MiwxMSBAQAogCQkJCTE0QkQ1QTI5MEEzRTkxRjYwMEJBRjU5
QyAvKiBKU0NvbnRleHRSZWYuY3BwICovLAogCQkJCTE0QkQ1QTJBMEEzRTkxRjYwMEJBRjU5QyAv
KiBKU0NvbnRleHRSZWYuaCAqLywKIAkJCQkxNDhDRDFENzEwOENGOTAyMDA4MTYzQzYgLyogSlND
b250ZXh0UmVmUHJpdmF0ZS5oICovLAorCQkJCTBGNUVFNEU2MTc1NDI0QUYwMDlBRTQyRCAvKiBK
U0NUZXN0UnVubmVyVXRpbHMuY3BwICovLAorCQkJCTBGNUVFNEU3MTc1NDI0QUYwMDlBRTQyRCAv
KiBKU0NUZXN0UnVubmVyVXRpbHMuaCAqLywKIAkJCQk4NkUzQzYwQTE2N0JBQjg3MDA2RDc2MEEg
LyogSlNFeHBvcnQuaCAqLywKKwkJCQlDMjVENzA5QTE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5h
Z2VkVmFsdWUuaCAqLywKKwkJCQlDMjVENzA5OTE2REU5OUY0MDBGQ0E2QkMgLyogSlNNYW5hZ2Vk
VmFsdWUubW0gKi8sCiAJCQkJMTQ4MkI3RTIwQTQzMDc2MDAwNTE3Q0ZDIC8qIEpTT2JqZWN0UmVm
LmNwcCAqLywKIAkJCQkxNDgyQjdFMTBBNDMwNzYwMDA1MTdDRkMgLyogSlNPYmplY3RSZWYuaCAq
LywKIAkJCQlBNzlFREIwODExNTMxQ0Q2MDAxOUU5MTIgLyogSlNPYmplY3RSZWZQcml2YXRlLmgg
Ki8sCkBAIC0yNDc2LDEwICsyNDg4LDYgQEAKIAkJCQlFMTI0QThGNjBFNTU1Nzc1MDAzMDkxRjEg
LyogT3BhcXVlSlNTdHJpbmcuY3BwICovLAogCQkJCUUxMjRBOEY1MEU1NTU3NzUwMDMwOTFGMSAv
KiBPcGFxdWVKU1N0cmluZy5oICovLAogCQkJCTVERTNEMEY0MEREOERERkIwMDQ2ODcxNCAvKiBX
ZWJLaXRBdmFpbGFiaWxpdHkuaCAqLywKLQkJCQlDMjVENzA5OTE2REU5OUY0MDBGQ0E2QkMgLyog
SlNNYW5hZ2VkVmFsdWUubW0gKi8sCi0JCQkJQzI1RDcwOUExNkRFOTlGNDAwRkNBNkJDIC8qIEpT
TWFuYWdlZFZhbHVlLmggKi8sCi0JCQkJQzJDRjM5QkYxNkUxNUE4MTAwREQ2OUJFIC8qIEpTQVBJ
V3JhcHBlck9iamVjdC5jcHAgKi8sCi0JCQkJQzJDRjM5QzAxNkUxNUE4MTAwREQ2OUJFIC8qIEpT
QVBJV3JhcHBlck9iamVjdC5oICovLAogCQkJKTsKIAkJCXBhdGggPSBBUEk7CiAJCQlzb3VyY2VU
cmVlID0gIjxncm91cD4iOwpAQCAtMjcwNiw2ICsyNzE0LDcgQEAKIAkJCQlBN0I0QUNBRTE0ODRD
OUNFMDBCMzhBMzYgLyogSlNFeHBvcnRNYWNyb3MuaCAqLywKIAkJCQlGNjkyQTg1RTAyNTU1OTdE
MDFGRjYwRjcgLyogSlNGdW5jdGlvbi5jcHAgKi8sCiAJCQkJRjY5MkE4NUYwMjU1NTk3RDAxRkY2
MEY3IC8qIEpTRnVuY3Rpb24uaCAqLywKKwkJCQkwRjIzQkE5NDE3NTQxREJDMDBDNDhDRkUgLyog
SlNGdW5jdGlvbklubGluZXMuaCAqLywKIAkJCQkxNERFMEQ2ODBEMDI0MzE0MDBBQUNDQTIgLyog
SlNHbG9iYWxPYmplY3QuY3BwICovLAogCQkJCUE4RTg5NDMzMENEMDYwM0YwMDM2NzE3OSAvKiBK
U0dsb2JhbE9iamVjdC5oICovLAogCQkJCUJDNzU2RkM2MEUyMDMxQjIwMERFN0QxMiAvKiBKU0ds
b2JhbE9iamVjdEZ1bmN0aW9ucy5jcHAgKi8sCkBAIC0zNTQ1LDYgKzM1NTQsNyBAQAogCQkJCUZF
RDI4N0IyMTVFQzlBNTcwMERBODE2MSAvKiBMTEludE9wY29kZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMEY0NjgwQTUxNEJBN0Y4RDAwQkZFMjcyIC8qIExMSW50U2xvd1BhdGhzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjBCODM5RDE0QkNGNDY2MDA4ODVCNEYgLyogTExJbnRUaHVua3MuaCBpbiBI
ZWFkZXJzICovLAorCQkJCTBGMjNCQTk1MTc1NDFEQkMwMEM0OENGRSAvKiBKU0Z1bmN0aW9uSW5s
aW5lcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQyRTMxMzkxMzRGRjBBNjAwQUZBREI1IC8qIExv
Y2FsLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNDJFMzEzQTEzNEZGMEE2MDBBRkFEQjUgLyogTG9j
YWxTY29wZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MzcwRTE2RjVDRDAwQjM0NDYwIC8q
IExvb2t1cC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zNzU4LDYgKzM3NjgsNyBAQAogCQkJCTBGQ0NB
RTQ1MTZEMENGNzQwMEQwQzY1QiAvKiBQYXJzZXJFcnJvci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEY3MTRDQTUxNkVBOTJGMjAwRjNFQkVCIC8qIERGR0JhY2t3YXJkc1Byb3BhZ2F0aW9uUGhhc2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGMTM2RDREMTc0QUQ2OUUwMDc1QjM1NCAvKiBEZWZlckdD
LmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjVFRTRFOTE3NTQyNEFGMDA5QUU0MkQgLyogSlNDVGVz
dFJ1bm5lclV0aWxzLmggaW4gSGVhZGVycyAqLywKIAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95
bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsKQEAgLTQ0NDMsNiArNDQ1NCw3IEBACiAJCQkJ
MEY0OTNBRkExNkQwQ0FEMzAwODQ1MDhCIC8qIFNvdXJjZVByb3ZpZGVyLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUFERTM5RkZGMTZERDE0NEIwMDAzQ0Q0QSAvKiBQcm9wZXJ0eVRhYmxlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGNzE0Q0E0MTZFQTkyRjAwMEYzRUJFQiAvKiBERkdCYWNrd2Fy
ZHNQcm9wYWdhdGlvblBoYXNlLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCTBGNUVFNEU4MTc1NDI0
QUYwMDlBRTQyRCAvKiBKU0NUZXN0UnVubmVyVXRpbHMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkp
OwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07CkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmNwcAkocmV2aXNp
b24gMTUwNzgxKQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTMwMTcsNiArMzAxNywxMiBAQCB2b2lkIENvZGVCbG9jazo6
Y291bnRSZW9wdGltaXphdGlvbigpCiAgICAgICAgIG1fcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50
ZXIgPSBPcHRpb25zOjpyZW9wdGltaXphdGlvblJldHJ5Q291bnRlck1heCgpOwogfQogCit1bnNp
Z25lZCBDb2RlQmxvY2s6Om51bWJlck9mREZHQ29tcGlsZXMoKQoreworICAgIEFTU0VSVChKSVRD
b2RlOjppc0Jhc2VsaW5lQ29kZShqaXRUeXBlKCkpKTsKKyAgICByZXR1cm4gKEpJVENvZGU6Omlz
T3B0aW1pemluZ0pJVChyZXBsYWNlbWVudCgpLT5qaXRUeXBlKCkpID8gMSA6IDApICsgbV9yZW9w
dGltaXphdGlvblJldHJ5Q291bnRlcjsKK30KKwogaW50MzJfdCBDb2RlQmxvY2s6OmNvZGVUeXBl
VGhyZXNob2xkTXVsdGlwbGllcigpIGNvbnN0CiB7CiAgICAgaWYgKGNvZGVUeXBlKCkgPT0gRXZh
bENvZGUpCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29kZUJsb2NrLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5o
CShyZXZpc2lvbiAxNTA3ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYnl0ZWNvZGUvQ29k
ZUJsb2NrLmgJKHdvcmtpbmcgY29weSkKQEAgLTc2Niw2ICs3NjYsOCBAQCBwdWJsaWM6CiAgICAg
Ly8gdG8gYXZvaWQgdGhyYXNoaW5nLgogICAgIHVuc2lnbmVkIHJlb3B0aW1pemF0aW9uUmV0cnlD
b3VudGVyKCkgY29uc3Q7CiAgICAgdm9pZCBjb3VudFJlb3B0aW1pemF0aW9uKCk7CisgICAgCisg
ICAgdW5zaWduZWQgbnVtYmVyT2ZERkdDb21waWxlcygpOwogCiAgICAgaW50MzJfdCBjb2RlVHlw
ZVRocmVzaG9sZE11bHRpcGxpZXIoKSBjb25zdDsKICAgICAgICAgCkluZGV4OiBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1dvcmtsaXN0LmNwcAkocmV2aXNpb24gMTUwNzgxKQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTIxMSw2ICsyMTEsOCBAQCB2b2lkIFdvcmtsaXN0OjpkdW1wKGNvbnN0IE11dGV4TG9ja2VyJiwg
CiAKIHZvaWQgV29ya2xpc3Q6OnJ1blRocmVhZCgpCiB7CisgICAgQ29tcGlsYXRpb25TY29wZSBj
b21waWxhdGlvblNjb3BlOworICAgIAogICAgIGlmIChPcHRpb25zOjp2ZXJib3NlQ29tcGlsYXRp
b25RdWV1ZSgpKQogICAgICAgICBkYXRhTG9nKCp0aGlzLCAiOiBUaHJlYWQgc3RhcnRlZFxuIik7
CiAgICAgCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVjdXRhYmxlLmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5o
CShyZXZpc2lvbiAxNTA3ODEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9FeGVj
dXRhYmxlLmgJKHdvcmtpbmcgY29weSkKQEAgLTc4MCwzOCArNzgwLDYgQEAgbmFtZXNwYWNlIEpT
QyB7CiAgICAgICAgIFJlZlB0cjxGdW5jdGlvbkNvZGVCbG9jaz4gbV9jb2RlQmxvY2tGb3JDb25z
dHJ1Y3Q7CiAgICAgfTsKIAotICAgIGlubGluZSBKU0Z1bmN0aW9uOjpKU0Z1bmN0aW9uKFZNJiB2
bSwgRnVuY3Rpb25FeGVjdXRhYmxlKiBleGVjdXRhYmxlLCBKU1Njb3BlKiBzY29wZSkKLSAgICAg
ICAgOiBCYXNlKHZtLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCktPmZ1bmN0aW9uU3RydWN0dXJlKCkp
Ci0gICAgICAgICwgbV9leGVjdXRhYmxlKHZtLCB0aGlzLCBleGVjdXRhYmxlKQotICAgICAgICAs
IG1fc2NvcGUodm0sIHRoaXMsIHNjb3BlKQotICAgICAgICAsIG1fYWxsb2NhdGlvblByb2ZpbGVX
YXRjaHBvaW50KEluaXRpYWxpemVkQmxpbmQpIC8vIFNlZSBjb21tZW50IGluIEpTRnVuY3Rpb24u
Y3BwIGNvbmNlcm5pbmcgdGhlIHJlYXNvbiBmb3IgdXNpbmcgSW5pdGlhbGl6ZWRCbGluZCBhcyBv
cHBvc2VkIHRvIEluaXRpYWxpemVkV2F0Y2hpbmcuCi0gICAgewotICAgIH0KLQotICAgIGlubGlu
ZSBGdW5jdGlvbkV4ZWN1dGFibGUqIEpTRnVuY3Rpb246OmpzRXhlY3V0YWJsZSgpIGNvbnN0Ci0g
ICAgewotICAgICAgICBBU1NFUlQoIWlzSG9zdEZ1bmN0aW9uTm9uSW5saW5lKCkpOwotICAgICAg
ICByZXR1cm4gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4obV9leGVjdXRhYmxlLmdl
dCgpKTsKLSAgICB9Ci0KLSAgICBpbmxpbmUgYm9vbCBKU0Z1bmN0aW9uOjppc0hvc3RGdW5jdGlv
bigpIGNvbnN0Ci0gICAgewotICAgICAgICBBU1NFUlQobV9leGVjdXRhYmxlKTsKLSAgICAgICAg
cmV0dXJuIG1fZXhlY3V0YWJsZS0+aXNIb3N0RnVuY3Rpb24oKTsKLSAgICB9Ci0KLSAgICBpbmxp
bmUgTmF0aXZlRnVuY3Rpb24gSlNGdW5jdGlvbjo6bmF0aXZlRnVuY3Rpb24oKQotICAgIHsKLSAg
ICAgICAgQVNTRVJUKGlzSG9zdEZ1bmN0aW9uKCkpOwotICAgICAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8TmF0aXZlRXhlY3V0YWJsZSo+KG1fZXhlY3V0YWJsZS5nZXQoKSktPmZ1bmN0aW9uKCk7Ci0g
ICAgfQotCi0gICAgaW5saW5lIE5hdGl2ZUZ1bmN0aW9uIEpTRnVuY3Rpb246Om5hdGl2ZUNvbnN0
cnVjdG9yKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChpc0hvc3RGdW5jdGlvbigpKTsKLSAgICAg
ICAgcmV0dXJuIHN0YXRpY19jYXN0PE5hdGl2ZUV4ZWN1dGFibGUqPihtX2V4ZWN1dGFibGUuZ2V0
KCkpLT5jb25zdHJ1Y3RvcigpOwotICAgIH0KLQogICAgIGlubGluZSBib29sIGlzSG9zdEZ1bmN0
aW9uKEpTVmFsdWUgdmFsdWUsIE5hdGl2ZUZ1bmN0aW9uIG5hdGl2ZUZ1bmN0aW9uKQogICAgIHsK
ICAgICAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb24gPSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGdldEpT
RnVuY3Rpb24odmFsdWUpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
RnVuY3Rpb25JbmxpbmVzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNGdW5jdGlvbklubGluZXMuaAkocmV2aXNpb24gMCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmgJKHJldmlzaW9uIDApCkBAIC0wLDAg
KzEsNjkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKwor
I2lmbmRlZiBKU0Z1bmN0aW9uSW5saW5lc19oCisjZGVmaW5lIEpTRnVuY3Rpb25JbmxpbmVzX2gK
KworI2luY2x1ZGUgIkV4ZWN1dGFibGUuaCIKKyNpbmNsdWRlICJKU0Z1bmN0aW9uLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitpbmxpbmUgSlNGdW5jdGlvbjo6SlNGdW5jdGlvbihWTSYgdm0sIEZ1
bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0YWJsZSwgSlNTY29wZSogc2NvcGUpCisgICAgOiBCYXNl
KHZtLCBzY29wZS0+Z2xvYmFsT2JqZWN0KCktPmZ1bmN0aW9uU3RydWN0dXJlKCkpCisgICAgLCBt
X2V4ZWN1dGFibGUodm0sIHRoaXMsIGV4ZWN1dGFibGUpCisgICAgLCBtX3Njb3BlKHZtLCB0aGlz
LCBzY29wZSkKKyAgICAsIG1fYWxsb2NhdGlvblByb2ZpbGVXYXRjaHBvaW50KEluaXRpYWxpemVk
QmxpbmQpIC8vIFNlZSBjb21tZW50IGluIEpTRnVuY3Rpb24uY3BwIGNvbmNlcm5pbmcgdGhlIHJl
YXNvbiBmb3IgdXNpbmcgSW5pdGlhbGl6ZWRCbGluZCBhcyBvcHBvc2VkIHRvIEluaXRpYWxpemVk
V2F0Y2hpbmcuCit7Cit9CisKK2lubGluZSBGdW5jdGlvbkV4ZWN1dGFibGUqIEpTRnVuY3Rpb246
OmpzRXhlY3V0YWJsZSgpIGNvbnN0Cit7CisgICAgQVNTRVJUKCFpc0hvc3RGdW5jdGlvbk5vbklu
bGluZSgpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8RnVuY3Rpb25FeGVjdXRhYmxlKj4obV9l
eGVjdXRhYmxlLmdldCgpKTsKK30KKworaW5saW5lIGJvb2wgSlNGdW5jdGlvbjo6aXNIb3N0RnVu
Y3Rpb24oKSBjb25zdAoreworICAgIEFTU0VSVChtX2V4ZWN1dGFibGUpOworICAgIHJldHVybiBt
X2V4ZWN1dGFibGUtPmlzSG9zdEZ1bmN0aW9uKCk7Cit9CisKK2lubGluZSBOYXRpdmVGdW5jdGlv
biBKU0Z1bmN0aW9uOjpuYXRpdmVGdW5jdGlvbigpCit7CisgICAgQVNTRVJUKGlzSG9zdEZ1bmN0
aW9uKCkpOworICAgIHJldHVybiBzdGF0aWNfY2FzdDxOYXRpdmVFeGVjdXRhYmxlKj4obV9leGVj
dXRhYmxlLmdldCgpKS0+ZnVuY3Rpb24oKTsKK30KKworaW5saW5lIE5hdGl2ZUZ1bmN0aW9uIEpT
RnVuY3Rpb246Om5hdGl2ZUNvbnN0cnVjdG9yKCkKK3sKKyAgICBBU1NFUlQoaXNIb3N0RnVuY3Rp
b24oKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PE5hdGl2ZUV4ZWN1dGFibGUqPihtX2V4ZWN1
dGFibGUuZ2V0KCkpLT5jb25zdHJ1Y3RvcigpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKKwor
I2VuZGlmIC8vIEpTRnVuY3Rpb25JbmxpbmVzX2gKKwpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAkocmV2aXNpb24gMTUwNzgxKQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvT3BlcmF0aW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2
ICsyNSw3IEBACiAjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkludGVy
cHJldGVyLmgiCiAjaW5jbHVkZSAiSlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0Z1
bmN0aW9uSW5saW5lcy5oIgogI2luY2x1ZGUgIkpTUHJveHkuaCIKICNpbmNsdWRlICJKU1N0cmlu
Zy5oIgogI2luY2x1ZGUgIlN0cnVjdHVyZUlubGluZXMuaCIKSW5kZXg6IFNvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlz
aW9uIDE1MDc4NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE4IEBACisyMDEzLTA1LTI3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5j
b20+CisKKyAgICAgICAgdGVzdFJ1bm5lciBzaG91bGQgYmUgYWJsZSB0byB0ZWxsIHlvdSBpZiBh
IGZ1bmN0aW9uIGlzIERGRyBjb21waWxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTE2ODQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgQmFpbCBlYXJseSBpZiB3ZSdyZSBpbiB0aGUgY29tcGlsYXRpb24g
dGhyZWFkLiBUaGlzIGlzIG9ubHkgcmVsZXZhbnQgZm9yCisJZGVidWcgZHVtcHMuCisKKyAgICAg
ICAgTm8gbmV3IHRlc3RzIGJlY2FzZSBubyBuZXcgYmVoYXZpb3IuCisKKyAgICAgICAgKiBsb2Fk
ZXIvY2FjaGUvQ2FjaGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNhY2hlZFNjcmlw
dDo6c2NyaXB0KToKKwogMjAxMy0wNS0yNSAgTWFyayBMYW0gIDxtYXJrLmxhbUBhcHBsZS5jb20+
CiAKICAgICAgICAgUmVtb3ZlIEludGVycHJldGVyOjpyZXRyaWV2ZUxhc3RDYWxsZXIoKS4KSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCShyZXZp
c2lvbiAxNTA3ODEpCisrKyBTb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkU2NyaXB0
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAsNiArNzAsMTEgQEAgU3RyaW5nIENhY2hlZFNjcmlw
dDo6bWltZVR5cGUoKSBjb25zdAogCiBjb25zdCBTdHJpbmcmIENhY2hlZFNjcmlwdDo6c2NyaXB0
KCkKIHsKKyAgICBpZiAoaXNDb21waWxhdGlvblRocmVhZCgpKSB7CisgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKG1fc2NyaXB0KTsKKyAgICAgICAgcmV0dXJuIG1fc2NyaXB0OworICAgIH0KKyAgICAK
ICAgICBBU1NFUlQoIWlzUHVyZ2VhYmxlKCkpOwogCiAgICAgaWYgKCFtX3NjcmlwdCAmJiBtX2Rh
dGEpIHsKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDE1MDc4NSkKKysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDE0IEBACisyMDEzLTA1LTI3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5j
b20+CisKKyAgICAgICAgdGVzdFJ1bm5lciBzaG91bGQgYmUgYWJsZSB0byB0ZWxsIHlvdSBpZiBh
IGZ1bmN0aW9uIGlzIERGRyBjb21waWxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTE2ODQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcDoKKyAgICAg
ICAgKG51bWJlck9mREZHQ29tcGlsZXMpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6c3RhdGljRnVu
Y3Rpb25zKToKKwogMjAxMy0wNS0yMSAgRmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgog
CiAgICAgICAgIGZvdXJ0aFRpZXI6IGRpc3BsYXktcHJvZmlsZXItb3V0cHV0IHNob3VsZCBtYWtl
IGl0IGV2ZW4gZWFzaWVyIHRvIGRpZmYgdGhlIGNvbXBpbGF0aW9uIHN0b3J5IGJldHdlZW4gdHdv
IGRpZmZlcmVudCBydW5zCkluZGV4OiBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBUb29scy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAkocmV2
aXNpb24gMTUwNzgxKQorKysgVG9vbHMvRHVtcFJlbmRlclRyZWUvVGVzdFJ1bm5lci5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTMyLDEwICszMiwxMSBAQAogCiAjaW5jbHVkZSAiV29ya1F1ZXVlLmgi
CiAjaW5jbHVkZSAiV29ya1F1ZXVlSXRlbS5oIgotI2luY2x1ZGUgPGNzdHJpbmc+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvSlNDb250ZXh0UmVmLmg+CisjaW5jbHVkZSA8SmF2YVNjcmlwdENv
cmUvSlNDVGVzdFJ1bm5lclV0aWxzLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNPYmpl
Y3RSZWYuaD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU1JldGFpblB0ci5oPgorI2luY2x1
ZGUgPGNzdHJpbmc+CiAjaW5jbHVkZSA8bG9jYWxlLmg+CiAjaW5jbHVkZSA8c3RkaW8uaD4KICNp
bmNsdWRlIDx3dGYvQXNzZXJ0aW9ucy5oPgpAQCAtMTk1NSw2ICsxOTU2LDE0IEBAIHN0YXRpYyBK
U1ZhbHVlUmVmIHNpbXVsYXRlV2ViTm90aWZpY2F0aW8KICAgICByZXR1cm4gSlNWYWx1ZU1ha2VV
bmRlZmluZWQoY29udGV4dCk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlUmVmIG51bWJlck9mREZHQ29t
cGlsZXMoSlNDb250ZXh0UmVmIGNvbnRleHQsIEpTT2JqZWN0UmVmIGZ1bmN0aW9uLCBKU09iamVj
dFJlZiB0aGlzT2JqZWN0LCBzaXplX3QgYXJndW1lbnRDb3VudCwgY29uc3QgSlNWYWx1ZVJlZiBh
cmd1bWVudHNbXSwgSlNWYWx1ZVJlZiogZXhjZXB0aW9uKQoreworICAgIGlmIChhcmd1bWVudENv
dW50IDwgMSkKKyAgICAgICAgcmV0dXJuIEpTVmFsdWVNYWtlVW5kZWZpbmVkKGNvbnRleHQpOwor
ICAgIAorICAgIHJldHVybiBKU0M6Om51bWJlck9mREZHQ29tcGlsZXMoY29udGV4dCwgYXJndW1l
bnRzWzBdKTsKK30KKwogc3RhdGljIHZvaWQgdGVzdFJ1bm5lck9iamVjdEZpbmFsaXplKEpTT2Jq
ZWN0UmVmIG9iamVjdCkKIHsKICAgICBUZXN0UnVubmVyKiBjb250cm9sbGVyID0gc3RhdGljX2Nh
c3Q8VGVzdFJ1bm5lcio+KEpTT2JqZWN0R2V0UHJpdmF0ZShvYmplY3QpKTsKQEAgLTIxNTUsNiAr
MjE2NCw3IEBAIEpTU3RhdGljRnVuY3Rpb24qIFRlc3RSdW5uZXI6OnN0YXRpY0Z1bmMKICAgICAg
ICAgeyAiZGVueVdlYk5vdGlmaWNhdGlvblBlcm1pc3Npb24iLCBkZW55V2ViTm90aWZpY2F0aW9u
UGVybWlzc2lvbkNhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJv
cGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAgICAgIHsgInJlbW92ZUFsbFdlYk5vdGlm
aWNhdGlvblBlcm1pc3Npb25zIiwgcmVtb3ZlQWxsV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbnND
YWxsYmFjaywga0pTUHJvcGVydHlBdHRyaWJ1dGVSZWFkT25seSB8IGtKU1Byb3BlcnR5QXR0cmli
dXRlRG9udERlbGV0ZSB9LAogICAgICAgICB7ICJzaW11bGF0ZVdlYk5vdGlmaWNhdGlvbkNsaWNr
Iiwgc2ltdWxhdGVXZWJOb3RpZmljYXRpb25DbGlja0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0dHJp
YnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCisgICAgICAg
IHsgIm51bWJlck9mREZHQ29tcGlsZXMiLCBudW1iZXJPZkRGR0NvbXBpbGVzLCBrSlNQcm9wZXJ0
eUF0dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAg
ICAgICAgIHsgMCwgMCwgMCB9CiAgICAgfTsKIApJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTUwNzg1KQor
KysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTIgQEAK
KzIwMTMtMDUtMjcgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICB0
ZXN0UnVubmVyIHNob3VsZCBiZSBhYmxlIHRvIHRlbGwgeW91IGlmIGEgZnVuY3Rpb24gaXMgREZH
IGNvbXBpbGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMTY4NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICAqIGZhc3QvanMvc2NyaXB0LXRlc3RzL2RmZy1taW4tbWF4LmpzOgorCiAyMDEzLTA1LTI3ICBG
aWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgZm91cnRoVGllcjogREZH
IEFyaXRoTW9kIHNob3VsZCBoYXZlIHRoZSAhbm9kZVVzZWRBc051bWJlciBvcHRpbWl6YXRpb25z
IHRoYXQgQXJpdGhEaXYgaGFzCkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0
cy9kZmctbWluLW1heC5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pzL3Njcmlw
dC10ZXN0cy9kZmctbWluLW1heC5qcwkocmV2aXNpb24gMTUwNzgxKQorKysgTGF5b3V0VGVzdHMv
ZmFzdC9qcy9zY3JpcHQtdGVzdHMvZGZnLW1pbi1tYXguanMJKHdvcmtpbmcgY29weSkKQEAgLTEw
LDcgKzEwLDcgQEAgZnVuY3Rpb24gZG9NYXgoYSwgYikgewogICAgIHJldHVybiBNYXRoLm1heChh
LCBiKTsKIH0KIAotZm9yICh2YXIgaSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKK3doaWxlICghdGVz
dFJ1bm5lci5udW1iZXJPZkRGR0NvbXBpbGVzKGRvTWluKSB8fCAhdGVzdFJ1bm5lci5udW1iZXJP
ZkRGR0NvbXBpbGVzKGRvTWF4KSkgewogICAgIGRvTWluKDEuNSwgMi41KTsKICAgICBkb01heCgx
LjUsIDIuNSk7CiB9Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>203062</attachid>
            <date>2013-05-28 09:31:02 -0700</date>
            <delta_ts>2013-05-28 09:41:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-116847-20130528092941.patch</filename>
            <type>text/plain</type>
            <size>26965</size>
            <attacher name="Filip Pizlo">fpizlo</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTUwNzg1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM0IEBA
CisyMDEzLTA1LTI3ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CisKKyAgICAgICAg
dGVzdFJ1bm5lciBzaG91bGQgYmUgYWJsZSB0byB0ZWxsIHlvdSBpZiBhIGZ1bmN0aW9uIGlzIERG
RyBjb21waWxlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTE2ODQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgKiBBUEkvSlNDVGVzdFJ1bm5lclV0aWxzLmNwcDogQWRkZWQuCisgICAgICAgIChKU0MpOgor
ICAgICAgICAoSlNDOjpudW1iZXJPZkRGR0NvbXBpbGVzKToKKyAgICAgICAgKiBBUEkvSlNDVGVz
dFJ1bm5lclV0aWxzLmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBKYXZhU2Ny
aXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGJ5dGVjb2RlL0Nv
ZGVCbG9jay5jcHA6CisgICAgICAgIChKU0M6OkNvZGVCbG9jazo6bnVtYmVyT2ZERkdDb21waWxl
cyk6CisgICAgICAgIChKU0MpOgorICAgICAgICAqIGJ5dGVjb2RlL0NvZGVCbG9jay5oOgorICAg
ICAgICAoQ29kZUJsb2NrKToKKyAgICAgICAgKiBkZmcvREZHV29ya2xpc3QuY3BwOgorICAgICAg
ICAoSlNDOjpERkc6OldvcmtsaXN0OjpydW5UaHJlYWQpOgorICAgICAgICAqIHJ1bnRpbWUvRXhl
Y3V0YWJsZS5oOgorICAgICAgICAoSlNDKToKKyAgICAgICAgKiBydW50aW1lL0pTRnVuY3Rpb25J
bmxpbmVzLmg6IEFkZGVkLgorICAgICAgICAoSlNDKToKKyAgICAgICAgKEpTQzo6SlNGdW5jdGlv
bjo6SlNGdW5jdGlvbik6CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmpzRXhlY3V0YWJsZSk6
CisgICAgICAgIChKU0M6OkpTRnVuY3Rpb246OmlzSG9zdEZ1bmN0aW9uKToKKyAgICAgICAgKEpT
Qzo6SlNGdW5jdGlvbjo6bmF0aXZlRnVuY3Rpb24pOgorICAgICAgICAoSlNDOjpKU0Z1bmN0aW9u
OjpuYXRpdmVDb25zdHJ1Y3Rvcik6CisgICAgICAgICogcnVudGltZS9PcGVyYXRpb25zLmg6CisK
IDIwMTMtMDUtMjcgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBm
b3VydGhUaWVyOiBERkcgQXJpdGhNb2Qgc2hvdWxkIGhhdmUgdGhlICFub2RlVXNlZEFzTnVtYmVy
IG9wdGltaXphdGlvbnMgdGhhdCBBcml0aERpdiBoYXMKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9BUEkvSlNDVGVzdFJ1bm5lclV0aWxzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQVBJL0pTQ1Rlc3RSdW5uZXJVdGlscy5jcHAJKHJldmlzaW9uIDApCisrKyBT
b3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ1Rlc3RSdW5uZXJVdGlscy5jcHAJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMgQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTQ1Rlc3RSdW5uZXJV
dGlscy5oIgorCisjaW5jbHVkZSAiQVBJQ2FzdC5oIgorI2luY2x1ZGUgIkNvZGVCbG9jay5oIgor
I2luY2x1ZGUgIk9wZXJhdGlvbnMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK0pTVmFsdWVSZWYg
bnVtYmVyT2ZERkdDb21waWxlcyhKU0NvbnRleHRSZWYgY29udGV4dCwgSlNWYWx1ZVJlZiB0aGVG
dW5jdGlvblZhbHVlUmVmKQoreworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IHRvSlMoY29udGV4dCk7
CisgICAgSlNWYWx1ZSB0aGVGdW5jdGlvblZhbHVlID0gdG9KUyhleGVjLCB0aGVGdW5jdGlvblZh
bHVlUmVmKTsKKyAgICAKKyAgICBKU0Z1bmN0aW9uKiB0aGVGdW5jdGlvbiA9IGpzRHluYW1pY0Nh
c3Q8SlNGdW5jdGlvbio+KHRoZUZ1bmN0aW9uVmFsdWUpOworICAgIGlmICghdGhlRnVuY3Rpb24p
CisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKKyAgICAKKyAg
ICBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUgPSBqc0R5bmFtaWNDYXN0PEZ1bmN0aW9u
RXhlY3V0YWJsZSo+KAorICAgICAgICB0aGVGdW5jdGlvbi0+ZXhlY3V0YWJsZSgpKTsKKyAgICBp
ZiAoIWV4ZWN1dGFibGUpCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250
ZXh0KTsKKyAgICAKKyAgICBDb2RlQmxvY2sqIGJhc2VsaW5lQ29kZUJsb2NrID0gZXhlY3V0YWJs
ZS0+YmFzZWxpbmVDb2RlQmxvY2tGb3IoQ29kZUZvckNhbGwpOworICAgIAorICAgIGlmICghYmFz
ZWxpbmVDb2RlQmxvY2spCisgICAgICAgIHJldHVybiBKU1ZhbHVlTWFrZU51bWJlcihjb250ZXh0
LCAwKTsKKyAgICAKKyAgICByZXR1cm4gSlNWYWx1ZU1ha2VOdW1iZXIoY29udGV4dCwgYmFzZWxp
bmVDb2RlQmxvY2stPm51bWJlck9mREZHQ29tcGlsZXMoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQworCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ1Rlc3RSdW5uZXJVdGls
cy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9BUEkvSlNDVGVzdFJ1bm5l
clV0aWxzLmgJKHJldmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQVBJL0pTQ1Rl
c3RSdW5uZXJVdGlscy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDM4IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgSlNDVGVzdFJ1bm5l
clV0aWxzX2gKKyNkZWZpbmUgSlNDVGVzdFJ1bm5lclV0aWxzX2gKKworI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTQ29udGV4dFJlZi5oPgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTVmFs
dWVSZWYuaD4KKworbmFtZXNwYWNlIEpTQyB7CisKK0pTX0VYUE9SVF9QUklWQVRFIEpTVmFsdWVS
ZWYgbnVtYmVyT2ZERkdDb21waWxlcyhKU0NvbnRleHRSZWYsIEpTVmFsdWVSZWYgdGhlRnVuY3Rp
b24pOworCit9IC8vIG5hbWVzcGFjZSBKU0MKKworI2VuZGlmIC8vIEpTQ1Rlc3RSdW5uZXJVdGls
c19oCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9q
L3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2
YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMTUwNzgxKQor
KysgU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTExNiw2ICsxMTYsNyBAQAogCQkwRjIzNUJFQzE3
MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdEJhc2UuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjM1QkU4MTcxNzhFNzMwMDY5MEM3RiAvKiBERkdP
U1JFeGl0QmFzZS5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCTBGMjM1QkVEMTcxNzhFNzMwMDY5MEM3RiAvKiBERkdPU1JFeGl0UHJlcGFyYXRpb24u
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyMzVC
RTkxNzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRQcmVwYXJhdGlvbi5jcHAgKi87IH07CiAJ
CTBGMjM1QkVFMTcxNzhFNzMwMDY5MEM3RiAvKiBERkdPU1JFeGl0UHJlcGFyYXRpb24uaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGMjM1QkVBMTcxNzhF
NzMwMDY5MEM3RiAvKiBERkdPU1JFeGl0UHJlcGFyYXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwRjIzQkE5NTE3NTQxREJDMDBDNDhDRkUg
LyogSlNGdW5jdGlvbklubGluZXMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDBGMjNCQTk0MTc1NDFEQkMwMEM0OENGRSAvKiBKU0Z1bmN0aW9uSW5saW5l
cy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBG
MjQyREE3MTNGM0IxRTgwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNlSGFydmVzdGVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjI0MkRBNTEzRjNCMUJC
MDA3QURENEMgLyogV2Vha1JlZmVyZW5jZUhhcnZlc3Rlci5oICovOyBzZXR0aW5ncyA9IHtBVFRS
SUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGMjU2QzM2MTYyN0IwQUQwMDdGMjc4MyAv
KiBERkdDYWxsQXJyYXlBbGxvY2F0b3JTbG93UGF0aEdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMEYyNTZDMzQxNjI3QjBBQTAwN0YyNzgz
IC8qIERGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMEYyQkRDMTUxNTFDNUQ0RDAw
Q0Q4OTEwIC8qIERGR0ZpeHVwUGhhc2UuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMEYyQkRDMTIxNTFDNUQ0QTAwQ0Q4OTEwIC8qIERGR0ZpeHVwUGhh
c2UuY3BwICovOyB9OwpAQCAtMTc4LDYgKzE3OSw4IEBACiAJCTBGNTZBMUQzMTUwMDBGMzUwMDI5
OTJCMSAvKiBFeGVjdXRpb25Db3VudGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAwRjU2QTFEMTE1MDAwRjMxMDAyOTkyQjEgLyogRXhlY3V0aW9uQ291
bnRlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CTBGNTZBMUQ1MTUwMDFDRjQwMDI5OTJCMSAvKiBFeGVjdXRpb25Db3VudGVyLmNwcCBpbiBTb3Vy
Y2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNTZBMUQ0MTUwMDFDRjIw
MDI5OTJCMSAvKiBFeGVjdXRpb25Db3VudGVyLmNwcCAqLzsgfTsKIAkJMEY1NzJENEYxNjg3OUZE
RDAwRTU3RkJEIC8qIFRodW5rR2VuZXJhdG9yLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwRjU3MkQ0RDE2ODc5RkRCMDBFNTdGQkQgLyogVGh1bmtHZW5l
cmF0b3IuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9Owor
CQkwRjVFRTRFODE3NTQyNEFGMDA5QUU0MkQgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDBGNUVFNEU2MTc1NDI0
QUYwMDlBRTQyRCAvKiBKU0NUZXN0UnVubmVyVXRpbHMuY3BwICovOyB9OworCQkwRjVFRTRFOTE3
NTQyNEFGMDA5QUU0MkQgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVFRTRFNzE3NTQyNEFGMDA5QUU0MkQgLyog
SlNDVGVzdFJ1bm5lclV0aWxzLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJMEY1RUY5MUUxNjg3OEY3QTAwM0U1QzI1IC8qIEpJVFRodW5rcy5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVFRjkxQjE2
ODc4Rjc4MDAzRTVDMjUgLyogSklUVGh1bmtzLmNwcCAqLzsgfTsKIAkJMEY1RUY5MUYxNjg3OEY3
RDAwM0U1QzI1IC8qIEpJVFRodW5rcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gMEY1RUY5MUMxNjg3OEY3ODAwM0U1QzI1IC8qIEpJVFRodW5rcy5oICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTBGNUYwOENG
MTQ2Qzc2MzMwMDA0NzJBOSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwRjVGMDhDRTE0NkM3NjJGMDAwNDcy
QTkgLyogVW5jb25kaXRpb25hbEZpbmFsaXplci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CkBAIC0xMTEzLDYgKzExMTYsNyBAQAogCQkwRjIzNUJFODE3
MTc4RTczMDA2OTBDN0YgLyogREZHT1NSRXhpdEJhc2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBuYW1lID0gREZHT1NSRXhpdEJhc2UuaDsgcGF0aCA9IGRmZy9ERkdPU1JFeGl0QmFzZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjIzNUJFOTE3MTc4RTczMDA2OTBDN0Yg
LyogREZHT1NSRXhpdFByZXBhcmF0aW9uLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgbmFtZSA9IERGR09TUkV4aXRQcmVwYXJhdGlvbi5jcHA7IHBhdGggPSBkZmcvREZHT1NSRXhp
dFByZXBhcmF0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyMzVCRUEx
NzE3OEU3MzAwNjkwQzdGIC8qIERGR09TUkV4aXRQcmVwYXJhdGlvbi5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IG5hbWUgPSBERkdPU1JFeGl0UHJlcGFyYXRpb24uaDsgcGF0aCA9IGRmZy9E
RkdPU1JFeGl0UHJlcGFyYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMEYy
M0JBOTQxNzU0MURCQzAwQzQ4Q0ZFIC8qIEpTRnVuY3Rpb25JbmxpbmVzLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRnVuY3Rpb25JbmxpbmVzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCTBGMjQyREE1MTNGM0IxQkIwMDdBREQ0QyAvKiBXZWFrUmVmZXJlbmNl
SGFydmVzdGVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYWtSZWZlcmVu
Y2VIYXJ2ZXN0ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyNTZDMzQxNjI3
QjBBQTAwN0YyNzgzIC8qIERGR0NhbGxBcnJheUFsbG9jYXRvclNsb3dQYXRoR2VuZXJhdG9yLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgbmFtZSA9IERGR0NhbGxBcnJheUFsbG9jYXRvclNs
b3dQYXRoR2VuZXJhdG9yLmg7IHBhdGggPSBkZmcvREZHQ2FsbEFycmF5QWxsb2NhdG9yU2xvd1Bh
dGhHZW5lcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMEYyQkRDMTIxNTFD
NUQ0QTAwQ0Q4OTEwIC8qIERGR0ZpeHVwUGhhc2UuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBuYW1lID0gREZHRml4dXBQaGFzZS5jcHA7IHBhdGggPSBkZmcvREZHRml4dXBQaGFz
ZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTc0LDYgKzExNzgsOCBAQAog
CQkwRjU2QTFEMTE1MDAwRjMxMDAyOTkyQjEgLyogRXhlY3V0aW9uQ291bnRlci5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBFeGVjdXRpb25Db3VudGVyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCTBGNTZBMUQ0MTUwMDFDRjIwMDI5OTJCMSAvKiBFeGVjdXRpb25D
b3VudGVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEV4ZWN1dGlv
bkNvdW50ZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjU3MkQ0RDE2ODc5
RkRCMDBFNTdGQkQgLyogVGh1bmtHZW5lcmF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gVGh1bmtHZW5lcmF0b3IuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJ
MEY1RUU0RTYxNzU0MjRBRjAwOUFFNDJEIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0NUZXN0UnVubmVyVXRpbHMuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwRjVFRTRFNzE3NTQyNEFGMDA5QUU0MkQgLyog
SlNDVGVzdFJ1bm5lclV0aWxzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
Q1Rlc3RSdW5uZXJVdGlscy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwRjVFRjkx
QjE2ODc4Rjc4MDAzRTVDMjUgLyogSklUVGh1bmtzLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpJVFRodW5rcy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07
CiAJCTBGNUVGOTFDMTY4NzhGNzgwMDNFNUMyNSAvKiBKSVRUaHVua3MuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSklUVGh1bmtzLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTBGNUYwOENFMTQ2Qzc2MkYwMDA0NzJBOSAvKiBVbmNvbmRpdGlvbmFsRmluYWxpemVy
LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFVuY29uZGl0aW9uYWxGaW5hbGl6
ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0MjYsNiArMjQzMiw4IEBACiAJ
CQkJMUNBQThCNEIwRDMyQzM5QTAwNDFCQ0ZGIC8qIEphdmFTY3JpcHRDb3JlLmggKi8sCiAJCQkJ
QkMwODk0RDUwRkFGQkEyRDAwMDAxODY1IC8qIEpTQVBJVmFsdWVXcmFwcGVyLmNwcCAqLywKIAkJ
CQlCQzA4OTRENjBGQUZCQTJEMDAwMDE4NjUgLyogSlNBUElWYWx1ZVdyYXBwZXIuaCAqLywKKwkJ
CQlDMkNGMzlCRjE2RTE1QTgxMDBERDY5QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0LmNwcCAqLywK
KwkJCQlDMkNGMzlDMDE2RTE1QTgxMDBERDY5QkUgLyogSlNBUElXcmFwcGVyT2JqZWN0LmggKi8s
CiAJCQkJMTQyMTM1OUEwQTY3N0Y0RjAwQTgxOTVFIC8qIEpTQmFzZS5jcHAgKi8sCiAJCQkJMTQy
NzExMzgwQTQ2MEJCQjAwODBFRUVBIC8qIEpTQmFzZS5oICovLAogCQkJCTE0MEQxN0Q2MEU4QUQ0
QTkwMDBDRDE3RCAvKiBKU0Jhc2VQcml2YXRlLmggKi8sCkBAIC0yNDQ0LDcgKzI0NTIsMTEgQEAK
IAkJCQkxNEJENUEyOTBBM0U5MUY2MDBCQUY1OUMgLyogSlNDb250ZXh0UmVmLmNwcCAqLywKIAkJ
CQkxNEJENUEyQTBBM0U5MUY2MDBCQUY1OUMgLyogSlNDb250ZXh0UmVmLmggKi8sCiAJCQkJMTQ4
Q0QxRDcxMDhDRjkwMjAwODE2M0M2IC8qIEpTQ29udGV4dFJlZlByaXZhdGUuaCAqLywKKwkJCQkw
RjVFRTRFNjE3NTQyNEFGMDA5QUU0MkQgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmNwcCAqLywKKwkJ
CQkwRjVFRTRFNzE3NTQyNEFGMDA5QUU0MkQgLyogSlNDVGVzdFJ1bm5lclV0aWxzLmggKi8sCiAJ
CQkJODZFM0M2MEExNjdCQUI4NzAwNkQ3NjBBIC8qIEpTRXhwb3J0LmggKi8sCisJCQkJQzI1RDcw
OUExNkRFOTlGNDAwRkNBNkJDIC8qIEpTTWFuYWdlZFZhbHVlLmggKi8sCisJCQkJQzI1RDcwOTkx
NkRFOTlGNDAwRkNBNkJDIC8qIEpTTWFuYWdlZFZhbHVlLm1tICovLAogCQkJCTE0ODJCN0UyMEE0
MzA3NjAwMDUxN0NGQyAvKiBKU09iamVjdFJlZi5jcHAgKi8sCiAJCQkJMTQ4MkI3RTEwQTQzMDc2
MDAwNTE3Q0ZDIC8qIEpTT2JqZWN0UmVmLmggKi8sCiAJCQkJQTc5RURCMDgxMTUzMUNENjAwMTlF
OTEyIC8qIEpTT2JqZWN0UmVmUHJpdmF0ZS5oICovLApAQCAtMjQ3NiwxMCArMjQ4OCw2IEBACiAJ
CQkJRTEyNEE4RjYwRTU1NTc3NTAwMzA5MUYxIC8qIE9wYXF1ZUpTU3RyaW5nLmNwcCAqLywKIAkJ
CQlFMTI0QThGNTBFNTU1Nzc1MDAzMDkxRjEgLyogT3BhcXVlSlNTdHJpbmcuaCAqLywKIAkJCQk1
REUzRDBGNDBERDhEREZCMDA0Njg3MTQgLyogV2ViS2l0QXZhaWxhYmlsaXR5LmggKi8sCi0JCQkJ
QzI1RDcwOTkxNkRFOTlGNDAwRkNBNkJDIC8qIEpTTWFuYWdlZFZhbHVlLm1tICovLAotCQkJCUMy
NUQ3MDlBMTZERTk5RjQwMEZDQTZCQyAvKiBKU01hbmFnZWRWYWx1ZS5oICovLAotCQkJCUMyQ0Yz
OUJGMTZFMTVBODEwMERENjlCRSAvKiBKU0FQSVdyYXBwZXJPYmplY3QuY3BwICovLAotCQkJCUMy
Q0YzOUMwMTZFMTVBODEwMERENjlCRSAvKiBKU0FQSVdyYXBwZXJPYmplY3QuaCAqLywKIAkJCSk7
CiAJCQlwYXRoID0gQVBJOwogCQkJc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsKQEAgLTI3MDYsNiAr
MjcxNCw3IEBACiAJCQkJQTdCNEFDQUUxNDg0QzlDRTAwQjM4QTM2IC8qIEpTRXhwb3J0TWFjcm9z
LmggKi8sCiAJCQkJRjY5MkE4NUUwMjU1NTk3RDAxRkY2MEY3IC8qIEpTRnVuY3Rpb24uY3BwICov
LAogCQkJCUY2OTJBODVGMDI1NTU5N0QwMUZGNjBGNyAvKiBKU0Z1bmN0aW9uLmggKi8sCisJCQkJ
MEYyM0JBOTQxNzU0MURCQzAwQzQ4Q0ZFIC8qIEpTRnVuY3Rpb25JbmxpbmVzLmggKi8sCiAJCQkJ
MTRERTBENjgwRDAyNDMxNDAwQUFDQ0EyIC8qIEpTR2xvYmFsT2JqZWN0LmNwcCAqLywKIAkJCQlB
OEU4OTQzMzBDRDA2MDNGMDAzNjcxNzkgLyogSlNHbG9iYWxPYmplY3QuaCAqLywKIAkJCQlCQzc1
NkZDNjBFMjAzMUIyMDBERTdEMTIgLyogSlNHbG9iYWxPYmplY3RGdW5jdGlvbnMuY3BwICovLApA
QCAtMzU0NSw2ICszNTU0LDcgQEAKIAkJCQlGRUQyODdCMjE1RUM5QTU3MDBEQTgxNjEgLyogTExJ
bnRPcGNvZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNDY4MEE1MTRCQTdGOEQwMEJGRTI3MiAv
KiBMTEludFNsb3dQYXRocy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYwQjgzOUQxNEJDRjQ2NjAw
ODg1QjRGIC8qIExMSW50VGh1bmtzLmggaW4gSGVhZGVycyAqLywKKwkJCQkwRjIzQkE5NTE3NTQx
REJDMDBDNDhDRkUgLyogSlNGdW5jdGlvbklubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCTE0
MkUzMTM5MTM0RkYwQTYwMEFGQURCNSAvKiBMb2NhbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQy
RTMxM0ExMzRGRjBBNjAwQUZBREI1IC8qIExvY2FsU2NvcGUuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUJDMThDNDM3MEUxNkY1Q0QwMEIzNDQ2MCAvKiBMb29rdXAuaCBpbiBIZWFkZXJzICovLApAQCAt
Mzc1OCw2ICszNzY4LDcgQEAKIAkJCQkwRkNDQUU0NTE2RDBDRjc0MDBEMEM2NUIgLyogUGFyc2Vy
RXJyb3IuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGNzE0Q0E1MTZFQTkyRjIwMEYzRUJFQiAvKiBE
RkdCYWNrd2FyZHNQcm9wYWdhdGlvblBoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjEzNkQ0
RDE3NEFENjlFMDA3NUIzNTQgLyogRGVmZXJHQy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMEY1RUU0
RTkxNzU0MjRBRjAwOUFFNDJEIC8qIEpTQ1Rlc3RSdW5uZXJVdGlscy5oIGluIEhlYWRlcnMgKi8s
CiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJCX07
CkBAIC00NDQzLDYgKzQ0NTQsNyBAQAogCQkJCTBGNDkzQUZBMTZEMENBRDMwMDg0NTA4QiAvKiBT
b3VyY2VQcm92aWRlci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBREUzOUZGRjE2REQxNDRCMDAw
M0NENEEgLyogUHJvcGVydHlUYWJsZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjcxNENBNDE2
RUE5MkYwMDBGM0VCRUIgLyogREZHQmFja3dhcmRzUHJvcGFnYXRpb25QaGFzZS5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQkwRjVFRTRFODE3NTQyNEFGMDA5QUU0MkQgLyogSlNDVGVzdFJ1bm5lclV0
aWxzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9z
dHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2J5dGVj
b2RlL0NvZGVCbG9jay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2J5
dGVjb2RlL0NvZGVCbG9jay5jcHAJKHJldmlzaW9uIDE1MDc4MSkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMDE3LDYg
KzMwMTcsMTIgQEAgdm9pZCBDb2RlQmxvY2s6OmNvdW50UmVvcHRpbWl6YXRpb24oKQogICAgICAg
ICBtX3Jlb3B0aW1pemF0aW9uUmV0cnlDb3VudGVyID0gT3B0aW9uczo6cmVvcHRpbWl6YXRpb25S
ZXRyeUNvdW50ZXJNYXgoKTsKIH0KIAordW5zaWduZWQgQ29kZUJsb2NrOjpudW1iZXJPZkRGR0Nv
bXBpbGVzKCkKK3sKKyAgICBBU1NFUlQoSklUQ29kZTo6aXNCYXNlbGluZUNvZGUoaml0VHlwZSgp
KSk7CisgICAgcmV0dXJuIChKSVRDb2RlOjppc09wdGltaXppbmdKSVQocmVwbGFjZW1lbnQoKS0+
aml0VHlwZSgpKSA/IDEgOiAwKSArIG1fcmVvcHRpbWl6YXRpb25SZXRyeUNvdW50ZXI7Cit9CisK
IGludDMyX3QgQ29kZUJsb2NrOjpjb2RlVHlwZVRocmVzaG9sZE11bHRpcGxpZXIoKSBjb25zdAog
ewogICAgIGlmIChjb2RlVHlwZSgpID09IEV2YWxDb2RlKQpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ieXRlY29kZS9Db2RlQmxvY2suaAkocmV2aXNpb24gMTUwNzgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL2J5dGVjb2RlL0NvZGVCbG9jay5oCSh3b3JraW5nIGNvcHkpCkBAIC03
NjYsNiArNzY2LDggQEAgcHVibGljOgogICAgIC8vIHRvIGF2b2lkIHRocmFzaGluZy4KICAgICB1
bnNpZ25lZCByZW9wdGltaXphdGlvblJldHJ5Q291bnRlcigpIGNvbnN0OwogICAgIHZvaWQgY291
bnRSZW9wdGltaXphdGlvbigpOworICAgIAorICAgIHVuc2lnbmVkIG51bWJlck9mREZHQ29tcGls
ZXMoKTsKIAogICAgIGludDMyX3QgY29kZVR5cGVUaHJlc2hvbGRNdWx0aXBsaWVyKCkgY29uc3Q7
CiAgICAgICAgIApJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdXb3JrbGlzdC5j
cHAJKHJldmlzaW9uIDE1MDc4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHV29y
a2xpc3QuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMTEsNiArMjExLDggQEAgdm9pZCBXb3JrbGlz
dDo6ZHVtcChjb25zdCBNdXRleExvY2tlciYsIAogCiB2b2lkIFdvcmtsaXN0OjpydW5UaHJlYWQo
KQogeworICAgIENvbXBpbGF0aW9uU2NvcGUgY29tcGlsYXRpb25TY29wZTsKKyAgICAKICAgICBp
ZiAoT3B0aW9uczo6dmVyYm9zZUNvbXBpbGF0aW9uUXVldWUoKSkKICAgICAgICAgZGF0YUxvZygq
dGhpcywgIjogVGhyZWFkIHN0YXJ0ZWRcbiIpOwogICAgIApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0V4ZWN1dGFibGUuaAkocmV2aXNpb24gMTUwNzgxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvRXhlY3V0YWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC03
ODAsMzggKzc4MCw2IEBAIG5hbWVzcGFjZSBKU0MgewogICAgICAgICBSZWZQdHI8RnVuY3Rpb25D
b2RlQmxvY2s+IG1fY29kZUJsb2NrRm9yQ29uc3RydWN0OwogICAgIH07CiAKLSAgICBpbmxpbmUg
SlNGdW5jdGlvbjo6SlNGdW5jdGlvbihWTSYgdm0sIEZ1bmN0aW9uRXhlY3V0YWJsZSogZXhlY3V0
YWJsZSwgSlNTY29wZSogc2NvcGUpCi0gICAgICAgIDogQmFzZSh2bSwgc2NvcGUtPmdsb2JhbE9i
amVjdCgpLT5mdW5jdGlvblN0cnVjdHVyZSgpKQotICAgICAgICAsIG1fZXhlY3V0YWJsZSh2bSwg
dGhpcywgZXhlY3V0YWJsZSkKLSAgICAgICAgLCBtX3Njb3BlKHZtLCB0aGlzLCBzY29wZSkKLSAg
ICAgICAgLCBtX2FsbG9jYXRpb25Qcm9maWxlV2F0Y2hwb2ludChJbml0aWFsaXplZEJsaW5kKSAv
LyBTZWUgY29tbWVudCBpbiBKU0Z1bmN0aW9uLmNwcCBjb25jZXJuaW5nIHRoZSByZWFzb24gZm9y
IHVzaW5nIEluaXRpYWxpemVkQmxpbmQgYXMgb3Bwb3NlZCB0byBJbml0aWFsaXplZFdhdGNoaW5n
LgotICAgIHsKLSAgICB9Ci0KLSAgICBpbmxpbmUgRnVuY3Rpb25FeGVjdXRhYmxlKiBKU0Z1bmN0
aW9uOjpqc0V4ZWN1dGFibGUoKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNTRVJUKCFpc0hvc3RG
dW5jdGlvbk5vbklubGluZSgpKTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PEZ1bmN0aW9u
RXhlY3V0YWJsZSo+KG1fZXhlY3V0YWJsZS5nZXQoKSk7Ci0gICAgfQotCi0gICAgaW5saW5lIGJv
b2wgSlNGdW5jdGlvbjo6aXNIb3N0RnVuY3Rpb24oKSBjb25zdAotICAgIHsKLSAgICAgICAgQVNT
RVJUKG1fZXhlY3V0YWJsZSk7Ci0gICAgICAgIHJldHVybiBtX2V4ZWN1dGFibGUtPmlzSG9zdEZ1
bmN0aW9uKCk7Ci0gICAgfQotCi0gICAgaW5saW5lIE5hdGl2ZUZ1bmN0aW9uIEpTRnVuY3Rpb246
Om5hdGl2ZUZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIEFTU0VSVChpc0hvc3RGdW5jdGlvbigp
KTsKLSAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PE5hdGl2ZUV4ZWN1dGFibGUqPihtX2V4ZWN1
dGFibGUuZ2V0KCkpLT5mdW5jdGlvbigpOwotICAgIH0KLQotICAgIGlubGluZSBOYXRpdmVGdW5j
dGlvbiBKU0Z1bmN0aW9uOjpuYXRpdmVDb25zdHJ1Y3RvcigpCi0gICAgewotICAgICAgICBBU1NF
UlQoaXNIb3N0RnVuY3Rpb24oKSk7Ci0gICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDxOYXRpdmVF
eGVjdXRhYmxlKj4obV9leGVjdXRhYmxlLmdldCgpKS0+Y29uc3RydWN0b3IoKTsKLSAgICB9Ci0K
ICAgICBpbmxpbmUgYm9vbCBpc0hvc3RGdW5jdGlvbihKU1ZhbHVlIHZhbHVlLCBOYXRpdmVGdW5j
dGlvbiBuYXRpdmVGdW5jdGlvbikKICAgICB7CiAgICAgICAgIEpTRnVuY3Rpb24qIGZ1bmN0aW9u
ID0ganNDYXN0PEpTRnVuY3Rpb24qPihnZXRKU0Z1bmN0aW9uKHZhbHVlKSk7CkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5saW5lcy5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRnVuY3Rpb25JbmxpbmVzLmgJKHJl
dmlzaW9uIDApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Z1bmN0aW9uSW5s
aW5lcy5oCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkK
KyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJ
TiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxF
IEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1Q
TEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExP
U1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9O
KSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVU
SEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5H
IE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBV
U0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJ
VFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgSlNGdW5jdGlvbklubGluZXNfaAor
I2RlZmluZSBKU0Z1bmN0aW9uSW5saW5lc19oCisKKyNpbmNsdWRlICJFeGVjdXRhYmxlLmgiCisj
aW5jbHVkZSAiSlNGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworaW5saW5lIEpTRnVu
Y3Rpb246OkpTRnVuY3Rpb24oVk0mIHZtLCBGdW5jdGlvbkV4ZWN1dGFibGUqIGV4ZWN1dGFibGUs
IEpTU2NvcGUqIHNjb3BlKQorICAgIDogQmFzZSh2bSwgc2NvcGUtPmdsb2JhbE9iamVjdCgpLT5m
dW5jdGlvblN0cnVjdHVyZSgpKQorICAgICwgbV9leGVjdXRhYmxlKHZtLCB0aGlzLCBleGVjdXRh
YmxlKQorICAgICwgbV9zY29wZSh2bSwgdGhpcywgc2NvcGUpCisgICAgLCBtX2FsbG9jYXRpb25Q
cm9maWxlV2F0Y2hwb2ludChJbml0aWFsaXplZEJsaW5kKSAvLyBTZWUgY29tbWVudCBpbiBKU0Z1
bmN0aW9uLmNwcCBjb25jZXJuaW5nIHRoZSByZWFzb24gZm9yIHVzaW5nIEluaXRpYWxpemVkQmxp
bmQgYXMgb3Bwb3NlZCB0byBJbml0aWFsaXplZFdhdGNoaW5nLgoreworfQorCitpbmxpbmUgRnVu
Y3Rpb25FeGVjdXRhYmxlKiBKU0Z1bmN0aW9uOjpqc0V4ZWN1dGFibGUoKSBjb25zdAoreworICAg
IEFTU0VSVCghaXNIb3N0RnVuY3Rpb25Ob25JbmxpbmUoKSk7CisgICAgcmV0dXJuIHN0YXRpY19j
YXN0PEZ1bmN0aW9uRXhlY3V0YWJsZSo+KG1fZXhlY3V0YWJsZS5nZXQoKSk7Cit9CisKK2lubGlu
ZSBib29sIEpTRnVuY3Rpb246OmlzSG9zdEZ1bmN0aW9uKCkgY29uc3QKK3sKKyAgICBBU1NFUlQo
bV9leGVjdXRhYmxlKTsKKyAgICByZXR1cm4gbV9leGVjdXRhYmxlLT5pc0hvc3RGdW5jdGlvbigp
OworfQorCitpbmxpbmUgTmF0aXZlRnVuY3Rpb24gSlNGdW5jdGlvbjo6bmF0aXZlRnVuY3Rpb24o
KQoreworICAgIEFTU0VSVChpc0hvc3RGdW5jdGlvbigpKTsKKyAgICByZXR1cm4gc3RhdGljX2Nh
c3Q8TmF0aXZlRXhlY3V0YWJsZSo+KG1fZXhlY3V0YWJsZS5nZXQoKSktPmZ1bmN0aW9uKCk7Cit9
CisKK2lubGluZSBOYXRpdmVGdW5jdGlvbiBKU0Z1bmN0aW9uOjpuYXRpdmVDb25zdHJ1Y3Rvcigp
Cit7CisgICAgQVNTRVJUKGlzSG9zdEZ1bmN0aW9uKCkpOworICAgIHJldHVybiBzdGF0aWNfY2Fz
dDxOYXRpdmVFeGVjdXRhYmxlKj4obV9leGVjdXRhYmxlLmdldCgpKS0+Y29uc3RydWN0b3IoKTsK
K30KKworfSAvLyBuYW1lc3BhY2UgSlNDCisKKyNlbmRpZiAvLyBKU0Z1bmN0aW9uSW5saW5lc19o
CisKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlvbnMuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcGVyYXRpb25zLmgJKHJl
dmlzaW9uIDE1MDc4MSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wZXJhdGlv
bnMuaAkod29ya2luZyBjb3B5KQpAQCAtMjUsNiArMjUsNyBAQAogI2luY2x1ZGUgIkV4Y2VwdGlv
bkhlbHBlcnMuaCIKICNpbmNsdWRlICJJbnRlcnByZXRlci5oIgogI2luY2x1ZGUgIkpTQ0pTVmFs
dWVJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJK
U1Byb3h5LmgiCiAjaW5jbHVkZSAiSlNTdHJpbmcuaCIKICNpbmNsdWRlICJTdHJ1Y3R1cmVJbmxp
bmVzLmgiCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTA3ODUpCisrKyBTb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAxMy0wNS0yNyAg
RmlsaXAgUGl6bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIHRlc3RSdW5uZXIgc2hv
dWxkIGJlIGFibGUgdG8gdGVsbCB5b3UgaWYgYSBmdW5jdGlvbiBpcyBERkcgY29tcGlsZWQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjg0NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJhaWwgZWFybHkg
aWYgd2UncmUgaW4gdGhlIGNvbXBpbGF0aW9uIHRocmVhZC4gVGhpcyBpcyBvbmx5IHJlbGV2YW50
IGZvcgorICAgICAgICBkZWJ1ZyBkdW1wcy4KKworICAgICAgICBObyBuZXcgdGVzdHMgYmVjYXNl
IG5vIG5ldyBiZWhhdmlvci4KKworICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkU2NyaXB0OjpzY3JpcHQpOgorCiAyMDEzLTA1
LTI1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgSW50
ZXJwcmV0ZXI6OnJldHJpZXZlTGFzdENhbGxlcigpLgpJbmRleDogU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
bG9hZGVyL2NhY2hlL0NhY2hlZFNjcmlwdC5jcHAJKHJldmlzaW9uIDE1MDc4MSkKKysrIFNvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRTY3JpcHQuY3BwCSh3b3JraW5nIGNvcHkpCkBA
IC03MCw2ICs3MCwxMSBAQCBTdHJpbmcgQ2FjaGVkU2NyaXB0OjptaW1lVHlwZSgpIGNvbnN0CiAK
IGNvbnN0IFN0cmluZyYgQ2FjaGVkU2NyaXB0OjpzY3JpcHQoKQogeworICAgIGlmIChpc0NvbXBp
bGF0aW9uVGhyZWFkKCkpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobV9zY3JpcHQpOworICAg
ICAgICByZXR1cm4gbV9zY3JpcHQ7CisgICAgfQorICAgIAogICAgIEFTU0VSVCghaXNQdXJnZWFi
bGUoKSk7CiAKICAgICBpZiAoIW1fc2NyaXB0ICYmIG1fZGF0YSkgewpJbmRleDogVG9vbHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMTUwNzg1KQor
KysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMt
MDUtMjcgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KKworICAgICAgICB0ZXN0UnVu
bmVyIHNob3VsZCBiZSBhYmxlIHRvIHRlbGwgeW91IGlmIGEgZnVuY3Rpb24gaXMgREZHIGNvbXBp
bGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTY4
NDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIER1
bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwOgorICAgICAgICAobnVtYmVyT2ZERkdDb21waWxl
cyk6CisgICAgICAgIChUZXN0UnVubmVyOjpzdGF0aWNGdW5jdGlvbnMpOgorCiAyMDEzLTA1LTIx
ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgZm91cnRoVGllcjog
ZGlzcGxheS1wcm9maWxlci1vdXRwdXQgc2hvdWxkIG1ha2UgaXQgZXZlbiBlYXNpZXIgdG8gZGlm
ZiB0aGUgY29tcGlsYXRpb24gc3RvcnkgYmV0d2VlbiB0d28gZGlmZmVyZW50IHJ1bnMKSW5kZXg6
IFRvb2xzL0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xz
L0R1bXBSZW5kZXJUcmVlL1Rlc3RSdW5uZXIuY3BwCShyZXZpc2lvbiAxNTA3ODEpCisrKyBUb29s
cy9EdW1wUmVuZGVyVHJlZS9UZXN0UnVubmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzIsMTAg
KzMyLDExIEBACiAKICNpbmNsdWRlICJXb3JrUXVldWUuaCIKICNpbmNsdWRlICJXb3JrUXVldWVJ
dGVtLmgiCi0jaW5jbHVkZSA8Y3N0cmluZz4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0Nv
bnRleHRSZWYuaD4KKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NUZXN0UnVubmVyVXRpbHMu
aD4KICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZi5oPgogI2luY2x1ZGUgPEph
dmFTY3JpcHRDb3JlL0pTUmV0YWluUHRyLmg+CisjaW5jbHVkZSA8Y3N0cmluZz4KICNpbmNsdWRl
IDxsb2NhbGUuaD4KICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHd0Zi9Bc3NlcnRpb25z
Lmg+CkBAIC0xOTU1LDYgKzE5NTYsMTQgQEAgc3RhdGljIEpTVmFsdWVSZWYgc2ltdWxhdGVXZWJO
b3RpZmljYXRpbwogICAgIHJldHVybiBKU1ZhbHVlTWFrZVVuZGVmaW5lZChjb250ZXh0KTsKIH0K
IAorc3RhdGljIEpTVmFsdWVSZWYgbnVtYmVyT2ZERkdDb21waWxlcyhKU0NvbnRleHRSZWYgY29u
dGV4dCwgSlNPYmplY3RSZWYgZnVuY3Rpb24sIEpTT2JqZWN0UmVmIHRoaXNPYmplY3QsIHNpemVf
dCBhcmd1bWVudENvdW50LCBjb25zdCBKU1ZhbHVlUmVmIGFyZ3VtZW50c1tdLCBKU1ZhbHVlUmVm
KiBleGNlcHRpb24pCit7CisgICAgaWYgKGFyZ3VtZW50Q291bnQgPCAxKQorICAgICAgICByZXR1
cm4gSlNWYWx1ZU1ha2VVbmRlZmluZWQoY29udGV4dCk7CisgICAgCisgICAgcmV0dXJuIEpTQzo6
bnVtYmVyT2ZERkdDb21waWxlcyhjb250ZXh0LCBhcmd1bWVudHNbMF0pOworfQorCiBzdGF0aWMg
dm9pZCB0ZXN0UnVubmVyT2JqZWN0RmluYWxpemUoSlNPYmplY3RSZWYgb2JqZWN0KQogewogICAg
IFRlc3RSdW5uZXIqIGNvbnRyb2xsZXIgPSBzdGF0aWNfY2FzdDxUZXN0UnVubmVyKj4oSlNPYmpl
Y3RHZXRQcml2YXRlKG9iamVjdCkpOwpAQCAtMjE1NSw2ICsyMTY0LDcgQEAgSlNTdGF0aWNGdW5j
dGlvbiogVGVzdFJ1bm5lcjo6c3RhdGljRnVuYwogICAgICAgICB7ICJkZW55V2ViTm90aWZpY2F0
aW9uUGVybWlzc2lvbiIsIGRlbnlXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uQ2FsbGJhY2ssIGtK
U1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxl
dGUgfSwKICAgICAgICAgeyAicmVtb3ZlQWxsV2ViTm90aWZpY2F0aW9uUGVybWlzc2lvbnMiLCBy
ZW1vdmVBbGxXZWJOb3RpZmljYXRpb25QZXJtaXNzaW9uc0NhbGxiYWNrLCBrSlNQcm9wZXJ0eUF0
dHJpYnV0ZVJlYWRPbmx5IHwga0pTUHJvcGVydHlBdHRyaWJ1dGVEb250RGVsZXRlIH0sCiAgICAg
ICAgIHsgInNpbXVsYXRlV2ViTm90aWZpY2F0aW9uQ2xpY2siLCBzaW11bGF0ZVdlYk5vdGlmaWNh
dGlvbkNsaWNrQ2FsbGJhY2ssIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBrSlNQcm9w
ZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKKyAgICAgICAgeyAibnVtYmVyT2ZERkdDb21waWxl
cyIsIG51bWJlck9mREZHQ29tcGlsZXMsIGtKU1Byb3BlcnR5QXR0cmlidXRlUmVhZE9ubHkgfCBr
SlNQcm9wZXJ0eUF0dHJpYnV0ZURvbnREZWxldGUgfSwKICAgICAgICAgeyAwLCAwLCAwIH0KICAg
ICB9OwogCkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxNTA3ODUpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxMiBAQAorMjAxMy0wNS0yNyAgRmlsaXAgUGl6
bG8gIDxmcGl6bG9AYXBwbGUuY29tPgorCisgICAgICAgIHRlc3RSdW5uZXIgc2hvdWxkIGJlIGFi
bGUgdG8gdGVsbCB5b3UgaWYgYSBmdW5jdGlvbiBpcyBERkcgY29tcGlsZWQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTExNjg0NworCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogZmFzdC9qcy9zY3JpcHQtdGVz
dHMvZGZnLW1pbi1tYXguanM6CisKIDIwMTMtMDUtMjcgIEZpbGlwIFBpemxvICA8ZnBpemxvQGFw
cGxlLmNvbT4KIAogICAgICAgICBmb3VydGhUaWVyOiBERkcgQXJpdGhNb2Qgc2hvdWxkIGhhdmUg
dGhlICFub2RlVXNlZEFzTnVtYmVyIG9wdGltaXphdGlvbnMgdGhhdCBBcml0aERpdiBoYXMKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL2RmZy1taW4tbWF4LmpzCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvanMvc2NyaXB0LXRlc3RzL2RmZy1taW4tbWF4Lmpz
CShyZXZpc2lvbiAxNTA3ODEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9k
ZmctbWluLW1heC5qcwkod29ya2luZyBjb3B5KQpAQCAtMTAsOSArMTAsMTEgQEAgZnVuY3Rpb24g
ZG9NYXgoYSwgYikgewogICAgIHJldHVybiBNYXRoLm1heChhLCBiKTsKIH0KIAotZm9yICh2YXIg
aSA9IDA7IGkgPCAxMDAwOyArK2kpIHsKK3ZhciBjb3VudCA9IDA7Cit3aGlsZSAoIXRlc3RSdW5u
ZXIubnVtYmVyT2ZERkdDb21waWxlcyhkb01pbikgfHwgIXRlc3RSdW5uZXIubnVtYmVyT2ZERkdD
b21waWxlcyhkb01heCkpIHsKICAgICBkb01pbigxLjUsIDIuNSk7CiAgICAgZG9NYXgoMS41LCAy
LjUpOworICAgIGNvdW50Kys7CiB9CiAKIHNob3VsZEJlKCJkb01pbigxLjUsIDIuNSkiLCAiMS41
Iik7Cg==
</data>
<flag name="review"
          id="224512"
          type_id="1"
          status="+"
          setter="mhahnenberg"
    />
          </attachment>
      

    </bug>

</bugzilla>