<?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>93379</bug_id>
          
          <creation_ts>2012-08-07 11:23:52 -0700</creation_ts>
          <short_desc>[WebGL] Add support for EXT_robustness</short_desc>
          <delta_ts>2012-08-10 19:45:30 -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>WebGL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Joshua Netterfield">jnetterfield</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>cmarrin</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>dev+webkit</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dino</cc>
    
    <cc>eoconnor</cc>
    
    <cc>eric</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jamesr</cc>
    
    <cc>kbr</cc>
    
    <cc>mifenton</cc>
    
    <cc>mjs</cc>
    
    <cc>noam</cc>
    
    <cc>rakuco</cc>
    
    <cc>roger_fong</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>staikos</cc>
    
    <cc>thorton</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>689217</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Netterfield">jnetterfield</who>
    <bug_when>2012-08-07 11:23:52 -0700</bug_when>
    <thetext>EXT_robustness is a GLES extension which aims to bring the most important features of ARB_robustness to mobile platforms. The full specification is available at http://www.khronos.org/registry/gles/extensions/EXT/EXT_robustness.txt.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689515</commentid>
    <comment_count>1</comment_count>
      <attachid>157027</attachid>
    <who name="Joshua Netterfield">jnetterfield</who>
    <bug_when>2012-08-07 15:50:34 -0700</bug_when>
    <thetext>Created attachment 157027
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>689539</commentid>
    <comment_count>2</comment_count>
      <attachid>157027</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-07 15:59:00 -0700</bug_when>
    <thetext>Comment on attachment 157027
Patch

Attachment 157027 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/13458012</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691632</commentid>
    <comment_count>3</comment_count>
      <attachid>157498</attachid>
    <who name="Joshua Netterfield">jnetterfield</who>
    <bug_when>2012-08-09 11:37:23 -0700</bug_when>
    <thetext>Created attachment 157498
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691640</commentid>
    <comment_count>4</comment_count>
      <attachid>157501</attachid>
    <who name="Joshua Netterfield">jnetterfield</who>
    <bug_when>2012-08-09 11:42:54 -0700</bug_when>
    <thetext>Created attachment 157501
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691642</commentid>
    <comment_count>5</comment_count>
    <who name="Joshua Netterfield">jnetterfield</who>
    <bug_when>2012-08-09 11:43:10 -0700</bug_when>
    <thetext>Adjusted ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691746</commentid>
    <comment_count>6</comment_count>
    <who name="George Staikos">staikos</who>
    <bug_when>2012-08-09 13:22:35 -0700</bug_when>
    <thetext>I presume we don&apos;t have new tests for this because you are unable to actually trip it so far?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691758</commentid>
    <comment_count>7</comment_count>
    <who name="Joshua Netterfield">jnetterfield</who>
    <bug_when>2012-08-09 13:31:24 -0700</bug_when>
    <thetext>Correct - with the improvements in the QC driver &amp; the introduction of ANGLE, I have not been able to cause a hardware reset (there is a passing test which causes a reset). I&apos;ll add this to the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691763</commentid>
    <comment_count>8</comment_count>
    <who name="George Staikos">staikos</who>
    <bug_when>2012-08-09 13:33:33 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; Correct - with the improvements in the QC driver &amp; the introduction of ANGLE, I have not been able to cause a hardware reset (there is a passing test which causes a reset). I&apos;ll add this to the ChangeLog.

No need, I&apos;ll r+ it</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691777</commentid>
    <comment_count>9</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-09 13:38:02 -0700</bug_when>
    <thetext>I&apos;m not sure this is the right place to do the robustness validation.  Instead, can we require that implementations of GraphicsContext3D are robust?  There may be many ways to accomplish this that are specific to the backend.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>691780</commentid>
    <comment_count>10</comment_count>
      <attachid>157501</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-08-09 13:38:57 -0700</bug_when>
    <thetext>Comment on attachment 157501
Patch

I want to hold off on this until some of the more experienced WebGL bindings folks can take a look - they&apos;re currently at SIGGRAPH.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>692135</commentid>
    <comment_count>11</comment_count>
    <who name="George Staikos">staikos</who>
    <bug_when>2012-08-09 20:02:49 -0700</bug_when>
    <thetext>(In reply to comment #9)
&gt; I&apos;m not sure this is the right place to do the robustness validation.  Instead, can we require that implementations of GraphicsContext3D are robust?  There may be many ways to accomplish this that are specific to the backend.

We had concerns with how to recover in basically all cases.  Open to suggestions.  This was the best we came up with as a first step.  There is definitely more work to do here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693035</commentid>
    <comment_count>12</comment_count>
      <attachid>157501</attachid>
    <who name="Kenneth Russell">kbr</who>
    <bug_when>2012-08-10 19:35:43 -0700</bug_when>
    <thetext>Comment on attachment 157501
Patch

This looks okay to me. While it might seem a little gross to check in shared code whether the robustness extension is present, doing so will enable more code sharing between platforms. I&apos;ll try setting the cq+ bit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693036</commentid>
    <comment_count>13</comment_count>
      <attachid>157501</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-10 19:45:22 -0700</bug_when>
    <thetext>Comment on attachment 157501
Patch

Clearing flags on attachment: 157501

Committed r125349: &lt;http://trac.webkit.org/changeset/125349&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>693037</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-08-10 19:45:30 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157027</attachid>
            <date>2012-08-07 15:50:34 -0700</date>
            <delta_ts>2012-08-09 11:37:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93379-20120807184855.patch</filename>
            <type>text/plain</type>
            <size>21089</size>
            <attacher name="Joshua Netterfield">jnetterfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI0OTE1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjFlMzVmNzAxYjhjMzU2
MzU2OTk5NGE2M2UxNDA3NTZiYmQ1NTY3Ny4uNzI5NThjOTc0ZGUzOGUxNTI1NjI4MGI0NGQ1YWIz
MWIwMWE4ZTFjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDEyLTA4LTA3ICBKb3No
dWEgTmV0dGVyZmllbGQgIDxqbmV0dGVyZmllbGRAcmltLmNvbT4KKworICAgICAgICBbV2ViR0xd
IEFkZCBzdXBwb3J0IGZvciBFWFRfcm9idXN0bmVzcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTMzNzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUYWtlIGFkdmFudGFnZSBvZiBFWFQgcm9idXN0bmVzcyBp
biBXZWJLaXQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLgorCisgICAgICAgICogaHRtbC9jYW52
YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpzZXR1cEZsYWdzKToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VW5pZm9ybSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnJlYWRQaXhlbHMpOgorICAgICAgICAqIGh0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oOgorICAgICAgICAoV2ViR0xSZW5kZXJp
bmdDb250ZXh0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zM0QuaDoK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0dyYXBoaWNzQ29udGV4dDNE
QmxhY2tCZXJyeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpHcmFwaGljc0NvbnRleHQzRDo6c2V0
Q29udGV4dExvc3RDYWxsYmFjayk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnMzRE9wZW5HTENvbW1vbjo6cmVhZG5QaXhlbHNFWFQpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zM0RPcGVuR0xDb21tb246OmdldG5Vbmlm
b3JtZnZFWFQpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uOjpn
ZXRuVW5pZm9ybWl2RVhUKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uczNET3BlbkdMQ29tbW9uLmg6CisgICAgICAgIChFeHRlbnNpb25zM0RPcGVuR0xDb21t
b24pOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVu
R0xFUy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zM0RPcGVuR0xFUzo6RXh0ZW5z
aW9uczNET3BlbkdMRVMpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNET3BlbkdMRVM6
OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zM0RPcGVuR0xFUzo6c2V0RVhUQ29udGV4dExvc3RDYWxsYmFj
ayk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zM0RPcGVuR0xFUzo6cmVhZG5QaXhlbHNF
WFQpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNET3BlbkdMRVM6OmdldG5Vbmlmb3Jt
ZnZFWFQpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNET3BlbkdMRVM6OmdldG5Vbmlm
b3JtaXZFWFQpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNET3BlbkdMRVM6OnN1cHBv
cnRzRXh0ZW5zaW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uczNET3BlbkdMRVMuaDoKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoRXh0ZW5zaW9u
czNET3BlbkdMRVMpOgorCiAyMDEyLTA4LTA3ICBBYmhpc2hlayBBcnlhICA8aW5mZXJub0BjaHJv
bWl1bS5vcmc+CiAKICAgICAgICAgQ3Jhc2ggaW4gQ29udGFpbmVyTm9kZTo6Y2xvbmVDaGlsZE5v
ZGVzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5jcHAKaW5kZXggYzBhYmYwZmJhMWNlYWM0NDJkMDA0MWIxMDAzNGFlMTI5YjM4YzU3
YS4uMzFmMmYyMmZjY2FiYjViYzIzODA1YzFlMDRmYzAzOWMwODBlMTRjYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBA
IC01NDgsNiArNTQ4LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnNldHVwRmxhZ3Mo
KQogICAgICAgICBtX2lzR0xFUzJOUE9UU3RyaWN0ID0gIW1fY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLT5pc0VuYWJsZWQoIkdMX0FSQl90ZXh0dXJlX25vbl9wb3dlcl9vZl90d28iKTsKICAgICAg
ICAgbV9pc0RlcHRoU3RlbmNpbFN1cHBvcnRlZCA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LT5pc0VuYWJsZWQoIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCIpOwogICAgIH0KKyAgICBt
X2lzUm9idXN0bmVzc0VYVFN1cHBvcnRlZCA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5p
c0VuYWJsZWQoIkdMX0VYVF9yb2J1c3RuZXNzIik7CiB9CiAKIGJvb2wgV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjphbGxvd1ByaXZpbGVnZWRFeHRlbnNpb25zKCkgY29uc3QKQEAgLTI5NzUsMjEgKzI5
NzYsMzAgQEAgV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VW5pZm9ybShX
ZWJHTFByb2dyYW0qIHByb2dyYW0sIGNvbnN0IFdlYkcKICAgICAgICAgICAgICAgICBzd2l0Y2gg
KGJhc2VUeXBlKSB7CiAgICAgICAgICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RkxP
QVQ6IHsKICAgICAgICAgICAgICAgICAgICAgR0MzRGZsb2F0IHZhbHVlWzE2XSA9IHswfTsKLSAg
ICAgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtZnYob2JqZWN0T3JaZXJvKHBy
b2dyYW0pLCBsb2NhdGlvbiwgdmFsdWUpOworICAgICAgICAgICAgICAgICAgICBpZiAobV9pc1Jv
YnVzdG5lc3NFWFRTdXBwb3J0ZWQpCisgICAgICAgICAgICAgICAgICAgICAgICBtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS0+Z2V0blVuaWZvcm1mdkVYVChvYmplY3RPclplcm8ocHJvZ3JhbSks
IGxvY2F0aW9uLCAxNiwgdmFsdWUpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm1mdihvYmplY3RPclplcm8ocHJv
Z3JhbSksIGxvY2F0aW9uLCB2YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChsZW5ndGgg
PT0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8odmFsdWVb
MF0pOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKEZsb2F0MzJBcnJh
eTo6Y3JlYXRlKHZhbHVlLCBsZW5ndGgpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6SU5UOiB7CiAgICAgICAgICAgICAgICAgICAg
IEdDM0RpbnQgdmFsdWVbNF0gPSB7MH07Ci0gICAgICAgICAgICAgICAgICAgIG1fY29udGV4dC0+
Z2V0VW5pZm9ybWl2KG9iamVjdE9yWmVybyhwcm9ncmFtKSwgbG9jYXRpb24sIHZhbHVlKTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKG1faXNSb2J1c3RuZXNzRVhUU3VwcG9ydGVkKQorICAgICAg
ICAgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmdldG5Vbmlmb3Jt
aXZFWFQob2JqZWN0T3JaZXJvKHByb2dyYW0pLCBsb2NhdGlvbiwgNCwgdmFsdWUpOworICAgICAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmdl
dFVuaWZvcm1pdihvYmplY3RPclplcm8ocHJvZ3JhbSksIGxvY2F0aW9uLCB2YWx1ZSk7CiAgICAg
ICAgICAgICAgICAgICAgIGlmIChsZW5ndGggPT0gMSkKICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBXZWJHTEdldEluZm8odmFsdWVbMF0pOwogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gV2ViR0xHZXRJbmZvKEludDMyQXJyYXk6OmNyZWF0ZSh2YWx1ZSwgbGVuZ3RoKSk7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkJP
T0w6IHsKICAgICAgICAgICAgICAgICAgICAgR0MzRGludCB2YWx1ZVs0XSA9IHswfTsKLSAgICAg
ICAgICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtaXYob2JqZWN0T3JaZXJvKHByb2dy
YW0pLCBsb2NhdGlvbiwgdmFsdWUpOworICAgICAgICAgICAgICAgICAgICBpZiAobV9pc1JvYnVz
dG5lc3NFWFRTdXBwb3J0ZWQpCisgICAgICAgICAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS0+Z2V0blVuaWZvcm1pdkVYVChvYmplY3RPclplcm8ocHJvZ3JhbSksIGxv
Y2F0aW9uLCA0LCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybWl2KG9iamVjdE9yWmVybyhwcm9ncmFt
KSwgbG9jYXRpb24sIHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGxlbmd0aCA+IDEp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYm9vbFZhbHVlWzE2XSA9IHswfTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBsZW5ndGg7IGor
KykKQEAgLTMyOTAsMjEgKzMzMDAsMjcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnJl
YWRQaXhlbHMoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICAvLyBDYWxjdWxhdGUgYXJyYXkgc2l6ZSwgdGFraW5nIGlu
dG8gY29uc2lkZXJhdGlvbiBvZiBQQUNLX0FMSUdOTUVOVC4KKwogICAgIHVuc2lnbmVkIGludCB0
b3RhbEJ5dGVzUmVxdWlyZWQ7CiAgICAgdW5zaWduZWQgaW50IHBhZGRpbmc7CiAgICAgR0MzRGVu
dW0gZXJyb3IgPSBtX2NvbnRleHQtPmNvbXB1dGVJbWFnZVNpemVJbkJ5dGVzKGZvcm1hdCwgdHlw
ZSwgd2lkdGgsIGhlaWdodCwgbV9wYWNrQWxpZ25tZW50LCAmdG90YWxCeXRlc1JlcXVpcmVkLCAm
cGFkZGluZyk7Ci0gICAgaWYgKGVycm9yICE9IEdyYXBoaWNzQ29udGV4dDNEOjpOT19FUlJPUikg
ewotICAgICAgICBzeW50aGVzaXplR0xFcnJvcihlcnJvciwgInJlYWRQaXhlbHMiLCAiaW52YWxp
ZCBkaW1lbnNpb25zIik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKHBpeGVscy0+
Ynl0ZUxlbmd0aCgpIDwgdG90YWxCeXRlc1JlcXVpcmVkKSB7Ci0gICAgICAgIHN5bnRoZXNpemVH
TEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJBVElPTiwgInJlYWRQaXhlbHMi
LCAiQXJyYXlCdWZmZXJWaWV3IG5vdCBsYXJnZSBlbm91Z2ggZm9yIGRpbWVuc2lvbnMiKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLSAgICBjbGVhcklmQ29tcG9zaXRlZCgpOwogICAgIHZvaWQq
IGRhdGEgPSBwaXhlbHMtPmJhc2VBZGRyZXNzKCk7CiAKLSAgICB7CisgICAgaWYgKG1faXNSb2J1
c3RuZXNzRVhUU3VwcG9ydGVkKSB7CisgICAgICAgIGNsZWFySWZDb21wb3NpdGVkKCk7CisgICAg
ICAgIFNjb3BlZERyYXdpbmdCdWZmZXJCaW5kZXIgYmluZGVyKG1fZHJhd2luZ0J1ZmZlci5nZXQo
KSwgbV9mcmFtZWJ1ZmZlckJpbmRpbmcuZ2V0KCkpOworICAgICAgICBtX2NvbnRleHQtPmdldEV4
dGVuc2lvbnMoKS0+cmVhZG5QaXhlbHNFWFQoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0
eXBlLCBwaXhlbHMtPmJ5dGVMZW5ndGgoKSwgZGF0YSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
aWYgKGVycm9yICE9IEdyYXBoaWNzQ29udGV4dDNEOjpOT19FUlJPUikgeworICAgICAgICAgICAg
c3ludGhlc2l6ZUdMRXJyb3IoZXJyb3IsICJyZWFkUGl4ZWxzIiwgImludmFsaWQgZGltZW5zaW9u
cyIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChwaXhlbHMt
PmJ5dGVMZW5ndGgoKSA8IHRvdGFsQnl0ZXNSZXF1aXJlZCkgeworICAgICAgICAgICAgc3ludGhl
c2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OLCAicmVhZFBp
eGVscyIsICJBcnJheUJ1ZmZlclZpZXcgbm90IGxhcmdlIGVub3VnaCBmb3IgZGltZW5zaW9ucyIp
OworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGNsZWFySWZDb21wb3Np
dGVkKCk7CisKICAgICAgICAgU2NvcGVkRHJhd2luZ0J1ZmZlckJpbmRlciBiaW5kZXIobV9kcmF3
aW5nQnVmZmVyLmdldCgpLCBtX2ZyYW1lYnVmZmVyQmluZGluZy5nZXQoKSk7CiAgICAgICAgIG1f
Y29udGV4dC0+cmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRh
dGEpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5k
ZXJpbmdDb250ZXh0LmgKaW5kZXggNGM4OTBlYTIxMDJlYTZiYjNmNjM5NjJiOTk4Mzc4ODc4YmYw
ZDA4ZS4uYzcyYWM1OTBhMjY5MTIxMmY0NjAzYmEzNzVjZTY4YTUxOGE3ZjQ4ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmgKQEAg
LTQ5NCw2ICs0OTQsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBtX2lzRXJyb3JHZW5lcmF0ZWRPbk91
dE9mQm91bmRzQWNjZXNzZXM7CiAgICAgYm9vbCBtX2lzUmVzb3VyY2VTYWZlOwogICAgIGJvb2wg
bV9pc0RlcHRoU3RlbmNpbFN1cHBvcnRlZDsKKyAgICBib29sIG1faXNSb2J1c3RuZXNzRVhUU3Vw
cG9ydGVkOwogCiAgICAgYm9vbCBtX3N5bnRoZXNpemVkRXJyb3JzVG9Db25zb2xlOwogICAgIGlu
dCBtX251bUdMRXJyb3JzVG9Db25zb2xlQWxsb3dlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnMzRC5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uczNELmgKaW5kZXggN2NmOTQyMGZjYTIzYTJhYzA0Y2Ey
YTVhZWI1ZDY3M2IwZWVmOGVlMy4uMDVmMzBmZDQ3MWY3ODVlZjY1Mjg2YTY3ZGJiYzU0YjY0MGIx
MmUzNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5z
aW9uczNELmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9u
czNELmgKQEAgLTE3Nyw2ICsxNzcsMTEgQEAgcHVibGljOgogCiAgICAgLy8gR0xfQ0hST01JVU1f
Y29weV90ZXh0dXJlCiAgICAgdmlydHVhbCB2b2lkIGNvcHlUZXh0dXJlQ0hST01JVU0oR0MzRGVu
dW0sIFBsYXRmb3JtM0RPYmplY3QsIFBsYXRmb3JtM0RPYmplY3QsIEdDM0RpbnQsIEdDM0RlbnVt
KSA9IDA7CisKKyAgICAvLyBFWFQgUm9idXN0bmVzcyAtIHVzZXMgZ2V0R3JhcGhpY3NSZXNldFN0
YXR1c0FSQgorICAgIHZpcnR1YWwgdm9pZCByZWFkblBpeGVsc0VYVChpbnQgeCwgaW50IHksIEdD
M0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51
bSB0eXBlLCBHQzNEc2l6ZWkgYnVmU2l6ZSwgdm9pZCAqZGF0YSkgPSAwOworICAgIHZpcnR1YWwg
dm9pZCBnZXRuVW5pZm9ybWZ2RVhUKEdDM0R1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0Mz
RHNpemVpIGJ1ZlNpemUsIGZsb2F0ICpwYXJhbXMpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0
blVuaWZvcm1pdkVYVChHQzNEdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDM0RzaXplaSBi
dWZTaXplLCBpbnQgKnBhcmFtcykgPSAwOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9H
cmFwaGljc0NvbnRleHQzREJsYWNrQmVycnkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYmxhY2tiZXJyeS9HcmFwaGljc0NvbnRleHQzREJsYWNrQmVycnkuY3BwCmluZGV4
IDM2OThmZDI1ZjEyOWMyYzQwNzZkNTM5YTgzZWI5YTJkYTYxYjdkZTMuLjIzNGU2OGY1ZGI3ZjU3
YWMxNmVlZWQ1NGQ1YWNjMzE5MzJiNmQ1ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvR3JhcGhpY3NDb250ZXh0M0RCbGFja0JlcnJ5LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0dyYXBo
aWNzQ29udGV4dDNEQmxhY2tCZXJyeS5jcHAKQEAgLTM4OCw4ICszODgsOSBAQCB2b2lkIEdyYXBo
aWNzQ29udGV4dDNEOjpwYWludFRvQ2FudmFzKGNvbnN0IHVuc2lnbmVkIGNoYXIqIGltYWdlUGl4
ZWxzLCBpbnQgaW1hZwogICAgIGNvbnRleHQtPmRyYXdJbWFnZShiaXRtYXBJbWFnZS5nZXQoKSwg
Q29sb3JTcGFjZURldmljZVJHQiwgZHN0LCBzcmMsIENvbXBvc2l0ZUNvcHksIFJlc3BlY3RJbWFn
ZU9yaWVudGF0aW9uLCBmYWxzZSk7CiB9CiAKLXZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnNldENv
bnRleHRMb3N0Q2FsbGJhY2soUGFzc093blB0cjxDb250ZXh0TG9zdENhbGxiYWNrPikKK3ZvaWQg
R3JhcGhpY3NDb250ZXh0M0Q6OnNldENvbnRleHRMb3N0Q2FsbGJhY2soUGFzc093blB0cjxDb250
ZXh0TG9zdENhbGxiYWNrPiBjYWxsYmFjaykKIHsKKyAgICBzdGF0aWNfY2FzdDxFeHRlbnNpb25z
M0RPcGVuR0xFUyo+KGdldEV4dGVuc2lvbnMoKSktPnNldEVYVENvbnRleHRMb3N0Q2FsbGJhY2so
Y2FsbGJhY2spOwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzZXRFcnJvck1lc3NhZ2VD
YWxsYmFjayhQYXNzT3duUHRyPEVycm9yTWVzc2FnZUNhbGxiYWNrPikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0V4dGVuc2lvbnMzRENocm9t
aXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9FeHRlbnNp
b25zM0RDaHJvbWl1bS5oCmluZGV4IDgwNWUyMGE3OWQwZDA5Yzg5MTI5NGI2OWYzYjYzOGQzNWE2
MTMxNDYuLjJkZjMxNTY3Mjg4NjRmOTNhZjg3NWU1N2VlOTlkNDRjZmIwODUxZDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0V4dGVuc2lvbnMz
RENocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21p
dW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0uaApAQCAtMTI2LDYgKzEyNiwxMSBAQCBwdWJsaWM6CiAg
ICAgLy8gR0xfQ0hST01JVU1fc2hhbGxvd19mbHVzaAogICAgIHZpcnR1YWwgdm9pZCBzaGFsbG93
Rmx1c2hDSFJPTUlVTSgpOwogCisgICAgLy8gR0xfRVhUX3JvYnVzdG5lc3MKKyAgICB2aXJ0dWFs
IHZvaWQgcmVhZG5QaXhlbHNFWFQoaW50IHgsIGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0Rz
aXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgR0MzRHNpemVpIGJ1
ZlNpemUsIHZvaWQgKmRhdGEpOworICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2RVhUKEdD
M0R1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0MzRHNpemVpIGJ1ZlNpemUsIGZsb2F0ICpw
YXJhbXMpOworICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDM0R1aW50IHByb2dy
YW0sIGludCBsb2NhdGlvbiwgR0MzRHNpemVpIGJ1ZlNpemUsIGludCAqcGFyYW1zKTsKKwogcHJp
dmF0ZToKICAgICAvLyBJbnN0YW5jZXMgb2YgdGhpcyBjbGFzcyBhcmUgc3RyaWN0bHkgb3duZWQg
YnkgdGhlIEdyYXBoaWNzQ29udGV4dDNEIGltcGxlbWVudGF0aW9uIGFuZCBkbyBub3QKICAgICAv
LyBuZWVkIHRvIGJlIGluc3RhbnRpYXRlZCBieSBhbnkgb3RoZXIgY29kZS4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVu
R0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnMzRE9wZW5HTENvbW1vbi5jcHAKaW5kZXggNWE2Mjg4MTBkZmQxMjc2NzA2MGVhMGY0
ZTYyMTgwMmM2OWEzYThlYi4uM2JiYjZjNzM3ZjE5Y2VjMDUwNDhmZTM5MWQxZTc1OGRjZDVhYzRk
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4
dGVuc2lvbnMzRE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTENvbW1vbi5jcHAKQEAgLTE0Myw2ICsx
NDMsMjEgQEAgdm9pZCBFeHRlbnNpb25zM0RPcGVuR0xDb21tb246OmluaXRpYWxpemVBdmFpbGFi
bGVFeHRlbnNpb25zKCkKICAgICBtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0ZW5zaW9ucyA9IHRy
dWU7CiB9CiAKK3ZvaWQgRXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uOjpyZWFkblBpeGVsc0VYVChp
bnQsIGludCwgR0MzRHNpemVpLCBHQzNEc2l6ZWksIEdDM0RlbnVtLCBHQzNEZW51bSwgR0MzRHNp
emVpLCB2b2lkICopCit7CisgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7Cit9CisKK3ZvaWQgRXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uOjpnZXRu
VW5pZm9ybWZ2RVhUKEdDM0R1aW50LCBpbnQsIEdDM0RzaXplaSwgZmxvYXQgKikKK3sKKyAgICBt
X2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKwor
dm9pZCBFeHRlbnNpb25zM0RPcGVuR0xDb21tb246OmdldG5Vbmlmb3JtaXZFWFQoR0MzRHVpbnQs
IGludCwgR0MzRHNpemVpLCBpbnQgKikKK3sKKyAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVy
cm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQog
CiAjZW5kaWYgLy8gVVNFKDNEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTENvbW1vbi5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTENv
bW1vbi5oCmluZGV4IDZhNjFlNDYzMmJlODE2NTc3OTRmZDM3N2Q4YzUxNmI4MGZlOTYyZTcuLjc1
ODY5ZGUxOTk2ZTMxMThhZTRjMmMzZGIxOTc2YTcwNjY4Zjk0OTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xDb21t
b24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5z
aW9uczNET3BlbkdMQ29tbW9uLmgKQEAgLTUyLDYgKzUyLDExIEBAIHB1YmxpYzoKIAogICAgIHZp
cnR1YWwgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9ybTNET2Jq
ZWN0KTsKIAorICAgIC8vIEVYVCBSb2J1c3RuZXNzIC0gdXNlcyBnZXRHcmFwaGljc1Jlc2V0U3Rh
dHVzQVJCKCkKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZG5QaXhlbHNFWFQoaW50IHgsIGludCB5LCBH
QzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVu
dW0gdHlwZSwgR0MzRHNpemVpIGJ1ZlNpemUsIHZvaWQgKmRhdGEpOworICAgIHZpcnR1YWwgdm9p
ZCBnZXRuVW5pZm9ybWZ2RVhUKEdDM0R1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0MzRHNp
emVpIGJ1ZlNpemUsIGZsb2F0ICpwYXJhbXMpOworICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9y
bWl2RVhUKEdDM0R1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0MzRHNpemVpIGJ1ZlNpemUs
IGludCAqcGFyYW1zKTsKKwogcHJvdGVjdGVkOgogICAgIGZyaWVuZCBjbGFzcyBFeHRlbnNpb25z
M0RPcGVuR0xFUzsKICAgICBFeHRlbnNpb25zM0RPcGVuR0xDb21tb24oR3JhcGhpY3NDb250ZXh0
M0QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zM0RPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMRVMuY3BwCmluZGV4IGIzYTkzMDAwMWJhZGVl
MDdiMGY1ZWJjZTZhMDNlMTQwODZjNDJiYjAuLmU4ZTBhNmFmNjNmOGM3YmJjMGZhOTUyNGRhODk4
NjlkYzA5NGJhNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTEVTLmNwcApAQCAtMzgsNiAr
MzgsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEV4dGVuc2lvbnMzRE9wZW5HTEVTOjpFeHRl
bnNpb25zM0RPcGVuR0xFUyhHcmFwaGljc0NvbnRleHQzRCogY29udGV4dCkKICAgICA6IEV4dGVu
c2lvbnMzRE9wZW5HTENvbW1vbihjb250ZXh0KQorICAgICwgbV9jb250ZXh0UmVzZXRTdGF0dXMo
R0xfTk9fRVJST1IpCiAgICAgLCBtX3N1cHBvcnRzT0VTdmVydGV4QXJyYXlPYmplY3QoZmFsc2Up
CiAgICAgLCBtX3N1cHBvcnRzSU1HTXVsdGlzYW1wbGVkUmVuZGVyVG9UZXh0dXJlKGZhbHNlKQog
ICAgICwgbV9nbEZyYW1lYnVmZmVyVGV4dHVyZTJETXVsdGlzYW1wbGVJTUcoMCkKQEAgLTQ2LDYg
KzQ3LDEwIEBAIEV4dGVuc2lvbnMzRE9wZW5HTEVTOjpFeHRlbnNpb25zM0RPcGVuR0xFUyhHcmFw
aGljc0NvbnRleHQzRCogY29udGV4dCkKICAgICAsIG1fZ2xEZWxldGVWZXJ0ZXhBcnJheXNPRVMo
MCkKICAgICAsIG1fZ2xHZW5WZXJ0ZXhBcnJheXNPRVMoMCkKICAgICAsIG1fZ2xJc1ZlcnRleEFy
cmF5T0VTKDApCisgICAgLCBtX2dsR2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVCgwKQorICAgICwg
bV9nbFJlYWRuUGl4ZWxzRVhUKDApCisgICAgLCBtX2dsR2V0blVuaWZvcm1mdkVYVCgwKQorICAg
ICwgbV9nbEdldG5Vbmlmb3JtaXZFWFQoMCkKIHsKIH0KIApAQCAtMTM3LDYgKzE0Miw3NiBAQCB2
b2lkIEV4dGVuc2lvbnMzRE9wZW5HTEVTOjpiaW5kVmVydGV4QXJyYXlPRVMoUGxhdGZvcm0zRE9i
amVjdCBhcnJheSkKICAgICAgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7CiB9CiAKK2ludCBFeHRlbnNpb25zM0RPcGVuR0xFUzo6Z2V0R3JhcGhp
Y3NSZXNldFN0YXR1c0FSQigpCit7CisgICAgLy8gRklYTUU6IFRoaXMgZG9lcyBub3QgY2FsbCBn
ZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCLCBidXQgaW5zdGVhZCBnZXRHcmFwaGljc1Jlc2V0U3Rh
dHVzRVhULgorICAgIC8vIFRoZSByZXR1cm4gY29kZXMgZnJvbSB0aGUgdHdvIGV4dGVuc2lvbnMg
YXJlIGlkZW50aWNhbCBhbmQgdGhlaXIgcHVycG9zZSBpcyB0aGUgc2FtZSwgc28gaXQKKyAgICAv
LyBtYXkgYmUgYmVzdCB0byByZW5hbWUgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpIHRvIGdl
dEdyYXBoaWNzUmVzZXRTdGF0dXMoKS4KKyAgICBpZiAobV9jb250ZXh0UmVzZXRTdGF0dXMgIT0g
R0xfTk9fRVJST1IpCisgICAgICAgIHJldHVybiBtX2NvbnRleHRSZXNldFN0YXR1czsKKyAgICBp
ZiAobV9nbEdldEdyYXBoaWNzUmVzZXRTdGF0dXNFWFQpIHsKKyNpZiBQTEFURk9STShCTEFDS0JF
UlJZKQorICAgICAgICAvLyBXZSBjYW5ub3QgeWV0IHJlY3JlYXRlIGV2ZXJ5dGhpbmcgeWV0Lgor
ICAgICAgICBleGl0KDEpOworI2VuZGlmCisgICAgICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRD
dXJyZW50KCk7CisgICAgICAgIGludCByZWFzb25Gb3JSZXNldCA9IG1fZ2xHZXRHcmFwaGljc1Jl
c2V0U3RhdHVzRVhUKCk7CisgICAgICAgIGlmIChyZWFzb25Gb3JSZXNldCAhPSBHTF9OT19FUlJP
UikgeworICAgICAgICAgICAgQVNTRVJUKG1fY29udGV4dExvc3RDYWxsYmFjayk7CisgICAgICAg
ICAgICBpZiAobV9jb250ZXh0TG9zdENhbGxiYWNrKQorICAgICAgICAgICAgICAgIG1fY29udGV4
dExvc3RDYWxsYmFjay0+b25Db250ZXh0TG9zdCgpOworICAgICAgICAgICAgbV9jb250ZXh0UmVz
ZXRTdGF0dXMgPSByZWFzb25Gb3JSZXNldDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVh
c29uRm9yUmVzZXQ7CisgICAgfQorCisgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7CisgICAgcmV0dXJuIGZhbHNlOworfQorCit2b2lkIEV4dGVu
c2lvbnMzRE9wZW5HTEVTOjpzZXRFWFRDb250ZXh0TG9zdENhbGxiYWNrKFBhc3NPd25QdHI8R3Jh
cGhpY3NDb250ZXh0M0Q6OkNvbnRleHRMb3N0Q2FsbGJhY2s+IGNhbGxiYWNrKQoreworICAgIG1f
Y29udGV4dExvc3RDYWxsYmFjayA9IGNhbGxiYWNrOworfQorCit2b2lkIEV4dGVuc2lvbnMzRE9w
ZW5HTEVTOjpyZWFkblBpeGVsc0VYVChpbnQgeCwgaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0Mz
RHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBHQzNEc2l6ZWkg
YnVmU2l6ZSwgdm9pZCAqZGF0YSkKK3sKKyAgICBpZiAobV9nbFJlYWRuUGl4ZWxzRVhUKSB7Cisg
ICAgICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgICAgIC8vIEZJWE1F
OiByZW1vdmUgdGhlIHR3byBnbEZsdXNoIGNhbGxzIHdoZW4gdGhlIGRyaXZlciBidWcgaXMgZml4
ZWQsIGkuZS4sCisgICAgICAgIC8vIGFsbCBwcmV2aW91cyByZW5kZXJpbmcgY2FsbHMgc2hvdWxk
IGJlIGRvbmUgYmVmb3JlIHJlYWRpbmcgcGl4ZWxzLgorICAgICAgICA6OmdsRmx1c2goKTsKKwor
ICAgICAgICAvLyBGSVhNRTogSWYgbm9uLUJsYWNrQmVycnkgcGxhdGZvcm1zIHVzZSB0aGlzLCB0
aGV5IHdpbGwgbmVlZCB0byBpbXBsZW1lbnQKKyAgICAgICAgLy8gdGhlaXIgYW50aS1hbGlhc2lu
ZyBjb2RlIGhlcmUuCisgICAgICAgIG1fZ2xSZWFkblBpeGVsc0VYVCh4LCB5LCB3aWR0aCwgaGVp
Z2h0LCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUsIGRhdGEpOworICAgICAgICByZXR1cm47CisgICAg
fQorCisgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElP
Tik7Cit9CisKK3ZvaWQgRXh0ZW5zaW9uczNET3BlbkdMRVM6OmdldG5Vbmlmb3JtZnZFWFQoR0Mz
RHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQzNEc2l6ZWkgYnVmU2l6ZSwgZmxvYXQgKnBh
cmFtcykKK3sKKyAgICBpZiAobV9nbEdldG5Vbmlmb3JtZnZFWFQpIHsKKyAgICAgICAgbV9jb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICAgICAgbV9nbEdldG5Vbmlmb3JtZnZFWFQo
cHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIHBhcmFtcyk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKK30KKwordm9pZCBFeHRlbnNpb25zM0RPcGVuR0xFUzo6Z2V0blVuaWZvcm1pdkVYVChH
QzNEdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDM0RzaXplaSBidWZTaXplLCBpbnQgKnBh
cmFtcykKK3sKKyAgICBpZiAobV9nbEdldG5Vbmlmb3JtaXZFWFQpIHsKKyAgICAgICAgbV9jb250
ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICAgICAgbV9nbEdldG5Vbmlmb3JtaXZFWFQo
cHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIHBhcmFtcyk7CisgICAgICAgIHJldHVybjsKKyAg
ICB9CisKKyAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFU
SU9OKTsKK30KIAogYm9vbCBFeHRlbnNpb25zM0RPcGVuR0xFUzo6c3VwcG9ydHNFeHRlbnNpb24o
Y29uc3QgU3RyaW5nJiBuYW1lKQogewpAQCAtMTUxLDYgKzIyNiwxMSBAQCBib29sIEV4dGVuc2lv
bnMzRE9wZW5HTEVTOjpzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmIG5hbWUpCiAgICAg
ICAgICAgICBtX2dsRnJhbWVidWZmZXJUZXh0dXJlMkRNdWx0aXNhbXBsZUlNRyA9IHJlaW50ZXJw
cmV0X2Nhc3Q8UEZOR0xGUkFNRUJVRkZFUlRFWFRVUkUyRE1VTFRJU0FNUExFSU1HPihlZ2xHZXRQ
cm9jQWRkcmVzcygiZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRE11bHRpc2FtcGxlSU1HIikpOwogICAg
ICAgICAgICAgbV9nbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUlNRyA9IHJlaW50ZXJw
cmV0X2Nhc3Q8UEZOR0xSRU5ERVJCVUZGRVJTVE9SQUdFTVVMVElTQU1QTEVJTUc+KGVnbEdldFBy
b2NBZGRyZXNzKCJnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUlNRyIpKTsKICAgICAg
ICAgICAgIG1fc3VwcG9ydHNJTUdNdWx0aXNhbXBsZWRSZW5kZXJUb1RleHR1cmUgPSB0cnVlOwor
ICAgICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gIkdMX0VYVF9yb2J1c3RuZXNzIiAmJiAhbV9nbEdl
dEdyYXBoaWNzUmVzZXRTdGF0dXNFWFQpIHsKKyAgICAgICAgICAgIG1fZ2xHZXRHcmFwaGljc1Jl
c2V0U3RhdHVzRVhUID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFVEdSQVBISUNTUkVTRVRTVEFU
VVNFWFRQUk9DPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVzRVhU
IikpOworICAgICAgICAgICAgbV9nbFJlYWRuUGl4ZWxzRVhUID0gcmVpbnRlcnByZXRfY2FzdDxQ
Rk5HTFJFQUROUElYRUxTRVhUUFJPQz4oZWdsR2V0UHJvY0FkZHJlc3MoImdsUmVhZG5QaXhlbHNF
WFQiKSk7CisgICAgICAgICAgICBtX2dsR2V0blVuaWZvcm1mdkVYVCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8UEZOR0xHRVROVU5JRk9STUZWRVhUUFJPQz4oZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0blVu
aWZvcm1mdkVYVCIpKTsKKyAgICAgICAgICAgIG1fZ2xHZXRuVW5pZm9ybWl2RVhUID0gcmVpbnRl
cnByZXRfY2FzdDxQRk5HTEdFVE5VTklGT1JNSVZFWFRQUk9DPihlZ2xHZXRQcm9jQWRkcmVzcygi
Z2xHZXRuVW5pZm9ybWl2RVhUIikpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5n
bC9FeHRlbnNpb25zM0RPcGVuR0xFUy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTEVTLmgKaW5kZXggZmNmNzJkNmI1ZTM4ZDc2Mjc4
MWI0NWQ4ZThhODQ4MDgwYmE1MjZjYy4uMTg4NTg4MGYyODdmNWVmZDdjODNiNGFlNTgyNjFiZmM5
Y2M0MDZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnMzRE9wZW5HTEVTLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTEVTLmgKQEAgLTM4LDYgKzM4LDMxIEBA
CiAjZGVmaW5lIFBGTkdMUkVOREVSQlVGRkVSU1RPUkFHRU1VTFRJU0FNUExFSU1HIFBGTkdMUkVO
REVSQlVGRkVSU1RPUkFHRU1VTFRJU0FNUExFSU1HUFJPQwogI2VuZGlmCiAKKyNpZm5kZWYgR0xf
RVhUX3JvYnVzdG5lc3MKKy8qIHJldXNlIEdMX05PX0VSUk9SICovCisjZGVmaW5lIEdMX0dVSUxU
WV9DT05URVhUX1JFU0VUX0VYVCAweDgyNTMKKyNkZWZpbmUgR0xfSU5OT0NFTlRfQ09OVEVYVF9S
RVNFVF9FWFQgMHg4MjU0CisjZGVmaW5lIEdMX1VOS05PV05fQ09OVEVYVF9SRVNFVF9FWFQgMHg4
MjU1CisjZGVmaW5lIEdMX0NPTlRFWFRfUk9CVVNUX0FDQ0VTU19FWFQgMHg5MEYzCisjZGVmaW5l
IEdMX1JFU0VUX05PVElGSUNBVElPTl9TVFJBVEVHWV9FWFQgMHg4MjU2CisjZGVmaW5lIEdMX0xP
U0VfQ09OVEVYVF9PTl9SRVNFVF9FWFQgMHg4MjUyCisjZGVmaW5lIEdMX05PX1JFU0VUX05PVElG
SUNBVElPTl9FWFQgMHg4MjYxCisjZW5kaWYKKworI2lmbmRlZiBHTF9FWFRfcm9idXN0bmVzcwor
I2RlZmluZSBHTF9FWFRfcm9idXN0bmVzcyAxCisjaWZkZWYgR0xfR0xFWFRfUFJPVE9UWVBFUwor
R0xfQVBJQ0FMTCBHQzNEZW51bSBHTF9BUElFTlRSWSBnbEdldEdyYXBoaWNzUmVzZXRTdGF0dXNF
WFQodm9pZCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xSZWFkblBpeGVsc0VYVChH
TGludCB4LCBHTGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0Rl
bnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgR0MzRHNpemVpIGJ1ZlNpemUsIHZvaWQgKmRhdGEp
OworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0blVuaWZvcm1mdkVYVChHTHVpbnQg
cHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdDM0RzaXplaSBidWZTaXplLCBmbG9hdCAqcGFyYW1z
KTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldG5Vbmlmb3JtaXZFWFQoR0x1aW50
IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHQzNEc2l6ZWkgYnVmU2l6ZSwgR0xpbnQgKnBhcmFt
cyk7CisjZW5kaWYKK3R5cGVkZWYgR0MzRGVudW0gKEdMX0FQSUVOVFJZUCBQRk5HTEdFVEdSQVBI
SUNTUkVTRVRTVEFUVVNFWFRQUk9DKSAodm9pZCk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZ
UCBQRk5HTFJFQUROUElYRUxTRVhUUFJPQykgKEdMaW50IHgsIEdMaW50IHksIEdDM0RzaXplaSB3
aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBlLCBH
QzNEc2l6ZWkgYnVmU2l6ZSwgdm9pZCAqZGF0YSk7Cit0eXBlZGVmIHZvaWQgKEdMX0FQSUVOVFJZ
UCBQRk5HTEdFVE5VTklGT1JNRlZFWFRQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0
aW9uLCBHQzNEc2l6ZWkgYnVmU2l6ZSwgZmxvYXQgKnBhcmFtcyk7Cit0eXBlZGVmIHZvaWQgKEdM
X0FQSUVOVFJZUCBQRk5HTEdFVE5VTklGT1JNSVZFWFRQUk9DKSAoR0x1aW50IHByb2dyYW0sIEdM
aW50IGxvY2F0aW9uLCBHQzNEc2l6ZWkgYnVmU2l6ZSwgR0xpbnQgKnBhcmFtcyk7CisjZW5kaWYK
KwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBFeHRlbnNpb25zM0RPcGVuR0xFUyA6IHB1
YmxpYyBFeHRlbnNpb25zM0RPcGVuR0xDb21tb24gewpAQCAtNTcsNiArODIsMTUgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgR0MzRGJvb2xlYW4gaXNWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybTNET2Jq
ZWN0KTsKICAgICB2aXJ0dWFsIHZvaWQgYmluZFZlcnRleEFycmF5T0VTKFBsYXRmb3JtM0RPYmpl
Y3QpOwogCisgICAgLy8gRVhUIFJvYnVzdG5lc3MgLSByZXNldAorICAgIHZpcnR1YWwgaW50IGdl
dEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKTsKKyAgICB2b2lkIHNldEVYVENvbnRleHRMb3N0Q2Fs
bGJhY2soUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQzRDo6Q29udGV4dExvc3RDYWxsYmFjaz4p
OworCisgICAgLy8gRVhUIFJvYnVzdG5lc3MgLSBldGMKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZG5Q
aXhlbHNFWFQoaW50IHgsIGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQs
IEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgR0MzRHNpemVpIGJ1ZlNpemUsIHZvaWQg
KmRhdGEpOworICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2RVhUKEdDM0R1aW50IHByb2dy
YW0sIGludCBsb2NhdGlvbiwgR0MzRHNpemVpIGJ1ZlNpemUsIGZsb2F0ICpwYXJhbXMpOworICAg
IHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDM0R1aW50IHByb2dyYW0sIGludCBsb2Nh
dGlvbiwgR0MzRHNpemVpIGJ1ZlNpemUsIGludCAqcGFyYW1zKTsKKwogcHJvdGVjdGVkOgogICAg
IC8vIFRoaXMgY2xhc3Mgb25seSBuZWVkcyB0byBiZSBpbnN0YW50aWF0ZWQgYnkgR3JhcGhpY3ND
b250ZXh0M0QgaW1wbGVtZW50YXRpb25zLgogICAgIGZyaWVuZCBjbGFzcyBHcmFwaGljc0NvbnRl
eHQzRDsKQEAgLTY1LDYgKzk5LDggQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgYm9vbCBzdXBw
b3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmKTsKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRFeHRl
bnNpb25zKCk7CiAKKyAgICBHQzNEZW51bSBtX2NvbnRleHRSZXNldFN0YXR1czsKKwogICAgIGJv
b2wgbV9zdXBwb3J0c09FU3ZlcnRleEFycmF5T2JqZWN0OwogICAgIGJvb2wgbV9zdXBwb3J0c0lN
R011bHRpc2FtcGxlZFJlbmRlclRvVGV4dHVyZTsKIApAQCAtNzQsNiArMTEwLDEyIEBAIHByb3Rl
Y3RlZDoKICAgICBQRk5HTERFTEVURVZFUlRFWEFSUkFZU09FU1BST0MgbV9nbERlbGV0ZVZlcnRl
eEFycmF5c09FUzsKICAgICBQRk5HTEdFTlZFUlRFWEFSUkFZU09FU1BST0MgbV9nbEdlblZlcnRl
eEFycmF5c09FUzsKICAgICBQRk5HTElTVkVSVEVYQVJSQVlPRVNQUk9DIG1fZ2xJc1ZlcnRleEFy
cmF5T0VTOworICAgIFBGTkdMR0VUR1JBUEhJQ1NSRVNFVFNUQVRVU0VYVFBST0MgbV9nbEdldEdy
YXBoaWNzUmVzZXRTdGF0dXNFWFQ7CisgICAgUEZOR0xSRUFETlBJWEVMU0VYVFBST0MgbV9nbFJl
YWRuUGl4ZWxzRVhUOworICAgIFBGTkdMR0VUTlVOSUZPUk1GVkVYVFBST0MgbV9nbEdldG5Vbmlm
b3JtZnZFWFQ7CisgICAgUEZOR0xHRVROVU5JRk9STUlWRVhUUFJPQyBtX2dsR2V0blVuaWZvcm1p
dkVYVDsKKworICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQzRDo6Q29udGV4dExvc3RDYWxsYmFj
az4gbV9jb250ZXh0TG9zdENhbGxiYWNrOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157498</attachid>
            <date>2012-08-09 11:37:23 -0700</date>
            <delta_ts>2012-08-09 11:42:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93379-20120809143539.patch</filename>
            <type>text/plain</type>
            <size>28632</size>
            <attacher name="Joshua Netterfield">jnetterfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1MTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2IyYTM5M2ZjNDYwMjNk
NDUzZWY5MzdjMjk4MGU0NWM4NTQwNDVlNy4uNzNlNzUzOGE0OTVmOTZkNjZjZjY4MWM1MGY0OGVh
ODRlZTJkYjQ3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDEyLTA4LTA5ICBKb3No
dWEgTmV0dGVyZmllbGQgIDxqbmV0dGVyZmllbGRAcmltLmNvbT4KKworICAgICAgICBbV2ViR0xd
IEFkZCBzdXBwb3J0IGZvciBFWFRfcm9idXN0bmVzcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTMzNzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUYWtlIGFkdmFudGFnZSBvZiBFWFQgcm9idXN0bmVzcyBp
biBXZWJLaXQuCisKKyAgICAgICAgVGhpcyBjb21taXQgbWFrZXMgV2ViS2l0IHVzZSByZWFkblBp
eGVsc0VYVCwgZ2V0blVuaWZvcm1mdkVYVCBhbmQKKyAgICAgICAgZ2V0blVuaWZvcm1pdkVYVCBp
bnN0ZWFkIG9mIHJlYWRQaXhlbHMsIGdldFVuaWZvcm1mdiBhbmQgZ2V0VW5pZm9ybWl2CisgICAg
ICAgIHdoZW4gcG9zc2libGUsIGFuZCBzZXRzIHVwIHRoZSByZXNldCBub3RpZmljYXRpb24gYmVo
YXZpb3VyIGZvcgorICAgICAgICBHTEVTIHBsYXRmb3Jtcy4KKworICAgICAgICBUaGUgcmVzZXQg
YmVoYXZpb3VyIGhhcyBub3QgeWV0IGJlZW4gaW1wbGVtZW50ZWQgaW4gdGhlIEJsYWNrQmVycnkK
KyAgICAgICAgY29tcG9zaXRpbmcgdGhyZWFkLCBzbyBmb3Igbm93IG9uIEJsYWNrQmVycnkgd2Ug
anVzdCBhYm9ydCB3aGVuCisgICAgICAgIHRoZSBjb250ZXh0IGhhcyBiZWVuIHJlc2V0LiBUaGlz
IHByZXZlbnRzIHVuZGVmaW5lZCBiZWhhdmlvdXIsIGJ1dAorICAgICAgICBjYW4gYmUgaW1wcm92
ZWQgaW4gdGhlIGZ1dHVyZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYXJlIG5lZWRlZCBiZWNh
dXNlIG5vIG5ldyBmdW5jdGlvbmFsaXR5IGlzIGludHJvZHVjZWQuCisgICAgICAgIFN1cHBvcnQg
Zm9yIEFSQiByb2J1c3RuZXNzIHJlc2V0IG5vdGlmaWNhdGlvbiBiZWhhdmlvdXIgaXMgYWxyZWFk
eQorICAgICAgICBpbiBXZWJLaXQsIGFuZCBFWFQgcm9idXN0bmVzcycgcmVzZXQgbm90aWZjYXRp
b24gYmVoYXZpb3VyIGlzIHRoZQorICAgICAgICBzYW1lLiByZWFkblBpeGVsc0VYVCByZXBsYWNl
cyBXZWJLaXQncyBleGlzdGluZyBtZWNoYW5pc21zIG9mCisgICAgICAgIHByZXZlbnRpbmcgYnVm
ZmVyIG92ZXJmbG93cy4KKworICAgICAgICAqIGh0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29u
dGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkdMUmVu
ZGVyaW5nQ29udGV4dDo6c2V0dXBGbGFncyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldFVuaWZvcm0pOgorICAgICAgICAoV2ViQ29yZTo6V2ViR0xSZW5kZXJp
bmdDb250ZXh0OjpyZWFkUGl4ZWxzKToKKyAgICAgICAgKiBodG1sL2NhbnZhcy9XZWJHTFJlbmRl
cmluZ0NvbnRleHQuaDoKKyAgICAgICAgKFdlYkdMUmVuZGVyaW5nQ29udGV4dCk6CisgICAgICAg
ICogcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9FeHRlbnNpb25zM0RDaHJvbWl1bS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zM0RDaHJvbWl1bTo6cmVhZG5QaXhlbHNFWFQpOgor
ICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zM0RDaHJvbWl1
bTo6Z2V0blVuaWZvcm1mdkVYVCk6CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zM0RDaHJv
bWl1bTo6Z2V0blVuaWZvcm1pdkVYVCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvRXh0
ZW5zaW9uczNELmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9HcmFw
aGljc0NvbnRleHQzREJsYWNrQmVycnkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3ND
b250ZXh0M0Q6OnNldENvbnRleHRMb3N0Q2FsbGJhY2spOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpM
YXllclJlbmRlcmVyOjpMYXllclJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkxheWVyUmVu
ZGVyZXI6Om1ha2VDb250ZXh0Q3VycmVudCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
YmxhY2tiZXJyeS9MYXllclJlbmRlcmVyLmg6CisgICAgICAgIChMYXllclJlbmRlcmVyKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9FeHRlbnNpb25zM0RDaHJvbWl1bS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xD
b21tb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uOjpy
ZWFkblBpeGVsc0VYVCk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnMzRE9wZW5HTENvbW1vbjo6Z2V0blVuaWZvcm1mdkVYVCk6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zM0RPcGVuR0xDb21tb246OmdldG5Vbmlmb3JtaXZFWFQpOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xDb21tb24uaDoK
KyAgICAgICAgKEV4dGVuc2lvbnMzRE9wZW5HTENvbW1vbik6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTEVTLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkV4dGVuc2lvbnMzRE9wZW5HTEVTOjpFeHRlbnNpb25zM0RPcGVuR0xFUyk6CisgICAgICAg
IChXZWJDb3JlOjpFeHRlbnNpb25zM0RPcGVuR0xFUzo6Z2V0R3JhcGhpY3NSZXNldFN0YXR1c0FS
Qik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnMzRE9w
ZW5HTEVTOjpzZXRFWFRDb250ZXh0TG9zdENhbGxiYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkV4
dGVuc2lvbnMzRE9wZW5HTEVTOjpyZWFkblBpeGVsc0VYVCk6CisgICAgICAgIChXZWJDb3JlOjpF
eHRlbnNpb25zM0RPcGVuR0xFUzo6Z2V0blVuaWZvcm1mdkVYVCk6CisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zM0RPcGVuR0xFUzo6Z2V0blVuaWZvcm1pdkVYVCk6CisgICAgICAgIChXZWJD
b3JlOjpFeHRlbnNpb25zM0RPcGVuR0xFUzo6c3VwcG9ydHNFeHRlbnNpb24pOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xFUy5oOgorICAgICAg
ICAoRXh0ZW5zaW9uczNET3BlbkdMRVMpOgorCiAyMDEyLTA4LTA4ICBIYXlhdG8gSXRvICA8aGF5
YXRvQGNocm9taXVtLm9yZz4KIAogICAgICAgICBFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoU2lt
dWxhdGVkQ2xpY2sgc2hvdWxkIG5vdCByZXVzZSB0aGUgc2FtZSBFdmVudERpc3BhdGNoZXIgaW5z
dGFuY2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJL
aXQvQ2hhbmdlTG9nCmluZGV4IDE4OTU2MWY4MjQyMTE3MjZhN2I4Y2RhNDAxMjk0YWU4NzNhZTIz
YzIuLjM3YWI1YTUxMDc0YzMzMjg0ZDk2OGRjNGY0MmZiOTUxZTY5NTkxZjYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTIgQEAKKzIwMTItMDgtMDkgIEpvc2h1YSBOZXR0ZXJmaWVsZCAgPGpuZXR0ZXJm
aWVsZEByaW0uY29tPgorCisgICAgICAgIFtXZWJHTF0gQWRkIHN1cHBvcnQgZm9yIEVYVF9yb2J1
c3RuZXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
MzM3OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
Q01ha2VMaXN0cy50eHQ6IEJ1aWxkIHN5c3RlbSBhZGFwdGF0aW9uLgorCiAyMDEyLTA4LTA4ICBB
bnRvbmlvIEdvbWVzICA8YWdvbWVzQHJpbS5jb20+CiAKICAgICAgICAgW0JsYWNrQmVycnldIFRp
ZSB1cCB0aGUgc2Nyb2xsaW5nIG1hY2hpbmVyeSB0byB0aGUgZ3JhcGhpY3MgdHJlZSB3aGVuIGFw
cGxpY2FibGUgZm9yIGluLXJlZ2lvbiBzY3JvbGwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCmluZGV4IGMwYWJmMGZiYTFjZWFj
NDQyZDAwNDFiMTAwMzRhZTEyOWIzOGM1N2EuLjFlZTYyMTVmZDAzMmNkYjVlMTkxODg5MzU0N2Rk
MGIwNDhjZTMyYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdM
UmVuZGVyaW5nQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2Vi
R0xSZW5kZXJpbmdDb250ZXh0LmNwcApAQCAtNTQ4LDYgKzU0OCw3IEBAIHZvaWQgV2ViR0xSZW5k
ZXJpbmdDb250ZXh0OjpzZXR1cEZsYWdzKCkKICAgICAgICAgbV9pc0dMRVMyTlBPVFN0cmljdCA9
ICFtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+aXNFbmFibGVkKCJHTF9BUkJfdGV4dHVyZV9u
b25fcG93ZXJfb2ZfdHdvIik7CiAgICAgICAgIG1faXNEZXB0aFN0ZW5jaWxTdXBwb3J0ZWQgPSBt
X2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+aXNFbmFibGVkKCJHTF9FWFRfcGFja2VkX2RlcHRo
X3N0ZW5jaWwiKTsKICAgICB9CisgICAgbV9pc1JvYnVzdG5lc3NFWFRTdXBwb3J0ZWQgPSBtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKS0+aXNFbmFibGVkKCJHTF9FWFRfcm9idXN0bmVzcyIpOwog
fQogCiBib29sIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6YWxsb3dQcml2aWxlZ2VkRXh0ZW5zaW9u
cygpIGNvbnN0CkBAIC0yOTc1LDIxICsyOTc2LDMwIEBAIFdlYkdMR2V0SW5mbyBXZWJHTFJlbmRl
cmluZ0NvbnRleHQ6OmdldFVuaWZvcm0oV2ViR0xQcm9ncmFtKiBwcm9ncmFtLCBjb25zdCBXZWJH
CiAgICAgICAgICAgICAgICAgc3dpdGNoIChiYXNlVHlwZSkgewogICAgICAgICAgICAgICAgIGNh
c2UgR3JhcGhpY3NDb250ZXh0M0Q6OkZMT0FUOiB7CiAgICAgICAgICAgICAgICAgICAgIEdDM0Rm
bG9hdCB2YWx1ZVsxNl0gPSB7MH07Ci0gICAgICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0
VW5pZm9ybWZ2KG9iamVjdE9yWmVybyhwcm9ncmFtKSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICAg
ICAgICAgICAgICAgICAgaWYgKG1faXNSb2J1c3RuZXNzRVhUU3VwcG9ydGVkKQorICAgICAgICAg
ICAgICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmdldG5Vbmlmb3JtZnZF
WFQob2JqZWN0T3JaZXJvKHByb2dyYW0pLCBsb2NhdGlvbiwgMTYsIHZhbHVlKTsKKyAgICAgICAg
ICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRV
bmlmb3JtZnYob2JqZWN0T3JaZXJvKHByb2dyYW0pLCBsb2NhdGlvbiwgdmFsdWUpOwogICAgICAg
ICAgICAgICAgICAgICBpZiAobGVuZ3RoID09IDEpCiAgICAgICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gV2ViR0xHZXRJbmZvKHZhbHVlWzBdKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJu
IFdlYkdMR2V0SW5mbyhGbG9hdDMyQXJyYXk6OmNyZWF0ZSh2YWx1ZSwgbGVuZ3RoKSk7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OklO
VDogewogICAgICAgICAgICAgICAgICAgICBHQzNEaW50IHZhbHVlWzRdID0gezB9OwotICAgICAg
ICAgICAgICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm1pdihvYmplY3RPclplcm8ocHJvZ3Jh
bSksIGxvY2F0aW9uLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChtX2lzUm9idXN0
bmVzc0VYVFN1cHBvcnRlZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLT5nZXRuVW5pZm9ybWl2RVhUKG9iamVjdE9yWmVybyhwcm9ncmFtKSwgbG9j
YXRpb24sIDQsIHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAg
ICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtaXYob2JqZWN0T3JaZXJvKHByb2dyYW0p
LCBsb2NhdGlvbiwgdmFsdWUpOwogICAgICAgICAgICAgICAgICAgICBpZiAobGVuZ3RoID09IDEp
CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKHZhbHVlWzBdKTsK
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFdlYkdMR2V0SW5mbyhJbnQzMkFycmF5OjpjcmVh
dGUodmFsdWUsIGxlbmd0aCkpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBj
YXNlIEdyYXBoaWNzQ29udGV4dDNEOjpCT09MOiB7CiAgICAgICAgICAgICAgICAgICAgIEdDM0Rp
bnQgdmFsdWVbNF0gPSB7MH07Ci0gICAgICAgICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0VW5p
Zm9ybWl2KG9iamVjdE9yWmVybyhwcm9ncmFtKSwgbG9jYXRpb24sIHZhbHVlKTsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKG1faXNSb2J1c3RuZXNzRVhUU3VwcG9ydGVkKQorICAgICAgICAgICAg
ICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmdldG5Vbmlmb3JtaXZFWFQo
b2JqZWN0T3JaZXJvKHByb2dyYW0pLCBsb2NhdGlvbiwgNCwgdmFsdWUpOworICAgICAgICAgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZv
cm1pdihvYmplY3RPclplcm8ocHJvZ3JhbSksIGxvY2F0aW9uLCB2YWx1ZSk7CiAgICAgICAgICAg
ICAgICAgICAgIGlmIChsZW5ndGggPiAxKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICBib29s
IGJvb2xWYWx1ZVsxNl0gPSB7MH07CiAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKHVuc2ln
bmVkIGogPSAwOyBqIDwgbGVuZ3RoOyBqKyspCkBAIC0zMjkwLDI2ICszMzAwLDM0IEBAIHZvaWQg
V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpyZWFkUGl4ZWxzKEdDM0RpbnQgeCwgR0MzRGludCB5LCBH
QzNEc2l6ZWkgd2lkdGgsIEdDCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgLy8gQ2FsY3Vs
YXRlIGFycmF5IHNpemUsIHRha2luZyBpbnRvIGNvbnNpZGVyYXRpb24gb2YgUEFDS19BTElHTk1F
TlQuCi0gICAgdW5zaWduZWQgaW50IHRvdGFsQnl0ZXNSZXF1aXJlZDsKLSAgICB1bnNpZ25lZCBp
bnQgcGFkZGluZzsKLSAgICBHQzNEZW51bSBlcnJvciA9IG1fY29udGV4dC0+Y29tcHV0ZUltYWdl
U2l6ZUluQnl0ZXMoZm9ybWF0LCB0eXBlLCB3aWR0aCwgaGVpZ2h0LCBtX3BhY2tBbGlnbm1lbnQs
ICZ0b3RhbEJ5dGVzUmVxdWlyZWQsICZwYWRkaW5nKTsKLSAgICBpZiAoZXJyb3IgIT0gR3JhcGhp
Y3NDb250ZXh0M0Q6Ok5PX0VSUk9SKSB7Ci0gICAgICAgIHN5bnRoZXNpemVHTEVycm9yKGVycm9y
LCAicmVhZFBpeGVscyIsICJpbnZhbGlkIGRpbWVuc2lvbnMiKTsKLSAgICAgICAgcmV0dXJuOwot
ICAgIH0KLSAgICBpZiAocGl4ZWxzLT5ieXRlTGVuZ3RoKCkgPCB0b3RhbEJ5dGVzUmVxdWlyZWQp
IHsKLSAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoR3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURf
T1BFUkFUSU9OLCAicmVhZFBpeGVscyIsICJBcnJheUJ1ZmZlclZpZXcgbm90IGxhcmdlIGVub3Vn
aCBmb3IgZGltZW5zaW9ucyIpOwotICAgICAgICByZXR1cm47CisgICAgdW5zaWduZWQgaW50IHRv
dGFsQnl0ZXNSZXF1aXJlZCA9IDA7CisgICAgdW5zaWduZWQgaW50IHBhZGRpbmcgPSAwOworICAg
IGlmICghbV9pc1JvYnVzdG5lc3NFWFRTdXBwb3J0ZWQpIHsKKyAgICAgICAgR0MzRGVudW0gZXJy
b3IgPSBtX2NvbnRleHQtPmNvbXB1dGVJbWFnZVNpemVJbkJ5dGVzKGZvcm1hdCwgdHlwZSwgd2lk
dGgsIGhlaWdodCwgbV9wYWNrQWxpZ25tZW50LCAmdG90YWxCeXRlc1JlcXVpcmVkLCAmcGFkZGlu
Zyk7CisgICAgICAgIGlmIChlcnJvciAhPSBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1IpIHsK
KyAgICAgICAgICAgIHN5bnRoZXNpemVHTEVycm9yKGVycm9yLCAicmVhZFBpeGVscyIsICJpbnZh
bGlkIGRpbWVuc2lvbnMiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgICAg
ICBpZiAocGl4ZWxzLT5ieXRlTGVuZ3RoKCkgPCB0b3RhbEJ5dGVzUmVxdWlyZWQpIHsKKyAgICAg
ICAgICAgIHN5bnRoZXNpemVHTEVycm9yKEdyYXBoaWNzQ29udGV4dDNEOjpJTlZBTElEX09QRVJB
VElPTiwgInJlYWRQaXhlbHMiLCAiQXJyYXlCdWZmZXJWaWV3IG5vdCBsYXJnZSBlbm91Z2ggZm9y
IGRpbWVuc2lvbnMiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogICAgIH0KKwog
ICAgIGNsZWFySWZDb21wb3NpdGVkKCk7CiAgICAgdm9pZCogZGF0YSA9IHBpeGVscy0+YmFzZUFk
ZHJlc3MoKTsKIAogICAgIHsKICAgICAgICAgU2NvcGVkRHJhd2luZ0J1ZmZlckJpbmRlciBiaW5k
ZXIobV9kcmF3aW5nQnVmZmVyLmdldCgpLCBtX2ZyYW1lYnVmZmVyQmluZGluZy5nZXQoKSk7Ci0g
ICAgICAgIG1fY29udGV4dC0+cmVhZFBpeGVscyh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQs
IHR5cGUsIGRhdGEpOworICAgICAgICBpZiAobV9pc1JvYnVzdG5lc3NFWFRTdXBwb3J0ZWQpCisg
ICAgICAgICAgICBtX2NvbnRleHQtPmdldEV4dGVuc2lvbnMoKS0+cmVhZG5QaXhlbHNFWFQoeCwg
eSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBwaXhlbHMtPmJ5dGVMZW5ndGgoKSwgZGF0
YSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIG1fY29udGV4dC0+cmVhZFBpeGVscyh4LCB5
LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGRhdGEpOwogICAgIH0KIAogI2lmIE9TKERB
UldJTikgfHwgT1MoUU5YKQorICAgIGlmIChtX2lzUm9idXN0bmVzc0VYVFN1cHBvcnRlZCkgLy8g
d2UgaGF2ZW4ndCBjb21wdXRlZCBwYWRkaW5nCisgICAgICAgIG1fY29udGV4dC0+Y29tcHV0ZUlt
YWdlU2l6ZUluQnl0ZXMoZm9ybWF0LCB0eXBlLCB3aWR0aCwgaGVpZ2h0LCBtX3BhY2tBbGlnbm1l
bnQsICZ0b3RhbEJ5dGVzUmVxdWlyZWQsICZwYWRkaW5nKTsKICAgICAvLyBGSVhNRTogcmVtb3Zl
IHRoaXMgc2VjdGlvbiB3aGVuIEdMIGRyaXZlciBidWcgb24gTWFjIEFORCB0aGUgR0xFUyBkcml2
ZXIgYnVnCiAgICAgLy8gb24gUUMgJiBJbWFnaW5hdGlvbiBRTlggaXMgZml4ZWQsIGkuZS4sIHdo
ZW4gYWxwaGEgaXMgb2ZmLCByZWFkUGl4ZWxzIHNob3VsZAogICAgIC8vIHNldCBhbHBoYSB0byAy
NTUgaW5zdGVhZCBvZiAwLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMv
V2ViR0xSZW5kZXJpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJH
TFJlbmRlcmluZ0NvbnRleHQuaAppbmRleCA0Yzg5MGVhMjEwMmVhNmJiM2Y2Mzk2MmI5OTgzNzg4
NzhiZjBkMDhlLi5jNzJhYzU5MGEyNjkxMjEyZjQ2MDNiYTM3NWNlNjhhNTE4YTdmNDhmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQu
aApAQCAtNDk0LDYgKzQ5NCw3IEBAIHB1YmxpYzoKICAgICBib29sIG1faXNFcnJvckdlbmVyYXRl
ZE9uT3V0T2ZCb3VuZHNBY2Nlc3NlczsKICAgICBib29sIG1faXNSZXNvdXJjZVNhZmU7CiAgICAg
Ym9vbCBtX2lzRGVwdGhTdGVuY2lsU3VwcG9ydGVkOworICAgIGJvb2wgbV9pc1JvYnVzdG5lc3NF
WFRTdXBwb3J0ZWQ7CiAKICAgICBib29sIG1fc3ludGhlc2l6ZWRFcnJvcnNUb0NvbnNvbGU7CiAg
ICAgaW50IG1fbnVtR0xFcnJvcnNUb0NvbnNvbGVBbGxvd2VkOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vc3VwcG9ydC9FeHRlbnNpb25zM0RDaHJvbWl1bS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L0V4dGVuc2lvbnMz
RENocm9taXVtLmNwcAppbmRleCBlN2IxYTIyY2Y5Yjg5YzU3MDJiODJlODU1MDUyNDQwOTQyM2Ri
ODcxLi5iZmMxNDVkZGU0ODRkZjU4MjdjNzI2OWI5ZDljOGM2ZmMwMmVhNDdjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0L0V4dGVuc2lvbnMzRENo
cm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9zdXBwb3J0
L0V4dGVuc2lvbnMzRENocm9taXVtLmNwcApAQCAtMjksNiArMjksNyBAQAogCiAjaW5jbHVkZSAi
R3JhcGhpY3NDb250ZXh0M0QuaCIKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRFByaXZhdGUu
aCIKKyNpbmNsdWRlICJOb3RJbXBsZW1lbnRlZC5oIgogI2luY2x1ZGUgPHB1YmxpYy9XZWJHcmFw
aGljc0NvbnRleHQzRC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xODEsNCArMTgyLDIw
IEBAIHZvaWQgRXh0ZW5zaW9uczNEQ2hyb21pdW06OnNoYWxsb3dGbHVzaENIUk9NSVVNKCkKICAg
ICByZXR1cm4gbV9wcml2YXRlLT53ZWJDb250ZXh0KCktPnNoYWxsb3dGbHVzaENIUk9NSVVNKCk7
CiB9CiAKK3ZvaWQgRXh0ZW5zaW9uczNEQ2hyb21pdW06OnJlYWRuUGl4ZWxzRVhUKGludCB4LCBp
bnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQs
IEdDM0RlbnVtIHR5cGUsIEdDM0RzaXplaSBidWZTaXplLCB2b2lkICpkYXRhKQoreworICAgIG5v
dEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRXh0ZW5zaW9uczNEQ2hyb21pdW06OmdldG5Vbmlm
b3JtZnZFWFQoR0MzRHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQzNEc2l6ZWkgYnVmU2l6
ZSwgZmxvYXQgKnBhcmFtcykKK3sKKyAgICBub3RJbXBsZW1lbnRlZCgpOworfQorCit2b2lkIEV4
dGVuc2lvbnMzRENocm9taXVtOjpnZXRuVW5pZm9ybWl2RVhUKEdDM0R1aW50IHByb2dyYW0sIGlu
dCBsb2NhdGlvbiwgR0MzRHNpemVpIGJ1ZlNpemUsIGludCAqcGFyYW1zKQoreworICAgIG5vdElt
cGxlbWVudGVkKCk7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvRXh0ZW5zaW9uczNELmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9FeHRlbnNpb25zM0QuaAppbmRleCA3Y2Y5NDIwZmNh
MjNhMmFjMDRjYTJhNWFlYjVkNjczYjBlZWY4ZWUzLi4wNWYzMGZkNDcxZjc4NWVmNjUyODZhNjdk
YmJjNTRiNjQwYjEyZTM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9FeHRlbnNpb25zM0QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9FeHRlbnNpb25zM0QuaApAQCAtMTc3LDYgKzE3NywxMSBAQCBwdWJsaWM6CiAKICAgICAvLyBH
TF9DSFJPTUlVTV9jb3B5X3RleHR1cmUKICAgICB2aXJ0dWFsIHZvaWQgY29weVRleHR1cmVDSFJP
TUlVTShHQzNEZW51bSwgUGxhdGZvcm0zRE9iamVjdCwgUGxhdGZvcm0zRE9iamVjdCwgR0MzRGlu
dCwgR0MzRGVudW0pID0gMDsKKworICAgIC8vIEVYVCBSb2J1c3RuZXNzIC0gdXNlcyBnZXRHcmFw
aGljc1Jlc2V0U3RhdHVzQVJCCisgICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzRVhUKGludCB4
LCBpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3Jt
YXQsIEdDM0RlbnVtIHR5cGUsIEdDM0RzaXplaSBidWZTaXplLCB2b2lkICpkYXRhKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtZnZFWFQoR0MzRHVpbnQgcHJvZ3JhbSwgaW50IGxv
Y2F0aW9uLCBHQzNEc2l6ZWkgYnVmU2l6ZSwgZmxvYXQgKnBhcmFtcykgPSAwOworICAgIHZpcnR1
YWwgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDM0R1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwg
R0MzRHNpemVpIGJ1ZlNpemUsIGludCAqcGFyYW1zKSA9IDA7CiB9OwogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9i
bGFja2JlcnJ5L0dyYXBoaWNzQ29udGV4dDNEQmxhY2tCZXJyeS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0dyYXBoaWNzQ29udGV4dDNEQmxhY2tCZXJy
eS5jcHAKaW5kZXggMzY5OGZkMjVmMTI5YzJjNDA3NmQ1MzlhODNlYjlhMmRhNjFiN2RlMy4uMjM0
ZTY4ZjVkYjdmNTdhYzE2ZWVlZDU0ZDVhY2MzMTkzMmI2ZDVkZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9HcmFwaGljc0NvbnRleHQzREJs
YWNrQmVycnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNr
YmVycnkvR3JhcGhpY3NDb250ZXh0M0RCbGFja0JlcnJ5LmNwcApAQCAtMzg4LDggKzM4OCw5IEBA
IHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnBhaW50VG9DYW52YXMoY29uc3QgdW5zaWduZWQgY2hh
ciogaW1hZ2VQaXhlbHMsIGludCBpbWFnCiAgICAgY29udGV4dC0+ZHJhd0ltYWdlKGJpdG1hcElt
YWdlLmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkc3QsIHNyYywgQ29tcG9zaXRlQ29weSwg
UmVzcGVjdEltYWdlT3JpZW50YXRpb24sIGZhbHNlKTsKIH0KIAotdm9pZCBHcmFwaGljc0NvbnRl
eHQzRDo6c2V0Q29udGV4dExvc3RDYWxsYmFjayhQYXNzT3duUHRyPENvbnRleHRMb3N0Q2FsbGJh
Y2s+KQordm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c2V0Q29udGV4dExvc3RDYWxsYmFjayhQYXNz
T3duUHRyPENvbnRleHRMb3N0Q2FsbGJhY2s+IGNhbGxiYWNrKQogeworICAgIHN0YXRpY19jYXN0
PEV4dGVuc2lvbnMzRE9wZW5HTEVTKj4oZ2V0RXh0ZW5zaW9ucygpKS0+c2V0RVhUQ29udGV4dExv
c3RDYWxsYmFjayhjYWxsYmFjayk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250ZXh0M0Q6OnNldEVy
cm9yTWVzc2FnZUNhbGxiYWNrKFBhc3NPd25QdHI8RXJyb3JNZXNzYWdlQ2FsbGJhY2s+KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXll
clJlbmRlcmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVy
cnkvTGF5ZXJSZW5kZXJlci5jcHAKaW5kZXggYjNjZTIzNTFiZmVhN2Q0MDE3YmFhMmIxMjk5ZmU4
ZDBhZDEyYWY3YS4uZGIyMThhNTRlOTk3NGNlZDRhNDI3Y2Y2NTlhMWU1YmZiOTRhMDAxNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXll
clJlbmRlcmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFj
a2JlcnJ5L0xheWVyUmVuZGVyZXIuY3BwCkBAIC00Myw2ICs0Myw3IEBACiAKICNpbmNsdWRlIDxC
bGFja0JlcnJ5UGxhdGZvcm1HcmFwaGljcy5oPgogI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9y
bUxvZy5oPgorI2luY2x1ZGUgPEVHTC9lZ2wuaD4KICNpbmNsdWRlIDxsaW1pdHM+CiAjaW5jbHVk
ZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC0xNTksOCArMTYwLDE1IEBAIExheWVyUmVuZGVy
ZXI6OkxheWVyUmVuZGVyZXIoR0xFUzJDb250ZXh0KiBjb250ZXh0KQogICAgICwgbV9jdXJyZW50
TGF5ZXJSZW5kZXJlclN1cmZhY2UoMCkKICAgICAsIG1fY2xlYXJTdXJmYWNlT25EcmF3TGF5ZXJz
KHRydWUpCiAgICAgLCBtX2NvbnRleHQoY29udGV4dCkKKyAgICAsIG1faXNSb2J1c3RuZXNzU3Vw
cG9ydGVkKGZhbHNlKQogICAgICwgbV9uZWVkc0NvbW1pdChmYWxzZSkKIHsKKyAgICBpZiAobWFr
ZUNvbnRleHRDdXJyZW50KCkpIHsKKyAgICAgICAgbV9pc1JvYnVzdG5lc3NTdXBwb3J0ZWQgPSBT
dHJpbmcocmVpbnRlcnByZXRfY2FzdDxjb25zdCBjaGFyKj4oOjpnbEdldFN0cmluZyhHTF9FWFRF
TlNJT05TKSkpLmNvbnRhaW5zKCJHTF9FWFRfcm9idXN0bmVzcyIpOworICAgICAgICBpZiAobV9p
c1JvYnVzdG5lc3NTdXBwb3J0ZWQpCisgICAgICAgICAgICBtX2dsR2V0R3JhcGhpY3NSZXNldFN0
YXR1c0VYVCA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRHUkFQSElDU1JFU0VUU1RBVFVTRVhU
UFJPQz4oZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVCIpKTsK
KyAgICB9CisKICAgICBmb3IgKGludCBpID0gMDsgaSA8IExheWVyRGF0YTo6TnVtYmVyT2ZMYXll
clByb2dyYW1TaGFkZXJzOyArK2kpCiAgICAgICAgIG1fbGF5ZXJQcm9ncmFtT2JqZWN0W2ldID0g
MDsKIApAQCAtOTk4LDcgKzEwMDYsMTQgQEAgdm9pZCBMYXllclJlbmRlcmVyOjp1cGRhdGVTY2lz
c29ySWZOZWVkZWQoY29uc3QgRmxvYXRSZWN0JiBjbGlwUmVjdCkKIAogYm9vbCBMYXllclJlbmRl
cmVyOjptYWtlQ29udGV4dEN1cnJlbnQoKQogewotICAgIHJldHVybiBtX2NvbnRleHQtPm1ha2VD
dXJyZW50KCk7CisgICAgYm9vbCByZXQgPSBtX2NvbnRleHQtPm1ha2VDdXJyZW50KCk7CisgICAg
aWYgKHJldCAmJiBtX2lzUm9idXN0bmVzc1N1cHBvcnRlZCkgeworICAgICAgICBpZiAobV9nbEdl
dEdyYXBoaWNzUmVzZXRTdGF0dXNFWFQoKSAhPSBHTF9OT19FUlJPUikgeworICAgICAgICAgICAg
QmxhY2tCZXJyeTo6UGxhdGZvcm06OmxvZ0Fsd2F5cyhCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6TG9n
TGV2ZWxDcml0aWNhbCwgIlJvYnVzdCBPcGVuR0wgY29udGV4dCBoYXMgYmVlbiByZXNldC4gQWJv
cnRpbmcuIik7CisgICAgICAgICAgICBDUkFTSCgpOworICAgICAgICB9CisgICAgfQorICAgIHJl
dHVybiByZXQ7CiB9CiAKIC8vIEJpbmRzIHRoZSBnaXZlbiBhdHRyaWJ1dGUgbmFtZSB0byBhIGNv
bW1vbiBsb2NhdGlvbiBhY3Jvc3MgYWxsIHByb2dyYW1zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXIuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlci5oCmlu
ZGV4IDQzNzkyN2JlZWFjOGEwNDg3YjQxNGVmNTQ3MDdmYjM0MTc2YTQ4ZWMuLjM1M2I3ZWNhODY4
YTMyZGFlNTFjN2I2ZmQxMjczMzJiY2U4ZmQwODIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlci5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlci5oCkBA
IC0yOSwxMiArMjksMTIgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotCiAjaWZuZGVmIExheWVy
UmVuZGVyZXJfaAogI2RlZmluZSBMYXllclJlbmRlcmVyX2gKIAogI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKIAorI2luY2x1ZGUgIkV4dGVuc2lvbnMzRE9wZW5HTEVTLmgiCiAjaW5j
bHVkZSAiSW50UmVjdC5oIgogI2luY2x1ZGUgIkxheWVyRGF0YS5oIgogI2luY2x1ZGUgIkxheWVy
RmlsdGVyUmVuZGVyZXIuaCIKQEAgLTIwNyw2ICsyMDcsOSBAQCBwcml2YXRlOgogCiAgICAgQmxh
Y2tCZXJyeTo6UGxhdGZvcm06OkdyYXBoaWNzOjpHTEVTMkNvbnRleHQqIG1fY29udGV4dDsKIAor
ICAgIGJvb2wgbV9pc1JvYnVzdG5lc3NTdXBwb3J0ZWQ7CisgICAgUEZOR0xHRVRHUkFQSElDU1JF
U0VUU1RBVFVTRVhUUFJPQyBtX2dsR2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVDsKKwogICAgIExh
eWVyUmVuZGVyaW5nUmVzdWx0cyBtX2xhc3RSZW5kZXJpbmdSZXN1bHRzOwogICAgIGJvb2wgbV9u
ZWVkc0NvbW1pdDsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9FeHRlbnNpb25zM0RDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0uaAppbmRleCA4MDVl
MjBhNzlkMGQwOWM4OTEyOTRiNjlmM2I2MzhkMzVhNjEzMTQ2Li4yZGYzMTU2NzI4ODY0ZjkzYWY4
NzVlNTdlZTk5ZDQ0Y2ZiMDg1MWQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9jaHJvbWl1bS9FeHRlbnNpb25zM0RDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0V4dGVuc2lvbnMzRENocm9taXVtLmgK
QEAgLTEyNiw2ICsxMjYsMTEgQEAgcHVibGljOgogICAgIC8vIEdMX0NIUk9NSVVNX3NoYWxsb3df
Zmx1c2gKICAgICB2aXJ0dWFsIHZvaWQgc2hhbGxvd0ZsdXNoQ0hST01JVU0oKTsKIAorICAgIC8v
IEdMX0VYVF9yb2J1c3RuZXNzCisgICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzRVhUKGludCB4
LCBpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3Jt
YXQsIEdDM0RlbnVtIHR5cGUsIEdDM0RzaXplaSBidWZTaXplLCB2b2lkICpkYXRhKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1mdkVYVChHQzNEdWludCBwcm9ncmFtLCBpbnQgbG9jYXRp
b24sIEdDM0RzaXplaSBidWZTaXplLCBmbG9hdCAqcGFyYW1zKTsKKyAgICB2aXJ0dWFsIHZvaWQg
Z2V0blVuaWZvcm1pdkVYVChHQzNEdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDM0RzaXpl
aSBidWZTaXplLCBpbnQgKnBhcmFtcyk7CisKIHByaXZhdGU6CiAgICAgLy8gSW5zdGFuY2VzIG9m
IHRoaXMgY2xhc3MgYXJlIHN0cmljdGx5IG93bmVkIGJ5IHRoZSBHcmFwaGljc0NvbnRleHQzRCBp
bXBsZW1lbnRhdGlvbiBhbmQgZG8gbm90CiAgICAgLy8gbmVlZCB0byBiZSBpbnN0YW50aWF0ZWQg
YnkgYW55IG90aGVyIGNvZGUuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xDb21tb24uY3Bw
CmluZGV4IDVhNjI4ODEwZGZkMTI3NjcwNjBlYTBmNGU2MjE4MDJjNjlhM2E4ZWIuLjNiYmI2Yzcz
N2YxOWNlYzA1MDQ4ZmUzOTFkMWU3NThkY2Q1YWM0ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xDb21tb24uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25z
M0RPcGVuR0xDb21tb24uY3BwCkBAIC0xNDMsNiArMTQzLDIxIEBAIHZvaWQgRXh0ZW5zaW9uczNE
T3BlbkdMQ29tbW9uOjppbml0aWFsaXplQXZhaWxhYmxlRXh0ZW5zaW9ucygpCiAgICAgbV9pbml0
aWFsaXplZEF2YWlsYWJsZUV4dGVuc2lvbnMgPSB0cnVlOwogfQogCit2b2lkIEV4dGVuc2lvbnMz
RE9wZW5HTENvbW1vbjo6cmVhZG5QaXhlbHNFWFQoaW50LCBpbnQsIEdDM0RzaXplaSwgR0MzRHNp
emVpLCBHQzNEZW51bSwgR0MzRGVudW0sIEdDM0RzaXplaSwgdm9pZCAqKQoreworICAgIG1fY29u
dGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCit2b2lk
IEV4dGVuc2lvbnMzRE9wZW5HTENvbW1vbjo6Z2V0blVuaWZvcm1mdkVYVChHQzNEdWludCwgaW50
LCBHQzNEc2l6ZWksIGZsb2F0ICopCit7CisgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJv
cihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK3ZvaWQgRXh0ZW5zaW9uczNET3BlbkdMQ29t
bW9uOjpnZXRuVW5pZm9ybWl2RVhUKEdDM0R1aW50LCBpbnQsIEdDM0RzaXplaSwgaW50ICopCit7
CisgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7
Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIFVTRSgzRF9HUkFQSElD
UykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9F
eHRlbnNpb25zM0RPcGVuR0xDb21tb24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xDb21tb24uaAppbmRleCA2YTYxZTQ2MzJiZTgx
NjU3Nzk0ZmQzNzdkOGM1MTZiODBmZTk2MmU3Li43NTg2OWRlMTk5NmUzMTE4YWU0YzJjM2RiMTk3
NmE3MDY2OGY5NDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTENvbW1vbi5oCkBAIC01
Miw2ICs1MiwxMSBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFN0cmluZyBnZXRUcmFuc2xhdGVk
U2hhZGVyU291cmNlQU5HTEUoUGxhdGZvcm0zRE9iamVjdCk7CiAKKyAgICAvLyBFWFQgUm9idXN0
bmVzcyAtIHVzZXMgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQigpCisgICAgdmlydHVhbCB2b2lk
IHJlYWRuUGl4ZWxzRVhUKGludCB4LCBpbnQgeSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkg
aGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVtIHR5cGUsIEdDM0RzaXplaSBidWZTaXpl
LCB2b2lkICpkYXRhKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1mdkVYVChHQzNEdWlu
dCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDM0RzaXplaSBidWZTaXplLCBmbG9hdCAqcGFyYW1z
KTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZvcm1pdkVYVChHQzNEdWludCBwcm9ncmFtLCBp
bnQgbG9jYXRpb24sIEdDM0RzaXplaSBidWZTaXplLCBpbnQgKnBhcmFtcyk7CisKIHByb3RlY3Rl
ZDoKICAgICBmcmllbmQgY2xhc3MgRXh0ZW5zaW9uczNET3BlbkdMRVM7CiAgICAgRXh0ZW5zaW9u
czNET3BlbkdMQ29tbW9uKEdyYXBoaWNzQ29udGV4dDNEKik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMRVMuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9w
ZW5HTEVTLmNwcAppbmRleCBiM2E5MzAwMDFiYWRlZTA3YjBmNWViY2U2YTAzZTE0MDg2YzQyYmIw
Li40YWRlN2U1NTRhOTE5ZDlmOTBmZjUwMTAyYzQ4NzEyMmNiZjI5ZDM0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdM
RVMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zM0RPcGVuR0xFUy5jcHAKQEAgLTMzLDExICszMywxNSBAQAogI2luY2x1ZGUgPEVHTC9l
Z2wuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKKyNpZiBQTEFURk9STShCTEFDS0JFUlJZ
KQorI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybUxvZy5oPgorI2VuZGlmCiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAogRXh0ZW5zaW9uczNET3BlbkdMRVM6OkV4dGVuc2lvbnMzRE9wZW5HTEVT
KEdyYXBoaWNzQ29udGV4dDNEKiBjb250ZXh0KQogICAgIDogRXh0ZW5zaW9uczNET3BlbkdMQ29t
bW9uKGNvbnRleHQpCisgICAgLCBtX2NvbnRleHRSZXNldFN0YXR1cyhHTF9OT19FUlJPUikKICAg
ICAsIG1fc3VwcG9ydHNPRVN2ZXJ0ZXhBcnJheU9iamVjdChmYWxzZSkKICAgICAsIG1fc3VwcG9y
dHNJTUdNdWx0aXNhbXBsZWRSZW5kZXJUb1RleHR1cmUoZmFsc2UpCiAgICAgLCBtX2dsRnJhbWVi
dWZmZXJUZXh0dXJlMkRNdWx0aXNhbXBsZUlNRygwKQpAQCAtNDYsNiArNTAsMTAgQEAgRXh0ZW5z
aW9uczNET3BlbkdMRVM6OkV4dGVuc2lvbnMzRE9wZW5HTEVTKEdyYXBoaWNzQ29udGV4dDNEKiBj
b250ZXh0KQogICAgICwgbV9nbERlbGV0ZVZlcnRleEFycmF5c09FUygwKQogICAgICwgbV9nbEdl
blZlcnRleEFycmF5c09FUygwKQogICAgICwgbV9nbElzVmVydGV4QXJyYXlPRVMoMCkKKyAgICAs
IG1fZ2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVzRVhUKDApCisgICAgLCBtX2dsUmVhZG5QaXhlbHNF
WFQoMCkKKyAgICAsIG1fZ2xHZXRuVW5pZm9ybWZ2RVhUKDApCisgICAgLCBtX2dsR2V0blVuaWZv
cm1pdkVYVCgwKQogewogfQogCkBAIC0xMzcsNiArMTQ1LDc3IEBAIHZvaWQgRXh0ZW5zaW9uczNE
T3BlbkdMRVM6OmJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybTNET2JqZWN0IGFycmF5KQogICAg
ICAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
IH0KIAoraW50IEV4dGVuc2lvbnMzRE9wZW5HTEVTOjpnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJC
KCkKK3sKKyAgICAvLyBGSVhNRTogVGhpcyBkb2VzIG5vdCBjYWxsIGdldEdyYXBoaWNzUmVzZXRT
dGF0dXNBUkIsIGJ1dCBpbnN0ZWFkIGdldEdyYXBoaWNzUmVzZXRTdGF0dXNFWFQuCisgICAgLy8g
VGhlIHJldHVybiBjb2RlcyBmcm9tIHRoZSB0d28gZXh0ZW5zaW9ucyBhcmUgaWRlbnRpY2FsIGFu
ZCB0aGVpciBwdXJwb3NlIGlzIHRoZSBzYW1lLCBzbyBpdAorICAgIC8vIG1heSBiZSBiZXN0IHRv
IHJlbmFtZSBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzQVJCKCkgdG8gZ2V0R3JhcGhpY3NSZXNldFN0
YXR1cygpLgorICAgIGlmIChtX2NvbnRleHRSZXNldFN0YXR1cyAhPSBHTF9OT19FUlJPUikKKyAg
ICAgICAgcmV0dXJuIG1fY29udGV4dFJlc2V0U3RhdHVzOworICAgIGlmIChtX2dsR2V0R3JhcGhp
Y3NSZXNldFN0YXR1c0VYVCkgeworICAgICAgICBtX2NvbnRleHQtPm1ha2VDb250ZXh0Q3VycmVu
dCgpOworICAgICAgICBpbnQgcmVhc29uRm9yUmVzZXQgPSBtX2dsR2V0R3JhcGhpY3NSZXNldFN0
YXR1c0VYVCgpOworICAgICAgICBpZiAocmVhc29uRm9yUmVzZXQgIT0gR0xfTk9fRVJST1IpIHsK
KyNpZiBQTEFURk9STShCTEFDS0JFUlJZKQorICAgICAgICAgICAgLy8gV2UgY2Fubm90IHlldCBy
ZWNyZWF0ZSBvdXIgY29tcG9zaXRpbmcgdGhyZWFkLCBzbyBqdXN0IHF1aXQuCisgICAgICAgICAg
ICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6bG9nQWx3YXlzKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpM
b2dMZXZlbENyaXRpY2FsLCAiUm9idXN0IE9wZW5HTCBjb250ZXh0IGhhcyBiZWVuIHJlc2V0LiBB
Ym9ydGluZy4iKTsKKyAgICAgICAgICAgIENSQVNIKCk7CisjZW5kaWYKKyAgICAgICAgICAgIEFT
U0VSVChtX2NvbnRleHRMb3N0Q2FsbGJhY2spOworICAgICAgICAgICAgaWYgKG1fY29udGV4dExv
c3RDYWxsYmFjaykKKyAgICAgICAgICAgICAgICBtX2NvbnRleHRMb3N0Q2FsbGJhY2stPm9uQ29u
dGV4dExvc3QoKTsKKyAgICAgICAgICAgIG1fY29udGV4dFJlc2V0U3RhdHVzID0gcmVhc29uRm9y
UmVzZXQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlYXNvbkZvclJlc2V0OworICAgIH0K
KworICAgIG1fY29udGV4dC0+c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04p
OworICAgIHJldHVybiBmYWxzZTsKK30KKwordm9pZCBFeHRlbnNpb25zM0RPcGVuR0xFUzo6c2V0
RVhUQ29udGV4dExvc3RDYWxsYmFjayhQYXNzT3duUHRyPEdyYXBoaWNzQ29udGV4dDNEOjpDb250
ZXh0TG9zdENhbGxiYWNrPiBjYWxsYmFjaykKK3sKKyAgICBtX2NvbnRleHRMb3N0Q2FsbGJhY2sg
PSBjYWxsYmFjazsKK30KKwordm9pZCBFeHRlbnNpb25zM0RPcGVuR0xFUzo6cmVhZG5QaXhlbHNF
WFQoaW50IHgsIGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0Rl
bnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgR0MzRHNpemVpIGJ1ZlNpemUsIHZvaWQgKmRhdGEp
Cit7CisgICAgaWYgKG1fZ2xSZWFkblBpeGVsc0VYVCkgeworICAgICAgICBtX2NvbnRleHQtPm1h
a2VDb250ZXh0Q3VycmVudCgpOworICAgICAgICAvLyBGSVhNRTogcmVtb3ZlIHRoZSB0d28gZ2xG
bHVzaCBjYWxscyB3aGVuIHRoZSBkcml2ZXIgYnVnIGlzIGZpeGVkLCBpLmUuLAorICAgICAgICAv
LyBhbGwgcHJldmlvdXMgcmVuZGVyaW5nIGNhbGxzIHNob3VsZCBiZSBkb25lIGJlZm9yZSByZWFk
aW5nIHBpeGVscy4KKyAgICAgICAgOjpnbEZsdXNoKCk7CisKKyAgICAgICAgLy8gRklYTUU6IElm
IG5vbi1CbGFja0JlcnJ5IHBsYXRmb3JtcyB1c2UgdGhpcywgdGhleSB3aWxsIG5lZWQgdG8gaW1w
bGVtZW50CisgICAgICAgIC8vIHRoZWlyIGFudGktYWxpYXNpbmcgY29kZSBoZXJlLgorICAgICAg
ICBtX2dsUmVhZG5QaXhlbHNFWFQoeCwgeSwgd2lkdGgsIGhlaWdodCwgZm9ybWF0LCB0eXBlLCBi
dWZTaXplLCBkYXRhKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIG1fY29udGV4dC0+
c3ludGhlc2l6ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOworfQorCit2b2lkIEV4dGVu
c2lvbnMzRE9wZW5HTEVTOjpnZXRuVW5pZm9ybWZ2RVhUKEdDM0R1aW50IHByb2dyYW0sIGludCBs
b2NhdGlvbiwgR0MzRHNpemVpIGJ1ZlNpemUsIGZsb2F0ICpwYXJhbXMpCit7CisgICAgaWYgKG1f
Z2xHZXRuVW5pZm9ybWZ2RVhUKSB7CisgICAgICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJy
ZW50KCk7CisgICAgICAgIG1fZ2xHZXRuVW5pZm9ybWZ2RVhUKHByb2dyYW0sIGxvY2F0aW9uLCBi
dWZTaXplLCBwYXJhbXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK3ZvaWQgRXh0
ZW5zaW9uczNET3BlbkdMRVM6OmdldG5Vbmlmb3JtaXZFWFQoR0MzRHVpbnQgcHJvZ3JhbSwgaW50
IGxvY2F0aW9uLCBHQzNEc2l6ZWkgYnVmU2l6ZSwgaW50ICpwYXJhbXMpCit7CisgICAgaWYgKG1f
Z2xHZXRuVW5pZm9ybWl2RVhUKSB7CisgICAgICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJy
ZW50KCk7CisgICAgICAgIG1fZ2xHZXRuVW5pZm9ybWl2RVhUKHByb2dyYW0sIGxvY2F0aW9uLCBi
dWZTaXplLCBwYXJhbXMpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgbV9jb250ZXh0
LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7Cit9CiAKIGJvb2wgRXh0
ZW5zaW9uczNET3BlbkdMRVM6OnN1cHBvcnRzRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbmFtZSkK
IHsKQEAgLTE1MSw2ICsyMzAsMTEgQEAgYm9vbCBFeHRlbnNpb25zM0RPcGVuR0xFUzo6c3VwcG9y
dHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogICAgICAgICAgICAgbV9nbEZyYW1lYnVm
ZmVyVGV4dHVyZTJETXVsdGlzYW1wbGVJTUcgPSByZWludGVycHJldF9jYXN0PFBGTkdMRlJBTUVC
VUZGRVJURVhUVVJFMkRNVUxUSVNBTVBMRUlNRz4oZWdsR2V0UHJvY0FkZHJlc3MoImdsRnJhbWVi
dWZmZXJUZXh0dXJlMkRNdWx0aXNhbXBsZUlNRyIpKTsKICAgICAgICAgICAgIG1fZ2xSZW5kZXJi
dWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVJTUcgPSByZWludGVycHJldF9jYXN0PFBGTkdMUkVOREVS
QlVGRkVSU1RPUkFHRU1VTFRJU0FNUExFSU1HPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xSZW5kZXJi
dWZmZXJTdG9yYWdlTXVsdGlzYW1wbGVJTUciKSk7CiAgICAgICAgICAgICBtX3N1cHBvcnRzSU1H
TXVsdGlzYW1wbGVkUmVuZGVyVG9UZXh0dXJlID0gdHJ1ZTsKKyAgICAgICAgfSBlbHNlIGlmIChu
YW1lID09ICJHTF9FWFRfcm9idXN0bmVzcyIgJiYgIW1fZ2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVz
RVhUKSB7CisgICAgICAgICAgICBtX2dsR2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRHUkFQSElDU1JFU0VUU1RBVFVTRVhUUFJPQz4oZWdsR2V0UHJv
Y0FkZHJlc3MoImdsR2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVCIpKTsKKyAgICAgICAgICAgIG1f
Z2xSZWFkblBpeGVsc0VYVCA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xSRUFETlBJWEVMU0VYVFBS
T0M+KGVnbEdldFByb2NBZGRyZXNzKCJnbFJlYWRuUGl4ZWxzRVhUIikpOworICAgICAgICAgICAg
bV9nbEdldG5Vbmlmb3JtZnZFWFQgPSByZWludGVycHJldF9jYXN0PFBGTkdMR0VUTlVOSUZPUk1G
VkVYVFBST0M+KGVnbEdldFByb2NBZGRyZXNzKCJnbEdldG5Vbmlmb3JtZnZFWFQiKSk7CisgICAg
ICAgICAgICBtX2dsR2V0blVuaWZvcm1pdkVYVCA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVRO
VU5JRk9STUlWRVhUUFJPQz4oZWdsR2V0UHJvY0FkZHJlc3MoImdsR2V0blVuaWZvcm1pdkVYVCIp
KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdM
RVMuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25z
M0RPcGVuR0xFUy5oCmluZGV4IGZjZjcyZDZiNWUzOGQ3NjI3ODFiNDVkOGU4YTg0ODA4MGJhNTI2
Y2MuLjE4ODU4ODBmMjg3ZjVlZmQ3YzgzYjRhZTU4MjYxYmZjOWNjNDA2Y2IgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVu
R0xFUy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRl
bnNpb25zM0RPcGVuR0xFUy5oCkBAIC0zOCw2ICszOCwzMSBAQAogI2RlZmluZSBQRk5HTFJFTkRF
UkJVRkZFUlNUT1JBR0VNVUxUSVNBTVBMRUlNRyBQRk5HTFJFTkRFUkJVRkZFUlNUT1JBR0VNVUxU
SVNBTVBMRUlNR1BST0MKICNlbmRpZgogCisjaWZuZGVmIEdMX0VYVF9yb2J1c3RuZXNzCisvKiBy
ZXVzZSBHTF9OT19FUlJPUiAqLworI2RlZmluZSBHTF9HVUlMVFlfQ09OVEVYVF9SRVNFVF9FWFQg
MHg4MjUzCisjZGVmaW5lIEdMX0lOTk9DRU5UX0NPTlRFWFRfUkVTRVRfRVhUIDB4ODI1NAorI2Rl
ZmluZSBHTF9VTktOT1dOX0NPTlRFWFRfUkVTRVRfRVhUIDB4ODI1NQorI2RlZmluZSBHTF9DT05U
RVhUX1JPQlVTVF9BQ0NFU1NfRVhUIDB4OTBGMworI2RlZmluZSBHTF9SRVNFVF9OT1RJRklDQVRJ
T05fU1RSQVRFR1lfRVhUIDB4ODI1NgorI2RlZmluZSBHTF9MT1NFX0NPTlRFWFRfT05fUkVTRVRf
RVhUIDB4ODI1MgorI2RlZmluZSBHTF9OT19SRVNFVF9OT1RJRklDQVRJT05fRVhUIDB4ODI2MQor
I2VuZGlmCisKKyNpZm5kZWYgR0xfRVhUX3JvYnVzdG5lc3MKKyNkZWZpbmUgR0xfRVhUX3JvYnVz
dG5lc3MgMQorI2lmZGVmIEdMX0dMRVhUX1BST1RPVFlQRVMKK0dMX0FQSUNBTEwgR0MzRGVudW0g
R0xfQVBJRU5UUlkgZ2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVzRVhUKHZvaWQpOworR0xfQVBJQ0FM
TCB2b2lkIEdMX0FQSUVOVFJZIGdsUmVhZG5QaXhlbHNFWFQoR0xpbnQgeCwgR0xpbnQgeSwgR0Mz
RHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdDM0RlbnVt
IHR5cGUsIEdDM0RzaXplaSBidWZTaXplLCB2b2lkICpkYXRhKTsKK0dMX0FQSUNBTEwgdm9pZCBH
TF9BUElFTlRSWSBnbEdldG5Vbmlmb3JtZnZFWFQoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0
aW9uLCBHQzNEc2l6ZWkgYnVmU2l6ZSwgZmxvYXQgKnBhcmFtcyk7CitHTF9BUElDQUxMIHZvaWQg
R0xfQVBJRU5UUlkgZ2xHZXRuVW5pZm9ybWl2RVhUKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2Nh
dGlvbiwgR0MzRHNpemVpIGJ1ZlNpemUsIEdMaW50ICpwYXJhbXMpOworI2VuZGlmCit0eXBlZGVm
IEdDM0RlbnVtIChHTF9BUElFTlRSWVAgUEZOR0xHRVRHUkFQSElDU1JFU0VUU1RBVFVTRVhUUFJP
QykgKHZvaWQpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xSRUFETlBJWEVMU0VY
VFBST0MpIChHTGludCB4LCBHTGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWln
aHQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgR0MzRHNpemVpIGJ1ZlNpemUsIHZv
aWQgKmRhdGEpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVROVU5JRk9STUZW
RVhUUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0MzRHNpemVpIGJ1ZlNp
emUsIGZsb2F0ICpwYXJhbXMpOwordHlwZWRlZiB2b2lkIChHTF9BUElFTlRSWVAgUEZOR0xHRVRO
VU5JRk9STUlWRVhUUFJPQykgKEdMdWludCBwcm9ncmFtLCBHTGludCBsb2NhdGlvbiwgR0MzRHNp
emVpIGJ1ZlNpemUsIEdMaW50ICpwYXJhbXMpOworI2VuZGlmCisKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgRXh0ZW5zaW9uczNET3BlbkdMRVMgOiBwdWJsaWMgRXh0ZW5zaW9uczNET3Bl
bkdMQ29tbW9uIHsKQEAgLTU3LDYgKzgyLDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIEdDM0Ri
b29sZWFuIGlzVmVydGV4QXJyYXlPRVMoUGxhdGZvcm0zRE9iamVjdCk7CiAgICAgdmlydHVhbCB2
b2lkIGJpbmRWZXJ0ZXhBcnJheU9FUyhQbGF0Zm9ybTNET2JqZWN0KTsKIAorICAgIC8vIEVYVCBS
b2J1c3RuZXNzIC0gcmVzZXQKKyAgICB2aXJ0dWFsIGludCBnZXRHcmFwaGljc1Jlc2V0U3RhdHVz
QVJCKCk7CisgICAgdm9pZCBzZXRFWFRDb250ZXh0TG9zdENhbGxiYWNrKFBhc3NPd25QdHI8R3Jh
cGhpY3NDb250ZXh0M0Q6OkNvbnRleHRMb3N0Q2FsbGJhY2s+KTsKKworICAgIC8vIEVYVCBSb2J1
c3RuZXNzIC0gZXRjCisgICAgdmlydHVhbCB2b2lkIHJlYWRuUGl4ZWxzRVhUKGludCB4LCBpbnQg
eSwgR0MzRHNpemVpIHdpZHRoLCBHQzNEc2l6ZWkgaGVpZ2h0LCBHQzNEZW51bSBmb3JtYXQsIEdD
M0RlbnVtIHR5cGUsIEdDM0RzaXplaSBidWZTaXplLCB2b2lkICpkYXRhKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZ2V0blVuaWZvcm1mdkVYVChHQzNEdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdD
M0RzaXplaSBidWZTaXplLCBmbG9hdCAqcGFyYW1zKTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0blVu
aWZvcm1pdkVYVChHQzNEdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDM0RzaXplaSBidWZT
aXplLCBpbnQgKnBhcmFtcyk7CisKIHByb3RlY3RlZDoKICAgICAvLyBUaGlzIGNsYXNzIG9ubHkg
bmVlZHMgdG8gYmUgaW5zdGFudGlhdGVkIGJ5IEdyYXBoaWNzQ29udGV4dDNEIGltcGxlbWVudGF0
aW9ucy4KICAgICBmcmllbmQgY2xhc3MgR3JhcGhpY3NDb250ZXh0M0Q7CkBAIC02NSw2ICs5OSw4
IEBAIHByb3RlY3RlZDoKICAgICB2aXJ0dWFsIGJvb2wgc3VwcG9ydHNFeHRlbnNpb24oY29uc3Qg
U3RyaW5nJik7CiAgICAgdmlydHVhbCBTdHJpbmcgZ2V0RXh0ZW5zaW9ucygpOwogCisgICAgR0Mz
RGVudW0gbV9jb250ZXh0UmVzZXRTdGF0dXM7CisKICAgICBib29sIG1fc3VwcG9ydHNPRVN2ZXJ0
ZXhBcnJheU9iamVjdDsKICAgICBib29sIG1fc3VwcG9ydHNJTUdNdWx0aXNhbXBsZWRSZW5kZXJU
b1RleHR1cmU7CiAKQEAgLTc0LDYgKzExMCwxMiBAQCBwcm90ZWN0ZWQ6CiAgICAgUEZOR0xERUxF
VEVWRVJURVhBUlJBWVNPRVNQUk9DIG1fZ2xEZWxldGVWZXJ0ZXhBcnJheXNPRVM7CiAgICAgUEZO
R0xHRU5WRVJURVhBUlJBWVNPRVNQUk9DIG1fZ2xHZW5WZXJ0ZXhBcnJheXNPRVM7CiAgICAgUEZO
R0xJU1ZFUlRFWEFSUkFZT0VTUFJPQyBtX2dsSXNWZXJ0ZXhBcnJheU9FUzsKKyAgICBQRk5HTEdF
VEdSQVBISUNTUkVTRVRTVEFUVVNFWFRQUk9DIG1fZ2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVzRVhU
OworICAgIFBGTkdMUkVBRE5QSVhFTFNFWFRQUk9DIG1fZ2xSZWFkblBpeGVsc0VYVDsKKyAgICBQ
Rk5HTEdFVE5VTklGT1JNRlZFWFRQUk9DIG1fZ2xHZXRuVW5pZm9ybWZ2RVhUOworICAgIFBGTkdM
R0VUTlVOSUZPUk1JVkVYVFBST0MgbV9nbEdldG5Vbmlmb3JtaXZFWFQ7CisKKyAgICBPd25QdHI8
R3JhcGhpY3NDb250ZXh0M0Q6OkNvbnRleHRMb3N0Q2FsbGJhY2s+IG1fY29udGV4dExvc3RDYWxs
YmFjazsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvV2ViS2l0L0NNYWtlTGlzdHMudHh0CmluZGV4
IDAzNzk3YTM3NGY2ZTRiZTJiYmI1ZDBkY2QzNjQ1OWViMTEyMTU2NjYuLmE3OTgzZDlmMDM2MDY2
ZTVkMWY3MGVlZjI1N2Y1NzRmOGFkNTQ4MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ01h
a2VMaXN0cy50eHQKKysrIGIvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dApAQCAtMzEsNiAr
MzEsNyBAQCBTRVQoV2ViS2l0X0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJDT1JFX0RJ
Un0vcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZv
cm0vZ3JhcGhpY3MvaGFyZmJ1enoiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBo
aWNzL2hhcmZidXp6L25nIgorICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9v
cGVuZ2wiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL3RyYW5zZm9ybXMi
CiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL25ldHdvcmsiCiAgICAgIiR7V0VCQ09SRV9E
SVJ9L3BsYXRmb3JtL3NxbCIK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157501</attachid>
            <date>2012-08-09 11:42:54 -0700</date>
            <delta_ts>2012-08-10 19:45:22 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-93379-20120809144110.patch</filename>
            <type>text/plain</type>
            <size>28778</size>
            <attacher name="Joshua Netterfield">jnetterfield</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1MTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2IyYTM5M2ZjNDYwMjNk
NDUzZWY5MzdjMjk4MGU0NWM4NTQwNDVlNy4uMTE2YWZkMTY3ZGVjZjRmYWUxYjVhOWE5ODVmNjRi
ZWE2MmUzOGNiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDcxIEBACisyMDEyLTA4LTA5ICBKb3No
dWEgTmV0dGVyZmllbGQgIDxqbmV0dGVyZmllbGRAcmltLmNvbT4KKworICAgICAgICBbV2ViR0xd
IEFkZCBzdXBwb3J0IGZvciBFWFRfcm9idXN0bmVzcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTMzNzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBUYWtlIGFkdmFudGFnZSBvZiBFWFQgcm9idXN0bmVzcyBp
biBXZWJLaXQuCisKKyAgICAgICAgVGhpcyBjb21taXQgbWFrZXMgV2ViS2l0IHVzZSByZWFkblBp
eGVsc0VYVCwgZ2V0blVuaWZvcm1mdkVYVCBhbmQKKyAgICAgICAgZ2V0blVuaWZvcm1pdkVYVCBp
bnN0ZWFkIG9mIHJlYWRQaXhlbHMsIGdldFVuaWZvcm1mdiBhbmQgZ2V0VW5pZm9ybWl2CisgICAg
ICAgIHdoZW4gcG9zc2libGUsIGFuZCBzZXRzIHVwIHRoZSByZXNldCBub3RpZmljYXRpb24gYmVo
YXZpb3VyIGZvcgorICAgICAgICBHTEVTIHBsYXRmb3Jtcy4KKworICAgICAgICBUaGUgcmVzZXQg
YmVoYXZpb3VyIGhhcyBub3QgeWV0IGJlZW4gaW1wbGVtZW50ZWQgaW4gdGhlIEJsYWNrQmVycnkK
KyAgICAgICAgY29tcG9zaXRpbmcgdGhyZWFkLCBzbyBmb3Igbm93IG9uIEJsYWNrQmVycnkgd2Ug
anVzdCBhYm9ydCB3aGVuCisgICAgICAgIHRoZSBjb250ZXh0IGhhcyBiZWVuIHJlc2V0LiBUaGlz
IHByZXZlbnRzIHVuZGVmaW5lZCBiZWhhdmlvdXIsIGJ1dAorICAgICAgICBjYW4gYmUgaW1wcm92
ZWQgaW4gdGhlIGZ1dHVyZS4KKworICAgICAgICBObyBuZXcgdGVzdHMgYXJlIG5lZWRlZCBiZWNh
dXNlIG5vIG5ldyBmdW5jdGlvbmFsaXR5IGlzIGludHJvZHVjZWQuCisgICAgICAgIFN1cHBvcnQg
Zm9yIEFSQiByb2J1c3RuZXNzIHJlc2V0IG5vdGlmaWNhdGlvbiBiZWhhdmlvdXIgaXMgYWxyZWFk
eQorICAgICAgICBpbiBXZWJLaXQsIGFuZCBFWFQgcm9idXN0bmVzcycgcmVzZXQgbm90aWZjYXRp
b24gYmVoYXZpb3VyIGlzIHRoZQorICAgICAgICBzYW1lLiByZWFkblBpeGVsc0VYVCByZXBsYWNl
cyBXZWJLaXQncyBleGlzdGluZyBtZWNoYW5pc21zIG9mCisgICAgICAgIHByZXZlbnRpbmcgYnVm
ZmVyIG92ZXJmbG93cy4KKworICAgICAgICBSSU0gUFIjIDE0NzUxMAorICAgICAgICBJbnRlcm5h
bGx5IHJldmlld2VkIGJ5IEFydmlkIE5pbHNzb24uCisKKyAgICAgICAgKiBodG1sL2NhbnZhcy9X
ZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChX
ZWJDb3JlOjpXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnNldHVwRmxhZ3MpOgorICAgICAgICAoV2Vi
Q29yZTo6V2ViR0xSZW5kZXJpbmdDb250ZXh0OjpnZXRVbmlmb3JtKToKKyAgICAgICAgKFdlYkNv
cmU6OldlYkdMUmVuZGVyaW5nQ29udGV4dDo6cmVhZFBpeGVscyk6CisgICAgICAgICogaHRtbC9j
YW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJHTFJlbmRlcmluZ0Nv
bnRleHQpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvRXh0ZW5zaW9uczNE
Q2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNEQ2hyb21pdW06OnJl
YWRuUGl4ZWxzRVhUKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6RXh0
ZW5zaW9uczNEQ2hyb21pdW06OmdldG5Vbmlmb3JtZnZFWFQpOgorICAgICAgICAoV2ViQ29yZTo6
RXh0ZW5zaW9uczNEQ2hyb21pdW06OmdldG5Vbmlmb3JtaXZFWFQpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL0V4dGVuc2lvbnMzRC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2JsYWNrYmVycnkvR3JhcGhpY3NDb250ZXh0M0RCbGFja0JlcnJ5LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkdyYXBoaWNzQ29udGV4dDNEOjpzZXRDb250ZXh0TG9zdENhbGxiYWNrKToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TGF5ZXJSZW5kZXJlcjo6TGF5ZXJSZW5kZXJlcik6CisgICAgICAgIChX
ZWJDb3JlOjpMYXllclJlbmRlcmVyOjptYWtlQ29udGV4dEN1cnJlbnQpOgorICAgICAgICAqIHBs
YXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlci5oOgorICAgICAgICAoTGF5
ZXJSZW5kZXJlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vRXh0ZW5z
aW9uczNEQ2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0
ZW5zaW9uczNET3BlbkdMQ29tbW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV4dGVuc2lvbnMz
RE9wZW5HTENvbW1vbjo6cmVhZG5QaXhlbHNFWFQpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zM0RPcGVuR0xDb21tb246OmdldG5Vbmlmb3JtZnZFWFQp
OgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uOjpnZXRuVW5pZm9y
bWl2RVhUKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNE
T3BlbkdMQ29tbW9uLmg6CisgICAgICAgIChFeHRlbnNpb25zM0RPcGVuR0xDb21tb24pOgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xFUy5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpFeHRlbnNpb25zM0RPcGVuR0xFUzo6RXh0ZW5zaW9uczNET3Bl
bkdMRVMpOgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNET3BlbkdMRVM6OmdldEdyYXBo
aWNzUmVzZXRTdGF0dXNBUkIpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgIChXZWJDb3Jl
OjpFeHRlbnNpb25zM0RPcGVuR0xFUzo6c2V0RVhUQ29udGV4dExvc3RDYWxsYmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpFeHRlbnNpb25zM0RPcGVuR0xFUzo6cmVhZG5QaXhlbHNFWFQpOgorICAg
ICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNET3BlbkdMRVM6OmdldG5Vbmlmb3JtZnZFWFQpOgor
ICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNET3BlbkdMRVM6OmdldG5Vbmlmb3JtaXZFWFQp
OgorICAgICAgICAoV2ViQ29yZTo6RXh0ZW5zaW9uczNET3BlbkdMRVM6OnN1cHBvcnRzRXh0ZW5z
aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3Bl
bkdMRVMuaDoKKyAgICAgICAgKEV4dGVuc2lvbnMzRE9wZW5HTEVTKToKKwogMjAxMi0wOC0wOCAg
SGF5YXRvIEl0byAgPGhheWF0b0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgRXZlbnREaXNwYXRj
aGVyOjpkaXNwYXRjaFNpbXVsYXRlZENsaWNrIHNob3VsZCBub3QgcmV1c2UgdGhlIHNhbWUgRXZl
bnREaXNwYXRjaGVyIGluc3RhbmNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCAxODk1NjFmODI0MjExNzI2YTdiOGNk
YTQwMTI5NGFlODczYWUyM2MyLi43NmJlYWE3N2Y0MjZhMDQzYWJlZjEzMjYyNzkxNTY0ZjU2OTgz
M2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
S2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE1IEBACisyMDEyLTA4LTA5ICBKb3NodWEgTmV0dGVy
ZmllbGQgIDxqbmV0dGVyZmllbGRAcmltLmNvbT4KKworICAgICAgICBbV2ViR0xdIEFkZCBzdXBw
b3J0IGZvciBFWFRfcm9idXN0bmVzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9OTMzNzkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICBSSU0gUFIjIDE0NzUxMAorICAgICAgICBJbnRlcm5hbGx5IHJldmlld2Vk
IGJ5IEFydmlkIE5pbHNzb24uCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDogQnVpbGQgc3lz
dGVtIGFkYXB0YXRpb24uCisKIDIwMTItMDgtMDggIEFudG9uaW8gR29tZXMgIDxhZ29tZXNAcmlt
LmNvbT4KIAogICAgICAgICBbQmxhY2tCZXJyeV0gVGllIHVwIHRoZSBzY3JvbGxpbmcgbWFjaGlu
ZXJ5IHRvIHRoZSBncmFwaGljcyB0cmVlIHdoZW4gYXBwbGljYWJsZSBmb3IgaW4tcmVnaW9uIHNj
cm9sbApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJp
bmdDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5n
Q29udGV4dC5jcHAKaW5kZXggYzBhYmYwZmJhMWNlYWM0NDJkMDA0MWIxMDAzNGFlMTI5YjM4YzU3
YS4uMWVlNjIxNWZkMDMyY2RiNWUxOTE4ODkzNTQ3ZGQwYjA0OGNlMzJhYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC9jYW52YXMvV2ViR0xSZW5kZXJpbmdDb250ZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuY3BwCkBA
IC01NDgsNiArNTQ4LDcgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnNldHVwRmxhZ3Mo
KQogICAgICAgICBtX2lzR0xFUzJOUE9UU3RyaWN0ID0gIW1fY29udGV4dC0+Z2V0RXh0ZW5zaW9u
cygpLT5pc0VuYWJsZWQoIkdMX0FSQl90ZXh0dXJlX25vbl9wb3dlcl9vZl90d28iKTsKICAgICAg
ICAgbV9pc0RlcHRoU3RlbmNpbFN1cHBvcnRlZCA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygp
LT5pc0VuYWJsZWQoIkdMX0VYVF9wYWNrZWRfZGVwdGhfc3RlbmNpbCIpOwogICAgIH0KKyAgICBt
X2lzUm9idXN0bmVzc0VYVFN1cHBvcnRlZCA9IG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpLT5p
c0VuYWJsZWQoIkdMX0VYVF9yb2J1c3RuZXNzIik7CiB9CiAKIGJvb2wgV2ViR0xSZW5kZXJpbmdD
b250ZXh0OjphbGxvd1ByaXZpbGVnZWRFeHRlbnNpb25zKCkgY29uc3QKQEAgLTI5NzUsMjEgKzI5
NzYsMzAgQEAgV2ViR0xHZXRJbmZvIFdlYkdMUmVuZGVyaW5nQ29udGV4dDo6Z2V0VW5pZm9ybShX
ZWJHTFByb2dyYW0qIHByb2dyYW0sIGNvbnN0IFdlYkcKICAgICAgICAgICAgICAgICBzd2l0Y2gg
KGJhc2VUeXBlKSB7CiAgICAgICAgICAgICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6RkxP
QVQ6IHsKICAgICAgICAgICAgICAgICAgICAgR0MzRGZsb2F0IHZhbHVlWzE2XSA9IHswfTsKLSAg
ICAgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtZnYob2JqZWN0T3JaZXJvKHBy
b2dyYW0pLCBsb2NhdGlvbiwgdmFsdWUpOworICAgICAgICAgICAgICAgICAgICBpZiAobV9pc1Jv
YnVzdG5lc3NFWFRTdXBwb3J0ZWQpCisgICAgICAgICAgICAgICAgICAgICAgICBtX2NvbnRleHQt
PmdldEV4dGVuc2lvbnMoKS0+Z2V0blVuaWZvcm1mdkVYVChvYmplY3RPclplcm8ocHJvZ3JhbSks
IGxvY2F0aW9uLCAxNiwgdmFsdWUpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmdldFVuaWZvcm1mdihvYmplY3RPclplcm8ocHJv
Z3JhbSksIGxvY2F0aW9uLCB2YWx1ZSk7CiAgICAgICAgICAgICAgICAgICAgIGlmIChsZW5ndGgg
PT0gMSkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBXZWJHTEdldEluZm8odmFsdWVb
MF0pOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gV2ViR0xHZXRJbmZvKEZsb2F0MzJBcnJh
eTo6Y3JlYXRlKHZhbHVlLCBsZW5ndGgpKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAg
ICAgICAgY2FzZSBHcmFwaGljc0NvbnRleHQzRDo6SU5UOiB7CiAgICAgICAgICAgICAgICAgICAg
IEdDM0RpbnQgdmFsdWVbNF0gPSB7MH07Ci0gICAgICAgICAgICAgICAgICAgIG1fY29udGV4dC0+
Z2V0VW5pZm9ybWl2KG9iamVjdE9yWmVybyhwcm9ncmFtKSwgbG9jYXRpb24sIHZhbHVlKTsKKyAg
ICAgICAgICAgICAgICAgICAgaWYgKG1faXNSb2J1c3RuZXNzRVhUU3VwcG9ydGVkKQorICAgICAg
ICAgICAgICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRFeHRlbnNpb25zKCktPmdldG5Vbmlmb3Jt
aXZFWFQob2JqZWN0T3JaZXJvKHByb2dyYW0pLCBsb2NhdGlvbiwgNCwgdmFsdWUpOworICAgICAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmdl
dFVuaWZvcm1pdihvYmplY3RPclplcm8ocHJvZ3JhbSksIGxvY2F0aW9uLCB2YWx1ZSk7CiAgICAg
ICAgICAgICAgICAgICAgIGlmIChsZW5ndGggPT0gMSkKICAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiBXZWJHTEdldEluZm8odmFsdWVbMF0pOwogICAgICAgICAgICAgICAgICAgICByZXR1
cm4gV2ViR0xHZXRJbmZvKEludDMyQXJyYXk6OmNyZWF0ZSh2YWx1ZSwgbGVuZ3RoKSk7CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGNhc2UgR3JhcGhpY3NDb250ZXh0M0Q6OkJP
T0w6IHsKICAgICAgICAgICAgICAgICAgICAgR0MzRGludCB2YWx1ZVs0XSA9IHswfTsKLSAgICAg
ICAgICAgICAgICAgICAgbV9jb250ZXh0LT5nZXRVbmlmb3JtaXYob2JqZWN0T3JaZXJvKHByb2dy
YW0pLCBsb2NhdGlvbiwgdmFsdWUpOworICAgICAgICAgICAgICAgICAgICBpZiAobV9pc1JvYnVz
dG5lc3NFWFRTdXBwb3J0ZWQpCisgICAgICAgICAgICAgICAgICAgICAgICBtX2NvbnRleHQtPmdl
dEV4dGVuc2lvbnMoKS0+Z2V0blVuaWZvcm1pdkVYVChvYmplY3RPclplcm8ocHJvZ3JhbSksIGxv
Y2F0aW9uLCA0LCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0VW5pZm9ybWl2KG9iamVjdE9yWmVybyhwcm9ncmFt
KSwgbG9jYXRpb24sIHZhbHVlKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGxlbmd0aCA+IDEp
IHsKICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYm9vbFZhbHVlWzE2XSA9IHswfTsKICAg
ICAgICAgICAgICAgICAgICAgICAgIGZvciAodW5zaWduZWQgaiA9IDA7IGogPCBsZW5ndGg7IGor
KykKQEAgLTMyOTAsMjYgKzMzMDAsMzQgQEAgdm9pZCBXZWJHTFJlbmRlcmluZ0NvbnRleHQ6OnJl
YWRQaXhlbHMoR0MzRGludCB4LCBHQzNEaW50IHksIEdDM0RzaXplaSB3aWR0aCwgR0MKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KICAgICAvLyBDYWxjdWxhdGUgYXJyYXkgc2l6ZSwgdGFraW5nIGlu
dG8gY29uc2lkZXJhdGlvbiBvZiBQQUNLX0FMSUdOTUVOVC4KLSAgICB1bnNpZ25lZCBpbnQgdG90
YWxCeXRlc1JlcXVpcmVkOwotICAgIHVuc2lnbmVkIGludCBwYWRkaW5nOwotICAgIEdDM0RlbnVt
IGVycm9yID0gbV9jb250ZXh0LT5jb21wdXRlSW1hZ2VTaXplSW5CeXRlcyhmb3JtYXQsIHR5cGUs
IHdpZHRoLCBoZWlnaHQsIG1fcGFja0FsaWdubWVudCwgJnRvdGFsQnl0ZXNSZXF1aXJlZCwgJnBh
ZGRpbmcpOwotICAgIGlmIChlcnJvciAhPSBHcmFwaGljc0NvbnRleHQzRDo6Tk9fRVJST1IpIHsK
LSAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3IoZXJyb3IsICJyZWFkUGl4ZWxzIiwgImludmFsaWQg
ZGltZW5zaW9ucyIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIGlmIChwaXhlbHMtPmJ5
dGVMZW5ndGgoKSA8IHRvdGFsQnl0ZXNSZXF1aXJlZCkgewotICAgICAgICBzeW50aGVzaXplR0xF
cnJvcihHcmFwaGljc0NvbnRleHQzRDo6SU5WQUxJRF9PUEVSQVRJT04sICJyZWFkUGl4ZWxzIiwg
IkFycmF5QnVmZmVyVmlldyBub3QgbGFyZ2UgZW5vdWdoIGZvciBkaW1lbnNpb25zIik7Ci0gICAg
ICAgIHJldHVybjsKKyAgICB1bnNpZ25lZCBpbnQgdG90YWxCeXRlc1JlcXVpcmVkID0gMDsKKyAg
ICB1bnNpZ25lZCBpbnQgcGFkZGluZyA9IDA7CisgICAgaWYgKCFtX2lzUm9idXN0bmVzc0VYVFN1
cHBvcnRlZCkgeworICAgICAgICBHQzNEZW51bSBlcnJvciA9IG1fY29udGV4dC0+Y29tcHV0ZUlt
YWdlU2l6ZUluQnl0ZXMoZm9ybWF0LCB0eXBlLCB3aWR0aCwgaGVpZ2h0LCBtX3BhY2tBbGlnbm1l
bnQsICZ0b3RhbEJ5dGVzUmVxdWlyZWQsICZwYWRkaW5nKTsKKyAgICAgICAgaWYgKGVycm9yICE9
IEdyYXBoaWNzQ29udGV4dDNEOjpOT19FUlJPUikgeworICAgICAgICAgICAgc3ludGhlc2l6ZUdM
RXJyb3IoZXJyb3IsICJyZWFkUGl4ZWxzIiwgImludmFsaWQgZGltZW5zaW9ucyIpOworICAgICAg
ICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgICAgIGlmIChwaXhlbHMtPmJ5dGVMZW5ndGgo
KSA8IHRvdGFsQnl0ZXNSZXF1aXJlZCkgeworICAgICAgICAgICAgc3ludGhlc2l6ZUdMRXJyb3Io
R3JhcGhpY3NDb250ZXh0M0Q6OklOVkFMSURfT1BFUkFUSU9OLCAicmVhZFBpeGVscyIsICJBcnJh
eUJ1ZmZlclZpZXcgbm90IGxhcmdlIGVub3VnaCBmb3IgZGltZW5zaW9ucyIpOworICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICB9CiAgICAgfQorCiAgICAgY2xlYXJJZkNvbXBvc2l0ZWQoKTsK
ICAgICB2b2lkKiBkYXRhID0gcGl4ZWxzLT5iYXNlQWRkcmVzcygpOwogCiAgICAgewogICAgICAg
ICBTY29wZWREcmF3aW5nQnVmZmVyQmluZGVyIGJpbmRlcihtX2RyYXdpbmdCdWZmZXIuZ2V0KCks
IG1fZnJhbWVidWZmZXJCaW5kaW5nLmdldCgpKTsKLSAgICAgICAgbV9jb250ZXh0LT5yZWFkUGl4
ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwgdHlwZSwgZGF0YSk7CisgICAgICAgIGlm
IChtX2lzUm9idXN0bmVzc0VYVFN1cHBvcnRlZCkKKyAgICAgICAgICAgIG1fY29udGV4dC0+Z2V0
RXh0ZW5zaW9ucygpLT5yZWFkblBpeGVsc0VYVCh4LCB5LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQs
IHR5cGUsIHBpeGVscy0+Ynl0ZUxlbmd0aCgpLCBkYXRhKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgbV9jb250ZXh0LT5yZWFkUGl4ZWxzKHgsIHksIHdpZHRoLCBoZWlnaHQsIGZvcm1hdCwg
dHlwZSwgZGF0YSk7CiAgICAgfQogCiAjaWYgT1MoREFSV0lOKSB8fCBPUyhRTlgpCisgICAgaWYg
KG1faXNSb2J1c3RuZXNzRVhUU3VwcG9ydGVkKSAvLyB3ZSBoYXZlbid0IGNvbXB1dGVkIHBhZGRp
bmcKKyAgICAgICAgbV9jb250ZXh0LT5jb21wdXRlSW1hZ2VTaXplSW5CeXRlcyhmb3JtYXQsIHR5
cGUsIHdpZHRoLCBoZWlnaHQsIG1fcGFja0FsaWdubWVudCwgJnRvdGFsQnl0ZXNSZXF1aXJlZCwg
JnBhZGRpbmcpOwogICAgIC8vIEZJWE1FOiByZW1vdmUgdGhpcyBzZWN0aW9uIHdoZW4gR0wgZHJp
dmVyIGJ1ZyBvbiBNYWMgQU5EIHRoZSBHTEVTIGRyaXZlciBidWcKICAgICAvLyBvbiBRQyAmIElt
YWdpbmF0aW9uIFFOWCBpcyBmaXhlZCwgaS5lLiwgd2hlbiBhbHBoYSBpcyBvZmYsIHJlYWRQaXhl
bHMgc2hvdWxkCiAgICAgLy8gc2V0IGFscGhhIHRvIDI1NSBpbnN0ZWFkIG9mIDAuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL2NhbnZhcy9XZWJHTFJlbmRlcmluZ0NvbnRleHQuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCmluZGV4
IDRjODkwZWEyMTAyZWE2YmIzZjYzOTYyYjk5ODM3ODg3OGJmMGQwOGUuLmM3MmFjNTkwYTI2OTEy
MTJmNDYwM2JhMzc1Y2U2OGE1MThhN2Y0OGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvY2FudmFzL1dlYkdMUmVuZGVyaW5nQ29udGV4dC5oCkBAIC00OTQsNiArNDk0LDcgQEAgcHVi
bGljOgogICAgIGJvb2wgbV9pc0Vycm9yR2VuZXJhdGVkT25PdXRPZkJvdW5kc0FjY2Vzc2VzOwog
ICAgIGJvb2wgbV9pc1Jlc291cmNlU2FmZTsKICAgICBib29sIG1faXNEZXB0aFN0ZW5jaWxTdXBw
b3J0ZWQ7CisgICAgYm9vbCBtX2lzUm9idXN0bmVzc0VYVFN1cHBvcnRlZDsKIAogICAgIGJvb2wg
bV9zeW50aGVzaXplZEVycm9yc1RvQ29uc29sZTsKICAgICBpbnQgbV9udW1HTEVycm9yc1RvQ29u
c29sZUFsbG93ZWQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9zdXBwb3J0L0V4dGVuc2lvbnMzRENocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL3N1cHBvcnQvRXh0ZW5zaW9uczNEQ2hyb21pdW0uY3BwCmluZGV4IGU3YjFh
MjJjZjliODljNTcwMmI4MmU4NTUwNTI0NDA5NDIzZGI4NzEuLmJmYzE0NWRkZTQ4NGRmNTgyN2M3
MjY5YjlkOWM4YzZmYzAyZWE0N2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2Nocm9taXVtL3N1cHBvcnQvRXh0ZW5zaW9uczNEQ2hyb21pdW0uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL3N1cHBvcnQvRXh0ZW5zaW9uczNEQ2hyb21pdW0uY3Bw
CkBAIC0yOSw2ICsyOSw3IEBACiAKICNpbmNsdWRlICJHcmFwaGljc0NvbnRleHQzRC5oIgogI2lu
Y2x1ZGUgIkdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZS5oIgorI2luY2x1ZGUgIk5vdEltcGxlbWVu
dGVkLmgiCiAjaW5jbHVkZSA8cHVibGljL1dlYkdyYXBoaWNzQ29udGV4dDNELmg+CiAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKQEAgLTE4MSw0ICsxODIsMjAgQEAgdm9pZCBFeHRlbnNpb25zM0RDaHJv
bWl1bTo6c2hhbGxvd0ZsdXNoQ0hST01JVU0oKQogICAgIHJldHVybiBtX3ByaXZhdGUtPndlYkNv
bnRleHQoKS0+c2hhbGxvd0ZsdXNoQ0hST01JVU0oKTsKIH0KIAordm9pZCBFeHRlbnNpb25zM0RD
aHJvbWl1bTo6cmVhZG5QaXhlbHNFWFQoaW50IHgsIGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdD
M0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgR0MzRHNpemVp
IGJ1ZlNpemUsIHZvaWQgKmRhdGEpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKwordm9p
ZCBFeHRlbnNpb25zM0RDaHJvbWl1bTo6Z2V0blVuaWZvcm1mdkVYVChHQzNEdWludCBwcm9ncmFt
LCBpbnQgbG9jYXRpb24sIEdDM0RzaXplaSBidWZTaXplLCBmbG9hdCAqcGFyYW1zKQoreworICAg
IG5vdEltcGxlbWVudGVkKCk7Cit9CisKK3ZvaWQgRXh0ZW5zaW9uczNEQ2hyb21pdW06OmdldG5V
bmlmb3JtaXZFWFQoR0MzRHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQzNEc2l6ZWkgYnVm
U2l6ZSwgaW50ICpwYXJhbXMpCit7CisgICAgbm90SW1wbGVtZW50ZWQoKTsKK30KKworCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9FeHRlbnNpb25zM0QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0V4dGVuc2lvbnMzRC5oCmluZGV4IDdjZjk0MjBmY2EyM2EyYWMwNGNhMmE1YWViNWQ2NzNiMGVl
ZjhlZTMuLjA1ZjMwZmQ0NzFmNzg1ZWY2NTI4NmE2N2RiYmM1NGI2NDBiMTJlMzQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnMzRC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0V4dGVuc2lvbnMzRC5oCkBAIC0xNzcs
NiArMTc3LDExIEBAIHB1YmxpYzoKIAogICAgIC8vIEdMX0NIUk9NSVVNX2NvcHlfdGV4dHVyZQog
ICAgIHZpcnR1YWwgdm9pZCBjb3B5VGV4dHVyZUNIUk9NSVVNKEdDM0RlbnVtLCBQbGF0Zm9ybTNE
T2JqZWN0LCBQbGF0Zm9ybTNET2JqZWN0LCBHQzNEaW50LCBHQzNEZW51bSkgPSAwOworCisgICAg
Ly8gRVhUIFJvYnVzdG5lc3MgLSB1c2VzIGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIKKyAgICB2
aXJ0dWFsIHZvaWQgcmVhZG5QaXhlbHNFWFQoaW50IHgsIGludCB5LCBHQzNEc2l6ZWkgd2lkdGgs
IEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgR0MzRHNp
emVpIGJ1ZlNpemUsIHZvaWQgKmRhdGEpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0blVuaWZv
cm1mdkVYVChHQzNEdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDM0RzaXplaSBidWZTaXpl
LCBmbG9hdCAqcGFyYW1zKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGdldG5Vbmlmb3JtaXZFWFQo
R0MzRHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQzNEc2l6ZWkgYnVmU2l6ZSwgaW50ICpw
YXJhbXMpID0gMDsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvR3JhcGhpY3NDb250ZXh0
M0RCbGFja0JlcnJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNr
YmVycnkvR3JhcGhpY3NDb250ZXh0M0RCbGFja0JlcnJ5LmNwcAppbmRleCAzNjk4ZmQyNWYxMjlj
MmM0MDc2ZDUzOWE4M2ViOWEyZGE2MWI3ZGUzLi4yMzRlNjhmNWRiN2Y1N2FjMTZlZWVkNTRkNWFj
YzMxOTMyYjZkNWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9ibGFja2JlcnJ5L0dyYXBoaWNzQ29udGV4dDNEQmxhY2tCZXJyeS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9HcmFwaGljc0NvbnRleHQzREJs
YWNrQmVycnkuY3BwCkBAIC0zODgsOCArMzg4LDkgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6
cGFpbnRUb0NhbnZhcyhjb25zdCB1bnNpZ25lZCBjaGFyKiBpbWFnZVBpeGVscywgaW50IGltYWcK
ICAgICBjb250ZXh0LT5kcmF3SW1hZ2UoYml0bWFwSW1hZ2UuZ2V0KCksIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGRzdCwgc3JjLCBDb21wb3NpdGVDb3B5LCBSZXNwZWN0SW1hZ2VPcmllbnRhdGlvbiwg
ZmFsc2UpOwogfQogCi12b2lkIEdyYXBoaWNzQ29udGV4dDNEOjpzZXRDb250ZXh0TG9zdENhbGxi
YWNrKFBhc3NPd25QdHI8Q29udGV4dExvc3RDYWxsYmFjaz4pCit2b2lkIEdyYXBoaWNzQ29udGV4
dDNEOjpzZXRDb250ZXh0TG9zdENhbGxiYWNrKFBhc3NPd25QdHI8Q29udGV4dExvc3RDYWxsYmFj
az4gY2FsbGJhY2spCiB7CisgICAgc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNET3BlbkdMRVMqPihn
ZXRFeHRlbnNpb25zKCkpLT5zZXRFWFRDb250ZXh0TG9zdENhbGxiYWNrKGNhbGxiYWNrKTsKIH0K
IAogdm9pZCBHcmFwaGljc0NvbnRleHQzRDo6c2V0RXJyb3JNZXNzYWdlQ2FsbGJhY2soUGFzc093
blB0cjxFcnJvck1lc3NhZ2VDYWxsYmFjaz4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVyLmNwcAppbmRl
eCBiM2NlMjM1MWJmZWE3ZDQwMTdiYWEyYjEyOTlmZThkMGFkMTJhZjdhLi5kYjIxOGE1NGU5OTc0
Y2VkNGE0MjdjZjY1OWExZTViZmI5NGEwMDE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9ibGFja2JlcnJ5L0xheWVyUmVuZGVyZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2JsYWNrYmVycnkvTGF5ZXJSZW5kZXJlci5jcHAK
QEAgLTQzLDYgKzQzLDcgQEAKIAogI2luY2x1ZGUgPEJsYWNrQmVycnlQbGF0Zm9ybUdyYXBoaWNz
Lmg+CiAjaW5jbHVkZSA8QmxhY2tCZXJyeVBsYXRmb3JtTG9nLmg+CisjaW5jbHVkZSA8RUdML2Vn
bC5oPgogI2luY2x1ZGUgPGxpbWl0cz4KICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CiAK
QEAgLTE1OSw4ICsxNjAsMTUgQEAgTGF5ZXJSZW5kZXJlcjo6TGF5ZXJSZW5kZXJlcihHTEVTMkNv
bnRleHQqIGNvbnRleHQpCiAgICAgLCBtX2N1cnJlbnRMYXllclJlbmRlcmVyU3VyZmFjZSgwKQog
ICAgICwgbV9jbGVhclN1cmZhY2VPbkRyYXdMYXllcnModHJ1ZSkKICAgICAsIG1fY29udGV4dChj
b250ZXh0KQorICAgICwgbV9pc1JvYnVzdG5lc3NTdXBwb3J0ZWQoZmFsc2UpCiAgICAgLCBtX25l
ZWRzQ29tbWl0KGZhbHNlKQogeworICAgIGlmIChtYWtlQ29udGV4dEN1cnJlbnQoKSkgeworICAg
ICAgICBtX2lzUm9idXN0bmVzc1N1cHBvcnRlZCA9IFN0cmluZyhyZWludGVycHJldF9jYXN0PGNv
bnN0IGNoYXIqPig6OmdsR2V0U3RyaW5nKEdMX0VYVEVOU0lPTlMpKSkuY29udGFpbnMoIkdMX0VY
VF9yb2J1c3RuZXNzIik7CisgICAgICAgIGlmIChtX2lzUm9idXN0bmVzc1N1cHBvcnRlZCkKKyAg
ICAgICAgICAgIG1fZ2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVzRVhUID0gcmVpbnRlcnByZXRfY2Fz
dDxQRk5HTEdFVEdSQVBISUNTUkVTRVRTVEFUVVNFWFRQUk9DPihlZ2xHZXRQcm9jQWRkcmVzcygi
Z2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVzRVhUIikpOworICAgIH0KKwogICAgIGZvciAoaW50IGkg
PSAwOyBpIDwgTGF5ZXJEYXRhOjpOdW1iZXJPZkxheWVyUHJvZ3JhbVNoYWRlcnM7ICsraSkKICAg
ICAgICAgbV9sYXllclByb2dyYW1PYmplY3RbaV0gPSAwOwogCkBAIC05OTgsNyArMTAwNiwxNCBA
QCB2b2lkIExheWVyUmVuZGVyZXI6OnVwZGF0ZVNjaXNzb3JJZk5lZWRlZChjb25zdCBGbG9hdFJl
Y3QmIGNsaXBSZWN0KQogCiBib29sIExheWVyUmVuZGVyZXI6Om1ha2VDb250ZXh0Q3VycmVudCgp
CiB7Ci0gICAgcmV0dXJuIG1fY29udGV4dC0+bWFrZUN1cnJlbnQoKTsKKyAgICBib29sIHJldCA9
IG1fY29udGV4dC0+bWFrZUN1cnJlbnQoKTsKKyAgICBpZiAocmV0ICYmIG1faXNSb2J1c3RuZXNz
U3VwcG9ydGVkKSB7CisgICAgICAgIGlmIChtX2dsR2V0R3JhcGhpY3NSZXNldFN0YXR1c0VYVCgp
ICE9IEdMX05PX0VSUk9SKSB7CisgICAgICAgICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6bG9n
QWx3YXlzKEJsYWNrQmVycnk6OlBsYXRmb3JtOjpMb2dMZXZlbENyaXRpY2FsLCAiUm9idXN0IE9w
ZW5HTCBjb250ZXh0IGhhcyBiZWVuIHJlc2V0LiBBYm9ydGluZy4iKTsKKyAgICAgICAgICAgIENS
QVNIKCk7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJldDsKIH0KIAogLy8gQmluZHMg
dGhlIGdpdmVuIGF0dHJpYnV0ZSBuYW1lIHRvIGEgY29tbW9uIGxvY2F0aW9uIGFjcm9zcyBhbGwg
cHJvZ3JhbXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Js
YWNrYmVycnkvTGF5ZXJSZW5kZXJlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVyLmgKaW5kZXggNDM3OTI3YmVlYWM4YTA0ODdiNDE0
ZWY1NDcwN2ZiMzQxNzZhNDhlYy4uMzUzYjdlY2E4NjhhMzJkYWU1MWM3YjZmZDEyNzMzMmJjZThm
ZDA4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYmxhY2ti
ZXJyeS9MYXllclJlbmRlcmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYmxhY2tiZXJyeS9MYXllclJlbmRlcmVyLmgKQEAgLTI5LDEyICsyOSwxMiBAQAogICogT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KICAqLwogCi0KICNpZm5kZWYgTGF5ZXJSZW5kZXJlcl9oCiAjZGVmaW5lIExheWVy
UmVuZGVyZXJfaAogCiAjaWYgVVNFKEFDQ0VMRVJBVEVEX0NPTVBPU0lUSU5HKQogCisjaW5jbHVk
ZSAiRXh0ZW5zaW9uczNET3BlbkdMRVMuaCIKICNpbmNsdWRlICJJbnRSZWN0LmgiCiAjaW5jbHVk
ZSAiTGF5ZXJEYXRhLmgiCiAjaW5jbHVkZSAiTGF5ZXJGaWx0ZXJSZW5kZXJlci5oIgpAQCAtMjA3
LDYgKzIwNyw5IEBAIHByaXZhdGU6CiAKICAgICBCbGFja0JlcnJ5OjpQbGF0Zm9ybTo6R3JhcGhp
Y3M6OkdMRVMyQ29udGV4dCogbV9jb250ZXh0OwogCisgICAgYm9vbCBtX2lzUm9idXN0bmVzc1N1
cHBvcnRlZDsKKyAgICBQRk5HTEdFVEdSQVBISUNTUkVTRVRTVEFUVVNFWFRQUk9DIG1fZ2xHZXRH
cmFwaGljc1Jlc2V0U3RhdHVzRVhUOworCiAgICAgTGF5ZXJSZW5kZXJpbmdSZXN1bHRzIG1fbGFz
dFJlbmRlcmluZ1Jlc3VsdHM7CiAgICAgYm9vbCBtX25lZWRzQ29tbWl0OwogfTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0V4dGVuc2lvbnMz
RENocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9F
eHRlbnNpb25zM0RDaHJvbWl1bS5oCmluZGV4IDgwNWUyMGE3OWQwZDA5Yzg5MTI5NGI2OWYzYjYz
OGQzNWE2MTMxNDYuLjJkZjMxNTY3Mjg4NjRmOTNhZjg3NWU1N2VlOTlkNDRjZmIwODUxZDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0V4dGVu
c2lvbnMzRENocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
Y2hyb21pdW0vRXh0ZW5zaW9uczNEQ2hyb21pdW0uaApAQCAtMTI2LDYgKzEyNiwxMSBAQCBwdWJs
aWM6CiAgICAgLy8gR0xfQ0hST01JVU1fc2hhbGxvd19mbHVzaAogICAgIHZpcnR1YWwgdm9pZCBz
aGFsbG93Rmx1c2hDSFJPTUlVTSgpOwogCisgICAgLy8gR0xfRVhUX3JvYnVzdG5lc3MKKyAgICB2
aXJ0dWFsIHZvaWQgcmVhZG5QaXhlbHNFWFQoaW50IHgsIGludCB5LCBHQzNEc2l6ZWkgd2lkdGgs
IEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgR0MzRHNp
emVpIGJ1ZlNpemUsIHZvaWQgKmRhdGEpOworICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2
RVhUKEdDM0R1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0MzRHNpemVpIGJ1ZlNpemUsIGZs
b2F0ICpwYXJhbXMpOworICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDM0R1aW50
IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0MzRHNpemVpIGJ1ZlNpemUsIGludCAqcGFyYW1zKTsK
KwogcHJpdmF0ZToKICAgICAvLyBJbnN0YW5jZXMgb2YgdGhpcyBjbGFzcyBhcmUgc3RyaWN0bHkg
b3duZWQgYnkgdGhlIEdyYXBoaWNzQ29udGV4dDNEIGltcGxlbWVudGF0aW9uIGFuZCBkbyBub3QK
ICAgICAvLyBuZWVkIHRvIGJlIGluc3RhbnRpYXRlZCBieSBhbnkgb3RoZXIgY29kZS4KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25z
M0RPcGVuR0xDb21tb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnMzRE9wZW5HTENvbW1vbi5jcHAKaW5kZXggNWE2Mjg4MTBkZmQxMjc2NzA2
MGVhMGY0ZTYyMTgwMmM2OWEzYThlYi4uM2JiYjZjNzM3ZjE5Y2VjMDUwNDhmZTM5MWQxZTc1OGRj
ZDVhYzRkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3Bl
bmdsL0V4dGVuc2lvbnMzRE9wZW5HTENvbW1vbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTENvbW1vbi5jcHAKQEAgLTE0
Myw2ICsxNDMsMjEgQEAgdm9pZCBFeHRlbnNpb25zM0RPcGVuR0xDb21tb246OmluaXRpYWxpemVB
dmFpbGFibGVFeHRlbnNpb25zKCkKICAgICBtX2luaXRpYWxpemVkQXZhaWxhYmxlRXh0ZW5zaW9u
cyA9IHRydWU7CiB9CiAKK3ZvaWQgRXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uOjpyZWFkblBpeGVs
c0VYVChpbnQsIGludCwgR0MzRHNpemVpLCBHQzNEc2l6ZWksIEdDM0RlbnVtLCBHQzNEZW51bSwg
R0MzRHNpemVpLCB2b2lkICopCit7CisgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihH
TF9JTlZBTElEX09QRVJBVElPTik7Cit9CisKK3ZvaWQgRXh0ZW5zaW9uczNET3BlbkdMQ29tbW9u
OjpnZXRuVW5pZm9ybWZ2RVhUKEdDM0R1aW50LCBpbnQsIEdDM0RzaXplaSwgZmxvYXQgKikKK3sK
KyAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsK
K30KKwordm9pZCBFeHRlbnNpb25zM0RPcGVuR0xDb21tb246OmdldG5Vbmlmb3JtaXZFWFQoR0Mz
RHVpbnQsIGludCwgR0MzRHNpemVpLCBpbnQgKikKK3sKKyAgICBtX2NvbnRleHQtPnN5bnRoZXNp
emVHTEVycm9yKEdMX0lOVkFMSURfT1BFUkFUSU9OKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQogCiAjZW5kaWYgLy8gVVNFKDNEX0dSQVBISUNTKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTENvbW1vbi5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9w
ZW5HTENvbW1vbi5oCmluZGV4IDZhNjFlNDYzMmJlODE2NTc3OTRmZDM3N2Q4YzUxNmI4MGZlOTYy
ZTcuLjc1ODY5ZGUxOTk2ZTMxMThhZTRjMmMzZGIxOTc2YTcwNjY4Zjk0OTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVu
R0xDb21tb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9vcGVuZ2wv
RXh0ZW5zaW9uczNET3BlbkdMQ29tbW9uLmgKQEAgLTUyLDYgKzUyLDExIEBAIHB1YmxpYzoKIAog
ICAgIHZpcnR1YWwgU3RyaW5nIGdldFRyYW5zbGF0ZWRTaGFkZXJTb3VyY2VBTkdMRShQbGF0Zm9y
bTNET2JqZWN0KTsKIAorICAgIC8vIEVYVCBSb2J1c3RuZXNzIC0gdXNlcyBnZXRHcmFwaGljc1Jl
c2V0U3RhdHVzQVJCKCkKKyAgICB2aXJ0dWFsIHZvaWQgcmVhZG5QaXhlbHNFWFQoaW50IHgsIGlu
dCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwg
R0MzRGVudW0gdHlwZSwgR0MzRHNpemVpIGJ1ZlNpemUsIHZvaWQgKmRhdGEpOworICAgIHZpcnR1
YWwgdm9pZCBnZXRuVW5pZm9ybWZ2RVhUKEdDM0R1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwg
R0MzRHNpemVpIGJ1ZlNpemUsIGZsb2F0ICpwYXJhbXMpOworICAgIHZpcnR1YWwgdm9pZCBnZXRu
VW5pZm9ybWl2RVhUKEdDM0R1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0MzRHNpemVpIGJ1
ZlNpemUsIGludCAqcGFyYW1zKTsKKwogcHJvdGVjdGVkOgogICAgIGZyaWVuZCBjbGFzcyBFeHRl
bnNpb25zM0RPcGVuR0xFUzsKICAgICBFeHRlbnNpb25zM0RPcGVuR0xDb21tb24oR3JhcGhpY3ND
b250ZXh0M0QqKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xFUy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9vcGVuZ2wvRXh0ZW5zaW9uczNET3BlbkdMRVMuY3BwCmluZGV4IGIzYTkzMDAw
MWJhZGVlMDdiMGY1ZWJjZTZhMDNlMTQwODZjNDJiYjAuLjRhZGU3ZTU1NGE5MTlkOWY5MGZmNTAx
MDJjNDg3MTIyY2JmMjlkMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xFUy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTEVTLmNwcApAQCAt
MzMsMTEgKzMzLDE1IEBACiAjaW5jbHVkZSA8RUdML2VnbC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIAorI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkpCisjaW5jbHVkZSA8QmxhY2tCZXJyeVBs
YXRmb3JtTG9nLmg+CisjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBFeHRlbnNpb25z
M0RPcGVuR0xFUzo6RXh0ZW5zaW9uczNET3BlbkdMRVMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRl
eHQpCiAgICAgOiBFeHRlbnNpb25zM0RPcGVuR0xDb21tb24oY29udGV4dCkKKyAgICAsIG1fY29u
dGV4dFJlc2V0U3RhdHVzKEdMX05PX0VSUk9SKQogICAgICwgbV9zdXBwb3J0c09FU3ZlcnRleEFy
cmF5T2JqZWN0KGZhbHNlKQogICAgICwgbV9zdXBwb3J0c0lNR011bHRpc2FtcGxlZFJlbmRlclRv
VGV4dHVyZShmYWxzZSkKICAgICAsIG1fZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRE11bHRpc2FtcGxl
SU1HKDApCkBAIC00Niw2ICs1MCwxMCBAQCBFeHRlbnNpb25zM0RPcGVuR0xFUzo6RXh0ZW5zaW9u
czNET3BlbkdMRVMoR3JhcGhpY3NDb250ZXh0M0QqIGNvbnRleHQpCiAgICAgLCBtX2dsRGVsZXRl
VmVydGV4QXJyYXlzT0VTKDApCiAgICAgLCBtX2dsR2VuVmVydGV4QXJyYXlzT0VTKDApCiAgICAg
LCBtX2dsSXNWZXJ0ZXhBcnJheU9FUygwKQorICAgICwgbV9nbEdldEdyYXBoaWNzUmVzZXRTdGF0
dXNFWFQoMCkKKyAgICAsIG1fZ2xSZWFkblBpeGVsc0VYVCgwKQorICAgICwgbV9nbEdldG5Vbmlm
b3JtZnZFWFQoMCkKKyAgICAsIG1fZ2xHZXRuVW5pZm9ybWl2RVhUKDApCiB7CiB9CiAKQEAgLTEz
Nyw2ICsxNDUsNzcgQEAgdm9pZCBFeHRlbnNpb25zM0RPcGVuR0xFUzo6YmluZFZlcnRleEFycmF5
T0VTKFBsYXRmb3JtM0RPYmplY3QgYXJyYXkpCiAgICAgICAgIG1fY29udGV4dC0+c3ludGhlc2l6
ZUdMRXJyb3IoR0xfSU5WQUxJRF9PUEVSQVRJT04pOwogfQogCitpbnQgRXh0ZW5zaW9uczNET3Bl
bkdMRVM6OmdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKQoreworICAgIC8vIEZJWE1FOiBUaGlz
IGRvZXMgbm90IGNhbGwgZ2V0R3JhcGhpY3NSZXNldFN0YXR1c0FSQiwgYnV0IGluc3RlYWQgZ2V0
R3JhcGhpY3NSZXNldFN0YXR1c0VYVC4KKyAgICAvLyBUaGUgcmV0dXJuIGNvZGVzIGZyb20gdGhl
IHR3byBleHRlbnNpb25zIGFyZSBpZGVudGljYWwgYW5kIHRoZWlyIHB1cnBvc2UgaXMgdGhlIHNh
bWUsIHNvIGl0CisgICAgLy8gbWF5IGJlIGJlc3QgdG8gcmVuYW1lIGdldEdyYXBoaWNzUmVzZXRT
dGF0dXNBUkIoKSB0byBnZXRHcmFwaGljc1Jlc2V0U3RhdHVzKCkuCisgICAgaWYgKG1fY29udGV4
dFJlc2V0U3RhdHVzICE9IEdMX05PX0VSUk9SKQorICAgICAgICByZXR1cm4gbV9jb250ZXh0UmVz
ZXRTdGF0dXM7CisgICAgaWYgKG1fZ2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVzRVhUKSB7CisgICAg
ICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAgICAgIGludCByZWFzb25G
b3JSZXNldCA9IG1fZ2xHZXRHcmFwaGljc1Jlc2V0U3RhdHVzRVhUKCk7CisgICAgICAgIGlmIChy
ZWFzb25Gb3JSZXNldCAhPSBHTF9OT19FUlJPUikgeworI2lmIFBMQVRGT1JNKEJMQUNLQkVSUlkp
CisgICAgICAgICAgICAvLyBXZSBjYW5ub3QgeWV0IHJlY3JlYXRlIG91ciBjb21wb3NpdGluZyB0
aHJlYWQsIHNvIGp1c3QgcXVpdC4KKyAgICAgICAgICAgIEJsYWNrQmVycnk6OlBsYXRmb3JtOjps
b2dBbHdheXMoQmxhY2tCZXJyeTo6UGxhdGZvcm06OkxvZ0xldmVsQ3JpdGljYWwsICJSb2J1c3Qg
T3BlbkdMIGNvbnRleHQgaGFzIGJlZW4gcmVzZXQuIEFib3J0aW5nLiIpOworICAgICAgICAgICAg
Q1JBU0goKTsKKyNlbmRpZgorICAgICAgICAgICAgQVNTRVJUKG1fY29udGV4dExvc3RDYWxsYmFj
ayk7CisgICAgICAgICAgICBpZiAobV9jb250ZXh0TG9zdENhbGxiYWNrKQorICAgICAgICAgICAg
ICAgIG1fY29udGV4dExvc3RDYWxsYmFjay0+b25Db250ZXh0TG9zdCgpOworICAgICAgICAgICAg
bV9jb250ZXh0UmVzZXRTdGF0dXMgPSByZWFzb25Gb3JSZXNldDsKKyAgICAgICAgfQorICAgICAg
ICByZXR1cm4gcmVhc29uRm9yUmVzZXQ7CisgICAgfQorCisgICAgbV9jb250ZXh0LT5zeW50aGVz
aXplR0xFcnJvcihHTF9JTlZBTElEX09QRVJBVElPTik7CisgICAgcmV0dXJuIGZhbHNlOworfQor
Cit2b2lkIEV4dGVuc2lvbnMzRE9wZW5HTEVTOjpzZXRFWFRDb250ZXh0TG9zdENhbGxiYWNrKFBh
c3NPd25QdHI8R3JhcGhpY3NDb250ZXh0M0Q6OkNvbnRleHRMb3N0Q2FsbGJhY2s+IGNhbGxiYWNr
KQoreworICAgIG1fY29udGV4dExvc3RDYWxsYmFjayA9IGNhbGxiYWNrOworfQorCit2b2lkIEV4
dGVuc2lvbnMzRE9wZW5HTEVTOjpyZWFkblBpeGVsc0VYVChpbnQgeCwgaW50IHksIEdDM0RzaXpl
aSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNEZW51bSB0eXBl
LCBHQzNEc2l6ZWkgYnVmU2l6ZSwgdm9pZCAqZGF0YSkKK3sKKyAgICBpZiAobV9nbFJlYWRuUGl4
ZWxzRVhUKSB7CisgICAgICAgIG1fY29udGV4dC0+bWFrZUNvbnRleHRDdXJyZW50KCk7CisgICAg
ICAgIC8vIEZJWE1FOiByZW1vdmUgdGhlIHR3byBnbEZsdXNoIGNhbGxzIHdoZW4gdGhlIGRyaXZl
ciBidWcgaXMgZml4ZWQsIGkuZS4sCisgICAgICAgIC8vIGFsbCBwcmV2aW91cyByZW5kZXJpbmcg
Y2FsbHMgc2hvdWxkIGJlIGRvbmUgYmVmb3JlIHJlYWRpbmcgcGl4ZWxzLgorICAgICAgICA6Omds
Rmx1c2goKTsKKworICAgICAgICAvLyBGSVhNRTogSWYgbm9uLUJsYWNrQmVycnkgcGxhdGZvcm1z
IHVzZSB0aGlzLCB0aGV5IHdpbGwgbmVlZCB0byBpbXBsZW1lbnQKKyAgICAgICAgLy8gdGhlaXIg
YW50aS1hbGlhc2luZyBjb2RlIGhlcmUuCisgICAgICAgIG1fZ2xSZWFkblBpeGVsc0VYVCh4LCB5
LCB3aWR0aCwgaGVpZ2h0LCBmb3JtYXQsIHR5cGUsIGJ1ZlNpemUsIGRhdGEpOworICAgICAgICBy
ZXR1cm47CisgICAgfQorCisgICAgbV9jb250ZXh0LT5zeW50aGVzaXplR0xFcnJvcihHTF9JTlZB
TElEX09QRVJBVElPTik7Cit9CisKK3ZvaWQgRXh0ZW5zaW9uczNET3BlbkdMRVM6OmdldG5Vbmlm
b3JtZnZFWFQoR0MzRHVpbnQgcHJvZ3JhbSwgaW50IGxvY2F0aW9uLCBHQzNEc2l6ZWkgYnVmU2l6
ZSwgZmxvYXQgKnBhcmFtcykKK3sKKyAgICBpZiAobV9nbEdldG5Vbmlmb3JtZnZFWFQpIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICAgICAgbV9nbEdldG5V
bmlmb3JtZnZFWFQocHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIHBhcmFtcyk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKK30KKwordm9pZCBFeHRlbnNpb25zM0RPcGVuR0xFUzo6Z2V0blVu
aWZvcm1pdkVYVChHQzNEdWludCBwcm9ncmFtLCBpbnQgbG9jYXRpb24sIEdDM0RzaXplaSBidWZT
aXplLCBpbnQgKnBhcmFtcykKK3sKKyAgICBpZiAobV9nbEdldG5Vbmlmb3JtaXZFWFQpIHsKKyAg
ICAgICAgbV9jb250ZXh0LT5tYWtlQ29udGV4dEN1cnJlbnQoKTsKKyAgICAgICAgbV9nbEdldG5V
bmlmb3JtaXZFWFQocHJvZ3JhbSwgbG9jYXRpb24sIGJ1ZlNpemUsIHBhcmFtcyk7CisgICAgICAg
IHJldHVybjsKKyAgICB9CisKKyAgICBtX2NvbnRleHQtPnN5bnRoZXNpemVHTEVycm9yKEdMX0lO
VkFMSURfT1BFUkFUSU9OKTsKK30KIAogYm9vbCBFeHRlbnNpb25zM0RPcGVuR0xFUzo6c3VwcG9y
dHNFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBuYW1lKQogewpAQCAtMTUxLDYgKzIzMCwxMSBAQCBi
b29sIEV4dGVuc2lvbnMzRE9wZW5HTEVTOjpzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcm
IG5hbWUpCiAgICAgICAgICAgICBtX2dsRnJhbWVidWZmZXJUZXh0dXJlMkRNdWx0aXNhbXBsZUlN
RyA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xGUkFNRUJVRkZFUlRFWFRVUkUyRE1VTFRJU0FNUExF
SU1HPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xGcmFtZWJ1ZmZlclRleHR1cmUyRE11bHRpc2FtcGxl
SU1HIikpOwogICAgICAgICAgICAgbV9nbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUlN
RyA9IHJlaW50ZXJwcmV0X2Nhc3Q8UEZOR0xSRU5ERVJCVUZGRVJTVE9SQUdFTVVMVElTQU1QTEVJ
TUc+KGVnbEdldFByb2NBZGRyZXNzKCJnbFJlbmRlcmJ1ZmZlclN0b3JhZ2VNdWx0aXNhbXBsZUlN
RyIpKTsKICAgICAgICAgICAgIG1fc3VwcG9ydHNJTUdNdWx0aXNhbXBsZWRSZW5kZXJUb1RleHR1
cmUgPSB0cnVlOworICAgICAgICB9IGVsc2UgaWYgKG5hbWUgPT0gIkdMX0VYVF9yb2J1c3RuZXNz
IiAmJiAhbV9nbEdldEdyYXBoaWNzUmVzZXRTdGF0dXNFWFQpIHsKKyAgICAgICAgICAgIG1fZ2xH
ZXRHcmFwaGljc1Jlc2V0U3RhdHVzRVhUID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFVEdSQVBI
SUNTUkVTRVRTVEFUVVNFWFRQUk9DPihlZ2xHZXRQcm9jQWRkcmVzcygiZ2xHZXRHcmFwaGljc1Jl
c2V0U3RhdHVzRVhUIikpOworICAgICAgICAgICAgbV9nbFJlYWRuUGl4ZWxzRVhUID0gcmVpbnRl
cnByZXRfY2FzdDxQRk5HTFJFQUROUElYRUxTRVhUUFJPQz4oZWdsR2V0UHJvY0FkZHJlc3MoImds
UmVhZG5QaXhlbHNFWFQiKSk7CisgICAgICAgICAgICBtX2dsR2V0blVuaWZvcm1mdkVYVCA9IHJl
aW50ZXJwcmV0X2Nhc3Q8UEZOR0xHRVROVU5JRk9STUZWRVhUUFJPQz4oZWdsR2V0UHJvY0FkZHJl
c3MoImdsR2V0blVuaWZvcm1mdkVYVCIpKTsKKyAgICAgICAgICAgIG1fZ2xHZXRuVW5pZm9ybWl2
RVhUID0gcmVpbnRlcnByZXRfY2FzdDxQRk5HTEdFVE5VTklGT1JNSVZFWFRQUk9DPihlZ2xHZXRQ
cm9jQWRkcmVzcygiZ2xHZXRuVW5pZm9ybWl2RVhUIikpOwogICAgICAgICB9CiAgICAgICAgIHJl
dHVybiB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL29wZW5nbC9FeHRlbnNpb25zM0RPcGVuR0xFUy5oIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTEVTLmgKaW5kZXggZmNmNzJk
NmI1ZTM4ZDc2Mjc4MWI0NWQ4ZThhODQ4MDgwYmE1MjZjYy4uMTg4NTg4MGYyODdmNWVmZDdjODNi
NGFlNTgyNjFiZmM5Y2M0MDZjYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTEVTLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvb3BlbmdsL0V4dGVuc2lvbnMzRE9wZW5HTEVTLmgKQEAgLTM4
LDYgKzM4LDMxIEBACiAjZGVmaW5lIFBGTkdMUkVOREVSQlVGRkVSU1RPUkFHRU1VTFRJU0FNUExF
SU1HIFBGTkdMUkVOREVSQlVGRkVSU1RPUkFHRU1VTFRJU0FNUExFSU1HUFJPQwogI2VuZGlmCiAK
KyNpZm5kZWYgR0xfRVhUX3JvYnVzdG5lc3MKKy8qIHJldXNlIEdMX05PX0VSUk9SICovCisjZGVm
aW5lIEdMX0dVSUxUWV9DT05URVhUX1JFU0VUX0VYVCAweDgyNTMKKyNkZWZpbmUgR0xfSU5OT0NF
TlRfQ09OVEVYVF9SRVNFVF9FWFQgMHg4MjU0CisjZGVmaW5lIEdMX1VOS05PV05fQ09OVEVYVF9S
RVNFVF9FWFQgMHg4MjU1CisjZGVmaW5lIEdMX0NPTlRFWFRfUk9CVVNUX0FDQ0VTU19FWFQgMHg5
MEYzCisjZGVmaW5lIEdMX1JFU0VUX05PVElGSUNBVElPTl9TVFJBVEVHWV9FWFQgMHg4MjU2Cisj
ZGVmaW5lIEdMX0xPU0VfQ09OVEVYVF9PTl9SRVNFVF9FWFQgMHg4MjUyCisjZGVmaW5lIEdMX05P
X1JFU0VUX05PVElGSUNBVElPTl9FWFQgMHg4MjYxCisjZW5kaWYKKworI2lmbmRlZiBHTF9FWFRf
cm9idXN0bmVzcworI2RlZmluZSBHTF9FWFRfcm9idXN0bmVzcyAxCisjaWZkZWYgR0xfR0xFWFRf
UFJPVE9UWVBFUworR0xfQVBJQ0FMTCBHQzNEZW51bSBHTF9BUElFTlRSWSBnbEdldEdyYXBoaWNz
UmVzZXRTdGF0dXNFWFQodm9pZCk7CitHTF9BUElDQUxMIHZvaWQgR0xfQVBJRU5UUlkgZ2xSZWFk
blBpeGVsc0VYVChHTGludCB4LCBHTGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0RzaXplaSBo
ZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgR0MzRHNpemVpIGJ1ZlNpemUs
IHZvaWQgKmRhdGEpOworR0xfQVBJQ0FMTCB2b2lkIEdMX0FQSUVOVFJZIGdsR2V0blVuaWZvcm1m
dkVYVChHTHVpbnQgcHJvZ3JhbSwgR0xpbnQgbG9jYXRpb24sIEdDM0RzaXplaSBidWZTaXplLCBm
bG9hdCAqcGFyYW1zKTsKK0dMX0FQSUNBTEwgdm9pZCBHTF9BUElFTlRSWSBnbEdldG5Vbmlmb3Jt
aXZFWFQoR0x1aW50IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHQzNEc2l6ZWkgYnVmU2l6ZSwg
R0xpbnQgKnBhcmFtcyk7CisjZW5kaWYKK3R5cGVkZWYgR0MzRGVudW0gKEdMX0FQSUVOVFJZUCBQ
Rk5HTEdFVEdSQVBISUNTUkVTRVRTVEFUVVNFWFRQUk9DKSAodm9pZCk7Cit0eXBlZGVmIHZvaWQg
KEdMX0FQSUVOVFJZUCBQRk5HTFJFQUROUElYRUxTRVhUUFJPQykgKEdMaW50IHgsIEdMaW50IHks
IEdDM0RzaXplaSB3aWR0aCwgR0MzRHNpemVpIGhlaWdodCwgR0MzRGVudW0gZm9ybWF0LCBHQzNE
ZW51bSB0eXBlLCBHQzNEc2l6ZWkgYnVmU2l6ZSwgdm9pZCAqZGF0YSk7Cit0eXBlZGVmIHZvaWQg
KEdMX0FQSUVOVFJZUCBQRk5HTEdFVE5VTklGT1JNRlZFWFRQUk9DKSAoR0x1aW50IHByb2dyYW0s
IEdMaW50IGxvY2F0aW9uLCBHQzNEc2l6ZWkgYnVmU2l6ZSwgZmxvYXQgKnBhcmFtcyk7Cit0eXBl
ZGVmIHZvaWQgKEdMX0FQSUVOVFJZUCBQRk5HTEdFVE5VTklGT1JNSVZFWFRQUk9DKSAoR0x1aW50
IHByb2dyYW0sIEdMaW50IGxvY2F0aW9uLCBHQzNEc2l6ZWkgYnVmU2l6ZSwgR0xpbnQgKnBhcmFt
cyk7CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBFeHRlbnNpb25zM0RP
cGVuR0xFUyA6IHB1YmxpYyBFeHRlbnNpb25zM0RPcGVuR0xDb21tb24gewpAQCAtNTcsNiArODIs
MTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgR0MzRGJvb2xlYW4gaXNWZXJ0ZXhBcnJheU9FUyhQ
bGF0Zm9ybTNET2JqZWN0KTsKICAgICB2aXJ0dWFsIHZvaWQgYmluZFZlcnRleEFycmF5T0VTKFBs
YXRmb3JtM0RPYmplY3QpOwogCisgICAgLy8gRVhUIFJvYnVzdG5lc3MgLSByZXNldAorICAgIHZp
cnR1YWwgaW50IGdldEdyYXBoaWNzUmVzZXRTdGF0dXNBUkIoKTsKKyAgICB2b2lkIHNldEVYVENv
bnRleHRMb3N0Q2FsbGJhY2soUGFzc093blB0cjxHcmFwaGljc0NvbnRleHQzRDo6Q29udGV4dExv
c3RDYWxsYmFjaz4pOworCisgICAgLy8gRVhUIFJvYnVzdG5lc3MgLSBldGMKKyAgICB2aXJ0dWFs
IHZvaWQgcmVhZG5QaXhlbHNFWFQoaW50IHgsIGludCB5LCBHQzNEc2l6ZWkgd2lkdGgsIEdDM0Rz
aXplaSBoZWlnaHQsIEdDM0RlbnVtIGZvcm1hdCwgR0MzRGVudW0gdHlwZSwgR0MzRHNpemVpIGJ1
ZlNpemUsIHZvaWQgKmRhdGEpOworICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWZ2RVhUKEdD
M0R1aW50IHByb2dyYW0sIGludCBsb2NhdGlvbiwgR0MzRHNpemVpIGJ1ZlNpemUsIGZsb2F0ICpw
YXJhbXMpOworICAgIHZpcnR1YWwgdm9pZCBnZXRuVW5pZm9ybWl2RVhUKEdDM0R1aW50IHByb2dy
YW0sIGludCBsb2NhdGlvbiwgR0MzRHNpemVpIGJ1ZlNpemUsIGludCAqcGFyYW1zKTsKKwogcHJv
dGVjdGVkOgogICAgIC8vIFRoaXMgY2xhc3Mgb25seSBuZWVkcyB0byBiZSBpbnN0YW50aWF0ZWQg
YnkgR3JhcGhpY3NDb250ZXh0M0QgaW1wbGVtZW50YXRpb25zLgogICAgIGZyaWVuZCBjbGFzcyBH
cmFwaGljc0NvbnRleHQzRDsKQEAgLTY1LDYgKzk5LDggQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgYm9vbCBzdXBwb3J0c0V4dGVuc2lvbihjb25zdCBTdHJpbmcmKTsKICAgICB2aXJ0dWFsIFN0
cmluZyBnZXRFeHRlbnNpb25zKCk7CiAKKyAgICBHQzNEZW51bSBtX2NvbnRleHRSZXNldFN0YXR1
czsKKwogICAgIGJvb2wgbV9zdXBwb3J0c09FU3ZlcnRleEFycmF5T2JqZWN0OwogICAgIGJvb2wg
bV9zdXBwb3J0c0lNR011bHRpc2FtcGxlZFJlbmRlclRvVGV4dHVyZTsKIApAQCAtNzQsNiArMTEw
LDEyIEBAIHByb3RlY3RlZDoKICAgICBQRk5HTERFTEVURVZFUlRFWEFSUkFZU09FU1BST0MgbV9n
bERlbGV0ZVZlcnRleEFycmF5c09FUzsKICAgICBQRk5HTEdFTlZFUlRFWEFSUkFZU09FU1BST0Mg
bV9nbEdlblZlcnRleEFycmF5c09FUzsKICAgICBQRk5HTElTVkVSVEVYQVJSQVlPRVNQUk9DIG1f
Z2xJc1ZlcnRleEFycmF5T0VTOworICAgIFBGTkdMR0VUR1JBUEhJQ1NSRVNFVFNUQVRVU0VYVFBS
T0MgbV9nbEdldEdyYXBoaWNzUmVzZXRTdGF0dXNFWFQ7CisgICAgUEZOR0xSRUFETlBJWEVMU0VY
VFBST0MgbV9nbFJlYWRuUGl4ZWxzRVhUOworICAgIFBGTkdMR0VUTlVOSUZPUk1GVkVYVFBST0Mg
bV9nbEdldG5Vbmlmb3JtZnZFWFQ7CisgICAgUEZOR0xHRVROVU5JRk9STUlWRVhUUFJPQyBtX2ds
R2V0blVuaWZvcm1pdkVYVDsKKworICAgIE93blB0cjxHcmFwaGljc0NvbnRleHQzRDo6Q29udGV4
dExvc3RDYWxsYmFjaz4gbV9jb250ZXh0TG9zdENhbGxiYWNrOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dCBiL1Nv
dXJjZS9XZWJLaXQvQ01ha2VMaXN0cy50eHQKaW5kZXggMDM3OTdhMzc0ZjZlNGJlMmJiYjVkMGRj
ZDM2NDU5ZWIxMTIxNTY2Ni4uYTc5ODNkOWYwMzYwNjZlNWQxZjcwZWVmMjU3ZjU3NGY4YWQ1NDgw
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2Uv
V2ViS2l0L0NNYWtlTGlzdHMudHh0CkBAIC0zMSw2ICszMSw3IEBAIFNFVChXZWJLaXRfSU5DTFVE
RV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzIgogICAgICIke1dFQkNPUkVfRElSfS9wbGF0Zm9ybS9ncmFwaGljcy9oYXJmYnV6eiIKICAg
ICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vZ3JhcGhpY3MvaGFyZmJ1enovbmciCisgICAgIiR7
V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL2dyYXBoaWNzL29wZW5nbCIKICAgICAiJHtXRUJDT1JFX0RJ
Un0vcGxhdGZvcm0vZ3JhcGhpY3MvdHJhbnNmb3JtcyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxh
dGZvcm0vbmV0d29yayIKICAgICAiJHtXRUJDT1JFX0RJUn0vcGxhdGZvcm0vc3FsIgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>