<?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>61612</bug_id>
          
          <creation_ts>2011-05-27 00:49:54 -0700</creation_ts>
          <short_desc>Clean up CSSPrimitiveValue::computeLength*</short_desc>
          <delta_ts>2011-06-10 11:17:38 -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>0</everconfirmed>
          <reporter name="Luke Macpherson">macpherson</reporter>
          <assigned_to name="Luke Macpherson">macpherson</assigned_to>
          <cc>ap</cc>
    
    <cc>dglazkov</cc>
    
    <cc>eric</cc>
    
    <cc>koivisto</cc>
    
    <cc>macpherson</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>411245</commentid>
    <comment_count>0</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-05-27 00:49:54 -0700</bug_when>
    <thetext>Clean up CSSPrimitiveValue::computeLength*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412076</commentid>
    <comment_count>1</comment_count>
      <attachid>95312</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-05-29 18:03:45 -0700</bug_when>
    <thetext>Created attachment 95312
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412079</commentid>
    <comment_count>2</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-05-29 18:15:19 -0700</bug_when>
    <thetext>I anticipate abstracting out the type information in these functions will allow the removal of duplicated code in CSSStyleSelector and CSSStyleApplyProperty. Also note that this could also be done with overloading based on return type, at the expense of having per-type prototypes in the header file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412100</commentid>
    <comment_count>3</comment_count>
      <attachid>95312</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-05-29 20:11:09 -0700</bug_when>
    <thetext>Comment on attachment 95312
Patch

I&apos;m confused.  Why have the generic implementation if we have type specific ones for each of the types we use.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>412125</commentid>
    <comment_count>4</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-05-29 22:58:10 -0700</bug_when>
    <thetext>Hi Eric, I&apos;m not sure if I understand you. There is no generic implementation of computeLength, just type specific implementations. All I&apos;m doing is moving that type information out of the function name and into a type parameter.

I think that&apos;s a good thing on it&apos;s own merits, but the advantage becomes that I can then have a templated class:

template &lt;typename T&gt;
class Foo {
    virtual void bar() {
       CSSPrimitiveValue v = ...;
       T baz = v.computeLength&lt;typename T&gt;(...);
    }
}

This is handy for eliminating code that would otherwise require separate implementations of Foo for each type.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418413</commentid>
    <comment_count>5</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-06-09 17:16:27 -0700</bug_when>
    <thetext>Ping.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418508</commentid>
    <comment_count>6</comment_count>
      <attachid>95312</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2011-06-09 22:39:28 -0700</bug_when>
    <thetext>Comment on attachment 95312
Patch

OK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418510</commentid>
    <comment_count>7</comment_count>
      <attachid>95312</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-09 22:41:47 -0700</bug_when>
    <thetext>Comment on attachment 95312
Patch

Rejecting attachment 95312 from commit-queue.

Failed to run &quot;[&apos;./Tools/Scripts/webkit-patch&apos;, &apos;--status-host=queues.webkit.org&apos;, &apos;--bot-id=ec2-cq-02&apos;, &apos;--port...&quot; exit_code: 2

Last 500 characters of output:
92 (offset -37 lines).
Hunk #21 succeeded at 5819 (offset -37 lines).
Hunk #22 succeeded at 5843 (offset -37 lines).
1 out of 22 hunks FAILED -- saving rejects to file Source/WebCore/css/CSSStyleSelector.cpp.rej
patching file Source/WebCore/css/MediaQueryEvaluator.cpp
patching file Source/WebCore/css/SVGCSSStyleSelector.cpp
Hunk #1 succeeded at 572 (offset 2 lines).

Failed to run &quot;[u&apos;/mnt/git/webkit-commit-queue/Tools/Scripts/svn-apply&apos;, u&apos;--reviewer&apos;, u&apos;Eric Seidel&apos;, u&apos;--force&apos;]&quot; exit_code: 1

Full output: http://queues.webkit.org/results/8823509</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418552</commentid>
    <comment_count>8</comment_count>
      <attachid>96704</attachid>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-06-10 00:38:33 -0700</bug_when>
    <thetext>Created attachment 96704
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418553</commentid>
    <comment_count>9</comment_count>
    <who name="Luke Macpherson">macpherson</who>
    <bug_when>2011-06-10 00:38:53 -0700</bug_when>
    <thetext>Fixed merge conflicts.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418799</commentid>
    <comment_count>10</comment_count>
      <attachid>96704</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-10 11:17:33 -0700</bug_when>
    <thetext>Comment on attachment 96704
Patch

Clearing flags on attachment: 96704

Committed r88553: &lt;http://trac.webkit.org/changeset/88553&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>418800</commentid>
    <comment_count>11</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-06-10 11:17:38 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>95312</attachid>
            <date>2011-05-29 18:03:45 -0700</date>
            <delta_ts>2011-06-10 00:38:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61612-20110530110342.patch</filename>
            <type>text/plain</type>
            <size>27827</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg3NDgxKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDUtMjcgIEx1a2UgTWFj
cGhlcnNvbiAgIDxtYWNwaGVyc29uQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDbGVhbiB1cCBDU1NQcmltaXRpdmVWYWx1ZTo6
Y29tcHV0ZUxlbmd0aCoKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTYxNjEyCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGFzIG5vIGZ1bmN0aW9uYWxpdHkg
Y2hhbmdlZC4KKworICAgICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmNwcDoKKyAgICAgICAg
VXNlIG5ldyBjb21wdXRlTGVuZ3RoIGZ1bmN0aW9ucy4KKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0
aXZlVmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1
dGVMZW5ndGhJbnRGb3JMZW5ndGgpOgorICAgICAgICBSZWR1Y2UgdG8gYSBzaW5nbGUgZnVuY3Rp
b24gdXNpbmcgZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzLgorICAgICAgICAoV2ViQ29yZTo6Q1NT
UHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVMZW5ndGgpOgorICAgICAgICBSZWRlZmluZSBleGlzdGlu
ZyBmdW5jdGlvbnMgd2l0aCBzZXBhcmF0ZSBuYW1lcyBhcyBhIHNpbmdsZSBmdW5jdGlvbiB1c2lu
ZyB0ZW1wbGF0ZWQgZnVuY3Rpb24gc3BlY2lhbGl6YXRpb24uCisgICAgICAgICogY3NzL0NTU1By
aW1pdGl2ZVZhbHVlLmg6CisgICAgICAgIFByb3RvdHlwZXMgZm9yIGNvbXB1dGVMZW5ndGhJbnRG
b3JMZW5ndGggYW5kIGNvbXB1dGVMZW5ndGguCisgICAgICAgICogY3NzL0NTU1N0eWxlQXBwbHlQ
cm9wZXJ0eS5jcHA6CisgICAgICAgIFVzZSBuZXcgY29tcHV0ZUxlbmd0aCBmdW5jdGlvbnMuCisg
ICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICBVc2UgbmV3IGNvbXB1
dGVMZW5ndGggZnVuY3Rpb25zLgorICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNw
cDoKKyAgICAgICAgVXNlIG5ldyBjb21wdXRlTGVuZ3RoIGZ1bmN0aW9ucy4KKyAgICAgICAgKiBj
c3MvU1ZHQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIFVzZSBuZXcgY29tcHV0ZUxlbmd0
aCBmdW5jdGlvbnMuCisKIDIwMTEtMDUtMjYgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2ds
ZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgS2VudCBUYW11cmEuCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCShyZXZpc2lvbiA4NzQ1MykKKysrIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU5
LDcgKzE1OSw3IEBAIHZvaWQgQ1NTR3JhZGllbnRWYWx1ZTo6YWRkU3RvcHMoR3JhZGllbnQKICAg
ICAgICAgICAgIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkK
ICAgICAgICAgICAgICAgICBzdG9wc1tpXS5vZmZzZXQgPSBzdG9wLm1fcG9zaXRpb24tPmdldEZs
b2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSAvIDEwMDsKICAgICAg
ICAgICAgIGVsc2UgaWYgKENTU1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBlTGVuZ3RoKHR5cGUp
KSB7Ci0gICAgICAgICAgICAgICAgZmxvYXQgbGVuZ3RoID0gc3RvcC5tX3Bvc2l0aW9uLT5jb21w
dXRlTGVuZ3RoRmxvYXQoc3R5bGUsIHJvb3RTdHlsZSwgc3R5bGUtPmVmZmVjdGl2ZVpvb20oKSk7
CisgICAgICAgICAgICAgICAgZmxvYXQgbGVuZ3RoID0gc3RvcC5tX3Bvc2l0aW9uLT5jb21wdXRl
TGVuZ3RoPGZsb2F0PihzdHlsZSwgcm9vdFN0eWxlLCBzdHlsZS0+ZWZmZWN0aXZlWm9vbSgpKTsK
ICAgICAgICAgICAgICAgICBpZiAoIWNvbXB1dGVkR3JhZGllbnRMZW5ndGgpIHsKICAgICAgICAg
ICAgICAgICAgICAgRmxvYXRTaXplIGdyYWRpZW50U2l6ZShncmFkaWVudFN0YXJ0IC0gZ3JhZGll
bnRFbmQpOwogICAgICAgICAgICAgICAgICAgICBncmFkaWVudExlbmd0aCA9IGdyYWRpZW50U2l6
ZS5kaWFnb25hbExlbmd0aCgpOwpAQCAtMzkxLDcgKzM5MSw3IEBAIHN0YXRpYyBmbG9hdCBwb3Np
dGlvbkZyb21WYWx1ZShDU1NQcmltaXQKICAgICAgICAgfQogCiAgICAgZGVmYXVsdDoKLSAgICAg
ICAgcmV0dXJuIHZhbHVlLT5jb21wdXRlTGVuZ3RoRmxvYXQoc3R5bGUsIHJvb3RTdHlsZSwgem9v
bUZhY3Rvcik7CisgICAgICAgIHJldHVybiB2YWx1ZS0+Y29tcHV0ZUxlbmd0aDxmbG9hdD4oc3R5
bGUsIHJvb3RTdHlsZSwgem9vbUZhY3Rvcik7CiAgICAgfQogfQogCkBAIC02NDQsNyArNjQ0LDcg
QEAgZmxvYXQgQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6cmVzb2x2ZVJhZAogICAgIGVsc2UgaWYg
KHdpZHRoT3JIZWlnaHQgJiYgcmFkaXVzLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19QRVJDRU5UQUdFKQogICAgICAgICByZXN1bHQgPSAqd2lkdGhPckhlaWdodCAq
IHJhZGl1cy0+Z2V0RmxvYXRWYWx1ZSgpIC8gMTAwOwogICAgIGVsc2UKLSAgICAgICAgcmVzdWx0
ID0gcmFkaXVzLT5jb21wdXRlTGVuZ3RoRmxvYXQoc3R5bGUsIHJvb3RTdHlsZSwgem9vbUZhY3Rv
cik7CisgICAgICAgIHJlc3VsdCA9IHJhZGl1cy0+Y29tcHV0ZUxlbmd0aDxmbG9hdD4oc3R5bGUs
IHJvb3RTdHlsZSwgem9vbUZhY3Rvcik7CiAgCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAkocmV2aXNpb24gODc0NTMp
CisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNDksNDYgKzI0OSwzNiBAQCB2b2lkIENTU1ByaW1pdGl2ZVZhbHVlOjpjbGVhbnVw
KCkKICAgICB9CiB9CiAKLWludCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aEludChS
ZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUpCit0ZW1wbGF0ZTw+IGlu
dCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aChSZW5kZXJTdHlsZSogc3R5bGUsIFJl
bmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyLCBib29sIGNvbXB1dGluZ0Zv
bnRTaXplKQogewotICAgIHJldHVybiByb3VuZEZvckltcHJlY2lzZUNvbnZlcnNpb248aW50LCBJ
TlRfTUFYLCBJTlRfTUlOPihjb21wdXRlTGVuZ3RoRG91YmxlKHN0eWxlLCByb290U3R5bGUpKTsK
LX0KLQotaW50IENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoSW50KFJlbmRlclN0eWxl
KiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRpcGxpZXIpCi17Ci0g
ICAgcmV0dXJuIHJvdW5kRm9ySW1wcmVjaXNlQ29udmVyc2lvbjxpbnQsIElOVF9NQVgsIElOVF9N
SU4+KGNvbXB1dGVMZW5ndGhEb3VibGUoc3R5bGUsIHJvb3RTdHlsZSwgbXVsdGlwbGllcikpOwor
ICAgIHJldHVybiByb3VuZEZvckltcHJlY2lzZUNvbnZlcnNpb248aW50LCBJTlRfTUFYLCBJTlRf
TUlOPihjb21wdXRlTGVuZ3RoRG91YmxlKHN0eWxlLCByb290U3R5bGUsIG11bHRpcGxpZXIsIGNv
bXB1dGluZ0ZvbnRTaXplKSk7CiB9CiAKIC8vIExlbmd0aHMgZXhwZWN0IGFuIGludCB0aGF0IGlz
IG9ubHkgMjgtYml0cywgc28gd2UgaGF2ZSB0byBjaGVjayBmb3IgYQogLy8gZGlmZmVyZW50IG92
ZXJmbG93LgotaW50IENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3Ro
KFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSkKLXsKLSAgICByZXR1
cm4gcm91bmRGb3JJbXByZWNpc2VDb252ZXJzaW9uPGludCwgaW50TWF4Rm9yTGVuZ3RoLCBpbnRN
aW5Gb3JMZW5ndGg+KGNvbXB1dGVMZW5ndGhEb3VibGUoc3R5bGUsIHJvb3RTdHlsZSkpOwotfQot
Ci1pbnQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoUmVuZGVy
U3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVsdGlwbGllcikK
K2ludCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChSZW5kZXJT
dHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyLCBi
b29sIGNvbXB1dGluZ0ZvbnRTaXplKQogewotICAgIHJldHVybiByb3VuZEZvckltcHJlY2lzZUNv
bnZlcnNpb248aW50LCBpbnRNYXhGb3JMZW5ndGgsIGludE1pbkZvckxlbmd0aD4oY29tcHV0ZUxl
bmd0aERvdWJsZShzdHlsZSwgcm9vdFN0eWxlLCBtdWx0aXBsaWVyKSk7CisgICAgcmV0dXJuIHJv
dW5kRm9ySW1wcmVjaXNlQ29udmVyc2lvbjxpbnQsIGludE1heEZvckxlbmd0aCwgaW50TWluRm9y
TGVuZ3RoPihjb21wdXRlTGVuZ3RoRG91YmxlKHN0eWxlLCByb290U3R5bGUsIG11bHRpcGxpZXIs
IGNvbXB1dGluZ0ZvbnRTaXplKSk7CiB9CiAKLXNob3J0IENTU1ByaW1pdGl2ZVZhbHVlOjpjb21w
dXRlTGVuZ3RoU2hvcnQoUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxl
KQordGVtcGxhdGU8PiBMZW5ndGggQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVMZW5ndGgoUmVu
ZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVsdGlwbGll
ciwgYm9vbCBjb21wdXRpbmdGb250U2l6ZSkKIHsKLSAgICByZXR1cm4gcm91bmRGb3JJbXByZWNp
c2VDb252ZXJzaW9uPHNob3J0LCBTSFJUX01BWCwgU0hSVF9NSU4+KGNvbXB1dGVMZW5ndGhEb3Vi
bGUoc3R5bGUsIHJvb3RTdHlsZSkpOworICAgIHJldHVybiBMZW5ndGgoY29tcHV0ZUxlbmd0aElu
dEZvckxlbmd0aChzdHlsZSwgcm9vdFN0eWxlLCBtdWx0aXBsaWVyLCBjb21wdXRpbmdGb250U2l6
ZSksIEZpeGVkKTsKIH0KIAotc2hvcnQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVMZW5ndGhT
aG9ydChSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBt
dWx0aXBsaWVyKQordGVtcGxhdGU8PiBzaG9ydCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxl
bmd0aChSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBt
dWx0aXBsaWVyLCBib29sIGNvbXB1dGluZ0ZvbnRTaXplKQogewotICAgIHJldHVybiByb3VuZEZv
ckltcHJlY2lzZUNvbnZlcnNpb248c2hvcnQsIFNIUlRfTUFYLCBTSFJUX01JTj4oY29tcHV0ZUxl
bmd0aERvdWJsZShzdHlsZSwgcm9vdFN0eWxlLCBtdWx0aXBsaWVyKSk7CisgICAgcmV0dXJuIHJv
dW5kRm9ySW1wcmVjaXNlQ29udmVyc2lvbjxzaG9ydCwgU0hSVF9NQVgsIFNIUlRfTUlOPihjb21w
dXRlTGVuZ3RoRG91YmxlKHN0eWxlLCByb290U3R5bGUsIG11bHRpcGxpZXIsIGNvbXB1dGluZ0Zv
bnRTaXplKSk7CiB9CiAKLWZsb2F0IENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoRmxv
YXQoUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBib29sIGNvbXB1
dGluZ0ZvbnRTaXplKQordGVtcGxhdGU8PiBmbG9hdCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0
ZUxlbmd0aChSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJs
ZSBtdWx0aXBsaWVyLCBib29sIGNvbXB1dGluZ0ZvbnRTaXplKQogewotICAgIHJldHVybiBzdGF0
aWNfY2FzdDxmbG9hdD4oY29tcHV0ZUxlbmd0aERvdWJsZShzdHlsZSwgcm9vdFN0eWxlLCAxLjAs
IGNvbXB1dGluZ0ZvbnRTaXplKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0Pihjb21w
dXRlTGVuZ3RoRG91YmxlKHN0eWxlLCByb290U3R5bGUsIG11bHRpcGxpZXIsIGNvbXB1dGluZ0Zv
bnRTaXplKSk7CiB9CiAKLWZsb2F0IENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoRmxv
YXQoUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVs
dGlwbGllciwgYm9vbCBjb21wdXRpbmdGb250U2l6ZSkKK3RlbXBsYXRlPD4gZG91YmxlIENTU1By
aW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoKFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5
bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRpcGxpZXIsIGJvb2wgY29tcHV0aW5nRm9udFNpemUp
CiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0Pihjb21wdXRlTGVuZ3RoRG91YmxlKHN0
eWxlLCByb290U3R5bGUsIG11bHRpcGxpZXIsIGNvbXB1dGluZ0ZvbnRTaXplKSk7CisgICAgcmV0
dXJuIGNvbXB1dGVMZW5ndGhEb3VibGUoc3R5bGUsIHJvb3RTdHlsZSwgbXVsdGlwbGllciwgY29t
cHV0aW5nRm9udFNpemUpOwogfQogCiBkb3VibGUgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVM
ZW5ndGhEb3VibGUoUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBk
b3VibGUgbXVsdGlwbGllciwgYm9vbCBjb21wdXRpbmdGb250U2l6ZSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCShyZXZpc2lvbiA4NzQ1MykKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsMTUg
KzEzNiw4IEBAIHB1YmxpYzoKICAgICAgKiB0aGlzIGlzIHNjcmVlbi9wcmludGVyIGRlcGVuZGVu
dCwgc28gd2UgcHJvYmFibHkgbmVlZCBhIGNvbmZpZyBvcHRpb24gZm9yIHRoaXMsCiAgICAgICog
YW5kIHNvbWUgdG9vbCB0byBjYWxpYnJhdGUuCiAgICAgICovCi0gICAgaW50IGNvbXB1dGVMZW5n
dGhJbnQoUmVuZGVyU3R5bGUqIGN1cnJTdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSk7Ci0g
ICAgaW50IGNvbXB1dGVMZW5ndGhJbnQoUmVuZGVyU3R5bGUqIGN1cnJTdHlsZSwgUmVuZGVyU3R5
bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRpcGxpZXIpOwotICAgIGludCBjb21wdXRlTGVuZ3Ro
SW50Rm9yTGVuZ3RoKFJlbmRlclN0eWxlKiBjdXJyU3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5
bGUpOwotICAgIGludCBjb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKFJlbmRlclN0eWxlKiBjdXJy
U3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyKTsKLSAgICBz
aG9ydCBjb21wdXRlTGVuZ3RoU2hvcnQoUmVuZGVyU3R5bGUqIGN1cnJTdHlsZSwgUmVuZGVyU3R5
bGUqIHJvb3RTdHlsZSk7Ci0gICAgc2hvcnQgY29tcHV0ZUxlbmd0aFNob3J0KFJlbmRlclN0eWxl
KiBjdXJyU3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyKTsK
LSAgICBmbG9hdCBjb21wdXRlTGVuZ3RoRmxvYXQoUmVuZGVyU3R5bGUqIGN1cnJTdHlsZSwgUmVu
ZGVyU3R5bGUqIHJvb3RTdHlsZSwgYm9vbCBjb21wdXRpbmdGb250U2l6ZSA9IGZhbHNlKTsKLSAg
ICBmbG9hdCBjb21wdXRlTGVuZ3RoRmxvYXQoUmVuZGVyU3R5bGUqIGN1cnJTdHlsZSwgUmVuZGVy
U3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRpcGxpZXIsIGJvb2wgY29tcHV0aW5nRm9udFNp
emUgPSBmYWxzZSk7Ci0gICAgZG91YmxlIGNvbXB1dGVMZW5ndGhEb3VibGUoUmVuZGVyU3R5bGUq
IGN1cnJlbnRTdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRpcGxpZXIg
PSAxLjAsIGJvb2wgY29tcHV0aW5nRm9udFNpemUgPSBmYWxzZSk7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gVCBjb21wdXRlTGVuZ3RoKFJlbmRlclN0eWxlKiBjdXJyU3R5bGUsIFJlbmRlclN0
eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyID0gMS4wLCBib29sIGNvbXB1dGluZ0Zv
bnRTaXplID0gZmFsc2UpOworICAgIGludCBjb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKFJlbmRl
clN0eWxlKiBjdXJyU3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBs
aWVyID0gMS4wLCBib29sIGNvbXB1dGluZ0ZvbnRTaXplID0gZmFsc2UpOwogCiAgICAgLy8gdXNl
IHdpdGggY2FyZSEhIQogICAgIHZvaWQgc2V0UHJpbWl0aXZlVHlwZSh1bnNpZ25lZCBzaG9ydCB0
eXBlKSB7IG1fdHlwZSA9IHR5cGU7IH0KQEAgLTIyNSw2ICsyMTgsOCBAQCBwcml2YXRlOgogCiAg
ICAgdmlydHVhbCB1bnNpZ25lZCBzaG9ydCBjc3NWYWx1ZVR5cGUoKSBjb25zdDsKIAorICAgIGRv
dWJsZSBjb21wdXRlTGVuZ3RoRG91YmxlKFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIFJlbmRl
clN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyLCBib29sIGNvbXB1dGluZ0ZvbnRT
aXplKTsKKwogICAgIGludCBtX3R5cGUgOiAzMTsKICAgICBtdXRhYmxlIHVuc2lnbmVkIG1faGFz
Q2FjaGVkQ1NTVGV4dCA6IDE7CiAgICAgdW5pb24gewpJbmRleDogU291cmNlL1dlYkNvcmUvY3Nz
L0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAJKHJldmlzaW9uIDg3NDUzKQorKysgU291cmNl
L1dlYkNvcmUvY3NzL0NTU1N0eWxlQXBwbHlQcm9wZXJ0eS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTM1Niw3ICszNTYsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgd2lkdGggPSA1OwogICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTVmFsdWVJbnZhbGlkOgotICAgICAgICAgICAg
d2lkdGggPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aFNob3J0KHNlbGVjdG9yLT5zdHls
ZSgpLCBzZWxlY3Rvci0+cm9vdEVsZW1lbnRTdHlsZSgpLCBzZWxlY3Rvci0+c3R5bGUoKS0+ZWZm
ZWN0aXZlWm9vbSgpKTsKKyAgICAgICAgICAgIHdpZHRoID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1
dGVMZW5ndGg8c2hvcnQ+KHNlbGVjdG9yLT5zdHlsZSgpLCBzZWxlY3Rvci0+cm9vdEVsZW1lbnRT
dHlsZSgpLCBzZWxlY3Rvci0+c3R5bGUoKS0+ZWZmZWN0aXZlWm9vbSgpKTsKICAgICAgICAgICAg
IC8vIENTUzIgYm94IG1vZGVsIGRvZXMgbm90IGFsbG93IG5lZ2F0aXZlIGxlbmd0aHMgZm9yIGJv
cmRlcnMuCiAgICAgICAgICAgICBpZiAod2lkdGggPCAwKQogICAgICAgICAgICAgICAgIHJldHVy
bjsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHJldmlzaW9u
IDg3NDUzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMzQ0LDkgKzMzNDQsOSBAQCBzdGF0aWMgTGVuZ3RoIGNvbnZlcnRUb0xl
bmd0aChDU1NQcmltaXRpCiAgICAgICAgICAgICAgICAgKm9rID0gZmFsc2U7CiAgICAgICAgIH0g
ZWxzZSBpZiAoQ1NTUHJpbWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgodHlwZSkpIHsKICAg
ICAgICAgICAgIGlmICh0b0Zsb2F0KQotICAgICAgICAgICAgICAgIGwgPSBMZW5ndGgocHJpbWl0
aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhEb3VibGUoc3R5bGUsIHJvb3RTdHlsZSwgbXVsdGlwbGll
ciksIEZpeGVkKTsKKyAgICAgICAgICAgICAgICBsID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5j
b21wdXRlTGVuZ3RoPGRvdWJsZT4oc3R5bGUsIHJvb3RTdHlsZSwgbXVsdGlwbGllciksIEZpeGVk
KTsKICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBsID0gTGVuZ3RoKHByaW1pdGl2
ZVZhbHVlLT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKHN0eWxlLCByb290U3R5bGUsIG11bHRp
cGxpZXIpLCBGaXhlZCk7CisgICAgICAgICAgICAgICAgbCA9IHByaW1pdGl2ZVZhbHVlLT5jb21w
dXRlTGVuZ3RoPExlbmd0aD4oc3R5bGUsIHJvb3RTdHlsZSwgbXVsdGlwbGllcik7CiAgICAgICAg
IH0KICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNF
TlRBR0UpCiAgICAgICAgICAgICBsID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5nZXREb3VibGVW
YWx1ZSgpLCBQZXJjZW50KTsKQEAgLTM3NDksNyArMzc0OSw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxl
Y3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQKICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJ
QUwoaG9yaXpvbnRhbEJvcmRlclNwYWNpbmcsIEhvcml6b250YWxCb3JkZXJTcGFjaW5nKQogICAg
ICAgICBpZiAoIXByaW1pdGl2ZVZhbHVlKQogICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBz
aG9ydCBzcGFjaW5nID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhTaG9ydChzdHlsZSgp
LCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOworICAgICAgICBzaG9ydCBzcGFjaW5n
ID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGg8c2hvcnQ+KHN0eWxlKCksIG1fcm9vdEVs
ZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7CiAgICAgICAgIG1fc3R5bGUtPnNldEhvcml6b250YWxC
b3JkZXJTcGFjaW5nKHNwYWNpbmcpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMzc1Nyw3
ICszNzU3LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludAogICAg
ICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTCh2ZXJ0aWNhbEJvcmRlclNwYWNpbmcsIFZl
cnRpY2FsQm9yZGVyU3BhY2luZykKICAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgc2hvcnQgc3BhY2luZyA9IHByaW1pdGl2ZVZhbHVlLT5j
b21wdXRlTGVuZ3RoU2hvcnQoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9y
KTsKKyAgICAgICAgc2hvcnQgc3BhY2luZyA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3Ro
PHNob3J0PihzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOwogICAgICAg
ICBtX3N0eWxlLT5zZXRWZXJ0aWNhbEJvcmRlclNwYWNpbmcoc3BhY2luZyk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CkBAIC0zODI2LDcgKzM4MjYsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6
OmFwcGx5UHJvcGVydHkoaW50CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBpZiAoIXBy
aW1pdGl2ZVZhbHVlKQogICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIHdpZHRo
ID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhJbnQoc3R5bGUoKSwgbV9yb290RWxlbWVu
dFN0eWxlLCB1c2VTVkdab29tUnVsZXMobV9lbGVtZW50KSA/IDEuMGYgOiB6b29tRmFjdG9yKTsK
KyAgICAgICAgICAgIHdpZHRoID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGg8aW50Pihz
dHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHVzZVNWR1pvb21SdWxlcyhtX2VsZW1lbnQpID8g
MS4wZiA6IHpvb21GYWN0b3IpOwogICAgICAgICB9CiAgICAgICAgIHN3aXRjaCAoaWQpIHsKICAg
ICAgICAgY2FzZSBDU1NQcm9wZXJ0eUxldHRlclNwYWNpbmc6CkBAIC0zOTA5LDcgKzM5MDksNyBA
QCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50CiAgICAgICAgICAgaW50
IHR5cGUgPSBwcmltaXRpdmVWYWx1ZS0+cHJpbWl0aXZlVHlwZSgpOwogICAgICAgICAgIExlbmd0
aCBsOwogICAgICAgICAgIGlmIChDU1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0
eXBlKSkKLSAgICAgICAgICAgIGwgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5n
dGhJbnRGb3JMZW5ndGgoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKSwg
Rml4ZWQpOworICAgICAgICAgICAgbCA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoPExl
bmd0aD4oc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKICAgICAgICAg
ICBlbHNlIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkKICAg
ICAgICAgICAgIGwgPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUtPmdldERvdWJsZVZhbHVlKCksIFBl
cmNlbnQpOwogCkBAIC0zOTczLDcgKzM5NzMsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFw
cGx5UHJvcGVydHkoaW50CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHR5cGUgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19FWFMgJiYKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZSAhPSBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTX1JFTVMpKTsKICAgICAgICAgICAgIGlmIChDU1NQcmltaXRpdmVWYWx1ZTo6aXNV
bml0VHlwZUxlbmd0aCh0eXBlKSkKLSAgICAgICAgICAgICAgICBzaXplID0gcHJpbWl0aXZlVmFs
dWUtPmNvbXB1dGVMZW5ndGhGbG9hdChtX3BhcmVudFN0eWxlLCBtX3Jvb3RFbGVtZW50U3R5bGUs
IHRydWUpOworICAgICAgICAgICAgICAgIHNpemUgPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxl
bmd0aDxmbG9hdD4obV9wYXJlbnRTdHlsZSwgbV9yb290RWxlbWVudFN0eWxlLCAxLjAsIHRydWUp
OwogICAgICAgICAgICAgZWxzZSBpZiAodHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BF
UkNFTlRBR0UpCiAgICAgICAgICAgICAgICAgc2l6ZSA9IChwcmltaXRpdmVWYWx1ZS0+Z2V0Rmxv
YXRWYWx1ZSgpICogb2xkU2l6ZSkgLyAxMDAuMGY7CiAgICAgICAgICAgICBlbHNlCkBAIC00MDM5
LDcgKzQwMzksNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50CiAg
ICAgICAgICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IG1fY2hlY2tlci5tX2RvY3VtZW50LT5m
cmFtZSgpKQogICAgICAgICAgICAgICAgICAgICBtdWx0aXBsaWVyICo9IGZyYW1lLT50ZXh0Wm9v
bUZhY3RvcigpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgbGluZUhlaWdodCA9IExlbmd0
aChwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChzdHlsZSgpLCBtX3Jv
b3RFbGVtZW50U3R5bGUsICBtdWx0aXBsaWVyKSwgRml4ZWQpOworICAgICAgICAgICAgbGluZUhl
aWdodCA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oc3R5bGUoKSwgbV9y
b290RWxlbWVudFN0eWxlLCAgbXVsdGlwbGllcik7CiAgICAgICAgIH0gZWxzZSBpZiAodHlwZSA9
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0UpCiAgICAgICAgICAgICBsaW5lSGVp
Z2h0ID0gTGVuZ3RoKChtX3N0eWxlLT5mb250U2l6ZSgpICogcHJpbWl0aXZlVmFsdWUtPmdldElu
dFZhbHVlKCkpIC8gMTAwLCBGaXhlZCk7CiAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJp
bWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpCkBAIC00NTkzLDExICs0NTkzLDExIEBAIHZvaWQgQ1NT
U3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQKICAgICAgICAgaWYgKHBhaXItPmZpcnN0
KCktPnByaW1pdGl2ZVR5cGUoKSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BFUkNFTlRBR0Up
CiAgICAgICAgICAgICByYWRpdXNXaWR0aCA9IExlbmd0aChwYWlyLT5maXJzdCgpLT5nZXREb3Vi
bGVWYWx1ZSgpLCBQZXJjZW50KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmFkaXVzV2lk
dGggPSBMZW5ndGgobWF4KGludE1pbkZvckxlbmd0aCwgbWluKGludE1heEZvckxlbmd0aCwgcGFp
ci0+Zmlyc3QoKS0+Y29tcHV0ZUxlbmd0aEludChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUs
IHpvb21GYWN0b3IpKSksIEZpeGVkKTsKKyAgICAgICAgICAgIHJhZGl1c1dpZHRoID0gTGVuZ3Ro
KG1heChpbnRNaW5Gb3JMZW5ndGgsIG1pbihpbnRNYXhGb3JMZW5ndGgsIHBhaXItPmZpcnN0KCkt
PmNvbXB1dGVMZW5ndGg8aW50PihzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0
b3IpKSksIEZpeGVkKTsKICAgICAgICAgaWYgKHBhaXItPnNlY29uZCgpLT5wcmltaXRpdmVUeXBl
KCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKQogICAgICAgICAgICAgcmFk
aXVzSGVpZ2h0ID0gTGVuZ3RoKHBhaXItPnNlY29uZCgpLT5nZXREb3VibGVWYWx1ZSgpLCBQZXJj
ZW50KTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmFkaXVzSGVpZ2h0ID0gTGVuZ3RoKG1h
eChpbnRNaW5Gb3JMZW5ndGgsIG1pbihpbnRNYXhGb3JMZW5ndGgsIHBhaXItPnNlY29uZCgpLT5j
b21wdXRlTGVuZ3RoSW50KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvcikp
KSwgRml4ZWQpOworICAgICAgICAgICAgcmFkaXVzSGVpZ2h0ID0gTGVuZ3RoKG1heChpbnRNaW5G
b3JMZW5ndGgsIG1pbihpbnRNYXhGb3JMZW5ndGgsIHBhaXItPnNlY29uZCgpLT5jb21wdXRlTGVu
Z3RoPGludD4oc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKSkpLCBGaXhl
ZCk7CiAgICAgICAgIGludCB3aWR0aCA9IHJhZGl1c1dpZHRoLnZhbHVlKCk7CiAgICAgICAgIGlu
dCBoZWlnaHQgPSByYWRpdXNIZWlnaHQudmFsdWUoKTsKICAgICAgICAgaWYgKHdpZHRoIDwgMCB8
fCBoZWlnaHQgPCAwKQpAQCAtNDYzMCw3ICs0NjMwLDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9y
OjphcHBseVByb3BlcnR5KGludAogCiAgICAgY2FzZSBDU1NQcm9wZXJ0eU91dGxpbmVPZmZzZXQ6
CiAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9JTklUSUFMKG91dGxpbmVPZmZzZXQsIE91dGxp
bmVPZmZzZXQpCi0gICAgICAgIG1fc3R5bGUtPnNldE91dGxpbmVPZmZzZXQocHJpbWl0aXZlVmFs
dWUtPmNvbXB1dGVMZW5ndGhJbnQoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFj
dG9yKSk7CisgICAgICAgIG1fc3R5bGUtPnNldE91dGxpbmVPZmZzZXQocHJpbWl0aXZlVmFsdWUt
PmNvbXB1dGVMZW5ndGg8aW50PihzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0
b3IpKTsKICAgICAgICAgcmV0dXJuOwogICAgIGNhc2UgQ1NTUHJvcGVydHlJbWFnZVJlbmRlcmlu
ZzoKICAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKQEAgLTQ2NTgsMTAgKzQ2NTgsMTAgQEAg
dm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludAogICAgICAgICAgICAgaWYg
KCFjdXJyVmFsdWUtPmlzU2hhZG93VmFsdWUoKSkKICAgICAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgICAgIFNoYWRvd1ZhbHVlKiBpdGVtID0gc3RhdGljX2Nhc3Q8U2hhZG93VmFsdWUq
PihsaXN0LT5pdGVtV2l0aG91dEJvdW5kc0NoZWNrKGkpKTsKLSAgICAgICAgICAgIGludCB4ID0g
aXRlbS0+eC0+Y29tcHV0ZUxlbmd0aEludChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpv
b21GYWN0b3IpOwotICAgICAgICAgICAgaW50IHkgPSBpdGVtLT55LT5jb21wdXRlTGVuZ3RoSW50
KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7Ci0gICAgICAgICAgICBp
bnQgYmx1ciA9IGl0ZW0tPmJsdXIgPyBpdGVtLT5ibHVyLT5jb21wdXRlTGVuZ3RoSW50KHN0eWxl
KCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3RvcikgOiAwOwotICAgICAgICAgICAgaW50
IHNwcmVhZCA9IGl0ZW0tPnNwcmVhZCA/IGl0ZW0tPnNwcmVhZC0+Y29tcHV0ZUxlbmd0aEludChz
dHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpIDogMDsKKyAgICAgICAgICAg
IGludCB4ID0gaXRlbS0+eC0+Y29tcHV0ZUxlbmd0aDxpbnQ+KHN0eWxlKCksIG1fcm9vdEVsZW1l
bnRTdHlsZSwgem9vbUZhY3Rvcik7CisgICAgICAgICAgICBpbnQgeSA9IGl0ZW0tPnktPmNvbXB1
dGVMZW5ndGg8aW50PihzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOwor
ICAgICAgICAgICAgaW50IGJsdXIgPSBpdGVtLT5ibHVyID8gaXRlbS0+Ymx1ci0+Y29tcHV0ZUxl
bmd0aDxpbnQ+KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3RvcikgOiAwOwor
ICAgICAgICAgICAgaW50IHNwcmVhZCA9IGl0ZW0tPnNwcmVhZCA/IGl0ZW0tPnNwcmVhZC0+Y29t
cHV0ZUxlbmd0aDxpbnQ+KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvcikg
OiAwOwogICAgICAgICAgICAgU2hhZG93U3R5bGUgc2hhZG93U3R5bGUgPSBpdGVtLT5zdHlsZSAm
JiBpdGVtLT5zdHlsZS0+Z2V0SWRlbnQoKSA9PSBDU1NWYWx1ZUluc2V0ID8gSW5zZXQgOiBOb3Jt
YWw7CiAgICAgICAgICAgICBDb2xvciBjb2xvcjsKICAgICAgICAgICAgIGlmIChpdGVtLT5jb2xv
cikKQEAgLTQ2OTIsNyArNDY5Miw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9w
ZXJ0eShpbnQKICAgICAgICAgICAgIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UEVSQ0VOVEFHRSkKICAgICAgICAgICAgICAgICByZWZsZWN0aW9uLT5zZXRPZmZzZXQoTGVuZ3Ro
KHJlZmxlY3RWYWx1ZS0+b2Zmc2V0KCktPmdldERvdWJsZVZhbHVlKCksIFBlcmNlbnQpKTsKICAg
ICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZWZsZWN0aW9uLT5zZXRPZmZzZXQoTGVu
Z3RoKHJlZmxlY3RWYWx1ZS0+b2Zmc2V0KCktPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoc3R5
bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKSwgRml4ZWQpKTsKKyAgICAgICAg
ICAgICAgICByZWZsZWN0aW9uLT5zZXRPZmZzZXQocmVmbGVjdFZhbHVlLT5vZmZzZXQoKS0+Y29t
cHV0ZUxlbmd0aDxMZW5ndGg+KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rv
cikpOwogICAgICAgICB9CiAgICAgICAgIE5pbmVQaWVjZUltYWdlIG1hc2s7CiAgICAgICAgIG1h
cE5pbmVQaWVjZUltYWdlKHByb3BlcnR5LCByZWZsZWN0VmFsdWUtPm1hc2soKSwgbWFzayk7CkBA
IC00NzkxLDcgKzQ3OTEsNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHko
aW50CiAgICAgICAgICAgICBtX3N0eWxlLT5zZXRIYXNOb3JtYWxDb2x1bW5HYXAoKTsKICAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBtX3N0eWxlLT5zZXRDb2x1bW5HYXAo
cHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhGbG9hdChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50
U3R5bGUsIHpvb21GYWN0b3IpKTsKKyAgICAgICAgbV9zdHlsZS0+c2V0Q29sdW1uR2FwKHByaW1p
dGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoPGZsb2F0PihzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5
bGUsIHpvb21GYWN0b3IpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIENTU1By
b3BlcnR5V2Via2l0Q29sdW1uU3BhbjogewpAQCAtNDgxMCw3ICs0ODEwLDcgQEAgdm9pZCBDU1NT
dHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludAogICAgICAgICAgICAgbV9zdHlsZS0+c2V0
SGFzQXV0b0NvbHVtbldpZHRoKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KLSAg
ICAgICAgbV9zdHlsZS0+c2V0Q29sdW1uV2lkdGgocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5n
dGhGbG9hdChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpKTsKKyAgICAg
ICAgbV9zdHlsZS0+c2V0Q29sdW1uV2lkdGgocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGg8
ZmxvYXQ+KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3RvcikpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxlU3R5
bGU6CkBAIC01MTEwLDExICs1MTEwLDExIEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQ
cm9wZXJ0eShpbnQKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICo9IDM7CiAgICAgICAgICAg
ICAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVUaGlj
aykKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICo9IDU7Ci0gICAgICAgICAgICAgICAgd2lk
dGggPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJlc3VsdCwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19FTVMpLT5jb21wdXRlTGVuZ3RoRmxvYXQoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxl
LCB6b29tRmFjdG9yKTsKKyAgICAgICAgICAgICAgICB3aWR0aCA9IENTU1ByaW1pdGl2ZVZhbHVl
OjpjcmVhdGUocmVzdWx0LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUyktPmNvbXB1dGVMZW5n
dGg8ZmxvYXQ+KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBkZWZhdWx0Ogot
ICAgICAgICAgICAgICAgIHdpZHRoID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhGbG9h
dChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOworICAgICAgICAgICAg
ICAgIHdpZHRoID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KHN0eWxlKCks
IG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7CiAgICAgICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KICAgICAgICAgbV9zdHlsZS0+c2V0VGV4dFN0cm9rZVdpZHRoKHdpZHRoKTsK
QEAgLTUxNjMsNyArNTE2Myw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0
eShpbnQKICAgICAgICAgICAgIHBlcnNwZWN0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxmbG9hdD4o
cHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoc3R5bGUoKSwgbV9yb290
RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKSk7CiAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0gQ1NT
UHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpIHsKICAgICAgICAgICAgIC8vIEZvciBiYWNrd2Fy
ZCBjb21wYXRpYmlsaXR5LCB0cmVhdCB2YWx1ZWxlc3MgbnVtYmVycyBhcyBweC4KLSAgICAgICAg
ICAgIHBlcnNwZWN0aXZlVmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHByaW1pdGl2
ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKS0+Y29t
cHV0ZUxlbmd0aEZsb2F0KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7
CisgICAgICAgICAgICBwZXJzcGVjdGl2ZVZhbHVlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0
ZShwcmltaXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNT
U19QWCktPmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwg
em9vbUZhY3Rvcik7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgcmV0dXJuOwogCkBAIC01
NTI4LDggKzU1MjgsOCBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UGFnZVNpemVQcm9w
CiAgICAgICAgICAgICAvLyA8bGVuZ3RoPnsyfQogICAgICAgICAgICAgaWYgKCFDU1NQcmltaXRp
dmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBlMSkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwotICAgICAgICAgICAgd2lkdGggPSBMZW5ndGgocHJpbWl0aXZlVmFsdWUwLT5jb21wdXRlTGVu
Z3RoSW50Rm9yTGVuZ3RoKHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSksIEZpeGVkKTsKLSAg
ICAgICAgICAgIGhlaWdodCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZTEtPmNvbXB1dGVMZW5ndGhJ
bnRGb3JMZW5ndGgoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlKSwgRml4ZWQpOworICAgICAg
ICAgICAgd2lkdGggPSBwcmltaXRpdmVWYWx1ZTAtPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihzdHls
ZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUpOworICAgICAgICAgICAgaGVpZ2h0ID0gcHJpbWl0aXZl
VmFsdWUxLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxl
KTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIC8vIDxwYWdlLXNpemU+IDxvcmllbnRh
dGlvbj4KICAgICAgICAgICAgIC8vIFRoZSB2YWx1ZSBvcmRlciBpcyBndWFyYW50ZWVkLiBTZWUg
Q1NTUGFyc2VyOjpwYXJzZVNpemVQYXJhbWV0ZXIuCkBAIC01NTQ3LDcgKzU1NDcsNyBAQCB2b2lk
IENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UGFnZVNpemVQcm9wCiAgICAgICAgIGlmIChDU1NQcmlt
aXRpdmVWYWx1ZTo6aXNVbml0VHlwZUxlbmd0aCh0eXBlKSkgewogICAgICAgICAgICAgLy8gPGxl
bmd0aD4KICAgICAgICAgICAgIHBhZ2VTaXplVHlwZSA9IFBBR0VfU0laRV9SRVNPTFZFRDsKLSAg
ICAgICAgICAgIHdpZHRoID0gaGVpZ2h0ID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5jb21wdXRl
TGVuZ3RoSW50Rm9yTGVuZ3RoKHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSksIEZpeGVkKTsK
KyAgICAgICAgICAgIHdpZHRoID0gaGVpZ2h0ID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5n
dGg8TGVuZ3RoPihzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUpOwogICAgICAgICB9IGVsc2Ug
ewogICAgICAgICAgICAgaWYgKHR5cGUgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JREVOVCkK
ICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC01NjQ4LDEyICs1NjQ4LDEyIEBAIGJvb2wgQ1NT
U3R5bGVTZWxlY3Rvcjo6cGFnZVNpemVGcm9tTmFtZSgKIAogTGVuZ3RoIENTU1N0eWxlU2VsZWN0
b3I6Om1tTGVuZ3RoKGRvdWJsZSBtbSkgY29uc3QKIHsKLSAgICByZXR1cm4gTGVuZ3RoKENTU1By
aW1pdGl2ZVZhbHVlOjpjcmVhdGUobW0sIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfTU0pLT5jb21w
dXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSksIEZpeGVk
KTsKKyAgICByZXR1cm4gQ1NTUHJpbWl0aXZlVmFsdWU6OmNyZWF0ZShtbSwgQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19NTSktPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihzdHlsZSgpLCBtX3Jvb3RFbGVt
ZW50U3R5bGUpOwogfQogCiBMZW5ndGggQ1NTU3R5bGVTZWxlY3Rvcjo6aW5jaExlbmd0aChkb3Vi
bGUgaW5jaCkgY29uc3QKIHsKLSAgICByZXR1cm4gTGVuZ3RoKENTU1ByaW1pdGl2ZVZhbHVlOjpj
cmVhdGUoaW5jaCwgQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19JTiktPmNvbXB1dGVMZW5ndGhJbnRG
b3JMZW5ndGgoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlKSwgRml4ZWQpOworICAgIHJldHVy
biBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKGluY2gsIENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
SU4pLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlKTsK
IH0KIAogdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsQXR0YWNobWVudChDU1NQcm9wZXJ0
eUlELCBGaWxsTGF5ZXIqIGxheWVyLCBDU1NWYWx1ZSogdmFsdWUpCkBAIC01ODIwLDcgKzU4MjAs
NyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6Om1hcEZpbGxTaXplKENTU1ByCiAgICAgaWYgKGZp
cnN0VHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VOS05PV04pCiAgICAgICAgIGZpcnN0
TGVuZ3RoID0gTGVuZ3RoKEF1dG8pOwogICAgIGVsc2UgaWYgKENTU1ByaW1pdGl2ZVZhbHVlOjpp
c1VuaXRUeXBlTGVuZ3RoKGZpcnN0VHlwZSkpCi0gICAgICAgIGZpcnN0TGVuZ3RoID0gTGVuZ3Ro
KGZpcnN0LT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKHN0eWxlKCksIG1fcm9vdEVsZW1lbnRT
dHlsZSwgem9vbUZhY3RvciksIEZpeGVkKTsKKyAgICAgICAgZmlyc3RMZW5ndGggPSBmaXJzdC0+
Y29tcHV0ZUxlbmd0aDxMZW5ndGg+KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZh
Y3Rvcik7CiAgICAgZWxzZSBpZiAoZmlyc3RUeXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1Nf
UEVSQ0VOVEFHRSkKICAgICAgICAgZmlyc3RMZW5ndGggPSBMZW5ndGgoZmlyc3QtPmdldERvdWJs
ZVZhbHVlKCksIFBlcmNlbnQpOwogICAgIGVsc2UKQEAgLTU4MjksNyArNTgyOSw3IEBAIHZvaWQg
Q1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbFNpemUoQ1NTUHIKICAgICBpZiAoc2Vjb25kVHlwZSA9
PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1VOS05PV04pCiAgICAgICAgIHNlY29uZExlbmd0aCA9
IExlbmd0aChBdXRvKTsKICAgICBlbHNlIGlmIChDU1NQcmltaXRpdmVWYWx1ZTo6aXNVbml0VHlw
ZUxlbmd0aChzZWNvbmRUeXBlKSkKLSAgICAgICAgc2Vjb25kTGVuZ3RoID0gTGVuZ3RoKHNlY29u
ZC0+Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUs
IHpvb21GYWN0b3IpLCBGaXhlZCk7CisgICAgICAgIHNlY29uZExlbmd0aCA9IHNlY29uZC0+Y29t
cHV0ZUxlbmd0aDxMZW5ndGg+KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rv
cik7CiAgICAgZWxzZSBpZiAoc2Vjb25kVHlwZSA9PSBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BF
UkNFTlRBR0UpCiAgICAgICAgIHNlY29uZExlbmd0aCA9IExlbmd0aChzZWNvbmQtPmdldERvdWJs
ZVZhbHVlKCksIFBlcmNlbnQpOwogICAgIGVsc2UKQEAgLTU4NTYsNyArNTg1Niw3IEBAIHZvaWQg
Q1NTU3R5bGVTZWxlY3Rvcjo6bWFwRmlsbFhQb3NpdGlvbigKICAgICBMZW5ndGggbDsKICAgICBp
bnQgdHlwZSA9IHByaW1pdGl2ZVZhbHVlLT5wcmltaXRpdmVUeXBlKCk7CiAgICAgaWYgKENTU1By
aW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBlTGVuZ3RoKHR5cGUpKQotICAgICAgICBsID0gTGVuZ3Ro
KHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKHN0eWxlKCksIG1fcm9v
dEVsZW1lbnRTdHlsZSwgem9vbUZhY3RvciksIEZpeGVkKTsKKyAgICAgICAgbCA9IHByaW1pdGl2
ZVZhbHVlLT5jb21wdXRlTGVuZ3RoPExlbmd0aD4oc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxl
LCB6b29tRmFjdG9yKTsKICAgICBlbHNlIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpD
U1NfUEVSQ0VOVEFHRSkKICAgICAgICAgbCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Z2V0RG91
YmxlVmFsdWUoKSwgUGVyY2VudCk7CiAgICAgZWxzZQpAQCAtNTg4MCw3ICs1ODgwLDcgQEAgdm9p
ZCBDU1NTdHlsZVNlbGVjdG9yOjptYXBGaWxsWVBvc2l0aW9uKAogICAgIExlbmd0aCBsOwogICAg
IGludCB0eXBlID0gcHJpbWl0aXZlVmFsdWUtPnByaW1pdGl2ZVR5cGUoKTsKICAgICBpZiAoQ1NT
UHJpbWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgodHlwZSkpCi0gICAgICAgIGwgPSBMZW5n
dGgocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoc3R5bGUoKSwgbV9y
b290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKSwgRml4ZWQpOworICAgICAgICBsID0gcHJpbWl0
aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGg8TGVuZ3RoPihzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5
bGUsIHpvb21GYWN0b3IpOwogICAgIGVsc2UgaWYgKHR5cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19QRVJDRU5UQUdFKQogICAgICAgICBsID0gTGVuZ3RoKHByaW1pdGl2ZVZhbHVlLT5nZXRE
b3VibGVWYWx1ZSgpLCBQZXJjZW50KTsKICAgICBlbHNlCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9j
c3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
Y3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCShyZXZpc2lvbiA4NzQ1MykKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzEx
LDcgKzMxMSw3IEBAIHN0YXRpYyBib29sIGRldmljZV9oZWlnaHRNZWRpYUZlYXR1cmVFdmEKICAg
ICBpZiAodmFsdWUpIHsKICAgICAgICAgRmxvYXRSZWN0IHNnID0gc2NyZWVuUmVjdChmcmFtZS0+
cGFnZSgpLT5tYWluRnJhbWUoKS0+dmlldygpKTsKICAgICAgICAgUmVuZGVyU3R5bGUqIHJvb3RT
dHlsZSA9IGZyYW1lLT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKS0+cmVuZGVyU3R5bGUo
KTsKLSAgICAgICAgcmV0dXJuIHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkgJiYgY29tcGFyZVZh
bHVlKHN0YXRpY19jYXN0PGludD4oc2cuaGVpZ2h0KCkpLCBzdGF0aWNfY2FzdDxDU1NQcmltaXRp
dmVWYWx1ZSo+KHZhbHVlKS0+Y29tcHV0ZUxlbmd0aEludChzdHlsZSwgcm9vdFN0eWxlKSwgb3Ap
OworICAgICAgICByZXR1cm4gdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSAmJiBjb21wYXJlVmFs
dWUoc3RhdGljX2Nhc3Q8aW50PihzZy5oZWlnaHQoKSksIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2
ZVZhbHVlKj4odmFsdWUpLT5jb21wdXRlTGVuZ3RoPGludD4oc3R5bGUsIHJvb3RTdHlsZSksIG9w
KTsKICAgICB9CiAgICAgLy8gKHssbWluLSxtYXgtfWRldmljZS1oZWlnaHQpCiAgICAgLy8gYXNz
dW1lIGlmIHdlIGhhdmUgYSBkZXZpY2UsIGFzc3VtZSBub24temVybwpAQCAtMzIzLDcgKzMyMyw3
IEBAIHN0YXRpYyBib29sIGRldmljZV93aWR0aE1lZGlhRmVhdHVyZUV2YWwKICAgICBpZiAodmFs
dWUpIHsKICAgICAgICAgRmxvYXRSZWN0IHNnID0gc2NyZWVuUmVjdChmcmFtZS0+cGFnZSgpLT5t
YWluRnJhbWUoKS0+dmlldygpKTsKICAgICAgICAgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSA9IGZy
YW1lLT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKS0+cmVuZGVyU3R5bGUoKTsKLSAgICAg
ICAgcmV0dXJuIHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkgJiYgY29tcGFyZVZhbHVlKHN0YXRp
Y19jYXN0PGludD4oc2cud2lkdGgoKSksIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4o
dmFsdWUpLT5jb21wdXRlTGVuZ3RoSW50KHN0eWxlLCByb290U3R5bGUpLCBvcCk7CisgICAgICAg
IHJldHVybiB2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpICYmIGNvbXBhcmVWYWx1ZShzdGF0aWNf
Y2FzdDxpbnQ+KHNnLndpZHRoKCkpLCBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZh
bHVlKS0+Y29tcHV0ZUxlbmd0aDxpbnQ+KHN0eWxlLCByb290U3R5bGUpLCBvcCk7CiAgICAgfQog
ICAgIC8vICh7LG1pbi0sbWF4LX1kZXZpY2Utd2lkdGgpCiAgICAgLy8gYXNzdW1lIGlmIHdlIGhh
dmUgYSBkZXZpY2UsIGFzc3VtZSBub24temVybwpAQCAtMzM2LDcgKzMzNiw3IEBAIHN0YXRpYyBi
b29sIGhlaWdodE1lZGlhRmVhdHVyZUV2YWwoQ1NTVmEKICAgICBSZW5kZXJTdHlsZSogcm9vdFN0
eWxlID0gZnJhbWUtPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpLT5yZW5kZXJTdHlsZSgp
OwogCiAgICAgaWYgKHZhbHVlKQotICAgICAgICByZXR1cm4gdmFsdWUtPmlzUHJpbWl0aXZlVmFs
dWUoKSAmJiBjb21wYXJlVmFsdWUodmlldy0+bGF5b3V0SGVpZ2h0KCksIHN0YXRpY19jYXN0PENT
U1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpLT5jb21wdXRlTGVuZ3RoSW50KHN0eWxlLCByb290U3R5
bGUpLCBvcCk7CisgICAgICAgIHJldHVybiB2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpICYmIGNv
bXBhcmVWYWx1ZSh2aWV3LT5sYXlvdXRIZWlnaHQoKSwgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZl
VmFsdWUqPih2YWx1ZSktPmNvbXB1dGVMZW5ndGg8aW50PihzdHlsZSwgcm9vdFN0eWxlKSwgb3Ap
OwogCiAgICAgcmV0dXJuIHZpZXctPmxheW91dEhlaWdodCgpICE9IDA7CiB9CkBAIC0zNDcsNyAr
MzQ3LDcgQEAgc3RhdGljIGJvb2wgd2lkdGhNZWRpYUZlYXR1cmVFdmFsKENTU1ZhbAogICAgIFJl
bmRlclN0eWxlKiByb290U3R5bGUgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50
KCktPnJlbmRlclN0eWxlKCk7CiAKICAgICBpZiAodmFsdWUpCi0gICAgICAgIHJldHVybiB2YWx1
ZS0+aXNQcmltaXRpdmVWYWx1ZSgpICYmIGNvbXBhcmVWYWx1ZSh2aWV3LT5sYXlvdXRXaWR0aCgp
LCBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKS0+Y29tcHV0ZUxlbmd0aElu
dChzdHlsZSwgcm9vdFN0eWxlKSwgb3ApOworICAgICAgICByZXR1cm4gdmFsdWUtPmlzUHJpbWl0
aXZlVmFsdWUoKSAmJiBjb21wYXJlVmFsdWUodmlldy0+bGF5b3V0V2lkdGgoKSwgc3RhdGljX2Nh
c3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSktPmNvbXB1dGVMZW5ndGg8aW50PihzdHlsZSwg
cm9vdFN0eWxlKSwgb3ApOwogCiAgICAgcmV0dXJuIHZpZXctPmxheW91dFdpZHRoKCkgIT0gMDsK
IH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NTdHlsZVNlbGVjdG9yLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NTU3R5bGVTZWxlY3Rvci5jcHAJKHJl
dmlzaW9uIDg3NDUzKQorKysgU291cmNlL1dlYkNvcmUvY3NzL1NWR0NTU1N0eWxlU2VsZWN0b3Iu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NzAsOSArNTcwLDkgQEAgdm9pZCBDU1NTdHlsZVNlbGVj
dG9yOjphcHBseVNWR1Byb3BlcnR5KAogICAgICAgICAgICAgaWYgKCFmaXJzdFZhbHVlLT5pc1No
YWRvd1ZhbHVlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgU2hhZG93
VmFsdWUqIGl0ZW0gPSBzdGF0aWNfY2FzdDxTaGFkb3dWYWx1ZSo+KGZpcnN0VmFsdWUpOwotICAg
ICAgICAgICAgaW50IHggPSBpdGVtLT54LT5jb21wdXRlTGVuZ3RoSW50KHN0eWxlKCksIG1fcm9v
dEVsZW1lbnRTdHlsZSk7Ci0gICAgICAgICAgICBpbnQgeSA9IGl0ZW0tPnktPmNvbXB1dGVMZW5n
dGhJbnQoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlKTsKLSAgICAgICAgICAgIGludCBibHVy
ID0gaXRlbS0+Ymx1ciA/IGl0ZW0tPmJsdXItPmNvbXB1dGVMZW5ndGhJbnQoc3R5bGUoKSwgbV9y
b290RWxlbWVudFN0eWxlKSA6IDA7CisgICAgICAgICAgICBpbnQgeCA9IGl0ZW0tPngtPmNvbXB1
dGVMZW5ndGg8aW50PihzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUpOworICAgICAgICAgICAg
aW50IHkgPSBpdGVtLT55LT5jb21wdXRlTGVuZ3RoPGludD4oc3R5bGUoKSwgbV9yb290RWxlbWVu
dFN0eWxlKTsKKyAgICAgICAgICAgIGludCBibHVyID0gaXRlbS0+Ymx1ciA/IGl0ZW0tPmJsdXIt
PmNvbXB1dGVMZW5ndGg8aW50PihzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUpIDogMDsKICAg
ICAgICAgICAgIENvbG9yIGNvbG9yOwogICAgICAgICAgICAgaWYgKGl0ZW0tPmNvbG9yKQogICAg
ICAgICAgICAgICAgIGNvbG9yID0gZ2V0Q29sb3JGcm9tUHJpbWl0aXZlVmFsdWUoaXRlbS0+Y29s
b3IuZ2V0KCkpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>96704</attachid>
            <date>2011-06-10 00:38:33 -0700</date>
            <delta_ts>2011-06-10 11:17:33 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-61612-20110610173830.patch</filename>
            <type>text/plain</type>
            <size>21749</size>
            <attacher name="Luke Macpherson">macpherson</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDg4NTIyKQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTEtMDYtMDkgIEx1a2UgTWFj
cGhlcnNvbiAgIDxtYWNwaGVyc29uQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBFcmljIFNlaWRlbC4KKworICAgICAgICBDbGVhbiB1cCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29t
cHV0ZUxlbmd0aCoKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTYxNjEyCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIGFzIG5vIGZ1bmN0aW9uYWxpdHkgY2hh
bmdlZC4KKworICAgICAgICAqIGNzcy9DU1NHcmFkaWVudFZhbHVlLmNwcDoKKyAgICAgICAgVXNl
IG5ldyBjb21wdXRlTGVuZ3RoIGZ1bmN0aW9ucy4KKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZl
VmFsdWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVM
ZW5ndGhJbnRGb3JMZW5ndGgpOgorICAgICAgICBSZWR1Y2UgdG8gYSBzaW5nbGUgZnVuY3Rpb24g
dXNpbmcgZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzLgorICAgICAgICAoV2ViQ29yZTo6Q1NTUHJp
bWl0aXZlVmFsdWU6OmNvbXB1dGVMZW5ndGgpOgorICAgICAgICBSZWRlZmluZSBleGlzdGluZyBm
dW5jdGlvbnMgd2l0aCBzZXBhcmF0ZSBuYW1lcyBhcyBhIHNpbmdsZSBmdW5jdGlvbiB1c2luZyB0
ZW1wbGF0ZWQgZnVuY3Rpb24gc3BlY2lhbGl6YXRpb24uCisgICAgICAgICogY3NzL0NTU1ByaW1p
dGl2ZVZhbHVlLmg6CisgICAgICAgIFByb3RvdHlwZXMgZm9yIGNvbXB1dGVMZW5ndGhJbnRGb3JM
ZW5ndGggYW5kIGNvbXB1dGVMZW5ndGguCisgICAgICAgICogY3NzL0NTU1N0eWxlQXBwbHlQcm9w
ZXJ0eS5jcHA6CisgICAgICAgIFVzZSBuZXcgY29tcHV0ZUxlbmd0aCBmdW5jdGlvbnMuCisgICAg
ICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICBVc2UgbmV3IGNvbXB1dGVM
ZW5ndGggZnVuY3Rpb25zLgorICAgICAgICAqIGNzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcDoK
KyAgICAgICAgVXNlIG5ldyBjb21wdXRlTGVuZ3RoIGZ1bmN0aW9ucy4KKyAgICAgICAgKiBjc3Mv
U1ZHQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAgIFVzZSBuZXcgY29tcHV0ZUxlbmd0aCBm
dW5jdGlvbnMuCisKIDIwMTEtMDYtMDkgIEh5b3dvbiBLaW0gIDxodzEwMDgua2ltQHNhbXN1bmcu
Y29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFudG9uaW8gR29tZXMuCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9jc3MvQ1NTR3JhZGllbnRWYWx1ZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YkNvcmUvY3NzL0NTU0dyYWRpZW50VmFsdWUuY3BwCShyZXZpc2lvbiA4ODUyMikKKysrIFNvdXJj
ZS9XZWJDb3JlL2Nzcy9DU1NHcmFkaWVudFZhbHVlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU5
LDcgKzE1OSw3IEBAIHZvaWQgQ1NTR3JhZGllbnRWYWx1ZTo6YWRkU3RvcHMoR3JhZGllbnQKICAg
ICAgICAgICAgIGlmICh0eXBlID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkK
ICAgICAgICAgICAgICAgICBzdG9wc1tpXS5vZmZzZXQgPSBzdG9wLm1fcG9zaXRpb24tPmdldEZs
b2F0VmFsdWUoQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKSAvIDEwMDsKICAgICAg
ICAgICAgIGVsc2UgaWYgKENTU1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBlTGVuZ3RoKHR5cGUp
KSB7Ci0gICAgICAgICAgICAgICAgZmxvYXQgbGVuZ3RoID0gc3RvcC5tX3Bvc2l0aW9uLT5jb21w
dXRlTGVuZ3RoRmxvYXQoc3R5bGUsIHJvb3RTdHlsZSwgc3R5bGUtPmVmZmVjdGl2ZVpvb20oKSk7
CisgICAgICAgICAgICAgICAgZmxvYXQgbGVuZ3RoID0gc3RvcC5tX3Bvc2l0aW9uLT5jb21wdXRl
TGVuZ3RoPGZsb2F0PihzdHlsZSwgcm9vdFN0eWxlLCBzdHlsZS0+ZWZmZWN0aXZlWm9vbSgpKTsK
ICAgICAgICAgICAgICAgICBpZiAoIWNvbXB1dGVkR3JhZGllbnRMZW5ndGgpIHsKICAgICAgICAg
ICAgICAgICAgICAgRmxvYXRTaXplIGdyYWRpZW50U2l6ZShncmFkaWVudFN0YXJ0IC0gZ3JhZGll
bnRFbmQpOwogICAgICAgICAgICAgICAgICAgICBncmFkaWVudExlbmd0aCA9IGdyYWRpZW50U2l6
ZS5kaWFnb25hbExlbmd0aCgpOwpAQCAtMzkxLDcgKzM5MSw3IEBAIHN0YXRpYyBmbG9hdCBwb3Np
dGlvbkZyb21WYWx1ZShDU1NQcmltaXQKICAgICAgICAgfQogCiAgICAgZGVmYXVsdDoKLSAgICAg
ICAgcmV0dXJuIHZhbHVlLT5jb21wdXRlTGVuZ3RoRmxvYXQoc3R5bGUsIHJvb3RTdHlsZSwgem9v
bUZhY3Rvcik7CisgICAgICAgIHJldHVybiB2YWx1ZS0+Y29tcHV0ZUxlbmd0aDxmbG9hdD4oc3R5
bGUsIHJvb3RTdHlsZSwgem9vbUZhY3Rvcik7CiAgICAgfQogfQogCkBAIC02NDQsNyArNjQ0LDcg
QEAgZmxvYXQgQ1NTUmFkaWFsR3JhZGllbnRWYWx1ZTo6cmVzb2x2ZVJhZAogICAgIGVsc2UgaWYg
KHdpZHRoT3JIZWlnaHQgJiYgcmFkaXVzLT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU19QRVJDRU5UQUdFKQogICAgICAgICByZXN1bHQgPSAqd2lkdGhPckhlaWdodCAq
IHJhZGl1cy0+Z2V0RmxvYXRWYWx1ZSgpIC8gMTAwOwogICAgIGVsc2UKLSAgICAgICAgcmVzdWx0
ID0gcmFkaXVzLT5jb21wdXRlTGVuZ3RoRmxvYXQoc3R5bGUsIHJvb3RTdHlsZSwgem9vbUZhY3Rv
cik7CisgICAgICAgIHJlc3VsdCA9IHJhZGl1cy0+Y29tcHV0ZUxlbmd0aDxmbG9hdD4oc3R5bGUs
IHJvb3RTdHlsZSwgem9vbUZhY3Rvcik7CiAgCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcAkocmV2aXNpb24gODg1MjIp
CisrKyBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0yNDksNDYgKzI0OSwzNiBAQCB2b2lkIENTU1ByaW1pdGl2ZVZhbHVlOjpjbGVhbnVw
KCkKICAgICB9CiB9CiAKLWludCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aEludChS
ZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUpCit0ZW1wbGF0ZTw+IGlu
dCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aChSZW5kZXJTdHlsZSogc3R5bGUsIFJl
bmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyLCBib29sIGNvbXB1dGluZ0Zv
bnRTaXplKQogewotICAgIHJldHVybiByb3VuZEZvckltcHJlY2lzZUNvbnZlcnNpb248aW50LCBJ
TlRfTUFYLCBJTlRfTUlOPihjb21wdXRlTGVuZ3RoRG91YmxlKHN0eWxlLCByb290U3R5bGUpKTsK
LX0KLQotaW50IENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoSW50KFJlbmRlclN0eWxl
KiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRpcGxpZXIpCi17Ci0g
ICAgcmV0dXJuIHJvdW5kRm9ySW1wcmVjaXNlQ29udmVyc2lvbjxpbnQsIElOVF9NQVgsIElOVF9N
SU4+KGNvbXB1dGVMZW5ndGhEb3VibGUoc3R5bGUsIHJvb3RTdHlsZSwgbXVsdGlwbGllcikpOwor
ICAgIHJldHVybiByb3VuZEZvckltcHJlY2lzZUNvbnZlcnNpb248aW50LCBJTlRfTUFYLCBJTlRf
TUlOPihjb21wdXRlTGVuZ3RoRG91YmxlKHN0eWxlLCByb290U3R5bGUsIG11bHRpcGxpZXIsIGNv
bXB1dGluZ0ZvbnRTaXplKSk7CiB9CiAKIC8vIExlbmd0aHMgZXhwZWN0IGFuIGludCB0aGF0IGlz
IG9ubHkgMjgtYml0cywgc28gd2UgaGF2ZSB0byBjaGVjayBmb3IgYQogLy8gZGlmZmVyZW50IG92
ZXJmbG93LgotaW50IENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3Ro
KFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSkKLXsKLSAgICByZXR1
cm4gcm91bmRGb3JJbXByZWNpc2VDb252ZXJzaW9uPGludCwgaW50TWF4Rm9yTGVuZ3RoLCBpbnRN
aW5Gb3JMZW5ndGg+KGNvbXB1dGVMZW5ndGhEb3VibGUoc3R5bGUsIHJvb3RTdHlsZSkpOwotfQot
Ci1pbnQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoUmVuZGVy
U3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVsdGlwbGllcikK
K2ludCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChSZW5kZXJT
dHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyLCBi
b29sIGNvbXB1dGluZ0ZvbnRTaXplKQogewotICAgIHJldHVybiByb3VuZEZvckltcHJlY2lzZUNv
bnZlcnNpb248aW50LCBpbnRNYXhGb3JMZW5ndGgsIGludE1pbkZvckxlbmd0aD4oY29tcHV0ZUxl
bmd0aERvdWJsZShzdHlsZSwgcm9vdFN0eWxlLCBtdWx0aXBsaWVyKSk7CisgICAgcmV0dXJuIHJv
dW5kRm9ySW1wcmVjaXNlQ29udmVyc2lvbjxpbnQsIGludE1heEZvckxlbmd0aCwgaW50TWluRm9y
TGVuZ3RoPihjb21wdXRlTGVuZ3RoRG91YmxlKHN0eWxlLCByb290U3R5bGUsIG11bHRpcGxpZXIs
IGNvbXB1dGluZ0ZvbnRTaXplKSk7CiB9CiAKLXNob3J0IENTU1ByaW1pdGl2ZVZhbHVlOjpjb21w
dXRlTGVuZ3RoU2hvcnQoUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxl
KQordGVtcGxhdGU8PiBMZW5ndGggQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVMZW5ndGgoUmVu
ZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVsdGlwbGll
ciwgYm9vbCBjb21wdXRpbmdGb250U2l6ZSkKIHsKLSAgICByZXR1cm4gcm91bmRGb3JJbXByZWNp
c2VDb252ZXJzaW9uPHNob3J0LCBTSFJUX01BWCwgU0hSVF9NSU4+KGNvbXB1dGVMZW5ndGhEb3Vi
bGUoc3R5bGUsIHJvb3RTdHlsZSkpOworICAgIHJldHVybiBMZW5ndGgoY29tcHV0ZUxlbmd0aElu
dEZvckxlbmd0aChzdHlsZSwgcm9vdFN0eWxlLCBtdWx0aXBsaWVyLCBjb21wdXRpbmdGb250U2l6
ZSksIEZpeGVkKTsKIH0KIAotc2hvcnQgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVMZW5ndGhT
aG9ydChSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBt
dWx0aXBsaWVyKQordGVtcGxhdGU8PiBzaG9ydCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0ZUxl
bmd0aChSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBt
dWx0aXBsaWVyLCBib29sIGNvbXB1dGluZ0ZvbnRTaXplKQogewotICAgIHJldHVybiByb3VuZEZv
ckltcHJlY2lzZUNvbnZlcnNpb248c2hvcnQsIFNIUlRfTUFYLCBTSFJUX01JTj4oY29tcHV0ZUxl
bmd0aERvdWJsZShzdHlsZSwgcm9vdFN0eWxlLCBtdWx0aXBsaWVyKSk7CisgICAgcmV0dXJuIHJv
dW5kRm9ySW1wcmVjaXNlQ29udmVyc2lvbjxzaG9ydCwgU0hSVF9NQVgsIFNIUlRfTUlOPihjb21w
dXRlTGVuZ3RoRG91YmxlKHN0eWxlLCByb290U3R5bGUsIG11bHRpcGxpZXIsIGNvbXB1dGluZ0Zv
bnRTaXplKSk7CiB9CiAKLWZsb2F0IENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoRmxv
YXQoUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBib29sIGNvbXB1
dGluZ0ZvbnRTaXplKQordGVtcGxhdGU8PiBmbG9hdCBDU1NQcmltaXRpdmVWYWx1ZTo6Y29tcHV0
ZUxlbmd0aChSZW5kZXJTdHlsZSogc3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJs
ZSBtdWx0aXBsaWVyLCBib29sIGNvbXB1dGluZ0ZvbnRTaXplKQogewotICAgIHJldHVybiBzdGF0
aWNfY2FzdDxmbG9hdD4oY29tcHV0ZUxlbmd0aERvdWJsZShzdHlsZSwgcm9vdFN0eWxlLCAxLjAs
IGNvbXB1dGluZ0ZvbnRTaXplKSk7CisgICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0Pihjb21w
dXRlTGVuZ3RoRG91YmxlKHN0eWxlLCByb290U3R5bGUsIG11bHRpcGxpZXIsIGNvbXB1dGluZ0Zv
bnRTaXplKSk7CiB9CiAKLWZsb2F0IENTU1ByaW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoRmxv
YXQoUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBkb3VibGUgbXVs
dGlwbGllciwgYm9vbCBjb21wdXRpbmdGb250U2l6ZSkKK3RlbXBsYXRlPD4gZG91YmxlIENTU1By
aW1pdGl2ZVZhbHVlOjpjb21wdXRlTGVuZ3RoKFJlbmRlclN0eWxlKiBzdHlsZSwgUmVuZGVyU3R5
bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRpcGxpZXIsIGJvb2wgY29tcHV0aW5nRm9udFNpemUp
CiB7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGZsb2F0Pihjb21wdXRlTGVuZ3RoRG91YmxlKHN0
eWxlLCByb290U3R5bGUsIG11bHRpcGxpZXIsIGNvbXB1dGluZ0ZvbnRTaXplKSk7CisgICAgcmV0
dXJuIGNvbXB1dGVMZW5ndGhEb3VibGUoc3R5bGUsIHJvb3RTdHlsZSwgbXVsdGlwbGllciwgY29t
cHV0aW5nRm9udFNpemUpOwogfQogCiBkb3VibGUgQ1NTUHJpbWl0aXZlVmFsdWU6OmNvbXB1dGVM
ZW5ndGhEb3VibGUoUmVuZGVyU3R5bGUqIHN0eWxlLCBSZW5kZXJTdHlsZSogcm9vdFN0eWxlLCBk
b3VibGUgbXVsdGlwbGllciwgYm9vbCBjb21wdXRpbmdGb250U2l6ZSkKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCShyZXZpc2lvbiA4ODUyMikKKysrIFNvdXJjZS9X
ZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsMTUg
KzEzNiw4IEBAIHB1YmxpYzoKICAgICAgKiB0aGlzIGlzIHNjcmVlbi9wcmludGVyIGRlcGVuZGVu
dCwgc28gd2UgcHJvYmFibHkgbmVlZCBhIGNvbmZpZyBvcHRpb24gZm9yIHRoaXMsCiAgICAgICog
YW5kIHNvbWUgdG9vbCB0byBjYWxpYnJhdGUuCiAgICAgICovCi0gICAgaW50IGNvbXB1dGVMZW5n
dGhJbnQoUmVuZGVyU3R5bGUqIGN1cnJTdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSk7Ci0g
ICAgaW50IGNvbXB1dGVMZW5ndGhJbnQoUmVuZGVyU3R5bGUqIGN1cnJTdHlsZSwgUmVuZGVyU3R5
bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRpcGxpZXIpOwotICAgIGludCBjb21wdXRlTGVuZ3Ro
SW50Rm9yTGVuZ3RoKFJlbmRlclN0eWxlKiBjdXJyU3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5
bGUpOwotICAgIGludCBjb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKFJlbmRlclN0eWxlKiBjdXJy
U3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyKTsKLSAgICBz
aG9ydCBjb21wdXRlTGVuZ3RoU2hvcnQoUmVuZGVyU3R5bGUqIGN1cnJTdHlsZSwgUmVuZGVyU3R5
bGUqIHJvb3RTdHlsZSk7Ci0gICAgc2hvcnQgY29tcHV0ZUxlbmd0aFNob3J0KFJlbmRlclN0eWxl
KiBjdXJyU3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyKTsK
LSAgICBmbG9hdCBjb21wdXRlTGVuZ3RoRmxvYXQoUmVuZGVyU3R5bGUqIGN1cnJTdHlsZSwgUmVu
ZGVyU3R5bGUqIHJvb3RTdHlsZSwgYm9vbCBjb21wdXRpbmdGb250U2l6ZSA9IGZhbHNlKTsKLSAg
ICBmbG9hdCBjb21wdXRlTGVuZ3RoRmxvYXQoUmVuZGVyU3R5bGUqIGN1cnJTdHlsZSwgUmVuZGVy
U3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRpcGxpZXIsIGJvb2wgY29tcHV0aW5nRm9udFNp
emUgPSBmYWxzZSk7Ci0gICAgZG91YmxlIGNvbXB1dGVMZW5ndGhEb3VibGUoUmVuZGVyU3R5bGUq
IGN1cnJlbnRTdHlsZSwgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSwgZG91YmxlIG11bHRpcGxpZXIg
PSAxLjAsIGJvb2wgY29tcHV0aW5nRm9udFNpemUgPSBmYWxzZSk7CisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gVCBjb21wdXRlTGVuZ3RoKFJlbmRlclN0eWxlKiBjdXJyU3R5bGUsIFJlbmRlclN0
eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVyID0gMS4wLCBib29sIGNvbXB1dGluZ0Zv
bnRTaXplID0gZmFsc2UpOworICAgIGludCBjb21wdXRlTGVuZ3RoSW50Rm9yTGVuZ3RoKFJlbmRl
clN0eWxlKiBjdXJyU3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBs
aWVyID0gMS4wLCBib29sIGNvbXB1dGluZ0ZvbnRTaXplID0gZmFsc2UpOwogCiAgICAgLy8gdXNl
IHdpdGggY2FyZSEhIQogICAgIHZvaWQgc2V0UHJpbWl0aXZlVHlwZSh1bnNpZ25lZCBzaG9ydCB0
eXBlKSB7IG1fdHlwZSA9IHR5cGU7IH0KQEAgLTIyMSw2ICsyMTQsOCBAQCBwcml2YXRlOgogICAg
IHZvaWQgaW5pdChQYXNzUmVmUHRyPERhc2hib2FyZFJlZ2lvbj4pOyAvLyBGSVhNRTogRGFzaGJv
YXJkIHJlZ2lvbiBzaG91bGQgbm90IGJlIGEgcHJpbWl0aXZlIHZhbHVlLgogICAgIGJvb2wgZ2V0
RG91YmxlVmFsdWVJbnRlcm5hbChVbml0VHlwZXMgdGFyZ2V0VW5pdFR5cGUsIGRvdWJsZSogcmVz
dWx0KSBjb25zdDsKIAorICAgIGRvdWJsZSBjb21wdXRlTGVuZ3RoRG91YmxlKFJlbmRlclN0eWxl
KiBjdXJyZW50U3R5bGUsIFJlbmRlclN0eWxlKiByb290U3R5bGUsIGRvdWJsZSBtdWx0aXBsaWVy
LCBib29sIGNvbXB1dGluZ0ZvbnRTaXplKTsKKwogICAgIHZpcnR1YWwgYm9vbCBpc1ByaW1pdGl2
ZVZhbHVlKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgdmlydHVhbCB1bnNpZ25lZCBz
aG9ydCBjc3NWYWx1ZVR5cGUoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NT
dHlsZUFwcGx5UHJvcGVydHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2Nzcy9D
U1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwCShyZXZpc2lvbiA4ODUyMikKKysrIFNvdXJjZS9XZWJD
b3JlL2Nzcy9DU1NTdHlsZUFwcGx5UHJvcGVydHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zNTYs
NyArMzU2LDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgIHdpZHRoID0gNTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIENTU1ZhbHVlSW52YWxpZDoKLSAgICAgICAgICAgIHdpZHRo
ID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhTaG9ydChzZWxlY3Rvci0+c3R5bGUoKSwg
c2VsZWN0b3ItPnJvb3RFbGVtZW50U3R5bGUoKSwgc2VsZWN0b3ItPnN0eWxlKCktPmVmZmVjdGl2
ZVpvb20oKSk7CisgICAgICAgICAgICB3aWR0aCA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVu
Z3RoPHNob3J0PihzZWxlY3Rvci0+c3R5bGUoKSwgc2VsZWN0b3ItPnJvb3RFbGVtZW50U3R5bGUo
KSwgc2VsZWN0b3ItPnN0eWxlKCktPmVmZmVjdGl2ZVpvb20oKSk7CiAgICAgICAgICAgICAvLyBD
U1MyIGJveCBtb2RlbCBkb2VzIG5vdCBhbGxvdyBuZWdhdGl2ZSBsZW5ndGhzIGZvciBib3JkZXJz
LgogICAgICAgICAgICAgaWYgKHdpZHRoIDwgMCkKICAgICAgICAgICAgICAgICByZXR1cm47Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCShyZXZpc2lvbiA4ODUy
MikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzM0NCw3ICszMzQ0LDcgQEAgc3RhdGljIExlbmd0aCBjb252ZXJ0VG9MZW5ndGgo
Q1NTUHJpbWl0aQogICAgICAgICAgICAgICAgICpvayA9IGZhbHNlOwogICAgICAgICB9IGVsc2Ug
aWYgKENTU1ByaW1pdGl2ZVZhbHVlOjppc1VuaXRUeXBlTGVuZ3RoKHR5cGUpKSB7CiAgICAgICAg
ICAgICBpZiAodG9GbG9hdCkKLSAgICAgICAgICAgICAgICBsID0gTGVuZ3RoKHByaW1pdGl2ZVZh
bHVlLT5jb21wdXRlTGVuZ3RoRG91YmxlKHN0eWxlLCByb290U3R5bGUsIG11bHRpcGxpZXIpLCBG
aXhlZCk7CisgICAgICAgICAgICAgICAgbCA9IExlbmd0aChwcmltaXRpdmVWYWx1ZS0+Y29tcHV0
ZUxlbmd0aDxkb3VibGU+KHN0eWxlLCByb290U3R5bGUsIG11bHRpcGxpZXIpLCBGaXhlZCk7CiAg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgbCA9IExlbmd0aChwcmltaXRpdmVWYWx1
ZS0+Y29tcHV0ZUxlbmd0aEludEZvckxlbmd0aChzdHlsZSwgcm9vdFN0eWxlLCBtdWx0aXBsaWVy
KSwgRml4ZWQpOwogICAgICAgICB9CkBAIC0zNzQ5LDcgKzM3NDksNyBAQCB2b2lkIENTU1N0eWxl
U2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50CiAgICAgICAgIEhBTkRMRV9JTkhFUklUX0FORF9J
TklUSUFMKGhvcml6b250YWxCb3JkZXJTcGFjaW5nLCBIb3Jpem9udGFsQm9yZGVyU3BhY2luZykK
ICAgICAgICAgaWYgKCFwcmltaXRpdmVWYWx1ZSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAg
ICAgc2hvcnQgc3BhY2luZyA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoU2hvcnQoc3R5
bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKKyAgICAgICAgc2hvcnQgc3Bh
Y2luZyA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoPHNob3J0PihzdHlsZSgpLCBtX3Jv
b3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOwogICAgICAgICBtX3N0eWxlLT5zZXRIb3Jpem9u
dGFsQm9yZGVyU3BhY2luZyhzcGFjaW5nKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTM3
NTcsNyArMzc1Nyw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQK
ICAgICAgICAgSEFORExFX0lOSEVSSVRfQU5EX0lOSVRJQUwodmVydGljYWxCb3JkZXJTcGFjaW5n
LCBWZXJ0aWNhbEJvcmRlclNwYWNpbmcpCiAgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCiAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIHNob3J0IHNwYWNpbmcgPSBwcmltaXRpdmVWYWx1
ZS0+Y29tcHV0ZUxlbmd0aFNob3J0KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZh
Y3Rvcik7CisgICAgICAgIHNob3J0IHNwYWNpbmcgPSBwcmltaXRpdmVWYWx1ZS0+Y29tcHV0ZUxl
bmd0aDxzaG9ydD4oc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKICAg
ICAgICAgbV9zdHlsZS0+c2V0VmVydGljYWxCb3JkZXJTcGFjaW5nKHNwYWNpbmcpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQpAQCAtMzgyNiw3ICszODI2LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVj
dG9yOjphcHBseVByb3BlcnR5KGludAogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgaWYg
KCFwcmltaXRpdmVWYWx1ZSkKICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB3
aWR0aCA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoSW50KHN0eWxlKCksIG1fcm9vdEVs
ZW1lbnRTdHlsZSwgdXNlU1ZHWm9vbVJ1bGVzKG1fZWxlbWVudCkgPyAxLjBmIDogem9vbUZhY3Rv
cik7CisgICAgICAgICAgICB3aWR0aCA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoPGlu
dD4oc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB1c2VTVkdab29tUnVsZXMobV9lbGVtZW50
KSA/IDEuMGYgOiB6b29tRmFjdG9yKTsKICAgICAgICAgfQogICAgICAgICBzd2l0Y2ggKGlkKSB7
CiAgICAgICAgIGNhc2UgQ1NTUHJvcGVydHlMZXR0ZXJTcGFjaW5nOgpAQCAtMzk1MSw3ICszOTUx
LDcgQEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlICE9IENTU1ByaW1pdGl2
ZVZhbHVlOjpDU1NfRVhTICYmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHR5cGUgIT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19SRU1TKSk7CiAgICAgICAg
ICAgICBpZiAoQ1NTUHJpbWl0aXZlVmFsdWU6OmlzVW5pdFR5cGVMZW5ndGgodHlwZSkpCi0gICAg
ICAgICAgICAgICAgc2l6ZSA9IHByaW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoRmxvYXQobV9w
YXJlbnRTdHlsZSwgbV9yb290RWxlbWVudFN0eWxlLCB0cnVlKTsKKyAgICAgICAgICAgICAgICBz
aXplID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KG1fcGFyZW50U3R5bGUs
IG1fcm9vdEVsZW1lbnRTdHlsZSwgMS4wLCB0cnVlKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHR5
cGUgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKQogICAgICAgICAgICAgICAg
IHNpemUgPSAocHJpbWl0aXZlVmFsdWUtPmdldEZsb2F0VmFsdWUoKSAqIG9sZFNpemUpIC8gMTAw
LjBmOwogICAgICAgICAgICAgZWxzZQpAQCAtNDU3MSwxMSArNDU3MSwxMSBAQCB2b2lkIENTU1N0
eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVydHkoaW50CiAgICAgICAgIGlmIChwYWlyLT5maXJzdCgp
LT5wcmltaXRpdmVUeXBlKCkgPT0gQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU19QRVJDRU5UQUdFKQog
ICAgICAgICAgICAgcmFkaXVzV2lkdGggPSBMZW5ndGgocGFpci0+Zmlyc3QoKS0+Z2V0RG91Ymxl
VmFsdWUoKSwgUGVyY2VudCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJhZGl1c1dpZHRo
ID0gTGVuZ3RoKG1heChpbnRNaW5Gb3JMZW5ndGgsIG1pbihpbnRNYXhGb3JMZW5ndGgsIHBhaXIt
PmZpcnN0KCktPmNvbXB1dGVMZW5ndGhJbnQoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6
b29tRmFjdG9yKSkpLCBGaXhlZCk7CisgICAgICAgICAgICByYWRpdXNXaWR0aCA9IExlbmd0aCht
YXgoaW50TWluRm9yTGVuZ3RoLCBtaW4oaW50TWF4Rm9yTGVuZ3RoLCBwYWlyLT5maXJzdCgpLT5j
b21wdXRlTGVuZ3RoPGludD4oc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9y
KSkpLCBGaXhlZCk7CiAgICAgICAgIGlmIChwYWlyLT5zZWNvbmQoKS0+cHJpbWl0aXZlVHlwZSgp
ID09IENTU1ByaW1pdGl2ZVZhbHVlOjpDU1NfUEVSQ0VOVEFHRSkKICAgICAgICAgICAgIHJhZGl1
c0hlaWdodCA9IExlbmd0aChwYWlyLT5zZWNvbmQoKS0+Z2V0RG91YmxlVmFsdWUoKSwgUGVyY2Vu
dCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJhZGl1c0hlaWdodCA9IExlbmd0aChtYXgo
aW50TWluRm9yTGVuZ3RoLCBtaW4oaW50TWF4Rm9yTGVuZ3RoLCBwYWlyLT5zZWNvbmQoKS0+Y29t
cHV0ZUxlbmd0aEludChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpKSks
IEZpeGVkKTsKKyAgICAgICAgICAgIHJhZGl1c0hlaWdodCA9IExlbmd0aChtYXgoaW50TWluRm9y
TGVuZ3RoLCBtaW4oaW50TWF4Rm9yTGVuZ3RoLCBwYWlyLT5zZWNvbmQoKS0+Y29tcHV0ZUxlbmd0
aDxpbnQ+KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3RvcikpKSwgRml4ZWQp
OwogICAgICAgICBpbnQgd2lkdGggPSByYWRpdXNXaWR0aC52YWx1ZSgpOwogICAgICAgICBpbnQg
aGVpZ2h0ID0gcmFkaXVzSGVpZ2h0LnZhbHVlKCk7CiAgICAgICAgIGlmICh3aWR0aCA8IDAgfHwg
aGVpZ2h0IDwgMCkKQEAgLTQ2MDgsNyArNDYwOCw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6
YXBwbHlQcm9wZXJ0eShpbnQKIAogICAgIGNhc2UgQ1NTUHJvcGVydHlPdXRsaW5lT2Zmc2V0Ogog
ICAgICAgICBIQU5ETEVfSU5IRVJJVF9BTkRfSU5JVElBTChvdXRsaW5lT2Zmc2V0LCBPdXRsaW5l
T2Zmc2V0KQotICAgICAgICBtX3N0eWxlLT5zZXRPdXRsaW5lT2Zmc2V0KHByaW1pdGl2ZVZhbHVl
LT5jb21wdXRlTGVuZ3RoSW50KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rv
cikpOworICAgICAgICBtX3N0eWxlLT5zZXRPdXRsaW5lT2Zmc2V0KHByaW1pdGl2ZVZhbHVlLT5j
b21wdXRlTGVuZ3RoPGludD4oc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9y
KSk7CiAgICAgICAgIHJldHVybjsKICAgICBjYXNlIENTU1Byb3BlcnR5SW1hZ2VSZW5kZXJpbmc6
CiAgICAgICAgIGlmICghcHJpbWl0aXZlVmFsdWUpCkBAIC00NjM2LDEwICs0NjM2LDEwIEBAIHZv
aWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9wZXJ0eShpbnQKICAgICAgICAgICAgIGlmICgh
Y3VyclZhbHVlLT5pc1NoYWRvd1ZhbHVlKCkpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgICAgICBTaGFkb3dWYWx1ZSogaXRlbSA9IHN0YXRpY19jYXN0PFNoYWRvd1ZhbHVlKj4o
bGlzdC0+aXRlbVdpdGhvdXRCb3VuZHNDaGVjayhpKSk7Ci0gICAgICAgICAgICBpbnQgeCA9IGl0
ZW0tPngtPmNvbXB1dGVMZW5ndGhJbnQoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29t
RmFjdG9yKTsKLSAgICAgICAgICAgIGludCB5ID0gaXRlbS0+eS0+Y29tcHV0ZUxlbmd0aEludChz
dHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOwotICAgICAgICAgICAgaW50
IGJsdXIgPSBpdGVtLT5ibHVyID8gaXRlbS0+Ymx1ci0+Y29tcHV0ZUxlbmd0aEludChzdHlsZSgp
LCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpIDogMDsKLSAgICAgICAgICAgIGludCBz
cHJlYWQgPSBpdGVtLT5zcHJlYWQgPyBpdGVtLT5zcHJlYWQtPmNvbXB1dGVMZW5ndGhJbnQoc3R5
bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKSA6IDA7CisgICAgICAgICAgICBp
bnQgeCA9IGl0ZW0tPngtPmNvbXB1dGVMZW5ndGg8aW50PihzdHlsZSgpLCBtX3Jvb3RFbGVtZW50
U3R5bGUsIHpvb21GYWN0b3IpOworICAgICAgICAgICAgaW50IHkgPSBpdGVtLT55LT5jb21wdXRl
TGVuZ3RoPGludD4oc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKTsKKyAg
ICAgICAgICAgIGludCBibHVyID0gaXRlbS0+Ymx1ciA/IGl0ZW0tPmJsdXItPmNvbXB1dGVMZW5n
dGg8aW50PihzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpIDogMDsKKyAg
ICAgICAgICAgIGludCBzcHJlYWQgPSBpdGVtLT5zcHJlYWQgPyBpdGVtLT5zcHJlYWQtPmNvbXB1
dGVMZW5ndGg8aW50PihzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpIDog
MDsKICAgICAgICAgICAgIFNoYWRvd1N0eWxlIHNoYWRvd1N0eWxlID0gaXRlbS0+c3R5bGUgJiYg
aXRlbS0+c3R5bGUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVJbnNldCA/IEluc2V0IDogTm9ybWFs
OwogICAgICAgICAgICAgQ29sb3IgY29sb3I7CiAgICAgICAgICAgICBpZiAoaXRlbS0+Y29sb3Ip
CkBAIC00NzY5LDcgKzQ3NjksNyBAQCB2b2lkIENTU1N0eWxlU2VsZWN0b3I6OmFwcGx5UHJvcGVy
dHkoaW50CiAgICAgICAgICAgICBtX3N0eWxlLT5zZXRIYXNOb3JtYWxDb2x1bW5HYXAoKTsKICAg
ICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQotICAgICAgICBtX3N0eWxlLT5zZXRDb2x1bW5H
YXAocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhGbG9hdChzdHlsZSgpLCBtX3Jvb3RFbGVt
ZW50U3R5bGUsIHpvb21GYWN0b3IpKTsKKyAgICAgICAgbV9zdHlsZS0+c2V0Q29sdW1uR2FwKHBy
aW1pdGl2ZVZhbHVlLT5jb21wdXRlTGVuZ3RoPGZsb2F0PihzdHlsZSgpLCBtX3Jvb3RFbGVtZW50
U3R5bGUsIHpvb21GYWN0b3IpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBjYXNlIENT
U1Byb3BlcnR5V2Via2l0Q29sdW1uU3BhbjogewpAQCAtNDc4OCw3ICs0Nzg4LDcgQEAgdm9pZCBD
U1NTdHlsZVNlbGVjdG9yOjphcHBseVByb3BlcnR5KGludAogICAgICAgICAgICAgbV9zdHlsZS0+
c2V0SGFzQXV0b0NvbHVtbldpZHRoKCk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
LSAgICAgICAgbV9zdHlsZS0+c2V0Q29sdW1uV2lkdGgocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVM
ZW5ndGhGbG9hdChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpKTsKKyAg
ICAgICAgbV9zdHlsZS0+c2V0Q29sdW1uV2lkdGgocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5n
dGg8ZmxvYXQ+KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3RvcikpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogICAgIGNhc2UgQ1NTUHJvcGVydHlXZWJraXRDb2x1bW5SdWxl
U3R5bGU6CkBAIC01MDY4LDExICs1MDY4LDExIEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBw
bHlQcm9wZXJ0eShpbnQKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICo9IDM7CiAgICAgICAg
ICAgICAgICAgZWxzZSBpZiAocHJpbWl0aXZlVmFsdWUtPmdldElkZW50KCkgPT0gQ1NTVmFsdWVU
aGljaykKICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ICo9IDU7Ci0gICAgICAgICAgICAgICAg
d2lkdGggPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHJlc3VsdCwgQ1NTUHJpbWl0aXZlVmFs
dWU6OkNTU19FTVMpLT5jb21wdXRlTGVuZ3RoRmxvYXQoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0
eWxlLCB6b29tRmFjdG9yKTsKKyAgICAgICAgICAgICAgICB3aWR0aCA9IENTU1ByaW1pdGl2ZVZh
bHVlOjpjcmVhdGUocmVzdWx0LCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX0VNUyktPmNvbXB1dGVM
ZW5ndGg8ZmxvYXQ+KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7CiAg
ICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBkZWZhdWx0
OgotICAgICAgICAgICAgICAgIHdpZHRoID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhG
bG9hdChzdHlsZSgpLCBtX3Jvb3RFbGVtZW50U3R5bGUsIHpvb21GYWN0b3IpOworICAgICAgICAg
ICAgICAgIHdpZHRoID0gcHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KHN0eWxl
KCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rvcik7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CiAgICAgICAgIH0KICAgICAgICAgbV9zdHlsZS0+c2V0VGV4dFN0cm9rZVdpZHRoKHdpZHRo
KTsKQEAgLTUxMjEsNyArNTEyMSw3IEBAIHZvaWQgQ1NTU3R5bGVTZWxlY3Rvcjo6YXBwbHlQcm9w
ZXJ0eShpbnQKICAgICAgICAgICAgIHBlcnNwZWN0aXZlVmFsdWUgPSBzdGF0aWNfY2FzdDxmbG9h
dD4ocHJpbWl0aXZlVmFsdWUtPmNvbXB1dGVMZW5ndGhJbnRGb3JMZW5ndGgoc3R5bGUoKSwgbV9y
b290RWxlbWVudFN0eWxlLCB6b29tRmFjdG9yKSk7CiAgICAgICAgIGVsc2UgaWYgKHR5cGUgPT0g
Q1NTUHJpbWl0aXZlVmFsdWU6OkNTU19OVU1CRVIpIHsKICAgICAgICAgICAgIC8vIEZvciBiYWNr
d2FyZCBjb21wYXRpYmlsaXR5LCB0cmVhdCB2YWx1ZWxlc3MgbnVtYmVycyBhcyBweC4KLSAgICAg
ICAgICAgIHBlcnNwZWN0aXZlVmFsdWUgPSBDU1NQcmltaXRpdmVWYWx1ZTo6Y3JlYXRlKHByaW1p
dGl2ZVZhbHVlLT5nZXREb3VibGVWYWx1ZSgpLCBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTX1BYKS0+
Y29tcHV0ZUxlbmd0aEZsb2F0KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSwgem9vbUZhY3Rv
cik7CisgICAgICAgICAgICBwZXJzcGVjdGl2ZVZhbHVlID0gQ1NTUHJpbWl0aXZlVmFsdWU6OmNy
ZWF0ZShwcmltaXRpdmVWYWx1ZS0+Z2V0RG91YmxlVmFsdWUoKSwgQ1NTUHJpbWl0aXZlVmFsdWU6
OkNTU19QWCktPmNvbXB1dGVMZW5ndGg8ZmxvYXQ+KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHls
ZSwgem9vbUZhY3Rvcik7CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgcmV0dXJuOwogCklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCShyZXZpc2lv
biA4ODUyMikKKysrIFNvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzExLDcgKzMxMSw3IEBAIHN0YXRpYyBib29sIGRldmljZV9oZWln
aHRNZWRpYUZlYXR1cmVFdmEKICAgICBpZiAodmFsdWUpIHsKICAgICAgICAgRmxvYXRSZWN0IHNn
ID0gc2NyZWVuUmVjdChmcmFtZS0+cGFnZSgpLT5tYWluRnJhbWUoKS0+dmlldygpKTsKICAgICAg
ICAgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSA9IGZyYW1lLT5kb2N1bWVudCgpLT5kb2N1bWVudEVs
ZW1lbnQoKS0+cmVuZGVyU3R5bGUoKTsKLSAgICAgICAgcmV0dXJuIHZhbHVlLT5pc1ByaW1pdGl2
ZVZhbHVlKCkgJiYgY29tcGFyZVZhbHVlKHN0YXRpY19jYXN0PGludD4oc2cuaGVpZ2h0KCkpLCBz
dGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKS0+Y29tcHV0ZUxlbmd0aEludChz
dHlsZSwgcm9vdFN0eWxlKSwgb3ApOworICAgICAgICByZXR1cm4gdmFsdWUtPmlzUHJpbWl0aXZl
VmFsdWUoKSAmJiBjb21wYXJlVmFsdWUoc3RhdGljX2Nhc3Q8aW50PihzZy5oZWlnaHQoKSksIHN0
YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpLT5jb21wdXRlTGVuZ3RoPGludD4o
c3R5bGUsIHJvb3RTdHlsZSksIG9wKTsKICAgICB9CiAgICAgLy8gKHssbWluLSxtYXgtfWRldmlj
ZS1oZWlnaHQpCiAgICAgLy8gYXNzdW1lIGlmIHdlIGhhdmUgYSBkZXZpY2UsIGFzc3VtZSBub24t
emVybwpAQCAtMzIzLDcgKzMyMyw3IEBAIHN0YXRpYyBib29sIGRldmljZV93aWR0aE1lZGlhRmVh
dHVyZUV2YWwKICAgICBpZiAodmFsdWUpIHsKICAgICAgICAgRmxvYXRSZWN0IHNnID0gc2NyZWVu
UmVjdChmcmFtZS0+cGFnZSgpLT5tYWluRnJhbWUoKS0+dmlldygpKTsKICAgICAgICAgUmVuZGVy
U3R5bGUqIHJvb3RTdHlsZSA9IGZyYW1lLT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKS0+
cmVuZGVyU3R5bGUoKTsKLSAgICAgICAgcmV0dXJuIHZhbHVlLT5pc1ByaW1pdGl2ZVZhbHVlKCkg
JiYgY29tcGFyZVZhbHVlKHN0YXRpY19jYXN0PGludD4oc2cud2lkdGgoKSksIHN0YXRpY19jYXN0
PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpLT5jb21wdXRlTGVuZ3RoSW50KHN0eWxlLCByb290
U3R5bGUpLCBvcCk7CisgICAgICAgIHJldHVybiB2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpICYm
IGNvbXBhcmVWYWx1ZShzdGF0aWNfY2FzdDxpbnQ+KHNnLndpZHRoKCkpLCBzdGF0aWNfY2FzdDxD
U1NQcmltaXRpdmVWYWx1ZSo+KHZhbHVlKS0+Y29tcHV0ZUxlbmd0aDxpbnQ+KHN0eWxlLCByb290
U3R5bGUpLCBvcCk7CiAgICAgfQogICAgIC8vICh7LG1pbi0sbWF4LX1kZXZpY2Utd2lkdGgpCiAg
ICAgLy8gYXNzdW1lIGlmIHdlIGhhdmUgYSBkZXZpY2UsIGFzc3VtZSBub24temVybwpAQCAtMzM2
LDcgKzMzNiw3IEBAIHN0YXRpYyBib29sIGhlaWdodE1lZGlhRmVhdHVyZUV2YWwoQ1NTVmEKICAg
ICBSZW5kZXJTdHlsZSogcm9vdFN0eWxlID0gZnJhbWUtPmRvY3VtZW50KCktPmRvY3VtZW50RWxl
bWVudCgpLT5yZW5kZXJTdHlsZSgpOwogCiAgICAgaWYgKHZhbHVlKQotICAgICAgICByZXR1cm4g
dmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSAmJiBjb21wYXJlVmFsdWUodmlldy0+bGF5b3V0SGVp
Z2h0KCksIHN0YXRpY19jYXN0PENTU1ByaW1pdGl2ZVZhbHVlKj4odmFsdWUpLT5jb21wdXRlTGVu
Z3RoSW50KHN0eWxlLCByb290U3R5bGUpLCBvcCk7CisgICAgICAgIHJldHVybiB2YWx1ZS0+aXNQ
cmltaXRpdmVWYWx1ZSgpICYmIGNvbXBhcmVWYWx1ZSh2aWV3LT5sYXlvdXRIZWlnaHQoKSwgc3Rh
dGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSktPmNvbXB1dGVMZW5ndGg8aW50Pihz
dHlsZSwgcm9vdFN0eWxlKSwgb3ApOwogCiAgICAgcmV0dXJuIHZpZXctPmxheW91dEhlaWdodCgp
ICE9IDA7CiB9CkBAIC0zNDcsNyArMzQ3LDcgQEAgc3RhdGljIGJvb2wgd2lkdGhNZWRpYUZlYXR1
cmVFdmFsKENTU1ZhbAogICAgIFJlbmRlclN0eWxlKiByb290U3R5bGUgPSBmcmFtZS0+ZG9jdW1l
bnQoKS0+ZG9jdW1lbnRFbGVtZW50KCktPnJlbmRlclN0eWxlKCk7CiAKICAgICBpZiAodmFsdWUp
Ci0gICAgICAgIHJldHVybiB2YWx1ZS0+aXNQcmltaXRpdmVWYWx1ZSgpICYmIGNvbXBhcmVWYWx1
ZSh2aWV3LT5sYXlvdXRXaWR0aCgpLCBzdGF0aWNfY2FzdDxDU1NQcmltaXRpdmVWYWx1ZSo+KHZh
bHVlKS0+Y29tcHV0ZUxlbmd0aEludChzdHlsZSwgcm9vdFN0eWxlKSwgb3ApOworICAgICAgICBy
ZXR1cm4gdmFsdWUtPmlzUHJpbWl0aXZlVmFsdWUoKSAmJiBjb21wYXJlVmFsdWUodmlldy0+bGF5
b3V0V2lkdGgoKSwgc3RhdGljX2Nhc3Q8Q1NTUHJpbWl0aXZlVmFsdWUqPih2YWx1ZSktPmNvbXB1
dGVMZW5ndGg8aW50PihzdHlsZSwgcm9vdFN0eWxlKSwgb3ApOwogCiAgICAgcmV0dXJuIHZpZXct
PmxheW91dFdpZHRoKCkgIT0gMDsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2Nzcy9TVkdDU1NT
dHlsZVNlbGVjdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9jc3MvU1ZHQ1NT
U3R5bGVTZWxlY3Rvci5jcHAJKHJldmlzaW9uIDg4NTIyKQorKysgU291cmNlL1dlYkNvcmUvY3Nz
L1NWR0NTU1N0eWxlU2VsZWN0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01NzIsOSArNTcyLDkg
QEAgdm9pZCBDU1NTdHlsZVNlbGVjdG9yOjphcHBseVNWR1Byb3BlcnR5KAogICAgICAgICAgICAg
aWYgKCFmaXJzdFZhbHVlLT5pc1NoYWRvd1ZhbHVlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJu
OwogICAgICAgICAgICAgU2hhZG93VmFsdWUqIGl0ZW0gPSBzdGF0aWNfY2FzdDxTaGFkb3dWYWx1
ZSo+KGZpcnN0VmFsdWUpOwotICAgICAgICAgICAgaW50IHggPSBpdGVtLT54LT5jb21wdXRlTGVu
Z3RoSW50KHN0eWxlKCksIG1fcm9vdEVsZW1lbnRTdHlsZSk7Ci0gICAgICAgICAgICBpbnQgeSA9
IGl0ZW0tPnktPmNvbXB1dGVMZW5ndGhJbnQoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlKTsK
LSAgICAgICAgICAgIGludCBibHVyID0gaXRlbS0+Ymx1ciA/IGl0ZW0tPmJsdXItPmNvbXB1dGVM
ZW5ndGhJbnQoc3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlKSA6IDA7CisgICAgICAgICAgICBp
bnQgeCA9IGl0ZW0tPngtPmNvbXB1dGVMZW5ndGg8aW50PihzdHlsZSgpLCBtX3Jvb3RFbGVtZW50
U3R5bGUpOworICAgICAgICAgICAgaW50IHkgPSBpdGVtLT55LT5jb21wdXRlTGVuZ3RoPGludD4o
c3R5bGUoKSwgbV9yb290RWxlbWVudFN0eWxlKTsKKyAgICAgICAgICAgIGludCBibHVyID0gaXRl
bS0+Ymx1ciA/IGl0ZW0tPmJsdXItPmNvbXB1dGVMZW5ndGg8aW50PihzdHlsZSgpLCBtX3Jvb3RF
bGVtZW50U3R5bGUpIDogMDsKICAgICAgICAgICAgIENvbG9yIGNvbG9yOwogICAgICAgICAgICAg
aWYgKGl0ZW0tPmNvbG9yKQogICAgICAgICAgICAgICAgIGNvbG9yID0gZ2V0Q29sb3JGcm9tUHJp
bWl0aXZlVmFsdWUoaXRlbS0+Y29sb3IuZ2V0KCkpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>