<?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>144047</bug_id>
          
          <creation_ts>2015-04-22 09:32:13 -0700</creation_ts>
          <short_desc>VisibleSelection should only accept Range by reference</short_desc>
          <delta_ts>2015-04-22 19:15:51 -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>WebKit Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</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="Brent Fulgham">bfulgham</reporter>
          <assigned_to name="Brent Fulgham">bfulgham</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>thorton</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1087416</commentid>
    <comment_count>0</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-22 09:32:13 -0700</bug_when>
    <thetext>One of the available VisibleSelection constructors accepts a Range pointer. However, it immediately dereferences the pointer to access members, resulting in runtime crashes if an unwitting developer passes an unchecked Range pointer.

Since a nullptr is not valid input for this constructor, we should change the interface to require a reference. The code already must do null checks before passing Range pointers to this constructor, so simply changing this code to dereference the pointer is a trivial mechanical change.

This will make it harder to accidentally code an unsafe use of VisibleSelection.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087418</commentid>
    <comment_count>1</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-22 09:36:18 -0700</bug_when>
    <thetext>It&apos;s interesting (alarming?) that there are cases in the same file (e.g., WebPage.cpp) where null checks are performed, and others where it is missed:

Example 1: (WebPage.cpp Line 4207)
void WebPage::insertTextAsync(const String&amp; text, const EditingRange&amp; replacementEditingRange, bool registerUndoGroup)

        RefPtr&lt;Range&gt; replacementRange = rangeFromEditingRange(frame, replacementEditingRange);
        if (replacementRange)
            frame.selection().setSelection(VisibleSelection(replacementRange.get(), SEL_DEFAULT_AFFINITY));


Example 2: (WebPage.cpp Line 4296)
void WebPage::setCompositionAsync(const String&amp; text, Vector&lt;CompositionUnderline&gt; underlines, const EditingRange&amp; selection, const EditingRange&amp; replacementEditingRange)

        replacementRange = rangeFromEditingRange(frame, replacementEditingRange);
        frame.selection().setSelection(VisibleSelection(replacementRange.get(), SEL_DEFAULT_AFFINITY));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087643</commentid>
    <comment_count>2</comment_count>
      <attachid>251383</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-22 16:48:00 -0700</bug_when>
    <thetext>Created attachment 251383
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087645</commentid>
    <comment_count>3</comment_count>
      <attachid>251383</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2015-04-22 16:53:50 -0700</bug_when>
    <thetext>Comment on attachment 251383
Patch

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

&gt; Source/WebCore/editing/Editor.cpp:2003
&gt; +        RELEASE_ASSERT(badGrammarRange.get());

Please don&apos;t RELEASE_ASSERT in all these places. The next line will do a null deref anyway.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087648</commentid>
    <comment_count>4</comment_count>
      <attachid>251387</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-22 17:06:06 -0700</bug_when>
    <thetext>Created attachment 251387
Patch v2 (No RELEASE_ASSERT, iOS Fixes)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087659</commentid>
    <comment_count>5</comment_count>
      <attachid>251390</attachid>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-22 17:38:43 -0700</bug_when>
    <thetext>Created attachment 251390
Patch v3 (More build fixes for different configurations)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1087692</commentid>
    <comment_count>6</comment_count>
    <who name="Brent Fulgham">bfulgham</who>
    <bug_when>2015-04-22 19:15:51 -0700</bug_when>
    <thetext>Committed r183158: &lt;http://trac.webkit.org/changeset/183158&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251383</attachid>
            <date>2015-04-22 16:48:00 -0700</date>
            <delta_ts>2015-04-22 17:06:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-144047-20150422164657.patch</filename>
            <type>text/plain</type>
            <size>20910</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MzE1NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDE1LTA0LTIyICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFZpc2libGVTZWxlY3Rpb24g
c2hvdWxkIG9ubHkgYWNjZXB0IFJhbmdlIGJ5IHJlZmVyZW5jZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0MDQ3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIFZpc2libGVTZWxlY3Rpb24gdG8g
ZXhwZWN0IGEgUmFuZ2UgcmVmZXJlbmNlIGFyZ3VtZW50LCByYXRoZXIgdGhhbiBhCisgICAgICAg
IFJhbmdlKi4gQWxzbyB1cGRhdGUgYWxsIHVzZXMgb2YgVmlzaWJsZVNlbGVjdGlvbiB0byBwYXNz
IGEgcmVmZXJlbmNlIGluc3RlYWQKKyAgICAgICAgb2YgYSBwb2ludGVyLgorCisgICAgICAgIE5v
IGNoYW5nZSBpbiBiZWhhdmlvciwgc28gbmV3IHRlc3RzLgorCisgICAgICAgICogZWRpdGluZy9F
ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3Rpb25Gb3JDb21tYW5k
KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9X
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yOjp0cmFuc3Bvc2UpOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yOjpmaW5kU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmFuZ2VPZlN0cmlu
Zyk6CisgICAgICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0ZWRSYW5nZSk6CisgICAgICAgICogZWRpdGlu
Zy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxs
aW5nQ29ycmVjdGlvbkNvbW1hbmQ6OlNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQpOgorICAgICAg
ICAqIGVkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaXNp
YmxlU2VsZWN0aW9uOjpWaXNpYmxlU2VsZWN0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2li
bGVTZWxlY3Rpb24uaDoKKyAgICAgICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlcGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQpOgorICAgICAg
ICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2VsZWN0RWxl
bWVudCk6CisgICAgICAgICogcGFnZS9UZXh0SW5kaWNhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZSk6CisgICAgICAgICogcGFnZS9tYWMv
RXZlbnRIYW5kbGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzZWxl
Y3RDbG9zZXN0V29yZEZyb21IaXRUZXN0UmVzdWx0QmFzZWRPbkxvb2t1cCk6CisgICAgICAgICog
cmVuZGVyaW5nL1NlbGVjdGlvblN1YnRyZWVSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNl
bGVjdGlvblN1YnRyZWVSb290OjphZGp1c3RGb3JWaXNpYmxlU2VsZWN0aW9uKToKKwogMjAxNS0w
NC0yMiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgbmV3
IG9wdGltaXplZCBmdWxsc2NyZWVuIGRlbGVnYXRlIG1ldGhvZHMKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAJKHJldmlzaW9uIDE4MzE1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTU3LDcgKzE1Nyw3IEBAIFZpc2libGVT
ZWxlY3Rpb24gRWRpdG9yOjpzZWxlY3Rpb25Gb3JDb20KICAgICBIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudCogdGV4dEZyb21Db250cm9sT2ZUYXJnZXQgPSBpczxIVE1MVGV4dEZvcm1Db250cm9s
RWxlbWVudD4oKmV2ZW50LT50YXJnZXQoKS0+dG9Ob2RlKCkpID8gZG93bmNhc3Q8SFRNTFRleHRG
b3JtQ29udHJvbEVsZW1lbnQ+KGV2ZW50LT50YXJnZXQoKS0+dG9Ob2RlKCkpIDogbnVsbHB0cjsK
ICAgICBpZiAodGV4dEZyb21Db250cm9sT2ZUYXJnZXQgJiYgKHNlbGVjdGlvbi5zdGFydCgpLmlz
TnVsbCgpIHx8IHRleHRGcm9tQ29udHJvbE9mVGFyZ2V0ICE9IHRleHRGb3JtQ29udHJvbE9mU2Vs
ZWN0aW9uU3RhcnQpKSB7CiAgICAgICAgIGlmIChSZWZQdHI8UmFuZ2U+IHJhbmdlID0gdGV4dEZy
b21Db250cm9sT2ZUYXJnZXQtPnNlbGVjdGlvbigpKQotICAgICAgICAgICAgcmV0dXJuIFZpc2li
bGVTZWxlY3Rpb24ocmFuZ2UuZ2V0KCksIERPV05TVFJFQU0sIHNlbGVjdGlvbi5pc0RpcmVjdGlv
bmFsKCkpOworICAgICAgICAgICAgcmV0dXJuIFZpc2libGVTZWxlY3Rpb24oKnJhbmdlLCBET1dO
U1RSRUFNLCBzZWxlY3Rpb24uaXNEaXJlY3Rpb25hbCgpKTsKICAgICB9CiAgICAgcmV0dXJuIHNl
bGVjdGlvbjsKIH0KQEAgLTIwMDAsNyArMjAwMCw4IEBAIHZvaWQgRWRpdG9yOjphZHZhbmNlVG9O
ZXh0TWlzc3BlbGxpbmcoYm8KICAgICAgICAgCiAgICAgICAgIC8vIEZJWE1FIDQ4NTkxOTA6IFRo
aXMgZ2V0cyBjb25mdXNlZCB3aXRoIGRvdWJsZWQgcHVuY3R1YXRpb24gYXQgdGhlIGVuZCBvZiBh
IHBhcmFncmFwaAogICAgICAgICBSZWZQdHI8UmFuZ2U+IGJhZEdyYW1tYXJSYW5nZSA9IFRleHRJ
dGVyYXRvcjo6c3VicmFuZ2UoZ3JhbW1hclNlYXJjaFJhbmdlLmdldCgpLCBncmFtbWFyUGhyYXNl
T2Zmc2V0ICsgZ3JhbW1hckRldGFpbC5sb2NhdGlvbiwgZ3JhbW1hckRldGFpbC5sZW5ndGgpOwot
ICAgICAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9u
KGJhZEdyYW1tYXJSYW5nZS5nZXQoKSwgU0VMX0RFRkFVTFRfQUZGSU5JVFkpKTsKKyAgICAgICAg
UkVMRUFTRV9BU1NFUlQoYmFkR3JhbW1hclJhbmdlLmdldCgpKTsKKyAgICAgICAgbV9mcmFtZS5z
ZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbigqYmFkR3JhbW1hclJhbmdl
LCBTRUxfREVGQVVMVF9BRkZJTklUWSkpOwogICAgICAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnJl
dmVhbFNlbGVjdGlvbigpOwogICAgICAgICAKICAgICAgICAgY2xpZW50KCktPnVwZGF0ZVNwZWxs
aW5nVUlXaXRoR3JhbW1hclN0cmluZyhiYWRHcmFtbWFyUGhyYXNlLCBncmFtbWFyRGV0YWlsKTsK
QEAgLTIwMTIsNyArMjAxMyw4IEBAIHZvaWQgRWRpdG9yOjphZHZhbmNlVG9OZXh0TWlzc3BlbGxp
bmcoYm8KICAgICAgICAgLy8gYSBtYXJrZXIgc28gd2UgZHJhdyB0aGUgcmVkIHNxdWlnZ2xlIGxh
dGVyLgogICAgICAgICAKICAgICAgICAgUmVmUHRyPFJhbmdlPiBtaXNzcGVsbGluZ1JhbmdlID0g
VGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShzcGVsbGluZ1NlYXJjaFJhbmdlLmdldCgpLCBtaXNzcGVs
bGluZ09mZnNldCwgbWlzc3BlbGxlZFdvcmQubGVuZ3RoKCkpOwotICAgICAgICBtX2ZyYW1lLnNl
bGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKG1pc3NwZWxsaW5nUmFuZ2Uu
Z2V0KCksIERPV05TVFJFQU0pKTsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQobWlzc3BlbGxpbmdS
YW5nZS5nZXQoKSk7CisgICAgICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZp
c2libGVTZWxlY3Rpb24oKm1pc3NwZWxsaW5nUmFuZ2UsIERPV05TVFJFQU0pKTsKICAgICAgICAg
bV9mcmFtZS5zZWxlY3Rpb24oKS5yZXZlYWxTZWxlY3Rpb24oKTsKICAgICAgICAgCiAgICAgICAg
IGNsaWVudCgpLT51cGRhdGVTcGVsbGluZ1VJV2l0aE1pc3NwZWxsZWRXb3JkKG1pc3NwZWxsZWRX
b3JkKTsKQEAgLTIyMjksNyArMjIzMSw3IEBAIHZvaWQgRWRpdG9yOjptYXJrTWlzc3BlbGxpbmdz
QWZ0ZXJUeXBpbmcKIAogICAgIC8vIElmIGF1dG9jb3JyZWN0ZWQgd29yZCBpcyBub24gZW1wdHks
IHJlcGxhY2UgdGhlIG1pc3NwZWxsZWQgd29yZCBieSB0aGlzIHdvcmQuCiAgICAgaWYgKCFhdXRv
Y29ycmVjdGVkU3RyaW5nLmlzRW1wdHkoKSkgewotICAgICAgICBWaXNpYmxlU2VsZWN0aW9uIG5l
d1NlbGVjdGlvbihtaXNzcGVsbGluZ1JhbmdlLmdldCgpLCBET1dOU1RSRUFNKTsKKyAgICAgICAg
VmlzaWJsZVNlbGVjdGlvbiBuZXdTZWxlY3Rpb24oKm1pc3NwZWxsaW5nUmFuZ2UsIERPV05TVFJF
QU0pOwogICAgICAgICBpZiAobmV3U2VsZWN0aW9uICE9IG1fZnJhbWUuc2VsZWN0aW9uKCkuc2Vs
ZWN0aW9uKCkpIHsKICAgICAgICAgICAgIGlmICghbV9mcmFtZS5zZWxlY3Rpb24oKS5zaG91bGRD
aGFuZ2VTZWxlY3Rpb24obmV3U2VsZWN0aW9uKSkKICAgICAgICAgICAgICAgICByZXR1cm47CkBA
IC0yNTE3LDcgKzI1MTksOCBAQCB2b2lkIEVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IoUGFzc1Jl
ZlB0CiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAg
ICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uVG9SZXBsYWNlKHJhbmdlVG9SZXBsYWNlLmdl
dCgpLCBET1dOU1RSRUFNKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKHJhbmdlVG9SZXBs
YWNlLmdldCgpKTsKKyAgICAgICAgICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uVG9SZXBs
YWNlKCpyYW5nZVRvUmVwbGFjZSwgRE9XTlNUUkVBTSk7CiAgICAgICAgICAgICBpZiAoc2VsZWN0
aW9uVG9SZXBsYWNlICE9IG1fZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkpIHsKICAgICAg
ICAgICAgICAgICBpZiAoIW1fZnJhbWUuc2VsZWN0aW9uKCkuc2hvdWxkQ2hhbmdlU2VsZWN0aW9u
KHNlbGVjdGlvblRvUmVwbGFjZSkpCiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAt
MjgwMCw3ICsyODAzLDcgQEAgdm9pZCBFZGl0b3I6OnRyYW5zcG9zZSgpCiAgICAgUmVmUHRyPFJh
bmdlPiByYW5nZSA9IG1ha2VSYW5nZShwcmV2aW91cywgbmV4dCk7CiAgICAgaWYgKCFyYW5nZSkK
ICAgICAgICAgcmV0dXJuOwotICAgIFZpc2libGVTZWxlY3Rpb24gbmV3U2VsZWN0aW9uKHJhbmdl
LmdldCgpLCBET1dOU1RSRUFNKTsKKyAgICBWaXNpYmxlU2VsZWN0aW9uIG5ld1NlbGVjdGlvbigq
cmFuZ2UsIERPV05TVFJFQU0pOwogCiAgICAgLy8gVHJhbnNwb3NlIHRoZSB0d28gY2hhcmFjdGVy
cy4KICAgICBTdHJpbmcgdGV4dCA9IHBsYWluVGV4dChyYW5nZS5nZXQoKSk7CkBAIC0zMDQ5LDcg
KzMwNTIsNyBAQCBib29sIEVkaXRvcjo6ZmluZFN0cmluZyhjb25zdCBTdHJpbmcmIHRhCiAgICAg
aWYgKCFyZXN1bHRSYW5nZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgbV9mcmFtZS5z
ZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihyZXN1bHRSYW5nZS5nZXQo
KSwgRE9XTlNUUkVBTSkpOworICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZp
c2libGVTZWxlY3Rpb24oKnJlc3VsdFJhbmdlLCBET1dOU1RSRUFNKSk7CiAKICAgICBpZiAoIShv
cHRpb25zICYgRG9Ob3RSZXZlYWxTZWxlY3Rpb24pKQogICAgICAgICBtX2ZyYW1lLnNlbGVjdGlv
bigpLnJldmVhbFNlbGVjdGlvbigpOwpAQCAtMzA5NiwxMCArMzA5OSwxMSBAQCBQYXNzUmVmUHRy
PFJhbmdlPiBFZGl0b3I6OnJhbmdlT2ZTdHJpbmcoCiAgICAgfQogCiAgICAgUmVmUHRyPFJhbmdl
PiByZXN1bHRSYW5nZShmaW5kUGxhaW5UZXh0KCpzZWFyY2hSYW5nZSwgdGFyZ2V0LCBvcHRpb25z
KSk7CisgICAgUkVMRUFTRV9BU1NFUlQocmVzdWx0UmFuZ2UuZ2V0KCkpOwogICAgIC8vIElmIHdl
IHN0YXJ0ZWQgaW4gdGhlIHJlZmVyZW5jZSByYW5nZSBhbmQgdGhlIGZvdW5kIHJhbmdlIGV4YWN0
bHkgbWF0Y2hlcyB0aGUgcmVmZXJlbmNlIHJhbmdlLCBmaW5kIGFnYWluLgogICAgIC8vIEJ1aWxk
IGEgc2VsZWN0aW9uIHdpdGggdGhlIGZvdW5kIHJhbmdlIHRvIHJlbW92ZSBjb2xsYXBzZWQgd2hp
dGVzcGFjZS4KICAgICAvLyBDb21wYXJlIHJhbmdlcyBpbnN0ZWFkIG9mIHNlbGVjdGlvbiBvYmpl
Y3RzIHRvIGlnbm9yZSB0aGUgd2F5IHRoYXQgdGhlIGN1cnJlbnQgc2VsZWN0aW9uIHdhcyBtYWRl
LgotICAgIGlmIChzdGFydEluUmVmZXJlbmNlUmFuZ2UgJiYgYXJlUmFuZ2VzRXF1YWwoVmlzaWJs
ZVNlbGVjdGlvbihyZXN1bHRSYW5nZS5nZXQoKSkudG9Ob3JtYWxpemVkUmFuZ2UoKS5nZXQoKSwg
cmVmZXJlbmNlUmFuZ2UpKSB7CisgICAgaWYgKHN0YXJ0SW5SZWZlcmVuY2VSYW5nZSAmJiBhcmVS
YW5nZXNFcXVhbChWaXNpYmxlU2VsZWN0aW9uKCpyZXN1bHRSYW5nZSkudG9Ob3JtYWxpemVkUmFu
Z2UoKS5nZXQoKSwgcmVmZXJlbmNlUmFuZ2UpKSB7CiAgICAgICAgIHNlYXJjaFJhbmdlID0gcmFu
Z2VPZkNvbnRlbnRzKGRvY3VtZW50KCkpOwogICAgICAgICBpZiAoZm9yd2FyZCkKICAgICAgICAg
ICAgIHNlYXJjaFJhbmdlLT5zZXRTdGFydChyZWZlcmVuY2VSYW5nZS0+ZW5kUG9zaXRpb24oKSk7
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAkocmV2aXNp
b24gMTgzMTUwKQorKysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE3MjAsNyArMTcyMCw3IEBAIGJvb2wgRnJhbWVTZWxlY3Rpb246
OnNldFNlbGVjdGVkUmFuZ2UoUmEKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIEFTU0VSVCgm
cmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCktPmRvY3VtZW50KCkgPT0gJnJhbmdlLT5lbmRDb250YWlu
ZXIoKS0+ZG9jdW1lbnQoKSk7CiAKLSAgICBWaXNpYmxlU2VsZWN0aW9uIG5ld1NlbGVjdGlvbihy
YW5nZSwgYWZmaW5pdHkpOworICAgIFZpc2libGVTZWxlY3Rpb24gbmV3U2VsZWN0aW9uKCpyYW5n
ZSwgYWZmaW5pdHkpOwogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIC8vIEZJWE1FOiBXaHkgZG8g
d2UgbmVlZCB0aGlzIGNoZWNrIG9ubHkgaW4gaU9TPwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRp
dGluZy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwCShyZXZpc2lvbiAx
ODMxNTApCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1h
bmQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC04NCw3ICs4NCw3IEBAIHByaXZhdGU6CiBTcGVsbGlu
Z0NvcnJlY3Rpb25Db21tYW5kOjpTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kKFBhc3NSZWZQdHI8
UmFuZ2U+IHJhbmdlVG9CZUNvcnJlY3RlZCwgY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uKQogICAg
IDogQ29tcG9zaXRlRWRpdENvbW1hbmQocmFuZ2VUb0JlQ29ycmVjdGVkLT5zdGFydENvbnRhaW5l
cigpLT5kb2N1bWVudCgpKQogICAgICwgbV9yYW5nZVRvQmVDb3JyZWN0ZWQocmFuZ2VUb0JlQ29y
cmVjdGVkKQotICAgICwgbV9zZWxlY3Rpb25Ub0JlQ29ycmVjdGVkKG1fcmFuZ2VUb0JlQ29ycmVj
dGVkLmdldCgpKQorICAgICwgbV9zZWxlY3Rpb25Ub0JlQ29ycmVjdGVkKCptX3JhbmdlVG9CZUNv
cnJlY3RlZCkKICAgICAsIG1fY29ycmVjdGlvbihjb3JyZWN0aW9uKQogewogfQpJbmRleDogU291
cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwCShyZXZpc2lvbiAxODMx
NTApCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC04NCw5ICs4NCw5IEBAIFZpc2libGVTZWxlY3Rpb246OlZpc2libGVTZWxl
Y3Rpb24oY29uc3QKICAgICB2YWxpZGF0ZSgpOwogfQogCi1WaXNpYmxlU2VsZWN0aW9uOjpWaXNp
YmxlU2VsZWN0aW9uKGNvbnN0IFJhbmdlKiByYW5nZSwgRUFmZmluaXR5IGFmZmluaXR5LCBib29s
IGlzRGlyZWN0aW9uYWwpCi0gICAgOiBtX2Jhc2UocmFuZ2UtPnN0YXJ0UG9zaXRpb24oKSkKLSAg
ICAsIG1fZXh0ZW50KHJhbmdlLT5lbmRQb3NpdGlvbigpKQorVmlzaWJsZVNlbGVjdGlvbjo6Vmlz
aWJsZVNlbGVjdGlvbihjb25zdCBSYW5nZSYgcmFuZ2UsIEVBZmZpbml0eSBhZmZpbml0eSwgYm9v
bCBpc0RpcmVjdGlvbmFsKQorICAgIDogbV9iYXNlKHJhbmdlLnN0YXJ0UG9zaXRpb24oKSkKKyAg
ICAsIG1fZXh0ZW50KHJhbmdlLmVuZFBvc2l0aW9uKCkpCiAgICAgLCBtX2FmZmluaXR5KGFmZmlu
aXR5KQogICAgICwgbV9pc0RpcmVjdGlvbmFsKGlzRGlyZWN0aW9uYWwpCiB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uaAkocmV2aXNpb24gMTgzMTUwKQor
KysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxlU2VsZWN0aW9uLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGljOgogICAgIFZpc2libGVTZWxlY3Rpb24oY29uc3Qg
UG9zaXRpb24mLCBFQWZmaW5pdHksIGJvb2wgaXNEaXJlY3Rpb25hbCA9IGZhbHNlKTsKICAgICBW
aXNpYmxlU2VsZWN0aW9uKGNvbnN0IFBvc2l0aW9uJiwgY29uc3QgUG9zaXRpb24mLCBFQWZmaW5p
dHkgPSBTRUxfREVGQVVMVF9BRkZJTklUWSwgYm9vbCBpc0RpcmVjdGlvbmFsID0gZmFsc2UpOwog
Ci0gICAgV0VCQ09SRV9FWFBPUlQgVmlzaWJsZVNlbGVjdGlvbihjb25zdCBSYW5nZSosIEVBZmZp
bml0eSA9IFNFTF9ERUZBVUxUX0FGRklOSVRZLCBib29sIGlzRGlyZWN0aW9uYWwgPSBmYWxzZSk7
CisgICAgV0VCQ09SRV9FWFBPUlQgVmlzaWJsZVNlbGVjdGlvbihjb25zdCBSYW5nZSYsIEVBZmZp
bml0eSA9IFNFTF9ERUZBVUxUX0FGRklOSVRZLCBib29sIGlzRGlyZWN0aW9uYWwgPSBmYWxzZSk7
CiAgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQgVmlzaWJsZVNlbGVjdGlvbihjb25zdCBWaXNpYmxl
UG9zaXRpb24mLCBib29sIGlzRGlyZWN0aW9uYWwgPSBmYWxzZSk7CiAgICAgV0VCQ09SRV9FWFBP
UlQgVmlzaWJsZVNlbGVjdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBjb25zdCBWaXNpYmxl
UG9zaXRpb24mLCBib29sIGlzRGlyZWN0aW9uYWwgPSBmYWxzZSk7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCShyZXZpc2lvbiAxODMxNTApCisrKyBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTI3Myw3
ICsyNzMsNyBAQCB2b2lkIEVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChOCiAgICAg
ICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5v
ZGUtPmRvY3VtZW50KCksIFBvc2l0aW9uKG5vZGUsIFBvc2l0aW9uOjpQb3NpdGlvbklzQmVmb3Jl
QW5jaG9yKSwgUG9zaXRpb24obm9kZSwgUG9zaXRpb246OlBvc2l0aW9uSXNBZnRlckFuY2hvcikp
OwotICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24o
cmFuZ2UuZ2V0KCkpLCBGcmFtZVNlbGVjdGlvbjo6RG9Ob3RTZXRGb2N1cyk7CisgICAgbV9mcmFt
ZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbigqcmFuZ2UpLCBGcmFt
ZVNlbGVjdGlvbjo6RG9Ob3RTZXRGb2N1cyk7CiAKICAgICBQYXN0ZWJvYXJkIHBhc3RlYm9hcmQo
cGFzdGVib2FyZE5hbWUpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9s
bGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVy
LmNwcAkocmV2aXNpb24gMTgzMTUwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJv
bGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTcwNiw3ICs3MDYsNyBAQCBzdGF0aWMgdm9pZCBz
ZWxlY3RFbGVtZW50KEVsZW1lbnQmIGVsZW1lCiB7CiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9
IGVsZW1lbnQuZG9jdW1lbnQoKS5jcmVhdGVSYW5nZSgpOwogICAgIHJhbmdlLT5zZWxlY3ROb2Rl
KCZlbGVtZW50KTsKLSAgICBlbGVtZW50LmRvY3VtZW50KCkuZnJhbWUoKS0+c2VsZWN0aW9uKCku
c2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocmFuZ2UuZ2V0KCksIERPV05TVFJFQU0pKTsK
KyAgICBlbGVtZW50LmRvY3VtZW50KCkuZnJhbWUoKS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9u
KFZpc2libGVTZWxlY3Rpb24oKnJhbmdlLCBET1dOU1RSRUFNKSk7CiB9CiAKIHN0YXRpYyBJbnRQ
b2ludCBkcmFnTG9jRm9yREhUTUxEcmFnKGNvbnN0IEludFBvaW50JiBtb3VzZURyYWdnZWRQb2lu
dCwgY29uc3QgSW50UG9pbnQmIGRyYWdPcmlnaW4sIGNvbnN0IEludFBvaW50JiBkcmFnSW1hZ2VP
ZmZzZXQsIGJvb2wgaXNMaW5rSW1hZ2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJ
bmRpY2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGlj
YXRvci5jcHAJKHJldmlzaW9uIDE4MzE1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dElu
ZGljYXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTk4LDcgKzk4LDcgQEAgUGFzc1JlZlB0cjxU
ZXh0SW5kaWNhdG9yPiBUZXh0SW5kaWNhdG9yOgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIFZpc2libGVTZWxlY3Rpb24gb2xkU2VsZWN0aW9uID0gZnJhbWUtPnNlbGVjdGlvbigpLnNl
bGVjdGlvbigpOwotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oJnJhbmdlKTsK
KyAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKHJhbmdlKTsKIAogICAgIFJlZlB0
cjxUZXh0SW5kaWNhdG9yPiBpbmRpY2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoU2Vs
ZWN0aW9uSW5GcmFtZSgqZnJhbWUsIHByZXNlbnRhdGlvblRyYW5zaXRpb24pOwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCShyZXZpc2lvbiAxODMx
NTApCisrKyBTb3VyY2UvV2ViQ29yZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0JKHdvcmtp
bmcgY29weSkKQEAgLTEwMTcsNyArMTAxNyw3IEBAIFZpc2libGVTZWxlY3Rpb24gRXZlbnRIYW5k
bGVyOjpzZWxlY3RDbG8KIAogICAgIE5TRGljdGlvbmFyeSAqb3B0aW9ucyA9IG5pbDsKICAgICBp
ZiAoUmVmUHRyPFJhbmdlPiByYW5nZSA9IHJhbmdlRm9yRGljdGlvbmFyeUxvb2t1cEF0SGl0VGVz
dFJlc3VsdChyZXN1bHQsICZvcHRpb25zKSkKLSAgICAgICAgcmV0dXJuIFZpc2libGVTZWxlY3Rp
b24ocmFuZ2UuZ2V0KCkpOworICAgICAgICByZXR1cm4gVmlzaWJsZVNlbGVjdGlvbigqcmFuZ2Up
OwogCiAgICAgcmV0dXJuIFZpc2libGVTZWxlY3Rpb24oKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9TZWxlY3Rpb25TdWJ0cmVlUm9vdC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblN1YnRyZWVSb290LmNwcAkocmV2aXNpb24g
MTgzMTUwKQorKysgU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblN1YnRyZWVSb290
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNTYsNyArNTYsNyBAQCB2b2lkIFNlbGVjdGlvblN1YnRy
ZWVSb290OjphZGp1c3RGb3JWaXNpCiAgICAgUG9zaXRpb24gZW5kUG9zaXRpb24gPSBjcmVhdGVM
ZWdhY3lFZGl0aW5nUG9zaXRpb24obV9zZWxlY3Rpb25TdWJ0cmVlRGF0YS5zZWxlY3Rpb25FbmQo
KS0+bm9kZSgpLCBtX3NlbGVjdGlvblN1YnRyZWVEYXRhLnNlbGVjdGlvbkVuZFBvcygpKTsKIAog
ICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKGRvY3VtZW50LCBzdGFydFBv
c2l0aW9uLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpLCBlbmRQb3NpdGlvbi5wYXJlbnRBbmNo
b3JlZEVxdWl2YWxlbnQoKSk7Ci0gICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24ocmFuZ2Uu
Z2V0KCkpOworICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uKCpyYW5nZSk7CiAgICAgUG9z
aXRpb24gc3RhcnRQb3MgPSBzZWxlY3Rpb24uc3RhcnQoKTsKICAgICBQb3NpdGlvbiBjYW5kaWRh
dGUgPSBzdGFydFBvcy5kb3duc3RyZWFtKCk7CiAgICAgaWYgKGNhbmRpZGF0ZS5pc0NhbmRpZGF0
ZSgpKQpJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTgzMTU1KQorKysgU291cmNlL1dlYktpdDIv
Q2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTUtMDQtMjIgIEJy
ZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgVmlzaWJsZVNlbGVj
dGlvbiBzaG91bGQgb25seSBhY2NlcHQgUmFuZ2UgYnkgcmVmZXJlbmNlCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQwNDcKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgYWxsIHVzZXMgb2YgVmlz
aWJsZVNlbGVjdGlvbiB0byBwYXNzIGEgUmFuZ2UgcmVmZXJlbmNlIGluc3RlYWQKKyAgICAgICAg
b2YgYSBSYW5nZSBwb2ludGVyLgorCisgICAgICAgICogV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6Oklu
amVjdGVkQnVuZGxlUmFuZ2VIYW5kbGU6OnJlbmRlcmVkSW1hZ2UpOgorICAgICAgICAqIFdlYlBy
b2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJLaXQ6OkZpbmRD
b250cm9sbGVyOjpnZXRJbWFnZUZvckZpbmRNYXRjaCk6CisgICAgICAgIChXZWJLaXQ6OkZpbmRD
b250cm9sbGVyOjpzZWxlY3RGaW5kTWF0Y2gpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFn
ZS9XZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aW5zZXJ0VGV4dEFzeW5j
KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6c2V0Q29tcG9zaXRpb25Bc3luYyk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjppbnNlcnREaWN0YXRlZFRleHRBc3luYyk6CisKIDIwMTUtMDQtMjIgIEFu
ZGVycyBDYXJsc3NvbiAgPGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgV0tfQVJS
QVkgYW5kIFdLX1NFVCBhbm5vdGF0aW9ucwpJbmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9ET00vSW5q
ZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAJKHJldmlzaW9uIDE4MzE1MCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VI
YW5kbGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMTQsNyArMTE0LDcgQEAgUGFzc1JlZlB0cjxX
ZWJJbWFnZT4gSW5qZWN0ZWRCdW5kbGVSYW5nZQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAog
ICAgIFZpc2libGVTZWxlY3Rpb24gb2xkU2VsZWN0aW9uID0gZnJhbWUtPnNlbGVjdGlvbigpLnNl
bGVjdGlvbigpOwotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNl
bGVjdGlvbihtX3JhbmdlLmdldCgpKSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVj
dGlvbihWaXNpYmxlU2VsZWN0aW9uKCptX3JhbmdlKSk7CiAKICAgICBmbG9hdCBzY2FsZUZhY3Rv
ciA9IChvcHRpb25zICYgU25hcHNob3RPcHRpb25zRXhjbHVkZURldmljZVNjYWxlRmFjdG9yKSA/
IDEgOiBmcmFtZS0+cGFnZSgpLT5kZXZpY2VTY2FsZUZhY3RvcigpOwogICAgIEludFJlY3QgcGFp
bnRSZWN0ID0gZW5jbG9zaW5nSW50UmVjdChtX3JhbmdlLT5ib3VuZGluZ1JlY3QoKSk7CkluZGV4
OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJv
bGxlci5jcHAJKHJldmlzaW9uIDE4MzE1MCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
V2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI3MCw3ICsyNzAs
NyBAQCB2b2lkIEZpbmRDb250cm9sbGVyOjpnZXRJbWFnZUZvckZpbmRNYXRjCiAgICAgICAgIHJl
dHVybjsKIAogICAgIFZpc2libGVTZWxlY3Rpb24gb2xkU2VsZWN0aW9uID0gZnJhbWUtPnNlbGVj
dGlvbigpLnNlbGVjdGlvbigpOwotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24o
VmlzaWJsZVNlbGVjdGlvbihtX2ZpbmRNYXRjaGVzW21hdGNoSW5kZXhdLmdldCgpKSk7CisgICAg
ZnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKCptX2ZpbmRN
YXRjaGVzW21hdGNoSW5kZXhdKSk7CiAKICAgICBSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBzZWxl
Y3Rpb25TbmFwc2hvdCA9IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKCpmcmFtZSktPmNyZWF0ZVNl
bGVjdGlvblNuYXBzaG90KCk7CiAKQEAgLTI5NSw3ICsyOTUsNyBAQCB2b2lkIEZpbmRDb250cm9s
bGVyOjpzZWxlY3RGaW5kTWF0Y2godWluCiAgICAgRnJhbWUqIGZyYW1lID0gbV9maW5kTWF0Y2hl
c1ttYXRjaEluZGV4XS0+c3RhcnRDb250YWluZXIoKS0+ZG9jdW1lbnQoKS5mcmFtZSgpOwogICAg
IGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0
U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24obV9maW5kTWF0Y2hlc1ttYXRjaEluZGV4XS5nZXQo
KSkpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlv
bigqbV9maW5kTWF0Y2hlc1ttYXRjaEluZGV4XSkpOwogfQogCiB2b2lkIEZpbmRDb250cm9sbGVy
OjpoaWRlRmluZFVJKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBh
Z2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDE4MzE1MCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIxMSw3ICs0MjEx
LDcgQEAgdm9pZCBXZWJQYWdlOjppbnNlcnRUZXh0QXN5bmMoY29uc3QgU3RyaQogICAgIGlmIChy
ZXBsYWNlbWVudEVkaXRpbmdSYW5nZS5sb2NhdGlvbiAhPSBub3RGb3VuZCkgewogICAgICAgICBS
ZWZQdHI8UmFuZ2U+IHJlcGxhY2VtZW50UmFuZ2UgPSByYW5nZUZyb21FZGl0aW5nUmFuZ2UoZnJh
bWUsIHJlcGxhY2VtZW50RWRpdGluZ1JhbmdlKTsKICAgICAgICAgaWYgKHJlcGxhY2VtZW50UmFu
Z2UpCi0gICAgICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNl
bGVjdGlvbihyZXBsYWNlbWVudFJhbmdlLmdldCgpLCBTRUxfREVGQVVMVF9BRkZJTklUWSkpOwor
ICAgICAgICAgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rp
b24oKnJlcGxhY2VtZW50UmFuZ2UsIFNFTF9ERUZBVUxUX0FGRklOSVRZKSk7CiAgICAgfQogICAg
IAogICAgIGlmIChyZWdpc3RlclVuZG9Hcm91cCkKQEAgLTQzMDEsNyArNDMwMSw4IEBAIHZvaWQg
V2ViUGFnZTo6c2V0Q29tcG9zaXRpb25Bc3luYyhjb25zdCAKICAgICAgICAgUmVmUHRyPFJhbmdl
PiByZXBsYWNlbWVudFJhbmdlOwogICAgICAgICBpZiAocmVwbGFjZW1lbnRFZGl0aW5nUmFuZ2Uu
bG9jYXRpb24gIT0gbm90Rm91bmQpIHsKICAgICAgICAgICAgIHJlcGxhY2VtZW50UmFuZ2UgPSBy
YW5nZUZyb21FZGl0aW5nUmFuZ2UoZnJhbWUsIHJlcGxhY2VtZW50RWRpdGluZ1JhbmdlKTsKLSAg
ICAgICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9u
KHJlcGxhY2VtZW50UmFuZ2UuZ2V0KCksIFNFTF9ERUZBVUxUX0FGRklOSVRZKSk7CisgICAgICAg
ICAgICBpZiAocmVwbGFjZW1lbnRSYW5nZSkKKyAgICAgICAgICAgICAgICBmcmFtZS5zZWxlY3Rp
b24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbigqcmVwbGFjZW1lbnRSYW5nZSwgU0VM
X0RFRkFVTFRfQUZGSU5JVFkpKTsKICAgICAgICAgfQogCiAgICAgICAgIGZyYW1lLmVkaXRvcigp
LnNldENvbXBvc2l0aW9uKHRleHQsIHVuZGVybGluZXMsIHNlbGVjdGlvbi5sb2NhdGlvbiwgc2Vs
ZWN0aW9uLmxvY2F0aW9uICsgc2VsZWN0aW9uLmxlbmd0aCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9XZWJQYWdlTWFjLm1tCShyZXZpc2lv
biAxODMxNTApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBh
Z2VNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ0NCw3ICs0NDQsNyBAQCB2b2lkIFdlYlBhZ2U6
Omluc2VydERpY3RhdGVkVGV4dEFzeW5jKGNvCiAgICAgaWYgKHJlcGxhY2VtZW50RWRpdGluZ1Jh
bmdlLmxvY2F0aW9uICE9IG5vdEZvdW5kKSB7CiAgICAgICAgIFJlZlB0cjxSYW5nZT4gcmVwbGFj
ZW1lbnRSYW5nZSA9IHJhbmdlRnJvbUVkaXRpbmdSYW5nZShmcmFtZSwgcmVwbGFjZW1lbnRFZGl0
aW5nUmFuZ2UpOwogICAgICAgICBpZiAocmVwbGFjZW1lbnRSYW5nZSkKLSAgICAgICAgICAgIGZy
YW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHJlcGxhY2VtZW50
UmFuZ2UuZ2V0KCksIFNFTF9ERUZBVUxUX0FGRklOSVRZKSk7CisgICAgICAgICAgICBmcmFtZS5z
ZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbigqcmVwbGFjZW1lbnRSYW5n
ZSwgU0VMX0RFRkFVTFRfQUZGSU5JVFkpKTsKICAgICB9CiAKICAgICBpZiAocmVnaXN0ZXJVbmRv
R3JvdXApCkluZGV4OiBTb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxODMxNTUpCisrKyBTb3VyY2Uv
V2ViS2l0L21hYy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxOCBAQAorMjAx
NS0wNC0yMiAgQnJlbnQgRnVsZ2hhbSAgPGJmdWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBW
aXNpYmxlU2VsZWN0aW9uIHNob3VsZCBvbmx5IGFjY2VwdCBSYW5nZSBieSByZWZlcmVuY2UKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NDA0NworCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBhbGwg
dXNlcyBvZiBWaXNpYmxlU2VsZWN0aW9uIHRvIHBhc3MgYSBSYW5nZSByZWZlcmVuY2UgaW5zdGVh
ZAorICAgICAgICBvZiBhIFJhbmdlIHBvaW50ZXIuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9y
dC9XZWJDb250ZXh0TWVudUNsaWVudC5tbToKKyAgICAgICAgKFdlYkNvbnRleHRNZW51Q2xpZW50
OjppbWFnZUZvckN1cnJlbnRTaGFyaW5nU2VydmljZVBpY2tlckl0ZW0pOgorICAgICAgICAqIFdl
YlZpZXcvV2ViRnJhbWUubW06CisgICAgICAgICgtW1dlYkZyYW1lIF9zZWxlY3ROU1JhbmdlOl0p
OgorCiAyMDE1LTA0LTIyICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgog
CiAgICAgICAgIFtNYWNdIERldmljZSBwaWNrZXIgbWVudSBpcyBwb3NpdGlvbmVkIGluY29ycmVj
dGx5IGluIFdLMQpJbmRleDogU291cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ29u
dGV4dE1lbnVDbGllbnQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0JKHJldmlzaW9uIDE4MzE1MCkKKysrIFNv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCSh3
b3JraW5nIGNvcHkpCkBAIC00NzEsNyArNDcxLDcgQEAgUmV0YWluUHRyPE5TSW1hZ2U+IFdlYkNv
bnRleHRNZW51Q2xpZW50OgogCiAgICAgVmlzaWJsZVNlbGVjdGlvbiBvbGRTZWxlY3Rpb24gPSBm
cmFtZVZpZXctPmZyYW1lKCkuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CiAgICAgUmVmUHRyPFJh
bmdlPiByYW5nZSA9IFJhbmdlOjpjcmVhdGUobm9kZS0+ZG9jdW1lbnQoKSwgUG9zaXRpb24obm9k
ZSwgUG9zaXRpb246OlBvc2l0aW9uSXNCZWZvcmVBbmNob3IpLCBQb3NpdGlvbihub2RlLCBQb3Np
dGlvbjo6UG9zaXRpb25Jc0FmdGVyQW5jaG9yKSk7Ci0gICAgZnJhbWVWaWV3LT5mcmFtZSgpLnNl
bGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHJhbmdlLmdldCgpKSwgRnJh
bWVTZWxlY3Rpb246OkRvTm90U2V0Rm9jdXMpOworICAgIGZyYW1lVmlldy0+ZnJhbWUoKS5zZWxl
Y3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbigqcmFuZ2UpLCBGcmFtZVNlbGVj
dGlvbjo6RG9Ob3RTZXRGb2N1cyk7CiAKICAgICBQYWludEJlaGF2aW9yIG9sZFBhaW50QmVoYXZp
b3IgPSBmcmFtZVZpZXctPnBhaW50QmVoYXZpb3IoKTsKICAgICBmcmFtZVZpZXctPnNldFBhaW50
QmVoYXZpb3IoUGFpbnRCZWhhdmlvclNlbGVjdGlvbk9ubHkpOwpJbmRleDogU291cmNlL1dlYktp
dC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkZyYW1lLm1tCShyZXZpc2lvbiAxODMxNTApCisrKyBTb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMTU0LDcgKzExNTQs
NyBAQCAtICh2b2lkKV9zZWxlY3ROU1JhbmdlOihOU1JhbmdlKXJhbmdlCiB7CiAgICAgUmVmUHRy
PFJhbmdlPiBkb21SYW5nZSA9IFtzZWxmIF9jb252ZXJ0VG9ET01SYW5nZTpyYW5nZV07CiAgICAg
aWYgKGRvbVJhbmdlKQotICAgICAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5zZWxlY3Rpb24oKS5z
ZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbihkb21SYW5nZS5nZXQoKSwgU0VMX0RFRkFVTFRf
QUZGSU5JVFkpKTsKKyAgICAgICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2VsZWN0aW9uKCkuc2V0
U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oKmRvbVJhbmdlLCBTRUxfREVGQVVMVF9BRkZJTklU
WSkpOwogfQogCiAtIChCT09MKV9pc0Rpc3BsYXlpbmdTdGFuZGFsb25lSW1hZ2UK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251387</attachid>
            <date>2015-04-22 17:06:06 -0700</date>
            <delta_ts>2015-04-22 17:38:42 -0700</delta_ts>
            <desc>Patch v2 (No RELEASE_ASSERT, iOS Fixes)</desc>
            <filename>bug-144047-20150422170502.patch</filename>
            <type>text/plain</type>
            <size>25217</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MzE1NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDE1LTA0LTIyICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFZpc2libGVTZWxlY3Rpb24g
c2hvdWxkIG9ubHkgYWNjZXB0IFJhbmdlIGJ5IHJlZmVyZW5jZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0MDQ3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIFZpc2libGVTZWxlY3Rpb24gdG8g
ZXhwZWN0IGEgUmFuZ2UgcmVmZXJlbmNlIGFyZ3VtZW50LCByYXRoZXIgdGhhbiBhCisgICAgICAg
IFJhbmdlKi4gQWxzbyB1cGRhdGUgYWxsIHVzZXMgb2YgVmlzaWJsZVNlbGVjdGlvbiB0byBwYXNz
IGEgcmVmZXJlbmNlIGluc3RlYWQKKyAgICAgICAgb2YgYSBwb2ludGVyLgorCisgICAgICAgIE5v
IGNoYW5nZSBpbiBiZWhhdmlvciwgc28gbmV3IHRlc3RzLgorCisgICAgICAgICogZWRpdGluZy9F
ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3Rpb25Gb3JDb21tYW5k
KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9X
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yOjp0cmFuc3Bvc2UpOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yOjpmaW5kU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmFuZ2VPZlN0cmlu
Zyk6CisgICAgICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0ZWRSYW5nZSk6CisgICAgICAgICogZWRpdGlu
Zy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxs
aW5nQ29ycmVjdGlvbkNvbW1hbmQ6OlNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQpOgorICAgICAg
ICAqIGVkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaXNp
YmxlU2VsZWN0aW9uOjpWaXNpYmxlU2VsZWN0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2li
bGVTZWxlY3Rpb24uaDoKKyAgICAgICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlcGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQpOgorICAgICAg
ICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2VsZWN0RWxl
bWVudCk6CisgICAgICAgICogcGFnZS9UZXh0SW5kaWNhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZSk6CisgICAgICAgICogcGFnZS9tYWMv
RXZlbnRIYW5kbGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzZWxl
Y3RDbG9zZXN0V29yZEZyb21IaXRUZXN0UmVzdWx0QmFzZWRPbkxvb2t1cCk6CisgICAgICAgICog
cmVuZGVyaW5nL1NlbGVjdGlvblN1YnRyZWVSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNl
bGVjdGlvblN1YnRyZWVSb290OjphZGp1c3RGb3JWaXNpYmxlU2VsZWN0aW9uKToKKwogMjAxNS0w
NC0yMiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgbmV3
IG9wdGltaXplZCBmdWxsc2NyZWVuIGRlbGVnYXRlIG1ldGhvZHMKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvRWRpdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL0VkaXRvci5jcHAJKHJldmlzaW9uIDE4MzE1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRWRpdG9yLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTEsIDIwMTMsIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4LCAy
MDExLCAyMDEzLTIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogQ29weXJp
Z2h0IChDKSAyMDA4IE5va2lhIENvcnBvcmF0aW9uIGFuZC9vciBpdHMgc3Vic2lkaWFyeSgtaWVz
KQogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dApAQCAtMTU3LDcgKzE1Nyw3IEBAIFZpc2libGVTZWxlY3Rpb24g
RWRpdG9yOjpzZWxlY3Rpb25Gb3JDb20KICAgICBIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudCog
dGV4dEZyb21Db250cm9sT2ZUYXJnZXQgPSBpczxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4o
KmV2ZW50LT50YXJnZXQoKS0+dG9Ob2RlKCkpID8gZG93bmNhc3Q8SFRNTFRleHRGb3JtQ29udHJv
bEVsZW1lbnQ+KGV2ZW50LT50YXJnZXQoKS0+dG9Ob2RlKCkpIDogbnVsbHB0cjsKICAgICBpZiAo
dGV4dEZyb21Db250cm9sT2ZUYXJnZXQgJiYgKHNlbGVjdGlvbi5zdGFydCgpLmlzTnVsbCgpIHx8
IHRleHRGcm9tQ29udHJvbE9mVGFyZ2V0ICE9IHRleHRGb3JtQ29udHJvbE9mU2VsZWN0aW9uU3Rh
cnQpKSB7CiAgICAgICAgIGlmIChSZWZQdHI8UmFuZ2U+IHJhbmdlID0gdGV4dEZyb21Db250cm9s
T2ZUYXJnZXQtPnNlbGVjdGlvbigpKQotICAgICAgICAgICAgcmV0dXJuIFZpc2libGVTZWxlY3Rp
b24ocmFuZ2UuZ2V0KCksIERPV05TVFJFQU0sIHNlbGVjdGlvbi5pc0RpcmVjdGlvbmFsKCkpOwor
ICAgICAgICAgICAgcmV0dXJuIFZpc2libGVTZWxlY3Rpb24oKnJhbmdlLCBET1dOU1RSRUFNLCBz
ZWxlY3Rpb24uaXNEaXJlY3Rpb25hbCgpKTsKICAgICB9CiAgICAgcmV0dXJuIHNlbGVjdGlvbjsK
IH0KQEAgLTIwMDAsNyArMjAwMCw3IEBAIHZvaWQgRWRpdG9yOjphZHZhbmNlVG9OZXh0TWlzc3Bl
bGxpbmcoYm8KICAgICAgICAgCiAgICAgICAgIC8vIEZJWE1FIDQ4NTkxOTA6IFRoaXMgZ2V0cyBj
b25mdXNlZCB3aXRoIGRvdWJsZWQgcHVuY3R1YXRpb24gYXQgdGhlIGVuZCBvZiBhIHBhcmFncmFw
aAogICAgICAgICBSZWZQdHI8UmFuZ2U+IGJhZEdyYW1tYXJSYW5nZSA9IFRleHRJdGVyYXRvcjo6
c3VicmFuZ2UoZ3JhbW1hclNlYXJjaFJhbmdlLmdldCgpLCBncmFtbWFyUGhyYXNlT2Zmc2V0ICsg
Z3JhbW1hckRldGFpbC5sb2NhdGlvbiwgZ3JhbW1hckRldGFpbC5sZW5ndGgpOwotICAgICAgICBt
X2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKGJhZEdyYW1t
YXJSYW5nZS5nZXQoKSwgU0VMX0RFRkFVTFRfQUZGSU5JVFkpKTsKKyAgICAgICAgbV9mcmFtZS5z
ZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbigqYmFkR3JhbW1hclJhbmdl
LCBTRUxfREVGQVVMVF9BRkZJTklUWSkpOwogICAgICAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnJl
dmVhbFNlbGVjdGlvbigpOwogICAgICAgICAKICAgICAgICAgY2xpZW50KCktPnVwZGF0ZVNwZWxs
aW5nVUlXaXRoR3JhbW1hclN0cmluZyhiYWRHcmFtbWFyUGhyYXNlLCBncmFtbWFyRGV0YWlsKTsK
QEAgLTIwMTIsNyArMjAxMiw3IEBAIHZvaWQgRWRpdG9yOjphZHZhbmNlVG9OZXh0TWlzc3BlbGxp
bmcoYm8KICAgICAgICAgLy8gYSBtYXJrZXIgc28gd2UgZHJhdyB0aGUgcmVkIHNxdWlnZ2xlIGxh
dGVyLgogICAgICAgICAKICAgICAgICAgUmVmUHRyPFJhbmdlPiBtaXNzcGVsbGluZ1JhbmdlID0g
VGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShzcGVsbGluZ1NlYXJjaFJhbmdlLmdldCgpLCBtaXNzcGVs
bGluZ09mZnNldCwgbWlzc3BlbGxlZFdvcmQubGVuZ3RoKCkpOwotICAgICAgICBtX2ZyYW1lLnNl
bGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKG1pc3NwZWxsaW5nUmFuZ2Uu
Z2V0KCksIERPV05TVFJFQU0pKTsKKyAgICAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxl
Y3Rpb24oVmlzaWJsZVNlbGVjdGlvbigqbWlzc3BlbGxpbmdSYW5nZSwgRE9XTlNUUkVBTSkpOwog
ICAgICAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnJldmVhbFNlbGVjdGlvbigpOwogICAgICAgICAK
ICAgICAgICAgY2xpZW50KCktPnVwZGF0ZVNwZWxsaW5nVUlXaXRoTWlzc3BlbGxlZFdvcmQobWlz
c3BlbGxlZFdvcmQpOwpAQCAtMjIyOSw3ICsyMjI5LDcgQEAgdm9pZCBFZGl0b3I6Om1hcmtNaXNz
cGVsbGluZ3NBZnRlclR5cGluZwogCiAgICAgLy8gSWYgYXV0b2NvcnJlY3RlZCB3b3JkIGlzIG5v
biBlbXB0eSwgcmVwbGFjZSB0aGUgbWlzc3BlbGxlZCB3b3JkIGJ5IHRoaXMgd29yZC4KICAgICBp
ZiAoIWF1dG9jb3JyZWN0ZWRTdHJpbmcuaXNFbXB0eSgpKSB7Ci0gICAgICAgIFZpc2libGVTZWxl
Y3Rpb24gbmV3U2VsZWN0aW9uKG1pc3NwZWxsaW5nUmFuZ2UuZ2V0KCksIERPV05TVFJFQU0pOwor
ICAgICAgICBWaXNpYmxlU2VsZWN0aW9uIG5ld1NlbGVjdGlvbigqbWlzc3BlbGxpbmdSYW5nZSwg
RE9XTlNUUkVBTSk7CiAgICAgICAgIGlmIChuZXdTZWxlY3Rpb24gIT0gbV9mcmFtZS5zZWxlY3Rp
b24oKS5zZWxlY3Rpb24oKSkgewogICAgICAgICAgICAgaWYgKCFtX2ZyYW1lLnNlbGVjdGlvbigp
LnNob3VsZENoYW5nZVNlbGVjdGlvbihuZXdTZWxlY3Rpb24pKQogICAgICAgICAgICAgICAgIHJl
dHVybjsKQEAgLTI1MTcsNyArMjUxNyw3IEBAIHZvaWQgRWRpdG9yOjptYXJrQW5kUmVwbGFjZUZv
cihQYXNzUmVmUHQKICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KIAot
ICAgICAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rpb25Ub1JlcGxhY2UocmFuZ2VUb1Jl
cGxhY2UuZ2V0KCksIERPV05TVFJFQU0pOworICAgICAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiBz
ZWxlY3Rpb25Ub1JlcGxhY2UoKnJhbmdlVG9SZXBsYWNlLCBET1dOU1RSRUFNKTsKICAgICAgICAg
ICAgIGlmIChzZWxlY3Rpb25Ub1JlcGxhY2UgIT0gbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rp
b24oKSkgewogICAgICAgICAgICAgICAgIGlmICghbV9mcmFtZS5zZWxlY3Rpb24oKS5zaG91bGRD
aGFuZ2VTZWxlY3Rpb24oc2VsZWN0aW9uVG9SZXBsYWNlKSkKICAgICAgICAgICAgICAgICAgICAg
Y29udGludWU7CkBAIC0yODAwLDcgKzI4MDAsNyBAQCB2b2lkIEVkaXRvcjo6dHJhbnNwb3NlKCkK
ICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gbWFrZVJhbmdlKHByZXZpb3VzLCBuZXh0KTsKICAg
ICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm47Ci0gICAgVmlzaWJsZVNlbGVjdGlvbiBuZXdT
ZWxlY3Rpb24ocmFuZ2UuZ2V0KCksIERPV05TVFJFQU0pOworICAgIFZpc2libGVTZWxlY3Rpb24g
bmV3U2VsZWN0aW9uKCpyYW5nZSwgRE9XTlNUUkVBTSk7CiAKICAgICAvLyBUcmFuc3Bvc2UgdGhl
IHR3byBjaGFyYWN0ZXJzLgogICAgIFN0cmluZyB0ZXh0ID0gcGxhaW5UZXh0KHJhbmdlLmdldCgp
KTsKQEAgLTMwNDksNyArMzA0OSw3IEBAIGJvb2wgRWRpdG9yOjpmaW5kU3RyaW5nKGNvbnN0IFN0
cmluZyYgdGEKICAgICBpZiAoIXJlc3VsdFJhbmdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
LSAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHJl
c3VsdFJhbmdlLmdldCgpLCBET1dOU1RSRUFNKSk7CisgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5z
ZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbigqcmVzdWx0UmFuZ2UsIERPV05TVFJFQU0pKTsK
IAogICAgIGlmICghKG9wdGlvbnMgJiBEb05vdFJldmVhbFNlbGVjdGlvbikpCiAgICAgICAgIG1f
ZnJhbWUuc2VsZWN0aW9uKCkucmV2ZWFsU2VsZWN0aW9uKCk7CkBAIC0zMDk5LDcgKzMwOTksNyBA
QCBQYXNzUmVmUHRyPFJhbmdlPiBFZGl0b3I6OnJhbmdlT2ZTdHJpbmcoCiAgICAgLy8gSWYgd2Ug
c3RhcnRlZCBpbiB0aGUgcmVmZXJlbmNlIHJhbmdlIGFuZCB0aGUgZm91bmQgcmFuZ2UgZXhhY3Rs
eSBtYXRjaGVzIHRoZSByZWZlcmVuY2UgcmFuZ2UsIGZpbmQgYWdhaW4uCiAgICAgLy8gQnVpbGQg
YSBzZWxlY3Rpb24gd2l0aCB0aGUgZm91bmQgcmFuZ2UgdG8gcmVtb3ZlIGNvbGxhcHNlZCB3aGl0
ZXNwYWNlLgogICAgIC8vIENvbXBhcmUgcmFuZ2VzIGluc3RlYWQgb2Ygc2VsZWN0aW9uIG9iamVj
dHMgdG8gaWdub3JlIHRoZSB3YXkgdGhhdCB0aGUgY3VycmVudCBzZWxlY3Rpb24gd2FzIG1hZGUu
Ci0gICAgaWYgKHN0YXJ0SW5SZWZlcmVuY2VSYW5nZSAmJiBhcmVSYW5nZXNFcXVhbChWaXNpYmxl
U2VsZWN0aW9uKHJlc3VsdFJhbmdlLmdldCgpKS50b05vcm1hbGl6ZWRSYW5nZSgpLmdldCgpLCBy
ZWZlcmVuY2VSYW5nZSkpIHsKKyAgICBpZiAoc3RhcnRJblJlZmVyZW5jZVJhbmdlICYmIGFyZVJh
bmdlc0VxdWFsKFZpc2libGVTZWxlY3Rpb24oKnJlc3VsdFJhbmdlKS50b05vcm1hbGl6ZWRSYW5n
ZSgpLmdldCgpLCByZWZlcmVuY2VSYW5nZSkpIHsKICAgICAgICAgc2VhcmNoUmFuZ2UgPSByYW5n
ZU9mQ29udGVudHMoZG9jdW1lbnQoKSk7CiAgICAgICAgIGlmIChmb3J3YXJkKQogICAgICAgICAg
ICAgc2VhcmNoUmFuZ2UtPnNldFN0YXJ0KHJlZmVyZW5jZVJhbmdlLT5lbmRQb3NpdGlvbigpKTsK
SW5kZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRnJhbWVTZWxlY3Rpb24uY3BwCShyZXZpc2lv
biAxODMxNTApCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQs
IDIwMDgsIDIwMDksIDIwMTAsIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDE0LTIwMTUgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CkBAIC0xNzIwLDcgKzE3MjAsNyBAQCBib29sIEZyYW1lU2VsZWN0aW9uOjpzZXRTZWxlY3RlZFJh
bmdlKFJhCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBBU1NFUlQoJnJhbmdlLT5zdGFydENv
bnRhaW5lcigpLT5kb2N1bWVudCgpID09ICZyYW5nZS0+ZW5kQ29udGFpbmVyKCktPmRvY3VtZW50
KCkpOwogCi0gICAgVmlzaWJsZVNlbGVjdGlvbiBuZXdTZWxlY3Rpb24ocmFuZ2UsIGFmZmluaXR5
KTsKKyAgICBWaXNpYmxlU2VsZWN0aW9uIG5ld1NlbGVjdGlvbigqcmFuZ2UsIGFmZmluaXR5KTsK
IAogI2lmIFBMQVRGT1JNKElPUykKICAgICAvLyBGSVhNRTogV2h5IGRvIHdlIG5lZWQgdGhpcyBj
aGVjayBvbmx5IGluIGlPUz8KQEAgLTIxNjksNyArMjE2OSw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rp
b246OmV4cGFuZFNlbGVjdGlvblRvRWwKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gZWxlbWVu
dFJhbmdlQ29udGFpbmluZ0NhcmV0U2VsZWN0aW9uKCk7CiAgICAgaWYgKCFyYW5nZSkKICAgICAg
ICAgcmV0dXJuOwotICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uKHJhbmdlLmdldCgpLCBE
T1dOU1RSRUFNKTsKKyAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbigqcmFuZ2UsIERPV05T
VFJFQU0pOwogICAgIHNldFNlbGVjdGlvbihzZWxlY3Rpb24pOwogfQogCkBAIC0yMzg3LDcgKzIz
ODcsNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjpzZWxlY3RSYW5nZU9uRWxlbWVuCiAgICAgQVNT
RVJUKCFlYyk7CiAgICAgcmVzdWx0UmFuZ2UtPnNldEVuZChub2RlLCBsb2NhdGlvbiArIGxlbmd0
aCwgZWMpOwogICAgIEFTU0VSVCghZWMpOwotICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9u
ID0gVmlzaWJsZVNlbGVjdGlvbihyZXN1bHRSYW5nZS5nZXQoKSwgU0VMX0RFRkFVTFRfQUZGSU5J
VFkpOworICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uID0gVmlzaWJsZVNlbGVjdGlvbigq
cmVzdWx0UmFuZ2UsIFNFTF9ERUZBVUxUX0FGRklOSVRZKTsKICAgICBzZXRTZWxlY3Rpb24oc2Vs
ZWN0aW9uLCB0cnVlKTsKIH0KIApJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbGlu
Z0NvcnJlY3Rpb25Db21tYW5kLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwCShyZXZpc2lvbiAxODMxNTApCisrKyBT
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEsIDIwMTUg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCkBAIC04NCw3ICs4NCw3IEBAIHByaXZhdGU6CiBTcGVsbGluZ0NvcnJlY3Rpb25Db21t
YW5kOjpTcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kKFBhc3NSZWZQdHI8UmFuZ2U+IHJhbmdlVG9C
ZUNvcnJlY3RlZCwgY29uc3QgU3RyaW5nJiBjb3JyZWN0aW9uKQogICAgIDogQ29tcG9zaXRlRWRp
dENvbW1hbmQocmFuZ2VUb0JlQ29ycmVjdGVkLT5zdGFydENvbnRhaW5lcigpLT5kb2N1bWVudCgp
KQogICAgICwgbV9yYW5nZVRvQmVDb3JyZWN0ZWQocmFuZ2VUb0JlQ29ycmVjdGVkKQotICAgICwg
bV9zZWxlY3Rpb25Ub0JlQ29ycmVjdGVkKG1fcmFuZ2VUb0JlQ29ycmVjdGVkLmdldCgpKQorICAg
ICwgbV9zZWxlY3Rpb25Ub0JlQ29ycmVjdGVkKCptX3JhbmdlVG9CZUNvcnJlY3RlZCkKICAgICAs
IG1fY29ycmVjdGlvbihjb3JyZWN0aW9uKQogewogfQpJbmRleDogU291cmNlL1dlYkNvcmUvZWRp
dGluZy9WaXNpYmxlU2VsZWN0aW9uLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9l
ZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwCShyZXZpc2lvbiAxODMxNTApCisrKyBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiBBcHBsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAy
MDA2LCAyMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTg0LDkgKzg0LDkgQEAgVmlzaWJsZVNlbGVjdGlvbjo6Vmlz
aWJsZVNlbGVjdGlvbihjb25zdAogICAgIHZhbGlkYXRlKCk7CiB9CiAKLVZpc2libGVTZWxlY3Rp
b246OlZpc2libGVTZWxlY3Rpb24oY29uc3QgUmFuZ2UqIHJhbmdlLCBFQWZmaW5pdHkgYWZmaW5p
dHksIGJvb2wgaXNEaXJlY3Rpb25hbCkKLSAgICA6IG1fYmFzZShyYW5nZS0+c3RhcnRQb3NpdGlv
bigpKQotICAgICwgbV9leHRlbnQocmFuZ2UtPmVuZFBvc2l0aW9uKCkpCitWaXNpYmxlU2VsZWN0
aW9uOjpWaXNpYmxlU2VsZWN0aW9uKGNvbnN0IFJhbmdlJiByYW5nZSwgRUFmZmluaXR5IGFmZmlu
aXR5LCBib29sIGlzRGlyZWN0aW9uYWwpCisgICAgOiBtX2Jhc2UocmFuZ2Uuc3RhcnRQb3NpdGlv
bigpKQorICAgICwgbV9leHRlbnQocmFuZ2UuZW5kUG9zaXRpb24oKSkKICAgICAsIG1fYWZmaW5p
dHkoYWZmaW5pdHkpCiAgICAgLCBtX2lzRGlyZWN0aW9uYWwoaXNEaXJlY3Rpb25hbCkKIHsKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5oCShyZXZpc2lvbiAx
ODMxNTApCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uaAkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQgQXBw
bGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAx
NSBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC00NSw3ICs0NSw3IEBAIHB1YmxpYzoKICAgICBWaXNpYmxlU2VsZWN0aW9u
KGNvbnN0IFBvc2l0aW9uJiwgRUFmZmluaXR5LCBib29sIGlzRGlyZWN0aW9uYWwgPSBmYWxzZSk7
CiAgICAgVmlzaWJsZVNlbGVjdGlvbihjb25zdCBQb3NpdGlvbiYsIGNvbnN0IFBvc2l0aW9uJiwg
RUFmZmluaXR5ID0gU0VMX0RFRkFVTFRfQUZGSU5JVFksIGJvb2wgaXNEaXJlY3Rpb25hbCA9IGZh
bHNlKTsKIAotICAgIFdFQkNPUkVfRVhQT1JUIFZpc2libGVTZWxlY3Rpb24oY29uc3QgUmFuZ2Uq
LCBFQWZmaW5pdHkgPSBTRUxfREVGQVVMVF9BRkZJTklUWSwgYm9vbCBpc0RpcmVjdGlvbmFsID0g
ZmFsc2UpOworICAgIFdFQkNPUkVfRVhQT1JUIFZpc2libGVTZWxlY3Rpb24oY29uc3QgUmFuZ2Um
LCBFQWZmaW5pdHkgPSBTRUxfREVGQVVMVF9BRkZJTklUWSwgYm9vbCBpc0RpcmVjdGlvbmFsID0g
ZmFsc2UpOwogICAgIAogICAgIFdFQkNPUkVfRVhQT1JUIFZpc2libGVTZWxlY3Rpb24oY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJiwgYm9vbCBpc0RpcmVjdGlvbmFsID0gZmFsc2UpOwogICAgIFdFQkNP
UkVfRVhQT1JUIFZpc2libGVTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVBvc2l0aW9uJiwgY29uc3Qg
VmlzaWJsZVBvc2l0aW9uJiwgYm9vbCBpc0RpcmVjdGlvbmFsID0gZmFsc2UpOwpJbmRleDogU291
cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQkocmV2aXNpb24gMTgzMTUwKQorKysg
U291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAx
MyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYs
IDIwMDcsIDIwMDgsIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgog
ICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNzMsNyArMjczLDcgQEAgdm9pZCBF
ZGl0b3I6OnJlcGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQoTgogICAgICAgICByZXR1cm47CiAKICAg
ICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLT5kb2N1bWVudCgpLCBQ
b3NpdGlvbihub2RlLCBQb3NpdGlvbjo6UG9zaXRpb25Jc0JlZm9yZUFuY2hvciksIFBvc2l0aW9u
KG5vZGUsIFBvc2l0aW9uOjpQb3NpdGlvbklzQWZ0ZXJBbmNob3IpKTsKLSAgICBtX2ZyYW1lLnNl
bGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHJhbmdlLmdldCgpKSwgRnJh
bWVTZWxlY3Rpb246OkRvTm90U2V0Rm9jdXMpOworICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0
U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oKnJhbmdlKSwgRnJhbWVTZWxlY3Rpb246OkRvTm90
U2V0Rm9jdXMpOwogCiAgICAgUGFzdGVib2FyZCBwYXN0ZWJvYXJkKHBhc3RlYm9hcmROYW1lKTsK
IApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAJKHJldmlzaW9uIDE4
MzE1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOSwg
MjAxMCwgMjAxMyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDcsIDIwMDksIDIwMTAsIDIwMTMsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC03MDYsNyArNzA2LDcg
QEAgc3RhdGljIHZvaWQgc2VsZWN0RWxlbWVudChFbGVtZW50JiBlbGVtZQogewogICAgIFJlZlB0
cjxSYW5nZT4gcmFuZ2UgPSBlbGVtZW50LmRvY3VtZW50KCkuY3JlYXRlUmFuZ2UoKTsKICAgICBy
YW5nZS0+c2VsZWN0Tm9kZSgmZWxlbWVudCk7Ci0gICAgZWxlbWVudC5kb2N1bWVudCgpLmZyYW1l
KCktPnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHJhbmdlLmdldCgp
LCBET1dOU1RSRUFNKSk7CisgICAgZWxlbWVudC5kb2N1bWVudCgpLmZyYW1lKCktPnNlbGVjdGlv
bigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKCpyYW5nZSwgRE9XTlNUUkVBTSkpOwog
fQogCiBzdGF0aWMgSW50UG9pbnQgZHJhZ0xvY0ZvckRIVE1MRHJhZyhjb25zdCBJbnRQb2ludCYg
bW91c2VEcmFnZ2VkUG9pbnQsIGNvbnN0IEludFBvaW50JiBkcmFnT3JpZ2luLCBjb25zdCBJbnRQ
b2ludCYgZHJhZ0ltYWdlT2Zmc2V0LCBib29sIGlzTGlua0ltYWdlKQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGFnZS9UZXh0SW5kaWNhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwCShyZXZpc2lvbiAxODMxNTApCisrKyBTb3VyY2UvV2Vi
Q29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBA
QAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2
ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC05OCw3ICs5OCw3IEBA
IFBhc3NSZWZQdHI8VGV4dEluZGljYXRvcj4gVGV4dEluZGljYXRvcjoKICAgICAgICAgcmV0dXJu
IG51bGxwdHI7CiAKICAgICBWaXNpYmxlU2VsZWN0aW9uIG9sZFNlbGVjdGlvbiA9IGZyYW1lLT5z
ZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0
aW9uKCZyYW5nZSk7CisgICAgZnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihyYW5nZSk7
CiAKICAgICBSZWZQdHI8VGV4dEluZGljYXRvcj4gaW5kaWNhdG9yID0gVGV4dEluZGljYXRvcjo6
Y3JlYXRlV2l0aFNlbGVjdGlvbkluRnJhbWUoKmZyYW1lLCBwcmVzZW50YXRpb25UcmFuc2l0aW9u
KTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVyTWFjLm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvbWFjL0V2ZW50SGFuZGxlck1hYy5tbQko
cmV2aXNpb24gMTgzMTUwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9tYWMvRXZlbnRIYW5kbGVy
TWFjLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0xMDE3LDcgKzEwMTcsNyBAQCBWaXNpYmxlU2VsZWN0
aW9uIEV2ZW50SGFuZGxlcjo6c2VsZWN0Q2xvCiAKICAgICBOU0RpY3Rpb25hcnkgKm9wdGlvbnMg
PSBuaWw7CiAgICAgaWYgKFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSByYW5nZUZvckRpY3Rpb25hcnlM
b29rdXBBdEhpdFRlc3RSZXN1bHQocmVzdWx0LCAmb3B0aW9ucykpCi0gICAgICAgIHJldHVybiBW
aXNpYmxlU2VsZWN0aW9uKHJhbmdlLmdldCgpKTsKKyAgICAgICAgcmV0dXJuIFZpc2libGVTZWxl
Y3Rpb24oKnJhbmdlKTsKIAogICAgIHJldHVybiBWaXNpYmxlU2VsZWN0aW9uKCk7CiB9CkluZGV4
OiBTb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvU2VsZWN0aW9uU3VidHJlZVJvb3QuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rpb25TdWJ0cmVlUm9vdC5j
cHAJKHJldmlzaW9uIDE4MzE1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rp
b25TdWJ0cmVlUm9vdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw2IEBACiAvKgogICog
Q29weXJpZ2h0IChDKSAyMDE0IElnYWxpYSBTLkwuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQXBw
bGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCkBAIC01Niw3ICs1Nyw3IEBAIHZvaWQgU2VsZWN0aW9uU3VidHJlZVJvb3Q6OmFkanVzdEZv
clZpc2kKICAgICBQb3NpdGlvbiBlbmRQb3NpdGlvbiA9IGNyZWF0ZUxlZ2FjeUVkaXRpbmdQb3Np
dGlvbihtX3NlbGVjdGlvblN1YnRyZWVEYXRhLnNlbGVjdGlvbkVuZCgpLT5ub2RlKCksIG1fc2Vs
ZWN0aW9uU3VidHJlZURhdGEuc2VsZWN0aW9uRW5kUG9zKCkpOwogCiAgICAgUmVmUHRyPFJhbmdl
PiByYW5nZSA9IFJhbmdlOjpjcmVhdGUoZG9jdW1lbnQsIHN0YXJ0UG9zaXRpb24ucGFyZW50QW5j
aG9yZWRFcXVpdmFsZW50KCksIGVuZFBvc2l0aW9uLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgp
KTsKLSAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbihyYW5nZS5nZXQoKSk7CisgICAgVmlz
aWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24oKnJhbmdlKTsKICAgICBQb3NpdGlvbiBzdGFydFBvcyA9
IHNlbGVjdGlvbi5zdGFydCgpOwogICAgIFBvc2l0aW9uIGNhbmRpZGF0ZSA9IHN0YXJ0UG9zLmRv
d25zdHJlYW0oKTsKICAgICBpZiAoY2FuZGlkYXRlLmlzQ2FuZGlkYXRlKCkpCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nCShyZXZpc2lvbiAxODMxNTUpCisrKyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwyNCBAQAorMjAxNS0wNC0yMiAgQnJlbnQgRnVsZ2hhbSAgPGJm
dWxnaGFtQGFwcGxlLmNvbT4KKworICAgICAgICBWaXNpYmxlU2VsZWN0aW9uIHNob3VsZCBvbmx5
IGFjY2VwdCBSYW5nZSBieSByZWZlcmVuY2UKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE0NDA0NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBhbGwgdXNlcyBvZiBWaXNpYmxlU2VsZWN0aW9uIHRv
IHBhc3MgYSBSYW5nZSByZWZlcmVuY2UgaW5zdGVhZAorICAgICAgICBvZiBhIFJhbmdlIHBvaW50
ZXIuCisKKyAgICAgICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1
bmRsZVJhbmdlSGFuZGxlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6SW5qZWN0ZWRCdW5kbGVSYW5n
ZUhhbmRsZTo6cmVuZGVyZWRJbWFnZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL0Zp
bmRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6RmluZENvbnRyb2xsZXI6OmdldElt
YWdlRm9yRmluZE1hdGNoKToKKyAgICAgICAgKFdlYktpdDo6RmluZENvbnRyb2xsZXI6OnNlbGVj
dEZpbmRNYXRjaCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjppbnNlcnRUZXh0QXN5bmMpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJQYWdlOjpzZXRDb21wb3NpdGlvbkFzeW5jKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW06CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omlu
c2VydERpY3RhdGVkVGV4dEFzeW5jKToKKwogMjAxNS0wNC0yMiAgQW5kZXJzIENhcmxzc29uICA8
YW5kZXJzY2FAYXBwbGUuY29tPgogCiAgICAgICAgIEFkZCBXS19BUlJBWSBhbmQgV0tfU0VUIGFu
bm90YXRpb25zCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRsZVJhbmdl
SGFuZGxlLmNwcAkocmV2aXNpb24gMTgzMTUwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9ET00vSW5qZWN0ZWRCdW5kbGVSYW5nZUhhbmRsZS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTExNCw3ICsxMTQsNyBAQCBQYXNzUmVmUHRyPFdlYkltYWdlPiBJbmplY3RlZEJ1
bmRsZVJhbmdlCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCiAgICAgVmlzaWJsZVNlbGVjdGlv
biBvbGRTZWxlY3Rpb24gPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7Ci0gICAgZnJh
bWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKG1fcmFuZ2UuZ2V0
KCkpKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rp
b24oKm1fcmFuZ2UpKTsKIAogICAgIGZsb2F0IHNjYWxlRmFjdG9yID0gKG9wdGlvbnMgJiBTbmFw
c2hvdE9wdGlvbnNFeGNsdWRlRGV2aWNlU2NhbGVGYWN0b3IpID8gMSA6IGZyYW1lLT5wYWdlKCkt
PmRldmljZVNjYWxlRmFjdG9yKCk7CiAgICAgSW50UmVjdCBwYWludFJlY3QgPSBlbmNsb3NpbmdJ
bnRSZWN0KG1fcmFuZ2UtPmJvdW5kaW5nUmVjdCgpKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcAkocmV2aXNpb24g
MTgzMTUwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9s
bGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQg
KEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDEwLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjcwLDcgKzI3MCw3IEBAIHZvaWQgRmluZENvbnRyb2xs
ZXI6OmdldEltYWdlRm9yRmluZE1hdGMKICAgICAgICAgcmV0dXJuOwogCiAgICAgVmlzaWJsZVNl
bGVjdGlvbiBvbGRTZWxlY3Rpb24gPSBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7Ci0g
ICAgZnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKG1fZmlu
ZE1hdGNoZXNbbWF0Y2hJbmRleF0uZ2V0KCkpKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0
U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oKm1fZmluZE1hdGNoZXNbbWF0Y2hJbmRleF0pKTsK
IAogICAgIFJlZlB0cjxTaGFyZWFibGVCaXRtYXA+IHNlbGVjdGlvblNuYXBzaG90ID0gV2ViRnJh
bWU6OmZyb21Db3JlRnJhbWUoKmZyYW1lKS0+Y3JlYXRlU2VsZWN0aW9uU25hcHNob3QoKTsKIApA
QCAtMjk1LDcgKzI5NSw3IEBAIHZvaWQgRmluZENvbnRyb2xsZXI6OnNlbGVjdEZpbmRNYXRjaCh1
aW4KICAgICBGcmFtZSogZnJhbWUgPSBtX2ZpbmRNYXRjaGVzW21hdGNoSW5kZXhdLT5zdGFydENv
bnRhaW5lcigpLT5kb2N1bWVudCgpLmZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAg
cmV0dXJuOwotICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVj
dGlvbihtX2ZpbmRNYXRjaGVzW21hdGNoSW5kZXhdLmdldCgpKSk7CisgICAgZnJhbWUtPnNlbGVj
dGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKCptX2ZpbmRNYXRjaGVzW21hdGNo
SW5kZXhdKSk7CiB9CiAKIHZvaWQgRmluZENvbnRyb2xsZXI6OmhpZGVGaW5kVUkoKQpJbmRleDog
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkocmV2aXNp
b24gMTgzMTUwKQorKysgU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2Uu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MjExLDcgKzQyMTEsNyBAQCB2b2lkIFdlYlBhZ2U6Omlu
c2VydFRleHRBc3luYyhjb25zdCBTdHJpCiAgICAgaWYgKHJlcGxhY2VtZW50RWRpdGluZ1Jhbmdl
LmxvY2F0aW9uICE9IG5vdEZvdW5kKSB7CiAgICAgICAgIFJlZlB0cjxSYW5nZT4gcmVwbGFjZW1l
bnRSYW5nZSA9IHJhbmdlRnJvbUVkaXRpbmdSYW5nZShmcmFtZSwgcmVwbGFjZW1lbnRFZGl0aW5n
UmFuZ2UpOwogICAgICAgICBpZiAocmVwbGFjZW1lbnRSYW5nZSkKLSAgICAgICAgICAgIGZyYW1l
LnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHJlcGxhY2VtZW50UmFu
Z2UuZ2V0KCksIFNFTF9ERUZBVUxUX0FGRklOSVRZKSk7CisgICAgICAgICAgICBmcmFtZS5zZWxl
Y3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbigqcmVwbGFjZW1lbnRSYW5nZSwg
U0VMX0RFRkFVTFRfQUZGSU5JVFkpKTsKICAgICB9CiAgICAgCiAgICAgaWYgKHJlZ2lzdGVyVW5k
b0dyb3VwKQpAQCAtNDMwMSw3ICs0MzAxLDggQEAgdm9pZCBXZWJQYWdlOjpzZXRDb21wb3NpdGlv
bkFzeW5jKGNvbnN0IAogICAgICAgICBSZWZQdHI8UmFuZ2U+IHJlcGxhY2VtZW50UmFuZ2U7CiAg
ICAgICAgIGlmIChyZXBsYWNlbWVudEVkaXRpbmdSYW5nZS5sb2NhdGlvbiAhPSBub3RGb3VuZCkg
ewogICAgICAgICAgICAgcmVwbGFjZW1lbnRSYW5nZSA9IHJhbmdlRnJvbUVkaXRpbmdSYW5nZShm
cmFtZSwgcmVwbGFjZW1lbnRFZGl0aW5nUmFuZ2UpOwotICAgICAgICAgICAgZnJhbWUuc2VsZWN0
aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocmVwbGFjZW1lbnRSYW5nZS5nZXQo
KSwgU0VMX0RFRkFVTFRfQUZGSU5JVFkpKTsKKyAgICAgICAgICAgIGlmIChyZXBsYWNlbWVudFJh
bmdlKQorICAgICAgICAgICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNp
YmxlU2VsZWN0aW9uKCpyZXBsYWNlbWVudFJhbmdlLCBTRUxfREVGQVVMVF9BRkZJTklUWSkpOwog
ICAgICAgICB9CiAKICAgICAgICAgZnJhbWUuZWRpdG9yKCkuc2V0Q29tcG9zaXRpb24odGV4dCwg
dW5kZXJsaW5lcywgc2VsZWN0aW9uLmxvY2F0aW9uLCBzZWxlY3Rpb24ubG9jYXRpb24gKyBzZWxl
Y3Rpb24ubGVuZ3RoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvV2ViUGFnZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0JKHJldmlzaW9uIDE4MzE1MCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQkod29ya2luZyBjb3B5
KQpAQCAtNDQ0LDcgKzQ0NCw3IEBAIHZvaWQgV2ViUGFnZTo6aW5zZXJ0RGljdGF0ZWRUZXh0QXN5
bmMoY28KICAgICBpZiAocmVwbGFjZW1lbnRFZGl0aW5nUmFuZ2UubG9jYXRpb24gIT0gbm90Rm91
bmQpIHsKICAgICAgICAgUmVmUHRyPFJhbmdlPiByZXBsYWNlbWVudFJhbmdlID0gcmFuZ2VGcm9t
RWRpdGluZ1JhbmdlKGZyYW1lLCByZXBsYWNlbWVudEVkaXRpbmdSYW5nZSk7CiAgICAgICAgIGlm
IChyZXBsYWNlbWVudFJhbmdlKQotICAgICAgICAgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2Vs
ZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocmVwbGFjZW1lbnRSYW5nZS5nZXQoKSwgU0VMX0RFRkFV
TFRfQUZGSU5JVFkpKTsKKyAgICAgICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlv
bihWaXNpYmxlU2VsZWN0aW9uKCpyZXBsYWNlbWVudFJhbmdlLCBTRUxfREVGQVVMVF9BRkZJTklU
WSkpOwogICAgIH0KIAogICAgIGlmIChyZWdpc3RlclVuZG9Hcm91cCkKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9DaGFu
Z2VMb2cJKHJldmlzaW9uIDE4MzE1NSkKKysrIFNvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBACisyMDE1LTA0LTIyICBCcmVudCBGdWxnaGFt
ICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFZpc2libGVTZWxlY3Rpb24gc2hvdWxk
IG9ubHkgYWNjZXB0IFJhbmdlIGJ5IHJlZmVyZW5jZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0MDQ3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGFsbCB1c2VzIG9mIFZpc2libGVTZWxlY3Rp
b24gdG8gcGFzcyBhIFJhbmdlIHJlZmVyZW5jZSBpbnN0ZWFkCisgICAgICAgIG9mIGEgUmFuZ2Ug
cG9pbnRlci4KKworICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50
Lm1tOgorICAgICAgICAoV2ViQ29udGV4dE1lbnVDbGllbnQ6OmltYWdlRm9yQ3VycmVudFNoYXJp
bmdTZXJ2aWNlUGlja2VySXRlbSk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAg
ICAgICAgKC1bV2ViRnJhbWUgX3NlbGVjdE5TUmFuZ2U6XSk6CisKIDIwMTUtMDQtMjIgIEVyaWMg
Q2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+CiAKICAgICAgICAgW01hY10gRGV2aWNl
IHBpY2tlciBtZW51IGlzIHBvc2l0aW9uZWQgaW5jb3JyZWN0bHkgaW4gV0sxCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVu
dUNsaWVudC5tbQkocmV2aXNpb24gMTgzMTUwKQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViQ29udGV4dE1lbnVDbGllbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSAr
MSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwg
MjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKQEAgLTQ3MSw3ICs0NzEsNyBAQCBSZXRhaW5QdHI8TlNJbWFnZT4gV2ViQ29u
dGV4dE1lbnVDbGllbnQ6CiAKICAgICBWaXNpYmxlU2VsZWN0aW9uIG9sZFNlbGVjdGlvbiA9IGZy
YW1lVmlldy0+ZnJhbWUoKS5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKICAgICBSZWZQdHI8UmFu
Z2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShub2RlLT5kb2N1bWVudCgpLCBQb3NpdGlvbihub2Rl
LCBQb3NpdGlvbjo6UG9zaXRpb25Jc0JlZm9yZUFuY2hvciksIFBvc2l0aW9uKG5vZGUsIFBvc2l0
aW9uOjpQb3NpdGlvbklzQWZ0ZXJBbmNob3IpKTsKLSAgICBmcmFtZVZpZXctPmZyYW1lKCkuc2Vs
ZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24ocmFuZ2UuZ2V0KCkpLCBGcmFt
ZVNlbGVjdGlvbjo6RG9Ob3RTZXRGb2N1cyk7CisgICAgZnJhbWVWaWV3LT5mcmFtZSgpLnNlbGVj
dGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKCpyYW5nZSksIEZyYW1lU2VsZWN0
aW9uOjpEb05vdFNldEZvY3VzKTsKIAogICAgIFBhaW50QmVoYXZpb3Igb2xkUGFpbnRCZWhhdmlv
ciA9IGZyYW1lVmlldy0+cGFpbnRCZWhhdmlvcigpOwogICAgIGZyYW1lVmlldy0+c2V0UGFpbnRC
ZWhhdmlvcihQYWludEJlaGF2aW9yU2VsZWN0aW9uT25seSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYkZyYW1lLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViRnJhbWUubW0JKHJldmlzaW9uIDE4MzE1MCkKKysrIFNvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAv
KgotICogQ29weXJpZ2h0IChDKSAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNSwgMjAwNiwgMjAwNywgMjAw
OCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKQEAgLTExNTQsNyArMTE1NCw3IEBAIC0gKHZvaWQpX3NlbGVjdE5TUmFu
Z2U6KE5TUmFuZ2UpcmFuZ2UKIHsKICAgICBSZWZQdHI8UmFuZ2U+IGRvbVJhbmdlID0gW3NlbGYg
X2NvbnZlcnRUb0RPTVJhbmdlOnJhbmdlXTsKICAgICBpZiAoZG9tUmFuZ2UpCi0gICAgICAgIF9w
cml2YXRlLT5jb3JlRnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0
aW9uKGRvbVJhbmdlLmdldCgpLCBTRUxfREVGQVVMVF9BRkZJTklUWSkpOworICAgICAgICBfcHJp
dmF0ZS0+Y29yZUZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlv
bigqZG9tUmFuZ2UsIFNFTF9ERUZBVUxUX0FGRklOSVRZKSk7CiB9CiAKIC0gKEJPT0wpX2lzRGlz
cGxheWluZ1N0YW5kYWxvbmVJbWFnZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>251390</attachid>
            <date>2015-04-22 17:38:43 -0700</date>
            <delta_ts>2015-04-22 19:11:57 -0700</delta_ts>
            <desc>Patch v3 (More build fixes for different configurations)</desc>
            <filename>bug-144047-20150422173740.patch</filename>
            <type>text/plain</type>
            <size>30392</size>
            <attacher name="Brent Fulgham">bfulgham</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MzE1NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQyIEBACisyMDE1LTA0LTIyICBCcmVudCBG
dWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFZpc2libGVTZWxlY3Rpb24g
c2hvdWxkIG9ubHkgYWNjZXB0IFJhbmdlIGJ5IHJlZmVyZW5jZQorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0MDQ3CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIFZpc2libGVTZWxlY3Rpb24gdG8g
ZXhwZWN0IGEgUmFuZ2UgcmVmZXJlbmNlIGFyZ3VtZW50LCByYXRoZXIgdGhhbiBhCisgICAgICAg
IFJhbmdlKi4gQWxzbyB1cGRhdGUgYWxsIHVzZXMgb2YgVmlzaWJsZVNlbGVjdGlvbiB0byBwYXNz
IGEgcmVmZXJlbmNlIGluc3RlYWQKKyAgICAgICAgb2YgYSBwb2ludGVyLgorCisgICAgICAgIE5v
IGNoYW5nZSBpbiBiZWhhdmlvciwgc28gbmV3IHRlc3RzLgorCisgICAgICAgICogZWRpdGluZy9F
ZGl0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpzZWxlY3Rpb25Gb3JDb21tYW5k
KToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6YWR2YW5jZVRvTmV4dE1pc3NwZWxsaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nVG9X
b3JkKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bWFya0FuZFJlcGxhY2VGb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yOjp0cmFuc3Bvc2UpOgorICAgICAgICAoV2ViQ29yZTo6RWRp
dG9yOjpmaW5kU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6cmFuZ2VPZlN0cmlu
Zyk6CisgICAgICAgICogZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGcmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0ZWRSYW5nZSk6CisgICAgICAgICogZWRpdGlu
Zy9TcGVsbGluZ0NvcnJlY3Rpb25Db21tYW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxs
aW5nQ29ycmVjdGlvbkNvbW1hbmQ6OlNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQpOgorICAgICAg
ICAqIGVkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWaXNp
YmxlU2VsZWN0aW9uOjpWaXNpYmxlU2VsZWN0aW9uKToKKyAgICAgICAgKiBlZGl0aW5nL1Zpc2li
bGVTZWxlY3Rpb24uaDoKKyAgICAgICAgKiBlZGl0aW5nL21hYy9FZGl0b3JNYWMubW06CisgICAg
ICAgIChXZWJDb3JlOjpFZGl0b3I6OnJlcGxhY2VOb2RlRnJvbVBhc3RlYm9hcmQpOgorICAgICAg
ICAqIHBhZ2UvRHJhZ0NvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2VsZWN0RWxl
bWVudCk6CisgICAgICAgICogcGFnZS9UZXh0SW5kaWNhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRJbmRpY2F0b3I6OmNyZWF0ZVdpdGhSYW5nZSk6CisgICAgICAgICogcGFnZS9tYWMv
RXZlbnRIYW5kbGVyTWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzZWxl
Y3RDbG9zZXN0V29yZEZyb21IaXRUZXN0UmVzdWx0QmFzZWRPbkxvb2t1cCk6CisgICAgICAgICog
cmVuZGVyaW5nL1NlbGVjdGlvblN1YnRyZWVSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNl
bGVjdGlvblN1YnRyZWVSb290OjphZGp1c3RGb3JWaXNpYmxlU2VsZWN0aW9uKToKKwogMjAxNS0w
NC0yMiAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgbmV3
IG9wdGltaXplZCBmdWxsc2NyZWVuIGRlbGVnYXRlIG1ldGhvZHMKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1t
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vz
c2liaWxpdHlPYmplY3RXcmFwcGVySU9TLm1tCShyZXZpc2lvbiAxODMxNTApCisrKyBTb3VyY2Uv
V2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2lvcy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlcklP
Uy5tbQkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMDgsIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAwOCwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKQEAgLTIwMjksNyArMjAyOSw3IEBAIC0gKFdlYkFjY2Vzc2liaWxp
dHlUZXh0TWFya2VyICopdGV4dE1hcmsKICAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm4g
bmlsOwogICAgIAotICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uID0gVmlzaWJsZVNlbGVj
dGlvbihyYW5nZS5nZXQoKSwgRE9XTlNUUkVBTSk7CisgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxl
Y3Rpb24gPSBWaXNpYmxlU2VsZWN0aW9uKCpyYW5nZSwgRE9XTlNUUkVBTSk7CiAKICAgICBWaXNp
YmxlUG9zaXRpb24gdmlzaWJsZVBvc2l0aW9uID0gc2VsZWN0aW9uLnZpc2libGVTdGFydCgpOwog
ICAgIHJldHVybiBbV2ViQWNjZXNzaWJpbGl0eVRleHRNYXJrZXIgdGV4dE1hcmtlcldpdGhWaXNp
YmxlUG9zaXRpb246dmlzaWJsZVBvc2l0aW9uIGNhY2hlOm1fb2JqZWN0LT5heE9iamVjdENhY2hl
KCldOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcAkocmV2aXNpb24gMTgzMTUwKQor
KysgU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAxMSwg
MjAxMywgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQg
KEMpIDIwMDYsIDIwMDcsIDIwMDgsIDIwMTEsIDIwMTMtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCiAgKiBDb3B5cmlnaHQgKEMpIDIwMDggTm9raWEgQ29ycG9yYXRpb24gYW5k
L29yIGl0cyBzdWJzaWRpYXJ5KC1pZXMpCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CkBAIC0xNTcsNyArMTU3
LDcgQEAgVmlzaWJsZVNlbGVjdGlvbiBFZGl0b3I6OnNlbGVjdGlvbkZvckNvbQogICAgIEhUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50KiB0ZXh0RnJvbUNvbnRyb2xPZlRhcmdldCA9IGlzPEhUTUxU
ZXh0Rm9ybUNvbnRyb2xFbGVtZW50PigqZXZlbnQtPnRhcmdldCgpLT50b05vZGUoKSkgPyBkb3du
Y2FzdDxIVE1MVGV4dEZvcm1Db250cm9sRWxlbWVudD4oZXZlbnQtPnRhcmdldCgpLT50b05vZGUo
KSkgOiBudWxscHRyOwogICAgIGlmICh0ZXh0RnJvbUNvbnRyb2xPZlRhcmdldCAmJiAoc2VsZWN0
aW9uLnN0YXJ0KCkuaXNOdWxsKCkgfHwgdGV4dEZyb21Db250cm9sT2ZUYXJnZXQgIT0gdGV4dEZv
cm1Db250cm9sT2ZTZWxlY3Rpb25TdGFydCkpIHsKICAgICAgICAgaWYgKFJlZlB0cjxSYW5nZT4g
cmFuZ2UgPSB0ZXh0RnJvbUNvbnRyb2xPZlRhcmdldC0+c2VsZWN0aW9uKCkpCi0gICAgICAgICAg
ICByZXR1cm4gVmlzaWJsZVNlbGVjdGlvbihyYW5nZS5nZXQoKSwgRE9XTlNUUkVBTSwgc2VsZWN0
aW9uLmlzRGlyZWN0aW9uYWwoKSk7CisgICAgICAgICAgICByZXR1cm4gVmlzaWJsZVNlbGVjdGlv
bigqcmFuZ2UsIERPV05TVFJFQU0sIHNlbGVjdGlvbi5pc0RpcmVjdGlvbmFsKCkpOwogICAgIH0K
ICAgICByZXR1cm4gc2VsZWN0aW9uOwogfQpAQCAtMjAwMCw3ICsyMDAwLDcgQEAgdm9pZCBFZGl0
b3I6OmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhibwogICAgICAgICAKICAgICAgICAgLy8gRklY
TUUgNDg1OTE5MDogVGhpcyBnZXRzIGNvbmZ1c2VkIHdpdGggZG91YmxlZCBwdW5jdHVhdGlvbiBh
dCB0aGUgZW5kIG9mIGEgcGFyYWdyYXBoCiAgICAgICAgIFJlZlB0cjxSYW5nZT4gYmFkR3JhbW1h
clJhbmdlID0gVGV4dEl0ZXJhdG9yOjpzdWJyYW5nZShncmFtbWFyU2VhcmNoUmFuZ2UuZ2V0KCks
IGdyYW1tYXJQaHJhc2VPZmZzZXQgKyBncmFtbWFyRGV0YWlsLmxvY2F0aW9uLCBncmFtbWFyRGV0
YWlsLmxlbmd0aCk7Ci0gICAgICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZp
c2libGVTZWxlY3Rpb24oYmFkR3JhbW1hclJhbmdlLmdldCgpLCBTRUxfREVGQVVMVF9BRkZJTklU
WSkpOworICAgICAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2Vs
ZWN0aW9uKCpiYWRHcmFtbWFyUmFuZ2UsIFNFTF9ERUZBVUxUX0FGRklOSVRZKSk7CiAgICAgICAg
IG1fZnJhbWUuc2VsZWN0aW9uKCkucmV2ZWFsU2VsZWN0aW9uKCk7CiAgICAgICAgIAogICAgICAg
ICBjbGllbnQoKS0+dXBkYXRlU3BlbGxpbmdVSVdpdGhHcmFtbWFyU3RyaW5nKGJhZEdyYW1tYXJQ
aHJhc2UsIGdyYW1tYXJEZXRhaWwpOwpAQCAtMjAxMiw3ICsyMDEyLDcgQEAgdm9pZCBFZGl0b3I6
OmFkdmFuY2VUb05leHRNaXNzcGVsbGluZyhibwogICAgICAgICAvLyBhIG1hcmtlciBzbyB3ZSBk
cmF3IHRoZSByZWQgc3F1aWdnbGUgbGF0ZXIuCiAgICAgICAgIAogICAgICAgICBSZWZQdHI8UmFu
Z2U+IG1pc3NwZWxsaW5nUmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnN1YnJhbmdlKHNwZWxsaW5nU2Vh
cmNoUmFuZ2UuZ2V0KCksIG1pc3NwZWxsaW5nT2Zmc2V0LCBtaXNzcGVsbGVkV29yZC5sZW5ndGgo
KSk7Ci0gICAgICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxl
Y3Rpb24obWlzc3BlbGxpbmdSYW5nZS5nZXQoKSwgRE9XTlNUUkVBTSkpOworICAgICAgICBtX2Zy
YW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKCptaXNzcGVsbGlu
Z1JhbmdlLCBET1dOU1RSRUFNKSk7CiAgICAgICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkucmV2ZWFs
U2VsZWN0aW9uKCk7CiAgICAgICAgIAogICAgICAgICBjbGllbnQoKS0+dXBkYXRlU3BlbGxpbmdV
SVdpdGhNaXNzcGVsbGVkV29yZChtaXNzcGVsbGVkV29yZCk7CkBAIC0yMjI5LDcgKzIyMjksNyBA
QCB2b2lkIEVkaXRvcjo6bWFya01pc3NwZWxsaW5nc0FmdGVyVHlwaW5nCiAKICAgICAvLyBJZiBh
dXRvY29ycmVjdGVkIHdvcmQgaXMgbm9uIGVtcHR5LCByZXBsYWNlIHRoZSBtaXNzcGVsbGVkIHdv
cmQgYnkgdGhpcyB3b3JkLgogICAgIGlmICghYXV0b2NvcnJlY3RlZFN0cmluZy5pc0VtcHR5KCkp
IHsKLSAgICAgICAgVmlzaWJsZVNlbGVjdGlvbiBuZXdTZWxlY3Rpb24obWlzc3BlbGxpbmdSYW5n
ZS5nZXQoKSwgRE9XTlNUUkVBTSk7CisgICAgICAgIFZpc2libGVTZWxlY3Rpb24gbmV3U2VsZWN0
aW9uKCptaXNzcGVsbGluZ1JhbmdlLCBET1dOU1RSRUFNKTsKICAgICAgICAgaWYgKG5ld1NlbGVj
dGlvbiAhPSBtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpKSB7CiAgICAgICAgICAgICBp
ZiAoIW1fZnJhbWUuc2VsZWN0aW9uKCkuc2hvdWxkQ2hhbmdlU2VsZWN0aW9uKG5ld1NlbGVjdGlv
bikpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjUxNyw3ICsyNTE3LDcgQEAgdm9pZCBF
ZGl0b3I6Om1hcmtBbmRSZXBsYWNlRm9yKFBhc3NSZWZQdAogICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVj
dGlvblRvUmVwbGFjZShyYW5nZVRvUmVwbGFjZS5nZXQoKSwgRE9XTlNUUkVBTSk7CisgICAgICAg
ICAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvblRvUmVwbGFjZSgqcmFuZ2VUb1JlcGxhY2Us
IERPV05TVFJFQU0pOwogICAgICAgICAgICAgaWYgKHNlbGVjdGlvblRvUmVwbGFjZSAhPSBtX2Zy
YW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpKSB7CiAgICAgICAgICAgICAgICAgaWYgKCFtX2Zy
YW1lLnNlbGVjdGlvbigpLnNob3VsZENoYW5nZVNlbGVjdGlvbihzZWxlY3Rpb25Ub1JlcGxhY2Up
KQogICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTI4MDAsNyArMjgwMCw3IEBAIHZv
aWQgRWRpdG9yOjp0cmFuc3Bvc2UoKQogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBtYWtlUmFu
Z2UocHJldmlvdXMsIG5leHQpOwogICAgIGlmICghcmFuZ2UpCiAgICAgICAgIHJldHVybjsKLSAg
ICBWaXNpYmxlU2VsZWN0aW9uIG5ld1NlbGVjdGlvbihyYW5nZS5nZXQoKSwgRE9XTlNUUkVBTSk7
CisgICAgVmlzaWJsZVNlbGVjdGlvbiBuZXdTZWxlY3Rpb24oKnJhbmdlLCBET1dOU1RSRUFNKTsK
IAogICAgIC8vIFRyYW5zcG9zZSB0aGUgdHdvIGNoYXJhY3RlcnMuCiAgICAgU3RyaW5nIHRleHQg
PSBwbGFpblRleHQocmFuZ2UuZ2V0KCkpOwpAQCAtMzA0OSw3ICszMDQ5LDcgQEAgYm9vbCBFZGl0
b3I6OmZpbmRTdHJpbmcoY29uc3QgU3RyaW5nJiB0YQogICAgIGlmICghcmVzdWx0UmFuZ2UpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0
aW9uKFZpc2libGVTZWxlY3Rpb24ocmVzdWx0UmFuZ2UuZ2V0KCksIERPV05TVFJFQU0pKTsKKyAg
ICBtX2ZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKCpyZXN1
bHRSYW5nZSwgRE9XTlNUUkVBTSkpOwogCiAgICAgaWYgKCEob3B0aW9ucyAmIERvTm90UmV2ZWFs
U2VsZWN0aW9uKSkKICAgICAgICAgbV9mcmFtZS5zZWxlY3Rpb24oKS5yZXZlYWxTZWxlY3Rpb24o
KTsKQEAgLTMwOTksNyArMzA5OSw3IEBAIFBhc3NSZWZQdHI8UmFuZ2U+IEVkaXRvcjo6cmFuZ2VP
ZlN0cmluZygKICAgICAvLyBJZiB3ZSBzdGFydGVkIGluIHRoZSByZWZlcmVuY2UgcmFuZ2UgYW5k
IHRoZSBmb3VuZCByYW5nZSBleGFjdGx5IG1hdGNoZXMgdGhlIHJlZmVyZW5jZSByYW5nZSwgZmlu
ZCBhZ2Fpbi4KICAgICAvLyBCdWlsZCBhIHNlbGVjdGlvbiB3aXRoIHRoZSBmb3VuZCByYW5nZSB0
byByZW1vdmUgY29sbGFwc2VkIHdoaXRlc3BhY2UuCiAgICAgLy8gQ29tcGFyZSByYW5nZXMgaW5z
dGVhZCBvZiBzZWxlY3Rpb24gb2JqZWN0cyB0byBpZ25vcmUgdGhlIHdheSB0aGF0IHRoZSBjdXJy
ZW50IHNlbGVjdGlvbiB3YXMgbWFkZS4KLSAgICBpZiAoc3RhcnRJblJlZmVyZW5jZVJhbmdlICYm
IGFyZVJhbmdlc0VxdWFsKFZpc2libGVTZWxlY3Rpb24ocmVzdWx0UmFuZ2UuZ2V0KCkpLnRvTm9y
bWFsaXplZFJhbmdlKCkuZ2V0KCksIHJlZmVyZW5jZVJhbmdlKSkgeworICAgIGlmIChzdGFydElu
UmVmZXJlbmNlUmFuZ2UgJiYgYXJlUmFuZ2VzRXF1YWwoVmlzaWJsZVNlbGVjdGlvbigqcmVzdWx0
UmFuZ2UpLnRvTm9ybWFsaXplZFJhbmdlKCkuZ2V0KCksIHJlZmVyZW5jZVJhbmdlKSkgewogICAg
ICAgICBzZWFyY2hSYW5nZSA9IHJhbmdlT2ZDb250ZW50cyhkb2N1bWVudCgpKTsKICAgICAgICAg
aWYgKGZvcndhcmQpCiAgICAgICAgICAgICBzZWFyY2hSYW5nZS0+c2V0U3RhcnQocmVmZXJlbmNl
UmFuZ2UtPmVuZFBvc2l0aW9uKCkpOwpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFt
ZVNlbGVjdGlvbi5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFt
ZVNlbGVjdGlvbi5jcHAJKHJldmlzaW9uIDE4MzE1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvRnJhbWVTZWxlY3Rpb24uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAwNCwgMjAwOCwgMjAwOSwgMjAxMCwgMjAxNCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDgsIDIwMDks
IDIwMTAsIDIwMTQtMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTE3MjAsNyArMTcyMCw3IEBAIGJvb2wgRnJhbWVT
ZWxlY3Rpb246OnNldFNlbGVjdGVkUmFuZ2UoUmEKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IEFTU0VSVCgmcmFuZ2UtPnN0YXJ0Q29udGFpbmVyKCktPmRvY3VtZW50KCkgPT0gJnJhbmdlLT5l
bmRDb250YWluZXIoKS0+ZG9jdW1lbnQoKSk7CiAKLSAgICBWaXNpYmxlU2VsZWN0aW9uIG5ld1Nl
bGVjdGlvbihyYW5nZSwgYWZmaW5pdHkpOworICAgIFZpc2libGVTZWxlY3Rpb24gbmV3U2VsZWN0
aW9uKCpyYW5nZSwgYWZmaW5pdHkpOwogCiAjaWYgUExBVEZPUk0oSU9TKQogICAgIC8vIEZJWE1F
OiBXaHkgZG8gd2UgbmVlZCB0aGlzIGNoZWNrIG9ubHkgaW4gaU9TPwpAQCAtMjE2OSw3ICsyMTY5
LDcgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6ZXhwYW5kU2VsZWN0aW9uVG9FbAogICAgIFJlZlB0
cjxSYW5nZT4gcmFuZ2UgPSBlbGVtZW50UmFuZ2VDb250YWluaW5nQ2FyZXRTZWxlY3Rpb24oKTsK
ICAgICBpZiAoIXJhbmdlKQogICAgICAgICByZXR1cm47Ci0gICAgVmlzaWJsZVNlbGVjdGlvbiBz
ZWxlY3Rpb24ocmFuZ2UuZ2V0KCksIERPV05TVFJFQU0pOworICAgIFZpc2libGVTZWxlY3Rpb24g
c2VsZWN0aW9uKCpyYW5nZSwgRE9XTlNUUkVBTSk7CiAgICAgc2V0U2VsZWN0aW9uKHNlbGVjdGlv
bik7CiB9CiAKQEAgLTIzODcsNyArMjM4Nyw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNlbGVj
dFJhbmdlT25FbGVtZW4KICAgICBBU1NFUlQoIWVjKTsKICAgICByZXN1bHRSYW5nZS0+c2V0RW5k
KG5vZGUsIGxvY2F0aW9uICsgbGVuZ3RoLCBlYyk7CiAgICAgQVNTRVJUKCFlYyk7Ci0gICAgVmlz
aWJsZVNlbGVjdGlvbiBzZWxlY3Rpb24gPSBWaXNpYmxlU2VsZWN0aW9uKHJlc3VsdFJhbmdlLmdl
dCgpLCBTRUxfREVGQVVMVF9BRkZJTklUWSk7CisgICAgVmlzaWJsZVNlbGVjdGlvbiBzZWxlY3Rp
b24gPSBWaXNpYmxlU2VsZWN0aW9uKCpyZXN1bHRSYW5nZSwgU0VMX0RFRkFVTFRfQUZGSU5JVFkp
OwogICAgIHNldFNlbGVjdGlvbihzZWxlY3Rpb24sIHRydWUpOwogfQogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL1NwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3JyZWN0aW9uQ29tbWFuZC5jcHAJ
KHJldmlzaW9uIDE4MzE1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvU3BlbGxpbmdDb3Jy
ZWN0aW9uQ29tbWFuZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDExIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxMSwgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAg
KgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTg0LDcgKzg0LDcgQEAgcHJpdmF0ZToK
IFNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQ6OlNwZWxsaW5nQ29ycmVjdGlvbkNvbW1hbmQoUGFz
c1JlZlB0cjxSYW5nZT4gcmFuZ2VUb0JlQ29ycmVjdGVkLCBjb25zdCBTdHJpbmcmIGNvcnJlY3Rp
b24pCiAgICAgOiBDb21wb3NpdGVFZGl0Q29tbWFuZChyYW5nZVRvQmVDb3JyZWN0ZWQtPnN0YXJ0
Q29udGFpbmVyKCktPmRvY3VtZW50KCkpCiAgICAgLCBtX3JhbmdlVG9CZUNvcnJlY3RlZChyYW5n
ZVRvQmVDb3JyZWN0ZWQpCi0gICAgLCBtX3NlbGVjdGlvblRvQmVDb3JyZWN0ZWQobV9yYW5nZVRv
QmVDb3JyZWN0ZWQuZ2V0KCkpCisgICAgLCBtX3NlbGVjdGlvblRvQmVDb3JyZWN0ZWQoKm1fcmFu
Z2VUb0JlQ29ycmVjdGVkKQogICAgICwgbV9jb3JyZWN0aW9uKGNvcnJlY3Rpb24pCiB7CiB9Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Zpc2libGVTZWxlY3Rpb24uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5jcHAJKHJldmlz
aW9uIDE4MzE1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvVmlzaWJsZVNlbGVjdGlvbi5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAy
MDA0LCAyMDA1LCAyMDA2IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5
cmlnaHQgKEMpIDIwMDQsIDIwMDUsIDIwMDYsIDIwMTUgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtODQsOSArODQsOSBA
QCBWaXNpYmxlU2VsZWN0aW9uOjpWaXNpYmxlU2VsZWN0aW9uKGNvbnN0CiAgICAgdmFsaWRhdGUo
KTsKIH0KIAotVmlzaWJsZVNlbGVjdGlvbjo6VmlzaWJsZVNlbGVjdGlvbihjb25zdCBSYW5nZSog
cmFuZ2UsIEVBZmZpbml0eSBhZmZpbml0eSwgYm9vbCBpc0RpcmVjdGlvbmFsKQotICAgIDogbV9i
YXNlKHJhbmdlLT5zdGFydFBvc2l0aW9uKCkpCi0gICAgLCBtX2V4dGVudChyYW5nZS0+ZW5kUG9z
aXRpb24oKSkKK1Zpc2libGVTZWxlY3Rpb246OlZpc2libGVTZWxlY3Rpb24oY29uc3QgUmFuZ2Um
IHJhbmdlLCBFQWZmaW5pdHkgYWZmaW5pdHksIGJvb2wgaXNEaXJlY3Rpb25hbCkKKyAgICA6IG1f
YmFzZShyYW5nZS5zdGFydFBvc2l0aW9uKCkpCisgICAgLCBtX2V4dGVudChyYW5nZS5lbmRQb3Np
dGlvbigpKQogICAgICwgbV9hZmZpbml0eShhZmZpbml0eSkKICAgICAsIG1faXNEaXJlY3Rpb25h
bChpc0RpcmVjdGlvbmFsKQogewpJbmRleDogU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxl
U2VsZWN0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9WaXNpYmxl
U2VsZWN0aW9uLmgJKHJldmlzaW9uIDE4MzE1MCkKKysrIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcv
VmlzaWJsZVNlbGVjdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAq
IENvcHlyaWdodCAoQykgMjAwNCBBcHBsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICog
Q29weXJpZ2h0IChDKSAyMDA0LCAyMDE1IEFwcGxlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTQ1LDcgKzQ1LDcgQEAgcHVibGlj
OgogICAgIFZpc2libGVTZWxlY3Rpb24oY29uc3QgUG9zaXRpb24mLCBFQWZmaW5pdHksIGJvb2wg
aXNEaXJlY3Rpb25hbCA9IGZhbHNlKTsKICAgICBWaXNpYmxlU2VsZWN0aW9uKGNvbnN0IFBvc2l0
aW9uJiwgY29uc3QgUG9zaXRpb24mLCBFQWZmaW5pdHkgPSBTRUxfREVGQVVMVF9BRkZJTklUWSwg
Ym9vbCBpc0RpcmVjdGlvbmFsID0gZmFsc2UpOwogCi0gICAgV0VCQ09SRV9FWFBPUlQgVmlzaWJs
ZVNlbGVjdGlvbihjb25zdCBSYW5nZSosIEVBZmZpbml0eSA9IFNFTF9ERUZBVUxUX0FGRklOSVRZ
LCBib29sIGlzRGlyZWN0aW9uYWwgPSBmYWxzZSk7CisgICAgV0VCQ09SRV9FWFBPUlQgVmlzaWJs
ZVNlbGVjdGlvbihjb25zdCBSYW5nZSYsIEVBZmZpbml0eSA9IFNFTF9ERUZBVUxUX0FGRklOSVRZ
LCBib29sIGlzRGlyZWN0aW9uYWwgPSBmYWxzZSk7CiAgICAgCiAgICAgV0VCQ09SRV9FWFBPUlQg
VmlzaWJsZVNlbGVjdGlvbihjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBib29sIGlzRGlyZWN0aW9u
YWwgPSBmYWxzZSk7CiAgICAgV0VCQ09SRV9FWFBPUlQgVmlzaWJsZVNlbGVjdGlvbihjb25zdCBW
aXNpYmxlUG9zaXRpb24mLCBjb25zdCBWaXNpYmxlUG9zaXRpb24mLCBib29sIGlzRGlyZWN0aW9u
YWwgPSBmYWxzZSk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1t
CShyZXZpc2lvbiAxODMxNTApCisrKyBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JN
YWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDA2LCAyMDA3LCAyMDA4LCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqIENvcHlyaWdodCAoQykgMjAwNiwgMjAwNywgMjAwOCwgMjAxMywgMjAxNSBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI3Myw3ICsyNzMsNyBAQCB2b2lkIEVkaXRvcjo6cmVwbGFjZU5vZGVGcm9tUGFzdGVib2FyZChO
CiAgICAgICAgIHJldHVybjsKIAogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3Jl
YXRlKG5vZGUtPmRvY3VtZW50KCksIFBvc2l0aW9uKG5vZGUsIFBvc2l0aW9uOjpQb3NpdGlvbklz
QmVmb3JlQW5jaG9yKSwgUG9zaXRpb24obm9kZSwgUG9zaXRpb246OlBvc2l0aW9uSXNBZnRlckFu
Y2hvcikpOwotICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxl
Y3Rpb24ocmFuZ2UuZ2V0KCkpLCBGcmFtZVNlbGVjdGlvbjo6RG9Ob3RTZXRGb2N1cyk7CisgICAg
bV9mcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbigqcmFuZ2Up
LCBGcmFtZVNlbGVjdGlvbjo6RG9Ob3RTZXRGb2N1cyk7CiAKICAgICBQYXN0ZWJvYXJkIHBhc3Rl
Ym9hcmQocGFzdGVib2FyZE5hbWUpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdD
b250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0RyYWdDb250
cm9sbGVyLmNwcAkocmV2aXNpb24gMTgzMTUwKQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9EcmFn
Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29w
eXJpZ2h0IChDKSAyMDA3LCAyMDA5LCAyMDEwLCAyMDEzIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyBy
ZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOSwgMjAxMCwgMjAxMywgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTcwNiw3ICs3MDYsNyBAQCBzdGF0aWMgdm9pZCBzZWxlY3RFbGVtZW50KEVsZW1l
bnQmIGVsZW1lCiB7CiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IGVsZW1lbnQuZG9jdW1lbnQo
KS5jcmVhdGVSYW5nZSgpOwogICAgIHJhbmdlLT5zZWxlY3ROb2RlKCZlbGVtZW50KTsKLSAgICBl
bGVtZW50LmRvY3VtZW50KCkuZnJhbWUoKS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2li
bGVTZWxlY3Rpb24ocmFuZ2UuZ2V0KCksIERPV05TVFJFQU0pKTsKKyAgICBlbGVtZW50LmRvY3Vt
ZW50KCkuZnJhbWUoKS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24o
KnJhbmdlLCBET1dOU1RSRUFNKSk7CiB9CiAKIHN0YXRpYyBJbnRQb2ludCBkcmFnTG9jRm9yREhU
TUxEcmFnKGNvbnN0IEludFBvaW50JiBtb3VzZURyYWdnZWRQb2ludCwgY29uc3QgSW50UG9pbnQm
IGRyYWdPcmlnaW4sIGNvbnN0IEludFBvaW50JiBkcmFnSW1hZ2VPZmZzZXQsIGJvb2wgaXNMaW5r
SW1hZ2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL1RleHRJbmRpY2F0b3IuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5jcHAJKHJldmlzaW9u
IDE4MzE1MCkKKysrIFNvdXJjZS9XZWJDb3JlL3BhZ2UvVGV4dEluZGljYXRvci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEwIEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAxMCwgMjAxNSBB
cHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKQEAgLTk4LDcgKzk4LDcgQEAgUGFzc1JlZlB0cjxUZXh0SW5kaWNhdG9yPiBUZXh0SW5k
aWNhdG9yOgogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFZpc2libGVTZWxlY3Rpb24g
b2xkU2VsZWN0aW9uID0gZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwotICAgIGZyYW1l
LT5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oJnJhbmdlKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9u
KCkuc2V0U2VsZWN0aW9uKHJhbmdlKTsKIAogICAgIFJlZlB0cjxUZXh0SW5kaWNhdG9yPiBpbmRp
Y2F0b3IgPSBUZXh0SW5kaWNhdG9yOjpjcmVhdGVXaXRoU2VsZWN0aW9uSW5GcmFtZSgqZnJhbWUs
IHByZXNlbnRhdGlvblRyYW5zaXRpb24pOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL21h
Yy9FdmVudEhhbmRsZXJNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGFnZS9t
YWMvRXZlbnRIYW5kbGVyTWFjLm1tCShyZXZpc2lvbiAxODMxNTApCisrKyBTb3VyY2UvV2ViQ29y
ZS9wYWdlL21hYy9FdmVudEhhbmRsZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTEwMTcsNyAr
MTAxNyw3IEBAIFZpc2libGVTZWxlY3Rpb24gRXZlbnRIYW5kbGVyOjpzZWxlY3RDbG8KIAogICAg
IE5TRGljdGlvbmFyeSAqb3B0aW9ucyA9IG5pbDsKICAgICBpZiAoUmVmUHRyPFJhbmdlPiByYW5n
ZSA9IHJhbmdlRm9yRGljdGlvbmFyeUxvb2t1cEF0SGl0VGVzdFJlc3VsdChyZXN1bHQsICZvcHRp
b25zKSkKLSAgICAgICAgcmV0dXJuIFZpc2libGVTZWxlY3Rpb24ocmFuZ2UuZ2V0KCkpOworICAg
ICAgICByZXR1cm4gVmlzaWJsZVNlbGVjdGlvbigqcmFuZ2UpOwogCiAgICAgcmV0dXJuIFZpc2li
bGVTZWxlY3Rpb24oKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9TZWxlY3Rp
b25TdWJ0cmVlUm9vdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1NlbGVjdGlvblN1YnRyZWVSb290LmNwcAkocmV2aXNpb24gMTgzMTUwKQorKysgU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL1NlbGVjdGlvblN1YnRyZWVSb290LmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTQgSWdhbGlhIFMuTC4KKyAq
IENvcHlyaWdodCAoQykgMjAxNSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTU2LDcgKzU3LDcgQEAgdm9pZCBTZWxlY3Rp
b25TdWJ0cmVlUm9vdDo6YWRqdXN0Rm9yVmlzaQogICAgIFBvc2l0aW9uIGVuZFBvc2l0aW9uID0g
Y3JlYXRlTGVnYWN5RWRpdGluZ1Bvc2l0aW9uKG1fc2VsZWN0aW9uU3VidHJlZURhdGEuc2VsZWN0
aW9uRW5kKCktPm5vZGUoKSwgbV9zZWxlY3Rpb25TdWJ0cmVlRGF0YS5zZWxlY3Rpb25FbmRQb3Mo
KSk7CiAKICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZShkb2N1bWVudCwg
c3RhcnRQb3NpdGlvbi5wYXJlbnRBbmNob3JlZEVxdWl2YWxlbnQoKSwgZW5kUG9zaXRpb24ucGFy
ZW50QW5jaG9yZWRFcXVpdmFsZW50KCkpOwotICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9u
KHJhbmdlLmdldCgpKTsKKyAgICBWaXNpYmxlU2VsZWN0aW9uIHNlbGVjdGlvbigqcmFuZ2UpOwog
ICAgIFBvc2l0aW9uIHN0YXJ0UG9zID0gc2VsZWN0aW9uLnN0YXJ0KCk7CiAgICAgUG9zaXRpb24g
Y2FuZGlkYXRlID0gc3RhcnRQb3MuZG93bnN0cmVhbSgpOwogICAgIGlmIChjYW5kaWRhdGUuaXND
YW5kaWRhdGUoKSkKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE4MzE1NSkKKysrIFNvdXJjZS9X
ZWJLaXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI0IEBACisyMDE1LTA0
LTIyICBCcmVudCBGdWxnaGFtICA8YmZ1bGdoYW1AYXBwbGUuY29tPgorCisgICAgICAgIFZpc2li
bGVTZWxlY3Rpb24gc2hvdWxkIG9ubHkgYWNjZXB0IFJhbmdlIGJ5IHJlZmVyZW5jZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ0MDQ3CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGFsbCB1c2Vz
IG9mIFZpc2libGVTZWxlY3Rpb24gdG8gcGFzcyBhIFJhbmdlIHJlZmVyZW5jZSBpbnN0ZWFkCisg
ICAgICAgIG9mIGEgUmFuZ2UgcG9pbnRlci4KKworICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0
ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpJbmplY3RlZEJ1bmRsZVJhbmdlSGFuZGxlOjpyZW5kZXJlZEltYWdlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0
OjpGaW5kQ29udHJvbGxlcjo6Z2V0SW1hZ2VGb3JGaW5kTWF0Y2gpOgorICAgICAgICAoV2ViS2l0
OjpGaW5kQ29udHJvbGxlcjo6c2VsZWN0RmluZE1hdGNoKToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6Omluc2VydFRl
eHRBc3luYyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldENvbXBvc2l0aW9uQXN5bmMp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZTo6aW5zZXJ0RGljdGF0ZWRUZXh0QXN5bmMpOgorCiAyMDE1LTA0
LTIyICBBbmRlcnMgQ2FybHNzb24gIDxhbmRlcnNjYUBhcHBsZS5jb20+CiAKICAgICAgICAgQWRk
IFdLX0FSUkFZIGFuZCBXS19TRVQgYW5ub3RhdGlvbnMKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvRE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUv
RE9NL0luamVjdGVkQnVuZGxlUmFuZ2VIYW5kbGUuY3BwCShyZXZpc2lvbiAxODMxNTApCisrKyBT
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0RPTS9JbmplY3RlZEJ1bmRs
ZVJhbmdlSGFuZGxlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29w
eXJpZ2h0IChDKSAyMDEwLCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTE0LDcgKzExNCw3IEBAIFBhc3NSZWZQ
dHI8V2ViSW1hZ2U+IEluamVjdGVkQnVuZGxlUmFuZ2UKICAgICAgICAgcmV0dXJuIG51bGxwdHI7
CiAKICAgICBWaXNpYmxlU2VsZWN0aW9uIG9sZFNlbGVjdGlvbiA9IGZyYW1lLT5zZWxlY3Rpb24o
KS5zZWxlY3Rpb24oKTsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2li
bGVTZWxlY3Rpb24obV9yYW5nZS5nZXQoKSkpOworICAgIGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRT
ZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbigqbV9yYW5nZSkpOwogCiAgICAgZmxvYXQgc2NhbGVG
YWN0b3IgPSAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0V4Y2x1ZGVEZXZpY2VTY2FsZUZhY3Rv
cikgPyAxIDogZnJhbWUtPnBhZ2UoKS0+ZGV2aWNlU2NhbGVGYWN0b3IoKTsKICAgICBJbnRSZWN0
IHBhaW50UmVjdCA9IGVuY2xvc2luZ0ludFJlY3QobV9yYW5nZS0+Ym91bmRpbmdSZWN0KCkpOwpJ
bmRleDogU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENv
bnRyb2xsZXIuY3BwCShyZXZpc2lvbiAxODMxNTApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEs
NSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yNzAsNyArMjcw
LDcgQEAgdm9pZCBGaW5kQ29udHJvbGxlcjo6Z2V0SW1hZ2VGb3JGaW5kTWF0YwogICAgICAgICBy
ZXR1cm47CiAKICAgICBWaXNpYmxlU2VsZWN0aW9uIG9sZFNlbGVjdGlvbiA9IGZyYW1lLT5zZWxl
Y3Rpb24oKS5zZWxlY3Rpb24oKTsKLSAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9u
KFZpc2libGVTZWxlY3Rpb24obV9maW5kTWF0Y2hlc1ttYXRjaEluZGV4XS5nZXQoKSkpOworICAg
IGZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbigqbV9maW5k
TWF0Y2hlc1ttYXRjaEluZGV4XSkpOwogCiAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gc2Vs
ZWN0aW9uU25hcHNob3QgPSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqZnJhbWUpLT5jcmVhdGVT
ZWxlY3Rpb25TbmFwc2hvdCgpOwogCkBAIC0yOTUsNyArMjk1LDcgQEAgdm9pZCBGaW5kQ29udHJv
bGxlcjo6c2VsZWN0RmluZE1hdGNoKHVpbgogICAgIEZyYW1lKiBmcmFtZSA9IG1fZmluZE1hdGNo
ZXNbbWF0Y2hJbmRleF0tPnN0YXJ0Q29udGFpbmVyKCktPmRvY3VtZW50KCkuZnJhbWUoKTsKICAg
ICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47Ci0gICAgZnJhbWUtPnNlbGVjdGlvbigpLnNl
dFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKG1fZmluZE1hdGNoZXNbbWF0Y2hJbmRleF0uZ2V0
KCkpKTsKKyAgICBmcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rp
b24oKm1fZmluZE1hdGNoZXNbbWF0Y2hJbmRleF0pKTsKIH0KIAogdm9pZCBGaW5kQ29udHJvbGxl
cjo6aGlkZUZpbmRVSSgpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
V2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1dlYlBhZ2UuY3BwCShyZXZpc2lvbiAxODMxNTApCisrKyBTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyMTEsNyArNDIx
MSw3IEBAIHZvaWQgV2ViUGFnZTo6aW5zZXJ0VGV4dEFzeW5jKGNvbnN0IFN0cmkKICAgICBpZiAo
cmVwbGFjZW1lbnRFZGl0aW5nUmFuZ2UubG9jYXRpb24gIT0gbm90Rm91bmQpIHsKICAgICAgICAg
UmVmUHRyPFJhbmdlPiByZXBsYWNlbWVudFJhbmdlID0gcmFuZ2VGcm9tRWRpdGluZ1JhbmdlKGZy
YW1lLCByZXBsYWNlbWVudEVkaXRpbmdSYW5nZSk7CiAgICAgICAgIGlmIChyZXBsYWNlbWVudFJh
bmdlKQotICAgICAgICAgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVT
ZWxlY3Rpb24ocmVwbGFjZW1lbnRSYW5nZS5nZXQoKSwgU0VMX0RFRkFVTFRfQUZGSU5JVFkpKTsK
KyAgICAgICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0
aW9uKCpyZXBsYWNlbWVudFJhbmdlLCBTRUxfREVGQVVMVF9BRkZJTklUWSkpOwogICAgIH0KICAg
ICAKICAgICBpZiAocmVnaXN0ZXJVbmRvR3JvdXApCkBAIC00MzAxLDcgKzQzMDEsOCBAQCB2b2lk
IFdlYlBhZ2U6OnNldENvbXBvc2l0aW9uQXN5bmMoY29uc3QgCiAgICAgICAgIFJlZlB0cjxSYW5n
ZT4gcmVwbGFjZW1lbnRSYW5nZTsKICAgICAgICAgaWYgKHJlcGxhY2VtZW50RWRpdGluZ1Jhbmdl
LmxvY2F0aW9uICE9IG5vdEZvdW5kKSB7CiAgICAgICAgICAgICByZXBsYWNlbWVudFJhbmdlID0g
cmFuZ2VGcm9tRWRpdGluZ1JhbmdlKGZyYW1lLCByZXBsYWNlbWVudEVkaXRpbmdSYW5nZSk7Ci0g
ICAgICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlv
bihyZXBsYWNlbWVudFJhbmdlLmdldCgpLCBTRUxfREVGQVVMVF9BRkZJTklUWSkpOworICAgICAg
ICAgICAgaWYgKHJlcGxhY2VtZW50UmFuZ2UpCisgICAgICAgICAgICAgICAgZnJhbWUuc2VsZWN0
aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oKnJlcGxhY2VtZW50UmFuZ2UsIFNF
TF9ERUZBVUxUX0FGRklOSVRZKSk7CiAgICAgICAgIH0KIAogICAgICAgICBmcmFtZS5lZGl0b3Io
KS5zZXRDb21wb3NpdGlvbih0ZXh0LCB1bmRlcmxpbmVzLCBzZWxlY3Rpb24ubG9jYXRpb24sIHNl
bGVjdGlvbi5sb2NhdGlvbiArIHNlbGVjdGlvbi5sZW5ndGgpOwpAQCAtNDM1OSw3ICs0MzYwLDcg
QEAgdm9pZCBXZWJQYWdlOjpjb25maXJtQ29tcG9zaXRpb24oY29uc3QgUwogICAgIEFTU0VSVF9X
SVRIX01FU1NBR0Uoc2VsZWN0aW9uUmFuZ2UsICJJbnZhbGlkIHNlbGVjdGlvbjogWyVsbGQ6JWxs
ZF0gaW4gdGV4dCBvZiBsZW5ndGggJWQiLCBzdGF0aWNfY2FzdDxsb25nIGxvbmc+KHNlbGVjdGlv
blN0YXJ0KSwgc3RhdGljX2Nhc3Q8bG9uZyBsb25nPihzZWxlY3Rpb25MZW5ndGgpLCBzY29wZS0+
aW5uZXJUZXh0KCkubGVuZ3RoKCkpOwogCiAgICAgaWYgKHNlbGVjdGlvblJhbmdlKSB7Ci0gICAg
ICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uKHNlbGVjdGlvblJhbmdlLmdldCgpLCBTRUxf
REVGQVVMVF9BRkZJTklUWSk7CisgICAgICAgIFZpc2libGVTZWxlY3Rpb24gc2VsZWN0aW9uKCpz
ZWxlY3Rpb25SYW5nZSwgU0VMX0RFRkFVTFRfQUZGSU5JVFkpOwogICAgICAgICB0YXJnZXRGcmFt
ZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKHNlbGVjdGlvbik7CiAgICAgfQogICAgIHNlbmQo
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RWRpdG9yU3RhdGVDaGFuZ2VkKGVkaXRvclN0YXRlKCkp
KTsKQEAgLTQzODAsNyArNDM4MSw3IEBAIHZvaWQgV2ViUGFnZTo6c2V0Q29tcG9zaXRpb24oY29u
c3QgU3RyaW4KICAgICAgICAgRWxlbWVudCogc2NvcGUgPSB0YXJnZXRGcmFtZS0+c2VsZWN0aW9u
KCkuc2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudCgpOwogICAgICAgICBSZWZQdHI8UmFu
Z2U+IHJlcGxhY2VtZW50UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxvY2F0aW9uQW5k
TGVuZ3RoKHNjb3BlLCByZXBsYWNlbWVudFN0YXJ0LCByZXBsYWNlbWVudExlbmd0aCk7CiAgICAg
ICAgIHRhcmdldEZyYW1lLT5lZGl0b3IoKS5zZXRJZ25vcmVDb21wb3NpdGlvblNlbGVjdGlvbkNo
YW5nZSh0cnVlKTsKLSAgICAgICAgdGFyZ2V0RnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGlv
bihWaXNpYmxlU2VsZWN0aW9uKHJlcGxhY2VtZW50UmFuZ2UuZ2V0KCksIFNFTF9ERUZBVUxUX0FG
RklOSVRZKSk7CisgICAgICAgIHRhcmdldEZyYW1lLT5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24o
VmlzaWJsZVNlbGVjdGlvbigqcmVwbGFjZW1lbnRSYW5nZSwgU0VMX0RFRkFVTFRfQUZGSU5JVFkp
KTsKICAgICAgICAgdGFyZ2V0RnJhbWUtPmVkaXRvcigpLnNldElnbm9yZUNvbXBvc2l0aW9uU2Vs
ZWN0aW9uQ2hhbmdlKGZhbHNlKTsKICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1dlYlBhZ2VNYWMubW0JKHJldmlzaW9uIDE4MzE1
MCkKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvV2ViUGFnZU1hYy5t
bQkod29ya2luZyBjb3B5KQpAQCAtMjg0LDcgKzI4NCw4IEBAIHZvaWQgV2ViUGFnZTo6c2V0Q29t
cG9zaXRpb24oY29uc3QgU3RyaW4KICAgICAgICAgUmVmUHRyPFJhbmdlPiByZXBsYWNlbWVudFJh
bmdlOwogICAgICAgICBpZiAocmVwbGFjZW1lbnRFZGl0aW5nUmFuZ2UubG9jYXRpb24gIT0gbm90
Rm91bmQpIHsKICAgICAgICAgICAgIHJlcGxhY2VtZW50UmFuZ2UgPSByYW5nZUZyb21FZGl0aW5n
UmFuZ2UoZnJhbWUsIHJlcGxhY2VtZW50RWRpdGluZ1JhbmdlKTsKLSAgICAgICAgICAgIGZyYW1l
LnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0aW9uKHJlcGxhY2VtZW50UmFu
Z2UuZ2V0KCksIFNFTF9ERUZBVUxUX0FGRklOSVRZKSk7CisgICAgICAgICAgICBpZiAocmVwbGFj
ZW1lbnRSYW5nZSkKKyAgICAgICAgICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rp
b24oVmlzaWJsZVNlbGVjdGlvbigqcmVwbGFjZW1lbnRSYW5nZSwgU0VMX0RFRkFVTFRfQUZGSU5J
VFkpKTsKICAgICAgICAgfQogCiAgICAgICAgIGZyYW1lLmVkaXRvcigpLnNldENvbXBvc2l0aW9u
KHRleHQsIHVuZGVybGluZXMsIHNlbGVjdGlvblJhbmdlLmxvY2F0aW9uLCBzZWxlY3Rpb25SYW5n
ZS5sb2NhdGlvbiArIHNlbGVjdGlvblJhbmdlLmxlbmd0aCk7CkBAIC0zMDcsNyArMzA4LDcgQEAg
dm9pZCBXZWJQYWdlOjppbnNlcnRUZXh0KGNvbnN0IFN0cmluZyYgdAogICAgIGlmIChyZXBsYWNl
bWVudEVkaXRpbmdSYW5nZS5sb2NhdGlvbiAhPSBub3RGb3VuZCkgewogICAgICAgICBSZWZQdHI8
UmFuZ2U+IHJlcGxhY2VtZW50UmFuZ2UgPSByYW5nZUZyb21FZGl0aW5nUmFuZ2UoZnJhbWUsIHJl
cGxhY2VtZW50RWRpdGluZ1JhbmdlKTsKICAgICAgICAgaWYgKHJlcGxhY2VtZW50UmFuZ2UpCi0g
ICAgICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlv
bihyZXBsYWNlbWVudFJhbmdlLmdldCgpLCBTRUxfREVGQVVMVF9BRkZJTklUWSkpOworICAgICAg
ICAgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oKnJl
cGxhY2VtZW50UmFuZ2UsIFNFTF9ERUZBVUxUX0FGRklOSVRZKSk7CiAgICAgfQogCiAgICAgaWYg
KCFmcmFtZS5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpKSB7CkBAIC0zMjksNyArMzMwLDcgQEAg
dm9pZCBXZWJQYWdlOjppbnNlcnREaWN0YXRlZFRleHQoY29uc3QgUwogICAgIGlmIChyZXBsYWNl
bWVudEVkaXRpbmdSYW5nZS5sb2NhdGlvbiAhPSBub3RGb3VuZCkgewogICAgICAgICBSZWZQdHI8
UmFuZ2U+IHJlcGxhY2VtZW50UmFuZ2UgPSByYW5nZUZyb21FZGl0aW5nUmFuZ2UoZnJhbWUsIHJl
cGxhY2VtZW50RWRpdGluZ1JhbmdlKTsKICAgICAgICAgaWYgKHJlcGxhY2VtZW50UmFuZ2UpCi0g
ICAgICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlv
bihyZXBsYWNlbWVudFJhbmdlLmdldCgpLCBTRUxfREVGQVVMVF9BRkZJTklUWSkpOworICAgICAg
ICAgICAgZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oKnJl
cGxhY2VtZW50UmFuZ2UsIFNFTF9ERUZBVUxUX0FGRklOSVRZKSk7CiAgICAgfQogCiAgICAgQVNT
RVJUKCFmcmFtZS5lZGl0b3IoKS5oYXNDb21wb3NpdGlvbigpKTsKQEAgLTQ0NCw3ICs0NDUsNyBA
QCB2b2lkIFdlYlBhZ2U6Omluc2VydERpY3RhdGVkVGV4dEFzeW5jKGNvCiAgICAgaWYgKHJlcGxh
Y2VtZW50RWRpdGluZ1JhbmdlLmxvY2F0aW9uICE9IG5vdEZvdW5kKSB7CiAgICAgICAgIFJlZlB0
cjxSYW5nZT4gcmVwbGFjZW1lbnRSYW5nZSA9IHJhbmdlRnJvbUVkaXRpbmdSYW5nZShmcmFtZSwg
cmVwbGFjZW1lbnRFZGl0aW5nUmFuZ2UpOwogICAgICAgICBpZiAocmVwbGFjZW1lbnRSYW5nZSkK
LSAgICAgICAgICAgIGZyYW1lLnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihWaXNpYmxlU2VsZWN0
aW9uKHJlcGxhY2VtZW50UmFuZ2UuZ2V0KCksIFNFTF9ERUZBVUxUX0FGRklOSVRZKSk7CisgICAg
ICAgICAgICBmcmFtZS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlvbigq
cmVwbGFjZW1lbnRSYW5nZSwgU0VMX0RFRkFVTFRfQUZGSU5JVFkpKTsKICAgICB9CiAKICAgICBp
ZiAocmVnaXN0ZXJVbmRvR3JvdXApCkluZGV4OiBTb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUlPUy5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L2lvcy9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUlPUy5tbQkocmV2aXNpb24gMTgzMTUwKQorKysgU291cmNlL1dl
YktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVJT1MubW0JKHdvcmtpbmcgY29weSkKQEAg
LTEzNCw3ICsxMzQsNyBAQCAtIChDR1JlY3QpY2xvc2VzdENhcmV0UmVjdEluTWFya2VkVGV4dFJh
CiB7CiAgICAgRnJhbWUgKmZyYW1lID0gW3NlbGYgY29yZUZyYW1lXTsKICAgICBSYW5nZSAqbWFy
a2VkVGV4dFJhbmdlID0gZnJhbWUtPmVkaXRvcigpLmNvbXBvc2l0aW9uUmFuZ2UoKS5nZXQoKTsK
LSAgICBWaXNpYmxlU2VsZWN0aW9uIG1hcmtlZFRleHRSYW5nZVNlbGVjdGlvbiA9IFZpc2libGVT
ZWxlY3Rpb24obWFya2VkVGV4dFJhbmdlKTsKKyAgICBWaXNpYmxlU2VsZWN0aW9uIG1hcmtlZFRl
eHRSYW5nZVNlbGVjdGlvbiA9IG1hcmtlZFRleHRSYW5nZSA/IFZpc2libGVTZWxlY3Rpb24oKm1h
cmtlZFRleHRSYW5nZSkgOiBWaXNpYmxlU2VsZWN0aW9uKCk7CiAKICAgICBJbnRSZWN0IHJlc3Vs
dDsKIApJbmRleDogU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMTgzMTU1KQorKysgU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTggQEAKKzIwMTUt
MDQtMjIgIEJyZW50IEZ1bGdoYW0gIDxiZnVsZ2hhbUBhcHBsZS5jb20+CisKKyAgICAgICAgVmlz
aWJsZVNlbGVjdGlvbiBzaG91bGQgb25seSBhY2NlcHQgUmFuZ2UgYnkgcmVmZXJlbmNlCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDQwNDcKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgYWxsIHVz
ZXMgb2YgVmlzaWJsZVNlbGVjdGlvbiB0byBwYXNzIGEgUmFuZ2UgcmVmZXJlbmNlIGluc3RlYWQK
KyAgICAgICAgb2YgYSBSYW5nZSBwb2ludGVyLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQv
V2ViQ29udGV4dE1lbnVDbGllbnQubW06CisgICAgICAgIChXZWJDb250ZXh0TWVudUNsaWVudDo6
aW1hZ2VGb3JDdXJyZW50U2hhcmluZ1NlcnZpY2VQaWNrZXJJdGVtKToKKyAgICAgICAgKiBXZWJW
aWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfc2VsZWN0TlNSYW5nZTpdKToK
KwogMjAxNS0wNC0yMiAgRXJpYyBDYXJsc29uICA8ZXJpYy5jYXJsc29uQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbTWFjXSBEZXZpY2UgcGlja2VyIG1lbnUgaXMgcG9zaXRpb25lZCBpbmNvcnJlY3Rs
eSBpbiBXSzEKSW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNvbnRl
eHRNZW51Q2xpZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVT
dXBwb3J0L1dlYkNvbnRleHRNZW51Q2xpZW50Lm1tCShyZXZpc2lvbiAxODMxNTApCisrKyBTb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDb250ZXh0TWVudUNsaWVudC5tbQkod29y
a2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDYsIDIw
MDcsIDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChD
KSAyMDA2LCAyMDA3LCAyMDA4LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtNDcxLDcgKzQ3MSw3IEBAIFJldGFp
blB0cjxOU0ltYWdlPiBXZWJDb250ZXh0TWVudUNsaWVudDoKIAogICAgIFZpc2libGVTZWxlY3Rp
b24gb2xkU2VsZWN0aW9uID0gZnJhbWVWaWV3LT5mcmFtZSgpLnNlbGVjdGlvbigpLnNlbGVjdGlv
bigpOwogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKG5vZGUtPmRvY3Vt
ZW50KCksIFBvc2l0aW9uKG5vZGUsIFBvc2l0aW9uOjpQb3NpdGlvbklzQmVmb3JlQW5jaG9yKSwg
UG9zaXRpb24obm9kZSwgUG9zaXRpb246OlBvc2l0aW9uSXNBZnRlckFuY2hvcikpOwotICAgIGZy
YW1lVmlldy0+ZnJhbWUoKS5zZWxlY3Rpb24oKS5zZXRTZWxlY3Rpb24oVmlzaWJsZVNlbGVjdGlv
bihyYW5nZS5nZXQoKSksIEZyYW1lU2VsZWN0aW9uOjpEb05vdFNldEZvY3VzKTsKKyAgICBmcmFt
ZVZpZXctPmZyYW1lKCkuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKFZpc2libGVTZWxlY3Rpb24o
KnJhbmdlKSwgRnJhbWVTZWxlY3Rpb246OkRvTm90U2V0Rm9jdXMpOwogCiAgICAgUGFpbnRCZWhh
dmlvciBvbGRQYWludEJlaGF2aW9yID0gZnJhbWVWaWV3LT5wYWludEJlaGF2aW9yKCk7CiAgICAg
ZnJhbWVWaWV3LT5zZXRQYWludEJlaGF2aW9yKFBhaW50QmVoYXZpb3JTZWxlY3Rpb25Pbmx5KTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkocmV2aXNpb24gMTgzMTUw
KQorKysgU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQkod29ya2luZyBjb3B5
KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDUsIDIwMDYsIDIwMDcs
IDIwMDggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAy
MDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMTE1NCw3ICsxMTU0LDcgQEAg
LSAodm9pZClfc2VsZWN0TlNSYW5nZTooTlNSYW5nZSlyYW5nZQogewogICAgIFJlZlB0cjxSYW5n
ZT4gZG9tUmFuZ2UgPSBbc2VsZiBfY29udmVydFRvRE9NUmFuZ2U6cmFuZ2VdOwogICAgIGlmIChk
b21SYW5nZSkKLSAgICAgICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2Vs
ZWN0aW9uKFZpc2libGVTZWxlY3Rpb24oZG9tUmFuZ2UuZ2V0KCksIFNFTF9ERUZBVUxUX0FGRklO
SVRZKSk7CisgICAgICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVj
dGlvbihWaXNpYmxlU2VsZWN0aW9uKCpkb21SYW5nZSwgU0VMX0RFRkFVTFRfQUZGSU5JVFkpKTsK
IH0KIAogLSAoQk9PTClfaXNEaXNwbGF5aW5nU3RhbmRhbG9uZUltYWdlCkBAIC0xMjQ1LDcgKzEy
NDUsNyBAQCAtICh2b2lkKXNlbGVjdFdpdGhvdXRDbG9zaW5nVHlwaW5nTlNSYW5nCiB7CiAgICAg
UmVmUHRyPFJhbmdlPiBkb21SYW5nZSA9IFtzZWxmIF9jb252ZXJ0VG9ET01SYW5nZTpyYW5nZV07
CiAgICAgaWYgKGRvbVJhbmdlKSB7Ci0gICAgICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIG5l
d1NlbGVjdGlvbiA9IFZpc2libGVTZWxlY3Rpb24oZG9tUmFuZ2UuZ2V0KCksIFNFTF9ERUZBVUxU
X0FGRklOSVRZKTsKKyAgICAgICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgbmV3U2VsZWN0aW9u
ID0gVmlzaWJsZVNlbGVjdGlvbigqZG9tUmFuZ2UsIFNFTF9ERUZBVUxUX0FGRklOSVRZKTsKICAg
ICAgICAgX3ByaXZhdGUtPmNvcmVGcmFtZS0+c2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKG5ld1Nl
bGVjdGlvbiwgMCk7CiAgICAgICAgIAogICAgICAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5lZGl0
b3IoKS5lbnN1cmVMYXN0RWRpdENvbW1hbmRIYXNDdXJyZW50U2VsZWN0aW9uSWZPcGVuRm9yTW9y
ZVR5cGluZygpOwo=
</data>
<flag name="review"
          id="276180"
          type_id="1"
          status="+"
          setter="thorton"
    />
          </attachment>
      

    </bug>

</bugzilla>